/*
YUI 3.7.3 (build 5687)
Copyright 2012 Yahoo! Inc. All rights reserved.
Licensed under the BSD License.
http://yuilibrary.com/license/
*/
if (typeof _yuitest_coverage == "undefined"){
    _yuitest_coverage = {};
    _yuitest_coverline = function(src, line){
        var coverage = _yuitest_coverage[src];
        if (!coverage.lines[line]){
            coverage.calledLines++;
        }
        coverage.lines[line]++;
    };
    _yuitest_coverfunc = function(src, name, line){
        var coverage = _yuitest_coverage[src],
            funcId = name + ":" + line;
        if (!coverage.functions[funcId]){
            coverage.calledFunctions++;
        }
        coverage.functions[funcId]++;
    };
}
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"] = {
    lines: {},
    functions: {},
    coveredLines: 0,
    calledLines: 0,
    coveredFunctions: 0,
    calledFunctions: 0,
    path: "build/handlebars-compiler/handlebars-compiler.js",
    code: []
};
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"].code=["YUI.add('handlebars-compiler', function (Y, NAME) {","","/*!","Handlebars.js - Copyright (C) 2011 Yehuda Katz","https://raw.github.com/wycats/handlebars.js/master/LICENSE","*/","// This file contains code that will be inserted at the beginning of the","// handlebars-compiler module.","","// This is necessary because the Y.Handlebars object is created in the","// handlebars-base module, but the native Handlebars code expects to use a local","// Handlebars reference.","var Handlebars = Y.Handlebars;","/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */","","/* Jison generated parser */","var handlebars = (function(){","var parser = {trace: function trace() { },","yy: {},","symbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"statements\":6,\"simpleInverse\":7,\"statement\":8,\"openInverse\":9,\"closeBlock\":10,\"openBlock\":11,\"mustache\":12,\"partial\":13,\"CONTENT\":14,\"COMMENT\":15,\"OPEN_BLOCK\":16,\"inMustache\":17,\"CLOSE\":18,\"OPEN_INVERSE\":19,\"OPEN_ENDBLOCK\":20,\"path\":21,\"OPEN\":22,\"OPEN_UNESCAPED\":23,\"OPEN_PARTIAL\":24,\"params\":25,\"hash\":26,\"param\":27,\"STRING\":28,\"INTEGER\":29,\"BOOLEAN\":30,\"hashSegments\":31,\"hashSegment\":32,\"ID\":33,\"EQUALS\":34,\"pathSegments\":35,\"SEP\":36,\"$accept\":0,\"$end\":1},","terminals_: {2:\"error\",5:\"EOF\",14:\"CONTENT\",15:\"COMMENT\",16:\"OPEN_BLOCK\",18:\"CLOSE\",19:\"OPEN_INVERSE\",20:\"OPEN_ENDBLOCK\",22:\"OPEN\",23:\"OPEN_UNESCAPED\",24:\"OPEN_PARTIAL\",28:\"STRING\",29:\"INTEGER\",30:\"BOOLEAN\",33:\"ID\",34:\"EQUALS\",36:\"SEP\"},","productions_: [0,[3,2],[4,3],[4,1],[4,0],[6,1],[6,2],[8,3],[8,3],[8,1],[8,1],[8,1],[8,1],[11,3],[9,3],[10,3],[12,3],[12,3],[13,3],[13,4],[7,2],[17,3],[17,2],[17,2],[17,1],[25,2],[25,1],[27,1],[27,1],[27,1],[27,1],[26,1],[31,2],[31,1],[32,3],[32,3],[32,3],[32,3],[21,1],[35,3],[35,1]],","performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {","","var $0 = $$.length - 1;","switch (yystate) {","case 1: return $$[$0-1]; ","break;","case 2: this.$ = new yy.ProgramNode($$[$0-2], $$[$0]); ","break;","case 3: this.$ = new yy.ProgramNode($$[$0]); ","break;","case 4: this.$ = new yy.ProgramNode([]); ","break;","case 5: this.$ = [$$[$0]]; ","break;","case 6: $$[$0-1].push($$[$0]); this.$ = $$[$0-1]; ","break;","case 7: this.$ = new yy.BlockNode($$[$0-2], $$[$0-1].inverse, $$[$0-1], $$[$0]); ","break;","case 8: this.$ = new yy.BlockNode($$[$0-2], $$[$0-1], $$[$0-1].inverse, $$[$0]); ","break;","case 9: this.$ = $$[$0]; ","break;","case 10: this.$ = $$[$0]; ","break;","case 11: this.$ = new yy.ContentNode($$[$0]); ","break;","case 12: this.$ = new yy.CommentNode($$[$0]); ","break;","case 13: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); ","break;","case 14: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); ","break;","case 15: this.$ = $$[$0-1]; ","break;","case 16: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); ","break;","case 17: this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1], true); ","break;","case 18: this.$ = new yy.PartialNode($$[$0-1]); ","break;","case 19: this.$ = new yy.PartialNode($$[$0-2], $$[$0-1]); ","break;","case 20: ","break;","case 21: this.$ = [[$$[$0-2]].concat($$[$0-1]), $$[$0]]; ","break;","case 22: this.$ = [[$$[$0-1]].concat($$[$0]), null]; ","break;","case 23: this.$ = [[$$[$0-1]], $$[$0]]; ","break;","case 24: this.$ = [[$$[$0]], null]; ","break;","case 25: $$[$0-1].push($$[$0]); this.$ = $$[$0-1]; ","break;","case 26: this.$ = [$$[$0]]; ","break;","case 27: this.$ = $$[$0]; ","break;","case 28: this.$ = new yy.StringNode($$[$0]); ","break;","case 29: this.$ = new yy.IntegerNode($$[$0]); ","break;","case 30: this.$ = new yy.BooleanNode($$[$0]); ","break;","case 31: this.$ = new yy.HashNode($$[$0]); ","break;","case 32: $$[$0-1].push($$[$0]); this.$ = $$[$0-1]; ","break;","case 33: this.$ = [$$[$0]]; ","break;","case 34: this.$ = [$$[$0-2], $$[$0]]; ","break;","case 35: this.$ = [$$[$0-2], new yy.StringNode($$[$0])]; ","break;","case 36: this.$ = [$$[$0-2], new yy.IntegerNode($$[$0])]; ","break;","case 37: this.$ = [$$[$0-2], new yy.BooleanNode($$[$0])]; ","break;","case 38: this.$ = new yy.IdNode($$[$0]); ","break;","case 39: $$[$0-2].push($$[$0]); this.$ = $$[$0-2]; ","break;","case 40: this.$ = [$$[$0]]; ","break;","}","},","table: [{3:1,4:2,5:[2,4],6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{1:[3]},{5:[1,16]},{5:[2,3],7:17,8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,19],20:[2,3],22:[1,13],23:[1,14],24:[1,15]},{5:[2,5],14:[2,5],15:[2,5],16:[2,5],19:[2,5],20:[2,5],22:[2,5],23:[2,5],24:[2,5]},{4:20,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{4:21,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{5:[2,9],14:[2,9],15:[2,9],16:[2,9],19:[2,9],20:[2,9],22:[2,9],23:[2,9],24:[2,9]},{5:[2,10],14:[2,10],15:[2,10],16:[2,10],19:[2,10],20:[2,10],22:[2,10],23:[2,10],24:[2,10]},{5:[2,11],14:[2,11],15:[2,11],16:[2,11],19:[2,11],20:[2,11],22:[2,11],23:[2,11],24:[2,11]},{5:[2,12],14:[2,12],15:[2,12],16:[2,12],19:[2,12],20:[2,12],22:[2,12],23:[2,12],24:[2,12]},{17:22,21:23,33:[1,25],35:24},{17:26,21:23,33:[1,25],35:24},{17:27,21:23,33:[1,25],35:24},{17:28,21:23,33:[1,25],35:24},{21:29,33:[1,25],35:24},{1:[2,1]},{6:30,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{5:[2,6],14:[2,6],15:[2,6],16:[2,6],19:[2,6],20:[2,6],22:[2,6],23:[2,6],24:[2,6]},{17:22,18:[1,31],21:23,33:[1,25],35:24},{10:32,20:[1,33]},{10:34,20:[1,33]},{18:[1,35]},{18:[2,24],21:40,25:36,26:37,27:38,28:[1,41],29:[1,42],30:[1,43],31:39,32:44,33:[1,45],35:24},{18:[2,38],28:[2,38],29:[2,38],30:[2,38],33:[2,38],36:[1,46]},{18:[2,40],28:[2,40],29:[2,40],30:[2,40],33:[2,40],36:[2,40]},{18:[1,47]},{18:[1,48]},{18:[1,49]},{18:[1,50],21:51,33:[1,25],35:24},{5:[2,2],8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,2],22:[1,13],23:[1,14],24:[1,15]},{14:[2,20],15:[2,20],16:[2,20],19:[2,20],22:[2,20],23:[2,20],24:[2,20]},{5:[2,7],14:[2,7],15:[2,7],16:[2,7],19:[2,7],20:[2,7],22:[2,7],23:[2,7],24:[2,7]},{21:52,33:[1,25],35:24},{5:[2,8],14:[2,8],15:[2,8],16:[2,8],19:[2,8],20:[2,8],22:[2,8],23:[2,8],24:[2,8]},{14:[2,14],15:[2,14],16:[2,14],19:[2,14],20:[2,14],22:[2,14],23:[2,14],24:[2,14]},{18:[2,22],21:40,26:53,27:54,28:[1,41],29:[1,42],30:[1,43],31:39,32:44,33:[1,45],35:24},{18:[2,23]},{18:[2,26],28:[2,26],29:[2,26],30:[2,26],33:[2,26]},{18:[2,31],32:55,33:[1,56]},{18:[2,27],28:[2,27],29:[2,27],30:[2,27],33:[2,27]},{18:[2,28],28:[2,28],29:[2,28],30:[2,28],33:[2,28]},{18:[2,29],28:[2,29],29:[2,29],30:[2,29],33:[2,29]},{18:[2,30],28:[2,30],29:[2,30],30:[2,30],33:[2,30]},{18:[2,33],33:[2,33]},{18:[2,40],28:[2,40],29:[2,40],30:[2,40],33:[2,40],34:[1,57],36:[2,40]},{33:[1,58]},{14:[2,13],15:[2,13],16:[2,13],19:[2,13],20:[2,13],22:[2,13],23:[2,13],24:[2,13]},{5:[2,16],14:[2,16],15:[2,16],16:[2,16],19:[2,16],20:[2,16],22:[2,16],23:[2,16],24:[2,16]},{5:[2,17],14:[2,17],15:[2,17],16:[2,17],19:[2,17],20:[2,17],22:[2,17],23:[2,17],24:[2,17]},{5:[2,18],14:[2,18],15:[2,18],16:[2,18],19:[2,18],20:[2,18],22:[2,18],23:[2,18],24:[2,18]},{18:[1,59]},{18:[1,60]},{18:[2,21]},{18:[2,25],28:[2,25],29:[2,25],30:[2,25],33:[2,25]},{18:[2,32],33:[2,32]},{34:[1,57]},{21:61,28:[1,62],29:[1,63],30:[1,64],33:[1,25],35:24},{18:[2,39],28:[2,39],29:[2,39],30:[2,39],33:[2,39],36:[2,39]},{5:[2,19],14:[2,19],15:[2,19],16:[2,19],19:[2,19],20:[2,19],22:[2,19],23:[2,19],24:[2,19]},{5:[2,15],14:[2,15],15:[2,15],16:[2,15],19:[2,15],20:[2,15],22:[2,15],23:[2,15],24:[2,15]},{18:[2,34],33:[2,34]},{18:[2,35],33:[2,35]},{18:[2,36],33:[2,36]},{18:[2,37],33:[2,37]}],","defaultActions: {16:[2,1],37:[2,23],53:[2,21]},","parseError: function parseError(str, hash) {","    throw new Error(str);","},","parse: function parse(input) {","    var self = this,","        stack = [0],","        vstack = [null], // semantic value stack","        lstack = [], // location stack","        table = this.table,","        yytext = '',","        yylineno = 0,","        yyleng = 0,","        recovering = 0,","        TERROR = 2,","        EOF = 1;","","    //this.reductionCount = this.shiftCount = 0;","","    this.lexer.setInput(input);","    this.lexer.yy = this.yy;","    this.yy.lexer = this.lexer;","    this.yy.parser = this;","    if (typeof this.lexer.yylloc == 'undefined')","        this.lexer.yylloc = {};","    var yyloc = this.lexer.yylloc;","    lstack.push(yyloc);","","    if (typeof this.yy.parseError === 'function')","        this.parseError = this.yy.parseError;","","    function popStack (n) {","        stack.length = stack.length - 2*n;","        vstack.length = vstack.length - n;","        lstack.length = lstack.length - n;","    }","","    function lex() {","        var token;","        token = self.lexer.lex() || 1; // $end = 1","        // if token isn't its numeric value, convert","        if (typeof token !== 'number') {","            token = self.symbols_[token] || token;","        }","        return token;","    }","","    var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected;","    while (true) {","        // retreive state number from top of stack","        state = stack[stack.length-1];","","        // use default actions if available","        if (this.defaultActions[state]) {","            action = this.defaultActions[state];","        } else {","            if (symbol === null || typeof symbol == 'undefined') {","                symbol = lex();","            }","            // read action for current state and first input","            action = table[state] && table[state][symbol];","        }","","        // handle parse error","        _handle_error:","        if (typeof action === 'undefined' || !action.length || !action[0]) {","","            var errStr = '';","            if (!recovering) {","                // Report error","                expected = [];","                for (p in table[state]) if (this.terminals_[p] && p > 2) {","                    expected.push(\"'\"+this.terminals_[p]+\"'\");","                }","                if (this.lexer.showPosition) {","                    errStr = 'Parse error on line '+(yylineno+1)+\":\\n\"+this.lexer.showPosition()+\"\\nExpecting \"+expected.join(', ') + \", got '\" + (this.terminals_[symbol] || symbol)+ \"'\";","                } else {","                    errStr = 'Parse error on line '+(yylineno+1)+\": Unexpected \" +","                                  (symbol == 1 /*EOF*/ ? \"end of input\" :","                                              (\"'\"+(this.terminals_[symbol] || symbol)+\"'\"));","                }","                this.parseError(errStr,","                    {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});","            }","","            // just recovered from another error","            if (recovering == 3) {","                if (symbol == EOF) {","                    throw new Error(errStr || 'Parsing halted.');","                }","","                // discard current lookahead and grab another","                yyleng = this.lexer.yyleng;","                yytext = this.lexer.yytext;","                yylineno = this.lexer.yylineno;","                yyloc = this.lexer.yylloc;","                symbol = lex();","            }","","            // try to recover from error","            while (1) {","                // check for error recovery rule in this state","                if ((TERROR.toString()) in table[state]) {","                    break;","                }","                if (state === 0) {","                    throw new Error(errStr || 'Parsing halted.');","                }","                popStack(1);","                state = stack[stack.length-1];","            }","","            preErrorSymbol = symbol == 2 ? null : symbol; // save the lookahead token","            symbol = TERROR;         // insert generic error symbol as new lookahead","            state = stack[stack.length-1];","            action = table[state] && table[state][TERROR];","            recovering = 3; // allow 3 real symbols to be shifted before reporting a new error","        }","","        // this shouldn't happen, unless resolve defaults are off","        if (action[0] instanceof Array && action.length > 1) {","            throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);","        }","","        switch (action[0]) {","","            case 1: // shift","                //this.shiftCount++;","","                stack.push(symbol);","                vstack.push(this.lexer.yytext);","                lstack.push(this.lexer.yylloc);","                stack.push(action[1]); // push state","                symbol = null;","                if (!preErrorSymbol) { // normal execution/no error","                    yyleng = this.lexer.yyleng;","                    yytext = this.lexer.yytext;","                    yylineno = this.lexer.yylineno;","                    yyloc = this.lexer.yylloc;","                    if (recovering > 0)","                        recovering--;","                } else { // error just occurred, resume old lookahead f/ before error","                    symbol = preErrorSymbol;","                    preErrorSymbol = null;","                }","                break;","","            case 2: // reduce","                //this.reductionCount++;","","                len = this.productions_[action[1]][1];","","                // perform semantic action","                yyval.$ = vstack[vstack.length-len]; // default to $$ = $1","                // default location, uses first token for firsts, last for lasts","                yyval._$ = {","                    first_line: lstack[lstack.length-(len||1)].first_line,","                    last_line: lstack[lstack.length-1].last_line,","                    first_column: lstack[lstack.length-(len||1)].first_column,","                    last_column: lstack[lstack.length-1].last_column","                };","                r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);","","                if (typeof r !== 'undefined') {","                    return r;","                }","","                // pop off stack","                if (len) {","                    stack = stack.slice(0,-1*len*2);","                    vstack = vstack.slice(0, -1*len);","                    lstack = lstack.slice(0, -1*len);","                }","","                stack.push(this.productions_[action[1]][0]);    // push nonterminal (reduce)","                vstack.push(yyval.$);","                lstack.push(yyval._$);","                // goto new state = table[STATE][NONTERMINAL]","                newState = table[stack[stack.length-2]][stack[stack.length-1]];","                stack.push(newState);","                break;","","            case 3: // accept","                return true;","        }","","    }","","    return true;","}};","/* Jison generated lexer */","var lexer = (function(){","var lexer = ({EOF:1,","parseError:function parseError(str, hash) {","        if (this.yy.parser) {","            this.yy.parser.parseError(str, hash);","        } else {","            throw new Error(str);","        }","    },","setInput:function (input) {","        this._input = input;","        this._more = this._less = this.done = false;","        this.yylineno = this.yyleng = 0;","        this.yytext = this.matched = this.match = '';","        this.conditionStack = ['INITIAL'];","        this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};","        return this;","    },","input:function () {","        var ch = this._input[0];","        this.yytext+=ch;","        this.yyleng++;","        this.match+=ch;","        this.matched+=ch;","        var lines = ch.match(/\\n/);","        if (lines) this.yylineno++;","        this._input = this._input.slice(1);","        return ch;","    },","unput:function (ch) {","        this._input = ch + this._input;","        return this;","    },","more:function () {","        this._more = true;","        return this;","    },","less:function (n) {","        this._input = this.match.slice(n) + this._input;","    },","pastInput:function () {","        var past = this.matched.substr(0, this.matched.length - this.match.length);","        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");","    },","upcomingInput:function () {","        var next = this.match;","        if (next.length < 20) {","            next += this._input.substr(0, 20-next.length);","        }","        return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");","    },","showPosition:function () {","        var pre = this.pastInput();","        var c = new Array(pre.length + 1).join(\"-\");","        return pre + this.upcomingInput() + \"\\n\" + c+\"^\";","    },","next:function () {","        if (this.done) {","            return this.EOF;","        }","        if (!this._input) this.done = true;","","        var token,","            match,","            tempMatch,","            index,","            col,","            lines;","        if (!this._more) {","            this.yytext = '';","            this.match = '';","        }","        var rules = this._currentRules();","        for (var i=0;i < rules.length; i++) {","            tempMatch = this._input.match(this.rules[rules[i]]);","            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {","                match = tempMatch;","                index = i;","                if (!this.options.flex) break;","            }","        }","        if (match) {","            lines = match[0].match(/\\n.*/g);","            if (lines) this.yylineno += lines.length;","            this.yylloc = {first_line: this.yylloc.last_line,","                           last_line: this.yylineno+1,","                           first_column: this.yylloc.last_column,","                           last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length};","            this.yytext += match[0];","            this.match += match[0];","            this.yyleng = this.yytext.length;","            this._more = false;","            this._input = this._input.slice(match[0].length);","            this.matched += match[0];","            token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);","            if (this.done && this._input) this.done = false;","            if (token) return token;","            else return;","        }","        if (this._input === \"\") {","            return this.EOF;","        } else {","            return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),","                    {text: \"\", token: null, line: this.yylineno});","        }","    },","lex:function lex() {","        var r = this.next();","        if (typeof r !== 'undefined') {","            return r;","        } else {","            return this.lex();","        }","    },","begin:function begin(condition) {","        this.conditionStack.push(condition);","    },","popState:function popState() {","        return this.conditionStack.pop();","    },","_currentRules:function _currentRules() {","        return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;","    },","topState:function () {","        return this.conditionStack[this.conditionStack.length-2];","    },","pushState:function begin(condition) {","        this.begin(condition);","    }});","lexer.options = {};","lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {","","var YYSTATE=YY_START","switch($avoiding_name_collisions) {","case 0:","                                   if(yy_.yytext.slice(-1) !== \"\\\\\") this.begin(\"mu\");","                                   if(yy_.yytext.slice(-1) === \"\\\\\") yy_.yytext = yy_.yytext.substr(0,yy_.yyleng-1), this.begin(\"emu\");","                                   if(yy_.yytext) return 14;","                                 ","break;","case 1: return 14; ","break;","case 2: this.popState(); return 14; ","break;","case 3: return 24; ","break;","case 4: return 16; ","break;","case 5: return 20; ","break;","case 6: return 19; ","break;","case 7: return 19; ","break;","case 8: return 23; ","break;","case 9: return 23; ","break;","case 10: yy_.yytext = yy_.yytext.substr(3,yy_.yyleng-5); this.popState(); return 15; ","break;","case 11: return 22; ","break;","case 12: return 34; ","break;","case 13: return 33; ","break;","case 14: return 33; ","break;","case 15: return 36; ","break;","case 16: /*ignore whitespace*/ ","break;","case 17: this.popState(); return 18; ","break;","case 18: this.popState(); return 18; ","break;","case 19: yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2).replace(/\\\\\"/g,'\"'); return 28; ","break;","case 20: return 30; ","break;","case 21: return 30; ","break;","case 22: return 29; ","break;","case 23: return 33; ","break;","case 24: yy_.yytext = yy_.yytext.substr(1, yy_.yyleng-2); return 33; ","break;","case 25: return 'INVALID'; ","break;","case 26: return 5; ","break;","}","};","lexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{)))/,/^(?:\\{\\{>)/,/^(?:\\{\\{#)/,/^(?:\\{\\{\\/)/,/^(?:\\{\\{\\^)/,/^(?:\\{\\{\\s*else\\b)/,/^(?:\\{\\{\\{)/,/^(?:\\{\\{&)/,/^(?:\\{\\{![\\s\\S]*?\\}\\})/,/^(?:\\{\\{)/,/^(?:=)/,/^(?:\\.(?=[} ]))/,/^(?:\\.\\.)/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}\\}\\})/,/^(?:\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:true(?=[}\\s]))/,/^(?:false(?=[}\\s]))/,/^(?:[0-9]+(?=[}\\s]))/,/^(?:[a-zA-Z0-9_$-]+(?=[=}\\s\\/.]))/,/^(?:\\[[^\\]]*\\])/,/^(?:.)/,/^(?:$)/];","lexer.conditions = {\"mu\":{\"rules\":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,26],\"inclusive\":true}};","return lexer;})()","parser.lexer = lexer;function Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;","return new Parser;","})();","if (typeof require !== 'undefined' && typeof exports !== 'undefined') {","exports.parser = handlebars;","exports.Parser = handlebars.Parser;","exports.parse = function () { return handlebars.parse.apply(handlebars, arguments); }","exports.main = function commonjsMain(args) {","    if (!args[1])","        throw new Error('Usage: '+args[0]+' FILE');","    var source, cwd;","    if (typeof process !== 'undefined') {","        source = require('fs').readFileSync(require('path').resolve(args[1]), \"utf8\");","    } else {","        source = require(\"file\").path(require(\"file\").cwd()).join(args[1]).read({charset: \"utf-8\"});","    }","    return exports.parser.parse(source);","}","if (typeof module !== 'undefined' && require.main === module) {","  exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : require(\"system\").args);","}","};","/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */","","// BEGIN(BROWSER)","Handlebars.Parser = handlebars;","","Handlebars.parse = function(string) {","  Handlebars.Parser.yy = Handlebars.AST;","  return Handlebars.Parser.parse(string);","};","","Handlebars.print = function(ast) {","  return new Handlebars.PrintVisitor().accept(ast);","};","","Handlebars.logger = {","  DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3, level: 3,","","  // override in the host environment","  log: function(level, str) {}","};","","Handlebars.log = function(level, str) { Handlebars.logger.log(level, str); };","","// END(BROWSER)","/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */","","// BEGIN(BROWSER)","(function() {","","  Handlebars.AST = {};","","  Handlebars.AST.ProgramNode = function(statements, inverse) {","    this.type = \"program\";","    this.statements = statements;","    if(inverse) { this.inverse = new Handlebars.AST.ProgramNode(inverse); }","  };","","  Handlebars.AST.MustacheNode = function(rawParams, hash, unescaped) {","    this.type = \"mustache\";","    this.escaped = !unescaped;","    this.hash = hash;","","    var id = this.id = rawParams[0];","    var params = this.params = rawParams.slice(1);","","    // a mustache is an eligible helper if:","    // * its id is simple (a single part, not `this` or `..`)","    var eligibleHelper = this.eligibleHelper = id.isSimple;","","    // a mustache is definitely a helper if:","    // * it is an eligible helper, and","    // * it has at least one parameter or hash segment","    this.isHelper = eligibleHelper && (params.length || hash);","","    // if a mustache is an eligible helper but not a definite","    // helper, it is ambiguous, and will be resolved in a later","    // pass or at runtime.","  };","","  Handlebars.AST.PartialNode = function(id, context) {","    this.type    = \"partial\";","","    // TODO: disallow complex IDs","","    this.id      = id;","    this.context = context;","  };","","  var verifyMatch = function(open, close) {","    if(open.original !== close.original) {","      throw new Handlebars.Exception(open.original + \" doesn't match \" + close.original);","    }","  };","","  Handlebars.AST.BlockNode = function(mustache, program, inverse, close) {","    verifyMatch(mustache.id, close);","    this.type = \"block\";","    this.mustache = mustache;","    this.program  = program;","    this.inverse  = inverse;","","    if (this.inverse && !this.program) {","      this.isInverse = true;","    }","  };","","  Handlebars.AST.ContentNode = function(string) {","    this.type = \"content\";","    this.string = string;","  };","","  Handlebars.AST.HashNode = function(pairs) {","    this.type = \"hash\";","    this.pairs = pairs;","  };","","  Handlebars.AST.IdNode = function(parts) {","    this.type = \"ID\";","    this.original = parts.join(\".\");","","    var dig = [], depth = 0;","","    for(var i=0,l=parts.length; i<l; i++) {","      var part = parts[i];","","      if(part === \"..\") { depth++; }","      else if(part === \".\" || part === \"this\") { this.isScoped = true; }","      else { dig.push(part); }","    }","","    this.parts    = dig;","    this.string   = dig.join('.');","    this.depth    = depth;","","    // an ID is simple if it only has one part, and that part is not","    // `..` or `this`.","    this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;","  };","","  Handlebars.AST.StringNode = function(string) {","    this.type = \"STRING\";","    this.string = string;","  };","","  Handlebars.AST.IntegerNode = function(integer) {","    this.type = \"INTEGER\";","    this.integer = integer;","  };","","  Handlebars.AST.BooleanNode = function(bool) {","    this.type = \"BOOLEAN\";","    this.bool = bool;","  };","","  Handlebars.AST.CommentNode = function(comment) {","    this.type = \"comment\";","    this.comment = comment;","  };","","})();","// END(BROWSER)","/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */","","// BEGIN(BROWSER)","","/*jshint eqnull:true*/","Handlebars.Compiler = function() {};","Handlebars.JavaScriptCompiler = function() {};","","(function(Compiler, JavaScriptCompiler) {","  // the foundHelper register will disambiguate helper lookup from finding a","  // function in a context. This is necessary for mustache compatibility, which","  // requires that context functions in blocks are evaluated by blockHelperMissing,","  // and then proceed as if the resulting value was provided to blockHelperMissing.","","  Compiler.prototype = {","    compiler: Compiler,","","    disassemble: function() {","      var opcodes = this.opcodes, opcode, out = [], params, param;","","      for (var i=0, l=opcodes.length; i<l; i++) {","        opcode = opcodes[i];","","        if (opcode.opcode === 'DECLARE') {","          out.push(\"DECLARE \" + opcode.name + \"=\" + opcode.value);","        } else {","          params = [];","          for (var j=0; j<opcode.args.length; j++) {","            param = opcode.args[j];","            if (typeof param === \"string\") {","              param = \"\\\"\" + param.replace(\"\\n\", \"\\\\n\") + \"\\\"\";","            }","            params.push(param);","          }","          out.push(opcode.opcode + \" \" + params.join(\" \"));","        }","      }","","      return out.join(\"\\n\");","    },","","    guid: 0,","","    compile: function(program, options) {","      this.children = [];","      this.depths = {list: []};","      this.options = options;","","      // These changes will propagate to the other compiler components","      var knownHelpers = this.options.knownHelpers;","      this.options.knownHelpers = {","        'helperMissing': true,","        'blockHelperMissing': true,","        'each': true,","        'if': true,","        'unless': true,","        'with': true,","        'log': true","      };","      if (knownHelpers) {","        for (var name in knownHelpers) {","          this.options.knownHelpers[name] = knownHelpers[name];","        }","      }","","      return this.program(program);","    },","","    accept: function(node) {","      return this[node.type](node);","    },","","    program: function(program) {","      var statements = program.statements, statement;","      this.opcodes = [];","","      for(var i=0, l=statements.length; i<l; i++) {","        statement = statements[i];","        this[statement.type](statement);","      }","      this.isSimple = l === 1;","","      this.depths.list = this.depths.list.sort(function(a, b) {","        return a - b;","      });","","      return this;","    },","","    compileProgram: function(program) {","      var result = new this.compiler().compile(program, this.options);","      var guid = this.guid++, depth;","","      this.usePartial = this.usePartial || result.usePartial;","","      this.children[guid] = result;","","      for(var i=0, l=result.depths.list.length; i<l; i++) {","        depth = result.depths.list[i];","","        if(depth < 2) { continue; }","        else { this.addDepth(depth - 1); }","      }","","      return guid;","    },","","    block: function(block) {","      var mustache = block.mustache,","          program = block.program,","          inverse = block.inverse;","","      if (program) {","        program = this.compileProgram(program);","      }","","      if (inverse) {","        inverse = this.compileProgram(inverse);","      }","","      var type = this.classifyMustache(mustache);","","      if (type === \"helper\") {","        this.helperMustache(mustache, program, inverse);","      } else if (type === \"simple\") {","        this.simpleMustache(mustache);","","        // now that the simple mustache is resolved, we need to","        // evaluate it by executing `blockHelperMissing`","        this.opcode('pushProgram', program);","        this.opcode('pushProgram', inverse);","        this.opcode('pushLiteral', '{}');","        this.opcode('blockValue');","      } else {","        this.ambiguousMustache(mustache, program, inverse);","","        // now that the simple mustache is resolved, we need to","        // evaluate it by executing `blockHelperMissing`","        this.opcode('pushProgram', program);","        this.opcode('pushProgram', inverse);","        this.opcode('pushLiteral', '{}');","        this.opcode('ambiguousBlockValue');","      }","","      this.opcode('append');","    },","","    hash: function(hash) {","      var pairs = hash.pairs, pair, val;","","      this.opcode('push', '{}');","","      for(var i=0, l=pairs.length; i<l; i++) {","        pair = pairs[i];","        val  = pair[1];","","        this.accept(val);","        this.opcode('assignToHash', pair[0]);","      }","    },","","    partial: function(partial) {","      var id = partial.id;","      this.usePartial = true;","","      if(partial.context) {","        this.ID(partial.context);","      } else {","        this.opcode('push', 'depth0');","      }","","      this.opcode('invokePartial', id.original);","      this.opcode('append');","    },","","    content: function(content) {","      this.opcode('appendContent', content.string);","    },","","    mustache: function(mustache) {","      var options = this.options;","      var type = this.classifyMustache(mustache);","","      if (type === \"simple\") {","        this.simpleMustache(mustache);","      } else if (type === \"helper\") {","        this.helperMustache(mustache);","      } else {","        this.ambiguousMustache(mustache);","      }","","      if(mustache.escaped && !options.noEscape) {","        this.opcode('appendEscaped');","      } else {","        this.opcode('append');","      }","    },","","    ambiguousMustache: function(mustache, program, inverse) {","      var id = mustache.id, name = id.parts[0];","","      this.opcode('getContext', id.depth);","","      this.opcode('pushProgram', program);","      this.opcode('pushProgram', inverse);","","      this.opcode('invokeAmbiguous', name);","    },","","    simpleMustache: function(mustache, program, inverse) {","      var id = mustache.id;","","      this.addDepth(id.depth);","      this.opcode('getContext', id.depth);","","      if (id.parts.length) {","        this.opcode('lookupOnContext', id.parts[0]);","        for(var i=1, l=id.parts.length; i<l; i++) {","          this.opcode('lookup', id.parts[i]);","        }","      } else {","        this.opcode('pushContext');","      }","      this.opcode('resolvePossibleLambda');","    },","","    helperMustache: function(mustache, program, inverse) {","      var params = this.setupFullMustacheParams(mustache, program, inverse),","          name = mustache.id.parts[0];","","      if (this.options.knownHelpers[name]) {","        this.opcode('invokeKnownHelper', params.length, name);","      } else if (this.knownHelpersOnly) {","        throw new Error(\"You specified knownHelpersOnly, but used the unknown helper \" + name);","      } else {","        this.opcode('invokeHelper', params.length, name);","      }","    },","","    ID: function(id) {","      this.addDepth(id.depth);","      this.opcode('getContext', id.depth);","      this.opcode('lookupOnContext', id.parts[0]);","","      for(var i=1, l=id.parts.length; i<l; i++) {","        this.opcode('lookup', id.parts[i]);","      }","    },","","    STRING: function(string) {","      this.opcode('pushString', string.string);","    },","","    INTEGER: function(integer) {","      this.opcode('pushLiteral', integer.integer);","    },","","    BOOLEAN: function(bool) {","      this.opcode('pushLiteral', bool.bool);","    },","","    comment: function() {},","","    // HELPERS","    opcode: function(name) {","      this.opcodes.push({ opcode: name, args: [].slice.call(arguments, 1) });","    },","","    declare: function(name, value) {","      this.opcodes.push({ opcode: 'DECLARE', name: name, value: value });","    },","","    addDepth: function(depth) {","      if(depth === 0) { return; }","","      if(!this.depths[depth]) {","        this.depths[depth] = true;","        this.depths.list.push(depth);","      }","    },","","    classifyMustache: function(mustache) {","      var isHelper   = mustache.isHelper;","      var isEligible = mustache.eligibleHelper;","      var options    = this.options;","","      // if ambiguous, we can possibly resolve the ambiguity now","      if (isEligible && !isHelper) {","        var name = mustache.id.parts[0];","","        if (options.knownHelpers[name]) {","          isHelper = true;","        } else if (options.knownHelpersOnly) {","          isEligible = false;","        }","      }","","      if (isHelper) { return \"helper\"; }","      else if (isEligible) { return \"ambiguous\"; }","      else { return \"simple\"; }","    },","","    pushParams: function(params) {","      var i = params.length, param;","","      while(i--) {","        param = params[i];","","        if(this.options.stringParams) {","          if(param.depth) {","            this.addDepth(param.depth);","          }","","          this.opcode('getContext', param.depth || 0);","          this.opcode('pushStringParam', param.string);","        } else {","          this[param.type](param);","        }","      }","    },","","    setupMustacheParams: function(mustache) {","      var params = mustache.params;","      this.pushParams(params);","","      if(mustache.hash) {","        this.hash(mustache.hash);","      } else {","        this.opcode('pushLiteral', '{}');","      }","","      return params;","    },","","    // this will replace setupMustacheParams when we're done","    setupFullMustacheParams: function(mustache, program, inverse) {","      var params = mustache.params;","      this.pushParams(params);","","      this.opcode('pushProgram', program);","      this.opcode('pushProgram', inverse);","","      if(mustache.hash) {","        this.hash(mustache.hash);","      } else {","        this.opcode('pushLiteral', '{}');","      }","","      return params;","    }","  };","","  var Literal = function(value) {","    this.value = value;","  };","","  JavaScriptCompiler.prototype = {","    // PUBLIC API: You can override these methods in a subclass to provide","    // alternative compiled forms for name lookup and buffering semantics","    nameLookup: function(parent, name, type) {","      if (/^[0-9]+$/.test(name)) {","        return parent + \"[\" + name + \"]\";","      } else if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {","        return parent + \".\" + name;","      }","      else {","        return parent + \"['\" + name + \"']\";","      }","    },","","    appendToBuffer: function(string) {","      if (this.environment.isSimple) {","        return \"return \" + string + \";\";","      } else {","        return \"buffer += \" + string + \";\";","      }","    },","","    initializeBuffer: function() {","      return this.quotedString(\"\");","    },","","    namespace: \"Handlebars\",","    // END PUBLIC API","","    compile: function(environment, options, context, asObject) {","      this.environment = environment;","      this.options = options || {};","","      Handlebars.log(Handlebars.logger.DEBUG, this.environment.disassemble() + \"\\n\\n\");","","      this.name = this.environment.name;","      this.isChild = !!context;","      this.context = context || {","        programs: [],","        aliases: { }","      };","","      this.preamble();","","      this.stackSlot = 0;","      this.stackVars = [];","      this.registers = { list: [] };","      this.compileStack = [];","","      this.compileChildren(environment, options);","","      var opcodes = environment.opcodes, opcode;","","      this.i = 0;","","      for(l=opcodes.length; this.i<l; this.i++) {","        opcode = opcodes[this.i];","","        if(opcode.opcode === 'DECLARE') {","          this[opcode.name] = opcode.value;","        } else {","          this[opcode.opcode].apply(this, opcode.args);","        }","      }","","      return this.createFunctionContext(asObject);","    },","","    nextOpcode: function() {","      var opcodes = this.environment.opcodes, opcode = opcodes[this.i + 1];","      return opcodes[this.i + 1];","    },","","    eat: function(opcode) {","      this.i = this.i + 1;","    },","","    preamble: function() {","      var out = [];","","      if (!this.isChild) {","        var namespace = this.namespace;","        var copies = \"helpers = helpers || \" + namespace + \".helpers;\";","        if(this.environment.usePartial) { copies = copies + \" partials = partials || \" + namespace + \".partials;\"; }","        out.push(copies);","      } else {","        out.push('');","      }","","      if (!this.environment.isSimple) {","        out.push(\", buffer = \" + this.initializeBuffer());","      } else {","        out.push(\"\");","      }","","      // track the last context pushed into place to allow skipping the","      // getContext opcode when it would be a noop","      this.lastContext = 0;","      this.source = out;","    },","","    createFunctionContext: function(asObject) {","      var locals = this.stackVars.concat(this.registers.list);","","      if(locals.length > 0) {","        this.source[1] = this.source[1] + \", \" + locals.join(\", \");","      }","","      // Generate minimizer alias mappings","      if (!this.isChild) {","        var aliases = [];","        for (var alias in this.context.aliases) {","          this.source[1] = this.source[1] + ', ' + alias + '=' + this.context.aliases[alias];","        }","      }","","      if (this.source[1]) {","        this.source[1] = \"var \" + this.source[1].substring(2) + \";\";","      }","","      // Merge children","      if (!this.isChild) {","        this.source[1] += '\\n' + this.context.programs.join('\\n') + '\\n';","      }","","      if (!this.environment.isSimple) {","        this.source.push(\"return buffer;\");","      }","","      var params = this.isChild ? [\"depth0\", \"data\"] : [\"Handlebars\", \"depth0\", \"helpers\", \"partials\", \"data\"];","","      for(var i=0, l=this.environment.depths.list.length; i<l; i++) {","        params.push(\"depth\" + this.environment.depths.list[i]);","      }","","      if (asObject) {","        params.push(this.source.join(\"\\n  \"));","","        return Function.apply(this, params);","      } else {","        var functionSource = 'function ' + (this.name || '') + '(' + params.join(',') + ') {\\n  ' + this.source.join(\"\\n  \") + '}';","        Handlebars.log(Handlebars.logger.DEBUG, functionSource + \"\\n\\n\");","        return functionSource;","      }","    },","","    // [blockValue]","    //","    // On stack, before: hash, inverse, program, value","    // On stack, after: return value of blockHelperMissing","    //","    // The purpose of this opcode is to take a block of the form","    // `{{#foo}}...{{/foo}}`, resolve the value of `foo`, and","    // replace it on the stack with the result of properly","    // invoking blockHelperMissing.","    blockValue: function() {","      this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';","","      var params = [\"depth0\"];","      this.setupParams(0, params);","","      this.replaceStack(function(current) {","        params.splice(1, 0, current);","        return current + \" = blockHelperMissing.call(\" + params.join(\", \") + \")\";","      });","    },","","    // [ambiguousBlockValue]","    //","    // On stack, before: hash, inverse, program, value","    // Compiler value, before: lastHelper=value of last found helper, if any","    // On stack, after, if no lastHelper: same as [blockValue]","    // On stack, after, if lastHelper: value","    ambiguousBlockValue: function() {","      this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';","","      var params = [\"depth0\"];","      this.setupParams(0, params);","","      var current = this.topStack();","      params.splice(1, 0, current);","","      this.source.push(\"if (!\" + this.lastHelper + \") { \" + current + \" = blockHelperMissing.call(\" + params.join(\", \") + \"); }\");","    },","","    // [appendContent]","    //","    // On stack, before: ...","    // On stack, after: ...","    //","    // Appends the string value of `content` to the current buffer","    appendContent: function(content) {","      this.source.push(this.appendToBuffer(this.quotedString(content)));","    },","","    // [append]","    //","    // On stack, before: value, ...","    // On stack, after: ...","    //","    // Coerces `value` to a String and appends it to the current buffer.","    //","    // If `value` is truthy, or 0, it is coerced into a string and appended","    // Otherwise, the empty string is appended","    append: function() {","      var local = this.popStack();","      this.source.push(\"if(\" + local + \" || \" + local + \" === 0) { \" + this.appendToBuffer(local) + \" }\");","      if (this.environment.isSimple) {","        this.source.push(\"else { \" + this.appendToBuffer(\"''\") + \" }\");","      }","    },","","    // [appendEscaped]","    //","    // On stack, before: value, ...","    // On stack, after: ...","    //","    // Escape `value` and append it to the buffer","    appendEscaped: function() {","      var opcode = this.nextOpcode(), extra = \"\";","      this.context.aliases.escapeExpression = 'this.escapeExpression';","","      if(opcode && opcode.opcode === 'appendContent') {","        extra = \" + \" + this.quotedString(opcode.args[0]);","        this.eat(opcode);","      }","","      this.source.push(this.appendToBuffer(\"escapeExpression(\" + this.popStack() + \")\" + extra));","    },","","    // [getContext]","    //","    // On stack, before: ...","    // On stack, after: ...","    // Compiler value, after: lastContext=depth","    //","    // Set the value of the `lastContext` compiler value to the depth","    getContext: function(depth) {","      if(this.lastContext !== depth) {","        this.lastContext = depth;","      }","    },","","    // [lookupOnContext]","    //","    // On stack, before: ...","    // On stack, after: currentContext[name], ...","    //","    // Looks up the value of `name` on the current context and pushes","    // it onto the stack.","    lookupOnContext: function(name) {","      this.pushStack(this.nameLookup('depth' + this.lastContext, name, 'context'));","    },","","    // [pushContext]","    //","    // On stack, before: ...","    // On stack, after: currentContext, ...","    //","    // Pushes the value of the current context onto the stack.","    pushContext: function() {","      this.pushStackLiteral('depth' + this.lastContext);","    },","","    // [resolvePossibleLambda]","    //","    // On stack, before: value, ...","    // On stack, after: resolved value, ...","    //","    // If the `value` is a lambda, replace it on the stack by","    // the return value of the lambda","    resolvePossibleLambda: function() {","      this.context.aliases.functionType = '\"function\"';","","      this.replaceStack(function(current) {","        return \"typeof \" + current + \" === functionType ? \" + current + \"() : \" + current;","      });","    },","","    // [lookup]","    //","    // On stack, before: value, ...","    // On stack, after: value[name], ...","    //","    // Replace the value on the stack with the result of looking","    // up `name` on `value`","    lookup: function(name) {","      this.replaceStack(function(current) {","        return current + \" == null || \" + current + \" === false ? \" + current + \" : \" + this.nameLookup(current, name, 'context');","      });","    },","","    // [pushStringParam]","    //","    // On stack, before: ...","    // On stack, after: string, currentContext, ...","    //","    // This opcode is designed for use in string mode, which","    // provides the string value of a parameter along with its","    // depth rather than resolving it immediately.","    pushStringParam: function(string) {","      this.pushStackLiteral('depth' + this.lastContext);","      this.pushString(string);","    },","","    // [pushString]","    //","    // On stack, before: ...","    // On stack, after: quotedString(string), ...","    //","    // Push a quoted version of `string` onto the stack","    pushString: function(string) {","      this.pushStackLiteral(this.quotedString(string));","    },","","    // [push]","    //","    // On stack, before: ...","    // On stack, after: expr, ...","    //","    // Push an expression onto the stack","    push: function(expr) {","      this.pushStack(expr);","    },","","    // [pushLiteral]","    //","    // On stack, before: ...","    // On stack, after: value, ...","    //","    // Pushes a value onto the stack. This operation prevents","    // the compiler from creating a temporary variable to hold","    // it.","    pushLiteral: function(value) {","      this.pushStackLiteral(value);","    },","","    // [pushProgram]","    //","    // On stack, before: ...","    // On stack, after: program(guid), ...","    //","    // Push a program expression onto the stack. This takes","    // a compile-time guid and converts it into a runtime-accessible","    // expression.","    pushProgram: function(guid) {","      if (guid != null) {","        this.pushStackLiteral(this.programExpression(guid));","      } else {","        this.pushStackLiteral(null);","      }","    },","","    // [invokeHelper]","    //","    // On stack, before: hash, inverse, program, params..., ...","    // On stack, after: result of helper invocation","    //","    // Pops off the helper's parameters, invokes the helper,","    // and pushes the helper's return value onto the stack.","    //","    // If the helper is not found, `helperMissing` is called.","    invokeHelper: function(paramSize, name) {","      this.context.aliases.helperMissing = 'helpers.helperMissing';","","      var helper = this.lastHelper = this.setupHelper(paramSize, name);","      this.register('foundHelper', helper.name);","","      this.pushStack(\"foundHelper ? foundHelper.call(\" +","        helper.callParams + \") \" + \": helperMissing.call(\" +","        helper.helperMissingParams + \")\");","    },","","    // [invokeKnownHelper]","    //","    // On stack, before: hash, inverse, program, params..., ...","    // On stack, after: result of helper invocation","    //","    // This operation is used when the helper is known to exist,","    // so a `helperMissing` fallback is not required.","    invokeKnownHelper: function(paramSize, name) {","      var helper = this.setupHelper(paramSize, name);","      this.pushStack(helper.name + \".call(\" + helper.callParams + \")\");","    },","","    // [invokeAmbiguous]","    //","    // On stack, before: hash, inverse, program, params..., ...","    // On stack, after: result of disambiguation","    //","    // This operation is used when an expression like `{{foo}}`","    // is provided, but we don't know at compile-time whether it","    // is a helper or a path.","    //","    // This operation emits more code than the other options,","    // and can be avoided by passing the `knownHelpers` and","    // `knownHelpersOnly` flags at compile-time.","    invokeAmbiguous: function(name) {","      this.context.aliases.functionType = '\"function\"';","","      this.pushStackLiteral('{}');","      var helper = this.setupHelper(0, name);","","      var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');","      this.register('foundHelper', helperName);","","      var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');","      var nextStack = this.nextStack();","","      this.source.push('if (foundHelper) { ' + nextStack + ' = foundHelper.call(' + helper.callParams + '); }');","      this.source.push('else { ' + nextStack + ' = ' + nonHelper + '; ' + nextStack + ' = typeof ' + nextStack + ' === functionType ? ' + nextStack + '() : ' + nextStack + '; }');","    },","","    // [invokePartial]","    //","    // On stack, before: context, ...","    // On stack after: result of partial invocation","    //","    // This operation pops off a context, invokes a partial with that context,","    // and pushes the result of the invocation back.","    invokePartial: function(name) {","      var params = [this.nameLookup('partials', name, 'partial'), \"'\" + name + \"'\", this.popStack(), \"helpers\", \"partials\"];","","      if (this.options.data) {","        params.push(\"data\");","      }","","      this.context.aliases.self = \"this\";","      this.pushStack(\"self.invokePartial(\" + params.join(\", \") + \");\");","    },","","    // [assignToHash]","    //","    // On stack, before: value, hash, ...","    // On stack, after: hash, ...","    //","    // Pops a value and hash off the stack, assigns `hash[key] = value`","    // and pushes the hash back onto the stack.","    assignToHash: function(key) {","      var value = this.popStack();","      var hash = this.topStack();","","      this.source.push(hash + \"['\" + key + \"'] = \" + value + \";\");","    },","","    // HELPERS","","    compiler: JavaScriptCompiler,","","    compileChildren: function(environment, options) {","      var children = environment.children, child, compiler;","","      for(var i=0, l=children.length; i<l; i++) {","        child = children[i];","        compiler = new this.compiler();","","        this.context.programs.push('');     // Placeholder to prevent name conflicts for nested children","        var index = this.context.programs.length;","        child.index = index;","        child.name = 'program' + index;","        this.context.programs[index] = compiler.compile(child, options, this.context);","      }","    },","","    programExpression: function(guid) {","      this.context.aliases.self = \"this\";","","      if(guid == null) {","        return \"self.noop\";","      }","","      var child = this.environment.children[guid],","          depths = child.depths.list, depth;","","      var programParams = [child.index, child.name, \"data\"];","","      for(var i=0, l = depths.length; i<l; i++) {","        depth = depths[i];","","        if(depth === 1) { programParams.push(\"depth0\"); }","        else { programParams.push(\"depth\" + (depth - 1)); }","      }","","      if(depths.length === 0) {","        return \"self.program(\" + programParams.join(\", \") + \")\";","      } else {","        programParams.shift();","        return \"self.programWithDepth(\" + programParams.join(\", \") + \")\";","      }","    },","","    register: function(name, val) {","      this.useRegister(name);","      this.source.push(name + \" = \" + val + \";\");","    },","","    useRegister: function(name) {","      if(!this.registers[name]) {","        this.registers[name] = true;","        this.registers.list.push(name);","      }","    },","","    pushStackLiteral: function(item) {","      this.compileStack.push(new Literal(item));","      return item;","    },","","    pushStack: function(item) {","      this.source.push(this.incrStack() + \" = \" + item + \";\");","      this.compileStack.push(\"stack\" + this.stackSlot);","      return \"stack\" + this.stackSlot;","    },","","    replaceStack: function(callback) {","      var item = callback.call(this, this.topStack());","","      this.source.push(this.topStack() + \" = \" + item + \";\");","      return \"stack\" + this.stackSlot;","    },","","    nextStack: function(skipCompileStack) {","      var name = this.incrStack();","      this.compileStack.push(\"stack\" + this.stackSlot);","      return name;","    },","","    incrStack: function() {","      this.stackSlot++;","      if(this.stackSlot > this.stackVars.length) { this.stackVars.push(\"stack\" + this.stackSlot); }","      return \"stack\" + this.stackSlot;","    },","","    popStack: function() {","      var item = this.compileStack.pop();","","      if (item instanceof Literal) {","        return item.value;","      } else {","        this.stackSlot--;","        return item;","      }","    },","","    topStack: function() {","      var item = this.compileStack[this.compileStack.length - 1];","","      if (item instanceof Literal) {","        return item.value;","      } else {","        return item;","      }","    },","","    quotedString: function(str) {","      return '\"' + str","        .replace(/\\\\/g, '\\\\\\\\')","        .replace(/\"/g, '\\\\\"')","        .replace(/\\n/g, '\\\\n')","        .replace(/\\r/g, '\\\\r') + '\"';","    },","","    setupHelper: function(paramSize, name) {","      var params = [];","      this.setupParams(paramSize, params);","      var foundHelper = this.nameLookup('helpers', name, 'helper');","","      return {","        params: params,","        name: foundHelper,","        callParams: [\"depth0\"].concat(params).join(\", \"),","        helperMissingParams: [\"depth0\", this.quotedString(name)].concat(params).join(\", \")","      };","    },","","    // the params and contexts arguments are passed in arrays","    // to fill in","    setupParams: function(paramSize, params) {","      var options = [], contexts = [], param, inverse, program;","","      options.push(\"hash:\" + this.popStack());","","      inverse = this.popStack();","      program = this.popStack();","","      // Avoid setting fn and inverse if neither are set. This allows","      // helpers to do a check for `if (options.fn)`","      if (program || inverse) {","        if (!program) {","          this.context.aliases.self = \"this\";","          program = \"self.noop\";","        }","","        if (!inverse) {","         this.context.aliases.self = \"this\";","          inverse = \"self.noop\";","        }","","        options.push(\"inverse:\" + inverse);","        options.push(\"fn:\" + program);","      }","","      for(var i=0; i<paramSize; i++) {","        param = this.popStack();","        params.push(param);","","        if(this.options.stringParams) {","          contexts.push(this.popStack());","        }","      }","","      if (this.options.stringParams) {","        options.push(\"contexts:[\" + contexts.join(\",\") + \"]\");","      }","","      if(this.options.data) {","        options.push(\"data:data\");","      }","","      params.push(\"{\" + options.join(\",\") + \"}\");","      return params.join(\", \");","    }","  };","","  var reservedWords = (","    \"break else new var\" +","    \" case finally return void\" +","    \" catch for switch while\" +","    \" continue function this with\" +","    \" default if throw\" +","    \" delete in try\" +","    \" do instanceof typeof\" +","    \" abstract enum int short\" +","    \" boolean export interface static\" +","    \" byte extends long super\" +","    \" char final native synchronized\" +","    \" class float package throws\" +","    \" const goto private transient\" +","    \" debugger implements protected volatile\" +","    \" double import public let yield\"","  ).split(\" \");","","  var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};","","  for(var i=0, l=reservedWords.length; i<l; i++) {","    compilerWords[reservedWords[i]] = true;","  }","","  JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {","    if(!JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]+$/.test(name)) {","      return true;","    }","    return false;","  };","","})(Handlebars.Compiler, Handlebars.JavaScriptCompiler);","","Handlebars.precompile = function(string, options) {","  options = options || {};","","  var ast = Handlebars.parse(string);","  var environment = new Handlebars.Compiler().compile(ast, options);","  return new Handlebars.JavaScriptCompiler().compile(environment, options);","};","","Handlebars.compile = function(string, options) {","  options = options || {};","","  var compiled;","  function compile() {","    var ast = Handlebars.parse(string);","    var environment = new Handlebars.Compiler().compile(ast, options);","    var templateSpec = new Handlebars.JavaScriptCompiler().compile(environment, options, undefined, true);","    return Handlebars.template(templateSpec);","  }","","  // Template is only compiled on first use and cached after that point.","  return function(context, options) {","    if (!compiled) {","      compiled = compile();","    }","    return compiled.call(this, context, options);","  };","};","","// END(BROWSER)","// This file contains YUI-specific wrapper code and overrides for the","// handlebars-compiler module.","","/**","Handlebars parser and compiler. Use this module when you need to compile","Handlebars templates.","","@module handlebars","@submodule handlebars-compiler","*/","","var levels = ['debug', 'info', 'warn', 'error'];","","/**","Logs a debugging message. Note that messages will only be logged when the","handlebars module is loaded in \"debug\" mode.","","@method log","@param {String} level Log level for this message. Supported levels are \"debug\",","    \"info\", \"warn\", and \"error\".","@param {String} message Message to log.","@for Handlebars","*/","Handlebars.logger.log = function (level, message) {","","};","","/**","Compiles and renders a Handlebars template string in a single step.","","If you'll be using a template more than once, it's more efficient to compile it","into a function once using `compile()`, and then render it whenever you need to","by simply executing the compiled function. However, if you only need to compile","and render a template once, `render()` is a handy shortcut for doing both in a","single step.","","@example","","    Y.Handlebars.render('The pie of the day is {{pie}}!', {","        pie: 'Maple Custard'","    });","    // => \"The pie of the day is Maple Custard!\"","","@method render","@param {String} string Handlebars template string to render.","@param {Object} context Context object to pass to the template.","@param {Object} [options] Compile/render options.","    @param {Object} [options.helpers] Helper functions.","    @param {Object} [options.partials] Partials.","    @param {Object} [options.data] Data.","@return {String} Rendered template string.","*/","Handlebars.render = function (string, context, options) {","    return Handlebars.compile(string)(context, options);","};","","// The rest of this file is just API docs for methods defined in Handlebars","// itself.","","/**","Compiles a Handlebars template string into a function. To render the template,","call the function and pass in a context object.","","@example","","    var template = Y.Handlebars.compile('The pie of the day is {{pie}}!.');","    template({pie: 'Pecan'});","    // => \"The pie of the day is Pecan!\"","","@method compile","@param {String} string Handlebars template string to compile.","@param {Object} [options] Compiler options.","@return {Function} Compiled template function.","*/","","/**","Precompiles a Handlebars template string into a string of JavaScript code. This","can be used to precompile a template at build time or on the server, and the","resulting template can then be rendered at runtime or on the client without","needing to go through a compile step.","","To render a precompiled template, evaluate the code and then pass the resulting","function to `Y.Handlebars.template()` to get back an executable template","function.","","@method precompile","@param {String} string Handlebars template string to compile.","@param {Object} [options] Compiler options.","@return {String} Precompiled template code.","*/","","","}, '3.7.3', {\"requires\": [\"handlebars-base\"]});"];
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"].lines = {"1":0,"13":0,"17":0,"18":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"112":0,"115":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"138":0,"139":0,"141":0,"142":0,"143":0,"144":0,"147":0,"148":0,"149":0,"151":0,"152":0,"154":0,"157":0,"158":0,"160":0,"163":0,"164":0,"166":0,"167":0,"170":0,"174":0,"175":0,"177":0,"178":0,"180":0,"181":0,"182":0,"184":0,"185":0,"187":0,"191":0,"196":0,"197":0,"198":0,"202":0,"203":0,"204":0,"205":0,"206":0,"210":0,"212":0,"213":0,"215":0,"216":0,"218":0,"219":0,"222":0,"223":0,"224":0,"225":0,"226":0,"230":0,"231":0,"234":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"252":0,"253":0,"255":0,"260":0,"263":0,"265":0,"271":0,"273":0,"274":0,"278":0,"279":0,"280":0,"281":0,"284":0,"285":0,"286":0,"288":0,"289":0,"290":0,"293":0,"298":0,"301":0,"302":0,"304":0,"305":0,"307":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":0,"331":0,"332":0,"335":0,"336":0,"339":0,"342":0,"343":0,"346":0,"347":0,"348":0,"350":0,"353":0,"354":0,"355":0,"358":0,"359":0,"361":0,"363":0,"369":0,"370":0,"371":0,"373":0,"374":0,"375":0,"376":0,"377":0,"378":0,"379":0,"382":0,"383":0,"384":0,"385":0,"389":0,"390":0,"391":0,"392":0,"393":0,"394":0,"395":0,"396":0,"397":0,"398":0,"400":0,"401":0,"403":0,"408":0,"409":0,"410":0,"412":0,"416":0,"419":0,"422":0,"425":0,"428":0,"430":0,"431":0,"433":0,"434":0,"436":0,"437":0,"438":0,"440":0,"441":0,"442":0,"443":0,"444":0,"445":0,"446":0,"447":0,"448":0,"449":0,"450":0,"451":0,"452":0,"453":0,"454":0,"455":0,"456":0,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"472":0,"473":0,"474":0,"475":0,"476":0,"477":0,"478":0,"479":0,"480":0,"481":0,"482":0,"483":0,"484":0,"485":0,"486":0,"487":0,"488":0,"489":0,"490":0,"491":0,"492":0,"495":0,"496":0,"497":0,"498":0,"499":0,"501":0,"502":0,"503":0,"504":0,"505":0,"506":0,"507":0,"508":0,"509":0,"510":0,"512":0,"514":0,"516":0,"517":0,"519":0,"523":0,"525":0,"526":0,"527":0,"530":0,"531":0,"534":0,"541":0,"547":0,"549":0,"551":0,"552":0,"553":0,"554":0,"557":0,"558":0,"559":0,"560":0,"562":0,"563":0,"567":0,"572":0,"579":0,"580":0,"584":0,"585":0,"588":0,"589":0,"590":0,"594":0,"595":0,"596":0,"597":0,"598":0,"599":0,"601":0,"602":0,"606":0,"607":0,"608":0,"611":0,"612":0,"613":0,"616":0,"617":0,"618":0,"620":0,"622":0,"623":0,"625":0,"626":0,"630":0,"631":0,"632":0,"636":0,"639":0,"640":0,"641":0,"644":0,"645":0,"646":0,"649":0,"650":0,"651":0,"654":0,"655":0,"656":0,"666":0,"667":0,"669":0,"675":0,"679":0,"681":0,"682":0,"684":0,"685":0,"687":0,"688":0,"689":0,"690":0,"691":0,"693":0,"695":0,"699":0,"705":0,"706":0,"707":0,"710":0,"711":0,"720":0,"721":0,"722":0,"726":0,"730":0,"734":0,"735":0,"737":0,"738":0,"739":0,"741":0,"743":0,"744":0,"747":0,"751":0,"752":0,"754":0,"756":0,"758":0,"759":0,"761":0,"765":0,"769":0,"773":0,"774":0,"777":0,"778":0,"781":0,"783":0,"784":0,"785":0,"786":0,"790":0,"791":0,"792":0,"793":0,"795":0,"799":0,"800":0,"801":0,"802":0,"805":0,"809":0,"811":0,"813":0,"814":0,"815":0,"817":0,"818":0,"823":0,"824":0,"826":0,"827":0,"829":0,"832":0,"833":0,"837":0,"841":0,"842":0,"844":0,"845":0,"846":0,"847":0,"849":0,"852":0,"853":0,"855":0,"860":0,"862":0,"864":0,"865":0,"867":0,"871":0,"873":0,"874":0,"876":0,"877":0,"878":0,"879":0,"882":0,"884":0,"888":0,"891":0,"892":0,"893":0,"894":0,"896":0,"901":0,"902":0,"903":0,"905":0,"906":0,"911":0,"915":0,"919":0,"926":0,"930":0,"934":0,"936":0,"937":0,"938":0,"943":0,"944":0,"945":0,"948":0,"949":0,"951":0,"952":0,"953":0,"954":0,"958":0,"959":0,"964":0,"966":0,"967":0,"969":0,"970":0,"971":0,"974":0,"975":0,"977":0,"983":0,"984":0,"986":0,"987":0,"989":0,"992":0,"997":0,"998":0,"1000":0,"1001":0,"1003":0,"1004":0,"1006":0,"1009":0,"1013":0,"1014":0,"1017":0,"1021":0,"1022":0,"1023":0,"1024":0,"1027":0,"1032":0,"1033":0,"1035":0,"1040":0,"1047":0,"1048":0,"1050":0,"1052":0,"1053":0,"1054":0,"1059":0,"1061":0,"1062":0,"1063":0,"1064":0,"1066":0,"1068":0,"1070":0,"1072":0,"1073":0,"1075":0,"1076":0,"1078":0,"1082":0,"1086":0,"1087":0,"1091":0,"1095":0,"1097":0,"1098":0,"1099":0,"1100":0,"1101":0,"1103":0,"1106":0,"1107":0,"1109":0,"1114":0,"1115":0,"1119":0,"1121":0,"1122":0,"1126":0,"1127":0,"1128":0,"1129":0,"1133":0,"1134":0,"1138":0,"1139":0,"1142":0,"1143":0,"1146":0,"1148":0,"1149":0,"1152":0,"1153":0,"1155":0,"1157":0,"1158":0,"1159":0,"1173":0,"1175":0,"1176":0,"1178":0,"1179":0,"1180":0,"1191":0,"1193":0,"1194":0,"1196":0,"1197":0,"1199":0,"1209":0,"1222":0,"1223":0,"1224":0,"1225":0,"1236":0,"1237":0,"1239":0,"1240":0,"1241":0,"1244":0,"1255":0,"1256":0,"1268":0,"1278":0,"1289":0,"1291":0,"1292":0,"1304":0,"1305":0,"1318":0,"1319":0,"1329":0,"1339":0,"1351":0,"1363":0,"1364":0,"1366":0,"1380":0,"1382":0,"1383":0,"1385":0,"1398":0,"1399":0,"1415":0,"1417":0,"1418":0,"1420":0,"1421":0,"1423":0,"1424":0,"1426":0,"1427":0,"1438":0,"1440":0,"1441":0,"1444":0,"1445":0,"1456":0,"1457":0,"1459":0,"1467":0,"1469":0,"1470":0,"1471":0,"1473":0,"1474":0,"1475":0,"1476":0,"1477":0,"1482":0,"1484":0,"1485":0,"1488":0,"1491":0,"1493":0,"1494":0,"1496":0,"1500":0,"1501":0,"1503":0,"1504":0,"1509":0,"1510":0,"1514":0,"1515":0,"1516":0,"1521":0,"1522":0,"1526":0,"1527":0,"1528":0,"1532":0,"1534":0,"1535":0,"1539":0,"1540":0,"1541":0,"1545":0,"1546":0,"1547":0,"1551":0,"1553":0,"1554":0,"1556":0,"1557":0,"1562":0,"1564":0,"1565":0,"1567":0,"1572":0,"1580":0,"1581":0,"1582":0,"1584":0,"1595":0,"1597":0,"1599":0,"1600":0,"1604":0,"1605":0,"1606":0,"1607":0,"1610":0,"1611":0,"1612":0,"1615":0,"1616":0,"1619":0,"1620":0,"1621":0,"1623":0,"1624":0,"1628":0,"1629":0,"1632":0,"1633":0,"1636":0,"1637":0,"1641":0,"1659":0,"1661":0,"1662":0,"1665":0,"1666":0,"1667":0,"1669":0,"1674":0,"1675":0,"1677":0,"1678":0,"1679":0,"1682":0,"1683":0,"1685":0,"1686":0,"1687":0,"1688":0,"1689":0,"1690":0,"1694":0,"1695":0,"1696":0,"1698":0,"1714":0,"1726":0,"1755":0,"1756":0};
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"].functions = {"anonymous:23":0,"parseError:111":0,"popStack:141":0,"lex:147":0,"parse:114":0,"parseError:303":0,"setInput:310":0,"input:319":0,"unput:330":0,"more:334":0,"less:338":0,"pastInput:341":0,"upcomingInput:345":0,"showPosition:352":0,"next:357":0,"lex:407":0,"begin:415":0,"popState:418":0,"_currentRules:421":0,"topState:424":0,"begin:427":0,"anonymous:431":0,"(anonymous 3):301":0,"Parser:498":0,"(anonymous 2):17":0,"parse:504":0,"commonjsMain:505":0,"parse:525":0,"print:530":0,"log:541":0,"ProgramNode:551":0,"MustacheNode:557":0,"PartialNode:579":0,"verifyMatch:588":0,"BlockNode:594":0,"ContentNode:606":0,"HashNode:611":0,"IdNode:616":0,"StringNode:639":0,"IntegerNode:644":0,"BooleanNode:649":0,"CommentNode:654":0,"(anonymous 4):547":0,"disassemble:678":0,"compile:704":0,"accept:729":0,"(anonymous 6):743":0,"program:733":0,"compileProgram:750":0,"block:768":0,"hash:808":0,"partial:822":0,"content:836":0,"mustache:840":0,"ambiguousMustache:859":0,"simpleMustache:870":0,"helperMustache:887":0,"ID:900":0,"STRING:910":0,"INTEGER:914":0,"BOOLEAN:918":0,"opcode:925":0,"declare:929":0,"addDepth:933":0,"classifyMustache:942":0,"pushParams:963":0,"setupMustacheParams:982":0,"setupFullMustacheParams:996":0,"Literal:1013":0,"nameLookup:1020":0,"appendToBuffer:1031":0,"initializeBuffer:1039":0,"compile:1046":0,"nextOpcode:1085":0,"eat:1090":0,"preamble:1094":0,"createFunctionContext:1118":0,"(anonymous 7):1178":0,"blockValue:1172":0,"ambiguousBlockValue:1190":0,"appendContent:1208":0,"append:1221":0,"appendEscaped:1235":0,"getContext:1254":0,"lookupOnContext:1267":0,"pushContext:1277":0,"(anonymous 8):1291":0,"resolvePossibleLambda:1288":0,"(anonymous 9):1304":0,"lookup:1303":0,"pushStringParam:1317":0,"pushString:1328":0,"push:1338":0,"pushLiteral:1350":0,"pushProgram:1362":0,"invokeHelper:1379":0,"invokeKnownHelper:1397":0,"invokeAmbiguous:1414":0,"invokePartial:1437":0,"assignToHash:1455":0,"compileChildren:1466":0,"programExpression:1481":0,"register:1508":0,"useRegister:1513":0,"pushStackLiteral:1520":0,"pushStack:1525":0,"replaceStack:1531":0,"nextStack:1538":0,"incrStack:1544":0,"popStack:1550":0,"topStack:1561":0,"quotedString:1571":0,"setupHelper:1579":0,"setupParams:1594":0,"isValidJavaScriptVariableName:1665":0,"(anonymous 5):669":0,"precompile:1674":0,"compile:1686":0,"(anonymous 10):1694":0,"compile:1682":0,"render:1755":0,"(anonymous 1):1":0};
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"].coveredLines = 799;
_yuitest_coverage["build/handlebars-compiler/handlebars-compiler.js"].coveredFunctions = 122;
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1);
YUI.add('handlebars-compiler', function (Y, NAME) {

/*!
Handlebars.js - Copyright (C) 2011 Yehuda Katz
https://raw.github.com/wycats/handlebars.js/master/LICENSE
*/
// This file contains code that will be inserted at the beginning of the
// handlebars-compiler module.

// This is necessary because the Y.Handlebars object is created in the
// handlebars-base module, but the native Handlebars code expects to use a local
// Handlebars reference.
_yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 1)", 1);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 13);
var Handlebars = Y.Handlebars;
/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */

/* Jison generated parser */
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 17);
var handlebars = (function(){
_yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 2)", 17);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 18);
var parser = {trace: function trace() { },
yy: {},
symbols_: {"error":2,"root":3,"program":4,"EOF":5,"statements":6,"simpleInverse":7,"statement":8,"openInverse":9,"closeBlock":10,"openBlock":11,"mustache":12,"partial":13,"CONTENT":14,"COMMENT":15,"OPEN_BLOCK":16,"inMustache":17,"CLOSE":18,"OPEN_INVERSE":19,"OPEN_ENDBLOCK":20,"path":21,"OPEN":22,"OPEN_UNESCAPED":23,"OPEN_PARTIAL":24,"params":25,"hash":26,"param":27,"STRING":28,"INTEGER":29,"BOOLEAN":30,"hashSegments":31,"hashSegment":32,"ID":33,"EQUALS":34,"pathSegments":35,"SEP":36,"$accept":0,"$end":1},
terminals_: {2:"error",5:"EOF",14:"CONTENT",15:"COMMENT",16:"OPEN_BLOCK",18:"CLOSE",19:"OPEN_INVERSE",20:"OPEN_ENDBLOCK",22:"OPEN",23:"OPEN_UNESCAPED",24:"OPEN_PARTIAL",28:"STRING",29:"INTEGER",30:"BOOLEAN",33:"ID",34:"EQUALS",36:"SEP"},
productions_: [0,[3,2],[4,3],[4,1],[4,0],[6,1],[6,2],[8,3],[8,3],[8,1],[8,1],[8,1],[8,1],[11,3],[9,3],[10,3],[12,3],[12,3],[13,3],[13,4],[7,2],[17,3],[17,2],[17,2],[17,1],[25,2],[25,1],[27,1],[27,1],[27,1],[27,1],[26,1],[31,2],[31,1],[32,3],[32,3],[32,3],[32,3],[21,1],[35,3],[35,1]],
performAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$) {

_yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "anonymous", 23);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 25);
var $0 = $$.length - 1;
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 26);
switch (yystate) {
case 1: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 27);
return $$[$0-1]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 28);
break;
case 2: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 29);
this.$ = new yy.ProgramNode($$[$0-2], $$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 30);
break;
case 3: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 31);
this.$ = new yy.ProgramNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 32);
break;
case 4: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 33);
this.$ = new yy.ProgramNode([]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 34);
break;
case 5: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 35);
this.$ = [$$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 36);
break;
case 6: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 37);
$$[$0-1].push($$[$0]); this.$ = $$[$0-1]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 38);
break;
case 7: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 39);
this.$ = new yy.BlockNode($$[$0-2], $$[$0-1].inverse, $$[$0-1], $$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 40);
break;
case 8: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 41);
this.$ = new yy.BlockNode($$[$0-2], $$[$0-1], $$[$0-1].inverse, $$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 42);
break;
case 9: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 43);
this.$ = $$[$0]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 44);
break;
case 10: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 45);
this.$ = $$[$0]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 46);
break;
case 11: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 47);
this.$ = new yy.ContentNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 48);
break;
case 12: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 49);
this.$ = new yy.CommentNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 50);
break;
case 13: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 51);
this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 52);
break;
case 14: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 53);
this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 54);
break;
case 15: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 55);
this.$ = $$[$0-1]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 56);
break;
case 16: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 57);
this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 58);
break;
case 17: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 59);
this.$ = new yy.MustacheNode($$[$0-1][0], $$[$0-1][1], true); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 60);
break;
case 18: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 61);
this.$ = new yy.PartialNode($$[$0-1]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 62);
break;
case 19: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 63);
this.$ = new yy.PartialNode($$[$0-2], $$[$0-1]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 64);
break;
case 20: 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 66);
break;
case 21: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 67);
this.$ = [[$$[$0-2]].concat($$[$0-1]), $$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 68);
break;
case 22: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 69);
this.$ = [[$$[$0-1]].concat($$[$0]), null]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 70);
break;
case 23: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 71);
this.$ = [[$$[$0-1]], $$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 72);
break;
case 24: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 73);
this.$ = [[$$[$0]], null]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 74);
break;
case 25: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 75);
$$[$0-1].push($$[$0]); this.$ = $$[$0-1]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 76);
break;
case 26: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 77);
this.$ = [$$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 78);
break;
case 27: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 79);
this.$ = $$[$0]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 80);
break;
case 28: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 81);
this.$ = new yy.StringNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 82);
break;
case 29: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 83);
this.$ = new yy.IntegerNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 84);
break;
case 30: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 85);
this.$ = new yy.BooleanNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 86);
break;
case 31: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 87);
this.$ = new yy.HashNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 88);
break;
case 32: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 89);
$$[$0-1].push($$[$0]); this.$ = $$[$0-1]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 90);
break;
case 33: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 91);
this.$ = [$$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 92);
break;
case 34: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 93);
this.$ = [$$[$0-2], $$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 94);
break;
case 35: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 95);
this.$ = [$$[$0-2], new yy.StringNode($$[$0])]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 96);
break;
case 36: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 97);
this.$ = [$$[$0-2], new yy.IntegerNode($$[$0])]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 98);
break;
case 37: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 99);
this.$ = [$$[$0-2], new yy.BooleanNode($$[$0])]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 100);
break;
case 38: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 101);
this.$ = new yy.IdNode($$[$0]); 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 102);
break;
case 39: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 103);
$$[$0-2].push($$[$0]); this.$ = $$[$0-2]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 104);
break;
case 40: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 105);
this.$ = [$$[$0]]; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 106);
break;
}
},
table: [{3:1,4:2,5:[2,4],6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{1:[3]},{5:[1,16]},{5:[2,3],7:17,8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,19],20:[2,3],22:[1,13],23:[1,14],24:[1,15]},{5:[2,5],14:[2,5],15:[2,5],16:[2,5],19:[2,5],20:[2,5],22:[2,5],23:[2,5],24:[2,5]},{4:20,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{4:21,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{5:[2,9],14:[2,9],15:[2,9],16:[2,9],19:[2,9],20:[2,9],22:[2,9],23:[2,9],24:[2,9]},{5:[2,10],14:[2,10],15:[2,10],16:[2,10],19:[2,10],20:[2,10],22:[2,10],23:[2,10],24:[2,10]},{5:[2,11],14:[2,11],15:[2,11],16:[2,11],19:[2,11],20:[2,11],22:[2,11],23:[2,11],24:[2,11]},{5:[2,12],14:[2,12],15:[2,12],16:[2,12],19:[2,12],20:[2,12],22:[2,12],23:[2,12],24:[2,12]},{17:22,21:23,33:[1,25],35:24},{17:26,21:23,33:[1,25],35:24},{17:27,21:23,33:[1,25],35:24},{17:28,21:23,33:[1,25],35:24},{21:29,33:[1,25],35:24},{1:[2,1]},{6:30,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{5:[2,6],14:[2,6],15:[2,6],16:[2,6],19:[2,6],20:[2,6],22:[2,6],23:[2,6],24:[2,6]},{17:22,18:[1,31],21:23,33:[1,25],35:24},{10:32,20:[1,33]},{10:34,20:[1,33]},{18:[1,35]},{18:[2,24],21:40,25:36,26:37,27:38,28:[1,41],29:[1,42],30:[1,43],31:39,32:44,33:[1,45],35:24},{18:[2,38],28:[2,38],29:[2,38],30:[2,38],33:[2,38],36:[1,46]},{18:[2,40],28:[2,40],29:[2,40],30:[2,40],33:[2,40],36:[2,40]},{18:[1,47]},{18:[1,48]},{18:[1,49]},{18:[1,50],21:51,33:[1,25],35:24},{5:[2,2],8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,2],22:[1,13],23:[1,14],24:[1,15]},{14:[2,20],15:[2,20],16:[2,20],19:[2,20],22:[2,20],23:[2,20],24:[2,20]},{5:[2,7],14:[2,7],15:[2,7],16:[2,7],19:[2,7],20:[2,7],22:[2,7],23:[2,7],24:[2,7]},{21:52,33:[1,25],35:24},{5:[2,8],14:[2,8],15:[2,8],16:[2,8],19:[2,8],20:[2,8],22:[2,8],23:[2,8],24:[2,8]},{14:[2,14],15:[2,14],16:[2,14],19:[2,14],20:[2,14],22:[2,14],23:[2,14],24:[2,14]},{18:[2,22],21:40,26:53,27:54,28:[1,41],29:[1,42],30:[1,43],31:39,32:44,33:[1,45],35:24},{18:[2,23]},{18:[2,26],28:[2,26],29:[2,26],30:[2,26],33:[2,26]},{18:[2,31],32:55,33:[1,56]},{18:[2,27],28:[2,27],29:[2,27],30:[2,27],33:[2,27]},{18:[2,28],28:[2,28],29:[2,28],30:[2,28],33:[2,28]},{18:[2,29],28:[2,29],29:[2,29],30:[2,29],33:[2,29]},{18:[2,30],28:[2,30],29:[2,30],30:[2,30],33:[2,30]},{18:[2,33],33:[2,33]},{18:[2,40],28:[2,40],29:[2,40],30:[2,40],33:[2,40],34:[1,57],36:[2,40]},{33:[1,58]},{14:[2,13],15:[2,13],16:[2,13],19:[2,13],20:[2,13],22:[2,13],23:[2,13],24:[2,13]},{5:[2,16],14:[2,16],15:[2,16],16:[2,16],19:[2,16],20:[2,16],22:[2,16],23:[2,16],24:[2,16]},{5:[2,17],14:[2,17],15:[2,17],16:[2,17],19:[2,17],20:[2,17],22:[2,17],23:[2,17],24:[2,17]},{5:[2,18],14:[2,18],15:[2,18],16:[2,18],19:[2,18],20:[2,18],22:[2,18],23:[2,18],24:[2,18]},{18:[1,59]},{18:[1,60]},{18:[2,21]},{18:[2,25],28:[2,25],29:[2,25],30:[2,25],33:[2,25]},{18:[2,32],33:[2,32]},{34:[1,57]},{21:61,28:[1,62],29:[1,63],30:[1,64],33:[1,25],35:24},{18:[2,39],28:[2,39],29:[2,39],30:[2,39],33:[2,39],36:[2,39]},{5:[2,19],14:[2,19],15:[2,19],16:[2,19],19:[2,19],20:[2,19],22:[2,19],23:[2,19],24:[2,19]},{5:[2,15],14:[2,15],15:[2,15],16:[2,15],19:[2,15],20:[2,15],22:[2,15],23:[2,15],24:[2,15]},{18:[2,34],33:[2,34]},{18:[2,35],33:[2,35]},{18:[2,36],33:[2,36]},{18:[2,37],33:[2,37]}],
defaultActions: {16:[2,1],37:[2,23],53:[2,21]},
parseError: function parseError(str, hash) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "parseError", 111);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 112);
throw new Error(str);
},
parse: function parse(input) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "parse", 114);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 115);
var self = this,
        stack = [0],
        vstack = [null], // semantic value stack
        lstack = [], // location stack
        table = this.table,
        yytext = '',
        yylineno = 0,
        yyleng = 0,
        recovering = 0,
        TERROR = 2,
        EOF = 1;

    //this.reductionCount = this.shiftCount = 0;

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 129);
this.lexer.setInput(input);
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 130);
this.lexer.yy = this.yy;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 131);
this.yy.lexer = this.lexer;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 132);
this.yy.parser = this;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 133);
if (typeof this.lexer.yylloc == 'undefined')
        {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 134);
