//
// LESS - Leaner CSS v1.1.0
// http://lesscss.org
// 
// Copyright (c) 2010, Alexis Sellier
// Licensed under the Apache 2.0 License.
//
(function(a, b) {
    function v(a, b) {
        var c = "less-error-message:" + p(b),
            e = ["<ul>", '<li><label>[-1]</label><pre class="ctx">{0}</pre></li>', "<li><label>[0]</label><pre>{current}</pre></li>", '<li><label>[1]</label><pre class="ctx">{2}</pre></li>', "</ul>"].join("\n"),
            f = document.createElement("div"),
            g, h;
        f.id = c, f.className = "less-error-message", h = "<h3>" + (a.message || "There is an error in your .less file") + "</h3>" + '<p><a href="' + b + '">' + b + "</a> ", a.extract && (h += "on line " + a.line + ", column " + (a.column + 1) + ":</p>" + e.replace(/\[(-?\d)\]/g, function(b, c) {
            return parseInt(a.line) + parseInt(c) || ""
        }).replace(/\{(\d)\}/g, function(b, c) {
            return a.extract[parseInt(c)] || ""
        }).replace(/\{current\}/, a.extract[1].slice(0, a.column) + '<span class="error">' + a.extract[1].slice(a.column) + "</span>")), f.innerHTML = h, q([".less-error-message ul, .less-error-message li {", "list-style-type: none;", "margin-right: 15px;", "padding: 4px 0;", "margin: 0;", "}", ".less-error-message label {", "font-size: 12px;", "margin-right: 15px;", "padding: 4px 0;", "color: #cc7777;", "}", ".less-error-message pre {", "color: #ee4444;", "padding: 4px 0;", "margin: 0;", "display: inline-block;", "}", ".less-error-message pre.ctx {", "color: #dd4444;", "}", ".less-error-message h3 {", "font-size: 20px;", "font-weight: bold;", "padding: 15px 0 5px 0;", "margin: 0;", "}", ".less-error-message a {", "color: #10a", "}", ".less-error-message .error {", "color: red;", "font-weight: bold;", "padding-bottom: 2px;", "border-bottom: 1px dashed red;", "}"].join("\n"), {
            title: "error-message"
        }), f.style.cssText = ["font-family: Arial, sans-serif", "border: 1px solid #e00", "background-color: #eee", "border-radius: 5px", "-webkit-border-radius: 5px", "-moz-border-radius: 5px", "color: #e00", "padding: 15px", "margin-bottom: 15px"].join(";"), d.env == "development" && (g = setInterval(function() {
            document.body && (document.getElementById(c) ? document.body.replaceChild(f, document.getElementById(c)) : document.body.insertBefore(f, document.body.firstChild), clearInterval(g))
        }, 10))
    }
    function u(a) {
        d.env == "development" && typeof console != "undefined" && console.log("less: " + a)
    }
    function t(a) {
        return a && a.parentNode.removeChild(a)
    }
    function s() {
        if (a.XMLHttpRequest) return new XMLHttpRequest;
        try {
            return new ActiveXObject("MSXML2.XMLHTTP.3.0")
        } catch (b) {
            u("browser doesn't support AJAX.");
            return null
        }
    }
    function r(a, b, c, e) {
        function i(b, c, d) {
            b.status >= 200 && b.status < 300 ? c(b.responseText, b.getResponseHeader("Last-Modified")) : typeof d == "function" && d(b.status, a)
        }
        var f = s(),
            h = g ? !1 : d.async;
        typeof f.overrideMimeType == "function" && f.overrideMimeType("text/css"), f.open("GET", a, h), f.setRequestHeader("Accept", b || "text/x-less, text/css; q=0.9, */*; q=0.5"), f.send(null), g ? f.status === 0 ? c(f.responseText) : e(f.status, a) : h ? f.onreadystatechange = function() {
            f.readyState == 4 && i(f, c, e)
        } : i(f, c, e)
    }
    function q(a, b, c) {
        var d, e = b.href ? b.href.replace(/\?.*$/, "") : "",
            f = "less:" + (b.title || p(e));
        (d = document.getElementById(f)) === null && (d = document.createElement("style"), d.type = "text/css", d.media = b.media || "screen", d.id = f, document.getElementsByTagName("head")[0].appendChild(d));
        if (d.styleSheet) try {
            d.styleSheet.cssText = a
        } catch (g) {
            throw new Error("Couldn't reassign styleSheet.cssText.")
        } else(function(a) {
            d.childNodes.length > 0 ? d.firstChild.nodeValue !== a.nodeValue && d.replaceChild(a, d.firstChild) : d.appendChild(a)
        })(document.createTextNode(a));
        c && h && (u("saving " + e + " to cache."), h.setItem(e, a), h.setItem(e + ":timestamp", c))
    }
    function p(a) {
        return a.replace(/^[a-z]+:\/\/?[^\/]+/, "").replace(/^\//, "").replace(/\?.*$/, "").replace(/\.[^\.\/]+$/, "").replace(/[^\.\w-]+/g, "-").replace(/\./g, ":")
    }
    function o(b, c, e, f) {
        var g = a.location.href.replace(/[#?].*$/, ""),
            i = b.href.replace(/\?.*$/, ""),
            j = h && h.getItem(i),
            k = h && h.getItem(i + ":timestamp"),
            l = {
                css: j,
                timestamp: k
            };
        /^(https?|file):/.test(i) || (i = g.slice(0, g.lastIndexOf("/") + 1) + i), r(b.href, b.type, function(a, g) {
            if (!e && l && g && (new Date(g)).valueOf() === (new Date(l.timestamp)).valueOf()) q(l.css, b), c(null, b, {
                local: !0,
                remaining: f
            });
            else
            try {
                (new d.Parser({
                    optimization: d.optimization,
                    paths: [i.replace(/[\w\.-]+$/, "")],
                    mime: b.type
                })).parse(a, function(a, d) {
                    if (a) return v(a, i);
                    try {
                        c(d, b, {
                            local: !1,
                            lastModified: g,
                            remaining: f
                        }), t(document.getElementById("less-error-message:" + p(i)))
                    } catch (a) {
                        v(a, i)
                    }
                })
            } catch (h) {
                v(h, i)
            }
        }, function(a, b) {
            throw new Error("Couldn't load " + b + " (" + a + ")")
        })
    }
    function n(a, b) {
        for (var c = 0; c < d.sheets.length; c++) o(d.sheets[c], a, b, d.sheets.length - (c + 1))
    }
    function m() {
        var a = document.getElementsByTagName("style");
        for (var b = 0; b < a.length; b++) a[b].type.match(k) && (new d.Parser).parse(a[b].innerHTML || "", function(c, d) {
            a[b].type = "text/css", a[b].innerHTML = d.toCSS()
        })
    }
    function c(b) {
        return a.less[b.split("/")[1]]
    }
    Array.isArray || (Array.isArray = function(a) {
        return Object.prototype.toString.call(a) === "[object Array]" || a instanceof Array
    }), Array.prototype.forEach || (Array.prototype.forEach = function(a, b) {
        var c = this.length >>> 0;
        for (var d = 0; d < c; d++) d in this && a.call(b, this[d], d, this)
    }), Array.prototype.map || (Array.prototype.map = function(a) {
        var b = this.length >>> 0,
            c = Array(b),
            d = arguments[1];
        for (var e = 0; e < b; e++) e in this && (c[e] = a.call(d, this[e], e, this));
        return c
    }), Array.prototype.filter || (Array.prototype.filter = function(a) {
        var b = [],
            c = arguments[1];
        for (var d = 0; d < this.length; d++) a.call(c, this[d]) && b.push(this[d]);
        return b
    }), Array.prototype.reduce || (Array.prototype.reduce = function(a) {
        var b = this.length >>> 0,
            c = 0;
        if (b === 0 && arguments.length === 1) throw new TypeError;
        if (arguments.length >= 2) var d = arguments[1];
        else
        for (;;) {
            if (c in this) {
                d = this[c++];
                break
            }
            if (++c >= b) throw new TypeError
        }
        for (; c < b; c++) c in this && (d = a.call(null, d, this[c], c, this));
        return d
    }), Array.prototype.indexOf || (Array.prototype.indexOf = function(a) {
        var b = this.length,
            c = arguments[1] || 0;
        if (!b) return -1;
        if (c >= b) return -1;
        c < 0 && (c += b);
        for (; c < b; c++) {
            if (!Object.prototype.hasOwnProperty.call(this, c)) continue;
            if (a === this[c]) return c
        }
        return -1
    }), Object.keys || (Object.keys = function(a) {
        var b = [];
        for (var c in a) Object.prototype.hasOwnProperty.call(a, c) && b.push(c);
        return b
    }), String.prototype.trim || (String.prototype.trim = function() {
        return String(this).replace(/^\s\s*/, "").replace(/\s\s*$/, "")
    });
    var d, e;
    typeof a == "undefined" ? (d = exports, e = c("less/tree")) : (typeof a.less == "undefined" && (a.less = {}), d = a.less, e = a.less.tree = {}), d.Parser = function(a) {
        function t(a) {
            return typeof a == "string" ? b.charAt(c) === a : a.test(j[f]) ? !0 : !1
        }
        function s(a) {
            var d, e, g, h, i, m, n, o;
            if (a instanceof Function) return a.call(l.parsers);
            if (typeof a == "string") d = b.charAt(c) === a ? a : null, g = 1, r();
            else {
                r();
                if (d = a.exec(j[f])) g = d[0].length;
                else
                return null
            }
            if (d) {
                o = c += g, m = c + j[f].length - g;
                while (c < m) {
                    h = b.charCodeAt(c);
                    if (h !== 32 && h !== 10 && h !== 9) break;
                    c++
                }
                j[f] = j[f].slice(g + (c - o)), k = c, j[f].length === 0 && f < j.length - 1 && f++;
                return typeof d == "string" ? d : d.length === 1 ? d[0] : d
            }
        }
        function r() {
            c > k && (j[f] = j[f].slice(c - k), k = c)
        }
        function q() {
            j[f] = g, c = h, k = c
        }
        function p() {
            g = j[f], h = c, k = c
        }
        var b, c, f, g, h, i, j, k, l, m = this,
            n = function() {},
            o = this.imports = {
                paths: a && a.paths || [],
                queue: [],
                files: {},
                mime: a && a.mime,
                push: function(b, c) {
                    var e = this;
                    this.queue.push(b), d.Parser.importer(b, this.paths, function(a) {
                        e.queue.splice(e.queue.indexOf(b), 1), e.files[b] = a, c(a), e.queue.length === 0 && n()
                    }, a)
                }
            };
        this.env = a = a || {}, this.optimization = "optimization" in this.env ? this.env.optimization : 1, this.env.filename = this.env.filename || null;
        return l = {
            imports: o,
            parse: function(d, g) {
                var h, l, m, o, p, q, r = [],
                    t, u = null;
                c = f = k = i = 0, j = [], b = d.replace(/\r\n/g, "\n"), j = function(c) {
                    var d = 0,
                        e = /[^"'`\{\}\/\(\)]+/g,
                        f = /\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,
                        g = 0,
                        h, i = c[0],
                        j, k;
                    for (var l = 0, m, n; l < b.length; l++) {
                        e.lastIndex = l, (h = e.exec(b)) && h.index === l && (l += h[0].length, i.push(h[0])), m = b.charAt(l), f.lastIndex = l, !k && !j && m === "/" && (n = b.charAt(l + 1), (n === "/" || n === "*") && (h = f.exec(b)) && h.index === l && (l += h[0].length, i.push(h[0]), m = b.charAt(l)));
                        if (m === "{" && !k && !j) g++, i.push(m);
                        else if (m === "}" && !k && !j) g--, i.push(m), c[++d] = i = [];
                        else if (m === "(" && !k && !j) i.push(m), j = !0;
                        else if (m === ")" && !k && j) i.push(m), j = !1;
                        else {
                            if (m === '"' || m === "'" || m === "`") k ? k = k === m ? !1 : k : k = m;
                            i.push(m)
                        }
                    }
                    if (g > 0) throw {
                        type: "Syntax",
                        message: "Missing closing `}`",
                        filename: a.filename
                    };
                    return c.map(function(a) {
                        return a.join("")
                    })
                }([
                    []
                ]), h = new e.Ruleset([], s(this.parsers.primary)), h.root = !0, h.toCSS = function(c) {
                    var d, f, g;
                    return function(g, h) {
                        function n(a) {
                            return a ? (b.slice(0, a).match(/\n/g) || "").length : null
                        }
                        var i = [];
                        g = g || {}, typeof h == "object" && !Array.isArray(h) && (h = Object.keys(h).map(function(a) {
                            var b = h[a];
                            b instanceof e.Value || (b instanceof e.Expression || (b = new e.Expression([b])), b = new e.Value([b]));
                            return new e.Rule("@" + a, b, !1, 0)
                        }), i = [new e.Ruleset(null, h)]);
                        try {
                            var j = c.call(this, {
                                frames: i
                            }).toCSS([], {
                                compress: g.compress || !1
                            })
                        } catch (k) {
                            f = b.split("\n"), d = n(k.index);
                            for (var l = k.index, m = -1; l >= 0 && b.charAt(l) !== "\n"; l--) m++;
                            throw {
                                type: k.type,
                                message: k.message,
                                filename: a.filename,
                                index: k.index,
                                line: typeof d == "number" ? d + 1 : null,
                                callLine: k.call && n(k.call) + 1,
                                callExtract: f[n(k.call)],
                                stack: k.stack,
                                column: m,
                                extract: [f[d - 1], f[d], f[d + 1]]
                            }
                        }
                        return g.compress ? j.replace(/(\s)+/g, "$1") : j
                    }
                }(h.eval);
                if (c < b.length - 1) {
                    c = i, q = b.split("\n"), p = (b.slice(0, c).match(/\n/g) || "").length + 1;
                    for (var v = c, w = -1; v >= 0 && b.charAt(v) !== "\n"; v--) w++;
                    u = {
                        name: "ParseError",
                        message: "Syntax Error on line " + p,
                        index: c,
                        filename: a.filename,
                        line: p,
                        column: w,
                        extract: [q[p - 2], q[p - 1], q[p]]
                    }
                }
                this.imports.queue.length > 0 ? n = function() {
                    g(u, h)
                } : g(u, h)
            },
            parsers: {
                primary: function() {
                    var a, b = [];
                    while ((a = s(this.mixin.definition) || s(this.rule) || s(this.ruleset) || s(this.mixin.call) || s(this.comment) || s(this.directive)) || s(/^[\s\n]+/)) a && b.push(a);
                    return b
                },
                comment: function() {
                    var a;
                    if (b.charAt(c) === "/") {
                        if (b.charAt(c + 1) === "/") return new e.Comment(s(/^\/\/.*/), !0);
                        if (a = s(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/)) return new e.Comment(a)
                    }
                },
                entities: {
                    quoted: function() {
                        var a, d = c,
                            f;
                        b.charAt(d) === "~" && (d++, f = !0);
                        if (b.charAt(d) === '"' || b.charAt(d) === "'") {
                            f && s("~");
                            if (a = s(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/)) return new e.Quoted(a[0], a[1] || a[2], f)
                        }
                    },
                    keyword: function() {
                        var a;
                        if (a = s(/^[A-Za-z-]+/)) return new e.Keyword(a)
                    },
                    call: function() {
                        var a, b;
                        if ( !! (a = /^([\w-]+|%)\(/.exec(j[f]))) {
                            a = a[1].toLowerCase();
                            if (a === "url") return null;
                            c += a.length;
                            if (a === "alpha") return s(this.alpha);
                            s("("), b = s(this.entities.arguments);
                            if (!s(")")) return;
                            if (a) return new e.Call(a, b)
                        }
                    },
                    arguments: function() {
                        var a = [],
                            b;
                        while (b = s(this.expression)) {
                            a.push(b);
                            if (!s(",")) break
                        }
                        return a
                    },
                    literal: function() {
                        return s(this.entities.dimension) || s(this.entities.color) || s(this.entities.quoted)
                    },
                    url: function() {
                        var a;
                        if (b.charAt(c) === "u" && !! s(/^url\(/)) {
                            a = s(this.entities.quoted) || s(this.entities.variable) || s(this.entities.dataURI) || s(/^[-\w%@$\/.&=:;#+?~]+/) || "";
                            if (!s(")")) throw new Error("missing closing ) for url()");
                            return new e.URL(a.value || a.data || a instanceof e.Variable ? a : new e.Anonymous(a), o.paths)
                        }
                    },
                    dataURI: function() {
                        var a;
                        if (s(/^data:/)) {
                            a = {}, a.mime = s(/^[^\/]+\/[^,;)]+/) || "", a.charset = s(/^;\s*charset=[^,;)]+/) || "", a.base64 = s(/^;\s*base64/) || "", a.data = s(/^,\s*[^)]+/);
                            if (a.data) return a
                        }
                    },
                    variable: function() {
                        var a, d = c;
                        if (b.charAt(c) === "@" && (a = s(/^@@?[\w-]+/))) return new e.Variable(a, d)
                    },
                    color: function() {
                        var a;
                        if (b.charAt(c) === "#" && (a = s(/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})/))) return new e.Color(a[1])
                    },
                    dimension: function() {
                        var a, d = b.charCodeAt(c);
                        if (!(d > 57 || d < 45 || d === 47)) if (a = s(/^(-?\d*\.?\d+)(px|%|em|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn)?/)) return new e.Dimension(a[1], a[2])
                    },
                    javascript: function() {
                        var a, d = c,
                            f;
                        b.charAt(d) === "~" && (d++, f = !0);
                        if (b.charAt(d) === "`") {
                            f && s("~");
                            if (a = s(/^`([^`]*)`/)) return new e.JavaScript(a[1], c, f)
                        }
                    }
                },
                variable: function() {
                    var a;
                    if (b.charAt(c) === "@" && (a = s(/^(@[\w-]+)\s*:/))) return a[1]
                },
                shorthand: function() {
                    var a, b;
                    if ( !! t(/^[@\w.%-]+\/[@\w.-]+/) && (a = s(this.entity)) && s("/") && (b = s(this.entity))) return new e.Shorthand(a, b)
                },
                mixin: {
                    call: function() {
                        var a = [],
                            d, f, g, h = c,
                            i = b.charAt(c);
                        if (i === "." || i === "#") {
                            while (d = s(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)) a.push(new e.Element(f, d)), f = s(">");
                            s("(") && (g = s(this.entities.arguments)) && s(")");
                            if (a.length > 0 && (s(";") || t("}"))) return new e.mixin.Call(a, g, h)
                        }
                    },
                    definition: function() {
                        var a, d = [],
                            f, g, h, i;
                        if (!(b.charAt(c) !== "." && b.charAt(c) !== "#" || t(/^[^{]*(;|})/))) if (f = s(/^([#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+)\s*\(/)) {
                            a = f[1];
                            while (h = s(this.entities.variable) || s(this.entities.literal) || s(this.entities.keyword)) {
                                if (h instanceof e.Variable) if (s(":")) if (i = s(this.expression)) d.push({
                                    name: h.name,
                                    value: i
                                });
                                else
                                throw new Error("Expected value");
                                else d.push({
                                    name: h.name
                                });
                                else d.push({
                                    value: h
                                });
                                if (!s(",")) break
                            }
                            if (!s(")")) throw new Error("Expected )");
                            g = s(this.block);
                            if (g) return new e.mixin.Definition(a, d, g)
                        }
                    }
                },
                entity: function() {
                    return s(this.entities.literal) || s(this.entities.variable) || s(this.entities.url) || s(this.entities.call) || s(this.entities.keyword) || s(this.entities.javascript) || s(this.comment)
                },
                end: function() {
                    return s(";") || t("}")
                },
                alpha: function() {
                    var a;
                    if ( !! s(/^opacity=/i)) if (a = s(/^\d+/) || s(this.entities.variable)) {
                        if (!s(")")) throw new Error("missing closing ) for alpha()");
                        return new e.Alpha(a)
                    }
                },
                element: function() {
                    var a, b, c;
                    c = s(this.combinator), a = s(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/) || s("*") || s(this.attribute) || s(/^\([^)@]+\)/);
                    if (a) return new e.Element(c, a)
                },
                combinator: function() {
                    var a, d = b.charAt(c);
                    if (d === ">" || d === "&" || d === "+" || d === "~") {
                        c++;
                        while (b.charAt(c) === " ") c++;
                        return new e.Combinator(d)
                    }
                    if (d === ":" && b.charAt(c + 1) === ":") {
                        c += 2;
                        while (b.charAt(c) === " ") c++;
                        return new e.Combinator("::")
                    }
                    return b.charAt(c - 1) === " " ? new e.Combinator(" ") : new e.Combinator(null)
                },
                selector: function() {
                    var a, d, f = [],
                        g, h;
                    while (d = s(this.element)) {
                        g = b.charAt(c), f.push(d);
                        if (g === "{" || g === "}" || g === ";" || g === ",") break
                    }
                    if (f.length > 0) return new e.Selector(f)
                },
                tag: function() {
                    return s(/^[a-zA-Z][a-zA-Z-]*[0-9]?/) || s("*")
                },
                attribute: function() {
                    var a = "",
                        b, c, d;
                    if ( !! s("[")) {
                        if (b = s(/^[a-zA-Z-]+/) || s(this.entities.quoted))(d = s(/^[|~*$^]?=/)) && (c = s(this.entities.quoted) || s(/^[\w-]+/)) ? a = [b, d, c.toCSS ? c.toCSS() : c].join("") : a = b;
                        if (!s("]")) return;
                        if (a) return "[" + a + "]"
                    }
                },
                block: function() {
                    var a;
                    if (s("{") && (a = s(this.primary)) && s("}")) return a
                },
                ruleset: function() {
                    var a = [],
                        b, d, g;
                    p();
                    if (g = /^([.#: \w-]+)[\s\n]*\{/.exec(j[f])) c += g[0].length - 1, a = [new e.Selector([new e.Element(null, g[1])])];
                    else
                    while (b = s(this.selector)) {
                        a.push(b), s(this.comment);
                        if (!s(",")) break;
                        s(this.comment)
                    }
                    if (a.length > 0 && (d = s(this.block))) return new e.Ruleset(a, d);
                    i = c, q()
                },
                rule: function() {
                    var a, d, g = b.charAt(c),
                        k, l;
                    p();
                    if (g !== "." && g !== "#" && g !== "&") if (a = s(this.variable) || s(this.property)) {
                        a.charAt(0) != "@" && (l = /^([^@+\/'"*`(;{}-]*);/.exec(j[f])) ? (c += l[0].length - 1, d = new e.Anonymous(l[1])) : a === "font" ? d = s(this.font) : d = s(this.value), k = s(this.important);
                        if (d && s(this.end)) return new e.Rule(a, d, k, h);
                        i = c, q()
                    }
                },
                "import": function() {
                    var a;
                    if (s(/^@import\s+/) && (a = s(this.entities.quoted) || s(this.entities.url)) && s(";")) return new e.Import(a, o)
                },
                directive: function() {
                    var a, d, f, g;
                    if (b.charAt(c) === "@") {
                        if (d = s(this["import"])) return d;
                        if (a = s(/^@media|@page|@-[-a-z]+/)) {
                            g = (s(/^[^{]+/) || "").trim();
                            if (f = s(this.block)) return new e.Directive(a + " " + g, f)
                        } else if (a = s(/^@[-a-z]+/)) if (a === "@font-face") {
                            if (f = s(this.block)) return new e.Directive(a, f)
                        } else if ((d = s(this.entity)) && s(";")) return new e.Directive(a, d)
                    }
                },
                font: function() {
                    var a = [],
                        b = [],
                        c, d, f, g;
                    while (g = s(this.shorthand) || s(this.entity)) b.push(g);
                    a.push(new e.Expression(b));
                    if (s(",")) while (g = s(this.expression)) {
                        a.push(g);
                        if (!s(",")) break
                    }
                    return new e.Value(a)
                },
                value: function() {
                    var a, b = [],
                        c;
                    while (a = s(this.expression)) {
                        b.push(a);
                        if (!s(",")) break
                    }
                    if (b.length > 0) return new e.Value(b)
                },
                important: function() {
                    if (b.charAt(c) === "!") return s(/^! *important/)
                },
                sub: function() {
                    var a;
                    if (s("(") && (a = s(this.expression)) && s(")")) return a
                },
                multiplication: function() {
                    var a, b, c, d;
                    if (a = s(this.operand)) {
                        while ((c = s("/") || s("*")) && (b = s(this.operand))) d = new e.Operation(c, [d || a, b]);
                        return d || a
                    }
                },
                addition: function() {
                    var a, d, f, g;
                    if (a = s(this.multiplication)) {
                        while ((f = s(/^[-+]\s+/) || b.charAt(c - 1) != " " && (s("+") || s("-"))) && (d = s(this.multiplication))) g = new e.Operation(f, [g || a, d]);
                        return g || a
                    }
                },
                operand: function() {
                    var a, d = b.charAt(c + 1);
                    b.charAt(c) === "-" && (d === "@" || d === "(") && (a = s("-"));
                    var f = s(this.sub) || s(this.entities.dimension) || s(this.entities.color) || s(this.entities.variable) || s(this.entities.call);
                    return a ? new e.Operation("*", [new e.Dimension(-1), f]) : f
                },
                expression: function() {
                    var a, b, c = [],
                        d;
                    while (a = s(this.addition) || s(this.entity)) c.push(a);
                    if (c.length > 0) return new e.Expression(c)
                },
                property: function() {
                    var a;
                    if (a = s(/^(\*?-?[-a-z_0-9]+)\s*:/)) return a[1]
                }
            }
        }
    }, typeof a != "undefined" && (d.Parser.importer = function(a, b, c, d) {
        a.charAt(0) !== "/" && b.length > 0 && (a = b[0] + a), o({
            href: a,
            title: a,
            type: d.mime
        }, c, !0)
    }), function(a) {
        function d(a) {
            return Math.min(1, Math.max(0, a))
        }
        function c(b) {
            if (b instanceof a.Dimension) return parseFloat(b.unit == "%" ? b.value / 100 : b.value);
            if (typeof b == "number") return b;
            throw {
                error: "RuntimeError",
                message: "color functions take numbers as parameters"
            }
        }
        function b(b) {
            return a.functions.hsla(b.h, b.s, b.l, b.a)
        }
        a.functions = {
            rgb: function(a, b, c) {
                return this.rgba(a, b, c, 1)
            },
            rgba: function(b, d, e, f) {
                var g = [b, d, e].map(function(a) {
                    return c(a)
                }),
                    f = c(f);
                return new a.Color(g, f)
            },
            hsl: function(a, b, c) {
                return this.hsla(a, b, c, 1)
            },
            hsla: function(a, b, d, e) {
                function h(a) {
                    a = a < 0 ? a + 1 : a > 1 ? a - 1 : a;
                    return a * 6 < 1 ? g + (f - g) * a * 6 : a * 2 < 1 ? f : a * 3 < 2 ? g + (f - g) * (2 / 3 - a) * 6 : g
                }
                a = c(a) % 360 / 360, b = c(b), d = c(d), e = c(e);
                var f = d <= .5 ? d * (b + 1) : d + b - d * b,
                    g = d * 2 - f;
                return this.rgba(h(a + 1 / 3) * 255, h(a) * 255, h(a - 1 / 3) * 255, e)
            },
            hue: function(b) {
                return new a.Dimension(Math.round(b.toHSL().h))
            },
            saturation: function(b) {
                return new a.Dimension(Math.round(b.toHSL().s * 100), "%")
            },
            lightness: function(b) {
                return new a.Dimension(Math.round(b.toHSL().l * 100), "%")
            },
            alpha: function(b) {
                return new a.Dimension(b.toHSL().a)
            },
            saturate: function(a, c) {
                var e = a.toHSL();
                e.s += c.value / 100, e.s = d(e.s);
                return b(e)
            },
            desaturate: function(a, c) {
                var e = a.toHSL();
                e.s -= c.value / 100, e.s = d(e.s);
                return b(e)
            },
            lighten: function(a, c) {
                var e = a.toHSL();
                e.l += c.value / 100, e.l = d(e.l);
                return b(e)
            },
            darken: function(a, c) {
                var e = a.toHSL();
                e.l -= c.value / 100, e.l = d(e.l);
                return b(e)
            },
            fadein: function(a, c) {
                var e = a.toHSL();
                e.a += c.value / 100, e.a = d(e.a);
                return b(e)
            },
            fadeout: function(a, c) {
                var e = a.toHSL();
                e.a -= c.value / 100, e.a = d(e.a);
                return b(e)
            },
            spin: function(a, c) {
                var d = a.toHSL(),
                    e = (d.h + c.value) % 360;
                d.h = e < 0 ? 360 + e : e;
                return b(d)
            },
            mix: function(b, c, d) {
                var e = d.value / 100,
                    f = e * 2 - 1,
                    g = b.toHSL().a - c.toHSL().a,
                    h = ((f * g == -1 ? f : (f + g) / (1 + f * g)) + 1) / 2,
                    i = 1 - h,
                    j = [b.rgb[0] * h + c.rgb[0] * i, b.rgb[1] * h + c.rgb[1] * i, b.rgb[2] * h + c.rgb[2] * i],
                    k = b.alpha * e + c.alpha * (1 - e);
                return new a.Color(j, k)
            },
            greyscale: function(b) {
                return this.desaturate(b, new a.Dimension(100))
            },
            e: function(b) {
                return new a.Anonymous(b instanceof a.JavaScript ? b.evaluated : b)
            },
            escape: function(b) {
                return new a.Anonymous(encodeURI(b.value).replace(/=/g, "%3D").replace(/:/g, "%3A").replace(/#/g, "%23").replace(/;/g, "%3B").replace(/\(/g, "%28").replace(/\)/g, "%29"))
            },
            "%": function(b) {
                var c = Array.prototype.slice.call(arguments, 1),
                    d = b.value;
                for (var e = 0; e < c.length; e++) d = d.replace(/%[sda]/i, function(a) {
                    var b = a.match(/s/i) ? c[e].value : c[e].toCSS();
                    return a.match(/[A-Z]$/) ? encodeURIComponent(b) : b
                });
                d = d.replace(/%%/g, "%");
                return new a.Quoted('"' + d + '"', d)
            },
            round: function(b) {
                if (b instanceof a.Dimension) return new a.Dimension(Math.round(c(b)), b.unit);
                if (typeof b == "number") return Math.round(b);
                throw {
                    error: "RuntimeError",
                    message: "math functions take numbers as parameters"
                }
            }
        }
    }(c("less/tree")), function(a) {
        a.Alpha = function(a) {
            this.value = a
        }, a.Alpha.prototype = {
            toCSS: function() {
                return "alpha(opacity=" + (this.value.toCSS ? this.value.toCSS() : this.value) + ")"
            },
            eval: function() {
                return this
            }
        }
    }(c("less/tree")), function(a) {
        a.Anonymous = function(a) {
            this.value = a.value || a
        }, a.Anonymous.prototype = {
            toCSS: function() {
                return this.value
            },
            eval: function() {
                return this
            }
        }
    }(c("less/tree")), function(a) {
        a.Call = function(a, b) {
            this.name = a, this.args = b
        }, a.Call.prototype = {
            eval: function(b) {
                var c = this.args.map(function(a) {
                    return a.eval(b)
                });
                return this.name in a.functions ? a.functions[this.name].apply(a.functions, c) : new a.Anonymous(this.name + "(" + c.map(function(a) {
                    return a.toCSS()
                }).join(", ") + ")")
            },
            toCSS: function(a) {
                return this.eval(a).toCSS()
            }
        }
    }(c("less/tree")), function(a) {
        a.Color = function(a, b) {
            Array.isArray(a) ? this.rgb = a : a.length == 6 ? this.rgb = a.match(/.{2}/g).map(function(a) {
                return parseInt(a, 16)
            }) : a.length == 8 ? (this.alpha = parseInt(a.substring(0, 2), 16) / 255, this.rgb = a.substr(2).match(/.{2}/g).map(function(a) {
                return parseInt(a, 16)
            })) : this.rgb = a.split("").map(function(a) {
                return parseInt(a + a, 16)
            }), this.alpha = typeof b == "number" ? b : 1
        }, a.Color.prototype = {
            eval: function() {
                return this
            },
            toCSS: function() {
                return this.alpha < 1 ? "rgba(" + this.rgb.map(function(a) {
                    return Math.round(a)
                }).concat(this.alpha).join(", ") + ")" : "#" + this.rgb.map(function(a) {
                    a = Math.round(a), a = (a > 255 ? 255 : a < 0 ? 0 : a).toString(16);
                    return a.length === 1 ? "0" + a : a
                }).join("")
            },
            operate: function(b, c) {
                var d = [];
                c instanceof a.Color || (c = c.toColor());
                for (var e = 0; e < 3; e++) d[e] = a.operate(b, this.rgb[e], c.rgb[e]);
                return new a.Color(d, this.alpha + c.alpha)
            },
            toHSL: function() {
                var a = this.rgb[0] / 255,
                    b = this.rgb[1] / 255,
                    c = this.rgb[2] / 255,
                    d = this.alpha,
                    e = Math.max(a, b, c),
                    f = Math.min(a, b, c),
                    g, h, i = (e + f) / 2,
                    j = e - f;
                if (e === f) g = h = 0;
                else {
                    h = i > .5 ? j / (2 - e - f) : j / (e + f);
                    switch (e) {
                    case a:
                        g = (b - c) / j + (b < c ? 6 : 0);
                        break;
                    case b:
                        g = (c - a) / j + 2;
                        break;
                    case c:
                        g = (a - b) / j + 4
                    }
                    g /= 6
                }
                return {
                    h: g * 360,
                    s: h,
                    l: i,
                    a: d
                }
            }
        }
    }(c("less/tree")), function(a) {
        a.Comment = function(a, b) {
            this.value = a, this.silent = !! b
        }, a.Comment.prototype = {
            toCSS: function(a) {
                return a.compress ? "" : this.value
            },
            eval: function() {
                return this
            }
        }
    }(c("less/tree")), function(a) {
        a.Dimension = function(a, b) {
            this.value = parseFloat(a), this.unit = b || null
        }, a.Dimension.prototype = {
            eval: function() {
                return this
            },
            toColor: function() {
                return new a.Color([this.value, this.value, this.value])
            },
            toCSS: function() {
                var a = this.value + this.unit;
                return a
            },
            operate: function(b, c) {
                return new a.Dimension(a.operate(b, this.value, c.value), this.unit || c.unit)
            }
        }
    }(c("less/tree")), function(a) {
        a.Directive = function(b, c) {
            this.name = b, Array.isArray(c) ? this.ruleset = new a.Ruleset([], c) : this.value = c
        }, a.Directive.prototype = {
            toCSS: function(a, b) {
                if (this.ruleset) {
                    this.ruleset.root = !0;
                    return this.name + (b.compress ? "{" : " {\n  ") + this.ruleset.toCSS(a, b).trim().replace(/\n/g, "\n  ") + (b.compress ? "}" : "\n}\n")
                }
                return this.name + " " + this.value.toCSS() + ";\n"
            },
            eval: function(a) {
                a.frames.unshift(this), this.ruleset = this.ruleset && this.ruleset.eval(a), a.frames.shift();
                return this
            },
            variable: function(b) {
                return a.Ruleset.prototype.variable.call(this.ruleset, b)
            },
            find: function() {
                return a.Ruleset.prototype.find.apply(this.ruleset, arguments)
            },
            rulesets: function() {
                return a.Ruleset.prototype.rulesets.apply(this.ruleset)
            }
        }
    }(c("less/tree")), function(a) {
        a.Element = function(b, c) {
            this.combinator = b instanceof a.Combinator ? b : new a.Combinator(b), this.value = c.trim()
        }, a.Element.prototype.toCSS = function(a) {
            return this.combinator.toCSS(a || {}) + this.value
        }, a.Combinator = function(a) {
            a === " " ? this.value = " " : this.value = a ? a.trim() : ""
        }, a.Combinator.prototype.toCSS = function(a) {
            return {
                "": "",
                " ": " ",
                "&": "",
                ":": " :",
                "::": "::",
                "+": a.compress ? "+" : " + ",
                "~": a.compress ? "~" : " ~ ",
                ">": a.compress ? ">" : " > "
            }[this.value]
        }
    }(c("less/tree")), function(a) {
        a.Expression = function(a) {
            this.value = a
        }, a.Expression.prototype = {
            eval: function(b) {
                return this.value.length > 1 ? new a.Expression(this.value.map(function(a) {
                    return a.eval(b)
                })) : this.value[0].eval(b)
            },
            toCSS: function(a) {
                return this.value.map(function(b) {
                    return b.toCSS(a)
                }).join(" ")
            }
        }
    }(c("less/tree")), function(a) {
        a.Import = function(b, c) {
            var d = this;
            this._path = b, b instanceof a.Quoted ? this.path = /\.(le?|c)ss$/.test(b.value) ? b.value : b.value + ".less" : this.path = b.value.value || b.value, this.css = /css$/.test(this.path), this.css || c.push(this.path, function(a) {
                if (!a) throw new Error("Error parsing " + d.path);
                d.root = a
            })
        }, a.Import.prototype = {
            toCSS: function() {
                return this.css ? "@import " + this._path.toCSS() + ";\n" : ""
            },
            eval: function(b) {
                var c;
                if (this.css) return this;
                c = new a.Ruleset(null, this.root.rules.slice(0));
                for (var d = 0; d < c.rules.length; d++) c.rules[d] instanceof a.Import && Array.prototype.splice.apply(c.rules, [d, 1].concat(c.rules[d].eval(b)));
                return c.rules
            }
        }
    }(c("less/tree")), function(a) {
        a.JavaScript = function(a, b, c) {
            this.escaped = c, this.expression = a, this.index = b
        }, a.JavaScript.prototype = {
            toCSS: function() {
                return this.escaped ? this.evaluated : JSON.stringify(this.evaluated)
            },
            eval: function(b) {
                var c, d = {},
                    e = this.expression.replace(/@\{([\w-]+)\}/g, function(c, d) {
                        return (new a.Variable("@" + d)).eval(b).value
                    });
                e = new Function("return (" + e + ")");
                for (var f in b.frames[0].variables()) d[f.slice(1)] = {
                    value: b.frames[0].variables()[f].value,
                    toJS: function() {
                        return this.value.eval(b).toCSS()
                    }
                };
                try {
                    this.evaluated = e.call(d)
                } catch (g) {
                    throw {
                        message: "JavaScript evaluation error: '" + g.name + ": " + g.message + "'",
                        index: this.index
                    }
                }
                return this
            }
        }
    }(c("less/tree")), function(a) {
        a.Keyword = function(a) {
            this.value = a
        }, a.Keyword.prototype = {
            eval: function() {
                return this
            },
            toCSS: function() {
                return this.value
            }
        }
    }(c("less/tree")), function(a) {
        a.mixin = {}, a.mixin.Call = function(b, c, d) {
            this.selector = new a.Selector(b), this.arguments = c, this.index = d
        }, a.mixin.Call.prototype = {
            eval: function(a) {
                var b, c = [],
                    d = !1;
                for (var e = 0; e < a.frames.length; e++) if ((b = a.frames[e].find(this.selector)).length > 0) {
                    for (var f = 0; f < b.length; f++) if (b[f].match(this.arguments, a)) try {
                        Array.prototype.push.apply(c, b[f].eval(a, this.arguments).rules), d = !0
                    } catch (g) {
                        throw {
                            message: g.message,
                            index: g.index,
                            stack: g.stack,
                            call: this.index
                        }
                    }
                    if (d) return c;
                    throw {
                        message: "No matching definition was found for `" + this.selector.toCSS().trim() + "(" + this.arguments.map(function(a) {
                            return a.toCSS()
                        }).join(", ") + ")`",
                        index: this.index
                    }
                }
                throw {
                    message: this.selector.toCSS().trim() + " is undefined",
                    index: this.index
                }
            }
        }, a.mixin.Definition = function(b, c, d) {
            this.name = b, this.selectors = [new a.Selector([new a.Element(null, b)])], this.params = c, this.arity = c.length, this.rules = d, this._lookups = {}, this.required = c.reduce(function(a, b) {
                return !b.name || b.name && !b.value ? a + 1 : a
            }, 0), this.parent = a.Ruleset.prototype, this.frames = []
        }, a.mixin.Definition.prototype = {
            toCSS: function() {
                return ""
            },
            variable: function(a) {
                return this.parent.variable.call(this, a)
            },
            variables: function() {
                return this.parent.variables.call(this)
            },
            find: function() {
                return this.parent.find.apply(this, arguments)
            },
            rulesets: function() {
                return this.parent.rulesets.apply(this)
            },
            eval: function(b, c) {
                var d = new a.Ruleset(null, []),
                    e, f = [];
                for (var g = 0, h; g < this.params.length; g++) if (this.params[g].name) if (h = c && c[g] || this.params[g].value) d.rules.unshift(new a.Rule(this.params[g].name, h.eval(b)));
                else
                throw {
                    message: "wrong number of arguments for " + this.name + " (" + c.length + " for " + this.arity + ")"
                };
                for (var g = 0; g < Math.max(this.params.length, c && c.length); g++) f.push(c[g] || this.params[g].value);
                d.rules.unshift(new a.Rule("@arguments", new a.Expression(f)));
                return (new a.Ruleset(null, this.rules.slice(0))).eval({
                    frames: [this, d].concat(this.frames, b.frames)
                })
            },
            match: function(a, b) {
                var c = a && a.length || 0,
                    d;
                if (c < this.required) return !1;
                if (this.required > 0 && c > this.params.length) return !1;
                d = Math.min(c, this.arity);
                for (var e = 0; e < d; e++) if (!this.params[e].name && a[e].eval(b).toCSS() != this.params[e].value.eval(b).toCSS()) return !1;
                return !0
            }
        }
    }(c("less/tree")), function(a) {
        a.Operation = function(a, b) {
            this.op = a.trim(), this.operands = b
        }, a.Operation.prototype.eval = function(b) {
            var c = this.operands[0].eval(b),
                d = this.operands[1].eval(b),
                e;
            if (c instanceof a.Dimension && d instanceof a.Color) if (this.op === "*" || this.op === "+") e = d, d = c, c = e;
            else
            throw {
                name: "OperationError",
                message: "Can't substract or divide a color from a number"
            };
            return c.operate(this.op, d)
        }, a.operate = function(a, b, c) {
            switch (a) {
            case "+":
                return b + c;
            case "-":
                return b - c;
            case "*":
                return b * c;
            case "/":
                return b / c
            }
        }
    }(c("less/tree")), function(a) {
        a.Quoted = function(a, b, c, d) {
            this.escaped = c, this.value = b || "", this.quote = a.charAt(0), this.index = d
        }, a.Quoted.prototype = {
            toCSS: function() {
                return this.escaped ? this.value : this.quote + this.value + this.quote
            },
            eval: function(b) {
                this.value = this.value.replace(/@\{([\w-]+)\}/g, function(c, d) {
                    return (new a.Variable("@" + d)).eval(b).value
                }).replace(/`([^`]+)`/g, function(c, d) {
                    return (new a.JavaScript(d, this.index, !0)).eval(b).toCSS()
                });
                return this
            }
        }
    }(c("less/tree")), function(a) {
        a.Rule = function(b, c, d, e) {
            this.name = b, this.value = c instanceof a.Value ? c : new a.Value([c]), this.important = d ? " " + d.trim() : "", this.index = e, b.charAt(0) === "@" ? this.variable = !0 : this.variable = !1
        }, a.Rule.prototype.toCSS = function(a) {
            return this.variable ? "" : this.name + (a.compress ? ":" : ": ") + this.value.toCSS(a) + this.important + ";"
        }, a.Rule.prototype.eval = function(b) {
            return new a.Rule(this.name, this.value.eval(b), this.important, this.index)
        }, a.Shorthand = function(a, b) {
            this.a = a, this.b = b
        }, a.Shorthand.prototype = {
            toCSS: function(a) {
                return this.a.toCSS(a) + "/" + this.b.toCSS(a)
            },
            eval: function() {
                return this
            }
        }
    }(c("less/tree")), function(a) {
        a.Ruleset = function(a, b) {
            this.selectors = a, this.rules = b, this._lookups = {}
        }, a.Ruleset.prototype = {
            eval: function(b) {
                var c = new a.Ruleset(this.selectors, this.rules.slice(0));
                c.root = this.root, b.frames.unshift(c);
                if (c.root) for (var d = 0; d < c.rules.length; d++) c.rules[d] instanceof a.Import && Array.prototype.splice.apply(c.rules, [d, 1].concat(c.rules[d].eval(b)));
                for (var d = 0; d < c.rules.length; d++) c.rules[d] instanceof a.mixin.Definition && (c.rules[d].frames = b.frames.slice(0));
                for (var d = 0; d < c.rules.length; d++) c.rules[d] instanceof a.mixin.Call && Array.prototype.splice.apply(c.rules, [d, 1].concat(c.rules[d].eval(b)));
                for (var d = 0, e; d < c.rules.length; d++) e = c.rules[d], e instanceof a.mixin.Definition || (c.rules[d] = e.eval ? e.eval(b) : e);
                b.frames.shift();
                return c
            },
            match: function(a) {
                return !a || a.length === 0
            },
            variables: function() {
                return this._variables ? this._variables : this._variables = this.rules.reduce(function(b, c) {
                    c instanceof a.Rule && c.variable === !0 && (b[c.name] = c);
                    return b
                }, {})
            },
            variable: function(a) {
                return this.variables()[a]
            },
            rulesets: function() {
                return this._rulesets ? this._rulesets : this._rulesets = this.rules.filter(function(b) {
                    return b instanceof a.Ruleset || b instanceof a.mixin.Definition
                })
            },
            find: function(b, c) {
                c = c || this;
                var d = [],
                    e, f, g = b.toCSS();
                if (g in this._lookups) return this._lookups[g];
                this.rulesets().forEach(function(e) {
                    if (e !== c) for (var g = 0; g < e.selectors.length; g++) if (f = b.match(e.selectors[g])) {
                        b.elements.length > 1 ? Array.prototype.push.apply(d, e.find(new a.Selector(b.elements.slice(1)), c)) : d.push(e);
                        break
                    }
                });
                return this._lookups[g] = d
            },
            toCSS: function(b, c) {
                var d = [],
                    e = [],
                    f = [],
                    g = [],
                    h, i;
                if (!this.root) if (b.length === 0) g = this.selectors.map(function(a) {
                    return [a]
                });
                else
                for (var j = 0; j < this.selectors.length; j++) for (var k = 0; k < b.length; k++) g.push(b[k].concat([this.selectors[j]]));
                for (var l = 0; l < this.rules.length; l++) i = this.rules[l], i.rules || i instanceof a.Directive ? f.push(i.toCSS(g, c)) : i instanceof a.Comment ? i.silent || (this.root ? f.push(i.toCSS(c)) : e.push(i.toCSS(c))) : i.toCSS && !i.variable ? e.push(i.toCSS(c)) : i.value && !i.variable && e.push(i.value.toString());
                f = f.join(""), this.root ? d.push(e.join(c.compress ? "" : "\n")) : e.length > 0 && (h = g.map(function(a) {
                    return a.map(function(a) {
                        return a.toCSS(c)
                    }).join("").trim()
                }).join(c.compress ? "," : g.length > 3 ? ",\n" : ", "), d.push(h, (c.compress ? "{" : " {\n  ") + e.join(c.compress ? "" : "\n  ") + (c.compress ? "}" : "\n}\n"))), d.push(f);
                return d.join("") + (c.compress ? "\n" : "")
            }
        }
    }(c("less/tree")), function(a) {
        a.Selector = function(a) {
            this.elements = a, this.elements[0].combinator.value === "" && (this.elements[0].combinator.value = " ")
        }, a.Selector.prototype.match = function(a) {
            return this.elements[0].value === a.elements[0].value ? !0 : !1
        }, a.Selector.prototype.toCSS = function(a) {
            if (this._css) return this._css;
            return this._css = this.elements.map(function(b) {
                return typeof b == "string" ? " " + b.trim() : b.toCSS(a)
            }).join("")
        }
    }(c("less/tree")), function(b) {
        b.URL = function(b, c) {
            b.data ? this.attrs = b : (!/^(?:https?:\/|file:\/|data:\/)?\//.test(b.value) && c.length > 0 && typeof a != "undefined" && (b.value = c[0] + (b.value.charAt(0) === "/" ? b.value.slice(1) : b.value)), this.value = b, this.paths = c)
        }, b.URL.prototype = {
            toCSS: function() {
                return "url(" + (this.attrs ? "data:" + this.attrs.mime + this.attrs.charset + this.attrs.base64 + this.attrs.data : this.value.toCSS()) + ")"
            },
            eval: function(a) {
                return this.attrs ? this : new b.URL(this.value.eval(a), this.paths)
            }
        }
    }(c("less/tree")), function(a) {
        a.Value = function(a) {
            this.value = a, this.is = "value"
        }, a.Value.prototype = {
            eval: function(b) {
                return this.value.length === 1 ? this.value[0].eval(b) : new a.Value(this.value.map(function(a) {
                    return a.eval(b)
                }))
            },
            toCSS: function(a) {
                return this.value.map(function(b) {
                    return b.toCSS(a)
                }).join(a.compress ? "," : ", ")
            }
        }
    }(c("less/tree")), function(a) {
        a.Variable = function(a, b) {
            this.name = a, this.index = b
        }, a.Variable.prototype = {
            eval: function(b) {
                var c, d, e = this.name;
                e.indexOf("@@") == 0 && (e = "@" + (new a.Variable(e.slice(1))).eval(b).value);
                if (c = a.find(b.frames, function(a) {
                    if (d = a.variable(e)) return d.value.eval(b)
                })) return c;
                throw {
                    message: "variable " + e + " is undefined",
                    index: this.index
                }
            }
        }
    }(c("less/tree")), c("less/tree").find = function(a, b) {
        for (var c = 0, d; c < a.length; c++) if (d = b.call(a, a[c])) return d;
        return null
    };
    var g = location.protocol === "file:" || location.protocol === "chrome:" || location.protocol === "resource:";
    d.env = d.env || (location.hostname == "127.0.0.1" || location.hostname == "0.0.0.0" || location.hostname == "localhost" || location.port.length > 0 || g ? "development" : "production"), d.async = !1, d.poll = d.poll || (g ? 1e3 : 1500), d.watch = function() {
        return this.watchMode = !0
    }, d.unwatch = function() {
        return this.watchMode = !1
    }, d.env === "development" ? (d.optimization = 0, /!watch/.test(location.hash) && d.watch(), d.watchTimer = setInterval(function() {
        d.watchMode && n(function(a, b, c) {
            a && q(a.toCSS(), b, c.lastModified)
        })
    }, d.poll)) : d.optimization = 3;
    var h;
    try {
        h = typeof a.localStorage == "undefined" ? null : a.localStorage
    } catch (i) {
        h = null
    }
    var j = document.getElementsByTagName("link"),
        k = /^text\/(x-)?less$/;
    d.sheets = [];
    for (var l = 0; l < j.length; l++)(j[l].rel === "stylesheet/less" || j[l].rel.match(/stylesheet/) && j[l].type.match(k)) && d.sheets.push(j[l]);
    d.refresh = function(a) {
        var b, c;
        b = c = new Date, n(function(a, d, e) {
            e.local ? u("loading " + d.href + " from cache.") : (u("parsed " + d.href + " successfully."), q(a.toCSS(), d, e.lastModified)), u("css for " + d.href + " generated in " + (new Date - c) + "ms"), e.remaining === 0 && u("css generated in " + (new Date - b) + "ms"), c = new Date
        }, a), m()
    }, d.refreshStyles = m, d.refresh(d.env === "development")
})(window)
