aboutsummaryrefslogtreecommitdiff
path: root/doc/_static
diff options
context:
space:
mode:
authorMiles Macklin <[email protected]>2017-03-10 14:51:31 +1300
committerMiles Macklin <[email protected]>2017-03-10 14:51:31 +1300
commitad3d90fafe5ee79964bdfe1f1e0704c3ffcdfd5f (patch)
tree4cc6f3288363889d7342f7f8407c0251e6904819 /doc/_static
downloadflex-ad3d90fafe5ee79964bdfe1f1e0704c3ffcdfd5f.tar.xz
flex-ad3d90fafe5ee79964bdfe1f1e0704c3ffcdfd5f.zip
Initial 1.1.0 binary release
Diffstat (limited to 'doc/_static')
-rw-r--r--doc/_static/Roboto-Bold.woffbin0 -> 24808 bytes
-rw-r--r--doc/_static/Roboto-BoldIta.woffbin0 -> 28824 bytes
-rw-r--r--doc/_static/Roboto-Ita.woffbin0 -> 29080 bytes
-rw-r--r--doc/_static/Roboto-Light.woffbin0 -> 24576 bytes
-rw-r--r--doc/_static/Roboto-LightIta.woffbin0 -> 29480 bytes
-rw-r--r--doc/_static/Roboto-Medium.woffbin0 -> 25048 bytes
-rw-r--r--doc/_static/Roboto-MediumIta.woffbin0 -> 28860 bytes
-rw-r--r--doc/_static/Roboto.woffbin0 -> 25020 bytes
-rw-r--r--doc/_static/api/_nv_flex_8h.html4230
-rw-r--r--doc/_static/api/_nv_flex_8h_source.html736
-rw-r--r--doc/_static/api/_nv_flex_device_8h.html123
-rw-r--r--doc/_static/api/_nv_flex_device_8h_source.html99
-rw-r--r--doc/_static/api/_nv_flex_ext_8h.html2121
-rw-r--r--doc/_static/api/_nv_flex_ext_8h_source.html625
-rw-r--r--doc/_static/api/arrowdown.pngbin0 -> 242 bytes
-rw-r--r--doc/_static/api/arrowright.pngbin0 -> 229 bytes
-rw-r--r--doc/_static/api/bc_s.pngbin0 -> 675 bytes
-rw-r--r--doc/_static/api/bdwn.pngbin0 -> 147 bytes
-rw-r--r--doc/_static/api/closed.pngbin0 -> 133 bytes
-rw-r--r--doc/_static/api/dir_d44c64559bbebec7f509842c48db8b23.html60
-rw-r--r--doc/_static/api/doc.pngbin0 -> 763 bytes
-rw-r--r--doc/_static/api/doxygen.css1449
-rw-r--r--doc/_static/api/doxygen.pngbin0 -> 3872 bytes
-rw-r--r--doc/_static/api/dynsections.js97
-rw-r--r--doc/_static/api/files.html53
-rw-r--r--doc/_static/api/flex.css67
-rw-r--r--doc/_static/api/folderclosed.pngbin0 -> 637 bytes
-rw-r--r--doc/_static/api/folderopen.pngbin0 -> 629 bytes
-rw-r--r--doc/_static/api/globals.html530
-rw-r--r--doc/_static/api/globals_enum.html74
-rw-r--r--doc/_static/api/globals_eval.html160
-rw-r--r--doc/_static/api/globals_func.html355
-rw-r--r--doc/_static/api/globals_type.html71
-rw-r--r--doc/_static/api/index.html51
-rw-r--r--doc/_static/api/jquery.js68
-rw-r--r--doc/_static/api/nav_f.pngbin0 -> 153 bytes
-rw-r--r--doc/_static/api/nav_g.pngbin0 -> 95 bytes
-rw-r--r--doc/_static/api/nav_h.pngbin0 -> 99 bytes
-rw-r--r--doc/_static/api/nvidia.pngbin0 -> 13497 bytes
-rw-r--r--doc/_static/api/open.pngbin0 -> 123 bytes
-rw-r--r--doc/_static/api/splitbar.pngbin0 -> 313 bytes
-rw-r--r--doc/_static/api/struct_nv_flex_solver_callback.html85
-rw-r--r--doc/_static/api/struct_nv_flex_vector.html693
-rw-r--r--doc/_static/api/sync_off.pngbin0 -> 859 bytes
-rw-r--r--doc/_static/api/sync_on.pngbin0 -> 847 bytes
-rw-r--r--doc/_static/api/tab_a.pngbin0 -> 142 bytes
-rw-r--r--doc/_static/api/tab_b.pngbin0 -> 169 bytes
-rw-r--r--doc/_static/api/tab_h.pngbin0 -> 176 bytes
-rw-r--r--doc/_static/api/tab_s.pngbin0 -> 180 bytes
-rw-r--r--doc/_static/api/tabs.css60
-rw-r--r--doc/_static/application.css8990
-rw-r--r--doc/_static/bootstrap.css6167
-rw-r--r--doc/_static/bootstrap.js2280
-rw-r--r--doc/_static/collapse.pngbin0 -> 268 bytes
-rw-r--r--doc/_static/default.css68
-rw-r--r--doc/_static/developerzone_gameworks_logo.pngbin0 -> 4123 bytes
-rw-r--r--doc/_static/doctools.js235
-rw-r--r--doc/_static/expand.pngbin0 -> 277 bytes
-rw-r--r--doc/_static/jquery.cookie.js117
-rw-r--r--doc/_static/jquery.js2
-rw-r--r--doc/_static/jquery.storageapi.js451
-rw-r--r--doc/_static/nvidia-logo-header.pngbin0 -> 2673 bytes
-rw-r--r--doc/_static/pygments.css62
-rw-r--r--doc/_static/searchtools.js622
-rw-r--r--doc/_static/sidebar.js159
-rw-r--r--doc/_static/space.gifbin0 -> 42 bytes
-rw-r--r--doc/_static/styleguide.css102
-rw-r--r--doc/_static/underscore.js31
68 files changed, 31093 insertions, 0 deletions
diff --git a/doc/_static/Roboto-Bold.woff b/doc/_static/Roboto-Bold.woff
new file mode 100644
index 0000000..0c69948
--- /dev/null
+++ b/doc/_static/Roboto-Bold.woff
Binary files differ
diff --git a/doc/_static/Roboto-BoldIta.woff b/doc/_static/Roboto-BoldIta.woff
new file mode 100644
index 0000000..99de61a
--- /dev/null
+++ b/doc/_static/Roboto-BoldIta.woff
Binary files differ
diff --git a/doc/_static/Roboto-Ita.woff b/doc/_static/Roboto-Ita.woff
new file mode 100644
index 0000000..dd74244
--- /dev/null
+++ b/doc/_static/Roboto-Ita.woff
Binary files differ
diff --git a/doc/_static/Roboto-Light.woff b/doc/_static/Roboto-Light.woff
new file mode 100644
index 0000000..cc534a3
--- /dev/null
+++ b/doc/_static/Roboto-Light.woff
Binary files differ
diff --git a/doc/_static/Roboto-LightIta.woff b/doc/_static/Roboto-LightIta.woff
new file mode 100644
index 0000000..3071ff4
--- /dev/null
+++ b/doc/_static/Roboto-LightIta.woff
Binary files differ
diff --git a/doc/_static/Roboto-Medium.woff b/doc/_static/Roboto-Medium.woff
new file mode 100644
index 0000000..cd810ef
--- /dev/null
+++ b/doc/_static/Roboto-Medium.woff
Binary files differ
diff --git a/doc/_static/Roboto-MediumIta.woff b/doc/_static/Roboto-MediumIta.woff
new file mode 100644
index 0000000..69a1458
--- /dev/null
+++ b/doc/_static/Roboto-MediumIta.woff
Binary files differ
diff --git a/doc/_static/Roboto.woff b/doc/_static/Roboto.woff
new file mode 100644
index 0000000..bfa05d5
--- /dev/null
+++ b/doc/_static/Roboto.woff
Binary files differ
diff --git a/doc/_static/api/_nv_flex_8h.html b/doc/_static/api/_nv_flex_8h.html
new file mode 100644
index 0000000..837b040
--- /dev/null
+++ b/doc/_static/api/_nv_flex_8h.html
@@ -0,0 +1,4230 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: NvFlex.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">NvFlex.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_nv_flex_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:struct_nv_flex_params"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a></td></tr>
+<tr class="separator:struct_nv_flex_params"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_timers"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a></td></tr>
+<tr class="separator:struct_nv_flex_timers"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_solver_callback_params"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a></td></tr>
+<tr class="separator:struct_nv_flex_solver_callback_params"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_init_desc"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a></td></tr>
+<tr class="separator:struct_nv_flex_init_desc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_sphere_geometry"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_sphere_geometry">NvFlexSphereGeometry</a></td></tr>
+<tr class="separator:struct_nv_flex_sphere_geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_capsule_geometry"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_capsule_geometry">NvFlexCapsuleGeometry</a></td></tr>
+<tr class="separator:struct_nv_flex_capsule_geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_box_geometry"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_box_geometry">NvFlexBoxGeometry</a></td></tr>
+<tr class="separator:struct_nv_flex_box_geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_convex_mesh_geometry"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_convex_mesh_geometry">NvFlexConvexMeshGeometry</a></td></tr>
+<tr class="separator:struct_nv_flex_convex_mesh_geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_triangle_mesh_geometry"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_triangle_mesh_geometry">NvFlexTriangleMeshGeometry</a></td></tr>
+<tr class="separator:struct_nv_flex_triangle_mesh_geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_s_d_f_geometry"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_s_d_f_geometry">NvFlexSDFGeometry</a></td></tr>
+<tr class="separator:struct_nv_flex_s_d_f_geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:union_nv_flex_collision_geometry"><td class="memItemLeft" align="right" valign="top">union &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#union_nv_flex_collision_geometry">NvFlexCollisionGeometry</a></td></tr>
+<tr class="separator:union_nv_flex_collision_geometry"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_detail_timer"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a></td></tr>
+<tr class="separator:struct_nv_flex_detail_timer"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:a3078976e98f370a9fbdb11db80f1f318"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a></td></tr>
+<tr class="separator:a3078976e98f370a9fbdb11db80f1f318"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afaeb57f4ee7e54b1ae1b912a465ed39e"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a></td></tr>
+<tr class="separator:afaeb57f4ee7e54b1ae1b912a465ed39e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a50a3933d3f7b77d0500c702b1fa9ba9a"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a></td></tr>
+<tr class="separator:a50a3933d3f7b77d0500c702b1fa9ba9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abe6f00c9b94debbf7c181082a14076d5"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a>) (<a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a> type, const char *msg, const char *file, int line)</td></tr>
+<tr class="separator:abe6f00c9b94debbf7c181082a14076d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2aea4c3d772b4dbccb7dd9ba37c1bdc0"><td class="memItemLeft" align="right" valign="top">typedef unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a></td></tr>
+<tr class="separator:a2aea4c3d772b4dbccb7dd9ba37c1bdc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a56e990c5bfbc89677988cbf2471c0ade"><td class="memItemLeft" align="right" valign="top">typedef unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a></td></tr>
+<tr class="separator:a56e990c5bfbc89677988cbf2471c0ade"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7ab5aa68da7ca1f69211a900f1a1c586"><td class="memItemLeft" align="right" valign="top">typedef unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a></td></tr>
+<tr class="separator:a7ab5aa68da7ca1f69211a900f1a1c586"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a6541b33eaca7b2323e73b30cea34d16c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlexMapFlags</a> { <br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a> = 0,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1">eNvFlexMapDoNotWait</a> = 1,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706">eNvFlexMapDiscard</a> = 2
+<br />
+ }</td></tr>
+<tr class="separator:a6541b33eaca7b2323e73b30cea34d16c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a169e4c126acf46bdebf76c36a44deca3"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a> { <br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a> = 0,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576">eNvFlexBufferDevice</a> = 1
+<br />
+ }</td></tr>
+<tr class="separator:a169e4c126acf46bdebf76c36a44deca3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a46f5d35902f7da40628247175a174f3b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a> { <br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db">eNvFlexRelaxationGlobal</a> = 0,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c">eNvFlexRelaxationLocal</a> = 1
+<br />
+ }</td></tr>
+<tr class="separator:a46f5d35902f7da40628247175a174f3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5ad2a7745fcb4d4afd5b5f1bda074644"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlexPhase</a> { <br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">eNvFlexPhaseGroupMask</a> = 0x00ffffff,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977">eNvFlexPhaseSelfCollide</a> = 1 &lt;&lt; 24,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1">eNvFlexPhaseSelfCollideFilter</a> = 1 &lt;&lt; 25,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74">eNvFlexPhaseFluid</a> = 1 &lt;&lt; 26
+<br />
+ }</td></tr>
+<tr class="separator:a5ad2a7745fcb4d4afd5b5f1bda074644"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab4435b3857752360375fe52fc992cfca"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a> { <br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd">eNvFlexLogError</a> = 0,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f">eNvFlexLogInfo</a> = 1,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61">eNvFlexLogWarning</a> = 2,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e">eNvFlexLogDebug</a> = 4,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e">eNvFlexLogAll</a> = -1
+<br />
+ }</td></tr>
+<tr class="separator:ab4435b3857752360375fe52fc992cfca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4f80c8bcfa6de99a52983adb13d80db9"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a> { <br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff">eNvFlexStageIterationStart</a>,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69">eNvFlexStageIterationEnd</a>,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44">eNvFlexStageSubstepBegin</a>,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586">eNvFlexStageSubstepEnd</a>,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806">eNvFlexStageUpdateEnd</a>,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3">eNvFlexStageCount</a>
+<br />
+ }</td></tr>
+<tr class="separator:a4f80c8bcfa6de99a52983adb13d80db9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9b2d3dc5ac42011aeec4e13be2e14252"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a> { <br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178">eNvFlexCUDA</a>,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df">eNvFlexD3D11</a>,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943">eNvFlexD3D12</a>
+<br />
+ }</td></tr>
+<tr class="separator:a9b2d3dc5ac42011aeec4e13be2e14252"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0506ae712f846087b8647ea389ac26ba"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a> { <br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3">eNvFlexShapeSphere</a> = 0,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a">eNvFlexShapeCapsule</a> = 1,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7">eNvFlexShapeBox</a> = 2,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce">eNvFlexShapeConvexMesh</a> = 3,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1">eNvFlexShapeTriangleMesh</a> = 4,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180">eNvFlexShapeSDF</a> = 5
+<br />
+ }</td></tr>
+<tr class="separator:a0506ae712f846087b8647ea389ac26ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a31c31ea4f96cd4fdadc6b7317691304c"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlexCollisionShapeFlags</a> { <br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8">eNvFlexShapeFlagTypeMask</a> = 0x7,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">eNvFlexShapeFlagDynamic</a> = 8,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8">eNvFlexShapeFlagTrigger</a> = 16,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9">eNvFlexShapeFlagReserved</a> = 0xffffff00
+<br />
+ }</td></tr>
+<tr class="separator:a31c31ea4f96cd4fdadc6b7317691304c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:af53fa9d7caef50db346475065504848d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlexMakePhase</a> (int group, int flags)</td></tr>
+<tr class="separator:af53fa9d7caef50db346475065504848d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a687e5ec141948f779faa9183b68cb743"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit</a> (int version=NV_FLEX_VERSION, <a class="el" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a> errorFunc=0, <a class="el" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a> *desc=0)</td></tr>
+<tr class="separator:a687e5ec141948f779faa9183b68cb743"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aaf59e45ada57c7f958a8030099cbe211"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlexShutdown</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr>
+<tr class="separator:aaf59e45ada57c7f958a8030099cbe211"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac25ec5de38c177db51198bb620644d36"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ac25ec5de38c177db51198bb620644d36">NvFlexGetVersion</a> ()</td></tr>
+<tr class="separator:ac25ec5de38c177db51198bb620644d36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af7f91fa47c779fcd8bee60061de6d31c"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, int maxParticles, int maxDiffuseParticles, int maxNeighborsPerParticle=96)</td></tr>
+<tr class="separator:af7f91fa47c779fcd8bee60061de6d31c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1d755d7b090f7ed5c4c50d2d3fef1558"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlexDestroySolver</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver)</td></tr>
+<tr class="separator:a1d755d7b090f7ed5c4c50d2d3fef1558"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae0d57e4fc2b3b51ec08f7da0a28ff343"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ae0d57e4fc2b3b51ec08f7da0a28ff343">NvFlexGetSolverLibrary</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver)</td></tr>
+<tr class="separator:ae0d57e4fc2b3b51ec08f7da0a28ff343"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac5427457488ab3f2de91cf65335dda08"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlexRegisterSolverCallback</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a> function, <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a> stage)</td></tr>
+<tr class="separator:ac5427457488ab3f2de91cf65335dda08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac75370f005fd453fe8a324fe62be1b5c"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, float dt, int substeps, bool enableTimers)</td></tr>
+<tr class="separator:ac75370f005fd453fe8a324fe62be1b5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae2db6ad8006027c1acf2315a0d15fe71"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ae2db6ad8006027c1acf2315a0d15fe71">NvFlexSetParams</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, const <a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> *params)</td></tr>
+<tr class="separator:ae2db6ad8006027c1acf2315a0d15fe71"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a581b458848039220203547af53de128f"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a581b458848039220203547af53de128f">NvFlexGetParams</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> *params)</td></tr>
+<tr class="separator:a581b458848039220203547af53de128f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aea2af336bdd96d7168c3acdce6d1875d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aea2af336bdd96d7168c3acdce6d1875d">NvFlexSetActive</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, int n)</td></tr>
+<tr class="separator:aea2af336bdd96d7168c3acdce6d1875d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeed8fe87fa073067af1a45560cc54a79"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aeed8fe87fa073067af1a45560cc54a79">NvFlexGetActive</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices)</td></tr>
+<tr class="separator:aeed8fe87fa073067af1a45560cc54a79"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2345372dea2ad4f043153a84e7a2c407"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlexGetActiveCount</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver)</td></tr>
+<tr class="separator:a2345372dea2ad4f043153a84e7a2c407"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abef057ac89ba5cf1cd71f0084f9313de"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlexSetParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, int n)</td></tr>
+<tr class="separator:abef057ac89ba5cf1cd71f0084f9313de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a84f06fff995d8eb034cff81c811fa312"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlexGetParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, int n)</td></tr>
+<tr class="separator:a84f06fff995d8eb034cff81c811fa312"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa457096286567a37d4f1d5f4857d9296"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlexSetRestParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, int n)</td></tr>
+<tr class="separator:aa457096286567a37d4f1d5f4857d9296"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:affb884bcf3e7e389812d0b52b0fc0490"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#affb884bcf3e7e389812d0b52b0fc0490">NvFlexGetRestParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, int n)</td></tr>
+<tr class="separator:affb884bcf3e7e389812d0b52b0fc0490"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abfa62e01c4f4511d3f6a00ab6a0f257a"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlexGetSmoothParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, int n)</td></tr>
+<tr class="separator:abfa62e01c4f4511d3f6a00ab6a0f257a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afe09e63d22c5156fe24cd2d2bc069c04"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlexSetVelocities</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *v, int n)</td></tr>
+<tr class="separator:afe09e63d22c5156fe24cd2d2bc069c04"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a67bd9669086e823ebe33d08d14f5b2b9"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlexGetVelocities</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *v, int n)</td></tr>
+<tr class="separator:a67bd9669086e823ebe33d08d14f5b2b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3117f92571613709936291c48414e521"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlexSetPhases</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *phases, int n)</td></tr>
+<tr class="separator:a3117f92571613709936291c48414e521"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a15b7a5449bee38bbe5dcaf23690f09f5"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlexGetPhases</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *phases, int n)</td></tr>
+<tr class="separator:a15b7a5449bee38bbe5dcaf23690f09f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:add03fd357383845f07e0596290faf316"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#add03fd357383845f07e0596290faf316">NvFlexSetNormals</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *normals, int n)</td></tr>
+<tr class="separator:add03fd357383845f07e0596290faf316"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aadb2a0cf125e4a6b2f3443ab7dcbd3d4"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aadb2a0cf125e4a6b2f3443ab7dcbd3d4">NvFlexGetNormals</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *normals, int n)</td></tr>
+<tr class="separator:aadb2a0cf125e4a6b2f3443ab7dcbd3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae67c0cab2ecee8eb9485a26ef0fad6a9"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ae67c0cab2ecee8eb9485a26ef0fad6a9">NvFlexSetSprings</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *restLengths, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *stiffness, int numSprings)</td></tr>
+<tr class="separator:ae67c0cab2ecee8eb9485a26ef0fad6a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aab5f90f4024d71d08c3f9327c6d8c184"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aab5f90f4024d71d08c3f9327c6d8c184">NvFlexGetSprings</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *restLengths, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *stiffness, int numSprings)</td></tr>
+<tr class="separator:aab5f90f4024d71d08c3f9327c6d8c184"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a89c872e761a53c87375f536a0ef597d8"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a89c872e761a53c87375f536a0ef597d8">NvFlexSetRigids</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *offsets, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *restPositions, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *restNormals, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *stiffness, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *rotations, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *translations, int numRigids, int numIndices)</td></tr>
+<tr class="separator:a89c872e761a53c87375f536a0ef597d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3eafe7fe6b200c757c7402eca7d13f6d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a3eafe7fe6b200c757c7402eca7d13f6d">NvFlexGetRigidTransforms</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *rotations, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *translations)</td></tr>
+<tr class="separator:a3eafe7fe6b200c757c7402eca7d13f6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afdda5a5210938a1e8a7c3a8218ad468e"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr>
+<tr class="separator:afdda5a5210938a1e8a7c3a8218ad468e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4cb4462803ebff105d151fd45b4efad6"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a4cb4462803ebff105d151fd45b4efad6">NvFlexDestroyTriangleMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> mesh)</td></tr>
+<tr class="separator:a4cb4462803ebff105d151fd45b4efad6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4958c555f0ed65dee54c37af32529356"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlexUpdateTriangleMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> mesh, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *vertices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, int numVertices, int numTriangles, const float *lower, const float *upper)</td></tr>
+<tr class="separator:a4958c555f0ed65dee54c37af32529356"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a60794d849b4184335e2a0ddec0a9e6a2"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a60794d849b4184335e2a0ddec0a9e6a2">NvFlexGetTriangleMeshBounds</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, const <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> mesh, float *lower, float *upper)</td></tr>
+<tr class="separator:a60794d849b4184335e2a0ddec0a9e6a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c28caf6d5d513c5adacd4fbc782f308"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr>
+<tr class="separator:a5c28caf6d5d513c5adacd4fbc782f308"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab11bdd7f778d17af16cefea33265cb65"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab11bdd7f778d17af16cefea33265cb65">NvFlexDestroyDistanceField</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a> sdf)</td></tr>
+<tr class="separator:ab11bdd7f778d17af16cefea33265cb65"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a584ffb275b9986fd5444ed1a7ea247d9"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a584ffb275b9986fd5444ed1a7ea247d9">NvFlexUpdateDistanceField</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a> sdf, int dimx, int dimy, int dimz, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *field)</td></tr>
+<tr class="separator:a584ffb275b9986fd5444ed1a7ea247d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afbaafe2b1006352002b03aabaca531cc"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlexCreateConvexMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr>
+<tr class="separator:afbaafe2b1006352002b03aabaca531cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac85b6372e5c7bfc508ecb7b8c59c72a0"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ac85b6372e5c7bfc508ecb7b8c59c72a0">NvFlexDestroyConvexMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> convex)</td></tr>
+<tr class="separator:ac85b6372e5c7bfc508ecb7b8c59c72a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a69289002a6f8ecd697118f0ec6572f5d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlexUpdateConvexMesh</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> convex, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *planes, int numPlanes, float *lower, float *upper)</td></tr>
+<tr class="separator:a69289002a6f8ecd697118f0ec6572f5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad56e661161763579afb375b3841eb5ff"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ad56e661161763579afb375b3841eb5ff">NvFlexGetConvexMeshBounds</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> mesh, float *lower, float *upper)</td></tr>
+<tr class="separator:ad56e661161763579afb375b3841eb5ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad6ee1e23e0c49aad63df8f605182de3a"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a">NvFlexMakeShapeFlags</a> (<a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a> type, bool dynamic)</td></tr>
+<tr class="separator:ad6ee1e23e0c49aad63df8f605182de3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aea4e7117722df53dfe44c676496117fa"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlexSetShapes</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *geometry, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *shapePositions, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *shapeRotations, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *shapePrevPositions, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *shapePrevRotations, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *shapeFlags, int numShapes)</td></tr>
+<tr class="separator:aea4e7117722df53dfe44c676496117fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa03d94be697cdc3aaa56e469d87255a4"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aa03d94be697cdc3aaa56e469d87255a4">NvFlexSetDynamicTriangles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *normals, int numTris)</td></tr>
+<tr class="separator:aa03d94be697cdc3aaa56e469d87255a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abdfd0834422dd99154a27962614525e5"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#abdfd0834422dd99154a27962614525e5">NvFlexGetDynamicTriangles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *normals, int numTris)</td></tr>
+<tr class="separator:abdfd0834422dd99154a27962614525e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7f2b59fba77c60ce116e1eac57d63e50"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a7f2b59fba77c60ce116e1eac57d63e50">NvFlexSetInflatables</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *startTris, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *numTris, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *restVolumes, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *overPressures, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *constraintScales, int numInflatables)</td></tr>
+<tr class="separator:a7f2b59fba77c60ce116e1eac57d63e50"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6f6f14e625dc744a127be81e6dc4cb74"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a6f6f14e625dc744a127be81e6dc4cb74">NvFlexGetDensities</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *densities, int n)</td></tr>
+<tr class="separator:a6f6f14e625dc744a127be81e6dc4cb74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae28167c680ad56dcff600ce0a223cec5"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlexGetAnisotropy</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *q1, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *q2, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *q3)</td></tr>
+<tr class="separator:ae28167c680ad56dcff600ce0a223cec5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a37ada4b95999cc253dfb049b99030d50"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a37ada4b95999cc253dfb049b99030d50">NvFlexGetDiffuseParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *v, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices)</td></tr>
+<tr class="separator:a37ada4b95999cc253dfb049b99030d50"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5a7213593dd9a23d9d67f8517d1da9de"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a5a7213593dd9a23d9d67f8517d1da9de">NvFlexSetDiffuseParticles</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *p, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *v, int n)</td></tr>
+<tr class="separator:a5a7213593dd9a23d9d67f8517d1da9de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7edac9cf450917147b83e98f5cb09f5d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlexGetContacts</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *planes, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *velocities, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *indices, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *counts)</td></tr>
+<tr class="separator:a7edac9cf450917147b83e98f5cb09f5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1eec84a21b1872fba11c9b4cc1d1629"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab1eec84a21b1872fba11c9b4cc1d1629">NvFlexGetBounds</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *lower, <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *upper)</td></tr>
+<tr class="separator:ab1eec84a21b1872fba11c9b4cc1d1629"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a221a4621ab98eca6ecd3368d288154a4"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a221a4621ab98eca6ecd3368d288154a4">NvFlexGetDeviceLatency</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver)</td></tr>
+<tr class="separator:a221a4621ab98eca6ecd3368d288154a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab16b6d2e11e0ab417ee6c4cf16f0a27d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab16b6d2e11e0ab417ee6c4cf16f0a27d">NvFlexGetTimers</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a> *timers)</td></tr>
+<tr class="separator:ab16b6d2e11e0ab417ee6c4cf16f0a27d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab1efb6764f65900cb09f0188ad6da08a"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab1efb6764f65900cb09f0188ad6da08a">NvFlexGetDetailTimers</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, <a class="el" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a> **timers)</td></tr>
+<tr class="separator:ab1efb6764f65900cb09f0188ad6da08a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad48f83b8442323687d2268206e913496"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, int elementCount, int elementByteStride, <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a> type)</td></tr>
+<tr class="separator:ad48f83b8442323687d2268206e913496"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab559759820a4322aff061745ef26c867"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a> (<a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *buf)</td></tr>
+<tr class="separator:ab559759820a4322aff061745ef26c867"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0898bb9210440b159688d4647f6eb083"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a> (<a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *buffer, int flags)</td></tr>
+<tr class="separator:a0898bb9210440b159688d4647f6eb083"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a054cb27646a389ea257d1bbde46a6e97"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a> (<a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *buffer)</td></tr>
+<tr class="separator:a054cb27646a389ea257d1bbde46a6e97"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aab83daf46e5a9428a0ad76fb75e8ec7e"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlexRegisterOGLBuffer</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, int buf, int elementCount, int elementByteStride)</td></tr>
+<tr class="separator:aab83daf46e5a9428a0ad76fb75e8ec7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a78045a8d4e856372df108dc616a94cd8"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a78045a8d4e856372df108dc616a94cd8">NvFlexUnregisterOGLBuffer</a> (<a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *buf)</td></tr>
+<tr class="separator:a78045a8d4e856372df108dc616a94cd8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab487e68ce1c84ce1eec0c85b7daf5aa0"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ab487e68ce1c84ce1eec0c85b7daf5aa0">NvFlexRegisterD3DBuffer</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, void *buffer, int elementCount, int elementByteStride)</td></tr>
+<tr class="separator:ab487e68ce1c84ce1eec0c85b7daf5aa0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad607e7916e5d76b384a61f1c1f94ab32"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ad607e7916e5d76b384a61f1c1f94ab32">NvFlexUnregisterD3DBuffer</a> (<a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *buf)</td></tr>
+<tr class="separator:ad607e7916e5d76b384a61f1c1f94ab32"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a42ec7b30c79d4733e6a756b5d9b15ee6"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlexAcquireContext</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr>
+<tr class="separator:a42ec7b30c79d4733e6a756b5d9b15ee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae6671f352bd77e296609d0bc2a57fd11"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#ae6671f352bd77e296609d0bc2a57fd11">NvFlexRestoreContext</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr>
+<tr class="separator:ae6671f352bd77e296609d0bc2a57fd11"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4c451971259524c6878b6b1ed4023ada"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a4c451971259524c6878b6b1ed4023ada">NvFlexGetDeviceName</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr>
+<tr class="separator:a4c451971259524c6878b6b1ed4023ada"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2ac0a898a565a2cdf13b80acd4a3555c"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a2ac0a898a565a2cdf13b80acd4a3555c">NvFlexGetDeviceAndContext</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, void **device, void **context)</td></tr>
+<tr class="separator:a2ac0a898a565a2cdf13b80acd4a3555c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a898eb8e66a456dd2266c694f29cab600"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html#a898eb8e66a456dd2266c694f29cab600">NvFlexFlush</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib)</td></tr>
+<tr class="separator:a898eb8e66a456dd2266c694f29cab600"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The main include file for the core Flex solver. </p>
+</div><hr/><h2 class="groupheader">Data Structure Documentation</h2>
+<a name="struct_nv_flex_params" id="struct_nv_flex_params"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexParams</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>Simulation parameters for a solver </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a572c9bf93128466e27d57f225f4d0188"></a>int</td>
+<td class="fieldname">
+numIterations</td>
+<td class="fielddoc">
+Number of solver iterations to perform per-substep. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a482a7c3b197c4df656e9509fbd04032c"></a>float</td>
+<td class="fieldname">
+gravity[3]</td>
+<td class="fielddoc">
+Constant acceleration applied to all particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aa6eddaa3a6eb35917c093dcabf69a200"></a>float</td>
+<td class="fieldname">
+radius</td>
+<td class="fielddoc">
+The maximum interaction radius for particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ab7c54d6c0b3d3595780e5179bf62ebc4"></a>float</td>
+<td class="fieldname">
+solidRestDistance</td>
+<td class="fielddoc">
+The distance non-fluid particles attempt to maintain from each other, must be in the range (0, radius]. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ad019ad1901bc33d43e3a60df0dfe9b09"></a>float</td>
+<td class="fieldname">
+fluidRestDistance</td>
+<td class="fielddoc">
+The distance fluid particles are spaced at the rest density, must be in the range (0, radius], for fluids this should generally be 50-70% of mRadius, for rigids this can simply be the same as the particle radius. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a27a185172ad1951d40c476ade8307068"></a>float</td>
+<td class="fieldname">
+dynamicFriction</td>
+<td class="fielddoc">
+Coefficient of friction used when colliding against shapes. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="af0a34fd0cdf686022650be9f895cbf2f"></a>float</td>
+<td class="fieldname">
+staticFriction</td>
+<td class="fielddoc">
+Coefficient of static friction used when colliding against shapes. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="af7a56fc54644e7020e105f2ff41dfb60"></a>float</td>
+<td class="fieldname">
+particleFriction</td>
+<td class="fielddoc">
+Coefficient of friction used when colliding particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="afc306cb48c313ee518461d60c1014485"></a>float</td>
+<td class="fieldname">
+restitution</td>
+<td class="fielddoc">
+Coefficient of restitution used when colliding against shapes, particle collisions are always inelastic. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a8114a049f5e16f7d1b960f3ac4993fdb"></a>float</td>
+<td class="fieldname">
+adhesion</td>
+<td class="fielddoc">
+Controls how strongly particles stick to surfaces they hit, default 0.0, range [0.0, +inf]. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a533a78227b462a268c905f9c307c4bd6"></a>float</td>
+<td class="fieldname">
+sleepThreshold</td>
+<td class="fielddoc">
+Particles with a velocity magnitude &lt; this threshold will be considered fixed. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ab003c023dde289dee075c49db022ccaf"></a>float</td>
+<td class="fieldname">
+maxSpeed</td>
+<td class="fielddoc">
+The magnitude of particle velocity will be clamped to this value at the end of each step. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a0def9c3ceff57bbae5bcec15f6d64b36"></a>float</td>
+<td class="fieldname">
+maxAcceleration</td>
+<td class="fielddoc">
+The magnitude of particle acceleration will be clamped to this value at the end of each step (limits max velocity change per-second), useful to avoid popping due to large interpenetrations. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ab98a2aba477ab4d4178bf677852bf544"></a>float</td>
+<td class="fieldname">
+shockPropagation</td>
+<td class="fielddoc">
+Artificially decrease the mass of particles based on height from a fixed reference point, this makes stacks and piles converge faster. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aeff62427426510eeb1cf5625e14ff585"></a>float</td>
+<td class="fieldname">
+dissipation</td>
+<td class="fielddoc">
+Damps particle velocity based on how many particle contacts it has. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a6198445df7f341ec75f37e1dfb44830c"></a>float</td>
+<td class="fieldname">
+damping</td>
+<td class="fielddoc">
+Viscous drag force, applies a force proportional, and opposite to the particle velocity. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aafb92c4fa45ce9614cdfd349b3722c8a"></a>float</td>
+<td class="fieldname">
+wind[3]</td>
+<td class="fielddoc">
+Constant acceleration applied to particles that belong to dynamic triangles, drag needs to be &gt; 0 for wind to affect triangles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a7043181449aebf540351d1d2f785cf4a"></a>float</td>
+<td class="fieldname">
+drag</td>
+<td class="fielddoc">
+Drag force applied to particles belonging to dynamic triangles, proportional to velocity^2*area in the negative velocity direction. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="af9bb710afb22ec5ed50679aef8717777"></a>float</td>
+<td class="fieldname">
+lift</td>
+<td class="fielddoc">
+Lift force applied to particles belonging to dynamic triangles, proportional to velocity^2*area in the direction perpendicular to velocity and (if possible), parallel to the plane normal. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a8f0ee62a14387dd5b5a4e8c6bc429140"></a>bool</td>
+<td class="fieldname">
+fluid</td>
+<td class="fielddoc">
+If true then particles with phase 0 are considered fluid particles and interact using the position based fluids method. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a3ef4d1035530c3583bdf983c7e62b472"></a>float</td>
+<td class="fieldname">
+cohesion</td>
+<td class="fielddoc">
+Control how strongly particles hold each other together, default: 0.025, range [0.0, +inf]. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a5628f890f4ae070e405feaf1f81a7b85"></a>float</td>
+<td class="fieldname">
+surfaceTension</td>
+<td class="fielddoc">
+Controls how strongly particles attempt to minimize surface area, default: 0.0, range: [0.0, +inf]. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a40f452b4edbf11b793f31286a0ae270e"></a>float</td>
+<td class="fieldname">
+viscosity</td>
+<td class="fielddoc">
+Smoothes particle velocities using XSPH viscosity. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ae763dd9bfcfa4092c0165a506e32e18b"></a>float</td>
+<td class="fieldname">
+vorticityConfinement</td>
+<td class="fielddoc">
+Increases vorticity by applying rotational forces to particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a608af97e77a912e959b0e825082a9cd6"></a>float</td>
+<td class="fieldname">
+anisotropyScale</td>
+<td class="fielddoc">
+Control how much anisotropy is present in resulting ellipsoids for rendering, if zero then anisotropy will not be calculated, see <a class="el" href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlexGetAnisotropy()</a> </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ab136ae1511a39ef570c010f321eff206"></a>float</td>
+<td class="fieldname">
+anisotropyMin</td>
+<td class="fielddoc">
+Clamp the anisotropy scale to this fraction of the radius. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a5e37444b8c96e0880a428d9ea58dbf54"></a>float</td>
+<td class="fieldname">
+anisotropyMax</td>
+<td class="fielddoc">
+Clamp the anisotropy scale to this fraction of the radius. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ac017e05107d0362d3d03a14eaadf0657"></a>float</td>
+<td class="fieldname">
+smoothing</td>
+<td class="fielddoc">
+Control the strength of Laplacian smoothing in particles for rendering, if zero then smoothed positions will not be calculated, see <a class="el" href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlexGetSmoothParticles()</a> </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a3f93fba688338576ff3258b034525dc5"></a>float</td>
+<td class="fieldname">
+solidPressure</td>
+<td class="fielddoc">
+Add pressure from solid surfaces to particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a05f92015449662f5a2f5d5e9ecdc2c6e"></a>float</td>
+<td class="fieldname">
+freeSurfaceDrag</td>
+<td class="fielddoc">
+Drag force applied to boundary fluid particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ae2e480822cc06ec249ee2557f6cc8ee1"></a>float</td>
+<td class="fieldname">
+buoyancy</td>
+<td class="fielddoc">
+Gravity is scaled by this value for fluid particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="acdde802d58e1558c03e449e04ae33f15"></a>float</td>
+<td class="fieldname">
+diffuseThreshold</td>
+<td class="fielddoc">
+Particles with kinetic energy + divergence above this threshold will spawn new diffuse particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a5be673031b100c3861fd9eb824fcf00f"></a>float</td>
+<td class="fieldname">
+diffuseBuoyancy</td>
+<td class="fielddoc">
+Scales force opposing gravity that diffuse particles receive. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a4bf0ccff128c165560dba52afb748d7e"></a>float</td>
+<td class="fieldname">
+diffuseDrag</td>
+<td class="fielddoc">
+Scales force diffuse particles receive in direction of neighbor fluid particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a7ade7491cd0693a6d7c5e88a99298378"></a>int</td>
+<td class="fieldname">
+diffuseBallistic</td>
+<td class="fielddoc">
+The number of neighbors below which a diffuse particle is considered ballistic. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a7bed2ff24c30c76aed0923809fc16d8c"></a>float</td>
+<td class="fieldname">
+diffuseSortAxis[3]</td>
+<td class="fielddoc">
+Diffuse particles will be sorted by depth along this axis if non-zero. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a469950744e0b7222969762a89b992255"></a>float</td>
+<td class="fieldname">
+diffuseLifetime</td>
+<td class="fielddoc">
+Time in seconds that a diffuse particle will live for after being spawned, particles will be spawned with a random lifetime in the range [0, diffuseLifetime]. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a3a1f5e2ba6c8cad0bc3f3eebd27415f0"></a>float</td>
+<td class="fieldname">
+plasticThreshold</td>
+<td class="fielddoc">
+Particles belonging to rigid shapes that move with a position delta magnitude &gt; threshold will be permanently deformed in the rest pose. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a42346069505d3bba70bcdf0a94f0615c"></a>float</td>
+<td class="fieldname">
+plasticCreep</td>
+<td class="fielddoc">
+Controls the rate at which particles in the rest pose are deformed for particles passing the deformation threshold. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a55bf1f547086b8e469f2c3b20c9ae39d"></a>float</td>
+<td class="fieldname">
+collisionDistance</td>
+<td class="fielddoc">
+Distance particles maintain against shapes, note that for robust collision against triangle meshes this distance should be greater than zero. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aeecd11525503649b579ae262b671fbc8"></a>float</td>
+<td class="fieldname">
+particleCollisionMargin</td>
+<td class="fielddoc">
+Increases the radius used during neighbor finding, this is useful if particles are expected to move significantly during a single step to ensure contacts aren't missed on subsequent iterations. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a0e4cb2f91d3b7d122000d36a7d67ab81"></a>float</td>
+<td class="fieldname">
+shapeCollisionMargin</td>
+<td class="fielddoc">
+Increases the radius used during contact finding against kinematic shapes. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ae54ff0cacfedd4333aa1a1f9b9291906"></a>float</td>
+<td class="fieldname">
+planes[8][4]</td>
+<td class="fielddoc">
+Collision planes in the form ax + by + cz + d = 0. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ab4f2eb16c8aba6371fbae51a991eaaa5"></a>int</td>
+<td class="fieldname">
+numPlanes</td>
+<td class="fielddoc">
+Num collision planes. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ac2f8dff9857a86683aa6e55c058888d7"></a><a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a></td>
+<td class="fieldname">
+relaxationMode</td>
+<td class="fielddoc">
+How the relaxation is applied inside the solver. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a8a1b3c24aa73606bcd47a72473db9629"></a>float</td>
+<td class="fieldname">
+relaxationFactor</td>
+<td class="fielddoc">
+Control the convergence rate of the parallel solver, default: 1, values greater than 1 may lead to instability. </td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_timers" id="struct_nv_flex_timers"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexTimers</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>Time spent in each section of the solver update, times in GPU seconds, see <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a> </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aaf8baa00e709ff8fd40d114f00bee0b6"></a>float</td>
+<td class="fieldname">
+predict</td>
+<td class="fielddoc">
+Time spent in prediction. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aba34bc2bc8736e3a0cf18a7a6b56ff68"></a>float</td>
+<td class="fieldname">
+createCellIndices</td>
+<td class="fielddoc">
+Time spent creating grid indices. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ae45cb18deec2db8ff44d181e80f24695"></a>float</td>
+<td class="fieldname">
+sortCellIndices</td>
+<td class="fielddoc">
+Time spent sorting grid indices. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a98b4df3721709c862ef5d09edcc6d4c3"></a>float</td>
+<td class="fieldname">
+createGrid</td>
+<td class="fielddoc">
+Time spent creating grid. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a6071050991cf71a8d9ff28ea968479af"></a>float</td>
+<td class="fieldname">
+reorder</td>
+<td class="fielddoc">
+Time spent reordering particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ac1f3c3a1eeeb57cf5b20d030a788e25c"></a>float</td>
+<td class="fieldname">
+collideParticles</td>
+<td class="fielddoc">
+Time spent finding particle neighbors. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ae4203fb9cf4772c3186f96cc2d9f6ea8"></a>float</td>
+<td class="fieldname">
+collideShapes</td>
+<td class="fielddoc">
+Time spent colliding convex shapes. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="afc20d27121f49b61be9cc6bd4c25f547"></a>float</td>
+<td class="fieldname">
+collideTriangles</td>
+<td class="fielddoc">
+Time spent colliding triangle shapes. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aaa36ba5ee44e34e762167fb0b8b3292e"></a>float</td>
+<td class="fieldname">
+collideFields</td>
+<td class="fielddoc">
+Time spent colliding signed distance field shapes. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a49f7117a457a716e7790904209f68707"></a>float</td>
+<td class="fieldname">
+calculateDensity</td>
+<td class="fielddoc">
+Time spent calculating fluid density. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="abe52b62e7af361f387d67414b9e2cf9b"></a>float</td>
+<td class="fieldname">
+solveDensities</td>
+<td class="fielddoc">
+Time spent solving density constraints. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a4d10188e917ae045e0e903f3db1c638d"></a>float</td>
+<td class="fieldname">
+solveVelocities</td>
+<td class="fielddoc">
+Time spent solving velocity constraints. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="abdd60b0a83674283d09b4897fdd637a2"></a>float</td>
+<td class="fieldname">
+solveShapes</td>
+<td class="fielddoc">
+Time spent solving rigid body constraints. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a57e4d27b0aa8774e479fa66d65079f78"></a>float</td>
+<td class="fieldname">
+solveSprings</td>
+<td class="fielddoc">
+Time spent solving distance constraints. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a215e06106ec0cdbbcd405055a4535d1d"></a>float</td>
+<td class="fieldname">
+solveContacts</td>
+<td class="fielddoc">
+Time spent solving contact constraints. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a75eade1512d023cb19da5b7ebbad10f3"></a>float</td>
+<td class="fieldname">
+solveInflatables</td>
+<td class="fielddoc">
+Time spent solving pressure constraints. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="afc5d58e7f591213c3fe1c31b4d440eb6"></a>float</td>
+<td class="fieldname">
+applyDeltas</td>
+<td class="fielddoc">
+Time spent adding position deltas to particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="af9b72d2909ef335b12a46cdbd4b71f57"></a>float</td>
+<td class="fieldname">
+calculateAnisotropy</td>
+<td class="fielddoc">
+Time spent calculating particle anisotropy for fluid. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a2ff723870a6eba26d9f3bb7e5250b27f"></a>float</td>
+<td class="fieldname">
+updateDiffuse</td>
+<td class="fielddoc">
+Time spent updating diffuse particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a8cb34cbcf9def6817d6d5d3c07177052"></a>float</td>
+<td class="fieldname">
+updateTriangles</td>
+<td class="fielddoc">
+Time spent updating dynamic triangles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a1a1e69f26e02e8b3fca1d3636a7f3f13"></a>float</td>
+<td class="fieldname">
+updateNormals</td>
+<td class="fielddoc">
+Time spent updating vertex normals. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a9d825db54bc9a0bca998b3654db3b20e"></a>float</td>
+<td class="fieldname">
+finalize</td>
+<td class="fielddoc">
+Time spent finalizing state. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a2f85189cbc3014b73164cf8c4eb87e0a"></a>float</td>
+<td class="fieldname">
+updateBounds</td>
+<td class="fielddoc">
+Time spent updating particle bounds. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a3c4d2aa395ff8d0f70a6380448943be2"></a>float</td>
+<td class="fieldname">
+total</td>
+<td class="fielddoc">
+Sum of all timers above. </td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_solver_callback_params" id="struct_nv_flex_solver_callback_params"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexSolverCallbackParams</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>Structure containing pointers to the internal solver data that is passed to each registered solver callback</p>
+<dl class="section remark"><dt>Remarks</dt><dd>Pointers to internal data are only valid for the lifetime of the callback and should not be stored. However, it is safe to launch kernels and memory transfers using the device pointers.</dd>
+<dd>
+Because Flex re-orders particle data internally for performance, the particle data in the callback is not in the same order as it was provided to the API. The callback provides arrays which map original particle indices to sorted positions and vice-versa.</dd>
+<dd>
+Particle positions may be modified during any callback, but velocity modifications should only occur during the eNvFlexStageUpdateEnd stage, otherwise any velocity changes will be discarded. </dd></dl>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a3974e1e608d9f532d5520dc158b47903"></a><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *</td>
+<td class="fieldname">
+solver</td>
+<td class="fielddoc">
+Pointer to the solver that the callback is registered to. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a5b9af9cf4d889b4772cb61cefda92a87"></a>void *</td>
+<td class="fieldname">
+userData</td>
+<td class="fielddoc">
+Pointer to the user data provided to <a class="el" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlexRegisterSolverCallback()</a> </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a8ed42f9bd016cbcef45c96b5b32ca609"></a>float *</td>
+<td class="fieldname">
+particles</td>
+<td class="fielddoc">
+Device pointer to the active particle basic data in the form x,y,z,1/m. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ac48a490fa3d62cc678c309dd4b8cbf18"></a>float *</td>
+<td class="fieldname">
+velocities</td>
+<td class="fielddoc">
+Device pointer to the active particle velocity data in the form x,y,z,w (last component is not used) </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a9e5f943053d43d7e1a6b149babe4fe44"></a>int *</td>
+<td class="fieldname">
+phases</td>
+<td class="fielddoc">
+Device pointer to the active particle phase data. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ac32019f7dd1f30ab8a7391a417ed02c9"></a>int</td>
+<td class="fieldname">
+numActive</td>
+<td class="fielddoc">
+The number of active particles returned, the callback data only return pointers to active particle data, this is the same as <a class="el" href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlexGetActiveCount()</a> </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a843360ebf23cd00e5eff72d19e796dd9"></a>float</td>
+<td class="fieldname">
+dt</td>
+<td class="fielddoc">
+The per-update time-step, this is the value passed to <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a> </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="abe564dbbbd4957542322b60d77a70e29"></a>const int *</td>
+<td class="fieldname">
+originalToSortedMap</td>
+<td class="fielddoc">
+Device pointer that maps the sorted callback data to the original position given by SetParticles() </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a9b65813d2a2d3f99db162d39a62481f8"></a>const int *</td>
+<td class="fieldname">
+sortedToOriginalMap</td>
+<td class="fielddoc">
+Device pointer that maps the original particle index to the index in the callback data structure. </td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_init_desc" id="struct_nv_flex_init_desc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexInitDesc</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>Descriptor used to initialize Flex </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a5890b9e46d626cfa19994976ea53c52e"></a>int</td>
+<td class="fieldname">
+deviceIndex</td>
+<td class="fielddoc">
+The GPU device index that should be used, if there is already a CUDA context on the calling thread then this parameter will be ignored and the active CUDA context used. Otherwise a new context will be created using the suggested device ordinal. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a23b8779c1516647ef5ed7f8010d619ff"></a>bool</td>
+<td class="fieldname">
+enableExtensions</td>
+<td class="fielddoc">
+Enable or disable NVIDIA/AMD extensions in DirectX, can lead to improved performance. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a7e760844341b78a547ca4e29abf48806"></a>void *</td>
+<td class="fieldname">
+renderDevice</td>
+<td class="fielddoc">
+Direct3D device to use for simulation, if none is specified a new device and context will be created. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="abf304d5c1f8f041fa46a2bfb0bdf56fe"></a>void *</td>
+<td class="fieldname">
+renderContext</td>
+<td class="fielddoc">
+Direct3D context to use for simulation, if none is specified a new context will be created, in DirectX 12 this should be a pointer to the ID3D12CommandQueue where compute operations will take place. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aeeeaf91dad0804d1dd3125e592a3260b"></a><a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a></td>
+<td class="fieldname">
+computeType</td>
+<td class="fielddoc">
+Set to eNvFlexD3D11 if DirectX 11 should be used, eNvFlexD3D12 for DirectX 12, this must match the libraries used to link the application. </td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_sphere_geometry" id="struct_nv_flex_sphere_geometry"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexSphereGeometry</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>A basic sphere shape with origin at the center of the sphere and radius </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a7a6e24c01235abc364ed12570ab15f84"></a>float</td>
+<td class="fieldname">
+radius</td>
+<td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_capsule_geometry" id="struct_nv_flex_capsule_geometry"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexCapsuleGeometry</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>A collision capsule extends along the x-axis with its local origin at the center of the capsule </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a1241ff3522eafac4b402370a7a6525d8"></a>float</td>
+<td class="fieldname">
+radius</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aef1b5bceccca709ebb782d2ea8a61dc9"></a>float</td>
+<td class="fieldname">
+halfHeight</td>
+<td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_box_geometry" id="struct_nv_flex_box_geometry"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexBoxGeometry</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>A simple box with interior [-halfHeight, +halfHeight] along each dimension </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ab669c404607156367b09878870dbe30c"></a>float</td>
+<td class="fieldname">
+halfExtents[3]</td>
+<td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_convex_mesh_geometry" id="struct_nv_flex_convex_mesh_geometry"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexConvexMeshGeometry</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>A convex mesh instance with non-uniform scale </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a800620cc4888bbe5696c5f0e19b22bb9"></a>float</td>
+<td class="fieldname">
+scale[3]</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="abdc984644770fec15d7af740c9730186"></a><a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a></td>
+<td class="fieldname">
+mesh</td>
+<td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_triangle_mesh_geometry" id="struct_nv_flex_triangle_mesh_geometry"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexTriangleMeshGeometry</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>A scaled triangle mesh instance with non-uniform scale </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ab6e2aa06b69e92cbd3b2bca19f18e794"></a>float</td>
+<td class="fieldname">
+scale[3]</td>
+<td class="fielddoc">
+The scale of the object from local space to world space. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="af6a50e64591866ae2390a57e3342566c"></a><a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a></td>
+<td class="fieldname">
+mesh</td>
+<td class="fielddoc">
+A triangle mesh pointer created by <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh()</a> </td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_s_d_f_geometry" id="struct_nv_flex_s_d_f_geometry"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexSDFGeometry</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>A scaled signed distance field instance, the local origin of the SDF is at corner of the field corresponding to the first voxel. The field is mapped to the local space volume [0, 1] in each dimension. </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a0008a52f6ae1e17c436b095549bf1c78"></a>float</td>
+<td class="fieldname">
+scale</td>
+<td class="fielddoc">
+Uniform scale of SDF, this corresponds to the world space width of the shape. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a0a6936f3cb0544ad624f1dea6b7eb50c"></a><a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a></td>
+<td class="fieldname">
+field</td>
+<td class="fielddoc">
+A signed distance field pointer created by <a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField()</a> </td></tr>
+</table>
+
+</div>
+</div>
+<a name="union_nv_flex_collision_geometry" id="union_nv_flex_collision_geometry"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">union NvFlexCollisionGeometry</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>This union allows collision geometry to be sent to Flex as a flat array of 16-byte data structures, the shape flags array specifies the type for each shape, see <a class="el" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlexSetShapes()</a>. </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a0e3c0e02ec7addd25ebb3355a8865bfb"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_sphere_geometry">NvFlexSphereGeometry</a></td>
+<td class="fieldname">
+sphere</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a8ad5aa3c9c9456607de9a2c9f1d0d2c1"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_capsule_geometry">NvFlexCapsuleGeometry</a></td>
+<td class="fieldname">
+capsule</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a53e827707abaf2e03b78c3c88469d7bf"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_box_geometry">NvFlexBoxGeometry</a></td>
+<td class="fieldname">
+box</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ae701fdcc0e7bf26c1dfc54d400ffb3d2"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_convex_mesh_geometry">NvFlexConvexMeshGeometry</a></td>
+<td class="fieldname">
+convexMesh</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a064e3ce30320610d495ba3faa72dc8d6"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_triangle_mesh_geometry">NvFlexTriangleMeshGeometry</a></td>
+<td class="fieldname">
+triMesh</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ac0049037dcff7a769030acd567eac6cd"></a><a class="el" href="_nv_flex_8h.html#struct_nv_flex_s_d_f_geometry">NvFlexSDFGeometry</a></td>
+<td class="fieldname">
+sdf</td>
+<td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_detail_timer" id="struct_nv_flex_detail_timer"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexDetailTimer</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>Holds the execution time for a specfic shader </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a3ddbb30a2fde4a2e9ccec7854300b1d4"></a>char *</td>
+<td class="fieldname">
+name</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a83f6117fe98bc6426027a9b784fd737c"></a>float</td>
+<td class="fieldname">
+time</td>
+<td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a class="anchor" id="a3078976e98f370a9fbdb11db80f1f318"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Opaque type representing a library that can create FlexSolvers, FlexTriangleMeshes, and NvFlexBuffers </p>
+
+</div>
+</div>
+<a class="anchor" id="afaeb57f4ee7e54b1ae1b912a465ed39e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Opaque type representing a collection of particles and constraints </p>
+
+</div>
+</div>
+<a class="anchor" id="a50a3933d3f7b77d0500c702b1fa9ba9a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Opaque type representing a data buffer, type and contents depends on usage, see <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer()</a> </p>
+
+</div>
+</div>
+<a class="anchor" id="abe6f00c9b94debbf7c181082a14076d5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* NvFlexErrorCallback) (<a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a> type, const char *msg, const char *file, int line)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Function pointer type for error reporting callbacks </p>
+
+</div>
+</div>
+<a class="anchor" id="a2aea4c3d772b4dbccb7dd9ba37c1bdc0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef unsigned int <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>An opaque type representing a static triangle mesh in the solver </p>
+
+</div>
+</div>
+<a class="anchor" id="a56e990c5bfbc89677988cbf2471c0ade"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef unsigned int <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>An opaque type representing a signed distance field collision shape in the solver. </p>
+
+</div>
+</div>
+<a class="anchor" id="a7ab5aa68da7ca1f69211a900f1a1c586"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef unsigned int <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>An opaque type representing a convex mesh collision shape in the solver. Convex mesh shapes may consist of up to 64 planes of the form a*x + b*y + c*z + d = 0, particles will be constrained to the outside of the shape. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a class="anchor" id="a6541b33eaca7b2323e73b30cea34d16c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlexMapFlags</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Controls behavior of <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap()</a> </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6"></a>eNvFlexMapWait&#160;</td><td class="fielddoc">
+<p>Calling thread will be blocked until buffer is ready for access, default. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1"></a>eNvFlexMapDoNotWait&#160;</td><td class="fielddoc">
+<p>Calling thread will check if buffer is ready for access, if not ready then the method will return NULL immediately. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706"></a>eNvFlexMapDiscard&#160;</td><td class="fielddoc">
+<p>Buffer contents will be discarded, this allows for efficent buffer reuse. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a class="anchor" id="a169e4c126acf46bdebf76c36a44deca3"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Controls memory space of a NvFlexBuffer, see <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer()</a> </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8"></a>eNvFlexBufferHost&#160;</td><td class="fielddoc">
+<p>Host mappable buffer, pinned memory on CUDA, staging buffer on DX. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576"></a>eNvFlexBufferDevice&#160;</td><td class="fielddoc">
+<p>Device memory buffer, mapping this on CUDA will return a device memory pointer, and will return a buffer pointer on DX. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a class="anchor" id="a46f5d35902f7da40628247175a174f3b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Controls the relaxation method used by the solver to ensure convergence </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db"></a>eNvFlexRelaxationGlobal&#160;</td><td class="fielddoc">
+<p>The relaxation factor is a fixed multiplier on each constraint's position delta. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c"></a>eNvFlexRelaxationLocal&#160;</td><td class="fielddoc">
+<p>The relaxation factor is a fixed multiplier on each constraint's delta divided by the particle's constraint count, convergence will be slower but more reliable. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a class="anchor" id="a5ad2a7745fcb4d4afd5b5f1bda074644"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlexPhase</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Flags that control the a particle's behavior and grouping, use <a class="el" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlexMakePhase()</a> to construct a valid 32bit phase identifier </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32"></a>eNvFlexPhaseGroupMask&#160;</td><td class="fielddoc">
+<p>Low 24 bits represent the particle group for controlling collisions. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977"></a>eNvFlexPhaseSelfCollide&#160;</td><td class="fielddoc">
+<p>If set this particle will interact with particles of the same group. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1"></a>eNvFlexPhaseSelfCollideFilter&#160;</td><td class="fielddoc">
+<p>If set this particle will ignore collisions with particles closer than the radius in the rest pose, this flag should not be specified unless valid rest positions have been specified using <a class="el" href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlexSetRestParticles()</a> </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74"></a>eNvFlexPhaseFluid&#160;</td><td class="fielddoc">
+<p>If set this particle will generate fluid density constraints for its overlapping neighbors. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a class="anchor" id="ab4435b3857752360375fe52fc992cfca"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Flex error return codes </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd"></a>eNvFlexLogError&#160;</td><td class="fielddoc">
+<p>Error messages. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f"></a>eNvFlexLogInfo&#160;</td><td class="fielddoc">
+<p>Information messages. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61"></a>eNvFlexLogWarning&#160;</td><td class="fielddoc">
+<p>Warning messages. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e"></a>eNvFlexLogDebug&#160;</td><td class="fielddoc">
+<p>Used only in debug version of dll. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e"></a>eNvFlexLogAll&#160;</td><td class="fielddoc">
+<p>All log types. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Defines the set of stages at which callbacks may be registered </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff"></a>eNvFlexStageIterationStart&#160;</td><td class="fielddoc">
+<p>Called at the beginning of each constraint iteration. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69"></a>eNvFlexStageIterationEnd&#160;</td><td class="fielddoc">
+<p>Called at the end of each constraint iteration. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44"></a>eNvFlexStageSubstepBegin&#160;</td><td class="fielddoc">
+<p>Called at the beginning of each substep after the prediction step has been completed. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586"></a>eNvFlexStageSubstepEnd&#160;</td><td class="fielddoc">
+<p>Called at the end of each substep after the velocity has been updated by the constraints. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806"></a>eNvFlexStageUpdateEnd&#160;</td><td class="fielddoc">
+<p>Called at the end of solver update after the final substep has completed. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3"></a>eNvFlexStageCount&#160;</td><td class="fielddoc">
+<p>Number of stages. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a class="anchor" id="a9b2d3dc5ac42011aeec4e13be2e14252"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Defines the different DirectX compute modes that Flex can use </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178"></a>eNvFlexCUDA&#160;</td><td class="fielddoc">
+<p>Use CUDA compute for Flex, the application must link against the CUDA libraries. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df"></a>eNvFlexD3D11&#160;</td><td class="fielddoc">
+<p>Use DirectX 11 compute for Flex, the application must link against the D3D libraries. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943"></a>eNvFlexD3D12&#160;</td><td class="fielddoc">
+<p>Use DirectX 12 compute for Flex, the application must link against the D3D libraries. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a class="anchor" id="a0506ae712f846087b8647ea389ac26ba"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3"></a>eNvFlexShapeSphere&#160;</td><td class="fielddoc">
+<p>A sphere shape, see FlexSphereGeometry. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a"></a>eNvFlexShapeCapsule&#160;</td><td class="fielddoc">
+<p>A capsule shape, see FlexCapsuleGeometry. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7"></a>eNvFlexShapeBox&#160;</td><td class="fielddoc">
+<p>A box shape, see FlexBoxGeometry. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce"></a>eNvFlexShapeConvexMesh&#160;</td><td class="fielddoc">
+<p>A convex mesh shape, see FlexConvexMeshGeometry. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1"></a>eNvFlexShapeTriangleMesh&#160;</td><td class="fielddoc">
+<p>A triangle mesh shape, see FlexTriangleMeshGeometry. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180"></a>eNvFlexShapeSDF&#160;</td><td class="fielddoc">
+<p>A signed distance field shape, see FlexSDFGeometry. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<a class="anchor" id="a31c31ea4f96cd4fdadc6b7317691304c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlexCollisionShapeFlags</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8"></a>eNvFlexShapeFlagTypeMask&#160;</td><td class="fielddoc">
+<p>Lower 3 bits holds the type of the collision shape. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992"></a>eNvFlexShapeFlagDynamic&#160;</td><td class="fielddoc">
+<p>Indicates the shape is dynamic and should have lower priority over static collision shapes. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8"></a>eNvFlexShapeFlagTrigger&#160;</td><td class="fielddoc">
+<p>Indicates that the shape is a trigger volume, this means it will not perform any collision response, but will be reported in the contacts array (see <a class="el" href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlexGetContacts()</a>) </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9"></a>eNvFlexShapeFlagReserved&#160;</td><td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="af53fa9d7caef50db346475065504848d"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API int NvFlexMakePhase </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>group</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>flags</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Generate a bit set for the particle phase, the group should be an integer &lt; 2^24, and the flags should be a combination of FlexPhase enum values </p>
+
+</div>
+</div>
+<a class="anchor" id="a687e5ec141948f779faa9183b68cb743"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* NvFlexInit </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>version</em> = <code>NV_FLEX_VERSION</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a>&#160;</td>
+ <td class="paramname"><em>errorFunc</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a> *&#160;</td>
+ <td class="paramname"><em>desc</em> = <code>0</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Initialize library, should be called before any other API function.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">version</td><td>The version number the app is expecting, should almost always be NV_FLEX_VERSION </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">errorFunc</td><td>The callback used for reporting errors. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">desc</td><td>The <a class="el" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a> struct defining the device ordinal, D3D device/context and the type of D3D compute being used </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to a library instance that can be used to allocate shared object such as triangle meshes, buffers, etc </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="aaf59e45ada57c7f958a8030099cbe211"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexShutdown </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Shutdown library, users should manually destroy any previously created solvers to ensure memory is freed before calling this method. If a new CUDA context was created during <a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit()</a> then it will be destroyed.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library intance to use </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac25ec5de38c177db51198bb620644d36"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API int NvFlexGetVersion </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get library version number </p>
+
+</div>
+</div>
+<a class="anchor" id="af7f91fa47c779fcd8bee60061de6d31c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* NvFlexCreateSolver </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>maxParticles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>maxDiffuseParticles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>maxNeighborsPerParticle</em> = <code>96</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Create a new particle solver</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxParticles</td><td>Maximum number of simulation particles possible for this solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxDiffuseParticles</td><td>Maximum number of diffuse (non-simulation) particles possible for this solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxNeighborsPerParticle</td><td>Maximum number of neighbors per particle possible for this solver </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a1d755d7b090f7ed5c4c50d2d3fef1558"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexDestroySolver </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Delete a particle solver</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver pointer created from <a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver()</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae0d57e4fc2b3b51ec08f7da0a28ff343"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* NvFlexGetSolverLibrary </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Return the library associated with a solver</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver created with <a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver()</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A library pointer </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac5427457488ab3f2de91cf65335dda08"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a> NvFlexRegisterSolverCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a>&#160;</td>
+ <td class="paramname"><em>function</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a>&#160;</td>
+ <td class="paramname"><em>stage</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Registers a callback for a solver stage, the callback will be invoked from the same thread that calls <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">function</td><td>A pointer to a function that will be called during the solver update </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">stage</td><td>The stage of the update at which the callback function will be called</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously registered callback for this slot, this allows multiple users to chain callbacks together </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac75370f005fd453fe8a324fe62be1b5c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexUpdateSolver </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>dt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>substeps</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>enableTimers</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Integrate particle solver forward in time. Below is an example of how to step Flex in the context of a simple game loop:</p>
+<div class="fragment"><div class="line"><a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* library = <a class="code" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit</a>();</div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver = <a class="code" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver</a>(library);</div>
+<div class="line"></div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* particleBuffer = <a class="code" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a>(library, n, <span class="keyword">sizeof</span>(Vec4), <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a>);</div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* velocityBuffer = <a class="code" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a>(library, n, <span class="keyword">sizeof</span>(Vec4), <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a>);</div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* phaseBuffer = <a class="code" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a>(library, n, <span class="keyword">sizeof</span>(<span class="keywordtype">int</span>), <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a>);</div>
+<div class="line"></div>
+<div class="line"><span class="keywordflow">while</span>(!done)</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// map buffers for reading / writing</span></div>
+<div class="line"> float4* particles = (float4*)<a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(particles, <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>);</div>
+<div class="line"> float3* velocities = (float3*)<a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(velocities, <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>);</div>
+<div class="line"> <span class="keywordtype">int</span>* phases = (<span class="keywordtype">int</span>*)<a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(phases, <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>);</div>
+<div class="line"></div>
+<div class="line"> <span class="comment">// spawn (user method)</span></div>
+<div class="line"> SpawnParticles(particles, velocities, phases);</div>
+<div class="line"></div>
+<div class="line"> <span class="comment">// render (user method)</span></div>
+<div class="line"> RenderParticles(particles, velocities, phases);</div>
+<div class="line"></div>
+<div class="line"> <span class="comment">// unmap buffers</span></div>
+<div class="line"> <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(particleBuffer);</div>
+<div class="line"> <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(velocityBuffer);</div>
+<div class="line"> <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(phaseBuffer);</div>
+<div class="line"></div>
+<div class="line"> <span class="comment">// write to device (async)</span></div>
+<div class="line"> <a class="code" href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlexSetParticles</a>(particleBuffer, n);</div>
+<div class="line"> <a class="code" href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlexSetVelocities</a>(velocityBuffer, n);</div>
+<div class="line"> <a class="code" href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlexSetPhases</a>(phaseBuffer, n);</div>
+<div class="line"></div>
+<div class="line"> <span class="comment">// tick</span></div>
+<div class="line"> <a class="code" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver</a>(solver, dt, 1, NULL);</div>
+<div class="line"></div>
+<div class="line"> <span class="comment">// read back (async)</span></div>
+<div class="line"> <a class="code" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlexGetParticles</a>(particleBuffer, n);</div>
+<div class="line"> <a class="code" href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlexGetVelocities</a>(velocityBuffer, n);</div>
+<div class="line"> <a class="code" href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlexGetPhases</a>(phaseBuffer, n);</div>
+<div class="line">}</div>
+<div class="line"></div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(particleBuffer);</div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(velocityBuffer);</div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(phaseBuffer);</div>
+<div class="line"></div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlexDestroySolver</a>(solver);</div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlexShutdown</a>(library);</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dt</td><td>Time to integrate the solver forward in time by </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">substeps</td><td>The time dt will be divided into the number of sub-steps given by this parameter </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">enableTimers</td><td>Whether to enable per-kernel timers for profiling. Note that profiling can substantially slow down overall performance so this param should only be true in non-release builds </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae2db6ad8006027c1acf2315a0d15fe71"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetParams </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> *&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Update solver paramters</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">params</td><td>Parameters structure in host memory, see <a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a581b458848039220203547af53de128f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetParams </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> *&#160;</td>
+ <td class="paramname"><em>params</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Retrieve solver paramters, default values will be set at solver creation time</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">params</td><td>Parameters structure in host memory, see <a class="el" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aea2af336bdd96d7168c3acdce6d1875d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetActive </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set the active particles indices in the solver</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>Holds the indices of particles that have been made active </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>Number of particles to allocate </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aeed8fe87fa073067af1a45560cc54a79"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetActive </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>indices</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Return the active particle indices</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>a buffer of indices at least activeCount in length </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2345372dea2ad4f043153a84e7a2c407"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API int NvFlexGetActiveCount </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Return the number of active particles in the solver</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The number of active particles in the solver </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="abef057ac89ba5cf1cd71f0084f9313de"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetParticles </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set the particles state of the solver, a particle consists of 4 floating point numbers, its x,y,z position followed by its inverse mass (1/m)</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>Pointer to a buffer of particle data, should be 4*n in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to set </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a84f06fff995d8eb034cff81c811fa312"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetParticles </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the particles state of the solver, a particle consists of 4 floating point numbers, its x,y,z position followed by its inverse mass (1/m)</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>Pointer to a buffer of 4*n floats that will be filled out with the particle data, can be either a host or device pointer </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to get, must be less than max particles passed to NvFlexCreateSolver </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa457096286567a37d4f1d5f4857d9296"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetRestParticles </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set the particle positions in their rest state, if eNvFlexPhaseSelfCollideFilter is set on the particle's phase attribute then particles that overlap in the rest state will not generate collisions with each other</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>Pointer to a buffer of particle data, should be 4*n in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to set </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="affb884bcf3e7e389812d0b52b0fc0490"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetRestParticles </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the particle positions in their rest state</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>Pointer to a buffer of particle data, should be 4*n in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to set </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="abfa62e01c4f4511d3f6a00ab6a0f257a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetSmoothParticles </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the Laplacian smoothed particle positions for rendering, see <a class="el" href="_nv_flex_8h.html#ac017e05107d0362d3d03a14eaadf0657" title="Control the strength of Laplacian smoothing in particles for rendering, if zero then smoothed positio...">NvFlexParams::smoothing</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>Pointer to a buffer of 4*n floats that will be filled out with the data, can be either a host or device pointer </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of smooth particles to return </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="afe09e63d22c5156fe24cd2d2bc069c04"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetVelocities </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set the particle velocities, each velocity is a 3-tuple of x,y,z floating point values</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>Pointer to a buffer of 3*n floats </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of velocities to set </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a67bd9669086e823ebe33d08d14f5b2b9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetVelocities </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the particle velocities, each velocity is a 3-tuple of x,y,z floating point values</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>Pointer to a buffer of 3*n floats that will be filled out with the data, can be either a host or device pointer </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of velocities to get </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a3117f92571613709936291c48414e521"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetPhases </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>phases</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set the particles phase id array, each particle has an associated phase id which controls how it interacts with other particles. Particles with phase 0 interact with all other phase types.</p>
+<p>Particles with a non-zero phase id only interact with particles whose phase differs from theirs. This is useful, for example, to stop particles belonging to a single rigid shape from interacting with each other.</p>
+<p>Phase 0 is used to indicate fluid particles when NvFlexParams::mFluid is set.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">phases</td><td>Pointer to a buffer of n integers containing the phases </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of phases to set </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a15b7a5449bee38bbe5dcaf23690f09f5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetPhases </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>phases</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the particle phase ids</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">phases</td><td>Pointer to a buffer of n integers that will be filled with the phase data, can be either a host or device pointer </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of phases to get </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="add03fd357383845f07e0596290faf316"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetNormals </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>normals</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set per-particle normals to the solver, these will be overwritten after each simulation step, but can be used to initialize the normals to valid values</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">normals</td><td>Pointer to a buffer of normals, should be 4*n in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of normals to set </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aadb2a0cf125e4a6b2f3443ab7dcbd3d4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetNormals </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>normals</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get per-particle normals from the solver, these are the world-space normals computed during surface tension, cloth, and rigid body calculations</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">normals</td><td>Pointer to a buffer of normals, should be 4*n in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of normals to get </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae67c0cab2ecee8eb9485a26ef0fad6a9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetSprings </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>restLengths</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>stiffness</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numSprings</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set distance constraints for the solver. Each distance constraint consists of two particle indices stored consecutively, a rest-length, and a stiffness value. These are not springs in the traditional sense, but behave somewhat like a traditional spring when lowering the stiffness coefficient.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>Pointer to the spring indices array, should be 2*numSprings length, 2 indices per-spring </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">restLengths</td><td>Pointer to a buffer of rest lengths, should be numSprings length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">stiffness</td><td>Pointer to the spring stiffness coefficents, should be numSprings in length, a negative stiffness value represents a tether constraint </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numSprings</td><td>The number of springs to set </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aab5f90f4024d71d08c3f9327c6d8c184"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetSprings </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>restLengths</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>stiffness</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numSprings</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the distance constraints from the solver</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>Pointer to the spring indices array, should be 2*numSprings length, 2 indices per-spring </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">restLengths</td><td>Pointer to a buffer of rest lengths, should be numSprings length </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">stiffness</td><td>Pointer to the spring stiffness coefficents, should be numSprings in length, a negative stiffness value represents a unilateral tether constraint (only resists stretching, not compression), valid range [-1, 1] </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numSprings</td><td>The number of springs to get </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a89c872e761a53c87375f536a0ef597d8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetRigids </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>offsets</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>restPositions</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>restNormals</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>stiffness</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>rotations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>translations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numRigids</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numIndices</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set rigid body constraints for the solver. </p><dl class="section note"><dt>Note</dt><dd>A particle should not belong to more than one rigid body at a time.</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">offsets</td><td>Pointer to a buffer of start offsets for a rigid in the indices array, should be numRigids+1 in length, the first entry must be 0 </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>Pointer to a buffer of indices for the rigid bodies, the indices for the jth rigid body start at indices[offsets[j]] and run to indices[offsets[j+1]] exclusive </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">restPositions</td><td>Pointer to a buffer of local space positions relative to the rigid's center of mass (average position), this should be at least 3*numIndices in length in the format x,y,z </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">restNormals</td><td>Pointer to a buffer of local space normals, this should be at least 4*numIndices in length in the format x,y,z,w where w is the (negative) signed distance of the particle inside its shape </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">stiffness</td><td>Pointer to a buffer of rigid stiffness coefficents, should be numRigids in length, valid values in range [0, 1] </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">rotations</td><td>Pointer to a buffer of quaternions (4*numRigids in length) </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">translations</td><td>Pointer to a buffer of translations of the center of mass (3*numRigids in length) </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numRigids</td><td>The number of rigid bodies to set </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numIndices</td><td>The number of indices in the indices array </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a3eafe7fe6b200c757c7402eca7d13f6d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetRigidTransforms </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>rotations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>translations</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the rotation matrices for the rigid bodies in the solver</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">rotations</td><td>Pointer to a buffer of quaternions, should be 4*numRigids floats in length </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">translations</td><td>Pointer to a buffer of vectors to hold the rigid translations, should be 3*numRigids floats in length </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="afdda5a5210938a1e8a7c3a8218ad468e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a> NvFlexCreateTriangleMesh </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Create triangle mesh geometry, note that meshes may be used by multiple solvers if desired</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to a triangle mesh object </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a4cb4462803ebff105d151fd45b4efad6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexDestroyTriangleMesh </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a>&#160;</td>
+ <td class="paramname"><em>mesh</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Destroy a triangle mesh created with <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh()</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mesh</td><td>A triangle mesh created with <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh()</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a4958c555f0ed65dee54c37af32529356"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexUpdateTriangleMesh </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a>&#160;</td>
+ <td class="paramname"><em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>vertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numVertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numTriangles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>lower</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>upper</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Specifies the triangle mesh geometry (vertices and indices), this method will cause any internal data structures (e.g.: bounding volume hierarchies) to be rebuilt.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mesh</td><td>A triangle mesh created with <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh()</a> </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">vertices</td><td>Pointer to a buffer of float3 vertex positions </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>Pointer to a buffer of triangle indices, should be length numTriangles*3 </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numVertices</td><td>The number of vertices in the vertices array </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numTriangles</td><td>The number of triangles in the mesh </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">lower</td><td>A pointer to a float3 vector holding the lower spatial bounds of the mesh </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">upper</td><td>A pointer to a float3 vector holding the upper spatial bounds of the mesh </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a60794d849b4184335e2a0ddec0a9e6a2"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetTriangleMeshBounds </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a>&#160;</td>
+ <td class="paramname"><em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>lower</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>upper</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Retrieve the local space bounds of the mesh, these are the same values specified to <a class="el" href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlexUpdateTriangleMesh()</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mesh</td><td>Pointer to a triangle mesh object </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">lower</td><td>Pointer to a buffer of 3 floats that the lower mesh bounds will be written to </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">upper</td><td>Pointer to a buffer of 3 floats that the upper mesh bounds will be written to </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5c28caf6d5d513c5adacd4fbc782f308"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a> NvFlexCreateDistanceField </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Create a signed distance field collision shape, see NvFlexDistanceFieldId for details.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to a signed distance field object </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab11bdd7f778d17af16cefea33265cb65"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexDestroyDistanceField </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a>&#160;</td>
+ <td class="paramname"><em>sdf</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Destroy a signed distance field</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">sdf</td><td>A signed distance field created with <a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField()</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a584ffb275b9986fd5444ed1a7ea247d9"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexUpdateDistanceField </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a>&#160;</td>
+ <td class="paramname"><em>sdf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>dimx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>dimy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>dimz</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>field</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Update the signed distance field volume data, this method will upload the field data to a 3D texture on the GPU</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">sdf</td><td>A signed distance field created with <a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField()</a> </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dimx</td><td>The x-dimension of the volume data in voxels </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dimy</td><td>The y-dimension of the volume data in voxels </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dimz</td><td>The z-dimension of the volume data in voxels </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">field</td><td>The volume data stored such that the voxel at the x,y,z coordinate is addressed as field[z*dimx*dimy + y*dimx + x] </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="afbaafe2b1006352002b03aabaca531cc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a> NvFlexCreateConvexMesh </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Create a convex mesh collision shapes, see NvFlexConvexMeshId for details.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to a signed distance field object </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ac85b6372e5c7bfc508ecb7b8c59c72a0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexDestroyConvexMesh </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a>&#160;</td>
+ <td class="paramname"><em>convex</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Destroy a convex mesh</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">convex</td><td>A a convex mesh created with <a class="el" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlexCreateConvexMesh()</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a69289002a6f8ecd697118f0ec6572f5d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexUpdateConvexMesh </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a>&#160;</td>
+ <td class="paramname"><em>convex</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>planes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numPlanes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>lower</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>upper</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Update the convex mesh geometry</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">convex</td><td>A valid convex mesh shape created from <a class="el" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlexCreateConvexMesh()</a> </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">planes</td><td>An array of planes, each plane consists of 4 floats in the form a*x + b*y + c*z + d = 0 </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numPlanes</td><td>The number of planes in the convex </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">lower</td><td>The local space lower bound of the convex shape </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">upper</td><td>The local space upper bound of the convex shape </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad56e661161763579afb375b3841eb5ff"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetConvexMeshBounds </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a>&#160;</td>
+ <td class="paramname"><em>mesh</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>lower</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>upper</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Retrieve the local space bounds of the mesh, these are the same values specified to <a class="el" href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlexUpdateConvexMesh()</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mesh</td><td>Pointer to a convex mesh object </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">lower</td><td>Pointer to a buffer of 3 floats that the lower mesh bounds will be written to </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">upper</td><td>Pointer to a buffer of 3 floats that the upper mesh bounds will be written to </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad6ee1e23e0c49aad63df8f605182de3a"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API int NvFlexMakeShapeFlags </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a>&#160;</td>
+ <td class="paramname"><em>type</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>dynamic</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+<p>Combines geometry type and static/dynamic flags </p>
+
+</div>
+</div>
+<a class="anchor" id="aea4e7117722df53dfe44c676496117fa"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetShapes </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>geometry</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>shapePositions</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>shapeRotations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>shapePrevPositions</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>shapePrevRotations</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>shapeFlags</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numShapes</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set the collision shapes for the solver</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">geometry</td><td>Pointer to a buffer of <a class="el" href="_nv_flex_8h.html#union_nv_flex_collision_geometry">NvFlexCollisionGeometry</a> entries, the type of each shape determines how many entries it has in the array </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">shapePositions</td><td>Pointer to a buffer of translations for each shape in world space, should be 4*numShapes in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">shapeRotations</td><td>Pointer to an a buffer of rotations for each shape stored as quaternion, should be 4*numShapes in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">shapePrevPositions</td><td>Pointer to a buffer of translations for each shape at the start of the time step, should be 4*numShapes in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">shapePrevRotations</td><td>Pointer to an a buffer of rotations for each shape stored as a quaternion at the start of the time step, should be 4*numShapees in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">shapeFlags</td><td>The type and behavior of the shape, NvFlexCollisionShapeFlags for more detail </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numShapes</td><td>The number of shapes </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa03d94be697cdc3aaa56e469d87255a4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetDynamicTriangles </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>normals</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numTris</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set dynamic triangles mesh indices, typically used for cloth. Flex will calculate normals and apply wind and drag effects to connected particles. See <a class="el" href="_nv_flex_8h.html#a7043181449aebf540351d1d2f785cf4a" title="Drag force applied to particles belonging to dynamic triangles, proportional to velocity^2*area in th...">NvFlexParams::drag</a>, <a class="el" href="_nv_flex_8h.html#aafb92c4fa45ce9614cdfd349b3722c8a" title="Constant acceleration applied to particles that belong to dynamic triangles, drag needs to be > 0 for...">NvFlexParams::wind</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>Pointer to a buffer of triangle indices into the particles array, should be 3*numTris in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">normals</td><td>Pointer to a buffer of triangle normals, should be 3*numTris in length, can be NULL </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numTris</td><td>The number of dynamic triangles s </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="abdfd0834422dd99154a27962614525e5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetDynamicTriangles </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>normals</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numTris</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the dynamic triangle indices and normals.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>Pointer to a buffer of triangle indices into the particles array, should be 3*numTris in length, if NULL indices will not be returned </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">normals</td><td>Pointer to a buffer of triangle normals, should be 3*numTris in length, if NULL normals will be not be returned </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numTris</td><td>The number of dynamic triangles </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7f2b59fba77c60ce116e1eac57d63e50"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetInflatables </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>startTris</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>numTris</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>restVolumes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>overPressures</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>constraintScales</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numInflatables</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set inflatable shapes, an inflatable is a range of dynamic triangles (wound CCW) that represent a closed mesh. Each inflatable has a given rest volume, constraint scale (roughly equivalent to stiffness), and "over pressure" that controls how much the shape is inflated.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">startTris</td><td>Pointer to a buffer of offsets into the solver's dynamic triangles for each inflatable, should be numInflatables in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numTris</td><td>Pointer to a buffer of triangle counts for each inflatable, should be numInflatablesin length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">restVolumes</td><td>Pointer to a buffer of rest volumes for the inflatables, should be numInflatables in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">overPressures</td><td>Pointer to a buffer of floats specifying the pressures for each inflatable, a value of 1.0 means the rest volume, &gt; 1.0 means over-inflated, and &lt; 1.0 means under-inflated, should be numInflatables in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">constraintScales</td><td>Pointer to a buffer of scaling factors for the constraint, this is roughly equivalent to stiffness but includes a constraint scaling factor from position-based dynamics, see helper code for details, should be numInflatables in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numInflatables</td><td>Number of inflatables to set </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a6f6f14e625dc744a127be81e6dc4cb74"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetDensities </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>densities</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the density values for fluid particles</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particle densities to return </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">densities</td><td>Pointer to a buffer of floats, should be maxParticles in length, density values are normalized between [0, 1] where 1 represents the rest density </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae28167c680ad56dcff600ce0a223cec5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetAnisotropy </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>q1</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>q2</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>q3</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the anisotropy of fluid particles, the particle distribution for a particle is represented by 3 orthogonal vectors. Each 3-vector has unit length with the variance along that axis packed into the w component, i.e.: x,y,z,lambda.</p>
+<p>The anisotropy defines an oriented ellipsoid in worldspace that can be used for rendering or surface extraction.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">q1</td><td>Pointer to a buffer of floats that receive the first basis vector and scale, should be 4*maxParticles in length </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">q2</td><td>Pointer to a buffer of floats that receive the second basis vector and scale, should be 4*maxParticles in length </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">q3</td><td>Pointer to a buffer of floats that receive the third basis vector and scale, should be 4*maxParticles in length </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a37ada4b95999cc253dfb049b99030d50"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API int NvFlexGetDiffuseParticles </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>indices</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the state of the diffuse particles. Diffuse particles are passively advected by the fluid velocity field.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">p</td><td>Pointer to a buffer of floats, should be 4*maxParticles in length, the w component represents the particles lifetime with 1 representing a new particle, and 0 representing an inactive particle </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">v</td><td>Pointer to a buffer of floats, should be 4*maxParticles in length, the w component is not used </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>Pointer to a buffer of ints that specify particle indices in depth sorted order, should be maxParticles in length, see NvFlexParams::mDiffuseSortDir </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5a7213593dd9a23d9d67f8517d1da9de"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexSetDiffuseParticles </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>p</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>v</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set the state of the diffuse particles. Diffuse particles are passively advected by the fluid velocity field.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">p</td><td>Pointer to a buffer of floats, should be 4*n in length, the w component represents the particles lifetime with 1 representing a new particle, and 0 representing an inactive particle </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">v</td><td>Pointer to a buffer of floats, should be 4*n in length, the w component is not used </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>Number of diffuse particles to set </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7edac9cf450917147b83e98f5cb09f5d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetContacts </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>planes</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>velocities</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>counts</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the particle contact planes. Note this will only include contacts that were active on the last substep of an update, and will include all contact planes generated within <a class="el" href="_nv_flex_8h.html#a0e4cb2f91d3b7d122000d36a7d67ab81" title="Increases the radius used during contact finding against kinematic shapes. ">NvFlexParams::shapeCollisionMargin</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">planes</td><td>Pointer to a destination buffer containing the contact planes for the particle, each particle can have up to 4 contact planes so this buffer should be 16*maxParticles in length </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">velocities</td><td>Pointer to a destination buffer containing the velocity of the contact point on the shape in world space, the index of the shape (corresponding to the shape in <a class="el" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlexSetShapes()</a> is stored in the w component), each particle can have up to 4 contact planes so this buffer should be 16*maxParticles in length </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>Pointer to a buffer of indices into the contacts buffer, the first contact plane for the i'th particle is given by planes[indices[i]*sizeof(float)*4] and subsequent contacts for that particle are stored sequentially, this array should be maxParticles in length </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">counts</td><td>Pointer to a buffer of contact counts for each particle (will be &lt;= 4), this buffer should be maxParticles in length </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab1eec84a21b1872fba11c9b4cc1d1629"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetBounds </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>lower</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>upper</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Get the world space AABB of all particles in the solver, note that the bounds are calculated during the update (see <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a>) so only become valid after an update has been performed. The returned bounds represent bounds of the particles in their predicted positions <em>before</em> the constraint solve.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">lower</td><td>Pointer to a buffer of 3 floats to receive the lower bounds </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">upper</td><td>Pointer to a buffer of 3 floats to receive the upper bounds </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a221a4621ab98eca6ecd3368d288154a4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API float NvFlexGetDeviceLatency </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The time in seconds between the first and last GPU operations executed by the last NvFlexUpdateSolver.</dd></dl>
+<dl class="section note"><dt>Note</dt><dd>This method causes the CPU to wait until the GPU has finished any outstanding work. To avoid blocking the calling thread it should be called after work has completed, e.g.: directly after a <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap()</a>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab16b6d2e11e0ab417ee6c4cf16f0a27d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetTimers </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a> *&#160;</td>
+ <td class="paramname"><em>timers</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Fetch high-level GPU timers.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>The solver instance to use </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">timers</td><td>A struct containing the GPU latency of each stage in the physics pipeline.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section note"><dt>Note</dt><dd>This method causes the CPU to wait until the GPU has finished any outstanding work. To avoid blocking the calling thread it should be called after work has completed, e.g.: directly after a <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap()</a>. To capture there timers you must pass true for enableTimers in <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a> </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab1efb6764f65900cb09f0188ad6da08a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API int NvFlexGetDetailTimers </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a> **&#160;</td>
+ <td class="paramname"><em>timers</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Fetch per-shader GPU timers.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>The solver instance to use </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">timers</td><td>An array of <a class="el" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a> structures, each representing a unique shader. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The number of detail timers in the timers array</dd></dl>
+<dl class="section note"><dt>Note</dt><dd>This method causes the CPU to wait until the GPU has finished any outstanding work. To avoid blocking the calling thread it should be called after work has completed, e.g.: directly after a <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap()</a>. To capture there timers you must pass true for enableTimers in <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a> Timers are valid until the next call to NvFlexGetDetailTimers </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ad48f83b8442323687d2268206e913496"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* NvFlexAllocBuffer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>elementCount</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>elementByteStride</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a>&#160;</td>
+ <td class="paramname"><em>type</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Allocate a Flex buffer. Buffers are used to pass data to the API in an efficient manner.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">elementCount</td><td>The number of elements in the buffer </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">elementByteStride</td><td>The size of each element in bytes </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The type of buffer to allocate, can be either host memory or device memory </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to a NvFlexBuffer </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ab559759820a4322aff061745ef26c867"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexFreeBuffer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>buf</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Free a Flex buffer</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>A buffer to free, must be allocated with <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer()</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a0898bb9210440b159688d4647f6eb083"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void* NvFlexMap </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>flags</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Maps a buffer for reading and writing. When the buffer is created with NvFlexBufferType::eHost, then the returned pointer will be a host memory address that can be read/written. Mapping a buffer implicitly synchronizes with the GPU to ensure that any reads or writes from the buffer (e.g.: from the NvFlexGet*() or NvFlexSet*()) methods have completed.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">buffer</td><td>A buffer allocated with <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer()</a> </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">flags</td><td>Hints to Flex how the buffer is to be accessed, typically this should be eNvFlexMapWait (0) </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to the mapped memory </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a054cb27646a389ea257d1bbde46a6e97"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexUnmap </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>buffer</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Unmaps a buffer that was mapped through <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap()</a>, note that buffers must be unmapped before they can be passed to a NvFlexGet*() or NvFlexSet*() method</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">buffer</td><td>A valid buffer allocated through <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer()</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aab83daf46e5a9428a0ad76fb75e8ec7e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* NvFlexRegisterOGLBuffer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>buf</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>elementCount</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>elementByteStride</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Registers an OpenGL buffer to Flex which can be used to copy directly into a graphics resource. Example usage is below</p>
+<div class="fragment"><div class="line">GLuint vbo;</div>
+<div class="line">glGenBuffers(1, &amp;vbo);</div>
+<div class="line">glBindBuffer(GL_ARRAY_BUFFER, vbo);</div>
+<div class="line">glBufferData(GL_ARRAY_BUFFER, size, NULL, GL_DYNAMIC_DRAW)</div>
+<div class="line"></div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* vboBuffer = <a class="code" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlexRegisterOGLBuffer</a>(lib, vbo, n, sizeof(<span class="keywordtype">float</span>)*4);</div>
+<div class="line"></div>
+<div class="line"><span class="comment">// simulate </span></div>
+<div class="line">...</div>
+<div class="line"></div>
+<div class="line"><span class="comment">// copy directly from Flex into render buffer</span></div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlexGetParticles</a>(vboBuffer, n);</div>
+<div class="line"></div>
+<div class="line"><span class="comment">// render</span></div>
+<div class="line">...</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>An OpenGL buffer identifier </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">elementCount</td><td>The number of elements in the buffer </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">elementByteStride</td><td>the size of each element in bytes </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A valid NvFlexBuffer pointer that may be used with NvFlexGet*() methods to populate the render buffer using direct GPU-GPU copies </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a78045a8d4e856372df108dc616a94cd8"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexUnregisterOGLBuffer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>buf</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Unregister a NvFlexBuffer allocated through <a class="el" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlexRegisterOGLBuffer()</a></p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>A valid buffer </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab487e68ce1c84ce1eec0c85b7daf5aa0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* NvFlexRegisterD3DBuffer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>elementCount</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>elementByteStride</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Registers a Direct3D buffer to Flex which can be used to copy directly into a graphics resource</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">buffer</td><td>A pointer to either an ID3D11Buffer or ID3D12Resource object </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">elementCount</td><td>The number of elements in the buffer </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">elementByteStride</td><td>the size of each element in bytes </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A valid NvFlexBuffer pointer that may be used with NvFlexGet*() methods to populate the render buffer using direct GPU-GPU copies </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ad607e7916e5d76b384a61f1c1f94ab32"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexUnregisterD3DBuffer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td>
+ <td class="paramname"><em>buf</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Unregister a NvFlexBuffer allocated through NvFlexRegistereD3DBuffer()</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">buf</td><td>A valid buffer </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a42ec7b30c79d4733e6a756b5d9b15ee6"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexAcquireContext </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Ensures that the CUDA context the library was initialized with is present on the current thread</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ae6671f352bd77e296609d0bc2a57fd11"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexRestoreContext </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Restores the CUDA context (if any) that was present on the last call to <a class="el" href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlexAcquireContext()</a> Note: the acquire/restore pair of calls must come from the same thread </p>
+
+</div>
+</div>
+<a class="anchor" id="a4c451971259524c6878b6b1ed4023ada"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API const char* NvFlexGetDeviceName </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Returns a null-terminated string with the compute device name</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a2ac0a898a565a2cdf13b80acd4a3555c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexGetDeviceAndContext </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void **&#160;</td>
+ <td class="paramname"><em>device</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void **&#160;</td>
+ <td class="paramname"><em>context</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Retrieve the device and context for the the library. On CUDA the context pointer will be filled with a pointer to a CUcontext structure On D3D the device and context pointers will be filled with pointers to a NvFlex::Device, and NvFlex::Context wrapper</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>Pointer to a valid library returned from <a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit()</a> </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">device</td><td>Pointer to a device pointer, see description </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">context</td><td>Pointer to a context pointer, see description </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a898eb8e66a456dd2266c694f29cab600"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexFlush </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Force a pipeline flush to ensure any queued work is submitted to the GPU</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/_nv_flex_8h_source.html b/doc/_static/api/_nv_flex_8h_source.html
new file mode 100644
index 0000000..434a362
--- /dev/null
+++ b/doc/_static/api/_nv_flex_8h_source.html
@@ -0,0 +1,736 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: NvFlex.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">NvFlex.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="_nv_flex_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// This code contains NVIDIA Confidential Information and is disclosed to you</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// under a form of NVIDIA software license agreement provided separately to you.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Notice</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// NVIDIA Corporation and its licensors retain all intellectual property and</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// proprietary rights in and to this software and related documentation and</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// any modifications thereto. Any use, reproduction, disclosure, or</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// distribution of this software and related documentation without an express</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// license agreement from NVIDIA Corporation is strictly prohibited.</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED &quot;AS IS.&quot;. NVIDIA MAKES</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Information and code furnished is believed to be accurate and reliable.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// information or for any infringement of patents or other rights of third parties that may</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// result from its use. No license is granted by implication or otherwise under any patent</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// or patent rights of NVIDIA Corporation. Details are subject to change without notice.</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// This code supersedes and replaces all information previously supplied.</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// NVIDIA Corporation products are not authorized for use as critical</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// components in life support devices or systems without express written approval of</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// NVIDIA Corporation.</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// Copyright (c) 2013-2017 NVIDIA Corporation. All rights reserved.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#ifndef NV_FLEX_H</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#define NV_FLEX_H</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#if _WIN32</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#define NV_FLEX_API __declspec(dllexport)</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#define NV_FLEX_API</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">// least 2 significant digits define minor version, eg: 10 -&gt; version 0.10</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#define NV_FLEX_VERSION 110</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318"> 52</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> <a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>;</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e"> 57</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> <a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a"> 62</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>;</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c"> 67</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlexMapFlags</a></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;{</div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6"> 69</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a> = 0, </div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1"> 70</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1">eNvFlexMapDoNotWait</a> = 1, </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706"> 71</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706">eNvFlexMapDiscard</a> = 2 </div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;};</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3"> 77</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;{</div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8"> 79</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a> = 0, </div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576"> 80</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576">eNvFlexBufferDevice</a> = 1, </div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;};</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b"> 86</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;{</div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db"> 88</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db">eNvFlexRelaxationGlobal</a> = 0, </div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c"> 89</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c">eNvFlexRelaxationLocal</a> = 1 </div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;};</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
+<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 96</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;{</div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a572c9bf93128466e27d57f225f4d0188"> 98</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a572c9bf93128466e27d57f225f4d0188">numIterations</a>; </div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a482a7c3b197c4df656e9509fbd04032c"> 100</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a482a7c3b197c4df656e9509fbd04032c">gravity</a>[3]; </div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aa6eddaa3a6eb35917c093dcabf69a200"> 101</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aa6eddaa3a6eb35917c093dcabf69a200">radius</a>; </div>
+<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab7c54d6c0b3d3595780e5179bf62ebc4"> 102</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab7c54d6c0b3d3595780e5179bf62ebc4">solidRestDistance</a>; </div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ad019ad1901bc33d43e3a60df0dfe9b09"> 103</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ad019ad1901bc33d43e3a60df0dfe9b09">fluidRestDistance</a>; </div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="comment">// common params</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a27a185172ad1951d40c476ade8307068"> 106</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a27a185172ad1951d40c476ade8307068">dynamicFriction</a>; </div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af0a34fd0cdf686022650be9f895cbf2f"> 107</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#af0a34fd0cdf686022650be9f895cbf2f">staticFriction</a>; </div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af7a56fc54644e7020e105f2ff41dfb60"> 108</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#af7a56fc54644e7020e105f2ff41dfb60">particleFriction</a>; </div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#afc306cb48c313ee518461d60c1014485"> 109</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#afc306cb48c313ee518461d60c1014485">restitution</a>; </div>
+<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8114a049f5e16f7d1b960f3ac4993fdb"> 110</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a8114a049f5e16f7d1b960f3ac4993fdb">adhesion</a>; </div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a533a78227b462a268c905f9c307c4bd6"> 111</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a533a78227b462a268c905f9c307c4bd6">sleepThreshold</a>; </div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; </div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab003c023dde289dee075c49db022ccaf"> 113</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab003c023dde289dee075c49db022ccaf">maxSpeed</a>; </div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0def9c3ceff57bbae5bcec15f6d64b36"> 114</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a0def9c3ceff57bbae5bcec15f6d64b36">maxAcceleration</a>; </div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
+<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab98a2aba477ab4d4178bf677852bf544"> 116</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab98a2aba477ab4d4178bf677852bf544">shockPropagation</a>; </div>
+<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aeff62427426510eeb1cf5625e14ff585"> 117</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aeff62427426510eeb1cf5625e14ff585">dissipation</a>; </div>
+<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6198445df7f341ec75f37e1dfb44830c"> 118</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a6198445df7f341ec75f37e1dfb44830c">damping</a>; </div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="comment">// cloth params</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aafb92c4fa45ce9614cdfd349b3722c8a"> 121</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aafb92c4fa45ce9614cdfd349b3722c8a">wind</a>[3]; </div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7043181449aebf540351d1d2f785cf4a"> 122</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a7043181449aebf540351d1d2f785cf4a">drag</a>; </div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af9bb710afb22ec5ed50679aef8717777"> 123</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#af9bb710afb22ec5ed50679aef8717777">lift</a>; </div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// fluid params</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8f0ee62a14387dd5b5a4e8c6bc429140"> 126</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="_nv_flex_8h.html#a8f0ee62a14387dd5b5a4e8c6bc429140">fluid</a>; </div>
+<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3ef4d1035530c3583bdf983c7e62b472"> 127</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a3ef4d1035530c3583bdf983c7e62b472">cohesion</a>; </div>
+<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5628f890f4ae070e405feaf1f81a7b85"> 128</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a5628f890f4ae070e405feaf1f81a7b85">surfaceTension</a>; </div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a40f452b4edbf11b793f31286a0ae270e"> 129</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a40f452b4edbf11b793f31286a0ae270e">viscosity</a>; </div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae763dd9bfcfa4092c0165a506e32e18b"> 130</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ae763dd9bfcfa4092c0165a506e32e18b">vorticityConfinement</a>; </div>
+<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a608af97e77a912e959b0e825082a9cd6"> 131</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a608af97e77a912e959b0e825082a9cd6">anisotropyScale</a>; </div>
+<div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab136ae1511a39ef570c010f321eff206"> 132</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab136ae1511a39ef570c010f321eff206">anisotropyMin</a>; </div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5e37444b8c96e0880a428d9ea58dbf54"> 133</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a5e37444b8c96e0880a428d9ea58dbf54">anisotropyMax</a>; </div>
+<div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac017e05107d0362d3d03a14eaadf0657"> 134</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ac017e05107d0362d3d03a14eaadf0657">smoothing</a>; </div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3f93fba688338576ff3258b034525dc5"> 135</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a3f93fba688338576ff3258b034525dc5">solidPressure</a>; </div>
+<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a05f92015449662f5a2f5d5e9ecdc2c6e"> 136</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a05f92015449662f5a2f5d5e9ecdc2c6e">freeSurfaceDrag</a>; </div>
+<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae2e480822cc06ec249ee2557f6cc8ee1"> 137</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ae2e480822cc06ec249ee2557f6cc8ee1">buoyancy</a>; </div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="comment">// diffuse params</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#acdde802d58e1558c03e449e04ae33f15"> 140</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#acdde802d58e1558c03e449e04ae33f15">diffuseThreshold</a>; </div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5be673031b100c3861fd9eb824fcf00f"> 141</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a5be673031b100c3861fd9eb824fcf00f">diffuseBuoyancy</a>; </div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4bf0ccff128c165560dba52afb748d7e"> 142</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a4bf0ccff128c165560dba52afb748d7e">diffuseDrag</a>; </div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7ade7491cd0693a6d7c5e88a99298378"> 143</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a7ade7491cd0693a6d7c5e88a99298378">diffuseBallistic</a>; </div>
+<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7bed2ff24c30c76aed0923809fc16d8c"> 144</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a7bed2ff24c30c76aed0923809fc16d8c">diffuseSortAxis</a>[3]; </div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a469950744e0b7222969762a89b992255"> 145</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a469950744e0b7222969762a89b992255">diffuseLifetime</a>; </div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// rigid params</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3a1f5e2ba6c8cad0bc3f3eebd27415f0"> 148</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a3a1f5e2ba6c8cad0bc3f3eebd27415f0">plasticThreshold</a>; </div>
+<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a42346069505d3bba70bcdf0a94f0615c"> 149</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a42346069505d3bba70bcdf0a94f0615c">plasticCreep</a>; </div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// collision params</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a55bf1f547086b8e469f2c3b20c9ae39d"> 152</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a55bf1f547086b8e469f2c3b20c9ae39d">collisionDistance</a>; </div>
+<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aeecd11525503649b579ae262b671fbc8"> 153</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aeecd11525503649b579ae262b671fbc8">particleCollisionMargin</a>; </div>
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0e4cb2f91d3b7d122000d36a7d67ab81"> 154</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a0e4cb2f91d3b7d122000d36a7d67ab81">shapeCollisionMargin</a>; </div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div>
+<div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae54ff0cacfedd4333aa1a1f9b9291906"> 156</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ae54ff0cacfedd4333aa1a1f9b9291906">planes</a>[8][4]; </div>
+<div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4f2eb16c8aba6371fbae51a991eaaa5"> 157</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#ab4f2eb16c8aba6371fbae51a991eaaa5">numPlanes</a>; </div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac2f8dff9857a86683aa6e55c058888d7"> 159</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a> <a class="code" href="_nv_flex_8h.html#ac2f8dff9857a86683aa6e55c058888d7">relaxationMode</a>;</div>
+<div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8a1b3c24aa73606bcd47a72473db9629"> 160</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a8a1b3c24aa73606bcd47a72473db9629">relaxationFactor</a>; </div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;};</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
+<div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644"> 166</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlexPhase</a></div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;{</div>
+<div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32"> 168</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">eNvFlexPhaseGroupMask</a> = 0x00ffffff, </div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977"> 170</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977">eNvFlexPhaseSelfCollide</a> = 1 &lt;&lt; 24, </div>
+<div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1"> 171</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1">eNvFlexPhaseSelfCollideFilter</a> = 1 &lt;&lt; 25, </div>
+<div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74"> 172</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74">eNvFlexPhaseFluid</a> = 1 &lt;&lt; 26, </div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;};</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div>
+<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d"> 178</a></span>&#160;NV_FLEX_API <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlexMakePhase</a>(<span class="keywordtype">int</span> group, <span class="keywordtype">int</span> flags) { <span class="keywordflow">return</span> (group &amp; <a class="code" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">eNvFlexPhaseGroupMask</a>) | flags; }</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
+<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 184</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a></div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;{</div>
+<div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aaf8baa00e709ff8fd40d114f00bee0b6"> 186</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aaf8baa00e709ff8fd40d114f00bee0b6">predict</a>; </div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aba34bc2bc8736e3a0cf18a7a6b56ff68"> 187</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aba34bc2bc8736e3a0cf18a7a6b56ff68">createCellIndices</a>; </div>
+<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae45cb18deec2db8ff44d181e80f24695"> 188</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ae45cb18deec2db8ff44d181e80f24695">sortCellIndices</a>; </div>
+<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a98b4df3721709c862ef5d09edcc6d4c3"> 189</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a98b4df3721709c862ef5d09edcc6d4c3">createGrid</a>; </div>
+<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a6071050991cf71a8d9ff28ea968479af"> 190</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a6071050991cf71a8d9ff28ea968479af">reorder</a>; </div>
+<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac1f3c3a1eeeb57cf5b20d030a788e25c"> 191</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ac1f3c3a1eeeb57cf5b20d030a788e25c">collideParticles</a>; </div>
+<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae4203fb9cf4772c3186f96cc2d9f6ea8"> 192</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ae4203fb9cf4772c3186f96cc2d9f6ea8">collideShapes</a>; </div>
+<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#afc20d27121f49b61be9cc6bd4c25f547"> 193</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#afc20d27121f49b61be9cc6bd4c25f547">collideTriangles</a>; </div>
+<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aaa36ba5ee44e34e762167fb0b8b3292e"> 194</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aaa36ba5ee44e34e762167fb0b8b3292e">collideFields</a>; </div>
+<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a49f7117a457a716e7790904209f68707"> 195</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a49f7117a457a716e7790904209f68707">calculateDensity</a>; </div>
+<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abe52b62e7af361f387d67414b9e2cf9b"> 196</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#abe52b62e7af361f387d67414b9e2cf9b">solveDensities</a>; </div>
+<div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4d10188e917ae045e0e903f3db1c638d"> 197</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a4d10188e917ae045e0e903f3db1c638d">solveVelocities</a>; </div>
+<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abdd60b0a83674283d09b4897fdd637a2"> 198</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#abdd60b0a83674283d09b4897fdd637a2">solveShapes</a>; </div>
+<div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a57e4d27b0aa8774e479fa66d65079f78"> 199</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a57e4d27b0aa8774e479fa66d65079f78">solveSprings</a>; </div>
+<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a215e06106ec0cdbbcd405055a4535d1d"> 200</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a215e06106ec0cdbbcd405055a4535d1d">solveContacts</a>; </div>
+<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a75eade1512d023cb19da5b7ebbad10f3"> 201</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a75eade1512d023cb19da5b7ebbad10f3">solveInflatables</a>; </div>
+<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#afc5d58e7f591213c3fe1c31b4d440eb6"> 202</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#afc5d58e7f591213c3fe1c31b4d440eb6">applyDeltas</a>; </div>
+<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af9b72d2909ef335b12a46cdbd4b71f57"> 203</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#af9b72d2909ef335b12a46cdbd4b71f57">calculateAnisotropy</a>; </div>
+<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a2ff723870a6eba26d9f3bb7e5250b27f"> 204</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a2ff723870a6eba26d9f3bb7e5250b27f">updateDiffuse</a>; </div>
+<div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8cb34cbcf9def6817d6d5d3c07177052"> 205</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a8cb34cbcf9def6817d6d5d3c07177052">updateTriangles</a>; </div>
+<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a1a1e69f26e02e8b3fca1d3636a7f3f13"> 206</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a1a1e69f26e02e8b3fca1d3636a7f3f13">updateNormals</a>; </div>
+<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9d825db54bc9a0bca998b3654db3b20e"> 207</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a9d825db54bc9a0bca998b3654db3b20e">finalize</a>; </div>
+<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a2f85189cbc3014b73164cf8c4eb87e0a"> 208</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a2f85189cbc3014b73164cf8c4eb87e0a">updateBounds</a>; </div>
+<div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3c4d2aa395ff8d0f70a6380448943be2"> 209</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a3c4d2aa395ff8d0f70a6380448943be2">total</a>; </div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;};</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div>
+<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca"> 215</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a></div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;{</div>
+<div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd"> 217</a></span>&#160; <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd">eNvFlexLogError</a> = 0, </div>
+<div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f"> 218</a></span>&#160; <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f">eNvFlexLogInfo</a> = 1, </div>
+<div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61"> 219</a></span>&#160; <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61">eNvFlexLogWarning</a> = 2, </div>
+<div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e"> 220</a></span>&#160; <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e">eNvFlexLogDebug</a> = 4, </div>
+<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e"> 221</a></span>&#160; <a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e">eNvFlexLogAll</a> = -1, </div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;};</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; </div>
+<div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9"> 227</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a></div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;{</div>
+<div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff"> 229</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff">eNvFlexStageIterationStart</a>, </div>
+<div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69"> 230</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69">eNvFlexStageIterationEnd</a>, </div>
+<div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44"> 231</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44">eNvFlexStageSubstepBegin</a>, </div>
+<div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586"> 232</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586">eNvFlexStageSubstepEnd</a>, </div>
+<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806"> 233</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806">eNvFlexStageUpdateEnd</a>, </div>
+<div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3"> 234</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3">eNvFlexStageCount</a>, </div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;};</div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div>
+<div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252"> 239</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a></div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;{</div>
+<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178"> 241</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178">eNvFlexCUDA</a>, </div>
+<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df"> 242</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df">eNvFlexD3D11</a>, </div>
+<div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943"> 243</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943">eNvFlexD3D12</a>, </div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;};</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;</div>
+<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 258</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a></div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;{</div>
+<div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3974e1e608d9f532d5520dc158b47903"> 260</a></span>&#160; <a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* <a class="code" href="_nv_flex_8h.html#a3974e1e608d9f532d5520dc158b47903">solver</a>; </div>
+<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5b9af9cf4d889b4772cb61cefda92a87"> 261</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="_nv_flex_8h.html#a5b9af9cf4d889b4772cb61cefda92a87">userData</a>; </div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div>
+<div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8ed42f9bd016cbcef45c96b5b32ca609"> 263</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_8h.html#a8ed42f9bd016cbcef45c96b5b32ca609">particles</a>; </div>
+<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac48a490fa3d62cc678c309dd4b8cbf18"> 264</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_8h.html#ac48a490fa3d62cc678c309dd4b8cbf18">velocities</a>; </div>
+<div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9e5f943053d43d7e1a6b149babe4fe44"> 265</a></span>&#160; <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_8h.html#a9e5f943053d43d7e1a6b149babe4fe44">phases</a>; </div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div>
+<div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac32019f7dd1f30ab8a7391a417ed02c9"> 267</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#ac32019f7dd1f30ab8a7391a417ed02c9">numActive</a>; </div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; </div>
+<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a843360ebf23cd00e5eff72d19e796dd9"> 269</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a843360ebf23cd00e5eff72d19e796dd9">dt</a>; </div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div>
+<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abe564dbbbd4957542322b60d77a70e29"> 271</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_8h.html#abe564dbbbd4957542322b60d77a70e29">originalToSortedMap</a>; </div>
+<div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a9b65813d2a2d3f99db162d39a62481f8"> 272</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_8h.html#a9b65813d2a2d3f99db162d39a62481f8">sortedToOriginalMap</a>; </div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;};</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div>
+<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 277</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a></div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div>
+<div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a5890b9e46d626cfa19994976ea53c52e"> 279</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a5890b9e46d626cfa19994976ea53c52e">deviceIndex</a>; </div>
+<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a23b8779c1516647ef5ed7f8010d619ff"> 280</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="_nv_flex_8h.html#a23b8779c1516647ef5ed7f8010d619ff">enableExtensions</a>; </div>
+<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7e760844341b78a547ca4e29abf48806"> 281</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="_nv_flex_8h.html#a7e760844341b78a547ca4e29abf48806">renderDevice</a>; </div>
+<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abf304d5c1f8f041fa46a2bfb0bdf56fe"> 282</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="_nv_flex_8h.html#abf304d5c1f8f041fa46a2bfb0bdf56fe">renderContext</a>; </div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; </div>
+<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aeeeaf91dad0804d1dd3125e592a3260b"> 284</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a> <a class="code" href="_nv_flex_8h.html#aeeeaf91dad0804d1dd3125e592a3260b">computeType</a>; </div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;};</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
+<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="struct_nv_flex_solver_callback.html"> 289</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a></div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;{</div>
+<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="struct_nv_flex_solver_callback.html#a2878301f697313b3ef3ad1bc2410c915"> 292</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="struct_nv_flex_solver_callback.html#a2878301f697313b3ef3ad1bc2410c915">userData</a>;</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; </div>
+<div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="struct_nv_flex_solver_callback.html#a728134bf4d667b207539d7318e42e92a"> 295</a></span>&#160; void (*<span class="keyword">function</span>)(<a class="code" href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a> params);</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;};</div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div>
+<div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5"> 301</a></span>&#160;<span class="keyword">typedef</span> void (*<a class="code" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a>)(<a class="code" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a> type, <span class="keyword">const</span> <span class="keywordtype">char</span>* msg, <span class="keyword">const</span> <span class="keywordtype">char</span>* file, <span class="keywordtype">int</span> line);</div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* <a class="code" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit</a>(<span class="keywordtype">int</span> version = NV_FLEX_VERSION, <a class="code" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a> errorFunc = 0, <a class="code" href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a> * desc = 0);</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlexShutdown</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#ac25ec5de38c177db51198bb620644d36">NvFlexGetVersion</a>();</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* <a class="code" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keywordtype">int</span> maxParticles, <span class="keywordtype">int</span> maxDiffuseParticles, <span class="keywordtype">int</span> maxNeighborsPerParticle = 96);</div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlexDestroySolver</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver);</div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* <a class="code" href="_nv_flex_8h.html#ae0d57e4fc2b3b51ec08f7da0a28ff343">NvFlexGetSolverLibrary</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver);</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;NV_FLEX_API <a class="code" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a> <a class="code" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlexRegisterSolverCallback</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a> <span class="keyword">function</span>, <a class="code" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a> stage);</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <span class="keywordtype">float</span> dt, <span class="keywordtype">int</span> substeps, <span class="keywordtype">bool</span> enableTimers);</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ae2db6ad8006027c1acf2315a0d15fe71">NvFlexSetParams</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <span class="keyword">const</span> <a class="code" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a>* params);</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a581b458848039220203547af53de128f">NvFlexGetParams</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a>* params);</div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aea2af336bdd96d7168c3acdce6d1875d">NvFlexSetActive</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;</div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aeed8fe87fa073067af1a45560cc54a79">NvFlexGetActive</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices);</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlexGetActiveCount</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver);</div>
+<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlexSetParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;</div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlexGetParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlexSetRestParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#affb884bcf3e7e389812d0b52b0fc0490">NvFlexGetRestParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlexGetSmoothParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlexSetVelocities</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* v, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlexGetVelocities</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* v, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlexSetPhases</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* phases, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlexGetPhases</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* phases, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#add03fd357383845f07e0596290faf316">NvFlexSetNormals</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* normals, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aadb2a0cf125e4a6b2f3443ab7dcbd3d4">NvFlexGetNormals</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* normals, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;</div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ae67c0cab2ecee8eb9485a26ef0fad6a9">NvFlexSetSprings</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* restLengths, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* stiffness, <span class="keywordtype">int</span> numSprings);</div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aab5f90f4024d71d08c3f9327c6d8c184">NvFlexGetSprings</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* restLengths, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* stiffness, <span class="keywordtype">int</span> numSprings);</div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div>
+<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a89c872e761a53c87375f536a0ef597d8">NvFlexSetRigids</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* offsets, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* restPositions, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* restNormals, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* stiffness, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* rotations, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* translations, <span class="keywordtype">int</span> numRigids, <span class="keywordtype">int</span> numIndices);</div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div>
+<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;</div>
+<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a3eafe7fe6b200c757c7402eca7d13f6d">NvFlexGetRigidTransforms</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* rotations, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* translations);</div>
+<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;</div>
+<div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0"> 633</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a>;</div>
+<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;</div>
+<div class="line"><a name="l00638"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade"> 638</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a>;</div>
+<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;</div>
+<div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586"> 645</a></span>&#160;<span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a>;</div>
+<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;</div>
+<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;NV_FLEX_API NvFlexTriangleMeshId <a class="code" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div>
+<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div>
+<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a4cb4462803ebff105d151fd45b4efad6">NvFlexDestroyTriangleMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexTriangleMeshId mesh);</div>
+<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;</div>
+<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlexUpdateTriangleMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexTriangleMeshId mesh, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* vertices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <span class="keywordtype">int</span> numVertices, <span class="keywordtype">int</span> numTriangles, <span class="keyword">const</span> <span class="keywordtype">float</span>* lower, <span class="keyword">const</span> <span class="keywordtype">float</span>* upper);</div>
+<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;</div>
+<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a60794d849b4184335e2a0ddec0a9e6a2">NvFlexGetTriangleMeshBounds</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keyword">const</span> NvFlexTriangleMeshId mesh, <span class="keywordtype">float</span>* lower, <span class="keywordtype">float</span>* upper);</div>
+<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;</div>
+<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;NV_FLEX_API NvFlexDistanceFieldId <a class="code" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div>
+<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;</div>
+<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ab11bdd7f778d17af16cefea33265cb65">NvFlexDestroyDistanceField</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexDistanceFieldId sdf);</div>
+<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div>
+<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a584ffb275b9986fd5444ed1a7ea247d9">NvFlexUpdateDistanceField</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexDistanceFieldId sdf, <span class="keywordtype">int</span> dimx, <span class="keywordtype">int</span> dimy, <span class="keywordtype">int</span> dimz, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* field);</div>
+<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;</div>
+<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;NV_FLEX_API NvFlexConvexMeshId <a class="code" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlexCreateConvexMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div>
+<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;</div>
+<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ac85b6372e5c7bfc508ecb7b8c59c72a0">NvFlexDestroyConvexMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexConvexMeshId convex);</div>
+<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;</div>
+<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlexUpdateConvexMesh</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexConvexMeshId convex, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* planes, <span class="keywordtype">int</span> numPlanes, <span class="keywordtype">float</span>* lower, <span class="keywordtype">float</span>* upper);</div>
+<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;</div>
+<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ad56e661161763579afb375b3841eb5ff">NvFlexGetConvexMeshBounds</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, NvFlexConvexMeshId mesh, <span class="keywordtype">float</span>* lower, <span class="keywordtype">float</span>* upper);</div>
+<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;</div>
+<div class="line"><a name="l00758"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 758</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_sphere_geometry">NvFlexSphereGeometry</a></div>
+<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;{</div>
+<div class="line"><a name="l00760"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a7a6e24c01235abc364ed12570ab15f84"> 760</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a7a6e24c01235abc364ed12570ab15f84">radius</a>;</div>
+<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;};</div>
+<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div>
+<div class="line"><a name="l00766"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 766</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_capsule_geometry">NvFlexCapsuleGeometry</a></div>
+<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;{</div>
+<div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a1241ff3522eafac4b402370a7a6525d8"> 768</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a1241ff3522eafac4b402370a7a6525d8">radius</a>;</div>
+<div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#aef1b5bceccca709ebb782d2ea8a61dc9"> 769</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#aef1b5bceccca709ebb782d2ea8a61dc9">halfHeight</a>;</div>
+<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;};</div>
+<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;</div>
+<div class="line"><a name="l00775"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 775</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_box_geometry">NvFlexBoxGeometry</a></div>
+<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;{</div>
+<div class="line"><a name="l00777"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab669c404607156367b09878870dbe30c"> 777</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab669c404607156367b09878870dbe30c">halfExtents</a>[3];</div>
+<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;};</div>
+<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;</div>
+<div class="line"><a name="l00783"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 783</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_convex_mesh_geometry">NvFlexConvexMeshGeometry</a></div>
+<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;{</div>
+<div class="line"><a name="l00785"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a800620cc4888bbe5696c5f0e19b22bb9"> 785</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a800620cc4888bbe5696c5f0e19b22bb9">scale</a>[3];</div>
+<div class="line"><a name="l00786"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#abdc984644770fec15d7af740c9730186"> 786</a></span>&#160; NvFlexConvexMeshId <a class="code" href="_nv_flex_8h.html#abdc984644770fec15d7af740c9730186">mesh</a>;</div>
+<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;};</div>
+<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;</div>
+<div class="line"><a name="l00792"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 792</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_triangle_mesh_geometry">NvFlexTriangleMeshGeometry</a></div>
+<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;{</div>
+<div class="line"><a name="l00794"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ab6e2aa06b69e92cbd3b2bca19f18e794"> 794</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#ab6e2aa06b69e92cbd3b2bca19f18e794">scale</a>[3]; </div>
+<div class="line"><a name="l00795"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#af6a50e64591866ae2390a57e3342566c"> 795</a></span>&#160; NvFlexTriangleMeshId <a class="code" href="_nv_flex_8h.html#af6a50e64591866ae2390a57e3342566c">mesh</a>; </div>
+<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;};</div>
+<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;</div>
+<div class="line"><a name="l00802"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 802</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_s_d_f_geometry">NvFlexSDFGeometry</a></div>
+<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;{</div>
+<div class="line"><a name="l00804"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0008a52f6ae1e17c436b095549bf1c78"> 804</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a0008a52f6ae1e17c436b095549bf1c78">scale</a>; </div>
+<div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0a6936f3cb0544ad624f1dea6b7eb50c"> 805</a></span>&#160; NvFlexDistanceFieldId <a class="code" href="_nv_flex_8h.html#a0a6936f3cb0544ad624f1dea6b7eb50c">field</a>; </div>
+<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;};</div>
+<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;</div>
+<div class="line"><a name="l00812"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 812</a></span>&#160;<span class="keyword">union </span><a class="code" href="_nv_flex_8h.html#union_nv_flex_collision_geometry">NvFlexCollisionGeometry</a></div>
+<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160;{</div>
+<div class="line"><a name="l00814"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0e3c0e02ec7addd25ebb3355a8865bfb"> 814</a></span>&#160; <a class="code" href="_nv_flex_8h.html#struct_nv_flex_sphere_geometry">NvFlexSphereGeometry</a> <a class="code" href="_nv_flex_8h.html#a0e3c0e02ec7addd25ebb3355a8865bfb">sphere</a>;</div>
+<div class="line"><a name="l00815"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a8ad5aa3c9c9456607de9a2c9f1d0d2c1"> 815</a></span>&#160; <a class="code" href="_nv_flex_8h.html#struct_nv_flex_capsule_geometry">NvFlexCapsuleGeometry</a> <a class="code" href="_nv_flex_8h.html#a8ad5aa3c9c9456607de9a2c9f1d0d2c1">capsule</a>;</div>
+<div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a53e827707abaf2e03b78c3c88469d7bf"> 816</a></span>&#160; <a class="code" href="_nv_flex_8h.html#struct_nv_flex_box_geometry">NvFlexBoxGeometry</a> <a class="code" href="_nv_flex_8h.html#a53e827707abaf2e03b78c3c88469d7bf">box</a>;</div>
+<div class="line"><a name="l00817"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ae701fdcc0e7bf26c1dfc54d400ffb3d2"> 817</a></span>&#160; <a class="code" href="_nv_flex_8h.html#struct_nv_flex_convex_mesh_geometry">NvFlexConvexMeshGeometry</a> <a class="code" href="_nv_flex_8h.html#ae701fdcc0e7bf26c1dfc54d400ffb3d2">convexMesh</a>;</div>
+<div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a064e3ce30320610d495ba3faa72dc8d6"> 818</a></span>&#160; <a class="code" href="_nv_flex_8h.html#struct_nv_flex_triangle_mesh_geometry">NvFlexTriangleMeshGeometry</a> <a class="code" href="_nv_flex_8h.html#a064e3ce30320610d495ba3faa72dc8d6">triMesh</a>;</div>
+<div class="line"><a name="l00819"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ac0049037dcff7a769030acd567eac6cd"> 819</a></span>&#160; <a class="code" href="_nv_flex_8h.html#struct_nv_flex_s_d_f_geometry">NvFlexSDFGeometry</a> <a class="code" href="_nv_flex_8h.html#ac0049037dcff7a769030acd567eac6cd">sdf</a>;</div>
+<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160;};</div>
+<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;</div>
+<div class="line"><a name="l00822"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba"> 822</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a></div>
+<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160;{</div>
+<div class="line"><a name="l00824"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3"> 824</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3">eNvFlexShapeSphere</a> = 0, </div>
+<div class="line"><a name="l00825"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a"> 825</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a">eNvFlexShapeCapsule</a> = 1, </div>
+<div class="line"><a name="l00826"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7"> 826</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7">eNvFlexShapeBox</a> = 2, </div>
+<div class="line"><a name="l00827"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce"> 827</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce">eNvFlexShapeConvexMesh</a> = 3, </div>
+<div class="line"><a name="l00828"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1"> 828</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1">eNvFlexShapeTriangleMesh</a> = 4, </div>
+<div class="line"><a name="l00829"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180"> 829</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180">eNvFlexShapeSDF</a> = 5, </div>
+<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160;};</div>
+<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;</div>
+<div class="line"><a name="l00832"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c"> 832</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlexCollisionShapeFlags</a></div>
+<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;{</div>
+<div class="line"><a name="l00834"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8"> 834</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8">eNvFlexShapeFlagTypeMask</a> = 0x7, </div>
+<div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992"> 835</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">eNvFlexShapeFlagDynamic</a> = 8, </div>
+<div class="line"><a name="l00836"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8"> 836</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8">eNvFlexShapeFlagTrigger</a> = 16, </div>
+<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;</div>
+<div class="line"><a name="l00838"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9"> 838</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9">eNvFlexShapeFlagReserved</a> = 0xffffff00</div>
+<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;};</div>
+<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160;</div>
+<div class="line"><a name="l00844"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a"> 844</a></span>&#160;NV_FLEX_API <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a">NvFlexMakeShapeFlags</a>(<a class="code" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a> type, <span class="keywordtype">bool</span> dynamic) { <span class="keywordflow">return</span> type | (dynamic?<a class="code" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">eNvFlexShapeFlagDynamic</a>:0); }</div>
+<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;</div>
+<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlexSetShapes</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* geometry, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* shapePositions, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* shapeRotations, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* shapePrevPositions, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* shapePrevRotations, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* shapeFlags, <span class="keywordtype">int</span> numShapes);</div>
+<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;</div>
+<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#aa03d94be697cdc3aaa56e469d87255a4">NvFlexSetDynamicTriangles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* normals, <span class="keywordtype">int</span> numTris);</div>
+<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#abdfd0834422dd99154a27962614525e5">NvFlexGetDynamicTriangles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* normals, <span class="keywordtype">int</span> numTris);</div>
+<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;</div>
+<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a7f2b59fba77c60ce116e1eac57d63e50">NvFlexSetInflatables</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* startTris, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* numTris, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* restVolumes, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* overPressures, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* constraintScales, <span class="keywordtype">int</span> numInflatables);</div>
+<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;</div>
+<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a6f6f14e625dc744a127be81e6dc4cb74">NvFlexGetDensities</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* densities, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;</div>
+<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlexGetAnisotropy</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* q1, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* q2, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* q3);</div>
+<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#a37ada4b95999cc253dfb049b99030d50">NvFlexGetDiffuseParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* v, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices);</div>
+<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;</div>
+<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a5a7213593dd9a23d9d67f8517d1da9de">NvFlexSetDiffuseParticles</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* p, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* v, <span class="keywordtype">int</span> n);</div>
+<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;</div>
+<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlexGetContacts</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* planes, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* velocities, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* indices, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* counts);</div>
+<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;</div>
+<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ab1eec84a21b1872fba11c9b4cc1d1629">NvFlexGetBounds</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* lower, <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* upper);</div>
+<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160;</div>
+<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;NV_FLEX_API <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a221a4621ab98eca6ecd3368d288154a4">NvFlexGetDeviceLatency</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver);</div>
+<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;</div>
+<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ab16b6d2e11e0ab417ee6c4cf16f0a27d">NvFlexGetTimers</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a>* timers);</div>
+<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160;</div>
+<div class="line"><a name="l00990"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html"> 990</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a></div>
+<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;{ </div>
+<div class="line"><a name="l00992"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a3ddbb30a2fde4a2e9ccec7854300b1d4"> 992</a></span>&#160; <span class="keywordtype">char</span>* <a class="code" href="_nv_flex_8h.html#a3ddbb30a2fde4a2e9ccec7854300b1d4">name</a>; </div>
+<div class="line"><a name="l00993"></a><span class="lineno"><a class="line" href="_nv_flex_8h.html#a83f6117fe98bc6426027a9b784fd737c"> 993</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_8h.html#a83f6117fe98bc6426027a9b784fd737c">time</a>;</div>
+<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160;};</div>
+<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_8h.html#ab1efb6764f65900cb09f0188ad6da08a">NvFlexGetDetailTimers</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <a class="code" href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a>** timers);</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* <a class="code" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keywordtype">int</span> elementCount, <span class="keywordtype">int</span> elementByteStride, <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a> type);</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160;</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(<a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* buf);</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160;</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;NV_FLEX_API <span class="keywordtype">void</span>* <a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(<a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* buffer, <span class="keywordtype">int</span> flags);</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160;</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(<a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* buffer);</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* <a class="code" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlexRegisterOGLBuffer</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keywordtype">int</span> buf, <span class="keywordtype">int</span> elementCount, <span class="keywordtype">int</span> elementByteStride);</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a78045a8d4e856372df108dc616a94cd8">NvFlexUnregisterOGLBuffer</a>(<a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* buf);</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160;</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* <a class="code" href="_nv_flex_8h.html#ab487e68ce1c84ce1eec0c85b7daf5aa0">NvFlexRegisterD3DBuffer</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keywordtype">void</span>* buffer, <span class="keywordtype">int</span> elementCount, <span class="keywordtype">int</span> elementByteStride);</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ad607e7916e5d76b384a61f1c1f94ab32">NvFlexUnregisterD3DBuffer</a>(<a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* buf);</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160;</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlexAcquireContext</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160;</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#ae6671f352bd77e296609d0bc2a57fd11">NvFlexRestoreContext</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160;</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;NV_FLEX_API <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="_nv_flex_8h.html#a4c451971259524c6878b6b1ed4023ada">NvFlexGetDeviceName</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a2ac0a898a565a2cdf13b80acd4a3555c">NvFlexGetDeviceAndContext</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <span class="keywordtype">void</span>** device, <span class="keywordtype">void</span>** context);</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; </div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160;</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_8h.html#a898eb8e66a456dd2266c694f29cab600">NvFlexFlush</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib);</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> NvFlexSetDebug(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <span class="keywordtype">bool</span> enable);</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> NvFlexGetShapeBVH(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <span class="keywordtype">void</span>* bvh);</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> NvFlexCopySolver(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* dst, <a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* src);</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160;} <span class="comment">// extern &quot;C&quot;</span></div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160;</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160;<span class="preprocessor">#endif // NV_FLEX_H</span></div>
+<div class="ttc" id="_nv_flex_8h_html_a2345372dea2ad4f043153a84e7a2c407"><div class="ttname"><a href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlexGetActiveCount</a></div><div class="ttdeci">NV_FLEX_API int NvFlexGetActiveCount(NvFlexSolver *solver)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_abdd60b0a83674283d09b4897fdd637a2"><div class="ttname"><a href="_nv_flex_8h.html#abdd60b0a83674283d09b4897fdd637a2">NvFlexTimers::solveShapes</a></div><div class="ttdeci">float solveShapes</div><div class="ttdoc">Time spent solving rigid body constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:198</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ac5427457488ab3f2de91cf65335dda08"><div class="ttname"><a href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlexRegisterSolverCallback</a></div><div class="ttdeci">NV_FLEX_API NvFlexSolverCallback NvFlexRegisterSolverCallback(NvFlexSolver *solver, NvFlexSolverCallback function, NvFlexSolverCallbackStage stage)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a7a6e24c01235abc364ed12570ab15f84"><div class="ttname"><a href="_nv_flex_8h.html#a7a6e24c01235abc364ed12570ab15f84">NvFlexSphereGeometry::radius</a></div><div class="ttdeci">float radius</div><div class="ttdef"><b>Definition:</b> NvFlex.h:760</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61">eNvFlexLogWarning</a></div><div class="ttdoc">Warning messages. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:219</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a57e4d27b0aa8774e479fa66d65079f78"><div class="ttname"><a href="_nv_flex_8h.html#a57e4d27b0aa8774e479fa66d65079f78">NvFlexTimers::solveSprings</a></div><div class="ttdeci">float solveSprings</div><div class="ttdoc">Time spent solving distance constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:199</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a6541b33eaca7b2323e73b30cea34d16c"><div class="ttname"><a href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlexMapFlags</a></div><div class="ttdeci">NvFlexMapFlags</div><div class="ttdef"><b>Definition:</b> NvFlex.h:67</div></div>
+<div class="ttc" id="_nv_flex_8h_html_affb884bcf3e7e389812d0b52b0fc0490"><div class="ttname"><a href="_nv_flex_8h.html#affb884bcf3e7e389812d0b52b0fc0490">NvFlexGetRestParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetRestParticles(NvFlexSolver *solver, NvFlexBuffer *p, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_abe6f00c9b94debbf7c181082a14076d5"><div class="ttname"><a href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlexErrorCallback</a></div><div class="ttdeci">void(* NvFlexErrorCallback)(NvFlexErrorSeverity type, const char *msg, const char *file, int line)</div><div class="ttdef"><b>Definition:</b> NvFlex.h:301</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f">eNvFlexLogInfo</a></div><div class="ttdoc">Information messages. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:218</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ac017e05107d0362d3d03a14eaadf0657"><div class="ttname"><a href="_nv_flex_8h.html#ac017e05107d0362d3d03a14eaadf0657">NvFlexParams::smoothing</a></div><div class="ttdeci">float smoothing</div><div class="ttdoc">Control the strength of Laplacian smoothing in particles for rendering, if zero then smoothed positio...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:134</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ae2db6ad8006027c1acf2315a0d15fe71"><div class="ttname"><a href="_nv_flex_8h.html#ae2db6ad8006027c1acf2315a0d15fe71">NvFlexSetParams</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetParams(NvFlexSolver *solver, const NvFlexParams *params)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806">eNvFlexStageUpdateEnd</a></div><div class="ttdoc">Called at the end of solver update after the final substep has completed. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:233</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a89c872e761a53c87375f536a0ef597d8"><div class="ttname"><a href="_nv_flex_8h.html#a89c872e761a53c87375f536a0ef597d8">NvFlexSetRigids</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetRigids(NvFlexSolver *solver, NvFlexBuffer *offsets, NvFlexBuffer *indices, NvFlexBuffer *restPositions, NvFlexBuffer *restNormals, NvFlexBuffer *stiffness, NvFlexBuffer *rotations, NvFlexBuffer *translations, int numRigids, int numIndices)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_abfa62e01c4f4511d3f6a00ab6a0f257a"><div class="ttname"><a href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlexGetSmoothParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetSmoothParticles(NvFlexSolver *solver, NvFlexBuffer *p, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4958c555f0ed65dee54c37af32529356"><div class="ttname"><a href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlexUpdateTriangleMesh</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUpdateTriangleMesh(NvFlexLibrary *lib, NvFlexTriangleMeshId mesh, NvFlexBuffer *vertices, NvFlexBuffer *indices, int numVertices, int numTriangles, const float *lower, const float *upper)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a054cb27646a389ea257d1bbde46a6e97"><div class="ttname"><a href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUnmap(NvFlexBuffer *buffer)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977"><div class="ttname"><a href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977">eNvFlexPhaseSelfCollide</a></div><div class="ttdoc">If set this particle will interact with particles of the same group. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:170</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aba34bc2bc8736e3a0cf18a7a6b56ff68"><div class="ttname"><a href="_nv_flex_8h.html#aba34bc2bc8736e3a0cf18a7a6b56ff68">NvFlexTimers::createCellIndices</a></div><div class="ttdeci">float createCellIndices</div><div class="ttdoc">Time spent creating grid indices. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:187</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0e4cb2f91d3b7d122000d36a7d67ab81"><div class="ttname"><a href="_nv_flex_8h.html#a0e4cb2f91d3b7d122000d36a7d67ab81">NvFlexParams::shapeCollisionMargin</a></div><div class="ttdeci">float shapeCollisionMargin</div><div class="ttdoc">Increases the radius used during contact finding against kinematic shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:154</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0008a52f6ae1e17c436b095549bf1c78"><div class="ttname"><a href="_nv_flex_8h.html#a0008a52f6ae1e17c436b095549bf1c78">NvFlexSDFGeometry::scale</a></div><div class="ttdeci">float scale</div><div class="ttdoc">Uniform scale of SDF, this corresponds to the world space width of the shape. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:804</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aeed8fe87fa073067af1a45560cc54a79"><div class="ttname"><a href="_nv_flex_8h.html#aeed8fe87fa073067af1a45560cc54a79">NvFlexGetActive</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetActive(NvFlexSolver *solver, NvFlexBuffer *indices)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a7ade7491cd0693a6d7c5e88a99298378"><div class="ttname"><a href="_nv_flex_8h.html#a7ade7491cd0693a6d7c5e88a99298378">NvFlexParams::diffuseBallistic</a></div><div class="ttdeci">int diffuseBallistic</div><div class="ttdoc">The number of neighbors below which a diffuse particle is considered ballistic. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:143</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a46f5d35902f7da40628247175a174f3b"><div class="ttname"><a href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlexRelaxationMode</a></div><div class="ttdeci">NvFlexRelaxationMode</div><div class="ttdef"><b>Definition:</b> NvFlex.h:86</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a7043181449aebf540351d1d2f785cf4a"><div class="ttname"><a href="_nv_flex_8h.html#a7043181449aebf540351d1d2f785cf4a">NvFlexParams::drag</a></div><div class="ttdeci">float drag</div><div class="ttdoc">Drag force applied to particles belonging to dynamic triangles, proportional to velocity^2*area in th...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:122</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfca"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlexErrorSeverity</a></div><div class="ttdeci">NvFlexErrorSeverity</div><div class="ttdef"><b>Definition:</b> NvFlex.h:215</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab003c023dde289dee075c49db022ccaf"><div class="ttname"><a href="_nv_flex_8h.html#ab003c023dde289dee075c49db022ccaf">NvFlexParams::maxSpeed</a></div><div class="ttdeci">float maxSpeed</div><div class="ttdoc">The magnitude of particle velocity will be clamped to this value at the end of each step...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:113</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ae54ff0cacfedd4333aa1a1f9b9291906"><div class="ttname"><a href="_nv_flex_8h.html#ae54ff0cacfedd4333aa1a1f9b9291906">NvFlexParams::planes</a></div><div class="ttdeci">float planes[8][4]</div><div class="ttdoc">Collision planes in the form ax + by + cz + d = 0. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:156</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a3ef4d1035530c3583bdf983c7e62b472"><div class="ttname"><a href="_nv_flex_8h.html#a3ef4d1035530c3583bdf983c7e62b472">NvFlexParams::cohesion</a></div><div class="ttdeci">float cohesion</div><div class="ttdoc">Control how strongly particles hold each other together, default: 0.025, range [0.0, +inf]. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:127</div></div>
+<div class="ttc" id="_nv_flex_8h_html_af0a34fd0cdf686022650be9f895cbf2f"><div class="ttname"><a href="_nv_flex_8h.html#af0a34fd0cdf686022650be9f895cbf2f">NvFlexParams::staticFriction</a></div><div class="ttdeci">float staticFriction</div><div class="ttdoc">Coefficient of static friction used when colliding against shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:107</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ac1f3c3a1eeeb57cf5b20d030a788e25c"><div class="ttname"><a href="_nv_flex_8h.html#ac1f3c3a1eeeb57cf5b20d030a788e25c">NvFlexTimers::collideParticles</a></div><div class="ttdeci">float collideParticles</div><div class="ttdoc">Time spent finding particle neighbors. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:191</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a8ad5aa3c9c9456607de9a2c9f1d0d2c1"><div class="ttname"><a href="_nv_flex_8h.html#a8ad5aa3c9c9456607de9a2c9f1d0d2c1">NvFlexCollisionGeometry::capsule</a></div><div class="ttdeci">NvFlexCapsuleGeometry capsule</div><div class="ttdef"><b>Definition:</b> NvFlex.h:815</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aaf8baa00e709ff8fd40d114f00bee0b6"><div class="ttname"><a href="_nv_flex_8h.html#aaf8baa00e709ff8fd40d114f00bee0b6">NvFlexTimers::predict</a></div><div class="ttdeci">float predict</div><div class="ttdoc">Time spent in prediction. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:186</div></div>
+<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_convex_mesh_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_convex_mesh_geometry">NvFlexConvexMeshGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:783</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a2ff723870a6eba26d9f3bb7e5250b27f"><div class="ttname"><a href="_nv_flex_8h.html#a2ff723870a6eba26d9f3bb7e5250b27f">NvFlexTimers::updateDiffuse</a></div><div class="ttdeci">float updateDiffuse</div><div class="ttdoc">Time spent updating diffuse particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:204</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0e3c0e02ec7addd25ebb3355a8865bfb"><div class="ttname"><a href="_nv_flex_8h.html#a0e3c0e02ec7addd25ebb3355a8865bfb">NvFlexCollisionGeometry::sphere</a></div><div class="ttdeci">NvFlexSphereGeometry sphere</div><div class="ttdef"><b>Definition:</b> NvFlex.h:814</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a55bf1f547086b8e469f2c3b20c9ae39d"><div class="ttname"><a href="_nv_flex_8h.html#a55bf1f547086b8e469f2c3b20c9ae39d">NvFlexParams::collisionDistance</a></div><div class="ttdeci">float collisionDistance</div><div class="ttdoc">Distance particles maintain against shapes, note that for robust collision against triangle meshes th...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:152</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a064e3ce30320610d495ba3faa72dc8d6"><div class="ttname"><a href="_nv_flex_8h.html#a064e3ce30320610d495ba3faa72dc8d6">NvFlexCollisionGeometry::triMesh</a></div><div class="ttdeci">NvFlexTriangleMeshGeometry triMesh</div><div class="ttdef"><b>Definition:</b> NvFlex.h:818</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a215e06106ec0cdbbcd405055a4535d1d"><div class="ttname"><a href="_nv_flex_8h.html#a215e06106ec0cdbbcd405055a4535d1d">NvFlexTimers::solveContacts</a></div><div class="ttdeci">float solveContacts</div><div class="ttdoc">Time spent solving contact constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:200</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9"><div class="ttname"><a href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9">eNvFlexShapeFlagReserved</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:838</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aeeeaf91dad0804d1dd3125e592a3260b"><div class="ttname"><a href="_nv_flex_8h.html#aeeeaf91dad0804d1dd3125e592a3260b">NvFlexInitDesc::computeType</a></div><div class="ttdeci">NvFlexComputeType computeType</div><div class="ttdoc">Set to eNvFlexD3D11 if DirectX 11 should be used, eNvFlexD3D12 for DirectX 12, this must match the li...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:284</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab11bdd7f778d17af16cefea33265cb65"><div class="ttname"><a href="_nv_flex_8h.html#ab11bdd7f778d17af16cefea33265cb65">NvFlexDestroyDistanceField</a></div><div class="ttdeci">NV_FLEX_API void NvFlexDestroyDistanceField(NvFlexLibrary *lib, NvFlexDistanceFieldId sdf)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df"><div class="ttname"><a href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df">eNvFlexD3D11</a></div><div class="ttdoc">Use DirectX 11 compute for Flex, the application must link against the D3D libraries. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:242</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a1d755d7b090f7ed5c4c50d2d3fef1558"><div class="ttname"><a href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlexDestroySolver</a></div><div class="ttdeci">NV_FLEX_API void NvFlexDestroySolver(NvFlexSolver *solver)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8"><div class="ttname"><a href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8">eNvFlexShapeFlagTypeMask</a></div><div class="ttdoc">Lower 3 bits holds the type of the collision shape. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:834</div></div>
+<div class="ttc" id="_nv_flex_8h_html_abe564dbbbd4957542322b60d77a70e29"><div class="ttname"><a href="_nv_flex_8h.html#abe564dbbbd4957542322b60d77a70e29">NvFlexSolverCallbackParams::originalToSortedMap</a></div><div class="ttdeci">const int * originalToSortedMap</div><div class="ttdoc">Device pointer that maps the sorted callback data to the original position given by SetParticles() ...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:271</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aef1b5bceccca709ebb782d2ea8a61dc9"><div class="ttname"><a href="_nv_flex_8h.html#aef1b5bceccca709ebb782d2ea8a61dc9">NvFlexCapsuleGeometry::halfHeight</a></div><div class="ttdeci">float halfHeight</div><div class="ttdef"><b>Definition:</b> NvFlex.h:769</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6"><div class="ttname"><a href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a></div><div class="ttdoc">Calling thread will be blocked until buffer is ready for access, default. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:69</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5a7213593dd9a23d9d67f8517d1da9de"><div class="ttname"><a href="_nv_flex_8h.html#a5a7213593dd9a23d9d67f8517d1da9de">NvFlexSetDiffuseParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetDiffuseParticles(NvFlexSolver *solver, NvFlexBuffer *p, NvFlexBuffer *v, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_afaeb57f4ee7e54b1ae1b912a465ed39e"><div class="ttname"><a href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a></div><div class="ttdeci">struct NvFlexSolver NvFlexSolver</div><div class="ttdef"><b>Definition:</b> NvFlex.h:57</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586">eNvFlexStageSubstepEnd</a></div><div class="ttdoc">Called at the end of each substep after the velocity has been updated by the constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:232</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a8ed42f9bd016cbcef45c96b5b32ca609"><div class="ttname"><a href="_nv_flex_8h.html#a8ed42f9bd016cbcef45c96b5b32ca609">NvFlexSolverCallbackParams::particles</a></div><div class="ttdeci">float * particles</div><div class="ttdoc">Device pointer to the active particle basic data in the form x,y,z,1/m. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:263</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a7f2b59fba77c60ce116e1eac57d63e50"><div class="ttname"><a href="_nv_flex_8h.html#a7f2b59fba77c60ce116e1eac57d63e50">NvFlexSetInflatables</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetInflatables(NvFlexSolver *solver, NvFlexBuffer *startTris, NvFlexBuffer *numTris, NvFlexBuffer *restVolumes, NvFlexBuffer *overPressures, NvFlexBuffer *constraintScales, int numInflatables)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_sphere_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_sphere_geometry">NvFlexSphereGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:758</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff">eNvFlexStageIterationStart</a></div><div class="ttdoc">Called at the beginning of each constraint iteration. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:229</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a60794d849b4184335e2a0ddec0a9e6a2"><div class="ttname"><a href="_nv_flex_8h.html#a60794d849b4184335e2a0ddec0a9e6a2">NvFlexGetTriangleMeshBounds</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetTriangleMeshBounds(NvFlexLibrary *lib, const NvFlexTriangleMeshId mesh, float *lower, float *upper)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_solver_callback_params"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:258</div></div>
+<div class="ttc" id="_nv_flex_8h_html_afbaafe2b1006352002b03aabaca531cc"><div class="ttname"><a href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlexCreateConvexMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexConvexMeshId NvFlexCreateConvexMesh(NvFlexLibrary *lib)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0898bb9210440b159688d4647f6eb083"><div class="ttname"><a href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a></div><div class="ttdeci">NV_FLEX_API void * NvFlexMap(NvFlexBuffer *buffer, int flags)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a83f6117fe98bc6426027a9b784fd737c"><div class="ttname"><a href="_nv_flex_8h.html#a83f6117fe98bc6426027a9b784fd737c">NvFlexDetailTimer::time</a></div><div class="ttdeci">float time</div><div class="ttdef"><b>Definition:</b> NvFlex.h:993</div></div>
+<div class="ttc" id="_nv_flex_8h_html_union_nv_flex_collision_geometry"><div class="ttname"><a href="_nv_flex_8h.html#union_nv_flex_collision_geometry">NvFlexCollisionGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:812</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a1a1e69f26e02e8b3fca1d3636a7f3f13"><div class="ttname"><a href="_nv_flex_8h.html#a1a1e69f26e02e8b3fca1d3636a7f3f13">NvFlexTimers::updateNormals</a></div><div class="ttdeci">float updateNormals</div><div class="ttdoc">Time spent updating vertex normals. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:206</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a2aea4c3d772b4dbccb7dd9ba37c1bdc0"><div class="ttname"><a href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlexTriangleMeshId</a></div><div class="ttdeci">unsigned int NvFlexTriangleMeshId</div><div class="ttdef"><b>Definition:</b> NvFlex.h:633</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c"><div class="ttname"><a href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c">eNvFlexRelaxationLocal</a></div><div class="ttdoc">The relaxation factor is a fixed multiplier on each constraint&#39;s delta divided by the particle&#39;s cons...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:89</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab487e68ce1c84ce1eec0c85b7daf5aa0"><div class="ttname"><a href="_nv_flex_8h.html#ab487e68ce1c84ce1eec0c85b7daf5aa0">NvFlexRegisterD3DBuffer</a></div><div class="ttdeci">NV_FLEX_API NvFlexBuffer * NvFlexRegisterD3DBuffer(NvFlexLibrary *lib, void *buffer, int elementCount, int elementByteStride)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706"><div class="ttname"><a href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706">eNvFlexMapDiscard</a></div><div class="ttdoc">Buffer contents will be discarded, this allows for efficent buffer reuse. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:71</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8"><div class="ttname"><a href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8">eNvFlexShapeFlagTrigger</a></div><div class="ttdoc">Indicates that the shape is a trigger volume, this means it will not perform any collision response...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:836</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3">eNvFlexShapeSphere</a></div><div class="ttdoc">A sphere shape, see FlexSphereGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:824</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180">eNvFlexShapeSDF</a></div><div class="ttdoc">A signed distance field shape, see FlexSDFGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:829</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5890b9e46d626cfa19994976ea53c52e"><div class="ttname"><a href="_nv_flex_8h.html#a5890b9e46d626cfa19994976ea53c52e">NvFlexInitDesc::deviceIndex</a></div><div class="ttdeci">int deviceIndex</div><div class="ttdoc">The GPU device index that should be used, if there is already a CUDA context on the calling thread th...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:279</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a8f0ee62a14387dd5b5a4e8c6bc429140"><div class="ttname"><a href="_nv_flex_8h.html#a8f0ee62a14387dd5b5a4e8c6bc429140">NvFlexParams::fluid</a></div><div class="ttdeci">bool fluid</div><div class="ttdoc">If true then particles with phase 0 are considered fluid particles and interact using the position ba...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:126</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a40f452b4edbf11b793f31286a0ae270e"><div class="ttname"><a href="_nv_flex_8h.html#a40f452b4edbf11b793f31286a0ae270e">NvFlexParams::viscosity</a></div><div class="ttdeci">float viscosity</div><div class="ttdoc">Smoothes particle velocities using XSPH viscosity. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:129</div></div>
+<div class="ttc" id="_nv_flex_8h_html_af6a50e64591866ae2390a57e3342566c"><div class="ttname"><a href="_nv_flex_8h.html#af6a50e64591866ae2390a57e3342566c">NvFlexTriangleMeshGeometry::mesh</a></div><div class="ttdeci">NvFlexTriangleMeshId mesh</div><div class="ttdoc">A triangle mesh pointer created by NvFlexCreateTriangleMesh() </div><div class="ttdef"><b>Definition:</b> NvFlex.h:795</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a67bd9669086e823ebe33d08d14f5b2b9"><div class="ttname"><a href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlexGetVelocities</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetVelocities(NvFlexSolver *solver, NvFlexBuffer *v, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_af53fa9d7caef50db346475065504848d"><div class="ttname"><a href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlexMakePhase</a></div><div class="ttdeci">NV_FLEX_API int NvFlexMakePhase(int group, int flags)</div><div class="ttdef"><b>Definition:</b> NvFlex.h:178</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a8114a049f5e16f7d1b960f3ac4993fdb"><div class="ttname"><a href="_nv_flex_8h.html#a8114a049f5e16f7d1b960f3ac4993fdb">NvFlexParams::adhesion</a></div><div class="ttdeci">float adhesion</div><div class="ttdoc">Controls how strongly particles stick to surfaces they hit, default 0.0, range [0.0, +inf]. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:110</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a78045a8d4e856372df108dc616a94cd8"><div class="ttname"><a href="_nv_flex_8h.html#a78045a8d4e856372df108dc616a94cd8">NvFlexUnregisterOGLBuffer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUnregisterOGLBuffer(NvFlexBuffer *buf)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab669c404607156367b09878870dbe30c"><div class="ttname"><a href="_nv_flex_8h.html#ab669c404607156367b09878870dbe30c">NvFlexBoxGeometry::halfExtents</a></div><div class="ttdeci">float halfExtents[3]</div><div class="ttdef"><b>Definition:</b> NvFlex.h:777</div></div>
+<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_box_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_box_geometry">NvFlexBoxGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:775</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a15b7a5449bee38bbe5dcaf23690f09f5"><div class="ttname"><a href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlexGetPhases</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetPhases(NvFlexSolver *solver, NvFlexBuffer *phases, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5c28caf6d5d513c5adacd4fbc782f308"><div class="ttname"><a href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlexCreateDistanceField</a></div><div class="ttdeci">NV_FLEX_API NvFlexDistanceFieldId NvFlexCreateDistanceField(NvFlexLibrary *lib)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a9e5f943053d43d7e1a6b149babe4fe44"><div class="ttname"><a href="_nv_flex_8h.html#a9e5f943053d43d7e1a6b149babe4fe44">NvFlexSolverCallbackParams::phases</a></div><div class="ttdeci">int * phases</div><div class="ttdoc">Device pointer to the active particle phase data. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:265</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a898eb8e66a456dd2266c694f29cab600"><div class="ttname"><a href="_nv_flex_8h.html#a898eb8e66a456dd2266c694f29cab600">NvFlexFlush</a></div><div class="ttdeci">NV_FLEX_API void NvFlexFlush(NvFlexLibrary *lib)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab1eec84a21b1872fba11c9b4cc1d1629"><div class="ttname"><a href="_nv_flex_8h.html#ab1eec84a21b1872fba11c9b4cc1d1629">NvFlexGetBounds</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetBounds(NvFlexSolver *solver, NvFlexBuffer *lower, NvFlexBuffer *upper)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8"><div class="ttname"><a href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a></div><div class="ttdoc">Host mappable buffer, pinned memory on CUDA, staging buffer on DX. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:79</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ac32019f7dd1f30ab8a7391a417ed02c9"><div class="ttname"><a href="_nv_flex_8h.html#ac32019f7dd1f30ab8a7391a417ed02c9">NvFlexSolverCallbackParams::numActive</a></div><div class="ttdeci">int numActive</div><div class="ttdoc">The number of active particles returned, the callback data only return pointers to active particle da...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:267</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ae0d57e4fc2b3b51ec08f7da0a28ff343"><div class="ttname"><a href="_nv_flex_8h.html#ae0d57e4fc2b3b51ec08f7da0a28ff343">NvFlexGetSolverLibrary</a></div><div class="ttdeci">NV_FLEX_API NvFlexLibrary * NvFlexGetSolverLibrary(NvFlexSolver *solver)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a50a3933d3f7b77d0500c702b1fa9ba9a"><div class="ttname"><a href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a></div><div class="ttdeci">struct NvFlexBuffer NvFlexBuffer</div><div class="ttdef"><b>Definition:</b> NvFlex.h:62</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ae45cb18deec2db8ff44d181e80f24695"><div class="ttname"><a href="_nv_flex_8h.html#ae45cb18deec2db8ff44d181e80f24695">NvFlexTimers::sortCellIndices</a></div><div class="ttdeci">float sortCellIndices</div><div class="ttdoc">Time spent sorting grid indices. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:188</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aa6eddaa3a6eb35917c093dcabf69a200"><div class="ttname"><a href="_nv_flex_8h.html#aa6eddaa3a6eb35917c093dcabf69a200">NvFlexParams::radius</a></div><div class="ttdeci">float radius</div><div class="ttdoc">The maximum interaction radius for particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:101</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a7edac9cf450917147b83e98f5cb09f5d"><div class="ttname"><a href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlexGetContacts</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetContacts(NvFlexSolver *solver, NvFlexBuffer *planes, NvFlexBuffer *velocities, NvFlexBuffer *indices, NvFlexBuffer *counts)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a53e827707abaf2e03b78c3c88469d7bf"><div class="ttname"><a href="_nv_flex_8h.html#a53e827707abaf2e03b78c3c88469d7bf">NvFlexCollisionGeometry::box</a></div><div class="ttdeci">NvFlexBoxGeometry box</div><div class="ttdef"><b>Definition:</b> NvFlex.h:816</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ac48a490fa3d62cc678c309dd4b8cbf18"><div class="ttname"><a href="_nv_flex_8h.html#ac48a490fa3d62cc678c309dd4b8cbf18">NvFlexSolverCallbackParams::velocities</a></div><div class="ttdeci">float * velocities</div><div class="ttdoc">Device pointer to the active particle velocity data in the form x,y,z,w (last component is not used) ...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:264</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab136ae1511a39ef570c010f321eff206"><div class="ttname"><a href="_nv_flex_8h.html#ab136ae1511a39ef570c010f321eff206">NvFlexParams::anisotropyMin</a></div><div class="ttdeci">float anisotropyMin</div><div class="ttdoc">Clamp the anisotropy scale to this fraction of the radius. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:132</div></div>
+<div class="ttc" id="_nv_flex_8h_html_afc5d58e7f591213c3fe1c31b4d440eb6"><div class="ttname"><a href="_nv_flex_8h.html#afc5d58e7f591213c3fe1c31b4d440eb6">NvFlexTimers::applyDeltas</a></div><div class="ttdeci">float applyDeltas</div><div class="ttdoc">Time spent adding position deltas to particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:202</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0a6936f3cb0544ad624f1dea6b7eb50c"><div class="ttname"><a href="_nv_flex_8h.html#a0a6936f3cb0544ad624f1dea6b7eb50c">NvFlexSDFGeometry::field</a></div><div class="ttdeci">NvFlexDistanceFieldId field</div><div class="ttdoc">A signed distance field pointer created by NvFlexCreateDistanceField() </div><div class="ttdef"><b>Definition:</b> NvFlex.h:805</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a49f7117a457a716e7790904209f68707"><div class="ttname"><a href="_nv_flex_8h.html#a49f7117a457a716e7790904209f68707">NvFlexTimers::calculateDensity</a></div><div class="ttdeci">float calculateDensity</div><div class="ttdoc">Time spent calculating fluid density. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:195</div></div>
+<div class="ttc" id="struct_nv_flex_solver_callback_html_a2878301f697313b3ef3ad1bc2410c915"><div class="ttname"><a href="struct_nv_flex_solver_callback.html#a2878301f697313b3ef3ad1bc2410c915">NvFlexSolverCallback::userData</a></div><div class="ttdeci">void * userData</div><div class="ttdef"><b>Definition:</b> NvFlex.h:292</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a">eNvFlexShapeCapsule</a></div><div class="ttdoc">A capsule shape, see FlexCapsuleGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:825</div></div>
+<div class="ttc" id="_nv_flex_8h_html_afdda5a5210938a1e8a7c3a8218ad468e"><div class="ttname"><a href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlexCreateTriangleMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexTriangleMeshId NvFlexCreateTriangleMesh(NvFlexLibrary *lib)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aa457096286567a37d4f1d5f4857d9296"><div class="ttname"><a href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlexSetRestParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetRestParticles(NvFlexSolver *solver, NvFlexBuffer *p, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aaf59e45ada57c7f958a8030099cbe211"><div class="ttname"><a href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlexShutdown</a></div><div class="ttdeci">NV_FLEX_API void NvFlexShutdown(NvFlexLibrary *lib)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a3974e1e608d9f532d5520dc158b47903"><div class="ttname"><a href="_nv_flex_8h.html#a3974e1e608d9f532d5520dc158b47903">NvFlexSolverCallbackParams::solver</a></div><div class="ttdeci">NvFlexSolver * solver</div><div class="ttdoc">Pointer to the solver that the callback is registered to. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:260</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74"><div class="ttname"><a href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74">eNvFlexPhaseFluid</a></div><div class="ttdoc">If set this particle will generate fluid density constraints for its overlapping neighbors. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:172</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5ad2a7745fcb4d4afd5b5f1bda074644"><div class="ttname"><a href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlexPhase</a></div><div class="ttdeci">NvFlexPhase</div><div class="ttdef"><b>Definition:</b> NvFlex.h:166</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ad607e7916e5d76b384a61f1c1f94ab32"><div class="ttname"><a href="_nv_flex_8h.html#ad607e7916e5d76b384a61f1c1f94ab32">NvFlexUnregisterD3DBuffer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUnregisterD3DBuffer(NvFlexBuffer *buf)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a533a78227b462a268c905f9c307c4bd6"><div class="ttname"><a href="_nv_flex_8h.html#a533a78227b462a268c905f9c307c4bd6">NvFlexParams::sleepThreshold</a></div><div class="ttdeci">float sleepThreshold</div><div class="ttdoc">Particles with a velocity magnitude < this threshold will be considered fixed. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:111</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a6f6f14e625dc744a127be81e6dc4cb74"><div class="ttname"><a href="_nv_flex_8h.html#a6f6f14e625dc744a127be81e6dc4cb74">NvFlexGetDensities</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetDensities(NvFlexSolver *solver, NvFlexBuffer *densities, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ac25ec5de38c177db51198bb620644d36"><div class="ttname"><a href="_nv_flex_8h.html#ac25ec5de38c177db51198bb620644d36">NvFlexGetVersion</a></div><div class="ttdeci">NV_FLEX_API int NvFlexGetVersion()</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5e37444b8c96e0880a428d9ea58dbf54"><div class="ttname"><a href="_nv_flex_8h.html#a5e37444b8c96e0880a428d9ea58dbf54">NvFlexParams::anisotropyMax</a></div><div class="ttdeci">float anisotropyMax</div><div class="ttdoc">Clamp the anisotropy scale to this fraction of the radius. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:133</div></div>
+<div class="ttc" id="_nv_flex_8h_html_afc20d27121f49b61be9cc6bd4c25f547"><div class="ttname"><a href="_nv_flex_8h.html#afc20d27121f49b61be9cc6bd4c25f547">NvFlexTimers::collideTriangles</a></div><div class="ttdeci">float collideTriangles</div><div class="ttdoc">Time spent colliding triangle shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:193</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab1efb6764f65900cb09f0188ad6da08a"><div class="ttname"><a href="_nv_flex_8h.html#ab1efb6764f65900cb09f0188ad6da08a">NvFlexGetDetailTimers</a></div><div class="ttdeci">NV_FLEX_API int NvFlexGetDetailTimers(NvFlexSolver *solver, NvFlexDetailTimer **timers)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_afe09e63d22c5156fe24cd2d2bc069c04"><div class="ttname"><a href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlexSetVelocities</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetVelocities(NvFlexSolver *solver, NvFlexBuffer *v, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ad56e661161763579afb375b3841eb5ff"><div class="ttname"><a href="_nv_flex_8h.html#ad56e661161763579afb375b3841eb5ff">NvFlexGetConvexMeshBounds</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetConvexMeshBounds(NvFlexLibrary *lib, NvFlexConvexMeshId mesh, float *lower, float *upper)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992"><div class="ttname"><a href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">eNvFlexShapeFlagDynamic</a></div><div class="ttdoc">Indicates the shape is dynamic and should have lower priority over static collision shapes...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:835</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1"><div class="ttname"><a href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1">eNvFlexMapDoNotWait</a></div><div class="ttdoc">Calling thread will check if buffer is ready for access, if not ready then the method will return NUL...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:70</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aadb2a0cf125e4a6b2f3443ab7dcbd3d4"><div class="ttname"><a href="_nv_flex_8h.html#aadb2a0cf125e4a6b2f3443ab7dcbd3d4">NvFlexGetNormals</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetNormals(NvFlexSolver *solver, NvFlexBuffer *normals, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab98a2aba477ab4d4178bf677852bf544"><div class="ttname"><a href="_nv_flex_8h.html#ab98a2aba477ab4d4178bf677852bf544">NvFlexParams::shockPropagation</a></div><div class="ttdeci">float shockPropagation</div><div class="ttdoc">Artificially decrease the mass of particles based on height from a fixed reference point...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:116</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4c451971259524c6878b6b1ed4023ada"><div class="ttname"><a href="_nv_flex_8h.html#a4c451971259524c6878b6b1ed4023ada">NvFlexGetDeviceName</a></div><div class="ttdeci">NV_FLEX_API const char * NvFlexGetDeviceName(NvFlexLibrary *lib)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ac85b6372e5c7bfc508ecb7b8c59c72a0"><div class="ttname"><a href="_nv_flex_8h.html#ac85b6372e5c7bfc508ecb7b8c59c72a0">NvFlexDestroyConvexMesh</a></div><div class="ttdeci">NV_FLEX_API void NvFlexDestroyConvexMesh(NvFlexLibrary *lib, NvFlexConvexMeshId convex)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aaa36ba5ee44e34e762167fb0b8b3292e"><div class="ttname"><a href="_nv_flex_8h.html#aaa36ba5ee44e34e762167fb0b8b3292e">NvFlexTimers::collideFields</a></div><div class="ttdeci">float collideFields</div><div class="ttdoc">Time spent colliding signed distance field shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:194</div></div>
+<div class="ttc" id="_nv_flex_8h_html_af9b72d2909ef335b12a46cdbd4b71f57"><div class="ttname"><a href="_nv_flex_8h.html#af9b72d2909ef335b12a46cdbd4b71f57">NvFlexTimers::calculateAnisotropy</a></div><div class="ttdeci">float calculateAnisotropy</div><div class="ttdoc">Time spent calculating particle anisotropy for fluid. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:203</div></div>
+<div class="ttc" id="_nv_flex_8h_html_abf304d5c1f8f041fa46a2bfb0bdf56fe"><div class="ttname"><a href="_nv_flex_8h.html#abf304d5c1f8f041fa46a2bfb0bdf56fe">NvFlexInitDesc::renderContext</a></div><div class="ttdeci">void * renderContext</div><div class="ttdoc">Direct3D context to use for simulation, if none is specified a new context will be created...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:282</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a3078976e98f370a9fbdb11db80f1f318"><div class="ttname"><a href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a></div><div class="ttdeci">struct NvFlexLibrary NvFlexLibrary</div><div class="ttdef"><b>Definition:</b> NvFlex.h:52</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a42ec7b30c79d4733e6a756b5d9b15ee6"><div class="ttname"><a href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlexAcquireContext</a></div><div class="ttdeci">NV_FLEX_API void NvFlexAcquireContext(NvFlexLibrary *lib)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a687e5ec141948f779faa9183b68cb743"><div class="ttname"><a href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit</a></div><div class="ttdeci">NV_FLEX_API NvFlexLibrary * NvFlexInit(int version=NV_FLEX_VERSION, NvFlexErrorCallback errorFunc=0, NvFlexInitDesc *desc=0)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a05f92015449662f5a2f5d5e9ecdc2c6e"><div class="ttname"><a href="_nv_flex_8h.html#a05f92015449662f5a2f5d5e9ecdc2c6e">NvFlexParams::freeSurfaceDrag</a></div><div class="ttdeci">float freeSurfaceDrag</div><div class="ttdoc">Drag force applied to boundary fluid particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:136</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a221a4621ab98eca6ecd3368d288154a4"><div class="ttname"><a href="_nv_flex_8h.html#a221a4621ab98eca6ecd3368d288154a4">NvFlexGetDeviceLatency</a></div><div class="ttdeci">NV_FLEX_API float NvFlexGetDeviceLatency(NvFlexSolver *solver)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ac0049037dcff7a769030acd567eac6cd"><div class="ttname"><a href="_nv_flex_8h.html#ac0049037dcff7a769030acd567eac6cd">NvFlexCollisionGeometry::sdf</a></div><div class="ttdeci">NvFlexSDFGeometry sdf</div><div class="ttdef"><b>Definition:</b> NvFlex.h:819</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0def9c3ceff57bbae5bcec15f6d64b36"><div class="ttname"><a href="_nv_flex_8h.html#a0def9c3ceff57bbae5bcec15f6d64b36">NvFlexParams::maxAcceleration</a></div><div class="ttdeci">float maxAcceleration</div><div class="ttdoc">The magnitude of particle acceleration will be clamped to this value at the end of each step (limits ...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:114</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aafb92c4fa45ce9614cdfd349b3722c8a"><div class="ttname"><a href="_nv_flex_8h.html#aafb92c4fa45ce9614cdfd349b3722c8a">NvFlexParams::wind</a></div><div class="ttdeci">float wind[3]</div><div class="ttdoc">Constant acceleration applied to particles that belong to dynamic triangles, drag needs to be > 0 for...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:121</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a584ffb275b9986fd5444ed1a7ea247d9"><div class="ttname"><a href="_nv_flex_8h.html#a584ffb275b9986fd5444ed1a7ea247d9">NvFlexUpdateDistanceField</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUpdateDistanceField(NvFlexLibrary *lib, NvFlexDistanceFieldId sdf, int dimx, int dimy, int dimz, NvFlexBuffer *field)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_timers"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_timers">NvFlexTimers</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:184</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5628f890f4ae070e405feaf1f81a7b85"><div class="ttname"><a href="_nv_flex_8h.html#a5628f890f4ae070e405feaf1f81a7b85">NvFlexParams::surfaceTension</a></div><div class="ttdeci">float surfaceTension</div><div class="ttdoc">Controls how strongly particles attempt to minimize surface area, default: 0.0, range: [0...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:128</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a843360ebf23cd00e5eff72d19e796dd9"><div class="ttname"><a href="_nv_flex_8h.html#a843360ebf23cd00e5eff72d19e796dd9">NvFlexSolverCallbackParams::dt</a></div><div class="ttdeci">float dt</div><div class="ttdoc">The per-update time-step, this is the value passed to NvFlexUpdateSolver() </div><div class="ttdef"><b>Definition:</b> NvFlex.h:269</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a7bed2ff24c30c76aed0923809fc16d8c"><div class="ttname"><a href="_nv_flex_8h.html#a7bed2ff24c30c76aed0923809fc16d8c">NvFlexParams::diffuseSortAxis</a></div><div class="ttdeci">float diffuseSortAxis[3]</div><div class="ttdoc">Diffuse particles will be sorted by depth along this axis if non-zero. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:144</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ad019ad1901bc33d43e3a60df0dfe9b09"><div class="ttname"><a href="_nv_flex_8h.html#ad019ad1901bc33d43e3a60df0dfe9b09">NvFlexParams::fluidRestDistance</a></div><div class="ttdeci">float fluidRestDistance</div><div class="ttdoc">The distance fluid particles are spaced at the rest density, must be in the range (0...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:103</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a6071050991cf71a8d9ff28ea968479af"><div class="ttname"><a href="_nv_flex_8h.html#a6071050991cf71a8d9ff28ea968479af">NvFlexTimers::reorder</a></div><div class="ttdeci">float reorder</div><div class="ttdoc">Time spent reordering particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:190</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a56e990c5bfbc89677988cbf2471c0ade"><div class="ttname"><a href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlexDistanceFieldId</a></div><div class="ttdeci">unsigned int NvFlexDistanceFieldId</div><div class="ttdef"><b>Definition:</b> NvFlex.h:638</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1">eNvFlexShapeTriangleMesh</a></div><div class="ttdoc">A triangle mesh shape, see FlexTriangleMeshGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:828</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1"><div class="ttname"><a href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1">eNvFlexPhaseSelfCollideFilter</a></div><div class="ttdoc">If set this particle will ignore collisions with particles closer than the radius in the rest pose...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:171</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ae28167c680ad56dcff600ce0a223cec5"><div class="ttname"><a href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlexGetAnisotropy</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetAnisotropy(NvFlexSolver *solver, NvFlexBuffer *q1, NvFlexBuffer *q2, NvFlexBuffer *q3)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab16b6d2e11e0ab417ee6c4cf16f0a27d"><div class="ttname"><a href="_nv_flex_8h.html#ab16b6d2e11e0ab417ee6c4cf16f0a27d">NvFlexGetTimers</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetTimers(NvFlexSolver *solver, NvFlexTimers *timers)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_abdc984644770fec15d7af740c9730186"><div class="ttname"><a href="_nv_flex_8h.html#abdc984644770fec15d7af740c9730186">NvFlexConvexMeshGeometry::mesh</a></div><div class="ttdeci">NvFlexConvexMeshId mesh</div><div class="ttdef"><b>Definition:</b> NvFlex.h:786</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ae701fdcc0e7bf26c1dfc54d400ffb3d2"><div class="ttname"><a href="_nv_flex_8h.html#ae701fdcc0e7bf26c1dfc54d400ffb3d2">NvFlexCollisionGeometry::convexMesh</a></div><div class="ttdeci">NvFlexConvexMeshGeometry convexMesh</div><div class="ttdef"><b>Definition:</b> NvFlex.h:817</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlexSolverCallbackStage</a></div><div class="ttdeci">NvFlexSolverCallbackStage</div><div class="ttdef"><b>Definition:</b> NvFlex.h:227</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aeff62427426510eeb1cf5625e14ff585"><div class="ttname"><a href="_nv_flex_8h.html#aeff62427426510eeb1cf5625e14ff585">NvFlexParams::dissipation</a></div><div class="ttdeci">float dissipation</div><div class="ttdoc">Damps particle velocity based on how many particle contacts it has. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:117</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26ba"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlexCollisionShapeType</a></div><div class="ttdeci">NvFlexCollisionShapeType</div><div class="ttdef"><b>Definition:</b> NvFlex.h:822</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e">eNvFlexLogDebug</a></div><div class="ttdoc">Used only in debug version of dll. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:220</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178"><div class="ttname"><a href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178">eNvFlexCUDA</a></div><div class="ttdoc">Use CUDA compute for Flex, the application must link against the CUDA libraries. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:241</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ac2f8dff9857a86683aa6e55c058888d7"><div class="ttname"><a href="_nv_flex_8h.html#ac2f8dff9857a86683aa6e55c058888d7">NvFlexParams::relaxationMode</a></div><div class="ttdeci">NvFlexRelaxationMode relaxationMode</div><div class="ttdoc">How the relaxation is applied inside the solver. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:159</div></div>
+<div class="ttc" id="_nv_flex_8h_html_af9bb710afb22ec5ed50679aef8717777"><div class="ttname"><a href="_nv_flex_8h.html#af9bb710afb22ec5ed50679aef8717777">NvFlexParams::lift</a></div><div class="ttdeci">float lift</div><div class="ttdoc">Lift force applied to particles belonging to dynamic triangles, proportional to velocity^2*area in th...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:123</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a2ac0a898a565a2cdf13b80acd4a3555c"><div class="ttname"><a href="_nv_flex_8h.html#a2ac0a898a565a2cdf13b80acd4a3555c">NvFlexGetDeviceAndContext</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetDeviceAndContext(NvFlexLibrary *lib, void **device, void **context)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a7e760844341b78a547ca4e29abf48806"><div class="ttname"><a href="_nv_flex_8h.html#a7e760844341b78a547ca4e29abf48806">NvFlexInitDesc::renderDevice</a></div><div class="ttdeci">void * renderDevice</div><div class="ttdoc">Direct3D device to use for simulation, if none is specified a new device and context will be created...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:281</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7">eNvFlexShapeBox</a></div><div class="ttdoc">A box shape, see FlexBoxGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:826</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a6198445df7f341ec75f37e1dfb44830c"><div class="ttname"><a href="_nv_flex_8h.html#a6198445df7f341ec75f37e1dfb44830c">NvFlexParams::damping</a></div><div class="ttdeci">float damping</div><div class="ttdoc">Viscous drag force, applies a force proportional, and opposite to the particle velocity. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:118</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aa03d94be697cdc3aaa56e469d87255a4"><div class="ttname"><a href="_nv_flex_8h.html#aa03d94be697cdc3aaa56e469d87255a4">NvFlexSetDynamicTriangles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetDynamicTriangles(NvFlexSolver *solver, NvFlexBuffer *indices, NvFlexBuffer *normals, int numTris)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a31c31ea4f96cd4fdadc6b7317691304c"><div class="ttname"><a href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlexCollisionShapeFlags</a></div><div class="ttdeci">NvFlexCollisionShapeFlags</div><div class="ttdef"><b>Definition:</b> NvFlex.h:832</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab4f2eb16c8aba6371fbae51a991eaaa5"><div class="ttname"><a href="_nv_flex_8h.html#ab4f2eb16c8aba6371fbae51a991eaaa5">NvFlexParams::numPlanes</a></div><div class="ttdeci">int numPlanes</div><div class="ttdoc">Num collision planes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:157</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a69289002a6f8ecd697118f0ec6572f5d"><div class="ttname"><a href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlexUpdateConvexMesh</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUpdateConvexMesh(NvFlexLibrary *lib, NvFlexConvexMeshId convex, NvFlexBuffer *planes, int numPlanes, float *lower, float *upper)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ad48f83b8442323687d2268206e913496"><div class="ttname"><a href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a></div><div class="ttdeci">NV_FLEX_API NvFlexBuffer * NvFlexAllocBuffer(NvFlexLibrary *lib, int elementCount, int elementByteStride, NvFlexBufferType type)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_params"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_params">NvFlexParams</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:96</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ae4203fb9cf4772c3186f96cc2d9f6ea8"><div class="ttname"><a href="_nv_flex_8h.html#ae4203fb9cf4772c3186f96cc2d9f6ea8">NvFlexTimers::collideShapes</a></div><div class="ttdeci">float collideShapes</div><div class="ttdoc">Time spent colliding convex shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:192</div></div>
+<div class="ttc" id="_nv_flex_8h_html_af7a56fc54644e7020e105f2ff41dfb60"><div class="ttname"><a href="_nv_flex_8h.html#af7a56fc54644e7020e105f2ff41dfb60">NvFlexParams::particleFriction</a></div><div class="ttdeci">float particleFriction</div><div class="ttdoc">Coefficient of friction used when colliding particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:108</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ac75370f005fd453fe8a324fe62be1b5c"><div class="ttname"><a href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUpdateSolver(NvFlexSolver *solver, float dt, int substeps, bool enableTimers)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_add03fd357383845f07e0596290faf316"><div class="ttname"><a href="_nv_flex_8h.html#add03fd357383845f07e0596290faf316">NvFlexSetNormals</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetNormals(NvFlexSolver *solver, NvFlexBuffer *normals, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a3eafe7fe6b200c757c7402eca7d13f6d"><div class="ttname"><a href="_nv_flex_8h.html#a3eafe7fe6b200c757c7402eca7d13f6d">NvFlexGetRigidTransforms</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetRigidTransforms(NvFlexSolver *solver, NvFlexBuffer *rotations, NvFlexBuffer *translations)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a98b4df3721709c862ef5d09edcc6d4c3"><div class="ttname"><a href="_nv_flex_8h.html#a98b4df3721709c862ef5d09edcc6d4c3">NvFlexTimers::createGrid</a></div><div class="ttdeci">float createGrid</div><div class="ttdoc">Time spent creating grid. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:189</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32"><div class="ttname"><a href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">eNvFlexPhaseGroupMask</a></div><div class="ttdoc">Low 24 bits represent the particle group for controlling collisions. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:168</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a84f06fff995d8eb034cff81c811fa312"><div class="ttname"><a href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlexGetParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetParticles(NvFlexSolver *solver, NvFlexBuffer *p, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ae2e480822cc06ec249ee2557f6cc8ee1"><div class="ttname"><a href="_nv_flex_8h.html#ae2e480822cc06ec249ee2557f6cc8ee1">NvFlexParams::buoyancy</a></div><div class="ttdeci">float buoyancy</div><div class="ttdoc">Gravity is scaled by this value for fluid particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:137</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e">eNvFlexLogAll</a></div><div class="ttdoc">All log types. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:221</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aea4e7117722df53dfe44c676496117fa"><div class="ttname"><a href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlexSetShapes</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetShapes(NvFlexSolver *solver, NvFlexBuffer *geometry, NvFlexBuffer *shapePositions, NvFlexBuffer *shapeRotations, NvFlexBuffer *shapePrevPositions, NvFlexBuffer *shapePrevRotations, NvFlexBuffer *shapeFlags, int numShapes)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_abef057ac89ba5cf1cd71f0084f9313de"><div class="ttname"><a href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlexSetParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetParticles(NvFlexSolver *solver, NvFlexBuffer *p, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943"><div class="ttname"><a href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943">eNvFlexD3D12</a></div><div class="ttdoc">Use DirectX 12 compute for Flex, the application must link against the D3D libraries. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:243</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab6e2aa06b69e92cbd3b2bca19f18e794"><div class="ttname"><a href="_nv_flex_8h.html#ab6e2aa06b69e92cbd3b2bca19f18e794">NvFlexTriangleMeshGeometry::scale</a></div><div class="ttdeci">float scale[3]</div><div class="ttdoc">The scale of the object from local space to world space. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:794</div></div>
+<div class="ttc" id="_nv_flex_8h_html_abe52b62e7af361f387d67414b9e2cf9b"><div class="ttname"><a href="_nv_flex_8h.html#abe52b62e7af361f387d67414b9e2cf9b">NvFlexTimers::solveDensities</a></div><div class="ttdeci">float solveDensities</div><div class="ttdoc">Time spent solving density constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:196</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a3a1f5e2ba6c8cad0bc3f3eebd27415f0"><div class="ttname"><a href="_nv_flex_8h.html#a3a1f5e2ba6c8cad0bc3f3eebd27415f0">NvFlexParams::plasticThreshold</a></div><div class="ttdeci">float plasticThreshold</div><div class="ttdoc">Particles belonging to rigid shapes that move with a position delta magnitude > threshold will be per...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:148</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4cb4462803ebff105d151fd45b4efad6"><div class="ttname"><a href="_nv_flex_8h.html#a4cb4462803ebff105d151fd45b4efad6">NvFlexDestroyTriangleMesh</a></div><div class="ttdeci">NV_FLEX_API void NvFlexDestroyTriangleMesh(NvFlexLibrary *lib, NvFlexTriangleMeshId mesh)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a482a7c3b197c4df656e9509fbd04032c"><div class="ttname"><a href="_nv_flex_8h.html#a482a7c3b197c4df656e9509fbd04032c">NvFlexParams::gravity</a></div><div class="ttdeci">float gravity[3]</div><div class="ttdoc">Constant acceleration applied to all particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:100</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69">eNvFlexStageIterationEnd</a></div><div class="ttdoc">Called at the end of each constraint iteration. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:230</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd"><div class="ttname"><a href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd">eNvFlexLogError</a></div><div class="ttdoc">Error messages. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:217</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab559759820a4322aff061745ef26c867"><div class="ttname"><a href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexFreeBuffer(NvFlexBuffer *buf)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a75eade1512d023cb19da5b7ebbad10f3"><div class="ttname"><a href="_nv_flex_8h.html#a75eade1512d023cb19da5b7ebbad10f3">NvFlexTimers::solveInflatables</a></div><div class="ttdeci">float solveInflatables</div><div class="ttdoc">Time spent solving pressure constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:201</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44">eNvFlexStageSubstepBegin</a></div><div class="ttdoc">Called at the beginning of each substep after the prediction step has been completed. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:231</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a3117f92571613709936291c48414e521"><div class="ttname"><a href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlexSetPhases</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetPhases(NvFlexSolver *solver, NvFlexBuffer *phases, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_init_desc"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_init_desc">NvFlexInitDesc</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:277</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db"><div class="ttname"><a href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db">eNvFlexRelaxationGlobal</a></div><div class="ttdoc">The relaxation factor is a fixed multiplier on each constraint&#39;s position delta. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:88</div></div>
+<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_capsule_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_capsule_geometry">NvFlexCapsuleGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:766</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a3c4d2aa395ff8d0f70a6380448943be2"><div class="ttname"><a href="_nv_flex_8h.html#a3c4d2aa395ff8d0f70a6380448943be2">NvFlexTimers::total</a></div><div class="ttdeci">float total</div><div class="ttdoc">Sum of all timers above. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:209</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5b9af9cf4d889b4772cb61cefda92a87"><div class="ttname"><a href="_nv_flex_8h.html#a5b9af9cf4d889b4772cb61cefda92a87">NvFlexSolverCallbackParams::userData</a></div><div class="ttdeci">void * userData</div><div class="ttdoc">Pointer to the user data provided to NvFlexRegisterSolverCallback() </div><div class="ttdef"><b>Definition:</b> NvFlex.h:261</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a1241ff3522eafac4b402370a7a6525d8"><div class="ttname"><a href="_nv_flex_8h.html#a1241ff3522eafac4b402370a7a6525d8">NvFlexCapsuleGeometry::radius</a></div><div class="ttdeci">float radius</div><div class="ttdef"><b>Definition:</b> NvFlex.h:768</div></div>
+<div class="ttc" id="_nv_flex_8h_html_abdfd0834422dd99154a27962614525e5"><div class="ttname"><a href="_nv_flex_8h.html#abdfd0834422dd99154a27962614525e5">NvFlexGetDynamicTriangles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetDynamicTriangles(NvFlexSolver *solver, NvFlexBuffer *indices, NvFlexBuffer *normals, int numTris)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ad6ee1e23e0c49aad63df8f605182de3a"><div class="ttname"><a href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a">NvFlexMakeShapeFlags</a></div><div class="ttdeci">NV_FLEX_API int NvFlexMakeShapeFlags(NvFlexCollisionShapeType type, bool dynamic)</div><div class="ttdef"><b>Definition:</b> NvFlex.h:844</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aab83daf46e5a9428a0ad76fb75e8ec7e"><div class="ttname"><a href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlexRegisterOGLBuffer</a></div><div class="ttdeci">NV_FLEX_API NvFlexBuffer * NvFlexRegisterOGLBuffer(NvFlexLibrary *lib, int buf, int elementCount, int elementByteStride)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_detail_timer"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_detail_timer">NvFlexDetailTimer</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:990</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a8a1b3c24aa73606bcd47a72473db9629"><div class="ttname"><a href="_nv_flex_8h.html#a8a1b3c24aa73606bcd47a72473db9629">NvFlexParams::relaxationFactor</a></div><div class="ttdeci">float relaxationFactor</div><div class="ttdoc">Control the convergence rate of the parallel solver, default: 1, values greater than 1 may lead to in...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:160</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ae67c0cab2ecee8eb9485a26ef0fad6a9"><div class="ttname"><a href="_nv_flex_8h.html#ae67c0cab2ecee8eb9485a26ef0fad6a9">NvFlexSetSprings</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetSprings(NvFlexSolver *solver, NvFlexBuffer *indices, NvFlexBuffer *restLengths, NvFlexBuffer *stiffness, int numSprings)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a9d825db54bc9a0bca998b3654db3b20e"><div class="ttname"><a href="_nv_flex_8h.html#a9d825db54bc9a0bca998b3654db3b20e">NvFlexTimers::finalize</a></div><div class="ttdeci">float finalize</div><div class="ttdoc">Time spent finalizing state. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:207</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a9b65813d2a2d3f99db162d39a62481f8"><div class="ttname"><a href="_nv_flex_8h.html#a9b65813d2a2d3f99db162d39a62481f8">NvFlexSolverCallbackParams::sortedToOriginalMap</a></div><div class="ttdeci">const int * sortedToOriginalMap</div><div class="ttdoc">Device pointer that maps the original particle index to the index in the callback data structure...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:272</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a9b2d3dc5ac42011aeec4e13be2e14252"><div class="ttname"><a href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlexComputeType</a></div><div class="ttdeci">NvFlexComputeType</div><div class="ttdef"><b>Definition:</b> NvFlex.h:239</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aea2af336bdd96d7168c3acdce6d1875d"><div class="ttname"><a href="_nv_flex_8h.html#aea2af336bdd96d7168c3acdce6d1875d">NvFlexSetActive</a></div><div class="ttdeci">NV_FLEX_API void NvFlexSetActive(NvFlexSolver *solver, NvFlexBuffer *indices, int n)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a27a185172ad1951d40c476ade8307068"><div class="ttname"><a href="_nv_flex_8h.html#a27a185172ad1951d40c476ade8307068">NvFlexParams::dynamicFriction</a></div><div class="ttdeci">float dynamicFriction</div><div class="ttdoc">Coefficient of friction used when colliding against shapes. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:106</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a42346069505d3bba70bcdf0a94f0615c"><div class="ttname"><a href="_nv_flex_8h.html#a42346069505d3bba70bcdf0a94f0615c">NvFlexParams::plasticCreep</a></div><div class="ttdeci">float plasticCreep</div><div class="ttdoc">Controls the rate at which particles in the rest pose are deformed for particles passing the deformat...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:149</div></div>
+<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_s_d_f_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_s_d_f_geometry">NvFlexSDFGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:802</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a800620cc4888bbe5696c5f0e19b22bb9"><div class="ttname"><a href="_nv_flex_8h.html#a800620cc4888bbe5696c5f0e19b22bb9">NvFlexConvexMeshGeometry::scale</a></div><div class="ttdeci">float scale[3]</div><div class="ttdef"><b>Definition:</b> NvFlex.h:785</div></div>
+<div class="ttc" id="struct_nv_flex_solver_callback_html"><div class="ttname"><a href="struct_nv_flex_solver_callback.html">NvFlexSolverCallback</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:289</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a5be673031b100c3861fd9eb824fcf00f"><div class="ttname"><a href="_nv_flex_8h.html#a5be673031b100c3861fd9eb824fcf00f">NvFlexParams::diffuseBuoyancy</a></div><div class="ttdeci">float diffuseBuoyancy</div><div class="ttdoc">Scales force opposing gravity that diffuse particles receive. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:141</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a2f85189cbc3014b73164cf8c4eb87e0a"><div class="ttname"><a href="_nv_flex_8h.html#a2f85189cbc3014b73164cf8c4eb87e0a">NvFlexTimers::updateBounds</a></div><div class="ttdeci">float updateBounds</div><div class="ttdoc">Time spent updating particle bounds. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:208</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a3ddbb30a2fde4a2e9ccec7854300b1d4"><div class="ttname"><a href="_nv_flex_8h.html#a3ddbb30a2fde4a2e9ccec7854300b1d4">NvFlexDetailTimer::name</a></div><div class="ttdeci">char * name</div><div class="ttdef"><b>Definition:</b> NvFlex.h:992</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab7c54d6c0b3d3595780e5179bf62ebc4"><div class="ttname"><a href="_nv_flex_8h.html#ab7c54d6c0b3d3595780e5179bf62ebc4">NvFlexParams::solidRestDistance</a></div><div class="ttdeci">float solidRestDistance</div><div class="ttdoc">The distance non-fluid particles attempt to maintain from each other, must be in the range (0...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:102</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a3f93fba688338576ff3258b034525dc5"><div class="ttname"><a href="_nv_flex_8h.html#a3f93fba688338576ff3258b034525dc5">NvFlexParams::solidPressure</a></div><div class="ttdeci">float solidPressure</div><div class="ttdoc">Add pressure from solid surfaces to particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:135</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4d10188e917ae045e0e903f3db1c638d"><div class="ttname"><a href="_nv_flex_8h.html#a4d10188e917ae045e0e903f3db1c638d">NvFlexTimers::solveVelocities</a></div><div class="ttdeci">float solveVelocities</div><div class="ttdoc">Time spent solving velocity constraints. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:197</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3"><div class="ttname"><a href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3">eNvFlexStageCount</a></div><div class="ttdoc">Number of stages. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:234</div></div>
+<div class="ttc" id="_nv_flex_8h_html_afc306cb48c313ee518461d60c1014485"><div class="ttname"><a href="_nv_flex_8h.html#afc306cb48c313ee518461d60c1014485">NvFlexParams::restitution</a></div><div class="ttdeci">float restitution</div><div class="ttdoc">Coefficient of restitution used when colliding against shapes, particle collisions are always inelast...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:109</div></div>
+<div class="ttc" id="_nv_flex_8h_html_struct_nv_flex_triangle_mesh_geometry"><div class="ttname"><a href="_nv_flex_8h.html#struct_nv_flex_triangle_mesh_geometry">NvFlexTriangleMeshGeometry</a></div><div class="ttdef"><b>Definition:</b> NvFlex.h:792</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a572c9bf93128466e27d57f225f4d0188"><div class="ttname"><a href="_nv_flex_8h.html#a572c9bf93128466e27d57f225f4d0188">NvFlexParams::numIterations</a></div><div class="ttdeci">int numIterations</div><div class="ttdoc">Number of solver iterations to perform per-substep. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:98</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ae6671f352bd77e296609d0bc2a57fd11"><div class="ttname"><a href="_nv_flex_8h.html#ae6671f352bd77e296609d0bc2a57fd11">NvFlexRestoreContext</a></div><div class="ttdeci">NV_FLEX_API void NvFlexRestoreContext(NvFlexLibrary *lib)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a581b458848039220203547af53de128f"><div class="ttname"><a href="_nv_flex_8h.html#a581b458848039220203547af53de128f">NvFlexGetParams</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetParams(NvFlexSolver *solver, NvFlexParams *params)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_af7f91fa47c779fcd8bee60061de6d31c"><div class="ttname"><a href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver</a></div><div class="ttdeci">NV_FLEX_API NvFlexSolver * NvFlexCreateSolver(NvFlexLibrary *lib, int maxParticles, int maxDiffuseParticles, int maxNeighborsPerParticle=96)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a608af97e77a912e959b0e825082a9cd6"><div class="ttname"><a href="_nv_flex_8h.html#a608af97e77a912e959b0e825082a9cd6">NvFlexParams::anisotropyScale</a></div><div class="ttdeci">float anisotropyScale</div><div class="ttdoc">Control how much anisotropy is present in resulting ellipsoids for rendering, if zero then anisotropy...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:131</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ae763dd9bfcfa4092c0165a506e32e18b"><div class="ttname"><a href="_nv_flex_8h.html#ae763dd9bfcfa4092c0165a506e32e18b">NvFlexParams::vorticityConfinement</a></div><div class="ttdeci">float vorticityConfinement</div><div class="ttdoc">Increases vorticity by applying rotational forces to particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:130</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a37ada4b95999cc253dfb049b99030d50"><div class="ttname"><a href="_nv_flex_8h.html#a37ada4b95999cc253dfb049b99030d50">NvFlexGetDiffuseParticles</a></div><div class="ttdeci">NV_FLEX_API int NvFlexGetDiffuseParticles(NvFlexSolver *solver, NvFlexBuffer *p, NvFlexBuffer *v, NvFlexBuffer *indices)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a469950744e0b7222969762a89b992255"><div class="ttname"><a href="_nv_flex_8h.html#a469950744e0b7222969762a89b992255">NvFlexParams::diffuseLifetime</a></div><div class="ttdeci">float diffuseLifetime</div><div class="ttdoc">Time in seconds that a diffuse particle will live for after being spawned, particles will be spawned ...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:145</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a4bf0ccff128c165560dba52afb748d7e"><div class="ttname"><a href="_nv_flex_8h.html#a4bf0ccff128c165560dba52afb748d7e">NvFlexParams::diffuseDrag</a></div><div class="ttdeci">float diffuseDrag</div><div class="ttdoc">Scales force diffuse particles receive in direction of neighbor fluid particles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:142</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aeecd11525503649b579ae262b671fbc8"><div class="ttname"><a href="_nv_flex_8h.html#aeecd11525503649b579ae262b671fbc8">NvFlexParams::particleCollisionMargin</a></div><div class="ttdeci">float particleCollisionMargin</div><div class="ttdoc">Increases the radius used during neighbor finding, this is useful if particles are expected to move s...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:153</div></div>
+<div class="ttc" id="_nv_flex_8h_html_acdde802d58e1558c03e449e04ae33f15"><div class="ttname"><a href="_nv_flex_8h.html#acdde802d58e1558c03e449e04ae33f15">NvFlexParams::diffuseThreshold</a></div><div class="ttdeci">float diffuseThreshold</div><div class="ttdoc">Particles with kinetic energy + divergence above this threshold will spawn new diffuse particles...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:140</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576"><div class="ttname"><a href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576">eNvFlexBufferDevice</a></div><div class="ttdoc">Device memory buffer, mapping this on CUDA will return a device memory pointer, and will return a buf...</div><div class="ttdef"><b>Definition:</b> NvFlex.h:80</div></div>
+<div class="ttc" id="_nv_flex_8h_html_aab5f90f4024d71d08c3f9327c6d8c184"><div class="ttname"><a href="_nv_flex_8h.html#aab5f90f4024d71d08c3f9327c6d8c184">NvFlexGetSprings</a></div><div class="ttdeci">NV_FLEX_API void NvFlexGetSprings(NvFlexSolver *solver, NvFlexBuffer *indices, NvFlexBuffer *restLengths, NvFlexBuffer *stiffness, int numSprings)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce"><div class="ttname"><a href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce">eNvFlexShapeConvexMesh</a></div><div class="ttdoc">A convex mesh shape, see FlexConvexMeshGeometry. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:827</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a8cb34cbcf9def6817d6d5d3c07177052"><div class="ttname"><a href="_nv_flex_8h.html#a8cb34cbcf9def6817d6d5d3c07177052">NvFlexTimers::updateTriangles</a></div><div class="ttdeci">float updateTriangles</div><div class="ttdoc">Time spent updating dynamic triangles. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:205</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a169e4c126acf46bdebf76c36a44deca3"><div class="ttname"><a href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlexBufferType</a></div><div class="ttdeci">NvFlexBufferType</div><div class="ttdef"><b>Definition:</b> NvFlex.h:77</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a23b8779c1516647ef5ed7f8010d619ff"><div class="ttname"><a href="_nv_flex_8h.html#a23b8779c1516647ef5ed7f8010d619ff">NvFlexInitDesc::enableExtensions</a></div><div class="ttdeci">bool enableExtensions</div><div class="ttdoc">Enable or disable NVIDIA/AMD extensions in DirectX, can lead to improved performance. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:280</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a7ab5aa68da7ca1f69211a900f1a1c586"><div class="ttname"><a href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlexConvexMeshId</a></div><div class="ttdeci">unsigned int NvFlexConvexMeshId</div><div class="ttdef"><b>Definition:</b> NvFlex.h:645</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/_nv_flex_device_8h.html b/doc/_static/api/_nv_flex_device_8h.html
new file mode 100644
index 0000000..20f041b
--- /dev/null
+++ b/doc/_static/api/_nv_flex_device_8h.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: NvFlexDevice.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">NvFlexDevice.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_nv_flex_device_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a914a7e6338379d00397bd3e7e07c0280"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_device_8h.html#a914a7e6338379d00397bd3e7e07c0280">NvFlexDeviceGetSuggestedOrdinal</a> ()</td></tr>
+<tr class="separator:a914a7e6338379d00397bd3e7e07c0280"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a922c489035a9bdb84bee1cd0ef73558d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_device_8h.html#a922c489035a9bdb84bee1cd0ef73558d">NvFlexDeviceCreateCudaContext</a> (int ordinal)</td></tr>
+<tr class="separator:a922c489035a9bdb84bee1cd0ef73558d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a97f4f513f226d573410478fa6d79f05a"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_device_8h.html#a97f4f513f226d573410478fa6d79f05a">NvFlexDeviceDestroyCudaContext</a> ()</td></tr>
+<tr class="separator:a97f4f513f226d573410478fa6d79f05a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>NvFlexDevice is an optional helper library that performs some initialization tasks related to GPU device management. The library can be used to query the NVIDIA PhysX control panel for the selected "PhysX" GPU, and to create an optimized CUDA context. Currently the library is a closed source component but is purely optional. See the FlexDemo for an example of how to use the device API. </p>
+</div><h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a914a7e6338379d00397bd3e7e07c0280"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API int NvFlexDeviceGetSuggestedOrdinal </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Returns the CUDA ordinal of the GPU selected as "PhysX" in the NVIDIA control panel. Returns -1 if there is no NVIDIA CUDA device available.</p>
+<dl class="section note"><dt>Note</dt><dd>The returned ordinal is a CUDA ordinal and does not correspond to the DXGI ordinal. D3D users should use their own device selection method and pass the appropriate DXGI device index or custom D3D devices to <a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlexInit()</a>. </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a922c489035a9bdb84bee1cd0ef73558d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API bool NvFlexDeviceCreateCudaContext </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ordinal</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Creates a CUDA context optimized for Flex, returns true on success and sets the context as current on the calling thread. If using this method to initialize CUDA then you should ensure that no prior CUDA calls are made prior to avoid creating multiple contexts.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">ordinal</td><td>The CUDA ordinal of the GPU to create the context on, this can be the suggested ordinal (see flexDeviceGetSuggestedOrdinal()), or a manually selected ordinal. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a97f4f513f226d573410478fa6d79f05a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexDeviceDestroyCudaContext </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Destroy the context associated with the current thread, can be used to destroy the CUDA context created by flexDeviceCreateCudaContext(). </p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/_nv_flex_device_8h_source.html b/doc/_static/api/_nv_flex_device_8h_source.html
new file mode 100644
index 0000000..42e8d54
--- /dev/null
+++ b/doc/_static/api/_nv_flex_device_8h_source.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: NvFlexDevice.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">NvFlexDevice.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="_nv_flex_device_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// This code contains NVIDIA Confidential Information and is disclosed to you</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// under a form of NVIDIA software license agreement provided separately to you.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Notice</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// NVIDIA Corporation and its licensors retain all intellectual property and</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// proprietary rights in and to this software and related documentation and</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// any modifications thereto. Any use, reproduction, disclosure, or</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// distribution of this software and related documentation without an express</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// license agreement from NVIDIA Corporation is strictly prohibited.</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED &quot;AS IS.&quot;. NVIDIA MAKES</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Information and code furnished is believed to be accurate and reliable.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// information or for any infringement of patents or other rights of third parties that may</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// result from its use. No license is granted by implication or otherwise under any patent</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// or patent rights of NVIDIA Corporation. Details are subject to change without notice.</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// This code supersedes and replaces all information previously supplied.</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// NVIDIA Corporation products are not authorized for use as critical</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// components in life support devices or systems without express written approval of</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// NVIDIA Corporation.</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// Copyright (c) 2013-2017 NVIDIA Corporation. All rights reserved.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#ifndef NV_FLEX_DEVICE_H</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#define NV_FLEX_DEVICE_H</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#ifndef NV_FLEX_API</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#if _WIN32</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#define NV_FLEX_API __declspec(dllexport)</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#define NV_FLEX_API</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_device_8h.html#a914a7e6338379d00397bd3e7e07c0280">NvFlexDeviceGetSuggestedOrdinal</a>();</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;NV_FLEX_API <span class="keywordtype">bool</span> <a class="code" href="_nv_flex_device_8h.html#a922c489035a9bdb84bee1cd0ef73558d">NvFlexDeviceCreateCudaContext</a>(<span class="keywordtype">int</span> ordinal);</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_device_8h.html#a97f4f513f226d573410478fa6d79f05a">NvFlexDeviceDestroyCudaContext</a>();</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#endif // NV_FLEX_DEVICE_H</span></div>
+<div class="ttc" id="_nv_flex_device_8h_html_a914a7e6338379d00397bd3e7e07c0280"><div class="ttname"><a href="_nv_flex_device_8h.html#a914a7e6338379d00397bd3e7e07c0280">NvFlexDeviceGetSuggestedOrdinal</a></div><div class="ttdeci">NV_FLEX_API int NvFlexDeviceGetSuggestedOrdinal()</div></div>
+<div class="ttc" id="_nv_flex_device_8h_html_a922c489035a9bdb84bee1cd0ef73558d"><div class="ttname"><a href="_nv_flex_device_8h.html#a922c489035a9bdb84bee1cd0ef73558d">NvFlexDeviceCreateCudaContext</a></div><div class="ttdeci">NV_FLEX_API bool NvFlexDeviceCreateCudaContext(int ordinal)</div></div>
+<div class="ttc" id="_nv_flex_device_8h_html_a97f4f513f226d573410478fa6d79f05a"><div class="ttname"><a href="_nv_flex_device_8h.html#a97f4f513f226d573410478fa6d79f05a">NvFlexDeviceDestroyCudaContext</a></div><div class="ttdeci">NV_FLEX_API void NvFlexDeviceDestroyCudaContext()</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/_nv_flex_ext_8h.html b/doc/_static/api/_nv_flex_ext_8h.html
new file mode 100644
index 0000000..fc0433a
--- /dev/null
+++ b/doc/_static/api/_nv_flex_ext_8h.html
@@ -0,0 +1,2121 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: NvFlexExt.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#nested-classes">Data Structures</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#enum-members">Enumerations</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle">
+<div class="title">NvFlexExt.h File Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+
+<p><a href="_nv_flex_ext_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
+Data Structures</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html">NvFlexVector&lt; T &gt;</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_ext_moving_frame"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a></td></tr>
+<tr class="separator:struct_nv_flex_ext_moving_frame"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_ext_asset"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a></td></tr>
+<tr class="separator:struct_nv_flex_ext_asset"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_ext_instance"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a></td></tr>
+<tr class="separator:struct_nv_flex_ext_instance"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_ext_tearing_particle_clone"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a></td></tr>
+<tr class="separator:struct_nv_flex_ext_tearing_particle_clone"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_ext_tearing_mesh_edit"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a></td></tr>
+<tr class="separator:struct_nv_flex_ext_tearing_mesh_edit"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_ext_particle_data"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a></td></tr>
+<tr class="separator:struct_nv_flex_ext_particle_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_ext_triangle_data"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a></td></tr>
+<tr class="separator:struct_nv_flex_ext_triangle_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_ext_shape_data"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a></td></tr>
+<tr class="separator:struct_nv_flex_ext_shape_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:struct_nv_flex_ext_force_field"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a></td></tr>
+<tr class="separator:struct_nv_flex_ext_force_field"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:afaf84632a42346a718009bcda5efc8b4"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a></td></tr>
+<tr class="separator:afaf84632a42346a718009bcda5efc8b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1117ce527b6b483cc756ab5352f6dc3f"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a></td></tr>
+<tr class="separator:a1117ce527b6b483cc756ab5352f6dc3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
+Enumerations</h2></td></tr>
+<tr class="memitem:a502acd5c1db4ba6eef61eba25f26d68e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a> { <br />
+&#160;&#160;<a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2">eNvFlexExtModeForce</a> = 0,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0">eNvFlexExtModeImpulse</a> = 1,
+<br />
+&#160;&#160;<a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c">eNvFlexExtModeVelocityChange</a> = 2
+<br />
+ }</td></tr>
+<tr class="separator:a502acd5c1db4ba6eef61eba25f26d68e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:a6a20d814e3b083b069daa0f20a3e756e"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExtMovingFrameInit</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> *frame, const float *worldTranslation, const float *worldRotation)</td></tr>
+<tr class="separator:a6a20d814e3b083b069daa0f20a3e756e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a780022c1b8425074ce08328e8e8c35cc"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExtMovingFrameUpdate</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> *frame, const float *worldTranslation, const float *worldRotation, float dt)</td></tr>
+<tr class="separator:a780022c1b8425074ce08328e8e8c35cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4ffe9bcd59a6cfc8900ac136f5123304"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExtMovingFrameApply</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> *frame, float *positions, float *velocities, int numParticles, float linearScale, float angularScale, float dt)</td></tr>
+<tr class="separator:a4ffe9bcd59a6cfc8900ac136f5123304"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a82a15dfd40b338a07cf4517f55f16720"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExtCreateWeldedMeshIndices</a> (const float *vertices, int numVertices, int *uniqueVerts, int *originalToUniqueMap, float threshold)</td></tr>
+<tr class="separator:a82a15dfd40b338a07cf4517f55f16720"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8bef033b2a8567dfcc954e22534147ee"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExtCreateClothFromMesh</a> (const float *particles, int numParticles, const int *indices, int numTriangles, float stretchStiffness, float bendStiffness, float tetherStiffness, float tetherGive, float pressure)</td></tr>
+<tr class="separator:a8bef033b2a8567dfcc954e22534147ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:addad82b3598059ffde7b3b5babe17bd4"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExtCreateTearingClothFromMesh</a> (const float *particles, int numParticles, int maxParticles, const int *indices, int numTriangles, float stretchStiffness, float bendStiffness, float pressure)</td></tr>
+<tr class="separator:addad82b3598059ffde7b3b5babe17bd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a88054283907d3386f1a30cdc4475acb0"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a88054283907d3386f1a30cdc4475acb0">NvFlexExtDestroyTearingCloth</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *asset)</td></tr>
+<tr class="separator:a88054283907d3386f1a30cdc4475acb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5efc0113d5432eb959437e6e3a98cc5f"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a5efc0113d5432eb959437e6e3a98cc5f">NvFlexExtTearClothMesh</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *asset, float maxStrain, int maxSplits, <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a> *particleCopies, int *numParticleCopies, int maxCopies, <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a> *triangleEdits, int *numTriangleEdits, int maxEdits)</td></tr>
+<tr class="separator:a5efc0113d5432eb959437e6e3a98cc5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad0a9c7e2f907e46b60f6bacf402987ce"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ad0a9c7e2f907e46b60f6bacf402987ce">NvFlexExtCreateRigidFromMesh</a> (const float *vertices, int numVertices, const int *indices, int numTriangleIndices, float radius, float expand)</td></tr>
+<tr class="separator:ad0a9c7e2f907e46b60f6bacf402987ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a9f2c0daf521df4920e44cca1cb30b42c"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a9f2c0daf521df4920e44cca1cb30b42c">NvFlexExtCreateSoftFromMesh</a> (const float *vertices, int numVertices, const int *indices, int numTriangleIndices, float particleSpacing, float volumeSampling, float surfaceSampling, float clusterSpacing, float clusterRadius, float clusterStiffness, float linkRadius, float linkStiffness, float globalStiffness)</td></tr>
+<tr class="separator:a9f2c0daf521df4920e44cca1cb30b42c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a36c33fafe13c5fd5773bf9a2af2dd745"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a36c33fafe13c5fd5773bf9a2af2dd745">NvFlexExtDestroyAsset</a> (<a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *asset)</td></tr>
+<tr class="separator:a36c33fafe13c5fd5773bf9a2af2dd745"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6e3f12e9e92abb31b115cf31b33e34bb"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a6e3f12e9e92abb31b115cf31b33e34bb">NvFlexExtCreateSoftMeshSkinning</a> (const float *vertices, int numVertices, const float *bones, int numBones, float falloff, float maxDistance, float *skinningWeights, int *skinningIndices)</td></tr>
+<tr class="separator:a6e3f12e9e92abb31b115cf31b33e34bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a49906c9e3466d40383cddf627fe26658"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a49906c9e3466d40383cddf627fe26658">NvFlexExtCreateContainer</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *lib, <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver, int maxParticles)</td></tr>
+<tr class="separator:a49906c9e3466d40383cddf627fe26658"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2509137d9fb8ab6818f35ab7761da7a5"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a2509137d9fb8ab6818f35ab7761da7a5">NvFlexExtDestroyContainer</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr>
+<tr class="separator:a2509137d9fb8ab6818f35ab7761da7a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7c036ccca83df3659529858068e0593d"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a7c036ccca83df3659529858068e0593d">NvFlexExtAllocParticles</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, int n, int *indices)</td></tr>
+<tr class="separator:a7c036ccca83df3659529858068e0593d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab0a259d159116b7fba9b229784b02c70"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ab0a259d159116b7fba9b229784b02c70">NvFlexExtFreeParticles</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, int n, const int *indices)</td></tr>
+<tr class="separator:ab0a259d159116b7fba9b229784b02c70"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7fc268a27306f6fc68dd1c106cfa62db"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a7fc268a27306f6fc68dd1c106cfa62db">NvFlexExtGetActiveList</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, int *indices)</td></tr>
+<tr class="separator:a7fc268a27306f6fc68dd1c106cfa62db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3fa8bd4b7d4096602e611faf0bb62dfb"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExtMapParticleData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr>
+<tr class="separator:a3fa8bd4b7d4096602e611faf0bb62dfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af0cd639c21be28640fe5e1dd94931d59"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExtUnmapParticleData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr>
+<tr class="separator:af0cd639c21be28640fe5e1dd94931d59"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1646bf409084777cd0ff5d4fcccf07de"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExtMapTriangleData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr>
+<tr class="separator:a1646bf409084777cd0ff5d4fcccf07de"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a89e582ae93e0256b06f22d9abf361783"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a89e582ae93e0256b06f22d9abf361783">NvFlexExtUnmapTriangleData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr>
+<tr class="separator:a89e582ae93e0256b06f22d9abf361783"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a90f2d3ba5be20e70e7efead911ee7acc"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExtMapShapeData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr>
+<tr class="separator:a90f2d3ba5be20e70e7efead911ee7acc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab51f04114586b5bf0f6fc5816fda9c69"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ab51f04114586b5bf0f6fc5816fda9c69">NvFlexExtUnmapShapeData</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr>
+<tr class="separator:ab51f04114586b5bf0f6fc5816fda9c69"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3bf10e2c9370602142b7be01e920f973"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExtCreateInstance</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a> *particleData, const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *asset, const float *transform, float vx, float vy, float vz, int phase, float invMassScale)</td></tr>
+<tr class="separator:a3bf10e2c9370602142b7be01e920f973"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2b5634f64bd0d8d86f894885a1c16a33"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a2b5634f64bd0d8d86f894885a1c16a33">NvFlexExtDestroyInstance</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a> *instance)</td></tr>
+<tr class="separator:a2b5634f64bd0d8d86f894885a1c16a33"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad9343d07f49098ee205a1ed48dc9db34"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ad9343d07f49098ee205a1ed48dc9db34">NvFlexExtNotifyAssetChanged</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *asset)</td></tr>
+<tr class="separator:ad9343d07f49098ee205a1ed48dc9db34"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ab4caadf5a6b19674849bfce91d986e7b"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ab4caadf5a6b19674849bfce91d986e7b">NvFlexExtTickContainer</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container, float dt, int numSubsteps, bool enableTimers=false)</td></tr>
+<tr class="separator:ab4caadf5a6b19674849bfce91d986e7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a425f4e472bb83797498c904ab228209c"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExtPushToDevice</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr>
+<tr class="separator:a425f4e472bb83797498c904ab228209c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a89ea7bbd26bec46f1b82d84257de1f58"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExtPullFromDevice</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr>
+<tr class="separator:a89ea7bbd26bec46f1b82d84257de1f58"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4695d37db8b61495f200bfd88a2be628"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#a4695d37db8b61495f200bfd88a2be628">NvFlexExtUpdateInstances</a> (<a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *container)</td></tr>
+<tr class="separator:a4695d37db8b61495f200bfd88a2be628"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac1ed9ff49120d0691352399c8173bdcf"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExtCreateForceFieldCallback</a> (<a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *solver)</td></tr>
+<tr class="separator:ac1ed9ff49120d0691352399c8173bdcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad08da77f432ca56bc59647bf73da86cb"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#ad08da77f432ca56bc59647bf73da86cb">NvFlexExtDestroyForceFieldCallback</a> (<a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> *callback)</td></tr>
+<tr class="separator:ad08da77f432ca56bc59647bf73da86cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa36d43b9e53b9b66d43c2bc5eb5abf98"><td class="memItemLeft" align="right" valign="top">NV_FLEX_API void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExtSetForceFields</a> (<a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> *callback, const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a> *forceFields, int numForceFields)</td></tr>
+<tr class="separator:aa36d43b9e53b9b66d43c2bc5eb5abf98"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>The main include file for the Flex extensions API, this is a collection of helper functions for asset creation, scene management, and sample code that builds on the Flex core API. </p>
+</div><hr/><h2 class="groupheader">Data Structure Documentation</h2>
+<a name="struct_nv_flex_ext_moving_frame" id="struct_nv_flex_ext_moving_frame"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexExtMovingFrame</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>Helper struct for storing the state of a moving frame, see <a class="el" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExtMovingFrameInit()</a> </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a7d35ea2def3a05a5f85a5cdfd5abdc56"></a>float</td>
+<td class="fieldname">
+position[3]</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ad1af111e19f7ca92fd913c25c4d9288b"></a>float</td>
+<td class="fieldname">
+rotation[4]</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="acc246770a0f65f1e50b43c618955dc84"></a>float</td>
+<td class="fieldname">
+velocity[3]</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a95fbd8d303fe90992b95b63a29eb5344"></a>float</td>
+<td class="fieldname">
+omega[3]</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a0705c9d2b5960057b37f097083d96f33"></a>float</td>
+<td class="fieldname">
+acceleration[3]</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aab0ea63bac05cd6aee5054d369687fb0"></a>float</td>
+<td class="fieldname">
+tau[3]</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ae03f4690a66ba4e06e4b2519c688aaba"></a>float</td>
+<td class="fieldname">
+delta[4][4]</td>
+<td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_ext_asset" id="struct_nv_flex_ext_asset"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexExtAsset</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>Represents a group of particles and constraints, each asset can be instanced into a container using <a class="el" href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExtCreateInstance()</a> </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a0ac3c8cc1bb87eaa50690f44e56a74da"></a>float *</td>
+<td class="fieldname">
+particles</td>
+<td class="fielddoc">
+Local space particle positions, x,y,z,1/mass. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a4eceb2845977219379afdd06397a6706"></a>int</td>
+<td class="fieldname">
+numParticles</td>
+<td class="fielddoc">
+Number of particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ab421c4d72574f468af6827c18c36a387"></a>int</td>
+<td class="fieldname">
+maxParticles</td>
+<td class="fielddoc">
+Maximum number of particles, allows extra space for tearable assets which duplicate particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a8b7a9bd9cbd2f33c6b3da02687a6bd9d"></a>int *</td>
+<td class="fieldname">
+springIndices</td>
+<td class="fielddoc">
+Spring indices. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a1e8252d5e5f66b3d8920c1371f23cc05"></a>float *</td>
+<td class="fieldname">
+springCoefficients</td>
+<td class="fielddoc">
+Spring coefficients. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a9020959583f85486e060a7b5e611476d"></a>float *</td>
+<td class="fieldname">
+springRestLengths</td>
+<td class="fielddoc">
+Spring rest-lengths. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ae5f81891f59382b133319dc3bcea8ba0"></a>int</td>
+<td class="fieldname">
+numSprings</td>
+<td class="fielddoc">
+Number of springs. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a8a4a122a0a95b8262fc4673298a5cb1c"></a>int *</td>
+<td class="fieldname">
+shapeIndices</td>
+<td class="fielddoc">
+The indices of the shape matching constraints. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a4810f46c27fd0cfacfb1f4be9dff0479"></a>int</td>
+<td class="fieldname">
+numShapeIndices</td>
+<td class="fielddoc">
+Total number of indices for shape constraints. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a96b73b81c5db272d950efe3f03a8cef8"></a>int *</td>
+<td class="fieldname">
+shapeOffsets</td>
+<td class="fielddoc">
+Each entry stores the end of the shape's indices in the indices array (exclusive prefix sum of shape lengths) </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a0fd9407aad5001d3a9fe90e989da1aad"></a>float *</td>
+<td class="fieldname">
+shapeCoefficients</td>
+<td class="fielddoc">
+The stiffness coefficient for each shape. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a24866c3fe2c482073325062c9c80d043"></a>float *</td>
+<td class="fieldname">
+shapeCenters</td>
+<td class="fielddoc">
+The position of the center of mass of each shape, an array of vec3s mNumShapes in length. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="afc07cf2edbf4d5bf504890b312a98bd7"></a>int</td>
+<td class="fieldname">
+numShapes</td>
+<td class="fielddoc">
+The number of shape matching constraints. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aeee311155e99ce95c506078964a7dc3c"></a>int *</td>
+<td class="fieldname">
+triangleIndices</td>
+<td class="fielddoc">
+Indexed triangle mesh indices for clothing. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ad858d4df98a4300668f2b8048881c0d5"></a>int</td>
+<td class="fieldname">
+numTriangles</td>
+<td class="fielddoc">
+Number of triangles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a960073478e49b229d1d19ac64c5b23f7"></a>bool</td>
+<td class="fieldname">
+inflatable</td>
+<td class="fielddoc">
+Whether an inflatable constraint should be added. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a3fc55581814cbab90a0c4167428893df"></a>float</td>
+<td class="fieldname">
+inflatableVolume</td>
+<td class="fielddoc">
+The rest volume for the inflatable constraint. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ab556b9c29acfda73e14c68edc43be7e3"></a>float</td>
+<td class="fieldname">
+inflatablePressure</td>
+<td class="fielddoc">
+How much over the rest volume the inflatable should attempt to maintain. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ad4d5551b97bd31b9e1ca5c57f2c82452"></a>float</td>
+<td class="fieldname">
+inflatableStiffness</td>
+<td class="fielddoc">
+How stiff the inflatable is. </td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_ext_instance" id="struct_nv_flex_ext_instance"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexExtInstance</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>Represents an instance of a FlexAsset in a container </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a1a0c7a0c03148b1586c4fb48f14a565f"></a>int *</td>
+<td class="fieldname">
+particleIndices</td>
+<td class="fielddoc">
+Simulation particle indices. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aca9a5ecc1fd26fedf90f8f17e87e3ca8"></a>int</td>
+<td class="fieldname">
+numParticles</td>
+<td class="fielddoc">
+Number of simulation particles. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a3288fee0b909e9e768d9abc9b8da74cf"></a>int</td>
+<td class="fieldname">
+triangleIndex</td>
+<td class="fielddoc">
+Index in the container's triangle array. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aa67489d3beb86e2b566e0fa2e978ed11"></a>int</td>
+<td class="fieldname">
+shapeIndex</td>
+<td class="fielddoc">
+Index in the container's shape body constraints array. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ac2ef832cadd91e257ba80eb97d936340"></a>int</td>
+<td class="fieldname">
+inflatableIndex</td>
+<td class="fielddoc">
+Index in the container's inflatables array. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aa6fb48cb1199af96a29de7616f7a4d18"></a>float *</td>
+<td class="fieldname">
+shapeTranslations</td>
+<td class="fielddoc">
+Shape matching group translations (vec3s) </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a3d0a712689ce07a5652d48ea25fa05b9"></a>float *</td>
+<td class="fieldname">
+shapeRotations</td>
+<td class="fielddoc">
+Shape matching group rotations (quaternions) </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="aa4f19c17fa4ae35ceda90c8b3d1fcca4"></a>const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *</td>
+<td class="fieldname">
+asset</td>
+<td class="fielddoc">
+Source asset used to create this instance. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a8000e722ce864bbfbce0f303f39186d7"></a>void *</td>
+<td class="fieldname">
+userData</td>
+<td class="fielddoc">
+User data pointer. </td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_ext_tearing_particle_clone" id="struct_nv_flex_ext_tearing_particle_clone"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexExtTearingParticleClone</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>Particles and vertices may need to be copied during tearing. Because the user may maintain particle data outside of Flex, this structure describes how to update the particle data. The application should copy each existing particle given by srcIndex (in the asset's particle array) to the destIndex (also in the asset's array). </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a431c97a2756c45752dd7508f0810a397"></a>int</td>
+<td class="fieldname">
+srcIndex</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a9034efff0f1b158a12a9ed6991d620fa"></a>int</td>
+<td class="fieldname">
+destIndex</td>
+<td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_ext_tearing_mesh_edit" id="struct_nv_flex_ext_tearing_mesh_edit"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexExtTearingMeshEdit</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>The mesh topology may need to be updated to reference new particles during tearing. Because the user may maintain mesh topology outside of Flex, this structure describes the necessary updates that should be performed on the mesh. The triIndex member is the index of the index to be updated, e.g.: a triIndex value of 4 refers to the index 1 vertex (4%3) of the index 1 triangle (4/3). This entry in the indices array should be updated to point to the newParticleIndex. </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a46b80c02097ebc40bf777708e8f17ed4"></a>int</td>
+<td class="fieldname">
+triIndex</td>
+<td class="fielddoc">
+</td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a8cf124de0fc370757cb890f83984ced8"></a>int</td>
+<td class="fieldname">
+newParticleIndex</td>
+<td class="fielddoc">
+</td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_ext_particle_data" id="struct_nv_flex_ext_particle_data"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexExtParticleData</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"></div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a780c0bac62cc5dd8d04da11cff07eeba"></a>float *</td>
+<td class="fieldname">
+particles</td>
+<td class="fielddoc">
+Receives a pointer to the particle position / mass data. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a69962fe23c7fef594fb5f36a175ff148"></a>float *</td>
+<td class="fieldname">
+restParticles</td>
+<td class="fielddoc">
+Receives a pointer to the particle's rest position (used for self collision culling) </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="adbb39b1f8b0705bb3e19d2cb6145640f"></a>float *</td>
+<td class="fieldname">
+velocities</td>
+<td class="fielddoc">
+Receives a pointer to the particle velocity data. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a7fa35a822a4e856fee45b3263e679270"></a>int *</td>
+<td class="fieldname">
+phases</td>
+<td class="fielddoc">
+Receives a pointer to the particle phase data. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="afcacbd584e2041855af50eae3f287779"></a>float *</td>
+<td class="fieldname">
+normals</td>
+<td class="fielddoc">
+Receives a pointer to the particle normal data with 16 byte stride in format [nx, ny, nz, nw]. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="af911b47ddb538a0542f6e2c38a82d701"></a>const float *</td>
+<td class="fieldname">
+lower</td>
+<td class="fielddoc">
+Receive a pointer to the particle lower bounds [x, y, z]. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="ad722c319fe60d8a0933df217ba04b2ac"></a>const float *</td>
+<td class="fieldname">
+upper</td>
+<td class="fielddoc">
+Receive a pointer to the particle upper bounds [x, y, z]. </td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_ext_triangle_data" id="struct_nv_flex_ext_triangle_data"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexExtTriangleData</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"></div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a806a707d6b32c41ab561a4893f43ddde"></a>int *</td>
+<td class="fieldname">
+indices</td>
+<td class="fielddoc">
+Receives a pointer to the array of triangle index data. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a56bf3b1fe603c79b871ead2efb65cc78"></a>float *</td>
+<td class="fieldname">
+normals</td>
+<td class="fielddoc">
+Receives a pointer to an array of triangle normal data stored with 16 byte stride, i.e.: [nx, ny, nz]. </td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_ext_shape_data" id="struct_nv_flex_ext_shape_data"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexExtShapeData</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"></div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a6517fee9c5e151673ecd5ad91cbf2ae2"></a>float *</td>
+<td class="fieldname">
+rotations</td>
+<td class="fielddoc">
+Receives a pointer to the array quaternion rotation data in [x, y z, w] format. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="acd73f347463a114da73bb1ab5eff00b4"></a>float *</td>
+<td class="fieldname">
+positions</td>
+<td class="fielddoc">
+Receives a pointer to an array of shape body translations in [x, y, z] format. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a4e845f47484e00a272ad351b4bf28e95"></a>int</td>
+<td class="fieldname">
+n</td>
+<td class="fielddoc">
+Number of valid tranforms. </td></tr>
+</table>
+
+</div>
+</div>
+<a name="struct_nv_flex_ext_force_field" id="struct_nv_flex_ext_force_field"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct NvFlexExtForceField</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<div class="textblock"><p>Force field data, currently just supports radial fields </p>
+</div><table class="fieldtable">
+<tr><th colspan="3">Data Fields</th></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a9e6134ffeca22636dcd467fa4dee1ba0"></a>float</td>
+<td class="fieldname">
+mPosition[3]</td>
+<td class="fielddoc">
+Center of force field. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a7ad225a762dcf91b7155c7229dd08d38"></a>float</td>
+<td class="fieldname">
+mRadius</td>
+<td class="fielddoc">
+Radius of the force field. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a0b9729f9896faba45c861a1e8d15290b"></a>float</td>
+<td class="fieldname">
+mStrength</td>
+<td class="fielddoc">
+Strength of the force field. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a3d7dba5a4d9fce7230bc20a8bb567951"></a><a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a></td>
+<td class="fieldname">
+mMode</td>
+<td class="fielddoc">
+Mode of field application. </td></tr>
+<tr><td class="fieldtype">
+<a class="anchor" id="a785f5a041fb93cf460cde7153f87fa02"></a>bool</td>
+<td class="fieldname">
+mLinearFalloff</td>
+<td class="fielddoc">
+Linear or no falloff. </td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a class="anchor" id="afaf84632a42346a718009bcda5efc8b4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Opaque type representing a simulation </p>
+
+</div>
+</div>
+<a class="anchor" id="a1117ce527b6b483cc756ab5352f6dc3f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Opaque type representing a force field callback structure that ecapsulates the force field kernels and associated data applied as a callback during the Flex update </p>
+
+</div>
+</div>
+<h2 class="groupheader">Enumeration Type Documentation</h2>
+<a class="anchor" id="a502acd5c1db4ba6eef61eba25f26d68e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Controls the way that force fields affect particles </p>
+<table class="fieldtable">
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2"></a>eNvFlexExtModeForce&#160;</td><td class="fielddoc">
+<p>Apply field value as a force. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0"></a>eNvFlexExtModeImpulse&#160;</td><td class="fielddoc">
+<p>Apply field value as an impulse. </p>
+</td></tr>
+<tr><td class="fieldname"><a class="anchor" id="a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c"></a>eNvFlexExtModeVelocityChange&#160;</td><td class="fielddoc">
+<p>Apply field value as a velocity change. </p>
+</td></tr>
+</table>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a class="anchor" id="a6a20d814e3b083b069daa0f20a3e756e"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtMovingFrameInit </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> *&#160;</td>
+ <td class="paramname"><em>frame</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>worldTranslation</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>worldRotation</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Creates a new moving frame struct. This helper method is used to calculate inertial forces for particles inside an attached parent frame. For example, when simulating cloth attached to the character, we would like to perform a local space simulation of the cloth to avoid excessive stretching and collision issues during fast animations. However, we would still like the cloth to respond to character movements in at least a limited, or controlled fashion. The <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> provides a way to include or remove these inertial forces. The basic usage is as follows:</p>
+<div class="fragment"><div class="line"><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> frame;</div>
+<div class="line"><a class="code" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExtMovingFrameInit</a>(&amp;frame, initialTranslation, initialRotation);</div>
+<div class="line"></div>
+<div class="line"><span class="keyword">const</span> linearInertiaScale = 0.25f;</div>
+<div class="line"><span class="keyword">const</span> angularInertiaScale 0.5;</div>
+<div class="line"></div>
+<div class="line"><span class="keywordflow">while</span>(simulating)</div>
+<div class="line">{</div>
+<div class="line"> float3 newPosition;</div>
+<div class="line"> float4 newRotation;</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// move parent frame (character / emitter) according to application&#39;s animation system</span></div>
+<div class="line"> Animate(newPosition, newRotation);</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// update the frame</span></div>
+<div class="line"> <a class="code" href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExtMovingFrameUpdate</a>(frame, newPosition, newRotation, dt);</div>
+<div class="line"></div>
+<div class="line"> <span class="comment">// apply inertial forces and update particles</span></div>
+<div class="line"> <a class="code" href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExtMovingFrameApply</a>(frame, particlePositions, particleVelocities, numParticles, linearInertiaScale, angularInertiaScale, dt);</div>
+<div class="line">}</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">frame</td><td>A pointer to a user-allocated <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> struct </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">worldTranslation</td><td>A pointer to a vec3 storing the frame's initial translation in world space </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">worldRotation</td><td>A pointer to a quaternion storing the frame's initial rotation in world space </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a780022c1b8425074ce08328e8e8c35cc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtMovingFrameUpdate </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> *&#160;</td>
+ <td class="paramname"><em>frame</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>worldTranslation</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>worldRotation</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>dt</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a4ffe9bcd59a6cfc8900ac136f5123304"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtMovingFrameApply </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a> *&#160;</td>
+ <td class="paramname"><em>frame</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>positions</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>velocities</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numParticles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>linearScale</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>angularScale</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>dt</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a82a15dfd40b338a07cf4517f55f16720"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API int NvFlexExtCreateWeldedMeshIndices </td>
+ <td>(</td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>vertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numVertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>uniqueVerts</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>originalToUniqueMap</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>threshold</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Create an index buffer of unique vertices in the mesh (collapses vertices in the same position even if they have different normals / texcoords). This can be used to create simulation meshes from render meshes, and is typically done as a pre-pass before calling <a class="el" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExtCreateClothFromMesh()</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vertices</td><td>A pointer to an array of float3 positions </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numVertices</td><td>The number of vertices in the mesh </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">uniqueVerts</td><td>A list of unique mesh vertex indices, should be numVertices in length (worst case all verts are unique) </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">originalToUniqueMap</td><td>Mapping from the original vertex index to the unique vertex index, should be numVertices in length </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">threshold</td><td>The distance below which two vertices are considered duplicates </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The number of unique vertices in the mesh </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a8bef033b2a8567dfcc954e22534147ee"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* NvFlexExtCreateClothFromMesh </td>
+ <td>(</td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>particles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numParticles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numTriangles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>stretchStiffness</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>bendStiffness</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>tetherStiffness</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>tetherGive</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>pressure</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Create a cloth asset consisting of stretch and bend distance constraints given an indexed triangle mesh. Stretch constraints will be placed along triangle edges, while bending constraints are placed over two edges.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">particles</td><td>Positions and masses of the particles in the format [x, y, z, 1/m] </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numParticles</td><td>The number of particles </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>The triangle indices, these should be 'welded' using <a class="el" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExtCreateWeldedMeshIndices()</a> first </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numTriangles</td><td>The number of triangles </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">stretchStiffness</td><td>The stiffness coefficient for stretch constraints </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">bendStiffness</td><td>The stiffness coefficient used for bending constraints </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tetherStiffness</td><td>If &gt; 0.0f then the function will create tethers attached to particles with zero inverse mass. These are unilateral, long-range attachments, which can greatly reduce stretching even at low iteration counts. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">tetherGive</td><td>Because tether constraints are so effective at reducing stiffness, it can be useful to allow a small amount of extension before the constraint activates. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">pressure</td><td>If &gt; 0.0f then a volume (pressure) constraint will also be added to the asset, the rest volume and stiffness will be automatically computed by this function </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to an asset structure holding the particles and constraints </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="addad82b3598059ffde7b3b5babe17bd4"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* NvFlexExtCreateTearingClothFromMesh </td>
+ <td>(</td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>particles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numParticles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>maxParticles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numTriangles</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>stretchStiffness</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>bendStiffness</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>pressure</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Create a cloth asset consisting of stretch and bend distance constraints given an indexed triangle mesh. This creates an asset with the same structure as <a class="el" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExtCreateClothFromMesh()</a>, however tether constraints are not supported, and additional information regarding mesh topology will be stored with the asset to allow tearing.</p>
+<dl class="section note"><dt>Note</dt><dd>: Typically each instance of a tearable cloth mesh will have it's own asset. This is because the asset holds the topology of the mesh which is unique for each instance.</dd></dl>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">particles</td><td>Positions and masses of the particles in the format [x, y, z, 1/m] </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numParticles</td><td>The number of particles </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxParticles</td><td>The maximum number of particles for this asset, this will limit the amount of tearing that can be performed. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>The triangle indices, these should be 'welded' using <a class="el" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExtCreateWeldedMeshIndices()</a> first </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numTriangles</td><td>The number of triangles </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">stretchStiffness</td><td>The stiffness coefficient for stretch constraints </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">bendStiffness</td><td>The stiffness coefficient used for bending constraints </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">pressure</td><td>If &gt; 0.0f then a volume (pressure) constraint will also be added to the asset, the rest volume and stiffness will be automatically computed by this function </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to an asset structure holding the particles and constraints </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a88054283907d3386f1a30cdc4475acb0"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtDestroyTearingCloth </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *&#160;</td>
+ <td class="paramname"><em>asset</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Destroy an asset created with <a class="el" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExtCreateTearingClothFromMesh()</a> </p><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">asset</td><td>The asset to be destroyed. </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a5efc0113d5432eb959437e6e3a98cc5f"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtTearClothMesh </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *&#160;</td>
+ <td class="paramname"><em>asset</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>maxStrain</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>maxSplits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a> *&#160;</td>
+ <td class="paramname"><em>particleCopies</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>numParticleCopies</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>maxCopies</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a> *&#160;</td>
+ <td class="paramname"><em>triangleEdits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>numTriangleEdits</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>maxEdits</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Perform cloth mesh tearing, this function will calculate the strain on each distance constraint and perform splits if it is above a certain strain threshold (i.e.: length/restLength &gt; maxStrain).</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">asset</td><td>The asset describing the cloth constraint network, this must be created with <a class="el" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExtCreateTearingClothFromMesh()</a> </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxStrain</td><td>The maximum allowable strain on each edge </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxSplits</td><td>The maximum number of constraint breaks that will be performed, this controls the 'rate' of mesh tearing </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">particleCopies</td><td>Pointer to an array of <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a> structures that describe the particle copies that need to be performed </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numParticleCopies</td><td>Pointer to an integer that will have the number of copies performed written to it </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxCopies</td><td>The maximum number of particle copies that will be performed, multiple particles copies may be performed in response to one split </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">triangleEdits</td><td>Pointer to an array of <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a> structures that describe the topology updates that need to be performed </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numTriangleEdits</td><td>Pointer to an integer that will have the number of topology updates written to it </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxEdits</td><td>The maximum number of index buffer edits that will be output </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad0a9c7e2f907e46b60f6bacf402987ce"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* NvFlexExtCreateRigidFromMesh </td>
+ <td>(</td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>vertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numVertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numTriangleIndices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>radius</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>expand</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Create a shape body asset from a closed triangle mesh. The mesh is first voxelized at a spacing specified by the radius, and particles are placed at occupied voxels.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vertices</td><td>Vertices of the triangle mesh </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numVertices</td><td>The number of vertices </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>The triangle indices </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numTriangleIndices</td><td>The number of triangles indices (triangles*3) </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">radius</td><td>The spacing used for voxelization, note that the number of voxels grows proportional to the inverse cube of radius, currently this method limits construction to resolutions &lt; 64^3 </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">expand</td><td>Particles will be moved inwards (if negative) or outwards (if positive) from the surface of the mesh according to this factor </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to an asset structure holding the particles and constraints </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a9f2c0daf521df4920e44cca1cb30b42c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* NvFlexExtCreateSoftFromMesh </td>
+ <td>(</td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>vertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numVertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int *&#160;</td>
+ <td class="paramname"><em>indices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numTriangleIndices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>particleSpacing</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>volumeSampling</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>surfaceSampling</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>clusterSpacing</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>clusterRadius</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>clusterStiffness</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>linkRadius</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>linkStiffness</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>globalStiffness</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Create a shape body asset from a closed triangle mesh. The mesh is first voxelized at a spacing specified by the radius, and particles are placed at occupied voxels.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vertices</td><td>Vertices of the triangle mesh </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numVertices</td><td>The number of vertices </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>The triangle indices </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numTriangleIndices</td><td>The number of triangles indices (triangles*3) </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">particleSpacing</td><td>The spacing to use when creating particles </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">volumeSampling</td><td>Control the resolution the mesh is voxelized at in order to generate interior sampling, if the mesh is not closed then this should be set to zero and surface sampling should be used instead </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">surfaceSampling</td><td>Controls how many samples are taken of the mesh surface, this is useful to ensure fine features of the mesh are represented by particles, or if the mesh is not closed </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">clusterSpacing</td><td>The spacing for shape-matching clusters, should be at least the particle spacing </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">clusterRadius</td><td>Controls the overall size of the clusters, this controls how much overlap the clusters have which affects how smooth the final deformation is, if parts of the body are detaching then it means the clusters are not overlapping sufficiently to form a fully connected set of clusters </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">clusterStiffness</td><td>Controls the stiffness of the resulting clusters </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">linkRadius</td><td>Any particles below this distance will have additional distance constraints created between them </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">linkStiffness</td><td>The stiffness of distance links </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">globalStiffness</td><td>If this parameter is &gt; 0.0f, adds an additional global cluster that consists of all particles in the shape. The stiffness of this cluster is the globalStiffness. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to an asset structure holding the particles and constraints </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a36c33fafe13c5fd5773bf9a2af2dd745"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtDestroyAsset </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *&#160;</td>
+ <td class="paramname"><em>asset</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Frees all memory associated with an asset created by one of the creation methods param[in] asset The asset to destroy. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6e3f12e9e92abb31b115cf31b33e34bb"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtCreateSoftMeshSkinning </td>
+ <td>(</td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>vertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numVertices</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>bones</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numBones</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>falloff</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>maxDistance</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>skinningWeights</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>skinningIndices</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Creates information for linear blend skining a graphics mesh to a set of transforms (bones)</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">vertices</td><td>Vertices of the triangle mesh </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numVertices</td><td>The number of vertices </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">bones</td><td>Pointer to an array of vec3 positions representing the bone positions </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numBones</td><td>Then number of bones </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">falloff</td><td>The speed at which the bone's influence on a vertex falls off with distance </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxDistance</td><td>The maximum distance a bone can be from a vertex before it will not influence it any more </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">skinningWeights</td><td>The normalized weights for each bone, there are up to 4 weights per-vertex so this should be numVertices*4 in length </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">skinningIndices</td><td>The indices of each bone corresponding to the skinning weight, will be -1 if this weight is not used </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a49906c9e3466d40383cddf627fe26658"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* NvFlexExtCreateContainer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>lib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>maxParticles</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Creates a wrapper object around a Flex solver that can hold assets / instances, the container manages sending and retrieving partical data from the solver</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">lib</td><td>The library instance to use </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>The solver to wrap </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxParticles</td><td>The maximum number of particles to manage </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to the new container </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a2509137d9fb8ab6818f35ab7761da7a5"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtDestroyContainer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Frees all memory associated with a container</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to destroy </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7c036ccca83df3659529858068e0593d"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API int NvFlexExtAllocParticles </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>indices</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Allocates particles in the container.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to allocate out of </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to allocate </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>An n-length array of ints that will store the indices to the allocated particles </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab0a259d159116b7fba9b229784b02c70"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtFreeParticles </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>n</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const int *&#160;</td>
+ <td class="paramname"><em>indices</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Free allocated particles</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to free from </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>The number of particles to free </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">indices</td><td>The indices of the particles to free </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a7fc268a27306f6fc68dd1c106cfa62db"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API int NvFlexExtGetActiveList </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>indices</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Retrives the indices of all active particles</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to free from </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>Returns the number of active particles </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The number of active particles </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a3fa8bd4b7d4096602e611faf0bb62dfb"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a> NvFlexExtMapParticleData </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Returns pointers to the internal data stored by the container. These are host-memory pointers, and will remain valid <a class="el" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExtUnmapParticleData()</a> is called.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">container</td><td>The container whose data should be accessed </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="af0cd639c21be28640fe5e1dd94931d59"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtUnmapParticleData </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1646bf409084777cd0ff5d4fcccf07de"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a> NvFlexExtMapTriangleData </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Access triangle constraint data, see NvFlexExtGetParticleData() for notes on ownership.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">container</td><td>The container to retrive from </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a89e582ae93e0256b06f22d9abf361783"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtUnmapTriangleData </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Unmap triangle data, see <a class="el" href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExtMapTriangleData()</a> </p>
+
+</div>
+</div>
+<a class="anchor" id="a90f2d3ba5be20e70e7efead911ee7acc"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a> NvFlexExtMapShapeData </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Access shape body constraint data, see NvFlexExtGetParticleData() for notes on ownership.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramname">container</td><td>The container to retrive from </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab51f04114586b5bf0f6fc5816fda9c69"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtUnmapShapeData </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Unmap shape transform data, see <a class="el" href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExtMapShapeData()</a> </p>
+
+</div>
+</div>
+<a class="anchor" id="a3bf10e2c9370602142b7be01e920f973"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a>* NvFlexExtCreateInstance </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a> *&#160;</td>
+ <td class="paramname"><em>particleData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *&#160;</td>
+ <td class="paramname"><em>asset</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const float *&#160;</td>
+ <td class="paramname"><em>transform</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>vx</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>vy</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>vz</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>phase</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>invMassScale</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Creates an instance of an asset, the container will internally store a reference to the asset so it should remain valid for the instance lifetime. This method will allocate particles for the asset, assign their initial positions, velocity and phase.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to spawn into </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">particleData</td><td>Pointer to a mapped particle data struct, returned from <a class="el" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExtMapParticleData()</a> </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">asset</td><td>The asset to be spawned </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">transform</td><td>A pointer to a 4x4 column major, column vector transform that specifies the initial world space configuration of the particles </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">vx</td><td>The velocity of the particles along the x axis </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">vy</td><td>The velocity of the particles along the y axis </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">vz</td><td>The velocity of the particles along the z axis </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">phase</td><td>The phase used for the particles </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">invMassScale</td><td>A factor applied to the per particle inverse mass </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to the instance of the asset </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="a2b5634f64bd0d8d86f894885a1c16a33"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtDestroyInstance </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a> *&#160;</td>
+ <td class="paramname"><em>instance</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Destoy an instance of an asset</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container the instance belongs to </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>The instance to destroy </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ad9343d07f49098ee205a1ed48dc9db34"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtNotifyAssetChanged </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a> *&#160;</td>
+ <td class="paramname"><em>asset</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Notifies the container that asset data has changed and needs to be sent to the GPU this should be called if the constrains for an existing asset are modified by the user</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container the instance referencing the asset belongs to </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">asset</td><td>The asset which was modified (can be NULL) </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ab4caadf5a6b19674849bfce91d986e7b"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtTickContainer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>dt</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numSubsteps</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">bool&#160;</td>
+ <td class="paramname"><em>enableTimers</em> = <code>false</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Updates the container, applies force fields, steps the solver forward in time, updates the host with the results synchronously. This is a helper function which performs a synchronous update using the following flow.</p>
+<div class="fragment"><div class="line"><span class="comment">// async update GPU data</span></div>
+<div class="line"><a class="code" href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExtPushToDevice</a>(container);</div>
+<div class="line"></div>
+<div class="line"><span class="comment">// update solver</span></div>
+<div class="line"><a class="code" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver</a>(container, dt, iterations);</div>
+<div class="line"></div>
+<div class="line"><span class="comment">// async read data back to CPU</span></div>
+<div class="line"><a class="code" href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExtPullFromDevice</a>(container);</div>
+<div class="line"></div>
+<div class="line"><span class="comment">// read / write particle data on CPU</span></div>
+<div class="line"><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a> data = <a class="code" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExtMapParticleData</a>();</div>
+<div class="line"></div>
+<div class="line"><span class="comment">// CPU particle processing</span></div>
+<div class="line">ProcessParticles(data);</div>
+<div class="line"></div>
+<div class="line"><span class="comment">// unmap data</span></div>
+<div class="line"><a class="code" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExtUnmapParticleData</a>();</div>
+</div><!-- fragment --> <dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to update </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">dt</td><td>The time-step in seconds </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numSubsteps</td><td>The number of substeps to perform </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">enableTimers</td><td>Whether to record detailed timers, see <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlexUpdateSolver()</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a425f4e472bb83797498c904ab228209c"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtPushToDevice </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Updates the device asynchronously, transfers any particle and constraint changes to the flex solver, expected to be called in the following sequence: NvFlexExtPushToDevice, NvFlexUpdateSolver, NvFlexExtPullFromDevice, flexSynchronize </p><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to update </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a89ea7bbd26bec46f1b82d84257de1f58"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtPullFromDevice </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Updates the host asynchronously, transfers particle and constraint data back to he host, expected to be called in the following sequence: NvFlexExtPushToDevice, NvFlexUpdateSolver, NvFlexExtPullFromDevice </p><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The container to update </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a4695d37db8b61495f200bfd88a2be628"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtUpdateInstances </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> *&#160;</td>
+ <td class="paramname"><em>container</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Synchronizes the per-instance data with the container's data, should be called after the synchronization with the solver read backs are complete</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">container</td><td>The instances belonging to this container will be updated </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="ac1ed9ff49120d0691352399c8173bdcf"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a>* NvFlexExtCreateForceFieldCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a> *&#160;</td>
+ <td class="paramname"><em>solver</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Create a NvFlexExtForceFieldCallback structure, each callback is associated with the passed in solver once the <a class="el" href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExtSetForceFields()</a> is called.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">solver</td><td>A valid solver created with <a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlexCreateSolver()</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A pointer to a callback structure </dd></dl>
+
+</div>
+</div>
+<a class="anchor" id="ad08da77f432ca56bc59647bf73da86cb"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtDestroyForceFieldCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> *&#160;</td>
+ <td class="paramname"><em>callback</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Destroy the force field callback</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A valid solver created with <a class="el" href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExtCreateForceFieldCallback()</a> </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="aa36d43b9e53b9b66d43c2bc5eb5abf98"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">NV_FLEX_API void NvFlexExtSetForceFields </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> *&#160;</td>
+ <td class="paramname"><em>callback</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a> *&#160;</td>
+ <td class="paramname"><em>forceFields</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numForceFields</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Set force fields on the container, these will be applied during the Flex update</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The callback to update </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">forceFields</td><td>A pointer to an array of force field data, may be host or GPU memory </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numForceFields</td><td>The number of force fields to send to the device </td></tr>
+ </table>
+ </dd>
+</dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/_nv_flex_ext_8h_source.html b/doc/_static/api/_nv_flex_ext_8h_source.html
new file mode 100644
index 0000000..d704ded
--- /dev/null
+++ b/doc/_static/api/_nv_flex_ext_8h_source.html
@@ -0,0 +1,625 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: NvFlexExt.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">NvFlexExt.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="_nv_flex_ext_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// This code contains NVIDIA Confidential Information and is disclosed to you</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// under a form of NVIDIA software license agreement provided separately to you.</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Notice</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// NVIDIA Corporation and its licensors retain all intellectual property and</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// proprietary rights in and to this software and related documentation and</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// any modifications thereto. Any use, reproduction, disclosure, or</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// distribution of this software and related documentation without an express</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// license agreement from NVIDIA Corporation is strictly prohibited.</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED &quot;AS IS.&quot;. NVIDIA MAKES</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Information and code furnished is believed to be accurate and reliable.</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// information or for any infringement of patents or other rights of third parties that may</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// result from its use. No license is granted by implication or otherwise under any patent</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// or patent rights of NVIDIA Corporation. Details are subject to change without notice.</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// This code supersedes and replaces all information previously supplied.</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// NVIDIA Corporation products are not authorized for use as critical</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// components in life support devices or systems without express written approval of</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// NVIDIA Corporation.</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">//</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// Copyright (c) 2013-2017 NVIDIA Corporation. All rights reserved.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#ifndef NV_FLEX_EXT_H</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#define NV_FLEX_EXT_H</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_nv_flex_8h.html">NvFlex.h</a>&quot;</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;cassert&gt;</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">// A vector type that wraps a NvFlexBuffer, behaves like a standard vector for POD types (no construction)</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// The vector must be mapped using map() before any read/write access to elements or resize operation</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html"> 45</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_nv_flex_vector.html">NvFlexVector</a></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a9d7ff86aeebc0fcfa5c125d7872e2e3b"> 47</a></span>&#160; <a class="code" href="struct_nv_flex_vector.html#a9d7ff86aeebc0fcfa5c125d7872e2e3b">NvFlexVector</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* l, <span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>=0) : <a class="code" href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c">lib</a>(l), <a class="code" href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb">buffer</a>(NULL), <a class="code" href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9">mappedPtr</a>(NULL), <a class="code" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>(0), <a class="code" href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae">capacity</a>(0)</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>)</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a>(<a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>);</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="comment">// resize implicitly maps, unmap initial allocation</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <a class="code" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a>();</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; } </div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; </div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a026d8fcd71bb256610401cc861345428"> 58</a></span>&#160; <a class="code" href="struct_nv_flex_vector.html#a026d8fcd71bb256610401cc861345428">NvFlexVector</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* l, <span class="keyword">const</span> T* ptr, <span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>) : <a class="code" href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c">lib</a>(l), <a class="code" href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb">buffer</a>(NULL), <a class="code" href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9">mappedPtr</a>(NULL), <a class="code" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>(0), <a class="code" href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae">capacity</a>(0)</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="struct_nv_flex_vector.html#acd29b9b2b27e53e3640c24da6959e3cd">assign</a>(ptr, size);</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a>();</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; </div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#afb9c0f47544c0cdebe21efb6908dd3a0"> 65</a></span>&#160; <a class="code" href="struct_nv_flex_vector.html#afb9c0f47544c0cdebe21efb6908dd3a0">~NvFlexVector</a>() </div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9">destroy</a>();</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c"> 70</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* <a class="code" href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c">lib</a>;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb"> 71</a></span>&#160; <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* <a class="code" href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb">buffer</a>;</div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9"> 73</a></span>&#160; T* <a class="code" href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9">mappedPtr</a>;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124"> 74</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>;</div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae"> 75</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae">capacity</a>;</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="comment">// reinitialize the vector leaving it unmapped</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a0309d584abbe900d3af3823a79e89ee7"> 78</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a0309d584abbe900d3af3823a79e89ee7">init</a>(<span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>)</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9">destroy</a>();</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a>(size);</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a>();</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9"> 85</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9">destroy</a>()</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; { </div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span> (mappedPtr)</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(buffer);</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">if</span> (buffer)</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(buffer);</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; mappedPtr = NULL;</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; buffer = NULL;</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; capacity = 0; </div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; count = 0;</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a56640fd10b06a4024a4bf01c306c436b"> 99</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a56640fd10b06a4024a4bf01c306c436b">map</a>(<span class="keywordtype">int</span> flags=<a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>)</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">if</span> (!buffer)</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; assert(!mappedPtr);</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; mappedPtr = (T*)<a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(buffer, flags);</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; </div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0"> 108</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a>()</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">if</span> (!buffer)</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; assert(mappedPtr);</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a>(buffer);</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; mappedPtr = 0;</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a3871fbd5422c9b3f41bd5dc2046e1aa7"> 119</a></span>&#160; <span class="keyword">const</span> T&amp; <a class="code" href="struct_nv_flex_vector.html#a3871fbd5422c9b3f41bd5dc2046e1aa7">operator[]</a>(<span class="keywordtype">int</span> index)<span class="keyword"> const</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keyword"> </span>{ </div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; assert(mappedPtr);</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; assert(index &lt; count);</div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">return</span> mappedPtr[index];</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
+<div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a769d5ad0723a3fceac7951967e8b4d03"> 127</a></span>&#160; T&amp; <a class="code" href="struct_nv_flex_vector.html#a769d5ad0723a3fceac7951967e8b4d03">operator[]</a>(<span class="keywordtype">int</span> index)</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; assert(mappedPtr);</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; assert(index &lt; count);</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> mappedPtr[index];</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
+<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a98584303358b70fd12ead231cd750335"> 135</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a98584303358b70fd12ead231cd750335">push_back</a>(<span class="keyword">const</span> T&amp; t)</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; assert(mappedPtr || !buffer);</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8">reserve</a>(count+1);</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="comment">// copy element</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; mappedPtr[count++] = t; </div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#acd29b9b2b27e53e3640c24da6959e3cd"> 145</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#acd29b9b2b27e53e3640c24da6959e3cd">assign</a>(<span class="keyword">const</span> T* srcPtr, <span class="keywordtype">int</span> newCount)</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; assert(mappedPtr || !buffer);</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a>(newCount);</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; memcpy(mappedPtr, srcPtr, newCount*<span class="keyword">sizeof</span>(T));</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a225da2c753ca0bb95b570c303f0cd761"> 154</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a225da2c753ca0bb95b570c303f0cd761">copyto</a>(T* dest, <span class="keywordtype">int</span> count) </div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; assert(mappedPtr);</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; memcpy(dest, mappedPtr, <span class="keyword">sizeof</span>(T)*count);</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div>
+<div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0"> 161</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>; }</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
+<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a73f78b1efc76c96666a96a79064670c5"> 163</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="struct_nv_flex_vector.html#a73f78b1efc76c96666a96a79064670c5">empty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>() == 0; }</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div>
+<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a37fbf38300ea57635af4b60c934e9f46"> 165</a></span>&#160; <span class="keyword">const</span> T&amp; <a class="code" href="struct_nv_flex_vector.html#a37fbf38300ea57635af4b60c934e9f46">back</a>()<span class="keyword"> const</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="keyword"> </span>{</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; assert(mappedPtr);</div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; assert(!<a class="code" href="struct_nv_flex_vector.html#a73f78b1efc76c96666a96a79064670c5">empty</a>());</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">return</span> mappedPtr[count-1];</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div>
+<div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8"> 173</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8">reserve</a>(<span class="keywordtype">int</span> minCapacity)</div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">if</span> (minCapacity &gt; capacity)</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="comment">// growth factor of 1.5</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> newCapacity = minCapacity*3/2;</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* newBuf = <a class="code" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a>(lib, newCapacity, <span class="keyword">sizeof</span>(T), <a class="code" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a>);</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">// copy contents to new buffer </span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordtype">void</span>* newPtr = <a class="code" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a>(newBuf, <a class="code" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>);</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; memcpy(newPtr, mappedPtr, count*<span class="keyword">sizeof</span>(T));</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="comment">// unmap old buffer, but leave new buffer mapped</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <a class="code" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a>();</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; </div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (buffer)</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a>(buffer);</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">// swap</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; buffer = newBuf;</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; mappedPtr = (T*)newPtr;</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; capacity = newCapacity; </div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div>
+<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; }</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="comment">// resizes mapped buffer and leaves new buffer mapped </span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1"> 200</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a>(<span class="keywordtype">int</span> newCount)</div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; {</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; assert(mappedPtr || !buffer);</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8">reserve</a>(newCount); </div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// resize but do not initialize new entries</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; count = newCount;</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div>
+<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="struct_nv_flex_vector.html#a36a3fd5e42c5d8005f72bcc43217cf37"> 210</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="struct_nv_flex_vector.html#a36a3fd5e42c5d8005f72bcc43217cf37">resize</a>(<span class="keywordtype">int</span> newCount, <span class="keyword">const</span> T&amp; val)</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; assert(mappedPtr || !buffer);</div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> startInit = <a class="code" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>;</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> endInit = newCount;</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="code" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a>(newCount);</div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// init any new entries</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=startInit; i &lt; endInit; ++i)</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; mappedPtr[i] = val;</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;};</div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div>
+<div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 230</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a></div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;{</div>
+<div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a7d35ea2def3a05a5f85a5cdfd5abdc56"> 232</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a7d35ea2def3a05a5f85a5cdfd5abdc56">position</a>[3];</div>
+<div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ad1af111e19f7ca92fd913c25c4d9288b"> 233</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#ad1af111e19f7ca92fd913c25c4d9288b">rotation</a>[4];</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div>
+<div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#acc246770a0f65f1e50b43c618955dc84"> 235</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#acc246770a0f65f1e50b43c618955dc84">velocity</a>[3];</div>
+<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a95fbd8d303fe90992b95b63a29eb5344"> 236</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a95fbd8d303fe90992b95b63a29eb5344">omega</a>[3];</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div>
+<div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a0705c9d2b5960057b37f097083d96f33"> 238</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a0705c9d2b5960057b37f097083d96f33">acceleration</a>[3];</div>
+<div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aab0ea63bac05cd6aee5054d369687fb0"> 239</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#aab0ea63bac05cd6aee5054d369687fb0">tau</a>[3];</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div>
+<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ae03f4690a66ba4e06e4b2519c688aaba"> 241</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#ae03f4690a66ba4e06e4b2519c688aaba">delta</a>[4][4];</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;};</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExtMovingFrameInit</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a>* frame, <span class="keyword">const</span> <span class="keywordtype">float</span>* worldTranslation, <span class="keyword">const</span> <span class="keywordtype">float</span>* worldRotation);</div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="comment">/* Update a frame to a new position, this will automatically update the velocity and acceleration of</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="comment"> * the frame, which can then be used to calculate inertial forces. This should be called once per-frame</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="comment"> * with the new position and time-step used when moving the frame.</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="comment"> * @param[in] frame A pointer to a user-allocated NvFlexExtMovingFrame struct</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="comment"> * @param[in] worldTranslation A pointer to a vec3 storing the frame&#39;s initial translation in world space</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="comment"> * @param[in] worldRotation A pointer to a quaternion storing the frame&#39;s initial rotation in world space</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="comment"> * @param[in] dt The time that elapsed since the last call to the frame update</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExtMovingFrameUpdate</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a>* frame, <span class="keyword">const</span> <span class="keywordtype">float</span>* worldTranslation, <span class="keyword">const</span> <span class="keywordtype">float</span>* worldRotation, <span class="keywordtype">float</span> dt);</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="comment">/* Teleport particles to the frame&#39;s new position and apply the inertial forces</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="comment"> * @param[in] frame A pointer to a user-allocated NvFlexExtMovingFrame struct</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="comment"> * @param[in] positions A pointer to an array of particle positions in (x, y, z, 1/m) format</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="comment"> * @param[in] velocities A pointer to an array of particle velocities in (vx, vy, vz) format</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="comment"> * @param[in] numParticles The number of particles to update</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="comment"> * @param[in] linearScale How strongly the translational inertial forces should be applied, 0.0 corresponds to a purely local space simulation removing all inertial forces, 1.0 corresponds to no inertial damping and has no benefit over regular world space simulation</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="comment"> * @param[in] angularScale How strongly the angular inertial forces should be applied, 0.0 corresponds to a purely local space simulation, 1.0 corresponds to no inertial damping</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="comment"> * @param[in] dt The time that elapsed since the last call to the frame update, should match the value passed to NvFlexExtMovingFrameUpdate()</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExtMovingFrameApply</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a>* frame, <span class="keywordtype">float</span>* positions, <span class="keywordtype">float</span>* velocities, <span class="keywordtype">int</span> numParticles, <span class="keywordtype">float</span> linearScale, <span class="keywordtype">float</span> angularScale, <span class="keywordtype">float</span> dt);</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div>
+<div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 310</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;{ </div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="comment">// particles</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a0ac3c8cc1bb87eaa50690f44e56a74da"> 313</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a0ac3c8cc1bb87eaa50690f44e56a74da">particles</a>; </div>
+<div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a4eceb2845977219379afdd06397a6706"> 314</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a4eceb2845977219379afdd06397a6706">numParticles</a>; </div>
+<div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ab421c4d72574f468af6827c18c36a387"> 315</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#ab421c4d72574f468af6827c18c36a387">maxParticles</a>; </div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// springs</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a8b7a9bd9cbd2f33c6b3da02687a6bd9d"> 318</a></span>&#160; <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a8b7a9bd9cbd2f33c6b3da02687a6bd9d">springIndices</a>; </div>
+<div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a1e8252d5e5f66b3d8920c1371f23cc05"> 319</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a1e8252d5e5f66b3d8920c1371f23cc05">springCoefficients</a>; </div>
+<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a9020959583f85486e060a7b5e611476d"> 320</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a9020959583f85486e060a7b5e611476d">springRestLengths</a>; </div>
+<div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ae5f81891f59382b133319dc3bcea8ba0"> 321</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#ae5f81891f59382b133319dc3bcea8ba0">numSprings</a>; </div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="comment">// shapes</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a8a4a122a0a95b8262fc4673298a5cb1c"> 324</a></span>&#160; <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a8a4a122a0a95b8262fc4673298a5cb1c">shapeIndices</a>; </div>
+<div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a4810f46c27fd0cfacfb1f4be9dff0479"> 325</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a4810f46c27fd0cfacfb1f4be9dff0479">numShapeIndices</a>; </div>
+<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a96b73b81c5db272d950efe3f03a8cef8"> 326</a></span>&#160; <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a96b73b81c5db272d950efe3f03a8cef8">shapeOffsets</a>; </div>
+<div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a0fd9407aad5001d3a9fe90e989da1aad"> 327</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a0fd9407aad5001d3a9fe90e989da1aad">shapeCoefficients</a>; </div>
+<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a24866c3fe2c482073325062c9c80d043"> 328</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a24866c3fe2c482073325062c9c80d043">shapeCenters</a>; </div>
+<div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#afc07cf2edbf4d5bf504890b312a98bd7"> 329</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#afc07cf2edbf4d5bf504890b312a98bd7">numShapes</a>; </div>
+<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">// faces for cloth</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aeee311155e99ce95c506078964a7dc3c"> 332</a></span>&#160; <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#aeee311155e99ce95c506078964a7dc3c">triangleIndices</a>; </div>
+<div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ad858d4df98a4300668f2b8048881c0d5"> 333</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#ad858d4df98a4300668f2b8048881c0d5">numTriangles</a>; </div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="comment">// inflatable params</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a960073478e49b229d1d19ac64c5b23f7"> 336</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="_nv_flex_ext_8h.html#a960073478e49b229d1d19ac64c5b23f7">inflatable</a>; </div>
+<div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a3fc55581814cbab90a0c4167428893df"> 337</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a3fc55581814cbab90a0c4167428893df">inflatableVolume</a>; </div>
+<div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ab556b9c29acfda73e14c68edc43be7e3"> 338</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#ab556b9c29acfda73e14c68edc43be7e3">inflatablePressure</a>; </div>
+<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ad4d5551b97bd31b9e1ca5c57f2c82452"> 339</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#ad4d5551b97bd31b9e1ca5c57f2c82452">inflatableStiffness</a>; </div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;};</div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div>
+<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 345</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a></div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;{</div>
+<div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a1a0c7a0c03148b1586c4fb48f14a565f"> 347</a></span>&#160; <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a1a0c7a0c03148b1586c4fb48f14a565f">particleIndices</a>; </div>
+<div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aca9a5ecc1fd26fedf90f8f17e87e3ca8"> 348</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#aca9a5ecc1fd26fedf90f8f17e87e3ca8">numParticles</a>; </div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; </div>
+<div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a3288fee0b909e9e768d9abc9b8da74cf"> 350</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a3288fee0b909e9e768d9abc9b8da74cf">triangleIndex</a>; </div>
+<div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aa67489d3beb86e2b566e0fa2e978ed11"> 351</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#aa67489d3beb86e2b566e0fa2e978ed11">shapeIndex</a>; </div>
+<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ac2ef832cadd91e257ba80eb97d936340"> 352</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#ac2ef832cadd91e257ba80eb97d936340">inflatableIndex</a>; </div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div>
+<div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aa6fb48cb1199af96a29de7616f7a4d18"> 354</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#aa6fb48cb1199af96a29de7616f7a4d18">shapeTranslations</a>; </div>
+<div class="line"><a name="l00355"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a3d0a712689ce07a5652d48ea25fa05b9"> 355</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a3d0a712689ce07a5652d48ea25fa05b9">shapeRotations</a>; </div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div>
+<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#aa4f19c17fa4ae35ceda90c8b3d1fcca4"> 357</a></span>&#160; <span class="keyword">const</span> <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* <a class="code" href="_nv_flex_ext_8h.html#aa4f19c17fa4ae35ceda90c8b3d1fcca4">asset</a>; </div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; </div>
+<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a8000e722ce864bbfbce0f303f39186d7"> 359</a></span>&#160; <span class="keywordtype">void</span>* <a class="code" href="_nv_flex_ext_8h.html#a8000e722ce864bbfbce0f303f39186d7">userData</a>; </div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;};</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div>
+<div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4"> 365</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a> <a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>;</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;</div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExtCreateWeldedMeshIndices</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* vertices, <span class="keywordtype">int</span> numVertices, <span class="keywordtype">int</span>* uniqueVerts, <span class="keywordtype">int</span>* originalToUniqueMap, <span class="keywordtype">float</span> threshold);</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* <a class="code" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExtCreateClothFromMesh</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* particles, <span class="keywordtype">int</span> numParticles, <span class="keyword">const</span> <span class="keywordtype">int</span>* indices, <span class="keywordtype">int</span> numTriangles, <span class="keywordtype">float</span> stretchStiffness, <span class="keywordtype">float</span> bendStiffness, <span class="keywordtype">float</span> tetherStiffness, <span class="keywordtype">float</span> tetherGive, <span class="keywordtype">float</span> pressure);</div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* <a class="code" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExtCreateTearingClothFromMesh</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* particles, <span class="keywordtype">int</span> numParticles, <span class="keywordtype">int</span> maxParticles, <span class="keyword">const</span> <span class="keywordtype">int</span>* indices, <span class="keywordtype">int</span> numTriangles, <span class="keywordtype">float</span> stretchStiffness, <span class="keywordtype">float</span> bendStiffness, <span class="keywordtype">float</span> pressure);</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a88054283907d3386f1a30cdc4475acb0">NvFlexExtDestroyTearingCloth</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* asset);</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div>
+<div class="line"><a name="l00428"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 428</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a></div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;{</div>
+<div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a431c97a2756c45752dd7508f0810a397"> 430</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a431c97a2756c45752dd7508f0810a397">srcIndex</a>; </div>
+<div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a9034efff0f1b158a12a9ed6991d620fa"> 431</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a9034efff0f1b158a12a9ed6991d620fa">destIndex</a>;</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;};</div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;</div>
+<div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 441</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a></div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;{</div>
+<div class="line"><a name="l00443"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a46b80c02097ebc40bf777708e8f17ed4"> 443</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a46b80c02097ebc40bf777708e8f17ed4">triIndex</a>; <span class="comment">// index into the triangle indices array to update</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a8cf124de0fc370757cb890f83984ced8"> 444</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a8cf124de0fc370757cb890f83984ced8">newParticleIndex</a>; <span class="comment">// new value for the index</span></div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;};</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a5efc0113d5432eb959437e6e3a98cc5f">NvFlexExtTearClothMesh</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* asset, <span class="keywordtype">float</span> maxStrain, <span class="keywordtype">int</span> maxSplits, <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a>* particleCopies, <span class="keywordtype">int</span>* numParticleCopies, <span class="keywordtype">int</span> maxCopies, <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a>* triangleEdits, <span class="keywordtype">int</span>* numTriangleEdits, <span class="keywordtype">int</span> maxEdits);</div>
+<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* <a class="code" href="_nv_flex_ext_8h.html#ad0a9c7e2f907e46b60f6bacf402987ce">NvFlexExtCreateRigidFromMesh</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* vertices, <span class="keywordtype">int</span> numVertices, <span class="keyword">const</span> <span class="keywordtype">int</span>* indices, <span class="keywordtype">int</span> numTriangleIndices, <span class="keywordtype">float</span> radius, <span class="keywordtype">float</span> expand);</div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* <a class="code" href="_nv_flex_ext_8h.html#a9f2c0daf521df4920e44cca1cb30b42c">NvFlexExtCreateSoftFromMesh</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* vertices, <span class="keywordtype">int</span> numVertices, <span class="keyword">const</span> <span class="keywordtype">int</span>* indices, <span class="keywordtype">int</span> numTriangleIndices, <span class="keywordtype">float</span> particleSpacing, <span class="keywordtype">float</span> volumeSampling, <span class="keywordtype">float</span> surfaceSampling, <span class="keywordtype">float</span> clusterSpacing, <span class="keywordtype">float</span> clusterRadius, <span class="keywordtype">float</span> clusterStiffness, <span class="keywordtype">float</span> linkRadius, <span class="keywordtype">float</span> linkStiffness, <span class="keywordtype">float</span> globalStiffness);</div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a36c33fafe13c5fd5773bf9a2af2dd745">NvFlexExtDestroyAsset</a>(<a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* asset);</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a6e3f12e9e92abb31b115cf31b33e34bb">NvFlexExtCreateSoftMeshSkinning</a>(<span class="keyword">const</span> <span class="keywordtype">float</span>* vertices, <span class="keywordtype">int</span> numVertices, <span class="keyword">const</span> <span class="keywordtype">float</span>* bones, <span class="keywordtype">int</span> numBones, <span class="keywordtype">float</span> falloff, <span class="keywordtype">float</span> maxDistance, <span class="keywordtype">float</span>* skinningWeights, <span class="keywordtype">int</span>* skinningIndices);</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;</div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* <a class="code" href="_nv_flex_ext_8h.html#a49906c9e3466d40383cddf627fe26658">NvFlexExtCreateContainer</a>(<a class="code" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* lib, <a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver, <span class="keywordtype">int</span> maxParticles);</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a2509137d9fb8ab6818f35ab7761da7a5">NvFlexExtDestroyContainer</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a7c036ccca83df3659529858068e0593d">NvFlexExtAllocParticles</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span>* indices);</div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#ab0a259d159116b7fba9b229784b02c70">NvFlexExtFreeParticles</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keywordtype">int</span> n, <span class="keyword">const</span> <span class="keywordtype">int</span>* indices);</div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;</div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;</div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;NV_FLEX_API <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a7fc268a27306f6fc68dd1c106cfa62db">NvFlexExtGetActiveList</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keywordtype">int</span>* indices);</div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div>
+<div class="line"><a name="l00562"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 562</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a></div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;{</div>
+<div class="line"><a name="l00564"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a780c0bac62cc5dd8d04da11cff07eeba"> 564</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a780c0bac62cc5dd8d04da11cff07eeba">particles</a>; </div>
+<div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a69962fe23c7fef594fb5f36a175ff148"> 565</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a69962fe23c7fef594fb5f36a175ff148">restParticles</a>; </div>
+<div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#adbb39b1f8b0705bb3e19d2cb6145640f"> 566</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#adbb39b1f8b0705bb3e19d2cb6145640f">velocities</a>; </div>
+<div class="line"><a name="l00567"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a7fa35a822a4e856fee45b3263e679270"> 567</a></span>&#160; <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a7fa35a822a4e856fee45b3263e679270">phases</a>; </div>
+<div class="line"><a name="l00568"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#afcacbd584e2041855af50eae3f287779"> 568</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#afcacbd584e2041855af50eae3f287779">normals</a>; </div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div>
+<div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#af911b47ddb538a0542f6e2c38a82d701"> 570</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#af911b47ddb538a0542f6e2c38a82d701">lower</a>; </div>
+<div class="line"><a name="l00571"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#ad722c319fe60d8a0933df217ba04b2ac"> 571</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#ad722c319fe60d8a0933df217ba04b2ac">upper</a>; </div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;};</div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;</div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a> <a class="code" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExtMapParticleData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExtUnmapParticleData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;</div>
+<div class="line"><a name="l00583"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 583</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a></div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;{</div>
+<div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a806a707d6b32c41ab561a4893f43ddde"> 585</a></span>&#160; <span class="keywordtype">int</span>* <a class="code" href="_nv_flex_ext_8h.html#a806a707d6b32c41ab561a4893f43ddde">indices</a>; </div>
+<div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a56bf3b1fe603c79b871ead2efb65cc78"> 586</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a56bf3b1fe603c79b871ead2efb65cc78">normals</a>; </div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;};</div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a> <a class="code" href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExtMapTriangleData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;</div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a89e582ae93e0256b06f22d9abf361783">NvFlexExtUnmapTriangleData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div>
+<div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 601</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a></div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;{</div>
+<div class="line"><a name="l00603"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a6517fee9c5e151673ecd5ad91cbf2ae2"> 603</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#a6517fee9c5e151673ecd5ad91cbf2ae2">rotations</a>; </div>
+<div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#acd73f347463a114da73bb1ab5eff00b4"> 604</a></span>&#160; <span class="keywordtype">float</span>* <a class="code" href="_nv_flex_ext_8h.html#acd73f347463a114da73bb1ab5eff00b4">positions</a>; </div>
+<div class="line"><a name="l00605"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a4e845f47484e00a272ad351b4bf28e95"> 605</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="_nv_flex_ext_8h.html#a4e845f47484e00a272ad351b4bf28e95">n</a>; </div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;};</div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;</div>
+<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a> <a class="code" href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExtMapShapeData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;</div>
+<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#ab51f04114586b5bf0f6fc5816fda9c69">NvFlexExtUnmapShapeData</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div>
+<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a>* <a class="code" href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExtCreateInstance</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a>* particleData, <span class="keyword">const</span> <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* asset, <span class="keyword">const</span> <span class="keywordtype">float</span>* transform, <span class="keywordtype">float</span> vx, <span class="keywordtype">float</span> vy, <span class="keywordtype">float</span> vz, <span class="keywordtype">int</span> phase, <span class="keywordtype">float</span> invMassScale);</div>
+<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;</div>
+<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a2b5634f64bd0d8d86f894885a1c16a33">NvFlexExtDestroyInstance</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keyword">const</span> <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a>* instance);</div>
+<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;</div>
+<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#ad9343d07f49098ee205a1ed48dc9db34">NvFlexExtNotifyAssetChanged</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keyword">const</span> <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a>* asset);</div>
+<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;</div>
+<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#ab4caadf5a6b19674849bfce91d986e7b">NvFlexExtTickContainer</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container, <span class="keywordtype">float</span> dt, <span class="keywordtype">int</span> numSubsteps, <span class="keywordtype">bool</span> enableTimers=<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div>
+<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExtPushToDevice</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div>
+<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;</div>
+<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExtPullFromDevice</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div>
+<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;</div>
+<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#a4695d37db8b61495f200bfd88a2be628">NvFlexExtUpdateInstances</a>(<a class="code" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a>* container);</div>
+<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div>
+<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;</div>
+<div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e"> 708</a></span>&#160;<span class="keyword">enum</span> <a class="code" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a></div>
+<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;{</div>
+<div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2"> 711</a></span>&#160; <a class="code" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2">eNvFlexExtModeForce</a> = 0,</div>
+<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div>
+<div class="line"><a name="l00714"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0"> 714</a></span>&#160; <a class="code" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0">eNvFlexExtModeImpulse</a> = 1,</div>
+<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div>
+<div class="line"><a name="l00717"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c"> 717</a></span>&#160; <a class="code" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c">eNvFlexExtModeVelocityChange</a> = 2,</div>
+<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;};</div>
+<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;</div>
+<div class="line"><a name="l00723"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html"> 723</a></span>&#160;<span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a></div>
+<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;{</div>
+<div class="line"><a name="l00725"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a9e6134ffeca22636dcd467fa4dee1ba0"> 725</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a9e6134ffeca22636dcd467fa4dee1ba0">mPosition</a>[3]; </div>
+<div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a7ad225a762dcf91b7155c7229dd08d38"> 726</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a7ad225a762dcf91b7155c7229dd08d38">mRadius</a>; </div>
+<div class="line"><a name="l00727"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a0b9729f9896faba45c861a1e8d15290b"> 727</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="_nv_flex_ext_8h.html#a0b9729f9896faba45c861a1e8d15290b">mStrength</a>; </div>
+<div class="line"><a name="l00728"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a3d7dba5a4d9fce7230bc20a8bb567951"> 728</a></span>&#160; <a class="code" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a> <a class="code" href="_nv_flex_ext_8h.html#a3d7dba5a4d9fce7230bc20a8bb567951">mMode</a>; </div>
+<div class="line"><a name="l00729"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a785f5a041fb93cf460cde7153f87fa02"> 729</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="_nv_flex_ext_8h.html#a785f5a041fb93cf460cde7153f87fa02">mLinearFalloff</a>; </div>
+<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;};</div>
+<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;</div>
+<div class="line"><a name="l00736"></a><span class="lineno"><a class="line" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f"> 736</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a> <a class="code" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a>;</div>
+<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;</div>
+<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;NV_FLEX_API <a class="code" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a>* <a class="code" href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExtCreateForceFieldCallback</a>(<a class="code" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a>* solver);</div>
+<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div>
+<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#ad08da77f432ca56bc59647bf73da86cb">NvFlexExtDestroyForceFieldCallback</a>(<a class="code" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a>* callback);</div>
+<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;</div>
+<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;NV_FLEX_API <span class="keywordtype">void</span> <a class="code" href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExtSetForceFields</a>(<a class="code" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a>* callback, <span class="keyword">const</span> <a class="code" href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a>* forceFields, <span class="keywordtype">int</span> numForceFields);</div>
+<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;</div>
+<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;</div>
+<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;</div>
+<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;} <span class="comment">// extern &quot;C&quot;</span></div>
+<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;</div>
+<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;<span class="preprocessor">#endif // NV_FLEX_EXT_H</span></div>
+<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;</div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a785f5a041fb93cf460cde7153f87fa02"><div class="ttname"><a href="_nv_flex_ext_8h.html#a785f5a041fb93cf460cde7153f87fa02">NvFlexExtForceField::mLinearFalloff</a></div><div class="ttdeci">bool mLinearFalloff</div><div class="ttdoc">Linear or no falloff. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:729</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_ade3c494ee6e75e54a6ba73d6bc100bd9"><div class="ttname"><a href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9">NvFlexVector::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:85</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a4eceb2845977219379afdd06397a6706"><div class="ttname"><a href="_nv_flex_ext_8h.html#a4eceb2845977219379afdd06397a6706">NvFlexExtAsset::numParticles</a></div><div class="ttdeci">int numParticles</div><div class="ttdoc">Number of particles. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:314</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a24866c3fe2c482073325062c9c80d043"><div class="ttname"><a href="_nv_flex_ext_8h.html#a24866c3fe2c482073325062c9c80d043">NvFlexExtAsset::shapeCenters</a></div><div class="ttdeci">float * shapeCenters</div><div class="ttdoc">The position of the center of mass of each shape, an array of vec3s mNumShapes in length...</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:328</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_aa36d43b9e53b9b66d43c2bc5eb5abf98"><div class="ttname"><a href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExtSetForceFields</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtSetForceFields(NvFlexExtForceFieldCallback *callback, const NvFlexExtForceField *forceFields, int numForceFields)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a4ffe9bcd59a6cfc8900ac136f5123304"><div class="ttname"><a href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExtMovingFrameApply</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtMovingFrameApply(NvFlexExtMovingFrame *frame, float *positions, float *velocities, int numParticles, float linearScale, float angularScale, float dt)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a9f2c0daf521df4920e44cca1cb30b42c"><div class="ttname"><a href="_nv_flex_ext_8h.html#a9f2c0daf521df4920e44cca1cb30b42c">NvFlexExtCreateSoftFromMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtAsset * NvFlexExtCreateSoftFromMesh(const float *vertices, int numVertices, const int *indices, int numTriangleIndices, float particleSpacing, float volumeSampling, float surfaceSampling, float clusterSpacing, float clusterRadius, float clusterStiffness, float linkRadius, float linkStiffness, float globalStiffness)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a3d0a712689ce07a5652d48ea25fa05b9"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3d0a712689ce07a5652d48ea25fa05b9">NvFlexExtInstance::shapeRotations</a></div><div class="ttdeci">float * shapeRotations</div><div class="ttdoc">Shape matching group rotations (quaternions) </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:355</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a4e845f47484e00a272ad351b4bf28e95"><div class="ttname"><a href="_nv_flex_ext_8h.html#a4e845f47484e00a272ad351b4bf28e95">NvFlexExtShapeData::n</a></div><div class="ttdeci">int n</div><div class="ttdoc">Number of valid tranforms. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:605</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_ab08ce71766df91fc9201a61a48054d0c"><div class="ttname"><a href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c">NvFlexVector::lib</a></div><div class="ttdeci">NvFlexLibrary * lib</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:70</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a0ac3c8cc1bb87eaa50690f44e56a74da"><div class="ttname"><a href="_nv_flex_ext_8h.html#a0ac3c8cc1bb87eaa50690f44e56a74da">NvFlexExtAsset::particles</a></div><div class="ttdeci">float * particles</div><div class="ttdoc">Local space particle positions, x,y,z,1/mass. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:313</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a96b73b81c5db272d950efe3f03a8cef8"><div class="ttname"><a href="_nv_flex_ext_8h.html#a96b73b81c5db272d950efe3f03a8cef8">NvFlexExtAsset::shapeOffsets</a></div><div class="ttdeci">int * shapeOffsets</div><div class="ttdoc">Each entry stores the end of the shape&#39;s indices in the indices array (exclusive prefix sum of shape ...</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:326</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a8cf124de0fc370757cb890f83984ced8"><div class="ttname"><a href="_nv_flex_ext_8h.html#a8cf124de0fc370757cb890f83984ced8">NvFlexExtTearingMeshEdit::newParticleIndex</a></div><div class="ttdeci">int newParticleIndex</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:444</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a054cb27646a389ea257d1bbde46a6e97"><div class="ttname"><a href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlexUnmap</a></div><div class="ttdeci">NV_FLEX_API void NvFlexUnmap(NvFlexBuffer *buffer)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a2b5634f64bd0d8d86f894885a1c16a33"><div class="ttname"><a href="_nv_flex_ext_8h.html#a2b5634f64bd0d8d86f894885a1c16a33">NvFlexExtDestroyInstance</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtDestroyInstance(NvFlexExtContainer *container, const NvFlexExtInstance *instance)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a780022c1b8425074ce08328e8e8c35cc"><div class="ttname"><a href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExtMovingFrameUpdate</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtMovingFrameUpdate(NvFlexExtMovingFrame *frame, const float *worldTranslation, const float *worldRotation, float dt)</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a0309d584abbe900d3af3823a79e89ee7"><div class="ttname"><a href="struct_nv_flex_vector.html#a0309d584abbe900d3af3823a79e89ee7">NvFlexVector::init</a></div><div class="ttdeci">void init(int size)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:78</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ad0a9c7e2f907e46b60f6bacf402987ce"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad0a9c7e2f907e46b60f6bacf402987ce">NvFlexExtCreateRigidFromMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtAsset * NvFlexExtCreateRigidFromMesh(const float *vertices, int numVertices, const int *indices, int numTriangleIndices, float radius, float expand)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a9020959583f85486e060a7b5e611476d"><div class="ttname"><a href="_nv_flex_ext_8h.html#a9020959583f85486e060a7b5e611476d">NvFlexExtAsset::springRestLengths</a></div><div class="ttdeci">float * springRestLengths</div><div class="ttdoc">Spring rest-lengths. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:320</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a1933b633e9055d9adf8b62c4aa8a3bc0"><div class="ttname"><a href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">NvFlexVector::size</a></div><div class="ttdeci">int size() const </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:161</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ab4caadf5a6b19674849bfce91d986e7b"><div class="ttname"><a href="_nv_flex_ext_8h.html#ab4caadf5a6b19674849bfce91d986e7b">NvFlexExtTickContainer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtTickContainer(NvFlexExtContainer *container, float dt, int numSubsteps, bool enableTimers=false)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_particle_data"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_particle_data">NvFlexExtParticleData</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:562</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_aca9a5ecc1fd26fedf90f8f17e87e3ca8"><div class="ttname"><a href="_nv_flex_ext_8h.html#aca9a5ecc1fd26fedf90f8f17e87e3ca8">NvFlexExtInstance::numParticles</a></div><div class="ttdeci">int numParticles</div><div class="ttdoc">Number of simulation particles. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:348</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_af0cd639c21be28640fe5e1dd94931d59"><div class="ttname"><a href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExtUnmapParticleData</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtUnmapParticleData(NvFlexExtContainer *container)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_afaf84632a42346a718009bcda5efc8b4"><div class="ttname"><a href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExtContainer</a></div><div class="ttdeci">struct NvFlexExtContainer NvFlexExtContainer</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:365</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a769d5ad0723a3fceac7951967e8b4d03"><div class="ttname"><a href="struct_nv_flex_vector.html#a769d5ad0723a3fceac7951967e8b4d03">NvFlexVector::operator[]</a></div><div class="ttdeci">T &amp; operator[](int index)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:127</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a026d8fcd71bb256610401cc861345428"><div class="ttname"><a href="struct_nv_flex_vector.html#a026d8fcd71bb256610401cc861345428">NvFlexVector::NvFlexVector</a></div><div class="ttdeci">NvFlexVector(NvFlexLibrary *l, const T *ptr, int size)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:58</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a8000e722ce864bbfbce0f303f39186d7"><div class="ttname"><a href="_nv_flex_ext_8h.html#a8000e722ce864bbfbce0f303f39186d7">NvFlexExtInstance::userData</a></div><div class="ttdeci">void * userData</div><div class="ttdoc">User data pointer. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:359</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a89ea7bbd26bec46f1b82d84257de1f58"><div class="ttname"><a href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExtPullFromDevice</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtPullFromDevice(NvFlexExtContainer *container)</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a36a3fd5e42c5d8005f72bcc43217cf37"><div class="ttname"><a href="struct_nv_flex_vector.html#a36a3fd5e42c5d8005f72bcc43217cf37">NvFlexVector::resize</a></div><div class="ttdeci">void resize(int newCount, const T &amp;val)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:210</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_aeee311155e99ce95c506078964a7dc3c"><div class="ttname"><a href="_nv_flex_ext_8h.html#aeee311155e99ce95c506078964a7dc3c">NvFlexExtAsset::triangleIndices</a></div><div class="ttdeci">int * triangleIndices</div><div class="ttdoc">Indexed triangle mesh indices for clothing. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:332</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_ac28b5fd10fd519265c66cf4a0ce8e6ae"><div class="ttname"><a href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae">NvFlexVector::capacity</a></div><div class="ttdeci">int capacity</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:75</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a1a0c7a0c03148b1586c4fb48f14a565f"><div class="ttname"><a href="_nv_flex_ext_8h.html#a1a0c7a0c03148b1586c4fb48f14a565f">NvFlexExtInstance::particleIndices</a></div><div class="ttdeci">int * particleIndices</div><div class="ttdoc">Simulation particle indices. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:347</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a7ad225a762dcf91b7155c7229dd08d38"><div class="ttname"><a href="_nv_flex_ext_8h.html#a7ad225a762dcf91b7155c7229dd08d38">NvFlexExtForceField::mRadius</a></div><div class="ttdeci">float mRadius</div><div class="ttdoc">Radius of the force field. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:726</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ad858d4df98a4300668f2b8048881c0d5"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad858d4df98a4300668f2b8048881c0d5">NvFlexExtAsset::numTriangles</a></div><div class="ttdeci">int numTriangles</div><div class="ttdoc">Number of triangles. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:333</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6"><div class="ttname"><a href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a></div><div class="ttdoc">Calling thread will be blocked until buffer is ready for access, default. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:69</div></div>
+<div class="ttc" id="_nv_flex_8h_html_afaeb57f4ee7e54b1ae1b912a465ed39e"><div class="ttname"><a href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlexSolver</a></div><div class="ttdeci">struct NvFlexSolver NvFlexSolver</div><div class="ttdef"><b>Definition:</b> NvFlex.h:57</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a8bef033b2a8567dfcc954e22534147ee"><div class="ttname"><a href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExtCreateClothFromMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtAsset * NvFlexExtCreateClothFromMesh(const float *particles, int numParticles, const int *indices, int numTriangles, float stretchStiffness, float bendStiffness, float tetherStiffness, float tetherGive, float pressure)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_force_field"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_force_field">NvFlexExtForceField</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:723</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a4810f46c27fd0cfacfb1f4be9dff0479"><div class="ttname"><a href="_nv_flex_ext_8h.html#a4810f46c27fd0cfacfb1f4be9dff0479">NvFlexExtAsset::numShapeIndices</a></div><div class="ttdeci">int numShapeIndices</div><div class="ttdoc">Total number of indices for shape constraints. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:325</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a88054283907d3386f1a30cdc4475acb0"><div class="ttname"><a href="_nv_flex_ext_8h.html#a88054283907d3386f1a30cdc4475acb0">NvFlexExtDestroyTearingCloth</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtDestroyTearingCloth(NvFlexExtAsset *asset)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a6517fee9c5e151673ecd5ad91cbf2ae2"><div class="ttname"><a href="_nv_flex_ext_8h.html#a6517fee9c5e151673ecd5ad91cbf2ae2">NvFlexExtShapeData::rotations</a></div><div class="ttdeci">float * rotations</div><div class="ttdoc">Receives a pointer to the array quaternion rotation data in [x, y z, w] format. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:603</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a7fc268a27306f6fc68dd1c106cfa62db"><div class="ttname"><a href="_nv_flex_ext_8h.html#a7fc268a27306f6fc68dd1c106cfa62db">NvFlexExtGetActiveList</a></div><div class="ttdeci">NV_FLEX_API int NvFlexExtGetActiveList(NvFlexExtContainer *container, int *indices)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_aa67489d3beb86e2b566e0fa2e978ed11"><div class="ttname"><a href="_nv_flex_ext_8h.html#aa67489d3beb86e2b566e0fa2e978ed11">NvFlexExtInstance::shapeIndex</a></div><div class="ttdeci">int shapeIndex</div><div class="ttdoc">Index in the container&#39;s shape body constraints array. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:351</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html"><div class="ttname"><a href="struct_nv_flex_vector.html">NvFlexVector</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:45</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ad08da77f432ca56bc59647bf73da86cb"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad08da77f432ca56bc59647bf73da86cb">NvFlexExtDestroyForceFieldCallback</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtDestroyForceFieldCallback(NvFlexExtForceFieldCallback *callback)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a0898bb9210440b159688d4647f6eb083"><div class="ttname"><a href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlexMap</a></div><div class="ttdeci">NV_FLEX_API void * NvFlexMap(NvFlexBuffer *buffer, int flags)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a8b7a9bd9cbd2f33c6b3da02687a6bd9d"><div class="ttname"><a href="_nv_flex_ext_8h.html#a8b7a9bd9cbd2f33c6b3da02687a6bd9d">NvFlexExtAsset::springIndices</a></div><div class="ttdeci">int * springIndices</div><div class="ttdoc">Spring indices. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:318</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_ae0e6ce694fb95a50c2974c6c2cc0ffc8"><div class="ttname"><a href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8">NvFlexVector::reserve</a></div><div class="ttdeci">void reserve(int minCapacity)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:173</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_afb9c0f47544c0cdebe21efb6908dd3a0"><div class="ttname"><a href="struct_nv_flex_vector.html#afb9c0f47544c0cdebe21efb6908dd3a0">NvFlexVector::~NvFlexVector</a></div><div class="ttdeci">~NvFlexVector()</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:65</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ab421c4d72574f468af6827c18c36a387"><div class="ttname"><a href="_nv_flex_ext_8h.html#ab421c4d72574f468af6827c18c36a387">NvFlexExtAsset::maxParticles</a></div><div class="ttdeci">int maxParticles</div><div class="ttdoc">Maximum number of particles, allows extra space for tearable assets which duplicate particles...</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:315</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a98584303358b70fd12ead231cd750335"><div class="ttname"><a href="struct_nv_flex_vector.html#a98584303358b70fd12ead231cd750335">NvFlexVector::push_back</a></div><div class="ttdeci">void push_back(const T &amp;t)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:135</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a2509137d9fb8ab6818f35ab7761da7a5"><div class="ttname"><a href="_nv_flex_ext_8h.html#a2509137d9fb8ab6818f35ab7761da7a5">NvFlexExtDestroyContainer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtDestroyContainer(NvFlexExtContainer *container)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_aab0ea63bac05cd6aee5054d369687fb0"><div class="ttname"><a href="_nv_flex_ext_8h.html#aab0ea63bac05cd6aee5054d369687fb0">NvFlexExtMovingFrame::tau</a></div><div class="ttdeci">float tau[3]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:239</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a95fbd8d303fe90992b95b63a29eb5344"><div class="ttname"><a href="_nv_flex_ext_8h.html#a95fbd8d303fe90992b95b63a29eb5344">NvFlexExtMovingFrame::omega</a></div><div class="ttdeci">float omega[3]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:236</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a6e3f12e9e92abb31b115cf31b33e34bb"><div class="ttname"><a href="_nv_flex_ext_8h.html#a6e3f12e9e92abb31b115cf31b33e34bb">NvFlexExtCreateSoftMeshSkinning</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtCreateSoftMeshSkinning(const float *vertices, int numVertices, const float *bones, int numBones, float falloff, float maxDistance, float *skinningWeights, int *skinningIndices)</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a73f78b1efc76c96666a96a79064670c5"><div class="ttname"><a href="struct_nv_flex_vector.html#a73f78b1efc76c96666a96a79064670c5">NvFlexVector::empty</a></div><div class="ttdeci">bool empty() const </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:163</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_tearing_mesh_edit"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_mesh_edit">NvFlexExtTearingMeshEdit</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:441</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a49906c9e3466d40383cddf627fe26658"><div class="ttname"><a href="_nv_flex_ext_8h.html#a49906c9e3466d40383cddf627fe26658">NvFlexExtCreateContainer</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtContainer * NvFlexExtCreateContainer(NvFlexLibrary *lib, NvFlexSolver *solver, int maxParticles)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a3bf10e2c9370602142b7be01e920f973"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExtCreateInstance</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtInstance * NvFlexExtCreateInstance(NvFlexExtContainer *container, NvFlexExtParticleData *particleData, const NvFlexExtAsset *asset, const float *transform, float vx, float vy, float vz, int phase, float invMassScale)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ad1af111e19f7ca92fd913c25c4d9288b"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad1af111e19f7ca92fd913c25c4d9288b">NvFlexExtMovingFrame::rotation</a></div><div class="ttdeci">float rotation[4]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:233</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a3fc55581814cbab90a0c4167428893df"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3fc55581814cbab90a0c4167428893df">NvFlexExtAsset::inflatableVolume</a></div><div class="ttdeci">float inflatableVolume</div><div class="ttdoc">The rest volume for the inflatable constraint. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:337</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8"><div class="ttname"><a href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">eNvFlexBufferHost</a></div><div class="ttdoc">Host mappable buffer, pinned memory on CUDA, staging buffer on DX. </div><div class="ttdef"><b>Definition:</b> NvFlex.h:79</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ab51f04114586b5bf0f6fc5816fda9c69"><div class="ttname"><a href="_nv_flex_ext_8h.html#ab51f04114586b5bf0f6fc5816fda9c69">NvFlexExtUnmapShapeData</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtUnmapShapeData(NvFlexExtContainer *container)</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a50a3933d3f7b77d0500c702b1fa9ba9a"><div class="ttname"><a href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a></div><div class="ttdeci">struct NvFlexBuffer NvFlexBuffer</div><div class="ttdef"><b>Definition:</b> NvFlex.h:62</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a90f2d3ba5be20e70e7efead911ee7acc"><div class="ttname"><a href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExtMapShapeData</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtShapeData NvFlexExtMapShapeData(NvFlexExtContainer *container)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0"><div class="ttname"><a href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0">eNvFlexExtModeImpulse</a></div><div class="ttdoc">Apply field value as an impulse. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:714</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a780c0bac62cc5dd8d04da11cff07eeba"><div class="ttname"><a href="_nv_flex_ext_8h.html#a780c0bac62cc5dd8d04da11cff07eeba">NvFlexExtParticleData::particles</a></div><div class="ttdeci">float * particles</div><div class="ttdoc">Receives a pointer to the particle position / mass data. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:564</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a1e8252d5e5f66b3d8920c1371f23cc05"><div class="ttname"><a href="_nv_flex_ext_8h.html#a1e8252d5e5f66b3d8920c1371f23cc05">NvFlexExtAsset::springCoefficients</a></div><div class="ttdeci">float * springCoefficients</div><div class="ttdoc">Spring coefficients. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:319</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a69962fe23c7fef594fb5f36a175ff148"><div class="ttname"><a href="_nv_flex_ext_8h.html#a69962fe23c7fef594fb5f36a175ff148">NvFlexExtParticleData::restParticles</a></div><div class="ttdeci">float * restParticles</div><div class="ttdoc">Receives a pointer to the particle&#39;s rest position (used for self collision culling) ...</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:565</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_acd73f347463a114da73bb1ab5eff00b4"><div class="ttname"><a href="_nv_flex_ext_8h.html#acd73f347463a114da73bb1ab5eff00b4">NvFlexExtShapeData::positions</a></div><div class="ttdeci">float * positions</div><div class="ttdoc">Receives a pointer to an array of shape body translations in [x, y, z] format. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:604</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_moving_frame"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_moving_frame">NvFlexExtMovingFrame</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:230</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a3871fbd5422c9b3f41bd5dc2046e1aa7"><div class="ttname"><a href="struct_nv_flex_vector.html#a3871fbd5422c9b3f41bd5dc2046e1aa7">NvFlexVector::operator[]</a></div><div class="ttdeci">const T &amp; operator[](int index) const </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:119</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_afca9914468beb61f6c98bc052e2af5e0"><div class="ttname"><a href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">NvFlexVector::unmap</a></div><div class="ttdeci">void unmap()</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:108</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_instance"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_instance">NvFlexExtInstance</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:345</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a4695d37db8b61495f200bfd88a2be628"><div class="ttname"><a href="_nv_flex_ext_8h.html#a4695d37db8b61495f200bfd88a2be628">NvFlexExtUpdateInstances</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtUpdateInstances(NvFlexExtContainer *container)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a9e6134ffeca22636dcd467fa4dee1ba0"><div class="ttname"><a href="_nv_flex_ext_8h.html#a9e6134ffeca22636dcd467fa4dee1ba0">NvFlexExtForceField::mPosition</a></div><div class="ttdeci">float mPosition[3]</div><div class="ttdoc">Center of force field. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:725</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a806a707d6b32c41ab561a4893f43ddde"><div class="ttname"><a href="_nv_flex_ext_8h.html#a806a707d6b32c41ab561a4893f43ddde">NvFlexExtTriangleData::indices</a></div><div class="ttdeci">int * indices</div><div class="ttdoc">Receives a pointer to the array of triangle index data. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:585</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a56bf3b1fe603c79b871ead2efb65cc78"><div class="ttname"><a href="_nv_flex_ext_8h.html#a56bf3b1fe603c79b871ead2efb65cc78">NvFlexExtTriangleData::normals</a></div><div class="ttdeci">float * normals</div><div class="ttdoc">Receives a pointer to an array of triangle normal data stored with 16 byte stride, i.e.: [nx, ny, nz]. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:586</div></div>
+<div class="ttc" id="_nv_flex_8h_html"><div class="ttname"><a href="_nv_flex_8h.html">NvFlex.h</a></div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a5efc0113d5432eb959437e6e3a98cc5f"><div class="ttname"><a href="_nv_flex_ext_8h.html#a5efc0113d5432eb959437e6e3a98cc5f">NvFlexExtTearClothMesh</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtTearClothMesh(NvFlexExtAsset *asset, float maxStrain, int maxSplits, NvFlexExtTearingParticleClone *particleCopies, int *numParticleCopies, int maxCopies, NvFlexExtTearingMeshEdit *triangleEdits, int *numTriangleEdits, int maxEdits)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a0705c9d2b5960057b37f097083d96f33"><div class="ttname"><a href="_nv_flex_ext_8h.html#a0705c9d2b5960057b37f097083d96f33">NvFlexExtMovingFrame::acceleration</a></div><div class="ttdeci">float acceleration[3]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:238</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2"><div class="ttname"><a href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2">eNvFlexExtModeForce</a></div><div class="ttdoc">Apply field value as a force. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:711</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ad4d5551b97bd31b9e1ca5c57f2c82452"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad4d5551b97bd31b9e1ca5c57f2c82452">NvFlexExtAsset::inflatableStiffness</a></div><div class="ttdeci">float inflatableStiffness</div><div class="ttdoc">How stiff the inflatable is. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:339</div></div>
+<div class="ttc" id="_nv_flex_8h_html_a3078976e98f370a9fbdb11db80f1f318"><div class="ttname"><a href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a></div><div class="ttdeci">struct NvFlexLibrary NvFlexLibrary</div><div class="ttdef"><b>Definition:</b> NvFlex.h:52</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a46b80c02097ebc40bf777708e8f17ed4"><div class="ttname"><a href="_nv_flex_ext_8h.html#a46b80c02097ebc40bf777708e8f17ed4">NvFlexExtTearingMeshEdit::triIndex</a></div><div class="ttdeci">int triIndex</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:443</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_afcacbd584e2041855af50eae3f287779"><div class="ttname"><a href="_nv_flex_ext_8h.html#afcacbd584e2041855af50eae3f287779">NvFlexExtParticleData::normals</a></div><div class="ttdeci">float * normals</div><div class="ttdoc">Receives a pointer to the particle normal data with 16 byte stride in format [nx, ny...</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:568</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a1646bf409084777cd0ff5d4fcccf07de"><div class="ttname"><a href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExtMapTriangleData</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtTriangleData NvFlexExtMapTriangleData(NvFlexExtContainer *container)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a9034efff0f1b158a12a9ed6991d620fa"><div class="ttname"><a href="_nv_flex_ext_8h.html#a9034efff0f1b158a12a9ed6991d620fa">NvFlexExtTearingParticleClone::destIndex</a></div><div class="ttdeci">int destIndex</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:431</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a0b9729f9896faba45c861a1e8d15290b"><div class="ttname"><a href="_nv_flex_ext_8h.html#a0b9729f9896faba45c861a1e8d15290b">NvFlexExtForceField::mStrength</a></div><div class="ttdeci">float mStrength</div><div class="ttdoc">Strength of the force field. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:727</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a7d35ea2def3a05a5f85a5cdfd5abdc56"><div class="ttname"><a href="_nv_flex_ext_8h.html#a7d35ea2def3a05a5f85a5cdfd5abdc56">NvFlexExtMovingFrame::position</a></div><div class="ttdeci">float position[3]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:232</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a6c4a1f4acb4d6275c9e1ac01d4e35ab1"><div class="ttname"><a href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">NvFlexVector::resize</a></div><div class="ttdeci">void resize(int newCount)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:200</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_asset"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_asset">NvFlexExtAsset</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:310</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a425f4e472bb83797498c904ab228209c"><div class="ttname"><a href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExtPushToDevice</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtPushToDevice(NvFlexExtContainer *container)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a1117ce527b6b483cc756ab5352f6dc3f"><div class="ttname"><a href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExtForceFieldCallback</a></div><div class="ttdeci">struct NvFlexExtForceFieldCallback NvFlexExtForceFieldCallback</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:736</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_ad462ae46f0270161c79572762b558124"><div class="ttname"><a href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">NvFlexVector::count</a></div><div class="ttdeci">int count</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:74</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a502acd5c1db4ba6eef61eba25f26d68e"><div class="ttname"><a href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExtForceMode</a></div><div class="ttdeci">NvFlexExtForceMode</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:708</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a0fd9407aad5001d3a9fe90e989da1aad"><div class="ttname"><a href="_nv_flex_ext_8h.html#a0fd9407aad5001d3a9fe90e989da1aad">NvFlexExtAsset::shapeCoefficients</a></div><div class="ttdeci">float * shapeCoefficients</div><div class="ttdoc">The stiffness coefficient for each shape. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:327</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a56640fd10b06a4024a4bf01c306c436b"><div class="ttname"><a href="struct_nv_flex_vector.html#a56640fd10b06a4024a4bf01c306c436b">NvFlexVector::map</a></div><div class="ttdeci">void map(int flags=eNvFlexMapWait)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:99</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c"><div class="ttname"><a href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c">eNvFlexExtModeVelocityChange</a></div><div class="ttdoc">Apply field value as a velocity change. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:717</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_addad82b3598059ffde7b3b5babe17bd4"><div class="ttname"><a href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExtCreateTearingClothFromMesh</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtAsset * NvFlexExtCreateTearingClothFromMesh(const float *particles, int numParticles, int maxParticles, const int *indices, int numTriangles, float stretchStiffness, float bendStiffness, float pressure)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_shape_data"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_shape_data">NvFlexExtShapeData</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:601</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a6a20d814e3b083b069daa0f20a3e756e"><div class="ttname"><a href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExtMovingFrameInit</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtMovingFrameInit(NvFlexExtMovingFrame *frame, const float *worldTranslation, const float *worldRotation)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ab556b9c29acfda73e14c68edc43be7e3"><div class="ttname"><a href="_nv_flex_ext_8h.html#ab556b9c29acfda73e14c68edc43be7e3">NvFlexExtAsset::inflatablePressure</a></div><div class="ttdeci">float inflatablePressure</div><div class="ttdoc">How much over the rest volume the inflatable should attempt to maintain. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:338</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ad722c319fe60d8a0933df217ba04b2ac"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad722c319fe60d8a0933df217ba04b2ac">NvFlexExtParticleData::upper</a></div><div class="ttdeci">const float * upper</div><div class="ttdoc">Receive a pointer to the particle upper bounds [x, y, z]. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:571</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ad48f83b8442323687d2268206e913496"><div class="ttname"><a href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlexAllocBuffer</a></div><div class="ttdeci">NV_FLEX_API NvFlexBuffer * NvFlexAllocBuffer(NvFlexLibrary *lib, int elementCount, int elementByteStride, NvFlexBufferType type)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ac2ef832cadd91e257ba80eb97d936340"><div class="ttname"><a href="_nv_flex_ext_8h.html#ac2ef832cadd91e257ba80eb97d936340">NvFlexExtInstance::inflatableIndex</a></div><div class="ttdeci">int inflatableIndex</div><div class="ttdoc">Index in the container&#39;s inflatables array. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:352</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a9d7ff86aeebc0fcfa5c125d7872e2e3b"><div class="ttname"><a href="struct_nv_flex_vector.html#a9d7ff86aeebc0fcfa5c125d7872e2e3b">NvFlexVector::NvFlexVector</a></div><div class="ttdeci">NvFlexVector(NvFlexLibrary *l, int size=0)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:47</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ab0a259d159116b7fba9b229784b02c70"><div class="ttname"><a href="_nv_flex_ext_8h.html#ab0a259d159116b7fba9b229784b02c70">NvFlexExtFreeParticles</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtFreeParticles(NvFlexExtContainer *container, int n, const int *indices)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a8a4a122a0a95b8262fc4673298a5cb1c"><div class="ttname"><a href="_nv_flex_ext_8h.html#a8a4a122a0a95b8262fc4673298a5cb1c">NvFlexExtAsset::shapeIndices</a></div><div class="ttdeci">int * shapeIndices</div><div class="ttdoc">The indices of the shape matching constraints. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:324</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a82a15dfd40b338a07cf4517f55f16720"><div class="ttname"><a href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExtCreateWeldedMeshIndices</a></div><div class="ttdeci">NV_FLEX_API int NvFlexExtCreateWeldedMeshIndices(const float *vertices, int numVertices, int *uniqueVerts, int *originalToUniqueMap, float threshold)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a3fa8bd4b7d4096602e611faf0bb62dfb"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExtMapParticleData</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtParticleData NvFlexExtMapParticleData(NvFlexExtContainer *container)</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_acd29b9b2b27e53e3640c24da6959e3cd"><div class="ttname"><a href="struct_nv_flex_vector.html#acd29b9b2b27e53e3640c24da6959e3cd">NvFlexVector::assign</a></div><div class="ttdeci">void assign(const T *srcPtr, int newCount)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:145</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_aa4f19c17fa4ae35ceda90c8b3d1fcca4"><div class="ttname"><a href="_nv_flex_ext_8h.html#aa4f19c17fa4ae35ceda90c8b3d1fcca4">NvFlexExtInstance::asset</a></div><div class="ttdeci">const NvFlexExtAsset * asset</div><div class="ttdoc">Source asset used to create this instance. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:357</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_aa4422fcaa24d5bbd71aa7772639512b9"><div class="ttname"><a href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9">NvFlexVector::mappedPtr</a></div><div class="ttdeci">T * mappedPtr</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:73</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ae03f4690a66ba4e06e4b2519c688aaba"><div class="ttname"><a href="_nv_flex_ext_8h.html#ae03f4690a66ba4e06e4b2519c688aaba">NvFlexExtMovingFrame::delta</a></div><div class="ttdeci">float delta[4][4]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:241</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_af911b47ddb538a0542f6e2c38a82d701"><div class="ttname"><a href="_nv_flex_ext_8h.html#af911b47ddb538a0542f6e2c38a82d701">NvFlexExtParticleData::lower</a></div><div class="ttdeci">const float * lower</div><div class="ttdoc">Receive a pointer to the particle lower bounds [x, y, z]. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:570</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a3288fee0b909e9e768d9abc9b8da74cf"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3288fee0b909e9e768d9abc9b8da74cf">NvFlexExtInstance::triangleIndex</a></div><div class="ttdeci">int triangleIndex</div><div class="ttdoc">Index in the container&#39;s triangle array. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:350</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_triangle_data"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_triangle_data">NvFlexExtTriangleData</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:583</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a3d7dba5a4d9fce7230bc20a8bb567951"><div class="ttname"><a href="_nv_flex_ext_8h.html#a3d7dba5a4d9fce7230bc20a8bb567951">NvFlexExtForceField::mMode</a></div><div class="ttdeci">NvFlexExtForceMode mMode</div><div class="ttdoc">Mode of field application. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:728</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a7c036ccca83df3659529858068e0593d"><div class="ttname"><a href="_nv_flex_ext_8h.html#a7c036ccca83df3659529858068e0593d">NvFlexExtAllocParticles</a></div><div class="ttdeci">NV_FLEX_API int NvFlexExtAllocParticles(NvFlexExtContainer *container, int n, int *indices)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a7fa35a822a4e856fee45b3263e679270"><div class="ttname"><a href="_nv_flex_ext_8h.html#a7fa35a822a4e856fee45b3263e679270">NvFlexExtParticleData::phases</a></div><div class="ttdeci">int * phases</div><div class="ttdoc">Receives a pointer to the particle phase data. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:567</div></div>
+<div class="ttc" id="_nv_flex_8h_html_ab559759820a4322aff061745ef26c867"><div class="ttname"><a href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlexFreeBuffer</a></div><div class="ttdeci">NV_FLEX_API void NvFlexFreeBuffer(NvFlexBuffer *buf)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_afc07cf2edbf4d5bf504890b312a98bd7"><div class="ttname"><a href="_nv_flex_ext_8h.html#afc07cf2edbf4d5bf504890b312a98bd7">NvFlexExtAsset::numShapes</a></div><div class="ttdeci">int numShapes</div><div class="ttdoc">The number of shape matching constraints. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:329</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a89e582ae93e0256b06f22d9abf361783"><div class="ttname"><a href="_nv_flex_ext_8h.html#a89e582ae93e0256b06f22d9abf361783">NvFlexExtUnmapTriangleData</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtUnmapTriangleData(NvFlexExtContainer *container)</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a225da2c753ca0bb95b570c303f0cd761"><div class="ttname"><a href="struct_nv_flex_vector.html#a225da2c753ca0bb95b570c303f0cd761">NvFlexVector::copyto</a></div><div class="ttdeci">void copyto(T *dest, int count)</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:154</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a36c33fafe13c5fd5773bf9a2af2dd745"><div class="ttname"><a href="_nv_flex_ext_8h.html#a36c33fafe13c5fd5773bf9a2af2dd745">NvFlexExtDestroyAsset</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtDestroyAsset(NvFlexExtAsset *asset)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a431c97a2756c45752dd7508f0810a397"><div class="ttname"><a href="_nv_flex_ext_8h.html#a431c97a2756c45752dd7508f0810a397">NvFlexExtTearingParticleClone::srcIndex</a></div><div class="ttdeci">int srcIndex</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:430</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_aa6fb48cb1199af96a29de7616f7a4d18"><div class="ttname"><a href="_nv_flex_ext_8h.html#aa6fb48cb1199af96a29de7616f7a4d18">NvFlexExtInstance::shapeTranslations</a></div><div class="ttdeci">float * shapeTranslations</div><div class="ttdoc">Shape matching group translations (vec3s) </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:354</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_acc246770a0f65f1e50b43c618955dc84"><div class="ttname"><a href="_nv_flex_ext_8h.html#acc246770a0f65f1e50b43c618955dc84">NvFlexExtMovingFrame::velocity</a></div><div class="ttdeci">float velocity[3]</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:235</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_struct_nv_flex_ext_tearing_particle_clone"><div class="ttname"><a href="_nv_flex_ext_8h.html#struct_nv_flex_ext_tearing_particle_clone">NvFlexExtTearingParticleClone</a></div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:428</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_aa408aa5327d07f69fc12314df2d5dcfb"><div class="ttname"><a href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb">NvFlexVector::buffer</a></div><div class="ttdeci">NvFlexBuffer * buffer</div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:71</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_adbb39b1f8b0705bb3e19d2cb6145640f"><div class="ttname"><a href="_nv_flex_ext_8h.html#adbb39b1f8b0705bb3e19d2cb6145640f">NvFlexExtParticleData::velocities</a></div><div class="ttdeci">float * velocities</div><div class="ttdoc">Receives a pointer to the particle velocity data. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:566</div></div>
+<div class="ttc" id="struct_nv_flex_vector_html_a37fbf38300ea57635af4b60c934e9f46"><div class="ttname"><a href="struct_nv_flex_vector.html#a37fbf38300ea57635af4b60c934e9f46">NvFlexVector::back</a></div><div class="ttdeci">const T &amp; back() const </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:165</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ac1ed9ff49120d0691352399c8173bdcf"><div class="ttname"><a href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExtCreateForceFieldCallback</a></div><div class="ttdeci">NV_FLEX_API NvFlexExtForceFieldCallback * NvFlexExtCreateForceFieldCallback(NvFlexSolver *solver)</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_a960073478e49b229d1d19ac64c5b23f7"><div class="ttname"><a href="_nv_flex_ext_8h.html#a960073478e49b229d1d19ac64c5b23f7">NvFlexExtAsset::inflatable</a></div><div class="ttdeci">bool inflatable</div><div class="ttdoc">Whether an inflatable constraint should be added. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:336</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ae5f81891f59382b133319dc3bcea8ba0"><div class="ttname"><a href="_nv_flex_ext_8h.html#ae5f81891f59382b133319dc3bcea8ba0">NvFlexExtAsset::numSprings</a></div><div class="ttdeci">int numSprings</div><div class="ttdoc">Number of springs. </div><div class="ttdef"><b>Definition:</b> NvFlexExt.h:321</div></div>
+<div class="ttc" id="_nv_flex_ext_8h_html_ad9343d07f49098ee205a1ed48dc9db34"><div class="ttname"><a href="_nv_flex_ext_8h.html#ad9343d07f49098ee205a1ed48dc9db34">NvFlexExtNotifyAssetChanged</a></div><div class="ttdeci">NV_FLEX_API void NvFlexExtNotifyAssetChanged(NvFlexExtContainer *container, const NvFlexExtAsset *asset)</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/arrowdown.png b/doc/_static/api/arrowdown.png
new file mode 100644
index 0000000..8257668
--- /dev/null
+++ b/doc/_static/api/arrowdown.png
Binary files differ
diff --git a/doc/_static/api/arrowright.png b/doc/_static/api/arrowright.png
new file mode 100644
index 0000000..4f2b45f
--- /dev/null
+++ b/doc/_static/api/arrowright.png
Binary files differ
diff --git a/doc/_static/api/bc_s.png b/doc/_static/api/bc_s.png
new file mode 100644
index 0000000..7049183
--- /dev/null
+++ b/doc/_static/api/bc_s.png
Binary files differ
diff --git a/doc/_static/api/bdwn.png b/doc/_static/api/bdwn.png
new file mode 100644
index 0000000..ab6f2ab
--- /dev/null
+++ b/doc/_static/api/bdwn.png
Binary files differ
diff --git a/doc/_static/api/closed.png b/doc/_static/api/closed.png
new file mode 100644
index 0000000..21f1c91
--- /dev/null
+++ b/doc/_static/api/closed.png
Binary files differ
diff --git a/doc/_static/api/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/_static/api/dir_d44c64559bbebec7f509842c48db8b23.html
new file mode 100644
index 0000000..e2f9475
--- /dev/null
+++ b/doc/_static/api/dir_d44c64559bbebec7f509842c48db8b23.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: include Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">include Directory Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:_nv_flex_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_8h.html">NvFlex.h</a> <a href="_nv_flex_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_nv_flex_device_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_device_8h.html">NvFlexDevice.h</a> <a href="_nv_flex_device_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:_nv_flex_ext_8h"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="_nv_flex_ext_8h.html">NvFlexExt.h</a> <a href="_nv_flex_ext_8h_source.html">[code]</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/doc.png b/doc/_static/api/doc.png
new file mode 100644
index 0000000..7a7dcb7
--- /dev/null
+++ b/doc/_static/api/doc.png
Binary files differ
diff --git a/doc/_static/api/doxygen.css b/doc/_static/api/doxygen.css
new file mode 100644
index 0000000..b8ee746
--- /dev/null
+++ b/doc/_static/api/doxygen.css
@@ -0,0 +1,1449 @@
+/* The standard CSS for doxygen 1.8.9.1 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #A3BA98;
+ color: #526947;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+div.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.qindex, div.navtab{
+ background-color: #F0F3EE;
+ border: 1px solid #B9CAB0;
+ text-align: center;
+}
+
+div.qindex, div.navpath {
+ width: 100%;
+ line-height: 140%;
+}
+
+div.navtab {
+ margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+ color: #5E7851;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #6D8B5D;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a.qindex {
+ font-weight: bold;
+}
+
+a.qindexHL {
+ font-weight: bold;
+ background-color: #B3C6AA;
+ color: #ffffff;
+ border: 1px double #A2B997;
+}
+
+.contents a.qindexHL:visited {
+ color: #ffffff;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ background-color: #FCFDFC;
+ border: 1px solid #D2DDCD;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+div.ah, span.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.classindex ul {
+ list-style: none;
+ padding-left: 0;
+}
+
+div.classindex span.ai {
+ display: inline-block;
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #F0F3EE;
+ font-weight: bold;
+ border: 1px solid #D2DDCD;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #F0F3EE;
+ border: 1px solid #D2DDCD;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #F2F5F0;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F9FAF8;
+ border-left: 2px solid #B3C6AA;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #B9CAB0;
+}
+
+th.dirtab {
+ background: #F0F3EE;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #729262;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #FAFBFA;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #6D8B5D;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+ font-size: 80%;
+ color: #6D8B5D;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #F0F3EE;
+ border: 1px solid #B9CAB0;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: bold;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #BCCDB4;
+ border-left: 1px solid #BCCDB4;
+ border-right: 1px solid #BCCDB4;
+ padding: 6px 0px 6px 0px;
+ color: #394931;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E9EEE6;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-topleft: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #BCCDB4;
+ border-left: 1px solid #BCCDB4;
+ border-right: 1px solid #BCCDB4;
+ padding: 6px 10px 2px 10px;
+ background-color: #FCFDFC;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #93AD86;
+ border-top:1px solid #7B9C6B;
+ border-left:1px solid #7B9C6B;
+ border-right:1px solid #D2DDCD;
+ border-bottom:1px solid #D2DDCD;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #B3C6AA;
+ border-bottom: 1px solid #B3C6AA;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F9FAF8;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #5E7851;
+}
+
+.arrow {
+ color: #B3C6AA;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ font-size: 80%;
+ display: inline-block;
+ width: 16px;
+ height: 22px;
+}
+
+.icon {
+ font-family: Arial, Helvetica;
+ font-weight: bold;
+ font-size: 12px;
+ height: 14px;
+ width: 16px;
+ display: inline-block;
+ background-color: #93AD86;
+ color: white;
+ text-align: center;
+ border-radius: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+.icona {
+ width: 24px;
+ height: 22px;
+ display: inline-block;
+}
+
+.iconfopen {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderopen.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.iconfclosed {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderclosed.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.icondoc {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('doc.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+table.directory {
+ font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #415438;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #45593C;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #556D49;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #BCCDB4;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #BCCDB4;
+ border-bottom: 1px solid #BCCDB4;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #BCCDB4;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E9EEE6;
+ font-size: 90%;
+ color: #394931;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #BCCDB4;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#A5BB9A;
+ border:solid 1px #D0DCCB;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#536B48;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #3E5035;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#8BA87D;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#536B48;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #FAFBFA;
+ margin: 0px;
+ border-bottom: 1px solid #D2DDCD;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+dl
+{
+ padding: 0 0 0 10px;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
+dl.section
+{
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.note
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #505050;
+}
+
+dl.todo
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug
+{
+ margin-left:-7px;
+ padding-left: 3px;
+ border-left:4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectname
+{
+ font: 300% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 120% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #7B9C6B;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #AABFA0;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#4E6443;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+}
+
+dl.citelist dd {
+ margin:2px 0;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F7F9F6;
+ border: 1px solid #E1E8DE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 20px 10px 10px;
+ width: 200px;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #6D8B5D;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ white-space: nowrap;
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #ffffff;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #ffffff;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
diff --git a/doc/_static/api/doxygen.png b/doc/_static/api/doxygen.png
new file mode 100644
index 0000000..51a8bd0
--- /dev/null
+++ b/doc/_static/api/doxygen.png
Binary files differ
diff --git a/doc/_static/api/dynsections.js b/doc/_static/api/dynsections.js
new file mode 100644
index 0000000..85e1836
--- /dev/null
+++ b/doc/_static/api/dynsections.js
@@ -0,0 +1,97 @@
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function() {
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l<level+1) {
+ i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
+ a.html('&#9660;');
+ $(this).show();
+ } else if (l==level+1) {
+ i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
+ a.html('&#9658;');
+ $(this).show();
+ } else {
+ $(this).hide();
+ }
+ });
+ updateStripes();
+}
+
+function toggleFolder(id)
+{
+ // the clicked row
+ var currentRow = $('#row_'+id);
+
+ // all rows after the clicked row
+ var rows = currentRow.nextAll("tr");
+
+ var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+
+ // only match elements AFTER this one (can't hide elements before)
+ var childRows = rows.filter(function() { return this.id.match(re); });
+
+ // first row is visible we are HIDING
+ if (childRows.filter(':first').is(':visible')===true) {
+ // replace down arrow by right arrow for current row
+ var currentRowSpans = currentRow.find("span");
+ currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+ currentRowSpans.filter(".arrow").html('&#9658;');
+ rows.filter("[id^=row_"+id+"]").hide(); // hide all children
+ } else { // we are SHOWING
+ // replace right arrow by down arrow for current row
+ var currentRowSpans = currentRow.find("span");
+ currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
+ currentRowSpans.filter(".arrow").html('&#9660;');
+ // replace down arrows by right arrows for child rows
+ var childRowsSpans = childRows.find("span");
+ childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+ childRowsSpans.filter(".arrow").html('&#9658;');
+ childRows.show(); //show all children
+ }
+ updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+ var rows = $('tr.inherit.'+id);
+ var img = $('tr.inherit_header.'+id+' img');
+ var src = $(img).attr('src');
+ if (rows.filter(':first').is(':visible')===true) {
+ rows.css('display','none');
+ $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ rows.css('display','table-row'); // using show() causes jump in firefox
+ $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+}
+
diff --git a/doc/_static/api/files.html b/doc/_static/api/files.html
new file mode 100644
index 0000000..53ff079
--- /dev/null
+++ b/doc/_static/api/files.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: File List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">File List</div> </div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_nv_flex_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_nv_flex_8h.html" target="_self">NvFlex.h</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_nv_flex_device_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_nv_flex_device_8h.html" target="_self">NvFlexDevice.h</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="_nv_flex_ext_8h_source.html"><span class="icondoc"></span></a><a class="el" href="_nv_flex_ext_8h.html" target="_self">NvFlexExt.h</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/flex.css b/doc/_static/api/flex.css
new file mode 100644
index 0000000..7a8c916
--- /dev/null
+++ b/doc/_static/api/flex.css
@@ -0,0 +1,67 @@
+body {
+ width: 800px;
+}
+
+body, table, div, p, dl, li{
+ font-size: 11pt;
+ line-height: 1.4;
+}
+
+h1, h2, h3 {
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ border-bottom-color: rgb(238, 238, 238);
+ line-height: 1.4;
+}
+
+a {
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.caption {
+font-weight: bold;
+margin-bottom: 2em;
+}
+
+.doxtable {
+ width: 80%;
+ table-layout: fixed;
+}
+
+
+#projectlogo img {
+ width: 250px;
+}
+
+
+.fieldname {
+ font-weight: bold;
+ background-color: rgb(240, 240, 240);
+}
+
+.fieldtype {
+ background-color: rgb(230, 230, 230);
+}
+
+.fielddoc {
+ background-color: rgb(250, 250, 250);
+}
+
+
+li {
+ margin-bottom: 9pt;
+}
+
+.level1, .level2, .level3, .level4 {
+ margin-bottom: 0pt;
+}
+
+
+div.line {
+ font-family: courier, fixed;
+}
+
+div.image img {
+ width:100%;
+} \ No newline at end of file
diff --git a/doc/_static/api/folderclosed.png b/doc/_static/api/folderclosed.png
new file mode 100644
index 0000000..bf1b273
--- /dev/null
+++ b/doc/_static/api/folderclosed.png
Binary files differ
diff --git a/doc/_static/api/folderopen.png b/doc/_static/api/folderopen.png
new file mode 100644
index 0000000..fcd679e
--- /dev/null
+++ b/doc/_static/api/folderopen.png
Binary files differ
diff --git a/doc/_static/api/globals.html b/doc/_static/api/globals.html
new file mode 100644
index 0000000..42e1ec0
--- /dev/null
+++ b/doc/_static/api/globals.html
@@ -0,0 +1,530 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+</div><!-- top -->
+<div class="contents">
+<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div>
+
+<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
+<li>eNvFlexBufferDevice
+: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576">NvFlex.h</a>
+</li>
+<li>eNvFlexBufferHost
+: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">NvFlex.h</a>
+</li>
+<li>eNvFlexCUDA
+: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178">NvFlex.h</a>
+</li>
+<li>eNvFlexD3D11
+: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df">NvFlex.h</a>
+</li>
+<li>eNvFlexD3D12
+: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943">NvFlex.h</a>
+</li>
+<li>eNvFlexExtModeForce
+: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2">NvFlexExt.h</a>
+</li>
+<li>eNvFlexExtModeImpulse
+: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0">NvFlexExt.h</a>
+</li>
+<li>eNvFlexExtModeVelocityChange
+: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c">NvFlexExt.h</a>
+</li>
+<li>eNvFlexLogAll
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e">NvFlex.h</a>
+</li>
+<li>eNvFlexLogDebug
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e">NvFlex.h</a>
+</li>
+<li>eNvFlexLogError
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd">NvFlex.h</a>
+</li>
+<li>eNvFlexLogInfo
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f">NvFlex.h</a>
+</li>
+<li>eNvFlexLogWarning
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61">NvFlex.h</a>
+</li>
+<li>eNvFlexMapDiscard
+: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706">NvFlex.h</a>
+</li>
+<li>eNvFlexMapDoNotWait
+: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1">NvFlex.h</a>
+</li>
+<li>eNvFlexMapWait
+: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">NvFlex.h</a>
+</li>
+<li>eNvFlexPhaseFluid
+: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74">NvFlex.h</a>
+</li>
+<li>eNvFlexPhaseGroupMask
+: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">NvFlex.h</a>
+</li>
+<li>eNvFlexPhaseSelfCollide
+: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977">NvFlex.h</a>
+</li>
+<li>eNvFlexPhaseSelfCollideFilter
+: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1">NvFlex.h</a>
+</li>
+<li>eNvFlexRelaxationGlobal
+: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db">NvFlex.h</a>
+</li>
+<li>eNvFlexRelaxationLocal
+: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeBox
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeCapsule
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeConvexMesh
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeFlagDynamic
+: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeFlagReserved
+: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeFlagTrigger
+: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeFlagTypeMask
+: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeSDF
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeSphere
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeTriangleMesh
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1">NvFlex.h</a>
+</li>
+<li>eNvFlexStageCount
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3">NvFlex.h</a>
+</li>
+<li>eNvFlexStageIterationEnd
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69">NvFlex.h</a>
+</li>
+<li>eNvFlexStageIterationStart
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff">NvFlex.h</a>
+</li>
+<li>eNvFlexStageSubstepBegin
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44">NvFlex.h</a>
+</li>
+<li>eNvFlexStageSubstepEnd
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586">NvFlex.h</a>
+</li>
+<li>eNvFlexStageUpdateEnd
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806">NvFlex.h</a>
+</li>
+</ul>
+
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>NvFlexAcquireContext()
+: <a class="el" href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlex.h</a>
+</li>
+<li>NvFlexAllocBuffer()
+: <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlex.h</a>
+</li>
+<li>NvFlexBuffer
+: <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlex.h</a>
+</li>
+<li>NvFlexBufferType
+: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlex.h</a>
+</li>
+<li>NvFlexCollisionShapeFlags
+: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlex.h</a>
+</li>
+<li>NvFlexCollisionShapeType
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlex.h</a>
+</li>
+<li>NvFlexComputeType
+: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlex.h</a>
+</li>
+<li>NvFlexConvexMeshId
+: <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlex.h</a>
+</li>
+<li>NvFlexCreateConvexMesh()
+: <a class="el" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlex.h</a>
+</li>
+<li>NvFlexCreateDistanceField()
+: <a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlex.h</a>
+</li>
+<li>NvFlexCreateSolver()
+: <a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlex.h</a>
+</li>
+<li>NvFlexCreateTriangleMesh()
+: <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlex.h</a>
+</li>
+<li>NvFlexDestroyConvexMesh()
+: <a class="el" href="_nv_flex_8h.html#ac85b6372e5c7bfc508ecb7b8c59c72a0">NvFlex.h</a>
+</li>
+<li>NvFlexDestroyDistanceField()
+: <a class="el" href="_nv_flex_8h.html#ab11bdd7f778d17af16cefea33265cb65">NvFlex.h</a>
+</li>
+<li>NvFlexDestroySolver()
+: <a class="el" href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlex.h</a>
+</li>
+<li>NvFlexDestroyTriangleMesh()
+: <a class="el" href="_nv_flex_8h.html#a4cb4462803ebff105d151fd45b4efad6">NvFlex.h</a>
+</li>
+<li>NvFlexDeviceCreateCudaContext()
+: <a class="el" href="_nv_flex_device_8h.html#a922c489035a9bdb84bee1cd0ef73558d">NvFlexDevice.h</a>
+</li>
+<li>NvFlexDeviceDestroyCudaContext()
+: <a class="el" href="_nv_flex_device_8h.html#a97f4f513f226d573410478fa6d79f05a">NvFlexDevice.h</a>
+</li>
+<li>NvFlexDeviceGetSuggestedOrdinal()
+: <a class="el" href="_nv_flex_device_8h.html#a914a7e6338379d00397bd3e7e07c0280">NvFlexDevice.h</a>
+</li>
+<li>NvFlexDistanceFieldId
+: <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlex.h</a>
+</li>
+<li>NvFlexErrorCallback
+: <a class="el" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlex.h</a>
+</li>
+<li>NvFlexErrorSeverity
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlex.h</a>
+</li>
+<li>NvFlexExtAllocParticles()
+: <a class="el" href="_nv_flex_ext_8h.html#a7c036ccca83df3659529858068e0593d">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtContainer
+: <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateClothFromMesh()
+: <a class="el" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateContainer()
+: <a class="el" href="_nv_flex_ext_8h.html#a49906c9e3466d40383cddf627fe26658">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateForceFieldCallback()
+: <a class="el" href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateInstance()
+: <a class="el" href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateRigidFromMesh()
+: <a class="el" href="_nv_flex_ext_8h.html#ad0a9c7e2f907e46b60f6bacf402987ce">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateSoftFromMesh()
+: <a class="el" href="_nv_flex_ext_8h.html#a9f2c0daf521df4920e44cca1cb30b42c">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateSoftMeshSkinning()
+: <a class="el" href="_nv_flex_ext_8h.html#a6e3f12e9e92abb31b115cf31b33e34bb">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateTearingClothFromMesh()
+: <a class="el" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateWeldedMeshIndices()
+: <a class="el" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtDestroyAsset()
+: <a class="el" href="_nv_flex_ext_8h.html#a36c33fafe13c5fd5773bf9a2af2dd745">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtDestroyContainer()
+: <a class="el" href="_nv_flex_ext_8h.html#a2509137d9fb8ab6818f35ab7761da7a5">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtDestroyForceFieldCallback()
+: <a class="el" href="_nv_flex_ext_8h.html#ad08da77f432ca56bc59647bf73da86cb">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtDestroyInstance()
+: <a class="el" href="_nv_flex_ext_8h.html#a2b5634f64bd0d8d86f894885a1c16a33">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtDestroyTearingCloth()
+: <a class="el" href="_nv_flex_ext_8h.html#a88054283907d3386f1a30cdc4475acb0">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtForceFieldCallback
+: <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtForceMode
+: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtFreeParticles()
+: <a class="el" href="_nv_flex_ext_8h.html#ab0a259d159116b7fba9b229784b02c70">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtGetActiveList()
+: <a class="el" href="_nv_flex_ext_8h.html#a7fc268a27306f6fc68dd1c106cfa62db">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMapParticleData()
+: <a class="el" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMapShapeData()
+: <a class="el" href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMapTriangleData()
+: <a class="el" href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMovingFrameApply()
+: <a class="el" href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMovingFrameInit()
+: <a class="el" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMovingFrameUpdate()
+: <a class="el" href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtNotifyAssetChanged()
+: <a class="el" href="_nv_flex_ext_8h.html#ad9343d07f49098ee205a1ed48dc9db34">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtPullFromDevice()
+: <a class="el" href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtPushToDevice()
+: <a class="el" href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtSetForceFields()
+: <a class="el" href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtTearClothMesh()
+: <a class="el" href="_nv_flex_ext_8h.html#a5efc0113d5432eb959437e6e3a98cc5f">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtTickContainer()
+: <a class="el" href="_nv_flex_ext_8h.html#ab4caadf5a6b19674849bfce91d986e7b">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtUnmapParticleData()
+: <a class="el" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtUnmapShapeData()
+: <a class="el" href="_nv_flex_ext_8h.html#ab51f04114586b5bf0f6fc5816fda9c69">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtUnmapTriangleData()
+: <a class="el" href="_nv_flex_ext_8h.html#a89e582ae93e0256b06f22d9abf361783">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtUpdateInstances()
+: <a class="el" href="_nv_flex_ext_8h.html#a4695d37db8b61495f200bfd88a2be628">NvFlexExt.h</a>
+</li>
+<li>NvFlexFlush()
+: <a class="el" href="_nv_flex_8h.html#a898eb8e66a456dd2266c694f29cab600">NvFlex.h</a>
+</li>
+<li>NvFlexFreeBuffer()
+: <a class="el" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlex.h</a>
+</li>
+<li>NvFlexGetActive()
+: <a class="el" href="_nv_flex_8h.html#aeed8fe87fa073067af1a45560cc54a79">NvFlex.h</a>
+</li>
+<li>NvFlexGetActiveCount()
+: <a class="el" href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlex.h</a>
+</li>
+<li>NvFlexGetAnisotropy()
+: <a class="el" href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlex.h</a>
+</li>
+<li>NvFlexGetBounds()
+: <a class="el" href="_nv_flex_8h.html#ab1eec84a21b1872fba11c9b4cc1d1629">NvFlex.h</a>
+</li>
+<li>NvFlexGetContacts()
+: <a class="el" href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlex.h</a>
+</li>
+<li>NvFlexGetConvexMeshBounds()
+: <a class="el" href="_nv_flex_8h.html#ad56e661161763579afb375b3841eb5ff">NvFlex.h</a>
+</li>
+<li>NvFlexGetDensities()
+: <a class="el" href="_nv_flex_8h.html#a6f6f14e625dc744a127be81e6dc4cb74">NvFlex.h</a>
+</li>
+<li>NvFlexGetDetailTimers()
+: <a class="el" href="_nv_flex_8h.html#ab1efb6764f65900cb09f0188ad6da08a">NvFlex.h</a>
+</li>
+<li>NvFlexGetDeviceAndContext()
+: <a class="el" href="_nv_flex_8h.html#a2ac0a898a565a2cdf13b80acd4a3555c">NvFlex.h</a>
+</li>
+<li>NvFlexGetDeviceLatency()
+: <a class="el" href="_nv_flex_8h.html#a221a4621ab98eca6ecd3368d288154a4">NvFlex.h</a>
+</li>
+<li>NvFlexGetDeviceName()
+: <a class="el" href="_nv_flex_8h.html#a4c451971259524c6878b6b1ed4023ada">NvFlex.h</a>
+</li>
+<li>NvFlexGetDiffuseParticles()
+: <a class="el" href="_nv_flex_8h.html#a37ada4b95999cc253dfb049b99030d50">NvFlex.h</a>
+</li>
+<li>NvFlexGetDynamicTriangles()
+: <a class="el" href="_nv_flex_8h.html#abdfd0834422dd99154a27962614525e5">NvFlex.h</a>
+</li>
+<li>NvFlexGetNormals()
+: <a class="el" href="_nv_flex_8h.html#aadb2a0cf125e4a6b2f3443ab7dcbd3d4">NvFlex.h</a>
+</li>
+<li>NvFlexGetParams()
+: <a class="el" href="_nv_flex_8h.html#a581b458848039220203547af53de128f">NvFlex.h</a>
+</li>
+<li>NvFlexGetParticles()
+: <a class="el" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlex.h</a>
+</li>
+<li>NvFlexGetPhases()
+: <a class="el" href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlex.h</a>
+</li>
+<li>NvFlexGetRestParticles()
+: <a class="el" href="_nv_flex_8h.html#affb884bcf3e7e389812d0b52b0fc0490">NvFlex.h</a>
+</li>
+<li>NvFlexGetRigidTransforms()
+: <a class="el" href="_nv_flex_8h.html#a3eafe7fe6b200c757c7402eca7d13f6d">NvFlex.h</a>
+</li>
+<li>NvFlexGetSmoothParticles()
+: <a class="el" href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlex.h</a>
+</li>
+<li>NvFlexGetSolverLibrary()
+: <a class="el" href="_nv_flex_8h.html#ae0d57e4fc2b3b51ec08f7da0a28ff343">NvFlex.h</a>
+</li>
+<li>NvFlexGetSprings()
+: <a class="el" href="_nv_flex_8h.html#aab5f90f4024d71d08c3f9327c6d8c184">NvFlex.h</a>
+</li>
+<li>NvFlexGetTimers()
+: <a class="el" href="_nv_flex_8h.html#ab16b6d2e11e0ab417ee6c4cf16f0a27d">NvFlex.h</a>
+</li>
+<li>NvFlexGetTriangleMeshBounds()
+: <a class="el" href="_nv_flex_8h.html#a60794d849b4184335e2a0ddec0a9e6a2">NvFlex.h</a>
+</li>
+<li>NvFlexGetVelocities()
+: <a class="el" href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlex.h</a>
+</li>
+<li>NvFlexGetVersion()
+: <a class="el" href="_nv_flex_8h.html#ac25ec5de38c177db51198bb620644d36">NvFlex.h</a>
+</li>
+<li>NvFlexInit()
+: <a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlex.h</a>
+</li>
+<li>NvFlexLibrary
+: <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlex.h</a>
+</li>
+<li>NvFlexMakePhase()
+: <a class="el" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlex.h</a>
+</li>
+<li>NvFlexMakeShapeFlags()
+: <a class="el" href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a">NvFlex.h</a>
+</li>
+<li>NvFlexMap()
+: <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlex.h</a>
+</li>
+<li>NvFlexMapFlags
+: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlex.h</a>
+</li>
+<li>NvFlexPhase
+: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlex.h</a>
+</li>
+<li>NvFlexRegisterD3DBuffer()
+: <a class="el" href="_nv_flex_8h.html#ab487e68ce1c84ce1eec0c85b7daf5aa0">NvFlex.h</a>
+</li>
+<li>NvFlexRegisterOGLBuffer()
+: <a class="el" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlex.h</a>
+</li>
+<li>NvFlexRegisterSolverCallback()
+: <a class="el" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlex.h</a>
+</li>
+<li>NvFlexRelaxationMode
+: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlex.h</a>
+</li>
+<li>NvFlexRestoreContext()
+: <a class="el" href="_nv_flex_8h.html#ae6671f352bd77e296609d0bc2a57fd11">NvFlex.h</a>
+</li>
+<li>NvFlexSetActive()
+: <a class="el" href="_nv_flex_8h.html#aea2af336bdd96d7168c3acdce6d1875d">NvFlex.h</a>
+</li>
+<li>NvFlexSetDiffuseParticles()
+: <a class="el" href="_nv_flex_8h.html#a5a7213593dd9a23d9d67f8517d1da9de">NvFlex.h</a>
+</li>
+<li>NvFlexSetDynamicTriangles()
+: <a class="el" href="_nv_flex_8h.html#aa03d94be697cdc3aaa56e469d87255a4">NvFlex.h</a>
+</li>
+<li>NvFlexSetInflatables()
+: <a class="el" href="_nv_flex_8h.html#a7f2b59fba77c60ce116e1eac57d63e50">NvFlex.h</a>
+</li>
+<li>NvFlexSetNormals()
+: <a class="el" href="_nv_flex_8h.html#add03fd357383845f07e0596290faf316">NvFlex.h</a>
+</li>
+<li>NvFlexSetParams()
+: <a class="el" href="_nv_flex_8h.html#ae2db6ad8006027c1acf2315a0d15fe71">NvFlex.h</a>
+</li>
+<li>NvFlexSetParticles()
+: <a class="el" href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlex.h</a>
+</li>
+<li>NvFlexSetPhases()
+: <a class="el" href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlex.h</a>
+</li>
+<li>NvFlexSetRestParticles()
+: <a class="el" href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlex.h</a>
+</li>
+<li>NvFlexSetRigids()
+: <a class="el" href="_nv_flex_8h.html#a89c872e761a53c87375f536a0ef597d8">NvFlex.h</a>
+</li>
+<li>NvFlexSetShapes()
+: <a class="el" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlex.h</a>
+</li>
+<li>NvFlexSetSprings()
+: <a class="el" href="_nv_flex_8h.html#ae67c0cab2ecee8eb9485a26ef0fad6a9">NvFlex.h</a>
+</li>
+<li>NvFlexSetVelocities()
+: <a class="el" href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlex.h</a>
+</li>
+<li>NvFlexShutdown()
+: <a class="el" href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlex.h</a>
+</li>
+<li>NvFlexSolver
+: <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlex.h</a>
+</li>
+<li>NvFlexSolverCallbackStage
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlex.h</a>
+</li>
+<li>NvFlexTriangleMeshId
+: <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlex.h</a>
+</li>
+<li>NvFlexUnmap()
+: <a class="el" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlex.h</a>
+</li>
+<li>NvFlexUnregisterD3DBuffer()
+: <a class="el" href="_nv_flex_8h.html#ad607e7916e5d76b384a61f1c1f94ab32">NvFlex.h</a>
+</li>
+<li>NvFlexUnregisterOGLBuffer()
+: <a class="el" href="_nv_flex_8h.html#a78045a8d4e856372df108dc616a94cd8">NvFlex.h</a>
+</li>
+<li>NvFlexUpdateConvexMesh()
+: <a class="el" href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlex.h</a>
+</li>
+<li>NvFlexUpdateDistanceField()
+: <a class="el" href="_nv_flex_8h.html#a584ffb275b9986fd5444ed1a7ea247d9">NvFlex.h</a>
+</li>
+<li>NvFlexUpdateSolver()
+: <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlex.h</a>
+</li>
+<li>NvFlexUpdateTriangleMesh()
+: <a class="el" href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlex.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/globals_enum.html b/doc/_static/api/globals_enum.html
new file mode 100644
index 0000000..c693fe9
--- /dev/null
+++ b/doc/_static/api/globals_enum.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+</div><!-- top -->
+<div class="contents">
+&#160;<ul>
+<li>NvFlexBufferType
+: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3">NvFlex.h</a>
+</li>
+<li>NvFlexCollisionShapeFlags
+: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304c">NvFlex.h</a>
+</li>
+<li>NvFlexCollisionShapeType
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26ba">NvFlex.h</a>
+</li>
+<li>NvFlexComputeType
+: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252">NvFlex.h</a>
+</li>
+<li>NvFlexErrorSeverity
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfca">NvFlex.h</a>
+</li>
+<li>NvFlexExtForceMode
+: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68e">NvFlexExt.h</a>
+</li>
+<li>NvFlexMapFlags
+: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16c">NvFlex.h</a>
+</li>
+<li>NvFlexPhase
+: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644">NvFlex.h</a>
+</li>
+<li>NvFlexRelaxationMode
+: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3b">NvFlex.h</a>
+</li>
+<li>NvFlexSolverCallbackStage
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9">NvFlex.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/globals_eval.html b/doc/_static/api/globals_eval.html
new file mode 100644
index 0000000..465a0cb
--- /dev/null
+++ b/doc/_static/api/globals_eval.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_e"></a>- e -</h3><ul>
+<li>eNvFlexBufferDevice
+: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3a103255fa795b55a7f430a41493002576">NvFlex.h</a>
+</li>
+<li>eNvFlexBufferHost
+: <a class="el" href="_nv_flex_8h.html#a169e4c126acf46bdebf76c36a44deca3aec63221ddc1b13eff4db55fbf6cd85f8">NvFlex.h</a>
+</li>
+<li>eNvFlexCUDA
+: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252ad0c27f7aafdc4fe569722025c8eb2178">NvFlex.h</a>
+</li>
+<li>eNvFlexD3D11
+: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a297a93979a88fda6e6b551dcab5fb3df">NvFlex.h</a>
+</li>
+<li>eNvFlexD3D12
+: <a class="el" href="_nv_flex_8h.html#a9b2d3dc5ac42011aeec4e13be2e14252a15e78a7baf13cc7fd73f255ac84f0943">NvFlex.h</a>
+</li>
+<li>eNvFlexExtModeForce
+: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea9d4e8413b628837f9d1982897fd1f4a2">NvFlexExt.h</a>
+</li>
+<li>eNvFlexExtModeImpulse
+: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea92265f22fc2a724baf640fdace8f8ea0">NvFlexExt.h</a>
+</li>
+<li>eNvFlexExtModeVelocityChange
+: <a class="el" href="_nv_flex_ext_8h.html#a502acd5c1db4ba6eef61eba25f26d68ea6a2e4817b1e86764147c81e8d5e5070c">NvFlexExt.h</a>
+</li>
+<li>eNvFlexLogAll
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8feff72c0b0391e8adf3ddb6c39ef10e">NvFlex.h</a>
+</li>
+<li>eNvFlexLogDebug
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa77b51759e33d60b2caf327bb4835351e">NvFlex.h</a>
+</li>
+<li>eNvFlexLogError
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa8aed6496f033604148138299fa075edd">NvFlex.h</a>
+</li>
+<li>eNvFlexLogInfo
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa03d239332ae87f46270855dd06b6e58f">NvFlex.h</a>
+</li>
+<li>eNvFlexLogWarning
+: <a class="el" href="_nv_flex_8h.html#ab4435b3857752360375fe52fc992cfcaa5538835c4767004ba5fd443ada08ea61">NvFlex.h</a>
+</li>
+<li>eNvFlexMapDiscard
+: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16caa01c2dce3aa1e0d9d151060e1786c706">NvFlex.h</a>
+</li>
+<li>eNvFlexMapDoNotWait
+: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca1bd450ab65ccc06288fae95e23d5e6f1">NvFlex.h</a>
+</li>
+<li>eNvFlexMapWait
+: <a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">NvFlex.h</a>
+</li>
+<li>eNvFlexPhaseFluid
+: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a1728772beb1746ace4c549b2ed8f1d74">NvFlex.h</a>
+</li>
+<li>eNvFlexPhaseGroupMask
+: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644ad108f6ebf28346813cfd3602d984bb32">NvFlex.h</a>
+</li>
+<li>eNvFlexPhaseSelfCollide
+: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a453a23cc8e9d2e6097b5be187f3c6977">NvFlex.h</a>
+</li>
+<li>eNvFlexPhaseSelfCollideFilter
+: <a class="el" href="_nv_flex_8h.html#a5ad2a7745fcb4d4afd5b5f1bda074644a76a62d3a5df428f18e01f8b37573a7b1">NvFlex.h</a>
+</li>
+<li>eNvFlexRelaxationGlobal
+: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba33711a4b466d606d68dee43918f819db">NvFlex.h</a>
+</li>
+<li>eNvFlexRelaxationLocal
+: <a class="el" href="_nv_flex_8h.html#a46f5d35902f7da40628247175a174f3ba858afe9529e908c2bc8ce92da8943b7c">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeBox
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baab17c8dd4f9500016b77a9b49de3c48e7">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeCapsule
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1724c140b583fbf2c11c14a24dd3764a">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeConvexMesh
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baaed52f0e803c6745ffc1a5f018a8756ce">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeFlagDynamic
+: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cadc6740cf6d829fba159d92e43ffb5992">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeFlagReserved
+: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304caa1c1225f6b8b2906c83748cfc46b81d9">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeFlagTrigger
+: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304ca409215fa9b917f2d0830a66bd11b3ff8">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeFlagTypeMask
+: <a class="el" href="_nv_flex_8h.html#a31c31ea4f96cd4fdadc6b7317691304cae8a10737948abf6973f0f1d66bae7ef8">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeSDF
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa1fd78f8694b954f8d12fe7d911f17180">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeSphere
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baae22144512ae098865c6725af16a68ad3">NvFlex.h</a>
+</li>
+<li>eNvFlexShapeTriangleMesh
+: <a class="el" href="_nv_flex_8h.html#a0506ae712f846087b8647ea389ac26baa315488da382a5e9794c83358385f7ae1">NvFlex.h</a>
+</li>
+<li>eNvFlexStageCount
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a1f2e7acff9b3b74922f90240d29fd1b3">NvFlex.h</a>
+</li>
+<li>eNvFlexStageIterationEnd
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9ab75a912c3990b0fbd6b06a6741a20e69">NvFlex.h</a>
+</li>
+<li>eNvFlexStageIterationStart
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a9f3914fdb03915a14ebe55a2c730e7ff">NvFlex.h</a>
+</li>
+<li>eNvFlexStageSubstepBegin
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a79ce9005dbc92198a1f180c6afde6a44">NvFlex.h</a>
+</li>
+<li>eNvFlexStageSubstepEnd
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a6f13e2ebdbf21f8c8ebcfe1ac9160586">NvFlex.h</a>
+</li>
+<li>eNvFlexStageUpdateEnd
+: <a class="el" href="_nv_flex_8h.html#a4f80c8bcfa6de99a52983adb13d80db9a260340ba9071892bd8795c3b29289806">NvFlex.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/globals_func.html b/doc/_static/api/globals_func.html
new file mode 100644
index 0000000..2766e2e
--- /dev/null
+++ b/doc/_static/api/globals_func.html
@@ -0,0 +1,355 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+</div><!-- top -->
+<div class="contents">
+&#160;
+
+<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<li>NvFlexAcquireContext()
+: <a class="el" href="_nv_flex_8h.html#a42ec7b30c79d4733e6a756b5d9b15ee6">NvFlex.h</a>
+</li>
+<li>NvFlexAllocBuffer()
+: <a class="el" href="_nv_flex_8h.html#ad48f83b8442323687d2268206e913496">NvFlex.h</a>
+</li>
+<li>NvFlexCreateConvexMesh()
+: <a class="el" href="_nv_flex_8h.html#afbaafe2b1006352002b03aabaca531cc">NvFlex.h</a>
+</li>
+<li>NvFlexCreateDistanceField()
+: <a class="el" href="_nv_flex_8h.html#a5c28caf6d5d513c5adacd4fbc782f308">NvFlex.h</a>
+</li>
+<li>NvFlexCreateSolver()
+: <a class="el" href="_nv_flex_8h.html#af7f91fa47c779fcd8bee60061de6d31c">NvFlex.h</a>
+</li>
+<li>NvFlexCreateTriangleMesh()
+: <a class="el" href="_nv_flex_8h.html#afdda5a5210938a1e8a7c3a8218ad468e">NvFlex.h</a>
+</li>
+<li>NvFlexDestroyConvexMesh()
+: <a class="el" href="_nv_flex_8h.html#ac85b6372e5c7bfc508ecb7b8c59c72a0">NvFlex.h</a>
+</li>
+<li>NvFlexDestroyDistanceField()
+: <a class="el" href="_nv_flex_8h.html#ab11bdd7f778d17af16cefea33265cb65">NvFlex.h</a>
+</li>
+<li>NvFlexDestroySolver()
+: <a class="el" href="_nv_flex_8h.html#a1d755d7b090f7ed5c4c50d2d3fef1558">NvFlex.h</a>
+</li>
+<li>NvFlexDestroyTriangleMesh()
+: <a class="el" href="_nv_flex_8h.html#a4cb4462803ebff105d151fd45b4efad6">NvFlex.h</a>
+</li>
+<li>NvFlexDeviceCreateCudaContext()
+: <a class="el" href="_nv_flex_device_8h.html#a922c489035a9bdb84bee1cd0ef73558d">NvFlexDevice.h</a>
+</li>
+<li>NvFlexDeviceDestroyCudaContext()
+: <a class="el" href="_nv_flex_device_8h.html#a97f4f513f226d573410478fa6d79f05a">NvFlexDevice.h</a>
+</li>
+<li>NvFlexDeviceGetSuggestedOrdinal()
+: <a class="el" href="_nv_flex_device_8h.html#a914a7e6338379d00397bd3e7e07c0280">NvFlexDevice.h</a>
+</li>
+<li>NvFlexExtAllocParticles()
+: <a class="el" href="_nv_flex_ext_8h.html#a7c036ccca83df3659529858068e0593d">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateClothFromMesh()
+: <a class="el" href="_nv_flex_ext_8h.html#a8bef033b2a8567dfcc954e22534147ee">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateContainer()
+: <a class="el" href="_nv_flex_ext_8h.html#a49906c9e3466d40383cddf627fe26658">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateForceFieldCallback()
+: <a class="el" href="_nv_flex_ext_8h.html#ac1ed9ff49120d0691352399c8173bdcf">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateInstance()
+: <a class="el" href="_nv_flex_ext_8h.html#a3bf10e2c9370602142b7be01e920f973">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateRigidFromMesh()
+: <a class="el" href="_nv_flex_ext_8h.html#ad0a9c7e2f907e46b60f6bacf402987ce">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateSoftFromMesh()
+: <a class="el" href="_nv_flex_ext_8h.html#a9f2c0daf521df4920e44cca1cb30b42c">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateSoftMeshSkinning()
+: <a class="el" href="_nv_flex_ext_8h.html#a6e3f12e9e92abb31b115cf31b33e34bb">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateTearingClothFromMesh()
+: <a class="el" href="_nv_flex_ext_8h.html#addad82b3598059ffde7b3b5babe17bd4">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtCreateWeldedMeshIndices()
+: <a class="el" href="_nv_flex_ext_8h.html#a82a15dfd40b338a07cf4517f55f16720">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtDestroyAsset()
+: <a class="el" href="_nv_flex_ext_8h.html#a36c33fafe13c5fd5773bf9a2af2dd745">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtDestroyContainer()
+: <a class="el" href="_nv_flex_ext_8h.html#a2509137d9fb8ab6818f35ab7761da7a5">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtDestroyForceFieldCallback()
+: <a class="el" href="_nv_flex_ext_8h.html#ad08da77f432ca56bc59647bf73da86cb">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtDestroyInstance()
+: <a class="el" href="_nv_flex_ext_8h.html#a2b5634f64bd0d8d86f894885a1c16a33">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtDestroyTearingCloth()
+: <a class="el" href="_nv_flex_ext_8h.html#a88054283907d3386f1a30cdc4475acb0">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtFreeParticles()
+: <a class="el" href="_nv_flex_ext_8h.html#ab0a259d159116b7fba9b229784b02c70">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtGetActiveList()
+: <a class="el" href="_nv_flex_ext_8h.html#a7fc268a27306f6fc68dd1c106cfa62db">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMapParticleData()
+: <a class="el" href="_nv_flex_ext_8h.html#a3fa8bd4b7d4096602e611faf0bb62dfb">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMapShapeData()
+: <a class="el" href="_nv_flex_ext_8h.html#a90f2d3ba5be20e70e7efead911ee7acc">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMapTriangleData()
+: <a class="el" href="_nv_flex_ext_8h.html#a1646bf409084777cd0ff5d4fcccf07de">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMovingFrameApply()
+: <a class="el" href="_nv_flex_ext_8h.html#a4ffe9bcd59a6cfc8900ac136f5123304">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMovingFrameInit()
+: <a class="el" href="_nv_flex_ext_8h.html#a6a20d814e3b083b069daa0f20a3e756e">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtMovingFrameUpdate()
+: <a class="el" href="_nv_flex_ext_8h.html#a780022c1b8425074ce08328e8e8c35cc">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtNotifyAssetChanged()
+: <a class="el" href="_nv_flex_ext_8h.html#ad9343d07f49098ee205a1ed48dc9db34">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtPullFromDevice()
+: <a class="el" href="_nv_flex_ext_8h.html#a89ea7bbd26bec46f1b82d84257de1f58">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtPushToDevice()
+: <a class="el" href="_nv_flex_ext_8h.html#a425f4e472bb83797498c904ab228209c">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtSetForceFields()
+: <a class="el" href="_nv_flex_ext_8h.html#aa36d43b9e53b9b66d43c2bc5eb5abf98">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtTearClothMesh()
+: <a class="el" href="_nv_flex_ext_8h.html#a5efc0113d5432eb959437e6e3a98cc5f">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtTickContainer()
+: <a class="el" href="_nv_flex_ext_8h.html#ab4caadf5a6b19674849bfce91d986e7b">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtUnmapParticleData()
+: <a class="el" href="_nv_flex_ext_8h.html#af0cd639c21be28640fe5e1dd94931d59">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtUnmapShapeData()
+: <a class="el" href="_nv_flex_ext_8h.html#ab51f04114586b5bf0f6fc5816fda9c69">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtUnmapTriangleData()
+: <a class="el" href="_nv_flex_ext_8h.html#a89e582ae93e0256b06f22d9abf361783">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtUpdateInstances()
+: <a class="el" href="_nv_flex_ext_8h.html#a4695d37db8b61495f200bfd88a2be628">NvFlexExt.h</a>
+</li>
+<li>NvFlexFlush()
+: <a class="el" href="_nv_flex_8h.html#a898eb8e66a456dd2266c694f29cab600">NvFlex.h</a>
+</li>
+<li>NvFlexFreeBuffer()
+: <a class="el" href="_nv_flex_8h.html#ab559759820a4322aff061745ef26c867">NvFlex.h</a>
+</li>
+<li>NvFlexGetActive()
+: <a class="el" href="_nv_flex_8h.html#aeed8fe87fa073067af1a45560cc54a79">NvFlex.h</a>
+</li>
+<li>NvFlexGetActiveCount()
+: <a class="el" href="_nv_flex_8h.html#a2345372dea2ad4f043153a84e7a2c407">NvFlex.h</a>
+</li>
+<li>NvFlexGetAnisotropy()
+: <a class="el" href="_nv_flex_8h.html#ae28167c680ad56dcff600ce0a223cec5">NvFlex.h</a>
+</li>
+<li>NvFlexGetBounds()
+: <a class="el" href="_nv_flex_8h.html#ab1eec84a21b1872fba11c9b4cc1d1629">NvFlex.h</a>
+</li>
+<li>NvFlexGetContacts()
+: <a class="el" href="_nv_flex_8h.html#a7edac9cf450917147b83e98f5cb09f5d">NvFlex.h</a>
+</li>
+<li>NvFlexGetConvexMeshBounds()
+: <a class="el" href="_nv_flex_8h.html#ad56e661161763579afb375b3841eb5ff">NvFlex.h</a>
+</li>
+<li>NvFlexGetDensities()
+: <a class="el" href="_nv_flex_8h.html#a6f6f14e625dc744a127be81e6dc4cb74">NvFlex.h</a>
+</li>
+<li>NvFlexGetDetailTimers()
+: <a class="el" href="_nv_flex_8h.html#ab1efb6764f65900cb09f0188ad6da08a">NvFlex.h</a>
+</li>
+<li>NvFlexGetDeviceAndContext()
+: <a class="el" href="_nv_flex_8h.html#a2ac0a898a565a2cdf13b80acd4a3555c">NvFlex.h</a>
+</li>
+<li>NvFlexGetDeviceLatency()
+: <a class="el" href="_nv_flex_8h.html#a221a4621ab98eca6ecd3368d288154a4">NvFlex.h</a>
+</li>
+<li>NvFlexGetDeviceName()
+: <a class="el" href="_nv_flex_8h.html#a4c451971259524c6878b6b1ed4023ada">NvFlex.h</a>
+</li>
+<li>NvFlexGetDiffuseParticles()
+: <a class="el" href="_nv_flex_8h.html#a37ada4b95999cc253dfb049b99030d50">NvFlex.h</a>
+</li>
+<li>NvFlexGetDynamicTriangles()
+: <a class="el" href="_nv_flex_8h.html#abdfd0834422dd99154a27962614525e5">NvFlex.h</a>
+</li>
+<li>NvFlexGetNormals()
+: <a class="el" href="_nv_flex_8h.html#aadb2a0cf125e4a6b2f3443ab7dcbd3d4">NvFlex.h</a>
+</li>
+<li>NvFlexGetParams()
+: <a class="el" href="_nv_flex_8h.html#a581b458848039220203547af53de128f">NvFlex.h</a>
+</li>
+<li>NvFlexGetParticles()
+: <a class="el" href="_nv_flex_8h.html#a84f06fff995d8eb034cff81c811fa312">NvFlex.h</a>
+</li>
+<li>NvFlexGetPhases()
+: <a class="el" href="_nv_flex_8h.html#a15b7a5449bee38bbe5dcaf23690f09f5">NvFlex.h</a>
+</li>
+<li>NvFlexGetRestParticles()
+: <a class="el" href="_nv_flex_8h.html#affb884bcf3e7e389812d0b52b0fc0490">NvFlex.h</a>
+</li>
+<li>NvFlexGetRigidTransforms()
+: <a class="el" href="_nv_flex_8h.html#a3eafe7fe6b200c757c7402eca7d13f6d">NvFlex.h</a>
+</li>
+<li>NvFlexGetSmoothParticles()
+: <a class="el" href="_nv_flex_8h.html#abfa62e01c4f4511d3f6a00ab6a0f257a">NvFlex.h</a>
+</li>
+<li>NvFlexGetSolverLibrary()
+: <a class="el" href="_nv_flex_8h.html#ae0d57e4fc2b3b51ec08f7da0a28ff343">NvFlex.h</a>
+</li>
+<li>NvFlexGetSprings()
+: <a class="el" href="_nv_flex_8h.html#aab5f90f4024d71d08c3f9327c6d8c184">NvFlex.h</a>
+</li>
+<li>NvFlexGetTimers()
+: <a class="el" href="_nv_flex_8h.html#ab16b6d2e11e0ab417ee6c4cf16f0a27d">NvFlex.h</a>
+</li>
+<li>NvFlexGetTriangleMeshBounds()
+: <a class="el" href="_nv_flex_8h.html#a60794d849b4184335e2a0ddec0a9e6a2">NvFlex.h</a>
+</li>
+<li>NvFlexGetVelocities()
+: <a class="el" href="_nv_flex_8h.html#a67bd9669086e823ebe33d08d14f5b2b9">NvFlex.h</a>
+</li>
+<li>NvFlexGetVersion()
+: <a class="el" href="_nv_flex_8h.html#ac25ec5de38c177db51198bb620644d36">NvFlex.h</a>
+</li>
+<li>NvFlexInit()
+: <a class="el" href="_nv_flex_8h.html#a687e5ec141948f779faa9183b68cb743">NvFlex.h</a>
+</li>
+<li>NvFlexMakePhase()
+: <a class="el" href="_nv_flex_8h.html#af53fa9d7caef50db346475065504848d">NvFlex.h</a>
+</li>
+<li>NvFlexMakeShapeFlags()
+: <a class="el" href="_nv_flex_8h.html#ad6ee1e23e0c49aad63df8f605182de3a">NvFlex.h</a>
+</li>
+<li>NvFlexMap()
+: <a class="el" href="_nv_flex_8h.html#a0898bb9210440b159688d4647f6eb083">NvFlex.h</a>
+</li>
+<li>NvFlexRegisterD3DBuffer()
+: <a class="el" href="_nv_flex_8h.html#ab487e68ce1c84ce1eec0c85b7daf5aa0">NvFlex.h</a>
+</li>
+<li>NvFlexRegisterOGLBuffer()
+: <a class="el" href="_nv_flex_8h.html#aab83daf46e5a9428a0ad76fb75e8ec7e">NvFlex.h</a>
+</li>
+<li>NvFlexRegisterSolverCallback()
+: <a class="el" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlex.h</a>
+</li>
+<li>NvFlexRestoreContext()
+: <a class="el" href="_nv_flex_8h.html#ae6671f352bd77e296609d0bc2a57fd11">NvFlex.h</a>
+</li>
+<li>NvFlexSetActive()
+: <a class="el" href="_nv_flex_8h.html#aea2af336bdd96d7168c3acdce6d1875d">NvFlex.h</a>
+</li>
+<li>NvFlexSetDiffuseParticles()
+: <a class="el" href="_nv_flex_8h.html#a5a7213593dd9a23d9d67f8517d1da9de">NvFlex.h</a>
+</li>
+<li>NvFlexSetDynamicTriangles()
+: <a class="el" href="_nv_flex_8h.html#aa03d94be697cdc3aaa56e469d87255a4">NvFlex.h</a>
+</li>
+<li>NvFlexSetInflatables()
+: <a class="el" href="_nv_flex_8h.html#a7f2b59fba77c60ce116e1eac57d63e50">NvFlex.h</a>
+</li>
+<li>NvFlexSetNormals()
+: <a class="el" href="_nv_flex_8h.html#add03fd357383845f07e0596290faf316">NvFlex.h</a>
+</li>
+<li>NvFlexSetParams()
+: <a class="el" href="_nv_flex_8h.html#ae2db6ad8006027c1acf2315a0d15fe71">NvFlex.h</a>
+</li>
+<li>NvFlexSetParticles()
+: <a class="el" href="_nv_flex_8h.html#abef057ac89ba5cf1cd71f0084f9313de">NvFlex.h</a>
+</li>
+<li>NvFlexSetPhases()
+: <a class="el" href="_nv_flex_8h.html#a3117f92571613709936291c48414e521">NvFlex.h</a>
+</li>
+<li>NvFlexSetRestParticles()
+: <a class="el" href="_nv_flex_8h.html#aa457096286567a37d4f1d5f4857d9296">NvFlex.h</a>
+</li>
+<li>NvFlexSetRigids()
+: <a class="el" href="_nv_flex_8h.html#a89c872e761a53c87375f536a0ef597d8">NvFlex.h</a>
+</li>
+<li>NvFlexSetShapes()
+: <a class="el" href="_nv_flex_8h.html#aea4e7117722df53dfe44c676496117fa">NvFlex.h</a>
+</li>
+<li>NvFlexSetSprings()
+: <a class="el" href="_nv_flex_8h.html#ae67c0cab2ecee8eb9485a26ef0fad6a9">NvFlex.h</a>
+</li>
+<li>NvFlexSetVelocities()
+: <a class="el" href="_nv_flex_8h.html#afe09e63d22c5156fe24cd2d2bc069c04">NvFlex.h</a>
+</li>
+<li>NvFlexShutdown()
+: <a class="el" href="_nv_flex_8h.html#aaf59e45ada57c7f958a8030099cbe211">NvFlex.h</a>
+</li>
+<li>NvFlexUnmap()
+: <a class="el" href="_nv_flex_8h.html#a054cb27646a389ea257d1bbde46a6e97">NvFlex.h</a>
+</li>
+<li>NvFlexUnregisterD3DBuffer()
+: <a class="el" href="_nv_flex_8h.html#ad607e7916e5d76b384a61f1c1f94ab32">NvFlex.h</a>
+</li>
+<li>NvFlexUnregisterOGLBuffer()
+: <a class="el" href="_nv_flex_8h.html#a78045a8d4e856372df108dc616a94cd8">NvFlex.h</a>
+</li>
+<li>NvFlexUpdateConvexMesh()
+: <a class="el" href="_nv_flex_8h.html#a69289002a6f8ecd697118f0ec6572f5d">NvFlex.h</a>
+</li>
+<li>NvFlexUpdateDistanceField()
+: <a class="el" href="_nv_flex_8h.html#a584ffb275b9986fd5444ed1a7ea247d9">NvFlex.h</a>
+</li>
+<li>NvFlexUpdateSolver()
+: <a class="el" href="_nv_flex_8h.html#ac75370f005fd453fe8a324fe62be1b5c">NvFlex.h</a>
+</li>
+<li>NvFlexUpdateTriangleMesh()
+: <a class="el" href="_nv_flex_8h.html#a4958c555f0ed65dee54c37af32529356">NvFlex.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/globals_type.html b/doc/_static/api/globals_type.html
new file mode 100644
index 0000000..3ba1e90
--- /dev/null
+++ b/doc/_static/api/globals_type.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: Globals</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+</div><!-- top -->
+<div class="contents">
+&#160;<ul>
+<li>NvFlexBuffer
+: <a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlex.h</a>
+</li>
+<li>NvFlexConvexMeshId
+: <a class="el" href="_nv_flex_8h.html#a7ab5aa68da7ca1f69211a900f1a1c586">NvFlex.h</a>
+</li>
+<li>NvFlexDistanceFieldId
+: <a class="el" href="_nv_flex_8h.html#a56e990c5bfbc89677988cbf2471c0ade">NvFlex.h</a>
+</li>
+<li>NvFlexErrorCallback
+: <a class="el" href="_nv_flex_8h.html#abe6f00c9b94debbf7c181082a14076d5">NvFlex.h</a>
+</li>
+<li>NvFlexExtContainer
+: <a class="el" href="_nv_flex_ext_8h.html#afaf84632a42346a718009bcda5efc8b4">NvFlexExt.h</a>
+</li>
+<li>NvFlexExtForceFieldCallback
+: <a class="el" href="_nv_flex_ext_8h.html#a1117ce527b6b483cc756ab5352f6dc3f">NvFlexExt.h</a>
+</li>
+<li>NvFlexLibrary
+: <a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlex.h</a>
+</li>
+<li>NvFlexSolver
+: <a class="el" href="_nv_flex_8h.html#afaeb57f4ee7e54b1ae1b912a465ed39e">NvFlex.h</a>
+</li>
+<li>NvFlexTriangleMeshId
+: <a class="el" href="_nv_flex_8h.html#a2aea4c3d772b4dbccb7dd9ba37c1bdc0">NvFlex.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/index.html b/doc/_static/api/index.html
new file mode 100644
index 0000000..3130b0d
--- /dev/null
+++ b/doc/_static/api/index.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">FLEX Documentation</div> </div>
+</div><!--header-->
+<div class="contents">
+<ul><li><a href="index.html"><span>User&#160;Guide</span></a>
+</li><li><a href="files.html"><span>Files</span></a>
+<ul><li><a href="files.html"><span>File&#160;List</span></a>
+</li></ul>
+</li></ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/jquery.js b/doc/_static/api/jquery.js
new file mode 100644
index 0000000..1f4d0b4
--- /dev/null
+++ b/doc/_static/api/jquery.js
@@ -0,0 +1,68 @@
+/*!
+ * jQuery JavaScript Library v1.7.1
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Mon Nov 21 21:11:03 2011 -0500
+ */
+(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
+/*!
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*!
+ * jQuery UI 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h<j.length;h++){if(e.options[j[h][0]]){j[h][1].apply(e.element,f)}}}},contains:function(f,e){return document.compareDocumentPosition?f.compareDocumentPosition(e)&16:f!==e&&f.contains(e)},hasScroll:function(h,f){if(a(h).css("overflow")==="hidden"){return false}var e=(f&&f==="left")?"scrollLeft":"scrollTop",g=false;if(h[e]>0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*!
+ * jQuery UI Widget 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*!
+ * jQuery UI Mouse 1.8.18
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Mouse
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ */
+(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*!
+ * jQuery hashchange event - v1.3 - 7/21/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ *
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode=="BackCompat"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case"object":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(""),function(q,r){var s=r=="x"?"Left":"Top",u=s.toLowerCase(),p="scroll"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css("margin"+s))||0;g[p]-=parseInt(k.css("border"+s+"Width"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r=="x"?"width":"height"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)=="%"?parseFloat(t)/100*n:t}if(/^\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i=="x"?"Width":"Height",e="scroll"+h;if(!c(j).is("html,body")){return j[e]-c(j)[h.toLowerCase()]()}var g="client"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery);/*!
+ PowerTip - v1.2.0 - 2013-04-03
+ http://stevenbenner.github.com/jquery-powertip/
+ Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).
+ Released under MIT license.
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
+*/
+(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k("body");var n="displayController",e="hasActiveHover",d="forcedOpen",u="hasMouseMove",f="mouseOnToPopup",g="originalTitle",y="powertip",o="powertipjq",l="powertiptarget",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)==="string"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr("title");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr("title")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({"mouseenter.powertip":function J(P){k.powerTip.show(this,P)},"mouseleave.powertip":function L(){k.powerTip.hide(this)},"focus.powertip":function K(){k.powerTip.show(this)},"blur.powertip":function H(){k.powerTip.hide(this,true)},"keydown.powertip":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(".powertip").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr("title",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top="auto";F.left="auto";F.right="auto";F.bottom="auto";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split("-")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case"n":N.set("left",I.left-(J/2));N.set("bottom",c.windowHeight-I.top+P);break;case"e":N.set("left",I.left+P);N.set("top",I.top-(O/2));break;case"s":N.set("left",I.left-(J/2));N.set("top",I.top+P);break;case"w":N.set("top",I.top-(O/2));N.set("right",c.windowWidth-I.left+P);break;case"nw":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"nw-alt":N.set("left",I.left);N.set("bottom",c.windowHeight-I.top+P);break;case"ne":N.set("left",I.left-20);N.set("bottom",c.windowHeight-I.top+P);break;case"ne-alt":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left);break;case"sw":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"sw-alt":N.set("left",I.left);N.set("top",I.top+P);break;case"se":N.set("left",I.left-20);N.set("top",I.top+P);break;case"se-alt":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case"n":M=O.left+N/2;L=O.top;break;case"e":M=O.left+N;L=O.top+I/2;break;case"s":M=O.left+N/2;L=O.top+I;break;case"w":M=O.left;L=O.top+I/2;break;case"nw":M=O.left;L=O.top;break;case"ne":M=O.left+N;L=O.top;break;case"sw":M=O.left;L=O.top+I;break;case"se":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest("svg")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=["nw","n","ne","e","se","s","sw","w"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k("#"+Q.popupId);if(O.length===0){O=k("<div/>",{id:Q.popupId});if(w.length===0){w=k("body")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on("mousemove",M);s.on("scroll",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger("powerTipPreRender");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger("powerTipRender");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger("powerTipOpen")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set("top",c.currentY+Q.offset);T.set("left",c.currentX+Q.offset);O.css(T);R.trigger("powerTipClose")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set("top",c.currentY+Q.offset);U.set("left",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set("left",c.windowWidth-R)}else{if(S===p.bottom){U.set("top",c.scrollTop+c.windowHeight-V)}}}else{U.set("left",c.currentX-R-Q.offset);U.set("top",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set("top",0);V.set("left",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(":disabled")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(":focus")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on("mousemove",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k("#"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}})); \ No newline at end of file
diff --git a/doc/_static/api/nav_f.png b/doc/_static/api/nav_f.png
new file mode 100644
index 0000000..947685f
--- /dev/null
+++ b/doc/_static/api/nav_f.png
Binary files differ
diff --git a/doc/_static/api/nav_g.png b/doc/_static/api/nav_g.png
new file mode 100644
index 0000000..2093a23
--- /dev/null
+++ b/doc/_static/api/nav_g.png
Binary files differ
diff --git a/doc/_static/api/nav_h.png b/doc/_static/api/nav_h.png
new file mode 100644
index 0000000..0079c13
--- /dev/null
+++ b/doc/_static/api/nav_h.png
Binary files differ
diff --git a/doc/_static/api/nvidia.png b/doc/_static/api/nvidia.png
new file mode 100644
index 0000000..0808daa
--- /dev/null
+++ b/doc/_static/api/nvidia.png
Binary files differ
diff --git a/doc/_static/api/open.png b/doc/_static/api/open.png
new file mode 100644
index 0000000..69c1c97
--- /dev/null
+++ b/doc/_static/api/open.png
Binary files differ
diff --git a/doc/_static/api/splitbar.png b/doc/_static/api/splitbar.png
new file mode 100644
index 0000000..4e00de7
--- /dev/null
+++ b/doc/_static/api/splitbar.png
Binary files differ
diff --git a/doc/_static/api/struct_nv_flex_solver_callback.html b/doc/_static/api/struct_nv_flex_solver_callback.html
new file mode 100644
index 0000000..d96d2d2
--- /dev/null
+++ b/doc/_static/api/struct_nv_flex_solver_callback.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: NvFlexSolverCallback Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle">
+<div class="title">NvFlexSolverCallback Struct Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a2878301f697313b3ef3ad1bc2410c915"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_solver_callback.html#a2878301f697313b3ef3ad1bc2410c915">userData</a></td></tr>
+<tr class="separator:a2878301f697313b3ef3ad1bc2410c915"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a728134bf4d667b207539d7318e42e92a"><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_solver_callback.html#a728134bf4d667b207539d7318e42e92a">function</a> )(<a class="el" href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a> params)</td></tr>
+<tr class="separator:a728134bf4d667b207539d7318e42e92a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Solver callback definition, see <a class="el" href="_nv_flex_8h.html#ac5427457488ab3f2de91cf65335dda08">NvFlexRegisterSolverCallback()</a> </p>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a class="anchor" id="a2878301f697313b3ef3ad1bc2410c915"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void* NvFlexSolverCallback::userData</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>User data passed to the callback </p>
+
+</div>
+</div>
+<a class="anchor" id="a728134bf4d667b207539d7318e42e92a"></a>
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void(* NvFlexSolverCallback::function) (<a class="el" href="_nv_flex_8h.html#struct_nv_flex_solver_callback_params">NvFlexSolverCallbackParams</a> params)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p>Function pointer to a callback method </p>
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/struct_nv_flex_vector.html b/doc/_static/api/struct_nv_flex_vector.html
new file mode 100644
index 0000000..fa3a3d8
--- /dev/null
+++ b/doc/_static/api/struct_nv_flex_vector.html
@@ -0,0 +1,693 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.9.1"/>
+<title>FLEX: NvFlexVector&lt; T &gt; Struct Template Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="flex.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+ <td id="projectlogo"><img alt="Logo" src="nvidia.png"/></td>
+ <td style="padding-left: 0.5em;">
+ <div id="projectname">FLEX
+ &#160;<span id="projectnumber">1.1.0</span>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.9.1 -->
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle">
+<div class="title">NvFlexVector&lt; T &gt; Struct Template Reference</div> </div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a9d7ff86aeebc0fcfa5c125d7872e2e3b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a9d7ff86aeebc0fcfa5c125d7872e2e3b">NvFlexVector</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *l, int <a class="el" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>=0)</td></tr>
+<tr class="separator:a9d7ff86aeebc0fcfa5c125d7872e2e3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a026d8fcd71bb256610401cc861345428"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a026d8fcd71bb256610401cc861345428">NvFlexVector</a> (<a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *l, const T *ptr, int <a class="el" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>)</td></tr>
+<tr class="separator:a026d8fcd71bb256610401cc861345428"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afb9c0f47544c0cdebe21efb6908dd3a0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#afb9c0f47544c0cdebe21efb6908dd3a0">~NvFlexVector</a> ()</td></tr>
+<tr class="separator:afb9c0f47544c0cdebe21efb6908dd3a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0309d584abbe900d3af3823a79e89ee7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a0309d584abbe900d3af3823a79e89ee7">init</a> (int <a class="el" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a>)</td></tr>
+<tr class="separator:a0309d584abbe900d3af3823a79e89ee7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ade3c494ee6e75e54a6ba73d6bc100bd9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#ade3c494ee6e75e54a6ba73d6bc100bd9">destroy</a> ()</td></tr>
+<tr class="separator:ade3c494ee6e75e54a6ba73d6bc100bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a56640fd10b06a4024a4bf01c306c436b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a56640fd10b06a4024a4bf01c306c436b">map</a> (int flags=<a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a>)</td></tr>
+<tr class="separator:a56640fd10b06a4024a4bf01c306c436b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afca9914468beb61f6c98bc052e2af5e0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#afca9914468beb61f6c98bc052e2af5e0">unmap</a> ()</td></tr>
+<tr class="separator:afca9914468beb61f6c98bc052e2af5e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3871fbd5422c9b3f41bd5dc2046e1aa7"><td class="memItemLeft" align="right" valign="top">const T &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a3871fbd5422c9b3f41bd5dc2046e1aa7">operator[]</a> (int index) const </td></tr>
+<tr class="separator:a3871fbd5422c9b3f41bd5dc2046e1aa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a769d5ad0723a3fceac7951967e8b4d03"><td class="memItemLeft" align="right" valign="top">T &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a769d5ad0723a3fceac7951967e8b4d03">operator[]</a> (int index)</td></tr>
+<tr class="separator:a769d5ad0723a3fceac7951967e8b4d03"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a98584303358b70fd12ead231cd750335"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a98584303358b70fd12ead231cd750335">push_back</a> (const T &amp;t)</td></tr>
+<tr class="separator:a98584303358b70fd12ead231cd750335"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acd29b9b2b27e53e3640c24da6959e3cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#acd29b9b2b27e53e3640c24da6959e3cd">assign</a> (const T *srcPtr, int newCount)</td></tr>
+<tr class="separator:acd29b9b2b27e53e3640c24da6959e3cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a225da2c753ca0bb95b570c303f0cd761"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a225da2c753ca0bb95b570c303f0cd761">copyto</a> (T *dest, int <a class="el" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a>)</td></tr>
+<tr class="separator:a225da2c753ca0bb95b570c303f0cd761"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1933b633e9055d9adf8b62c4aa8a3bc0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a1933b633e9055d9adf8b62c4aa8a3bc0">size</a> () const </td></tr>
+<tr class="separator:a1933b633e9055d9adf8b62c4aa8a3bc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a73f78b1efc76c96666a96a79064670c5"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a73f78b1efc76c96666a96a79064670c5">empty</a> () const </td></tr>
+<tr class="separator:a73f78b1efc76c96666a96a79064670c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a37fbf38300ea57635af4b60c934e9f46"><td class="memItemLeft" align="right" valign="top">const T &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a37fbf38300ea57635af4b60c934e9f46">back</a> () const </td></tr>
+<tr class="separator:a37fbf38300ea57635af4b60c934e9f46"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae0e6ce694fb95a50c2974c6c2cc0ffc8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#ae0e6ce694fb95a50c2974c6c2cc0ffc8">reserve</a> (int minCapacity)</td></tr>
+<tr class="separator:ae0e6ce694fb95a50c2974c6c2cc0ffc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6c4a1f4acb4d6275c9e1ac01d4e35ab1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a6c4a1f4acb4d6275c9e1ac01d4e35ab1">resize</a> (int newCount)</td></tr>
+<tr class="separator:a6c4a1f4acb4d6275c9e1ac01d4e35ab1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a36a3fd5e42c5d8005f72bcc43217cf37"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#a36a3fd5e42c5d8005f72bcc43217cf37">resize</a> (int newCount, const T &amp;val)</td></tr>
+<tr class="separator:a36a3fd5e42c5d8005f72bcc43217cf37"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:ab08ce71766df91fc9201a61a48054d0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#ab08ce71766df91fc9201a61a48054d0c">lib</a></td></tr>
+<tr class="separator:ab08ce71766df91fc9201a61a48054d0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa408aa5327d07f69fc12314df2d5dcfb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#aa408aa5327d07f69fc12314df2d5dcfb">buffer</a></td></tr>
+<tr class="separator:aa408aa5327d07f69fc12314df2d5dcfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa4422fcaa24d5bbd71aa7772639512b9"><td class="memItemLeft" align="right" valign="top">T *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#aa4422fcaa24d5bbd71aa7772639512b9">mappedPtr</a></td></tr>
+<tr class="separator:aa4422fcaa24d5bbd71aa7772639512b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad462ae46f0270161c79572762b558124"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#ad462ae46f0270161c79572762b558124">count</a></td></tr>
+<tr class="separator:ad462ae46f0270161c79572762b558124"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac28b5fd10fd519265c66cf4a0ce8e6ae"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_nv_flex_vector.html#ac28b5fd10fd519265c66cf4a0ce8e6ae">capacity</a></td></tr>
+<tr class="separator:ac28b5fd10fd519265c66cf4a0ce8e6ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="a9d7ff86aeebc0fcfa5c125d7872e2e3b"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::<a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a> </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>l</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>size</em> = <code>0</code>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a026d8fcd71bb256610401cc861345428"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::<a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a> </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a> *&#160;</td>
+ <td class="paramname"><em>l</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const T *&#160;</td>
+ <td class="paramname"><em>ptr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>size</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="afb9c0f47544c0cdebe21efb6908dd3a0"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::~<a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a> </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="a0309d584abbe900d3af3823a79e89ee7"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::init </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>size</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ade3c494ee6e75e54a6ba73d6bc100bd9"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::destroy </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a56640fd10b06a4024a4bf01c306c436b"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::map </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>flags</em> = <code><a class="el" href="_nv_flex_8h.html#a6541b33eaca7b2323e73b30cea34d16ca11adf517d180983daec217e761acc3d6">eNvFlexMapWait</a></code></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="afca9914468beb61f6c98bc052e2af5e0"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::unmap </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a3871fbd5422c9b3f41bd5dc2046e1aa7"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">const T&amp; <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>index</em></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a769d5ad0723a3fceac7951967e8b4d03"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">T&amp; <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::operator[] </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>index</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a98584303358b70fd12ead231cd750335"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::push_back </td>
+ <td>(</td>
+ <td class="paramtype">const T &amp;&#160;</td>
+ <td class="paramname"><em>t</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="acd29b9b2b27e53e3640c24da6959e3cd"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::assign </td>
+ <td>(</td>
+ <td class="paramtype">const T *&#160;</td>
+ <td class="paramname"><em>srcPtr</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>newCount</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a225da2c753ca0bb95b570c303f0cd761"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::copyto </td>
+ <td>(</td>
+ <td class="paramtype">T *&#160;</td>
+ <td class="paramname"><em>dest</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a1933b633e9055d9adf8b62c4aa8a3bc0"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::size </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a73f78b1efc76c96666a96a79064670c5"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::empty </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a37fbf38300ea57635af4b60c934e9f46"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">const T&amp; <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::back </td>
+ <td>(</td>
+ <td class="paramname"></td><td>)</td>
+ <td> const</td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ae0e6ce694fb95a50c2974c6c2cc0ffc8"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::reserve </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>minCapacity</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6c4a1f4acb4d6275c9e1ac01d4e35ab1"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::resize </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>newCount</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a36a3fd5e42c5d8005f72bcc43217cf37"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+<table class="mlabels">
+ <tr>
+ <td class="mlabels-left">
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::resize </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>newCount</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const T &amp;&#160;</td>
+ <td class="paramname"><em>val</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+ </td>
+ <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">inline</span></span> </td>
+ </tr>
+</table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Field Documentation</h2>
+<a class="anchor" id="ab08ce71766df91fc9201a61a48054d0c"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="_nv_flex_8h.html#a3078976e98f370a9fbdb11db80f1f318">NvFlexLibrary</a>* <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::lib</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa408aa5327d07f69fc12314df2d5dcfb"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="_nv_flex_8h.html#a50a3933d3f7b77d0500c702b1fa9ba9a">NvFlexBuffer</a>* <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::buffer</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa4422fcaa24d5bbd71aa7772639512b9"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">T* <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::mappedPtr</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ad462ae46f0270161c79572762b558124"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::count</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ac28b5fd10fd519265c66cf4a0ce8e6ae"></a>
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;typename T &gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="struct_nv_flex_vector.html">NvFlexVector</a>&lt; T &gt;::capacity</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated on Wed Feb 22 2017 12:18:22 for FLEX by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.9.1
+</small></address>
+</body>
+</html>
diff --git a/doc/_static/api/sync_off.png b/doc/_static/api/sync_off.png
new file mode 100644
index 0000000..3177824
--- /dev/null
+++ b/doc/_static/api/sync_off.png
Binary files differ
diff --git a/doc/_static/api/sync_on.png b/doc/_static/api/sync_on.png
new file mode 100644
index 0000000..8c2c857
--- /dev/null
+++ b/doc/_static/api/sync_on.png
Binary files differ
diff --git a/doc/_static/api/tab_a.png b/doc/_static/api/tab_a.png
new file mode 100644
index 0000000..7ab2dd5
--- /dev/null
+++ b/doc/_static/api/tab_a.png
Binary files differ
diff --git a/doc/_static/api/tab_b.png b/doc/_static/api/tab_b.png
new file mode 100644
index 0000000..9408294
--- /dev/null
+++ b/doc/_static/api/tab_b.png
Binary files differ
diff --git a/doc/_static/api/tab_h.png b/doc/_static/api/tab_h.png
new file mode 100644
index 0000000..75cc5ba
--- /dev/null
+++ b/doc/_static/api/tab_h.png
Binary files differ
diff --git a/doc/_static/api/tab_s.png b/doc/_static/api/tab_s.png
new file mode 100644
index 0000000..5ad6558
--- /dev/null
+++ b/doc/_static/api/tab_s.png
Binary files differ
diff --git a/doc/_static/api/tabs.css b/doc/_static/api/tabs.css
new file mode 100644
index 0000000..1760161
--- /dev/null
+++ b/doc/_static/api/tabs.css
@@ -0,0 +1,60 @@
+.tabs, .tabs2, .tabs3 {
+ background-image: url('tab_b.png');
+ width: 100%;
+ z-index: 101;
+ font-size: 13px;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+.tabs2 {
+ font-size: 10px;
+}
+.tabs3 {
+ font-size: 9px;
+}
+
+.tablist {
+ margin: 0;
+ padding: 0;
+ display: table;
+}
+
+.tablist li {
+ float: left;
+ display: table-cell;
+ background-image: url('tab_b.png');
+ line-height: 36px;
+ list-style: none;
+}
+
+.tablist a {
+ display: block;
+ padding: 0 20px;
+ font-weight: bold;
+ background-image:url('tab_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color: #3E5035;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+ outline: none;
+}
+
+.tabs3 .tablist a {
+ padding: 0 10px;
+}
+
+.tablist a:hover {
+ background-image: url('tab_h.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+ text-decoration: none;
+}
+
+.tablist li.current a {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
diff --git a/doc/_static/application.css b/doc/_static/application.css
new file mode 100644
index 0000000..66d0a72
--- /dev/null
+++ b/doc/_static/application.css
@@ -0,0 +1,8990 @@
+/*! normalize.css v2.1.3 | MIT License | git.io/normalize */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+ display: block;
+}
+audio,
+canvas,
+video {
+ display: inline-block;
+}
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+[hidden],
+template {
+ display: none;
+}
+html {
+ font-family: sans-serif;
+ -ms-text-size-adjust: 100%;
+ -webkit-text-size-adjust: 100%;
+}
+body {
+ margin: 0;
+}
+a {
+ background: transparent;
+}
+a:focus {
+ outline: thin dotted;
+}
+a:active,
+a:hover {
+ outline: 0;
+}
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+b,
+strong {
+ font-weight: bold;
+}
+dfn {
+ font-style: italic;
+}
+hr {
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ height: 0;
+}
+mark {
+ background: #ff0;
+ color: #000;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, serif;
+ font-size: 1em;
+}
+pre {
+ white-space: pre-wrap;
+}
+q {
+ quotes: "\201C" "\201D" "\2018" "\2019";
+}
+small {
+ font-size: 80%;
+}
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+sup {
+ top: -0.5em;
+}
+sub {
+ bottom: -0.25em;
+}
+img {
+ border: 0;
+}
+svg:not(:root) {
+ overflow: hidden;
+}
+figure {
+ margin: 0;
+}
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+legend {
+ border: 0;
+ padding: 0;
+}
+button,
+input,
+select,
+textarea {
+ font-family: inherit;
+ font-size: 100%;
+ margin: 0;
+}
+button,
+input {
+ line-height: normal;
+}
+button,
+select {
+ text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box;
+ padding: 0;
+}
+input[type="search"] {
+ -webkit-appearance: textfield;
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+textarea {
+ overflow: auto;
+ vertical-align: top;
+}
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+@media print {
+ * {
+ text-shadow: none !important;
+ color: #000 !important;
+ background: transparent !important;
+ box-shadow: none !important;
+ }
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+ a[href^="javascript:"]:after,
+ a[href^="#"]:after {
+ content: "";
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ img {
+ max-width: 100% !important;
+ }
+ @page {
+ margin: 2cm .5cm;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ select {
+ background: #fff !important;
+ }
+ .navbar {
+ display: none;
+ }
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
+ .btn > .caret,
+ .dropup > .btn > .caret {
+ border-top-color: #000 !important;
+ }
+ .label {
+ border: 1px solid #000;
+ }
+ .table {
+ border-collapse: collapse !important;
+ }
+ .table-bordered th,
+ .table-bordered td {
+ border: 1px solid #ddd !important;
+ }
+}
+*,
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+html {
+ font-size: 62.5%;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+ font-family: "Roboto", Trebuchet, Helvetica, Arial, sans-serif;
+ font-size: 16px;
+ line-height: 1.5;
+ color: #333333;
+ background-color: #fcfcfc;
+}
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+a {
+ color: #76b900;
+ text-decoration: none;
+}
+a:hover,
+a:focus {
+ color: #76b900;
+ text-decoration: underline;
+}
+a:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+img {
+ vertical-align: middle;
+}
+.img-responsive {
+ display: block;
+ max-width: 100%;
+ height: auto;
+}
+.img-rounded {
+ border-radius: 0px;
+}
+.img-thumbnail {
+ padding: 4px;
+ line-height: 1.5;
+ background-color: #fcfcfc;
+ border: 1px solid #dddddd;
+ border-radius: 0px;
+ -webkit-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+ display: inline-block;
+ max-width: 100%;
+ height: auto;
+}
+.img-circle {
+ border-radius: 50%;
+}
+hr {
+ margin-top: 24px;
+ margin-bottom: 24px;
+ border: 0;
+ border-top: 1px solid #efefef;
+}
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ margin: -1px;
+ padding: 0;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: "Roboto", Trebuchet, Helvetica, Arial, sans-serif;
+ font-weight: 600;
+ line-height: 1.1;
+ color: #004e49;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+ font-weight: normal;
+ line-height: 1;
+ color: #999999;
+}
+h1,
+h2,
+h3 {
+ margin-top: 24px;
+ margin-bottom: 12px;
+}
+h1 small,
+h2 small,
+h3 small,
+h1 .small,
+h2 .small,
+h3 .small {
+ font-size: 65%;
+}
+h4,
+h5,
+h6 {
+ margin-top: 12px;
+ margin-bottom: 12px;
+}
+h4 small,
+h5 small,
+h6 small,
+h4 .small,
+h5 .small,
+h6 .small {
+ font-size: 75%;
+}
+h1,
+.h1 {
+ font-size: 41px;
+}
+h2,
+.h2 {
+ font-size: 34px;
+}
+h3,
+.h3 {
+ font-size: 28px;
+}
+h4,
+.h4 {
+ font-size: 20px;
+}
+h5,
+.h5 {
+ font-size: 16px;
+}
+h6,
+.h6 {
+ font-size: 14px;
+}
+p {
+ margin: 0 0 12px;
+}
+.lead {
+ margin-bottom: 24px;
+ font-size: 18px;
+ font-weight: 200;
+ line-height: 1.4;
+}
+@media (min-width: 768px) {
+ .lead {
+ font-size: 24px;
+ }
+}
+small,
+.small {
+ font-size: 85%;
+}
+cite {
+ font-style: normal;
+}
+.text-muted {
+ color: #999999;
+}
+.text-primary {
+ color: #76b900;
+}
+.text-primary:hover {
+ color: #558600;
+}
+.text-warning {
+ color: #8a6d3b;
+}
+.text-warning:hover {
+ color: #66512c;
+}
+.text-danger {
+ color: #a94442;
+}
+.text-danger:hover {
+ color: #843534;
+}
+.text-success {
+ color: #3c763d;
+}
+.text-success:hover {
+ color: #2b542c;
+}
+.text-info {
+ color: #31708f;
+}
+.text-info:hover {
+ color: #245269;
+}
+.text-left {
+ text-align: left;
+}
+.text-right {
+ text-align: right;
+}
+.text-center {
+ text-align: center;
+}
+.page-header {
+ padding-bottom: 11px;
+ margin: 48px 0 24px;
+ border-bottom: 1px solid #efefef;
+}
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 12px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
+}
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+.list-inline {
+ padding-left: 0;
+ list-style: none;
+}
+.list-inline > li {
+ display: inline-block;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+.list-inline > li:first-child {
+ padding-left: 0;
+}
+dl {
+ margin-top: 0;
+ margin-bottom: 24px;
+}
+dt,
+dd {
+ line-height: 1.5;
+}
+dt {
+ font-weight: bold;
+}
+dd {
+ margin-left: 0;
+}
+@media (min-width: 992px) {
+ .dl-horizontal dt {
+ float: left;
+ width: 160px;
+ clear: left;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .dl-horizontal dd {
+ margin-left: 180px;
+ }
+ .dl-horizontal dd:before,
+ .dl-horizontal dd:after {
+ content: " ";
+ display: table;
+ }
+ .dl-horizontal dd:after {
+ clear: both;
+ }
+ .dl-horizontal dd:before,
+ .dl-horizontal dd:after {
+ content: " ";
+ display: table;
+ }
+ .dl-horizontal dd:after {
+ clear: both;
+ }
+}
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #999999;
+}
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+blockquote {
+ padding: 12px 24px;
+ margin: 0 0 24px;
+ border-left: 5px solid #efefef;
+}
+blockquote p {
+ font-size: 20px;
+ font-weight: 300;
+ line-height: 1.25;
+}
+blockquote p:last-child {
+ margin-bottom: 0;
+}
+blockquote small,
+blockquote .small {
+ display: block;
+ line-height: 1.5;
+ color: #999999;
+}
+blockquote small:before,
+blockquote .small:before {
+ content: '\2014 \00A0';
+}
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #efefef;
+ border-left: 0;
+}
+blockquote.pull-right p,
+blockquote.pull-right small,
+blockquote.pull-right .small {
+ text-align: right;
+}
+blockquote.pull-right small:before,
+blockquote.pull-right .small:before {
+ content: '';
+}
+blockquote.pull-right small:after,
+blockquote.pull-right .small:after {
+ content: '\00A0 \2014';
+}
+blockquote:before,
+blockquote:after {
+ content: "";
+}
+address {
+ margin-bottom: 24px;
+ font-style: normal;
+ line-height: 1.5;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+code {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #c7254e;
+ background-color: #f9f2f4;
+ white-space: nowrap;
+ border-radius: 0px;
+}
+pre {
+ display: block;
+ padding: 11.5px;
+ margin: 0 0 12px;
+ font-size: 15px;
+ line-height: 1.5;
+ word-break: break-all;
+ word-wrap: break-word;
+ color: #595959;
+ background-color: #f5f5f5;
+ border: 1px solid #cccccc;
+ border-radius: 0px;
+}
+pre code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border-radius: 0;
+}
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+.container {
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 10px;
+ padding-right: 10px;
+}
+.container:before,
+.container:after {
+ content: " ";
+ display: table;
+}
+.container:after {
+ clear: both;
+}
+.container:before,
+.container:after {
+ content: " ";
+ display: table;
+}
+.container:after {
+ clear: both;
+}
+@media (min-width: 768px) {
+ .container {
+ width: 740px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ width: 960px;
+ }
+}
+@media (min-width: 1200px) {
+ .container {
+ width: 1160px;
+ }
+}
+.row {
+ margin-left: 10px;
+}
+.row:before,
+.row:after {
+ content: " ";
+ display: table;
+}
+.row:after {
+ clear: both;
+}
+.row:before,
+.row:after {
+ content: " ";
+ display: table;
+}
+.row:after {
+ clear: both;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+ position: relative;
+ min-height: 1px;
+ padding-left: 10px;
+ padding-right: 10px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+ float: left;
+}
+.col-xs-12 {
+ width: 100%;
+}
+.col-xs-11 {
+ width: 91.66666666666666%;
+}
+.col-xs-10 {
+ width: 83.33333333333334%;
+}
+.col-xs-9 {
+ width: 75%;
+}
+.col-xs-8 {
+ width: 66.66666666666666%;
+}
+.col-xs-7 {
+ width: 58.333333333333336%;
+}
+.col-xs-6 {
+ width: 50%;
+}
+.col-xs-5 {
+ width: 41.66666666666667%;
+}
+.col-xs-4 {
+ width: 33.33333333333333%;
+}
+.col-xs-3 {
+ width: 25%;
+}
+.col-xs-2 {
+ width: 16.666666666666664%;
+}
+.col-xs-1 {
+ width: 8.333333333333332%;
+}
+.col-xs-pull-12 {
+ right: 100%;
+}
+.col-xs-pull-11 {
+ right: 91.66666666666666%;
+}
+.col-xs-pull-10 {
+ right: 83.33333333333334%;
+}
+.col-xs-pull-9 {
+ right: 75%;
+}
+.col-xs-pull-8 {
+ right: 66.66666666666666%;
+}
+.col-xs-pull-7 {
+ right: 58.333333333333336%;
+}
+.col-xs-pull-6 {
+ right: 50%;
+}
+.col-xs-pull-5 {
+ right: 41.66666666666667%;
+}
+.col-xs-pull-4 {
+ right: 33.33333333333333%;
+}
+.col-xs-pull-3 {
+ right: 25%;
+}
+.col-xs-pull-2 {
+ right: 16.666666666666664%;
+}
+.col-xs-pull-1 {
+ right: 8.333333333333332%;
+}
+.col-xs-pull-0 {
+ right: 0%;
+}
+.col-xs-push-12 {
+ left: 100%;
+}
+.col-xs-push-11 {
+ left: 91.66666666666666%;
+}
+.col-xs-push-10 {
+ left: 83.33333333333334%;
+}
+.col-xs-push-9 {
+ left: 75%;
+}
+.col-xs-push-8 {
+ left: 66.66666666666666%;
+}
+.col-xs-push-7 {
+ left: 58.333333333333336%;
+}
+.col-xs-push-6 {
+ left: 50%;
+}
+.col-xs-push-5 {
+ left: 41.66666666666667%;
+}
+.col-xs-push-4 {
+ left: 33.33333333333333%;
+}
+.col-xs-push-3 {
+ left: 25%;
+}
+.col-xs-push-2 {
+ left: 16.666666666666664%;
+}
+.col-xs-push-1 {
+ left: 8.333333333333332%;
+}
+.col-xs-push-0 {
+ left: 0%;
+}
+.col-xs-offset-12 {
+ margin-left: 100%;
+}
+.col-xs-offset-11 {
+ margin-left: 91.66666666666666%;
+}
+.col-xs-offset-10 {
+ margin-left: 83.33333333333334%;
+}
+.col-xs-offset-9 {
+ margin-left: 75%;
+}
+.col-xs-offset-8 {
+ margin-left: 66.66666666666666%;
+}
+.col-xs-offset-7 {
+ margin-left: 58.333333333333336%;
+}
+.col-xs-offset-6 {
+ margin-left: 50%;
+}
+.col-xs-offset-5 {
+ margin-left: 41.66666666666667%;
+}
+.col-xs-offset-4 {
+ margin-left: 33.33333333333333%;
+}
+.col-xs-offset-3 {
+ margin-left: 25%;
+}
+.col-xs-offset-2 {
+ margin-left: 16.666666666666664%;
+}
+.col-xs-offset-1 {
+ margin-left: 8.333333333333332%;
+}
+.col-xs-offset-0 {
+ margin-left: 0%;
+}
+@media (min-width: 768px) {
+ .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+ float: left;
+ }
+ .col-sm-12 {
+ width: 100%;
+ }
+ .col-sm-11 {
+ width: 91.66666666666666%;
+ }
+ .col-sm-10 {
+ width: 83.33333333333334%;
+ }
+ .col-sm-9 {
+ width: 75%;
+ }
+ .col-sm-8 {
+ width: 66.66666666666666%;
+ }
+ .col-sm-7 {
+ width: 58.333333333333336%;
+ }
+ .col-sm-6 {
+ width: 50%;
+ }
+ .col-sm-5 {
+ width: 41.66666666666667%;
+ }
+ .col-sm-4 {
+ width: 33.33333333333333%;
+ }
+ .col-sm-3 {
+ width: 25%;
+ }
+ .col-sm-2 {
+ width: 16.666666666666664%;
+ }
+ .col-sm-1 {
+ width: 8.333333333333332%;
+ }
+ .col-sm-pull-12 {
+ right: 100%;
+ }
+ .col-sm-pull-11 {
+ right: 91.66666666666666%;
+ }
+ .col-sm-pull-10 {
+ right: 83.33333333333334%;
+ }
+ .col-sm-pull-9 {
+ right: 75%;
+ }
+ .col-sm-pull-8 {
+ right: 66.66666666666666%;
+ }
+ .col-sm-pull-7 {
+ right: 58.333333333333336%;
+ }
+ .col-sm-pull-6 {
+ right: 50%;
+ }
+ .col-sm-pull-5 {
+ right: 41.66666666666667%;
+ }
+ .col-sm-pull-4 {
+ right: 33.33333333333333%;
+ }
+ .col-sm-pull-3 {
+ right: 25%;
+ }
+ .col-sm-pull-2 {
+ right: 16.666666666666664%;
+ }
+ .col-sm-pull-1 {
+ right: 8.333333333333332%;
+ }
+ .col-sm-pull-0 {
+ right: 0%;
+ }
+ .col-sm-push-12 {
+ left: 100%;
+ }
+ .col-sm-push-11 {
+ left: 91.66666666666666%;
+ }
+ .col-sm-push-10 {
+ left: 83.33333333333334%;
+ }
+ .col-sm-push-9 {
+ left: 75%;
+ }
+ .col-sm-push-8 {
+ left: 66.66666666666666%;
+ }
+ .col-sm-push-7 {
+ left: 58.333333333333336%;
+ }
+ .col-sm-push-6 {
+ left: 50%;
+ }
+ .col-sm-push-5 {
+ left: 41.66666666666667%;
+ }
+ .col-sm-push-4 {
+ left: 33.33333333333333%;
+ }
+ .col-sm-push-3 {
+ left: 25%;
+ }
+ .col-sm-push-2 {
+ left: 16.666666666666664%;
+ }
+ .col-sm-push-1 {
+ left: 8.333333333333332%;
+ }
+ .col-sm-push-0 {
+ left: 0%;
+ }
+ .col-sm-offset-12 {
+ margin-left: 100%;
+ }
+ .col-sm-offset-11 {
+ margin-left: 91.66666666666666%;
+ }
+ .col-sm-offset-10 {
+ margin-left: 83.33333333333334%;
+ }
+ .col-sm-offset-9 {
+ margin-left: 75%;
+ }
+ .col-sm-offset-8 {
+ margin-left: 66.66666666666666%;
+ }
+ .col-sm-offset-7 {
+ margin-left: 58.333333333333336%;
+ }
+ .col-sm-offset-6 {
+ margin-left: 50%;
+ }
+ .col-sm-offset-5 {
+ margin-left: 41.66666666666667%;
+ }
+ .col-sm-offset-4 {
+ margin-left: 33.33333333333333%;
+ }
+ .col-sm-offset-3 {
+ margin-left: 25%;
+ }
+ .col-sm-offset-2 {
+ margin-left: 16.666666666666664%;
+ }
+ .col-sm-offset-1 {
+ margin-left: 8.333333333333332%;
+ }
+ .col-sm-offset-0 {
+ margin-left: 0%;
+ }
+}
+@media (min-width: 992px) {
+ .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+ float: left;
+ }
+ .col-md-12 {
+ width: 100%;
+ }
+ .col-md-11 {
+ width: 91.66666666666666%;
+ }
+ .col-md-10 {
+ width: 83.33333333333334%;
+ }
+ .col-md-9 {
+ width: 75%;
+ }
+ .col-md-8 {
+ width: 66.66666666666666%;
+ }
+ .col-md-7 {
+ width: 58.333333333333336%;
+ }
+ .col-md-6 {
+ width: 50%;
+ }
+ .col-md-5 {
+ width: 41.66666666666667%;
+ }
+ .col-md-4 {
+ width: 33.33333333333333%;
+ }
+ .col-md-3 {
+ width: 25%;
+ }
+ .col-md-2 {
+ width: 16.666666666666664%;
+ }
+ .col-md-1 {
+ width: 8.333333333333332%;
+ }
+ .col-md-pull-12 {
+ right: 100%;
+ }
+ .col-md-pull-11 {
+ right: 91.66666666666666%;
+ }
+ .col-md-pull-10 {
+ right: 83.33333333333334%;
+ }
+ .col-md-pull-9 {
+ right: 75%;
+ }
+ .col-md-pull-8 {
+ right: 66.66666666666666%;
+ }
+ .col-md-pull-7 {
+ right: 58.333333333333336%;
+ }
+ .col-md-pull-6 {
+ right: 50%;
+ }
+ .col-md-pull-5 {
+ right: 41.66666666666667%;
+ }
+ .col-md-pull-4 {
+ right: 33.33333333333333%;
+ }
+ .col-md-pull-3 {
+ right: 25%;
+ }
+ .col-md-pull-2 {
+ right: 16.666666666666664%;
+ }
+ .col-md-pull-1 {
+ right: 8.333333333333332%;
+ }
+ .col-md-pull-0 {
+ right: 0%;
+ }
+ .col-md-push-12 {
+ left: 100%;
+ }
+ .col-md-push-11 {
+ left: 91.66666666666666%;
+ }
+ .col-md-push-10 {
+ left: 83.33333333333334%;
+ }
+ .col-md-push-9 {
+ left: 75%;
+ }
+ .col-md-push-8 {
+ left: 66.66666666666666%;
+ }
+ .col-md-push-7 {
+ left: 58.333333333333336%;
+ }
+ .col-md-push-6 {
+ left: 50%;
+ }
+ .col-md-push-5 {
+ left: 41.66666666666667%;
+ }
+ .col-md-push-4 {
+ left: 33.33333333333333%;
+ }
+ .col-md-push-3 {
+ left: 25%;
+ }
+ .col-md-push-2 {
+ left: 16.666666666666664%;
+ }
+ .col-md-push-1 {
+ left: 8.333333333333332%;
+ }
+ .col-md-push-0 {
+ left: 0%;
+ }
+ .col-md-offset-12 {
+ margin-left: 100%;
+ }
+ .col-md-offset-11 {
+ margin-left: 91.66666666666666%;
+ }
+ .col-md-offset-10 {
+ margin-left: 83.33333333333334%;
+ }
+ .col-md-offset-9 {
+ margin-left: 75%;
+ }
+ .col-md-offset-8 {
+ margin-left: 66.66666666666666%;
+ }
+ .col-md-offset-7 {
+ margin-left: 58.333333333333336%;
+ }
+ .col-md-offset-6 {
+ margin-left: 50%;
+ }
+ .col-md-offset-5 {
+ margin-left: 41.66666666666667%;
+ }
+ .col-md-offset-4 {
+ margin-left: 33.33333333333333%;
+ }
+ .col-md-offset-3 {
+ margin-left: 25%;
+ }
+ .col-md-offset-2 {
+ margin-left: 16.666666666666664%;
+ }
+ .col-md-offset-1 {
+ margin-left: 8.333333333333332%;
+ }
+ .col-md-offset-0 {
+ margin-left: 0%;
+ }
+}
+@media (min-width: 1200px) {
+ .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+ float: left;
+ }
+ .col-lg-12 {
+ width: 100%;
+ }
+ .col-lg-11 {
+ width: 91.66666666666666%;
+ }
+ .col-lg-10 {
+ width: 83.33333333333334%;
+ }
+ .col-lg-9 {
+ width: 75%;
+ }
+ .col-lg-8 {
+ width: 66.66666666666666%;
+ }
+ .col-lg-7 {
+ width: 58.333333333333336%;
+ }
+ .col-lg-6 {
+ width: 50%;
+ }
+ .col-lg-5 {
+ width: 41.66666666666667%;
+ }
+ .col-lg-4 {
+ width: 33.33333333333333%;
+ }
+ .col-lg-3 {
+ width: 25%;
+ }
+ .col-lg-2 {
+ width: 16.666666666666664%;
+ }
+ .col-lg-1 {
+ width: 8.333333333333332%;
+ }
+ .col-lg-pull-12 {
+ right: 100%;
+ }
+ .col-lg-pull-11 {
+ right: 91.66666666666666%;
+ }
+ .col-lg-pull-10 {
+ right: 83.33333333333334%;
+ }
+ .col-lg-pull-9 {
+ right: 75%;
+ }
+ .col-lg-pull-8 {
+ right: 66.66666666666666%;
+ }
+ .col-lg-pull-7 {
+ right: 58.333333333333336%;
+ }
+ .col-lg-pull-6 {
+ right: 50%;
+ }
+ .col-lg-pull-5 {
+ right: 41.66666666666667%;
+ }
+ .col-lg-pull-4 {
+ right: 33.33333333333333%;
+ }
+ .col-lg-pull-3 {
+ right: 25%;
+ }
+ .col-lg-pull-2 {
+ right: 16.666666666666664%;
+ }
+ .col-lg-pull-1 {
+ right: 8.333333333333332%;
+ }
+ .col-lg-pull-0 {
+ right: 0%;
+ }
+ .col-lg-push-12 {
+ left: 100%;
+ }
+ .col-lg-push-11 {
+ left: 91.66666666666666%;
+ }
+ .col-lg-push-10 {
+ left: 83.33333333333334%;
+ }
+ .col-lg-push-9 {
+ left: 75%;
+ }
+ .col-lg-push-8 {
+ left: 66.66666666666666%;
+ }
+ .col-lg-push-7 {
+ left: 58.333333333333336%;
+ }
+ .col-lg-push-6 {
+ left: 50%;
+ }
+ .col-lg-push-5 {
+ left: 41.66666666666667%;
+ }
+ .col-lg-push-4 {
+ left: 33.33333333333333%;
+ }
+ .col-lg-push-3 {
+ left: 25%;
+ }
+ .col-lg-push-2 {
+ left: 16.666666666666664%;
+ }
+ .col-lg-push-1 {
+ left: 8.333333333333332%;
+ }
+ .col-lg-push-0 {
+ left: 0%;
+ }
+ .col-lg-offset-12 {
+ margin-left: 100%;
+ }
+ .col-lg-offset-11 {
+ margin-left: 91.66666666666666%;
+ }
+ .col-lg-offset-10 {
+ margin-left: 83.33333333333334%;
+ }
+ .col-lg-offset-9 {
+ margin-left: 75%;
+ }
+ .col-lg-offset-8 {
+ margin-left: 66.66666666666666%;
+ }
+ .col-lg-offset-7 {
+ margin-left: 58.333333333333336%;
+ }
+ .col-lg-offset-6 {
+ margin-left: 50%;
+ }
+ .col-lg-offset-5 {
+ margin-left: 41.66666666666667%;
+ }
+ .col-lg-offset-4 {
+ margin-left: 33.33333333333333%;
+ }
+ .col-lg-offset-3 {
+ margin-left: 25%;
+ }
+ .col-lg-offset-2 {
+ margin-left: 16.666666666666664%;
+ }
+ .col-lg-offset-1 {
+ margin-left: 8.333333333333332%;
+ }
+ .col-lg-offset-0 {
+ margin-left: 0%;
+ }
+}
+table {
+ max-width: 100%;
+ background-color: transparent;
+}
+th {
+ text-align: left;
+}
+.table {
+ width: 100%;
+ margin-bottom: 24px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ padding: 8px;
+ line-height: 1.5;
+ vertical-align: top;
+ border-top: 1px solid #dddddd;
+}
+.table > thead > tr > th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #dddddd;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+ border-top: 0;
+}
+.table > tbody + tbody {
+ border-top: 2px solid #dddddd;
+}
+.table .table {
+ background-color: #fcfcfc;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+ padding: 5px;
+}
+.table-bordered {
+ border: 1px solid #dddddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #dddddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-child(odd) > td,
+.table-striped > tbody > tr:nth-child(odd) > th {
+ background-color: #f9f9f9;
+}
+.table-hover > tbody > tr:hover > td,
+.table-hover > tbody > tr:hover > th {
+ background-color: #f5f5f5;
+}
+table col[class*="col-"] {
+ position: static;
+ float: none;
+ display: table-column;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+ float: none;
+ display: table-cell;
+}
+.table > thead > tr > .active,
+.table > tbody > tr > .active,
+.table > tfoot > tr > .active,
+.table > thead > .active > td,
+.table > tbody > .active > td,
+.table > tfoot > .active > td,
+.table > thead > .active > th,
+.table > tbody > .active > th,
+.table > tfoot > .active > th {
+ background-color: #f5f5f5;
+}
+.table-hover > tbody > tr > .active:hover,
+.table-hover > tbody > .active:hover > td,
+.table-hover > tbody > .active:hover > th {
+ background-color: #e8e8e8;
+}
+.table > thead > tr > .success,
+.table > tbody > tr > .success,
+.table > tfoot > tr > .success,
+.table > thead > .success > td,
+.table > tbody > .success > td,
+.table > tfoot > .success > td,
+.table > thead > .success > th,
+.table > tbody > .success > th,
+.table > tfoot > .success > th {
+ background-color: #dff0d8;
+}
+.table-hover > tbody > tr > .success:hover,
+.table-hover > tbody > .success:hover > td,
+.table-hover > tbody > .success:hover > th {
+ background-color: #d0e9c6;
+}
+.table > thead > tr > .danger,
+.table > tbody > tr > .danger,
+.table > tfoot > tr > .danger,
+.table > thead > .danger > td,
+.table > tbody > .danger > td,
+.table > tfoot > .danger > td,
+.table > thead > .danger > th,
+.table > tbody > .danger > th,
+.table > tfoot > .danger > th {
+ background-color: #f2dede;
+}
+.table-hover > tbody > tr > .danger:hover,
+.table-hover > tbody > .danger:hover > td,
+.table-hover > tbody > .danger:hover > th {
+ background-color: #ebcccc;
+}
+.table > thead > tr > .warning,
+.table > tbody > tr > .warning,
+.table > tfoot > tr > .warning,
+.table > thead > .warning > td,
+.table > tbody > .warning > td,
+.table > tfoot > .warning > td,
+.table > thead > .warning > th,
+.table > tbody > .warning > th,
+.table > tfoot > .warning > th {
+ background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > .warning:hover,
+.table-hover > tbody > .warning:hover > td,
+.table-hover > tbody > .warning:hover > th {
+ background-color: #faf2cc;
+}
+@media (max-width: 767px) {
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 18px;
+ overflow-y: hidden;
+ overflow-x: scroll;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ border: 1px solid #dddddd;
+ -webkit-overflow-scrolling: touch;
+ }
+ .table-responsive > .table {
+ margin-bottom: 0;
+ }
+ .table-responsive > .table > thead > tr > th,
+ .table-responsive > .table > tbody > tr > th,
+ .table-responsive > .table > tfoot > tr > th,
+ .table-responsive > .table > thead > tr > td,
+ .table-responsive > .table > tbody > tr > td,
+ .table-responsive > .table > tfoot > tr > td {
+ white-space: nowrap;
+ }
+ .table-responsive > .table-bordered {
+ border: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:first-child,
+ .table-responsive > .table-bordered > tbody > tr > th:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+ .table-responsive > .table-bordered > thead > tr > td:first-child,
+ .table-responsive > .table-bordered > tbody > tr > td:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:last-child,
+ .table-responsive > .table-bordered > tbody > tr > th:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+ .table-responsive > .table-bordered > thead > tr > td:last-child,
+ .table-responsive > .table-bordered > tbody > tr > td:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+ }
+ .table-responsive > .table-bordered > tbody > tr:last-child > th,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+ .table-responsive > .table-bordered > tbody > tr:last-child > td,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+ border-bottom: 0;
+ }
+}
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 24px;
+ font-size: 24px;
+ line-height: inherit;
+ color: #595959;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+label {
+ display: inline-block;
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+input[type="search"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ /* IE8-9 */
+ line-height: normal;
+}
+input[type="file"] {
+ display: block;
+}
+select[multiple],
+select[size] {
+ height: auto;
+}
+select optgroup {
+ font-size: inherit;
+ font-style: inherit;
+ font-family: inherit;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+input[type="number"]::-webkit-outer-spin-button,
+input[type="number"]::-webkit-inner-spin-button {
+ height: auto;
+}
+output {
+ display: block;
+ padding-top: 7px;
+ font-size: 16px;
+ line-height: 1.5;
+ color: #999999;
+ vertical-align: middle;
+}
+.form-control {
+ display: block;
+ height: 38px;
+ padding: 6px 12px;
+ font-size: 16px;
+ line-height: 1.5;
+ color: #999999;
+ vertical-align: middle;
+ background-color: #ffffff;
+ background-image: none;
+ border: 1px solid #cccccc;
+ border-radius: 0px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+ border-color: #66afe9;
+ outline: 0;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
+}
+.form-control:-moz-placeholder {
+ color: #999999;
+}
+.form-control::-moz-placeholder {
+ color: #999999;
+ opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+ color: #999999;
+}
+.form-control::-webkit-input-placeholder {
+ color: #999999;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ cursor: not-allowed;
+ background-color: #efefef;
+}
+textarea.form-control {
+ height: auto;
+}
+.form-group {
+ margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+ display: block;
+ min-height: 24px;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ padding-left: 20px;
+ vertical-align: middle;
+}
+.radio label,
+.checkbox label {
+ display: inline;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+ float: left;
+ margin-left: -20px;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+ margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ vertical-align: middle;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+ margin-top: 0;
+ margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+.radio[disabled],
+.radio-inline[disabled],
+.checkbox[disabled],
+.checkbox-inline[disabled],
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"],
+fieldset[disabled] .radio,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox,
+fieldset[disabled] .checkbox-inline {
+ cursor: not-allowed;
+}
+.input-sm {
+ height: 33px;
+ padding: 5px 10px;
+ font-size: 14px;
+ line-height: 1.5;
+ border-radius: 0px;
+}
+select.input-sm {
+ height: 33px;
+ line-height: 33px;
+}
+textarea.input-sm {
+ height: auto;
+}
+.input-lg {
+ height: 45px;
+ padding: 8px 16px;
+ font-size: 20px;
+ line-height: 1.33;
+ border-radius: 0px;
+}
+select.input-lg {
+ height: 45px;
+ line-height: 45px;
+}
+textarea.input-lg {
+ height: auto;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline {
+ color: #8a6d3b;
+}
+.has-warning .form-control {
+ border-color: #8a6d3b;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-warning .form-control:focus {
+ border-color: #66512c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
+}
+.has-warning .input-group-addon {
+ color: #8a6d3b;
+ border-color: #8a6d3b;
+ background-color: #fcf8e3;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline {
+ color: #a94442;
+}
+.has-error .form-control {
+ border-color: #a94442;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-error .form-control:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+ color: #a94442;
+ border-color: #a94442;
+ background-color: #f2dede;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline {
+ color: #3c763d;
+}
+.has-success .form-control {
+ border-color: #3c763d;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.has-success .form-control:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+ color: #3c763d;
+ border-color: #3c763d;
+ background-color: #dff0d8;
+}
+.form-control-static {
+ margin-bottom: 0;
+}
+.help-block {
+ display: block;
+ margin-top: 5px;
+ margin-bottom: 10px;
+ color: #737373;
+}
+@media (min-width: 768px) {
+ .form-inline .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .form-control {
+ display: inline-block;
+ }
+ .form-inline select.form-control {
+ width: auto;
+ }
+ .form-inline .radio,
+ .form-inline .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-left: 0;
+ }
+ .form-inline .radio input[type="radio"],
+ .form-inline .checkbox input[type="checkbox"] {
+ float: none;
+ margin-left: 0;
+ }
+}
+.form-horizontal .control-label,
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 7px;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+ min-height: 31px;
+}
+.form-horizontal .form-group {
+ margin-left: -10px;
+ margin-right: -10px;
+}
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after {
+ content: " ";
+ display: table;
+}
+.form-horizontal .form-group:after {
+ clear: both;
+}
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after {
+ content: " ";
+ display: table;
+}
+.form-horizontal .form-group:after {
+ clear: both;
+}
+.form-horizontal .form-control-static {
+ padding-top: 7px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .control-label {
+ text-align: right;
+ }
+}
+.btn {
+ display: inline-block;
+ margin-bottom: 0;
+ font-weight: normal;
+ text-align: center;
+ vertical-align: middle;
+ cursor: pointer;
+ background-image: none;
+ border: 1px solid transparent;
+ white-space: nowrap;
+ padding: 6px 12px;
+ font-size: 16px;
+ line-height: 1.5;
+ border-radius: 0px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ -o-user-select: none;
+ user-select: none;
+}
+.btn:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus {
+ color: #333333;
+ text-decoration: none;
+}
+.btn:active,
+.btn.active {
+ outline: 0;
+ background-image: none;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ cursor: not-allowed;
+ pointer-events: none;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-default {
+ color: #333333;
+ background-color: #ffffff;
+ border-color: #cccccc;
+}
+.btn-default:hover,
+.btn-default:focus,
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+ color: #333333;
+ background-color: #ebebeb;
+ border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+ background-image: none;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #ffffff;
+ border-color: #cccccc;
+}
+.btn-default .badge {
+ color: #ffffff;
+ background-color: #fff;
+}
+.btn-primary {
+ color: #ffffff;
+ background-color: #76b900;
+ border-color: #76b900;
+}
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+ color: #ffffff;
+ background-color: #5c9000;
+ border-color: #4f7c00;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #76b900;
+ border-color: #76b900;
+}
+.btn-primary .badge {
+ color: #76b900;
+ background-color: #fff;
+}
+.btn-warning {
+ color: #ffffff;
+ background-color: #f0ad4e;
+ border-color: #f0ad4e;
+}
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning:active,
+.btn-warning.active,
+.open .dropdown-toggle.btn-warning {
+ color: #ffffff;
+ background-color: #ed9c28;
+ border-color: #eb9316;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open .dropdown-toggle.btn-warning {
+ background-image: none;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+ background-color: #f0ad4e;
+ border-color: #f0ad4e;
+}
+.btn-warning .badge {
+ color: #f0ad4e;
+ background-color: #fff;
+}
+.btn-danger {
+ color: #ffffff;
+ background-color: #d9534f;
+ border-color: #d9534f;
+}
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+ color: #ffffff;
+ background-color: #d2322d;
+ border-color: #c12e2a;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #d9534f;
+ border-color: #d9534f;
+}
+.btn-danger .badge {
+ color: #d9534f;
+ background-color: #fff;
+}
+.btn-success {
+ color: #ffffff;
+ background-color: #76b900;
+ border-color: #76b900;
+}
+.btn-success:hover,
+.btn-success:focus,
+.btn-success:active,
+.btn-success.active,
+.open .dropdown-toggle.btn-success {
+ color: #ffffff;
+ background-color: #5c9000;
+ border-color: #4f7c00;
+}
+.btn-success:active,
+.btn-success.active,
+.open .dropdown-toggle.btn-success {
+ background-image: none;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+ background-color: #76b900;
+ border-color: #76b900;
+}
+.btn-success .badge {
+ color: #76b900;
+ background-color: #fff;
+}
+.btn-info {
+ color: #ffffff;
+ background-color: #5bc0de;
+ border-color: #5bc0de;
+}
+.btn-info:hover,
+.btn-info:focus,
+.btn-info:active,
+.btn-info.active,
+.open .dropdown-toggle.btn-info {
+ color: #ffffff;
+ background-color: #39b3d7;
+ border-color: #2aabd2;
+}
+.btn-info:active,
+.btn-info.active,
+.open .dropdown-toggle.btn-info {
+ background-image: none;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+ background-color: #5bc0de;
+ border-color: #5bc0de;
+}
+.btn-info .badge {
+ color: #5bc0de;
+ background-color: #fff;
+}
+.btn-link {
+ color: #76b900;
+ font-weight: normal;
+ cursor: pointer;
+ border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+ background-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+ border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+ color: #76b900;
+ text-decoration: underline;
+ background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+ color: #999999;
+ text-decoration: none;
+}
+.btn-lg {
+ padding: 8px 16px;
+ font-size: 20px;
+ line-height: 1.33;
+ border-radius: 0px;
+}
+.btn-sm {
+ padding: 5px 10px;
+ font-size: 14px;
+ line-height: 1.5;
+ border-radius: 0px;
+}
+.btn-xs {
+ padding: 4px 6px;
+ font-size: 14px;
+ line-height: 1.5;
+ border-radius: 0px;
+}
+.btn-block {
+ display: block;
+ width: 100%;
+ padding-left: 0;
+ padding-right: 0;
+}
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+}
+.fade.in {
+ opacity: 1;
+}
+.collapse {
+ display: none;
+}
+.collapse.in {
+ display: block;
+}
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition: height 0.35s ease;
+ transition: height 0.35s ease;
+}
+@font-face {
+ font-family: 'Glyphicons Halflings';
+ src: url('glyphicons-halflings-regular.eot');
+ src: url('glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('glyphicons-halflings-regular.woff') format('woff'), url('glyphicons-halflings-regular.ttf') format('truetype'), url('glyphicons-halflings-regular.svg#glyphicons-halflingsregular') format('svg');
+}
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon:empty {
+ width: 1em;
+}
+.glyphicon-asterisk:before {
+ content: "\2a";
+}
+.glyphicon-plus:before {
+ content: "\2b";
+}
+.glyphicon-euro:before {
+ content: "\20ac";
+}
+.glyphicon-minus:before {
+ content: "\2212";
+}
+.glyphicon-cloud:before {
+ content: "\2601";
+}
+.glyphicon-envelope:before {
+ content: "\2709";
+}
+.glyphicon-pencil:before {
+ content: "\270f";
+}
+.glyphicon-glass:before {
+ content: "\e001";
+}
+.glyphicon-music:before {
+ content: "\e002";
+}
+.glyphicon-search:before {
+ content: "\e003";
+}
+.glyphicon-heart:before {
+ content: "\e005";
+}
+.glyphicon-star:before {
+ content: "\e006";
+}
+.glyphicon-star-empty:before {
+ content: "\e007";
+}
+.glyphicon-user:before {
+ content: "\e008";
+}
+.glyphicon-film:before {
+ content: "\e009";
+}
+.glyphicon-th-large:before {
+ content: "\e010";
+}
+.glyphicon-th:before {
+ content: "\e011";
+}
+.glyphicon-th-list:before {
+ content: "\e012";
+}
+.glyphicon-ok:before {
+ content: "\e013";
+}
+.glyphicon-remove:before {
+ content: "\e014";
+}
+.glyphicon-zoom-in:before {
+ content: "\e015";
+}
+.glyphicon-zoom-out:before {
+ content: "\e016";
+}
+.glyphicon-off:before {
+ content: "\e017";
+}
+.glyphicon-signal:before {
+ content: "\e018";
+}
+.glyphicon-cog:before {
+ content: "\e019";
+}
+.glyphicon-trash:before {
+ content: "\e020";
+}
+.glyphicon-home:before {
+ content: "\e021";
+}
+.glyphicon-file:before {
+ content: "\e022";
+}
+.glyphicon-time:before {
+ content: "\e023";
+}
+.glyphicon-road:before {
+ content: "\e024";
+}
+.glyphicon-download-alt:before {
+ content: "\e025";
+}
+.glyphicon-download:before {
+ content: "\e026";
+}
+.glyphicon-upload:before {
+ content: "\e027";
+}
+.glyphicon-inbox:before {
+ content: "\e028";
+}
+.glyphicon-play-circle:before {
+ content: "\e029";
+}
+.glyphicon-repeat:before {
+ content: "\e030";
+}
+.glyphicon-refresh:before {
+ content: "\e031";
+}
+.glyphicon-list-alt:before {
+ content: "\e032";
+}
+.glyphicon-lock:before {
+ content: "\e033";
+}
+.glyphicon-flag:before {
+ content: "\e034";
+}
+.glyphicon-headphones:before {
+ content: "\e035";
+}
+.glyphicon-volume-off:before {
+ content: "\e036";
+}
+.glyphicon-volume-down:before {
+ content: "\e037";
+}
+.glyphicon-volume-up:before {
+ content: "\e038";
+}
+.glyphicon-qrcode:before {
+ content: "\e039";
+}
+.glyphicon-barcode:before {
+ content: "\e040";
+}
+.glyphicon-tag:before {
+ content: "\e041";
+}
+.glyphicon-tags:before {
+ content: "\e042";
+}
+.glyphicon-book:before {
+ content: "\e043";
+}
+.glyphicon-bookmark:before {
+ content: "\e044";
+}
+.glyphicon-print:before {
+ content: "\e045";
+}
+.glyphicon-camera:before {
+ content: "\e046";
+}
+.glyphicon-font:before {
+ content: "\e047";
+}
+.glyphicon-bold:before {
+ content: "\e048";
+}
+.glyphicon-italic:before {
+ content: "\e049";
+}
+.glyphicon-text-height:before {
+ content: "\e050";
+}
+.glyphicon-text-width:before {
+ content: "\e051";
+}
+.glyphicon-align-left:before {
+ content: "\e052";
+}
+.glyphicon-align-center:before {
+ content: "\e053";
+}
+.glyphicon-align-right:before {
+ content: "\e054";
+}
+.glyphicon-align-justify:before {
+ content: "\e055";
+}
+.glyphicon-list:before {
+ content: "\e056";
+}
+.glyphicon-indent-left:before {
+ content: "\e057";
+}
+.glyphicon-indent-right:before {
+ content: "\e058";
+}
+.glyphicon-facetime-video:before {
+ content: "\e059";
+}
+.glyphicon-picture:before {
+ content: "\e060";
+}
+.glyphicon-map-marker:before {
+ content: "\e062";
+}
+.glyphicon-adjust:before {
+ content: "\e063";
+}
+.glyphicon-tint:before {
+ content: "\e064";
+}
+.glyphicon-edit:before {
+ content: "\e065";
+}
+.glyphicon-share:before {
+ content: "\e066";
+}
+.glyphicon-check:before {
+ content: "\e067";
+}
+.glyphicon-move:before {
+ content: "\e068";
+}
+.glyphicon-step-backward:before {
+ content: "\e069";
+}
+.glyphicon-fast-backward:before {
+ content: "\e070";
+}
+.glyphicon-backward:before {
+ content: "\e071";
+}
+.glyphicon-play:before {
+ content: "\e072";
+}
+.glyphicon-pause:before {
+ content: "\e073";
+}
+.glyphicon-stop:before {
+ content: "\e074";
+}
+.glyphicon-forward:before {
+ content: "\e075";
+}
+.glyphicon-fast-forward:before {
+ content: "\e076";
+}
+.glyphicon-step-forward:before {
+ content: "\e077";
+}
+.glyphicon-eject:before {
+ content: "\e078";
+}
+.glyphicon-chevron-left:before {
+ content: "\e079";
+}
+.glyphicon-chevron-right:before {
+ content: "\e080";
+}
+.glyphicon-plus-sign:before {
+ content: "\e081";
+}
+.glyphicon-minus-sign:before {
+ content: "\e082";
+}
+.glyphicon-remove-sign:before {
+ content: "\e083";
+}
+.glyphicon-ok-sign:before {
+ content: "\e084";
+}
+.glyphicon-question-sign:before {
+ content: "\e085";
+}
+.glyphicon-info-sign:before {
+ content: "\e086";
+}
+.glyphicon-screenshot:before {
+ content: "\e087";
+}
+.glyphicon-remove-circle:before {
+ content: "\e088";
+}
+.glyphicon-ok-circle:before {
+ content: "\e089";
+}
+.glyphicon-ban-circle:before {
+ content: "\e090";
+}
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+.glyphicon-gift:before {
+ content: "\e102";
+}
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+.glyphicon-fire:before {
+ content: "\e104";
+}
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+.glyphicon-plane:before {
+ content: "\e108";
+}
+.glyphicon-calendar:before {
+ content: "\e109";
+}
+.glyphicon-random:before {
+ content: "\e110";
+}
+.glyphicon-comment:before {
+ content: "\e111";
+}
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+.glyphicon-bell:before {
+ content: "\e123";
+}
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+.glyphicon-globe:before {
+ content: "\e135";
+}
+.glyphicon-wrench:before {
+ content: "\e136";
+}
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+.glyphicon-filter:before {
+ content: "\e138";
+}
+.glyphicon-briefcase:before {
+ content: "\e139";
+}
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+.glyphicon-paperclip:before {
+ content: "\e142";
+}
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+.glyphicon-link:before {
+ content: "\e144";
+}
+.glyphicon-phone:before {
+ content: "\e145";
+}
+.glyphicon-pushpin:before {
+ content: "\e146";
+}
+.glyphicon-usd:before {
+ content: "\e148";
+}
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+.glyphicon-sort:before {
+ content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
+}
+.glyphicon-unchecked:before {
+ content: "\e157";
+}
+.glyphicon-expand:before {
+ content: "\e158";
+}
+.glyphicon-collapse-down:before {
+ content: "\e159";
+}
+.glyphicon-collapse-up:before {
+ content: "\e160";
+}
+.glyphicon-log-in:before {
+ content: "\e161";
+}
+.glyphicon-flash:before {
+ content: "\e162";
+}
+.glyphicon-log-out:before {
+ content: "\e163";
+}
+.glyphicon-new-window:before {
+ content: "\e164";
+}
+.glyphicon-record:before {
+ content: "\e165";
+}
+.glyphicon-save:before {
+ content: "\e166";
+}
+.glyphicon-open:before {
+ content: "\e167";
+}
+.glyphicon-saved:before {
+ content: "\e168";
+}
+.glyphicon-import:before {
+ content: "\e169";
+}
+.glyphicon-export:before {
+ content: "\e170";
+}
+.glyphicon-send:before {
+ content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+.glyphicon-header:before {
+ content: "\e180";
+}
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+.glyphicon-tower:before {
+ content: "\e184";
+}
+.glyphicon-stats:before {
+ content: "\e185";
+}
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+.glyphicon-subtitles:before {
+ content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+ content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+ content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+ content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+ content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+ content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+ content: "\e194";
+}
+.glyphicon-registration-mark:before {
+ content: "\e195";
+}
+.glyphicon-cloud-download:before {
+ content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+ content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+ content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
+}
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: 4px solid;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+}
+.dropdown {
+ position: relative;
+}
+.dropdown-toggle:focus {
+ outline: 0;
+}
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ font-size: 16px;
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ border-radius: 0px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+ background-clip: padding-box;
+}
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu .divider {
+ height: 1px;
+ margin: 11px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+.dropdown-menu > li > a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.5;
+ color: #595959;
+ white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ text-decoration: none;
+ color: #4c4c4c;
+ background-color: #f5f5f5;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ text-decoration: none;
+ outline: 0;
+ background-color: #76b900;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ color: #999999;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ text-decoration: none;
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ cursor: not-allowed;
+}
+.open > .dropdown-menu {
+ display: block;
+}
+.open > a {
+ outline: 0;
+}
+.dropdown-header {
+ display: block;
+ padding: 3px 20px;
+ font-size: 14px;
+ line-height: 1.5;
+ color: #999999;
+}
+.dropdown-backdrop {
+ position: fixed;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ top: 0;
+ z-index: 990;
+}
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ border-top: 0;
+ border-bottom: 4px solid;
+ content: "";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 1px;
+}
+@media (min-width: 992px) {
+ .navbar-right .dropdown-menu {
+ right: 0;
+ left: auto;
+ }
+}
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+ z-index: 2;
+}
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus {
+ outline: none;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+ margin-left: -1px;
+}
+.btn-toolbar:before,
+.btn-toolbar:after {
+ content: " ";
+ display: table;
+}
+.btn-toolbar:after {
+ clear: both;
+}
+.btn-toolbar:before,
+.btn-toolbar:after {
+ content: " ";
+ display: table;
+}
+.btn-toolbar:after {
+ clear: both;
+}
+.btn-toolbar .btn-group {
+ float: left;
+}
+.btn-toolbar > .btn + .btn,
+.btn-toolbar > .btn-group + .btn,
+.btn-toolbar > .btn + .btn-group,
+.btn-toolbar > .btn-group + .btn-group {
+ margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+.btn-group > .btn:first-child {
+ margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group > .btn-group {
+ float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group > .btn-group:first-child > .btn:last-child,
+.btn-group > .btn-group:first-child > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group > .btn-group:last-child > .btn:first-child {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+.btn-group-xs > .btn {
+ padding: 4px 6px;
+ font-size: 14px;
+ line-height: 1.5;
+ border-radius: 0px;
+ padding-top: 6.384px;
+ padding-bottom: 4.8px;
+}
+.btn-group-sm > .btn {
+ padding: 5px 10px;
+ font-size: 14px;
+ line-height: 1.5;
+ border-radius: 0px;
+ padding-top: 7.98px;
+ padding-bottom: 6px;
+}
+.btn-group-lg > .btn {
+ padding: 8px 16px;
+ font-size: 20px;
+ line-height: 1.33;
+ border-radius: 0px;
+ padding-top: 12.768px;
+ padding-bottom: 9.6px;
+}
+.btn-group > .btn + .dropdown-toggle {
+ padding-left: 8px;
+ padding-right: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+ padding-left: 12px;
+ padding-right: 12px;
+}
+.btn-group.open .dropdown-toggle {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn .caret {
+ margin-left: 0;
+}
+.btn-lg .caret {
+ border-width: 5px 5px 0;
+ border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+ border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+ display: block;
+ float: none;
+ width: 100%;
+ max-width: 100%;
+}
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after {
+ content: " ";
+ display: table;
+}
+.btn-group-vertical > .btn-group:after {
+ clear: both;
+}
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after {
+ content: " ";
+ display: table;
+}
+.btn-group-vertical > .btn-group:after {
+ clear: both;
+}
+.btn-group-vertical > .btn-group > .btn {
+ float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+ margin-top: -1px;
+ margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+ border-top-right-radius: 0px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+ border-bottom-left-radius: 0px;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child > .btn:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.btn-group-justified {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+ float: none;
+ display: table-cell;
+ width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+ width: 100%;
+}
+[data-toggle="buttons"] > .btn > input[type="radio"],
+[data-toggle="buttons"] > .btn > input[type="checkbox"] {
+ display: none;
+}
+.input-group {
+ position: relative;
+ display: table;
+ border-collapse: separate;
+}
+.input-group[class*="col-"] {
+ float: none;
+ padding-left: 0;
+ padding-right: 0;
+}
+.input-group .form-control {
+ width: 100%;
+ margin-bottom: 0;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+ height: 45px;
+ padding: 8px 16px;
+ font-size: 20px;
+ line-height: 1.33;
+ border-radius: 0px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+ height: 45px;
+ line-height: 45px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+ height: 33px;
+ padding: 5px 10px;
+ font-size: 14px;
+ line-height: 1.5;
+ border-radius: 0px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+ height: 33px;
+ line-height: 33px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+ display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+.input-group-addon {
+ padding: 6px 12px;
+ font-size: 16px;
+ font-weight: normal;
+ line-height: 1;
+ color: #999999;
+ text-align: center;
+ background-color: #efefef;
+ border: 1px solid #cccccc;
+ border-radius: 0px;
+}
+.input-group-addon.input-sm {
+ padding: 5px 10px;
+ font-size: 14px;
+ border-radius: 0px;
+}
+.input-group-addon.input-lg {
+ padding: 8px 16px;
+ font-size: 20px;
+ border-radius: 0px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+ margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
+ border-bottom-right-radius: 0;
+ border-top-right-radius: 0;
+}
+.input-group-addon:first-child {
+ border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child) {
+ border-bottom-left-radius: 0;
+ border-top-left-radius: 0;
+}
+.input-group-addon:last-child {
+ border-left: 0;
+}
+.input-group-btn {
+ position: relative;
+ white-space: nowrap;
+}
+.input-group-btn:first-child > .btn {
+ margin-right: -1px;
+}
+.input-group-btn:last-child > .btn {
+ margin-left: -1px;
+}
+.input-group-btn > .btn {
+ position: relative;
+}
+.input-group-btn > .btn + .btn {
+ margin-left: -4px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:active {
+ z-index: 2;
+}
+.nav {
+ margin-bottom: 0;
+ padding-left: 0;
+ list-style: none;
+}
+.nav:before,
+.nav:after {
+ content: " ";
+ display: table;
+}
+.nav:after {
+ clear: both;
+}
+.nav:before,
+.nav:after {
+ content: " ";
+ display: table;
+}
+.nav:after {
+ clear: both;
+}
+.nav > li {
+ position: relative;
+ display: block;
+}
+.nav > li > a {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+ text-decoration: none;
+ background-color: #efefef;
+}
+.nav > li.disabled > a {
+ color: #999999;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+ color: #999999;
+ text-decoration: none;
+ background-color: transparent;
+ cursor: not-allowed;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+ background-color: #efefef;
+ border-color: #76b900;
+}
+.nav .nav-divider {
+ height: 1px;
+ margin: 11px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+.nav > li > a > img {
+ max-width: none;
+}
+.nav-tabs {
+ border-bottom: 1px solid #dddddd;
+}
+.nav-tabs > li {
+ float: left;
+ margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+ margin-right: 2px;
+ line-height: 1.5;
+ border: 1px solid transparent;
+ border-radius: 0px 0px 0 0;
+}
+.nav-tabs > li > a:hover {
+ border-color: #efefef #efefef #dddddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+ color: #999999;
+ background-color: #fcfcfc;
+ border: 1px solid #dddddd;
+ border-bottom-color: transparent;
+ cursor: default;
+}
+.nav-tabs.nav-justified {
+ width: 100%;
+ border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+ float: none;
+}
+.nav-tabs.nav-justified > li > a {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-tabs.nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs.nav-justified > li > a {
+ margin-right: 0;
+ border-radius: 0px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+ border: 1px solid #dddddd;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li > a {
+ border-bottom: 1px solid #dddddd;
+ border-radius: 0px 0px 0 0;
+ }
+ .nav-tabs.nav-justified > .active > a,
+ .nav-tabs.nav-justified > .active > a:hover,
+ .nav-tabs.nav-justified > .active > a:focus {
+ border-bottom-color: #fcfcfc;
+ }
+}
+.nav-pills > li {
+ float: left;
+}
+.nav-pills > li > a {
+ border-radius: 0px;
+}
+.nav-pills > li + li {
+ margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+ color: #ffffff;
+ background-color: #76b900;
+}
+.nav-stacked > li {
+ float: none;
+}
+.nav-stacked > li + li {
+ margin-top: 2px;
+ margin-left: 0;
+}
+.nav-justified {
+ width: 100%;
+}
+.nav-justified > li {
+ float: none;
+}
+.nav-justified > li > a {
+ text-align: center;
+ margin-bottom: 5px;
+}
+.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs-justified {
+ border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+ margin-right: 0;
+ border-radius: 0px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+ border: 1px solid #dddddd;
+}
+@media (min-width: 768px) {
+ .nav-tabs-justified > li > a {
+ border-bottom: 1px solid #dddddd;
+ border-radius: 0px 0px 0 0;
+ }
+ .nav-tabs-justified > .active > a,
+ .nav-tabs-justified > .active > a:hover,
+ .nav-tabs-justified > .active > a:focus {
+ border-bottom-color: #fcfcfc;
+ }
+}
+.tab-content > .tab-pane {
+ display: none;
+}
+.tab-content > .active {
+ display: block;
+}
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar {
+ position: relative;
+ min-height: 50px;
+ margin-bottom: 24px;
+ border: 1px solid transparent;
+}
+.navbar:before,
+.navbar:after {
+ content: " ";
+ display: table;
+}
+.navbar:after {
+ clear: both;
+}
+.navbar:before,
+.navbar:after {
+ content: " ";
+ display: table;
+}
+.navbar:after {
+ clear: both;
+}
+@media (min-width: 992px) {
+ .navbar {
+ border-radius: 0px;
+ }
+}
+.navbar-header:before,
+.navbar-header:after {
+ content: " ";
+ display: table;
+}
+.navbar-header:after {
+ clear: both;
+}
+.navbar-header:before,
+.navbar-header:after {
+ content: " ";
+ display: table;
+}
+.navbar-header:after {
+ clear: both;
+}
+@media (min-width: 992px) {
+ .navbar-header {
+ float: left;
+ }
+}
+.navbar-collapse {
+ max-height: 340px;
+ overflow-x: visible;
+ padding-right: 10px;
+ padding-left: 10px;
+ border-top: 1px solid transparent;
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
+ -webkit-overflow-scrolling: touch;
+}
+.navbar-collapse:before,
+.navbar-collapse:after {
+ content: " ";
+ display: table;
+}
+.navbar-collapse:after {
+ clear: both;
+}
+.navbar-collapse:before,
+.navbar-collapse:after {
+ content: " ";
+ display: table;
+}
+.navbar-collapse:after {
+ clear: both;
+}
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+@media (min-width: 992px) {
+ .navbar-collapse {
+ width: auto;
+ border-top: 0;
+ box-shadow: none;
+ }
+ .navbar-collapse.collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+ }
+ .navbar-collapse.in {
+ overflow-y: visible;
+ }
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-static-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ padding-left: 0;
+ padding-right: 0;
+ }
+}
+.container > .navbar-header,
+.container > .navbar-collapse {
+ margin-right: -10px;
+ margin-left: -10px;
+}
+@media (min-width: 992px) {
+ .container > .navbar-header,
+ .container > .navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+.navbar-static-top {
+ z-index: 1000;
+ border-width: 0 0 1px;
+}
+@media (min-width: 992px) {
+ .navbar-static-top {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+@media (min-width: 992px) {
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top {
+ top: 0;
+ border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+ bottom: 0;
+ margin-bottom: 0;
+ border-width: 1px 0 0;
+}
+.navbar-brand {
+ float: left;
+ padding: 13px 10px;
+ font-size: 20px;
+ line-height: 24px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+ text-decoration: none;
+}
+@media (min-width: 992px) {
+ .navbar > .container .navbar-brand {
+ margin-left: -10px;
+ }
+}
+.navbar-toggle {
+ position: relative;
+ float: right;
+ margin-right: 10px;
+ padding: 9px 10px;
+ margin-top: 8px;
+ margin-bottom: 8px;
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 0px;
+}
+.navbar-toggle .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+ margin-top: 4px;
+}
+@media (min-width: 992px) {
+ .navbar-toggle {
+ display: none;
+ }
+}
+.navbar-nav {
+ margin: 6.5px -10px;
+}
+.navbar-nav > li > a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 24px;
+}
+@media (max-width: 991px) {
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ }
+ .navbar-nav .open .dropdown-menu > li > a,
+ .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a {
+ line-height: 24px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-image: none;
+ }
+}
+@media (min-width: 992px) {
+ .navbar-nav {
+ float: left;
+ margin: 0;
+ }
+ .navbar-nav > li {
+ float: left;
+ }
+ .navbar-nav > li > a {
+ padding-top: 13px;
+ padding-bottom: 13px;
+ }
+ .navbar-nav.navbar-right:last-child {
+ margin-right: -10px;
+ }
+}
+@media (min-width: 992px) {
+ .navbar-left {
+ float: left !important;
+ float: left;
+ }
+ .navbar-right {
+ float: right !important;
+ float: right;
+ }
+}
+.navbar-form {
+ margin-left: -10px;
+ margin-right: -10px;
+ padding: 10px 10px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ margin-top: 6px;
+ margin-bottom: 6px;
+}
+@media (min-width: 768px) {
+ .navbar-form .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control {
+ display: inline-block;
+ }
+ .navbar-form select.form-control {
+ width: auto;
+ }
+ .navbar-form .radio,
+ .navbar-form .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-left: 0;
+ }
+ .navbar-form .radio input[type="radio"],
+ .navbar-form .checkbox input[type="checkbox"] {
+ float: none;
+ margin-left: 0;
+ }
+}
+@media (max-width: 991px) {
+ .navbar-form .form-group {
+ margin-bottom: 5px;
+ }
+}
+@media (min-width: 992px) {
+ .navbar-form {
+ width: auto;
+ border: 0;
+ margin-left: 0;
+ margin-right: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+ .navbar-form.navbar-right:last-child {
+ margin-right: -10px;
+ }
+}
+.navbar-nav > li > .dropdown-menu {
+ margin-top: 0;
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.navbar-nav.pull-right > li > .dropdown-menu,
+.navbar-nav > li > .dropdown-menu.pull-right {
+ left: auto;
+ right: 0;
+}
+.navbar-btn {
+ margin-top: 6px;
+ margin-bottom: 6px;
+}
+.navbar-btn.btn-sm {
+ margin-top: 8.5px;
+ margin-bottom: 8.5px;
+}
+.navbar-btn.btn-xs {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.navbar-text {
+ margin-top: 13px;
+ margin-bottom: 13px;
+}
+@media (min-width: 992px) {
+ .navbar-text {
+ float: left;
+ margin-left: 10px;
+ margin-right: 10px;
+ }
+ .navbar-text.navbar-right:last-child {
+ margin-right: 0;
+ }
+}
+.navbar-default {
+ background-color: #f8f8f8;
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+ color: #777777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+ color: #5e5e5e;
+ background-color: transparent;
+}
+.navbar-default .navbar-text {
+ color: #777777;
+}
+.navbar-default .navbar-nav > li > a {
+ color: #777777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+ color: #333333;
+ background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+ border-color: #dddddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+ background-color: #dddddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+ background-color: #cccccc;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+ background-color: #e7e7e7;
+ color: #555555;
+}
+@media (max-width: 991px) {
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #777777;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #333333;
+ background-color: transparent;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #555555;
+ background-color: #e7e7e7;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #cccccc;
+ background-color: transparent;
+ }
+}
+.navbar-default .navbar-link {
+ color: #777777;
+}
+.navbar-default .navbar-link:hover {
+ color: #333333;
+}
+.navbar-inverse {
+ background-color: #000000;
+ border-color: #000000;
+}
+.navbar-inverse .navbar-brand {
+ color: #999999;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+ color: #707070;
+}
+.navbar-inverse .navbar-nav > li > a {
+ color: #999999;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+ border-color: #333333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+ background-color: #333333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+ background-color: #ffffff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+ border-color: #000000;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+ background-color: transparent;
+ color: #ffffff;
+}
+@media (max-width: 991px) {
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+ border-color: #000000;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+ background-color: #000000;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+ color: #999999;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ background-color: transparent;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #444444;
+ background-color: transparent;
+ }
+}
+.navbar-inverse .navbar-link {
+ color: #999999;
+}
+.navbar-inverse .navbar-link:hover {
+ color: #ffffff;
+}
+.breadcrumb {
+ padding: 8px 15px;
+ margin-top: 17px;
+ list-style: none;
+ background-color: #f5f5f5;
+ border-radius: 0px;
+}
+.breadcrumb > li {
+ display: inline-block;
+}
+.breadcrumb > li + li:before {
+ content: ">\00a0";
+ padding: 0 5px;
+ color: #cccccc;
+}
+.breadcrumb > .active {
+ color: #999999;
+}
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: 24px 0;
+ border-radius: 0px;
+}
+.pagination > li {
+ display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+ position: relative;
+ float: left;
+ padding: 6px 12px;
+ line-height: 1.5;
+ text-decoration: none;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ margin-left: -1px;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+ margin-left: 0;
+ border-bottom-left-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+ border-bottom-right-radius: 0px;
+ border-top-right-radius: 0px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+ background-color: #efefef;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ z-index: 2;
+ color: #ffffff;
+ background-color: #76b900;
+ border-color: #76b900;
+ cursor: default;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ color: #999999;
+ background-color: #ffffff;
+ border-color: #dddddd;
+ cursor: not-allowed;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+ padding: 8px 16px;
+ font-size: 20px;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+ border-bottom-left-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+ border-bottom-right-radius: 0px;
+ border-top-right-radius: 0px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 5px 10px;
+ font-size: 14px;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-bottom-left-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-bottom-right-radius: 0px;
+ border-top-right-radius: 0px;
+}
+.pager {
+ padding-left: 0;
+ margin: 24px 0;
+ list-style: none;
+ text-align: center;
+}
+.pager:before,
+.pager:after {
+ content: " ";
+ display: table;
+}
+.pager:after {
+ clear: both;
+}
+.pager:before,
+.pager:after {
+ content: " ";
+ display: table;
+}
+.pager:after {
+ clear: both;
+}
+.pager li {
+ display: inline;
+}
+.pager li > a,
+.pager li > span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-radius: 0px;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+ text-decoration: none;
+ background-color: #efefef;
+}
+.pager .next > a,
+.pager .next > span {
+ float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+ float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+ color: #999999;
+ background-color: #ffffff;
+ cursor: not-allowed;
+}
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: #ffffff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+}
+.label[href]:hover,
+.label[href]:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.label:empty {
+ display: none;
+}
+.btn .label {
+ position: relative;
+ top: -1px;
+}
+.label-default {
+ background-color: #999999;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+ background-color: #808080;
+}
+.label-primary {
+ background-color: #76b900;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+ background-color: #558600;
+}
+.label-success {
+ background-color: #76b900;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+ background-color: #558600;
+}
+.label-info {
+ background-color: #5bc0de;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+ background-color: #31b0d5;
+}
+.label-warning {
+ background-color: #f0ad4e;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+ background-color: #ec971f;
+}
+.label-danger {
+ background-color: #d9534f;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+ background-color: #c9302c;
+}
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 14px;
+ font-weight: bold;
+ color: #ffffff;
+ line-height: 1;
+ vertical-align: baseline;
+ white-space: nowrap;
+ text-align: center;
+ background-color: #999999;
+ border-radius: 10px;
+}
+.badge:empty {
+ display: none;
+}
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+a.badge:hover,
+a.badge:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+a.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+ color: #76b900;
+ background-color: #ffffff;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 3px;
+}
+.jumbotron {
+ padding: 30px;
+ margin-bottom: 30px;
+ font-size: 24px;
+ font-weight: 200;
+ line-height: 2.25;
+ color: inherit;
+ background-color: #efefef;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+ line-height: 1;
+ color: inherit;
+}
+.jumbotron p {
+ line-height: 1.4;
+}
+.container .jumbotron {
+ border-radius: 0px;
+}
+.jumbotron .container {
+ max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+ .jumbotron {
+ padding-top: 48px;
+ padding-bottom: 48px;
+ }
+ .container .jumbotron {
+ padding-left: 60px;
+ padding-right: 60px;
+ }
+ .jumbotron h1,
+ .jumbotron .h1 {
+ font-size: 72px;
+ }
+}
+.thumbnail {
+ display: block;
+ padding: 4px;
+ margin-bottom: 24px;
+ line-height: 1.5;
+ background-color: #fcfcfc;
+ border: 1px solid #dddddd;
+ border-radius: 0px;
+ -webkit-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+ display: block;
+ max-width: 100%;
+ height: auto;
+ margin-left: auto;
+ margin-right: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+ border-color: #76b900;
+}
+.thumbnail .caption {
+ padding: 9px;
+ color: #333333;
+}
+.alert {
+ padding: 15px;
+ margin-bottom: 24px;
+ border: 1px solid transparent;
+ border-radius: 0px;
+}
+.alert h4 {
+ margin-top: 0;
+ color: inherit;
+}
+.alert .alert-link {
+ font-weight: bold;
+}
+.alert > p,
+.alert > ul {
+ margin-bottom: 0;
+}
+.alert > p + p {
+ margin-top: 5px;
+}
+.alert-dismissable {
+ padding-right: 35px;
+}
+.alert-dismissable .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ color: inherit;
+}
+.alert-success {
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+ color: #3c763d;
+}
+.alert-success hr {
+ border-top-color: #c9e2b3;
+}
+.alert-success .alert-link {
+ color: #2b542c;
+}
+.alert-info {
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+ color: #31708f;
+}
+.alert-info hr {
+ border-top-color: #a6e1ec;
+}
+.alert-info .alert-link {
+ color: #245269;
+}
+.alert-warning {
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+ color: #8a6d3b;
+}
+.alert-warning hr {
+ border-top-color: #f7e1b5;
+}
+.alert-warning .alert-link {
+ color: #66512c;
+}
+.alert-danger {
+ background-color: #f2dede;
+ border-color: #ebccd1;
+ color: #a94442;
+}
+.alert-danger hr {
+ border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+ color: #843534;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+.progress {
+ overflow: hidden;
+ height: 24px;
+ margin-bottom: 24px;
+ background-color: #f5f5f5;
+ border-radius: 0px;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+.progress-bar {
+ float: left;
+ width: 0%;
+ height: 100%;
+ font-size: 14px;
+ line-height: 24px;
+ color: #ffffff;
+ text-align: center;
+ background-color: #76b900;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+.progress-striped .progress-bar {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-size: 40px 40px;
+}
+.progress.active .progress-bar {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+ background-color: #76b900;
+}
+.progress-striped .progress-bar-success {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+ background-color: #5bc0de;
+}
+.progress-striped .progress-bar-info {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+ background-color: #f0ad4e;
+}
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-bar-danger {
+ background-color: #d9534f;
+}
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.media,
+.media-body {
+ overflow: hidden;
+ zoom: 1;
+}
+.media,
+.media .media {
+ margin-top: 15px;
+}
+.media:first-child {
+ margin-top: 0;
+}
+.media-object {
+ display: block;
+}
+.media-heading {
+ margin: 0 0 5px;
+}
+.media > .pull-left {
+ margin-right: 10px;
+}
+.media > .pull-right {
+ margin-left: 10px;
+}
+.media-list {
+ padding-left: 0;
+ list-style: none;
+}
+.list-group {
+ margin-bottom: 20px;
+ padding-left: 0;
+}
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+ margin-bottom: -1px;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+}
+.list-group-item:first-child {
+ border-top-right-radius: 0px;
+ border-top-left-radius: 0px;
+}
+.list-group-item:last-child {
+ margin-bottom: 0;
+ border-bottom-right-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
+.list-group-item > .badge {
+ float: right;
+}
+.list-group-item > .badge + .badge {
+ margin-right: 5px;
+}
+a.list-group-item {
+ color: #555555;
+}
+a.list-group-item .list-group-item-heading {
+ color: #333333;
+}
+a.list-group-item:hover,
+a.list-group-item:focus {
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+a.list-group-item.active,
+a.list-group-item.active:hover,
+a.list-group-item.active:focus {
+ z-index: 2;
+ color: #ffffff;
+ background-color: #76b900;
+ border-color: #76b900;
+}
+a.list-group-item.active .list-group-item-heading,
+a.list-group-item.active:hover .list-group-item-heading,
+a.list-group-item.active:focus .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item.active .list-group-item-text,
+a.list-group-item.active:hover .list-group-item-text,
+a.list-group-item.active:focus .list-group-item-text {
+ color: #d3ff86;
+}
+.list-group-item-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.list-group-item-text {
+ margin-bottom: 0;
+ line-height: 1.3;
+}
+.panel {
+ margin-bottom: 24px;
+ background-color: #ffffff;
+ border: 1px solid transparent;
+ border-radius: 0px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.panel-body {
+ padding: 15px;
+}
+.panel-body:before,
+.panel-body:after {
+ content: " ";
+ display: table;
+}
+.panel-body:after {
+ clear: both;
+}
+.panel-body:before,
+.panel-body:after {
+ content: " ";
+ display: table;
+}
+.panel-body:after {
+ clear: both;
+}
+.panel > .list-group {
+ margin-bottom: 0;
+}
+.panel > .list-group .list-group-item {
+ border-width: 1px 0;
+}
+.panel > .list-group .list-group-item:first-child {
+ border-top-right-radius: 0;
+ border-top-left-radius: 0;
+}
+.panel > .list-group .list-group-item:last-child {
+ border-bottom: 0;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+ border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table {
+ margin-bottom: 0;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive {
+ border-top: 1px solid #dddddd;
+}
+.panel > .table > tbody:first-child th,
+.panel > .table > tbody:first-child td {
+ border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+ border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+}
+.panel > .table-bordered > thead > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:last-child > th,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-bordered > thead > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+ border-bottom: 0;
+}
+.panel > .table-responsive {
+ border: 0;
+ margin-bottom: 0;
+}
+.panel-heading {
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-right-radius: -1px;
+ border-top-left-radius: -1px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+ color: inherit;
+}
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 18px;
+ color: inherit;
+}
+.panel-title > a {
+ color: inherit;
+}
+.panel-footer {
+ padding: 10px 15px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #dddddd;
+ border-bottom-right-radius: -1px;
+ border-bottom-left-radius: -1px;
+}
+.panel-group .panel {
+ margin-bottom: 0;
+ border-radius: 0px;
+ overflow: hidden;
+}
+.panel-group .panel + .panel {
+ margin-top: 5px;
+}
+.panel-group .panel-heading {
+ border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse .panel-body {
+ border-top: 1px solid #dddddd;
+}
+.panel-group .panel-footer {
+ border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+ border-bottom: 1px solid #dddddd;
+}
+.panel-default {
+ border-color: #dddddd;
+}
+.panel-default > .panel-heading {
+ color: #595959;
+ background-color: #f5f5f5;
+ border-color: #dddddd;
+}
+.panel-default > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #dddddd;
+}
+.panel-default > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #dddddd;
+}
+.panel-primary {
+ border-color: #76b900;
+}
+.panel-primary > .panel-heading {
+ color: #ffffff;
+ background-color: #76b900;
+ border-color: #76b900;
+}
+.panel-primary > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #76b900;
+}
+.panel-primary > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #76b900;
+}
+.panel-success {
+ border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+.panel-success > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #d6e9c6;
+}
+.panel-success > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #d6e9c6;
+}
+.panel-warning {
+ border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+}
+.panel-warning > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #faebcc;
+}
+.panel-warning > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #faebcc;
+}
+.panel-danger {
+ border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #ebccd1;
+}
+.panel-danger > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #ebccd1;
+}
+.panel-danger > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #ebccd1;
+}
+.panel-info {
+ border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+ color: #31708f;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+.panel-info > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #bce8f1;
+}
+.panel-info > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #bce8f1;
+}
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 0px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
+}
+.well-lg {
+ padding: 24px;
+ border-radius: 0px;
+}
+.well-sm {
+ padding: 9px;
+ border-radius: 0px;
+}
+.close {
+ float: right;
+ font-size: 24px;
+ font-weight: bold;
+ line-height: 1;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+.close:hover,
+.close:focus {
+ color: #000000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+.modal-open {
+ overflow: hidden;
+}
+.modal {
+ display: none;
+ overflow: auto;
+ overflow-y: scroll;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+}
+.modal.fade .modal-dialog {
+ -webkit-transform: translate(0, -25%);
+ -ms-transform: translate(0, -25%);
+ transform: translate(0, -25%);
+ -webkit-transition: -webkit-transform 0.3s ease-out;
+ -moz-transition: -moz-transform 0.3s ease-out;
+ -o-transition: -o-transform 0.3s ease-out;
+ transition: transform 0.3s ease-out;
+}
+.modal.in .modal-dialog {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 10px;
+ z-index: 1050;
+}
+.modal-content {
+ position: relative;
+ background-color: #ffffff;
+ border: 1px solid #999999;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 0px;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
+ background-clip: padding-box;
+ outline: none;
+}
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1030;
+ background-color: #000000;
+}
+.modal-backdrop.fade {
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.modal-backdrop.in {
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.modal-header {
+ padding: 15px;
+ border-bottom: 1px solid #e5e5e5;
+ min-height: 16.5px;
+}
+.modal-header .close {
+ margin-top: -2px;
+}
+.modal-title {
+ margin: 0;
+ line-height: 1.5;
+}
+.modal-body {
+ position: relative;
+ padding: 20px;
+}
+.modal-footer {
+ margin-top: 15px;
+ padding: 19px 20px 20px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5;
+}
+.modal-footer:before,
+.modal-footer:after {
+ content: " ";
+ display: table;
+}
+.modal-footer:after {
+ clear: both;
+}
+.modal-footer:before,
+.modal-footer:after {
+ content: " ";
+ display: table;
+}
+.modal-footer:after {
+ clear: both;
+}
+.modal-footer .btn + .btn {
+ margin-left: 5px;
+ margin-bottom: 0;
+}
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+ margin-left: 0;
+}
+@media screen and (min-width: 768px) {
+ .modal-dialog {
+ width: 600px;
+ margin: 30px auto;
+ }
+ .modal-content {
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
+ }
+}
+.tooltip {
+ position: absolute;
+ z-index: 1030;
+ display: block;
+ visibility: visible;
+ font-size: 14px;
+ line-height: 1.4;
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.tooltip.in {
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.tooltip.top {
+ margin-top: -3px;
+ padding: 5px 0;
+}
+.tooltip.right {
+ margin-left: 3px;
+ padding: 0 5px;
+}
+.tooltip.bottom {
+ margin-top: 3px;
+ padding: 5px 0;
+}
+.tooltip.left {
+ margin-left: -3px;
+ padding: 0 5px;
+}
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #ffffff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #000000;
+ border-radius: 0px;
+}
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000000;
+}
+.tooltip.top-left .tooltip-arrow {
+ bottom: 0;
+ left: 5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000000;
+}
+.tooltip.top-right .tooltip-arrow {
+ bottom: 0;
+ right: 5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000000;
+}
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-width: 5px 5px 5px 0;
+ border-right-color: #000000;
+}
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #000000;
+}
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000000;
+}
+.tooltip.bottom-left .tooltip-arrow {
+ top: 0;
+ left: 5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000000;
+}
+.tooltip.bottom-right .tooltip-arrow {
+ top: 0;
+ right: 5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000000;
+}
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1010;
+ display: none;
+ max-width: 276px;
+ padding: 1px;
+ text-align: left;
+ background-color: #ffffff;
+ background-clip: padding-box;
+ border: 1px solid #cccccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ border-radius: 0px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ white-space: normal;
+}
+.popover.top {
+ margin-top: -10px;
+}
+.popover.right {
+ margin-left: 10px;
+}
+.popover.bottom {
+ margin-top: 10px;
+}
+.popover.left {
+ margin-left: -10px;
+}
+.popover-title {
+ margin: 0;
+ padding: 8px 14px;
+ font-size: 16px;
+ font-weight: normal;
+ line-height: 18px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 5px 5px 0 0;
+}
+.popover-content {
+ padding: 9px 14px;
+}
+.popover .arrow,
+.popover .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.popover .arrow {
+ border-width: 11px;
+}
+.popover .arrow:after {
+ border-width: 10px;
+ content: "";
+}
+.popover.top .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-bottom-width: 0;
+ border-top-color: #999999;
+ border-top-color: rgba(0, 0, 0, 0.25);
+ bottom: -11px;
+}
+.popover.top .arrow:after {
+ content: " ";
+ bottom: 1px;
+ margin-left: -10px;
+ border-bottom-width: 0;
+ border-top-color: #ffffff;
+}
+.popover.right .arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-left-width: 0;
+ border-right-color: #999999;
+ border-right-color: rgba(0, 0, 0, 0.25);
+}
+.popover.right .arrow:after {
+ content: " ";
+ left: 1px;
+ bottom: -10px;
+ border-left-width: 0;
+ border-right-color: #ffffff;
+}
+.popover.bottom .arrow {
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999999;
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+ top: -11px;
+}
+.popover.bottom .arrow:after {
+ content: " ";
+ top: 1px;
+ margin-left: -10px;
+ border-top-width: 0;
+ border-bottom-color: #ffffff;
+}
+.popover.left .arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-right-width: 0;
+ border-left-color: #999999;
+ border-left-color: rgba(0, 0, 0, 0.25);
+}
+.popover.left .arrow:after {
+ content: " ";
+ right: 1px;
+ border-right-width: 0;
+ border-left-color: #ffffff;
+ bottom: -10px;
+}
+.carousel {
+ position: relative;
+}
+.carousel-inner {
+ position: relative;
+ overflow: hidden;
+ width: 100%;
+}
+.carousel-inner > .item {
+ display: none;
+ position: relative;
+ -webkit-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ display: block;
+ max-width: 100%;
+ height: auto;
+ line-height: 1;
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ display: block;
+}
+.carousel-inner > .active {
+ left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.carousel-inner > .next {
+ left: 100%;
+}
+.carousel-inner > .prev {
+ left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+ left: 0;
+}
+.carousel-inner > .active.left {
+ left: -100%;
+}
+.carousel-inner > .active.right {
+ left: 100%;
+}
+.carousel-control {
+ position: absolute;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ width: 15%;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+ font-size: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+.carousel-control.left {
+ background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.5) 0%), color-stop(rgba(0, 0, 0, 0.0001) 100%));
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+}
+.carousel-control.right {
+ left: auto;
+ right: 0;
+ background-image: -webkit-linear-gradient(left, color-stop(rgba(0, 0, 0, 0.0001) 0%), color-stop(rgba(0, 0, 0, 0.5) 100%));
+ background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+}
+.carousel-control:hover,
+.carousel-control:focus {
+ outline: none;
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+ display: inline-block;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+ left: 50%;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+ right: 50%;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+ width: 20px;
+ height: 20px;
+ margin-top: -10px;
+ margin-left: -10px;
+ font-family: serif;
+}
+.carousel-control .icon-prev:before {
+ content: '\2039';
+}
+.carousel-control .icon-next:before {
+ content: '\203a';
+}
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ margin-left: -30%;
+ padding-left: 0;
+ list-style: none;
+ text-align: center;
+}
+.carousel-indicators li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ border: 1px solid #ffffff;
+ border-radius: 10px;
+ cursor: pointer;
+ background-color: #000 \9;
+ background-color: rgba(0, 0, 0, 0);
+}
+.carousel-indicators .active {
+ margin: 0;
+ width: 12px;
+ height: 12px;
+ background-color: #ffffff;
+}
+.carousel-caption {
+ position: absolute;
+ left: 15%;
+ right: 15%;
+ bottom: 20px;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
+}
+.carousel-caption .btn {
+ text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+ .carousel-control .glyphicons-chevron-left,
+ .carousel-control .glyphicons-chevron-right,
+ .carousel-control .icon-prev,
+ .carousel-control .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ margin-left: -15px;
+ font-size: 30px;
+ }
+ .carousel-caption {
+ left: 20%;
+ right: 20%;
+ padding-bottom: 30px;
+ }
+ .carousel-indicators {
+ bottom: 20px;
+ }
+}
+.clearfix:before,
+.clearfix:after {
+ content: " ";
+ display: table;
+}
+.clearfix:after {
+ clear: both;
+}
+.center-block {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+.pull-right {
+ float: right !important;
+}
+.pull-left {
+ float: left !important;
+}
+.hide {
+ display: none !important;
+}
+.show {
+ display: block !important;
+}
+.invisible {
+ visibility: hidden;
+}
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+.hidden {
+ display: none !important;
+ visibility: hidden !important;
+}
+.affix {
+ position: fixed;
+}
+@-ms-viewport {
+ width: device-width;
+}
+.visible-xs,
+tr.visible-xs,
+th.visible-xs,
+td.visible-xs {
+ display: none !important;
+}
+@media (max-width: 767px) {
+ .visible-xs {
+ display: block !important;
+ }
+ table.visible-xs {
+ display: table;
+ }
+ tr.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-xs,
+ td.visible-xs {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-xs.visible-sm {
+ display: block !important;
+ }
+ table.visible-xs.visible-sm {
+ display: table;
+ }
+ tr.visible-xs.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-xs.visible-sm,
+ td.visible-xs.visible-sm {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-xs.visible-md {
+ display: block !important;
+ }
+ table.visible-xs.visible-md {
+ display: table;
+ }
+ tr.visible-xs.visible-md {
+ display: table-row !important;
+ }
+ th.visible-xs.visible-md,
+ td.visible-xs.visible-md {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-xs.visible-lg {
+ display: block !important;
+ }
+ table.visible-xs.visible-lg {
+ display: table;
+ }
+ tr.visible-xs.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-xs.visible-lg,
+ td.visible-xs.visible-lg {
+ display: table-cell !important;
+ }
+}
+.visible-sm,
+tr.visible-sm,
+th.visible-sm,
+td.visible-sm {
+ display: none !important;
+}
+@media (max-width: 767px) {
+ .visible-sm.visible-xs {
+ display: block !important;
+ }
+ table.visible-sm.visible-xs {
+ display: table;
+ }
+ tr.visible-sm.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-sm.visible-xs,
+ td.visible-sm.visible-xs {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm {
+ display: block !important;
+ }
+ table.visible-sm {
+ display: table;
+ }
+ tr.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-sm,
+ td.visible-sm {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-sm.visible-md {
+ display: block !important;
+ }
+ table.visible-sm.visible-md {
+ display: table;
+ }
+ tr.visible-sm.visible-md {
+ display: table-row !important;
+ }
+ th.visible-sm.visible-md,
+ td.visible-sm.visible-md {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-sm.visible-lg {
+ display: block !important;
+ }
+ table.visible-sm.visible-lg {
+ display: table;
+ }
+ tr.visible-sm.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-sm.visible-lg,
+ td.visible-sm.visible-lg {
+ display: table-cell !important;
+ }
+}
+.visible-md,
+tr.visible-md,
+th.visible-md,
+td.visible-md {
+ display: none !important;
+}
+@media (max-width: 767px) {
+ .visible-md.visible-xs {
+ display: block !important;
+ }
+ table.visible-md.visible-xs {
+ display: table;
+ }
+ tr.visible-md.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-md.visible-xs,
+ td.visible-md.visible-xs {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-md.visible-sm {
+ display: block !important;
+ }
+ table.visible-md.visible-sm {
+ display: table;
+ }
+ tr.visible-md.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-md.visible-sm,
+ td.visible-md.visible-sm {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md {
+ display: block !important;
+ }
+ table.visible-md {
+ display: table;
+ }
+ tr.visible-md {
+ display: table-row !important;
+ }
+ th.visible-md,
+ td.visible-md {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-md.visible-lg {
+ display: block !important;
+ }
+ table.visible-md.visible-lg {
+ display: table;
+ }
+ tr.visible-md.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-md.visible-lg,
+ td.visible-md.visible-lg {
+ display: table-cell !important;
+ }
+}
+.visible-lg,
+tr.visible-lg,
+th.visible-lg,
+td.visible-lg {
+ display: none !important;
+}
+@media (max-width: 767px) {
+ .visible-lg.visible-xs {
+ display: block !important;
+ }
+ table.visible-lg.visible-xs {
+ display: table;
+ }
+ tr.visible-lg.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-lg.visible-xs,
+ td.visible-lg.visible-xs {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-lg.visible-sm {
+ display: block !important;
+ }
+ table.visible-lg.visible-sm {
+ display: table;
+ }
+ tr.visible-lg.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-lg.visible-sm,
+ td.visible-lg.visible-sm {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-lg.visible-md {
+ display: block !important;
+ }
+ table.visible-lg.visible-md {
+ display: table;
+ }
+ tr.visible-lg.visible-md {
+ display: table-row !important;
+ }
+ th.visible-lg.visible-md,
+ td.visible-lg.visible-md {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg {
+ display: block !important;
+ }
+ table.visible-lg {
+ display: table;
+ }
+ tr.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-lg,
+ td.visible-lg {
+ display: table-cell !important;
+ }
+}
+.hidden-xs {
+ display: block !important;
+}
+table.hidden-xs {
+ display: table;
+}
+tr.hidden-xs {
+ display: table-row !important;
+}
+th.hidden-xs,
+td.hidden-xs {
+ display: table-cell !important;
+}
+@media (max-width: 767px) {
+ .hidden-xs,
+ tr.hidden-xs,
+ th.hidden-xs,
+ td.hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-xs.hidden-sm,
+ tr.hidden-xs.hidden-sm,
+ th.hidden-xs.hidden-sm,
+ td.hidden-xs.hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-xs.hidden-md,
+ tr.hidden-xs.hidden-md,
+ th.hidden-xs.hidden-md,
+ td.hidden-xs.hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-xs.hidden-lg,
+ tr.hidden-xs.hidden-lg,
+ th.hidden-xs.hidden-lg,
+ td.hidden-xs.hidden-lg {
+ display: none !important;
+ }
+}
+.hidden-sm {
+ display: block !important;
+}
+table.hidden-sm {
+ display: table;
+}
+tr.hidden-sm {
+ display: table-row !important;
+}
+th.hidden-sm,
+td.hidden-sm {
+ display: table-cell !important;
+}
+@media (max-width: 767px) {
+ .hidden-sm.hidden-xs,
+ tr.hidden-sm.hidden-xs,
+ th.hidden-sm.hidden-xs,
+ td.hidden-sm.hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm,
+ tr.hidden-sm,
+ th.hidden-sm,
+ td.hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-sm.hidden-md,
+ tr.hidden-sm.hidden-md,
+ th.hidden-sm.hidden-md,
+ td.hidden-sm.hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-sm.hidden-lg,
+ tr.hidden-sm.hidden-lg,
+ th.hidden-sm.hidden-lg,
+ td.hidden-sm.hidden-lg {
+ display: none !important;
+ }
+}
+.hidden-md {
+ display: block !important;
+}
+table.hidden-md {
+ display: table;
+}
+tr.hidden-md {
+ display: table-row !important;
+}
+th.hidden-md,
+td.hidden-md {
+ display: table-cell !important;
+}
+@media (max-width: 767px) {
+ .hidden-md.hidden-xs,
+ tr.hidden-md.hidden-xs,
+ th.hidden-md.hidden-xs,
+ td.hidden-md.hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-md.hidden-sm,
+ tr.hidden-md.hidden-sm,
+ th.hidden-md.hidden-sm,
+ td.hidden-md.hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md,
+ tr.hidden-md,
+ th.hidden-md,
+ td.hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-md.hidden-lg,
+ tr.hidden-md.hidden-lg,
+ th.hidden-md.hidden-lg,
+ td.hidden-md.hidden-lg {
+ display: none !important;
+ }
+}
+.hidden-lg {
+ display: block !important;
+}
+table.hidden-lg {
+ display: table;
+}
+tr.hidden-lg {
+ display: table-row !important;
+}
+th.hidden-lg,
+td.hidden-lg {
+ display: table-cell !important;
+}
+@media (max-width: 767px) {
+ .hidden-lg.hidden-xs,
+ tr.hidden-lg.hidden-xs,
+ th.hidden-lg.hidden-xs,
+ td.hidden-lg.hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-lg.hidden-sm,
+ tr.hidden-lg.hidden-sm,
+ th.hidden-lg.hidden-sm,
+ td.hidden-lg.hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-lg.hidden-md,
+ tr.hidden-lg.hidden-md,
+ th.hidden-lg.hidden-md,
+ td.hidden-lg.hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-lg,
+ tr.hidden-lg,
+ th.hidden-lg,
+ td.hidden-lg {
+ display: none !important;
+ }
+}
+.visible-print,
+tr.visible-print,
+th.visible-print,
+td.visible-print {
+ display: none !important;
+}
+@media print {
+ .visible-print {
+ display: block !important;
+ }
+ table.visible-print {
+ display: table;
+ }
+ tr.visible-print {
+ display: table-row !important;
+ }
+ th.visible-print,
+ td.visible-print {
+ display: table-cell !important;
+ }
+ .hidden-print,
+ tr.hidden-print,
+ th.hidden-print,
+ td.hidden-print {
+ display: none !important;
+ }
+}
+/*!
+ * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */
+/* FONT PATH
+ * -------------------------- */
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('fontawesome-webfont.eot?v=4.0.3');
+ src: url('fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('fontawesome-webfont.woff?v=4.0.3') format('woff'), url('fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+.fa {
+ display: inline-block;
+ font-family: FontAwesome;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+/* makes the font 33% larger relative to the icon container */
+.fa-lg {
+ font-size: 1.3333333333333333em;
+ line-height: 0.75em;
+ vertical-align: -15%;
+}
+.fa-2x {
+ font-size: 2em;
+}
+.fa-3x {
+ font-size: 3em;
+}
+.fa-4x {
+ font-size: 4em;
+}
+.fa-5x {
+ font-size: 5em;
+}
+.fa-fw {
+ width: 1.2857142857142858em;
+ text-align: center;
+}
+.fa-ul {
+ padding-left: 0;
+ margin-left: 2.142857142857143em;
+ list-style-type: none;
+}
+.fa-ul > li {
+ position: relative;
+}
+.fa-li {
+ position: absolute;
+ left: -2.142857142857143em;
+ width: 2.142857142857143em;
+ top: 0.14285714285714285em;
+ text-align: center;
+}
+.fa-li.fa-lg {
+ left: -1.8571428571428572em;
+}
+.fa-border {
+ padding: .2em .25em .15em;
+ border: solid 0.08em #eeeeee;
+ border-radius: .1em;
+}
+.pull-right {
+ float: right;
+}
+.pull-left {
+ float: left;
+}
+.fa.pull-left {
+ margin-right: .3em;
+}
+.fa.pull-right {
+ margin-left: .3em;
+}
+.fa-spin {
+ -webkit-animation: spin 2s infinite linear;
+ -moz-animation: spin 2s infinite linear;
+ -o-animation: spin 2s infinite linear;
+ animation: spin 2s infinite linear;
+}
+@-moz-keyframes spin {
+ 0% {
+ -moz-transform: rotate(0deg);
+ }
+ 100% {
+ -moz-transform: rotate(359deg);
+ }
+}
+@-webkit-keyframes spin {
+ 0% {
+ -webkit-transform: rotate(0deg);
+ }
+ 100% {
+ -webkit-transform: rotate(359deg);
+ }
+}
+@-o-keyframes spin {
+ 0% {
+ -o-transform: rotate(0deg);
+ }
+ 100% {
+ -o-transform: rotate(359deg);
+ }
+}
+@-ms-keyframes spin {
+ 0% {
+ -ms-transform: rotate(0deg);
+ }
+ 100% {
+ -ms-transform: rotate(359deg);
+ }
+}
+@keyframes spin {
+ 0% {
+ transform: rotate(0deg);
+ }
+ 100% {
+ transform: rotate(359deg);
+ }
+}
+.fa-rotate-90 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+ -webkit-transform: rotate(90deg);
+ -moz-transform: rotate(90deg);
+ -ms-transform: rotate(90deg);
+ -o-transform: rotate(90deg);
+ transform: rotate(90deg);
+}
+.fa-rotate-180 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+ -webkit-transform: rotate(180deg);
+ -moz-transform: rotate(180deg);
+ -ms-transform: rotate(180deg);
+ -o-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+.fa-rotate-270 {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+ -webkit-transform: rotate(270deg);
+ -moz-transform: rotate(270deg);
+ -ms-transform: rotate(270deg);
+ -o-transform: rotate(270deg);
+ transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
+ -webkit-transform: scale(-1, 1);
+ -moz-transform: scale(-1, 1);
+ -ms-transform: scale(-1, 1);
+ -o-transform: scale(-1, 1);
+ transform: scale(-1, 1);
+}
+.fa-flip-vertical {
+ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
+ -webkit-transform: scale(1, -1);
+ -moz-transform: scale(1, -1);
+ -ms-transform: scale(1, -1);
+ -o-transform: scale(1, -1);
+ transform: scale(1, -1);
+}
+.fa-stack {
+ position: relative;
+ display: inline-block;
+ width: 2em;
+ height: 2em;
+ line-height: 2em;
+ vertical-align: middle;
+}
+.fa-stack-1x,
+.fa-stack-2x {
+ position: absolute;
+ left: 0;
+ width: 100%;
+ text-align: center;
+}
+.fa-stack-1x {
+ line-height: inherit;
+}
+.fa-stack-2x {
+ font-size: 2em;
+}
+.fa-inverse {
+ color: #ffffff;
+}
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+ readers do not read off random characters that represent icons */
+.fa-glass:before {
+ content: "\f000";
+}
+.fa-music:before {
+ content: "\f001";
+}
+.fa-search:before {
+ content: "\f002";
+}
+.fa-envelope-o:before {
+ content: "\f003";
+}
+.fa-heart:before {
+ content: "\f004";
+}
+.fa-star:before {
+ content: "\f005";
+}
+.fa-star-o:before {
+ content: "\f006";
+}
+.fa-user:before {
+ content: "\f007";
+}
+.fa-film:before {
+ content: "\f008";
+}
+.fa-th-large:before {
+ content: "\f009";
+}
+.fa-th:before {
+ content: "\f00a";
+}
+.fa-th-list:before {
+ content: "\f00b";
+}
+.fa-check:before {
+ content: "\f00c";
+}
+.fa-times:before {
+ content: "\f00d";
+}
+.fa-search-plus:before {
+ content: "\f00e";
+}
+.fa-search-minus:before {
+ content: "\f010";
+}
+.fa-power-off:before {
+ content: "\f011";
+}
+.fa-signal:before {
+ content: "\f012";
+}
+.fa-gear:before,
+.fa-cog:before {
+ content: "\f013";
+}
+.fa-trash-o:before {
+ content: "\f014";
+}
+.fa-home:before {
+ content: "\f015";
+}
+.fa-file-o:before {
+ content: "\f016";
+}
+.fa-clock-o:before {
+ content: "\f017";
+}
+.fa-road:before {
+ content: "\f018";
+}
+.fa-download:before {
+ content: "\f019";
+}
+.fa-arrow-circle-o-down:before {
+ content: "\f01a";
+}
+.fa-arrow-circle-o-up:before {
+ content: "\f01b";
+}
+.fa-inbox:before {
+ content: "\f01c";
+}
+.fa-play-circle-o:before {
+ content: "\f01d";
+}
+.fa-rotate-right:before,
+.fa-repeat:before {
+ content: "\f01e";
+}
+.fa-refresh:before {
+ content: "\f021";
+}
+.fa-list-alt:before {
+ content: "\f022";
+}
+.fa-lock:before {
+ content: "\f023";
+}
+.fa-flag:before {
+ content: "\f024";
+}
+.fa-headphones:before {
+ content: "\f025";
+}
+.fa-volume-off:before {
+ content: "\f026";
+}
+.fa-volume-down:before {
+ content: "\f027";
+}
+.fa-volume-up:before {
+ content: "\f028";
+}
+.fa-qrcode:before {
+ content: "\f029";
+}
+.fa-barcode:before {
+ content: "\f02a";
+}
+.fa-tag:before {
+ content: "\f02b";
+}
+.fa-tags:before {
+ content: "\f02c";
+}
+.fa-book:before {
+ content: "\f02d";
+}
+.fa-bookmark:before {
+ content: "\f02e";
+}
+.fa-print:before {
+ content: "\f02f";
+}
+.fa-camera:before {
+ content: "\f030";
+}
+.fa-font:before {
+ content: "\f031";
+}
+.fa-bold:before {
+ content: "\f032";
+}
+.fa-italic:before {
+ content: "\f033";
+}
+.fa-text-height:before {
+ content: "\f034";
+}
+.fa-text-width:before {
+ content: "\f035";
+}
+.fa-align-left:before {
+ content: "\f036";
+}
+.fa-align-center:before {
+ content: "\f037";
+}
+.fa-align-right:before {
+ content: "\f038";
+}
+.fa-align-justify:before {
+ content: "\f039";
+}
+.fa-list:before {
+ content: "\f03a";
+}
+.fa-dedent:before,
+.fa-outdent:before {
+ content: "\f03b";
+}
+.fa-indent:before {
+ content: "\f03c";
+}
+.fa-video-camera:before {
+ content: "\f03d";
+}
+.fa-picture-o:before {
+ content: "\f03e";
+}
+.fa-pencil:before {
+ content: "\f040";
+}
+.fa-map-marker:before {
+ content: "\f041";
+}
+.fa-adjust:before {
+ content: "\f042";
+}
+.fa-tint:before {
+ content: "\f043";
+}
+.fa-edit:before,
+.fa-pencil-square-o:before {
+ content: "\f044";
+}
+.fa-share-square-o:before {
+ content: "\f045";
+}
+.fa-check-square-o:before {
+ content: "\f046";
+}
+.fa-arrows:before {
+ content: "\f047";
+}
+.fa-step-backward:before {
+ content: "\f048";
+}
+.fa-fast-backward:before {
+ content: "\f049";
+}
+.fa-backward:before {
+ content: "\f04a";
+}
+.fa-play:before {
+ content: "\f04b";
+}
+.fa-pause:before {
+ content: "\f04c";
+}
+.fa-stop:before {
+ content: "\f04d";
+}
+.fa-forward:before {
+ content: "\f04e";
+}
+.fa-fast-forward:before {
+ content: "\f050";
+}
+.fa-step-forward:before {
+ content: "\f051";
+}
+.fa-eject:before {
+ content: "\f052";
+}
+.fa-chevron-left:before {
+ content: "\f053";
+}
+.fa-chevron-right:before {
+ content: "\f054";
+}
+.fa-plus-circle:before {
+ content: "\f055";
+}
+.fa-minus-circle:before {
+ content: "\f056";
+}
+.fa-times-circle:before {
+ content: "\f057";
+}
+.fa-check-circle:before {
+ content: "\f058";
+}
+.fa-question-circle:before {
+ content: "\f059";
+}
+.fa-info-circle:before {
+ content: "\f05a";
+}
+.fa-crosshairs:before {
+ content: "\f05b";
+}
+.fa-times-circle-o:before {
+ content: "\f05c";
+}
+.fa-check-circle-o:before {
+ content: "\f05d";
+}
+.fa-ban:before {
+ content: "\f05e";
+}
+.fa-arrow-left:before {
+ content: "\f060";
+}
+.fa-arrow-right:before {
+ content: "\f061";
+}
+.fa-arrow-up:before {
+ content: "\f062";
+}
+.fa-arrow-down:before {
+ content: "\f063";
+}
+.fa-mail-forward:before,
+.fa-share:before {
+ content: "\f064";
+}
+.fa-expand:before {
+ content: "\f065";
+}
+.fa-compress:before {
+ content: "\f066";
+}
+.fa-plus:before {
+ content: "\f067";
+}
+.fa-minus:before {
+ content: "\f068";
+}
+.fa-asterisk:before {
+ content: "\f069";
+}
+.fa-exclamation-circle:before {
+ content: "\f06a";
+}
+.fa-gift:before {
+ content: "\f06b";
+}
+.fa-leaf:before {
+ content: "\f06c";
+}
+.fa-fire:before {
+ content: "\f06d";
+}
+.fa-eye:before {
+ content: "\f06e";
+}
+.fa-eye-slash:before {
+ content: "\f070";
+}
+.fa-warning:before,
+.fa-exclamation-triangle:before {
+ content: "\f071";
+}
+.fa-plane:before {
+ content: "\f072";
+}
+.fa-calendar:before {
+ content: "\f073";
+}
+.fa-random:before {
+ content: "\f074";
+}
+.fa-comment:before {
+ content: "\f075";
+}
+.fa-magnet:before {
+ content: "\f076";
+}
+.fa-chevron-up:before {
+ content: "\f077";
+}
+.fa-chevron-down:before {
+ content: "\f078";
+}
+.fa-retweet:before {
+ content: "\f079";
+}
+.fa-shopping-cart:before {
+ content: "\f07a";
+}
+.fa-folder:before {
+ content: "\f07b";
+}
+.fa-folder-open:before {
+ content: "\f07c";
+}
+.fa-arrows-v:before {
+ content: "\f07d";
+}
+.fa-arrows-h:before {
+ content: "\f07e";
+}
+.fa-bar-chart-o:before {
+ content: "\f080";
+}
+.fa-twitter-square:before {
+ content: "\f081";
+}
+.fa-facebook-square:before {
+ content: "\f082";
+}
+.fa-camera-retro:before {
+ content: "\f083";
+}
+.fa-key:before {
+ content: "\f084";
+}
+.fa-gears:before,
+.fa-cogs:before {
+ content: "\f085";
+}
+.fa-comments:before {
+ content: "\f086";
+}
+.fa-thumbs-o-up:before {
+ content: "\f087";
+}
+.fa-thumbs-o-down:before {
+ content: "\f088";
+}
+.fa-star-half:before {
+ content: "\f089";
+}
+.fa-heart-o:before {
+ content: "\f08a";
+}
+.fa-sign-out:before {
+ content: "\f08b";
+}
+.fa-linkedin-square:before {
+ content: "\f08c";
+}
+.fa-thumb-tack:before {
+ content: "\f08d";
+}
+.fa-external-link:before {
+ content: "\f08e";
+}
+.fa-sign-in:before {
+ content: "\f090";
+}
+.fa-trophy:before {
+ content: "\f091";
+}
+.fa-github-square:before {
+ content: "\f092";
+}
+.fa-upload:before {
+ content: "\f093";
+}
+.fa-lemon-o:before {
+ content: "\f094";
+}
+.fa-phone:before {
+ content: "\f095";
+}
+.fa-square-o:before {
+ content: "\f096";
+}
+.fa-bookmark-o:before {
+ content: "\f097";
+}
+.fa-phone-square:before {
+ content: "\f098";
+}
+.fa-twitter:before {
+ content: "\f099";
+}
+.fa-facebook:before {
+ content: "\f09a";
+}
+.fa-github:before {
+ content: "\f09b";
+}
+.fa-unlock:before {
+ content: "\f09c";
+}
+.fa-credit-card:before {
+ content: "\f09d";
+}
+.fa-rss:before {
+ content: "\f09e";
+}
+.fa-hdd-o:before {
+ content: "\f0a0";
+}
+.fa-bullhorn:before {
+ content: "\f0a1";
+}
+.fa-bell:before {
+ content: "\f0f3";
+}
+.fa-certificate:before {
+ content: "\f0a3";
+}
+.fa-hand-o-right:before {
+ content: "\f0a4";
+}
+.fa-hand-o-left:before {
+ content: "\f0a5";
+}
+.fa-hand-o-up:before {
+ content: "\f0a6";
+}
+.fa-hand-o-down:before {
+ content: "\f0a7";
+}
+.fa-arrow-circle-left:before {
+ content: "\f0a8";
+}
+.fa-arrow-circle-right:before {
+ content: "\f0a9";
+}
+.fa-arrow-circle-up:before {
+ content: "\f0aa";
+}
+.fa-arrow-circle-down:before {
+ content: "\f0ab";
+}
+.fa-globe:before {
+ content: "\f0ac";
+}
+.fa-wrench:before {
+ content: "\f0ad";
+}
+.fa-tasks:before {
+ content: "\f0ae";
+}
+.fa-filter:before {
+ content: "\f0b0";
+}
+.fa-briefcase:before {
+ content: "\f0b1";
+}
+.fa-arrows-alt:before {
+ content: "\f0b2";
+}
+.fa-group:before,
+.fa-users:before {
+ content: "\f0c0";
+}
+.fa-chain:before,
+.fa-link:before {
+ content: "\f0c1";
+}
+.fa-cloud:before {
+ content: "\f0c2";
+}
+.fa-flask:before {
+ content: "\f0c3";
+}
+.fa-cut:before,
+.fa-scissors:before {
+ content: "\f0c4";
+}
+.fa-copy:before,
+.fa-files-o:before {
+ content: "\f0c5";
+}
+.fa-paperclip:before {
+ content: "\f0c6";
+}
+.fa-save:before,
+.fa-floppy-o:before {
+ content: "\f0c7";
+}
+.fa-square:before {
+ content: "\f0c8";
+}
+.fa-bars:before {
+ content: "\f0c9";
+}
+.fa-list-ul:before {
+ content: "\f0ca";
+}
+.fa-list-ol:before {
+ content: "\f0cb";
+}
+.fa-strikethrough:before {
+ content: "\f0cc";
+}
+.fa-underline:before {
+ content: "\f0cd";
+}
+.fa-table:before {
+ content: "\f0ce";
+}
+.fa-magic:before {
+ content: "\f0d0";
+}
+.fa-truck:before {
+ content: "\f0d1";
+}
+.fa-pinterest:before {
+ content: "\f0d2";
+}
+.fa-pinterest-square:before {
+ content: "\f0d3";
+}
+.fa-google-plus-square:before {
+ content: "\f0d4";
+}
+.fa-google-plus:before {
+ content: "\f0d5";
+}
+.fa-money:before {
+ content: "\f0d6";
+}
+.fa-caret-down:before {
+ content: "\f0d7";
+}
+.fa-caret-up:before {
+ content: "\f0d8";
+}
+.fa-caret-left:before {
+ content: "\f0d9";
+}
+.fa-caret-right:before {
+ content: "\f0da";
+}
+.fa-columns:before {
+ content: "\f0db";
+}
+.fa-unsorted:before,
+.fa-sort:before {
+ content: "\f0dc";
+}
+.fa-sort-down:before,
+.fa-sort-asc:before {
+ content: "\f0dd";
+}
+.fa-sort-up:before,
+.fa-sort-desc:before {
+ content: "\f0de";
+}
+.fa-envelope:before {
+ content: "\f0e0";
+}
+.fa-linkedin:before {
+ content: "\f0e1";
+}
+.fa-rotate-left:before,
+.fa-undo:before {
+ content: "\f0e2";
+}
+.fa-legal:before,
+.fa-gavel:before {
+ content: "\f0e3";
+}
+.fa-dashboard:before,
+.fa-tachometer:before {
+ content: "\f0e4";
+}
+.fa-comment-o:before {
+ content: "\f0e5";
+}
+.fa-comments-o:before {
+ content: "\f0e6";
+}
+.fa-flash:before,
+.fa-bolt:before {
+ content: "\f0e7";
+}
+.fa-sitemap:before {
+ content: "\f0e8";
+}
+.fa-umbrella:before {
+ content: "\f0e9";
+}
+.fa-paste:before,
+.fa-clipboard:before {
+ content: "\f0ea";
+}
+.fa-lightbulb-o:before {
+ content: "\f0eb";
+}
+.fa-exchange:before {
+ content: "\f0ec";
+}
+.fa-cloud-download:before {
+ content: "\f0ed";
+}
+.fa-cloud-upload:before {
+ content: "\f0ee";
+}
+.fa-user-md:before {
+ content: "\f0f0";
+}
+.fa-stethoscope:before {
+ content: "\f0f1";
+}
+.fa-suitcase:before {
+ content: "\f0f2";
+}
+.fa-bell-o:before {
+ content: "\f0a2";
+}
+.fa-coffee:before {
+ content: "\f0f4";
+}
+.fa-cutlery:before {
+ content: "\f0f5";
+}
+.fa-file-text-o:before {
+ content: "\f0f6";
+}
+.fa-building-o:before {
+ content: "\f0f7";
+}
+.fa-hospital-o:before {
+ content: "\f0f8";
+}
+.fa-ambulance:before {
+ content: "\f0f9";
+}
+.fa-medkit:before {
+ content: "\f0fa";
+}
+.fa-fighter-jet:before {
+ content: "\f0fb";
+}
+.fa-beer:before {
+ content: "\f0fc";
+}
+.fa-h-square:before {
+ content: "\f0fd";
+}
+.fa-plus-square:before {
+ content: "\f0fe";
+}
+.fa-angle-double-left:before {
+ content: "\f100";
+}
+.fa-angle-double-right:before {
+ content: "\f101";
+}
+.fa-angle-double-up:before {
+ content: "\f102";
+}
+.fa-angle-double-down:before {
+ content: "\f103";
+}
+.fa-angle-left:before {
+ content: "\f104";
+}
+.fa-angle-right:before {
+ content: "\f105";
+}
+.fa-angle-up:before {
+ content: "\f106";
+}
+.fa-angle-down:before {
+ content: "\f107";
+}
+.fa-desktop:before {
+ content: "\f108";
+}
+.fa-laptop:before {
+ content: "\f109";
+}
+.fa-tablet:before {
+ content: "\f10a";
+}
+.fa-mobile-phone:before,
+.fa-mobile:before {
+ content: "\f10b";
+}
+.fa-circle-o:before {
+ content: "\f10c";
+}
+.fa-quote-left:before {
+ content: "\f10d";
+}
+.fa-quote-right:before {
+ content: "\f10e";
+}
+.fa-spinner:before {
+ content: "\f110";
+}
+.fa-circle:before {
+ content: "\f111";
+}
+.fa-mail-reply:before,
+.fa-reply:before {
+ content: "\f112";
+}
+.fa-github-alt:before {
+ content: "\f113";
+}
+.fa-folder-o:before {
+ content: "\f114";
+}
+.fa-folder-open-o:before {
+ content: "\f115";
+}
+.fa-smile-o:before {
+ content: "\f118";
+}
+.fa-frown-o:before {
+ content: "\f119";
+}
+.fa-meh-o:before {
+ content: "\f11a";
+}
+.fa-gamepad:before {
+ content: "\f11b";
+}
+.fa-keyboard-o:before {
+ content: "\f11c";
+}
+.fa-flag-o:before {
+ content: "\f11d";
+}
+.fa-flag-checkered:before {
+ content: "\f11e";
+}
+.fa-terminal:before {
+ content: "\f120";
+}
+.fa-code:before {
+ content: "\f121";
+}
+.fa-reply-all:before {
+ content: "\f122";
+}
+.fa-mail-reply-all:before {
+ content: "\f122";
+}
+.fa-star-half-empty:before,
+.fa-star-half-full:before,
+.fa-star-half-o:before {
+ content: "\f123";
+}
+.fa-location-arrow:before {
+ content: "\f124";
+}
+.fa-crop:before {
+ content: "\f125";
+}
+.fa-code-fork:before {
+ content: "\f126";
+}
+.fa-unlink:before,
+.fa-chain-broken:before {
+ content: "\f127";
+}
+.fa-question:before {
+ content: "\f128";
+}
+.fa-info:before {
+ content: "\f129";
+}
+.fa-exclamation:before {
+ content: "\f12a";
+}
+.fa-superscript:before {
+ content: "\f12b";
+}
+.fa-subscript:before {
+ content: "\f12c";
+}
+.fa-eraser:before {
+ content: "\f12d";
+}
+.fa-puzzle-piece:before {
+ content: "\f12e";
+}
+.fa-microphone:before {
+ content: "\f130";
+}
+.fa-microphone-slash:before {
+ content: "\f131";
+}
+.fa-shield:before {
+ content: "\f132";
+}
+.fa-calendar-o:before {
+ content: "\f133";
+}
+.fa-fire-extinguisher:before {
+ content: "\f134";
+}
+.fa-rocket:before {
+ content: "\f135";
+}
+.fa-maxcdn:before {
+ content: "\f136";
+}
+.fa-chevron-circle-left:before {
+ content: "\f137";
+}
+.fa-chevron-circle-right:before {
+ content: "\f138";
+}
+.fa-chevron-circle-up:before {
+ content: "\f139";
+}
+.fa-chevron-circle-down:before {
+ content: "\f13a";
+}
+.fa-html5:before {
+ content: "\f13b";
+}
+.fa-css3:before {
+ content: "\f13c";
+}
+.fa-anchor:before {
+ content: "\f13d";
+}
+.fa-unlock-alt:before {
+ content: "\f13e";
+}
+.fa-bullseye:before {
+ content: "\f140";
+}
+.fa-ellipsis-h:before {
+ content: "\f141";
+}
+.fa-ellipsis-v:before {
+ content: "\f142";
+}
+.fa-rss-square:before {
+ content: "\f143";
+}
+.fa-play-circle:before {
+ content: "\f144";
+}
+.fa-ticket:before {
+ content: "\f145";
+}
+.fa-minus-square:before {
+ content: "\f146";
+}
+.fa-minus-square-o:before {
+ content: "\f147";
+}
+.fa-level-up:before {
+ content: "\f148";
+}
+.fa-level-down:before {
+ content: "\f149";
+}
+.fa-check-square:before {
+ content: "\f14a";
+}
+.fa-pencil-square:before {
+ content: "\f14b";
+}
+.fa-external-link-square:before {
+ content: "\f14c";
+}
+.fa-share-square:before {
+ content: "\f14d";
+}
+.fa-compass:before {
+ content: "\f14e";
+}
+.fa-toggle-down:before,
+.fa-caret-square-o-down:before {
+ content: "\f150";
+}
+.fa-toggle-up:before,
+.fa-caret-square-o-up:before {
+ content: "\f151";
+}
+.fa-toggle-right:before,
+.fa-caret-square-o-right:before {
+ content: "\f152";
+}
+.fa-euro:before,
+.fa-eur:before {
+ content: "\f153";
+}
+.fa-gbp:before {
+ content: "\f154";
+}
+.fa-dollar:before,
+.fa-usd:before {
+ content: "\f155";
+}
+.fa-rupee:before,
+.fa-inr:before {
+ content: "\f156";
+}
+.fa-cny:before,
+.fa-rmb:before,
+.fa-yen:before,
+.fa-jpy:before {
+ content: "\f157";
+}
+.fa-ruble:before,
+.fa-rouble:before,
+.fa-rub:before {
+ content: "\f158";
+}
+.fa-won:before,
+.fa-krw:before {
+ content: "\f159";
+}
+.fa-bitcoin:before,
+.fa-btc:before {
+ content: "\f15a";
+}
+.fa-file:before {
+ content: "\f15b";
+}
+.fa-file-text:before {
+ content: "\f15c";
+}
+.fa-sort-alpha-asc:before {
+ content: "\f15d";
+}
+.fa-sort-alpha-desc:before {
+ content: "\f15e";
+}
+.fa-sort-amount-asc:before {
+ content: "\f160";
+}
+.fa-sort-amount-desc:before {
+ content: "\f161";
+}
+.fa-sort-numeric-asc:before {
+ content: "\f162";
+}
+.fa-sort-numeric-desc:before {
+ content: "\f163";
+}
+.fa-thumbs-up:before {
+ content: "\f164";
+}
+.fa-thumbs-down:before {
+ content: "\f165";
+}
+.fa-youtube-square:before {
+ content: "\f166";
+}
+.fa-youtube:before {
+ content: "\f167";
+}
+.fa-xing:before {
+ content: "\f168";
+}
+.fa-xing-square:before {
+ content: "\f169";
+}
+.fa-youtube-play:before {
+ content: "\f16a";
+}
+.fa-dropbox:before {
+ content: "\f16b";
+}
+.fa-stack-overflow:before {
+ content: "\f16c";
+}
+.fa-instagram:before {
+ content: "\f16d";
+}
+.fa-flickr:before {
+ content: "\f16e";
+}
+.fa-adn:before {
+ content: "\f170";
+}
+.fa-bitbucket:before {
+ content: "\f171";
+}
+.fa-bitbucket-square:before {
+ content: "\f172";
+}
+.fa-tumblr:before {
+ content: "\f173";
+}
+.fa-tumblr-square:before {
+ content: "\f174";
+}
+.fa-long-arrow-down:before {
+ content: "\f175";
+}
+.fa-long-arrow-up:before {
+ content: "\f176";
+}
+.fa-long-arrow-left:before {
+ content: "\f177";
+}
+.fa-long-arrow-right:before {
+ content: "\f178";
+}
+.fa-apple:before {
+ content: "\f179";
+}
+.fa-windows:before {
+ content: "\f17a";
+}
+.fa-android:before {
+ content: "\f17b";
+}
+.fa-linux:before {
+ content: "\f17c";
+}
+.fa-dribbble:before {
+ content: "\f17d";
+}
+.fa-skype:before {
+ content: "\f17e";
+}
+.fa-foursquare:before {
+ content: "\f180";
+}
+.fa-trello:before {
+ content: "\f181";
+}
+.fa-female:before {
+ content: "\f182";
+}
+.fa-male:before {
+ content: "\f183";
+}
+.fa-gittip:before {
+ content: "\f184";
+}
+.fa-sun-o:before {
+ content: "\f185";
+}
+.fa-moon-o:before {
+ content: "\f186";
+}
+.fa-archive:before {
+ content: "\f187";
+}
+.fa-bug:before {
+ content: "\f188";
+}
+.fa-vk:before {
+ content: "\f189";
+}
+.fa-weibo:before {
+ content: "\f18a";
+}
+.fa-renren:before {
+ content: "\f18b";
+}
+.fa-pagelines:before {
+ content: "\f18c";
+}
+.fa-stack-exchange:before {
+ content: "\f18d";
+}
+.fa-arrow-circle-o-right:before {
+ content: "\f18e";
+}
+.fa-arrow-circle-o-left:before {
+ content: "\f190";
+}
+.fa-toggle-left:before,
+.fa-caret-square-o-left:before {
+ content: "\f191";
+}
+.fa-dot-circle-o:before {
+ content: "\f192";
+}
+.fa-wheelchair:before {
+ content: "\f193";
+}
+.fa-vimeo-square:before {
+ content: "\f194";
+}
+.fa-turkish-lira:before,
+.fa-try:before {
+ content: "\f195";
+}
+.fa-plus-square-o:before {
+ content: "\f196";
+}
+@font-face {
+ font-family: 'Roboto';
+ src: url("Roboto.woff") format("woff");
+ font-weight: 400;
+ font-style: normal;
+}
+@font-face {
+ font-family: 'Roboto';
+ src: url("Roboto-Ita.woff") format("woff");
+ font-weight: 400;
+ font-style: italic;
+}
+@font-face {
+ font-family: 'Roboto';
+ src: url("Roboto-Medium.woff") format("woff");
+ font-weight: 600;
+ font-style: normal;
+}
+@font-face {
+ font-family: 'Roboto';
+ src: url("Roboto-MediumIta.woff") format("woff");
+ font-weight: 600;
+ font-style: italic;
+}
+@font-face {
+ font-family: 'Roboto';
+ src: url("Roboto-Bold.woff") format("woff");
+ font-weight: 700;
+ font-style: normal;
+}
+@font-face {
+ font-family: 'Roboto';
+ src: url("Roboto-BoldIta.woff") format("woff");
+ font-weight: 700;
+ font-style: italic;
+}
+@font-face {
+ font-family: 'Roboto';
+ src: url("Roboto-Light.woff") format("woff");
+ font-weight: 300;
+ font-style: normal;
+}
+@font-face {
+ font-family: 'Roboto';
+ src: url("Roboto-LightIta.woff") format("woff");
+ font-weight: 300;
+ font-style: italic;
+}
+@media (min-width: 1400px) {
+ .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12 {
+ float: left;
+ }
+ .col-xl-12 {
+ width: 100%;
+ }
+ .col-xl-11 {
+ width: 91.66666666666666%;
+ }
+ .col-xl-10 {
+ width: 83.33333333333334%;
+ }
+ .col-xl-9 {
+ width: 75%;
+ }
+ .col-xl-8 {
+ width: 66.66666666666666%;
+ }
+ .col-xl-7 {
+ width: 58.333333333333336%;
+ }
+ .col-xl-6 {
+ width: 50%;
+ }
+ .col-xl-5 {
+ width: 41.66666666666667%;
+ }
+ .col-xl-4 {
+ width: 33.33333333333333%;
+ }
+ .col-xl-3 {
+ width: 25%;
+ }
+ .col-xl-2 {
+ width: 16.666666666666664%;
+ }
+ .col-xl-1 {
+ width: 8.333333333333332%;
+ }
+ .col-xl-pull-12 {
+ right: 100%;
+ }
+ .col-xl-pull-11 {
+ right: 91.66666666666666%;
+ }
+ .col-xl-pull-10 {
+ right: 83.33333333333334%;
+ }
+ .col-xl-pull-9 {
+ right: 75%;
+ }
+ .col-xl-pull-8 {
+ right: 66.66666666666666%;
+ }
+ .col-xl-pull-7 {
+ right: 58.333333333333336%;
+ }
+ .col-xl-pull-6 {
+ right: 50%;
+ }
+ .col-xl-pull-5 {
+ right: 41.66666666666667%;
+ }
+ .col-xl-pull-4 {
+ right: 33.33333333333333%;
+ }
+ .col-xl-pull-3 {
+ right: 25%;
+ }
+ .col-xl-pull-2 {
+ right: 16.666666666666664%;
+ }
+ .col-xl-pull-1 {
+ right: 8.333333333333332%;
+ }
+ .col-xl-pull-0 {
+ right: 0%;
+ }
+ .col-xl-push-12 {
+ left: 100%;
+ }
+ .col-xl-push-11 {
+ left: 91.66666666666666%;
+ }
+ .col-xl-push-10 {
+ left: 83.33333333333334%;
+ }
+ .col-xl-push-9 {
+ left: 75%;
+ }
+ .col-xl-push-8 {
+ left: 66.66666666666666%;
+ }
+ .col-xl-push-7 {
+ left: 58.333333333333336%;
+ }
+ .col-xl-push-6 {
+ left: 50%;
+ }
+ .col-xl-push-5 {
+ left: 41.66666666666667%;
+ }
+ .col-xl-push-4 {
+ left: 33.33333333333333%;
+ }
+ .col-xl-push-3 {
+ left: 25%;
+ }
+ .col-xl-push-2 {
+ left: 16.666666666666664%;
+ }
+ .col-xl-push-1 {
+ left: 8.333333333333332%;
+ }
+ .col-xl-push-0 {
+ left: 0%;
+ }
+ .col-xl-offset-12 {
+ margin-left: 100%;
+ }
+ .col-xl-offset-11 {
+ margin-left: 91.66666666666666%;
+ }
+ .col-xl-offset-10 {
+ margin-left: 83.33333333333334%;
+ }
+ .col-xl-offset-9 {
+ margin-left: 75%;
+ }
+ .col-xl-offset-8 {
+ margin-left: 66.66666666666666%;
+ }
+ .col-xl-offset-7 {
+ margin-left: 58.333333333333336%;
+ }
+ .col-xl-offset-6 {
+ margin-left: 50%;
+ }
+ .col-xl-offset-5 {
+ margin-left: 41.66666666666667%;
+ }
+ .col-xl-offset-4 {
+ margin-left: 33.33333333333333%;
+ }
+ .col-xl-offset-3 {
+ margin-left: 25%;
+ }
+ .col-xl-offset-2 {
+ margin-left: 16.666666666666664%;
+ }
+ .col-xl-offset-1 {
+ margin-left: 8.333333333333332%;
+ }
+ .col-xl-offset-0 {
+ margin-left: 0%;
+ }
+}
+@media (min-width: 1400px) {
+ .container {
+ width: container-extra-large-desktop;
+ }
+}
+@media (min-width: 992px) {
+ .col-md-4 {
+ width: 33.3%;
+ }
+}
+@media (min-width: 1200px) {
+ .col-lg-4 {
+ width: 33.3%;
+ }
+}
+@media (min-width: 1400px) {
+ .col-xl-4 {
+ width: 33.3%;
+ }
+}
+.navbar {
+ min-height: 50px;
+ margin-bottom: 0;
+}
+@media (max-width: 1199px) {
+ .navbar {
+ margin-bottom: 0;
+ }
+}
+.navbar .navbar-header {
+ white-space: nowrap;
+}
+.navbar .nav-uppercase {
+ text-transform: uppercase;
+}
+.navbar .login-nav {
+ text-transform: none;
+}
+.navbar .divider-nav {
+ background-color: #303030;
+ width: 1px;
+ height: 30px;
+ margin-left: 20px;
+ display: inline-block;
+ vertical-align: middle;
+}
+.navbar .navbar-brand {
+ padding: 13px 10px;
+ margin: 0;
+}
+.navbar .navbar-brand .divider-nav {
+ margin-left: 30px;
+}
+.navbar .gw-download {
+ color: #76b900 !important;
+}
+.navbar .gw-sub-navbar > li > a {
+ padding: 17px 32px 9px 0;
+}
+@media (min-width: 992px) {
+ .navbar-nav > li > a {
+ padding-top: 17px;
+ padding-bottom: 9px;
+ }
+}
+.container > .navbar-header,
+.container > .navbar-collapse {
+ margin-left: 0;
+ margin-right: 0;
+}
+@media (min-width: 991px) {
+ #search-top {
+ position: relative;
+ }
+ #search-top a {
+ padding-left: 0;
+ padding-right: 10px;
+ position: relative;
+ z-index: 3;
+ }
+ #search-top a:hover {
+ color: #77b820;
+ }
+ #search-top .search-form {
+ position: absolute;
+ top: 7px;
+ right: 0;
+ z-index: 2;
+ }
+ #search-top .search-form input {
+ display: none;
+ width: 300px;
+ height: 36px !important;
+ line-height: 38px;
+ border: 0;
+ outline: 0;
+ padding: 0 40px 0 12px;
+ border-radius: 3px;
+ background: #fff;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+}
+.nvidia-dropdown {
+ position: relative;
+}
+.nvidia-dropdown-menu {
+ left: auto;
+ float: right;
+ right: -59px;
+ background: #000000;
+ border: 1px solid #cccccc;
+ border: 1px solid #404040;
+}
+.nvidia-dropdown-menu.drop-gw {
+ right: -59px;
+}
+.nvidia-dropdown-menu.drop-sub-gw {
+ right: -43px;
+ background-color: #242424;
+}
+.nvidia-dropdown-menu.drop-sub-gw:after {
+ border-bottom: 9px solid #242424;
+ top: -7px;
+}
+.nvidia-dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.nvidia-dropdown-menu .divider {
+ height: 1px;
+ margin: 11px 0;
+ overflow: hidden;
+ background-color: transparent;
+}
+.nvidia-dropdown-menu > li {
+ font-size: 0.9em;
+}
+.nvidia-dropdown-menu > li > a {
+ display: block;
+ padding: 7px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.5;
+ color: #cacaca;
+ white-space: nowrap;
+}
+@media (min-width: 991px) {
+ .nvidia-dropdown-menu:before,
+ .nvidia-dropdown-menu:after {
+ content: '';
+ position: absolute;
+ left: 50%;
+ border-left: 9px solid transparent;
+ border-right: 9px solid transparent;
+ margin: 0 0 0 -7px;
+ }
+ .nvidia-dropdown-menu:before {
+ border-bottom: 9px solid #404040;
+ top: -9px;
+ }
+ .nvidia-dropdown-menu:after {
+ border-bottom: 9px solid #000000;
+ top: -7px;
+ }
+}
+@media (max-width: 991px) {
+ .nvidia-dropdown-menu:before,
+ .nvidia-dropdown-menu:after {
+ display: none;
+ }
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ text-decoration: none;
+ color: #ffffff;
+ background-color: transparent;
+}
+@media (max-width: 768px) {
+ .navbar .navbar-header {
+ text-align: left !important;
+ }
+ .navbar .navbar-header .logo-header {
+ display: block !important;
+ margin: 0 !important;
+ }
+ .navbar .navbar-brand {
+ float: none;
+ display: block;
+ }
+}
+.second-navbar {
+ background-color: #242424;
+ border-color: transparent;
+ margin-bottom: 0;
+}
+body {
+ background-color: #1a1a1a;
+}
+#wrapper {
+ background-color: #fcfcfc;
+}
+.container-fluid {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+.masthead {
+ background-color: #373737;
+ background-size: cover;
+ background-position: center 0;
+ background-repeat: no-repeat;
+ height: 50px
+}
+.masthead .container {
+ padding: 0;
+}
+.masthead .masthead-content {
+ padding: 30px 10px 20px 10px;
+}
+.masthead .masthead-content h1 {
+ font-size: 24px;
+ color: #76b900;
+ padding: 0;
+ margin: 0;
+ text-transform: uppercase;
+ font-weight: normal;
+}
+.masthead .masthead-content p {
+ font-size: 1.2em;
+ color: #cacaca;
+ font-weight: normal;
+ padding-top: 10px;
+}
+.masthead-sub-page {
+ background-color: white;
+}
+.masthead-sub-page h1 {
+ margin-top: 12px;
+}
+.section-header {
+ padding-bottom: 5px;
+ margin: 24px 0 24px 0;
+ border-bottom: 1px solid #efefef;
+}
+.section-header h4 {
+ color: #004831;
+ text-transform: capitalize;
+ font-size: 19px;
+}
+.section-header a {
+ float: right;
+ padding-top: 4px;
+ font-size: 14px;
+ text-transform: capitalize;
+ color: #999999;
+}
+.section-header a:hover,
+.section-header a:focus {
+ text-decoration: underline;
+}
+.newsletter-registration h5 {
+ margin-top: 0;
+}
+.newsletter-registration .input-group .input-group-addon {
+ background-color: white;
+ border-style: solid none solid solid;
+ border-width: 1px 0 1px 1px;
+ border-right: 0;
+}
+.newsletter-registration .input-group .form-control {
+ background-color: white;
+ border-style: solid none solid none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ -webkit-appearance: none;
+ border-width: 1px 0 1px 0;
+ height: 38px;
+ padding-left: 0;
+}
+.newsletter-registration .input-group .form-control:focus {
+ border-color: #ccc;
+}
+.node {
+ padding-bottom: 1em;
+}
+a.node-thumbnail {
+ position: relative;
+ display: block;
+ margin-bottom: 1em;
+}
+a.node-thumbnail img {
+ width: 100%;
+ height: auto;
+ border: 1px solid;
+ border-color: #999999;
+ display: inline;
+}
+a.node-thumbnail img.no-border {
+ border: none;
+}
+a.node-thumbnail .node-overlay {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0);
+ -webkit-transition: background-color 0.5s ease-in-out;
+ transition: background-color 0.5s ease-in-out;
+}
+a.node-thumbnail .node-overlay .node-cta {
+ color: rgba(255, 255, 255, 0);
+ -webkit-transition: color 0.5s ease-in-out;
+ transition: color 0.5s ease-in-out;
+ text-align: center;
+ margin: auto;
+ position: absolute;
+ height: 24px;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+}
+a.node-thumbnail .node-overlay .node-cta i {
+ color: rgba(118, 185, 0, 0);
+ -webkit-transition: color 0.5s ease-in-out;
+ transition: color 0.5s ease-in-out;
+ font-size: 0.9em;
+}
+a.node-thumbnail:hover .node-overlay {
+ background-color: rgba(0, 0, 0, 0.65);
+ -webkit-transition: background-color 0.5s ease-in-out;
+ transition: background-color 0.5s ease-in-out;
+}
+a.node-thumbnail:hover .node-overlay .node-cta {
+ color: #ffffff;
+ -webkit-transition: color 0.5s ease-in-out;
+ transition: color 0.5s ease-in-out;
+}
+a.node-thumbnail:hover .node-overlay .node-cta i {
+ color: #76b900;
+ -webkit-transition: color 0.5s ease-in-out;
+ transition: color 0.5s ease-in-out;
+}
+.node-description .node-date {
+ color: #999999;
+ padding-bottom: 5px;
+ font-size: 0.8em;
+ font-weight: 600;
+}
+.node-description a.node-title {
+ display: block;
+ font-size: 1.1em;
+ font-weight: 600;
+ line-height: 1.25em;
+ color: #004831;
+ padding-bottom: 0.4em;
+}
+.node-description a.node-title:hover,
+.node-description a.node-title:focus {
+ text-decoration: underline;
+}
+.node-description p {
+ font-size: 0.8em;
+ color: #999999;
+}
+.icon-description {
+ padding-bottom: 12px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.icon-description .icon {
+ color: white;
+ background-color: #76b900;
+ float: left;
+ width: 90px;
+ height: 90px;
+ text-align: center;
+ font-size: 3em;
+ line-height: 97px;
+}
+.icon-description .icon.icon-cogs {
+ line-height: 103px;
+}
+.icon-description .icon.icon-book {
+ line-height: 100px;
+}
+.icon-description .icon.icon-download {
+ line-height: 100px;
+}
+.icon-description .description {
+ margin-left: 100px;
+}
+.icon-description .description h2 {
+ font-size: 1.3em;
+ margin: 0;
+ padding-bottom: 5px;
+}
+.icon-description .description > h2 > a {
+ font-size: 1em;
+ margin: 0;
+ padding-bottom: 5px;
+ color: #004831;
+}
+.icon-description .description > h2 > a:hover,
+.icon-description .description > h2 > a:focus {
+ text-decoration: underline;
+}
+.icon-description .description > p > a {
+ font-size: 1em;
+ color: #76b900;
+}
+.icon-description .description > p > a:hover,
+.icon-description .description > p > a:focus {
+ text-decoration: underline;
+}
+.icon-description .description p {
+ font-size: 0.9em;
+ text-transform: none;
+ margin-bottom: 10px;
+}
+.product > h4 > a {
+ color: #004831;
+}
+.feature_items .feature_item {
+ padding-bottom: 1em;
+}
+.feature_items .feature_item .feature_image {
+ padding-bottom: 1em;
+}
+.feature_items .feature_item .feature_image img {
+ width: 100%;
+}
+.feature_items .feature_item .feature_image .feature_icon {
+ padding: 20px 0 20px 0;
+ background-color: #76b900;
+ text-align: center;
+ font-size: 4em;
+ line-height: 1em;
+}
+.feature_items .feature_item .feature_description h2 {
+ margin: 0;
+ font-size: 1.5em;
+}
+.twitter img {
+ float: right;
+}
+.twitter #twitter-feeds {
+ border: 1px solid #E1E3E4;
+ border-radius: 3px;
+ width: 100%;
+ padding: 8px 8px 0 8px;
+ margin-top: 10px;
+}
+.twitter #twitter-feeds.twt-cuda {
+ height: 340px;
+}
+.twitter #twitter-feeds.twt-gameworks {
+ height: 276px;
+}
+.twitter #twitter-feeds #overflow {
+ width: 100%;
+ overflow-y: auto;
+ height: 100%;
+}
+.twitter #twitter-feeds .twt_description {
+ padding: 10px 0 10px;
+ border-bottom: 1px solid #E1E3E4;
+}
+.twitter #twitter-feeds .twt_description .twt-thumbnails {
+ float: left;
+ width: 70px;
+ height: 70px;
+}
+.twitter #twitter-feeds .twt_description a {
+ font-size: 0.7em;
+ color: #999999;
+}
+.twitter #twitter-feeds .twt_description a:hover,
+.twitter #twitter-feeds .twt_description a:focus {
+ text-decoration: underline;
+}
+.twitter #twitter-feeds .twt_description .tweet {
+ margin-left: 85px;
+}
+.twitter #twitter-feeds .twt_description .tweet h2 {
+ color: #333333;
+ font-size: 1em;
+ margin: 0;
+ padding: 0;
+}
+.twitter #twitter-feeds .twt_description .tweet h6 {
+ color: #999999;
+ font-size: 0.7em;
+ margin: 0;
+ padding: 0;
+}
+.twitter #twitter-feeds .twt_description .tweet p {
+ padding-top: 5px;
+ font-size: 0.8em;
+ text-transform: none;
+}
+.twitter #twitter-feeds .twt_description .tweet p > a {
+ font-size: 1em;
+ color: #76b900;
+}
+.twitter #twitter-feeds .twt_description .tweet p > a:hover,
+.twitter #twitter-feeds .twt_description .tweet p > a:focus {
+ text-decoration: underline;
+}
+.homepage .home-masthead .masthead-content h1 {
+ color: #76b900;
+ text-transform: uppercase;
+ font-size: 32px;
+ line-height: 1.2em;
+}
+.homepage .home-masthead .masthead-content p {
+ color: #cacaca;
+ font-size: 18px;
+}
+.homepage .home-zones-container {
+ padding: 40px 15px 30px;
+ background-color: #efefef;
+}
+.homepage .dev-zone-box {
+ background-color: black;
+ position: relative;
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-position: center center;
+ margin-bottom: 1em;
+}
+.homepage .dev-zone-box.even {
+ background-color: #333;
+}
+.homepage .dev-zone-box .box {
+ height: 250px;
+ width: 100%;
+}
+.homepage .dev-zone-box a {
+ display: block;
+ padding: 20px;
+ width: 100%;
+ height: 100%;
+ position: relative;
+ -webkit-transition: all 0.5s ease-in-out;
+ transition: all 0.5s ease-in-out;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.homepage .dev-zone-box a .dev-zone-box-content {
+ position: absolute;
+ top: 20px;
+ margin-right: 20px;
+ -webkit-transition: all 0.5s ease-in-out;
+ transition: all 0.5s ease-in-out;
+}
+.homepage .dev-zone-box a .dev-zone-box-content h2 {
+ margin: 0;
+ color: #76b900;
+ font-size: 24px;
+ text-transform: uppercase;
+ -webkit-transition: all 0.5s ease-in-out;
+ transition: all 0.5s ease-in-out;
+}
+.homepage .dev-zone-box a .dev-zone-box-content p {
+ font-size: 16px;
+ color: #cacaca;
+ -webkit-transition: all 0.5s ease-in-out;
+ transition: all 0.5s ease-in-out;
+}
+.homepage .dev-zone-box a:hover {
+ text-decoration: underline;
+ background-color: #76b900;
+ -webkit-transition: all 0.5s ease-in-out;
+ transition: all 0.5s ease-in-out;
+}
+.homepage .dev-zone-box a:hover .dev-zone-box-content {
+ -webkit-transition: all 0.5s ease-in-out;
+ transition: all 0.5s ease-in-out;
+}
+.homepage .dev-zone-box a:hover .dev-zone-box-content h2,
+.homepage .dev-zone-box a:hover .dev-zone-box-content p {
+ color: white;
+}
+.content .page-header {
+ margin-top: 0;
+}
+.content .page-header h1,
+.content .page-header h2,
+.content .page-header h3 {
+ margin-top: 0;
+}
+.content-sidebar .panel-heading {
+ text-transform: uppercase;
+ font-weight: bold;
+}
+.btn-dark-icon > i.fa {
+ font-size: 1em;
+ color: #004831;
+}
+.seperator,
+.separator {
+ height: 20px;
+}
+.seperator-sm,
+.separator-sm {
+ height: 10px;
+}
+.padding-left {
+ padding-left: 0px;
+}
+.padding-md {
+ padding: 20px;
+}
+.padding-md-right {
+ padding-right: 20px;
+}
+.padding-md-left {
+ padding-left: 20px;
+}
+.padding-md-bottom {
+ padding-bottom: 20px;
+}
+.padding-md-top {
+ padding-top: 20px;
+}
+.padding-sm {
+ padding: 10px;
+}
+.padding-sm-right {
+ padding-right: 10px;
+}
+.padding-sm-left {
+ padding-left: 10px;
+}
+.padding-sm-bottom {
+ padding-bottom: 10px;
+}
+.padding-sm-top {
+ padding-top: 10px;
+}
+.padding-md-footer {
+ padding: 20px 20px 20px 0;
+}
+.padding-section-footer {
+ padding-right: 0px;
+}
+.padding-sub-footer {
+ padding: 20px 20px 20px 0px;
+}
+.gray-lighter-background {
+ background-color: #efefef;
+}
+.gray-darker-background {
+ background-color: #373737;
+}
+.white-background {
+ background-color: white;
+}
+.vertical-align-middle {
+ vertical-align: middle !important;
+}
+.text-white {
+ color: white;
+}
+.text-green {
+ color: #76b900;
+}
+@media (max-width: 991px) {
+ .navbar-toggle {
+ float: left;
+ }
+}
+.sidr {
+ display: none;
+ position: absolute;
+ position: fixed;
+ top: 0;
+ height: 100%;
+ z-index: 999999;
+ width: 260px;
+ overflow-x: none;
+ overflow-y: auto;
+ background-color: #3c3c3d;
+ color: white;
+}
+.sidr.right {
+ left: auto;
+ right: -260px;
+}
+.sidr.left {
+ left: -260px;
+ right: auto;
+}
+.sidr ul {
+ display: block;
+ margin: 0;
+ padding: 0;
+}
+.sidr ul li {
+ display: block;
+ margin: 0;
+ line-height: 40px;
+ padding: 0 15px;
+}
+.sidr ul li.menu-title {
+ color: white;
+ border-bottom: 1px solid #262626;
+ text-transform: uppercase;
+ padding-top: 7px;
+ padding-bottom: 3px;
+}
+.sidr ul li a {
+ display: block;
+ text-decoration: none;
+ color: #999999;
+ padding: 10px 0;
+}
+.sidr ul li a:hover,
+.sidr ul li a:active,
+.sidr ul li a:focus {
+ color: white;
+ background: none;
+}
+.sidr ul li a .caret {
+ display: inline-block;
+ font-family: FontAwesome;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ width: auto;
+ height: auto;
+ border: none;
+ margin-left: 5px;
+ vertical-align: baseline;
+}
+.sidr ul li a .caret:before {
+ content: "\f105";
+}
+.sidr ul li.dropdown .dropdown-menu {
+ display: none;
+}
+.sidr ul li.open > a {
+ background: none;
+}
+.sidr ul li.open > a:hover,
+.sidr ul li.open > a:active,
+.sidr ul li.open > a:focus {
+ background: none;
+}
+.sidr ul li.open > a .caret:before {
+ content: "\f107";
+}
+.sidr ul li.open.dropdown .dropdown-menu {
+ display: block;
+}
+.sidr ul li.open .dropdown-menu > li > a {
+ padding: 5px 15px 5px 0;
+}
+.sidr ul li .search-form {
+ padding-top: 10px;
+ padding-bottom: 10px;
+}
+.sidr ul li .search-form .container-inline div {
+ display: block;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.sidr ul li .search-form .input {
+ position: relative;
+}
+.sidr ul li .search-form .input .fa {
+ position: absolute;
+ top: 8px;
+ right: 12px;
+ font-size: 18px;
+ color: #3c3c3d;
+}
+.sidr ul li .search-form .input input {
+ width: 100%;
+ padding: 7px 14px 5px 14px;
+ line-height: 1.5em;
+ background-color: #f0f0f0;
+ border: 0;
+ color: #3c3c3d;
+ border-radius: 3px;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+footer {
+ border-top: 3px solid #76b900;
+}
+footer .footer-links {
+ background-color: #222222;
+}
+@media (max-width: 768px) {
+ footer .footer-links .zone-select {
+ text-align: left;
+ }
+}
+@media (min-width: 1200px) {
+ footer .footer-links .zone-select {
+ text-align: right;
+ }
+}
+footer .footer-links a {
+ color: #6e6e6e;
+}
+
+footer .footer-links a:hover h6,
+footer .footer-links a:active h6,
+footer .footer-links a:hover,
+footer .footer-links a:active {
+ color: #FFFFFF;
+ text-decoration: none;
+}
+footer .footer-links h5 {
+ margin: 0 0 19px;
+ padding: 0 0 0.5em 0;
+ text-transform: uppercase;
+ color: #707070;
+}
+footer .footer-links h6 {
+ margin: 0;
+ padding: 0 0 0.5em 0;
+ font-weight: normal;
+ text-transform: uppercase;
+ color: #707070;
+}
+footer .footer-links ul {
+ margin: 0;
+ padding: 0;
+}
+footer .footer-links ul li {
+ font-weight: lighter;
+ font-size: 0.8em;
+ list-style: none;
+ margin: 0;
+ padding: 0 0 5px;
+}
+footer .footer-links .logo-footer {
+ height: 26px;
+ width: 195px;
+ background-image: url("../images/nvidia-logo-footer.png");
+ padding-bottom: 10px;
+ background-repeat: no-repeat;
+ vertical-align: middle;
+ border: 0 none;
+}
+footer .footer-links .logo-footer ul {
+ margin: 0;
+ padding: 40px 0 0;
+}
+footer .footer-boilerplate {
+ background-color: #1a1a1a;
+}
+footer .footer-boilerplate.footer-home {
+ padding: 5px 0 5px;
+}
+footer .footer-boilerplate .boilerplate {
+ text-align: left;
+ font-size: 0.8em;
+ color: #666666;
+ padding: 10px 0;
+}
+footer .footer-boilerplate .boilerplate .footer-brand {
+ margin: -2px 40px 20px 0px;
+}
+footer .footer-boilerplate .boilerplate a {
+ font-size: 0.9em;
+ text-transform: none;
+ color: #666666;
+ text-decoration: none;
+}
+footer .footer-boilerplate .boilerplate a:hover,
+footer .footer-boilerplate .boilerplate a:focus {
+ color: #FFFFFF;
+ text-decoration: none;
+}
+.label {
+ padding: .5em .6em .3em;
+}
+label {
+ font-weight: normal;
+}
+:focus {
+ outline-color: transparent;
+ outline-style: none;
+}
+.btn {
+ padding-top: 9.575999999999999px;
+ padding-bottom: 7.199999999999999px;
+ line-height: 1.2em;
+}
+.btn-lg {
+ padding-top: 12.768px;
+ padding-bottom: 9.6px;
+}
+.btn-sm {
+ padding-top: 7.98px;
+ padding-bottom: 6px;
+}
+.btn-xs {
+ padding-top: 6.384px;
+ padding-bottom: 4.8px;
+}
+.lead {
+ font-size: 18px;
+}
+@media (min-width: 768px) {
+ .lead {
+ font-size: 20px;
+ }
+}
+.breadcrumb {
+ background-color: transparent;
+ padding: 0;
+ font-size: 14px;
+}
+.block ul {
+ margin: 0;
+ padding: 0;
+}
+.panel-success {
+ border-color: #76b900;
+}
+.panel-success > .panel-heading {
+ color: #ffffff;
+ background-color: #76b900;
+ border-color: #76b900;
+}
+.panel-success > .panel-heading + .panel-collapse .panel-body {
+ border-top-color: #76b900;
+}
+.panel-success > .panel-footer + .panel-collapse .panel-body {
+ border-bottom-color: #76b900;
+}
+.panel-success .panel-heading a {
+ color: white;
+}
+/*
+ * Core Owl Carousel CSS File
+ * v1.3.2
+ */
+/* clearfix */
+.owl-carousel .owl-wrapper:after {
+ content: ".";
+ display: block;
+ clear: both;
+ visibility: hidden;
+ line-height: 0;
+ height: 0;
+}
+/* display none until init */
+.owl-carousel {
+ display: none;
+ position: relative;
+ width: 100%;
+ -ms-touch-action: pan-y;
+}
+.owl-carousel .owl-wrapper {
+ display: none;
+ position: relative;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+}
+.owl-carousel .owl-wrapper-outer {
+ overflow: hidden;
+ position: relative;
+ width: 100%;
+}
+.owl-carousel .owl-wrapper-outer.autoHeight {
+ -webkit-transition: height 500ms ease-in-out;
+ -moz-transition: height 500ms ease-in-out;
+ -ms-transition: height 500ms ease-in-out;
+ -o-transition: height 500ms ease-in-out;
+ transition: height 500ms ease-in-out;
+}
+.owl-carousel .owl-item {
+ float: left;
+}
+.owl-controls .owl-page,
+.owl-controls .owl-buttons div {
+ cursor: pointer;
+}
+.owl-controls {
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+/* mouse grab icon */
+.grabbing {
+ cursor: url(grabbing.png) 8 8, move;
+}
+/* fix */
+.owl-carousel .owl-wrapper,
+.owl-carousel .owl-item {
+ -webkit-backface-visibility: hidden;
+ -moz-backface-visibility: hidden;
+ -ms-backface-visibility: hidden;
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate3d(0, 0, 0);
+ -ms-transform: translate3d(0, 0, 0);
+}
+/*
+* Owl Carousel Owl Demo Theme
+* v1.3.2
+*/
+.owl-theme .owl-controls {
+ margin-top: 10px;
+ text-align: center;
+}
+/* Styling Next and Prev buttons */
+.owl-theme .owl-controls .owl-buttons div {
+ color: #FFF;
+ display: inline-block;
+ zoom: 1;
+ *display: inline;
+ /*IE7 life-saver */
+ margin: 5px;
+ padding: 3px 10px;
+ font-size: 12px;
+ -webkit-border-radius: 30px;
+ -moz-border-radius: 30px;
+ border-radius: 30px;
+ background: #869791;
+ filter: alpha(opacity=50);
+ /*IE7 fix*/
+ opacity: 0.5;
+}
+/* Clickable class fix problem with hover on touch devices */
+/* Use it for non-touch hover action */
+.owl-theme .owl-controls.clickable .owl-buttons div:hover {
+ filter: alpha(opacity=100);
+ /*IE7 fix*/
+ opacity: 1;
+ text-decoration: none;
+}
+/* Styling Pagination*/
+.owl-theme .owl-controls .owl-page {
+ display: inline-block;
+ zoom: 1;
+ *display: inline;
+ /*IE7 life-saver */
+}
+.owl-theme .owl-controls .owl-page span {
+ display: block;
+ width: 12px;
+ height: 12px;
+ margin: 5px 7px;
+ filter: alpha(opacity=50);
+ /*IE7 fix*/
+ opacity: 0.5;
+ -webkit-border-radius: 20px;
+ -moz-border-radius: 20px;
+ border-radius: 20px;
+ background: #869791;
+}
+.owl-theme .owl-controls .owl-page.active span,
+.owl-theme .owl-controls.clickable .owl-page:hover span {
+ filter: alpha(opacity=100);
+ /*IE7 fix*/
+ opacity: 1;
+}
+/* If PaginationNumbers is true */
+.owl-theme .owl-controls .owl-page span.owl-numbers {
+ height: auto;
+ width: auto;
+ color: #FFF;
+ padding: 2px 10px;
+ font-size: 12px;
+ -webkit-border-radius: 30px;
+ -moz-border-radius: 30px;
+ border-radius: 30px;
+}
+/* preloading images */
+.owl-item.loading {
+ min-height: 150px;
+ background: url(AjaxLoader.gif) no-repeat center center;
+}
+.carousel-container {
+ color: #fff;
+}
+.carousel-container #masthead-text {
+ padding-bottom: 1em;
+}
+.carousel-container h1,
+.carousel-container h2,
+.carousel-container h3,
+.carousel-container h4,
+.carousel-container h5,
+.carousel-container h6 {
+ padding-top: 0;
+ margin-top: 0;
+}
+.carousel-container h2 {
+ color: #80bd01;
+}
+.carousel-container h3 {
+ color: #76b900;
+ text-transform: uppercase;
+ font-size: 22px;
+}
+.carousel-container .fa {
+ vertical-align: top;
+ margin: 2px 0 0 4px;
+}
+.owl-carousel .item {
+ position: relative;
+ background-repeat: no-repeat;
+ background-position: right 0px center;
+ padding-left: 10px;
+ padding-right: 10px;
+ min-height: 200px;
+}
+.owl-carousel .item .row,
+.owl-carousel .item .carousel-text {
+ padding-top: 1em;
+ padding-bottom: 1em;
+ position: relative;
+ z-index: 3;
+}
+.owl-carousel .item .item-background {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background-repeat: no-repeat;
+ background-position: right 0px top;
+ background-size: cover;
+}
+@media (max-width: 767px) {
+ .owl-carousel .item .item-background {
+ opacity: 0.1;
+ }
+}
+@media (max-width: 991px) {
+ .owl-carousel .item .item-background {
+ opacity: 0.3;
+ }
+}
+.owl-carousel .owl-controls {
+ margin: 0;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: 2;
+}
+.owl-carousel .owl-controls .owl-buttons .owl-prev,
+.owl-carousel .owl-controls .owl-buttons .owl-next {
+ height: 43px;
+ line-height: 43px;
+ font-size: 43px;
+ z-index: 3;
+ position: absolute;
+ padding: 0;
+ margin: 0;
+ background: transparent;
+ color: #CECECE;
+ border-radius: 0;
+}
+.owl-carousel .owl-controls .owl-buttons .owl-prev {
+ left: 0;
+}
+.owl-carousel .owl-controls .owl-buttons .owl-next {
+ right: 4px;
+}
+.owl-carousel .owl-controls .owl-buttons .fa {
+ vertical-align: top;
+}
+#colorbox,
+#cboxOverlay,
+#cboxWrapper {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 9999;
+ overflow: hidden;
+}
+#cboxWrapper {
+ max-width: none;
+}
+#cboxOverlay {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+}
+#cboxMiddleLeft,
+#cboxBottomLeft {
+ clear: left;
+}
+#cboxContent {
+ position: relative;
+}
+#cboxLoadedContent {
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+#cboxTitle {
+ margin: 0;
+}
+#cboxLoadingOverlay,
+#cboxLoadingGraphic {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+#cboxPrevious,
+#cboxNext,
+#cboxClose,
+#cboxSlideshow {
+ cursor: pointer;
+}
+.cboxPhoto {
+ float: left;
+ margin: auto;
+ border: 0;
+ display: block;
+ max-width: none;
+ -ms-interpolation-mode: bicubic;
+}
+.cboxIframe {
+ width: 100%;
+ height: 100%;
+ display: block;
+ border: 0;
+}
+#colorbox,
+#cboxContent,
+#cboxLoadedContent {
+ box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ -webkit-box-sizing: content-box;
+}
+#cboxOverlay {
+ background: #000;
+}
+#colorbox {
+ outline: 0;
+}
+#cboxContent {
+ margin-top: 20px;
+ background: #000;
+}
+.cboxIframe {
+ background: #fff;
+}
+#cboxError {
+ padding: 50px;
+ border: 1px solid #ccc;
+}
+#cboxLoadedContent {
+ border: 5px solid #000;
+ background: #fff;
+}
+#cboxTitle {
+ position: absolute;
+ top: -20px;
+ left: 0;
+ color: #ccc;
+}
+#cboxCurrent {
+ position: absolute;
+ top: -20px;
+ right: 0px;
+ color: #ccc;
+}
+#cboxLoadingGraphic {
+ background: url(/images/colorbox/loading.gif) no-repeat center center;
+}
+/* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
+#cboxPrevious,
+#cboxNext,
+#cboxSlideshow,
+#cboxClose {
+ border: 0;
+ padding: 0;
+ margin: 0;
+ overflow: visible;
+ width: auto;
+ background: none;
+}
+/* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
+#cboxPrevious:active,
+#cboxNext:active,
+#cboxSlideshow:active,
+#cboxClose:active {
+ outline: 0;
+}
+#cboxSlideshow {
+ position: absolute;
+ top: -20px;
+ right: 90px;
+ color: #fff;
+}
+#cboxPrevious {
+ position: absolute;
+ top: 50%;
+ left: 5px;
+ margin-top: -32px;
+ background: url(/images/colorbox/controls.png) no-repeat top left;
+ width: 28px;
+ height: 65px;
+ text-indent: -9999px;
+}
+#cboxPrevious:hover {
+ background-position: bottom left;
+}
+#cboxNext {
+ position: absolute;
+ top: 50%;
+ right: 5px;
+ margin-top: -32px;
+ background: url(/images/colorbox/controls.png) no-repeat top right;
+ width: 28px;
+ height: 65px;
+ text-indent: -9999px;
+}
+#cboxNext:hover {
+ background-position: bottom right;
+}
+#cboxClose {
+ position: absolute;
+ top: 5px;
+ right: 5px;
+ display: block;
+ background: url(/images/colorbox/controls.png) no-repeat top center;
+ width: 38px;
+ height: 19px;
+ text-indent: -9999px;
+}
+#cboxClose:hover {
+ background-position: bottom center;
+}
+/* Pretty printing styles. Used with prettify.js. */
+/* SPAN elements with the classes below are added by prettyprint. */
+.pln {
+ color: #000;
+}
+/* plain text */
+@media screen {
+ .str {
+ color: #080;
+ }
+ /* string content */
+ .kwd {
+ color: #008;
+ }
+ /* a keyword */
+ .com {
+ color: #800;
+ }
+ /* a comment */
+ .typ {
+ color: #606;
+ }
+ /* a type name */
+ .lit {
+ color: #066;
+ }
+ /* a literal value */
+ /* punctuation, lisp open bracket, lisp close bracket */
+ .pun,
+ .opn,
+ .clo {
+ color: #660;
+ }
+ .tag {
+ color: #008;
+ }
+ /* a markup tag name */
+ .atn {
+ color: #606;
+ }
+ /* a markup attribute name */
+ .atv {
+ color: #080;
+ }
+ /* a markup attribute value */
+ .dec,
+ .var {
+ color: #606;
+ }
+ /* a declaration; a variable name */
+ .fun {
+ color: red;
+ }
+ /* a function name */
+}
+/* Use higher contrast and text-weight for printable form. */
+@media print, projection {
+ .str {
+ color: #060;
+ }
+ .kwd {
+ color: #006;
+ font-weight: bold;
+ }
+ .com {
+ color: #600;
+ font-style: italic;
+ }
+ .typ {
+ color: #404;
+ font-weight: bold;
+ }
+ .lit {
+ color: #044;
+ }
+ .pun,
+ .opn,
+ .clo {
+ color: #440;
+ }
+ .tag {
+ color: #006;
+ font-weight: bold;
+ }
+ .atn {
+ color: #404;
+ }
+ .atv {
+ color: #060;
+ }
+}
+/* Put a border around prettyprinted code snippets. */
+pre.prettyprint {
+ padding: 2px;
+ border: 1px solid #888;
+}
+/* Specify class=linenums on a pre to get line numbering */
+ol.linenums {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+/* IE indents via margin-left */
+li.L0,
+li.L1,
+li.L2,
+li.L3,
+li.L5,
+li.L6,
+li.L7,
+li.L8 {
+ list-style-type: none;
+}
+/* Alternate shading for lines */
+li.L1,
+li.L3,
+li.L5,
+li.L7,
+li.L9 {
+ background: #eee;
+}
+pre.prettyprint {
+ padding: 10px;
+ font-size: 14px;
+}
+#right .more-link {
+ text-align: left;
+ border-top: 1px solid #dddddd;
+}
+#right .more-link a {
+ padding: 10px 15px 10px 15px;
+ display: block;
+ text-transform: capitalize;
+ color: #555555;
+}
+#right .more-link a:hover {
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
diff --git a/doc/_static/bootstrap.css b/doc/_static/bootstrap.css
new file mode 100644
index 0000000..5b7fe7e
--- /dev/null
+++ b/doc/_static/bootstrap.css
@@ -0,0 +1,6167 @@
+/*!
+ * Bootstrap v2.3.2
+ *
+ * Copyright 2013 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world by @mdo and @fat.
+ */
+
+.clearfix {
+ *zoom: 1;
+}
+
+.clearfix:before,
+.clearfix:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.clearfix:after {
+ clear: both;
+}
+
+.hide-text {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+
+.input-block-level {
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+nav,
+section {
+ display: block;
+}
+
+audio,
+canvas,
+video {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+}
+
+audio:not([controls]) {
+ display: none;
+}
+
+html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+
+a:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+a:hover,
+a:active {
+ outline: 0;
+}
+
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+img {
+ width: auto\9;
+ height: auto;
+ max-width: 100%;
+ vertical-align: middle;
+ border: 0;
+ -ms-interpolation-mode: bicubic;
+}
+
+#map_canvas img,
+.google-maps img {
+ max-width: none;
+}
+
+button,
+input,
+select,
+textarea {
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle;
+}
+
+button,
+input {
+ *overflow: visible;
+ line-height: normal;
+}
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ cursor: pointer;
+ -webkit-appearance: button;
+}
+
+label,
+select,
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"],
+input[type="radio"],
+input[type="checkbox"] {
+ cursor: pointer;
+}
+
+input[type="search"] {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield;
+}
+
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+ -webkit-appearance: none;
+}
+
+textarea {
+ overflow: auto;
+ vertical-align: top;
+}
+
+@media print {
+ * {
+ color: #000 !important;
+ text-shadow: none !important;
+ background: transparent !important;
+ box-shadow: none !important;
+ }
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+ .ir a:after,
+ a[href^="javascript:"]:after,
+ a[href^="#"]:after {
+ content: "";
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ img {
+ max-width: 100% !important;
+ }
+ @page {
+ margin: 0.5cm;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+}
+
+body {
+ margin: 0;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 20px;
+ color: #333333;
+ background-color: #ffffff;
+}
+
+a {
+ color: #0088cc;
+ text-decoration: none;
+}
+
+a:hover,
+a:focus {
+ color: #005580;
+ text-decoration: underline;
+}
+
+.img-rounded {
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.img-polaroid {
+ padding: 4px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+
+.img-circle {
+ -webkit-border-radius: 500px;
+ -moz-border-radius: 500px;
+ border-radius: 500px;
+}
+
+.row {
+ margin-left: -20px;
+ *zoom: 1;
+}
+
+.row:before,
+.row:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.row:after {
+ clear: both;
+}
+
+[class*="span"] {
+ float: left;
+ min-height: 1px;
+ margin-left: 20px;
+}
+
+.container,
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+ width: 940px;
+}
+
+.span12 {
+ width: 940px;
+}
+
+.span11 {
+ width: 860px;
+}
+
+.span10 {
+ width: 780px;
+}
+
+.span9 {
+ width: 700px;
+}
+
+.span8 {
+ width: 620px;
+}
+
+.span7 {
+ width: 540px;
+}
+
+.span6 {
+ width: 460px;
+}
+
+.span5 {
+ width: 380px;
+}
+
+.span4 {
+ width: 300px;
+}
+
+.span3 {
+ width: 220px;
+}
+
+.span2 {
+ width: 140px;
+}
+
+.span1 {
+ width: 60px;
+}
+
+.offset12 {
+ margin-left: 980px;
+}
+
+.offset11 {
+ margin-left: 900px;
+}
+
+.offset10 {
+ margin-left: 820px;
+}
+
+.offset9 {
+ margin-left: 740px;
+}
+
+.offset8 {
+ margin-left: 660px;
+}
+
+.offset7 {
+ margin-left: 580px;
+}
+
+.offset6 {
+ margin-left: 500px;
+}
+
+.offset5 {
+ margin-left: 420px;
+}
+
+.offset4 {
+ margin-left: 340px;
+}
+
+.offset3 {
+ margin-left: 260px;
+}
+
+.offset2 {
+ margin-left: 180px;
+}
+
+.offset1 {
+ margin-left: 100px;
+}
+
+.row-fluid {
+ width: 100%;
+ *zoom: 1;
+}
+
+.row-fluid:before,
+.row-fluid:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.row-fluid:after {
+ clear: both;
+}
+
+.row-fluid [class*="span"] {
+ display: block;
+ float: left;
+ width: 100%;
+ min-height: 30px;
+ margin-left: 2.127659574468085%;
+ *margin-left: 2.074468085106383%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.row-fluid [class*="span"]:first-child {
+ margin-left: 0;
+}
+
+.row-fluid .controls-row [class*="span"] + [class*="span"] {
+ margin-left: 2.127659574468085%;
+}
+
+.row-fluid .span12 {
+ width: 100%;
+ *width: 99.94680851063829%;
+}
+
+.row-fluid .span11 {
+ width: 91.48936170212765%;
+ *width: 91.43617021276594%;
+}
+
+.row-fluid .span10 {
+ width: 82.97872340425532%;
+ *width: 82.92553191489361%;
+}
+
+.row-fluid .span9 {
+ width: 74.46808510638297%;
+ *width: 74.41489361702126%;
+}
+
+.row-fluid .span8 {
+ width: 65.95744680851064%;
+ *width: 65.90425531914893%;
+}
+
+.row-fluid .span7 {
+ width: 57.44680851063829%;
+ *width: 57.39361702127659%;
+}
+
+.row-fluid .span6 {
+ width: 48.93617021276595%;
+ *width: 48.88297872340425%;
+}
+
+.row-fluid .span5 {
+ width: 40.42553191489362%;
+ *width: 40.37234042553192%;
+}
+
+.row-fluid .span4 {
+ width: 31.914893617021278%;
+ *width: 31.861702127659576%;
+}
+
+.row-fluid .span3 {
+ width: 23.404255319148934%;
+ *width: 23.351063829787233%;
+}
+
+.row-fluid .span2 {
+ width: 14.893617021276595%;
+ *width: 14.840425531914894%;
+}
+
+.row-fluid .span1 {
+ width: 6.382978723404255%;
+ *width: 6.329787234042553%;
+}
+
+.row-fluid .offset12 {
+ margin-left: 104.25531914893617%;
+ *margin-left: 104.14893617021275%;
+}
+
+.row-fluid .offset12:first-child {
+ margin-left: 102.12765957446808%;
+ *margin-left: 102.02127659574467%;
+}
+
+.row-fluid .offset11 {
+ margin-left: 95.74468085106382%;
+ *margin-left: 95.6382978723404%;
+}
+
+.row-fluid .offset11:first-child {
+ margin-left: 93.61702127659574%;
+ *margin-left: 93.51063829787232%;
+}
+
+.row-fluid .offset10 {
+ margin-left: 87.23404255319149%;
+ *margin-left: 87.12765957446807%;
+}
+
+.row-fluid .offset10:first-child {
+ margin-left: 85.1063829787234%;
+ *margin-left: 84.99999999999999%;
+}
+
+.row-fluid .offset9 {
+ margin-left: 78.72340425531914%;
+ *margin-left: 78.61702127659572%;
+}
+
+.row-fluid .offset9:first-child {
+ margin-left: 76.59574468085106%;
+ *margin-left: 76.48936170212764%;
+}
+
+.row-fluid .offset8 {
+ margin-left: 70.2127659574468%;
+ *margin-left: 70.10638297872339%;
+}
+
+.row-fluid .offset8:first-child {
+ margin-left: 68.08510638297872%;
+ *margin-left: 67.9787234042553%;
+}
+
+.row-fluid .offset7 {
+ margin-left: 61.70212765957446%;
+ *margin-left: 61.59574468085106%;
+}
+
+.row-fluid .offset7:first-child {
+ margin-left: 59.574468085106375%;
+ *margin-left: 59.46808510638297%;
+}
+
+.row-fluid .offset6 {
+ margin-left: 53.191489361702125%;
+ *margin-left: 53.085106382978715%;
+}
+
+.row-fluid .offset6:first-child {
+ margin-left: 51.063829787234035%;
+ *margin-left: 50.95744680851063%;
+}
+
+.row-fluid .offset5 {
+ margin-left: 44.68085106382979%;
+ *margin-left: 44.57446808510638%;
+}
+
+.row-fluid .offset5:first-child {
+ margin-left: 42.5531914893617%;
+ *margin-left: 42.4468085106383%;
+}
+
+.row-fluid .offset4 {
+ margin-left: 36.170212765957444%;
+ *margin-left: 36.06382978723405%;
+}
+
+.row-fluid .offset4:first-child {
+ margin-left: 34.04255319148936%;
+ *margin-left: 33.93617021276596%;
+}
+
+.row-fluid .offset3 {
+ margin-left: 27.659574468085104%;
+ *margin-left: 27.5531914893617%;
+}
+
+.row-fluid .offset3:first-child {
+ margin-left: 25.53191489361702%;
+ *margin-left: 25.425531914893618%;
+}
+
+.row-fluid .offset2 {
+ margin-left: 19.148936170212764%;
+ *margin-left: 19.04255319148936%;
+}
+
+.row-fluid .offset2:first-child {
+ margin-left: 17.02127659574468%;
+ *margin-left: 16.914893617021278%;
+}
+
+.row-fluid .offset1 {
+ margin-left: 10.638297872340425%;
+ *margin-left: 10.53191489361702%;
+}
+
+.row-fluid .offset1:first-child {
+ margin-left: 8.51063829787234%;
+ *margin-left: 8.404255319148938%;
+}
+
+[class*="span"].hide,
+.row-fluid [class*="span"].hide {
+ display: none;
+}
+
+[class*="span"].pull-right,
+.row-fluid [class*="span"].pull-right {
+ float: right;
+}
+
+.container {
+ margin-right: auto;
+ margin-left: auto;
+ *zoom: 1;
+}
+
+.container:before,
+.container:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.container:after {
+ clear: both;
+}
+
+.container-fluid {
+ padding-right: 20px;
+ padding-left: 20px;
+ *zoom: 1;
+}
+
+.container-fluid:before,
+.container-fluid:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.container-fluid:after {
+ clear: both;
+}
+
+p {
+ margin: 0 0 10px;
+}
+
+.lead {
+ margin-bottom: 20px;
+ font-size: 21px;
+ font-weight: 200;
+ line-height: 30px;
+}
+
+small {
+ font-size: 85%;
+}
+
+strong {
+ font-weight: bold;
+}
+
+em {
+ font-style: italic;
+}
+
+cite {
+ font-style: normal;
+}
+
+.muted {
+ color: #999999;
+}
+
+a.muted:hover,
+a.muted:focus {
+ color: #808080;
+}
+
+.text-warning {
+ color: #c09853;
+}
+
+a.text-warning:hover,
+a.text-warning:focus {
+ color: #a47e3c;
+}
+
+.text-error {
+ color: #b94a48;
+}
+
+a.text-error:hover,
+a.text-error:focus {
+ color: #953b39;
+}
+
+.text-info {
+ color: #3a87ad;
+}
+
+a.text-info:hover,
+a.text-info:focus {
+ color: #2d6987;
+}
+
+.text-success {
+ color: #468847;
+}
+
+a.text-success:hover,
+a.text-success:focus {
+ color: #356635;
+}
+
+.text-left {
+ text-align: left;
+}
+
+.text-right {
+ text-align: right;
+}
+
+.text-center {
+ text-align: center;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 10px 0;
+ font-family: inherit;
+ font-weight: bold;
+ line-height: 20px;
+ color: inherit;
+ text-rendering: optimizelegibility;
+}
+
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+ font-weight: normal;
+ line-height: 1;
+ color: #999999;
+}
+
+h1,
+h2,
+h3 {
+ line-height: 40px;
+}
+
+h1 {
+ font-size: 38.5px;
+}
+
+h2 {
+ font-size: 31.5px;
+}
+
+h3 {
+ font-size: 24.5px;
+}
+
+h4 {
+ font-size: 17.5px;
+}
+
+h5 {
+ font-size: 14px;
+}
+
+h6 {
+ font-size: 11.9px;
+}
+
+h1 small {
+ font-size: 24.5px;
+}
+
+h2 small {
+ font-size: 17.5px;
+}
+
+h3 small {
+ font-size: 14px;
+}
+
+h4 small {
+ font-size: 14px;
+}
+
+.page-header {
+ padding-bottom: 9px;
+ margin: 20px 0 30px;
+ border-bottom: 1px solid #eeeeee;
+}
+
+ul,
+ol {
+ padding: 0;
+ margin: 0 0 10px 25px;
+}
+
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+ margin-bottom: 0;
+}
+
+li {
+ line-height: 20px;
+}
+
+ul.unstyled,
+ol.unstyled {
+ margin-left: 0;
+ list-style: none;
+}
+
+ul.inline,
+ol.inline {
+ margin-left: 0;
+ list-style: none;
+}
+
+ul.inline > li,
+ol.inline > li {
+ display: inline-block;
+ *display: inline;
+ padding-right: 5px;
+ padding-left: 5px;
+ *zoom: 1;
+}
+
+dl {
+ margin-bottom: 20px;
+}
+
+dt,
+dd {
+ line-height: 20px;
+}
+
+dt {
+ font-weight: bold;
+}
+
+dd {
+ margin-left: 10px;
+}
+
+.dl-horizontal {
+ *zoom: 1;
+}
+
+.dl-horizontal:before,
+.dl-horizontal:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.dl-horizontal:after {
+ clear: both;
+}
+
+.dl-horizontal dt {
+ float: left;
+ width: 160px;
+ overflow: hidden;
+ clear: left;
+ text-align: right;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.dl-horizontal dd {
+ margin-left: 180px;
+}
+
+hr {
+ margin: 20px 0;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+ border-bottom: 1px solid #ffffff;
+}
+
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #999999;
+}
+
+abbr.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+
+blockquote {
+ padding: 0 0 0 15px;
+ margin: 0 0 20px;
+ border-left: 5px solid #eeeeee;
+}
+
+blockquote p {
+ margin-bottom: 0;
+ font-size: 17.5px;
+ font-weight: 300;
+ line-height: 1.25;
+}
+
+blockquote small {
+ display: block;
+ line-height: 20px;
+ color: #999999;
+}
+
+blockquote small:before {
+ content: '\2014 \00A0';
+}
+
+blockquote.pull-right {
+ float: right;
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
+}
+
+blockquote.pull-right p,
+blockquote.pull-right small {
+ text-align: right;
+}
+
+blockquote.pull-right small:before {
+ content: '';
+}
+
+blockquote.pull-right small:after {
+ content: '\00A0 \2014';
+}
+
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+ content: "";
+}
+
+address {
+ display: block;
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 20px;
+}
+
+code,
+pre {
+ padding: 0 3px 2px;
+ font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+ font-size: 12px;
+ color: #333333;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+code {
+ padding: 2px 4px;
+ color: #d14;
+ white-space: nowrap;
+ background-color: #f7f7f9;
+ border: 1px solid #e1e1e8;
+}
+
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 20px;
+ word-break: break-all;
+ word-wrap: break-word;
+ white-space: pre;
+ white-space: pre-wrap;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+pre.prettyprint {
+ margin-bottom: 20px;
+}
+
+pre code {
+ padding: 0;
+ color: inherit;
+ white-space: pre;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border: 0;
+}
+
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+
+form {
+ margin: 0 0 20px;
+}
+
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: 40px;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+
+legend small {
+ font-size: 15px;
+ color: #999999;
+}
+
+label,
+input,
+button,
+select,
+textarea {
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 20px;
+}
+
+input,
+button,
+select,
+textarea {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+
+label {
+ display: block;
+ margin-bottom: 5px;
+}
+
+select,
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+ display: inline-block;
+ height: 20px;
+ padding: 4px 6px;
+ margin-bottom: 10px;
+ font-size: 14px;
+ line-height: 20px;
+ color: #555555;
+ vertical-align: middle;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+input,
+textarea,
+.uneditable-input {
+ width: 206px;
+}
+
+textarea {
+ height: auto;
+}
+
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
+ -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
+ -o-transition: border linear 0.2s, box-shadow linear 0.2s;
+ transition: border linear 0.2s, box-shadow linear 0.2s;
+}
+
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="time"]:focus,
+input[type="week"]:focus,
+input[type="number"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="color"]:focus,
+.uneditable-input:focus {
+ border-color: rgba(82, 168, 236, 0.8);
+ outline: 0;
+ outline: thin dotted \9;
+ /* IE6-9 */
+
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+}
+
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ *margin-top: 0;
+ line-height: normal;
+}
+
+input[type="file"],
+input[type="image"],
+input[type="submit"],
+input[type="reset"],
+input[type="button"],
+input[type="radio"],
+input[type="checkbox"] {
+ width: auto;
+}
+
+select,
+input[type="file"] {
+ height: 30px;
+ /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+ *margin-top: 4px;
+ /* For IE7, add top margin to align select with labels */
+
+ line-height: 30px;
+}
+
+select {
+ width: 220px;
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+}
+
+select[multiple],
+select[size] {
+ height: auto;
+}
+
+select:focus,
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+.uneditable-input,
+.uneditable-textarea {
+ color: #999999;
+ cursor: not-allowed;
+ background-color: #fcfcfc;
+ border-color: #cccccc;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
+}
+
+.uneditable-input {
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+.uneditable-textarea {
+ width: auto;
+ height: auto;
+}
+
+input:-moz-placeholder,
+textarea:-moz-placeholder {
+ color: #999999;
+}
+
+input:-ms-input-placeholder,
+textarea:-ms-input-placeholder {
+ color: #999999;
+}
+
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+ color: #999999;
+}
+
+.radio,
+.checkbox {
+ min-height: 20px;
+ padding-left: 20px;
+}
+
+.radio input[type="radio"],
+.checkbox input[type="checkbox"] {
+ float: left;
+ margin-left: -20px;
+}
+
+.controls > .radio:first-child,
+.controls > .checkbox:first-child {
+ padding-top: 5px;
+}
+
+.radio.inline,
+.checkbox.inline {
+ display: inline-block;
+ padding-top: 5px;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+
+.radio.inline + .radio.inline,
+.checkbox.inline + .checkbox.inline {
+ margin-left: 10px;
+}
+
+.input-mini {
+ width: 60px;
+}
+
+.input-small {
+ width: 90px;
+}
+
+.input-medium {
+ width: 150px;
+}
+
+.input-large {
+ width: 210px;
+}
+
+.input-xlarge {
+ width: 270px;
+}
+
+.input-xxlarge {
+ width: 530px;
+}
+
+input[class*="span"],
+select[class*="span"],
+textarea[class*="span"],
+.uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"] {
+ float: none;
+ margin-left: 0;
+}
+
+.input-append input[class*="span"],
+.input-append .uneditable-input[class*="span"],
+.input-prepend input[class*="span"],
+.input-prepend .uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"],
+.row-fluid .input-prepend [class*="span"],
+.row-fluid .input-append [class*="span"] {
+ display: inline-block;
+}
+
+input,
+textarea,
+.uneditable-input {
+ margin-left: 0;
+}
+
+.controls-row [class*="span"] + [class*="span"] {
+ margin-left: 20px;
+}
+
+input.span12,
+textarea.span12,
+.uneditable-input.span12 {
+ width: 926px;
+}
+
+input.span11,
+textarea.span11,
+.uneditable-input.span11 {
+ width: 846px;
+}
+
+input.span10,
+textarea.span10,
+.uneditable-input.span10 {
+ width: 766px;
+}
+
+input.span9,
+textarea.span9,
+.uneditable-input.span9 {
+ width: 686px;
+}
+
+input.span8,
+textarea.span8,
+.uneditable-input.span8 {
+ width: 606px;
+}
+
+input.span7,
+textarea.span7,
+.uneditable-input.span7 {
+ width: 526px;
+}
+
+input.span6,
+textarea.span6,
+.uneditable-input.span6 {
+ width: 446px;
+}
+
+input.span5,
+textarea.span5,
+.uneditable-input.span5 {
+ width: 366px;
+}
+
+input.span4,
+textarea.span4,
+.uneditable-input.span4 {
+ width: 286px;
+}
+
+input.span3,
+textarea.span3,
+.uneditable-input.span3 {
+ width: 206px;
+}
+
+input.span2,
+textarea.span2,
+.uneditable-input.span2 {
+ width: 126px;
+}
+
+input.span1,
+textarea.span1,
+.uneditable-input.span1 {
+ width: 46px;
+}
+
+.controls-row {
+ *zoom: 1;
+}
+
+.controls-row:before,
+.controls-row:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.controls-row:after {
+ clear: both;
+}
+
+.controls-row [class*="span"],
+.row-fluid .controls-row [class*="span"] {
+ float: left;
+}
+
+.controls-row .checkbox[class*="span"],
+.controls-row .radio[class*="span"] {
+ padding-top: 5px;
+}
+
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+ cursor: not-allowed;
+ background-color: #eeeeee;
+}
+
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"][readonly],
+input[type="checkbox"][readonly] {
+ background-color: transparent;
+}
+
+.control-group.warning .control-label,
+.control-group.warning .help-block,
+.control-group.warning .help-inline {
+ color: #c09853;
+}
+
+.control-group.warning .checkbox,
+.control-group.warning .radio,
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+ color: #c09853;
+}
+
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+ border-color: #c09853;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.control-group.warning input:focus,
+.control-group.warning select:focus,
+.control-group.warning textarea:focus {
+ border-color: #a47e3c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+}
+
+.control-group.warning .input-prepend .add-on,
+.control-group.warning .input-append .add-on {
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #c09853;
+}
+
+.control-group.error .control-label,
+.control-group.error .help-block,
+.control-group.error .help-inline {
+ color: #b94a48;
+}
+
+.control-group.error .checkbox,
+.control-group.error .radio,
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+ color: #b94a48;
+}
+
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+ border-color: #b94a48;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.control-group.error input:focus,
+.control-group.error select:focus,
+.control-group.error textarea:focus {
+ border-color: #953b39;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+}
+
+.control-group.error .input-prepend .add-on,
+.control-group.error .input-append .add-on {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #b94a48;
+}
+
+.control-group.success .control-label,
+.control-group.success .help-block,
+.control-group.success .help-inline {
+ color: #468847;
+}
+
+.control-group.success .checkbox,
+.control-group.success .radio,
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+ color: #468847;
+}
+
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+ border-color: #468847;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.control-group.success input:focus,
+.control-group.success select:focus,
+.control-group.success textarea:focus {
+ border-color: #356635;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+}
+
+.control-group.success .input-prepend .add-on,
+.control-group.success .input-append .add-on {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #468847;
+}
+
+.control-group.info .control-label,
+.control-group.info .help-block,
+.control-group.info .help-inline {
+ color: #3a87ad;
+}
+
+.control-group.info .checkbox,
+.control-group.info .radio,
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+ color: #3a87ad;
+}
+
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+ border-color: #3a87ad;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+
+.control-group.info input:focus,
+.control-group.info select:focus,
+.control-group.info textarea:focus {
+ border-color: #2d6987;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+}
+
+.control-group.info .input-prepend .add-on,
+.control-group.info .input-append .add-on {
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #3a87ad;
+}
+
+input:focus:invalid,
+textarea:focus:invalid,
+select:focus:invalid {
+ color: #b94a48;
+ border-color: #ee5f5b;
+}
+
+input:focus:invalid:focus,
+textarea:focus:invalid:focus,
+select:focus:invalid:focus {
+ border-color: #e9322d;
+ -webkit-box-shadow: 0 0 6px #f8b9b7;
+ -moz-box-shadow: 0 0 6px #f8b9b7;
+ box-shadow: 0 0 6px #f8b9b7;
+}
+
+.form-actions {
+ padding: 19px 20px 20px;
+ margin-top: 20px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #e5e5e5;
+ *zoom: 1;
+}
+
+.form-actions:before,
+.form-actions:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.form-actions:after {
+ clear: both;
+}
+
+.help-block,
+.help-inline {
+ color: #595959;
+}
+
+.help-block {
+ display: block;
+ margin-bottom: 10px;
+}
+
+.help-inline {
+ display: inline-block;
+ *display: inline;
+ padding-left: 5px;
+ vertical-align: middle;
+ *zoom: 1;
+}
+
+.input-append,
+.input-prepend {
+ display: inline-block;
+ margin-bottom: 10px;
+ font-size: 0;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input,
+.input-append .dropdown-menu,
+.input-prepend .dropdown-menu,
+.input-append .popover,
+.input-prepend .popover {
+ font-size: 14px;
+}
+
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input {
+ position: relative;
+ margin-bottom: 0;
+ *margin-left: 0;
+ vertical-align: top;
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+
+.input-append input:focus,
+.input-prepend input:focus,
+.input-append select:focus,
+.input-prepend select:focus,
+.input-append .uneditable-input:focus,
+.input-prepend .uneditable-input:focus {
+ z-index: 2;
+}
+
+.input-append .add-on,
+.input-prepend .add-on {
+ display: inline-block;
+ width: auto;
+ height: 20px;
+ min-width: 16px;
+ padding: 4px 5px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 20px;
+ text-align: center;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #eeeeee;
+ border: 1px solid #ccc;
+}
+
+.input-append .add-on,
+.input-prepend .add-on,
+.input-append .btn,
+.input-prepend .btn,
+.input-append .btn-group > .dropdown-toggle,
+.input-prepend .btn-group > .dropdown-toggle {
+ vertical-align: top;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.input-append .active,
+.input-prepend .active {
+ background-color: #a9dba9;
+ border-color: #46a546;
+}
+
+.input-prepend .add-on,
+.input-prepend .btn {
+ margin-right: -1px;
+}
+
+.input-prepend .add-on:first-child,
+.input-prepend .btn:first-child {
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+
+.input-append input,
+.input-append select,
+.input-append .uneditable-input {
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+
+.input-append input + .btn-group .btn:last-child,
+.input-append select + .btn-group .btn:last-child,
+.input-append .uneditable-input + .btn-group .btn:last-child {
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+
+.input-append .add-on,
+.input-append .btn,
+.input-append .btn-group {
+ margin-left: -1px;
+}
+
+.input-append .add-on:last-child,
+.input-append .btn:last-child,
+.input-append .btn-group:last-child > .dropdown-toggle {
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+
+.input-prepend.input-append input,
+.input-prepend.input-append select,
+.input-prepend.input-append .uneditable-input {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.input-prepend.input-append input + .btn-group .btn,
+.input-prepend.input-append select + .btn-group .btn,
+.input-prepend.input-append .uneditable-input + .btn-group .btn {
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+
+.input-prepend.input-append .add-on:first-child,
+.input-prepend.input-append .btn:first-child {
+ margin-right: -1px;
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+
+.input-prepend.input-append .add-on:last-child,
+.input-prepend.input-append .btn:last-child {
+ margin-left: -1px;
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+
+.input-prepend.input-append .btn-group:first-child {
+ margin-left: 0;
+}
+
+input.search-query {
+ padding-right: 14px;
+ padding-right: 4px \9;
+ padding-left: 14px;
+ padding-left: 4px \9;
+ /* IE7-8 doesn't have border-radius, so don't indent the padding */
+
+ margin-bottom: 0;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+}
+
+/* Allow for input prepend/append in search forms */
+
+.form-search .input-append .search-query,
+.form-search .input-prepend .search-query {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.form-search .input-append .search-query {
+ -webkit-border-radius: 14px 0 0 14px;
+ -moz-border-radius: 14px 0 0 14px;
+ border-radius: 14px 0 0 14px;
+}
+
+.form-search .input-append .btn {
+ -webkit-border-radius: 0 14px 14px 0;
+ -moz-border-radius: 0 14px 14px 0;
+ border-radius: 0 14px 14px 0;
+}
+
+.form-search .input-prepend .search-query {
+ -webkit-border-radius: 0 14px 14px 0;
+ -moz-border-radius: 0 14px 14px 0;
+ border-radius: 0 14px 14px 0;
+}
+
+.form-search .input-prepend .btn {
+ -webkit-border-radius: 14px 0 0 14px;
+ -moz-border-radius: 14px 0 0 14px;
+ border-radius: 14px 0 0 14px;
+}
+
+.form-search input,
+.form-inline input,
+.form-horizontal input,
+.form-search textarea,
+.form-inline textarea,
+.form-horizontal textarea,
+.form-search select,
+.form-inline select,
+.form-horizontal select,
+.form-search .help-inline,
+.form-inline .help-inline,
+.form-horizontal .help-inline,
+.form-search .uneditable-input,
+.form-inline .uneditable-input,
+.form-horizontal .uneditable-input,
+.form-search .input-prepend,
+.form-inline .input-prepend,
+.form-horizontal .input-prepend,
+.form-search .input-append,
+.form-inline .input-append,
+.form-horizontal .input-append {
+ display: inline-block;
+ *display: inline;
+ margin-bottom: 0;
+ vertical-align: middle;
+ *zoom: 1;
+}
+
+.form-search .hide,
+.form-inline .hide,
+.form-horizontal .hide {
+ display: none;
+}
+
+.form-search label,
+.form-inline label,
+.form-search .btn-group,
+.form-inline .btn-group {
+ display: inline-block;
+}
+
+.form-search .input-append,
+.form-inline .input-append,
+.form-search .input-prepend,
+.form-inline .input-prepend {
+ margin-bottom: 0;
+}
+
+.form-search .radio,
+.form-search .checkbox,
+.form-inline .radio,
+.form-inline .checkbox {
+ padding-left: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+
+.form-search .radio input[type="radio"],
+.form-search .checkbox input[type="checkbox"],
+.form-inline .radio input[type="radio"],
+.form-inline .checkbox input[type="checkbox"] {
+ float: left;
+ margin-right: 3px;
+ margin-left: 0;
+}
+
+.control-group {
+ margin-bottom: 10px;
+}
+
+legend + .control-group {
+ margin-top: 20px;
+ -webkit-margin-top-collapse: separate;
+}
+
+.form-horizontal .control-group {
+ margin-bottom: 20px;
+ *zoom: 1;
+}
+
+.form-horizontal .control-group:before,
+.form-horizontal .control-group:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.form-horizontal .control-group:after {
+ clear: both;
+}
+
+.form-horizontal .control-label {
+ float: left;
+ width: 160px;
+ padding-top: 5px;
+ text-align: right;
+}
+
+.form-horizontal .controls {
+ *display: inline-block;
+ *padding-left: 20px;
+ margin-left: 180px;
+ *margin-left: 0;
+}
+
+.form-horizontal .controls:first-child {
+ *padding-left: 180px;
+}
+
+.form-horizontal .help-block {
+ margin-bottom: 0;
+}
+
+.form-horizontal input + .help-block,
+.form-horizontal select + .help-block,
+.form-horizontal textarea + .help-block,
+.form-horizontal .uneditable-input + .help-block,
+.form-horizontal .input-prepend + .help-block,
+.form-horizontal .input-append + .help-block {
+ margin-top: 10px;
+}
+
+.form-horizontal .form-actions {
+ padding-left: 180px;
+}
+
+table {
+ max-width: 100%;
+ background-color: transparent;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.table {
+ width: 100%;
+ margin-bottom: 20px;
+}
+
+.table th,
+.table td {
+ padding: 8px;
+ line-height: 20px;
+ text-align: left;
+ vertical-align: top;
+ border-top: 1px solid #dddddd;
+}
+
+.table th {
+ font-weight: bold;
+}
+
+.table thead th {
+ vertical-align: bottom;
+}
+
+.table caption + thead tr:first-child th,
+.table caption + thead tr:first-child td,
+.table colgroup + thead tr:first-child th,
+.table colgroup + thead tr:first-child td,
+.table thead:first-child tr:first-child th,
+.table thead:first-child tr:first-child td {
+ border-top: 0;
+}
+
+.table tbody + tbody {
+ border-top: 2px solid #dddddd;
+}
+
+.table .table {
+ background-color: #ffffff;
+}
+
+.table-condensed th,
+.table-condensed td {
+ padding: 4px 5px;
+}
+
+.table-bordered {
+ border: 1px solid #dddddd;
+ border-collapse: separate;
+ *border-collapse: collapse;
+ border-left: 0;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.table-bordered th,
+.table-bordered td {
+ border-left: 1px solid #dddddd;
+}
+
+.table-bordered caption + thead tr:first-child th,
+.table-bordered caption + tbody tr:first-child th,
+.table-bordered caption + tbody tr:first-child td,
+.table-bordered colgroup + thead tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child td,
+.table-bordered thead:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child td {
+ border-top: 0;
+}
+
+.table-bordered thead:first-child tr:first-child > th:first-child,
+.table-bordered tbody:first-child tr:first-child > td:first-child,
+.table-bordered tbody:first-child tr:first-child > th:first-child {
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+
+.table-bordered thead:first-child tr:first-child > th:last-child,
+.table-bordered tbody:first-child tr:first-child > td:last-child,
+.table-bordered tbody:first-child tr:first-child > th:last-child {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+}
+
+.table-bordered thead:last-child tr:last-child > th:first-child,
+.table-bordered tbody:last-child tr:last-child > td:first-child,
+.table-bordered tbody:last-child tr:last-child > th:first-child,
+.table-bordered tfoot:last-child tr:last-child > td:first-child,
+.table-bordered tfoot:last-child tr:last-child > th:first-child {
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+}
+
+.table-bordered thead:last-child tr:last-child > th:last-child,
+.table-bordered tbody:last-child tr:last-child > td:last-child,
+.table-bordered tbody:last-child tr:last-child > th:last-child,
+.table-bordered tfoot:last-child tr:last-child > td:last-child,
+.table-bordered tfoot:last-child tr:last-child > th:last-child {
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+}
+
+.table-bordered tfoot + tbody:last-child tr:last-child td:first-child {
+ -webkit-border-bottom-left-radius: 0;
+ border-bottom-left-radius: 0;
+ -moz-border-radius-bottomleft: 0;
+}
+
+.table-bordered tfoot + tbody:last-child tr:last-child td:last-child {
+ -webkit-border-bottom-right-radius: 0;
+ border-bottom-right-radius: 0;
+ -moz-border-radius-bottomright: 0;
+}
+
+.table-bordered caption + thead tr:first-child th:first-child,
+.table-bordered caption + tbody tr:first-child td:first-child,
+.table-bordered colgroup + thead tr:first-child th:first-child,
+.table-bordered colgroup + tbody tr:first-child td:first-child {
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+
+.table-bordered caption + thead tr:first-child th:last-child,
+.table-bordered caption + tbody tr:first-child td:last-child,
+.table-bordered colgroup + thead tr:first-child th:last-child,
+.table-bordered colgroup + tbody tr:first-child td:last-child {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+}
+
+.table-striped tbody > tr:nth-child(odd) > td,
+.table-striped tbody > tr:nth-child(odd) > th {
+ background-color: #f9f9f9;
+}
+
+.table-hover tbody tr:hover > td,
+.table-hover tbody tr:hover > th {
+ background-color: #f5f5f5;
+}
+
+table td[class*="span"],
+table th[class*="span"],
+.row-fluid table td[class*="span"],
+.row-fluid table th[class*="span"] {
+ display: table-cell;
+ float: none;
+ margin-left: 0;
+}
+
+.table td.span1,
+.table th.span1 {
+ float: none;
+ width: 44px;
+ margin-left: 0;
+}
+
+.table td.span2,
+.table th.span2 {
+ float: none;
+ width: 124px;
+ margin-left: 0;
+}
+
+.table td.span3,
+.table th.span3 {
+ float: none;
+ width: 204px;
+ margin-left: 0;
+}
+
+.table td.span4,
+.table th.span4 {
+ float: none;
+ width: 284px;
+ margin-left: 0;
+}
+
+.table td.span5,
+.table th.span5 {
+ float: none;
+ width: 364px;
+ margin-left: 0;
+}
+
+.table td.span6,
+.table th.span6 {
+ float: none;
+ width: 444px;
+ margin-left: 0;
+}
+
+.table td.span7,
+.table th.span7 {
+ float: none;
+ width: 524px;
+ margin-left: 0;
+}
+
+.table td.span8,
+.table th.span8 {
+ float: none;
+ width: 604px;
+ margin-left: 0;
+}
+
+.table td.span9,
+.table th.span9 {
+ float: none;
+ width: 684px;
+ margin-left: 0;
+}
+
+.table td.span10,
+.table th.span10 {
+ float: none;
+ width: 764px;
+ margin-left: 0;
+}
+
+.table td.span11,
+.table th.span11 {
+ float: none;
+ width: 844px;
+ margin-left: 0;
+}
+
+.table td.span12,
+.table th.span12 {
+ float: none;
+ width: 924px;
+ margin-left: 0;
+}
+
+.table tbody tr.success > td {
+ background-color: #dff0d8;
+}
+
+.table tbody tr.error > td {
+ background-color: #f2dede;
+}
+
+.table tbody tr.warning > td {
+ background-color: #fcf8e3;
+}
+
+.table tbody tr.info > td {
+ background-color: #d9edf7;
+}
+
+.table-hover tbody tr.success:hover > td {
+ background-color: #d0e9c6;
+}
+
+.table-hover tbody tr.error:hover > td {
+ background-color: #ebcccc;
+}
+
+.table-hover tbody tr.warning:hover > td {
+ background-color: #faf2cc;
+}
+
+.table-hover tbody tr.info:hover > td {
+ background-color: #c4e3f3;
+}
+
+[class^="icon-"],
+[class*=" icon-"] {
+ display: inline-block;
+ width: 14px;
+ height: 14px;
+ margin-top: 1px;
+ *margin-right: .3em;
+ line-height: 14px;
+ vertical-align: text-top;
+ background-image: url("../img/glyphicons-halflings.png");
+ background-position: 14px 14px;
+ background-repeat: no-repeat;
+}
+
+/* White icons with optional class, or on hover/focus/active states of certain elements */
+
+.icon-white,
+.nav-pills > .active > a > [class^="icon-"],
+.nav-pills > .active > a > [class*=" icon-"],
+.nav-list > .active > a > [class^="icon-"],
+.nav-list > .active > a > [class*=" icon-"],
+.navbar-inverse .nav > .active > a > [class^="icon-"],
+.navbar-inverse .nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:focus > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > li > a:focus > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"],
+.dropdown-submenu:hover > a > [class^="icon-"],
+.dropdown-submenu:focus > a > [class^="icon-"],
+.dropdown-submenu:hover > a > [class*=" icon-"],
+.dropdown-submenu:focus > a > [class*=" icon-"] {
+ background-image: url("../img/glyphicons-halflings-white.png");
+}
+
+.icon-glass {
+ background-position: 0 0;
+}
+
+.icon-music {
+ background-position: -24px 0;
+}
+
+.icon-search {
+ background-position: -48px 0;
+}
+
+.icon-envelope {
+ background-position: -72px 0;
+}
+
+.icon-heart {
+ background-position: -96px 0;
+}
+
+.icon-star {
+ background-position: -120px 0;
+}
+
+.icon-star-empty {
+ background-position: -144px 0;
+}
+
+.icon-user {
+ background-position: -168px 0;
+}
+
+.icon-film {
+ background-position: -192px 0;
+}
+
+.icon-th-large {
+ background-position: -216px 0;
+}
+
+.icon-th {
+ background-position: -240px 0;
+}
+
+.icon-th-list {
+ background-position: -264px 0;
+}
+
+.icon-ok {
+ background-position: -288px 0;
+}
+
+.icon-remove {
+ background-position: -312px 0;
+}
+
+.icon-zoom-in {
+ background-position: -336px 0;
+}
+
+.icon-zoom-out {
+ background-position: -360px 0;
+}
+
+.icon-off {
+ background-position: -384px 0;
+}
+
+.icon-signal {
+ background-position: -408px 0;
+}
+
+.icon-cog {
+ background-position: -432px 0;
+}
+
+.icon-trash {
+ background-position: -456px 0;
+}
+
+.icon-home {
+ background-position: 0 -24px;
+}
+
+.icon-file {
+ background-position: -24px -24px;
+}
+
+.icon-time {
+ background-position: -48px -24px;
+}
+
+.icon-road {
+ background-position: -72px -24px;
+}
+
+.icon-download-alt {
+ background-position: -96px -24px;
+}
+
+.icon-download {
+ background-position: -120px -24px;
+}
+
+.icon-upload {
+ background-position: -144px -24px;
+}
+
+.icon-inbox {
+ background-position: -168px -24px;
+}
+
+.icon-play-circle {
+ background-position: -192px -24px;
+}
+
+.icon-repeat {
+ background-position: -216px -24px;
+}
+
+.icon-refresh {
+ background-position: -240px -24px;
+}
+
+.icon-list-alt {
+ background-position: -264px -24px;
+}
+
+.icon-lock {
+ background-position: -287px -24px;
+}
+
+.icon-flag {
+ background-position: -312px -24px;
+}
+
+.icon-headphones {
+ background-position: -336px -24px;
+}
+
+.icon-volume-off {
+ background-position: -360px -24px;
+}
+
+.icon-volume-down {
+ background-position: -384px -24px;
+}
+
+.icon-volume-up {
+ background-position: -408px -24px;
+}
+
+.icon-qrcode {
+ background-position: -432px -24px;
+}
+
+.icon-barcode {
+ background-position: -456px -24px;
+}
+
+.icon-tag {
+ background-position: 0 -48px;
+}
+
+.icon-tags {
+ background-position: -25px -48px;
+}
+
+.icon-book {
+ background-position: -48px -48px;
+}
+
+.icon-bookmark {
+ background-position: -72px -48px;
+}
+
+.icon-print {
+ background-position: -96px -48px;
+}
+
+.icon-camera {
+ background-position: -120px -48px;
+}
+
+.icon-font {
+ background-position: -144px -48px;
+}
+
+.icon-bold {
+ background-position: -167px -48px;
+}
+
+.icon-italic {
+ background-position: -192px -48px;
+}
+
+.icon-text-height {
+ background-position: -216px -48px;
+}
+
+.icon-text-width {
+ background-position: -240px -48px;
+}
+
+.icon-align-left {
+ background-position: -264px -48px;
+}
+
+.icon-align-center {
+ background-position: -288px -48px;
+}
+
+.icon-align-right {
+ background-position: -312px -48px;
+}
+
+.icon-align-justify {
+ background-position: -336px -48px;
+}
+
+.icon-list {
+ background-position: -360px -48px;
+}
+
+.icon-indent-left {
+ background-position: -384px -48px;
+}
+
+.icon-indent-right {
+ background-position: -408px -48px;
+}
+
+.icon-facetime-video {
+ background-position: -432px -48px;
+}
+
+.icon-picture {
+ background-position: -456px -48px;
+}
+
+.icon-pencil {
+ background-position: 0 -72px;
+}
+
+.icon-map-marker {
+ background-position: -24px -72px;
+}
+
+.icon-adjust {
+ background-position: -48px -72px;
+}
+
+.icon-tint {
+ background-position: -72px -72px;
+}
+
+.icon-edit {
+ background-position: -96px -72px;
+}
+
+.icon-share {
+ background-position: -120px -72px;
+}
+
+.icon-check {
+ background-position: -144px -72px;
+}
+
+.icon-move {
+ background-position: -168px -72px;
+}
+
+.icon-step-backward {
+ background-position: -192px -72px;
+}
+
+.icon-fast-backward {
+ background-position: -216px -72px;
+}
+
+.icon-backward {
+ background-position: -240px -72px;
+}
+
+.icon-play {
+ background-position: -264px -72px;
+}
+
+.icon-pause {
+ background-position: -288px -72px;
+}
+
+.icon-stop {
+ background-position: -312px -72px;
+}
+
+.icon-forward {
+ background-position: -336px -72px;
+}
+
+.icon-fast-forward {
+ background-position: -360px -72px;
+}
+
+.icon-step-forward {
+ background-position: -384px -72px;
+}
+
+.icon-eject {
+ background-position: -408px -72px;
+}
+
+.icon-chevron-left {
+ background-position: -432px -72px;
+}
+
+.icon-chevron-right {
+ background-position: -456px -72px;
+}
+
+.icon-plus-sign {
+ background-position: 0 -96px;
+}
+
+.icon-minus-sign {
+ background-position: -24px -96px;
+}
+
+.icon-remove-sign {
+ background-position: -48px -96px;
+}
+
+.icon-ok-sign {
+ background-position: -72px -96px;
+}
+
+.icon-question-sign {
+ background-position: -96px -96px;
+}
+
+.icon-info-sign {
+ background-position: -120px -96px;
+}
+
+.icon-screenshot {
+ background-position: -144px -96px;
+}
+
+.icon-remove-circle {
+ background-position: -168px -96px;
+}
+
+.icon-ok-circle {
+ background-position: -192px -96px;
+}
+
+.icon-ban-circle {
+ background-position: -216px -96px;
+}
+
+.icon-arrow-left {
+ background-position: -240px -96px;
+}
+
+.icon-arrow-right {
+ background-position: -264px -96px;
+}
+
+.icon-arrow-up {
+ background-position: -289px -96px;
+}
+
+.icon-arrow-down {
+ background-position: -312px -96px;
+}
+
+.icon-share-alt {
+ background-position: -336px -96px;
+}
+
+.icon-resize-full {
+ background-position: -360px -96px;
+}
+
+.icon-resize-small {
+ background-position: -384px -96px;
+}
+
+.icon-plus {
+ background-position: -408px -96px;
+}
+
+.icon-minus {
+ background-position: -433px -96px;
+}
+
+.icon-asterisk {
+ background-position: -456px -96px;
+}
+
+.icon-exclamation-sign {
+ background-position: 0 -120px;
+}
+
+.icon-gift {
+ background-position: -24px -120px;
+}
+
+.icon-leaf {
+ background-position: -48px -120px;
+}
+
+.icon-fire {
+ background-position: -72px -120px;
+}
+
+.icon-eye-open {
+ background-position: -96px -120px;
+}
+
+.icon-eye-close {
+ background-position: -120px -120px;
+}
+
+.icon-warning-sign {
+ background-position: -144px -120px;
+}
+
+.icon-plane {
+ background-position: -168px -120px;
+}
+
+.icon-calendar {
+ background-position: -192px -120px;
+}
+
+.icon-random {
+ width: 16px;
+ background-position: -216px -120px;
+}
+
+.icon-comment {
+ background-position: -240px -120px;
+}
+
+.icon-magnet {
+ background-position: -264px -120px;
+}
+
+.icon-chevron-up {
+ background-position: -288px -120px;
+}
+
+.icon-chevron-down {
+ background-position: -313px -119px;
+}
+
+.icon-retweet {
+ background-position: -336px -120px;
+}
+
+.icon-shopping-cart {
+ background-position: -360px -120px;
+}
+
+.icon-folder-close {
+ width: 16px;
+ background-position: -384px -120px;
+}
+
+.icon-folder-open {
+ width: 16px;
+ background-position: -408px -120px;
+}
+
+.icon-resize-vertical {
+ background-position: -432px -119px;
+}
+
+.icon-resize-horizontal {
+ background-position: -456px -118px;
+}
+
+.icon-hdd {
+ background-position: 0 -144px;
+}
+
+.icon-bullhorn {
+ background-position: -24px -144px;
+}
+
+.icon-bell {
+ background-position: -48px -144px;
+}
+
+.icon-certificate {
+ background-position: -72px -144px;
+}
+
+.icon-thumbs-up {
+ background-position: -96px -144px;
+}
+
+.icon-thumbs-down {
+ background-position: -120px -144px;
+}
+
+.icon-hand-right {
+ background-position: -144px -144px;
+}
+
+.icon-hand-left {
+ background-position: -168px -144px;
+}
+
+.icon-hand-up {
+ background-position: -192px -144px;
+}
+
+.icon-hand-down {
+ background-position: -216px -144px;
+}
+
+.icon-circle-arrow-right {
+ background-position: -240px -144px;
+}
+
+.icon-circle-arrow-left {
+ background-position: -264px -144px;
+}
+
+.icon-circle-arrow-up {
+ background-position: -288px -144px;
+}
+
+.icon-circle-arrow-down {
+ background-position: -312px -144px;
+}
+
+.icon-globe {
+ background-position: -336px -144px;
+}
+
+.icon-wrench {
+ background-position: -360px -144px;
+}
+
+.icon-tasks {
+ background-position: -384px -144px;
+}
+
+.icon-filter {
+ background-position: -408px -144px;
+}
+
+.icon-briefcase {
+ background-position: -432px -144px;
+}
+
+.icon-fullscreen {
+ background-position: -456px -144px;
+}
+
+.dropup,
+.dropdown {
+ position: relative;
+}
+
+.dropdown-toggle {
+ *margin-bottom: -3px;
+}
+
+.dropdown-toggle:active,
+.open .dropdown-toggle {
+ outline: 0;
+}
+
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ vertical-align: top;
+ border-top: 4px solid #000000;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+ content: "";
+}
+
+.dropdown .caret {
+ margin-top: 8px;
+ margin-left: 2px;
+}
+
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ background-color: #ffffff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ *border-right-width: 2px;
+ *border-bottom-width: 2px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+}
+
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+
+.dropdown-menu .divider {
+ *width: 100%;
+ height: 1px;
+ margin: 9px 1px;
+ *margin: -5px 0 5px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
+}
+
+.dropdown-menu > li > a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 20px;
+ color: #333333;
+ white-space: nowrap;
+}
+
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus,
+.dropdown-submenu:hover > a,
+.dropdown-submenu:focus > a {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #0081c2;
+ background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+ background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ color: #ffffff;
+ text-decoration: none;
+ background-color: #0081c2;
+ background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+ background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+ background-repeat: repeat-x;
+ outline: 0;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ color: #999999;
+}
+
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ text-decoration: none;
+ cursor: default;
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.open {
+ *z-index: 1000;
+}
+
+.open > .dropdown-menu {
+ display: block;
+}
+
+.dropdown-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 990;
+}
+
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ border-top: 0;
+ border-bottom: 4px solid #000000;
+ content: "";
+}
+
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 1px;
+}
+
+.dropdown-submenu {
+ position: relative;
+}
+
+.dropdown-submenu > .dropdown-menu {
+ top: 0;
+ left: 100%;
+ margin-top: -6px;
+ margin-left: -1px;
+ -webkit-border-radius: 0 6px 6px 6px;
+ -moz-border-radius: 0 6px 6px 6px;
+ border-radius: 0 6px 6px 6px;
+}
+
+.dropdown-submenu:hover > .dropdown-menu {
+ display: block;
+}
+
+.dropup .dropdown-submenu > .dropdown-menu {
+ top: auto;
+ bottom: 0;
+ margin-top: 0;
+ margin-bottom: -2px;
+ -webkit-border-radius: 5px 5px 5px 0;
+ -moz-border-radius: 5px 5px 5px 0;
+ border-radius: 5px 5px 5px 0;
+}
+
+.dropdown-submenu > a:after {
+ display: block;
+ float: right;
+ width: 0;
+ height: 0;
+ margin-top: 5px;
+ margin-right: -10px;
+ border-color: transparent;
+ border-left-color: #cccccc;
+ border-style: solid;
+ border-width: 5px 0 5px 5px;
+ content: " ";
+}
+
+.dropdown-submenu:hover > a:after {
+ border-left-color: #ffffff;
+}
+
+.dropdown-submenu.pull-left {
+ float: none;
+}
+
+.dropdown-submenu.pull-left > .dropdown-menu {
+ left: -100%;
+ margin-left: 10px;
+ -webkit-border-radius: 6px 0 6px 6px;
+ -moz-border-radius: 6px 0 6px 6px;
+ border-radius: 6px 0 6px 6px;
+}
+
+.dropdown .dropdown-menu .nav-header {
+ padding-right: 20px;
+ padding-left: 20px;
+}
+
+.typeahead {
+ z-index: 1051;
+ margin-top: 2px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
+}
+
+.well-large {
+ padding: 24px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.well-small {
+ padding: 9px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity 0.15s linear;
+ -moz-transition: opacity 0.15s linear;
+ -o-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+}
+
+.fade.in {
+ opacity: 1;
+}
+
+.collapse {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition: height 0.35s ease;
+ -moz-transition: height 0.35s ease;
+ -o-transition: height 0.35s ease;
+ transition: height 0.35s ease;
+}
+
+.collapse.in {
+ height: auto;
+}
+
+.close {
+ float: right;
+ font-size: 20px;
+ font-weight: bold;
+ line-height: 20px;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+
+.close:hover,
+.close:focus {
+ color: #000000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.4;
+ filter: alpha(opacity=40);
+}
+
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+
+.btn {
+ display: inline-block;
+ *display: inline;
+ padding: 4px 12px;
+ margin-bottom: 0;
+ *margin-left: .3em;
+ font-size: 14px;
+ line-height: 20px;
+ color: #333333;
+ text-align: center;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ vertical-align: middle;
+ cursor: pointer;
+ background-color: #f5f5f5;
+ *background-color: #e6e6e6;
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+ background-repeat: repeat-x;
+ border: 1px solid #cccccc;
+ *border: 0;
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ border-bottom-color: #b3b3b3;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ *zoom: 1;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.btn:hover,
+.btn:focus,
+.btn:active,
+.btn.active,
+.btn.disabled,
+.btn[disabled] {
+ color: #333333;
+ background-color: #e6e6e6;
+ *background-color: #d9d9d9;
+}
+
+.btn:active,
+.btn.active {
+ background-color: #cccccc \9;
+}
+
+.btn:first-child {
+ *margin-left: 0;
+}
+
+.btn:hover,
+.btn:focus {
+ color: #333333;
+ text-decoration: none;
+ background-position: 0 -15px;
+ -webkit-transition: background-position 0.1s linear;
+ -moz-transition: background-position 0.1s linear;
+ -o-transition: background-position 0.1s linear;
+ transition: background-position 0.1s linear;
+}
+
+.btn:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+.btn.active,
+.btn:active {
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.btn.disabled,
+.btn[disabled] {
+ cursor: default;
+ background-image: none;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+
+.btn-large {
+ padding: 11px 19px;
+ font-size: 17.5px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.btn-large [class^="icon-"],
+.btn-large [class*=" icon-"] {
+ margin-top: 4px;
+}
+
+.btn-small {
+ padding: 2px 10px;
+ font-size: 11.9px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+.btn-small [class^="icon-"],
+.btn-small [class*=" icon-"] {
+ margin-top: 0;
+}
+
+.btn-mini [class^="icon-"],
+.btn-mini [class*=" icon-"] {
+ margin-top: -1px;
+}
+
+.btn-mini {
+ padding: 0 6px;
+ font-size: 10.5px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+.btn-block {
+ display: block;
+ width: 100%;
+ padding-right: 0;
+ padding-left: 0;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+
+.btn-primary.active,
+.btn-warning.active,
+.btn-danger.active,
+.btn-success.active,
+.btn-info.active,
+.btn-inverse.active {
+ color: rgba(255, 255, 255, 0.75);
+}
+
+.btn-primary {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #006dcc;
+ *background-color: #0044cc;
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+ background-image: linear-gradient(to bottom, #0088cc, #0044cc);
+ background-repeat: repeat-x;
+ border-color: #0044cc #0044cc #002a80;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.btn-primary.disabled,
+.btn-primary[disabled] {
+ color: #ffffff;
+ background-color: #0044cc;
+ *background-color: #003bb3;
+}
+
+.btn-primary:active,
+.btn-primary.active {
+ background-color: #003399 \9;
+}
+
+.btn-warning {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #faa732;
+ *background-color: #f89406;
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(to bottom, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ border-color: #f89406 #f89406 #ad6704;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning:active,
+.btn-warning.active,
+.btn-warning.disabled,
+.btn-warning[disabled] {
+ color: #ffffff;
+ background-color: #f89406;
+ *background-color: #df8505;
+}
+
+.btn-warning:active,
+.btn-warning.active {
+ background-color: #c67605 \9;
+}
+
+.btn-danger {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #da4f49;
+ *background-color: #bd362f;
+ background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
+ background-repeat: repeat-x;
+ border-color: #bd362f #bd362f #802420;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.btn-danger.disabled,
+.btn-danger[disabled] {
+ color: #ffffff;
+ background-color: #bd362f;
+ *background-color: #a9302a;
+}
+
+.btn-danger:active,
+.btn-danger.active {
+ background-color: #942a25 \9;
+}
+
+.btn-success {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #5bb75b;
+ *background-color: #51a351;
+ background-image: -moz-linear-gradient(top, #62c462, #51a351);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+ background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+ background-image: -o-linear-gradient(top, #62c462, #51a351);
+ background-image: linear-gradient(to bottom, #62c462, #51a351);
+ background-repeat: repeat-x;
+ border-color: #51a351 #51a351 #387038;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-success:hover,
+.btn-success:focus,
+.btn-success:active,
+.btn-success.active,
+.btn-success.disabled,
+.btn-success[disabled] {
+ color: #ffffff;
+ background-color: #51a351;
+ *background-color: #499249;
+}
+
+.btn-success:active,
+.btn-success.active {
+ background-color: #408140 \9;
+}
+
+.btn-info {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #49afcd;
+ *background-color: #2f96b4;
+ background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
+ background-repeat: repeat-x;
+ border-color: #2f96b4 #2f96b4 #1f6377;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-info:hover,
+.btn-info:focus,
+.btn-info:active,
+.btn-info.active,
+.btn-info.disabled,
+.btn-info[disabled] {
+ color: #ffffff;
+ background-color: #2f96b4;
+ *background-color: #2a85a0;
+}
+
+.btn-info:active,
+.btn-info.active {
+ background-color: #24748c \9;
+}
+
+.btn-inverse {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #363636;
+ *background-color: #222222;
+ background-image: -moz-linear-gradient(top, #444444, #222222);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
+ background-image: -webkit-linear-gradient(top, #444444, #222222);
+ background-image: -o-linear-gradient(top, #444444, #222222);
+ background-image: linear-gradient(to bottom, #444444, #222222);
+ background-repeat: repeat-x;
+ border-color: #222222 #222222 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.btn-inverse:hover,
+.btn-inverse:focus,
+.btn-inverse:active,
+.btn-inverse.active,
+.btn-inverse.disabled,
+.btn-inverse[disabled] {
+ color: #ffffff;
+ background-color: #222222;
+ *background-color: #151515;
+}
+
+.btn-inverse:active,
+.btn-inverse.active {
+ background-color: #080808 \9;
+}
+
+button.btn,
+input[type="submit"].btn {
+ *padding-top: 3px;
+ *padding-bottom: 3px;
+}
+
+button.btn::-moz-focus-inner,
+input[type="submit"].btn::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+button.btn.btn-large,
+input[type="submit"].btn.btn-large {
+ *padding-top: 7px;
+ *padding-bottom: 7px;
+}
+
+button.btn.btn-small,
+input[type="submit"].btn.btn-small {
+ *padding-top: 3px;
+ *padding-bottom: 3px;
+}
+
+button.btn.btn-mini,
+input[type="submit"].btn.btn-mini {
+ *padding-top: 1px;
+ *padding-bottom: 1px;
+}
+
+.btn-link,
+.btn-link:active,
+.btn-link[disabled] {
+ background-color: transparent;
+ background-image: none;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+
+.btn-link {
+ color: #0088cc;
+ cursor: pointer;
+ border-color: transparent;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.btn-link:hover,
+.btn-link:focus {
+ color: #005580;
+ text-decoration: underline;
+ background-color: transparent;
+}
+
+.btn-link[disabled]:hover,
+.btn-link[disabled]:focus {
+ color: #333333;
+ text-decoration: none;
+}
+
+.btn-group {
+ position: relative;
+ display: inline-block;
+ *display: inline;
+ *margin-left: .3em;
+ font-size: 0;
+ white-space: nowrap;
+ vertical-align: middle;
+ *zoom: 1;
+}
+
+.btn-group:first-child {
+ *margin-left: 0;
+}
+
+.btn-group + .btn-group {
+ margin-left: 5px;
+}
+
+.btn-toolbar {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ font-size: 0;
+}
+
+.btn-toolbar > .btn + .btn,
+.btn-toolbar > .btn-group + .btn,
+.btn-toolbar > .btn + .btn-group {
+ margin-left: 5px;
+}
+
+.btn-group > .btn {
+ position: relative;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.btn-group > .btn + .btn {
+ margin-left: -1px;
+}
+
+.btn-group > .btn,
+.btn-group > .dropdown-menu,
+.btn-group > .popover {
+ font-size: 14px;
+}
+
+.btn-group > .btn-mini {
+ font-size: 10.5px;
+}
+
+.btn-group > .btn-small {
+ font-size: 11.9px;
+}
+
+.btn-group > .btn-large {
+ font-size: 17.5px;
+}
+
+.btn-group > .btn:first-child {
+ margin-left: 0;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+
+.btn-group > .btn:last-child,
+.btn-group > .dropdown-toggle {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-bottomright: 4px;
+}
+
+.btn-group > .btn.large:first-child {
+ margin-left: 0;
+ -webkit-border-bottom-left-radius: 6px;
+ border-bottom-left-radius: 6px;
+ -webkit-border-top-left-radius: 6px;
+ border-top-left-radius: 6px;
+ -moz-border-radius-bottomleft: 6px;
+ -moz-border-radius-topleft: 6px;
+}
+
+.btn-group > .btn.large:last-child,
+.btn-group > .large.dropdown-toggle {
+ -webkit-border-top-right-radius: 6px;
+ border-top-right-radius: 6px;
+ -webkit-border-bottom-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+ -moz-border-radius-topright: 6px;
+ -moz-border-radius-bottomright: 6px;
+}
+
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active {
+ z-index: 2;
+}
+
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+
+.btn-group > .btn + .dropdown-toggle {
+ *padding-top: 5px;
+ padding-right: 8px;
+ *padding-bottom: 5px;
+ padding-left: 8px;
+ -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.btn-group > .btn-mini + .dropdown-toggle {
+ *padding-top: 2px;
+ padding-right: 5px;
+ *padding-bottom: 2px;
+ padding-left: 5px;
+}
+
+.btn-group > .btn-small + .dropdown-toggle {
+ *padding-top: 5px;
+ *padding-bottom: 4px;
+}
+
+.btn-group > .btn-large + .dropdown-toggle {
+ *padding-top: 7px;
+ padding-right: 12px;
+ *padding-bottom: 7px;
+ padding-left: 12px;
+}
+
+.btn-group.open .dropdown-toggle {
+ background-image: none;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.btn-group.open .btn.dropdown-toggle {
+ background-color: #e6e6e6;
+}
+
+.btn-group.open .btn-primary.dropdown-toggle {
+ background-color: #0044cc;
+}
+
+.btn-group.open .btn-warning.dropdown-toggle {
+ background-color: #f89406;
+}
+
+.btn-group.open .btn-danger.dropdown-toggle {
+ background-color: #bd362f;
+}
+
+.btn-group.open .btn-success.dropdown-toggle {
+ background-color: #51a351;
+}
+
+.btn-group.open .btn-info.dropdown-toggle {
+ background-color: #2f96b4;
+}
+
+.btn-group.open .btn-inverse.dropdown-toggle {
+ background-color: #222222;
+}
+
+.btn .caret {
+ margin-top: 8px;
+ margin-left: 0;
+}
+
+.btn-large .caret {
+ margin-top: 6px;
+}
+
+.btn-large .caret {
+ border-top-width: 5px;
+ border-right-width: 5px;
+ border-left-width: 5px;
+}
+
+.btn-mini .caret,
+.btn-small .caret {
+ margin-top: 8px;
+}
+
+.dropup .btn-large .caret {
+ border-bottom-width: 5px;
+}
+
+.btn-primary .caret,
+.btn-warning .caret,
+.btn-danger .caret,
+.btn-info .caret,
+.btn-success .caret,
+.btn-inverse .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+}
+
+.btn-group-vertical {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+}
+
+.btn-group-vertical > .btn {
+ display: block;
+ float: none;
+ max-width: 100%;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.btn-group-vertical > .btn + .btn {
+ margin-top: -1px;
+ margin-left: 0;
+}
+
+.btn-group-vertical > .btn:first-child {
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+}
+
+.btn-group-vertical > .btn:last-child {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+
+.btn-group-vertical > .btn-large:first-child {
+ -webkit-border-radius: 6px 6px 0 0;
+ -moz-border-radius: 6px 6px 0 0;
+ border-radius: 6px 6px 0 0;
+}
+
+.btn-group-vertical > .btn-large:last-child {
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
+}
+
+.alert {
+ padding: 8px 35px 8px 14px;
+ margin-bottom: 20px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ background-color: #fcf8e3;
+ border: 1px solid #fbeed5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.alert,
+.alert h4 {
+ color: #c09853;
+}
+
+.alert h4 {
+ margin: 0;
+}
+
+.alert .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ line-height: 20px;
+}
+
+.alert-success {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+
+.alert-success h4 {
+ color: #468847;
+}
+
+.alert-danger,
+.alert-error {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #eed3d7;
+}
+
+.alert-danger h4,
+.alert-error h4 {
+ color: #b94a48;
+}
+
+.alert-info {
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+
+.alert-info h4 {
+ color: #3a87ad;
+}
+
+.alert-block {
+ padding-top: 14px;
+ padding-bottom: 14px;
+}
+
+.alert-block > p,
+.alert-block > ul {
+ margin-bottom: 0;
+}
+
+.alert-block p + p {
+ margin-top: 5px;
+}
+
+.nav {
+ margin-bottom: 20px;
+ margin-left: 0;
+ list-style: none;
+}
+
+.nav > li > a {
+ display: block;
+}
+
+.nav > li > a:hover,
+.nav > li > a:focus {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+
+.nav > li > a > img {
+ max-width: none;
+}
+
+.nav > .pull-right {
+ float: right;
+}
+
+.nav-header {
+ display: block;
+ padding: 3px 15px;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 20px;
+ color: #999999;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ text-transform: uppercase;
+}
+
+.nav li + .nav-header {
+ margin-top: 9px;
+}
+
+.nav-list {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-bottom: 0;
+}
+
+.nav-list > li > a,
+.nav-list .nav-header {
+ margin-right: -15px;
+ margin-left: -15px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+
+.nav-list > li > a {
+ padding: 3px 15px;
+}
+
+.nav-list > .active > a,
+.nav-list > .active > a:hover,
+.nav-list > .active > a:focus {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+ background-color: #0088cc;
+}
+
+.nav-list [class^="icon-"],
+.nav-list [class*=" icon-"] {
+ margin-right: 2px;
+}
+
+.nav-list .divider {
+ *width: 100%;
+ height: 1px;
+ margin: 9px 1px;
+ *margin: -5px 0 5px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
+}
+
+.nav-tabs,
+.nav-pills {
+ *zoom: 1;
+}
+
+.nav-tabs:before,
+.nav-pills:before,
+.nav-tabs:after,
+.nav-pills:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.nav-tabs:after,
+.nav-pills:after {
+ clear: both;
+}
+
+.nav-tabs > li,
+.nav-pills > li {
+ float: left;
+}
+
+.nav-tabs > li > a,
+.nav-pills > li > a {
+ padding-right: 12px;
+ padding-left: 12px;
+ margin-right: 2px;
+ line-height: 14px;
+}
+
+.nav-tabs {
+ border-bottom: 1px solid #ddd;
+}
+
+.nav-tabs > li {
+ margin-bottom: -1px;
+}
+
+.nav-tabs > li > a {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ line-height: 20px;
+ border: 1px solid transparent;
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+}
+
+.nav-tabs > li > a:hover,
+.nav-tabs > li > a:focus {
+ border-color: #eeeeee #eeeeee #dddddd;
+}
+
+.nav-tabs > .active > a,
+.nav-tabs > .active > a:hover,
+.nav-tabs > .active > a:focus {
+ color: #555555;
+ cursor: default;
+ background-color: #ffffff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+}
+
+.nav-pills > li > a {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+
+.nav-pills > .active > a,
+.nav-pills > .active > a:hover,
+.nav-pills > .active > a:focus {
+ color: #ffffff;
+ background-color: #0088cc;
+}
+
+.nav-stacked > li {
+ float: none;
+}
+
+.nav-stacked > li > a {
+ margin-right: 0;
+}
+
+.nav-tabs.nav-stacked {
+ border-bottom: 0;
+}
+
+.nav-tabs.nav-stacked > li > a {
+ border: 1px solid #ddd;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.nav-tabs.nav-stacked > li:first-child > a {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+
+.nav-tabs.nav-stacked > li:last-child > a {
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-border-radius-bottomleft: 4px;
+}
+
+.nav-tabs.nav-stacked > li > a:hover,
+.nav-tabs.nav-stacked > li > a:focus {
+ z-index: 2;
+ border-color: #ddd;
+}
+
+.nav-pills.nav-stacked > li > a {
+ margin-bottom: 3px;
+}
+
+.nav-pills.nav-stacked > li:last-child > a {
+ margin-bottom: 1px;
+}
+
+.nav-tabs .dropdown-menu {
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
+}
+
+.nav-pills .dropdown-menu {
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.nav .dropdown-toggle .caret {
+ margin-top: 6px;
+ border-top-color: #0088cc;
+ border-bottom-color: #0088cc;
+}
+
+.nav .dropdown-toggle:hover .caret,
+.nav .dropdown-toggle:focus .caret {
+ border-top-color: #005580;
+ border-bottom-color: #005580;
+}
+
+/* move down carets for tabs */
+
+.nav-tabs .dropdown-toggle .caret {
+ margin-top: 8px;
+}
+
+.nav .active .dropdown-toggle .caret {
+ border-top-color: #fff;
+ border-bottom-color: #fff;
+}
+
+.nav-tabs .active .dropdown-toggle .caret {
+ border-top-color: #555555;
+ border-bottom-color: #555555;
+}
+
+.nav > .dropdown.active > a:hover,
+.nav > .dropdown.active > a:focus {
+ cursor: pointer;
+}
+
+.nav-tabs .open .dropdown-toggle,
+.nav-pills .open .dropdown-toggle,
+.nav > li.dropdown.open.active > a:hover,
+.nav > li.dropdown.open.active > a:focus {
+ color: #ffffff;
+ background-color: #999999;
+ border-color: #999999;
+}
+
+.nav li.dropdown.open .caret,
+.nav li.dropdown.open.active .caret,
+.nav li.dropdown.open a:hover .caret,
+.nav li.dropdown.open a:focus .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+
+.tabs-stacked .open > a:hover,
+.tabs-stacked .open > a:focus {
+ border-color: #999999;
+}
+
+.tabbable {
+ *zoom: 1;
+}
+
+.tabbable:before,
+.tabbable:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.tabbable:after {
+ clear: both;
+}
+
+.tab-content {
+ overflow: auto;
+}
+
+.tabs-below > .nav-tabs,
+.tabs-right > .nav-tabs,
+.tabs-left > .nav-tabs {
+ border-bottom: 0;
+}
+
+.tab-content > .tab-pane,
+.pill-content > .pill-pane {
+ display: none;
+}
+
+.tab-content > .active,
+.pill-content > .active {
+ display: block;
+}
+
+.tabs-below > .nav-tabs {
+ border-top: 1px solid #ddd;
+}
+
+.tabs-below > .nav-tabs > li {
+ margin-top: -1px;
+ margin-bottom: 0;
+}
+
+.tabs-below > .nav-tabs > li > a {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+
+.tabs-below > .nav-tabs > li > a:hover,
+.tabs-below > .nav-tabs > li > a:focus {
+ border-top-color: #ddd;
+ border-bottom-color: transparent;
+}
+
+.tabs-below > .nav-tabs > .active > a,
+.tabs-below > .nav-tabs > .active > a:hover,
+.tabs-below > .nav-tabs > .active > a:focus {
+ border-color: transparent #ddd #ddd #ddd;
+}
+
+.tabs-left > .nav-tabs > li,
+.tabs-right > .nav-tabs > li {
+ float: none;
+}
+
+.tabs-left > .nav-tabs > li > a,
+.tabs-right > .nav-tabs > li > a {
+ min-width: 74px;
+ margin-right: 0;
+ margin-bottom: 3px;
+}
+
+.tabs-left > .nav-tabs {
+ float: left;
+ margin-right: 19px;
+ border-right: 1px solid #ddd;
+}
+
+.tabs-left > .nav-tabs > li > a {
+ margin-right: -1px;
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+
+.tabs-left > .nav-tabs > li > a:hover,
+.tabs-left > .nav-tabs > li > a:focus {
+ border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+}
+
+.tabs-left > .nav-tabs .active > a,
+.tabs-left > .nav-tabs .active > a:hover,
+.tabs-left > .nav-tabs .active > a:focus {
+ border-color: #ddd transparent #ddd #ddd;
+ *border-right-color: #ffffff;
+}
+
+.tabs-right > .nav-tabs {
+ float: right;
+ margin-left: 19px;
+ border-left: 1px solid #ddd;
+}
+
+.tabs-right > .nav-tabs > li > a {
+ margin-left: -1px;
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+
+.tabs-right > .nav-tabs > li > a:hover,
+.tabs-right > .nav-tabs > li > a:focus {
+ border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+}
+
+.tabs-right > .nav-tabs .active > a,
+.tabs-right > .nav-tabs .active > a:hover,
+.tabs-right > .nav-tabs .active > a:focus {
+ border-color: #ddd #ddd #ddd transparent;
+ *border-left-color: #ffffff;
+}
+
+.nav > .disabled > a {
+ color: #999999;
+}
+
+.nav > .disabled > a:hover,
+.nav > .disabled > a:focus {
+ text-decoration: none;
+ cursor: default;
+ background-color: transparent;
+}
+
+.navbar {
+ *position: relative;
+ *z-index: 2;
+ margin-bottom: 20px;
+ overflow: visible;
+}
+
+.navbar-inner {
+ min-height: 40px;
+ padding-right: 20px;
+ padding-left: 20px;
+ background-color: #fafafa;
+ background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
+ background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
+ background-repeat: repeat-x;
+ border: 1px solid #d4d4d4;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
+ *zoom: 1;
+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+}
+
+.navbar-inner:before,
+.navbar-inner:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.navbar-inner:after {
+ clear: both;
+}
+
+.navbar .container {
+ width: auto;
+}
+
+.nav-collapse.collapse {
+ height: auto;
+ overflow: visible;
+}
+
+.navbar .brand {
+ display: block;
+ float: left;
+ padding: 10px 20px 10px;
+ margin-left: -20px;
+ font-size: 20px;
+ font-weight: 200;
+ color: #777777;
+ text-shadow: 0 1px 0 #ffffff;
+}
+
+.navbar .brand:hover,
+.navbar .brand:focus {
+ text-decoration: none;
+}
+
+.navbar-text {
+ margin-bottom: 0;
+ line-height: 40px;
+ color: #777777;
+}
+
+.navbar-link {
+ color: #777777;
+}
+
+.navbar-link:hover,
+.navbar-link:focus {
+ color: #333333;
+}
+
+.navbar .divider-vertical {
+ height: 40px;
+ margin: 0 9px;
+ border-right: 1px solid #ffffff;
+ border-left: 1px solid #f2f2f2;
+}
+
+.navbar .btn,
+.navbar .btn-group {
+ margin-top: 5px;
+}
+
+.navbar .btn-group .btn,
+.navbar .input-prepend .btn,
+.navbar .input-append .btn,
+.navbar .input-prepend .btn-group,
+.navbar .input-append .btn-group {
+ margin-top: 0;
+}
+
+.navbar-form {
+ margin-bottom: 0;
+ *zoom: 1;
+}
+
+.navbar-form:before,
+.navbar-form:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.navbar-form:after {
+ clear: both;
+}
+
+.navbar-form input,
+.navbar-form select,
+.navbar-form .radio,
+.navbar-form .checkbox {
+ margin-top: 5px;
+}
+
+.navbar-form input,
+.navbar-form select,
+.navbar-form .btn {
+ display: inline-block;
+ margin-bottom: 0;
+}
+
+.navbar-form input[type="image"],
+.navbar-form input[type="checkbox"],
+.navbar-form input[type="radio"] {
+ margin-top: 3px;
+}
+
+.navbar-form .input-append,
+.navbar-form .input-prepend {
+ margin-top: 5px;
+ white-space: nowrap;
+}
+
+.navbar-form .input-append input,
+.navbar-form .input-prepend input {
+ margin-top: 0;
+}
+
+.navbar-search {
+ position: relative;
+ float: left;
+ margin-top: 5px;
+ margin-bottom: 0;
+}
+
+.navbar-search .search-query {
+ padding: 4px 14px;
+ margin-bottom: 0;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+}
+
+.navbar-static-top {
+ position: static;
+ margin-bottom: 0;
+}
+
+.navbar-static-top .navbar-inner {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+ margin-bottom: 0;
+}
+
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+ border-width: 0 0 1px;
+}
+
+.navbar-fixed-bottom .navbar-inner {
+ border-width: 1px 0 0;
+}
+
+.navbar-fixed-top .navbar-inner,
+.navbar-fixed-bottom .navbar-inner {
+ padding-right: 0;
+ padding-left: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+ width: 940px;
+}
+
+.navbar-fixed-top {
+ top: 0;
+}
+
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+ -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
+}
+
+.navbar-fixed-bottom {
+ bottom: 0;
+}
+
+.navbar-fixed-bottom .navbar-inner {
+ -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1);
+}
+
+.navbar .nav {
+ position: relative;
+ left: 0;
+ display: block;
+ float: left;
+ margin: 0 10px 0 0;
+}
+
+.navbar .nav.pull-right {
+ float: right;
+ margin-right: 0;
+}
+
+.navbar .nav > li {
+ float: left;
+}
+
+.navbar .nav > li > a {
+ float: none;
+ padding: 10px 15px 10px;
+ color: #777777;
+ text-decoration: none;
+ text-shadow: 0 1px 0 #ffffff;
+}
+
+.navbar .nav .dropdown-toggle .caret {
+ margin-top: 8px;
+}
+
+.navbar .nav > li > a:focus,
+.navbar .nav > li > a:hover {
+ color: #333333;
+ text-decoration: none;
+ background-color: transparent;
+}
+
+.navbar .nav > .active > a,
+.navbar .nav > .active > a:hover,
+.navbar .nav > .active > a:focus {
+ color: #555555;
+ text-decoration: none;
+ background-color: #e5e5e5;
+ -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+ -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+}
+
+.navbar .btn-navbar {
+ display: none;
+ float: right;
+ padding: 7px 10px;
+ margin-right: 5px;
+ margin-left: 5px;
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #ededed;
+ *background-color: #e5e5e5;
+ background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
+ background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
+ background-repeat: repeat-x;
+ border-color: #e5e5e5 #e5e5e5 #bfbfbf;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+}
+
+.navbar .btn-navbar:hover,
+.navbar .btn-navbar:focus,
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active,
+.navbar .btn-navbar.disabled,
+.navbar .btn-navbar[disabled] {
+ color: #ffffff;
+ background-color: #e5e5e5;
+ *background-color: #d9d9d9;
+}
+
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active {
+ background-color: #cccccc \9;
+}
+
+.navbar .btn-navbar .icon-bar {
+ display: block;
+ width: 18px;
+ height: 2px;
+ background-color: #f5f5f5;
+ -webkit-border-radius: 1px;
+ -moz-border-radius: 1px;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+
+.btn-navbar .icon-bar + .icon-bar {
+ margin-top: 3px;
+}
+
+.navbar .nav > li > .dropdown-menu:before {
+ position: absolute;
+ top: -7px;
+ left: 9px;
+ display: inline-block;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-left: 7px solid transparent;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ content: '';
+}
+
+.navbar .nav > li > .dropdown-menu:after {
+ position: absolute;
+ top: -6px;
+ left: 10px;
+ display: inline-block;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #ffffff;
+ border-left: 6px solid transparent;
+ content: '';
+}
+
+.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
+ top: auto;
+ bottom: -7px;
+ border-top: 7px solid #ccc;
+ border-bottom: 0;
+ border-top-color: rgba(0, 0, 0, 0.2);
+}
+
+.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
+ top: auto;
+ bottom: -6px;
+ border-top: 6px solid #ffffff;
+ border-bottom: 0;
+}
+
+.navbar .nav li.dropdown > a:hover .caret,
+.navbar .nav li.dropdown > a:focus .caret {
+ border-top-color: #333333;
+ border-bottom-color: #333333;
+}
+
+.navbar .nav li.dropdown.open > .dropdown-toggle,
+.navbar .nav li.dropdown.active > .dropdown-toggle,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle {
+ color: #555555;
+ background-color: #e5e5e5;
+}
+
+.navbar .nav li.dropdown > .dropdown-toggle .caret {
+ border-top-color: #777777;
+ border-bottom-color: #777777;
+}
+
+.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
+ border-top-color: #555555;
+ border-bottom-color: #555555;
+}
+
+.navbar .pull-right > li > .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+
+.navbar .pull-right > li > .dropdown-menu:before,
+.navbar .nav > li > .dropdown-menu.pull-right:before {
+ right: 12px;
+ left: auto;
+}
+
+.navbar .pull-right > li > .dropdown-menu:after,
+.navbar .nav > li > .dropdown-menu.pull-right:after {
+ right: 13px;
+ left: auto;
+}
+
+.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
+ right: 100%;
+ left: auto;
+ margin-right: -1px;
+ margin-left: 0;
+ -webkit-border-radius: 6px 0 6px 6px;
+ -moz-border-radius: 6px 0 6px 6px;
+ border-radius: 6px 0 6px 6px;
+}
+
+.navbar-inverse .navbar-inner {
+ background-color: #1b1b1b;
+ background-image: -moz-linear-gradient(top, #222222, #111111);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
+ background-image: -webkit-linear-gradient(top, #222222, #111111);
+ background-image: -o-linear-gradient(top, #222222, #111111);
+ background-image: linear-gradient(to bottom, #222222, #111111);
+ background-repeat: repeat-x;
+ border-color: #252525;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
+}
+
+.navbar-inverse .brand,
+.navbar-inverse .nav > li > a {
+ color: #999999;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+
+.navbar-inverse .brand:hover,
+.navbar-inverse .nav > li > a:hover,
+.navbar-inverse .brand:focus,
+.navbar-inverse .nav > li > a:focus {
+ color: #ffffff;
+}
+
+.navbar-inverse .brand {
+ color: #999999;
+}
+
+.navbar-inverse .navbar-text {
+ color: #999999;
+}
+
+.navbar-inverse .nav > li > a:focus,
+.navbar-inverse .nav > li > a:hover {
+ color: #ffffff;
+ background-color: transparent;
+}
+
+.navbar-inverse .nav .active > a,
+.navbar-inverse .nav .active > a:hover,
+.navbar-inverse .nav .active > a:focus {
+ color: #ffffff;
+ background-color: #111111;
+}
+
+.navbar-inverse .navbar-link {
+ color: #999999;
+}
+
+.navbar-inverse .navbar-link:hover,
+.navbar-inverse .navbar-link:focus {
+ color: #ffffff;
+}
+
+.navbar-inverse .divider-vertical {
+ border-right-color: #222222;
+ border-left-color: #111111;
+}
+
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
+ color: #ffffff;
+ background-color: #111111;
+}
+
+.navbar-inverse .nav li.dropdown > a:hover .caret,
+.navbar-inverse .nav li.dropdown > a:focus .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+}
+
+.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
+ border-top-color: #999999;
+ border-bottom-color: #999999;
+}
+
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+}
+
+.navbar-inverse .navbar-search .search-query {
+ color: #ffffff;
+ background-color: #515151;
+ border-color: #111111;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ -webkit-transition: none;
+ -moz-transition: none;
+ -o-transition: none;
+ transition: none;
+}
+
+.navbar-inverse .navbar-search .search-query:-moz-placeholder {
+ color: #cccccc;
+}
+
+.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
+ color: #cccccc;
+}
+
+.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
+ color: #cccccc;
+}
+
+.navbar-inverse .navbar-search .search-query:focus,
+.navbar-inverse .navbar-search .search-query.focused {
+ padding: 5px 15px;
+ color: #333333;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #ffffff;
+ border: 0;
+ outline: 0;
+ -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+ box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
+}
+
+.navbar-inverse .btn-navbar {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #0e0e0e;
+ *background-color: #040404;
+ background-image: -moz-linear-gradient(top, #151515, #040404);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
+ background-image: -webkit-linear-gradient(top, #151515, #040404);
+ background-image: -o-linear-gradient(top, #151515, #040404);
+ background-image: linear-gradient(to bottom, #151515, #040404);
+ background-repeat: repeat-x;
+ border-color: #040404 #040404 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
+}
+
+.navbar-inverse .btn-navbar:hover,
+.navbar-inverse .btn-navbar:focus,
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active,
+.navbar-inverse .btn-navbar.disabled,
+.navbar-inverse .btn-navbar[disabled] {
+ color: #ffffff;
+ background-color: #040404;
+ *background-color: #000000;
+}
+
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active {
+ background-color: #000000 \9;
+}
+
+.breadcrumb {
+ padding: 8px 15px;
+ margin: 0 0 20px;
+ list-style: none;
+ background-color: #f5f5f5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.breadcrumb > li {
+ display: inline-block;
+ *display: inline;
+ text-shadow: 0 1px 0 #ffffff;
+ *zoom: 1;
+}
+
+.breadcrumb > li > .divider {
+ padding: 0 5px;
+ color: #ccc;
+}
+
+.breadcrumb > .active {
+ color: #999999;
+}
+
+.pagination {
+ margin: 20px 0;
+}
+
+.pagination ul {
+ display: inline-block;
+ *display: inline;
+ margin-bottom: 0;
+ margin-left: 0;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ *zoom: 1;
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.pagination ul > li {
+ display: inline;
+}
+
+.pagination ul > li > a,
+.pagination ul > li > span {
+ float: left;
+ padding: 4px 12px;
+ line-height: 20px;
+ text-decoration: none;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-left-width: 0;
+}
+
+.pagination ul > li > a:hover,
+.pagination ul > li > a:focus,
+.pagination ul > .active > a,
+.pagination ul > .active > span {
+ background-color: #f5f5f5;
+}
+
+.pagination ul > .active > a,
+.pagination ul > .active > span {
+ color: #999999;
+ cursor: default;
+}
+
+.pagination ul > .disabled > span,
+.pagination ul > .disabled > a,
+.pagination ul > .disabled > a:hover,
+.pagination ul > .disabled > a:focus {
+ color: #999999;
+ cursor: default;
+ background-color: transparent;
+}
+
+.pagination ul > li:first-child > a,
+.pagination ul > li:first-child > span {
+ border-left-width: 1px;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+
+.pagination ul > li:last-child > a,
+.pagination ul > li:last-child > span {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-bottomright: 4px;
+}
+
+.pagination-centered {
+ text-align: center;
+}
+
+.pagination-right {
+ text-align: right;
+}
+
+.pagination-large ul > li > a,
+.pagination-large ul > li > span {
+ padding: 11px 19px;
+ font-size: 17.5px;
+}
+
+.pagination-large ul > li:first-child > a,
+.pagination-large ul > li:first-child > span {
+ -webkit-border-bottom-left-radius: 6px;
+ border-bottom-left-radius: 6px;
+ -webkit-border-top-left-radius: 6px;
+ border-top-left-radius: 6px;
+ -moz-border-radius-bottomleft: 6px;
+ -moz-border-radius-topleft: 6px;
+}
+
+.pagination-large ul > li:last-child > a,
+.pagination-large ul > li:last-child > span {
+ -webkit-border-top-right-radius: 6px;
+ border-top-right-radius: 6px;
+ -webkit-border-bottom-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+ -moz-border-radius-topright: 6px;
+ -moz-border-radius-bottomright: 6px;
+}
+
+.pagination-mini ul > li:first-child > a,
+.pagination-small ul > li:first-child > a,
+.pagination-mini ul > li:first-child > span,
+.pagination-small ul > li:first-child > span {
+ -webkit-border-bottom-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+ -webkit-border-top-left-radius: 3px;
+ border-top-left-radius: 3px;
+ -moz-border-radius-bottomleft: 3px;
+ -moz-border-radius-topleft: 3px;
+}
+
+.pagination-mini ul > li:last-child > a,
+.pagination-small ul > li:last-child > a,
+.pagination-mini ul > li:last-child > span,
+.pagination-small ul > li:last-child > span {
+ -webkit-border-top-right-radius: 3px;
+ border-top-right-radius: 3px;
+ -webkit-border-bottom-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+ -moz-border-radius-topright: 3px;
+ -moz-border-radius-bottomright: 3px;
+}
+
+.pagination-small ul > li > a,
+.pagination-small ul > li > span {
+ padding: 2px 10px;
+ font-size: 11.9px;
+}
+
+.pagination-mini ul > li > a,
+.pagination-mini ul > li > span {
+ padding: 0 6px;
+ font-size: 10.5px;
+}
+
+.pager {
+ margin: 20px 0;
+ text-align: center;
+ list-style: none;
+ *zoom: 1;
+}
+
+.pager:before,
+.pager:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.pager:after {
+ clear: both;
+}
+
+.pager li {
+ display: inline;
+}
+
+.pager li > a,
+.pager li > span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+}
+
+.pager li > a:hover,
+.pager li > a:focus {
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+
+.pager .next > a,
+.pager .next > span {
+ float: right;
+}
+
+.pager .previous > a,
+.pager .previous > span {
+ float: left;
+}
+
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+ color: #999999;
+ cursor: default;
+ background-color: #fff;
+}
+
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000000;
+}
+
+.modal-backdrop.fade {
+ opacity: 0;
+}
+
+.modal-backdrop,
+.modal-backdrop.fade.in {
+ opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+
+.modal {
+ position: fixed;
+ top: 10%;
+ left: 50%;
+ z-index: 1050;
+ width: 560px;
+ margin-left: -280px;
+ background-color: #ffffff;
+ border: 1px solid #999;
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ *border: 1px solid #999;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ outline: none;
+ -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding-box;
+ background-clip: padding-box;
+}
+
+.modal.fade {
+ top: -25%;
+ -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;
+ -moz-transition: opacity 0.3s linear, top 0.3s ease-out;
+ -o-transition: opacity 0.3s linear, top 0.3s ease-out;
+ transition: opacity 0.3s linear, top 0.3s ease-out;
+}
+
+.modal.fade.in {
+ top: 10%;
+}
+
+.modal-header {
+ padding: 9px 15px;
+ border-bottom: 1px solid #eee;
+}
+
+.modal-header .close {
+ margin-top: 2px;
+}
+
+.modal-header h3 {
+ margin: 0;
+ line-height: 30px;
+}
+
+.modal-body {
+ position: relative;
+ max-height: 400px;
+ padding: 15px;
+ overflow-y: auto;
+}
+
+.modal-form {
+ margin-bottom: 0;
+}
+
+.modal-footer {
+ padding: 14px 15px 15px;
+ margin-bottom: 0;
+ text-align: right;
+ background-color: #f5f5f5;
+ border-top: 1px solid #ddd;
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
+ *zoom: 1;
+ -webkit-box-shadow: inset 0 1px 0 #ffffff;
+ -moz-box-shadow: inset 0 1px 0 #ffffff;
+ box-shadow: inset 0 1px 0 #ffffff;
+}
+
+.modal-footer:before,
+.modal-footer:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.modal-footer:after {
+ clear: both;
+}
+
+.modal-footer .btn + .btn {
+ margin-bottom: 0;
+ margin-left: 5px;
+}
+
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+
+.modal-footer .btn-block + .btn-block {
+ margin-left: 0;
+}
+
+.tooltip {
+ position: absolute;
+ z-index: 1030;
+ display: block;
+ font-size: 11px;
+ line-height: 1.4;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ visibility: visible;
+}
+
+.tooltip.in {
+ opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+
+.tooltip.top {
+ padding: 5px 0;
+ margin-top: -3px;
+}
+
+.tooltip.right {
+ padding: 0 5px;
+ margin-left: 3px;
+}
+
+.tooltip.bottom {
+ padding: 5px 0;
+ margin-top: 3px;
+}
+
+.tooltip.left {
+ padding: 0 5px;
+ margin-left: -3px;
+}
+
+.tooltip-inner {
+ max-width: 200px;
+ padding: 8px;
+ color: #ffffff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #000000;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-top-color: #000000;
+ border-width: 5px 5px 0;
+}
+
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-right-color: #000000;
+ border-width: 5px 5px 5px 0;
+}
+
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-left-color: #000000;
+ border-width: 5px 0 5px 5px;
+}
+
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-bottom-color: #000000;
+ border-width: 0 5px 5px;
+}
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1010;
+ display: none;
+ max-width: 276px;
+ padding: 1px;
+ text-align: left;
+ white-space: normal;
+ background-color: #ffffff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+}
+
+.popover.top {
+ margin-top: -10px;
+}
+
+.popover.right {
+ margin-left: 10px;
+}
+
+.popover.bottom {
+ margin-top: 10px;
+}
+
+.popover.left {
+ margin-left: -10px;
+}
+
+.popover-title {
+ padding: 8px 14px;
+ margin: 0;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 18px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ -webkit-border-radius: 5px 5px 0 0;
+ -moz-border-radius: 5px 5px 0 0;
+ border-radius: 5px 5px 0 0;
+}
+
+.popover-title:empty {
+ display: none;
+}
+
+.popover-content {
+ padding: 9px 14px;
+}
+
+.popover .arrow,
+.popover .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+
+.popover .arrow {
+ border-width: 11px;
+}
+
+.popover .arrow:after {
+ border-width: 10px;
+ content: "";
+}
+
+.popover.top .arrow {
+ bottom: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-color: #999;
+ border-top-color: rgba(0, 0, 0, 0.25);
+ border-bottom-width: 0;
+}
+
+.popover.top .arrow:after {
+ bottom: 1px;
+ margin-left: -10px;
+ border-top-color: #ffffff;
+ border-bottom-width: 0;
+}
+
+.popover.right .arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-right-color: #999;
+ border-right-color: rgba(0, 0, 0, 0.25);
+ border-left-width: 0;
+}
+
+.popover.right .arrow:after {
+ bottom: -10px;
+ left: 1px;
+ border-right-color: #ffffff;
+ border-left-width: 0;
+}
+
+.popover.bottom .arrow {
+ top: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-bottom-color: #999;
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+ border-top-width: 0;
+}
+
+.popover.bottom .arrow:after {
+ top: 1px;
+ margin-left: -10px;
+ border-bottom-color: #ffffff;
+ border-top-width: 0;
+}
+
+.popover.left .arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-left-color: #999;
+ border-left-color: rgba(0, 0, 0, 0.25);
+ border-right-width: 0;
+}
+
+.popover.left .arrow:after {
+ right: 1px;
+ bottom: -10px;
+ border-left-color: #ffffff;
+ border-right-width: 0;
+}
+
+.thumbnails {
+ margin-left: -20px;
+ list-style: none;
+ *zoom: 1;
+}
+
+.thumbnails:before,
+.thumbnails:after {
+ display: table;
+ line-height: 0;
+ content: "";
+}
+
+.thumbnails:after {
+ clear: both;
+}
+
+.row-fluid .thumbnails {
+ margin-left: 0;
+}
+
+.thumbnails > li {
+ float: left;
+ margin-bottom: 20px;
+ margin-left: 20px;
+}
+
+.thumbnail {
+ display: block;
+ padding: 4px;
+ line-height: 20px;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+
+a.thumbnail:hover,
+a.thumbnail:focus {
+ border-color: #0088cc;
+ -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+ -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+ box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
+}
+
+.thumbnail > img {
+ display: block;
+ max-width: 100%;
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.thumbnail .caption {
+ padding: 9px;
+ color: #555555;
+}
+
+.media,
+.media-body {
+ overflow: hidden;
+ *overflow: visible;
+ zoom: 1;
+}
+
+.media,
+.media .media {
+ margin-top: 15px;
+}
+
+.media:first-child {
+ margin-top: 0;
+}
+
+.media-object {
+ display: block;
+}
+
+.media-heading {
+ margin: 0 0 5px;
+}
+
+.media > .pull-left {
+ margin-right: 10px;
+}
+
+.media > .pull-right {
+ margin-left: 10px;
+}
+
+.media-list {
+ margin-left: 0;
+ list-style: none;
+}
+
+.label,
+.badge {
+ display: inline-block;
+ padding: 2px 4px;
+ font-size: 11.844px;
+ font-weight: bold;
+ line-height: 14px;
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ white-space: nowrap;
+ vertical-align: baseline;
+ background-color: #999999;
+}
+
+.label {
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+.badge {
+ padding-right: 9px;
+ padding-left: 9px;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
+ border-radius: 9px;
+}
+
+.label:empty,
+.badge:empty {
+ display: none;
+}
+
+a.label:hover,
+a.label:focus,
+a.badge:hover,
+a.badge:focus {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+
+.label-important,
+.badge-important {
+ background-color: #b94a48;
+}
+
+.label-important[href],
+.badge-important[href] {
+ background-color: #953b39;
+}
+
+.label-warning,
+.badge-warning {
+ background-color: #f89406;
+}
+
+.label-warning[href],
+.badge-warning[href] {
+ background-color: #c67605;
+}
+
+.label-success,
+.badge-success {
+ background-color: #468847;
+}
+
+.label-success[href],
+.badge-success[href] {
+ background-color: #356635;
+}
+
+.label-info,
+.badge-info {
+ background-color: #3a87ad;
+}
+
+.label-info[href],
+.badge-info[href] {
+ background-color: #2d6987;
+}
+
+.label-inverse,
+.badge-inverse {
+ background-color: #333333;
+}
+
+.label-inverse[href],
+.badge-inverse[href] {
+ background-color: #1a1a1a;
+}
+
+.btn .label,
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+
+.btn-mini .label,
+.btn-mini .badge {
+ top: 0;
+}
+
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+@-moz-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+@-ms-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+@-o-keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+ }
+ to {
+ background-position: 40px 0;
+ }
+}
+
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+
+.progress {
+ height: 20px;
+ margin-bottom: 20px;
+ overflow: hidden;
+ background-color: #f7f7f7;
+ background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
+ background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
+ background-repeat: repeat-x;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+}
+
+.progress .bar {
+ float: left;
+ width: 0;
+ height: 100%;
+ font-size: 12px;
+ color: #ffffff;
+ text-align: center;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #0e90d2;
+ background-image: -moz-linear-gradient(top, #149bdf, #0480be);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
+ background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+ background-image: -o-linear-gradient(top, #149bdf, #0480be);
+ background-image: linear-gradient(to bottom, #149bdf, #0480be);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-transition: width 0.6s ease;
+ -moz-transition: width 0.6s ease;
+ -o-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+
+.progress .bar + .bar {
+ -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+}
+
+.progress-striped .bar {
+ background-color: #149bdf;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ -webkit-background-size: 40px 40px;
+ -moz-background-size: 40px 40px;
+ -o-background-size: 40px 40px;
+ background-size: 40px 40px;
+}
+
+.progress.active .bar {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -moz-animation: progress-bar-stripes 2s linear infinite;
+ -ms-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+
+.progress-danger .bar,
+.progress .bar-danger {
+ background-color: #dd514c;
+ background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
+}
+
+.progress-danger.progress-striped .bar,
+.progress-striped .bar-danger {
+ background-color: #ee5f5b;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-success .bar,
+.progress .bar-success {
+ background-color: #5eb95e;
+ background-image: -moz-linear-gradient(top, #62c462, #57a957);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
+ background-image: -webkit-linear-gradient(top, #62c462, #57a957);
+ background-image: -o-linear-gradient(top, #62c462, #57a957);
+ background-image: linear-gradient(to bottom, #62c462, #57a957);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
+}
+
+.progress-success.progress-striped .bar,
+.progress-striped .bar-success {
+ background-color: #62c462;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-info .bar,
+.progress .bar-info {
+ background-color: #4bb1cf;
+ background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
+}
+
+.progress-info.progress-striped .bar,
+.progress-striped .bar-info {
+ background-color: #5bc0de;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.progress-warning .bar,
+.progress .bar-warning {
+ background-color: #faa732;
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(to bottom, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+}
+
+.progress-warning.progress-striped .bar,
+.progress-striped .bar-warning {
+ background-color: #fbb450;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+
+.accordion {
+ margin-bottom: 20px;
+}
+
+.accordion-group {
+ margin-bottom: 2px;
+ border: 1px solid #e5e5e5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.accordion-heading {
+ border-bottom: 0;
+}
+
+.accordion-heading .accordion-toggle {
+ display: block;
+ padding: 8px 15px;
+}
+
+.accordion-toggle {
+ cursor: pointer;
+}
+
+.accordion-inner {
+ padding: 9px 15px;
+ border-top: 1px solid #e5e5e5;
+}
+
+.carousel {
+ position: relative;
+ margin-bottom: 20px;
+ line-height: 1;
+}
+
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+
+.carousel-inner > .item {
+ position: relative;
+ display: none;
+ -webkit-transition: 0.6s ease-in-out left;
+ -moz-transition: 0.6s ease-in-out left;
+ -o-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
+}
+
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ display: block;
+ line-height: 1;
+}
+
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ display: block;
+}
+
+.carousel-inner > .active {
+ left: 0;
+}
+
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+
+.carousel-inner > .next {
+ left: 100%;
+}
+
+.carousel-inner > .prev {
+ left: -100%;
+}
+
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+ left: 0;
+}
+
+.carousel-inner > .active.left {
+ left: -100%;
+}
+
+.carousel-inner > .active.right {
+ left: 100%;
+}
+
+.carousel-control {
+ position: absolute;
+ top: 40%;
+ left: 15px;
+ width: 40px;
+ height: 40px;
+ margin-top: -20px;
+ font-size: 60px;
+ font-weight: 100;
+ line-height: 30px;
+ color: #ffffff;
+ text-align: center;
+ background: #222222;
+ border: 3px solid #ffffff;
+ -webkit-border-radius: 23px;
+ -moz-border-radius: 23px;
+ border-radius: 23px;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+
+.carousel-control.right {
+ right: 15px;
+ left: auto;
+}
+
+.carousel-control:hover,
+.carousel-control:focus {
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+
+.carousel-indicators {
+ position: absolute;
+ top: 15px;
+ right: 15px;
+ z-index: 5;
+ margin: 0;
+ list-style: none;
+}
+
+.carousel-indicators li {
+ display: block;
+ float: left;
+ width: 10px;
+ height: 10px;
+ margin-left: 5px;
+ text-indent: -999px;
+ background-color: #ccc;
+ background-color: rgba(255, 255, 255, 0.25);
+ border-radius: 5px;
+}
+
+.carousel-indicators .active {
+ background-color: #fff;
+}
+
+.carousel-caption {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ padding: 15px;
+ background: #333333;
+ background: rgba(0, 0, 0, 0.75);
+}
+
+.carousel-caption h4,
+.carousel-caption p {
+ line-height: 20px;
+ color: #ffffff;
+}
+
+.carousel-caption h4 {
+ margin: 0 0 5px;
+}
+
+.carousel-caption p {
+ margin-bottom: 0;
+}
+
+.hero-unit {
+ padding: 60px;
+ margin-bottom: 30px;
+ font-size: 18px;
+ font-weight: 200;
+ line-height: 30px;
+ color: inherit;
+ background-color: #eeeeee;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.hero-unit h1 {
+ margin-bottom: 0;
+ font-size: 60px;
+ line-height: 1;
+ letter-spacing: -1px;
+ color: inherit;
+}
+
+.hero-unit li {
+ line-height: 30px;
+}
+
+.pull-right {
+ float: right;
+}
+
+.pull-left {
+ float: left;
+}
+
+.hide {
+ display: none;
+}
+
+.show {
+ display: block;
+}
+
+.invisible {
+ visibility: hidden;
+}
+
+.affix {
+ position: fixed;
+}
diff --git a/doc/_static/bootstrap.js b/doc/_static/bootstrap.js
new file mode 100644
index 0000000..44109f6
--- /dev/null
+++ b/doc/_static/bootstrap.js
@@ -0,0 +1,2280 @@
+/* ===================================================
+ * bootstrap-transition.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#transitions
+ * ===================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
+ * ======================================================= */
+
+ $(function () {
+
+ $.support.transition = (function () {
+
+ var transitionEnd = (function () {
+
+ var el = document.createElement('bootstrap')
+ , transEndEventNames = {
+ 'WebkitTransition' : 'webkitTransitionEnd'
+ , 'MozTransition' : 'transitionend'
+ , 'OTransition' : 'oTransitionEnd otransitionend'
+ , 'transition' : 'transitionend'
+ }
+ , name
+
+ for (name in transEndEventNames){
+ if (el.style[name] !== undefined) {
+ return transEndEventNames[name]
+ }
+ }
+
+ }())
+
+ return transitionEnd && {
+ end: transitionEnd
+ }
+
+ })()
+
+ })
+
+}(window.jQuery);/* ==========================================================
+ * bootstrap-alert.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#alerts
+ * ==========================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* ALERT CLASS DEFINITION
+ * ====================== */
+
+ var dismiss = '[data-dismiss="alert"]'
+ , Alert = function (el) {
+ $(el).on('click', dismiss, this.close)
+ }
+
+ Alert.prototype.close = function (e) {
+ var $this = $(this)
+ , selector = $this.attr('data-target')
+ , $parent
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = $(selector)
+
+ e && e.preventDefault()
+
+ $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
+
+ $parent.trigger(e = $.Event('close'))
+
+ if (e.isDefaultPrevented()) return
+
+ $parent.removeClass('in')
+
+ function removeElement() {
+ $parent
+ .trigger('closed')
+ .remove()
+ }
+
+ $.support.transition && $parent.hasClass('fade') ?
+ $parent.on($.support.transition.end, removeElement) :
+ removeElement()
+ }
+
+
+ /* ALERT PLUGIN DEFINITION
+ * ======================= */
+
+ var old = $.fn.alert
+
+ $.fn.alert = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('alert')
+ if (!data) $this.data('alert', (data = new Alert(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.alert.Constructor = Alert
+
+
+ /* ALERT NO CONFLICT
+ * ================= */
+
+ $.fn.alert.noConflict = function () {
+ $.fn.alert = old
+ return this
+ }
+
+
+ /* ALERT DATA-API
+ * ============== */
+
+ $(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
+
+}(window.jQuery);/* ============================================================
+ * bootstrap-button.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#buttons
+ * ============================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* BUTTON PUBLIC CLASS DEFINITION
+ * ============================== */
+
+ var Button = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.button.defaults, options)
+ }
+
+ Button.prototype.setState = function (state) {
+ var d = 'disabled'
+ , $el = this.$element
+ , data = $el.data()
+ , val = $el.is('input') ? 'val' : 'html'
+
+ state = state + 'Text'
+ data.resetText || $el.data('resetText', $el[val]())
+
+ $el[val](data[state] || this.options[state])
+
+ // push to event loop to allow forms to submit
+ setTimeout(function () {
+ state == 'loadingText' ?
+ $el.addClass(d).attr(d, d) :
+ $el.removeClass(d).removeAttr(d)
+ }, 0)
+ }
+
+ Button.prototype.toggle = function () {
+ var $parent = this.$element.closest('[data-toggle="buttons-radio"]')
+
+ $parent && $parent
+ .find('.active')
+ .removeClass('active')
+
+ this.$element.toggleClass('active')
+ }
+
+
+ /* BUTTON PLUGIN DEFINITION
+ * ======================== */
+
+ var old = $.fn.button
+
+ $.fn.button = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('button')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('button', (data = new Button(this, options)))
+ if (option == 'toggle') data.toggle()
+ else if (option) data.setState(option)
+ })
+ }
+
+ $.fn.button.defaults = {
+ loadingText: 'loading...'
+ }
+
+ $.fn.button.Constructor = Button
+
+
+ /* BUTTON NO CONFLICT
+ * ================== */
+
+ $.fn.button.noConflict = function () {
+ $.fn.button = old
+ return this
+ }
+
+
+ /* BUTTON DATA-API
+ * =============== */
+
+ $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {
+ var $btn = $(e.target)
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+ $btn.button('toggle')
+ })
+
+}(window.jQuery);/* ==========================================================
+ * bootstrap-carousel.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#carousel
+ * ==========================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* CAROUSEL CLASS DEFINITION
+ * ========================= */
+
+ var Carousel = function (element, options) {
+ this.$element = $(element)
+ this.$indicators = this.$element.find('.carousel-indicators')
+ this.options = options
+ this.options.pause == 'hover' && this.$element
+ .on('mouseenter', $.proxy(this.pause, this))
+ .on('mouseleave', $.proxy(this.cycle, this))
+ }
+
+ Carousel.prototype = {
+
+ cycle: function (e) {
+ if (!e) this.paused = false
+ if (this.interval) clearInterval(this.interval);
+ this.options.interval
+ && !this.paused
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+ return this
+ }
+
+ , getActiveIndex: function () {
+ this.$active = this.$element.find('.item.active')
+ this.$items = this.$active.parent().children()
+ return this.$items.index(this.$active)
+ }
+
+ , to: function (pos) {
+ var activeIndex = this.getActiveIndex()
+ , that = this
+
+ if (pos > (this.$items.length - 1) || pos < 0) return
+
+ if (this.sliding) {
+ return this.$element.one('slid', function () {
+ that.to(pos)
+ })
+ }
+
+ if (activeIndex == pos) {
+ return this.pause().cycle()
+ }
+
+ return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
+ }
+
+ , pause: function (e) {
+ if (!e) this.paused = true
+ if (this.$element.find('.next, .prev').length && $.support.transition.end) {
+ this.$element.trigger($.support.transition.end)
+ this.cycle(true)
+ }
+ clearInterval(this.interval)
+ this.interval = null
+ return this
+ }
+
+ , next: function () {
+ if (this.sliding) return
+ return this.slide('next')
+ }
+
+ , prev: function () {
+ if (this.sliding) return
+ return this.slide('prev')
+ }
+
+ , slide: function (type, next) {
+ var $active = this.$element.find('.item.active')
+ , $next = next || $active[type]()
+ , isCycling = this.interval
+ , direction = type == 'next' ? 'left' : 'right'
+ , fallback = type == 'next' ? 'first' : 'last'
+ , that = this
+ , e
+
+ this.sliding = true
+
+ isCycling && this.pause()
+
+ $next = $next.length ? $next : this.$element.find('.item')[fallback]()
+
+ e = $.Event('slide', {
+ relatedTarget: $next[0]
+ , direction: direction
+ })
+
+ if ($next.hasClass('active')) return
+
+ if (this.$indicators.length) {
+ this.$indicators.find('.active').removeClass('active')
+ this.$element.one('slid', function () {
+ var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
+ $nextIndicator && $nextIndicator.addClass('active')
+ })
+ }
+
+ if ($.support.transition && this.$element.hasClass('slide')) {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $next.addClass(type)
+ $next[0].offsetWidth // force reflow
+ $active.addClass(direction)
+ $next.addClass(direction)
+ this.$element.one($.support.transition.end, function () {
+ $next.removeClass([type, direction].join(' ')).addClass('active')
+ $active.removeClass(['active', direction].join(' '))
+ that.sliding = false
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
+ })
+ } else {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $active.removeClass('active')
+ $next.addClass('active')
+ this.sliding = false
+ this.$element.trigger('slid')
+ }
+
+ isCycling && this.cycle()
+
+ return this
+ }
+
+ }
+
+
+ /* CAROUSEL PLUGIN DEFINITION
+ * ========================== */
+
+ var old = $.fn.carousel
+
+ $.fn.carousel = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('carousel')
+ , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
+ , action = typeof option == 'string' ? option : options.slide
+ if (!data) $this.data('carousel', (data = new Carousel(this, options)))
+ if (typeof option == 'number') data.to(option)
+ else if (action) data[action]()
+ else if (options.interval) data.pause().cycle()
+ })
+ }
+
+ $.fn.carousel.defaults = {
+ interval: 5000
+ , pause: 'hover'
+ }
+
+ $.fn.carousel.Constructor = Carousel
+
+
+ /* CAROUSEL NO CONFLICT
+ * ==================== */
+
+ $.fn.carousel.noConflict = function () {
+ $.fn.carousel = old
+ return this
+ }
+
+ /* CAROUSEL DATA-API
+ * ================= */
+
+ $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
+ var $this = $(this), href
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ , options = $.extend({}, $target.data(), $this.data())
+ , slideIndex
+
+ $target.carousel(options)
+
+ if (slideIndex = $this.attr('data-slide-to')) {
+ $target.data('carousel').pause().to(slideIndex).cycle()
+ }
+
+ e.preventDefault()
+ })
+
+}(window.jQuery);/* =============================================================
+ * bootstrap-collapse.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#collapse
+ * =============================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* COLLAPSE PUBLIC CLASS DEFINITION
+ * ================================ */
+
+ var Collapse = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.collapse.defaults, options)
+
+ if (this.options.parent) {
+ this.$parent = $(this.options.parent)
+ }
+
+ this.options.toggle && this.toggle()
+ }
+
+ Collapse.prototype = {
+
+ constructor: Collapse
+
+ , dimension: function () {
+ var hasWidth = this.$element.hasClass('width')
+ return hasWidth ? 'width' : 'height'
+ }
+
+ , show: function () {
+ var dimension
+ , scroll
+ , actives
+ , hasData
+
+ if (this.transitioning || this.$element.hasClass('in')) return
+
+ dimension = this.dimension()
+ scroll = $.camelCase(['scroll', dimension].join('-'))
+ actives = this.$parent && this.$parent.find('> .accordion-group > .in')
+
+ if (actives && actives.length) {
+ hasData = actives.data('collapse')
+ if (hasData && hasData.transitioning) return
+ actives.collapse('hide')
+ hasData || actives.data('collapse', null)
+ }
+
+ this.$element[dimension](0)
+ this.transition('addClass', $.Event('show'), 'shown')
+ $.support.transition && this.$element[dimension](this.$element[0][scroll])
+ }
+
+ , hide: function () {
+ var dimension
+ if (this.transitioning || !this.$element.hasClass('in')) return
+ dimension = this.dimension()
+ this.reset(this.$element[dimension]())
+ this.transition('removeClass', $.Event('hide'), 'hidden')
+ this.$element[dimension](0)
+ }
+
+ , reset: function (size) {
+ var dimension = this.dimension()
+
+ this.$element
+ .removeClass('collapse')
+ [dimension](size || 'auto')
+ [0].offsetWidth
+
+ this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
+
+ return this
+ }
+
+ , transition: function (method, startEvent, completeEvent) {
+ var that = this
+ , complete = function () {
+ if (startEvent.type == 'show') that.reset()
+ that.transitioning = 0
+ that.$element.trigger(completeEvent)
+ }
+
+ this.$element.trigger(startEvent)
+
+ if (startEvent.isDefaultPrevented()) return
+
+ this.transitioning = 1
+
+ this.$element[method]('in')
+
+ $.support.transition && this.$element.hasClass('collapse') ?
+ this.$element.one($.support.transition.end, complete) :
+ complete()
+ }
+
+ , toggle: function () {
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
+ }
+
+ }
+
+
+ /* COLLAPSE PLUGIN DEFINITION
+ * ========================== */
+
+ var old = $.fn.collapse
+
+ $.fn.collapse = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('collapse')
+ , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
+ if (!data) $this.data('collapse', (data = new Collapse(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.collapse.defaults = {
+ toggle: true
+ }
+
+ $.fn.collapse.Constructor = Collapse
+
+
+ /* COLLAPSE NO CONFLICT
+ * ==================== */
+
+ $.fn.collapse.noConflict = function () {
+ $.fn.collapse = old
+ return this
+ }
+
+
+ /* COLLAPSE DATA-API
+ * ================= */
+
+ $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
+ var $this = $(this), href
+ , target = $this.attr('data-target')
+ || e.preventDefault()
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
+ $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
+ $(target).collapse(option)
+ })
+
+}(window.jQuery);/* ============================================================
+ * bootstrap-dropdown.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#dropdowns
+ * ============================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ============================================================ */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* DROPDOWN CLASS DEFINITION
+ * ========================= */
+
+ var toggle = '[data-toggle=dropdown]'
+ , Dropdown = function (element) {
+ var $el = $(element).on('click.dropdown.data-api', this.toggle)
+ $('html').on('click.dropdown.data-api', function () {
+ $el.parent().removeClass('open')
+ })
+ }
+
+ Dropdown.prototype = {
+
+ constructor: Dropdown
+
+ , toggle: function (e) {
+ var $this = $(this)
+ , $parent
+ , isActive
+
+ if ($this.is('.disabled, :disabled')) return
+
+ $parent = getParent($this)
+
+ isActive = $parent.hasClass('open')
+
+ clearMenus()
+
+ if (!isActive) {
+ if ('ontouchstart' in document.documentElement) {
+ // if mobile we we use a backdrop because click events don't delegate
+ $('<div class="dropdown-backdrop"/>').insertBefore($(this)).on('click', clearMenus)
+ }
+ $parent.toggleClass('open')
+ }
+
+ $this.focus()
+
+ return false
+ }
+
+ , keydown: function (e) {
+ var $this
+ , $items
+ , $active
+ , $parent
+ , isActive
+ , index
+
+ if (!/(38|40|27)/.test(e.keyCode)) return
+
+ $this = $(this)
+
+ e.preventDefault()
+ e.stopPropagation()
+
+ if ($this.is('.disabled, :disabled')) return
+
+ $parent = getParent($this)
+
+ isActive = $parent.hasClass('open')
+
+ if (!isActive || (isActive && e.keyCode == 27)) {
+ if (e.which == 27) $parent.find(toggle).focus()
+ return $this.click()
+ }
+
+ $items = $('[role=menu] li:not(.divider):visible a', $parent)
+
+ if (!$items.length) return
+
+ index = $items.index($items.filter(':focus'))
+
+ if (e.keyCode == 38 && index > 0) index-- // up
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
+ if (!~index) index = 0
+
+ $items
+ .eq(index)
+ .focus()
+ }
+
+ }
+
+ function clearMenus() {
+ $('.dropdown-backdrop').remove()
+ $(toggle).each(function () {
+ getParent($(this)).removeClass('open')
+ })
+ }
+
+ function getParent($this) {
+ var selector = $this.attr('data-target')
+ , $parent
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ $parent = selector && $(selector)
+
+ if (!$parent || !$parent.length) $parent = $this.parent()
+
+ return $parent
+ }
+
+
+ /* DROPDOWN PLUGIN DEFINITION
+ * ========================== */
+
+ var old = $.fn.dropdown
+
+ $.fn.dropdown = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('dropdown')
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+ if (typeof option == 'string') data[option].call($this)
+ })
+ }
+
+ $.fn.dropdown.Constructor = Dropdown
+
+
+ /* DROPDOWN NO CONFLICT
+ * ==================== */
+
+ $.fn.dropdown.noConflict = function () {
+ $.fn.dropdown = old
+ return this
+ }
+
+
+ /* APPLY TO STANDARD DROPDOWN ELEMENTS
+ * =================================== */
+
+ $(document)
+ .on('click.dropdown.data-api', clearMenus)
+ .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+ .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
+ .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
+
+}(window.jQuery);
+/* =========================================================
+ * bootstrap-modal.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#modals
+ * =========================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ========================================================= */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* MODAL CLASS DEFINITION
+ * ====================== */
+
+ var Modal = function (element, options) {
+ this.options = options
+ this.$element = $(element)
+ .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
+ this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
+ }
+
+ Modal.prototype = {
+
+ constructor: Modal
+
+ , toggle: function () {
+ return this[!this.isShown ? 'show' : 'hide']()
+ }
+
+ , show: function () {
+ var that = this
+ , e = $.Event('show')
+
+ this.$element.trigger(e)
+
+ if (this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = true
+
+ this.escape()
+
+ this.backdrop(function () {
+ var transition = $.support.transition && that.$element.hasClass('fade')
+
+ if (!that.$element.parent().length) {
+ that.$element.appendTo(document.body) //don't move modals dom position
+ }
+
+ that.$element.show()
+
+ if (transition) {
+ that.$element[0].offsetWidth // force reflow
+ }
+
+ that.$element
+ .addClass('in')
+ .attr('aria-hidden', false)
+
+ that.enforceFocus()
+
+ transition ?
+ that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
+ that.$element.focus().trigger('shown')
+
+ })
+ }
+
+ , hide: function (e) {
+ e && e.preventDefault()
+
+ var that = this
+
+ e = $.Event('hide')
+
+ this.$element.trigger(e)
+
+ if (!this.isShown || e.isDefaultPrevented()) return
+
+ this.isShown = false
+
+ this.escape()
+
+ $(document).off('focusin.modal')
+
+ this.$element
+ .removeClass('in')
+ .attr('aria-hidden', true)
+
+ $.support.transition && this.$element.hasClass('fade') ?
+ this.hideWithTransition() :
+ this.hideModal()
+ }
+
+ , enforceFocus: function () {
+ var that = this
+ $(document).on('focusin.modal', function (e) {
+ if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
+ that.$element.focus()
+ }
+ })
+ }
+
+ , escape: function () {
+ var that = this
+ if (this.isShown && this.options.keyboard) {
+ this.$element.on('keyup.dismiss.modal', function ( e ) {
+ e.which == 27 && that.hide()
+ })
+ } else if (!this.isShown) {
+ this.$element.off('keyup.dismiss.modal')
+ }
+ }
+
+ , hideWithTransition: function () {
+ var that = this
+ , timeout = setTimeout(function () {
+ that.$element.off($.support.transition.end)
+ that.hideModal()
+ }, 500)
+
+ this.$element.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ that.hideModal()
+ })
+ }
+
+ , hideModal: function () {
+ var that = this
+ this.$element.hide()
+ this.backdrop(function () {
+ that.removeBackdrop()
+ that.$element.trigger('hidden')
+ })
+ }
+
+ , removeBackdrop: function () {
+ this.$backdrop && this.$backdrop.remove()
+ this.$backdrop = null
+ }
+
+ , backdrop: function (callback) {
+ var that = this
+ , animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+ if (this.isShown && this.options.backdrop) {
+ var doAnimate = $.support.transition && animate
+
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+ .appendTo(document.body)
+
+ this.$backdrop.click(
+ this.options.backdrop == 'static' ?
+ $.proxy(this.$element[0].focus, this.$element[0])
+ : $.proxy(this.hide, this)
+ )
+
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+ this.$backdrop.addClass('in')
+
+ if (!callback) return
+
+ doAnimate ?
+ this.$backdrop.one($.support.transition.end, callback) :
+ callback()
+
+ } else if (!this.isShown && this.$backdrop) {
+ this.$backdrop.removeClass('in')
+
+ $.support.transition && this.$element.hasClass('fade')?
+ this.$backdrop.one($.support.transition.end, callback) :
+ callback()
+
+ } else if (callback) {
+ callback()
+ }
+ }
+ }
+
+
+ /* MODAL PLUGIN DEFINITION
+ * ======================= */
+
+ var old = $.fn.modal
+
+ $.fn.modal = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('modal')
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
+ if (!data) $this.data('modal', (data = new Modal(this, options)))
+ if (typeof option == 'string') data[option]()
+ else if (options.show) data.show()
+ })
+ }
+
+ $.fn.modal.defaults = {
+ backdrop: true
+ , keyboard: true
+ , show: true
+ }
+
+ $.fn.modal.Constructor = Modal
+
+
+ /* MODAL NO CONFLICT
+ * ================= */
+
+ $.fn.modal.noConflict = function () {
+ $.fn.modal = old
+ return this
+ }
+
+
+ /* MODAL DATA-API
+ * ============== */
+
+ $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
+ var $this = $(this)
+ , href = $this.attr('href')
+ , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
+ , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())
+
+ e.preventDefault()
+
+ $target
+ .modal(option)
+ .one('hide', function () {
+ $this.focus()
+ })
+ })
+
+}(window.jQuery);
+/* ===========================================================
+ * bootstrap-tooltip.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#tooltips
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ===========================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* TOOLTIP PUBLIC CLASS DEFINITION
+ * =============================== */
+
+ var Tooltip = function (element, options) {
+ this.init('tooltip', element, options)
+ }
+
+ Tooltip.prototype = {
+
+ constructor: Tooltip
+
+ , init: function (type, element, options) {
+ var eventIn
+ , eventOut
+ , triggers
+ , trigger
+ , i
+
+ this.type = type
+ this.$element = $(element)
+ this.options = this.getOptions(options)
+ this.enabled = true
+
+ triggers = this.options.trigger.split(' ')
+
+ for (i = triggers.length; i--;) {
+ trigger = triggers[i]
+ if (trigger == 'click') {
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+ } else if (trigger != 'manual') {
+ eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
+ eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+ }
+ }
+
+ this.options.selector ?
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+ this.fixTitle()
+ }
+
+ , getOptions: function (options) {
+ options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
+
+ if (options.delay && typeof options.delay == 'number') {
+ options.delay = {
+ show: options.delay
+ , hide: options.delay
+ }
+ }
+
+ return options
+ }
+
+ , enter: function (e) {
+ var defaults = $.fn[this.type].defaults
+ , options = {}
+ , self
+
+ this._options && $.each(this._options, function (key, value) {
+ if (defaults[key] != value) options[key] = value
+ }, this)
+
+ self = $(e.currentTarget)[this.type](options).data(this.type)
+
+ if (!self.options.delay || !self.options.delay.show) return self.show()
+
+ clearTimeout(this.timeout)
+ self.hoverState = 'in'
+ this.timeout = setTimeout(function() {
+ if (self.hoverState == 'in') self.show()
+ }, self.options.delay.show)
+ }
+
+ , leave: function (e) {
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
+
+ if (this.timeout) clearTimeout(this.timeout)
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+ self.hoverState = 'out'
+ this.timeout = setTimeout(function() {
+ if (self.hoverState == 'out') self.hide()
+ }, self.options.delay.hide)
+ }
+
+ , show: function () {
+ var $tip
+ , pos
+ , actualWidth
+ , actualHeight
+ , placement
+ , tp
+ , e = $.Event('show')
+
+ if (this.hasContent() && this.enabled) {
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+ $tip = this.tip()
+ this.setContent()
+
+ if (this.options.animation) {
+ $tip.addClass('fade')
+ }
+
+ placement = typeof this.options.placement == 'function' ?
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
+ this.options.placement
+
+ $tip
+ .detach()
+ .css({ top: 0, left: 0, display: 'block' })
+
+ this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
+
+ pos = this.getPosition()
+
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+
+ switch (placement) {
+ case 'bottom':
+ tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
+ break
+ case 'top':
+ tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
+ break
+ case 'left':
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
+ break
+ case 'right':
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
+ break
+ }
+
+ this.applyPlacement(tp, placement)
+ this.$element.trigger('shown')
+ }
+ }
+
+ , applyPlacement: function(offset, placement){
+ var $tip = this.tip()
+ , width = $tip[0].offsetWidth
+ , height = $tip[0].offsetHeight
+ , actualWidth
+ , actualHeight
+ , delta
+ , replace
+
+ $tip
+ .offset(offset)
+ .addClass(placement)
+ .addClass('in')
+
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+
+ if (placement == 'top' && actualHeight != height) {
+ offset.top = offset.top + height - actualHeight
+ replace = true
+ }
+
+ if (placement == 'bottom' || placement == 'top') {
+ delta = 0
+
+ if (offset.left < 0){
+ delta = offset.left * -2
+ offset.left = 0
+ $tip.offset(offset)
+ actualWidth = $tip[0].offsetWidth
+ actualHeight = $tip[0].offsetHeight
+ }
+
+ this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
+ } else {
+ this.replaceArrow(actualHeight - height, actualHeight, 'top')
+ }
+
+ if (replace) $tip.offset(offset)
+ }
+
+ , replaceArrow: function(delta, dimension, position){
+ this
+ .arrow()
+ .css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
+ }
+
+ , setContent: function () {
+ var $tip = this.tip()
+ , title = this.getTitle()
+
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+ $tip.removeClass('fade in top bottom left right')
+ }
+
+ , hide: function () {
+ var that = this
+ , $tip = this.tip()
+ , e = $.Event('hide')
+
+ this.$element.trigger(e)
+ if (e.isDefaultPrevented()) return
+
+ $tip.removeClass('in')
+
+ function removeWithAnimation() {
+ var timeout = setTimeout(function () {
+ $tip.off($.support.transition.end).detach()
+ }, 500)
+
+ $tip.one($.support.transition.end, function () {
+ clearTimeout(timeout)
+ $tip.detach()
+ })
+ }
+
+ $.support.transition && this.$tip.hasClass('fade') ?
+ removeWithAnimation() :
+ $tip.detach()
+
+ this.$element.trigger('hidden')
+
+ return this
+ }
+
+ , fixTitle: function () {
+ var $e = this.$element
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+ $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+ }
+ }
+
+ , hasContent: function () {
+ return this.getTitle()
+ }
+
+ , getPosition: function () {
+ var el = this.$element[0]
+ return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
+ width: el.offsetWidth
+ , height: el.offsetHeight
+ }, this.$element.offset())
+ }
+
+ , getTitle: function () {
+ var title
+ , $e = this.$element
+ , o = this.options
+
+ title = $e.attr('data-original-title')
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
+
+ return title
+ }
+
+ , tip: function () {
+ return this.$tip = this.$tip || $(this.options.template)
+ }
+
+ , arrow: function(){
+ return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
+ }
+
+ , validate: function () {
+ if (!this.$element[0].parentNode) {
+ this.hide()
+ this.$element = null
+ this.options = null
+ }
+ }
+
+ , enable: function () {
+ this.enabled = true
+ }
+
+ , disable: function () {
+ this.enabled = false
+ }
+
+ , toggleEnabled: function () {
+ this.enabled = !this.enabled
+ }
+
+ , toggle: function (e) {
+ var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
+ self.tip().hasClass('in') ? self.hide() : self.show()
+ }
+
+ , destroy: function () {
+ this.hide().$element.off('.' + this.type).removeData(this.type)
+ }
+
+ }
+
+
+ /* TOOLTIP PLUGIN DEFINITION
+ * ========================= */
+
+ var old = $.fn.tooltip
+
+ $.fn.tooltip = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tooltip')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tooltip.Constructor = Tooltip
+
+ $.fn.tooltip.defaults = {
+ animation: true
+ , placement: 'top'
+ , selector: false
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
+ , trigger: 'hover focus'
+ , title: ''
+ , delay: 0
+ , html: false
+ , container: false
+ }
+
+
+ /* TOOLTIP NO CONFLICT
+ * =================== */
+
+ $.fn.tooltip.noConflict = function () {
+ $.fn.tooltip = old
+ return this
+ }
+
+}(window.jQuery);
+/* ===========================================================
+ * bootstrap-popover.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#popovers
+ * ===========================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * =========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* POPOVER PUBLIC CLASS DEFINITION
+ * =============================== */
+
+ var Popover = function (element, options) {
+ this.init('popover', element, options)
+ }
+
+
+ /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
+ ========================================== */
+
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
+
+ constructor: Popover
+
+ , setContent: function () {
+ var $tip = this.tip()
+ , title = this.getTitle()
+ , content = this.getContent()
+
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
+ $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
+
+ $tip.removeClass('fade top bottom left right in')
+ }
+
+ , hasContent: function () {
+ return this.getTitle() || this.getContent()
+ }
+
+ , getContent: function () {
+ var content
+ , $e = this.$element
+ , o = this.options
+
+ content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
+ || $e.attr('data-content')
+
+ return content
+ }
+
+ , tip: function () {
+ if (!this.$tip) {
+ this.$tip = $(this.options.template)
+ }
+ return this.$tip
+ }
+
+ , destroy: function () {
+ this.hide().$element.off('.' + this.type).removeData(this.type)
+ }
+
+ })
+
+
+ /* POPOVER PLUGIN DEFINITION
+ * ======================= */
+
+ var old = $.fn.popover
+
+ $.fn.popover = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('popover')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('popover', (data = new Popover(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.popover.Constructor = Popover
+
+ $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
+ placement: 'right'
+ , trigger: 'click'
+ , content: ''
+ , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
+ })
+
+
+ /* POPOVER NO CONFLICT
+ * =================== */
+
+ $.fn.popover.noConflict = function () {
+ $.fn.popover = old
+ return this
+ }
+
+}(window.jQuery);
+/* =============================================================
+ * bootstrap-scrollspy.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#scrollspy
+ * =============================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ============================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* SCROLLSPY CLASS DEFINITION
+ * ========================== */
+
+ function ScrollSpy(element, options) {
+ var process = $.proxy(this.process, this)
+ , $element = $(element).is('body') ? $(window) : $(element)
+ , href
+ this.options = $.extend({}, $.fn.scrollspy.defaults, options)
+ this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
+ this.selector = (this.options.target
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+ || '') + ' .nav li > a'
+ this.$body = $('body')
+ this.refresh()
+ this.process()
+ }
+
+ ScrollSpy.prototype = {
+
+ constructor: ScrollSpy
+
+ , refresh: function () {
+ var self = this
+ , $targets
+
+ this.offsets = $([])
+ this.targets = $([])
+
+ $targets = this.$body
+ .find(this.selector)
+ .map(function () {
+ var $el = $(this)
+ , href = $el.data('target') || $el.attr('href')
+ , $href = /^#\w/.test(href) && $(href)
+ return ( $href
+ && $href.length
+ && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
+ })
+ .sort(function (a, b) { return a[0] - b[0] })
+ .each(function () {
+ self.offsets.push(this[0])
+ self.targets.push(this[1])
+ })
+ }
+
+ , process: function () {
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
+ , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
+ , maxScroll = scrollHeight - this.$scrollElement.height()
+ , offsets = this.offsets
+ , targets = this.targets
+ , activeTarget = this.activeTarget
+ , i
+
+ if (scrollTop >= maxScroll) {
+ return activeTarget != (i = targets.last()[0])
+ && this.activate ( i )
+ }
+
+ for (i = offsets.length; i--;) {
+ activeTarget != targets[i]
+ && scrollTop >= offsets[i]
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
+ && this.activate( targets[i] )
+ }
+ }
+
+ , activate: function (target) {
+ var active
+ , selector
+
+ this.activeTarget = target
+
+ $(this.selector)
+ .parent('.active')
+ .removeClass('active')
+
+ selector = this.selector
+ + '[data-target="' + target + '"],'
+ + this.selector + '[href="' + target + '"]'
+
+ active = $(selector)
+ .parent('li')
+ .addClass('active')
+
+ if (active.parent('.dropdown-menu').length) {
+ active = active.closest('li.dropdown').addClass('active')
+ }
+
+ active.trigger('activate')
+ }
+
+ }
+
+
+ /* SCROLLSPY PLUGIN DEFINITION
+ * =========================== */
+
+ var old = $.fn.scrollspy
+
+ $.fn.scrollspy = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('scrollspy')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.scrollspy.Constructor = ScrollSpy
+
+ $.fn.scrollspy.defaults = {
+ offset: 10
+ }
+
+
+ /* SCROLLSPY NO CONFLICT
+ * ===================== */
+
+ $.fn.scrollspy.noConflict = function () {
+ $.fn.scrollspy = old
+ return this
+ }
+
+
+ /* SCROLLSPY DATA-API
+ * ================== */
+
+ $(window).on('load', function () {
+ $('[data-spy="scroll"]').each(function () {
+ var $spy = $(this)
+ $spy.scrollspy($spy.data())
+ })
+ })
+
+}(window.jQuery);/* ========================================================
+ * bootstrap-tab.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#tabs
+ * ========================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ======================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* TAB CLASS DEFINITION
+ * ==================== */
+
+ var Tab = function (element) {
+ this.element = $(element)
+ }
+
+ Tab.prototype = {
+
+ constructor: Tab
+
+ , show: function () {
+ var $this = this.element
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
+ , selector = $this.attr('data-target')
+ , previous
+ , $target
+ , e
+
+ if (!selector) {
+ selector = $this.attr('href')
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+ }
+
+ if ( $this.parent('li').hasClass('active') ) return
+
+ previous = $ul.find('.active:last a')[0]
+
+ e = $.Event('show', {
+ relatedTarget: previous
+ })
+
+ $this.trigger(e)
+
+ if (e.isDefaultPrevented()) return
+
+ $target = $(selector)
+
+ this.activate($this.parent('li'), $ul)
+ this.activate($target, $target.parent(), function () {
+ $this.trigger({
+ type: 'shown'
+ , relatedTarget: previous
+ })
+ })
+ }
+
+ , activate: function ( element, container, callback) {
+ var $active = container.find('> .active')
+ , transition = callback
+ && $.support.transition
+ && $active.hasClass('fade')
+
+ function next() {
+ $active
+ .removeClass('active')
+ .find('> .dropdown-menu > .active')
+ .removeClass('active')
+
+ element.addClass('active')
+
+ if (transition) {
+ element[0].offsetWidth // reflow for transition
+ element.addClass('in')
+ } else {
+ element.removeClass('fade')
+ }
+
+ if ( element.parent('.dropdown-menu') ) {
+ element.closest('li.dropdown').addClass('active')
+ }
+
+ callback && callback()
+ }
+
+ transition ?
+ $active.one($.support.transition.end, next) :
+ next()
+
+ $active.removeClass('in')
+ }
+ }
+
+
+ /* TAB PLUGIN DEFINITION
+ * ===================== */
+
+ var old = $.fn.tab
+
+ $.fn.tab = function ( option ) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('tab')
+ if (!data) $this.data('tab', (data = new Tab(this)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.tab.Constructor = Tab
+
+
+ /* TAB NO CONFLICT
+ * =============== */
+
+ $.fn.tab.noConflict = function () {
+ $.fn.tab = old
+ return this
+ }
+
+
+ /* TAB DATA-API
+ * ============ */
+
+ $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+ e.preventDefault()
+ $(this).tab('show')
+ })
+
+}(window.jQuery);/* =============================================================
+ * bootstrap-typeahead.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#typeahead
+ * =============================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ============================================================ */
+
+
+!function($){
+
+ "use strict"; // jshint ;_;
+
+
+ /* TYPEAHEAD PUBLIC CLASS DEFINITION
+ * ================================= */
+
+ var Typeahead = function (element, options) {
+ this.$element = $(element)
+ this.options = $.extend({}, $.fn.typeahead.defaults, options)
+ this.matcher = this.options.matcher || this.matcher
+ this.sorter = this.options.sorter || this.sorter
+ this.highlighter = this.options.highlighter || this.highlighter
+ this.updater = this.options.updater || this.updater
+ this.source = this.options.source
+ this.$menu = $(this.options.menu)
+ this.shown = false
+ this.listen()
+ }
+
+ Typeahead.prototype = {
+
+ constructor: Typeahead
+
+ , select: function () {
+ var val = this.$menu.find('.active').attr('data-value')
+ this.$element
+ .val(this.updater(val))
+ .change()
+ return this.hide()
+ }
+
+ , updater: function (item) {
+ return item
+ }
+
+ , show: function () {
+ var pos = $.extend({}, this.$element.position(), {
+ height: this.$element[0].offsetHeight
+ })
+
+ this.$menu
+ .insertAfter(this.$element)
+ .css({
+ top: pos.top + pos.height
+ , left: pos.left
+ })
+ .show()
+
+ this.shown = true
+ return this
+ }
+
+ , hide: function () {
+ this.$menu.hide()
+ this.shown = false
+ return this
+ }
+
+ , lookup: function (event) {
+ var items
+
+ this.query = this.$element.val()
+
+ if (!this.query || this.query.length < this.options.minLength) {
+ return this.shown ? this.hide() : this
+ }
+
+ items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
+
+ return items ? this.process(items) : this
+ }
+
+ , process: function (items) {
+ var that = this
+
+ items = $.grep(items, function (item) {
+ return that.matcher(item)
+ })
+
+ items = this.sorter(items)
+
+ if (!items.length) {
+ return this.shown ? this.hide() : this
+ }
+
+ return this.render(items.slice(0, this.options.items)).show()
+ }
+
+ , matcher: function (item) {
+ return ~item.toLowerCase().indexOf(this.query.toLowerCase())
+ }
+
+ , sorter: function (items) {
+ var beginswith = []
+ , caseSensitive = []
+ , caseInsensitive = []
+ , item
+
+ while (item = items.shift()) {
+ if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
+ else if (~item.indexOf(this.query)) caseSensitive.push(item)
+ else caseInsensitive.push(item)
+ }
+
+ return beginswith.concat(caseSensitive, caseInsensitive)
+ }
+
+ , highlighter: function (item) {
+ var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
+ return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
+ return '<strong>' + match + '</strong>'
+ })
+ }
+
+ , render: function (items) {
+ var that = this
+
+ items = $(items).map(function (i, item) {
+ i = $(that.options.item).attr('data-value', item)
+ i.find('a').html(that.highlighter(item))
+ return i[0]
+ })
+
+ items.first().addClass('active')
+ this.$menu.html(items)
+ return this
+ }
+
+ , next: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , next = active.next()
+
+ if (!next.length) {
+ next = $(this.$menu.find('li')[0])
+ }
+
+ next.addClass('active')
+ }
+
+ , prev: function (event) {
+ var active = this.$menu.find('.active').removeClass('active')
+ , prev = active.prev()
+
+ if (!prev.length) {
+ prev = this.$menu.find('li').last()
+ }
+
+ prev.addClass('active')
+ }
+
+ , listen: function () {
+ this.$element
+ .on('focus', $.proxy(this.focus, this))
+ .on('blur', $.proxy(this.blur, this))
+ .on('keypress', $.proxy(this.keypress, this))
+ .on('keyup', $.proxy(this.keyup, this))
+
+ if (this.eventSupported('keydown')) {
+ this.$element.on('keydown', $.proxy(this.keydown, this))
+ }
+
+ this.$menu
+ .on('click', $.proxy(this.click, this))
+ .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
+ .on('mouseleave', 'li', $.proxy(this.mouseleave, this))
+ }
+
+ , eventSupported: function(eventName) {
+ var isSupported = eventName in this.$element
+ if (!isSupported) {
+ this.$element.setAttribute(eventName, 'return;')
+ isSupported = typeof this.$element[eventName] === 'function'
+ }
+ return isSupported
+ }
+
+ , move: function (e) {
+ if (!this.shown) return
+
+ switch(e.keyCode) {
+ case 9: // tab
+ case 13: // enter
+ case 27: // escape
+ e.preventDefault()
+ break
+
+ case 38: // up arrow
+ e.preventDefault()
+ this.prev()
+ break
+
+ case 40: // down arrow
+ e.preventDefault()
+ this.next()
+ break
+ }
+
+ e.stopPropagation()
+ }
+
+ , keydown: function (e) {
+ this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27])
+ this.move(e)
+ }
+
+ , keypress: function (e) {
+ if (this.suppressKeyPressRepeat) return
+ this.move(e)
+ }
+
+ , keyup: function (e) {
+ switch(e.keyCode) {
+ case 40: // down arrow
+ case 38: // up arrow
+ case 16: // shift
+ case 17: // ctrl
+ case 18: // alt
+ break
+
+ case 9: // tab
+ case 13: // enter
+ if (!this.shown) return
+ this.select()
+ break
+
+ case 27: // escape
+ if (!this.shown) return
+ this.hide()
+ break
+
+ default:
+ this.lookup()
+ }
+
+ e.stopPropagation()
+ e.preventDefault()
+ }
+
+ , focus: function (e) {
+ this.focused = true
+ }
+
+ , blur: function (e) {
+ this.focused = false
+ if (!this.mousedover && this.shown) this.hide()
+ }
+
+ , click: function (e) {
+ e.stopPropagation()
+ e.preventDefault()
+ this.select()
+ this.$element.focus()
+ }
+
+ , mouseenter: function (e) {
+ this.mousedover = true
+ this.$menu.find('.active').removeClass('active')
+ $(e.currentTarget).addClass('active')
+ }
+
+ , mouseleave: function (e) {
+ this.mousedover = false
+ if (!this.focused && this.shown) this.hide()
+ }
+
+ }
+
+
+ /* TYPEAHEAD PLUGIN DEFINITION
+ * =========================== */
+
+ var old = $.fn.typeahead
+
+ $.fn.typeahead = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('typeahead')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.typeahead.defaults = {
+ source: []
+ , items: 8
+ , menu: '<ul class="typeahead dropdown-menu"></ul>'
+ , item: '<li><a href="#"></a></li>'
+ , minLength: 1
+ }
+
+ $.fn.typeahead.Constructor = Typeahead
+
+
+ /* TYPEAHEAD NO CONFLICT
+ * =================== */
+
+ $.fn.typeahead.noConflict = function () {
+ $.fn.typeahead = old
+ return this
+ }
+
+
+ /* TYPEAHEAD DATA-API
+ * ================== */
+
+ $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
+ var $this = $(this)
+ if ($this.data('typeahead')) return
+ $this.typeahead($this.data())
+ })
+
+}(window.jQuery);
+/* ==========================================================
+ * bootstrap-affix.js v2.3.2
+ * http://getbootstrap.com/2.3.2/javascript.html#affix
+ * ==========================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * 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.
+ * ========================================================== */
+
+
+!function ($) {
+
+ "use strict"; // jshint ;_;
+
+
+ /* AFFIX CLASS DEFINITION
+ * ====================== */
+
+ var Affix = function (element, options) {
+ this.options = $.extend({}, $.fn.affix.defaults, options)
+ this.$window = $(window)
+ .on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
+ .on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this))
+ this.$element = $(element)
+ this.checkPosition()
+ }
+
+ Affix.prototype.checkPosition = function () {
+ if (!this.$element.is(':visible')) return
+
+ var scrollHeight = $(document).height()
+ , scrollTop = this.$window.scrollTop()
+ , position = this.$element.offset()
+ , offset = this.options.offset
+ , offsetBottom = offset.bottom
+ , offsetTop = offset.top
+ , reset = 'affix affix-top affix-bottom'
+ , affix
+
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
+ if (typeof offsetTop == 'function') offsetTop = offset.top()
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
+
+ affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
+ false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
+ 'bottom' : offsetTop != null && scrollTop <= offsetTop ?
+ 'top' : false
+
+ if (this.affixed === affix) return
+
+ this.affixed = affix
+ this.unpin = affix == 'bottom' ? position.top - scrollTop : null
+
+ this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
+ }
+
+
+ /* AFFIX PLUGIN DEFINITION
+ * ======================= */
+
+ var old = $.fn.affix
+
+ $.fn.affix = function (option) {
+ return this.each(function () {
+ var $this = $(this)
+ , data = $this.data('affix')
+ , options = typeof option == 'object' && option
+ if (!data) $this.data('affix', (data = new Affix(this, options)))
+ if (typeof option == 'string') data[option]()
+ })
+ }
+
+ $.fn.affix.Constructor = Affix
+
+ $.fn.affix.defaults = {
+ offset: 0
+ }
+
+
+ /* AFFIX NO CONFLICT
+ * ================= */
+
+ $.fn.affix.noConflict = function () {
+ $.fn.affix = old
+ return this
+ }
+
+
+ /* AFFIX DATA-API
+ * ============== */
+
+ $(window).on('load', function () {
+ $('[data-spy="affix"]').each(function () {
+ var $spy = $(this)
+ , data = $spy.data()
+
+ data.offset = data.offset || {}
+
+ data.offsetBottom && (data.offset.bottom = data.offsetBottom)
+ data.offsetTop && (data.offset.top = data.offsetTop)
+
+ $spy.affix(data)
+ })
+ })
+
+
+}(window.jQuery); \ No newline at end of file
diff --git a/doc/_static/collapse.png b/doc/_static/collapse.png
new file mode 100644
index 0000000..fe0257e
--- /dev/null
+++ b/doc/_static/collapse.png
Binary files differ
diff --git a/doc/_static/default.css b/doc/_static/default.css
new file mode 100644
index 0000000..6cc008b
--- /dev/null
+++ b/doc/_static/default.css
@@ -0,0 +1,68 @@
+a.headerlink {
+ color: #ffffff;
+ font-size: 0.8em;
+ padding: 0 4px 0 4px;
+ text-decoration: none;
+}
+
+a.headerlink:hover {
+ background-color: #ffffff;
+ color: #c60f0f;
+}
+
+#sidebar_toc ul {
+ list-style-type: none;
+ padding-left: 10px;
+}
+
+.toc_handle {
+ background : transparent
+ url(space.gif);
+ background-repeat : no-repeat;
+ background-position: center bottom;
+ display : block;
+ float : left;
+ width : 14px;
+ height : 19px;
+}
+
+.toc_collapsed {
+ background : transparent
+ url(expand.png);
+ background-repeat : no-repeat;
+ background-position: center bottom;
+ cursor : pointer;
+}
+
+.toc_expanded {
+ background : transparent
+ url(collapse.png);
+ background-repeat : no-repeat;
+ background-position: center bottom;
+ cursor : pointer;
+}
+
+body {
+ -webkit-animation-duration: 0.1s;
+ -webkit-animation-name: fontfix;
+ -webkit-animation-iteration-count: 1;
+ -webkit-animation-timing-function: linear;
+ -webkit-animation-delay: 0.5s;
+}
+
+@-webkit-keyframes fontfix{
+ from{ opacity: 1; }
+ to{ opacity: 1; }
+}
+
+img.floatleft{
+ float: left
+}
+
+img.floatright{
+ float:right
+}
+
+img.floatcenter{
+ float:center
+} \ No newline at end of file
diff --git a/doc/_static/developerzone_gameworks_logo.png b/doc/_static/developerzone_gameworks_logo.png
new file mode 100644
index 0000000..29f9140
--- /dev/null
+++ b/doc/_static/developerzone_gameworks_logo.png
Binary files differ
diff --git a/doc/_static/doctools.js b/doc/_static/doctools.js
new file mode 100644
index 0000000..8614442
--- /dev/null
+++ b/doc/_static/doctools.js
@@ -0,0 +1,235 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+ "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+ "profile", "profileEnd"];
+ window.console = {};
+ for (var i = 0; i < names.length; ++i)
+ window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+ return decodeURIComponent(x).replace(/\+/g, ' ');
+};
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+ if (typeof s == 'undefined')
+ s = document.location.search;
+ var parts = s.substr(s.indexOf('?') + 1).split('&');
+ var result = {};
+ for (var i = 0; i < parts.length; i++) {
+ var tmp = parts[i].split('=', 2);
+ var key = jQuery.urldecode(tmp[0]);
+ var value = jQuery.urldecode(tmp[1]);
+ if (key in result)
+ result[key].push(value);
+ else
+ result[key] = [value];
+ }
+ return result;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+ function highlight(node) {
+ if (node.nodeType == 3) {
+ var val = node.nodeValue;
+ var pos = val.toLowerCase().indexOf(text);
+ if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
+ var span = document.createElement("span");
+ span.className = className;
+ span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+ node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+ document.createTextNode(val.substr(pos + text.length)),
+ node.nextSibling));
+ node.nodeValue = val.substr(0, pos);
+ }
+ }
+ else if (!jQuery(node).is("button, select, textarea")) {
+ jQuery.each(node.childNodes, function() {
+ highlight(this);
+ });
+ }
+ }
+ return this.each(function() {
+ highlight(this);
+ });
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+ init : function() {
+ this.fixFirefoxAnchorBug();
+ this.highlightSearchWords();
+ this.initIndexTable();
+ },
+
+ /**
+ * i18n support
+ */
+ TRANSLATIONS : {},
+ PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+ LOCALE : 'unknown',
+
+ // gettext and ngettext don't access this so that the functions
+ // can safely bound to a different name (_ = Documentation.gettext)
+ gettext : function(string) {
+ var translated = Documentation.TRANSLATIONS[string];
+ if (typeof translated == 'undefined')
+ return string;
+ return (typeof translated == 'string') ? translated : translated[0];
+ },
+
+ ngettext : function(singular, plural, n) {
+ var translated = Documentation.TRANSLATIONS[singular];
+ if (typeof translated == 'undefined')
+ return (n == 1) ? singular : plural;
+ return translated[Documentation.PLURALEXPR(n)];
+ },
+
+ addTranslations : function(catalog) {
+ for (var key in catalog.messages)
+ this.TRANSLATIONS[key] = catalog.messages[key];
+ this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+ this.LOCALE = catalog.locale;
+ },
+
+ /**
+ * add context elements like header anchor links
+ */
+ addContextElements : function() {
+ $('div[id] > :header:first').each(function() {
+ $('<a class="headerlink">\u00B6</a>').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this headline')).
+ appendTo(this);
+ });
+ $('dt[id]').each(function() {
+ $('<a class="headerlink">\u00B6</a>').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this definition')).
+ appendTo(this);
+ });
+ },
+
+ /**
+ * workaround a firefox stupidity
+ */
+ fixFirefoxAnchorBug : function() {
+ if (document.location.hash && $.browser.mozilla)
+ window.setTimeout(function() {
+ document.location.href += '';
+ }, 10);
+ },
+
+ /**
+ * highlight the search words provided in the url in the text
+ */
+ highlightSearchWords : function() {
+ var params = $.getQueryParameters();
+ var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+ if (terms.length) {
+ var body = $('div.body');
+ window.setTimeout(function() {
+ $.each(terms, function() {
+ body.highlightText(this.toLowerCase(), 'highlighted');
+ });
+ }, 10);
+ $('<p class="highlight-link"><a href="javascript:Documentation.' +
+ 'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+ .appendTo($('#searchbox'));
+ }
+ },
+
+ /**
+ * init the domain index toggle buttons
+ */
+ initIndexTable : function() {
+ var togglers = $('img.toggler').click(function() {
+ var src = $(this).attr('src');
+ var idnum = $(this).attr('id').substr(7);
+ $('tr.cg-' + idnum).toggle();
+ if (src.substr(-9) == 'minus.png')
+ $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+ else
+ $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+ }).css('display', '');
+ if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+ togglers.click();
+ }
+ },
+
+ /**
+ * helper function to hide the search marks again
+ */
+ hideSearchWords : function() {
+ $('#searchbox .highlight-link').fadeOut(300);
+ $('span.highlighted').removeClass('highlighted');
+ },
+
+ /**
+ * make the url absolute
+ */
+ makeURL : function(relativeURL) {
+ return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+ },
+
+ /**
+ * get the current relative url
+ */
+ getCurrentURL : function() {
+ var path = document.location.pathname;
+ var parts = path.split(/\//);
+ $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+ if (this == '..')
+ parts.pop();
+ });
+ var url = parts.join('/');
+ return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+ }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+ Documentation.init();
+});
diff --git a/doc/_static/expand.png b/doc/_static/expand.png
new file mode 100644
index 0000000..ba87cd7
--- /dev/null
+++ b/doc/_static/expand.png
Binary files differ
diff --git a/doc/_static/jquery.cookie.js b/doc/_static/jquery.cookie.js
new file mode 100644
index 0000000..feb62e9
--- /dev/null
+++ b/doc/_static/jquery.cookie.js
@@ -0,0 +1,117 @@
+/*!
+ * jQuery Cookie Plugin v1.4.1
+ * https://github.com/carhartl/jquery-cookie
+ *
+ * Copyright 2006, 2014 Klaus Hartl
+ * Released under the MIT license
+ */
+(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD
+ define(['jquery'], factory);
+ } else if (typeof exports === 'object') {
+ // CommonJS
+ factory(require('jquery'));
+ } else {
+ // Browser globals
+ factory(jQuery);
+ }
+}(function ($) {
+
+ var pluses = /\+/g;
+
+ function encode(s) {
+ return config.raw ? s : encodeURIComponent(s);
+ }
+
+ function decode(s) {
+ return config.raw ? s : decodeURIComponent(s);
+ }
+
+ function stringifyCookieValue(value) {
+ return encode(config.json ? JSON.stringify(value) : String(value));
+ }
+
+ function parseCookieValue(s) {
+ if (s.indexOf('"') === 0) {
+ // This is a quoted cookie as according to RFC2068, unescape...
+ s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
+ }
+
+ try {
+ // Replace server-side written pluses with spaces.
+ // If we can't decode the cookie, ignore it, it's unusable.
+ // If we can't parse the cookie, ignore it, it's unusable.
+ s = decodeURIComponent(s.replace(pluses, ' '));
+ return config.json ? JSON.parse(s) : s;
+ } catch(e) {}
+ }
+
+ function read(s, converter) {
+ var value = config.raw ? s : parseCookieValue(s);
+ return $.isFunction(converter) ? converter(value) : value;
+ }
+
+ var config = $.cookie = function (key, value, options) {
+
+ // Write
+
+ if (arguments.length > 1 && !$.isFunction(value)) {
+ options = $.extend({}, config.defaults, options);
+
+ if (typeof options.expires === 'number') {
+ var days = options.expires, t = options.expires = new Date();
+ t.setTime(+t + days * 864e+5);
+ }
+
+ return (document.cookie = [
+ encode(key), '=', stringifyCookieValue(value),
+ options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
+ options.path ? '; path=' + options.path : '',
+ options.domain ? '; domain=' + options.domain : '',
+ options.secure ? '; secure' : ''
+ ].join(''));
+ }
+
+ // Read
+
+ var result = key ? undefined : {};
+
+ // To prevent the for loop in the first place assign an empty array
+ // in case there are no cookies at all. Also prevents odd result when
+ // calling $.cookie().
+ var cookies = document.cookie ? document.cookie.split('; ') : [];
+
+ for (var i = 0, l = cookies.length; i < l; i++) {
+ var parts = cookies[i].split('=');
+ var name = decode(parts.shift());
+ var cookie = parts.join('=');
+
+ if (key && key === name) {
+ // If second argument (value) is a function it's a converter...
+ result = read(cookie, value);
+ break;
+ }
+
+ // Prevent storing a cookie that we couldn't decode.
+ if (!key && (cookie = read(cookie)) !== undefined) {
+ result[name] = cookie;
+ }
+ }
+
+ return result;
+ };
+
+ config.defaults = {};
+
+ $.removeCookie = function (key, options) {
+ if ($.cookie(key) === undefined) {
+ return false;
+ }
+
+ // Must not alter options, thus extending a fresh object...
+ $.cookie(key, '', $.extend({}, options, { expires: -1 }));
+ return !$.cookie(key);
+ };
+
+}));
diff --git a/doc/_static/jquery.js b/doc/_static/jquery.js
new file mode 100644
index 0000000..3883779
--- /dev/null
+++ b/doc/_static/jquery.js
@@ -0,0 +1,2 @@
+/*! jQuery v1.8.3 jquery.com | jquery.org/license */
+(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window); \ No newline at end of file
diff --git a/doc/_static/jquery.storageapi.js b/doc/_static/jquery.storageapi.js
new file mode 100644
index 0000000..0331d44
--- /dev/null
+++ b/doc/_static/jquery.storageapi.js
@@ -0,0 +1,451 @@
+/*
+ * jQuery Storage API Plugin
+ *
+ * Copyright (c) 2013 Julien Maurel
+ *
+ * Licensed under the MIT license:
+ * http://www.opensource.org/licenses/mit-license.php
+ *
+ * Project home:
+ * https://github.com/julien-maurel/jQuery-Storage-API
+ *
+ * Version: 1.7.3
+ *
+ */
+(function (factory) {
+ if(typeof define==='function' && define.amd){
+ // AMD
+ define(['jquery'],factory);
+ }else if(typeof exports==='object') {
+ // CommonJS
+ factory(require('jquery'));
+ }else {
+ // Browser globals
+ factory(jQuery);
+ }
+}(function($){
+ // Prefix to use with cookie fallback
+ var cookie_local_prefix="ls_";
+ var cookie_session_prefix="ss_";
+
+ // Get items from a storage
+ function _get(storage){
+ var l=arguments.length,s=window[storage],a=arguments,a1=a[1],vi,ret,tmp;
+ if(l<2) throw new Error('Minimum 2 arguments must be given');
+ else if($.isArray(a1)){
+ // If second argument is an array, return an object with value of storage for each item in this array
+ ret={};
+ for(var i in a1){
+ vi=a1[i];
+ try{
+ ret[vi]=JSON.parse(s.getItem(vi));
+ }catch(e){
+ ret[vi]=s.getItem(vi);
+ }
+ }
+ return ret;
+ }else if(l==2){
+ // If only 2 arguments, return value directly
+ try{
+ return JSON.parse(s.getItem(a1));
+ }catch(e){
+ return s.getItem(a1);
+ }
+ }else{
+ // If more than 2 arguments, parse storage to retrieve final value to return it
+ // Get first level
+ try{
+ ret=JSON.parse(s.getItem(a1));
+ }catch(e){
+ throw new ReferenceError(a1+' is not defined in this storage');
+ }
+ // Parse next levels
+ for(var i=2;i<l-1;i++){
+ ret=ret[a[i]];
+ if(ret===undefined) throw new ReferenceError([].slice.call(a,1,i+1).join('.')+' is not defined in this storage');
+ }
+ // If last argument is an array, return an object with value for each item in this array
+ // Else return value normally
+ if($.isArray(a[i])){
+ tmp=ret;
+ ret={};
+ for(var j in a[i]){
+ ret[a[i][j]]=tmp[a[i][j]];
+ }
+ return ret;
+ }else{
+ return ret[a[i]];
+ }
+ }
+ }
+
+ // Set items of a storage
+ function _set(storage){
+ var l=arguments.length,s=window[storage],a=arguments,a1=a[1],a2=a[2],vi,to_store={},tmp;
+ if(l<2 || !$.isPlainObject(a1) && l<3) throw new Error('Minimum 3 arguments must be given or second parameter must be an object');
+ else if($.isPlainObject(a1)){
+ // If first argument is an object, set values of storage for each property of this object
+ for(var i in a1){
+ vi=a1[i];
+ if(!$.isPlainObject(vi)) s.setItem(i,vi);
+ else s.setItem(i,JSON.stringify(vi));
+ }
+ return a1;
+ }else if(l==3){
+ // If only 3 arguments, set value of storage directly
+ if(typeof a2==='object') s.setItem(a1,JSON.stringify(a2));
+ else s.setItem(a1,a2);
+ return a2;
+ }else{
+ // If more than 3 arguments, parse storage to retrieve final node and set value
+ // Get first level
+ try{
+ tmp=s.getItem(a1);
+ if(tmp!=null) {
+ to_store=JSON.parse(tmp);
+ }
+ }catch(e){
+ }
+ tmp=to_store;
+ // Parse next levels and set value
+ for(var i=2;i<l-2;i++){
+ vi=a[i];
+ if(!tmp[vi] || !$.isPlainObject(tmp[vi])) tmp[vi]={};
+ tmp=tmp[vi];
+ }
+ tmp[a[i]]=a[i+1];
+ s.setItem(a1,JSON.stringify(to_store));
+ return to_store;
+ }
+ }
+
+ // Remove items from a storage
+ function _remove(storage){
+ var l=arguments.length,s=window[storage],a=arguments,a1=a[1],to_store,tmp;
+ if(l<2) throw new Error('Minimum 2 arguments must be given');
+ else if($.isArray(a1)){
+ // If first argument is an array, remove values from storage for each item of this array
+ for(var i in a1){
+ s.removeItem(a1[i]);
+ }
+ return true;
+ }else if(l==2){
+ // If only 2 arguments, remove value from storage directly
+ s.removeItem(a1);
+ return true;
+ }else{
+ // If more than 2 arguments, parse storage to retrieve final node and remove value
+ // Get first level
+ try{
+ to_store=tmp=JSON.parse(s.getItem(a1));
+ }catch(e){
+ throw new ReferenceError(a1+' is not defined in this storage');
+ }
+ // Parse next levels and remove value
+ for(var i=2;i<l-1;i++){
+ tmp=tmp[a[i]];
+ if(tmp===undefined) throw new ReferenceError([].slice.call(a,1,i).join('.')+' is not defined in this storage');
+ }
+ // If last argument is an array,remove value for each item in this array
+ // Else remove value normally
+ if($.isArray(a[i])){
+ for(var j in a[i]){
+ delete tmp[a[i][j]];
+ }
+ }else{
+ delete tmp[a[i]];
+ }
+ s.setItem(a1,JSON.stringify(to_store));
+ return true;
+ }
+ }
+
+ // Remove all items from a storage
+ function _removeAll(storage, reinit_ns){
+ var keys=_keys(storage);
+ for(var i in keys){
+ _remove(storage,keys[i]);
+ }
+ // Reinitialize all namespace storages
+ if(reinit_ns){
+ for(var i in $.namespaceStorages){
+ _createNamespace(i);
+ }
+ }
+ }
+
+ // Check if items of a storage are empty
+ function _isEmpty(storage){
+ var l=arguments.length,a=arguments,s=window[storage],a1=a[1];
+ if(l==1){
+ // If only one argument, test if storage is empty
+ return (_keys(storage).length==0);
+ }else if($.isArray(a1)){
+ // If first argument is an array, test each item of this array and return true only if all items are empty
+ for(var i=0; i<a1.length;i++){
+ if(!_isEmpty(storage,a1[i])) return false;
+ }
+ return true;
+ }else{
+ // If more than 1 argument, try to get value and test it
+ try{
+ var v=_get.apply(this, arguments);
+ // Convert result to an object (if last argument is an array, _get return already an object) and test each item
+ if(!$.isArray(a[l-1])) v={'totest':v};
+ for(var i in v){
+ if(!(
+ ($.isPlainObject(v[i]) && $.isEmptyObject(v[i])) ||
+ ($.isArray(v[i]) && !v[i].length) ||
+ (!v[i])
+ )) return false;
+ }
+ return true;
+ }catch(e){
+ return true;
+ }
+ }
+ }
+
+ // Check if items of a storage exist
+ function _isSet(storage){
+ var l=arguments.length,a=arguments,s=window[storage],a1=a[1];
+ if(l<2) throw new Error('Minimum 2 arguments must be given');
+ if($.isArray(a1)){
+ // If first argument is an array, test each item of this array and return true only if all items exist
+ for(var i=0; i<a1.length;i++){
+ if(!_isSet(storage,a1[i])) return false;
+ }
+ return true;
+ }else{
+ // For other case, try to get value and test it
+ try{
+ var v=_get.apply(this, arguments);
+ // Convert result to an object (if last argument is an array, _get return already an object) and test each item
+ if(!$.isArray(a[l-1])) v={'totest':v};
+ for(var i in v){
+ if(!(v[i]!==undefined && v[i]!==null)) return false;
+ }
+ return true;
+ }catch(e){
+ return false;
+ }
+ }
+ }
+
+ // Get keys of a storage or of an item of the storage
+ function _keys(storage){
+ var l=arguments.length,s=window[storage],a=arguments,a1=a[1],keys=[],o={};
+ // If more than 1 argument, get value from storage to retrieve keys
+ // Else, use storage to retrieve keys
+ if(l>1){
+ o=_get.apply(this,a);
+ }else{
+ o=s;
+ }
+ if(o._cookie){
+ // If storage is a cookie, use $.cookie to retrieve keys
+ for(var key in $.cookie()){
+ if(key!='') {
+ keys.push(key.replace(o._prefix,''));
+ }
+ }
+ }else{
+ for(var i in o){
+ keys.push(i);
+ }
+ }
+ return keys;
+ }
+
+ // Create new namespace storage
+ function _createNamespace(name){
+ if(!name || typeof name!="string") throw new Error('First parameter must be a string');
+ if(storage_available){
+ if(!window.localStorage.getItem(name)) window.localStorage.setItem(name,'{}');
+ if(!window.sessionStorage.getItem(name)) window.sessionStorage.setItem(name,'{}');
+ }else{
+ if(!window.localCookieStorage.getItem(name)) window.localCookieStorage.setItem(name,'{}');
+ if(!window.sessionCookieStorage.getItem(name)) window.sessionCookieStorage.setItem(name,'{}');
+ }
+ var ns={
+ localStorage:$.extend({},$.localStorage,{_ns:name}),
+ sessionStorage:$.extend({},$.sessionStorage,{_ns:name})
+ };
+ if($.cookie){
+ if(!window.cookieStorage.getItem(name)) window.cookieStorage.setItem(name,'{}');
+ ns.cookieStorage=$.extend({},$.cookieStorage,{_ns:name});
+ }
+ $.namespaceStorages[name]=ns;
+ return ns;
+ }
+
+ // Test if storage is natively available on browser
+ function _testStorage(name){
+ if(!window[name]) return false;
+ var foo='jsapi';
+ try{
+ window[name].setItem(foo,foo);
+ window[name].removeItem(foo);
+ return true;
+ }catch(e){
+ return false;
+ }
+ }
+
+ // Check if storages are natively available on browser
+ var storage_available=_testStorage('localStorage');
+
+ // Namespace object
+ var storage={
+ _type:'',
+ _ns:'',
+ _callMethod:function(f,a){
+ var p=[this._type],a=Array.prototype.slice.call(a),a0=a[0];
+ if(this._ns) p.push(this._ns);
+ if(typeof a0==='string' && a0.indexOf('.')!==-1){
+ a.shift();
+ [].unshift.apply(a,a0.split('.'));
+ }
+ [].push.apply(p,a);
+ return f.apply(this,p);
+ },
+ // Get items. If no parameters and storage have a namespace, return all namespace
+ get:function(){
+ return this._callMethod(_get,arguments);
+ },
+ // Set items
+ set:function(){
+ var l=arguments.length,a=arguments,a0=a[0];
+ if(l<1 || !$.isPlainObject(a0) && l<2) throw new Error('Minimum 2 arguments must be given or first parameter must be an object');
+ // If first argument is an object and storage is a namespace storage, set values individually
+ if($.isPlainObject(a0) && this._ns){
+ for(var i in a0){
+ _set(this._type,this._ns,i,a0[i]);
+ }
+ return a0;
+ }else{
+ var r=this._callMethod(_set,a);
+ if(this._ns) return r[a0.split('.')[0]];
+ else return r;
+ }
+ },
+ // Delete items
+ remove:function(){
+ if(arguments.length<1) throw new Error('Minimum 1 argument must be given');
+ return this._callMethod(_remove,arguments);
+ },
+ // Delete all items
+ removeAll:function(reinit_ns){
+ if(this._ns){
+ _set(this._type,this._ns,{});
+ return true;
+ }else{
+ return _removeAll(this._type, reinit_ns);
+ }
+ },
+ // Items empty
+ isEmpty:function(){
+ return this._callMethod(_isEmpty,arguments);
+ },
+ // Items exists
+ isSet:function(){
+ if(arguments.length<1) throw new Error('Minimum 1 argument must be given');
+ return this._callMethod(_isSet,arguments);
+ },
+ // Get keys of items
+ keys:function(){
+ return this._callMethod(_keys,arguments);
+ }
+ };
+
+ // Use jquery.cookie for compatibility with old browsers and give access to cookieStorage
+ if($.cookie){
+ // sessionStorage is valid for one window/tab. To simulate that with cookie, we set a name for the window and use it for the name of the cookie
+ if(!window.name) window.name=Math.floor(Math.random()*100000000);
+ var cookie_storage={
+ _cookie:true,
+ _prefix:'',
+ _expires:null,
+ _path:null,
+ _domain:null,
+ setItem:function(n,v){
+ $.cookie(this._prefix+n,v,{expires:this._expires,path:this._path,domain:this._domain});
+ },
+ getItem:function(n){
+ return $.cookie(this._prefix+n);
+ },
+ removeItem:function(n){
+ return $.removeCookie(this._prefix+n);
+ },
+ clear:function(){
+ for(var key in $.cookie()){
+ if(key!=''){
+ if(!this._prefix && key.indexOf(cookie_local_prefix)===-1 && key.indexOf(cookie_session_prefix)===-1 || this._prefix && key.indexOf(this._prefix)===0) {
+ $.removeCookie(key);
+ }
+ }
+ }
+ },
+ setExpires:function(e){
+ this._expires=e;
+ return this;
+ },
+ setPath:function(p){
+ this._path=p;
+ return this;
+ },
+ setDomain:function(d){
+ this._domain=d;
+ return this;
+ },
+ setConf:function(c){
+ if(c.path) this._path=c.path;
+ if(c.domain) this._domain=c.domain;
+ if(c.expires) this._expires=c.expires;
+ return this;
+ },
+ setDefaultConf:function(){
+ this._path=this._domain=this._expires=null;
+ }
+ };
+ if(!storage_available){
+ window.localCookieStorage=$.extend({},cookie_storage,{_prefix:cookie_local_prefix,_expires:365*10});
+ window.sessionCookieStorage=$.extend({},cookie_storage,{_prefix:cookie_session_prefix+window.name+'_'});
+ }
+ window.cookieStorage=$.extend({},cookie_storage);
+ // cookieStorage API
+ $.cookieStorage=$.extend({},storage,{
+ _type:'cookieStorage',
+ setExpires:function(e){window.cookieStorage.setExpires(e); return this;},
+ setPath:function(p){window.cookieStorage.setPath(p); return this;},
+ setDomain:function(d){window.cookieStorage.setDomain(d); return this;},
+ setConf:function(c){window.cookieStorage.setConf(c); return this;},
+ setDefaultConf:function(){window.cookieStorage.setDefaultConf(); return this;}
+ });
+ }
+
+ // Get a new API on a namespace
+ $.initNamespaceStorage=function(ns){ return _createNamespace(ns); };
+ if(storage_available) {
+ // localStorage API
+ $.localStorage=$.extend({},storage,{_type:'localStorage'});
+ // sessionStorage API
+ $.sessionStorage=$.extend({},storage,{_type:'sessionStorage'});
+ }else{
+ // localStorage API
+ $.localStorage=$.extend({},storage,{_type:'localCookieStorage'});
+ // sessionStorage API
+ $.sessionStorage=$.extend({},storage,{_type:'sessionCookieStorage'});
+ }
+ // List of all namespace storage
+ $.namespaceStorages={};
+ // Remove all items in all storages
+ $.removeAllStorages=function(reinit_ns){
+ $.localStorage.removeAll(reinit_ns);
+ $.sessionStorage.removeAll(reinit_ns);
+ if($.cookieStorage) $.cookieStorage.removeAll(reinit_ns);
+ if(!reinit_ns){
+ $.namespaceStorages={};
+ }
+ }
+}));
diff --git a/doc/_static/nvidia-logo-header.png b/doc/_static/nvidia-logo-header.png
new file mode 100644
index 0000000..cc60684
--- /dev/null
+++ b/doc/_static/nvidia-logo-header.png
Binary files differ
diff --git a/doc/_static/pygments.css b/doc/_static/pygments.css
new file mode 100644
index 0000000..d79caa1
--- /dev/null
+++ b/doc/_static/pygments.css
@@ -0,0 +1,62 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #eeffcc; }
+.highlight .c { color: #408090; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #333333 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0044DD } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #208050 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #208050 } /* Literal.Number.Float */
+.highlight .mh { color: #208050 } /* Literal.Number.Hex */
+.highlight .mi { color: #208050 } /* Literal.Number.Integer */
+.highlight .mo { color: #208050 } /* Literal.Number.Oct */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file
diff --git a/doc/_static/searchtools.js b/doc/_static/searchtools.js
new file mode 100644
index 0000000..cbafbed
--- /dev/null
+++ b/doc/_static/searchtools.js
@@ -0,0 +1,622 @@
+/*
+ * searchtools.js_t
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilties for the full-text search.
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+ var step2list = {
+ ational: 'ate',
+ tional: 'tion',
+ enci: 'ence',
+ anci: 'ance',
+ izer: 'ize',
+ bli: 'ble',
+ alli: 'al',
+ entli: 'ent',
+ eli: 'e',
+ ousli: 'ous',
+ ization: 'ize',
+ ation: 'ate',
+ ator: 'ate',
+ alism: 'al',
+ iveness: 'ive',
+ fulness: 'ful',
+ ousness: 'ous',
+ aliti: 'al',
+ iviti: 'ive',
+ biliti: 'ble',
+ logi: 'log'
+ };
+
+ var step3list = {
+ icate: 'ic',
+ ative: '',
+ alize: 'al',
+ iciti: 'ic',
+ ical: 'ic',
+ ful: '',
+ ness: ''
+ };
+
+ var c = "[^aeiou]"; // consonant
+ var v = "[aeiouy]"; // vowel
+ var C = c + "[^aeiouy]*"; // consonant sequence
+ var V = v + "[aeiou]*"; // vowel sequence
+
+ var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
+ var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
+ var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
+ var s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ this.stemWord = function (w) {
+ var stem;
+ var suffix;
+ var firstch;
+ var origword = w;
+
+ if (w.length < 3)
+ return w;
+
+ var re;
+ var re2;
+ var re3;
+ var re4;
+
+ firstch = w.substr(0,1);
+ if (firstch == "y")
+ w = firstch.toUpperCase() + w.substr(1);
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w))
+ w = w.replace(re,"$1$2");
+ else if (re2.test(w))
+ w = w.replace(re2,"$1$2");
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w))
+ w = w + "e";
+ else if (re3.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ else if (re4.test(w))
+ w = w + "e";
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem))
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step2list[suffix];
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step3list[suffix];
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem))
+ w = stem;
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem))
+ w = stem;
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+ w = stem;
+ }
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+ if (firstch == "y")
+ w = firstch.toLowerCase() + w.substr(1);
+ return w;
+ }
+}
+
+
+
+/**
+ * Simple result scoring code.
+ */
+var Scorer = {
+ // Implement the following function to further tweak the score for each result
+ // The function takes a result array [filename, title, anchor, descr, score]
+ // and returns the new score.
+ /*
+ score: function(result) {
+ return result[4];
+ },
+ */
+
+ // query matches the full name of an object
+ objNameMatch: 11,
+ // or matches in the last dotted part of the object name
+ objPartialMatch: 6,
+ // Additive scores depending on the priority of the object
+ objPrio: {0: 15, // used to be importantResults
+ 1: 5, // used to be objectResults
+ 2: -5}, // used to be unimportantResults
+ // Used when the priority is not in the mapping.
+ objPrioDefault: 0,
+
+ // query found in title
+ title: 15,
+ // query found in terms
+ term: 5
+};
+
+
+/**
+ * Search Module
+ */
+var Search = {
+
+ _index : null,
+ _queued_query : null,
+ _pulse_status : -1,
+
+ init : function() {
+ var params = $.getQueryParameters();
+ if (params.q) {
+ var query = params.q[0];
+ $('input[name="q"]')[0].value = query;
+ this.performSearch(query);
+ }
+ },
+
+ loadIndex : function(url) {
+ $.ajax({type: "GET", url: url, data: null,
+ dataType: "script", cache: true,
+ complete: function(jqxhr, textstatus) {
+ if (textstatus != "success") {
+ document.getElementById("searchindexloader").src = url;
+ }
+ }});
+ },
+
+ setIndex : function(index) {
+ var q;
+ this._index = index;
+ if ((q = this._queued_query) !== null) {
+ this._queued_query = null;
+ Search.query(q);
+ }
+ },
+
+ hasIndex : function() {
+ return this._index !== null;
+ },
+
+ deferQuery : function(query) {
+ this._queued_query = query;
+ },
+
+ stopPulse : function() {
+ this._pulse_status = 0;
+ },
+
+ startPulse : function() {
+ if (this._pulse_status >= 0)
+ return;
+ function pulse() {
+ var i;
+ Search._pulse_status = (Search._pulse_status + 1) % 4;
+ var dotString = '';
+ for (i = 0; i < Search._pulse_status; i++)
+ dotString += '.';
+ Search.dots.text(dotString);
+ if (Search._pulse_status > -1)
+ window.setTimeout(pulse, 500);
+ }
+ pulse();
+ },
+
+ /**
+ * perform a search for something (or wait until index is loaded)
+ */
+ performSearch : function(query) {
+ // create the required interface elements
+ this.out = $('#search-results');
+ this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
+ this.dots = $('<span></span>').appendTo(this.title);
+ this.status = $('<p style="display: none"></p>').appendTo(this.out);
+ this.output = $('<ul class="search"/>').appendTo(this.out);
+
+ $('#search-progress').text(_('Preparing search...'));
+ this.startPulse();
+
+ // index already loaded, the browser was quick!
+ if (this.hasIndex())
+ this.query(query);
+ else
+ this.deferQuery(query);
+ },
+
+ /**
+ * execute search (requires search index to be loaded)
+ */
+ query : function(query) {
+ var i;
+ var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
+
+ // stem the searchterms and add them to the correct list
+ var stemmer = new Stemmer();
+ var searchterms = [];
+ var excluded = [];
+ var hlterms = [];
+ var tmp = query.split(/\s+/);
+ var objectterms = [];
+ for (i = 0; i < tmp.length; i++) {
+ if (tmp[i] !== "") {
+ objectterms.push(tmp[i].toLowerCase());
+ }
+
+ if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
+ tmp[i] === "") {
+ // skip this "word"
+ continue;
+ }
+ // stem the word
+ var word = stemmer.stemWord(tmp[i]).toLowerCase();
+ var toAppend;
+ // select the correct list
+ if (word[0] == '-') {
+ toAppend = excluded;
+ word = word.substr(1);
+ }
+ else {
+ toAppend = searchterms;
+ hlterms.push(tmp[i].toLowerCase());
+ }
+ // only add if not already in the list
+ if (!$u.contains(toAppend, word))
+ toAppend.push(word);
+ }
+ var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
+
+ // console.debug('SEARCH: searching for:');
+ // console.info('required: ', searchterms);
+ // console.info('excluded: ', excluded);
+
+ // prepare search
+ var terms = this._index.terms;
+ var titleterms = this._index.titleterms;
+
+ // array of [filename, title, anchor, descr, score]
+ var results = [];
+ $('#search-progress').empty();
+
+ // lookup as object
+ for (i = 0; i < objectterms.length; i++) {
+ var others = [].concat(objectterms.slice(0, i),
+ objectterms.slice(i+1, objectterms.length));
+ results = results.concat(this.performObjectSearch(objectterms[i], others));
+ }
+
+ // lookup as search terms in fulltext
+ results = results.concat(this.performTermsSearch(searchterms, excluded, terms, Scorer.term))
+ .concat(this.performTermsSearch(searchterms, excluded, titleterms, Scorer.title));
+
+ // let the scorer override scores with a custom scoring function
+ if (Scorer.score) {
+ for (i = 0; i < results.length; i++)
+ results[i][4] = Scorer.score(results[i]);
+ }
+
+ // now sort the results by score (in opposite order of appearance, since the
+ // display function below uses pop() to retrieve items) and then
+ // alphabetically
+ results.sort(function(a, b) {
+ var left = a[4];
+ var right = b[4];
+ if (left > right) {
+ return 1;
+ } else if (left < right) {
+ return -1;
+ } else {
+ // same score: sort alphabetically
+ left = a[1].toLowerCase();
+ right = b[1].toLowerCase();
+ return (left > right) ? -1 : ((left < right) ? 1 : 0);
+ }
+ });
+
+ // for debugging
+ //Search.lastresults = results.slice(); // a copy
+ //console.info('search results:', Search.lastresults);
+
+ // print the results
+ var resultCount = results.length;
+ function displayNextItem() {
+ // results left, load the summary and display it
+ if (results.length) {
+ var item = results.pop();
+ var listItem = $('<li style="display:none"></li>');
+ if (DOCUMENTATION_OPTIONS.FILE_SUFFIX === '') {
+ // dirhtml builder
+ var dirname = item[0] + '/';
+ if (dirname.match(/\/index\/$/)) {
+ dirname = dirname.substring(0, dirname.length-6);
+ } else if (dirname == 'index/') {
+ dirname = '';
+ }
+ listItem.append($('<a/>').attr('href',
+ DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
+ highlightstring + item[2]).html(item[1]));
+ } else {
+ // normal html builders
+ listItem.append($('<a/>').attr('href',
+ item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+ highlightstring + item[2]).html(item[1]));
+ }
+ if (item[3]) {
+ listItem.append($('<span> (' + item[3] + ')</span>'));
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
+ $.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[0] + '.txt',
+ dataType: "text",
+ complete: function(jqxhr, textstatus) {
+ var data = jqxhr.responseText;
+ if (data !== '') {
+ listItem.append(Search.makeSearchSummary(data, searchterms, hlterms));
+ }
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ }});
+ } else {
+ // no source available, just display title
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ }
+ }
+ // search finished, update title and status message
+ else {
+ Search.stopPulse();
+ Search.title.text(_('Search Results'));
+ if (!resultCount)
+ Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
+ else
+ Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
+ Search.status.fadeIn(500);
+ }
+ }
+ displayNextItem();
+ },
+
+ /**
+ * search for object names
+ */
+ performObjectSearch : function(object, otherterms) {
+ var filenames = this._index.filenames;
+ var objects = this._index.objects;
+ var objnames = this._index.objnames;
+ var titles = this._index.titles;
+
+ var i;
+ var results = [];
+
+ for (var prefix in objects) {
+ for (var name in objects[prefix]) {
+ var fullname = (prefix ? prefix + '.' : '') + name;
+ if (fullname.toLowerCase().indexOf(object) > -1) {
+ var score = 0;
+ var parts = fullname.split('.');
+ // check for different match types: exact matches of full name or
+ // "last name" (i.e. last dotted part)
+ if (fullname == object || parts[parts.length - 1] == object) {
+ score += Scorer.objNameMatch;
+ // matches in last name
+ } else if (parts[parts.length - 1].indexOf(object) > -1) {
+ score += Scorer.objPartialMatch;
+ }
+ var match = objects[prefix][name];
+ var objname = objnames[match[1]][2];
+ var title = titles[match[0]];
+ // If more than one term searched for, we require other words to be
+ // found in the name/title/description
+ if (otherterms.length > 0) {
+ var haystack = (prefix + ' ' + name + ' ' +
+ objname + ' ' + title).toLowerCase();
+ var allfound = true;
+ for (i = 0; i < otherterms.length; i++) {
+ if (haystack.indexOf(otherterms[i]) == -1) {
+ allfound = false;
+ break;
+ }
+ }
+ if (!allfound) {
+ continue;
+ }
+ }
+ var descr = objname + _(', in ') + title;
+
+ var anchor = match[3];
+ if (anchor === '')
+ anchor = fullname;
+ else if (anchor == '-')
+ anchor = objnames[match[1]][1] + '-' + fullname;
+ // add custom score for some objects according to scorer
+ if (Scorer.objPrio.hasOwnProperty(match[2])) {
+ score += Scorer.objPrio[match[2]];
+ } else {
+ score += Scorer.objPrioDefault;
+ }
+ results.push([filenames[match[0]], fullname, '#'+anchor, descr, score]);
+ }
+ }
+ }
+
+ return results;
+ },
+
+ /**
+ * search for full-text terms in the index
+ */
+ performTermsSearch : function(searchterms, excluded, terms, score) {
+ var filenames = this._index.filenames;
+ var titles = this._index.titles;
+
+ var i, j, file, files;
+ var fileMap = {};
+ var results = [];
+
+ // perform the search on the required terms
+ for (i = 0; i < searchterms.length; i++) {
+ var word = searchterms[i];
+ // no match but word was a required one
+ if ((files = terms[word]) === undefined)
+ break;
+ if (files.length === undefined) {
+ files = [files];
+ }
+ // create the mapping
+ for (j = 0; j < files.length; j++) {
+ file = files[j];
+ if (file in fileMap)
+ fileMap[file].push(word);
+ else
+ fileMap[file] = [word];
+ }
+ }
+
+ // now check if the files don't contain excluded terms
+ for (file in fileMap) {
+ var valid = true;
+
+ // check if all requirements are matched
+ if (fileMap[file].length != searchterms.length)
+ continue;
+
+ // ensure that none of the excluded terms is in the search result
+ for (i = 0; i < excluded.length; i++) {
+ if (terms[excluded[i]] == file ||
+ $u.contains(terms[excluded[i]] || [], file)) {
+ valid = false;
+ break;
+ }
+ }
+
+ // if we have still a valid result we can add it to the result list
+ if (valid) {
+ results.push([filenames[file], titles[file], '', null, score]);
+ }
+ }
+ return results;
+ },
+
+ /**
+ * helper function to return a node containing the
+ * search summary for a given text. keywords is a list
+ * of stemmed words, hlwords is the list of normal, unstemmed
+ * words. the first one is used to find the occurance, the
+ * latter for highlighting it.
+ */
+ makeSearchSummary : function(text, keywords, hlwords) {
+ var textLower = text.toLowerCase();
+ var start = 0;
+ $.each(keywords, function() {
+ var i = textLower.indexOf(this.toLowerCase());
+ if (i > -1)
+ start = i;
+ });
+ start = Math.max(start - 120, 0);
+ var excerpt = ((start > 0) ? '...' : '') +
+ $.trim(text.substr(start, 240)) +
+ ((start + 240 - text.length) ? '...' : '');
+ var rv = $('<div class="context"></div>').text(excerpt);
+ $.each(hlwords, function() {
+ rv = rv.highlightText(this, 'highlighted');
+ });
+ return rv;
+ }
+};
+
+$(document).ready(function() {
+ Search.init();
+}); \ No newline at end of file
diff --git a/doc/_static/sidebar.js b/doc/_static/sidebar.js
new file mode 100644
index 0000000..874a890
--- /dev/null
+++ b/doc/_static/sidebar.js
@@ -0,0 +1,159 @@
+/*
+ * sidebar.js
+ * ~~~~~~~~~~
+ *
+ * This script makes the Sphinx sidebar collapsible.
+ *
+ * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
+ * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
+ * used to collapse and expand the sidebar.
+ *
+ * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
+ * and the width of the sidebar and the margin-left of the document
+ * are decreased. When the sidebar is expanded the opposite happens.
+ * This script saves a per-browser/per-session cookie used to
+ * remember the position of the sidebar among the pages.
+ * Once the browser is closed the cookie is deleted and the position
+ * reset to the default (expanded).
+ *
+ * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+$(function() {
+
+
+
+
+
+
+
+
+ // global elements used by the functions.
+ // the 'sidebarbutton' element is defined as global after its
+ // creation, in the add_sidebar_button function
+ var bodywrapper = $('.bodywrapper');
+ var sidebar = $('.sphinxsidebar');
+ var sidebarwrapper = $('.sphinxsidebarwrapper');
+
+ // for some reason, the document has no sidebar; do not run into errors
+ if (!sidebar.length) return;
+
+ // original margin-left of the bodywrapper and width of the sidebar
+ // with the sidebar expanded
+ var bw_margin_expanded = bodywrapper.css('margin-left');
+ var ssb_width_expanded = sidebar.width();
+
+ // margin-left of the bodywrapper and width of the sidebar
+ // with the sidebar collapsed
+ var bw_margin_collapsed = '.8em';
+ var ssb_width_collapsed = '.8em';
+
+ // colors used by the current theme
+ var dark_color = $('.related').css('background-color');
+ var light_color = $('.document').css('background-color');
+
+ function sidebar_is_collapsed() {
+ return sidebarwrapper.is(':not(:visible)');
+ }
+
+ function toggle_sidebar() {
+ if (sidebar_is_collapsed())
+ expand_sidebar();
+ else
+ collapse_sidebar();
+ }
+
+ function collapse_sidebar() {
+ sidebarwrapper.hide();
+ sidebar.css('width', ssb_width_collapsed);
+ bodywrapper.css('margin-left', bw_margin_collapsed);
+ sidebarbutton.css({
+ 'margin-left': '0',
+ 'height': bodywrapper.height()
+ });
+ sidebarbutton.find('span').text('»');
+ sidebarbutton.attr('title', _('Expand sidebar'));
+ document.cookie = 'sidebar=collapsed';
+ }
+
+ function expand_sidebar() {
+ bodywrapper.css('margin-left', bw_margin_expanded);
+ sidebar.css('width', ssb_width_expanded);
+ sidebarwrapper.show();
+ sidebarbutton.css({
+ 'margin-left': ssb_width_expanded-12,
+ 'height': bodywrapper.height()
+ });
+ sidebarbutton.find('span').text('«');
+ sidebarbutton.attr('title', _('Collapse sidebar'));
+ document.cookie = 'sidebar=expanded';
+ }
+
+ function add_sidebar_button() {
+ sidebarwrapper.css({
+ 'float': 'left',
+ 'margin-right': '0',
+ 'width': ssb_width_expanded - 28
+ });
+ // create the button
+ sidebar.append(
+ '<div id="sidebarbutton"><span>&laquo;</span></div>'
+ );
+ var sidebarbutton = $('#sidebarbutton');
+ light_color = sidebarbutton.css('background-color');
+ // find the height of the viewport to center the '<<' in the page
+ var viewport_height;
+ if (window.innerHeight)
+ viewport_height = window.innerHeight;
+ else
+ viewport_height = $(window).height();
+ sidebarbutton.find('span').css({
+ 'display': 'block',
+ 'margin-top': (viewport_height - sidebar.position().top - 20) / 2
+ });
+
+ sidebarbutton.click(toggle_sidebar);
+ sidebarbutton.attr('title', _('Collapse sidebar'));
+ sidebarbutton.css({
+ 'color': '#FFFFFF',
+ 'border-left': '1px solid ' + dark_color,
+ 'font-size': '1.2em',
+ 'cursor': 'pointer',
+ 'height': bodywrapper.height(),
+ 'padding-top': '1px',
+ 'margin-left': ssb_width_expanded - 12
+ });
+
+ sidebarbutton.hover(
+ function () {
+ $(this).css('background-color', dark_color);
+ },
+ function () {
+ $(this).css('background-color', light_color);
+ }
+ );
+ }
+
+ function set_position_from_cookie() {
+ if (!document.cookie)
+ return;
+ var items = document.cookie.split(';');
+ for(var k=0; k<items.length; k++) {
+ var key_val = items[k].split('=');
+ var key = key_val[0].replace(/ /, ""); // strip leading spaces
+ if (key == 'sidebar') {
+ var value = key_val[1];
+ if ((value == 'collapsed') && (!sidebar_is_collapsed()))
+ collapse_sidebar();
+ else if ((value == 'expanded') && (sidebar_is_collapsed()))
+ expand_sidebar();
+ }
+ }
+ }
+
+ add_sidebar_button();
+ var sidebarbutton = $('#sidebarbutton');
+ set_position_from_cookie();
+}); \ No newline at end of file
diff --git a/doc/_static/space.gif b/doc/_static/space.gif
new file mode 100644
index 0000000..f191b28
--- /dev/null
+++ b/doc/_static/space.gif
Binary files differ
diff --git a/doc/_static/styleguide.css b/doc/_static/styleguide.css
new file mode 100644
index 0000000..8c3f3de
--- /dev/null
+++ b/doc/_static/styleguide.css
@@ -0,0 +1,102 @@
+body {
+ background-color: #fcfcfc;
+}
+.example {
+ padding: 20px;
+ border: 1px solid #efefef;
+}
+.doc-section {
+ padding-top: 60px;
+ margin-top: -60px;
+}
+/*
+ * Side navigation
+ *
+ * Scrollspy and affixed enhanced navigation to highlight sections and secondary
+ * sections of docs content.
+ */
+/* By default it's not affixed in mobile views, so undo that */
+.bs-sidebar.affix {
+ position: static;
+}
+/* First level of nav */
+.bs-sidenav {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ text-shadow: 0 1px 0 #fff;
+ background-color: #f7f5fa;
+ border-radius: 5px;
+}
+/* All levels of nav */
+.bs-sidebar .nav > li > a {
+ display: block;
+ color: #716b7a;
+ padding: 5px 20px;
+}
+.bs-sidebar .nav > li > a:hover,
+.bs-sidebar .nav > li > a:focus {
+ text-decoration: none;
+ background-color: #e5e3e9;
+ border-right: 1px solid #dbd8e0;
+}
+.bs-sidebar .nav > .active > a,
+.bs-sidebar .nav > .active:hover > a,
+.bs-sidebar .nav > .active:focus > a {
+ font-weight: bold;
+ color: #563d7c;
+ background-color: transparent;
+ border-right: 1px solid #563d7c;
+}
+/* Nav: second level (shown on .active) */
+.bs-sidebar .nav .nav {
+ margin-bottom: 8px;
+}
+.bs-sidebar .nav .nav > li > a {
+ padding-top: 3px;
+ padding-bottom: 3px;
+ padding-left: 30px;
+ font-size: 90%;
+}
+/* Show and affix the side nav when space allows it */
+@media (min-width: 992px) {
+ .bs-sidebar .nav > .active > ul {
+ display: block;
+ }
+ /* Widen the fixed sidebar */
+ .bs-sidebar.affix,
+ .bs-sidebar.affix-bottom {
+ width: 213px;
+ }
+ .bs-sidebar.affix {
+ position: fixed;
+ /* Undo the static from mobile first approach */
+ top: 80px;
+ }
+ .bs-sidebar.affix-bottom {
+ position: absolute;
+ /* Undo the static from mobile first approach */
+ }
+ .bs-sidebar.affix-bottom .bs-sidenav,
+ .bs-sidebar.affix .bs-sidenav {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+}
+@media (min-width: 1200px) {
+ /* Widen the fixed sidebar again */
+ .bs-sidebar.affix-bottom,
+ .bs-sidebar.affix {
+ width: 263px;
+ }
+}
+.show-grid {
+ margin-bottom: 15px;
+}
+.show-grid [class^="col-"] {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ background-color: #eee;
+ border: 1px solid #ddd;
+ background-color: rgba(86, 61, 124, 0.15);
+ border: 1px solid rgba(86, 61, 124, 0.2);
+}
diff --git a/doc/_static/underscore.js b/doc/_static/underscore.js
new file mode 100644
index 0000000..5b55f32
--- /dev/null
+++ b/doc/_static/underscore.js
@@ -0,0 +1,31 @@
+// Underscore.js 1.3.1
+// (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the MIT license.
+// Portions of Underscore are inspired or borrowed from Prototype,
+// Oliver Steele's Functional, and John Resig's Micro-Templating.
+// For all details and documentation:
+// http://documentcloud.github.com/underscore
+(function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source==
+c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c,
+h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each=
+b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e<f;e++){if(e in a&&c.call(d,a[e],e,a)===n)break}else for(e in a)if(b.has(a,e)&&c.call(d,a[e],e,a)===n)break};b.map=b.collect=function(a,c,b){var e=[];if(a==null)return e;if(x&&a.map===x)return a.map(c,b);j(a,function(a,g,h){e[e.length]=c.call(b,a,g,h)});if(a.length===+a.length)e.length=a.length;return e};b.reduce=b.foldl=b.inject=function(a,c,d,e){var f=arguments.length>2;a==
+null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect=
+function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e=
+e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck=
+function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b<e.computed&&(e={value:a,computed:b})});
+return e.value};b.shuffle=function(a){var b=[],d;j(a,function(a,f){f==0?b[0]=a:(d=Math.floor(Math.random()*(f+1)),b[f]=b[d],b[d]=a)});return b};b.sortBy=function(a,c,d){return b.pluck(b.map(a,function(a,b,g){return{value:a,criteria:c.call(d,a,b,g)}}).sort(function(a,b){var c=a.criteria,d=b.criteria;return c<d?-1:c>d?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a,
+c,d){d||(d=b.identity);for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?e=g+1:f=g}return e};b.toArray=function(a){return!a?[]:a.toArray?a.toArray():b.isArray(a)?i.call(a):b.isArguments(a)?i.call(a):b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=b.head=function(a,b,d){return b!=null&&!d?i.call(a,0,b):a[0]};b.initial=function(a,b,d){return i.call(a,0,a.length-(b==null||d?1:b))};b.last=function(a,b,d){return b!=null&&!d?i.call(a,Math.max(a.length-b,0)):a[a.length-1]};b.rest=
+b.tail=function(a,b,d){return i.call(a,b==null||d?1:b)};b.compact=function(a){return b.filter(a,function(a){return!!a})};b.flatten=function(a,c){return b.reduce(a,function(a,e){if(b.isArray(e))return a.concat(c?e:b.flatten(e));a[a.length]=e;return a},[])};b.without=function(a){return b.difference(a,i.call(arguments,1))};b.uniq=b.unique=function(a,c,d){var d=d?b.map(a,d):a,e=[];b.reduce(d,function(d,g,h){if(0==h||(c===true?b.last(d)!=g:!b.include(d,g)))d[d.length]=g,e[e.length]=a[h];return d},[]);
+return e};b.union=function(){return b.uniq(b.flatten(arguments,true))};b.intersection=b.intersect=function(a){var c=i.call(arguments,1);return b.filter(b.uniq(a),function(a){return b.every(c,function(c){return b.indexOf(c,a)>=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e<c;e++)d[e]=b.pluck(a,""+e);return d};b.indexOf=function(a,c,
+d){if(a==null)return-1;var e;if(d)return d=b.sortedIndex(a,c),a[d]===c?d:-1;if(p&&a.indexOf===p)return a.indexOf(c);for(d=0,e=a.length;d<e;d++)if(d in a&&a[d]===c)return d;return-1};b.lastIndexOf=function(a,b){if(a==null)return-1;if(D&&a.lastIndexOf===D)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};b.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,e=Math.max(Math.ceil((b-a)/d),0),f=0,g=Array(e);f<e;)g[f++]=a,a+=d;return g};
+var F=function(){};b.bind=function(a,c){var d,e;if(a.bind===s&&s)return s.apply(a,i.call(arguments,1));if(!b.isFunction(a))throw new TypeError;e=i.call(arguments,2);return d=function(){if(!(this instanceof d))return a.apply(c,e.concat(i.call(arguments)));F.prototype=a.prototype;var b=new F,g=a.apply(b,e.concat(i.call(arguments)));return Object(g)===g?g:b}};b.bindAll=function(a){var c=i.call(arguments,1);c.length==0&&(c=b.functions(a));j(c,function(c){a[c]=b.bind(a[c],a)});return a};b.memoize=function(a,
+c){var d={};c||(c=b.identity);return function(){var e=c.apply(this,arguments);return b.has(d,e)?d[e]:d[e]=a.apply(this,arguments)}};b.delay=function(a,b){var d=i.call(arguments,2);return setTimeout(function(){return a.apply(a,d)},b)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(i.call(arguments,1)))};b.throttle=function(a,c){var d,e,f,g,h,i=b.debounce(function(){h=g=false},c);return function(){d=this;e=arguments;var b;f||(f=setTimeout(function(){f=null;h&&a.apply(d,e);i()},c));g?h=true:
+a.apply(d,e);i();g=true}};b.debounce=function(a,b){var d;return function(){var e=this,f=arguments;clearTimeout(d);d=setTimeout(function(){d=null;a.apply(e,f)},b)}};b.once=function(a){var b=false,d;return function(){if(b)return d;b=true;return d=a.apply(this,arguments)}};b.wrap=function(a,b){return function(){var d=[a].concat(i.call(arguments,0));return b.apply(this,d)}};b.compose=function(){var a=arguments;return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};
+b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments,
+1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)};
+b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"};
+b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e<a;e++)b.call(d,e)};b.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};b.mixin=function(a){j(b.functions(a),
+function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+
+u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]=
+function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain=
+true;return this};m.prototype.value=function(){return this._wrapped}}).call(this);