this.lexer.yylloc = {};}
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 135);
var yyloc = this.lexer.yylloc;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 136);
lstack.push(yyloc);

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 138);
if (typeof this.yy.parseError === 'function')
        {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 139);
this.parseError = this.yy.parseError;}

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 141);
function popStack (n) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "popStack", 141);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 142);
stack.length = stack.length - 2*n;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 143);
vstack.length = vstack.length - n;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 144);
lstack.length = lstack.length - n;
    }

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 147);
function lex() {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "lex", 147);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 148);
var token;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 149);
token = self.lexer.lex() || 1; // $end = 1
        // if token isn't its numeric value, convert
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 151);
if (typeof token !== 'number') {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 152);
token = self.symbols_[token] || token;
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 154);
return token;
    }

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 157);
var symbol, preErrorSymbol, state, action, a, r, yyval={},p,len,newState, expected;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 158);
while (true) {
        // retreive state number from top of stack
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 160);
state = stack[stack.length-1];

        // use default actions if available
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 163);
if (this.defaultActions[state]) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 164);
action = this.defaultActions[state];
        } else {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 166);
if (symbol === null || typeof symbol == 'undefined') {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 167);
symbol = lex();
            }
            // read action for current state and first input
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 170);
action = table[state] && table[state][symbol];
        }

        // handle parse error
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 174);
_handle_error:
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 175);
if (typeof action === 'undefined' || !action.length || !action[0]) {

            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 177);
