+
+
+ {{> header}}
+
+
+
+ {{#if search_enabled}}
+
+ {{/if}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{{ content }}}
+
+
+
+
+
+
+
+
+
+
+ {{#if live_reload_endpoint}}
+
+
+ {{/if}}
+
+ {{#if google_analytics}}
+
+
+ {{/if}}
+
+ {{#if playground_line_numbers}}
+
+ {{/if}}
+
+ {{#if playground_copyable}}
+
+ {{/if}}
+
+ {{#if playground_js}}
+
+
+
+
+
+ {{/if}}
+
+ {{#if search_js}}
+
+
+
+ {{/if}}
+
+
+
+
+
+
+ {{#each additional_js}}
+
+ {{/each}}
+
+ {{#if is_print}}
+ {{#if mathjax_support}}
+
+ {{else}}
+
+ {{/if}}
+ {{/if}}
+
+
+
diff --git a/documentation/operators/theme/pagetoc.css b/documentation/operators/theme/pagetoc.css
new file mode 100644
index 0000000000..a68e5b8e21
--- /dev/null
+++ b/documentation/operators/theme/pagetoc.css
@@ -0,0 +1,47 @@
+/* src: https://github.com/JorelAli/mdBook-pagetoc */
+
+@media only screen and (max-width:1439px) {
+ .sidetoc {
+ display: none;
+ }
+}
+
+@media only screen and (min-width:1440px) {
+ main {
+ position: relative;
+ }
+ .sidetoc {
+ margin-left: auto;
+ margin-right: auto;
+ /* left: calc(90% + (var(--content-min-width))/4 - 110px); */
+ left: 101%;
+ position: absolute;
+ font-size: var(--pagetoc-fontsize);
+ }
+ .pagetoc {
+ position: fixed;
+ width: var(--pagetoc-width);
+ }
+ .pagetoc a {
+ border-left: 1px solid var(--sidebar-bg);
+ /* color: var(--fg); */
+ /* color: var(--sidebar-fg); */
+ color: var(--links);
+ display: block;
+ padding-bottom: 5px;
+ padding-top: 5px;
+ padding-left: 10px;
+ text-align: left;
+ text-decoration: none;
+ font-weight: normal;
+ background: var(--sidebar-bg);
+ }
+ .pagetoc a:hover,
+ .pagetoc a.active {
+ background: var(--sidebar-bg);
+ /* color: var(--sidebar-fg); */
+ color: var(--sidebar-active);
+ font-weight: bold;
+ font-size: var(--pagetoc-fontsize);
+ }
+}
diff --git a/documentation/operators/theme/pagetoc.js b/documentation/operators/theme/pagetoc.js
new file mode 100644
index 0000000000..b11052427e
--- /dev/null
+++ b/documentation/operators/theme/pagetoc.js
@@ -0,0 +1,68 @@
+// src: https://github.com/JorelAli/mdBook-pagetoc
+
+// Un-active everything when you click it
+Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function(el, i) {
+ el.addEventHandler("click", function() {
+ Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function(el, i) {
+ el.classList.remove("active");
+ });
+ el.classList.add("active");
+ });
+});
+
+var updateFunction = function() {
+
+ var id;
+ var elements = document.getElementsByClassName("header");
+ Array.prototype.forEach.call(elements, function(el, i) {
+ if (window.pageYOffset >= el.offsetTop) {
+ id = el;
+ }
+ });
+
+ Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function(el, i) {
+ el.classList.remove("active");
+ });
+
+ Array.prototype.forEach.call(document.getElementsByClassName("pagetoc")[0].children, function(el, i) {
+ if (id.href.localeCompare(el.href) == 0) {
+ el.classList.add("active");
+ }
+ });
+};
+
+// Populate sidebar on load
+window.addEventListener('load', function() {
+ var pagetoc = document.getElementsByClassName("pagetoc")[0];
+ var elements = document.getElementsByClassName("header");
+ Array.prototype.forEach.call(elements, function(el, i) {
+ var link = document.createElement("a");
+
+ // Indent shows hierarchy
+ var indent = "";
+ switch (el.parentElement.tagName) {
+ case "H2":
+ indent = "20px";
+ break;
+ case "H3":
+ indent = "40px";
+ break;
+ case "H4":
+ indent = "60px";
+ break;
+ default:
+ break;
+ }
+
+ link.appendChild(document.createTextNode(el.text));
+ link.style.paddingLeft = indent;
+ link.href = el.href;
+ pagetoc.appendChild(link);
+ });
+ updateFunction.call();
+});
+
+
+
+// Handle active elements on scroll
+window.addEventListener("scroll", updateFunction);