You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by tq...@apache.org on 2026/10/16 21:02:41 UTC
(tvm-site) branch asf-site updated: deploying tirx docs (6a4f354cf444c9ff9bd534cee49f5d9c66152542)
This is an automated email from the ASF dual-hosted git repository.
tqchen pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/tvm-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new aeb695f41dd deploying tirx docs (6a4f354cf444c9ff9bd534cee49f5d9c66152542)
aeb695f41dd is described below
commit aeb695f41dd15e4ec53ab32786acf2763fdb143e
Author: tqchen <ti...@gmail.com>
AuthorDate: Fri Oct 16 20:59:15 2026 +0000
deploying tirx docs (6a4f354cf444c9ff9bd534cee49f5d9c66152542)
---
tirx/.buildinfo | 4 +
tirx/_sources/index.rst | 28 +
.../generated/tvm_tirx.codegen.Executable.rst | 24 +
.../python/generated/tvm_tirx.ir.Expr.rst | 32 +
.../python/generated/tvm_tirx.ir.IRModule.rst | 48 +
.../python/generated/tvm_tirx.ir.Stmt.rst | 33 +
.../python/generated/tvm_tirx.runtime.Module.rst | 47 +
.../python/generated/tvm_tirx.runtime.Tensor.rst | 42 +
.../python/generated/tvm_tirx.target.Target.rst | 43 +
.../python/generated/tvm_tirx.tirx.Function.rst | 46 +
.../python/generated/tvm_tirx.tirx.IndexMap.rst | 40 +
.../python/generated/tvm_tirx.tirx.Layout.rst | 40 +
.../python/generated/tvm_tirx.tirx.TensorType.rst | 48 +
.../python/generated/tvm_tirx.tirx.TileLayout.rst | 50 +
.../python/generated/tvm_tirx.tirx.Var.rst | 38 +
.../python/generated/tvm_tirx.tirx.compile.rst | 6 +
.../python/generated/tvm_tirx.tirx.decl_tensor.rst | 6 +
tirx/_sources/reference/python/index.rst | 78 ++
tirx/_static/base-stemmer.js | 476 +++++++++
tirx/_static/basic.css | 906 +++++++++++++++++
tirx/_static/doctools.js | 150 +++
tirx/_static/documentation_options.js | 13 +
tirx/_static/english-stemmer.js | 1066 ++++++++++++++++++++
tirx/_static/file.png | Bin 0 -> 286 bytes
tirx/_static/images/logo_binder.svg | 19 +
tirx/_static/images/logo_colab.png | Bin 0 -> 7601 bytes
tirx/_static/images/logo_deepnote.svg | 1 +
tirx/_static/images/logo_jupyterhub.svg | 1 +
tirx/_static/images/logo_jupyterlite.svg | 17 +
tirx/_static/language_data.js | 13 +
tirx/_static/locales/ar/LC_MESSAGES/booktheme.mo | Bin 0 -> 1541 bytes
tirx/_static/locales/ar/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/bg/LC_MESSAGES/booktheme.mo | Bin 0 -> 1708 bytes
tirx/_static/locales/bg/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/bn/LC_MESSAGES/booktheme.mo | Bin 0 -> 1646 bytes
tirx/_static/locales/bn/LC_MESSAGES/booktheme.po | 63 ++
tirx/_static/locales/ca/LC_MESSAGES/booktheme.mo | Bin 0 -> 1246 bytes
tirx/_static/locales/ca/LC_MESSAGES/booktheme.po | 66 ++
tirx/_static/locales/cs/LC_MESSAGES/booktheme.mo | Bin 0 -> 1405 bytes
tirx/_static/locales/cs/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/da/LC_MESSAGES/booktheme.mo | Bin 0 -> 1304 bytes
tirx/_static/locales/da/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/de/LC_MESSAGES/booktheme.mo | Bin 0 -> 1388 bytes
tirx/_static/locales/de/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/el/LC_MESSAGES/booktheme.mo | Bin 0 -> 1722 bytes
tirx/_static/locales/el/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/eo/LC_MESSAGES/booktheme.mo | Bin 0 -> 1337 bytes
tirx/_static/locales/eo/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/es/LC_MESSAGES/booktheme.mo | Bin 0 -> 1396 bytes
tirx/_static/locales/es/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/et/LC_MESSAGES/booktheme.mo | Bin 0 -> 1341 bytes
tirx/_static/locales/et/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/fi/LC_MESSAGES/booktheme.mo | Bin 0 -> 1368 bytes
tirx/_static/locales/fi/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/fr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1412 bytes
tirx/_static/locales/fr/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/hr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1402 bytes
tirx/_static/locales/hr/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/hu/LC_MESSAGES/booktheme.mo | Bin 0 -> 1422 bytes
tirx/_static/locales/hu/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/id/LC_MESSAGES/booktheme.mo | Bin 0 -> 1323 bytes
tirx/_static/locales/id/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/it/LC_MESSAGES/booktheme.mo | Bin 0 -> 1403 bytes
tirx/_static/locales/it/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/iw/LC_MESSAGES/booktheme.mo | Bin 0 -> 1445 bytes
tirx/_static/locales/iw/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/ja/LC_MESSAGES/booktheme.mo | Bin 0 -> 1471 bytes
tirx/_static/locales/ja/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/ko/LC_MESSAGES/booktheme.mo | Bin 0 -> 1375 bytes
tirx/_static/locales/ko/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/lt/LC_MESSAGES/booktheme.mo | Bin 0 -> 1413 bytes
tirx/_static/locales/lt/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/lv/LC_MESSAGES/booktheme.mo | Bin 0 -> 1404 bytes
tirx/_static/locales/lv/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/ml/LC_MESSAGES/booktheme.mo | Bin 0 -> 1883 bytes
tirx/_static/locales/ml/LC_MESSAGES/booktheme.po | 66 ++
tirx/_static/locales/mr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1674 bytes
tirx/_static/locales/mr/LC_MESSAGES/booktheme.po | 66 ++
tirx/_static/locales/ms/LC_MESSAGES/booktheme.mo | Bin 0 -> 1213 bytes
tirx/_static/locales/ms/LC_MESSAGES/booktheme.po | 66 ++
tirx/_static/locales/nl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1356 bytes
tirx/_static/locales/nl/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/no/LC_MESSAGES/booktheme.mo | Bin 0 -> 1317 bytes
tirx/_static/locales/no/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/pl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1371 bytes
tirx/_static/locales/pl/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/pt/LC_MESSAGES/booktheme.mo | Bin 0 -> 1364 bytes
tirx/_static/locales/pt/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/ro/LC_MESSAGES/booktheme.mo | Bin 0 -> 1390 bytes
tirx/_static/locales/ro/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/ru/LC_MESSAGES/booktheme.mo | Bin 0 -> 1729 bytes
tirx/_static/locales/ru/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/sk/LC_MESSAGES/booktheme.mo | Bin 0 -> 1393 bytes
tirx/_static/locales/sk/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/sl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1374 bytes
tirx/_static/locales/sl/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/sr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1679 bytes
tirx/_static/locales/sr/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/sv/LC_MESSAGES/booktheme.mo | Bin 0 -> 1365 bytes
tirx/_static/locales/sv/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/ta/LC_MESSAGES/booktheme.mo | Bin 0 -> 1928 bytes
tirx/_static/locales/ta/LC_MESSAGES/booktheme.po | 66 ++
tirx/_static/locales/te/LC_MESSAGES/booktheme.mo | Bin 0 -> 1806 bytes
tirx/_static/locales/te/LC_MESSAGES/booktheme.po | 66 ++
tirx/_static/locales/tg/LC_MESSAGES/booktheme.mo | Bin 0 -> 1628 bytes
tirx/_static/locales/tg/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/th/LC_MESSAGES/booktheme.mo | Bin 0 -> 1766 bytes
tirx/_static/locales/th/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/tl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1273 bytes
tirx/_static/locales/tl/LC_MESSAGES/booktheme.po | 66 ++
tirx/_static/locales/tr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1373 bytes
tirx/_static/locales/tr/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/uk/LC_MESSAGES/booktheme.mo | Bin 0 -> 1681 bytes
tirx/_static/locales/uk/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/locales/ur/LC_MESSAGES/booktheme.mo | Bin 0 -> 1462 bytes
tirx/_static/locales/ur/LC_MESSAGES/booktheme.po | 66 ++
tirx/_static/locales/vi/LC_MESSAGES/booktheme.mo | Bin 0 -> 1431 bytes
tirx/_static/locales/vi/LC_MESSAGES/booktheme.po | 75 ++
.../_static/locales/zh_CN/LC_MESSAGES/booktheme.mo | Bin 0 -> 1310 bytes
.../_static/locales/zh_CN/LC_MESSAGES/booktheme.po | 75 ++
.../_static/locales/zh_TW/LC_MESSAGES/booktheme.mo | Bin 0 -> 1341 bytes
.../_static/locales/zh_TW/LC_MESSAGES/booktheme.po | 75 ++
tirx/_static/minus.png | Bin 0 -> 90 bytes
tirx/_static/plus.png | Bin 0 -> 90 bytes
tirx/_static/pygments.css | 152 +++
tirx/_static/sbt-webpack-macros.html | 11 +
tirx/_static/scripts/bootstrap.js | 3 +
tirx/_static/scripts/bootstrap.js.LICENSE.txt | 5 +
tirx/_static/scripts/bootstrap.js.map | 1 +
tirx/_static/scripts/fontawesome.js | 3 +
tirx/_static/scripts/fontawesome.js.LICENSE.txt | 5 +
tirx/_static/scripts/fontawesome.js.map | 1 +
tirx/_static/scripts/pydata-sphinx-theme.js | 2 +
tirx/_static/scripts/pydata-sphinx-theme.js.map | 1 +
tirx/_static/scripts/sphinx-book-theme.js | 2 +
tirx/_static/scripts/sphinx-book-theme.js.map | 1 +
tirx/_static/searchtools.js | 693 +++++++++++++
tirx/_static/sphinx_highlight.js | 159 +++
tirx/_static/styles/pydata-sphinx-theme.css | 27 +
tirx/_static/styles/pydata-sphinx-theme.css.map | 1 +
tirx/_static/styles/sphinx-book-theme.css | 16 +
tirx/_static/styles/sphinx-book-theme.css.map | 1 +
tirx/_static/styles/theme.css | 2 +
.../fontawesome/webfonts/fa-brands-400.woff2 | Bin 0 -> 110088 bytes
.../fontawesome/webfonts/fa-regular-400.woff2 | Bin 0 -> 18924 bytes
.../vendor/fontawesome/webfonts/fa-solid-900.woff2 | Bin 0 -> 114740 bytes
tirx/_static/webpack-macros.html | 24 +
tirx/commit_hash | 1 +
tirx/genindex.html | 536 ++++++++++
tirx/index.html | 475 +++++++++
tirx/objects.inv | Bin 0 -> 914 bytes
tirx/py-modindex.html | 397 ++++++++
.../generated/tvm_tirx.codegen.Executable.html | 497 +++++++++
.../python/generated/tvm_tirx.ir.Expr.html | 521 ++++++++++
.../python/generated/tvm_tirx.ir.IRModule.html | 575 +++++++++++
.../python/generated/tvm_tirx.ir.Stmt.html | 524 ++++++++++
.../python/generated/tvm_tirx.runtime.Module.html | 612 +++++++++++
.../python/generated/tvm_tirx.runtime.Tensor.html | 557 ++++++++++
.../python/generated/tvm_tirx.target.Target.html | 630 ++++++++++++
.../python/generated/tvm_tirx.tirx.Function.html | 574 +++++++++++
.../python/generated/tvm_tirx.tirx.IndexMap.html | 558 ++++++++++
.../python/generated/tvm_tirx.tirx.Layout.html | 544 ++++++++++
.../python/generated/tvm_tirx.tirx.TensorType.html | 579 +++++++++++
.../python/generated/tvm_tirx.tirx.TileLayout.html | 575 +++++++++++
.../python/generated/tvm_tirx.tirx.Var.html | 548 ++++++++++
.../python/generated/tvm_tirx.tirx.compile.html | 495 +++++++++
.../generated/tvm_tirx.tirx.decl_tensor.html | 479 +++++++++
tirx/reference/python/index.html | 578 +++++++++++
tirx/search.html | 387 +++++++
tirx/searchindex.js | 1 +
170 files changed, 18434 insertions(+)
diff --git a/tirx/.buildinfo b/tirx/.buildinfo
new file mode 100644
index 00000000000..9a6d0b88beb
--- /dev/null
+++ b/tirx/.buildinfo
@@ -0,0 +1,4 @@
+# Sphinx build info version 1
+# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
+config: 3f05d14c37c3c414ebd9d51e67b7368d
+tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/tirx/_sources/index.rst b/tirx/_sources/index.rst
new file mode 100644
index 00000000000..5abf08212fc
--- /dev/null
+++ b/tirx/_sources/index.rst
@@ -0,0 +1,28 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+Apache TVM TIRx Documentation
+==============================
+
+Table of Contents
+-----------------
+
+.. toctree::
+ :maxdepth: 1
+ :caption: Reference
+
+ reference/python/index.rst
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.codegen.Executable.rst b/tirx/_sources/reference/python/generated/tvm_tirx.codegen.Executable.rst
new file mode 100644
index 00000000000..e2fd71df638
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.codegen.Executable.rst
@@ -0,0 +1,24 @@
+tvm\_tirx.codegen.Executable
+============================
+
+.. currentmodule:: tvm_tirx.codegen
+
+.. autoclass:: Executable
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~Executable.__init__
+ ~Executable.export_library
+ ~Executable.jit
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.ir.Expr.rst b/tirx/_sources/reference/python/generated/tvm_tirx.ir.Expr.rst
new file mode 100644
index 00000000000..3b6d6694b63
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.ir.Expr.rst
@@ -0,0 +1,32 @@
+tvm\_tirx.ir.Expr
+=================
+
+.. currentmodule:: tvm_tirx.ir
+
+.. autoclass:: Expr
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~Expr.__init__
+ ~Expr.is_
+ ~Expr.same_as
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~Expr.id_
+ ~Expr.loc
+ ~Expr.ty
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.ir.IRModule.rst b/tirx/_sources/reference/python/generated/tvm_tirx.ir.IRModule.rst
new file mode 100644
index 00000000000..5642b0a8584
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.ir.IRModule.rst
@@ -0,0 +1,48 @@
+tvm\_tirx.ir.IRModule
+=====================
+
+.. currentmodule:: tvm_tirx.ir
+
+.. autoclass:: IRModule
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~IRModule.__init__
+ ~IRModule.clone
+ ~IRModule.from_expr
+ ~IRModule.functions_items
+ ~IRModule.get_attr
+ ~IRModule.get_global_var
+ ~IRModule.get_global_vars
+ ~IRModule.is_
+ ~IRModule.same_as
+ ~IRModule.script
+ ~IRModule.show
+ ~IRModule.update
+ ~IRModule.update_func
+ ~IRModule.update_global_info
+ ~IRModule.with_attr
+ ~IRModule.with_attrs
+ ~IRModule.without_attr
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~IRModule.attrs
+ ~IRModule.functions
+ ~IRModule.global_infos
+ ~IRModule.global_var_map_
+ ~IRModule.id_
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.ir.Stmt.rst b/tirx/_sources/reference/python/generated/tvm_tirx.ir.Stmt.rst
new file mode 100644
index 00000000000..625710ff230
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.ir.Stmt.rst
@@ -0,0 +1,33 @@
+tvm\_tirx.ir.Stmt
+=================
+
+.. currentmodule:: tvm_tirx.ir
+
+.. autoclass:: Stmt
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~Stmt.__init__
+ ~Stmt.is_
+ ~Stmt.same_as
+ ~Stmt.script
+ ~Stmt.show
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~Stmt.id_
+ ~Stmt.loc
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.runtime.Module.rst b/tirx/_sources/reference/python/generated/tvm_tirx.runtime.Module.rst
new file mode 100644
index 00000000000..5d67d50f85f
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.runtime.Module.rst
@@ -0,0 +1,47 @@
+tvm\_tirx.runtime.Module
+========================
+
+.. currentmodule:: tvm_tirx.runtime
+
+.. autoclass:: Module
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~Module.__init__
+ ~Module.clear_imports
+ ~Module.get_function
+ ~Module.get_function_doc
+ ~Module.get_function_metadata
+ ~Module.get_property_mask
+ ~Module.get_write_formats
+ ~Module.implements_function
+ ~Module.import_module
+ ~Module.inspect_source
+ ~Module.is_
+ ~Module.is_binary_serializable
+ ~Module.is_compilation_exportable
+ ~Module.is_runnable
+ ~Module.same_as
+ ~Module.write_to_file
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~Module.entry_name
+ ~Module.id_
+ ~Module.imports
+ ~Module.imports_
+ ~Module.kind
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.runtime.Tensor.rst b/tirx/_sources/reference/python/generated/tvm_tirx.runtime.Tensor.rst
new file mode 100644
index 00000000000..478b5f3a958
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.runtime.Tensor.rst
@@ -0,0 +1,42 @@
+tvm\_tirx.runtime.Tensor
+========================
+
+.. currentmodule:: tvm_tirx.runtime
+
+.. autoclass:: Tensor
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~Tensor.__init__
+ ~Tensor.copyfrom
+ ~Tensor.copyto
+ ~Tensor.data_ptr
+ ~Tensor.is_
+ ~Tensor.is_contiguous
+ ~Tensor.numel
+ ~Tensor.numpy
+ ~Tensor.same_as
+ ~Tensor.size
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~Tensor.device
+ ~Tensor.dtype
+ ~Tensor.id_
+ ~Tensor.ndim
+ ~Tensor.shape
+ ~Tensor.strides
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.target.Target.rst b/tirx/_sources/reference/python/generated/tvm_tirx.target.Target.rst
new file mode 100644
index 00000000000..8e46288b17f
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.target.Target.rst
@@ -0,0 +1,43 @@
+tvm\_tirx.target.Target
+=======================
+
+.. currentmodule:: tvm_tirx.target
+
+.. autoclass:: Target
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~Target.__init__
+ ~Target.current
+ ~Target.export
+ ~Target.from_device
+ ~Target.get_target_device_type
+ ~Target.is_
+ ~Target.list_kinds
+ ~Target.same_as
+ ~Target.target_or_current
+ ~Target.with_host
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~Target.attrs
+ ~Target.features
+ ~Target.host
+ ~Target.id_
+ ~Target.keys
+ ~Target.kind
+ ~Target.tag
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.tirx.Function.rst b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.Function.rst
new file mode 100644
index 00000000000..fc33ce55354
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.Function.rst
@@ -0,0 +1,46 @@
+tvm\_tirx.tirx.Function
+=======================
+
+.. currentmodule:: tvm_tirx.tirx
+
+.. autoclass:: Function
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~Function.__init__
+ ~Function.astype
+ ~Function.equal
+ ~Function.expr_ty
+ ~Function.is_
+ ~Function.same_as
+ ~Function.script
+ ~Function.show
+ ~Function.specialize
+ ~Function.with_attr
+ ~Function.with_attrs
+ ~Function.with_body
+ ~Function.without_attr
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~Function.attrs
+ ~Function.body
+ ~Function.id_
+ ~Function.loc
+ ~Function.params
+ ~Function.ret_type
+ ~Function.ty
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.tirx.IndexMap.rst b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.IndexMap.rst
new file mode 100644
index 00000000000..4558e521901
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.IndexMap.rst
@@ -0,0 +1,40 @@
+tvm\_tirx.tirx.IndexMap
+=======================
+
+.. currentmodule:: tvm_tirx.tirx
+
+.. autoclass:: IndexMap
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~IndexMap.__init__
+ ~IndexMap.from_func
+ ~IndexMap.inverse
+ ~IndexMap.is_
+ ~IndexMap.is_equivalent_to
+ ~IndexMap.map_indices
+ ~IndexMap.map_shape
+ ~IndexMap.map_tensor
+ ~IndexMap.non_surjective_inverse
+ ~IndexMap.same_as
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~IndexMap.final_indices
+ ~IndexMap.id_
+ ~IndexMap.initial_indices
+ ~IndexMap.inverse_index_map
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.tirx.Layout.rst b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.Layout.rst
new file mode 100644
index 00000000000..c5a9dd2479e
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.Layout.rst
@@ -0,0 +1,40 @@
+tvm\_tirx.tirx.Layout
+=====================
+
+.. currentmodule:: tvm_tirx.tirx
+
+.. autoclass:: Layout
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~Layout.__init__
+ ~Layout.apply
+ ~Layout.canonicalize
+ ~Layout.is_
+ ~Layout.is_trivial
+ ~Layout.pack
+ ~Layout.same_as
+ ~Layout.size
+ ~Layout.span
+ ~Layout.tile
+ ~Layout.tile_to
+ ~Layout.unpack
+ ~Layout.verify_well_formed
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~Layout.id_
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.tirx.TensorType.rst b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.TensorType.rst
new file mode 100644
index 00000000000..34e54d05acf
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.TensorType.rst
@@ -0,0 +1,48 @@
+tvm\_tirx.tirx.TensorType
+=========================
+
+.. currentmodule:: tvm_tirx.tirx
+
+.. autoclass:: TensorType
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~TensorType.__init__
+ ~TensorType.effective_layout
+ ~TensorType.is_
+ ~TensorType.is_scalar
+ ~TensorType.missing
+ ~TensorType.permute
+ ~TensorType.ptr_to
+ ~TensorType.rearrange
+ ~TensorType.same_as
+ ~TensorType.script
+ ~TensorType.show
+ ~TensorType.view
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~TensorType.data_alignment
+ ~TensorType.dtype
+ ~TensorType.elem_offset
+ ~TensorType.id_
+ ~TensorType.layout
+ ~TensorType.loc
+ ~TensorType.offset_factor
+ ~TensorType.scope
+ ~TensorType.shape
+ ~TensorType.strides
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.tirx.TileLayout.rst b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.TileLayout.rst
new file mode 100644
index 00000000000..a173ec5cce7
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.TileLayout.rst
@@ -0,0 +1,50 @@
+tvm\_tirx.tirx.TileLayout
+=========================
+
+.. currentmodule:: tvm_tirx.tirx
+
+.. autoclass:: TileLayout
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~TileLayout.__init__
+ ~TileLayout.apply
+ ~TileLayout.canonicalize
+ ~TileLayout.from_iters
+ ~TileLayout.get_scope
+ ~TileLayout.group
+ ~TileLayout.is_
+ ~TileLayout.is_trivial
+ ~TileLayout.pack
+ ~TileLayout.permute_by_groups
+ ~TileLayout.permute_dims
+ ~TileLayout.same_as
+ ~TileLayout.size
+ ~TileLayout.span
+ ~TileLayout.tile
+ ~TileLayout.tile_to
+ ~TileLayout.unpack
+ ~TileLayout.verify_well_formed
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~TileLayout.id_
+ ~TileLayout.offset
+ ~TileLayout.replica
+ ~TileLayout.shard
+ ~TileLayout.replicate
+ ~TileLayout.exclude
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.tirx.Var.rst b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.Var.rst
new file mode 100644
index 00000000000..bde5a7129df
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.Var.rst
@@ -0,0 +1,38 @@
+tvm\_tirx.tirx.Var
+==================
+
+.. currentmodule:: tvm_tirx.tirx
+
+.. autoclass:: Var
+
+
+ .. automethod:: __init__
+
+
+ .. rubric:: Methods
+
+ .. autosummary::
+
+ ~Var.__init__
+ ~Var.astype
+ ~Var.equal
+ ~Var.expr_ty
+ ~Var.is_
+ ~Var.same_as
+ ~Var.script
+ ~Var.show
+
+
+
+
+
+ .. rubric:: Attributes
+
+ .. autosummary::
+
+ ~Var.id_
+ ~Var.loc
+ ~Var.name
+ ~Var.ty
+
+
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.tirx.compile.rst b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.compile.rst
new file mode 100644
index 00000000000..3b6ecdc16f4
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.compile.rst
@@ -0,0 +1,6 @@
+tvm\_tirx.tirx.compile
+======================
+
+.. currentmodule:: tvm_tirx.tirx
+
+.. autofunction:: compile
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/generated/tvm_tirx.tirx.decl_tensor.rst b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.decl_tensor.rst
new file mode 100644
index 00000000000..6f6cb795b52
--- /dev/null
+++ b/tirx/_sources/reference/python/generated/tvm_tirx.tirx.decl_tensor.rst
@@ -0,0 +1,6 @@
+tvm\_tirx.tirx.decl\_tensor
+===========================
+
+.. currentmodule:: tvm_tirx.tirx
+
+.. autofunction:: decl_tensor
\ No newline at end of file
diff --git a/tirx/_sources/reference/python/index.rst b/tirx/_sources/reference/python/index.rst
new file mode 100644
index 00000000000..6c5442af574
--- /dev/null
+++ b/tirx/_sources/reference/python/index.rst
@@ -0,0 +1,78 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+Python API
+==========
+
+.. automodule:: tvm_tirx
+ :no-members:
+
+.. currentmodule:: tvm_tirx
+
+.. contents:: Table of Contents
+ :local:
+ :depth: 2
+
+IR
+--
+
+.. autosummary::
+ :toctree: generated/
+
+ ir.IRModule
+ ir.Expr
+ ir.Stmt
+
+TIRx
+----
+
+.. autosummary::
+ :toctree: generated/
+
+ tirx.Function
+ tirx.Var
+ tirx.TensorType
+ tirx.decl_tensor
+ tirx.IndexMap
+ tirx.Layout
+ tirx.TileLayout
+ tirx.compile
+
+Target
+------
+
+.. autosummary::
+ :toctree: generated/
+
+ target.Target
+
+Runtime
+-------
+
+.. autosummary::
+ :toctree: generated/
+
+ runtime.Tensor
+ runtime.Module
+
+Code Generation
+---------------
+
+.. autosummary::
+ :toctree: generated/
+
+ codegen.Executable
diff --git a/tirx/_static/base-stemmer.js b/tirx/_static/base-stemmer.js
new file mode 100644
index 00000000000..e6fa0c49260
--- /dev/null
+++ b/tirx/_static/base-stemmer.js
@@ -0,0 +1,476 @@
+// @ts-check
+
+/**@constructor*/
+BaseStemmer = function() {
+ /** @protected */
+ this.current = '';
+ this.cursor = 0;
+ this.limit = 0;
+ this.limit_backward = 0;
+ this.bra = 0;
+ this.ket = 0;
+
+ /**
+ * @param {string} value
+ */
+ this.setCurrent = function(value) {
+ this.current = value;
+ this.cursor = 0;
+ this.limit = this.current.length;
+ this.limit_backward = 0;
+ this.bra = this.cursor;
+ this.ket = this.limit;
+ };
+
+ /**
+ * @return {string}
+ */
+ this.getCurrent = function() {
+ return this.current;
+ };
+
+ /**
+ * @param {BaseStemmer} other
+ */
+ this.copy_from = function(other) {
+ /** @protected */
+ this.current = other.current;
+ this.cursor = other.cursor;
+ this.limit = other.limit;
+ this.limit_backward = other.limit_backward;
+ this.bra = other.bra;
+ this.ket = other.ket;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.in_grouping = function(s, min, max) {
+ /** @protected */
+ if (this.cursor >= this.limit) return false;
+ var ch = this.current.charCodeAt(this.cursor);
+ if (ch > max || ch < min) return false;
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
+ this.cursor++;
+ return true;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.go_in_grouping = function(s, min, max) {
+ /** @protected */
+ while (this.cursor < this.limit) {
+ var ch = this.current.charCodeAt(this.cursor);
+ if (ch > max || ch < min)
+ return true;
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0)
+ return true;
+ this.cursor++;
+ }
+ return false;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.in_grouping_b = function(s, min, max) {
+ /** @protected */
+ if (this.cursor <= this.limit_backward) return false;
+ var ch = this.current.charCodeAt(this.cursor - 1);
+ if (ch > max || ch < min) return false;
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return false;
+ this.cursor--;
+ return true;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.go_in_grouping_b = function(s, min, max) {
+ /** @protected */
+ while (this.cursor > this.limit_backward) {
+ var ch = this.current.charCodeAt(this.cursor - 1);
+ if (ch > max || ch < min) return true;
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) return true;
+ this.cursor--;
+ }
+ return false;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.out_grouping = function(s, min, max) {
+ /** @protected */
+ if (this.cursor >= this.limit) return false;
+ var ch = this.current.charCodeAt(this.cursor);
+ if (ch > max || ch < min) {
+ this.cursor++;
+ return true;
+ }
+ ch -= min;
+ if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) == 0) {
+ this.cursor++;
+ return true;
+ }
+ return false;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.go_out_grouping = function(s, min, max) {
+ /** @protected */
+ while (this.cursor < this.limit) {
+ var ch = this.current.charCodeAt(this.cursor);
+ if (ch <= max && ch >= min) {
+ ch -= min;
+ if ((s[ch >>> 3] & (0X1 << (ch & 0x7))) != 0) {
+ return true;
+ }
+ }
+ this.cursor++;
+ }
+ return false;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.out_grouping_b = function(s, min, max) {
+ /** @protected */
+ if (this.cursor <= this.limit_backward) return false;
+ var ch = this.current.charCodeAt(this.cursor - 1);
+ if (ch > max || ch < min) {
+ this.cursor--;
+ return true;
+ }
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) == 0) {
+ this.cursor--;
+ return true;
+ }
+ return false;
+ };
+
+ /**
+ * @param {number[]} s
+ * @param {number} min
+ * @param {number} max
+ * @return {boolean}
+ */
+ this.go_out_grouping_b = function(s, min, max) {
+ /** @protected */
+ while (this.cursor > this.limit_backward) {
+ var ch = this.current.charCodeAt(this.cursor - 1);
+ if (ch <= max && ch >= min) {
+ ch -= min;
+ if ((s[ch >>> 3] & (0x1 << (ch & 0x7))) != 0) {
+ return true;
+ }
+ }
+ this.cursor--;
+ }
+ return false;
+ };
+
+ /**
+ * @param {string} s
+ * @return {boolean}
+ */
+ this.eq_s = function(s)
+ {
+ /** @protected */
+ if (this.limit - this.cursor < s.length) return false;
+ if (this.current.slice(this.cursor, this.cursor + s.length) != s)
+ {
+ return false;
+ }
+ this.cursor += s.length;
+ return true;
+ };
+
+ /**
+ * @param {string} s
+ * @return {boolean}
+ */
+ this.eq_s_b = function(s)
+ {
+ /** @protected */
+ if (this.cursor - this.limit_backward < s.length) return false;
+ if (this.current.slice(this.cursor - s.length, this.cursor) != s)
+ {
+ return false;
+ }
+ this.cursor -= s.length;
+ return true;
+ };
+
+ /**
+ * @param {Among[]} v
+ * @return {number}
+ */
+ this.find_among = function(v)
+ {
+ /** @protected */
+ var i = 0;
+ var j = v.length;
+
+ var c = this.cursor;
+ var l = this.limit;
+
+ var common_i = 0;
+ var common_j = 0;
+
+ var first_key_inspected = false;
+
+ while (true)
+ {
+ var k = i + ((j - i) >>> 1);
+ var diff = 0;
+ var common = common_i < common_j ? common_i : common_j; // smaller
+ // w[0]: string, w[1]: substring_i, w[2]: result, w[3]: function (optional)
+ var w = v[k];
+ var i2;
+ for (i2 = common; i2 < w[0].length; i2++)
+ {
+ if (c + common == l)
+ {
+ diff = -1;
+ break;
+ }
+ diff = this.current.charCodeAt(c + common) - w[0].charCodeAt(i2);
+ if (diff != 0) break;
+ common++;
+ }
+ if (diff < 0)
+ {
+ j = k;
+ common_j = common;
+ }
+ else
+ {
+ i = k;
+ common_i = common;
+ }
+ if (j - i <= 1)
+ {
+ if (i > 0) break; // v->s has been inspected
+ if (j == i) break; // only one item in v
+
+ // - but now we need to go round once more to get
+ // v->s inspected. This looks messy, but is actually
+ // the optimal approach.
+
+ if (first_key_inspected) break;
+ first_key_inspected = true;
+ }
+ }
+ do {
+ var w = v[i];
+ if (common_i >= w[0].length)
+ {
+ this.cursor = c + w[0].length;
+ if (w.length < 4) return w[2];
+ var res = w[3](this);
+ this.cursor = c + w[0].length;
+ if (res) return w[2];
+ }
+ i = w[1];
+ } while (i >= 0);
+ return 0;
+ };
+
+ // find_among_b is for backwards processing. Same comments apply
+ /**
+ * @param {Among[]} v
+ * @return {number}
+ */
+ this.find_among_b = function(v)
+ {
+ /** @protected */
+ var i = 0;
+ var j = v.length
+
+ var c = this.cursor;
+ var lb = this.limit_backward;
+
+ var common_i = 0;
+ var common_j = 0;
+
+ var first_key_inspected = false;
+
+ while (true)
+ {
+ var k = i + ((j - i) >> 1);
+ var diff = 0;
+ var common = common_i < common_j ? common_i : common_j;
+ var w = v[k];
+ var i2;
+ for (i2 = w[0].length - 1 - common; i2 >= 0; i2--)
+ {
+ if (c - common == lb)
+ {
+ diff = -1;
+ break;
+ }
+ diff = this.current.charCodeAt(c - 1 - common) - w[0].charCodeAt(i2);
+ if (diff != 0) break;
+ common++;
+ }
+ if (diff < 0)
+ {
+ j = k;
+ common_j = common;
+ }
+ else
+ {
+ i = k;
+ common_i = common;
+ }
+ if (j - i <= 1)
+ {
+ if (i > 0) break;
+ if (j == i) break;
+ if (first_key_inspected) break;
+ first_key_inspected = true;
+ }
+ }
+ do {
+ var w = v[i];
+ if (common_i >= w[0].length)
+ {
+ this.cursor = c - w[0].length;
+ if (w.length < 4) return w[2];
+ var res = w[3](this);
+ this.cursor = c - w[0].length;
+ if (res) return w[2];
+ }
+ i = w[1];
+ } while (i >= 0);
+ return 0;
+ };
+
+ /* to replace chars between c_bra and c_ket in this.current by the
+ * chars in s.
+ */
+ /**
+ * @param {number} c_bra
+ * @param {number} c_ket
+ * @param {string} s
+ * @return {number}
+ */
+ this.replace_s = function(c_bra, c_ket, s)
+ {
+ /** @protected */
+ var adjustment = s.length - (c_ket - c_bra);
+ this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket);
+ this.limit += adjustment;
+ if (this.cursor >= c_ket) this.cursor += adjustment;
+ else if (this.cursor > c_bra) this.cursor = c_bra;
+ return adjustment;
+ };
+
+ /**
+ * @return {boolean}
+ */
+ this.slice_check = function()
+ {
+ /** @protected */
+ if (this.bra < 0 ||
+ this.bra > this.ket ||
+ this.ket > this.limit ||
+ this.limit > this.current.length)
+ {
+ return false;
+ }
+ return true;
+ };
+
+ /**
+ * @param {number} c_bra
+ * @return {boolean}
+ */
+ this.slice_from = function(s)
+ {
+ /** @protected */
+ var result = false;
+ if (this.slice_check())
+ {
+ this.replace_s(this.bra, this.ket, s);
+ result = true;
+ }
+ return result;
+ };
+
+ /**
+ * @return {boolean}
+ */
+ this.slice_del = function()
+ {
+ /** @protected */
+ return this.slice_from("");
+ };
+
+ /**
+ * @param {number} c_bra
+ * @param {number} c_ket
+ * @param {string} s
+ */
+ this.insert = function(c_bra, c_ket, s)
+ {
+ /** @protected */
+ var adjustment = this.replace_s(c_bra, c_ket, s);
+ if (c_bra <= this.bra) this.bra += adjustment;
+ if (c_bra <= this.ket) this.ket += adjustment;
+ };
+
+ /**
+ * @return {string}
+ */
+ this.slice_to = function()
+ {
+ /** @protected */
+ var result = '';
+ if (this.slice_check())
+ {
+ result = this.current.slice(this.bra, this.ket);
+ }
+ return result;
+ };
+
+ /**
+ * @return {string}
+ */
+ this.assign_to = function()
+ {
+ /** @protected */
+ return this.current.slice(0, this.limit);
+ };
+};
diff --git a/tirx/_static/basic.css b/tirx/_static/basic.css
new file mode 100644
index 00000000000..4738b2edc4c
--- /dev/null
+++ b/tirx/_static/basic.css
@@ -0,0 +1,906 @@
+/*
+ * Sphinx stylesheet -- basic theme.
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+ clear: both;
+}
+
+div.section::after {
+ display: block;
+ content: '';
+ clear: left;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+ width: 100%;
+ font-size: 90%;
+}
+
+div.related h3 {
+ display: none;
+}
+
+div.related ul {
+ margin: 0;
+ padding: 0 0 0 10px;
+ list-style: none;
+}
+
+div.related li {
+ display: inline;
+}
+
+div.related li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+ padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+ float: left;
+ width: 230px;
+ margin-left: -100%;
+ font-size: 90%;
+ word-wrap: break-word;
+ overflow-wrap : break-word;
+}
+
+div.sphinxsidebar ul {
+ list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+ margin-left: 20px;
+ list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+ margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox form.search {
+ overflow: hidden;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+ float: left;
+ width: 80%;
+ padding: 0.25em;
+ box-sizing: border-box;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+ float: left;
+ width: 20%;
+ border-left: none;
+ padding: 0.25em;
+ box-sizing: border-box;
+}
+
+
+img {
+ border: 0;
+ max-width: 100%;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+ margin-top: 10px;
+}
+
+ul.search li {
+ padding: 5px 0;
+}
+
+ul.search li a {
+ font-weight: bold;
+}
+
+ul.search li p.context {
+ color: #888;
+ margin: 2px 0 0 30px;
+ text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+ font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+ width: 90%;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+table.contentstable p.biglink {
+ line-height: 150%;
+}
+
+a.biglink {
+ font-size: 1.3em;
+}
+
+span.linkdescr {
+ font-style: italic;
+ padding-top: 5px;
+ font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+ width: 100%;
+}
+
+table.indextable td {
+ text-align: left;
+ vertical-align: top;
+}
+
+table.indextable ul {
+ margin-top: 0;
+ margin-bottom: 0;
+ list-style-type: none;
+}
+
+table.indextable > tbody > tr > td > ul {
+ padding-left: 0em;
+}
+
+table.indextable tr.pcap {
+ height: 10px;
+}
+
+table.indextable tr.cap {
+ margin-top: 10px;
+ background-color: #f2f2f2;
+}
+
+img.toggler {
+ margin-right: 3px;
+ margin-top: 3px;
+ cursor: pointer;
+}
+
+div.modindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+/* -- domain module index --------------------------------------------------- */
+
+table.modindextable td {
+ padding: 2px;
+ border-collapse: collapse;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+div.body {
+ min-width: 360px;
+ max-width: 800px;
+}
+
+div.body p, div.body dd, div.body li, div.body blockquote {
+ -moz-hyphens: auto;
+ -ms-hyphens: auto;
+ -webkit-hyphens: auto;
+ hyphens: auto;
+}
+
+a.headerlink {
+ visibility: hidden;
+}
+
+a:visited {
+ color: #551A8B;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink,
+caption:hover > a.headerlink,
+p.caption:hover > a.headerlink,
+div.code-block-caption:hover > a.headerlink {
+ visibility: visible;
+}
+
+div.body p.caption {
+ text-align: inherit;
+}
+
+div.body td {
+ text-align: left;
+}
+
+.first {
+ margin-top: 0 !important;
+}
+
+p.rubric {
+ margin-top: 30px;
+ font-weight: bold;
+}
+
+img.align-left, figure.align-left, .figure.align-left, object.align-left {
+ clear: left;
+ float: left;
+ margin-right: 1em;
+}
+
+img.align-right, figure.align-right, .figure.align-right, object.align-right {
+ clear: right;
+ float: right;
+ margin-left: 1em;
+}
+
+img.align-center, figure.align-center, .figure.align-center, object.align-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+img.align-default, figure.align-default, .figure.align-default {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.align-left {
+ text-align: left;
+}
+
+.align-center {
+ text-align: center;
+}
+
+.align-default {
+ text-align: center;
+}
+
+.align-right {
+ text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar,
+aside.sidebar {
+ margin: 0 0 0.5em 1em;
+ border: 1px solid #ddb;
+ padding: 7px;
+ background-color: #ffe;
+ width: 40%;
+ float: right;
+ clear: right;
+ overflow-x: auto;
+}
+
+p.sidebar-title {
+ font-weight: bold;
+}
+
+nav.contents,
+aside.topic,
+div.admonition, div.topic, blockquote {
+ clear: left;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+nav.contents,
+aside.topic,
+div.topic {
+ border: 1px solid #ccc;
+ padding: 7px;
+ margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ padding: 7px;
+}
+
+div.admonition dt {
+ font-weight: bold;
+}
+
+p.admonition-title {
+ margin: 0px 10px 5px 0px;
+ font-weight: bold;
+}
+
+div.body p.centered {
+ text-align: center;
+ margin-top: 25px;
+}
+
+/* -- content of sidebars/topics/admonitions -------------------------------- */
+
+div.sidebar > :last-child,
+aside.sidebar > :last-child,
+nav.contents > :last-child,
+aside.topic > :last-child,
+div.topic > :last-child,
+div.admonition > :last-child {
+ margin-bottom: 0;
+}
+
+div.sidebar::after,
+aside.sidebar::after,
+nav.contents::after,
+aside.topic::after,
+div.topic::after,
+div.admonition::after,
+blockquote::after {
+ display: block;
+ content: '';
+ clear: both;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ border: 0;
+ border-collapse: collapse;
+}
+
+table.align-center {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+table.align-default {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+table caption span.caption-number {
+ font-style: italic;
+}
+
+table caption span.caption-text {
+}
+
+table.docutils td, table.docutils th {
+ padding: 1px 8px 1px 5px;
+ border-top: 0;
+ border-left: 0;
+ border-right: 0;
+ border-bottom: 1px solid #aaa;
+}
+
+th {
+ text-align: left;
+ padding-right: 5px;
+}
+
+table.citation {
+ border-left: solid 1px gray;
+ margin-left: 1px;
+}
+
+table.citation td {
+ border-bottom: none;
+}
+
+th > :first-child,
+td > :first-child {
+ margin-top: 0px;
+}
+
+th > :last-child,
+td > :last-child {
+ margin-bottom: 0px;
+}
+
+/* -- figures --------------------------------------------------------------- */
+
+div.figure, figure {
+ margin: 0.5em;
+ padding: 0.5em;
+}
+
+div.figure p.caption, figcaption {
+ padding: 0.3em;
+}
+
+div.figure p.caption span.caption-number,
+figcaption span.caption-number {
+ font-style: italic;
+}
+
+div.figure p.caption span.caption-text,
+figcaption span.caption-text {
+}
+
+/* -- field list styles ----------------------------------------------------- */
+
+table.field-list td, table.field-list th {
+ border: 0 !important;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
+
+.field-name {
+ -moz-hyphens: manual;
+ -ms-hyphens: manual;
+ -webkit-hyphens: manual;
+ hyphens: manual;
+}
+
+/* -- hlist styles ---------------------------------------------------------- */
+
+table.hlist {
+ margin: 1em 0;
+}
+
+table.hlist td {
+ vertical-align: top;
+}
+
+/* -- object description styles --------------------------------------------- */
+
+.sig {
+ font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
+}
+
+.sig-name, code.descname {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+.sig-name {
+ font-size: 1.1em;
+}
+
+code.descname {
+ font-size: 1.2em;
+}
+
+.sig-prename, code.descclassname {
+ background-color: transparent;
+}
+
+.optional {
+ font-size: 1.3em;
+}
+
+.sig-paren {
+ font-size: larger;
+}
+
+.sig-param.n {
+ font-style: italic;
+}
+
+/* C++ specific styling */
+
+.sig-inline.c-texpr,
+.sig-inline.cpp-texpr {
+ font-family: unset;
+}
+
+.sig.c .k, .sig.c .kt,
+.sig.cpp .k, .sig.cpp .kt {
+ color: #0033B3;
+}
+
+.sig.c .m,
+.sig.cpp .m {
+ color: #1750EB;
+}
+
+.sig.c .s, .sig.c .sc,
+.sig.cpp .s, .sig.cpp .sc {
+ color: #067D17;
+}
+
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+ list-style: decimal;
+}
+
+ol.loweralpha {
+ list-style: lower-alpha;
+}
+
+ol.upperalpha {
+ list-style: upper-alpha;
+}
+
+ol.lowerroman {
+ list-style: lower-roman;
+}
+
+ol.upperroman {
+ list-style: upper-roman;
+}
+
+:not(li) > ol > li:first-child > :first-child,
+:not(li) > ul > li:first-child > :first-child {
+ margin-top: 0px;
+}
+
+:not(li) > ol > li:last-child > :last-child,
+:not(li) > ul > li:last-child > :last-child {
+ margin-bottom: 0px;
+}
+
+ol.simple ol p,
+ol.simple ul p,
+ul.simple ol p,
+ul.simple ul p {
+ margin-top: 0;
+}
+
+ol.simple > li:not(:first-child) > p,
+ul.simple > li:not(:first-child) > p {
+ margin-top: 0;
+}
+
+ol.simple p,
+ul.simple p {
+ margin-bottom: 0;
+}
+
+aside.footnote > span,
+div.citation > span {
+ float: left;
+}
+aside.footnote > span:last-of-type,
+div.citation > span:last-of-type {
+ padding-right: 0.5em;
+}
+aside.footnote > p {
+ margin-left: 2em;
+}
+div.citation > p {
+ margin-left: 4em;
+}
+aside.footnote > p:last-of-type,
+div.citation > p:last-of-type {
+ margin-bottom: 0em;
+}
+aside.footnote > p:last-of-type:after,
+div.citation > p:last-of-type:after {
+ content: "";
+ clear: both;
+}
+
+dl.field-list {
+ display: grid;
+ grid-template-columns: fit-content(30%) auto;
+}
+
+dl.field-list > dt {
+ font-weight: bold;
+ word-break: break-word;
+ padding-left: 0.5em;
+ padding-right: 5px;
+}
+
+dl.field-list > dd {
+ padding-left: 0.5em;
+ margin-top: 0em;
+ margin-left: 0em;
+ margin-bottom: 0em;
+}
+
+dl {
+ margin-bottom: 15px;
+}
+
+dd > :first-child {
+ margin-top: 0px;
+}
+
+dd ul, dd table {
+ margin-bottom: 10px;
+}
+
+dd {
+ margin-top: 3px;
+ margin-bottom: 10px;
+ margin-left: 30px;
+}
+
+.sig dd {
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+
+.sig dl {
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+
+dl > dd:last-child,
+dl > dd:last-child > :last-child {
+ margin-bottom: 0;
+}
+
+dt:target, span.highlighted {
+ background-color: #fbe54e;
+}
+
+rect.highlighted {
+ fill: #fbe54e;
+}
+
+dl.glossary dt {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.versionmodified {
+ font-style: italic;
+}
+
+.system-message {
+ background-color: #fda;
+ padding: 5px;
+ border: 3px solid red;
+}
+
+.footnote:target {
+ background-color: #ffa;
+}
+
+.line-block {
+ display: block;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+.line-block .line-block {
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+ font-family: sans-serif;
+}
+
+.accelerator {
+ text-decoration: underline;
+}
+
+.classifier {
+ font-style: oblique;
+}
+
+.classifier:before {
+ font-style: normal;
+ margin: 0 0.5em;
+ content: ":";
+ display: inline-block;
+}
+
+abbr, acronym {
+ border-bottom: dotted 1px;
+ cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+ overflow: auto;
+ overflow-y: hidden; /* fixes display issues on Chrome browsers */
+}
+
+pre, div[class*="highlight-"] {
+ clear: both;
+}
+
+span.pre {
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ -webkit-hyphens: none;
+ hyphens: none;
+ white-space: nowrap;
+}
+
+div[class*="highlight-"] {
+ margin: 1em 0;
+}
+
+td.linenos pre {
+ border: 0;
+ background-color: transparent;
+ color: #aaa;
+}
+
+table.highlighttable {
+ display: block;
+}
+
+table.highlighttable tbody {
+ display: block;
+}
+
+table.highlighttable tr {
+ display: flex;
+}
+
+table.highlighttable td {
+ margin: 0;
+ padding: 0;
+}
+
+table.highlighttable td.linenos {
+ padding-right: 0.5em;
+}
+
+table.highlighttable td.code {
+ flex: 1;
+ overflow: hidden;
+}
+
+.highlight .hll {
+ display: block;
+}
+
+div.highlight pre,
+table.highlighttable pre {
+ margin: 0;
+}
+
+div.code-block-caption + div {
+ margin-top: 0;
+}
+
+div.code-block-caption {
+ margin-top: 1em;
+ padding: 2px 5px;
+ font-size: small;
+}
+
+div.code-block-caption code {
+ background-color: transparent;
+}
+
+table.highlighttable td.linenos,
+span.linenos,
+div.highlight span.gp { /* gp: Generic.Prompt */
+ user-select: none;
+ -webkit-user-select: text; /* Safari fallback only */
+ -webkit-user-select: none; /* Chrome/Safari */
+ -moz-user-select: none; /* Firefox */
+ -ms-user-select: none; /* IE10+ */
+}
+
+div.code-block-caption span.caption-number {
+ padding: 0.1em 0.3em;
+ font-style: italic;
+}
+
+div.code-block-caption span.caption-text {
+}
+
+div.literal-block-wrapper {
+ margin: 1em 0;
+}
+
+code.xref, a code {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
+ background-color: transparent;
+}
+
+.viewcode-link {
+ float: right;
+}
+
+.viewcode-back {
+ float: right;
+ font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+ margin: -1px -10px;
+ padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+ vertical-align: middle;
+}
+
+div.body div.math p {
+ text-align: center;
+}
+
+span.eqno {
+ float: right;
+}
+
+span.eqno a.headerlink {
+ position: absolute;
+ z-index: 1;
+}
+
+div.math:hover a.headerlink {
+ visibility: visible;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+@media print {
+ div.document,
+ div.documentwrapper,
+ div.bodywrapper {
+ margin: 0 !important;
+ width: 100%;
+ }
+
+ div.sphinxsidebar,
+ div.related,
+ div.footer,
+ #top-link {
+ display: none;
+ }
+}
\ No newline at end of file
diff --git a/tirx/_static/doctools.js b/tirx/_static/doctools.js
new file mode 100644
index 00000000000..807cdb176c0
--- /dev/null
+++ b/tirx/_static/doctools.js
@@ -0,0 +1,150 @@
+/*
+ * Base JavaScript utilities for all Sphinx HTML documentation.
+ */
+"use strict";
+
+const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
+ "TEXTAREA",
+ "INPUT",
+ "SELECT",
+ "BUTTON",
+]);
+
+const _ready = (callback) => {
+ if (document.readyState !== "loading") {
+ callback();
+ } else {
+ document.addEventListener("DOMContentLoaded", callback);
+ }
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+const Documentation = {
+ init: () => {
+ Documentation.initDomainIndexTable();
+ Documentation.initOnKeyListeners();
+ },
+
+ /**
+ * i18n support
+ */
+ TRANSLATIONS: {},
+ PLURAL_EXPR: (n) => (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: (string) => {
+ const translated = Documentation.TRANSLATIONS[string];
+ switch (typeof translated) {
+ case "undefined":
+ return string; // no translation
+ case "string":
+ return translated; // translation exists
+ default:
+ return translated[0]; // (singular, plural) translation tuple exists
+ }
+ },
+
+ ngettext: (singular, plural, n) => {
+ const translated = Documentation.TRANSLATIONS[singular];
+ if (typeof translated !== "undefined")
+ return translated[Documentation.PLURAL_EXPR(n)];
+ return n === 1 ? singular : plural;
+ },
+
+ addTranslations: (catalog) => {
+ Object.assign(Documentation.TRANSLATIONS, catalog.messages);
+ Documentation.PLURAL_EXPR = new Function(
+ "n",
+ `return (${catalog.plural_expr})`,
+ );
+ Documentation.LOCALE = catalog.locale;
+ },
+
+ /**
+ * helper function to focus on search bar
+ */
+ focusSearchBar: () => {
+ document.querySelectorAll("input[name=q]")[0]?.focus();
+ },
+
+ /**
+ * Initialise the domain index toggle buttons
+ */
+ initDomainIndexTable: () => {
+ const toggler = (el) => {
+ const idNumber = el.id.substr(7);
+ const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
+ if (el.src.substr(-9) === "minus.png") {
+ el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
+ toggledRows.forEach((el) => (el.style.display = "none"));
+ } else {
+ el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
+ toggledRows.forEach((el) => (el.style.display = ""));
+ }
+ };
+
+ const togglerElements = document.querySelectorAll("img.toggler");
+ togglerElements.forEach((el) =>
+ el.addEventListener("click", (event) => toggler(event.currentTarget)),
+ );
+ togglerElements.forEach((el) => (el.style.display = ""));
+ if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
+ },
+
+ initOnKeyListeners: () => {
+ // only install a listener if it is really needed
+ if (
+ !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS
+ && !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
+ )
+ return;
+
+ document.addEventListener("keydown", (event) => {
+ // bail for input elements
+ if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName))
+ return;
+ // bail with special keys
+ if (event.altKey || event.ctrlKey || event.metaKey) return;
+
+ if (!event.shiftKey) {
+ switch (event.key) {
+ case "ArrowLeft":
+ if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
+
+ const prevLink = document.querySelector('link[rel="prev"]');
+ if (prevLink && prevLink.href) {
+ window.location.href = prevLink.href;
+ event.preventDefault();
+ }
+ break;
+ case "ArrowRight":
+ if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
+
+ const nextLink = document.querySelector('link[rel="next"]');
+ if (nextLink && nextLink.href) {
+ window.location.href = nextLink.href;
+ event.preventDefault();
+ }
+ break;
+ }
+ }
+
+ // some keyboard layouts may need Shift to get /
+ switch (event.key) {
+ case "/":
+ if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
+ Documentation.focusSearchBar();
+ event.preventDefault();
+ }
+ });
+ },
+};
+
+// quick alias for translations
+const _ = Documentation.gettext;
+
+_ready(Documentation.init);
diff --git a/tirx/_static/documentation_options.js b/tirx/_static/documentation_options.js
new file mode 100644
index 00000000000..dab586c0d27
--- /dev/null
+++ b/tirx/_static/documentation_options.js
@@ -0,0 +1,13 @@
+const DOCUMENTATION_OPTIONS = {
+ VERSION: '',
+ LANGUAGE: 'en',
+ COLLAPSE_INDEX: false,
+ BUILDER: 'html',
+ FILE_SUFFIX: '.html',
+ LINK_SUFFIX: '.html',
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '',
+ NAVIGATION_WITH_KEYS: false,
+ SHOW_SEARCH_SUMMARY: true,
+ ENABLE_SEARCH_SHORTCUTS: true,
+};
\ No newline at end of file
diff --git a/tirx/_static/english-stemmer.js b/tirx/_static/english-stemmer.js
new file mode 100644
index 00000000000..056760ee8aa
--- /dev/null
+++ b/tirx/_static/english-stemmer.js
@@ -0,0 +1,1066 @@
+// Generated from english.sbl by Snowball 3.0.1 - https://snowballstem.org/
+
+/**@constructor*/
+var EnglishStemmer = function() {
+ var base = new BaseStemmer();
+
+ /** @const */ var a_0 = [
+ ["arsen", -1, -1],
+ ["commun", -1, -1],
+ ["emerg", -1, -1],
+ ["gener", -1, -1],
+ ["later", -1, -1],
+ ["organ", -1, -1],
+ ["past", -1, -1],
+ ["univers", -1, -1]
+ ];
+
+ /** @const */ var a_1 = [
+ ["'", -1, 1],
+ ["'s'", 0, 1],
+ ["'s", -1, 1]
+ ];
+
+ /** @const */ var a_2 = [
+ ["ied", -1, 2],
+ ["s", -1, 3],
+ ["ies", 1, 2],
+ ["sses", 1, 1],
+ ["ss", 1, -1],
+ ["us", 1, -1]
+ ];
+
+ /** @const */ var a_3 = [
+ ["succ", -1, 1],
+ ["proc", -1, 1],
+ ["exc", -1, 1]
+ ];
+
+ /** @const */ var a_4 = [
+ ["even", -1, 2],
+ ["cann", -1, 2],
+ ["inn", -1, 2],
+ ["earr", -1, 2],
+ ["herr", -1, 2],
+ ["out", -1, 2],
+ ["y", -1, 1]
+ ];
+
+ /** @const */ var a_5 = [
+ ["", -1, -1],
+ ["ed", 0, 2],
+ ["eed", 1, 1],
+ ["ing", 0, 3],
+ ["edly", 0, 2],
+ ["eedly", 4, 1],
+ ["ingly", 0, 2]
+ ];
+
+ /** @const */ var a_6 = [
+ ["", -1, 3],
+ ["bb", 0, 2],
+ ["dd", 0, 2],
+ ["ff", 0, 2],
+ ["gg", 0, 2],
+ ["bl", 0, 1],
+ ["mm", 0, 2],
+ ["nn", 0, 2],
+ ["pp", 0, 2],
+ ["rr", 0, 2],
+ ["at", 0, 1],
+ ["tt", 0, 2],
+ ["iz", 0, 1]
+ ];
+
+ /** @const */ var a_7 = [
+ ["anci", -1, 3],
+ ["enci", -1, 2],
+ ["ogi", -1, 14],
+ ["li", -1, 16],
+ ["bli", 3, 12],
+ ["abli", 4, 4],
+ ["alli", 3, 8],
+ ["fulli", 3, 9],
+ ["lessli", 3, 15],
+ ["ousli", 3, 10],
+ ["entli", 3, 5],
+ ["aliti", -1, 8],
+ ["biliti", -1, 12],
+ ["iviti", -1, 11],
+ ["tional", -1, 1],
+ ["ational", 14, 7],
+ ["alism", -1, 8],
+ ["ation", -1, 7],
+ ["ization", 17, 6],
+ ["izer", -1, 6],
+ ["ator", -1, 7],
+ ["iveness", -1, 11],
+ ["fulness", -1, 9],
+ ["ousness", -1, 10],
+ ["ogist", -1, 13]
+ ];
+
+ /** @const */ var a_8 = [
+ ["icate", -1, 4],
+ ["ative", -1, 6],
+ ["alize", -1, 3],
+ ["iciti", -1, 4],
+ ["ical", -1, 4],
+ ["tional", -1, 1],
+ ["ational", 5, 2],
+ ["ful", -1, 5],
+ ["ness", -1, 5]
+ ];
+
+ /** @const */ var a_9 = [
+ ["ic", -1, 1],
+ ["ance", -1, 1],
+ ["ence", -1, 1],
+ ["able", -1, 1],
+ ["ible", -1, 1],
+ ["ate", -1, 1],
+ ["ive", -1, 1],
+ ["ize", -1, 1],
+ ["iti", -1, 1],
+ ["al", -1, 1],
+ ["ism", -1, 1],
+ ["ion", -1, 2],
+ ["er", -1, 1],
+ ["ous", -1, 1],
+ ["ant", -1, 1],
+ ["ent", -1, 1],
+ ["ment", 15, 1],
+ ["ement", 16, 1]
+ ];
+
+ /** @const */ var a_10 = [
+ ["e", -1, 1],
+ ["l", -1, 2]
+ ];
+
+ /** @const */ var a_11 = [
+ ["andes", -1, -1],
+ ["atlas", -1, -1],
+ ["bias", -1, -1],
+ ["cosmos", -1, -1],
+ ["early", -1, 5],
+ ["gently", -1, 3],
+ ["howe", -1, -1],
+ ["idly", -1, 2],
+ ["news", -1, -1],
+ ["only", -1, 6],
+ ["singly", -1, 7],
+ ["skies", -1, 1],
+ ["sky", -1, -1],
+ ["ugly", -1, 4]
+ ];
+
+ /** @const */ var /** Array<int> */ g_aeo = [17, 64];
+
+ /** @const */ var /** Array<int> */ g_v = [17, 65, 16, 1];
+
+ /** @const */ var /** Array<int> */ g_v_WXY = [1, 17, 65, 208, 1];
+
+ /** @const */ var /** Array<int> */ g_valid_LI = [55, 141, 2];
+
+ var /** boolean */ B_Y_found = false;
+ var /** number */ I_p2 = 0;
+ var /** number */ I_p1 = 0;
+
+
+ /** @return {boolean} */
+ function r_prelude() {
+ B_Y_found = false;
+ /** @const */ var /** number */ v_1 = base.cursor;
+ lab0: {
+ base.bra = base.cursor;
+ if (!(base.eq_s("'")))
+ {
+ break lab0;
+ }
+ base.ket = base.cursor;
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ }
+ base.cursor = v_1;
+ /** @const */ var /** number */ v_2 = base.cursor;
+ lab1: {
+ base.bra = base.cursor;
+ if (!(base.eq_s("y")))
+ {
+ break lab1;
+ }
+ base.ket = base.cursor;
+ if (!base.slice_from("Y"))
+ {
+ return false;
+ }
+ B_Y_found = true;
+ }
+ base.cursor = v_2;
+ /** @const */ var /** number */ v_3 = base.cursor;
+ lab2: {
+ while(true)
+ {
+ /** @const */ var /** number */ v_4 = base.cursor;
+ lab3: {
+ golab4: while(true)
+ {
+ /** @const */ var /** number */ v_5 = base.cursor;
+ lab5: {
+ if (!(base.in_grouping(g_v, 97, 121)))
+ {
+ break lab5;
+ }
+ base.bra = base.cursor;
+ if (!(base.eq_s("y")))
+ {
+ break lab5;
+ }
+ base.ket = base.cursor;
+ base.cursor = v_5;
+ break golab4;
+ }
+ base.cursor = v_5;
+ if (base.cursor >= base.limit)
+ {
+ break lab3;
+ }
+ base.cursor++;
+ }
+ if (!base.slice_from("Y"))
+ {
+ return false;
+ }
+ B_Y_found = true;
+ continue;
+ }
+ base.cursor = v_4;
+ break;
+ }
+ }
+ base.cursor = v_3;
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_mark_regions() {
+ I_p1 = base.limit;
+ I_p2 = base.limit;
+ /** @const */ var /** number */ v_1 = base.cursor;
+ lab0: {
+ lab1: {
+ /** @const */ var /** number */ v_2 = base.cursor;
+ lab2: {
+ if (base.find_among(a_0) == 0)
+ {
+ break lab2;
+ }
+ break lab1;
+ }
+ base.cursor = v_2;
+ if (!base.go_out_grouping(g_v, 97, 121))
+ {
+ break lab0;
+ }
+ base.cursor++;
+ if (!base.go_in_grouping(g_v, 97, 121))
+ {
+ break lab0;
+ }
+ base.cursor++;
+ }
+ I_p1 = base.cursor;
+ if (!base.go_out_grouping(g_v, 97, 121))
+ {
+ break lab0;
+ }
+ base.cursor++;
+ if (!base.go_in_grouping(g_v, 97, 121))
+ {
+ break lab0;
+ }
+ base.cursor++;
+ I_p2 = base.cursor;
+ }
+ base.cursor = v_1;
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_shortv() {
+ lab0: {
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab1: {
+ if (!(base.out_grouping_b(g_v_WXY, 89, 121)))
+ {
+ break lab1;
+ }
+ if (!(base.in_grouping_b(g_v, 97, 121)))
+ {
+ break lab1;
+ }
+ if (!(base.out_grouping_b(g_v, 97, 121)))
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ base.cursor = base.limit - v_1;
+ lab2: {
+ if (!(base.out_grouping_b(g_v, 97, 121)))
+ {
+ break lab2;
+ }
+ if (!(base.in_grouping_b(g_v, 97, 121)))
+ {
+ break lab2;
+ }
+ if (base.cursor > base.limit_backward)
+ {
+ break lab2;
+ }
+ break lab0;
+ }
+ base.cursor = base.limit - v_1;
+ if (!(base.eq_s_b("past")))
+ {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_R1() {
+ return I_p1 <= base.cursor;
+ };
+
+ /** @return {boolean} */
+ function r_R2() {
+ return I_p2 <= base.cursor;
+ };
+
+ /** @return {boolean} */
+ function r_Step_1a() {
+ var /** number */ among_var;
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab0: {
+ base.ket = base.cursor;
+ if (base.find_among_b(a_1) == 0)
+ {
+ base.cursor = base.limit - v_1;
+ break lab0;
+ }
+ base.bra = base.cursor;
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ }
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_2);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.bra = base.cursor;
+ switch (among_var) {
+ case 1:
+ if (!base.slice_from("ss"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ lab1: {
+ /** @const */ var /** number */ v_2 = base.limit - base.cursor;
+ lab2: {
+ {
+ /** @const */ var /** number */ c1 = base.cursor - 2;
+ if (c1 < base.limit_backward)
+ {
+ break lab2;
+ }
+ base.cursor = c1;
+ }
+ if (!base.slice_from("i"))
+ {
+ return false;
+ }
+ break lab1;
+ }
+ base.cursor = base.limit - v_2;
+ if (!base.slice_from("ie"))
+ {
+ return false;
+ }
+ }
+ break;
+ case 3:
+ if (base.cursor <= base.limit_backward)
+ {
+ return false;
+ }
+ base.cursor--;
+ if (!base.go_out_grouping_b(g_v, 97, 121))
+ {
+ return false;
+ }
+ base.cursor--;
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_1b() {
+ var /** number */ among_var;
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_5);
+ base.bra = base.cursor;
+ lab0: {
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab1: {
+ switch (among_var) {
+ case 1:
+ /** @const */ var /** number */ v_2 = base.limit - base.cursor;
+ lab2: {
+ lab3: {
+ /** @const */ var /** number */ v_3 = base.limit - base.cursor;
+ lab4: {
+ if (base.find_among_b(a_3) == 0)
+ {
+ break lab4;
+ }
+ if (base.cursor > base.limit_backward)
+ {
+ break lab4;
+ }
+ break lab3;
+ }
+ base.cursor = base.limit - v_3;
+ if (!r_R1())
+ {
+ break lab2;
+ }
+ if (!base.slice_from("ee"))
+ {
+ return false;
+ }
+ }
+ }
+ base.cursor = base.limit - v_2;
+ break;
+ case 2:
+ break lab1;
+ case 3:
+ among_var = base.find_among_b(a_4);
+ if (among_var == 0)
+ {
+ break lab1;
+ }
+ switch (among_var) {
+ case 1:
+ /** @const */ var /** number */ v_4 = base.limit - base.cursor;
+ if (!(base.out_grouping_b(g_v, 97, 121)))
+ {
+ break lab1;
+ }
+ if (base.cursor > base.limit_backward)
+ {
+ break lab1;
+ }
+ base.cursor = base.limit - v_4;
+ base.bra = base.cursor;
+ if (!base.slice_from("ie"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ if (base.cursor > base.limit_backward)
+ {
+ break lab1;
+ }
+ break;
+ }
+ break;
+ }
+ break lab0;
+ }
+ base.cursor = base.limit - v_1;
+ /** @const */ var /** number */ v_5 = base.limit - base.cursor;
+ if (!base.go_out_grouping_b(g_v, 97, 121))
+ {
+ return false;
+ }
+ base.cursor--;
+ base.cursor = base.limit - v_5;
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ base.ket = base.cursor;
+ base.bra = base.cursor;
+ /** @const */ var /** number */ v_6 = base.limit - base.cursor;
+ among_var = base.find_among_b(a_6);
+ switch (among_var) {
+ case 1:
+ if (!base.slice_from("e"))
+ {
+ return false;
+ }
+ return false;
+ case 2:
+ {
+ /** @const */ var /** number */ v_7 = base.limit - base.cursor;
+ lab5: {
+ if (!(base.in_grouping_b(g_aeo, 97, 111)))
+ {
+ break lab5;
+ }
+ if (base.cursor > base.limit_backward)
+ {
+ break lab5;
+ }
+ return false;
+ }
+ base.cursor = base.limit - v_7;
+ }
+ break;
+ case 3:
+ if (base.cursor != I_p1)
+ {
+ return false;
+ }
+ /** @const */ var /** number */ v_8 = base.limit - base.cursor;
+ if (!r_shortv())
+ {
+ return false;
+ }
+ base.cursor = base.limit - v_8;
+ if (!base.slice_from("e"))
+ {
+ return false;
+ }
+ return false;
+ }
+ base.cursor = base.limit - v_6;
+ base.ket = base.cursor;
+ if (base.cursor <= base.limit_backward)
+ {
+ return false;
+ }
+ base.cursor--;
+ base.bra = base.cursor;
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_1c() {
+ base.ket = base.cursor;
+ lab0: {
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab1: {
+ if (!(base.eq_s_b("y")))
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ base.cursor = base.limit - v_1;
+ if (!(base.eq_s_b("Y")))
+ {
+ return false;
+ }
+ }
+ base.bra = base.cursor;
+ if (!(base.out_grouping_b(g_v, 97, 121)))
+ {
+ return false;
+ }
+ lab2: {
+ if (base.cursor > base.limit_backward)
+ {
+ break lab2;
+ }
+ return false;
+ }
+ if (!base.slice_from("i"))
+ {
+ return false;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_2() {
+ var /** number */ among_var;
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_7);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.bra = base.cursor;
+ if (!r_R1())
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 1:
+ if (!base.slice_from("tion"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ if (!base.slice_from("ence"))
+ {
+ return false;
+ }
+ break;
+ case 3:
+ if (!base.slice_from("ance"))
+ {
+ return false;
+ }
+ break;
+ case 4:
+ if (!base.slice_from("able"))
+ {
+ return false;
+ }
+ break;
+ case 5:
+ if (!base.slice_from("ent"))
+ {
+ return false;
+ }
+ break;
+ case 6:
+ if (!base.slice_from("ize"))
+ {
+ return false;
+ }
+ break;
+ case 7:
+ if (!base.slice_from("ate"))
+ {
+ return false;
+ }
+ break;
+ case 8:
+ if (!base.slice_from("al"))
+ {
+ return false;
+ }
+ break;
+ case 9:
+ if (!base.slice_from("ful"))
+ {
+ return false;
+ }
+ break;
+ case 10:
+ if (!base.slice_from("ous"))
+ {
+ return false;
+ }
+ break;
+ case 11:
+ if (!base.slice_from("ive"))
+ {
+ return false;
+ }
+ break;
+ case 12:
+ if (!base.slice_from("ble"))
+ {
+ return false;
+ }
+ break;
+ case 13:
+ if (!base.slice_from("og"))
+ {
+ return false;
+ }
+ break;
+ case 14:
+ if (!(base.eq_s_b("l")))
+ {
+ return false;
+ }
+ if (!base.slice_from("og"))
+ {
+ return false;
+ }
+ break;
+ case 15:
+ if (!base.slice_from("less"))
+ {
+ return false;
+ }
+ break;
+ case 16:
+ if (!(base.in_grouping_b(g_valid_LI, 99, 116)))
+ {
+ return false;
+ }
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_3() {
+ var /** number */ among_var;
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_8);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.bra = base.cursor;
+ if (!r_R1())
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 1:
+ if (!base.slice_from("tion"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ if (!base.slice_from("ate"))
+ {
+ return false;
+ }
+ break;
+ case 3:
+ if (!base.slice_from("al"))
+ {
+ return false;
+ }
+ break;
+ case 4:
+ if (!base.slice_from("ic"))
+ {
+ return false;
+ }
+ break;
+ case 5:
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ case 6:
+ if (!r_R2())
+ {
+ return false;
+ }
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_4() {
+ var /** number */ among_var;
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_9);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.bra = base.cursor;
+ if (!r_R2())
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 1:
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ case 2:
+ lab0: {
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab1: {
+ if (!(base.eq_s_b("s")))
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ base.cursor = base.limit - v_1;
+ if (!(base.eq_s_b("t")))
+ {
+ return false;
+ }
+ }
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_Step_5() {
+ var /** number */ among_var;
+ base.ket = base.cursor;
+ among_var = base.find_among_b(a_10);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.bra = base.cursor;
+ switch (among_var) {
+ case 1:
+ lab0: {
+ lab1: {
+ if (!r_R2())
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ if (!r_R1())
+ {
+ return false;
+ }
+ {
+ /** @const */ var /** number */ v_1 = base.limit - base.cursor;
+ lab2: {
+ if (!r_shortv())
+ {
+ break lab2;
+ }
+ return false;
+ }
+ base.cursor = base.limit - v_1;
+ }
+ }
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ case 2:
+ if (!r_R2())
+ {
+ return false;
+ }
+ if (!(base.eq_s_b("l")))
+ {
+ return false;
+ }
+ if (!base.slice_del())
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_exception1() {
+ var /** number */ among_var;
+ base.bra = base.cursor;
+ among_var = base.find_among(a_11);
+ if (among_var == 0)
+ {
+ return false;
+ }
+ base.ket = base.cursor;
+ if (base.cursor < base.limit)
+ {
+ return false;
+ }
+ switch (among_var) {
+ case 1:
+ if (!base.slice_from("sky"))
+ {
+ return false;
+ }
+ break;
+ case 2:
+ if (!base.slice_from("idl"))
+ {
+ return false;
+ }
+ break;
+ case 3:
+ if (!base.slice_from("gentl"))
+ {
+ return false;
+ }
+ break;
+ case 4:
+ if (!base.slice_from("ugli"))
+ {
+ return false;
+ }
+ break;
+ case 5:
+ if (!base.slice_from("earli"))
+ {
+ return false;
+ }
+ break;
+ case 6:
+ if (!base.slice_from("onli"))
+ {
+ return false;
+ }
+ break;
+ case 7:
+ if (!base.slice_from("singl"))
+ {
+ return false;
+ }
+ break;
+ }
+ return true;
+ };
+
+ /** @return {boolean} */
+ function r_postlude() {
+ if (!B_Y_found)
+ {
+ return false;
+ }
+ while(true)
+ {
+ /** @const */ var /** number */ v_1 = base.cursor;
+ lab0: {
+ golab1: while(true)
+ {
+ /** @const */ var /** number */ v_2 = base.cursor;
+ lab2: {
+ base.bra = base.cursor;
+ if (!(base.eq_s("Y")))
+ {
+ break lab2;
+ }
+ base.ket = base.cursor;
+ base.cursor = v_2;
+ break golab1;
+ }
+ base.cursor = v_2;
+ if (base.cursor >= base.limit)
+ {
+ break lab0;
+ }
+ base.cursor++;
+ }
+ if (!base.slice_from("y"))
+ {
+ return false;
+ }
+ continue;
+ }
+ base.cursor = v_1;
+ break;
+ }
+ return true;
+ };
+
+ this.stem = /** @return {boolean} */ function() {
+ lab0: {
+ /** @const */ var /** number */ v_1 = base.cursor;
+ lab1: {
+ if (!r_exception1())
+ {
+ break lab1;
+ }
+ break lab0;
+ }
+ base.cursor = v_1;
+ lab2: {
+ {
+ /** @const */ var /** number */ v_2 = base.cursor;
+ lab3: {
+ {
+ /** @const */ var /** number */ c1 = base.cursor + 3;
+ if (c1 > base.limit)
+ {
+ break lab3;
+ }
+ base.cursor = c1;
+ }
+ break lab2;
+ }
+ base.cursor = v_2;
+ }
+ break lab0;
+ }
+ base.cursor = v_1;
+ r_prelude();
+ r_mark_regions();
+ base.limit_backward = base.cursor; base.cursor = base.limit;
+ /** @const */ var /** number */ v_3 = base.limit - base.cursor;
+ r_Step_1a();
+ base.cursor = base.limit - v_3;
+ /** @const */ var /** number */ v_4 = base.limit - base.cursor;
+ r_Step_1b();
+ base.cursor = base.limit - v_4;
+ /** @const */ var /** number */ v_5 = base.limit - base.cursor;
+ r_Step_1c();
+ base.cursor = base.limit - v_5;
+ /** @const */ var /** number */ v_6 = base.limit - base.cursor;
+ r_Step_2();
+ base.cursor = base.limit - v_6;
+ /** @const */ var /** number */ v_7 = base.limit - base.cursor;
+ r_Step_3();
+ base.cursor = base.limit - v_7;
+ /** @const */ var /** number */ v_8 = base.limit - base.cursor;
+ r_Step_4();
+ base.cursor = base.limit - v_8;
+ /** @const */ var /** number */ v_9 = base.limit - base.cursor;
+ r_Step_5();
+ base.cursor = base.limit - v_9;
+ base.cursor = base.limit_backward;
+ /** @const */ var /** number */ v_10 = base.cursor;
+ r_postlude();
+ base.cursor = v_10;
+ }
+ return true;
+ };
+
+ /**@return{string}*/
+ this['stemWord'] = function(/**string*/word) {
+ base.setCurrent(word);
+ this.stem();
+ return base.getCurrent();
+ };
+};
diff --git a/tirx/_static/file.png b/tirx/_static/file.png
new file mode 100644
index 00000000000..a858a410e4f
Binary files /dev/null and b/tirx/_static/file.png differ
diff --git a/tirx/_static/images/logo_binder.svg b/tirx/_static/images/logo_binder.svg
new file mode 100644
index 00000000000..45fecf75114
--- /dev/null
+++ b/tirx/_static/images/logo_binder.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ viewBox="0 0 44.4 44.4" style="enable-background:new 0 0 44.4 44.4;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:none;stroke:#F5A252;stroke-width:5;stroke-miterlimit:10;}
+ .st1{fill:none;stroke:#579ACA;stroke-width:5;stroke-miterlimit:10;}
+ .st2{fill:none;stroke:#E66581;stroke-width:5;stroke-miterlimit:10;}
+</style>
+<title>logo</title>
+<g>
+ <path class="st0" d="M33.9,6.4c3.6,3.9,3.4,9.9-0.5,13.5s-9.9,3.4-13.5-0.5s-3.4-9.9,0.5-13.5l0,0C24.2,2.4,30.2,2.6,33.9,6.4z"/>
+ <path class="st1" d="M35.1,27.3c2.6,4.6,1.1,10.4-3.5,13c-4.6,2.6-10.4,1.1-13-3.5s-1.1-10.4,3.5-13l0,0
+ C26.6,21.2,32.4,22.7,35.1,27.3z"/>
+ <path class="st2" d="M25.9,17.8c2.6,4.6,1.1,10.4-3.5,13s-10.4,1.1-13-3.5s-1.1-10.4,3.5-13l0,0C17.5,11.7,23.3,13.2,25.9,17.8z"/>
+ <path class="st1" d="M19.2,26.4c3.1-4.3,9.1-5.2,13.3-2.1c1.1,0.8,2,1.8,2.7,3"/>
+ <path class="st0" d="M19.9,19.4c-3.6-3.9-3.4-9.9,0.5-13.5s9.9-3.4,13.5,0.5"/>
+</g>
+</svg>
diff --git a/tirx/_static/images/logo_colab.png b/tirx/_static/images/logo_colab.png
new file mode 100644
index 00000000000..b7560ec216b
Binary files /dev/null and b/tirx/_static/images/logo_colab.png differ
diff --git a/tirx/_static/images/logo_deepnote.svg b/tirx/_static/images/logo_deepnote.svg
new file mode 100644
index 00000000000..fa77ebfc258
--- /dev/null
+++ b/tirx/_static/images/logo_deepnote.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 128h52.512l29.539-11.077-11.077-43.487-34.051 3.693L0 128Z" fill="#0076D4"/><path fill-rule="evenodd" clip-rule="evenodd" d="M52.513 128s16.6-8.759 19.673-24.277c3.072-15.517-12.091-26.594-35.263-26.594 0-.41 20.343-28.718 20.343-28.718l49.4 1.435L95.71 107.7l-20.452 15.978L52.513 128Z" fill="#002868"/><path fill-rule="evenodd" clip-rule="evenodd" d="M0 60.718 41. [...]
diff --git a/tirx/_static/images/logo_jupyterhub.svg b/tirx/_static/images/logo_jupyterhub.svg
new file mode 100644
index 00000000000..60cfe9f222e
--- /dev/null
+++ b/tirx/_static/images/logo_jupyterhub.svg
@@ -0,0 +1 @@
+<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="38.73" height="50" viewBox="0 0 38.73 50"><defs><style>.cls-1{fill:#767677;}.cls-2{fill:#f37726;}.cls-3{fill:#9e9e9e;}.cls-4{fill:#616262;}.cls-5{font-size:17.07px;fill:#fff;font-family:Roboto-Regular, Roboto;}</style></defs><title>logo_jupyterhub</title><g id="Canvas"><path id="path7_fill" data-name="path7 fill" class="cls-1" d="M39.51,3.53a3,3,0,0,1-1.7,2.9A3,3,0,0,1,34.48,6a3,3,0,0,1-.82-3.26,3,3,0,0,1,1.0 [...]
diff --git a/tirx/_static/images/logo_jupyterlite.svg b/tirx/_static/images/logo_jupyterlite.svg
new file mode 100644
index 00000000000..09e821f6608
--- /dev/null
+++ b/tirx/_static/images/logo_jupyterlite.svg
@@ -0,0 +1,17 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="68" height="68" viewBox="0 0 17.992 17.992">
+ <g transform="translate(.46 .448)">
+ <circle style="display:inline;opacity:1;vector-effect:none;fill:#f7dc1e;fill-opacity:1;stroke:none;stroke-width:.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" cx="83.727" cy="85.633" r="6.598" transform="translate(-75.191 -79.025)"/>
+ <rect style="display:inline;opacity:1;vector-effect:none;fill:#9e9e9e;fill-opacity:1;stroke:none;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" width="5.653" height="1.01" x="80.831" y="92.344" ry=".413" rx=".413" transform="translate(-75.191 -79.025)"/>
+ <rect y="93.671" x="80.837" height="1.031" width="5.641" style="display:inline;opacity:1;vector-effect:none;fill:#767677;fill-opacity:1;stroke:none;stroke-width:1.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" ry=".421" rx=".421" transform="translate(-75.191 -79.025)"/>
+ <rect style="display:inline;opacity:1;vector-effect:none;fill:#616262;fill-opacity:1;stroke:none;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke fill markers" width="3.24" height="1.02" x="82.038" y="95.019" ry=".417" rx=".417" transform="translate(-75.191 -79.025)"/>
+ <g style="display:inline;fill:#1a1a1a">
+ <g style="font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:8.46666718px;line-height:1.25;font-family:Vibur;-inkscape-font-specification:'Vibur, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:start;fill:#1a1a1a;stroke-width:.26458335" aria-label="l">
+ <path style="font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:8.46666718px;font-family:Vibur;-inkscape-font-specification:'Vibur, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#1a1a1a;stroke-width:.26458335" d="M87.065 90.289q-.996-.041-1.475-1.216-.356-.884-.356-2.166 0-.066.008-.17.058-.872.323-1.6.43-1.173 1.215 [...]
+ </g>
+ <path d="M84.998 83.663a.694.694 0 0 1-.694.695.694.694 0 0 1-.694-.695.694.694 0 0 1 .694-.694.694.694 0 0 1 .694.694z" style="opacity:1;vector-effect:none;fill:#1a1a1a;fill-opacity:1;stroke:none;stroke-width:.26458332;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" transform="translate(-76.409 -79.473)"/>
+ <g style="font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:8.46666718px;line-height:1.25;font-family:Vibur;-inkscape-font-specification:'Vibur, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:start;fill:#1a1a1a;stroke-width:.26458335" aria-label="j">
+ <path style="font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:8.46666718px;font-family:Vibur;-inkscape-font-specification:'Vibur, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#1a1a1a;stroke-width:.26458335" d="M84.155 84.667q.269.004.277.35l-.459 3.283q1.034-.79 1.162-.893.153-.132.314-.136.058 0 .112.037.12.083.1 [...]
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/tirx/_static/language_data.js b/tirx/_static/language_data.js
new file mode 100644
index 00000000000..57767864227
--- /dev/null
+++ b/tirx/_static/language_data.js
@@ -0,0 +1,13 @@
+/*
+ * This script contains the language-specific data used by searchtools.js,
+ * namely the set of stopwords, stemmer, scorer and splitter.
+ */
+
+const stopwords = new Set(["a", "about", "above", "after", "again", "against", "all", "am", "an", "and", "any", "are", "aren't", "as", "at", "be", "because", "been", "before", "being", "below", "between", "both", "but", "by", "can't", "cannot", "could", "couldn't", "did", "didn't", "do", "does", "doesn't", "doing", "don't", "down", "during", "each", "few", "for", "from", "further", "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he", "he'd", "he'll", "he's", "her", "here" [...]
+window.stopwords = stopwords; // Export to global scope
+
+
+/* Non-minified versions are copied as separate JavaScript files, if available */
+BaseStemmer=function(){this.current="",this.cursor=0,this.limit=0,this.limit_backward=0,this.bra=0,this.ket=0,this.setCurrent=function(t){this.current=t,this.cursor=0,this.limit=this.current.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},this.getCurrent=function(){return this.current},this.copy_from=function(t){this.current=t.current,this.cursor=t.cursor,this.limit=t.limit,this.limit_backward=t.limit_backward,this.bra=t.bra,this.ket=t.ket},this.in_grouping=functio [...]
+var EnglishStemmer=function(){var a=new BaseStemmer,c=[["arsen",-1,-1],["commun",-1,-1],["emerg",-1,-1],["gener",-1,-1],["later",-1,-1],["organ",-1,-1],["past",-1,-1],["univers",-1,-1]],o=[["'",-1,1],["'s'",0,1],["'s",-1,1]],u=[["ied",-1,2],["s",-1,3],["ies",1,2],["sses",1,1],["ss",1,-1],["us",1,-1]],t=[["succ",-1,1],["proc",-1,1],["exc",-1,1]],l=[["even",-1,2],["cann",-1,2],["inn",-1,2],["earr",-1,2],["herr",-1,2],["out",-1,2],["y",-1,1]],n=[["",-1,-1],["ed",0,2],["eed",1,1],["ing",0,3] [...]
+window.Stemmer = EnglishStemmer;
diff --git a/tirx/_static/locales/ar/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/ar/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..15541a6a375
Binary files /dev/null and b/tirx/_static/locales/ar/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/ar/LC_MESSAGES/booktheme.po b/tirx/_static/locales/ar/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..066f20f9036
--- /dev/null
+++ b/tirx/_static/locales/ar/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ar\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "بواسطة"
+
+msgid "By"
+msgstr "بواسطة"
+
+msgid "Contents"
+msgstr "محتويات"
+
+msgid "Copyright"
+msgstr "حقوق النشر"
+
+msgid "Download notebook file"
+msgstr "تنزيل ملف دفتر الملاحظات"
+
+msgid "Download source file"
+msgstr "تنزيل ملف المصدر"
+
+msgid "Download this page"
+msgstr "قم بتنزيل هذه الصفحة"
+
+msgid "Edit this page"
+msgstr "قم بتحرير هذه الصفحة"
+
+msgid "Fullscreen mode"
+msgstr "وضع ملء الشاشة"
+
+msgid "Last updated on"
+msgstr "آخر تحديث في"
+
+msgid "Launch"
+msgstr "إطلاق"
+
+msgid "Open an issue"
+msgstr "افتح قضية"
+
+msgid "Print to PDF"
+msgstr "طباعة إلى PDF"
+
+msgid "Source repository"
+msgstr "مستودع المصدر"
+
+msgid "Sphinx Book Theme"
+msgstr "موضوع كتاب أبو الهول"
+
+msgid "Theme by the"
+msgstr "موضوع بواسطة"
+
+msgid "Toggle navigation"
+msgstr "تبديل التنقل"
+
+msgid "next page"
+msgstr "الصفحة التالية"
+
+msgid "open issue"
+msgstr "قضية مفتوحة"
+
+msgid "previous page"
+msgstr "الصفحة السابقة"
+
+msgid "repository"
+msgstr "مخزن"
+
+msgid "suggest edit"
+msgstr "أقترح تحرير"
diff --git a/tirx/_static/locales/bg/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/bg/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..da95120037f
Binary files /dev/null and b/tirx/_static/locales/bg/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/bg/LC_MESSAGES/booktheme.po b/tirx/_static/locales/bg/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..0f22f49ad72
--- /dev/null
+++ b/tirx/_static/locales/bg/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bg\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "По"
+
+msgid "By"
+msgstr "От"
+
+msgid "Contents"
+msgstr "Съдържание"
+
+msgid "Copyright"
+msgstr "Авторско право"
+
+msgid "Download notebook file"
+msgstr "Изтеглете файла на бележника"
+
+msgid "Download source file"
+msgstr "Изтеглете изходния файл"
+
+msgid "Download this page"
+msgstr "Изтеглете тази страница"
+
+msgid "Edit this page"
+msgstr "Редактирайте тази страница"
+
+msgid "Fullscreen mode"
+msgstr "Режим на цял екран"
+
+msgid "Last updated on"
+msgstr "Последна актуализация на"
+
+msgid "Launch"
+msgstr "Стартиране"
+
+msgid "Open an issue"
+msgstr "Отворете проблем"
+
+msgid "Print to PDF"
+msgstr "Печат в PDF"
+
+msgid "Source repository"
+msgstr "Хранилище на източника"
+
+msgid "Sphinx Book Theme"
+msgstr "Тема на книгата Sphinx"
+
+msgid "Theme by the"
+msgstr "Тема от"
+
+msgid "Toggle navigation"
+msgstr "Превключване на навигацията"
+
+msgid "next page"
+msgstr "Следваща страница"
+
+msgid "open issue"
+msgstr "отворен брой"
+
+msgid "previous page"
+msgstr "предишна страница"
+
+msgid "repository"
+msgstr "хранилище"
+
+msgid "suggest edit"
+msgstr "предложи редактиране"
diff --git a/tirx/_static/locales/bn/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/bn/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..6b96639b726
Binary files /dev/null and b/tirx/_static/locales/bn/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/bn/LC_MESSAGES/booktheme.po b/tirx/_static/locales/bn/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..7202a5f3203
--- /dev/null
+++ b/tirx/_static/locales/bn/LC_MESSAGES/booktheme.po
@@ -0,0 +1,63 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: bn\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "দ্বারা"
+
+msgid "By"
+msgstr "দ্বারা"
+
+msgid "Copyright"
+msgstr "কপিরাইট"
+
+msgid "Download notebook file"
+msgstr "নোটবুক ফাইল ডাউনলোড করুন"
+
+msgid "Download source file"
+msgstr "উত্স ফাইল ডাউনলোড করুন"
+
+msgid "Download this page"
+msgstr "এই পৃষ্ঠাটি ডাউনলোড করুন"
+
+msgid "Edit this page"
+msgstr "এই পৃষ্ঠাটি সম্পাদনা করুন"
+
+msgid "Last updated on"
+msgstr "সর্বশেষ আপডেট"
+
+msgid "Launch"
+msgstr "শুরু করা"
+
+msgid "Open an issue"
+msgstr "একটি সমস্যা খুলুন"
+
+msgid "Print to PDF"
+msgstr "পিডিএফ প্রিন্ট করুন"
+
+msgid "Source repository"
+msgstr "উত্স সংগ্রহস্থল"
+
+msgid "Sphinx Book Theme"
+msgstr "স্পিনিক্স বুক থিম"
+
+msgid "Theme by the"
+msgstr "থিম দ্বারা"
+
+msgid "Toggle navigation"
+msgstr "নেভিগেশন টগল করুন"
+
+msgid "next page"
+msgstr "পরবর্তী পৃষ্ঠা"
+
+msgid "open issue"
+msgstr "খোলা সমস্যা"
+
+msgid "previous page"
+msgstr "আগের পৃষ্ঠা"
diff --git a/tirx/_static/locales/ca/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/ca/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..a4dd30e9bd7
Binary files /dev/null and b/tirx/_static/locales/ca/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/ca/LC_MESSAGES/booktheme.po b/tirx/_static/locales/ca/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..a325041f14a
--- /dev/null
+++ b/tirx/_static/locales/ca/LC_MESSAGES/booktheme.po
@@ -0,0 +1,66 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ca\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Per la"
+
+msgid "By"
+msgstr "Per"
+
+msgid "Copyright"
+msgstr "Copyright"
+
+msgid "Download notebook file"
+msgstr "Descarregar fitxer de quadern"
+
+msgid "Download source file"
+msgstr "Baixeu el fitxer font"
+
+msgid "Download this page"
+msgstr "Descarregueu aquesta pàgina"
+
+msgid "Edit this page"
+msgstr "Editeu aquesta pàgina"
+
+msgid "Last updated on"
+msgstr "Darrera actualització el"
+
+msgid "Launch"
+msgstr "Llançament"
+
+msgid "Open an issue"
+msgstr "Obriu un número"
+
+msgid "Print to PDF"
+msgstr "Imprimeix a PDF"
+
+msgid "Source repository"
+msgstr "Dipòsit de fonts"
+
+msgid "Sphinx Book Theme"
+msgstr "Tema del llibre Esfinx"
+
+msgid "Theme by the"
+msgstr "Tema del"
+
+msgid "Toggle navigation"
+msgstr "Commuta la navegació"
+
+msgid "next page"
+msgstr "pàgina següent"
+
+msgid "open issue"
+msgstr "número obert"
+
+msgid "previous page"
+msgstr "Pàgina anterior"
+
+msgid "suggest edit"
+msgstr "suggerir edició"
diff --git a/tirx/_static/locales/cs/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/cs/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..c39e01a6ae9
Binary files /dev/null and b/tirx/_static/locales/cs/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/cs/LC_MESSAGES/booktheme.po b/tirx/_static/locales/cs/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..97e52e8a5b2
--- /dev/null
+++ b/tirx/_static/locales/cs/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cs\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Podle"
+
+msgid "By"
+msgstr "Podle"
+
+msgid "Contents"
+msgstr "Obsah"
+
+msgid "Copyright"
+msgstr "autorská práva"
+
+msgid "Download notebook file"
+msgstr "Stáhnout soubor poznámkového bloku"
+
+msgid "Download source file"
+msgstr "Stáhněte si zdrojový soubor"
+
+msgid "Download this page"
+msgstr "Stáhněte si tuto stránku"
+
+msgid "Edit this page"
+msgstr "Upravit tuto stránku"
+
+msgid "Fullscreen mode"
+msgstr "Režim celé obrazovky"
+
+msgid "Last updated on"
+msgstr "Naposledy aktualizováno"
+
+msgid "Launch"
+msgstr "Zahájení"
+
+msgid "Open an issue"
+msgstr "Otevřete problém"
+
+msgid "Print to PDF"
+msgstr "Tisk do PDF"
+
+msgid "Source repository"
+msgstr "Zdrojové úložiště"
+
+msgid "Sphinx Book Theme"
+msgstr "Téma knihy Sfinga"
+
+msgid "Theme by the"
+msgstr "Téma od"
+
+msgid "Toggle navigation"
+msgstr "Přepnout navigaci"
+
+msgid "next page"
+msgstr "další strana"
+
+msgid "open issue"
+msgstr "otevřené číslo"
+
+msgid "previous page"
+msgstr "předchozí stránka"
+
+msgid "repository"
+msgstr "úložiště"
+
+msgid "suggest edit"
+msgstr "navrhnout úpravy"
diff --git a/tirx/_static/locales/da/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/da/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..f43157d70c6
Binary files /dev/null and b/tirx/_static/locales/da/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/da/LC_MESSAGES/booktheme.po b/tirx/_static/locales/da/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..084b4e57109
--- /dev/null
+++ b/tirx/_static/locales/da/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: da\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Ved"
+
+msgid "By"
+msgstr "Ved"
+
+msgid "Contents"
+msgstr "Indhold"
+
+msgid "Copyright"
+msgstr "ophavsret"
+
+msgid "Download notebook file"
+msgstr "Download notesbog-fil"
+
+msgid "Download source file"
+msgstr "Download kildefil"
+
+msgid "Download this page"
+msgstr "Download denne side"
+
+msgid "Edit this page"
+msgstr "Rediger denne side"
+
+msgid "Fullscreen mode"
+msgstr "Fuldskærmstilstand"
+
+msgid "Last updated on"
+msgstr "Sidst opdateret den"
+
+msgid "Launch"
+msgstr "Start"
+
+msgid "Open an issue"
+msgstr "Åbn et problem"
+
+msgid "Print to PDF"
+msgstr "Udskriv til PDF"
+
+msgid "Source repository"
+msgstr "Kildelager"
+
+msgid "Sphinx Book Theme"
+msgstr "Sphinx bogtema"
+
+msgid "Theme by the"
+msgstr "Tema af"
+
+msgid "Toggle navigation"
+msgstr "Skift navigation"
+
+msgid "next page"
+msgstr "Næste side"
+
+msgid "open issue"
+msgstr "åbent nummer"
+
+msgid "previous page"
+msgstr "forrige side"
+
+msgid "repository"
+msgstr "lager"
+
+msgid "suggest edit"
+msgstr "foreslå redigering"
diff --git a/tirx/_static/locales/de/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/de/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..648b565c782
Binary files /dev/null and b/tirx/_static/locales/de/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/de/LC_MESSAGES/booktheme.po b/tirx/_static/locales/de/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..1ed1dc16a9d
--- /dev/null
+++ b/tirx/_static/locales/de/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Bis zum"
+
+msgid "By"
+msgstr "Durch"
+
+msgid "Contents"
+msgstr "Inhalt"
+
+msgid "Copyright"
+msgstr "Urheberrechte ©"
+
+msgid "Download notebook file"
+msgstr "Notebook-Datei herunterladen"
+
+msgid "Download source file"
+msgstr "Quelldatei herunterladen"
+
+msgid "Download this page"
+msgstr "Laden Sie diese Seite herunter"
+
+msgid "Edit this page"
+msgstr "Bearbeite diese Seite"
+
+msgid "Fullscreen mode"
+msgstr "Vollbildmodus"
+
+msgid "Last updated on"
+msgstr "Zuletzt aktualisiert am"
+
+msgid "Launch"
+msgstr "Starten"
+
+msgid "Open an issue"
+msgstr "Öffnen Sie ein Problem"
+
+msgid "Print to PDF"
+msgstr "In PDF drucken"
+
+msgid "Source repository"
+msgstr "Quell-Repository"
+
+msgid "Sphinx Book Theme"
+msgstr "Sphinx-Buch-Thema"
+
+msgid "Theme by the"
+msgstr "Thema von der"
+
+msgid "Toggle navigation"
+msgstr "Navigation umschalten"
+
+msgid "next page"
+msgstr "Nächste Seite"
+
+msgid "open issue"
+msgstr "offenes Thema"
+
+msgid "previous page"
+msgstr "vorherige Seite"
+
+msgid "repository"
+msgstr "Repository"
+
+msgid "suggest edit"
+msgstr "vorschlagen zu bearbeiten"
diff --git a/tirx/_static/locales/el/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/el/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..fca6e9355f3
Binary files /dev/null and b/tirx/_static/locales/el/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/el/LC_MESSAGES/booktheme.po b/tirx/_static/locales/el/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..27d1274a288
--- /dev/null
+++ b/tirx/_static/locales/el/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: el\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Από το"
+
+msgid "By"
+msgstr "Με"
+
+msgid "Contents"
+msgstr "Περιεχόμενα"
+
+msgid "Copyright"
+msgstr "Πνευματική ιδιοκτησία"
+
+msgid "Download notebook file"
+msgstr "Λήψη αρχείου σημειωματάριου"
+
+msgid "Download source file"
+msgstr "Λήψη αρχείου προέλευσης"
+
+msgid "Download this page"
+msgstr "Λήψη αυτής της σελίδας"
+
+msgid "Edit this page"
+msgstr "Επεξεργαστείτε αυτήν τη σελίδα"
+
+msgid "Fullscreen mode"
+msgstr "ΛΕΙΤΟΥΡΓΙΑ ΠΛΗΡΟΥΣ ΟΘΟΝΗΣ"
+
+msgid "Last updated on"
+msgstr "Τελευταία ενημέρωση στις"
+
+msgid "Launch"
+msgstr "Εκτόξευση"
+
+msgid "Open an issue"
+msgstr "Ανοίξτε ένα ζήτημα"
+
+msgid "Print to PDF"
+msgstr "Εκτύπωση σε PDF"
+
+msgid "Source repository"
+msgstr "Αποθήκη πηγής"
+
+msgid "Sphinx Book Theme"
+msgstr "Θέμα βιβλίου Sphinx"
+
+msgid "Theme by the"
+msgstr "Θέμα από το"
+
+msgid "Toggle navigation"
+msgstr "Εναλλαγή πλοήγησης"
+
+msgid "next page"
+msgstr "επόμενη σελίδα"
+
+msgid "open issue"
+msgstr "ανοιχτό ζήτημα"
+
+msgid "previous page"
+msgstr "προηγούμενη σελίδα"
+
+msgid "repository"
+msgstr "αποθήκη"
+
+msgid "suggest edit"
+msgstr "προτείνω επεξεργασία"
diff --git a/tirx/_static/locales/eo/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/eo/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..d1072bbec62
Binary files /dev/null and b/tirx/_static/locales/eo/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/eo/LC_MESSAGES/booktheme.po b/tirx/_static/locales/eo/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..1fda1bcd31b
--- /dev/null
+++ b/tirx/_static/locales/eo/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: eo\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Per la"
+
+msgid "By"
+msgstr "De"
+
+msgid "Contents"
+msgstr "Enhavo"
+
+msgid "Copyright"
+msgstr "Kopirajto"
+
+msgid "Download notebook file"
+msgstr "Elŝutu kajeran dosieron"
+
+msgid "Download source file"
+msgstr "Elŝutu fontodosieron"
+
+msgid "Download this page"
+msgstr "Elŝutu ĉi tiun paĝon"
+
+msgid "Edit this page"
+msgstr "Redaktu ĉi tiun paĝon"
+
+msgid "Fullscreen mode"
+msgstr "Plenekrana reĝimo"
+
+msgid "Last updated on"
+msgstr "Laste ĝisdatigita la"
+
+msgid "Launch"
+msgstr "Lanĉo"
+
+msgid "Open an issue"
+msgstr "Malfermu numeron"
+
+msgid "Print to PDF"
+msgstr "Presi al PDF"
+
+msgid "Source repository"
+msgstr "Fonto-deponejo"
+
+msgid "Sphinx Book Theme"
+msgstr "Sfinksa Libro-Temo"
+
+msgid "Theme by the"
+msgstr "Temo de la"
+
+msgid "Toggle navigation"
+msgstr "Ŝalti navigadon"
+
+msgid "next page"
+msgstr "sekva paĝo"
+
+msgid "open issue"
+msgstr "malferma numero"
+
+msgid "previous page"
+msgstr "antaŭa paĝo"
+
+msgid "repository"
+msgstr "deponejo"
+
+msgid "suggest edit"
+msgstr "sugesti redaktadon"
diff --git a/tirx/_static/locales/es/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/es/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..ba2ee4dc221
Binary files /dev/null and b/tirx/_static/locales/es/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/es/LC_MESSAGES/booktheme.po b/tirx/_static/locales/es/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..c91b41b9483
--- /dev/null
+++ b/tirx/_static/locales/es/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Por el"
+
+msgid "By"
+msgstr "Por"
+
+msgid "Contents"
+msgstr "Contenido"
+
+msgid "Copyright"
+msgstr "Derechos de autor"
+
+msgid "Download notebook file"
+msgstr "Descargar archivo de cuaderno"
+
+msgid "Download source file"
+msgstr "Descargar archivo fuente"
+
+msgid "Download this page"
+msgstr "Descarga esta pagina"
+
+msgid "Edit this page"
+msgstr "Edita esta página"
+
+msgid "Fullscreen mode"
+msgstr "Modo de pantalla completa"
+
+msgid "Last updated on"
+msgstr "Ultima actualización en"
+
+msgid "Launch"
+msgstr "Lanzamiento"
+
+msgid "Open an issue"
+msgstr "Abrir un problema"
+
+msgid "Print to PDF"
+msgstr "Imprimir en PDF"
+
+msgid "Source repository"
+msgstr "Repositorio de origen"
+
+msgid "Sphinx Book Theme"
+msgstr "Tema del libro de la esfinge"
+
+msgid "Theme by the"
+msgstr "Tema por el"
+
+msgid "Toggle navigation"
+msgstr "Navegación de palanca"
+
+msgid "next page"
+msgstr "siguiente página"
+
+msgid "open issue"
+msgstr "Tema abierto"
+
+msgid "previous page"
+msgstr "pagina anterior"
+
+msgid "repository"
+msgstr "repositorio"
+
+msgid "suggest edit"
+msgstr "sugerir editar"
diff --git a/tirx/_static/locales/et/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/et/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..983b82391f4
Binary files /dev/null and b/tirx/_static/locales/et/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/et/LC_MESSAGES/booktheme.po b/tirx/_static/locales/et/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..2fd1ea20878
--- /dev/null
+++ b/tirx/_static/locales/et/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: et\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Autor"
+
+msgid "By"
+msgstr "Kõrval"
+
+msgid "Contents"
+msgstr "Sisu"
+
+msgid "Copyright"
+msgstr "Autoriõigus"
+
+msgid "Download notebook file"
+msgstr "Laadige sülearvuti fail alla"
+
+msgid "Download source file"
+msgstr "Laadige alla lähtefail"
+
+msgid "Download this page"
+msgstr "Laadige see leht alla"
+
+msgid "Edit this page"
+msgstr "Muutke seda lehte"
+
+msgid "Fullscreen mode"
+msgstr "Täisekraanirežiim"
+
+msgid "Last updated on"
+msgstr "Viimati uuendatud"
+
+msgid "Launch"
+msgstr "Käivitage"
+
+msgid "Open an issue"
+msgstr "Avage probleem"
+
+msgid "Print to PDF"
+msgstr "Prindi PDF-i"
+
+msgid "Source repository"
+msgstr "Allikahoidla"
+
+msgid "Sphinx Book Theme"
+msgstr "Sfinksiraamatu teema"
+
+msgid "Theme by the"
+msgstr "Teema"
+
+msgid "Toggle navigation"
+msgstr "Lülita navigeerimine sisse"
+
+msgid "next page"
+msgstr "järgmine leht"
+
+msgid "open issue"
+msgstr "avatud küsimus"
+
+msgid "previous page"
+msgstr "eelmine leht"
+
+msgid "repository"
+msgstr "hoidla"
+
+msgid "suggest edit"
+msgstr "soovita muuta"
diff --git a/tirx/_static/locales/fi/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/fi/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..d8ac054597c
Binary files /dev/null and b/tirx/_static/locales/fi/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/fi/LC_MESSAGES/booktheme.po b/tirx/_static/locales/fi/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..2843f2c79ff
--- /dev/null
+++ b/tirx/_static/locales/fi/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Mukaan"
+
+msgid "By"
+msgstr "Tekijä"
+
+msgid "Contents"
+msgstr "Sisällys"
+
+msgid "Copyright"
+msgstr "Tekijänoikeus"
+
+msgid "Download notebook file"
+msgstr "Lataa muistikirjatiedosto"
+
+msgid "Download source file"
+msgstr "Lataa lähdetiedosto"
+
+msgid "Download this page"
+msgstr "Lataa tämä sivu"
+
+msgid "Edit this page"
+msgstr "Muokkaa tätä sivua"
+
+msgid "Fullscreen mode"
+msgstr "Koko näytön tila"
+
+msgid "Last updated on"
+msgstr "Viimeksi päivitetty"
+
+msgid "Launch"
+msgstr "Tuoda markkinoille"
+
+msgid "Open an issue"
+msgstr "Avaa ongelma"
+
+msgid "Print to PDF"
+msgstr "Tulosta PDF-tiedostoon"
+
+msgid "Source repository"
+msgstr "Lähteen arkisto"
+
+msgid "Sphinx Book Theme"
+msgstr "Sphinx-kirjan teema"
+
+msgid "Theme by the"
+msgstr "Teeman tekijä"
+
+msgid "Toggle navigation"
+msgstr "Vaihda navigointia"
+
+msgid "next page"
+msgstr "seuraava sivu"
+
+msgid "open issue"
+msgstr "avoin ongelma"
+
+msgid "previous page"
+msgstr "Edellinen sivu"
+
+msgid "repository"
+msgstr "arkisto"
+
+msgid "suggest edit"
+msgstr "ehdottaa muokkausta"
diff --git a/tirx/_static/locales/fr/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/fr/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..f663d39f0fa
Binary files /dev/null and b/tirx/_static/locales/fr/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/fr/LC_MESSAGES/booktheme.po b/tirx/_static/locales/fr/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..351cddd6bfa
--- /dev/null
+++ b/tirx/_static/locales/fr/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Par le"
+
+msgid "By"
+msgstr "Par"
+
+msgid "Contents"
+msgstr "Contenu"
+
+msgid "Copyright"
+msgstr "droits d'auteur"
+
+msgid "Download notebook file"
+msgstr "Télécharger le fichier notebook"
+
+msgid "Download source file"
+msgstr "Télécharger le fichier source"
+
+msgid "Download this page"
+msgstr "Téléchargez cette page"
+
+msgid "Edit this page"
+msgstr "Modifier cette page"
+
+msgid "Fullscreen mode"
+msgstr "Mode plein écran"
+
+msgid "Last updated on"
+msgstr "Dernière mise à jour le"
+
+msgid "Launch"
+msgstr "lancement"
+
+msgid "Open an issue"
+msgstr "Ouvrez un problème"
+
+msgid "Print to PDF"
+msgstr "Imprimer au format PDF"
+
+msgid "Source repository"
+msgstr "Dépôt source"
+
+msgid "Sphinx Book Theme"
+msgstr "Thème du livre Sphinx"
+
+msgid "Theme by the"
+msgstr "Thème par le"
+
+msgid "Toggle navigation"
+msgstr "Basculer la navigation"
+
+msgid "next page"
+msgstr "page suivante"
+
+msgid "open issue"
+msgstr "signaler un problème"
+
+msgid "previous page"
+msgstr "page précédente"
+
+msgid "repository"
+msgstr "dépôt"
+
+msgid "suggest edit"
+msgstr "suggestion de modification"
diff --git a/tirx/_static/locales/hr/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/hr/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..eca4a1a2842
Binary files /dev/null and b/tirx/_static/locales/hr/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/hr/LC_MESSAGES/booktheme.po b/tirx/_static/locales/hr/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..3c1cf079542
--- /dev/null
+++ b/tirx/_static/locales/hr/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: hr\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Od strane"
+
+msgid "By"
+msgstr "Po"
+
+msgid "Contents"
+msgstr "Sadržaj"
+
+msgid "Copyright"
+msgstr "Autorska prava"
+
+msgid "Download notebook file"
+msgstr "Preuzmi datoteku bilježnice"
+
+msgid "Download source file"
+msgstr "Preuzmi izvornu datoteku"
+
+msgid "Download this page"
+msgstr "Preuzmite ovu stranicu"
+
+msgid "Edit this page"
+msgstr "Uredite ovu stranicu"
+
+msgid "Fullscreen mode"
+msgstr "Način preko cijelog zaslona"
+
+msgid "Last updated on"
+msgstr "Posljednje ažuriranje:"
+
+msgid "Launch"
+msgstr "Pokrenite"
+
+msgid "Open an issue"
+msgstr "Otvorite izdanje"
+
+msgid "Print to PDF"
+msgstr "Ispis u PDF"
+
+msgid "Source repository"
+msgstr "Izvorno spremište"
+
+msgid "Sphinx Book Theme"
+msgstr "Tema knjige Sphinx"
+
+msgid "Theme by the"
+msgstr "Tema autora"
+
+msgid "Toggle navigation"
+msgstr "Uključi / isključi navigaciju"
+
+msgid "next page"
+msgstr "sljedeća stranica"
+
+msgid "open issue"
+msgstr "otvoreno izdanje"
+
+msgid "previous page"
+msgstr "Prethodna stranica"
+
+msgid "repository"
+msgstr "spremište"
+
+msgid "suggest edit"
+msgstr "predloži uređivanje"
diff --git a/tirx/_static/locales/hu/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/hu/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..63f6e6da14c
Binary files /dev/null and b/tirx/_static/locales/hu/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/hu/LC_MESSAGES/booktheme.po b/tirx/_static/locales/hu/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..1f0b2b020b4
--- /dev/null
+++ b/tirx/_static/locales/hu/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: hu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Szerző:"
+
+msgid "By"
+msgstr "Szerző:"
+
+msgid "Contents"
+msgstr "Tartalom"
+
+msgid "Copyright"
+msgstr "Szerzői jog"
+
+msgid "Download notebook file"
+msgstr "Jegyzettömbfájl letöltése"
+
+msgid "Download source file"
+msgstr "Forrásfájl letöltése"
+
+msgid "Download this page"
+msgstr "Az oldal letöltése"
+
+msgid "Edit this page"
+msgstr "Az oldal szerkesztése"
+
+msgid "Fullscreen mode"
+msgstr "Teljes képernyős mód"
+
+msgid "Last updated on"
+msgstr "Utoljára frissítve:"
+
+msgid "Launch"
+msgstr "Indítás"
+
+msgid "Open an issue"
+msgstr "Problémajegy nyitása"
+
+msgid "Print to PDF"
+msgstr "Nyomtatás PDF-be"
+
+msgid "Source repository"
+msgstr "Forráskódtároló"
+
+msgid "Sphinx Book Theme"
+msgstr "Sphinx könyvsablon"
+
+msgid "Theme by the"
+msgstr "Téma készítője:"
+
+msgid "Toggle navigation"
+msgstr "Navigáció ki- és bekapcsolása"
+
+msgid "next page"
+msgstr "következő oldal"
+
+msgid "open issue"
+msgstr "problémajegy nyitása"
+
+msgid "previous page"
+msgstr "előző oldal"
+
+msgid "repository"
+msgstr "tároló"
+
+msgid "suggest edit"
+msgstr "szerkesztési javaslat"
diff --git a/tirx/_static/locales/id/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/id/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..d07a06a9d27
Binary files /dev/null and b/tirx/_static/locales/id/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/id/LC_MESSAGES/booktheme.po b/tirx/_static/locales/id/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..809498c723c
--- /dev/null
+++ b/tirx/_static/locales/id/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: id\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Oleh"
+
+msgid "By"
+msgstr "Oleh"
+
+msgid "Contents"
+msgstr "Isi"
+
+msgid "Copyright"
+msgstr "hak cipta"
+
+msgid "Download notebook file"
+msgstr "Unduh file notebook"
+
+msgid "Download source file"
+msgstr "Unduh file sumber"
+
+msgid "Download this page"
+msgstr "Unduh halaman ini"
+
+msgid "Edit this page"
+msgstr "Edit halaman ini"
+
+msgid "Fullscreen mode"
+msgstr "Mode layar penuh"
+
+msgid "Last updated on"
+msgstr "Terakhir diperbarui saat"
+
+msgid "Launch"
+msgstr "Meluncurkan"
+
+msgid "Open an issue"
+msgstr "Buka masalah"
+
+msgid "Print to PDF"
+msgstr "Cetak ke PDF"
+
+msgid "Source repository"
+msgstr "Repositori sumber"
+
+msgid "Sphinx Book Theme"
+msgstr "Tema Buku Sphinx"
+
+msgid "Theme by the"
+msgstr "Tema oleh"
+
+msgid "Toggle navigation"
+msgstr "Alihkan navigasi"
+
+msgid "next page"
+msgstr "halaman selanjutnya"
+
+msgid "open issue"
+msgstr "masalah terbuka"
+
+msgid "previous page"
+msgstr "halaman sebelumnya"
+
+msgid "repository"
+msgstr "gudang"
+
+msgid "suggest edit"
+msgstr "menyarankan edit"
diff --git a/tirx/_static/locales/it/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/it/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..53ba476edd2
Binary files /dev/null and b/tirx/_static/locales/it/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/it/LC_MESSAGES/booktheme.po b/tirx/_static/locales/it/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..fbc8d03b9ed
--- /dev/null
+++ b/tirx/_static/locales/it/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: it\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Dal"
+
+msgid "By"
+msgstr "Di"
+
+msgid "Contents"
+msgstr "Contenuti"
+
+msgid "Copyright"
+msgstr "Diritto d'autore"
+
+msgid "Download notebook file"
+msgstr "Scarica il file del taccuino"
+
+msgid "Download source file"
+msgstr "Scarica il file sorgente"
+
+msgid "Download this page"
+msgstr "Scarica questa pagina"
+
+msgid "Edit this page"
+msgstr "Modifica questa pagina"
+
+msgid "Fullscreen mode"
+msgstr "Modalità schermo intero"
+
+msgid "Last updated on"
+msgstr "Ultimo aggiornamento il"
+
+msgid "Launch"
+msgstr "Lanciare"
+
+msgid "Open an issue"
+msgstr "Apri un problema"
+
+msgid "Print to PDF"
+msgstr "Stampa in PDF"
+
+msgid "Source repository"
+msgstr "Repository di origine"
+
+msgid "Sphinx Book Theme"
+msgstr "Tema del libro della Sfinge"
+
+msgid "Theme by the"
+msgstr "Tema di"
+
+msgid "Toggle navigation"
+msgstr "Attiva / disattiva la navigazione"
+
+msgid "next page"
+msgstr "pagina successiva"
+
+msgid "open issue"
+msgstr "questione aperta"
+
+msgid "previous page"
+msgstr "pagina precedente"
+
+msgid "repository"
+msgstr "repository"
+
+msgid "suggest edit"
+msgstr "suggerisci modifica"
diff --git a/tirx/_static/locales/iw/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/iw/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..a45c6575e46
Binary files /dev/null and b/tirx/_static/locales/iw/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/iw/LC_MESSAGES/booktheme.po b/tirx/_static/locales/iw/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..a82f351297e
--- /dev/null
+++ b/tirx/_static/locales/iw/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: iw\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "דרך"
+
+msgid "By"
+msgstr "על ידי"
+
+msgid "Contents"
+msgstr "תוכן"
+
+msgid "Copyright"
+msgstr "זכויות יוצרים"
+
+msgid "Download notebook file"
+msgstr "הורד קובץ מחברת"
+
+msgid "Download source file"
+msgstr "הורד את קובץ המקור"
+
+msgid "Download this page"
+msgstr "הורד דף זה"
+
+msgid "Edit this page"
+msgstr "ערוך דף זה"
+
+msgid "Fullscreen mode"
+msgstr "מצב מסך מלא"
+
+msgid "Last updated on"
+msgstr "עודכן לאחרונה ב"
+
+msgid "Launch"
+msgstr "לְהַשִׁיק"
+
+msgid "Open an issue"
+msgstr "פתח גיליון"
+
+msgid "Print to PDF"
+msgstr "הדפס לקובץ PDF"
+
+msgid "Source repository"
+msgstr "מאגר המקורות"
+
+msgid "Sphinx Book Theme"
+msgstr "נושא ספר ספינקס"
+
+msgid "Theme by the"
+msgstr "נושא מאת"
+
+msgid "Toggle navigation"
+msgstr "החלף ניווט"
+
+msgid "next page"
+msgstr "עמוד הבא"
+
+msgid "open issue"
+msgstr "בעיה פתוחה"
+
+msgid "previous page"
+msgstr "עמוד קודם"
+
+msgid "repository"
+msgstr "מאגר"
+
+msgid "suggest edit"
+msgstr "מציע לערוך"
diff --git a/tirx/_static/locales/ja/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/ja/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..1cefd29ce3c
Binary files /dev/null and b/tirx/_static/locales/ja/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/ja/LC_MESSAGES/booktheme.po b/tirx/_static/locales/ja/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..3caab09e196
--- /dev/null
+++ b/tirx/_static/locales/ja/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ja\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "によって"
+
+msgid "By"
+msgstr "著者"
+
+msgid "Contents"
+msgstr "目次"
+
+msgid "Copyright"
+msgstr "Copyright"
+
+msgid "Download notebook file"
+msgstr "ノートブックファイルをダウンロード"
+
+msgid "Download source file"
+msgstr "ソースファイルをダウンロード"
+
+msgid "Download this page"
+msgstr "このページをダウンロード"
+
+msgid "Edit this page"
+msgstr "このページを編集"
+
+msgid "Fullscreen mode"
+msgstr "全画面モード"
+
+msgid "Last updated on"
+msgstr "最終更新日"
+
+msgid "Launch"
+msgstr "起動"
+
+msgid "Open an issue"
+msgstr "問題を報告"
+
+msgid "Print to PDF"
+msgstr "PDFに印刷"
+
+msgid "Source repository"
+msgstr "ソースリポジトリ"
+
+msgid "Sphinx Book Theme"
+msgstr "スフィンクスの本のテーマ"
+
+msgid "Theme by the"
+msgstr "のテーマ"
+
+msgid "Toggle navigation"
+msgstr "ナビゲーションを切り替え"
+
+msgid "next page"
+msgstr "次のページ"
+
+msgid "open issue"
+msgstr "未解決の問題"
+
+msgid "previous page"
+msgstr "前のページ"
+
+msgid "repository"
+msgstr "リポジトリ"
+
+msgid "suggest edit"
+msgstr "編集を提案する"
diff --git a/tirx/_static/locales/ko/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/ko/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..06c7ec938b4
Binary files /dev/null and b/tirx/_static/locales/ko/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/ko/LC_MESSAGES/booktheme.po b/tirx/_static/locales/ko/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..2db12a1b7d6
--- /dev/null
+++ b/tirx/_static/locales/ko/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ko\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "에 의해"
+
+msgid "By"
+msgstr "으로"
+
+msgid "Contents"
+msgstr "내용"
+
+msgid "Copyright"
+msgstr "저작권"
+
+msgid "Download notebook file"
+msgstr "노트북 파일 다운로드"
+
+msgid "Download source file"
+msgstr "소스 파일 다운로드"
+
+msgid "Download this page"
+msgstr "이 페이지 다운로드"
+
+msgid "Edit this page"
+msgstr "이 페이지 편집"
+
+msgid "Fullscreen mode"
+msgstr "전체 화면으로보기"
+
+msgid "Last updated on"
+msgstr "마지막 업데이트"
+
+msgid "Launch"
+msgstr "시작하다"
+
+msgid "Open an issue"
+msgstr "이슈 열기"
+
+msgid "Print to PDF"
+msgstr "PDF로 인쇄"
+
+msgid "Source repository"
+msgstr "소스 저장소"
+
+msgid "Sphinx Book Theme"
+msgstr "스핑크스 도서 테마"
+
+msgid "Theme by the"
+msgstr "테마별"
+
+msgid "Toggle navigation"
+msgstr "탐색 전환"
+
+msgid "next page"
+msgstr "다음 페이지"
+
+msgid "open issue"
+msgstr "열린 문제"
+
+msgid "previous page"
+msgstr "이전 페이지"
+
+msgid "repository"
+msgstr "저장소"
+
+msgid "suggest edit"
+msgstr "편집 제안"
diff --git a/tirx/_static/locales/lt/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/lt/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..4468ba04bc1
Binary files /dev/null and b/tirx/_static/locales/lt/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/lt/LC_MESSAGES/booktheme.po b/tirx/_static/locales/lt/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..07b64680be0
--- /dev/null
+++ b/tirx/_static/locales/lt/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: lt\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Prie"
+
+msgid "By"
+msgstr "Iki"
+
+msgid "Contents"
+msgstr "Turinys"
+
+msgid "Copyright"
+msgstr "Autorių teisės"
+
+msgid "Download notebook file"
+msgstr "Atsisiųsti nešiojamojo kompiuterio failą"
+
+msgid "Download source file"
+msgstr "Atsisiųsti šaltinio failą"
+
+msgid "Download this page"
+msgstr "Atsisiųskite šį puslapį"
+
+msgid "Edit this page"
+msgstr "Redaguoti šį puslapį"
+
+msgid "Fullscreen mode"
+msgstr "Pilno ekrano režimas"
+
+msgid "Last updated on"
+msgstr "Paskutinį kartą atnaujinta"
+
+msgid "Launch"
+msgstr "Paleiskite"
+
+msgid "Open an issue"
+msgstr "Atidarykite problemą"
+
+msgid "Print to PDF"
+msgstr "Spausdinti į PDF"
+
+msgid "Source repository"
+msgstr "Šaltinio saugykla"
+
+msgid "Sphinx Book Theme"
+msgstr "Sfinkso knygos tema"
+
+msgid "Theme by the"
+msgstr "Tema"
+
+msgid "Toggle navigation"
+msgstr "Perjungti naršymą"
+
+msgid "next page"
+msgstr "Kitas puslapis"
+
+msgid "open issue"
+msgstr "atviras klausimas"
+
+msgid "previous page"
+msgstr "Ankstesnis puslapis"
+
+msgid "repository"
+msgstr "saugykla"
+
+msgid "suggest edit"
+msgstr "pasiūlyti redaguoti"
diff --git a/tirx/_static/locales/lv/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/lv/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..74aa4d8985d
Binary files /dev/null and b/tirx/_static/locales/lv/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/lv/LC_MESSAGES/booktheme.po b/tirx/_static/locales/lv/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..b741c2891d8
--- /dev/null
+++ b/tirx/_static/locales/lv/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: lv\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Ar"
+
+msgid "By"
+msgstr "Autors"
+
+msgid "Contents"
+msgstr "Saturs"
+
+msgid "Copyright"
+msgstr "Autortiesības"
+
+msgid "Download notebook file"
+msgstr "Lejupielādēt piezīmju grāmatiņu"
+
+msgid "Download source file"
+msgstr "Lejupielādēt avota failu"
+
+msgid "Download this page"
+msgstr "Lejupielādējiet šo lapu"
+
+msgid "Edit this page"
+msgstr "Rediģēt šo lapu"
+
+msgid "Fullscreen mode"
+msgstr "Pilnekrāna režīms"
+
+msgid "Last updated on"
+msgstr "Pēdējoreiz atjaunināts"
+
+msgid "Launch"
+msgstr "Uzsākt"
+
+msgid "Open an issue"
+msgstr "Atveriet problēmu"
+
+msgid "Print to PDF"
+msgstr "Drukāt PDF formātā"
+
+msgid "Source repository"
+msgstr "Avota krātuve"
+
+msgid "Sphinx Book Theme"
+msgstr "Sfinksa grāmatas tēma"
+
+msgid "Theme by the"
+msgstr "Autora tēma"
+
+msgid "Toggle navigation"
+msgstr "Pārslēgt navigāciju"
+
+msgid "next page"
+msgstr "nākamā lapaspuse"
+
+msgid "open issue"
+msgstr "atklāts jautājums"
+
+msgid "previous page"
+msgstr "iepriekšējā lapa"
+
+msgid "repository"
+msgstr "krātuve"
+
+msgid "suggest edit"
+msgstr "ieteikt rediģēt"
diff --git a/tirx/_static/locales/ml/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/ml/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..2736e8fcf6f
Binary files /dev/null and b/tirx/_static/locales/ml/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/ml/LC_MESSAGES/booktheme.po b/tirx/_static/locales/ml/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..bdad3de20cf
--- /dev/null
+++ b/tirx/_static/locales/ml/LC_MESSAGES/booktheme.po
@@ -0,0 +1,66 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ml\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "എഴുതിയത്"
+
+msgid "By"
+msgstr "എഴുതിയത്"
+
+msgid "Copyright"
+msgstr "പകർപ്പവകാശം"
+
+msgid "Download notebook file"
+msgstr "നോട്ട്ബുക്ക് ഫയൽ ഡൺലോഡ് ചെയ്യുക"
+
+msgid "Download source file"
+msgstr "ഉറവിട ഫയൽ ഡൗൺലോഡുചെയ്യുക"
+
+msgid "Download this page"
+msgstr "ഈ പേജ് ഡൗൺലോഡുചെയ്യുക"
+
+msgid "Edit this page"
+msgstr "ഈ പേജ് എഡിറ്റുചെയ്യുക"
+
+msgid "Last updated on"
+msgstr "അവസാനം അപ്ഡേറ്റുചെയ്തത്"
+
+msgid "Launch"
+msgstr "സമാരംഭിക്കുക"
+
+msgid "Open an issue"
+msgstr "ഒരു പ്രശ്നം തുറക്കുക"
+
+msgid "Print to PDF"
+msgstr "PDF- ലേക്ക് പ്രിന്റുചെയ്യുക"
+
+msgid "Source repository"
+msgstr "ഉറവിട ശേഖരം"
+
+msgid "Sphinx Book Theme"
+msgstr "സ്ഫിങ്ക്സ് പുസ്തക തീം"
+
+msgid "Theme by the"
+msgstr "പ്രമേയം"
+
+msgid "Toggle navigation"
+msgstr "നാവിഗേഷൻ ടോഗിൾ ചെയ്യുക"
+
+msgid "next page"
+msgstr "അടുത്ത പേജ്"
+
+msgid "open issue"
+msgstr "തുറന്ന പ്രശ്നം"
+
+msgid "previous page"
+msgstr "മുൻപത്തെ താൾ"
+
+msgid "suggest edit"
+msgstr "എഡിറ്റുചെയ്യാൻ നിർദ്ദേശിക്കുക"
diff --git a/tirx/_static/locales/mr/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/mr/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..fe530100d77
Binary files /dev/null and b/tirx/_static/locales/mr/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/mr/LC_MESSAGES/booktheme.po b/tirx/_static/locales/mr/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..61bfad4d4c2
--- /dev/null
+++ b/tirx/_static/locales/mr/LC_MESSAGES/booktheme.po
@@ -0,0 +1,66 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: mr\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "द्वारा"
+
+msgid "By"
+msgstr "द्वारा"
+
+msgid "Copyright"
+msgstr "कॉपीराइट"
+
+msgid "Download notebook file"
+msgstr "नोटबुक फाईल डाउनलोड करा"
+
+msgid "Download source file"
+msgstr "स्त्रोत फाइल डाउनलोड करा"
+
+msgid "Download this page"
+msgstr "हे पृष्ठ डाउनलोड करा"
+
+msgid "Edit this page"
+msgstr "हे पृष्ठ संपादित करा"
+
+msgid "Last updated on"
+msgstr "अखेरचे अद्यतनित"
+
+msgid "Launch"
+msgstr "लाँच करा"
+
+msgid "Open an issue"
+msgstr "एक मुद्दा उघडा"
+
+msgid "Print to PDF"
+msgstr "पीडीएफवर मुद्रित करा"
+
+msgid "Source repository"
+msgstr "स्त्रोत भांडार"
+
+msgid "Sphinx Book Theme"
+msgstr "स्फिंक्स बुक थीम"
+
+msgid "Theme by the"
+msgstr "द्वारा थीम"
+
+msgid "Toggle navigation"
+msgstr "नेव्हिगेशन टॉगल करा"
+
+msgid "next page"
+msgstr "पुढील पृष्ठ"
+
+msgid "open issue"
+msgstr "खुला मुद्दा"
+
+msgid "previous page"
+msgstr "मागील पान"
+
+msgid "suggest edit"
+msgstr "संपादन सुचवा"
diff --git a/tirx/_static/locales/ms/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/ms/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..f02603fa252
Binary files /dev/null and b/tirx/_static/locales/ms/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/ms/LC_MESSAGES/booktheme.po b/tirx/_static/locales/ms/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..ade6515a777
--- /dev/null
+++ b/tirx/_static/locales/ms/LC_MESSAGES/booktheme.po
@@ -0,0 +1,66 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ms\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Oleh"
+
+msgid "By"
+msgstr "Oleh"
+
+msgid "Copyright"
+msgstr "hak cipta"
+
+msgid "Download notebook file"
+msgstr "Muat turun fail buku nota"
+
+msgid "Download source file"
+msgstr "Muat turun fail sumber"
+
+msgid "Download this page"
+msgstr "Muat turun halaman ini"
+
+msgid "Edit this page"
+msgstr "Edit halaman ini"
+
+msgid "Last updated on"
+msgstr "Terakhir dikemas kini pada"
+
+msgid "Launch"
+msgstr "Lancarkan"
+
+msgid "Open an issue"
+msgstr "Buka masalah"
+
+msgid "Print to PDF"
+msgstr "Cetak ke PDF"
+
+msgid "Source repository"
+msgstr "Repositori sumber"
+
+msgid "Sphinx Book Theme"
+msgstr "Tema Buku Sphinx"
+
+msgid "Theme by the"
+msgstr "Tema oleh"
+
+msgid "Toggle navigation"
+msgstr "Togol navigasi"
+
+msgid "next page"
+msgstr "muka surat seterusnya"
+
+msgid "open issue"
+msgstr "isu terbuka"
+
+msgid "previous page"
+msgstr "halaman sebelumnya"
+
+msgid "suggest edit"
+msgstr "cadangkan edit"
diff --git a/tirx/_static/locales/nl/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/nl/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..e59e7ecb308
Binary files /dev/null and b/tirx/_static/locales/nl/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/nl/LC_MESSAGES/booktheme.po b/tirx/_static/locales/nl/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..e114611d69d
--- /dev/null
+++ b/tirx/_static/locales/nl/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: nl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Door de"
+
+msgid "By"
+msgstr "Door"
+
+msgid "Contents"
+msgstr "Inhoud"
+
+msgid "Copyright"
+msgstr "auteursrechten"
+
+msgid "Download notebook file"
+msgstr "Download notebookbestand"
+
+msgid "Download source file"
+msgstr "Download het bronbestand"
+
+msgid "Download this page"
+msgstr "Download deze pagina"
+
+msgid "Edit this page"
+msgstr "bewerk deze pagina"
+
+msgid "Fullscreen mode"
+msgstr "Volledig scherm"
+
+msgid "Last updated on"
+msgstr "Laatst geupdate op"
+
+msgid "Launch"
+msgstr "Lancering"
+
+msgid "Open an issue"
+msgstr "Open een probleem"
+
+msgid "Print to PDF"
+msgstr "Afdrukken naar pdf"
+
+msgid "Source repository"
+msgstr "Bronopslagplaats"
+
+msgid "Sphinx Book Theme"
+msgstr "Sphinx-boekthema"
+
+msgid "Theme by the"
+msgstr "Thema door de"
+
+msgid "Toggle navigation"
+msgstr "Schakel navigatie"
+
+msgid "next page"
+msgstr "volgende bladzijde"
+
+msgid "open issue"
+msgstr "open probleem"
+
+msgid "previous page"
+msgstr "vorige pagina"
+
+msgid "repository"
+msgstr "repository"
+
+msgid "suggest edit"
+msgstr "suggereren bewerken"
diff --git a/tirx/_static/locales/no/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/no/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..6cd15c88de6
Binary files /dev/null and b/tirx/_static/locales/no/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/no/LC_MESSAGES/booktheme.po b/tirx/_static/locales/no/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..53fa9fc3662
--- /dev/null
+++ b/tirx/_static/locales/no/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: no\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Ved"
+
+msgid "By"
+msgstr "Av"
+
+msgid "Contents"
+msgstr "Innhold"
+
+msgid "Copyright"
+msgstr "opphavsrett"
+
+msgid "Download notebook file"
+msgstr "Last ned notatbokfilen"
+
+msgid "Download source file"
+msgstr "Last ned kildefilen"
+
+msgid "Download this page"
+msgstr "Last ned denne siden"
+
+msgid "Edit this page"
+msgstr "Rediger denne siden"
+
+msgid "Fullscreen mode"
+msgstr "Fullskjerm-modus"
+
+msgid "Last updated on"
+msgstr "Sist oppdatert den"
+
+msgid "Launch"
+msgstr "Start"
+
+msgid "Open an issue"
+msgstr "Åpne et problem"
+
+msgid "Print to PDF"
+msgstr "Skriv ut til PDF"
+
+msgid "Source repository"
+msgstr "Kildedepot"
+
+msgid "Sphinx Book Theme"
+msgstr "Sphinx boktema"
+
+msgid "Theme by the"
+msgstr "Tema av"
+
+msgid "Toggle navigation"
+msgstr "Bytt navigasjon"
+
+msgid "next page"
+msgstr "neste side"
+
+msgid "open issue"
+msgstr "åpent nummer"
+
+msgid "previous page"
+msgstr "forrige side"
+
+msgid "repository"
+msgstr "oppbevaringssted"
+
+msgid "suggest edit"
+msgstr "foreslå redigering"
diff --git a/tirx/_static/locales/pl/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/pl/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..9ebb584f770
Binary files /dev/null and b/tirx/_static/locales/pl/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/pl/LC_MESSAGES/booktheme.po b/tirx/_static/locales/pl/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..a4822159fb9
--- /dev/null
+++ b/tirx/_static/locales/pl/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Przez"
+
+msgid "By"
+msgstr "Przez"
+
+msgid "Contents"
+msgstr "Zawartość"
+
+msgid "Copyright"
+msgstr "prawa autorskie"
+
+msgid "Download notebook file"
+msgstr "Pobierz plik notatnika"
+
+msgid "Download source file"
+msgstr "Pobierz plik źródłowy"
+
+msgid "Download this page"
+msgstr "Pobierz tę stronę"
+
+msgid "Edit this page"
+msgstr "Edytuj tę strone"
+
+msgid "Fullscreen mode"
+msgstr "Pełny ekran"
+
+msgid "Last updated on"
+msgstr "Ostatnia aktualizacja"
+
+msgid "Launch"
+msgstr "Uruchomić"
+
+msgid "Open an issue"
+msgstr "Otwórz problem"
+
+msgid "Print to PDF"
+msgstr "Drukuj do PDF"
+
+msgid "Source repository"
+msgstr "Repozytorium źródłowe"
+
+msgid "Sphinx Book Theme"
+msgstr "Motyw książki Sphinx"
+
+msgid "Theme by the"
+msgstr "Motyw autorstwa"
+
+msgid "Toggle navigation"
+msgstr "Przełącz nawigację"
+
+msgid "next page"
+msgstr "Następna strona"
+
+msgid "open issue"
+msgstr "otwarty problem"
+
+msgid "previous page"
+msgstr "Poprzednia strona"
+
+msgid "repository"
+msgstr "magazyn"
+
+msgid "suggest edit"
+msgstr "zaproponuj edycję"
diff --git a/tirx/_static/locales/pt/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/pt/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..d0ddb8728e1
Binary files /dev/null and b/tirx/_static/locales/pt/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/pt/LC_MESSAGES/booktheme.po b/tirx/_static/locales/pt/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..bbc872d0842
--- /dev/null
+++ b/tirx/_static/locales/pt/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pt\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Pelo"
+
+msgid "By"
+msgstr "De"
+
+msgid "Contents"
+msgstr "Conteúdo"
+
+msgid "Copyright"
+msgstr "direito autoral"
+
+msgid "Download notebook file"
+msgstr "Baixar arquivo de notebook"
+
+msgid "Download source file"
+msgstr "Baixar arquivo fonte"
+
+msgid "Download this page"
+msgstr "Baixe esta página"
+
+msgid "Edit this page"
+msgstr "Edite essa página"
+
+msgid "Fullscreen mode"
+msgstr "Modo tela cheia"
+
+msgid "Last updated on"
+msgstr "Última atualização em"
+
+msgid "Launch"
+msgstr "Lançamento"
+
+msgid "Open an issue"
+msgstr "Abra um problema"
+
+msgid "Print to PDF"
+msgstr "Imprimir em PDF"
+
+msgid "Source repository"
+msgstr "Repositório fonte"
+
+msgid "Sphinx Book Theme"
+msgstr "Tema do livro Sphinx"
+
+msgid "Theme by the"
+msgstr "Tema por"
+
+msgid "Toggle navigation"
+msgstr "Alternar de navegação"
+
+msgid "next page"
+msgstr "próxima página"
+
+msgid "open issue"
+msgstr "questão aberta"
+
+msgid "previous page"
+msgstr "página anterior"
+
+msgid "repository"
+msgstr "repositório"
+
+msgid "suggest edit"
+msgstr "sugerir edição"
diff --git a/tirx/_static/locales/ro/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/ro/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..3c36ab1df7c
Binary files /dev/null and b/tirx/_static/locales/ro/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/ro/LC_MESSAGES/booktheme.po b/tirx/_static/locales/ro/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..b9b8b4f39c4
--- /dev/null
+++ b/tirx/_static/locales/ro/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ro\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Langa"
+
+msgid "By"
+msgstr "De"
+
+msgid "Contents"
+msgstr "Cuprins"
+
+msgid "Copyright"
+msgstr "Drepturi de autor"
+
+msgid "Download notebook file"
+msgstr "Descărcați fișierul notebook"
+
+msgid "Download source file"
+msgstr "Descărcați fișierul sursă"
+
+msgid "Download this page"
+msgstr "Descarcă această pagină"
+
+msgid "Edit this page"
+msgstr "Editați această pagină"
+
+msgid "Fullscreen mode"
+msgstr "Modul ecran întreg"
+
+msgid "Last updated on"
+msgstr "Ultima actualizare la"
+
+msgid "Launch"
+msgstr "Lansa"
+
+msgid "Open an issue"
+msgstr "Deschideți o problemă"
+
+msgid "Print to PDF"
+msgstr "Imprimați în PDF"
+
+msgid "Source repository"
+msgstr "Depozit sursă"
+
+msgid "Sphinx Book Theme"
+msgstr "Tema Sphinx Book"
+
+msgid "Theme by the"
+msgstr "Tema de"
+
+msgid "Toggle navigation"
+msgstr "Comutare navigare"
+
+msgid "next page"
+msgstr "pagina următoare"
+
+msgid "open issue"
+msgstr "problema deschisă"
+
+msgid "previous page"
+msgstr "pagina anterioară"
+
+msgid "repository"
+msgstr "repertoriu"
+
+msgid "suggest edit"
+msgstr "sugerează editare"
diff --git a/tirx/_static/locales/ru/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/ru/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..5ea2e5c9f17
Binary files /dev/null and b/tirx/_static/locales/ru/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/ru/LC_MESSAGES/booktheme.po b/tirx/_static/locales/ru/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..e0f355514ab
--- /dev/null
+++ b/tirx/_static/locales/ru/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ru\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Посредством"
+
+msgid "By"
+msgstr "Автор:"
+
+msgid "Contents"
+msgstr "Содержание"
+
+msgid "Copyright"
+msgstr "авторское право"
+
+msgid "Download notebook file"
+msgstr "Скачать файл записной книжки"
+
+msgid "Download source file"
+msgstr "Скачать исходный файл"
+
+msgid "Download this page"
+msgstr "Загрузите эту страницу"
+
+msgid "Edit this page"
+msgstr "Редактировать эту страницу"
+
+msgid "Fullscreen mode"
+msgstr "Полноэкранный режим"
+
+msgid "Last updated on"
+msgstr "Последнее обновление"
+
+msgid "Launch"
+msgstr "Запуск"
+
+msgid "Open an issue"
+msgstr "Открыть вопрос"
+
+msgid "Print to PDF"
+msgstr "Распечатать в PDF"
+
+msgid "Source repository"
+msgstr "Исходный репозиторий"
+
+msgid "Sphinx Book Theme"
+msgstr "Тема книги Сфинкс"
+
+msgid "Theme by the"
+msgstr "Тема от"
+
+msgid "Toggle navigation"
+msgstr "Переключить навигацию"
+
+msgid "next page"
+msgstr "Следующая страница"
+
+msgid "open issue"
+msgstr "открытый вопрос"
+
+msgid "previous page"
+msgstr "Предыдущая страница"
+
+msgid "repository"
+msgstr "хранилище"
+
+msgid "suggest edit"
+msgstr "предложить редактировать"
diff --git a/tirx/_static/locales/sk/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/sk/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..59bd0ddfa34
Binary files /dev/null and b/tirx/_static/locales/sk/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/sk/LC_MESSAGES/booktheme.po b/tirx/_static/locales/sk/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..4b5225a36b1
--- /dev/null
+++ b/tirx/_static/locales/sk/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sk\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Podľa"
+
+msgid "By"
+msgstr "Autor:"
+
+msgid "Contents"
+msgstr "Obsah"
+
+msgid "Copyright"
+msgstr "Autorské práva"
+
+msgid "Download notebook file"
+msgstr "Stiahnite si zošit"
+
+msgid "Download source file"
+msgstr "Stiahnite si zdrojový súbor"
+
+msgid "Download this page"
+msgstr "Stiahnite si túto stránku"
+
+msgid "Edit this page"
+msgstr "Upraviť túto stránku"
+
+msgid "Fullscreen mode"
+msgstr "Režim celej obrazovky"
+
+msgid "Last updated on"
+msgstr "Posledná aktualizácia dňa"
+
+msgid "Launch"
+msgstr "Spustiť"
+
+msgid "Open an issue"
+msgstr "Otvorte problém"
+
+msgid "Print to PDF"
+msgstr "Tlač do PDF"
+
+msgid "Source repository"
+msgstr "Zdrojové úložisko"
+
+msgid "Sphinx Book Theme"
+msgstr "Téma knihy Sfinga"
+
+msgid "Theme by the"
+msgstr "Téma od"
+
+msgid "Toggle navigation"
+msgstr "Prepnúť navigáciu"
+
+msgid "next page"
+msgstr "ďalšia strana"
+
+msgid "open issue"
+msgstr "otvorené vydanie"
+
+msgid "previous page"
+msgstr "predchádzajúca strana"
+
+msgid "repository"
+msgstr "Úložisko"
+
+msgid "suggest edit"
+msgstr "navrhnúť úpravu"
diff --git a/tirx/_static/locales/sl/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/sl/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..87bf26de683
Binary files /dev/null and b/tirx/_static/locales/sl/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/sl/LC_MESSAGES/booktheme.po b/tirx/_static/locales/sl/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..45592e71cf3
--- /dev/null
+++ b/tirx/_static/locales/sl/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Avtor"
+
+msgid "By"
+msgstr "Avtor"
+
+msgid "Contents"
+msgstr "Vsebina"
+
+msgid "Copyright"
+msgstr "avtorske pravice"
+
+msgid "Download notebook file"
+msgstr "Prenesite datoteko zvezka"
+
+msgid "Download source file"
+msgstr "Prenesite izvorno datoteko"
+
+msgid "Download this page"
+msgstr "Prenesite to stran"
+
+msgid "Edit this page"
+msgstr "Uredite to stran"
+
+msgid "Fullscreen mode"
+msgstr "Celozaslonski način"
+
+msgid "Last updated on"
+msgstr "Nazadnje posodobljeno dne"
+
+msgid "Launch"
+msgstr "Kosilo"
+
+msgid "Open an issue"
+msgstr "Odprite številko"
+
+msgid "Print to PDF"
+msgstr "Natisni v PDF"
+
+msgid "Source repository"
+msgstr "Izvorno skladišče"
+
+msgid "Sphinx Book Theme"
+msgstr "Tema knjige Sphinx"
+
+msgid "Theme by the"
+msgstr "Tema avtorja"
+
+msgid "Toggle navigation"
+msgstr "Preklopi navigacijo"
+
+msgid "next page"
+msgstr "Naslednja stran"
+
+msgid "open issue"
+msgstr "odprto vprašanje"
+
+msgid "previous page"
+msgstr "Prejšnja stran"
+
+msgid "repository"
+msgstr "odlagališče"
+
+msgid "suggest edit"
+msgstr "predlagajte urejanje"
diff --git a/tirx/_static/locales/sr/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/sr/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..ec740f4852f
Binary files /dev/null and b/tirx/_static/locales/sr/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/sr/LC_MESSAGES/booktheme.po b/tirx/_static/locales/sr/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..4ddf693d150
--- /dev/null
+++ b/tirx/_static/locales/sr/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sr\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Од"
+
+msgid "By"
+msgstr "Од стране"
+
+msgid "Contents"
+msgstr "Садржај"
+
+msgid "Copyright"
+msgstr "Ауторско право"
+
+msgid "Download notebook file"
+msgstr "Преузмите датотеку бележнице"
+
+msgid "Download source file"
+msgstr "Преузми изворну датотеку"
+
+msgid "Download this page"
+msgstr "Преузмите ову страницу"
+
+msgid "Edit this page"
+msgstr "Уредите ову страницу"
+
+msgid "Fullscreen mode"
+msgstr "Режим целог екрана"
+
+msgid "Last updated on"
+msgstr "Последње ажурирање"
+
+msgid "Launch"
+msgstr "Лансирање"
+
+msgid "Open an issue"
+msgstr "Отворите издање"
+
+msgid "Print to PDF"
+msgstr "Испис у ПДФ"
+
+msgid "Source repository"
+msgstr "Изворно спремиште"
+
+msgid "Sphinx Book Theme"
+msgstr "Тема књиге Спхинк"
+
+msgid "Theme by the"
+msgstr "Тхеме би"
+
+msgid "Toggle navigation"
+msgstr "Укључи / искључи навигацију"
+
+msgid "next page"
+msgstr "Следећа страна"
+
+msgid "open issue"
+msgstr "отворено издање"
+
+msgid "previous page"
+msgstr "Претходна страница"
+
+msgid "repository"
+msgstr "спремиште"
+
+msgid "suggest edit"
+msgstr "предложи уређивање"
diff --git a/tirx/_static/locales/sv/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/sv/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..b07dc76ff21
Binary files /dev/null and b/tirx/_static/locales/sv/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/sv/LC_MESSAGES/booktheme.po b/tirx/_static/locales/sv/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..a5587a56786
--- /dev/null
+++ b/tirx/_static/locales/sv/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sv\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Av den"
+
+msgid "By"
+msgstr "Av"
+
+msgid "Contents"
+msgstr "Innehåll"
+
+msgid "Copyright"
+msgstr "Upphovsrätt"
+
+msgid "Download notebook file"
+msgstr "Ladda ner notebook-fil"
+
+msgid "Download source file"
+msgstr "Ladda ner källfil"
+
+msgid "Download this page"
+msgstr "Ladda ner den här sidan"
+
+msgid "Edit this page"
+msgstr "Redigera den här sidan"
+
+msgid "Fullscreen mode"
+msgstr "Fullskärmsläge"
+
+msgid "Last updated on"
+msgstr "Senast uppdaterad den"
+
+msgid "Launch"
+msgstr "Öppna"
+
+msgid "Open an issue"
+msgstr "Öppna en problemrapport"
+
+msgid "Print to PDF"
+msgstr "Skriv ut till PDF"
+
+msgid "Source repository"
+msgstr "Källkodsrepositorium"
+
+msgid "Sphinx Book Theme"
+msgstr "Sphinx Boktema"
+
+msgid "Theme by the"
+msgstr "Tema av"
+
+msgid "Toggle navigation"
+msgstr "Växla navigering"
+
+msgid "next page"
+msgstr "nästa sida"
+
+msgid "open issue"
+msgstr "öppna problemrapport"
+
+msgid "previous page"
+msgstr "föregående sida"
+
+msgid "repository"
+msgstr "repositorium"
+
+msgid "suggest edit"
+msgstr "föreslå ändring"
diff --git a/tirx/_static/locales/ta/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/ta/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..29f52e1f6f1
Binary files /dev/null and b/tirx/_static/locales/ta/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/ta/LC_MESSAGES/booktheme.po b/tirx/_static/locales/ta/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..fb871e23e56
--- /dev/null
+++ b/tirx/_static/locales/ta/LC_MESSAGES/booktheme.po
@@ -0,0 +1,66 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ta\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "மூலம்"
+
+msgid "By"
+msgstr "வழங்கியவர்"
+
+msgid "Copyright"
+msgstr "பதிப்புரிமை"
+
+msgid "Download notebook file"
+msgstr "நோட்புக் கோப்பைப் பதிவிறக்கவும்"
+
+msgid "Download source file"
+msgstr "மூல கோப்பைப் பதிவிறக்குக"
+
+msgid "Download this page"
+msgstr "இந்தப் பக்கத்தைப் பதிவிறக்கவும்"
+
+msgid "Edit this page"
+msgstr "இந்தப் பக்கத்தைத் திருத்தவும்"
+
+msgid "Last updated on"
+msgstr "கடைசியாக புதுப்பிக்கப்பட்டது"
+
+msgid "Launch"
+msgstr "தொடங்க"
+
+msgid "Open an issue"
+msgstr "சிக்கலைத் திறக்கவும்"
+
+msgid "Print to PDF"
+msgstr "PDF இல் அச்சிடுக"
+
+msgid "Source repository"
+msgstr "மூல களஞ்சியம்"
+
+msgid "Sphinx Book Theme"
+msgstr "ஸ்பிங்க்ஸ் புத்தக தீம்"
+
+msgid "Theme by the"
+msgstr "வழங்கிய தீம்"
+
+msgid "Toggle navigation"
+msgstr "வழிசெலுத்தலை நிலைமாற்று"
+
+msgid "next page"
+msgstr "அடுத்த பக்கம்"
+
+msgid "open issue"
+msgstr "திறந்த பிரச்சினை"
+
+msgid "previous page"
+msgstr "முந்தைய பக்கம்"
+
+msgid "suggest edit"
+msgstr "திருத்த பரிந்துரைக்கவும்"
diff --git a/tirx/_static/locales/te/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/te/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..0a5f4b46adf
Binary files /dev/null and b/tirx/_static/locales/te/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/te/LC_MESSAGES/booktheme.po b/tirx/_static/locales/te/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..22ab77c1575
--- /dev/null
+++ b/tirx/_static/locales/te/LC_MESSAGES/booktheme.po
@@ -0,0 +1,66 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: te\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "ద్వారా"
+
+msgid "By"
+msgstr "ద్వారా"
+
+msgid "Copyright"
+msgstr "కాపీరైట్"
+
+msgid "Download notebook file"
+msgstr "నోట్బుక్ ఫైల్ను డౌన్లోడ్ చేయండి"
+
+msgid "Download source file"
+msgstr "మూల ఫైల్ను డౌన్లోడ్ చేయండి"
+
+msgid "Download this page"
+msgstr "ఈ పేజీని డౌన్లోడ్ చేయండి"
+
+msgid "Edit this page"
+msgstr "ఈ పేజీని సవరించండి"
+
+msgid "Last updated on"
+msgstr "చివరిగా నవీకరించబడింది"
+
+msgid "Launch"
+msgstr "ప్రారంభించండి"
+
+msgid "Open an issue"
+msgstr "సమస్యను తెరవండి"
+
+msgid "Print to PDF"
+msgstr "PDF కి ముద్రించండి"
+
+msgid "Source repository"
+msgstr "మూల రిపోజిటరీ"
+
+msgid "Sphinx Book Theme"
+msgstr "సింహిక పుస్తక థీమ్"
+
+msgid "Theme by the"
+msgstr "ద్వారా థీమ్"
+
+msgid "Toggle navigation"
+msgstr "నావిగేషన్ను టోగుల్ చేయండి"
+
+msgid "next page"
+msgstr "తరువాతి పేజీ"
+
+msgid "open issue"
+msgstr "ఓపెన్ ఇష్యూ"
+
+msgid "previous page"
+msgstr "ముందు పేజి"
+
+msgid "suggest edit"
+msgstr "సవరించమని సూచించండి"
diff --git a/tirx/_static/locales/tg/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/tg/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..b21c6c63401
Binary files /dev/null and b/tirx/_static/locales/tg/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/tg/LC_MESSAGES/booktheme.po b/tirx/_static/locales/tg/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..e499352dbef
--- /dev/null
+++ b/tirx/_static/locales/tg/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: tg\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Бо"
+
+msgid "By"
+msgstr "Бо"
+
+msgid "Contents"
+msgstr "Мундариҷа"
+
+msgid "Copyright"
+msgstr "Ҳуқуқи муаллиф"
+
+msgid "Download notebook file"
+msgstr "Файли дафтарро зеркашӣ кунед"
+
+msgid "Download source file"
+msgstr "Файли манбаъро зеркашӣ кунед"
+
+msgid "Download this page"
+msgstr "Ин саҳифаро зеркашӣ кунед"
+
+msgid "Edit this page"
+msgstr "Ин саҳифаро таҳрир кунед"
+
+msgid "Fullscreen mode"
+msgstr "Ҳолати экрани пурра"
+
+msgid "Last updated on"
+msgstr "Last навсозӣ дар"
+
+msgid "Launch"
+msgstr "Оғоз"
+
+msgid "Open an issue"
+msgstr "Масъаларо кушоед"
+
+msgid "Print to PDF"
+msgstr "Чоп ба PDF"
+
+msgid "Source repository"
+msgstr "Анбори манбаъ"
+
+msgid "Sphinx Book Theme"
+msgstr "Сфинкс Мавзӯи китоб"
+
+msgid "Theme by the"
+msgstr "Мавзӯъи аз"
+
+msgid "Toggle navigation"
+msgstr "Гузаришро иваз кунед"
+
+msgid "next page"
+msgstr "саҳифаи оянда"
+
+msgid "open issue"
+msgstr "барориши кушод"
+
+msgid "previous page"
+msgstr "саҳифаи қаблӣ"
+
+msgid "repository"
+msgstr "анбор"
+
+msgid "suggest edit"
+msgstr "пешниҳод вироиш"
diff --git a/tirx/_static/locales/th/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/th/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..abede98aa11
Binary files /dev/null and b/tirx/_static/locales/th/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/th/LC_MESSAGES/booktheme.po b/tirx/_static/locales/th/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..6f0103ea28d
--- /dev/null
+++ b/tirx/_static/locales/th/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: th\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "โดย"
+
+msgid "By"
+msgstr "โดย"
+
+msgid "Contents"
+msgstr "สารบัญ"
+
+msgid "Copyright"
+msgstr "ลิขสิทธิ์"
+
+msgid "Download notebook file"
+msgstr "ดาวน์โหลดไฟล์สมุดบันทึก"
+
+msgid "Download source file"
+msgstr "ดาวน์โหลดไฟล์ต้นฉบับ"
+
+msgid "Download this page"
+msgstr "ดาวน์โหลดหน้านี้"
+
+msgid "Edit this page"
+msgstr "แก้ไขหน้านี้"
+
+msgid "Fullscreen mode"
+msgstr "โหมดเต็มหน้าจอ"
+
+msgid "Last updated on"
+msgstr "ปรับปรุงล่าสุดเมื่อ"
+
+msgid "Launch"
+msgstr "เปิด"
+
+msgid "Open an issue"
+msgstr "เปิดปัญหา"
+
+msgid "Print to PDF"
+msgstr "พิมพ์เป็น PDF"
+
+msgid "Source repository"
+msgstr "ที่เก็บซอร์ส"
+
+msgid "Sphinx Book Theme"
+msgstr "ธีมหนังสือสฟิงซ์"
+
+msgid "Theme by the"
+msgstr "ธีมโดย"
+
+msgid "Toggle navigation"
+msgstr "ไม่ต้องสลับช่องทาง"
+
+msgid "next page"
+msgstr "หน้าต่อไป"
+
+msgid "open issue"
+msgstr "เปิดปัญหา"
+
+msgid "previous page"
+msgstr "หน้าที่แล้ว"
+
+msgid "repository"
+msgstr "ที่เก็บ"
+
+msgid "suggest edit"
+msgstr "แนะนำแก้ไข"
diff --git a/tirx/_static/locales/tl/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/tl/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..8df1b73310e
Binary files /dev/null and b/tirx/_static/locales/tl/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/tl/LC_MESSAGES/booktheme.po b/tirx/_static/locales/tl/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..dbeb2565d3c
--- /dev/null
+++ b/tirx/_static/locales/tl/LC_MESSAGES/booktheme.po
@@ -0,0 +1,66 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: tl\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Sa pamamagitan ng"
+
+msgid "By"
+msgstr "Ni"
+
+msgid "Copyright"
+msgstr "Copyright"
+
+msgid "Download notebook file"
+msgstr "Mag-download ng file ng notebook"
+
+msgid "Download source file"
+msgstr "Mag-download ng file ng pinagmulan"
+
+msgid "Download this page"
+msgstr "I-download ang pahinang ito"
+
+msgid "Edit this page"
+msgstr "I-edit ang pahinang ito"
+
+msgid "Last updated on"
+msgstr "Huling na-update noong"
+
+msgid "Launch"
+msgstr "Ilunsad"
+
+msgid "Open an issue"
+msgstr "Magbukas ng isyu"
+
+msgid "Print to PDF"
+msgstr "I-print sa PDF"
+
+msgid "Source repository"
+msgstr "Pinagmulan ng imbakan"
+
+msgid "Sphinx Book Theme"
+msgstr "Tema ng Sphinx Book"
+
+msgid "Theme by the"
+msgstr "Tema ng"
+
+msgid "Toggle navigation"
+msgstr "I-toggle ang pag-navigate"
+
+msgid "next page"
+msgstr "Susunod na pahina"
+
+msgid "open issue"
+msgstr "bukas na isyu"
+
+msgid "previous page"
+msgstr "Nakaraang pahina"
+
+msgid "suggest edit"
+msgstr "iminumungkahi i-edit"
diff --git a/tirx/_static/locales/tr/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/tr/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..029ae18afb5
Binary files /dev/null and b/tirx/_static/locales/tr/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/tr/LC_MESSAGES/booktheme.po b/tirx/_static/locales/tr/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..610c1ab0262
--- /dev/null
+++ b/tirx/_static/locales/tr/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: tr\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Tarafından"
+
+msgid "By"
+msgstr "Tarafından"
+
+msgid "Contents"
+msgstr "İçindekiler"
+
+msgid "Copyright"
+msgstr "Telif hakkı"
+
+msgid "Download notebook file"
+msgstr "Defter dosyasını indirin"
+
+msgid "Download source file"
+msgstr "Kaynak dosyayı indirin"
+
+msgid "Download this page"
+msgstr "Bu sayfayı indirin"
+
+msgid "Edit this page"
+msgstr "Bu sayfayı düzenle"
+
+msgid "Fullscreen mode"
+msgstr "Tam ekran modu"
+
+msgid "Last updated on"
+msgstr "Son güncelleme tarihi"
+
+msgid "Launch"
+msgstr "Başlatmak"
+
+msgid "Open an issue"
+msgstr "Bir sorunu açın"
+
+msgid "Print to PDF"
+msgstr "PDF olarak yazdır"
+
+msgid "Source repository"
+msgstr "Kaynak kod deposu"
+
+msgid "Sphinx Book Theme"
+msgstr "Sfenks Kitap Teması"
+
+msgid "Theme by the"
+msgstr "Tarafından tema"
+
+msgid "Toggle navigation"
+msgstr "Gezinmeyi değiştir"
+
+msgid "next page"
+msgstr "sonraki Sayfa"
+
+msgid "open issue"
+msgstr "Açık konu"
+
+msgid "previous page"
+msgstr "önceki sayfa"
+
+msgid "repository"
+msgstr "depo"
+
+msgid "suggest edit"
+msgstr "düzenleme öner"
diff --git a/tirx/_static/locales/uk/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/uk/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..16ab78909cf
Binary files /dev/null and b/tirx/_static/locales/uk/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/uk/LC_MESSAGES/booktheme.po b/tirx/_static/locales/uk/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..8ae61c4851c
--- /dev/null
+++ b/tirx/_static/locales/uk/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: uk\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "По"
+
+msgid "By"
+msgstr "Автор"
+
+msgid "Contents"
+msgstr "Зміст"
+
+msgid "Copyright"
+msgstr "Авторське право"
+
+msgid "Download notebook file"
+msgstr "Завантажте файл блокнота"
+
+msgid "Download source file"
+msgstr "Завантажити вихідний файл"
+
+msgid "Download this page"
+msgstr "Завантажте цю сторінку"
+
+msgid "Edit this page"
+msgstr "Редагувати цю сторінку"
+
+msgid "Fullscreen mode"
+msgstr "Повноекранний режим"
+
+msgid "Last updated on"
+msgstr "Останнє оновлення:"
+
+msgid "Launch"
+msgstr "Запуск"
+
+msgid "Open an issue"
+msgstr "Відкрийте випуск"
+
+msgid "Print to PDF"
+msgstr "Друк у форматі PDF"
+
+msgid "Source repository"
+msgstr "Джерело сховища"
+
+msgid "Sphinx Book Theme"
+msgstr "Тема книги \"Сфінкс\""
+
+msgid "Theme by the"
+msgstr "Тема від"
+
+msgid "Toggle navigation"
+msgstr "Переключити навігацію"
+
+msgid "next page"
+msgstr "Наступна сторінка"
+
+msgid "open issue"
+msgstr "відкритий випуск"
+
+msgid "previous page"
+msgstr "Попередня сторінка"
+
+msgid "repository"
+msgstr "сховище"
+
+msgid "suggest edit"
+msgstr "запропонувати редагувати"
diff --git a/tirx/_static/locales/ur/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/ur/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..de8c84b935e
Binary files /dev/null and b/tirx/_static/locales/ur/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/ur/LC_MESSAGES/booktheme.po b/tirx/_static/locales/ur/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..63018eaecf6
--- /dev/null
+++ b/tirx/_static/locales/ur/LC_MESSAGES/booktheme.po
@@ -0,0 +1,66 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ur\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "کی طرف"
+
+msgid "By"
+msgstr "بذریعہ"
+
+msgid "Copyright"
+msgstr "کاپی رائٹ"
+
+msgid "Download notebook file"
+msgstr "نوٹ بک فائل ڈاؤن لوڈ کریں"
+
+msgid "Download source file"
+msgstr "سورس فائل ڈاؤن لوڈ کریں"
+
+msgid "Download this page"
+msgstr "اس صفحے کو ڈاؤن لوڈ کریں"
+
+msgid "Edit this page"
+msgstr "اس صفحے میں ترمیم کریں"
+
+msgid "Last updated on"
+msgstr "آخری بار تازہ کاری ہوئی"
+
+msgid "Launch"
+msgstr "لانچ کریں"
+
+msgid "Open an issue"
+msgstr "ایک مسئلہ کھولیں"
+
+msgid "Print to PDF"
+msgstr "پی ڈی ایف پرنٹ کریں"
+
+msgid "Source repository"
+msgstr "ماخذ ذخیرہ"
+
+msgid "Sphinx Book Theme"
+msgstr "سپنکس بک تھیم"
+
+msgid "Theme by the"
+msgstr "کے ذریعہ تھیم"
+
+msgid "Toggle navigation"
+msgstr "نیویگیشن ٹوگل کریں"
+
+msgid "next page"
+msgstr "اگلا صفحہ"
+
+msgid "open issue"
+msgstr "کھلا مسئلہ"
+
+msgid "previous page"
+msgstr "سابقہ صفحہ"
+
+msgid "suggest edit"
+msgstr "ترمیم کی تجویز کریں"
diff --git a/tirx/_static/locales/vi/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/vi/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..2bb32555c3e
Binary files /dev/null and b/tirx/_static/locales/vi/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/vi/LC_MESSAGES/booktheme.po b/tirx/_static/locales/vi/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..ac91b0f16c6
--- /dev/null
+++ b/tirx/_static/locales/vi/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: vi\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "Bằng"
+
+msgid "By"
+msgstr "Bởi"
+
+msgid "Contents"
+msgstr "Nội dung"
+
+msgid "Copyright"
+msgstr "Bản quyền"
+
+msgid "Download notebook file"
+msgstr "Tải xuống tệp sổ tay"
+
+msgid "Download source file"
+msgstr "Tải xuống tệp nguồn"
+
+msgid "Download this page"
+msgstr "Tải xuống trang này"
+
+msgid "Edit this page"
+msgstr "chỉnh sửa trang này"
+
+msgid "Fullscreen mode"
+msgstr "Chế độ toàn màn hình"
+
+msgid "Last updated on"
+msgstr "Cập nhật lần cuối vào"
+
+msgid "Launch"
+msgstr "Phóng"
+
+msgid "Open an issue"
+msgstr "Mở một vấn đề"
+
+msgid "Print to PDF"
+msgstr "In sang PDF"
+
+msgid "Source repository"
+msgstr "Kho nguồn"
+
+msgid "Sphinx Book Theme"
+msgstr "Chủ đề sách nhân sư"
+
+msgid "Theme by the"
+msgstr "Chủ đề của"
+
+msgid "Toggle navigation"
+msgstr "Chuyển đổi điều hướng thành"
+
+msgid "next page"
+msgstr "Trang tiếp theo"
+
+msgid "open issue"
+msgstr "vấn đề mở"
+
+msgid "previous page"
+msgstr "trang trước"
+
+msgid "repository"
+msgstr "kho"
+
+msgid "suggest edit"
+msgstr "đề nghị chỉnh sửa"
diff --git a/tirx/_static/locales/zh_CN/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/zh_CN/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..0e3235d090c
Binary files /dev/null and b/tirx/_static/locales/zh_CN/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/zh_CN/LC_MESSAGES/booktheme.po b/tirx/_static/locales/zh_CN/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..ff1c9383c81
--- /dev/null
+++ b/tirx/_static/locales/zh_CN/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh_CN\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "作者:"
+
+msgid "By"
+msgstr "作者:"
+
+msgid "Contents"
+msgstr "目录"
+
+msgid "Copyright"
+msgstr "版权"
+
+msgid "Download notebook file"
+msgstr "下载笔记本文件"
+
+msgid "Download source file"
+msgstr "下载源文件"
+
+msgid "Download this page"
+msgstr "下载此页面"
+
+msgid "Edit this page"
+msgstr "编辑此页面"
+
+msgid "Fullscreen mode"
+msgstr "全屏模式"
+
+msgid "Last updated on"
+msgstr "上次更新时间:"
+
+msgid "Launch"
+msgstr "启动"
+
+msgid "Open an issue"
+msgstr "创建议题"
+
+msgid "Print to PDF"
+msgstr "列印成 PDF"
+
+msgid "Source repository"
+msgstr "源码库"
+
+msgid "Sphinx Book Theme"
+msgstr "Sphinx Book 主题"
+
+msgid "Theme by the"
+msgstr "主题作者:"
+
+msgid "Toggle navigation"
+msgstr "显示或隐藏导航栏"
+
+msgid "next page"
+msgstr "下一页"
+
+msgid "open issue"
+msgstr "创建议题"
+
+msgid "previous page"
+msgstr "上一页"
+
+msgid "repository"
+msgstr "仓库"
+
+msgid "suggest edit"
+msgstr "提出修改建议"
diff --git a/tirx/_static/locales/zh_TW/LC_MESSAGES/booktheme.mo b/tirx/_static/locales/zh_TW/LC_MESSAGES/booktheme.mo
new file mode 100644
index 00000000000..9116fa95d0a
Binary files /dev/null and b/tirx/_static/locales/zh_TW/LC_MESSAGES/booktheme.mo differ
diff --git a/tirx/_static/locales/zh_TW/LC_MESSAGES/booktheme.po b/tirx/_static/locales/zh_TW/LC_MESSAGES/booktheme.po
new file mode 100644
index 00000000000..f2b300fa87f
--- /dev/null
+++ b/tirx/_static/locales/zh_TW/LC_MESSAGES/booktheme.po
@@ -0,0 +1,75 @@
+
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx-Book-Theme\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh_TW\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "By the"
+msgstr "作者:"
+
+msgid "By"
+msgstr "作者:"
+
+msgid "Contents"
+msgstr "目錄"
+
+msgid "Copyright"
+msgstr "Copyright"
+
+msgid "Download notebook file"
+msgstr "下載 Notebook 檔案"
+
+msgid "Download source file"
+msgstr "下載原始檔"
+
+msgid "Download this page"
+msgstr "下載此頁面"
+
+msgid "Edit this page"
+msgstr "編輯此頁面"
+
+msgid "Fullscreen mode"
+msgstr "全螢幕模式"
+
+msgid "Last updated on"
+msgstr "最後更新時間:"
+
+msgid "Launch"
+msgstr "啟動"
+
+msgid "Open an issue"
+msgstr "開啟議題"
+
+msgid "Print to PDF"
+msgstr "列印成 PDF"
+
+msgid "Source repository"
+msgstr "來源儲存庫"
+
+msgid "Sphinx Book Theme"
+msgstr "Sphinx Book 佈景主題"
+
+msgid "Theme by the"
+msgstr "佈景主題作者:"
+
+msgid "Toggle navigation"
+msgstr "顯示或隱藏導覽列"
+
+msgid "next page"
+msgstr "下一頁"
+
+msgid "open issue"
+msgstr "公開的問題"
+
+msgid "previous page"
+msgstr "上一頁"
+
+msgid "repository"
+msgstr "儲存庫"
+
+msgid "suggest edit"
+msgstr "提出修改建議"
diff --git a/tirx/_static/minus.png b/tirx/_static/minus.png
new file mode 100644
index 00000000000..d96755fdaf8
Binary files /dev/null and b/tirx/_static/minus.png differ
diff --git a/tirx/_static/plus.png b/tirx/_static/plus.png
new file mode 100644
index 00000000000..7107cec93a9
Binary files /dev/null and b/tirx/_static/plus.png differ
diff --git a/tirx/_static/pygments.css b/tirx/_static/pygments.css
new file mode 100644
index 00000000000..d7dd57783f9
--- /dev/null
+++ b/tirx/_static/pygments.css
@@ -0,0 +1,152 @@
+html[data-theme="light"] .highlight pre { line-height: 125%; }
+html[data-theme="light"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+html[data-theme="light"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+html[data-theme="light"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+html[data-theme="light"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+html[data-theme="light"] .highlight .hll { background-color: #fae4c2 }
+html[data-theme="light"] .highlight { background: #fefefe; color: #080808 }
+html[data-theme="light"] .highlight .c { color: #515151 } /* Comment */
+html[data-theme="light"] .highlight .err { color: #A12236 } /* Error */
+html[data-theme="light"] .highlight .k { color: #6730C5 } /* Keyword */
+html[data-theme="light"] .highlight .l { color: #7F4707 } /* Literal */
+html[data-theme="light"] .highlight .n { color: #080808 } /* Name */
+html[data-theme="light"] .highlight .o { color: #00622F } /* Operator */
+html[data-theme="light"] .highlight .p { color: #080808 } /* Punctuation */
+html[data-theme="light"] .highlight .ch { color: #515151 } /* Comment.Hashbang */
+html[data-theme="light"] .highlight .cm { color: #515151 } /* Comment.Multiline */
+html[data-theme="light"] .highlight .cp { color: #515151 } /* Comment.Preproc */
+html[data-theme="light"] .highlight .cpf { color: #515151 } /* Comment.PreprocFile */
+html[data-theme="light"] .highlight .c1 { color: #515151 } /* Comment.Single */
+html[data-theme="light"] .highlight .cs { color: #515151 } /* Comment.Special */
+html[data-theme="light"] .highlight .gd { color: #005B82 } /* Generic.Deleted */
+html[data-theme="light"] .highlight .ge { font-style: italic } /* Generic.Emph */
+html[data-theme="light"] .highlight .gh { color: #005B82 } /* Generic.Heading */
+html[data-theme="light"] .highlight .gs { font-weight: bold } /* Generic.Strong */
+html[data-theme="light"] .highlight .gu { color: #005B82 } /* Generic.Subheading */
+html[data-theme="light"] .highlight .kc { color: #6730C5 } /* Keyword.Constant */
+html[data-theme="light"] .highlight .kd { color: #6730C5 } /* Keyword.Declaration */
+html[data-theme="light"] .highlight .kn { color: #6730C5 } /* Keyword.Namespace */
+html[data-theme="light"] .highlight .kp { color: #6730C5 } /* Keyword.Pseudo */
+html[data-theme="light"] .highlight .kr { color: #6730C5 } /* Keyword.Reserved */
+html[data-theme="light"] .highlight .kt { color: #7F4707 } /* Keyword.Type */
+html[data-theme="light"] .highlight .ld { color: #7F4707 } /* Literal.Date */
+html[data-theme="light"] .highlight .m { color: #7F4707 } /* Literal.Number */
+html[data-theme="light"] .highlight .s { color: #00622F } /* Literal.String */
+html[data-theme="light"] .highlight .na { color: #912583 } /* Name.Attribute */
+html[data-theme="light"] .highlight .nb { color: #7F4707 } /* Name.Builtin */
+html[data-theme="light"] .highlight .nc { color: #005B82 } /* Name.Class */
+html[data-theme="light"] .highlight .no { color: #005B82 } /* Name.Constant */
+html[data-theme="light"] .highlight .nd { color: #7F4707 } /* Name.Decorator */
+html[data-theme="light"] .highlight .ni { color: #00622F } /* Name.Entity */
+html[data-theme="light"] .highlight .ne { color: #6730C5 } /* Name.Exception */
+html[data-theme="light"] .highlight .nf { color: #005B82 } /* Name.Function */
+html[data-theme="light"] .highlight .nl { color: #7F4707 } /* Name.Label */
+html[data-theme="light"] .highlight .nn { color: #080808 } /* Name.Namespace */
+html[data-theme="light"] .highlight .nx { color: #080808 } /* Name.Other */
+html[data-theme="light"] .highlight .py { color: #005B82 } /* Name.Property */
+html[data-theme="light"] .highlight .nt { color: #005B82 } /* Name.Tag */
+html[data-theme="light"] .highlight .nv { color: #A12236 } /* Name.Variable */
+html[data-theme="light"] .highlight .ow { color: #6730C5 } /* Operator.Word */
+html[data-theme="light"] .highlight .pm { color: #080808 } /* Punctuation.Marker */
+html[data-theme="light"] .highlight .w { color: #080808 } /* Text.Whitespace */
+html[data-theme="light"] .highlight .mb { color: #7F4707 } /* Literal.Number.Bin */
+html[data-theme="light"] .highlight .mf { color: #7F4707 } /* Literal.Number.Float */
+html[data-theme="light"] .highlight .mh { color: #7F4707 } /* Literal.Number.Hex */
+html[data-theme="light"] .highlight .mi { color: #7F4707 } /* Literal.Number.Integer */
+html[data-theme="light"] .highlight .mo { color: #7F4707 } /* Literal.Number.Oct */
+html[data-theme="light"] .highlight .sa { color: #00622F } /* Literal.String.Affix */
+html[data-theme="light"] .highlight .sb { color: #00622F } /* Literal.String.Backtick */
+html[data-theme="light"] .highlight .sc { color: #00622F } /* Literal.String.Char */
+html[data-theme="light"] .highlight .dl { color: #00622F } /* Literal.String.Delimiter */
+html[data-theme="light"] .highlight .sd { color: #00622F } /* Literal.String.Doc */
+html[data-theme="light"] .highlight .s2 { color: #00622F } /* Literal.String.Double */
+html[data-theme="light"] .highlight .se { color: #00622F } /* Literal.String.Escape */
+html[data-theme="light"] .highlight .sh { color: #00622F } /* Literal.String.Heredoc */
+html[data-theme="light"] .highlight .si { color: #00622F } /* Literal.String.Interpol */
+html[data-theme="light"] .highlight .sx { color: #00622F } /* Literal.String.Other */
+html[data-theme="light"] .highlight .sr { color: #A12236 } /* Literal.String.Regex */
+html[data-theme="light"] .highlight .s1 { color: #00622F } /* Literal.String.Single */
+html[data-theme="light"] .highlight .ss { color: #005B82 } /* Literal.String.Symbol */
+html[data-theme="light"] .highlight .bp { color: #7F4707 } /* Name.Builtin.Pseudo */
+html[data-theme="light"] .highlight .fm { color: #005B82 } /* Name.Function.Magic */
+html[data-theme="light"] .highlight .vc { color: #A12236 } /* Name.Variable.Class */
+html[data-theme="light"] .highlight .vg { color: #A12236 } /* Name.Variable.Global */
+html[data-theme="light"] .highlight .vi { color: #A12236 } /* Name.Variable.Instance */
+html[data-theme="light"] .highlight .vm { color: #7F4707 } /* Name.Variable.Magic */
+html[data-theme="light"] .highlight .il { color: #7F4707 } /* Literal.Number.Integer.Long */
+html[data-theme="dark"] .highlight pre { line-height: 125%; }
+html[data-theme="dark"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+html[data-theme="dark"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+html[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+html[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+html[data-theme="dark"] .highlight .hll { background-color: #ffd9002e }
+html[data-theme="dark"] .highlight { background: #2b2b2b; color: #F8F8F2 }
+html[data-theme="dark"] .highlight .c { color: #FFD900 } /* Comment */
+html[data-theme="dark"] .highlight .err { color: #FFA07A } /* Error */
+html[data-theme="dark"] .highlight .k { color: #DCC6E0 } /* Keyword */
+html[data-theme="dark"] .highlight .l { color: #FFD900 } /* Literal */
+html[data-theme="dark"] .highlight .n { color: #F8F8F2 } /* Name */
+html[data-theme="dark"] .highlight .o { color: #ABE338 } /* Operator */
+html[data-theme="dark"] .highlight .p { color: #F8F8F2 } /* Punctuation */
+html[data-theme="dark"] .highlight .ch { color: #FFD900 } /* Comment.Hashbang */
+html[data-theme="dark"] .highlight .cm { color: #FFD900 } /* Comment.Multiline */
+html[data-theme="dark"] .highlight .cp { color: #FFD900 } /* Comment.Preproc */
+html[data-theme="dark"] .highlight .cpf { color: #FFD900 } /* Comment.PreprocFile */
+html[data-theme="dark"] .highlight .c1 { color: #FFD900 } /* Comment.Single */
+html[data-theme="dark"] .highlight .cs { color: #FFD900 } /* Comment.Special */
+html[data-theme="dark"] .highlight .gd { color: #00E0E0 } /* Generic.Deleted */
+html[data-theme="dark"] .highlight .ge { font-style: italic } /* Generic.Emph */
+html[data-theme="dark"] .highlight .gh { color: #00E0E0 } /* Generic.Heading */
+html[data-theme="dark"] .highlight .gs { font-weight: bold } /* Generic.Strong */
+html[data-theme="dark"] .highlight .gu { color: #00E0E0 } /* Generic.Subheading */
+html[data-theme="dark"] .highlight .kc { color: #DCC6E0 } /* Keyword.Constant */
+html[data-theme="dark"] .highlight .kd { color: #DCC6E0 } /* Keyword.Declaration */
+html[data-theme="dark"] .highlight .kn { color: #DCC6E0 } /* Keyword.Namespace */
+html[data-theme="dark"] .highlight .kp { color: #DCC6E0 } /* Keyword.Pseudo */
+html[data-theme="dark"] .highlight .kr { color: #DCC6E0 } /* Keyword.Reserved */
+html[data-theme="dark"] .highlight .kt { color: #FFD900 } /* Keyword.Type */
+html[data-theme="dark"] .highlight .ld { color: #FFD900 } /* Literal.Date */
+html[data-theme="dark"] .highlight .m { color: #FFD900 } /* Literal.Number */
+html[data-theme="dark"] .highlight .s { color: #ABE338 } /* Literal.String */
+html[data-theme="dark"] .highlight .na { color: #FFD900 } /* Name.Attribute */
+html[data-theme="dark"] .highlight .nb { color: #FFD900 } /* Name.Builtin */
+html[data-theme="dark"] .highlight .nc { color: #00E0E0 } /* Name.Class */
+html[data-theme="dark"] .highlight .no { color: #00E0E0 } /* Name.Constant */
+html[data-theme="dark"] .highlight .nd { color: #FFD900 } /* Name.Decorator */
+html[data-theme="dark"] .highlight .ni { color: #ABE338 } /* Name.Entity */
+html[data-theme="dark"] .highlight .ne { color: #DCC6E0 } /* Name.Exception */
+html[data-theme="dark"] .highlight .nf { color: #00E0E0 } /* Name.Function */
+html[data-theme="dark"] .highlight .nl { color: #FFD900 } /* Name.Label */
+html[data-theme="dark"] .highlight .nn { color: #F8F8F2 } /* Name.Namespace */
+html[data-theme="dark"] .highlight .nx { color: #F8F8F2 } /* Name.Other */
+html[data-theme="dark"] .highlight .py { color: #00E0E0 } /* Name.Property */
+html[data-theme="dark"] .highlight .nt { color: #00E0E0 } /* Name.Tag */
+html[data-theme="dark"] .highlight .nv { color: #FFA07A } /* Name.Variable */
+html[data-theme="dark"] .highlight .ow { color: #DCC6E0 } /* Operator.Word */
+html[data-theme="dark"] .highlight .pm { color: #F8F8F2 } /* Punctuation.Marker */
+html[data-theme="dark"] .highlight .w { color: #F8F8F2 } /* Text.Whitespace */
+html[data-theme="dark"] .highlight .mb { color: #FFD900 } /* Literal.Number.Bin */
+html[data-theme="dark"] .highlight .mf { color: #FFD900 } /* Literal.Number.Float */
+html[data-theme="dark"] .highlight .mh { color: #FFD900 } /* Literal.Number.Hex */
+html[data-theme="dark"] .highlight .mi { color: #FFD900 } /* Literal.Number.Integer */
+html[data-theme="dark"] .highlight .mo { color: #FFD900 } /* Literal.Number.Oct */
+html[data-theme="dark"] .highlight .sa { color: #ABE338 } /* Literal.String.Affix */
+html[data-theme="dark"] .highlight .sb { color: #ABE338 } /* Literal.String.Backtick */
+html[data-theme="dark"] .highlight .sc { color: #ABE338 } /* Literal.String.Char */
+html[data-theme="dark"] .highlight .dl { color: #ABE338 } /* Literal.String.Delimiter */
+html[data-theme="dark"] .highlight .sd { color: #ABE338 } /* Literal.String.Doc */
+html[data-theme="dark"] .highlight .s2 { color: #ABE338 } /* Literal.String.Double */
+html[data-theme="dark"] .highlight .se { color: #ABE338 } /* Literal.String.Escape */
+html[data-theme="dark"] .highlight .sh { color: #ABE338 } /* Literal.String.Heredoc */
+html[data-theme="dark"] .highlight .si { color: #ABE338 } /* Literal.String.Interpol */
+html[data-theme="dark"] .highlight .sx { color: #ABE338 } /* Literal.String.Other */
+html[data-theme="dark"] .highlight .sr { color: #FFA07A } /* Literal.String.Regex */
+html[data-theme="dark"] .highlight .s1 { color: #ABE338 } /* Literal.String.Single */
+html[data-theme="dark"] .highlight .ss { color: #00E0E0 } /* Literal.String.Symbol */
+html[data-theme="dark"] .highlight .bp { color: #FFD900 } /* Name.Builtin.Pseudo */
+html[data-theme="dark"] .highlight .fm { color: #00E0E0 } /* Name.Function.Magic */
+html[data-theme="dark"] .highlight .vc { color: #FFA07A } /* Name.Variable.Class */
+html[data-theme="dark"] .highlight .vg { color: #FFA07A } /* Name.Variable.Global */
+html[data-theme="dark"] .highlight .vi { color: #FFA07A } /* Name.Variable.Instance */
+html[data-theme="dark"] .highlight .vm { color: #FFD900 } /* Name.Variable.Magic */
+html[data-theme="dark"] .highlight .il { color: #FFD900 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/tirx/_static/sbt-webpack-macros.html b/tirx/_static/sbt-webpack-macros.html
new file mode 100644
index 00000000000..6cbf559faac
--- /dev/null
+++ b/tirx/_static/sbt-webpack-macros.html
@@ -0,0 +1,11 @@
+<!--
+ All these macros are auto-generated and must **NOT** be edited by hand.
+ See the webpack.config.js file, to learn more about how this is generated.
+-->
+{% macro head_pre_bootstrap() %}
+ <link href="{{ pathto('_static/styles/sphinx-book-theme.css', 1) }}" rel="stylesheet">
+{% endmacro %}
+
+{% macro body_post() %}
+ <script src="{{ pathto('_static/scripts/sphinx-book-theme.js', 1) }}"></script>
+{% endmacro %}
diff --git a/tirx/_static/scripts/bootstrap.js b/tirx/_static/scripts/bootstrap.js
new file mode 100644
index 00000000000..92d9df996ac
--- /dev/null
+++ b/tirx/_static/scripts/bootstrap.js
@@ -0,0 +1,3 @@
+/*! For license information please see bootstrap.js.LICENSE.txt */
+(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{afterMain:()=>E,afterRead:()=>v,afterWrite:()=>T,applyStyles:()=>$,arrow:()=>J,auto:()=>a,basePlacements:()=>l,beforeMain:()=>y,bef [...]
+//# sourceMappingURL=bootstrap.js.map
\ No newline at end of file
diff --git a/tirx/_static/scripts/bootstrap.js.LICENSE.txt b/tirx/_static/scripts/bootstrap.js.LICENSE.txt
new file mode 100644
index 00000000000..28755c2c5bb
--- /dev/null
+++ b/tirx/_static/scripts/bootstrap.js.LICENSE.txt
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap v5.3.3 (https://getbootstrap.com/)
+ * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */
diff --git a/tirx/_static/scripts/bootstrap.js.map b/tirx/_static/scripts/bootstrap.js.map
new file mode 100644
index 00000000000..a8ea336ac1a
--- /dev/null
+++ b/tirx/_static/scripts/bootstrap.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"scripts/bootstrap.js","mappings":";mBACA,IAAIA,EAAsB,CCA1BA,EAAwB,CAACC,EAASC,KACjC,IAAI,IAAIC,KAAOD,EACXF,EAAoBI,EAAEF,EAAYC,KAASH,EAAoBI,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EH,EAAwB,CAACS,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFV,EAAyBC,IACH,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,M,u1BCLhD,IAAI,EAAM,MACNC,EAAS,SACTC,EAAQ,QACRC,EAAO,OACPC,EAAO,OACPC,EAAi [...]
\ No newline at end of file
diff --git a/tirx/_static/scripts/fontawesome.js b/tirx/_static/scripts/fontawesome.js
new file mode 100644
index 00000000000..1ab9bfdd7e5
--- /dev/null
+++ b/tirx/_static/scripts/fontawesome.js
@@ -0,0 +1,3 @@
+/*! For license information please see fontawesome.js.LICENSE.txt */
+(()=>{var c={654(){(()=>{var c={},l={};try{"undefined"!=typeof window&&(c=window),"undefined"!=typeof document&&(l=document)}catch(c){}var s=void 0===(s=(c.navigator||{}).userAgent)?"":s;function a(c,l){(null==l||l>c.length)&&(l=c.length);for(var s=0,a=Array(l);s<l;s++)a[s]=c[s];return a}function e(c,l,s){return(l="symbol"==typeof(a=(c=>{if("object"!=typeof c||!c)return c;var l=c[Symbol.toPrimitive];if(void 0===l)return String(c);if("object"!=typeof(l=l.call(c,"string")))return l;throw n [...]
+//# sourceMappingURL=fontawesome.js.map
\ No newline at end of file
diff --git a/tirx/_static/scripts/fontawesome.js.LICENSE.txt b/tirx/_static/scripts/fontawesome.js.LICENSE.txt
new file mode 100644
index 00000000000..e3c272acc8e
--- /dev/null
+++ b/tirx/_static/scripts/fontawesome.js.LICENSE.txt
@@ -0,0 +1,5 @@
+/*!
+ * Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2026 Fonticons, Inc.
+ */
diff --git a/tirx/_static/scripts/fontawesome.js.map b/tirx/_static/scripts/fontawesome.js.map
new file mode 100644
index 00000000000..af09873b0ed
--- /dev/null
+++ b/tirx/_static/scripts/fontawesome.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"scripts/fontawesome.js","mappings":";mBAKA,MAAM,IAAIA,EAAE,CAAC,EAAEC,EAAE,CAAC,EAAE,IAAI,oBAAoBC,SAASF,EAAEE,QAAQ,oBAAoBC,WAAWF,EAAEE,SAAS,CAAC,MAAMH,GAAG,CAAC,IAAII,OAAO,KAAKA,GAAGJ,EAAEK,WAAW,CAAC,GAAGC,WAAW,GAAGF,EAAE,SAASG,EAAEP,EAAEC,IAAI,MAAMA,GAAGA,EAAED,EAAEQ,UAAUP,EAAED,EAAEQ,QAAQ,IAAI,IAAIJ,EAAE,EAAEG,EAAEE,MAAMR,GAAGG,EAAEH,EAAEG,IAAIG,EAAEH,GAAGJ,EAAEI,GAAG,OAAOG,CAAC,CAAC,SAASG,EAAEV,EAAEC,EAAEG,GAAG,OAAOH,EAAE,iBAAiBM,EAAE,CAAEP,IAAO,GAAG,iBAAiBA,IAAIA [...]
\ No newline at end of file
diff --git a/tirx/_static/scripts/pydata-sphinx-theme.js b/tirx/_static/scripts/pydata-sphinx-theme.js
new file mode 100644
index 00000000000..bdc57fbb00e
--- /dev/null
+++ b/tirx/_static/scripts/pydata-sphinx-theme.js
@@ -0,0 +1,2 @@
+(()=>{"use strict";function e(e){"loading"!=document.readyState?e():document.addEventListener("DOMContentLoaded",e)}const t=e=>"string"==typeof e&&/^[v\d]/.test(e)&&o.test(e),n=(e,t,n)=>{u(n);const o=((e,t)=>{const n=r(e),o=r(t),s=n.pop(),a=o.pop(),i=c(n,o);return 0!==i?i:s&&a?c(s.split("."),a.split(".")):s||a?s?-1:1:0})(e,t);return d[n].includes(o)},o=/^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\-]+(?:\.[\da-z\-]+)*))?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)? [...]
+//# sourceMappingURL=pydata-sphinx-theme.js.map
\ No newline at end of file
diff --git a/tirx/_static/scripts/pydata-sphinx-theme.js.map b/tirx/_static/scripts/pydata-sphinx-theme.js.map
new file mode 100644
index 00000000000..bc383c37ec4
--- /dev/null
+++ b/tirx/_static/scripts/pydata-sphinx-theme.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"scripts/pydata-sphinx-theme.js","mappings":"mBASO,SAASA,EAAcC,GACD,WAAvBC,SAASC,WAAyBF,IACjCC,SAASE,iBAAiB,mBAAoBH,EACrD,CCLO,MAiCMI,EAAYC,GAA+B,iBAAZA,GAAwB,SAASC,KAAKD,IAAYE,EAAOD,KAAKD,GAkB7FG,EAAU,CAACC,EAAIC,EAAIC,KAE5BC,EAAoBD,GAGpB,MAAME,EAxDqB,EAACJ,EAAIC,KAEhC,MAAMI,EAAKC,EAAiBN,GACtBO,EAAKD,EAAiBL,GAEtBO,EAAKH,EAAGI,MACRC,EAAKH,EAAGE,MAERE,EAAIC,EAAgBP,EAAIE,GAC9B,OAAU,IAANI,EACOA,EAEPH,GAAME,EACCE,EAAgBJ,EAAGK,MAAM,KAAMH,EAAGG,MAAM,MAE1CL,GAAME,EACJF,GAAM, [...]
\ No newline at end of file
diff --git a/tirx/_static/scripts/sphinx-book-theme.js b/tirx/_static/scripts/sphinx-book-theme.js
new file mode 100644
index 00000000000..f41fc7b3060
--- /dev/null
+++ b/tirx/_static/scripts/sphinx-book-theme.js
@@ -0,0 +1,2 @@
+(()=>{"use strict";var e=e=>{"loading"!=document.readyState?e():document.addEventListener?document.addEventListener("DOMContentLoaded",e):document.attachEvent("onreadystatechange",(function(){"complete"==document.readyState&&e()}))};window.initThebeSBT=()=>{var e=document.querySelector("section h1");e.nextElementSibling.classList.contains("thebe-launch-button")||e.insertAdjacentHTML("afterend","<button class='thebe-launch-button'></button>"),initThebe()},window.toggleFullScreen=()=>{var [...]
+//# sourceMappingURL=sphinx-book-theme.js.map
\ No newline at end of file
diff --git a/tirx/_static/scripts/sphinx-book-theme.js.map b/tirx/_static/scripts/sphinx-book-theme.js.map
new file mode 100644
index 00000000000..8a22740e115
--- /dev/null
+++ b/tirx/_static/scripts/sphinx-book-theme.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"scripts/sphinx-book-theme.js","mappings":"mBASA,IAAIA,EAAsBC,IACG,WAAvBC,SAASC,WACXF,IACSC,SAASE,iBAClBF,SAASE,iBAAiB,mBAAoBH,GAE9CC,SAASG,YAAY,sBAAsB,WACd,YAAvBH,SAASC,YAA0BF,GACzC,GACF,EAkKFK,OAAOC,aAtCY,KACjB,IAAIC,EAAQN,SAASO,cAAc,cACrBD,EAAME,mBAGPC,UAAUC,SAAS,wBAC9BJ,EAAMK,mBACJ,WACA,iDAIJC,WAAW,EA2BbR,OAAOS,iBAzJgB,KACrB,IAAIC,EACDd,SAASe,mBAAoD,OAA/Bf,SAASe,mBACvCf,SAASgB,yBAC6B,OAArChB,SAASgB,wBACb,IAAIC,EAASjB,SAASkB,gBACjBJ,GAQHK,QAAQC,IAAI,8BACRpB,SAASqB, [...]
\ No newline at end of file
diff --git a/tirx/_static/searchtools.js b/tirx/_static/searchtools.js
new file mode 100644
index 00000000000..e29b1c754ba
--- /dev/null
+++ b/tirx/_static/searchtools.js
@@ -0,0 +1,693 @@
+/*
+ * Sphinx JavaScript utilities for the full-text search.
+ */
+"use strict";
+
+/**
+ * Simple result scoring code.
+ */
+if (typeof Scorer === "undefined") {
+ var Scorer = {
+ // Implement the following function to further tweak the score for each result
+ // The function takes a result array [docname, title, anchor, descr, score, filename]
+ // and returns the new score.
+ /*
+ score: result => {
+ const [docname, title, anchor, descr, score, filename, kind] = result
+ return score
+ },
+ */
+
+ // 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,
+ partialTitle: 7,
+ // query found in terms
+ term: 5,
+ partialTerm: 2,
+ };
+}
+
+// Global search result kind enum, used by themes to style search results.
+// prettier-ignore
+class SearchResultKind {
+ static get index() { return "index"; }
+ static get object() { return "object"; }
+ static get text() { return "text"; }
+ static get title() { return "title"; }
+}
+
+const _removeChildren = (element) => {
+ while (element && element.lastChild) element.removeChild(element.lastChild);
+};
+
+/**
+ * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
+ */
+const _escapeRegExp = (string) =>
+ string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
+
+const _escapeHTML = (text) => {
+ return text
+ .replaceAll("&", "&")
+ .replaceAll("<", "<")
+ .replaceAll(">", ">")
+ .replaceAll('"', """)
+ .replaceAll("'", "'");
+};
+
+const _displayItem = (item, searchTerms, highlightTerms) => {
+ const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
+ const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
+ const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
+ const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
+ const contentRoot = document.documentElement.dataset.content_root;
+
+ const [docName, title, anchor, descr, score, _filename, kind] = item;
+
+ let listItem = document.createElement("li");
+ // Add a class representing the item's type:
+ // can be used by a theme's CSS selector for styling
+ // See SearchResultKind for the class names.
+ listItem.classList.add(`kind-${kind}`);
+ let requestUrl;
+ let linkUrl;
+ if (docBuilder === "dirhtml") {
+ // dirhtml builder
+ let dirname = docName + "/";
+ if (dirname.match(/\/index\/$/))
+ dirname = dirname.substring(0, dirname.length - 6);
+ else if (dirname === "index/") dirname = "";
+ requestUrl = contentRoot + dirname;
+ linkUrl = requestUrl;
+ } else {
+ // normal html builders
+ requestUrl = contentRoot + docName + docFileSuffix;
+ linkUrl = docName + docLinkSuffix;
+ }
+ let linkEl = listItem.appendChild(document.createElement("a"));
+ linkEl.href = linkUrl + anchor;
+ linkEl.dataset.score = score;
+ linkEl.innerHTML = _escapeHTML(title);
+ if (descr) {
+ listItem.appendChild(document.createElement("span")).innerHTML =
+ ` (${_escapeHTML(descr)})`;
+ // highlight search terms in the description
+ if (SPHINX_HIGHLIGHT_ENABLED)
+ // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
+ highlightTerms.forEach((term) =>
+ _highlightText(listItem, term, "highlighted"),
+ );
+ } else if (showSearchSummary)
+ fetch(requestUrl)
+ .then((responseData) => responseData.text())
+ .then((data) => {
+ if (data)
+ listItem.appendChild(
+ Search.makeSearchSummary(data, searchTerms, anchor),
+ );
+ // highlight search terms in the summary
+ if (SPHINX_HIGHLIGHT_ENABLED)
+ // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
+ highlightTerms.forEach((term) =>
+ _highlightText(listItem, term, "highlighted"),
+ );
+ });
+ Search.output.appendChild(listItem);
+};
+const _finishSearch = (resultCount) => {
+ Search.stopPulse();
+ Search.title.innerText = _("Search Results");
+ if (!resultCount)
+ Search.status.innerText = Documentation.gettext(
+ "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.innerText = Documentation.ngettext(
+ "Search finished, found one page matching the search query.",
+ "Search finished, found ${resultCount} pages matching the search query.",
+ resultCount,
+ ).replace("${resultCount}", resultCount);
+};
+const _displayNextItem = (
+ results,
+ resultCount,
+ searchTerms,
+ highlightTerms,
+) => {
+ // results left, load the summary and display it
+ // this is intended to be dynamic (don't sub resultsCount)
+ if (results.length) {
+ _displayItem(results.pop(), searchTerms, highlightTerms);
+ setTimeout(
+ () => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
+ 5,
+ );
+ }
+ // search finished, update title and status message
+ else _finishSearch(resultCount);
+};
+// Helper function used by query() to order search results.
+// Each input is an array of [docname, title, anchor, descr, score, filename, kind].
+// Order the results by score (in opposite order of appearance, since the
+// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
+const _orderResultsByScoreThenName = (a, b) => {
+ const leftScore = a[4];
+ const rightScore = b[4];
+ if (leftScore === rightScore) {
+ // same score: sort alphabetically
+ const leftTitle = a[1].toLowerCase();
+ const rightTitle = b[1].toLowerCase();
+ if (leftTitle === rightTitle) return 0;
+ return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
+ }
+ return leftScore > rightScore ? 1 : -1;
+};
+
+/**
+ * Default splitQuery function. Can be overridden in ``sphinx.search`` with a
+ * custom function per language.
+ *
+ * The regular expression works by splitting the string on consecutive characters
+ * that are not Unicode letters, numbers, underscores, or emoji characters.
+ * This is the same as ``\W+`` in Python, preserving the surrogate pair area.
+ */
+if (typeof splitQuery === "undefined") {
+ var splitQuery = (query) =>
+ query
+ .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu)
+ .filter((term) => term); // remove remaining empty strings
+}
+
+/**
+ * Search Module
+ */
+const Search = {
+ _index: null,
+ _queued_query: null,
+ _pulse_status: -1,
+
+ htmlToText: (htmlString, anchor) => {
+ const htmlElement = new DOMParser().parseFromString(
+ htmlString,
+ "text/html",
+ );
+ for (const removalQuery of [".headerlink", "script", "style"]) {
+ htmlElement.querySelectorAll(removalQuery).forEach((el) => {
+ el.remove();
+ });
+ }
+ if (anchor) {
+ const anchorContent = htmlElement.querySelector(
+ `[role="main"] ${anchor}`,
+ );
+ if (anchorContent) return anchorContent.textContent;
+
+ console.warn(
+ `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`,
+ );
+ }
+
+ // if anchor not specified or not found, fall back to main content
+ const docContent = htmlElement.querySelector('[role="main"]');
+ if (docContent) return docContent.textContent;
+
+ console.warn(
+ "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template.",
+ );
+ return "";
+ },
+
+ init: () => {
+ const query = new URLSearchParams(window.location.search).get("q");
+ document
+ .querySelectorAll('input[name="q"]')
+ .forEach((el) => (el.value = query));
+ if (query) Search.performSearch(query);
+ },
+
+ loadIndex: (url) =>
+ (document.body.appendChild(document.createElement("script")).src = url),
+
+ setIndex: (index) => {
+ Search._index = index;
+ if (Search._queued_query !== null) {
+ const query = Search._queued_query;
+ Search._queued_query = null;
+ Search.query(query);
+ }
+ },
+
+ hasIndex: () => Search._index !== null,
+
+ deferQuery: (query) => (Search._queued_query = query),
+
+ stopPulse: () => (Search._pulse_status = -1),
+
+ startPulse: () => {
+ if (Search._pulse_status >= 0) return;
+
+ const pulse = () => {
+ Search._pulse_status = (Search._pulse_status + 1) % 4;
+ Search.dots.innerText = ".".repeat(Search._pulse_status);
+ if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);
+ };
+ pulse();
+ },
+
+ /**
+ * perform a search for something (or wait until index is loaded)
+ */
+ performSearch: (query) => {
+ // create the required interface elements
+ const searchText = document.createElement("h2");
+ searchText.textContent = _("Searching");
+ const searchSummary = document.createElement("p");
+ searchSummary.classList.add("search-summary");
+ searchSummary.innerText = "";
+ const searchList = document.createElement("ul");
+ searchList.setAttribute("role", "list");
+ searchList.classList.add("search");
+
+ const out = document.getElementById("search-results");
+ Search.title = out.appendChild(searchText);
+ Search.dots = Search.title.appendChild(document.createElement("span"));
+ Search.status = out.appendChild(searchSummary);
+ Search.output = out.appendChild(searchList);
+
+ const searchProgress = document.getElementById("search-progress");
+ // Some themes don't use the search progress node
+ if (searchProgress) {
+ searchProgress.innerText = _("Preparing search...");
+ }
+ Search.startPulse();
+
+ // index already loaded, the browser was quick!
+ if (Search.hasIndex()) Search.query(query);
+ else Search.deferQuery(query);
+ },
+
+ _parseQuery: (query) => {
+ // stem the search terms and add them to the correct list
+ const stemmer = new Stemmer();
+ const searchTerms = new Set();
+ const excludedTerms = new Set();
+ const highlightTerms = new Set();
+ const objectTerms = new Set(splitQuery(query.toLowerCase().trim()));
+ splitQuery(query.trim()).forEach((queryTerm) => {
+ const queryTermLower = queryTerm.toLowerCase();
+
+ // maybe skip this "word"
+ // stopwords set is from language_data.js
+ if (stopwords.has(queryTermLower) || queryTerm.match(/^\d+$/)) return;
+
+ // stem the word
+ let word = stemmer.stemWord(queryTermLower);
+ // select the correct list
+ if (word[0] === "-") excludedTerms.add(word.substr(1));
+ else {
+ searchTerms.add(word);
+ highlightTerms.add(queryTermLower);
+ }
+ });
+
+ if (SPHINX_HIGHLIGHT_ENABLED) {
+ // SPHINX_HIGHLIGHT_ENABLED is set in sphinx_highlight.js
+ localStorage.setItem(
+ "sphinx_highlight_terms",
+ [...highlightTerms].join(" "),
+ );
+ }
+
+ // console.debug("SEARCH: searching for:");
+ // console.info("required: ", [...searchTerms]);
+ // console.info("excluded: ", [...excludedTerms]);
+
+ return [query, searchTerms, excludedTerms, highlightTerms, objectTerms];
+ },
+
+ /**
+ * execute search (requires search index to be loaded)
+ */
+ _performSearch: (
+ query,
+ searchTerms,
+ excludedTerms,
+ highlightTerms,
+ objectTerms,
+ ) => {
+ const filenames = Search._index.filenames;
+ const docNames = Search._index.docnames;
+ const titles = Search._index.titles;
+ const allTitles = Search._index.alltitles;
+ const indexEntries = Search._index.indexentries;
+
+ // Collect multiple result groups to be sorted separately and then ordered.
+ // Each is an array of [docname, title, anchor, descr, score, filename, kind].
+ const normalResults = [];
+ const nonMainIndexResults = [];
+
+ _removeChildren(document.getElementById("search-progress"));
+
+ const queryLower = query.toLowerCase().trim();
+ for (const [title, foundTitles] of Object.entries(allTitles)) {
+ if (
+ title.toLowerCase().trim().includes(queryLower)
+ && queryLower.length >= title.length / 2
+ ) {
+ for (const [file, id] of foundTitles) {
+ const score = Math.round(
+ (Scorer.title * queryLower.length) / title.length,
+ );
+ const boost = titles[file] === title ? 1 : 0; // add a boost for document titles
+ normalResults.push([
+ docNames[file],
+ titles[file] !== title ? `${titles[file]} > ${title}` : title,
+ id !== null ? "#" + id : "",
+ null,
+ score + boost,
+ filenames[file],
+ SearchResultKind.title,
+ ]);
+ }
+ }
+ }
+
+ // search for explicit entries in index directives
+ for (const [entry, foundEntries] of Object.entries(indexEntries)) {
+ if (entry.includes(queryLower) && queryLower.length >= entry.length / 2) {
+ for (const [file, id, isMain] of foundEntries) {
+ const score = Math.round((100 * queryLower.length) / entry.length);
+ const result = [
+ docNames[file],
+ titles[file],
+ id ? "#" + id : "",
+ null,
+ score,
+ filenames[file],
+ SearchResultKind.index,
+ ];
+ if (isMain) {
+ normalResults.push(result);
+ } else {
+ nonMainIndexResults.push(result);
+ }
+ }
+ }
+ }
+
+ // lookup as object
+ objectTerms.forEach((term) =>
+ normalResults.push(...Search.performObjectSearch(term, objectTerms)),
+ );
+
+ // lookup as search terms in fulltext
+ normalResults.push(
+ ...Search.performTermsSearch(searchTerms, excludedTerms),
+ );
+
+ // let the scorer override scores with a custom scoring function
+ if (Scorer.score) {
+ normalResults.forEach((item) => (item[4] = Scorer.score(item)));
+ nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item)));
+ }
+
+ // Sort each group of results by score and then alphabetically by name.
+ normalResults.sort(_orderResultsByScoreThenName);
+ nonMainIndexResults.sort(_orderResultsByScoreThenName);
+
+ // Combine the result groups in (reverse) order.
+ // Non-main index entries are typically arbitrary cross-references,
+ // so display them after other results.
+ let results = [...nonMainIndexResults, ...normalResults];
+
+ // remove duplicate search results
+ // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
+ let seen = new Set();
+ results = results.reverse().reduce((acc, result) => {
+ let resultStr = result
+ .slice(0, 4)
+ .concat([result[5]])
+ .map((v) => String(v))
+ .join(",");
+ if (!seen.has(resultStr)) {
+ acc.push(result);
+ seen.add(resultStr);
+ }
+ return acc;
+ }, []);
+
+ return results.reverse();
+ },
+
+ query: (query) => {
+ const [
+ searchQuery,
+ searchTerms,
+ excludedTerms,
+ highlightTerms,
+ objectTerms,
+ ] = Search._parseQuery(query);
+ const results = Search._performSearch(
+ searchQuery,
+ searchTerms,
+ excludedTerms,
+ highlightTerms,
+ objectTerms,
+ );
+
+ // for debugging
+ //Search.lastresults = results.slice(); // a copy
+ // console.info("search results:", Search.lastresults);
+
+ // print the results
+ _displayNextItem(results, results.length, searchTerms, highlightTerms);
+ },
+
+ /**
+ * search for object names
+ */
+ performObjectSearch: (object, objectTerms) => {
+ const filenames = Search._index.filenames;
+ const docNames = Search._index.docnames;
+ const objects = Search._index.objects;
+ const objNames = Search._index.objnames;
+ const titles = Search._index.titles;
+
+ const results = [];
+
+ const objectSearchCallback = (prefix, match) => {
+ const name = match[4];
+ const fullname = (prefix ? prefix + "." : "") + name;
+ const fullnameLower = fullname.toLowerCase();
+ if (fullnameLower.indexOf(object) < 0) return;
+
+ let score = 0;
+ const parts = fullnameLower.split(".");
+
+ // check for different match types: exact matches of full name or
+ // "last name" (i.e. last dotted part)
+ if (fullnameLower === object || parts.slice(-1)[0] === object)
+ score += Scorer.objNameMatch;
+ else if (parts.slice(-1)[0].indexOf(object) > -1)
+ score += Scorer.objPartialMatch; // matches in last name
+
+ const objName = objNames[match[1]][2];
+ const title = titles[match[0]];
+
+ // If more than one term searched for, we require other words to be
+ // found in the name/title/description
+ const otherTerms = new Set(objectTerms);
+ otherTerms.delete(object);
+ if (otherTerms.size > 0) {
+ const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();
+ if (
+ [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)
+ )
+ return;
+ }
+
+ let anchor = match[3];
+ if (anchor === "") anchor = fullname;
+ else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname;
+
+ const descr = objName + _(", in ") + title;
+
+ // 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([
+ docNames[match[0]],
+ fullname,
+ "#" + anchor,
+ descr,
+ score,
+ filenames[match[0]],
+ SearchResultKind.object,
+ ]);
+ };
+ Object.keys(objects).forEach((prefix) =>
+ objects[prefix].forEach((array) => objectSearchCallback(prefix, array)),
+ );
+ return results;
+ },
+
+ /**
+ * search for full-text terms in the index
+ */
+ performTermsSearch: (searchTerms, excludedTerms) => {
+ // prepare search
+ const terms = Search._index.terms;
+ const titleTerms = Search._index.titleterms;
+ const filenames = Search._index.filenames;
+ const docNames = Search._index.docnames;
+ const titles = Search._index.titles;
+
+ const scoreMap = new Map();
+ const fileMap = new Map();
+
+ // perform the search on the required terms
+ searchTerms.forEach((word) => {
+ const files = [];
+ // find documents, if any, containing the query word in their text/title term indices
+ // use Object.hasOwnProperty to avoid mismatching against prototype properties
+ const arr = [
+ {
+ files: terms.hasOwnProperty(word) ? terms[word] : undefined,
+ score: Scorer.term,
+ },
+ {
+ files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined,
+ score: Scorer.title,
+ },
+ ];
+ // add support for partial matches
+ if (word.length > 2) {
+ const escapedWord = _escapeRegExp(word);
+ if (!terms.hasOwnProperty(word)) {
+ Object.keys(terms).forEach((term) => {
+ if (term.match(escapedWord))
+ arr.push({ files: terms[term], score: Scorer.partialTerm });
+ });
+ }
+ if (!titleTerms.hasOwnProperty(word)) {
+ Object.keys(titleTerms).forEach((term) => {
+ if (term.match(escapedWord))
+ arr.push({ files: titleTerms[term], score: Scorer.partialTitle });
+ });
+ }
+ }
+
+ // no match but word was a required one
+ if (arr.every((record) => record.files === undefined)) return;
+
+ // found search word in contents
+ arr.forEach((record) => {
+ if (record.files === undefined) return;
+
+ let recordFiles = record.files;
+ if (recordFiles.length === undefined) recordFiles = [recordFiles];
+ files.push(...recordFiles);
+
+ // set score for the word in each file
+ recordFiles.forEach((file) => {
+ if (!scoreMap.has(file)) scoreMap.set(file, new Map());
+ const fileScores = scoreMap.get(file);
+ fileScores.set(word, record.score);
+ });
+ });
+
+ // create the mapping
+ files.forEach((file) => {
+ if (!fileMap.has(file)) fileMap.set(file, [word]);
+ else if (fileMap.get(file).indexOf(word) === -1)
+ fileMap.get(file).push(word);
+ });
+ });
+
+ // now check if the files don't contain excluded terms
+ const results = [];
+ for (const [file, wordList] of fileMap) {
+ // check if all requirements are matched
+
+ // as search terms with length < 3 are discarded
+ const filteredTermCount = [...searchTerms].filter(
+ (term) => term.length > 2,
+ ).length;
+ if (
+ wordList.length !== searchTerms.size
+ && wordList.length !== filteredTermCount
+ )
+ continue;
+
+ // ensure that none of the excluded terms is in the search result
+ if (
+ [...excludedTerms].some(
+ (term) =>
+ terms[term] === file
+ || titleTerms[term] === file
+ || (terms[term] || []).includes(file)
+ || (titleTerms[term] || []).includes(file),
+ )
+ )
+ break;
+
+ // select one (max) score for the file.
+ const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w)));
+ // add result to the result list
+ results.push([
+ docNames[file],
+ titles[file],
+ "",
+ null,
+ score,
+ filenames[file],
+ SearchResultKind.text,
+ ]);
+ }
+ return results;
+ },
+
+ /**
+ * helper function to return a node containing the
+ * search summary for a given text. keywords is a list
+ * of stemmed words.
+ */
+ makeSearchSummary: (htmlText, keywords, anchor) => {
+ const text = Search.htmlToText(htmlText, anchor);
+ if (text === "") return null;
+
+ const textLower = text.toLowerCase();
+ const actualStartPosition = [...keywords]
+ .map((k) => textLower.indexOf(k.toLowerCase()))
+ .filter((i) => i > -1)
+ .slice(-1)[0];
+ const startWithContext = Math.max(actualStartPosition - 120, 0);
+
+ const top = startWithContext === 0 ? "" : "...";
+ const tail = startWithContext + 240 < text.length ? "..." : "";
+
+ let summary = document.createElement("p");
+ summary.classList.add("context");
+ summary.textContent =
+ top + text.substr(startWithContext, 240).trim() + tail;
+
+ return summary;
+ },
+};
+
+_ready(Search.init);
diff --git a/tirx/_static/sphinx_highlight.js b/tirx/_static/sphinx_highlight.js
new file mode 100644
index 00000000000..a74e103a831
--- /dev/null
+++ b/tirx/_static/sphinx_highlight.js
@@ -0,0 +1,159 @@
+/* Highlighting utilities for Sphinx HTML documentation. */
+"use strict";
+
+const SPHINX_HIGHLIGHT_ENABLED = true;
+
+/**
+ * highlight a given string on a node by wrapping it in
+ * span elements with the given class name.
+ */
+const _highlight = (node, addItems, text, className) => {
+ if (node.nodeType === Node.TEXT_NODE) {
+ const val = node.nodeValue;
+ const parent = node.parentNode;
+ const pos = val.toLowerCase().indexOf(text);
+ if (
+ pos >= 0
+ && !parent.classList.contains(className)
+ && !parent.classList.contains("nohighlight")
+ ) {
+ let span;
+
+ const closestNode = parent.closest("body, svg, foreignObject");
+ const isInSVG = closestNode && closestNode.matches("svg");
+ if (isInSVG) {
+ span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
+ } else {
+ span = document.createElement("span");
+ span.classList.add(className);
+ }
+
+ span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+ const rest = document.createTextNode(val.substr(pos + text.length));
+ parent.insertBefore(span, parent.insertBefore(rest, node.nextSibling));
+ node.nodeValue = val.substr(0, pos);
+ /* There may be more occurrences of search term in this node. So call this
+ * function recursively on the remaining fragment.
+ */
+ _highlight(rest, addItems, text, className);
+
+ if (isInSVG) {
+ const rect = document.createElementNS(
+ "http://www.w3.org/2000/svg",
+ "rect",
+ );
+ const bbox = parent.getBBox();
+ rect.x.baseVal.value = bbox.x;
+ rect.y.baseVal.value = bbox.y;
+ rect.width.baseVal.value = bbox.width;
+ rect.height.baseVal.value = bbox.height;
+ rect.setAttribute("class", className);
+ addItems.push({ parent: parent, target: rect });
+ }
+ }
+ } else if (node.matches && !node.matches("button, select, textarea")) {
+ node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
+ }
+};
+const _highlightText = (thisNode, text, className) => {
+ let addItems = [];
+ _highlight(thisNode, addItems, text, className);
+ addItems.forEach((obj) =>
+ obj.parent.insertAdjacentElement("beforebegin", obj.target),
+ );
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+const SphinxHighlight = {
+ /**
+ * highlight the search words provided in localstorage in the text
+ */
+ highlightSearchWords: () => {
+ if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight
+
+ // get and clear terms from localstorage
+ const url = new URL(window.location);
+ const highlight =
+ localStorage.getItem("sphinx_highlight_terms")
+ || url.searchParams.get("highlight")
+ || "";
+ localStorage.removeItem("sphinx_highlight_terms");
+ // Update history only if '?highlight' is present; otherwise it
+ // clears text fragments (not set in window.location by the browser)
+ if (url.searchParams.has("highlight")) {
+ url.searchParams.delete("highlight");
+ window.history.replaceState({}, "", url);
+ }
+
+ // get individual terms from highlight string
+ const terms = highlight
+ .toLowerCase()
+ .split(/\s+/)
+ .filter((x) => x);
+ if (terms.length === 0) return; // nothing to do
+
+ // There should never be more than one element matching "div.body"
+ const divBody = document.querySelectorAll("div.body");
+ const body = divBody.length ? divBody[0] : document.querySelector("body");
+ window.setTimeout(() => {
+ terms.forEach((term) => _highlightText(body, term, "highlighted"));
+ }, 10);
+
+ const searchBox = document.getElementById("searchbox");
+ if (searchBox === null) return;
+ searchBox.appendChild(
+ document
+ .createRange()
+ .createContextualFragment(
+ '<p class="highlight-link">'
+ + '<a href="javascript:SphinxHighlight.hideSearchWords()">'
+ + _("Hide Search Matches")
+ + "</a></p>",
+ ),
+ );
+ },
+
+ /**
+ * helper function to hide the search marks again
+ */
+ hideSearchWords: () => {
+ document
+ .querySelectorAll("#searchbox .highlight-link")
+ .forEach((el) => el.remove());
+ document
+ .querySelectorAll("span.highlighted")
+ .forEach((el) => el.classList.remove("highlighted"));
+ localStorage.removeItem("sphinx_highlight_terms");
+ },
+
+ initEscapeListener: () => {
+ // only install a listener if it is really needed
+ if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;
+
+ document.addEventListener("keydown", (event) => {
+ // bail for input elements
+ if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName))
+ return;
+ // bail with special keys
+ if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey)
+ return;
+ if (
+ DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
+ && event.key === "Escape"
+ ) {
+ SphinxHighlight.hideSearchWords();
+ event.preventDefault();
+ }
+ });
+ },
+};
+
+_ready(() => {
+ /* Do not call highlightSearchWords() when we are on the search page.
+ * It will highlight words from the *previous* search query.
+ */
+ if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
+ SphinxHighlight.initEscapeListener();
+});
diff --git a/tirx/_static/styles/pydata-sphinx-theme.css b/tirx/_static/styles/pydata-sphinx-theme.css
new file mode 100644
index 00000000000..e55c4ed290c
--- /dev/null
+++ b/tirx/_static/styles/pydata-sphinx-theme.css
@@ -0,0 +1,27 @@
+@charset "UTF-8";
+/*!
+ * Bootstrap v5.3.3 (https://getbootstrap.com/)
+ * Copyright 2011-2024 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;-- [...]
+
+/*!
+ * Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2026 Fonticons, Inc.
+ */:host,:root{--fa-font-solid:normal 900 1em/1 var(--fa-family-classic)}@font-face{font-display:block;font-family:Font Awesome\ 7 Free;font-style:normal;font-weight:900;src:url(../vendor/fontawesome/webfonts/fa-solid-900.woff2)}.fas{--fa-family:var(--fa-family-classic)}.fa-solid,.fas{--fa-style:900}
+
+/*!
+ * Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2026 Fonticons, Inc.
+ */:host,:root{--fa-family-classic:"Font Awesome 7 Free";--fa-font-regular:normal 400 1em/1 var(--fa-family-classic);--fa-style-family-classic:var(--fa-family-classic)}@font-face{font-display:block;font-family:Font Awesome\ 7 Free;font-style:normal;font-weight:400;src:url(../vendor/fontawesome/webfonts/fa-regular-400.woff2)}.far{--fa-family:var(--fa-family-classic);--fa-style:400}.fa-classic{--fa-family:var(--fa-family-classic)}.fa-regular{--fa-style:400}
+
+/*!
+ * Font Awesome Free 7.2.0 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ * Copyright 2026 Fonticons, Inc.
+ */:host,:root{--fa-family-brands:"Font Awesome 7 Brands";--fa-font-brands:normal 400 1em/1 var(--fa-family-brands)}@font-face{font-display:block;font-family:Font Awesome\ 7 Brands;font-style:normal;font-weight:400;src:url(../vendor/fontawesome/webfonts/fa-brands-400.woff2)}.fa-brands,.fa-classic.fa-brands,.fab{--fa-family:var(--fa-family-brands);--fa-style:400}.fa-firefox-browser{--fa:"\e007"}.fa-ideal{--fa:"\e013"}.fa-microblog{--fa:"\e01a"}.fa-pied-piper-square,.fa-square-pied-piper{- [...]
+ --pst-color-text-base
+ )}.table a{color:var(--pst-color-link-higher-contrast)}.table td~td,.table td~th,.table th~td,.table th~th{border-left:1px solid var(--pst-color-table-inner-border)}.table thead tr{background-color:var(--pst-color-table-heading-bg);border-bottom:2px solid var(--pst-color-primary)}.table tbody tr:nth-child(odd){background-color:var(--pst-color-table-row-zebra-low-bg)}.table tbody tr:nth-child(2n){background-color:var(--pst-color-table-row-zebra-high-bg)}.pst-scrollable-table-container{o [...]
+/*# sourceMappingURL=pydata-sphinx-theme.css.map*/
\ No newline at end of file
diff --git a/tirx/_static/styles/pydata-sphinx-theme.css.map b/tirx/_static/styles/pydata-sphinx-theme.css.map
new file mode 100644
index 00000000000..dff8d5aece7
--- /dev/null
+++ b/tirx/_static/styles/pydata-sphinx-theme.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"styles/pydata-sphinx-theme.css","mappings":"AAsGE,gBC+kBF;ACprBE;;;;EAAA,CCDF,4BASI,qQAIA,sMAIA,iKAIA,sNAIA,iRAIA,iPAIA,iRAGF,2BACA,qBAMA,yMACA,mGACA,4EAOA,gDC2OI,wBALI,CDpOR,0BACA,0BAKA,wBACA,6BACA,kBACA,6BAEA,yBACA,8BAEA,wCACA,kCACA,0BACA,kCAEA,sCACA,iCACA,yBACA,iCAGA,2BAEA,wBACA,+BACA,+BAEA,8BACA,oCAMA,wBACA,6BACA,0BAGA,sBACA,wBACA,0BACA,+CAEA,4BACA,8BACA,6BACA,2BACA,4BACA,mDACA,8BAGA,8CACA,uDACA,gDACA,uDAIA,gCACA,0BACA,8CAIA,8BACA,qCACA,gCACA,sCFFF,CI9GI,qBFsHA,i [...]
\ No newline at end of file
diff --git a/tirx/_static/styles/sphinx-book-theme.css b/tirx/_static/styles/sphinx-book-theme.css
new file mode 100644
index 00000000000..de252d866e8
--- /dev/null
+++ b/tirx/_static/styles/sphinx-book-theme.css
@@ -0,0 +1,16 @@
+/*! sphinx-book-theme CSS
+ * BSD 3-Clause License
+ * Copyright (c) 2020, EBP
+ * All rights reserved.
+ *
+ * This follows the 7-1 pattern described here:
+ * https://sass-guidelin.es/#architecture
+ */html[data-theme=dark],html[data-theme=light]{--pst-font-size-base:none;--pst-color-secondary:#e89217}html[data-theme=light]{--sbt-color-announcement:#616161;--pst-color-primary:#176de8}html[data-theme=dark]{--pst-color-primary:#528fe4;--sbt-color-announcement:#616161;--pst-color-background:#121212}html{scroll-padding-top:4rem}.sbt-scroll-pixel-helper{height:0;left:0;position:absolute;top:0;width:0}.d-n,.onlyprint{display:none}@media print{.onlyprint{display:block!important}.noprint{di [...]
+ * BSD 3-Clause License
+ * Copyright (c) 2020, EBP
+ * All rights reserved.
+ *
+ * This follows the 7-1 pattern described here:
+ * https://sass-guidelin.es/#architecture
+ */@media(min-width:768px){button.sidebar-toggle.primary-toggle{display:inline-block}}@media(max-width:768px){button.sidebar-toggle.primary-toggle{margin-bottom:0}}@media(min-width:1200px){button.sidebar-toggle.secondary-toggle{display:none}}@media(max-width:768px){button.sidebar-toggle.secondary-toggle{margin-bottom:0}}.bd-header-article{align-items:center;background-color:var(--pst-color-background);display:flex;font-size:.9em;padding:0 1rem;position:sticky;top:0;transition:left .2s;z- [...]
+/*# sourceMappingURL=sphinx-book-theme.css.map*/
\ No newline at end of file
diff --git a/tirx/_static/styles/sphinx-book-theme.css.map b/tirx/_static/styles/sphinx-book-theme.css.map
new file mode 100644
index 00000000000..d705bf7c2c7
--- /dev/null
+++ b/tirx/_static/styles/sphinx-book-theme.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"styles/sphinx-book-theme.css","mappings":"AAAA;;;;;;;EAAA,CC0CA,6CAGE,yBAA0B,CAG1B,6BAA8B,CAKhC,uBAEE,gCAAyC,CAEzC,2BAA4B,CAG9B,sBAEE,2BAA4B,CAG5B,gCAAyC,CAEzC,8BAA+B,CC9DjC,KAIE,wBAOF,yBAGE,SAEA,MAAK,CAJL,kBAGA,MAFA,OAGA,CAYF,gBACE,aAEA,aAHF,WAII,wBAKJ,SAEI,uBAPA,CChCF,6JAME,6BAIF,kDAEE,gBAKJ,kBACE,cACA,oBACA,eAGF,MACE,kBC1BF,aAEI,qBAEE,YADA,gBACA,CAEA,yCACE,cAEA,4CACE,cAEA,eAAc,CADd,iBACA,CAIJ,iCACE,cAGA,kDACE,aAKJ,gCACE,sBAIF,wBAEE,kBADA,cACA,CAEF,gGAIE,kBACA,WAGF [...]
\ No newline at end of file
diff --git a/tirx/_static/styles/theme.css b/tirx/_static/styles/theme.css
new file mode 100644
index 00000000000..4519dd91202
--- /dev/null
+++ b/tirx/_static/styles/theme.css
@@ -0,0 +1,2 @@
+/* Provided by Sphinx's 'basic' theme, and included in the final set of assets */
+@import "../basic.css";
diff --git a/tirx/_static/vendor/fontawesome/webfonts/fa-brands-400.woff2 b/tirx/_static/vendor/fontawesome/webfonts/fa-brands-400.woff2
new file mode 100644
index 00000000000..e8bd881bb91
Binary files /dev/null and b/tirx/_static/vendor/fontawesome/webfonts/fa-brands-400.woff2 differ
diff --git a/tirx/_static/vendor/fontawesome/webfonts/fa-regular-400.woff2 b/tirx/_static/vendor/fontawesome/webfonts/fa-regular-400.woff2
new file mode 100644
index 00000000000..344b101afda
Binary files /dev/null and b/tirx/_static/vendor/fontawesome/webfonts/fa-regular-400.woff2 differ
diff --git a/tirx/_static/vendor/fontawesome/webfonts/fa-solid-900.woff2 b/tirx/_static/vendor/fontawesome/webfonts/fa-solid-900.woff2
new file mode 100644
index 00000000000..ea09c935a97
Binary files /dev/null and b/tirx/_static/vendor/fontawesome/webfonts/fa-solid-900.woff2 differ
diff --git a/tirx/_static/webpack-macros.html b/tirx/_static/webpack-macros.html
new file mode 100644
index 00000000000..44db71ca5e3
--- /dev/null
+++ b/tirx/_static/webpack-macros.html
@@ -0,0 +1,24 @@
+<!--
+ AUTO-GENERATED from webpack.config.js, do **NOT** edit by hand.
+ These are re-used in layout.html
+-->
+
+{% macro head_pre_assets() %}
+ <!-- Loaded before other Sphinx assets -->
+ <link href="{{ pathto('_static/styles/theme.css', 1) }}?digest=90905a2f556bf617f1a9" rel="stylesheet" />
+<link href="{{ pathto('_static/styles/pydata-sphinx-theme.css', 1) }}?digest=90905a2f556bf617f1a9" rel="stylesheet" />
+{% endmacro %}
+
+{% macro head_js_preload() %}
+ <!-- So that users can add custom icons -->
+ <script defer src="{{ pathto('_static/scripts/fontawesome.js', 1) }}?digest=90905a2f556bf617f1a9"></script>
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="{{ pathto('_static/scripts/bootstrap.js', 1) }}?digest=90905a2f556bf617f1a9" />
+<link rel="preload" as="script" href="{{ pathto('_static/scripts/pydata-sphinx-theme.js', 1) }}?digest=90905a2f556bf617f1a9" />
+{% endmacro %}
+
+{% macro body_post() %}
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script defer src="{{ pathto('_static/scripts/bootstrap.js', 1) }}?digest=90905a2f556bf617f1a9"></script>
+<script defer src="{{ pathto('_static/scripts/pydata-sphinx-theme.js', 1) }}?digest=90905a2f556bf617f1a9"></script>
+{% endmacro %}
\ No newline at end of file
diff --git a/tirx/commit_hash b/tirx/commit_hash
new file mode 100644
index 00000000000..9076447e09a
--- /dev/null
+++ b/tirx/commit_hash
@@ -0,0 +1 @@
+6a4f354cf444c9ff9bd534cee49f5d9c66152542
diff --git a/tirx/genindex.html b/tirx/genindex.html
new file mode 100644
index 00000000000..9dab9a30ffc
--- /dev/null
+++ b/tirx/genindex.html
@@ -0,0 +1,536 @@
+
+<!DOCTYPE html>
+
+
+<html lang="en" data-content_root="./" >
+
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Index — Apache TVM TIRx documentation</title>
+
+
+
+ <script data-cfasync="false">
+ document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
+ document.documentElement.dataset.theme = localStorage.getItem("theme") || "";
+ </script>
+ <!--
+ this give us a css class that will be invisible only if js is disabled
+ -->
+ <noscript>
+ <style>
+ .pst-js-only { display: none !important; }
+
+ </style>
+ </noscript>
+
+ <!-- Loaded before other Sphinx assets -->
+ <link href="_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
+<link href="_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
+
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" />
+ <link rel="stylesheet" type="text/css" href="_static/styles/sphinx-book-theme.css?v=4418a689" />
+
+ <!-- So that users can add custom icons -->
+ <script defer src="_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
+<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
+
+ <script src="_static/documentation_options.js?v=9eb32ce0"></script>
+ <script src="_static/doctools.js?v=fd6eb6e6"></script>
+ <script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
+ <script src="_static/scripts/sphinx-book-theme.js?v=fab101a9"></script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'genindex';</script>
+ <script>DOCUMENTATION_OPTIONS.search_as_you_type = false;</script>
+ <link rel="index" title="Index" href="#" />
+ <link rel="search" title="Search" href="search.html" />
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="docsearch:language" content="en"/>
+ <meta name="docsearch:version" content="" />
+
+
+ <script src="_static/searchtools.js"></script>
+ <script src="_static/language_data.js"></script>
+ <script src="searchindex.js"></script>
+
+ </head>
+ <body data-default-mode="">
+
+
+ <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div>
+
+
+ <div id="pst-scroll-pixel-helper"></div>
+
+ <button type="button" class="btn rounded-pill" id="pst-back-to-top">
+ <i class="fa-solid fa-arrow-up"></i>Back to top</button>
+
+
+
+
+ <dialog id="pst-search-dialog">
+
+<form class="bd-search d-flex align-items-center"
+ action="search.html"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ placeholder="Search..."
+ aria-label="Search..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form>
+ </dialog>
+
+ <div class="pst-async-banner-revealer d-none">
+ <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside>
+</div>
+
+
+ <header id="pst-header" class="bd-header navbar navbar-expand-lg bd-navbar d-print-none">
+<div class="bd-header__inner bd-page-width">
+ <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation">
+ <span class="fa-solid fa-bars"></span>
+ </button>
+
+
+ <div class="col-lg-9 navbar-header-items">
+
+
+ <div class="navbar-header-items__end">
+
+ <div class="navbar-item navbar-persistent--container">
+
+
+<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <span class="search-button__default-text">Search</span>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
+</button>
+ </div>
+
+
+ </div>
+
+ </div>
+
+
+ <div class="navbar-persistent--mobile">
+
+<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <span class="search-button__default-text">Search</span>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
+</button>
+ </div>
+
+
+
+</div>
+
+ </header>
+
+
+ <div class="bd-container">
+ <div class="bd-container__inner bd-page-width">
+
+
+
+
+
+ <dialog id="pst-primary-sidebar-modal"></dialog>
+ <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar">
+
+
+
+ <div class="sidebar-header-items sidebar-primary__section">
+
+
+
+
+ </div>
+
+ <div class="sidebar-primary-items__start sidebar-primary__section">
+ <div class="sidebar-primary-item">
+
+
+
+
+
+<a class="navbar-brand logo" href="index.html">
+
+
+
+
+
+
+ <p class="title logo__title">Apache TVM TIRx documentation</p>
+
+</a></div>
+ <div class="sidebar-primary-item">
+
+<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <span class="search-button__default-text">Search</span>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
+</button></div>
+ <div class="sidebar-primary-item"><nav class="bd-links bd-docs-nav" aria-label="Main">
+ <div class="bd-toc-item navbar-nav active">
+ <p aria-level="2" class="caption" role="heading"><span class="caption-text">Reference</span></p>
+<ul class="nav bd-sidenav">
+<li class="toctree-l1 has-children"><a class="reference internal" href="reference/python/index.html">Python API</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.ir.IRModule.html">tvm_tirx.ir.IRModule</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.ir.Expr.html">tvm_tirx.ir.Expr</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.ir.Stmt.html">tvm_tirx.ir.Stmt</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.Function.html">tvm_tirx.tirx.Function</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.Var.html">tvm_tirx.tirx.Var</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.TensorType.html">tvm_tirx.tirx.TensorType</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.decl_tensor.html">tvm_tirx.tirx.decl_tensor</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.IndexMap.html">tvm_tirx.tirx.IndexMap</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.Layout.html">tvm_tirx.tirx.Layout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.TileLayout.html">tvm_tirx.tirx.TileLayout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.compile.html">tvm_tirx.tirx.compile</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.target.Target.html">tvm_tirx.target.Target</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.runtime.Tensor.html">tvm_tirx.runtime.Tensor</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.runtime.Module.html">tvm_tirx.runtime.Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.codegen.Executable.html">tvm_tirx.codegen.Executable</a></li>
+</ul>
+</details></li>
+</ul>
+
+ </div>
+</nav></div>
+ </div>
+
+
+ <div class="sidebar-primary-items__end sidebar-primary__section">
+ <div class="sidebar-primary-item">
+<div id="ethical-ad-placement"
+ class="flat"
+ data-ea-publisher="readthedocs"
+ data-ea-type="readthedocs-sidebar"
+ data-ea-manual="true">
+</div></div>
+ </div>
+
+
+ </div>
+
+ <main id="main-content" class="bd-main" role="main">
+
+
+
+<div class="sbt-scroll-pixel-helper"></div>
+
+ <div class="bd-content">
+ <div class="bd-article-container">
+
+ <div class="bd-header-article d-print-none">
+<div class="header-article-items header-article__inner">
+
+ <div class="header-article-items__start">
+
+ <div class="header-article-item"><button class="sidebar-toggle primary-toggle btn btn-sm" title="Toggle primary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="fa-solid fa-bars"></span>
+</button></div>
+
+ </div>
+
+
+ <div class="header-article-items__end">
+
+ <div class="header-article-item">
+
+<div class="article-header-buttons">
+
+
+
+<button onclick="toggleFullScreen()"
+ class="btn btn-sm btn-fullscreen-button pst-navbar-icon"
+ title="Fullscreen mode"
+ data-bs-placement="bottom" data-bs-toggle="tooltip"
+>
+
+
+<span class="btn__icon-container">
+ <i class="fas fa-expand"></i>
+ </span>
+
+</button>
+
+
+
+<div class="theme-switch-container dropdown pst-js-only" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Color mode">
+ <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button dropdown-toggle" aria-label="Color mode" data-bs-toggle="dropdown">
+ <i class="theme-switch fa-solid fa-sun fa-lg fa-fw" data-mode="light" title="Light"></i>
+ <i class="theme-switch fa-solid fa-moon fa-lg fa-fw" data-mode="dark" title="Dark"></i>
+ <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg fa-fw" data-mode="auto" title="System Settings"></i>
+ </button>
+ <ul class="dropdown-menu dropdown-menu-end">
+ <li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg fa-fw me-1"></i>System Settings</button></li>
+ <li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="light"><i class="fa-solid fa-sun fa-lg fa-fw me-1"></i>Light</button></li>
+ <li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="dark"><i class="fa-solid fa-moon fa-lg fa-fw me-1"></i>Dark</button></li>
+ </ul>
+</div>
+
+
+<button class="btn btn-sm pst-navbar-icon search-button search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass fa-lg"></i>
+</button>
+
+</div></div>
+
+ </div>
+
+</div>
+</div>
+
+
+
+<div id="jb-print-docs-body" class="onlyprint">
+ <h1></h1>
+ <!-- Table of contents -->
+ <div id="print-main-content">
+ <div id="jb-print-toc">
+
+ </div>
+ </div>
+</div>
+
+
+
+<div id="searchbox"></div>
+ <article class="bd-article">
+
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ <a href="#_"><strong>_</strong></a>
+ | <a href="#C"><strong>C</strong></a>
+ | <a href="#D"><strong>D</strong></a>
+ | <a href="#E"><strong>E</strong></a>
+ | <a href="#F"><strong>F</strong></a>
+ | <a href="#I"><strong>I</strong></a>
+ | <a href="#L"><strong>L</strong></a>
+ | <a href="#M"><strong>M</strong></a>
+ | <a href="#S"><strong>S</strong></a>
+ | <a href="#T"><strong>T</strong></a>
+ | <a href="#V"><strong>V</strong></a>
+
+</div>
+<h2 id="_">_</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.codegen.Executable.html#tvm_tirx.codegen.Executable.__init__">__init__() (tvm_tirx.codegen.Executable method)</a>
+
+ <ul>
+ <li><a href="reference/python/generated/tvm_tirx.ir.Expr.html#tvm_tirx.ir.Expr.__init__">(tvm_tirx.ir.Expr method)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.ir.IRModule.html#tvm_tirx.ir.IRModule.__init__">(tvm_tirx.ir.IRModule method)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.ir.Stmt.html#tvm_tirx.ir.Stmt.__init__">(tvm_tirx.ir.Stmt method)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.runtime.Module.html#tvm_tirx.runtime.Module.__init__">(tvm_tirx.runtime.Module method)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.runtime.Tensor.html#tvm_tirx.runtime.Tensor.__init__">(tvm_tirx.runtime.Tensor method)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.target.Target.html#tvm_tirx.target.Target.__init__">(tvm_tirx.target.Target method)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.Function.html#tvm_tirx.tirx.Function.__init__">(tvm_tirx.tirx.Function method)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.IndexMap.html#tvm_tirx.tirx.IndexMap.__init__">(tvm_tirx.tirx.IndexMap method)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.Layout.html#tvm_tirx.tirx.Layout.__init__">(tvm_tirx.tirx.Layout method)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.TensorType.html#tvm_tirx.tirx.TensorType.__init__">(tvm_tirx.tirx.TensorType method)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.TileLayout.html#tvm_tirx.tirx.TileLayout.__init__">(tvm_tirx.tirx.TileLayout method)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.Var.html#tvm_tirx.tirx.Var.__init__">(tvm_tirx.tirx.Var method)</a>
+</li>
+ </ul></li>
+ </ul></td>
+</tr></table>
+
+<h2 id="C">C</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.compile.html#tvm_tirx.tirx.compile">compile() (in module tvm_tirx.tirx)</a>
+</li>
+ </ul></td>
+</tr></table>
+
+<h2 id="D">D</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.decl_tensor.html#tvm_tirx.tirx.decl_tensor">decl_tensor() (in module tvm_tirx.tirx)</a>
+</li>
+ </ul></td>
+</tr></table>
+
+<h2 id="E">E</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.codegen.Executable.html#tvm_tirx.codegen.Executable">Executable (class in tvm_tirx.codegen)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.ir.Expr.html#tvm_tirx.ir.Expr">Expr (class in tvm_tirx.ir)</a>
+</li>
+ </ul></td>
+</tr></table>
+
+<h2 id="F">F</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.Function.html#tvm_tirx.tirx.Function">Function (class in tvm_tirx.tirx)</a>
+</li>
+ </ul></td>
+</tr></table>
+
+<h2 id="I">I</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.IndexMap.html#tvm_tirx.tirx.IndexMap">IndexMap (class in tvm_tirx.tirx)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.ir.IRModule.html#tvm_tirx.ir.IRModule">IRModule (class in tvm_tirx.ir)</a>
+</li>
+ </ul></td>
+</tr></table>
+
+<h2 id="L">L</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.Layout.html#tvm_tirx.tirx.Layout">Layout (class in tvm_tirx.tirx)</a>
+</li>
+ </ul></td>
+</tr></table>
+
+<h2 id="M">M</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li>
+ module
+
+ <ul>
+ <li><a href="reference/python/index.html#module-tvm_tirx">tvm_tirx</a>
+</li>
+ </ul></li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.runtime.Module.html#tvm_tirx.runtime.Module">Module (class in tvm_tirx.runtime)</a>
+</li>
+ </ul></td>
+</tr></table>
+
+<h2 id="S">S</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.ir.Stmt.html#tvm_tirx.ir.Stmt">Stmt (class in tvm_tirx.ir)</a>
+</li>
+ </ul></td>
+</tr></table>
+
+<h2 id="T">T</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.target.Target.html#tvm_tirx.target.Target">Target (class in tvm_tirx.target)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.runtime.Tensor.html#tvm_tirx.runtime.Tensor">Tensor (class in tvm_tirx.runtime)</a>
+</li>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.TensorType.html#tvm_tirx.tirx.TensorType">TensorType (class in tvm_tirx.tirx)</a>
+</li>
+ </ul></td>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.TileLayout.html#tvm_tirx.tirx.TileLayout">TileLayout (class in tvm_tirx.tirx)</a>
+</li>
+ <li>
+ tvm_tirx
+
+ <ul>
+ <li><a href="reference/python/index.html#module-tvm_tirx">module</a>
+</li>
+ </ul></li>
+ </ul></td>
+</tr></table>
+
+<h2 id="V">V</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%; vertical-align: top;"><ul>
+ <li><a href="reference/python/generated/tvm_tirx.tirx.Var.html#tvm_tirx.tirx.Var">Var (class in tvm_tirx.tirx)</a>
+</li>
+ </ul></td>
+</tr></table>
+
+
+
+ </article>
+
+
+
+
+
+
+ <footer class="prev-next-footer d-print-none">
+
+<div class="prev-next-area">
+</div>
+ </footer>
+
+ </div>
+
+
+
+
+ </div>
+ <footer class="bd-footer-content">
+
+<div class="bd-footer-content__inner container">
+
+ <div class="footer-item">
+
+<p class="component-author">
+By Apache TVM Community
+</p>
+
+ </div>
+
+ <div class="footer-item">
+
+
+ </div>
+
+ <div class="footer-item">
+
+ </div>
+
+ <div class="footer-item">
+
+ </div>
+
+</div>
+ </footer>
+
+
+ </main>
+ </div>
+ </div>
+
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script defer src="_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
+<script defer src="_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
+
+ <footer class="bd-footer">
+ </footer>
+ </body>
+</html>
\ No newline at end of file
diff --git a/tirx/index.html b/tirx/index.html
new file mode 100644
index 00000000000..cf9ed7c4b0d
--- /dev/null
+++ b/tirx/index.html
@@ -0,0 +1,475 @@
+
+<!DOCTYPE html>
+
+
+<html lang="en" data-content_root="./" >
+
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
+
+ <title>Apache TVM TIRx Documentation — Apache TVM TIRx documentation</title>
+
+
+
+ <script data-cfasync="false">
+ document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
+ document.documentElement.dataset.theme = localStorage.getItem("theme") || "";
+ </script>
+ <!--
+ this give us a css class that will be invisible only if js is disabled
+ -->
+ <noscript>
+ <style>
+ .pst-js-only { display: none !important; }
+
+ </style>
+ </noscript>
+
+ <!-- Loaded before other Sphinx assets -->
+ <link href="_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
+<link href="_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
+
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" />
+ <link rel="stylesheet" type="text/css" href="_static/styles/sphinx-book-theme.css?v=4418a689" />
+
+ <!-- So that users can add custom icons -->
+ <script defer src="_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
+<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
+
+ <script src="_static/documentation_options.js?v=9eb32ce0"></script>
+ <script src="_static/doctools.js?v=fd6eb6e6"></script>
+ <script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
+ <script src="_static/scripts/sphinx-book-theme.js?v=fab101a9"></script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'index';</script>
+ <script>DOCUMENTATION_OPTIONS.search_as_you_type = false;</script>
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+ <link rel="next" title="Python API" href="reference/python/index.html" />
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="docsearch:language" content="en"/>
+ <meta name="docsearch:version" content="" />
+
+
+ <script src="_static/searchtools.js"></script>
+ <script src="_static/language_data.js"></script>
+ <script src="searchindex.js"></script>
+
+ </head>
+ <body data-default-mode="">
+
+
+ <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div>
+
+
+ <div id="pst-scroll-pixel-helper"></div>
+
+ <button type="button" class="btn rounded-pill" id="pst-back-to-top">
+ <i class="fa-solid fa-arrow-up"></i>Back to top</button>
+
+
+
+
+ <dialog id="pst-search-dialog">
+
+<form class="bd-search d-flex align-items-center"
+ action="search.html"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ placeholder="Search..."
+ aria-label="Search..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form>
+ </dialog>
+
+ <div class="pst-async-banner-revealer d-none">
+ <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside>
+</div>
+
+
+ <header id="pst-header" class="bd-header navbar navbar-expand-lg bd-navbar d-print-none">
+<div class="bd-header__inner bd-page-width">
+ <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation">
+ <span class="fa-solid fa-bars"></span>
+ </button>
+
+
+ <div class="col-lg-9 navbar-header-items">
+
+
+ <div class="navbar-header-items__end">
+
+ <div class="navbar-item navbar-persistent--container">
+
+
+<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <span class="search-button__default-text">Search</span>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
+</button>
+ </div>
+
+
+ </div>
+
+ </div>
+
+
+ <div class="navbar-persistent--mobile">
+
+<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <span class="search-button__default-text">Search</span>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
+</button>
+ </div>
+
+
+
+ <button class="pst-navbar-icon sidebar-toggle secondary-toggle" aria-label="On this page">
+ <span class="fa-solid fa-outdent"></span>
+ </button>
+
+</div>
+
+ </header>
+
+
+ <div class="bd-container">
+ <div class="bd-container__inner bd-page-width">
+
+
+
+
+
+ <dialog id="pst-primary-sidebar-modal"></dialog>
+ <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar">
+
+
+
+ <div class="sidebar-header-items sidebar-primary__section">
+
+
+
+
+ </div>
+
+ <div class="sidebar-primary-items__start sidebar-primary__section">
+ <div class="sidebar-primary-item">
+
+
+
+
+
+<a class="navbar-brand logo" href="#">
+
+
+
+
+
+
+ <p class="title logo__title">Apache TVM TIRx documentation</p>
+
+</a></div>
+ <div class="sidebar-primary-item">
+
+<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <span class="search-button__default-text">Search</span>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
+</button></div>
+ <div class="sidebar-primary-item"><nav class="bd-links bd-docs-nav" aria-label="Main">
+ <div class="bd-toc-item navbar-nav active">
+ <p aria-level="2" class="caption" role="heading"><span class="caption-text">Reference</span></p>
+<ul class="nav bd-sidenav">
+<li class="toctree-l1 has-children"><a class="reference internal" href="reference/python/index.html">Python API</a><details><summary><span class="toctree-toggle" role="presentation"><i class="fa-solid fa-chevron-down"></i></span></summary><ul>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.ir.IRModule.html">tvm_tirx.ir.IRModule</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.ir.Expr.html">tvm_tirx.ir.Expr</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.ir.Stmt.html">tvm_tirx.ir.Stmt</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.Function.html">tvm_tirx.tirx.Function</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.Var.html">tvm_tirx.tirx.Var</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.TensorType.html">tvm_tirx.tirx.TensorType</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.decl_tensor.html">tvm_tirx.tirx.decl_tensor</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.IndexMap.html">tvm_tirx.tirx.IndexMap</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.Layout.html">tvm_tirx.tirx.Layout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.TileLayout.html">tvm_tirx.tirx.TileLayout</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.tirx.compile.html">tvm_tirx.tirx.compile</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.target.Target.html">tvm_tirx.target.Target</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.runtime.Tensor.html">tvm_tirx.runtime.Tensor</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.runtime.Module.html">tvm_tirx.runtime.Module</a></li>
+<li class="toctree-l2"><a class="reference internal" href="reference/python/generated/tvm_tirx.codegen.Executable.html">tvm_tirx.codegen.Executable</a></li>
+</ul>
+</details></li>
+</ul>
+
+ </div>
+</nav></div>
+ </div>
+
+
+ <div class="sidebar-primary-items__end sidebar-primary__section">
+ <div class="sidebar-primary-item">
+<div id="ethical-ad-placement"
+ class="flat"
+ data-ea-publisher="readthedocs"
+ data-ea-type="readthedocs-sidebar"
+ data-ea-manual="true">
+</div></div>
+ </div>
+
+
+ </div>
+
+ <main id="main-content" class="bd-main" role="main">
+
+
+
+<div class="sbt-scroll-pixel-helper"></div>
+
+ <div class="bd-content">
+ <div class="bd-article-container">
+
+ <div class="bd-header-article d-print-none">
+<div class="header-article-items header-article__inner">
+
+ <div class="header-article-items__start">
+
+ <div class="header-article-item"><button class="sidebar-toggle primary-toggle btn btn-sm" title="Toggle primary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="fa-solid fa-bars"></span>
+</button></div>
+
+ </div>
+
+
+ <div class="header-article-items__end">
+
+ <div class="header-article-item">
+
+<div class="article-header-buttons">
+
+
+
+
+
+<div class="dropdown dropdown-download-buttons">
+ <button class="btn dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-label="Download this page">
+ <i class="fas fa-download"></i>
+ </button>
+ <ul class="dropdown-menu">
+
+
+
+ <li><a href="_sources/index.rst" target="_blank"
+ class="btn btn-sm btn-download-source-button dropdown-item"
+ title="Download source file"
+ data-bs-placement="left" data-bs-toggle="tooltip"
+>
+
+
+<span class="btn__icon-container">
+ <i class="fas fa-file"></i>
+ </span>
+<span class="btn__text-container">.rst</span>
+</a>
+</li>
+
+
+
+
+ <li>
+<button onclick="window.print()"
+ class="btn btn-sm btn-download-pdf-button dropdown-item"
+ title="Print to PDF"
+ data-bs-placement="left" data-bs-toggle="tooltip"
+>
+
+
+<span class="btn__icon-container">
+ <i class="fas fa-file-pdf"></i>
+ </span>
+<span class="btn__text-container">.pdf</span>
+</button>
+</li>
+
+ </ul>
+</div>
+
+
+
+
+<button onclick="toggleFullScreen()"
+ class="btn btn-sm btn-fullscreen-button pst-navbar-icon"
+ title="Fullscreen mode"
+ data-bs-placement="bottom" data-bs-toggle="tooltip"
+>
+
+
+<span class="btn__icon-container">
+ <i class="fas fa-expand"></i>
+ </span>
+
+</button>
+
+
+
+<div class="theme-switch-container dropdown pst-js-only" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Color mode">
+ <button class="btn btn-sm nav-link pst-navbar-icon theme-switch-button dropdown-toggle" aria-label="Color mode" data-bs-toggle="dropdown">
+ <i class="theme-switch fa-solid fa-sun fa-lg fa-fw" data-mode="light" title="Light"></i>
+ <i class="theme-switch fa-solid fa-moon fa-lg fa-fw" data-mode="dark" title="Dark"></i>
+ <i class="theme-switch fa-solid fa-circle-half-stroke fa-lg fa-fw" data-mode="auto" title="System Settings"></i>
+ </button>
+ <ul class="dropdown-menu dropdown-menu-end">
+ <li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg fa-fw me-1"></i>System Settings</button></li>
+ <li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="light"><i class="fa-solid fa-sun fa-lg fa-fw me-1"></i>Light</button></li>
+ <li><button class="dropdown-item d-flex align-items-center theme-change-button" data-mode="dark"><i class="fa-solid fa-moon fa-lg fa-fw me-1"></i>Dark</button></li>
+ </ul>
+</div>
+
+
+<button class="btn btn-sm pst-navbar-icon search-button search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass fa-lg"></i>
+</button>
+<button class="sidebar-toggle secondary-toggle btn btn-sm pst-navbar-icon" title="Toggle secondary sidebar" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <span class="fa-solid fa-list"></span>
+</button>
+</div></div>
+
+ </div>
+
+</div>
+</div>
+
+
+
+<div id="jb-print-docs-body" class="onlyprint">
+ <h1>Apache TVM TIRx Documentation</h1>
+ <!-- Table of contents -->
+ <div id="print-main-content">
+ <div id="jb-print-toc">
+
+ <div>
+ <h2> Contents </h2>
+ </div>
+ <nav aria-label="Page">
+ <ul class="pst-show_toc_level nav section-nav flex-column">
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#table-of-contents">Table of Contents</a></li>
+</ul>
+ </nav>
+ </div>
+ </div>
+</div>
+
+
+
+<div id="searchbox"></div>
+ <article class="bd-article">
+
+ <section id="apache-tvm-tirx-documentation">
+<h1>Apache TVM TIRx Documentation<a class="headerlink" href="#apache-tvm-tirx-documentation" title="Link to this heading">#</a></h1>
+<section id="table-of-contents">
+<h2>Table of Contents<a class="headerlink" href="#table-of-contents" title="Link to this heading">#</a></h2>
+<div class="toctree-wrapper compound">
+<p aria-level="2" class="caption" role="heading"><span class="caption-text">Reference</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="reference/python/index.html">Python API</a></li>
+</ul>
+</div>
+</section>
+</section>
+
+
+ </article>
+
+
+
+
+
+
+ <footer class="prev-next-footer d-print-none">
+
+<div class="prev-next-area">
+ <a class="right-next"
+ href="reference/python/index.html"
+ title="next page">
+ <div class="prev-next-info">
+ <p class="prev-next-subtitle">next</p>
+ <p class="prev-next-title">Python API</p>
+ </div>
+ <i class="fa-solid fa-angle-right"></i>
+ </a>
+</div>
+ </footer>
+
+ </div>
+
+
+
+ <dialog id="pst-secondary-sidebar-modal"></dialog>
+ <div id="pst-secondary-sidebar" class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
+
+
+ <div class="sidebar-secondary-item"><div
+ id="pst-page-navigation-heading-2"
+ class="page-toc tocsection onthispage">
+ <i class="fa-solid fa-list"></i> Contents
+ </div>
+ <nav id="pst-page-toc-nav" class="page-toc" aria-labelledby="pst-page-navigation-heading-2">
+ <ul class="pst-show_toc_level nav section-nav flex-column">
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#table-of-contents">Table of Contents</a></li>
+</ul>
+ </nav></div>
+
+</div></div>
+
+
+ </div>
+ <footer class="bd-footer-content">
+
+<div class="bd-footer-content__inner container">
+
+ <div class="footer-item">
+
+<p class="component-author">
+By Apache TVM Community
+</p>
+
+ </div>
+
+ <div class="footer-item">
+
+
+ </div>
+
+ <div class="footer-item">
+
+ </div>
+
+ <div class="footer-item">
+
+ </div>
+
+</div>
+ </footer>
+
+
+ </main>
+ </div>
+ </div>
+
+ <!-- Scripts loaded after <body> so the DOM is not blocked -->
+ <script defer src="_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9"></script>
+<script defer src="_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9"></script>
+
+ <footer class="bd-footer">
+ </footer>
+ </body>
+</html>
\ No newline at end of file
diff --git a/tirx/objects.inv b/tirx/objects.inv
new file mode 100644
index 00000000000..855a948820d
Binary files /dev/null and b/tirx/objects.inv differ
diff --git a/tirx/py-modindex.html b/tirx/py-modindex.html
new file mode 100644
index 00000000000..e6eaad21789
--- /dev/null
+++ b/tirx/py-modindex.html
@@ -0,0 +1,397 @@
+
+<!DOCTYPE html>
+
+
+<html lang="en" data-content_root="./" >
+
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Python Module Index — Apache TVM TIRx documentation</title>
+
+
+
+ <script data-cfasync="false">
+ document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
+ document.documentElement.dataset.theme = localStorage.getItem("theme") || "";
+ </script>
+ <!--
+ this give us a css class that will be invisible only if js is disabled
+ -->
+ <noscript>
+ <style>
+ .pst-js-only { display: none !important; }
+
+ </style>
+ </noscript>
+
+ <!-- Loaded before other Sphinx assets -->
+ <link href="_static/styles/theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
+<link href="_static/styles/pydata-sphinx-theme.css?digest=90905a2f556bf617f1a9" rel="stylesheet" />
+
+ <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=8f2a1f02" />
+ <link rel="stylesheet" type="text/css" href="_static/styles/sphinx-book-theme.css?v=4418a689" />
+
+ <!-- So that users can add custom icons -->
+ <script defer src="_static/scripts/fontawesome.js?digest=90905a2f556bf617f1a9"></script>
+ <!-- Pre-loaded scripts that we'll load fully later -->
+ <link rel="preload" as="script" href="_static/scripts/bootstrap.js?digest=90905a2f556bf617f1a9" />
+<link rel="preload" as="script" href="_static/scripts/pydata-sphinx-theme.js?digest=90905a2f556bf617f1a9" />
+
+ <script src="_static/documentation_options.js?v=9eb32ce0"></script>
+ <script src="_static/doctools.js?v=fd6eb6e6"></script>
+ <script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
+ <script src="_static/scripts/sphinx-book-theme.js?v=fab101a9"></script>
+ <script>DOCUMENTATION_OPTIONS.pagename = 'py-modindex';</script>
+ <script>DOCUMENTATION_OPTIONS.search_as_you_type = false;</script>
+ <link rel="index" title="Index" href="genindex.html" />
+ <link rel="search" title="Search" href="search.html" />
+
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
+ <meta name="docsearch:language" content="en"/>
+ <meta name="docsearch:version" content="" />
+
+
+ <script src="_static/searchtools.js"></script>
+ <script src="_static/language_data.js"></script>
+ <script src="searchindex.js"></script>
+
+
+ <script>
+ DOCUMENTATION_OPTIONS.COLLAPSE_INDEX = true;
+ </script>
+
+
+ </head>
+ <body data-default-mode="">
+
+
+ <div id="pst-skip-link" class="skip-link d-print-none"><a href="#main-content">Skip to main content</a></div>
+
+
+ <div id="pst-scroll-pixel-helper"></div>
+
+ <button type="button" class="btn rounded-pill" id="pst-back-to-top">
+ <i class="fa-solid fa-arrow-up"></i>Back to top</button>
+
+
+
+
+ <dialog id="pst-search-dialog">
+
+<form class="bd-search d-flex align-items-center"
+ action="search.html"
+ method="get">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <input type="search"
+ class="form-control"
+ name="q"
+ placeholder="Search..."
+ aria-label="Search..."
+ autocomplete="off"
+ autocorrect="off"
+ autocapitalize="off"
+ spellcheck="false"/>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
+</form>
+ </dialog>
+
+ <div class="pst-async-banner-revealer d-none">
+ <aside id="bd-header-version-warning" class="d-none d-print-none" aria-label="Version warning"></aside>
+</div>
+
+
+ <header id="pst-header" class="bd-header navbar navbar-expand-lg bd-navbar d-print-none">
+<div class="bd-header__inner bd-page-width">
+ <button class="pst-navbar-icon sidebar-toggle primary-toggle" aria-label="Site navigation">
+ <span class="fa-solid fa-bars"></span>
+ </button>
+
+
+ <div class="col-lg-9 navbar-header-items">
+
+
+ <div class="navbar-header-items__end">
+
+ <div class="navbar-item navbar-persistent--container">
+
+
+<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <span class="search-button__default-text">Search</span>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
+</button>
+ </div>
+
+
+ </div>
+
+ </div>
+
+
+ <div class="navbar-persistent--mobile">
+
+<button class="btn search-button-field search-button__button pst-js-only" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
+ <i class="fa-solid fa-magnifying-glass"></i>
+ <span class="search-button__default-text">Search</span>
+ <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
+</button>
+ </div>
+
+
+
+</div>
+
+ </header>
+
+
+ <div class="bd-container">
+ <div class="bd-container__inner bd-page-width">
+
+
+
+
+
+ <dialog id="pst-primary-sidebar-modal"></dialog>
+ <div id="pst-primary-sidebar" class="bd-sidebar-primary bd-sidebar">
+
+
+
+ <div class="sidebar-header-items sidebar-primary__section">
+
+
+
+
+ </div>
+
+ <div class="sidebar-primary-items__start sidebar-primary__section">
+ <div class="sidebar-primary-item">
+
+
+
+
+
+<a class="navbar-brand logo" href="index.html">
+
+
+
+
... 9580 lines suppressed ...