var errStr = '';
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 178);
if (!recovering) {
                // Report error
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 180);
expected = [];
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 181);
for (p in table[state]) {if (this.terminals_[p] && p > 2) {
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 182);
expected.push("'"+this.terminals_[p]+"'");
                }}
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 184);
if (this.lexer.showPosition) {
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 185);
errStr = 'Parse error on line '+(yylineno+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+expected.join(', ') + ", got '" + (this.terminals_[symbol] || symbol)+ "'";
                } else {
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 187);
errStr = 'Parse error on line '+(yylineno+1)+": Unexpected " +
                                  (symbol == 1 /*EOF*/ ? "end of input" :
                                              ("'"+(this.terminals_[symbol] || symbol)+"'"));
                }
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 191);
this.parseError(errStr,
                    {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});
            }

            // just recovered from another error
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 196);
if (recovering == 3) {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 197);
if (symbol == EOF) {
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 198);
throw new Error(errStr || 'Parsing halted.');
                }

                // discard current lookahead and grab another
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 202);
yyleng = this.lexer.yyleng;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 203);
yytext = this.lexer.yytext;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 204);
yylineno = this.lexer.yylineno;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 205);
yyloc = this.lexer.yylloc;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 206);
symbol = lex();
            }

            // try to recover from error
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 210);
while (1) {
                // check for error recovery rule in this state
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 212);
if ((TERROR.toString()) in table[state]) {
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 213);
break;
                }
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 215);
if (state === 0) {
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 216);
throw new Error(errStr || 'Parsing halted.');
                }
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 218);
popStack(1);
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 219);
state = stack[stack.length-1];
            }

            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 222);
