/* ===================================================
 * bootstrap-transition.js v2.3.2
 * http://twitter.github.com/bootstrap/javascript.html#transitions
 * ===================================================
 * Copyright 2012 Twitter, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ========================================================== */
!function (e) {
    "use strict";
    e(function () {
        e.support.transition = function () {
            var e = function () {
                var e = document.createElement("bootstrap"),
                    t = {
                        WebkitTransition: "webkitTransitionEnd",
                        MozTransition: "transitionend",
                        OTransition: "oTransitionEnd otransitionend",
                        transition: "transitionend"
                    },
                    n;
                for (n in t) if (e.style[n] !== undefined) return t[n]
            }();
            return e && {
                end: e
            }
        }()
    })
}(window.jQuery);
!
function (e) {
    "use strict";
    var t = '[data-dismiss="alert"]',
		n = function (n) {
		    e(n).on("click", t, this.close)
		};
    n.prototype.close = function (t) {
        function s() {
            i.trigger("closed").remove()
        }
        var n = e(this),
			r = n.attr("data-target"),
			i;
        if (!r) {
            r = n.attr("href");
            r = r && r.replace(/.*(?=#[^\s]*$)/, "")
        }
        i = e(r);
        t && t.preventDefault();
        i.length || (i = n.hasClass("alert") ? n : n.parent());
        i.trigger(t = e.Event("close"));
        if (t.isDefaultPrevented()) return;
        i.removeClass("in");
        e.support.transition && i.hasClass("fade") ? i.on(e.support.transition.end, s) : s()
    };
    var r = e.fn.alert;
    e.fn.alert = function (t) {
        return this.each(function () {
            var r = e(this),
				i = r.data("alert");
            i || r.data("alert", i = new n(this));
            typeof t == "string" && i[t].call(r)
        })
    };
    e.fn.alert.Constructor = n;
    e.fn.alert.noConflict = function () {
        e.fn.alert = r;
        return this
    };
    e(document).on("click.alert.data-api", t, n.prototype.close)
}(window.jQuery);
!
function (e) {
    "use strict";
    var t = function (t, n) {
        this.$element = e(t);
        this.options = e.extend({}, e.fn.button.defaults, n)
    };
    t.prototype.setState = function (e) {
        var t = "disabled",
			n = this.$element,
			r = n.data(),
			i = n.is("input") ? "val" : "html";
        e += "Text";
        r.resetText || n.data("resetText", n[i]());
        n[i](r[e] || this.options[e]);
        setTimeout(function () {
            e == "loadingText" ? n.addClass(t).attr(t, t) : n.removeClass(t).removeAttr(t)
        }, 0)
    };
    t.prototype.toggle = function () {
        var e = this.$element.closest('[data-toggle="buttons-radio"]');
        e && e.find(".active").removeClass("active");
        this.$element.toggleClass("active")
    };
    var n = e.fn.button;
    e.fn.button = function (n) {
        return this.each(function () {
            var r = e(this),
				i = r.data("button"),
				s = typeof n == "object" && n;
            i || r.data("button", i = new t(this, s));
            n == "toggle" ? i.toggle() : n && i.setState(n)
        })
    };
    e.fn.button.defaults = {
        loadingText: "loading..."
    };
    e.fn.button.Constructor = t;
    e.fn.button.noConflict = function () {
        e.fn.button = n;
        return this
    };
    e(document).on("click.button.data-api", "[data-toggle^=button]", function (t) {
        var n = e(t.target);
        n.hasClass("btn") || (n = n.closest(".btn"));
        n.button("toggle")
    })
}(window.jQuery);
!
function (e) {
    "use strict";
    var t = function (t, n) {
        this.$element = e(t);
        this.$indicators = this.$element.find(".carousel-indicators");
        this.options = n;
        this.options.pause == "hover" && this.$element.on("mouseenter", e.proxy(this.pause, this)).on("mouseleave", e.proxy(this.cycle, this))
    };
    t.prototype = {
        cycle: function (t) {
            t || (this.paused = !1);
            this.interval && clearInterval(this.interval);
            this.options.interval && !this.paused && (this.interval = setInterval(e.proxy(this.next, this), this.options.interval));
            return this
        },
        getActiveIndex: function () {
            this.$active = this.$element.find(".item.active");
            this.$items = this.$active.parent().children();
            return this.$items.index(this.$active)
        },
        to: function (t) {
            var n = this.getActiveIndex(),
				r = this;
            if (t > this.$items.length - 1 || t < 0) return;
            return this.sliding ? this.$element.one("slid", function () {
                r.to(t)
            }) : n == t ? this.pause().cycle() : this.slide(t > n ? "next" : "prev", e(this.$items[t]))
        },
        pause: function (t) {
            t || (this.paused = !0);
            if (this.$element.find(".next, .prev").length && e.support.transition.end) {
                this.$element.trigger(e.support.transition.end);
                this.cycle(!0)
            }
            clearInterval(this.interval);
            this.interval = null;
            return this
        },
        next: function () {
            if (this.sliding) return;
            return this.slide("next")
        },
        prev: function () {
            if (this.sliding) return;
            return this.slide("prev")
        },
        slide: function (t, n) {
            var r = this.$element.find(".item.active"),
				i = n || r[t](),
				s = this.interval,
				o = t == "next" ? "left" : "right",
				u = t == "next" ? "first" : "last",
				a = this,
				f;
            this.sliding = !0;
            s && this.pause();
            i = i.length ? i : this.$element.find(".item")[u]();
            f = e.Event("slide", {
                relatedTarget: i[0],
                direction: o
            });
            if (i.hasClass("active")) return;
            if (this.$indicators.length) {
                this.$indicators.find(".active").removeClass("active");
                this.$element.one("slid", function () {
                    var t = e(a.$indicators.children()[a.getActiveIndex()]);
                    t && t.addClass("active")
                })
            }
            if (e.support.transition && this.$element.hasClass("slide")) {
                this.$element.trigger(f);
                if (f.isDefaultPrevented()) return;
                i.addClass(t);
                i[0].offsetWidth;
                r.addClass(o);
                i.addClass(o);
                this.$element.one(e.support.transition.end, function () {
                    i.removeClass([t, o].join(" ")).addClass("active");
                    r.removeClass(["active", o].join(" "));
                    a.sliding = !1;
                    setTimeout(function () {
                        a.$element.trigger("slid")
                    }, 0)
                })
            } else {
                this.$element.trigger(f);
                if (f.isDefaultPrevented()) return;
                r.removeClass("active");
                i.addClass("active");
                this.sliding = !1;
                this.$element.trigger("slid")
            }
            s && this.cycle();
            return this
        }
    };
    var n = e.fn.carousel;
    e.fn.carousel = function (n) {
        return this.each(function () {
            var r = e(this),
				i = r.data("carousel"),
				s = e.extend({}, e.fn.carousel.defaults, typeof n == "object" && n),
				o = typeof n == "string" ? n : s.slide;
            i || r.data("carousel", i = new t(this, s));
            typeof n == "number" ? i.to(n) : o ? i[o]() : s.interval && i.pause().cycle()
        })
    };
    e.fn.carousel.defaults = {
        interval: 5e3,
        pause: "hover"
    };
    e.fn.carousel.Constructor = t;
    e.fn.carousel.noConflict = function () {
        e.fn.carousel = n;
        return this
    };
    e(document).on("click.carousel.data-api", "[data-slide], [data-slide-to]", function (t) {
        var n = e(this),
			r, i = e(n.attr("data-target") || (r = n.attr("href")) && r.replace(/.*(?=#[^\s]+$)/, "")),
			s = e.extend({}, i.data(), n.data()),
			o;
        i.carousel(s);
        (o = n.attr("data-slide-to")) && i.data("carousel").pause().to(o).cycle();
        t.preventDefault()
    })
}(window.jQuery);
!
function (e) {
    "use strict";
    var t = function (t, n) {
        this.$element = e(t);
        this.options = e.extend({}, e.fn.collapse.defaults, n);
        this.options.parent && (this.$parent = e(this.options.parent));
        this.options.toggle && this.toggle()
    };
    t.prototype = {
        constructor: t,
        dimension: function () {
            var e = this.$element.hasClass("width");
            return e ? "width" : "height"
        },
        show: function () {
            var t, n, r, i;
            if (this.transitioning || this.$element.hasClass("in")) return;
            t = this.dimension();
            n = e.camelCase(["scroll", t].join("-"));
            r = this.$parent && this.$parent.find("> .accordion-group > .in");
            if (r && r.length) {
                i = r.data("collapse");
                if (i && i.transitioning) return;
                r.collapse("hide");
                i || r.data("collapse", null)
            }
            this.$element[t](0);
            this.transition("addClass", e.Event("show"), "shown");
            e.support.transition && this.$element[t](this.$element[0][n])
        },
        hide: function () {
            var t;
            if (this.transitioning || !this.$element.hasClass("in")) return;
            t = this.dimension();
            this.reset(this.$element[t]());
            this.transition("removeClass", e.Event("hide"), "hidden");
            this.$element[t](0)
        },
        reset: function (e) {
            var t = this.dimension();
            this.$element.removeClass("collapse")[t](e || "auto")[0].offsetWidth;
            this.$element[e !== null ? "addClass" : "removeClass"]("collapse");
            return this
        },
        transition: function (t, n, r) {
            var i = this,
				s = function () {
				    n.type == "show" && i.reset();
				    i.transitioning = 0;
				    i.$element.trigger(r)
				};
            this.$element.trigger(n);
            if (n.isDefaultPrevented()) return;
            this.transitioning = 1;
            this.$element[t]("in");
            e.support.transition && this.$element.hasClass("collapse") ? this.$element.one(e.support.transition.end, s) : s()
        },
        toggle: function () {
            this[this.$element.hasClass("in") ? "hide" : "show"]()
        }
    };
    var n = e.fn.collapse;
    e.fn.collapse = function (n) {
        return this.each(function () {
            var r = e(this),
				i = r.data("collapse"),
				s = e.extend({}, e.fn.collapse.defaults, r.data(), typeof n == "object" && n);
            i || r.data("collapse", i = new t(this, s));
            typeof n == "string" && i[n]()
        })
    };
    e.fn.collapse.defaults = {
        toggle: !0
    };
    e.fn.collapse.Constructor = t;
    e.fn.collapse.noConflict = function () {
        e.fn.collapse = n;
        return this
    };
    e(document).on("click.collapse.data-api", "[data-toggle=collapse]", function (t) {
        var n = e(this),
			r, i = n.attr("data-target") || t.preventDefault() || (r = n.attr("href")) && r.replace(/.*(?=#[^\s]+$)/, ""),
			s = e(i).data("collapse") ? "toggle" : n.data();
        n[e(i).hasClass("in") ? "addClass" : "removeClass"]("collapsed");
        e(i).collapse(s)
    })
}(window.jQuery);
!
function (e) {
    "use strict";

    function r() {
        e(".dropdown-backdrop").remove();
        e(t).each(function () {
            i(e(this)).removeClass("open")
        })
    }
    function i(t) {
        var n = t.attr("data-target"),
			r;
        if (!n) {
            n = t.attr("href");
            n = n && /#/.test(n) && n.replace(/.*(?=#[^\s]*$)/, "")
        }
        r = n && e(n);
        if (!r || !r.length) r = t.parent();
        return r
    }
    var t = "[data-toggle=dropdown]",
		n = function (t) {
		    var n = e(t).on("click.dropdown.data-api", this.toggle);
		    e("html").on("click.dropdown.data-api", function () {
		        n.parent().removeClass("open")
		    })
		};
    n.prototype = {
        constructor: n,
        toggle: function (t) {
            var n = e(this),
				s, o;
            if (n.is(".disabled, :disabled")) return;
            s = i(n);
            o = s.hasClass("open");
            r();
            if (!o) {
                "ontouchstart" in document.documentElement && e('<div class="dropdown-backdrop"/>').insertBefore(e(this)).on("click", r);
                s.toggleClass("open")
            }
            n.focus();
            return !1
        },
        keydown: function (n) {
            var r, s, o, u, a, f;
            if (!/(38|40|27)/.test(n.keyCode)) return;
            r = e(this);
            n.preventDefault();
            n.stopPropagation();
            if (r.is(".disabled, :disabled")) return;
            u = i(r);
            a = u.hasClass("open");
            if (!a || a && n.keyCode == 27) {
                n.which == 27 && u.find(t).focus();
                return r.click()
            }
            s = e("[role=menu] li:not(.divider):visible a", u);
            if (!s.length) return;
            f = s.index(s.filter(":focus"));
            n.keyCode == 38 && f > 0 && f--;
            n.keyCode == 40 && f < s.length - 1 && f++; ~f || (f = 0);
            s.eq(f).focus()
        }
    };
    var s = e.fn.dropdown;
    e.fn.dropdown = function (t) {
        return this.each(function () {
            var r = e(this),
				i = r.data("dropdown");
            i || r.data("dropdown", i = new n(this));
            typeof t == "string" && i[t].call(r)
        })
    };
    e.fn.dropdown.Constructor = n;
    e.fn.dropdown.noConflict = function () {
        e.fn.dropdown = s;
        return this
    };
    e(document).on("click.dropdown.data-api", r).on("click.dropdown.data-api", ".dropdown form", function (e) {
        e.stopPropagation()
    }).on("click.dropdown.data-api", t, n.prototype.toggle).on("keydown.dropdown.data-api", t + ", [role=menu]", n.prototype.keydown)
}(window.jQuery);
!
function (e) {
    "use strict";
    var t = function (t, n) {
        this.options = n;
        this.$element = e(t).delegate('[data-dismiss="modal"]', "click.dismiss.modal", e.proxy(this.hide, this));
        this.options.remote && this.$element.find(".modal-body").load(this.options.remote)
    };
    t.prototype = {
        constructor: t,
        toggle: function () {
            return this[this.isShown ? "hide" : "show"]()
        },
        show: function () {
            var t = this,
				n = e.Event("show");
            this.$element.trigger(n);
            if (this.isShown || n.isDefaultPrevented()) return;
            this.isShown = !0;
            this.escape();
            this.backdrop(function () {
                var n = e.support.transition && t.$element.hasClass("fade");
                t.$element.parent().length || t.$element.appendTo(document.body);
                t.$element.show();
                n && t.$element[0].offsetWidth;
                t.$element.addClass("in").attr("aria-hidden", !1);
                t.enforceFocus();
                n ? t.$element.one(e.support.transition.end, function () {
                    t.$element.focus().trigger("shown")
                }) : t.$element.focus().trigger("shown")
            })
        },
        hide: function (t) {
            t && t.preventDefault();
            var n = this;
            t = e.Event("hide");
            this.$element.trigger(t);
            if (!this.isShown || t.isDefaultPrevented()) return;
            this.isShown = !1;
            this.escape();
            e(document).off("focusin.modal");
            this.$element.removeClass("in").attr("aria-hidden", !0);
            e.support.transition && this.$element.hasClass("fade") ? this.hideWithTransition() : this.hideModal()
        },
        enforceFocus: function () {
            var t = this;
            e(document).on("focusin.modal", function (e) {
                t.$element[0] !== e.target && !t.$element.has(e.target).length && t.$element.focus()
            })
        },
        escape: function () {
            var e = this;
            this.isShown && this.options.keyboard ? this.$element.on("keyup.dismiss.modal", function (t) {
                t.which == 27 && e.hide()
            }) : this.isShown || this.$element.off("keyup.dismiss.modal")
        },
        hideWithTransition: function () {
            var t = this,
				n = setTimeout(function () {
				    t.$element.off(e.support.transition.end);
				    t.hideModal()
				}, 500);
            this.$element.one(e.support.transition.end, function () {
                clearTimeout(n);
                t.hideModal()
            })
        },
        hideModal: function () {
            var e = this;
            this.$element.hide();
            this.backdrop(function () {
                e.removeBackdrop();
                e.$element.trigger("hidden")
            })
        },
        removeBackdrop: function () {
            this.$backdrop && this.$backdrop.remove();
            this.$backdrop = null
        },
        backdrop: function (t) {
            var n = this,
				r = this.$element.hasClass("fade") ? "fade" : "";
            if (this.isShown && this.options.backdrop) {
                var i = e.support.transition && r;
                this.$backdrop = e('<div class="modal-backdrop ' + r + '" />').appendTo(document.body);
                this.$backdrop.click(this.options.backdrop == "static" ? e.proxy(this.$element[0].focus, this.$element[0]) : e.proxy(this.hide, this));
                i && this.$backdrop[0].offsetWidth;
                this.$backdrop.addClass("in");
                if (!t) return;
                i ? this.$backdrop.one(e.support.transition.end, t) : t()
            } else if (!this.isShown && this.$backdrop) {
                this.$backdrop.removeClass("in");
                e.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one(e.support.transition.end, t) : t()
            } else t && t()
        }
    };
    var n = e.fn.modal;
    e.fn.modal = function (n) {
        return this.each(function () {
            var r = e(this),
				i = r.data("modal"),
				s = e.extend({}, e.fn.modal.defaults, r.data(), typeof n == "object" && n);
            i || r.data("modal", i = new t(this, s));
            typeof n == "string" ? i[n]() : s.show && i.show()
        })
    };
    e.fn.modal.defaults = {
        backdrop: !0,
        keyboard: !0,
        show: !0
    };
    e.fn.modal.Constructor = t;
    e.fn.modal.noConflict = function () {
        e.fn.modal = n;
        return this
    };
    e(document).on("click.modal.data-api", '[data-toggle="modal"]', function (t) {
        var n = e(this),
			r = n.attr("href"),
			i = e(n.attr("data-target") || r && r.replace(/.*(?=#[^\s]+$)/, "")),
			s = i.data("modal") ? "toggle" : e.extend({
			    remote: !/#/.test(r) && r
			}, i.data(), n.data());
        t.preventDefault();
        i.modal(s).one("hide", function () {
            n.focus()
        })
    })
}(window.jQuery);
!
function (e) {
    "use strict";
    var t = function (e, t) {
        this.init("tooltip", e, t)
    };
    t.prototype = {
        constructor: t,
        init: function (t, n, r) {
            var i, s, o, u, a;
            this.type = t;
            this.$element = e(n);
            this.options = this.getOptions(r);
            this.enabled = !0;
            o = this.options.trigger.split(" ");
            for (a = o.length; a--;) {
                u = o[a];
                if (u == "click") this.$element.on("click." + this.type, this.options.selector, e.proxy(this.toggle, this));
                else if (u != "manual") {
                    i = u == "hover" ? "mouseenter" : "focus";
                    s = u == "hover" ? "mouseleave" : "blur";
                    this.$element.on(i + "." + this.type, this.options.selector, e.proxy(this.enter, this));
                    this.$element.on(s + "." + this.type, this.options.selector, e.proxy(this.leave, this))
                }
            }
            this.options.selector ? this._options = e.extend({}, this.options, {
                trigger: "manual",
                selector: ""
            }) : this.fixTitle()
        },
        getOptions: function (t) {
            t = e.extend({}, e.fn[this.type].defaults, this.$element.data(), t);
            t.delay && typeof t.delay == "number" && (t.delay = {
                show: t.delay,
                hide: t.delay
            });
            return t
        },
        enter: function (t) {
            var n = e.fn[this.type].defaults,
				r = {},
				i;
            this._options && e.each(this._options, function (e, t) {
                n[e] != t && (r[e] = t)
            }, this);
            i = e(t.currentTarget)[this.type](r).data(this.type);
            if (!i.options.delay || !i.options.delay.show) return i.show();
            clearTimeout(this.timeout);
            i.hoverState = "in";
            this.timeout = setTimeout(function () {
                i.hoverState == "in" && i.show()
            }, i.options.delay.show)
        },
        leave: function (t) {
            var n = e(t.currentTarget)[this.type](this._options).data(this.type);
            this.timeout && clearTimeout(this.timeout);
            if (!n.options.delay || !n.options.delay.hide) return n.hide();
            n.hoverState = "out";
            this.timeout = setTimeout(function () {
                n.hoverState == "out" && n.hide()
            }, n.options.delay.hide)
        },
        show: function () {
            var t, n, r, i, s, o, u = e.Event("show");
            if (this.hasContent() && this.enabled) {
                this.$element.trigger(u);
                if (u.isDefaultPrevented()) return;
                t = this.tip();
                this.setContent();
                this.options.animation && t.addClass("fade");
                s = typeof this.options.placement == "function" ? this.options.placement.call(this, t[0], this.$element[0]) : this.options.placement;
                t.detach().css({
                    top: 0,
                    left: 0,
                    display: "block"
                });
                this.options.container ? t.appendTo(this.options.container) : t.insertAfter(this.$element);
                n = this.getPosition();
                r = t[0].offsetWidth;
                i = t[0].offsetHeight;
                switch (s) {
                    case "bottom":
                        o = {
                            top: n.top + n.height,
                            left: n.left + n.width / 2 - r / 2
                        };
                        break;
                    case "top":
                        o = {
                            top: n.top - i,
                            left: n.left + n.width / 2 - r / 2
                        };
                        break;
                    case "left":
                        o = {
                            top: n.top + n.height / 2 - i / 2,
                            left: n.left - r
                        };
                        break;
                    case "right":
                        o = {
                            top: n.top + n.height / 2 - i / 2,
                            left: n.left + n.width
                        }
                }
                this.applyPlacement(o, s);
                this.$element.trigger("shown")
            }
        },
        applyPlacement: function (e, t) {
            var n = this.tip(),
				r = n[0].offsetWidth,
				i = n[0].offsetHeight,
				s, o, u, a;
            n.offset(e).addClass(t).addClass("in");
            s = n[0].offsetWidth;
            o = n[0].offsetHeight;
            if (t == "top" && o != i) {
                e.top = e.top + i - o;
                a = !0
            }
            if (t == "bottom" || t == "top") {
                u = 0;
                if (e.left < 0) {
                    u = e.left * -2;
                    e.left = 0;
                    n.offset(e);
                    s = n[0].offsetWidth;
                    o = n[0].offsetHeight
                }
                this.replaceArrow(u - r + s, s, "left")
            } else this.replaceArrow(o - i, o, "top");
            a && n.offset(e)
        },
        replaceArrow: function (e, t, n) {
            this.arrow().css(n, e ? 50 * (1 - e / t) + "%" : "")
        },
        setContent: function () {
            var e = this.tip(),
				t = this.getTitle();
            e.find(".tooltip-inner")[this.options.html ? "html" : "text"](t);
            e.removeClass("fade in top bottom left right")
        },
        hide: function () {
            function i() {
                var t = setTimeout(function () {
                    n.off(e.support.transition.end).detach()
                }, 500);
                n.one(e.support.transition.end, function () {
                    clearTimeout(t);
                    n.detach()
                })
            }
            var t = this,
				n = this.tip(),
				r = e.Event("hide");
            this.$element.trigger(r);
            if (r.isDefaultPrevented()) return;
            n.removeClass("in");
            e.support.transition && this.$tip.hasClass("fade") ? i() : n.detach();
            this.$element.trigger("hidden");
            return this
        },
        fixTitle: function () {
            var e = this.$element;
            (e.attr("title") || typeof e.attr("data-original-title") != "string") && e.attr("data-original-title", e.attr("title") || "").attr("title", "")
        },
        hasContent: function () {
            return this.getTitle()
        },
        getPosition: function () {
            var t = this.$element[0];
            return e.extend({}, typeof t.getBoundingClientRect == "function" ? t.getBoundingClientRect() : {
                width: t.offsetWidth,
                height: t.offsetHeight
            }, this.$element.offset())
        },
        getTitle: function () {
            var e, t = this.$element,
				n = this.options;
            e = t.attr("data-original-title") || (typeof n.title == "function" ? n.title.call(t[0]) : n.title);
            return e
        },
        tip: function () {
            return this.$tip = this.$tip || e(this.options.template)
        },
        arrow: function () {
            return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
        },
        validate: function () {
            if (!this.$element[0].parentNode) {
                this.hide();
                this.$element = null;
                this.options = null
            }
        },
        enable: function () {
            this.enabled = !0
        },
        disable: function () {
            this.enabled = !1
        },
        toggleEnabled: function () {
            this.enabled = !this.enabled
        },
        toggle: function (t) {
            var n = t ? e(t.currentTarget)[this.type](this._options).data(this.type) : this;
            n.tip().hasClass("in") ? n.hide() : n.show()
        },
        destroy: function () {
            this.hide().$element.off("." + this.type).removeData(this.type)
        }
    };
    var n = e.fn.tooltip;
    e.fn.tooltip = function (n) {
        return this.each(function () {
            var r = e(this),
				i = r.data("tooltip"),
				s = typeof n == "object" && n;
            i || r.data("tooltip", i = new t(this, s));
            typeof n == "string" && i[n]()
        })
    };
    e.fn.tooltip.Constructor = t;
    e.fn.tooltip.defaults = {
        animation: !0,
        placement: "top",
        selector: !1,
        template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
        trigger: "hover focus",
        title: "",
        delay: 0,
        html: !1,
        container: !1
    };
    e.fn.tooltip.noConflict = function () {
        e.fn.tooltip = n;
        return this
    }
}(window.jQuery);
!
function (e) {
    "use strict";
    var t = function (e, t) {
        this.init("popover", e, t)
    };
    t.prototype = e.extend({}, e.fn.tooltip.Constructor.prototype, {
        constructor: t,
        setContent: function () {
            var e = this.tip(),
				t = this.getTitle(),
				n = this.getContent();
            e.find(".popover-title")[this.options.html ? "html" : "text"](t);
            e.find(".popover-content")[this.options.html ? "html" : "text"](n);
            e.removeClass("fade top bottom left right in")
        },
        hasContent: function () {
            return this.getTitle() || this.getContent()
        },
        getContent: function () {
            var e, t = this.$element,
				n = this.options;
            e = (typeof n.content == "function" ? n.content.call(t[0]) : n.content) || t.attr("data-content");
            return e
        },
        tip: function () {
            this.$tip || (this.$tip = e(this.options.template));
            return this.$tip
        },
        destroy: function () {
            this.hide().$element.off("." + this.type).removeData(this.type)
        }
    });
    var n = e.fn.popover;
    e.fn.popover = function (n) {
        return this.each(function () {
            var r = e(this),
				i = r.data("popover"),
				s = typeof n == "object" && n;
            i || r.data("popover", i = new t(this, s));
            typeof n == "string" && i[n]()
        })
    };
    e.fn.popover.Constructor = t;
    e.fn.popover.defaults = e.extend({}, e.fn.tooltip.defaults, {
        placement: "right",
        trigger: "click",
        content: "",
        template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
    });
    e.fn.popover.noConflict = function () {
        e.fn.popover = n;
        return this
    }
}(window.jQuery);
!
function (e) {
    "use strict";

    function t(t, n) {
        var r = e.proxy(this.process, this),
			i = e(t).is("body") ? e(window) : e(t),
			s;
        this.options = e.extend({}, e.fn.scrollspy.defaults, n);
        this.$scrollElement = i.on("scroll.scroll-spy.data-api", r);
        this.selector = (this.options.target || (s = e(t).attr("href")) && s.replace(/.*(?=#[^\s]+$)/, "") || "") + " .nav li > a";
        this.$body = e("body");
        this.refresh();
        this.process()
    }
    t.prototype = {
        constructor: t,
        refresh: function () {
            var t = this,
				n;
            this.offsets = e([]);
            this.targets = e([]);
            n = this.$body.find(this.selector).map(function () {
                var n = e(this),
					r = n.data("target") || n.attr("href"),
					i = /^#\w/.test(r) && e(r);
                return i && i.length && [
					[i.position().top + (!e.isWindow(t.$scrollElement.get(0)) && t.$scrollElement.scrollTop()), r]
                ] || null
            }).sort(function (e, t) {
                return e[0] - t[0]
            }).each(function () {
                t.offsets.push(this[0]);
                t.targets.push(this[1])
            })
        },
        process: function () {
            var e = this.$scrollElement.scrollTop() + this.options.offset,
				t = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight,
				n = t - this.$scrollElement.height(),
				r = this.offsets,
				i = this.targets,
				s = this.activeTarget,
				o;
            if (e >= n) return s != (o = i.last()[0]) && this.activate(o);
            for (o = r.length; o--;) s != i[o] && e >= r[o] && (!r[o + 1] || e <= r[o + 1]) && this.activate(i[o])
        },
        activate: function (t) {
            var n, r;
            this.activeTarget = t;
            e(this.selector).parent(".active").removeClass("active");
            r = this.selector + '[data-target="' + t + '"],' + this.selector + '[href="' + t + '"]';
            n = e(r).parent("li").addClass("active");
            n.parent(".dropdown-menu").length && (n = n.closest("li.dropdown").addClass("active"));
            n.trigger("activate")
        }
    };
    var n = e.fn.scrollspy;
    e.fn.scrollspy = function (n) {
        return this.each(function () {
            var r = e(this),
				i = r.data("scrollspy"),
				s = typeof n == "object" && n;
            i || r.data("scrollspy", i = new t(this, s));
            typeof n == "string" && i[n]()
        })
    };
    e.fn.scrollspy.Constructor = t;
    e.fn.scrollspy.defaults = {
        offset: 10
    };
    e.fn.scrollspy.noConflict = function () {
        e.fn.scrollspy = n;
        return this
    };
    e(window).on("load", function () {
        e('[data-spy="scroll"]').each(function () {
            var t = e(this);
            t.scrollspy(t.data())
        })
    })
}(window.jQuery);
!
function (e) {
    "use strict";
    var t = function (t) {
        this.element = e(t)
    };
    t.prototype = {
        constructor: t,
        show: function () {
            var t = this.element,
				n = t.closest("ul:not(.dropdown-menu)"),
				r = t.attr("data-target"),
				i, s, o;
            if (!r) {
                r = t.attr("href");
                r = r && r.replace(/.*(?=#[^\s]*$)/, "")
            }
            if (t.parent("li").hasClass("active")) return;
            i = n.find(".active:last a")[0];
            o = e.Event("show", {
                relatedTarget: i
            });
            t.trigger(o);
            if (o.isDefaultPrevented()) return;
            s = e(r);
            this.activate(t.parent("li"), n);
            this.activate(s, s.parent(), function () {
                t.trigger({
                    type: "shown",
                    relatedTarget: i
                })
            })
        },
        activate: function (t, n, r) {
            function o() {
                i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active");
                t.addClass("active");
                if (s) {
                    t[0].offsetWidth;
                    t.addClass("in")
                } else t.removeClass("fade");
                t.parent(".dropdown-menu") && t.closest("li.dropdown").addClass("active");
                r && r()
            }
            var i = n.find("> .active"),
				s = r && e.support.transition && i.hasClass("fade");
            s ? i.one(e.support.transition.end, o) : o();
            i.removeClass("in")
        }
    };
    var n = e.fn.tab;
    e.fn.tab = function (n) {
        return this.each(function () {
            var r = e(this),
				i = r.data("tab");
            i || r.data("tab", i = new t(this));
            typeof n == "string" && i[n]()
        })
    };
    e.fn.tab.Constructor = t;
    e.fn.tab.noConflict = function () {
        e.fn.tab = n;
        return this
    };
    e(document).on("click.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"]', function (t) {
        t.preventDefault();
        e(this).tab("show")
    })
}(window.jQuery);
!
function (e) {
    "use strict";
    var t = function (t, n) {
        this.$element = e(t);
        this.options = e.extend({}, e.fn.typeahead.defaults, n);
        this.matcher = this.options.matcher || this.matcher;
        this.sorter = this.options.sorter || this.sorter;
        this.highlighter = this.options.highlighter || this.highlighter;
        this.updater = this.options.updater || this.updater;
        this.source = this.options.source;
        this.$menu = e(this.options.menu);
        this.shown = !1;
        this.listen()
    };
    t.prototype = {
        constructor: t,
        select: function () {
            var e = this.$menu.find(".active").attr("data-value");
            this.$element.val(this.updater(e)).change();
            return this.hide()
        },
        updater: function (e) {
            return e
        },
        show: function () {
            var t = e.extend({}, this.$element.position(), {
                height: this.$element[0].offsetHeight
            });
            this.$menu.insertAfter(this.$element).css({
                top: t.top + t.height,
                left: t.left
            }).show();
            this.shown = !0;
            return this
        },
        hide: function () {
            this.$menu.hide();
            this.shown = !1;
            return this
        },
        lookup: function (t) {
            var n;
            this.query = this.$element.val();
            if (!this.query || this.query.length < this.options.minLength) return this.shown ? this.hide() : this;
            n = e.isFunction(this.source) ? this.source(this.query, e.proxy(this.process, this)) : this.source;
            return n ? this.process(n) : this
        },
        process: function (t) {
            var n = this;
            t = e.grep(t, function (e) {
                return n.matcher(e)
            });
            t = this.sorter(t);
            return t.length ? this.render(t.slice(0, this.options.items)).show() : this.shown ? this.hide() : this
        },
        matcher: function (e) {
            return ~e.toLowerCase().indexOf(this.query.toLowerCase())
        },
        sorter: function (e) {
            var t = [],
				n = [],
				r = [],
				i;
            while (i = e.shift()) i.toLowerCase().indexOf(this.query.toLowerCase()) ? ~i.indexOf(this.query) ? n.push(i) : r.push(i) : t.push(i);
            return t.concat(n, r)
        },
        highlighter: function (e) {
            var t = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
            return e.replace(new RegExp("(" + t + ")", "ig"), function (e, t) {
                return "<strong>" + t + "</strong>"
            })
        },
        render: function (t) {
            var n = this;
            t = e(t).map(function (t, r) {
                t = e(n.options.item).attr("data-value", r);
                t.find("a").html(n.highlighter(r));
                return t[0]
            });
            t.first().addClass("active");
            this.$menu.html(t);
            return this
        },
        next: function (t) {
            var n = this.$menu.find(".active").removeClass("active"),
				r = n.next();
            r.length || (r = e(this.$menu.find("li")[0]));
            r.addClass("active")
        },
        prev: function (e) {
            var t = this.$menu.find(".active").removeClass("active"),
				n = t.prev();
            n.length || (n = this.$menu.find("li").last());
            n.addClass("active")
        },
        listen: function () {
            this.$element.on("focus", e.proxy(this.focus, this)).on("blur", e.proxy(this.blur, this)).on("keypress", e.proxy(this.keypress, this)).on("keyup", e.proxy(this.keyup, this));
            this.eventSupported("keydown") && this.$element.on("keydown", e.proxy(this.keydown, this));
            this.$menu.on("click", e.proxy(this.click, this)).on("mouseenter", "li", e.proxy(this.mouseenter, this)).on("mouseleave", "li", e.proxy(this.mouseleave, this))
        },
        eventSupported: function (e) {
            var t = e in this.$element;
            if (!t) {
                this.$element.setAttribute(e, "return;");
                t = typeof this.$element[e] == "function"
            }
            return t
        },
        move: function (e) {
            if (!this.shown) return;
            switch (e.keyCode) {
                case 9:
                case 13:
                case 27:
                    e.preventDefault();
                    break;
                case 38:
                    e.preventDefault();
                    this.prev();
                    break;
                case 40:
                    e.preventDefault();
                    this.next()
            }
            e.stopPropagation()
        },
        keydown: function (t) {
            this.suppressKeyPressRepeat = ~e.inArray(t.keyCode, [40, 38, 9, 13, 27]);
            this.move(t)
        },
        keypress: function (e) {
            if (this.suppressKeyPressRepeat) return;
            this.move(e)
        },
        keyup: function (e) {
            switch (e.keyCode) {
                case 40:
                case 38:
                case 16:
                case 17:
                case 18:
                    break;
                case 9:
                case 13:
                    if (!this.shown) return;
                    this.select();
                    break;
                case 27:
                    if (!this.shown) return;
                    this.hide();
                    break;
                default:
                    this.lookup()
            }
            e.stopPropagation();
            e.preventDefault()
        },
        focus: function (e) {
            this.focused = !0
        },
        blur: function (e) {
            this.focused = !1;
            !this.mousedover && this.shown && this.hide()
        },
        click: function (e) {
            e.stopPropagation();
            e.preventDefault();
            this.select();
            this.$element.focus()
        },
        mouseenter: function (t) {
            this.mousedover = !0;
            this.$menu.find(".active").removeClass("active");
            e(t.currentTarget).addClass("active")
        },
        mouseleave: function (e) {
            this.mousedover = !1;
            !this.focused && this.shown && this.hide()
        }
    };
    var n = e.fn.typeahead;
    e.fn.typeahead = function (n) {
        return this.each(function () {
            var r = e(this),
				i = r.data("typeahead"),
				s = typeof n == "object" && n;
            i || r.data("typeahead", i = new t(this, s));
            typeof n == "string" && i[n]()
        })
    };
    e.fn.typeahead.defaults = {
        source: [],
        items: 8,
        menu: '<ul class="typeahead dropdown-menu"></ul>',
        item: '<li><a href="#"></a></li>',
        minLength: 1
    };
    e.fn.typeahead.Constructor = t;
    e.fn.typeahead.noConflict = function () {
        e.fn.typeahead = n;
        return this
    };
    e(document).on("focus.typeahead.data-api", '[data-provide="typeahead"]', function (t) {
        var n = e(this);
        if (n.data("typeahead")) return;
        n.typeahead(n.data())
    })
}(window.jQuery);
!
function (e) {
    "use strict";
    var t = function (t, n) {
        this.options = e.extend({}, e.fn.affix.defaults, n);
        this.$window = e(window).on("scroll.affix.data-api", e.proxy(this.checkPosition, this)).on("click.affix.data-api", e.proxy(function () {
            setTimeout(e.proxy(this.checkPosition, this), 1)
        }, this));
        this.$element = e(t);
        this.checkPosition()
    };
    t.prototype.checkPosition = function () {
        if (!this.$element.is(":visible")) return;
        var t = e(document).height(),
			n = this.$window.scrollTop(),
			r = this.$element.offset(),
			i = this.options.offset,
			s = i.bottom,
			o = i.top,
			u = "affix affix-top affix-bottom",
			a;
        typeof i != "object" && (s = o = i);
        typeof o == "function" && (o = i.top());
        typeof s == "function" && (s = i.bottom());
        a = this.unpin != null && n + this.unpin <= r.top ? !1 : s != null && r.top + this.$element.height() >= t - s ? "bottom" : o != null && n <= o ? "top" : !1;
        if (this.affixed === a) return;
        this.affixed = a;
        this.unpin = a == "bottom" ? r.top - n : null;
        this.$element.removeClass(u).addClass("affix" + (a ? "-" + a : ""))
    };
    var n = e.fn.affix;
    e.fn.affix = function (n) {
        return this.each(function () {
            var r = e(this),
				i = r.data("affix"),
				s = typeof n == "object" && n;
            i || r.data("affix", i = new t(this, s));
            typeof n == "string" && i[n]()
        })
    };
    e.fn.affix.Constructor = t;
    e.fn.affix.defaults = {
        offset: 0
    };
    e.fn.affix.noConflict = function () {
        e.fn.affix = n;
        return this
    };
    e(window).on("load", function () {
        e('[data-spy="affix"]').each(function () {
            var t = e(this),
				n = t.data();
            n.offset = n.offset || {};
            n.offsetBottom && (n.offset.bottom = n.offsetBottom);
            n.offsetTop && (n.offset.top = n.offsetTop);
            t.affix(n)
        })
    })
}(window.jQuery); 
(function (e, t, n) { var r = e(); e.fn.dropdownHover = function (n) { r = r.add(this.parent()); return this.each(function () { var s = e(this), o = s.parent(), u = { delay: 500, instantlyCloseOthers: !0 }, a = { delay: e(this).data("delay"), instantlyCloseOthers: e(this).data("close-others") }, f = e.extend(!0, {}, u, n, a), l; o.hover(function (e) { if (!o.hasClass("open") && !s.is(e.target)) return !0; if (i) { f.instantlyCloseOthers === !0 && r.removeClass("open"); t.clearTimeout(l); o.addClass("open") } }, function () { i && (l = t.setTimeout(function () { o.removeClass("open") }, f.delay)) }); s.hover(function () { if (i) { f.instantlyCloseOthers === !0 && r.removeClass("open"); t.clearTimeout(l); o.addClass("open") } }); o.find(".dropdown-submenu").each(function () { var n = e(this), r; n.hover(function () { if (i) { t.clearTimeout(r); n.children(".dropdown-menu").show(); n.siblings().children(".dropdown-menu").hide() } }, function () { var e = n.children(".dropdown-menu"); i ? r = t.setTimeout(function () { e.hide() }, f.delay) : e.hide() }) }) }) }; var i = !1, s = { hits: 0, x: null, y: null }; e(document).ready(function () { e('[data-hover="dropdown"]').dropdownHover(); e(document).mousemove(function (t) { s.hits++; if (s.hits > 20 || Math.abs(t.pageX - s.x) + Math.abs(t.pageY - s.y) < 4) { e(this).unbind(t); i = !0 } else { s.x = t.pageX; s.y = t.pageY } }) }); var o = ".dropdown-submenu:hover>.dropdown-menu{display:none}", u = document.createElement("style"); u.type = "text/css"; u.styleSheet ? u.styleSheet.cssText = o : u.appendChild(document.createTextNode(o)); e("head")[0].appendChild(u) })(jQuery, this);