! function(e) {
    var t = 0,
        i = [],
        n = null,
        o = null,
        s = !1;
    e.fn.enhsplitter = function(r, a) {
        var l = this.data("splitter");
        if (l) {
            if ("string" == typeof r) {
                if (n = l, "move" === r) return n.setPosition(n.translatePosition(a)), n = null, this;
                if ("refresh" === r) return n.refresh() || n.setPosition(n.currentPosition), n = null, this;
                if ("reset" === r) return n.setPosition(n.translatePosition(n.settings.position)), n = null, this;
                if ("collapse" === r) return n.data("savedPosition", n.currentPosition), n.setPosition(0, !0), n = null, this;
                if ("uncollapse" === r) {
                    var c = n.data("savedPosition");
                    return n.setPosition(c || n.settings.position, !0), n.data("savedPosition", null), n = null, this
                }
                if ("visible" === r) {
                    n.settings.invisible = !a;
                    var p = n.children(".splitter_bar");
                    return n.settings.invisible ? (p.addClass("splitter-invisible"), n.splitterSize = 0, n.splitterSizeHalf = 0) : (p.removeClass("splitter-invisible"), n.splitterSize = p.outerWidth(), n.splitterSizeHalf = p.outerWidth() / 2), n.setPosition(n.currentPosition), n = null, this
                }
                return "handle" === r ? (p = n.children(".splitter_bar"), a || (a = "none"), e.each(p[0].classList, function(e, t) {
                    -1 !== t.indexOf("splitter-handle-") && p.removeClass(t)
                }), p.addClass("splitter-handle-" + a), n = null, this) : "remove" === r && (n.destroy(), n = null, !0)
            }
            return l
        }
        var u, d, f, h, g = e.extend({}, e.fn.enhsplitter.defaults, r),
            v = t++;
        d = e("#sidediv"), f = e("#topicdiv"), d.addClass("splitter_panel"), f.addClass("splitter_panel"), this.addClass("splitter_container");
        var m = this.width();
        void 0 !== g.minSize && (g.leftMinSize = g.rightMinSize = g.minSize), void 0 !== g.maxSize && (g.leftMaxSize = g.rightMaxSize = g.maxSize), g.leftMinSize = g.leftMinSize < 0 ? 0 : g.leftMinSize > m ? m : g.leftMinSize, g.leftMaxSize = g.leftMaxSize < 0 ? 0 : g.leftMaxSize > m ? m : g.leftMaxSize, g.rightMinSize = g.rightMinSize < 0 ? 0 : g.rightMinSize > m ? m : g.rightMinSize, g.rightMaxSize = g.rightMaxSize < 0 ? 0 : g.rightMaxSize > m ? m : g.rightMaxSize;
        var S = g.leftMinSize + g.rightMinSize;
        return S > m && (g.leftMinSize = m * (g.leftMinSize / S), g.rightMinSize = m * (g.rightMinSize / S)), g.collapseNormal = !("right" === g.collapse || "down" === g.collapse), g.collapsable = !("none" === g.collapse), g.collapsable || this.addClass("splitter-handle-disabled"), g.fixed && this.addClass("splitter-fixed"), h = e('<div class="splitter_bar splitter-handle-' + g.handle + '"/>').insertAfter(d), e('<div class="splitter_handle"/>').appendTo(h), g.invisible && h.addClass("splitter-invisible"), g.splitterSize && h.css("width", g.splitterSize), u = e.extend(this, {
            currentPosition: 0,
            containerSize: m,
            splitterSize: g.invisible ? 0 : h.outerWidth(),
            splitterSizeHalf: g.invisible ? 0 : h.outerWidth() / 2,
            refresh: function() {
                var e = u.width();
                return u.containerSize !== e && (u.containerSize = e, u.setPosition(u.currentPosition), !0)
            },
            setPosition: function(e, t) {
                var i;

                function n(e) {
                    u.currentPosition = e, d.outerWidth(e), f.outerWidth(u.containerSize - e - u.splitterSize);
                    var t = u.settings.invisible ? e - u.splitterSizeHalf : e;
                    h.css("left", t), f.css("left", t)
                }
                return e <= g.leftMinSize ? e = g.leftMinSize : e >= u.containerSize - g.rightMinSize - u.splitterSize && (e = u.containerSize - g.rightMinSize - u.splitterSize), null !== g.leftMaxSize && e >= g.leftMaxSize ? e = g.leftMaxSize : null !== g.rightMaxSize && e <= u.containerSize - g.rightMaxSize - u.splitterSize && (e = u.containerSize - g.rightMaxSize - u.splitterSize), t ? (i = e, f.animate({
                    left: i,
                    width: u.containerSize - i - u.splitterSize
                }, function() {
                    n(i)
                })) : n(e), u
            },
            translatePosition: function(e) {
                if ("number" == typeof e) return e;
                if ("string" == typeof e) {
                    var t = e.match(/^([0-9\.]+)(px|%)?$/);
                    if (t) return t[2] && "%" === t[2] ? (n || u).containerSize * +t[1] / 100 : +t[1];
                    throw "Invalid parameter: self.translatePosition(" + e + ') - bad string (only numbers allowed, with optional suffixes "px" or "%")'
                }
                throw "Invalid parameter: self.translatePosition(" + e + ") - bad type (only string/number allowed)"
            },
            destroy: function() {
                u.removeClass("splitter_container"), d.removeClass("splitter_panel").removeAttr("style"), f.removeClass("splitter_panel").removeAttr("style"), i.splice(v, 1), t--, h.remove();
                for (var n = !1, o = i.length; o--;)
                    if (null !== i[o]) {
                        n = !0;
                        break
                    } n || (e(document.documentElement).off(".splitter"), e(window).off(".splitter"), u.data("splitter", null), i = [], t = 0)
            }
        }), 0 === i.length && (e(window).on("resize.splitter", function() {
            e.each(i, function(e, t) {
                t.refresh()
            })
        }), e(document.documentElement).on("click.splitter", ".splitter_handle", function(t) {
            if (s) return s = !1;
            (n = e(this).closest(".splitter_container").data("splitter")).settings.collapsable && (n.data("savedPosition") ? (n.setPosition(n.data("savedPosition")), n.data("savedPosition", null)) : (n.data("savedPosition", n.currentPosition), n.settings.collapseNormal ? n.setPosition(n.settings.leftMinSize) : n.setPosition(n.containerSize - n.settings.rightMinSize)), n.find(".splitter_panel").trigger("resize.splitter"), t.preventDefault(), e(".splitter_mask").remove(), n.settings.onDrag(t, n)), n.removeClass("splitter-active"), n = null
        }).on("mousedown.splitter", ".splitter_handle", function(t) {
            t.preventDefault(), null === n && e(this).closest(".splitter_bar").trigger("mousedown"), null !== n && (o = t.pageX)
        }).on("mousedown.splitter touchstart.splitter", ".splitter_container > .splitter_bar", function(t) {
            t.preventDefault(), (n = e(this).closest(".splitter_container").data("splitter")).settings.fixed ? n = null : (n.addClass("splitter-active"), e('<div class="splitter_mask"></div>').css("cursor", n.children().eq(1).css("cursor")).insertAfter(n), n.settings.onDragStart(t, n))
        }).on("mouseup.splitter touchend.splitter touchleave.splitter touchcancel.splitter", ".splitter_mask, .splitter_container > .splitter_bar", function(t) {
            n && (t.preventDefault(), o = null, n.data("savedPosition") || (n.settings.collapseNormal ? n.currentPosition <= n.settings.leftMinSize + 5 && (n.data("savedPosition", u.translatePosition(n.settings.position)), s = !1) : n.currentPosition >= n.containerSize - n.settings.rightMinSize - n.splitterSize - 5 && (n.data("savedPosition", u.translatePosition(n.settings.position)), s = !1)), e(".splitter_mask").remove(), n.settings.onDragEnd(t, n), n.removeClass("splitter-active"), n = null)
        }).on("mousemove.splitter touchmove.splitter", ".splitter_mask, .splitter_bar", function(e) {
            if (null !== n) {
                n.data("savedPosition", null);
                var t = e.pageX;
                if (e.originalEvent && e.originalEvent.changedTouches && (t = e.originalEvent.changedTouches[0].pageX), null !== o) {
                    if (!(t > o + 5 || t < o - 5)) return e.preventDefault(), !1;
                    o = null, s = !0
                }
                n.setPosition(t - n.offset().left - n.splitterSize + 1), e.preventDefault(), n.settings.onDrag(e, n)
            }
        })), u.settings = g, u.setPosition(u.translatePosition(g.position)), u.data("splitter", u), i.push(u), u
    }, e.fn.enhsplitter.defaults = {
        position: "50%",
        leftMinSize: 100,
        leftMaxSize: null,
        rightMinSize: 100,
        rightMaxSize: null,
        invisible: !1,
        handle: "default",
        fixed: !1,
        collapse: "left",
        splitterSize: null,
        onDragStart: e.noop,
        onDragEnd: e.noop,
        onDrag: e.noop
    }
}(jQuery),
function() {
    var e, t, i, n, o, s, r, a, l, c, p, u, d, f, h, g, v, m, S, z;
    e = {
        "str-contents": "Contents",
        "str-terms": "Index",
        "str-search": "Search",
        "str-topic": "Topic",
        "str-searching": "Searching...",
        "str-loading": "loading",
        "str-previous": "Previous",
        "str-next": "Next",
        "str-home": "Home",
        "str-search-empty": "not found",
        "str-search-error": "search failed",
        "str-search-common-words": ""
    }, r = function(e, t) {
        var i;
        return (i = new RegExp("[?&]" + e + "=([^&#]*)").exec(window.location.href)) && i[1] || t || ""
    }, h = function() {
        var e;
        e = Array.prototype.slice.call(arguments), parent.frames[e.shift()].postMessage(e.join("[||]"), "*")
    }, t = function(e) {
        window.addEventListener("message", function(t) {
            var i;
            i = (t.data || t).split("[||]"), e(i.shift(), i || null)
        })
    }, l = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream, s = document.documentElement, !l && parent !== self && window.addEventListener("scroll", function() {
        var e;
        e = (window.pageYOffset || s.scrollTop) - (s.clientTop || 0), parent.window.postMessage(["scroll", window.name, e.toString()].join("[||]"), "*"), e
    }), o = void 0, a = !1, d = document.getElementById("topicwin"), i = {
        val: null,
        check: function() {
            var e;
            (e = window.getComputedStyle(document.querySelector("body"), ":before").getPropertyValue("content").replace(/\"/g, "")) !== this.val && this.changed(this.val = e)
        },
        changed: function(e) {
            return "big" === e ? (h("topicwin", "breakPoint", "big"), $("#hdr-nav").append($("#options")), $("#nav-toggle").addClass("open"), $("#topicdiv").hasClass("selected") && c("toc"), $("#containers").enhsplitter({
                position: 406,
                minSize: 0,
                invisible: !0,
                onDragStart: function(e, t) {
                    $(t).children(".splitter_bar").removeClass("splitter-invisible")
                },
                onDragEnd: function(e, t) {
                    $(t).children(".splitter_bar").addClass("splitter-invisible")
                }
            })) : (h("topicwin", "breakPoint", "small"), $("#topic-options").append($("#options")), $(".splitter_container").length && $("#containers").enhsplitter("remove"), c("topic"))
        }
    }, u = function(e, t, i) {
        if (o = e, !$("#topicdiv").is(":visible") && c("topic"), "function" == typeof window.history.replaceState) try {
            window.history.replaceState(null, e, e)
        } catch (e) {
            e
        }
        h("searchwin", "topicLoaded", e)
    }, p = function(e, t) {
        var i, n, o;
        o = r("t"), n = r("h"), d.src = o ? o + (n ? "#" + n : "") : e, null === document.getElementById("hdr-title") && ((i = $("<div>", {
            id: "hdr-title"
        })).html(t), $("#header").prepend(i))
    }, c = function(e, urlprefix) {
        var t, i;
        $(".selected").removeClass("selected"), $("#" + e + "tab, #" + e + "div").addClass("selected"), i = e + "win", "about:blank" === (t = document.getElementById(i)).src && "topic" !== e && (t.src = urlprefix + e + ".html"), h(i, "selected")
    }, f = function(e, t) {
        e && $("#prev").prop("title", e), t && $("#next").prop("title", t)
    }, n = function(e, t) {
        "small" !== i.val || e && !$("#" + e).is(":visible") || (!a && t >= 300 ? ($("html").addClass("shrink"), a = !0) : a && t < 50 && ($("html").removeClass("shrink"), a = !1))
    }, $(window).resize(function() {
        return i.check()
    }).resize(), setTimeout(function() {
        return i.check()
    }, 0), t(function(e, t) {
        switch (e) {
            case "loadTopic":
                d.src = t[0];
                break;
            case "topicLoaded":
                u(t[0], t[1]);
                break;
            case "tocLoaded":
                p(t[0], t[1]);
                break;
            case "scroll":
                n(t[0], parseInt(t[1]));
                break;
            case "getWidth":
                h("topicwin", i.val);
                break;
            case "updateNav":
                f(t[0], t[1])
        }
    }), l && ($("html").addClass("ios"), $(".iframe-holder").on("scroll", function() {
        n($(this).children(":first").attr("id"), this.scrollTop || 0)
    })), $(".tab").click(function(e) {
        return e.stopPropagation(), c($(this).attr("data-type"), $(this).attr("data-urlprefix"))
    }), $("#prev").click(function() {
        return h("tocwin", "gotoSibling", "previous")
    }), $("#next").click(function() {
        return h("tocwin", "gotoSibling", "next")
    }), $("#home").click(function() {
        return h("tocwin", "home")
    }), $("#print").click(function() {
        return window.open(o + "?p=yes", "_blank")
    }), $("#nav-toggle").click(function() {
        return $("#containers").enhsplitter($(this).hasClass("open") ? "collapse" : "uncollapse"), $(this).toggleClass("open"), $("#tabs").fadeToggle()
    })  
    }.call(this);