preErrorSymbol = symbol == 2 ? null : symbol; // save the lookahead token
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 223);
symbol = TERROR;         // insert generic error symbol as new lookahead
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 224);
state = stack[stack.length-1];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 225);
action = table[state] && table[state][TERROR];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 226);
recovering = 3; // allow 3 real symbols to be shifted before reporting a new error
        }

        // this shouldn't happen, unless resolve defaults are off
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 230);
if (action[0] instanceof Array && action.length > 1) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 231);
throw new Error('Parse Error: multiple actions possible at state: '+state+', token: '+symbol);
        }

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 234);
switch (action[0]) {

            case 1: // shift
                //this.shiftCount++;

                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 239);
stack.push(symbol);
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 240);
vstack.push(this.lexer.yytext);
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 241);
lstack.push(this.lexer.yylloc);
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 242);
stack.push(action[1]); // push state
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 243);
symbol = null;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 244);
if (!preErrorSymbol) { // normal execution/no error
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 245);
yyleng = this.lexer.yyleng;
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 246);
yytext = this.lexer.yytext;
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 247);
yylineno = this.lexer.yylineno;
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 248);
yyloc = this.lexer.yylloc;
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 249);
if (recovering > 0)
                        {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 250);
recovering--;}
                } else { // error just occurred, resume old lookahead f/ before error
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 252);
symbol = preErrorSymbol;
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 253);
preErrorSymbol = null;
                }
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 255);
break;

            case 2: // reduce
                //this.reductionCount++;

                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 260);
len = this.productions_[action[1]][1];

                // perform semantic action
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 263);
yyval.$ = vstack[vstack.length-len]; // default to $$ = $1
                // default location, uses first token for firsts, last for lasts
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 265);
yyval._$ = {
                    first_line: lstack[lstack.length-(len||1)].first_line,
                    last_line: lstack[lstack.length-1].last_line,
                    first_column: lstack[lstack.length-(len||1)].first_column,
                    last_column: lstack[lstack.length-1].last_column
                };
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 271);
r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);

                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 273);
if (typeof r !== 'undefined') {
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 274);
return r;
                }

                // pop off stack
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 278);
if (len) {
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 279);
stack = stack.slice(0,-1*len*2);
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 280);
vstack = vstack.slice(0, -1*len);
                    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 281);
lstack = lstack.slice(0, -1*len);
                }

                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 284);
stack.push(this.productions_[action[1]][0]);    // push nonterminal (reduce)
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 285);
vstack.push(yyval.$);
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 286);
lstack.push(yyval._$);
                // goto new state = table[STATE][NONTERMINAL]
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 288);
newState = table[stack[stack.length-2]][stack[stack.length-1]];
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 289);
stack.push(newState);
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 290);
break;

            case 3: // accept
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 293);
return true;
        }

    }

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 298);
return true;
}};
/* Jison generated lexer */
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 301);
var lexer = (function(){
_yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 3)", 301);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 302);
var lexer = ({EOF:1,
parseError:function parseError(str, hash) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "parseError", 303);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 304);
if (this.yy.parser) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 305);
this.yy.parser.parseError(str, hash);
        } else {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 307);
throw new Error(str);
        }
    },
setInput:function (input) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "setInput", 310);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 311);
this._input = input;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 312);
this._more = this._less = this.done = false;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 313);
this.yylineno = this.yyleng = 0;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 314);
this.yytext = this.matched = this.match = '';
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 315);
this.conditionStack = ['INITIAL'];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 316);
this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 317);
return this;
    },
input:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "input", 319);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 320);
var ch = this._input[0];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 321);
this.yytext+=ch;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 322);
this.yyleng++;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 323);
this.match+=ch;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 324);
this.matched+=ch;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 325);
var lines = ch.match(/\n/);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 326);
if (lines) {this.yylineno++;}
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 327);
this._input = this._input.slice(1);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 328);
return ch;
    },
unput:function (ch) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "unput", 330);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 331);
this._input = ch + this._input;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 332);
return this;
    },
more:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "more", 334);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 335);
this._more = true;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 336);
return this;
    },
less:function (n) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "less", 338);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 339);
this._input = this.match.slice(n) + this._input;
    },
pastInput:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pastInput", 341);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 342);
var past = this.matched.substr(0, this.matched.length - this.match.length);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 343);
return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
    },
upcomingInput:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "upcomingInput", 345);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 346);
var next = this.match;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 347);
if (next.length < 20) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 348);
next += this._input.substr(0, 20-next.length);
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 350);
return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\n/g, "");
    },
showPosition:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "showPosition", 352);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 353);
var pre = this.pastInput();
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 354);
var c = new Array(pre.length + 1).join("-");
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 355);
return pre + this.upcomingInput() + "\n" + c+"^";
    },
next:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "next", 357);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 358);
if (this.done) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 359);
return this.EOF;
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 361);
if (!this._input) {this.done = true;}

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 363);
var token,
            match,
            tempMatch,
            index,
            col,
            lines;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 369);
if (!this._more) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 370);
this.yytext = '';
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 371);
this.match = '';
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 373);
var rules = this._currentRules();
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 374);
for (var i=0;i < rules.length; i++) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 375);
tempMatch = this._input.match(this.rules[rules[i]]);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 376);
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 377);
match = tempMatch;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 378);
index = i;
                _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 379);
if (!this.options.flex) {break;}
            }
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 382);
if (match) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 383);
lines = match[0].match(/\n.*/g);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 384);
if (lines) {this.yylineno += lines.length;}
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 385);
this.yylloc = {first_line: this.yylloc.last_line,
                           last_line: this.yylineno+1,
                           first_column: this.yylloc.last_column,
                           last_column: lines ? lines[lines.length-1].length-1 : this.yylloc.last_column + match[0].length};
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 389);
this.yytext += match[0];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 390);
this.match += match[0];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 391);
this.yyleng = this.yytext.length;
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 392);
this._more = false;
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 393);
this._input = this._input.slice(match[0].length);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 394);
this.matched += match[0];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 395);
token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 396);
if (this.done && this._input) {this.done = false;}
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 397);
if (token) {return token;}
            else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 398);
return;}
        }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 400);
if (this._input === "") {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 401);
return this.EOF;
        } else {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 403);
return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\n'+this.showPosition(),
                    {text: "", token: null, line: this.yylineno});
        }
    },
lex:function lex() {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "lex", 407);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 408);
var r = this.next();
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 409);
if (typeof r !== 'undefined') {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 410);
return r;
        } else {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 412);
return this.lex();
        }
    },
begin:function begin(condition) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "begin", 415);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 416);
this.conditionStack.push(condition);
    },
popState:function popState() {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "popState", 418);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 419);
return this.conditionStack.pop();
    },
_currentRules:function _currentRules() {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "_currentRules", 421);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 422);
return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;
    },
topState:function () {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "topState", 424);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 425);
return this.conditionStack[this.conditionStack.length-2];
    },
pushState:function begin(condition) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "begin", 427);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 428);
this.begin(condition);
    }});
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 430);
lexer.options = {};
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 431);
lexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {

_yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "anonymous", 431);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 433);
var YYSTATE=YY_START
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 434);
switch($avoiding_name_collisions) {
case 0:
                                   _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 436);
if(yy_.yytext.slice(-1) !== "\\") {this.begin("mu");}
                                   _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 437);
if(yy_.yytext.slice(-1) === "\\") {yy_.yytext = yy_.yytext.substr(0,yy_.yyleng-1), this.begin("emu");}
                                   _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 438);
if(yy_.yytext) {return 14;}
                                 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 440);
break;
case 1: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 441);
return 14; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 442);
break;
case 2: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 443);
this.popState(); return 14; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 444);
break;
case 3: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 445);
return 24; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 446);
break;
case 4: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 447);
return 16; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 448);
break;
case 5: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 449);
return 20; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 450);
break;
case 6: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 451);
return 19; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 452);
break;
case 7: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 453);
return 19; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 454);
break;
case 8: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 455);
return 23; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 456);
break;
case 9: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 457);
return 23; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 458);
break;
case 10: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 459);
yy_.yytext = yy_.yytext.substr(3,yy_.yyleng-5); this.popState(); return 15; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 460);
break;
case 11: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 461);
return 22; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 462);
break;
case 12: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 463);
return 34; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 464);
break;
case 13: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 465);
return 33; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 466);
break;
case 14: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 467);
return 33; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 468);
break;
case 15: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 469);
return 36; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 470);
break;
case 16: /*ignore whitespace*/ 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 472);
break;
case 17: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 473);
this.popState(); return 18; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 474);
break;
case 18: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 475);
this.popState(); return 18; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 476);
break;
case 19: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 477);
yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2).replace(/\\"/g,'"'); return 28; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 478);
break;
case 20: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 479);
return 30; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 480);
break;
case 21: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 481);
return 30; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 482);
break;
case 22: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 483);
return 29; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 484);
break;
case 23: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 485);
return 33; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 486);
break;
case 24: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 487);
yy_.yytext = yy_.yytext.substr(1, yy_.yyleng-2); return 33; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 488);
break;
case 25: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 489);
return 'INVALID'; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 490);
break;
case 26: _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 491);
return 5; 
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 492);
break;
}
};
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 495);
lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{)))/,/^(?:\{\{>)/,/^(?:\{\{#)/,/^(?:\{\{\/)/,/^(?:\{\{\^)/,/^(?:\{\{\s*else\b)/,/^(?:\{\{\{)/,/^(?:\{\{&)/,/^(?:\{\{![\s\S]*?\}\})/,/^(?:\{\{)/,/^(?:=)/,/^(?:\.(?=[} ]))/,/^(?:\.\.)/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}\}\})/,/^(?:\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:true(?=[}\s]))/,/^(?:false(?=[}\s]))/,/^(?:[0-9]+(?=[}\s]))/,/^(?:[a-zA-Z0-9_$-]+(?=[=}\s\/.]))/,/^(?:\[[^\]]*\])/,/^(?:.)/,/^(?:$)/];
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 496);
lexer.conditions = {"mu":{"rules":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"inclusive":false},"emu":{"rules":[2],"inclusive":false},"INITIAL":{"rules":[0,1,26],"inclusive":true}};
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 497);
return lexer;})()
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 498);
parser.lexer = lexer;function Parser () { _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "Parser", 498);
this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 499);
return new Parser;
})();
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 501);
if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 502);
exports.parser = handlebars;
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 503);
exports.Parser = handlebars.Parser;
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 504);
exports.parse = function () { _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "parse", 504);
return handlebars.parse.apply(handlebars, arguments); }
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 505);
exports.main = function commonjsMain(args) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "commonjsMain", 505);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 506);
if (!args[1])
        {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 507);
throw new Error('Usage: '+args[0]+' FILE');}
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 508);
var source, cwd;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 509);
if (typeof process !== 'undefined') {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 510);
source = require('fs').readFileSync(require('path').resolve(args[1]), "utf8");
    } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 512);
source = require("file").path(require("file").cwd()).join(args[1]).read({charset: "utf-8"});
    }
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 514);
return exports.parser.parse(source);
}
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 516);
if (typeof module !== 'undefined' && require.main === module) {
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 517);
exports.main(typeof process !== 'undefined' ? process.argv.slice(1) : require("system").args);
}
}_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 519);
;
/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */

// BEGIN(BROWSER)
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 523);
Handlebars.Parser = handlebars;

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 525);
Handlebars.parse = function(string) {
  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "parse", 525);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 526);
Handlebars.Parser.yy = Handlebars.AST;
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 527);
return Handlebars.Parser.parse(string);
};

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 530);
Handlebars.print = function(ast) {
  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "print", 530);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 531);
return new Handlebars.PrintVisitor().accept(ast);
};

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 534);
Handlebars.logger = {
  DEBUG: 0, INFO: 1, WARN: 2, ERROR: 3, level: 3,

  // override in the host environment
  log: function(level, str) {}
};

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 541);
Handlebars.log = function(level, str) { _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "log", 541);
Handlebars.logger.log(level, str); };

// END(BROWSER)
/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */

// BEGIN(BROWSER)
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 547);
(function() {

  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 4)", 547);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 549);
Handlebars.AST = {};

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 551);
Handlebars.AST.ProgramNode = function(statements, inverse) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "ProgramNode", 551);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 552);
this.type = "program";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 553);
this.statements = statements;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 554);
if(inverse) { this.inverse = new Handlebars.AST.ProgramNode(inverse); }
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 557);
Handlebars.AST.MustacheNode = function(rawParams, hash, unescaped) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "MustacheNode", 557);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 558);
this.type = "mustache";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 559);
this.escaped = !unescaped;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 560);
this.hash = hash;

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 562);
var id = this.id = rawParams[0];
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 563);
var params = this.params = rawParams.slice(1);

    // a mustache is an eligible helper if:
    // * its id is simple (a single part, not `this` or `..`)
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 567);
var eligibleHelper = this.eligibleHelper = id.isSimple;

    // a mustache is definitely a helper if:
    // * it is an eligible helper, and
    // * it has at least one parameter or hash segment
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 572);
this.isHelper = eligibleHelper && (params.length || hash);

    // if a mustache is an eligible helper but not a definite
    // helper, it is ambiguous, and will be resolved in a later
    // pass or at runtime.
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 579);
Handlebars.AST.PartialNode = function(id, context) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "PartialNode", 579);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 580);
this.type    = "partial";

    // TODO: disallow complex IDs

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 584);
this.id      = id;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 585);
this.context = context;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 588);
var verifyMatch = function(open, close) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "verifyMatch", 588);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 589);
if(open.original !== close.original) {
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 590);
throw new Handlebars.Exception(open.original + " doesn't match " + close.original);
    }
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 594);
Handlebars.AST.BlockNode = function(mustache, program, inverse, close) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "BlockNode", 594);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 595);
verifyMatch(mustache.id, close);
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 596);
this.type = "block";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 597);
this.mustache = mustache;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 598);
this.program  = program;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 599);
this.inverse  = inverse;

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 601);
if (this.inverse && !this.program) {
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 602);
this.isInverse = true;
    }
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 606);
Handlebars.AST.ContentNode = function(string) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "ContentNode", 606);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 607);
this.type = "content";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 608);
this.string = string;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 611);
Handlebars.AST.HashNode = function(pairs) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "HashNode", 611);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 612);
this.type = "hash";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 613);
this.pairs = pairs;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 616);
Handlebars.AST.IdNode = function(parts) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "IdNode", 616);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 617);
this.type = "ID";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 618);
this.original = parts.join(".");

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 620);
var dig = [], depth = 0;

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 622);
for(var i=0,l=parts.length; i<l; i++) {
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 623);
var part = parts[i];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 625);
if(part === "..") { depth++; }
      else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 626);
if(part === "." || part === "this") { this.isScoped = true; }
      else { dig.push(part); }}
    }

    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 630);
this.parts    = dig;
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 631);
this.string   = dig.join('.');
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 632);
this.depth    = depth;

    // an ID is simple if it only has one part, and that part is not
    // `..` or `this`.
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 636);
this.isSimple = parts.length === 1 && !this.isScoped && depth === 0;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 639);
Handlebars.AST.StringNode = function(string) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "StringNode", 639);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 640);
this.type = "STRING";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 641);
this.string = string;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 644);
Handlebars.AST.IntegerNode = function(integer) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "IntegerNode", 644);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 645);
this.type = "INTEGER";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 646);
this.integer = integer;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 649);
Handlebars.AST.BooleanNode = function(bool) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "BooleanNode", 649);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 650);
this.type = "BOOLEAN";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 651);
this.bool = bool;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 654);
Handlebars.AST.CommentNode = function(comment) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "CommentNode", 654);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 655);
this.type = "comment";
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 656);
this.comment = comment;
  };

})();
// END(BROWSER)
/* THIS FILE IS GENERATED BY A BUILD SCRIPT - DO NOT EDIT! */

// BEGIN(BROWSER)

/*jshint eqnull:true*/
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 666);
Handlebars.Compiler = function() {};
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 667);
Handlebars.JavaScriptCompiler = function() {};

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 669);
(function(Compiler, JavaScriptCompiler) {
  // the foundHelper register will disambiguate helper lookup from finding a
  // function in a context. This is necessary for mustache compatibility, which
  // requires that context functions in blocks are evaluated by blockHelperMissing,
  // and then proceed as if the resulting value was provided to blockHelperMissing.

  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 5)", 669);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 675);
Compiler.prototype = {
    compiler: Compiler,

    disassemble: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "disassemble", 678);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 679);
var opcodes = this.opcodes, opcode, out = [], params, param;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 681);
for (var i=0, l=opcodes.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 682);
opcode = opcodes[i];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 684);
if (opcode.opcode === 'DECLARE') {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 685);
out.push("DECLARE " + opcode.name + "=" + opcode.value);
        } else {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 687);
params = [];
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 688);
for (var j=0; j<opcode.args.length; j++) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 689);
param = opcode.args[j];
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 690);
if (typeof param === "string") {
              _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 691);
param = "\"" + param.replace("\n", "\\n") + "\"";
            }
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 693);
params.push(param);
          }
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 695);
out.push(opcode.opcode + " " + params.join(" "));
        }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 699);
return out.join("\n");
    },

    guid: 0,

    compile: function(program, options) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compile", 704);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 705);
this.children = [];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 706);
this.depths = {list: []};
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 707);
this.options = options;

      // These changes will propagate to the other compiler components
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 710);
var knownHelpers = this.options.knownHelpers;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 711);
this.options.knownHelpers = {
        'helperMissing': true,
        'blockHelperMissing': true,
        'each': true,
        'if': true,
        'unless': true,
        'with': true,
        'log': true
      };
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 720);
if (knownHelpers) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 721);
for (var name in knownHelpers) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 722);
this.options.knownHelpers[name] = knownHelpers[name];
        }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 726);
return this.program(program);
    },

    accept: function(node) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "accept", 729);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 730);
return this[node.type](node);
    },

    program: function(program) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "program", 733);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 734);
var statements = program.statements, statement;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 735);
this.opcodes = [];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 737);
for(var i=0, l=statements.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 738);
statement = statements[i];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 739);
this[statement.type](statement);
      }
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 741);
this.isSimple = l === 1;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 743);
this.depths.list = this.depths.list.sort(function(a, b) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 6)", 743);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 744);
return a - b;
      });

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 747);
return this;
    },

    compileProgram: function(program) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compileProgram", 750);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 751);
var result = new this.compiler().compile(program, this.options);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 752);
var guid = this.guid++, depth;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 754);
this.usePartial = this.usePartial || result.usePartial;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 756);
this.children[guid] = result;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 758);
for(var i=0, l=result.depths.list.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 759);
depth = result.depths.list[i];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 761);
if(depth < 2) { continue; }
        else { this.addDepth(depth - 1); }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 765);
return guid;
    },

    block: function(block) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "block", 768);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 769);
var mustache = block.mustache,
          program = block.program,
          inverse = block.inverse;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 773);
if (program) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 774);
program = this.compileProgram(program);
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 777);
if (inverse) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 778);
inverse = this.compileProgram(inverse);
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 781);
var type = this.classifyMustache(mustache);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 783);
if (type === "helper") {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 784);
this.helperMustache(mustache, program, inverse);
      } else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 785);
if (type === "simple") {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 786);
this.simpleMustache(mustache);

        // now that the simple mustache is resolved, we need to
        // evaluate it by executing `blockHelperMissing`
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 790);
this.opcode('pushProgram', program);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 791);
this.opcode('pushProgram', inverse);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 792);
this.opcode('pushLiteral', '{}');
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 793);
this.opcode('blockValue');
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 795);
this.ambiguousMustache(mustache, program, inverse);

        // now that the simple mustache is resolved, we need to
        // evaluate it by executing `blockHelperMissing`
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 799);
this.opcode('pushProgram', program);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 800);
this.opcode('pushProgram', inverse);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 801);
this.opcode('pushLiteral', '{}');
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 802);
this.opcode('ambiguousBlockValue');
      }}

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 805);
this.opcode('append');
    },

    hash: function(hash) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "hash", 808);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 809);
var pairs = hash.pairs, pair, val;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 811);
this.opcode('push', '{}');

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 813);
for(var i=0, l=pairs.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 814);
pair = pairs[i];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 815);
val  = pair[1];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 817);
this.accept(val);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 818);
this.opcode('assignToHash', pair[0]);
      }
    },

    partial: function(partial) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "partial", 822);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 823);
var id = partial.id;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 824);
this.usePartial = true;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 826);
if(partial.context) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 827);
this.ID(partial.context);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 829);
this.opcode('push', 'depth0');
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 832);
this.opcode('invokePartial', id.original);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 833);
this.opcode('append');
    },

    content: function(content) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "content", 836);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 837);
this.opcode('appendContent', content.string);
    },

    mustache: function(mustache) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "mustache", 840);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 841);
var options = this.options;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 842);
var type = this.classifyMustache(mustache);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 844);
if (type === "simple") {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 845);
this.simpleMustache(mustache);
      } else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 846);
if (type === "helper") {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 847);
this.helperMustache(mustache);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 849);
this.ambiguousMustache(mustache);
      }}

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 852);
if(mustache.escaped && !options.noEscape) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 853);
this.opcode('appendEscaped');
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 855);
this.opcode('append');
      }
    },

    ambiguousMustache: function(mustache, program, inverse) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "ambiguousMustache", 859);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 860);
var id = mustache.id, name = id.parts[0];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 862);
this.opcode('getContext', id.depth);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 864);
this.opcode('pushProgram', program);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 865);
this.opcode('pushProgram', inverse);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 867);
this.opcode('invokeAmbiguous', name);
    },

    simpleMustache: function(mustache, program, inverse) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "simpleMustache", 870);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 871);
var id = mustache.id;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 873);
this.addDepth(id.depth);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 874);
this.opcode('getContext', id.depth);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 876);
if (id.parts.length) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 877);
this.opcode('lookupOnContext', id.parts[0]);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 878);
for(var i=1, l=id.parts.length; i<l; i++) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 879);
this.opcode('lookup', id.parts[i]);
        }
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 882);
this.opcode('pushContext');
      }
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 884);
this.opcode('resolvePossibleLambda');
    },

    helperMustache: function(mustache, program, inverse) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "helperMustache", 887);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 888);
var params = this.setupFullMustacheParams(mustache, program, inverse),
          name = mustache.id.parts[0];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 891);
if (this.options.knownHelpers[name]) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 892);
this.opcode('invokeKnownHelper', params.length, name);
      } else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 893);
if (this.knownHelpersOnly) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 894);
throw new Error("You specified knownHelpersOnly, but used the unknown helper " + name);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 896);
this.opcode('invokeHelper', params.length, name);
      }}
    },

    ID: function(id) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "ID", 900);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 901);
this.addDepth(id.depth);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 902);
this.opcode('getContext', id.depth);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 903);
this.opcode('lookupOnContext', id.parts[0]);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 905);
for(var i=1, l=id.parts.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 906);
this.opcode('lookup', id.parts[i]);
      }
    },

    STRING: function(string) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "STRING", 910);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 911);
this.opcode('pushString', string.string);
    },

    INTEGER: function(integer) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "INTEGER", 914);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 915);
this.opcode('pushLiteral', integer.integer);
    },

    BOOLEAN: function(bool) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "BOOLEAN", 918);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 919);
this.opcode('pushLiteral', bool.bool);
    },

    comment: function() {},

    // HELPERS
    opcode: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "opcode", 925);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 926);
this.opcodes.push({ opcode: name, args: [].slice.call(arguments, 1) });
    },

    declare: function(name, value) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "declare", 929);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 930);
this.opcodes.push({ opcode: 'DECLARE', name: name, value: value });
    },

    addDepth: function(depth) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "addDepth", 933);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 934);
if(depth === 0) { return; }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 936);
if(!this.depths[depth]) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 937);
this.depths[depth] = true;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 938);
this.depths.list.push(depth);
      }
    },

    classifyMustache: function(mustache) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "classifyMustache", 942);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 943);
var isHelper   = mustache.isHelper;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 944);
var isEligible = mustache.eligibleHelper;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 945);
var options    = this.options;

      // if ambiguous, we can possibly resolve the ambiguity now
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 948);
if (isEligible && !isHelper) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 949);
var name = mustache.id.parts[0];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 951);
if (options.knownHelpers[name]) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 952);
isHelper = true;
        } else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 953);
if (options.knownHelpersOnly) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 954);
isEligible = false;
        }}
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 958);
if (isHelper) { return "helper"; }
      else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 959);
if (isEligible) { return "ambiguous"; }
      else { return "simple"; }}
    },

    pushParams: function(params) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushParams", 963);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 964);
var i = params.length, param;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 966);
while(i--) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 967);
param = params[i];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 969);
if(this.options.stringParams) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 970);
if(param.depth) {
            _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 971);
this.addDepth(param.depth);
          }

          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 974);
this.opcode('getContext', param.depth || 0);
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 975);
this.opcode('pushStringParam', param.string);
        } else {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 977);
this[param.type](param);
        }
      }
    },

    setupMustacheParams: function(mustache) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "setupMustacheParams", 982);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 983);
var params = mustache.params;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 984);
this.pushParams(params);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 986);
if(mustache.hash) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 987);
this.hash(mustache.hash);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 989);
this.opcode('pushLiteral', '{}');
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 992);
return params;
    },

    // this will replace setupMustacheParams when we're done
    setupFullMustacheParams: function(mustache, program, inverse) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "setupFullMustacheParams", 996);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 997);
var params = mustache.params;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 998);
this.pushParams(params);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1000);
this.opcode('pushProgram', program);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1001);
this.opcode('pushProgram', inverse);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1003);
if(mustache.hash) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1004);
this.hash(mustache.hash);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1006);
this.opcode('pushLiteral', '{}');
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1009);
return params;
    }
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1013);
var Literal = function(value) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "Literal", 1013);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1014);
this.value = value;
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1017);
JavaScriptCompiler.prototype = {
    // PUBLIC API: You can override these methods in a subclass to provide
    // alternative compiled forms for name lookup and buffering semantics
    nameLookup: function(parent, name, type) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "nameLookup", 1020);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1021);
if (/^[0-9]+$/.test(name)) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1022);
return parent + "[" + name + "]";
      } else {_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1023);
if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1024);
return parent + "." + name;
      }
      else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1027);
return parent + "['" + name + "']";
      }}
    },

    appendToBuffer: function(string) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "appendToBuffer", 1031);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1032);
if (this.environment.isSimple) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1033);
return "return " + string + ";";
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1035);
return "buffer += " + string + ";";
      }
    },

    initializeBuffer: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "initializeBuffer", 1039);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1040);
return this.quotedString("");
    },

    namespace: "Handlebars",
    // END PUBLIC API

    compile: function(environment, options, context, asObject) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compile", 1046);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1047);
this.environment = environment;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1048);
this.options = options || {};

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1050);
Handlebars.log(Handlebars.logger.DEBUG, this.environment.disassemble() + "\n\n");

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1052);
this.name = this.environment.name;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1053);
this.isChild = !!context;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1054);
this.context = context || {
        programs: [],
        aliases: { }
      };

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1059);
this.preamble();

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1061);
this.stackSlot = 0;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1062);
this.stackVars = [];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1063);
this.registers = { list: [] };
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1064);
this.compileStack = [];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1066);
this.compileChildren(environment, options);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1068);
var opcodes = environment.opcodes, opcode;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1070);
this.i = 0;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1072);
for(l=opcodes.length; this.i<l; this.i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1073);
opcode = opcodes[this.i];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1075);
if(opcode.opcode === 'DECLARE') {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1076);
this[opcode.name] = opcode.value;
        } else {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1078);
this[opcode.opcode].apply(this, opcode.args);
        }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1082);
return this.createFunctionContext(asObject);
    },

    nextOpcode: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "nextOpcode", 1085);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1086);
var opcodes = this.environment.opcodes, opcode = opcodes[this.i + 1];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1087);
return opcodes[this.i + 1];
    },

    eat: function(opcode) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "eat", 1090);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1091);
this.i = this.i + 1;
    },

    preamble: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "preamble", 1094);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1095);
var out = [];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1097);
if (!this.isChild) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1098);
var namespace = this.namespace;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1099);
var copies = "helpers = helpers || " + namespace + ".helpers;";
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1100);
if(this.environment.usePartial) { copies = copies + " partials = partials || " + namespace + ".partials;"; }
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1101);
out.push(copies);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1103);
out.push('');
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1106);
if (!this.environment.isSimple) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1107);
out.push(", buffer = " + this.initializeBuffer());
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1109);
out.push("");
      }

      // track the last context pushed into place to allow skipping the
      // getContext opcode when it would be a noop
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1114);
this.lastContext = 0;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1115);
this.source = out;
    },

    createFunctionContext: function(asObject) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "createFunctionContext", 1118);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1119);
var locals = this.stackVars.concat(this.registers.list);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1121);
if(locals.length > 0) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1122);
this.source[1] = this.source[1] + ", " + locals.join(", ");
      }

      // Generate minimizer alias mappings
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1126);
if (!this.isChild) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1127);
var aliases = [];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1128);
for (var alias in this.context.aliases) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1129);
this.source[1] = this.source[1] + ', ' + alias + '=' + this.context.aliases[alias];
        }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1133);
if (this.source[1]) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1134);
this.source[1] = "var " + this.source[1].substring(2) + ";";
      }

      // Merge children
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1138);
if (!this.isChild) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1139);
this.source[1] += '\n' + this.context.programs.join('\n') + '\n';
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1142);
if (!this.environment.isSimple) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1143);
this.source.push("return buffer;");
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1146);
var params = this.isChild ? ["depth0", "data"] : ["Handlebars", "depth0", "helpers", "partials", "data"];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1148);
for(var i=0, l=this.environment.depths.list.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1149);
params.push("depth" + this.environment.depths.list[i]);
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1152);
if (asObject) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1153);
params.push(this.source.join("\n  "));

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1155);
return Function.apply(this, params);
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1157);
var functionSource = 'function ' + (this.name || '') + '(' + params.join(',') + ') {\n  ' + this.source.join("\n  ") + '}';
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1158);
Handlebars.log(Handlebars.logger.DEBUG, functionSource + "\n\n");
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1159);
return functionSource;
      }
    },

    // [blockValue]
    //
    // On stack, before: hash, inverse, program, value
    // On stack, after: return value of blockHelperMissing
    //
    // The purpose of this opcode is to take a block of the form
    // `{{#foo}}...{{/foo}}`, resolve the value of `foo`, and
    // replace it on the stack with the result of properly
    // invoking blockHelperMissing.
    blockValue: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "blockValue", 1172);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1173);
this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1175);
var params = ["depth0"];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1176);
this.setupParams(0, params);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1178);
this.replaceStack(function(current) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 7)", 1178);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1179);
params.splice(1, 0, current);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1180);
return current + " = blockHelperMissing.call(" + params.join(", ") + ")";
      });
    },

    // [ambiguousBlockValue]
    //
    // On stack, before: hash, inverse, program, value
    // Compiler value, before: lastHelper=value of last found helper, if any
    // On stack, after, if no lastHelper: same as [blockValue]
    // On stack, after, if lastHelper: value
    ambiguousBlockValue: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "ambiguousBlockValue", 1190);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1191);
this.context.aliases.blockHelperMissing = 'helpers.blockHelperMissing';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1193);
var params = ["depth0"];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1194);
this.setupParams(0, params);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1196);
var current = this.topStack();
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1197);
params.splice(1, 0, current);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1199);
this.source.push("if (!" + this.lastHelper + ") { " + current + " = blockHelperMissing.call(" + params.join(", ") + "); }");
    },

    // [appendContent]
    //
    // On stack, before: ...
    // On stack, after: ...
    //
    // Appends the string value of `content` to the current buffer
    appendContent: function(content) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "appendContent", 1208);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1209);
this.source.push(this.appendToBuffer(this.quotedString(content)));
    },

    // [append]
    //
    // On stack, before: value, ...
    // On stack, after: ...
    //
    // Coerces `value` to a String and appends it to the current buffer.
    //
    // If `value` is truthy, or 0, it is coerced into a string and appended
    // Otherwise, the empty string is appended
    append: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "append", 1221);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1222);
var local = this.popStack();
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1223);
this.source.push("if(" + local + " || " + local + " === 0) { " + this.appendToBuffer(local) + " }");
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1224);
if (this.environment.isSimple) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1225);
this.source.push("else { " + this.appendToBuffer("''") + " }");
      }
    },

    // [appendEscaped]
    //
    // On stack, before: value, ...
    // On stack, after: ...
    //
    // Escape `value` and append it to the buffer
    appendEscaped: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "appendEscaped", 1235);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1236);
var opcode = this.nextOpcode(), extra = "";
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1237);
this.context.aliases.escapeExpression = 'this.escapeExpression';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1239);
if(opcode && opcode.opcode === 'appendContent') {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1240);
extra = " + " + this.quotedString(opcode.args[0]);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1241);
this.eat(opcode);
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1244);
this.source.push(this.appendToBuffer("escapeExpression(" + this.popStack() + ")" + extra));
    },

    // [getContext]
    //
    // On stack, before: ...
    // On stack, after: ...
    // Compiler value, after: lastContext=depth
    //
    // Set the value of the `lastContext` compiler value to the depth
    getContext: function(depth) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "getContext", 1254);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1255);
if(this.lastContext !== depth) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1256);
this.lastContext = depth;
      }
    },

    // [lookupOnContext]
    //
    // On stack, before: ...
    // On stack, after: currentContext[name], ...
    //
    // Looks up the value of `name` on the current context and pushes
    // it onto the stack.
    lookupOnContext: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "lookupOnContext", 1267);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1268);
this.pushStack(this.nameLookup('depth' + this.lastContext, name, 'context'));
    },

    // [pushContext]
    //
    // On stack, before: ...
    // On stack, after: currentContext, ...
    //
    // Pushes the value of the current context onto the stack.
    pushContext: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushContext", 1277);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1278);
this.pushStackLiteral('depth' + this.lastContext);
    },

    // [resolvePossibleLambda]
    //
    // On stack, before: value, ...
    // On stack, after: resolved value, ...
    //
    // If the `value` is a lambda, replace it on the stack by
    // the return value of the lambda
    resolvePossibleLambda: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "resolvePossibleLambda", 1288);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1289);
this.context.aliases.functionType = '"function"';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1291);
this.replaceStack(function(current) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 8)", 1291);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1292);
return "typeof " + current + " === functionType ? " + current + "() : " + current;
      });
    },

    // [lookup]
    //
    // On stack, before: value, ...
    // On stack, after: value[name], ...
    //
    // Replace the value on the stack with the result of looking
    // up `name` on `value`
    lookup: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "lookup", 1303);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1304);
this.replaceStack(function(current) {
        _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 9)", 1304);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1305);
return current + " == null || " + current + " === false ? " + current + " : " + this.nameLookup(current, name, 'context');
      });
    },

    // [pushStringParam]
    //
    // On stack, before: ...
    // On stack, after: string, currentContext, ...
    //
    // This opcode is designed for use in string mode, which
    // provides the string value of a parameter along with its
    // depth rather than resolving it immediately.
    pushStringParam: function(string) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushStringParam", 1317);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1318);
this.pushStackLiteral('depth' + this.lastContext);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1319);
this.pushString(string);
    },

    // [pushString]
    //
    // On stack, before: ...
    // On stack, after: quotedString(string), ...
    //
    // Push a quoted version of `string` onto the stack
    pushString: function(string) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushString", 1328);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1329);
this.pushStackLiteral(this.quotedString(string));
    },

    // [push]
    //
    // On stack, before: ...
    // On stack, after: expr, ...
    //
    // Push an expression onto the stack
    push: function(expr) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "push", 1338);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1339);
this.pushStack(expr);
    },

    // [pushLiteral]
    //
    // On stack, before: ...
    // On stack, after: value, ...
    //
    // Pushes a value onto the stack. This operation prevents
    // the compiler from creating a temporary variable to hold
    // it.
    pushLiteral: function(value) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushLiteral", 1350);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1351);
this.pushStackLiteral(value);
    },

    // [pushProgram]
    //
    // On stack, before: ...
    // On stack, after: program(guid), ...
    //
    // Push a program expression onto the stack. This takes
    // a compile-time guid and converts it into a runtime-accessible
    // expression.
    pushProgram: function(guid) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushProgram", 1362);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1363);
if (guid != null) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1364);
this.pushStackLiteral(this.programExpression(guid));
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1366);
this.pushStackLiteral(null);
      }
    },

    // [invokeHelper]
    //
    // On stack, before: hash, inverse, program, params..., ...
    // On stack, after: result of helper invocation
    //
    // Pops off the helper's parameters, invokes the helper,
    // and pushes the helper's return value onto the stack.
    //
    // If the helper is not found, `helperMissing` is called.
    invokeHelper: function(paramSize, name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "invokeHelper", 1379);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1380);
this.context.aliases.helperMissing = 'helpers.helperMissing';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1382);
var helper = this.lastHelper = this.setupHelper(paramSize, name);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1383);
this.register('foundHelper', helper.name);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1385);
this.pushStack("foundHelper ? foundHelper.call(" +
        helper.callParams + ") " + ": helperMissing.call(" +
        helper.helperMissingParams + ")");
    },

    // [invokeKnownHelper]
    //
    // On stack, before: hash, inverse, program, params..., ...
    // On stack, after: result of helper invocation
    //
    // This operation is used when the helper is known to exist,
    // so a `helperMissing` fallback is not required.
    invokeKnownHelper: function(paramSize, name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "invokeKnownHelper", 1397);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1398);
var helper = this.setupHelper(paramSize, name);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1399);
this.pushStack(helper.name + ".call(" + helper.callParams + ")");
    },

    // [invokeAmbiguous]
    //
    // On stack, before: hash, inverse, program, params..., ...
    // On stack, after: result of disambiguation
    //
    // This operation is used when an expression like `{{foo}}`
    // is provided, but we don't know at compile-time whether it
    // is a helper or a path.
    //
    // This operation emits more code than the other options,
    // and can be avoided by passing the `knownHelpers` and
    // `knownHelpersOnly` flags at compile-time.
    invokeAmbiguous: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "invokeAmbiguous", 1414);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1415);
this.context.aliases.functionType = '"function"';

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1417);
this.pushStackLiteral('{}');
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1418);
var helper = this.setupHelper(0, name);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1420);
var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1421);
this.register('foundHelper', helperName);

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1423);
var nonHelper = this.nameLookup('depth' + this.lastContext, name, 'context');
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1424);
var nextStack = this.nextStack();

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1426);
this.source.push('if (foundHelper) { ' + nextStack + ' = foundHelper.call(' + helper.callParams + '); }');
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1427);
this.source.push('else { ' + nextStack + ' = ' + nonHelper + '; ' + nextStack + ' = typeof ' + nextStack + ' === functionType ? ' + nextStack + '() : ' + nextStack + '; }');
    },

    // [invokePartial]
    //
    // On stack, before: context, ...
    // On stack after: result of partial invocation
    //
    // This operation pops off a context, invokes a partial with that context,
    // and pushes the result of the invocation back.
    invokePartial: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "invokePartial", 1437);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1438);
var params = [this.nameLookup('partials', name, 'partial'), "'" + name + "'", this.popStack(), "helpers", "partials"];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1440);
if (this.options.data) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1441);
params.push("data");
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1444);
this.context.aliases.self = "this";
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1445);
this.pushStack("self.invokePartial(" + params.join(", ") + ");");
    },

    // [assignToHash]
    //
    // On stack, before: value, hash, ...
    // On stack, after: hash, ...
    //
    // Pops a value and hash off the stack, assigns `hash[key] = value`
    // and pushes the hash back onto the stack.
    assignToHash: function(key) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "assignToHash", 1455);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1456);
var value = this.popStack();
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1457);
var hash = this.topStack();

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1459);
this.source.push(hash + "['" + key + "'] = " + value + ";");
    },

    // HELPERS

    compiler: JavaScriptCompiler,

    compileChildren: function(environment, options) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compileChildren", 1466);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1467);
var children = environment.children, child, compiler;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1469);
for(var i=0, l=children.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1470);
child = children[i];
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1471);
compiler = new this.compiler();

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1473);
this.context.programs.push('');     // Placeholder to prevent name conflicts for nested children
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1474);
var index = this.context.programs.length;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1475);
child.index = index;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1476);
child.name = 'program' + index;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1477);
this.context.programs[index] = compiler.compile(child, options, this.context);
      }
    },

    programExpression: function(guid) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "programExpression", 1481);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1482);
this.context.aliases.self = "this";

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1484);
if(guid == null) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1485);
return "self.noop";
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1488);
var child = this.environment.children[guid],
          depths = child.depths.list, depth;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1491);
var programParams = [child.index, child.name, "data"];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1493);
for(var i=0, l = depths.length; i<l; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1494);
depth = depths[i];

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1496);
if(depth === 1) { programParams.push("depth0"); }
        else { programParams.push("depth" + (depth - 1)); }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1500);
if(depths.length === 0) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1501);
return "self.program(" + programParams.join(", ") + ")";
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1503);
programParams.shift();
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1504);
return "self.programWithDepth(" + programParams.join(", ") + ")";
      }
    },

    register: function(name, val) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "register", 1508);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1509);
this.useRegister(name);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1510);
this.source.push(name + " = " + val + ";");
    },

    useRegister: function(name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "useRegister", 1513);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1514);
if(!this.registers[name]) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1515);
this.registers[name] = true;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1516);
this.registers.list.push(name);
      }
    },

    pushStackLiteral: function(item) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushStackLiteral", 1520);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1521);
this.compileStack.push(new Literal(item));
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1522);
return item;
    },

    pushStack: function(item) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "pushStack", 1525);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1526);
this.source.push(this.incrStack() + " = " + item + ";");
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1527);
this.compileStack.push("stack" + this.stackSlot);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1528);
return "stack" + this.stackSlot;
    },

    replaceStack: function(callback) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "replaceStack", 1531);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1532);
var item = callback.call(this, this.topStack());

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1534);
this.source.push(this.topStack() + " = " + item + ";");
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1535);
return "stack" + this.stackSlot;
    },

    nextStack: function(skipCompileStack) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "nextStack", 1538);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1539);
var name = this.incrStack();
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1540);
this.compileStack.push("stack" + this.stackSlot);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1541);
return name;
    },

    incrStack: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "incrStack", 1544);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1545);
this.stackSlot++;
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1546);
if(this.stackSlot > this.stackVars.length) { this.stackVars.push("stack" + this.stackSlot); }
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1547);
return "stack" + this.stackSlot;
    },

    popStack: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "popStack", 1550);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1551);
var item = this.compileStack.pop();

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1553);
if (item instanceof Literal) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1554);
return item.value;
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1556);
this.stackSlot--;
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1557);
return item;
      }
    },

    topStack: function() {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "topStack", 1561);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1562);
var item = this.compileStack[this.compileStack.length - 1];

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1564);
if (item instanceof Literal) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1565);
return item.value;
      } else {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1567);
return item;
      }
    },

    quotedString: function(str) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "quotedString", 1571);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1572);
return '"' + str
        .replace(/\\/g, '\\\\')
        .replace(/"/g, '\\"')
        .replace(/\n/g, '\\n')
        .replace(/\r/g, '\\r') + '"';
    },

    setupHelper: function(paramSize, name) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "setupHelper", 1579);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1580);
var params = [];
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1581);
this.setupParams(paramSize, params);
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1582);
var foundHelper = this.nameLookup('helpers', name, 'helper');

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1584);
return {
        params: params,
        name: foundHelper,
        callParams: ["depth0"].concat(params).join(", "),
        helperMissingParams: ["depth0", this.quotedString(name)].concat(params).join(", ")
      };
    },

    // the params and contexts arguments are passed in arrays
    // to fill in
    setupParams: function(paramSize, params) {
      _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "setupParams", 1594);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1595);
var options = [], contexts = [], param, inverse, program;

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1597);
options.push("hash:" + this.popStack());

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1599);
inverse = this.popStack();
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1600);
program = this.popStack();

      // Avoid setting fn and inverse if neither are set. This allows
      // helpers to do a check for `if (options.fn)`
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1604);
if (program || inverse) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1605);
if (!program) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1606);
this.context.aliases.self = "this";
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1607);
program = "self.noop";
        }

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1610);
if (!inverse) {
         _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1611);
this.context.aliases.self = "this";
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1612);
inverse = "self.noop";
        }

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1615);
options.push("inverse:" + inverse);
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1616);
options.push("fn:" + program);
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1619);
for(var i=0; i<paramSize; i++) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1620);
param = this.popStack();
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1621);
params.push(param);

        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1623);
if(this.options.stringParams) {
          _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1624);
contexts.push(this.popStack());
        }
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1628);
if (this.options.stringParams) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1629);
options.push("contexts:[" + contexts.join(",") + "]");
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1632);
if(this.options.data) {
        _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1633);
options.push("data:data");
      }

      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1636);
params.push("{" + options.join(",") + "}");
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1637);
return params.join(", ");
    }
  };

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1641);
var reservedWords = (
    "break else new var" +
    " case finally return void" +
    " catch for switch while" +
    " continue function this with" +
    " default if throw" +
    " delete in try" +
    " do instanceof typeof" +
    " abstract enum int short" +
    " boolean export interface static" +
    " byte extends long super" +
    " char final native synchronized" +
    " class float package throws" +
    " const goto private transient" +
    " debugger implements protected volatile" +
    " double import public let yield"
  ).split(" ");

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1659);
var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1661);
for(var i=0, l=reservedWords.length; i<l; i++) {
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1662);
compilerWords[reservedWords[i]] = true;
  }

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1665);
JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "isValidJavaScriptVariableName", 1665);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1666);
if(!JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]+$/.test(name)) {
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1667);
return true;
    }
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1669);
return false;
  };

})(Handlebars.Compiler, Handlebars.JavaScriptCompiler);

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1674);
Handlebars.precompile = function(string, options) {
  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "precompile", 1674);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1675);
options = options || {};

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1677);
var ast = Handlebars.parse(string);
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1678);
var environment = new Handlebars.Compiler().compile(ast, options);
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1679);
return new Handlebars.JavaScriptCompiler().compile(environment, options);
};

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1682);
Handlebars.compile = function(string, options) {
  _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compile", 1682);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1683);
options = options || {};

  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1685);
var compiled;
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1686);
function compile() {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "compile", 1686);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1687);
var ast = Handlebars.parse(string);
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1688);
var environment = new Handlebars.Compiler().compile(ast, options);
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1689);
var templateSpec = new Handlebars.JavaScriptCompiler().compile(environment, options, undefined, true);
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1690);
return Handlebars.template(templateSpec);
  }

  // Template is only compiled on first use and cached after that point.
  _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1694);
return function(context, options) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "(anonymous 10)", 1694);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1695);
if (!compiled) {
      _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1696);
compiled = compile();
    }
    _yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1698);
return compiled.call(this, context, options);
  };
};

// END(BROWSER)
// This file contains YUI-specific wrapper code and overrides for the
// handlebars-compiler module.

/**
Handlebars parser and compiler. Use this module when you need to compile
Handlebars templates.

@module handlebars
@submodule handlebars-compiler
*/

_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1714);
var levels = ['debug', 'info', 'warn', 'error'];

/**
Logs a debugging message. Note that messages will only be logged when the
handlebars module is loaded in "debug" mode.

@method log
@param {String} level Log level for this message. Supported levels are "debug",
    "info", "warn", and "error".
@param {String} message Message to log.
@for Handlebars
*/
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1726);
Handlebars.logger.log = function (level, message) {

};

/**
Compiles and renders a Handlebars template string in a single step.

If you'll be using a template more than once, it's more efficient to compile it
into a function once using `compile()`, and then render it whenever you need to
by simply executing the compiled function. However, if you only need to compile
and render a template once, `render()` is a handy shortcut for doing both in a
single step.

@example

    Y.Handlebars.render('The pie of the day is {{pie}}!', {
        pie: 'Maple Custard'
    });
    // => "The pie of the day is Maple Custard!"

@method render
@param {String} string Handlebars template string to render.
@param {Object} context Context object to pass to the template.
@param {Object} [options] Compile/render options.
    @param {Object} [options.helpers] Helper functions.
    @param {Object} [options.partials] Partials.
    @param {Object} [options.data] Data.
@return {String} Rendered template string.
*/
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1755);
Handlebars.render = function (string, context, options) {
    _yuitest_coverfunc("build/handlebars-compiler/handlebars-compiler.js", "render", 1755);
_yuitest_coverline("build/handlebars-compiler/handlebars-compiler.js", 1756);
return Handlebars.compile(string)(context, options);
};

// The rest of this file is just API docs for methods defined in Handlebars
// itself.

/**
Compiles a Handlebars template string into a function. To render the template,
call the function and pass in a context object.

@example

    var template = Y.Handlebars.compile('The pie of the day is {{pie}}!.');
    template({pie: 'Pecan'});
    // => "The pie of the day is Pecan!"

@method compile
@param {String} string Handlebars template string to compile.
@param {Object} [options] Compiler options.
@return {Function} Compiled template function.
*/

/**
Precompiles a Handlebars template string into a string of JavaScript code. This
can be used to precompile a template at build time or on the server, and the
resulting template can then be rendered at runtime or on the client without
needing to go through a compile step.

To render a precompiled template, evaluate the code and then pass the resulting
function to `Y.Handlebars.template()` to get back an executable template
function.

@method precompile
@param {String} string Handlebars template string to compile.
@param {Object} [options] Compiler options.
@return {String} Precompiled template code.
*/


}, '3.7.3', {"requires": ["handlebars-base"]});
