/*!
 * mustache.js - Logic-less {{mustache}} templates with JavaScript
 * http://github.com/janl/mustache.js
 */
(function(n,t){if(typeof exports=="object"&&exports)t(exports);else{var i={};t(i),typeof define=="function"&&define.amd?define(i):n.Mustache=i}})(this,function(n){function w(n,t){return p.call(n,t)}function b(n){return!w(a,n)}function e(n){return n.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function g(n){return String(n).replace(/[&<>"'\/]/g,function(n){return d[n]})}function u(n){this.string=n,this.tail=n,this.pos=0}function t(n,t){this.view=n||{},this.parent=t,this._cache={}}function i(){this.clearCache()}function f(t,i,r,u){for(var o="",s,c,e,a,y,p,l=0,v=t.length;l<v;++l){s=t[l],c=s[1];switch(s[0]){case"#":if(e=r.lookup(c),typeof e=="object")if(h(e))for(a=0,y=e.length;a<y;++a)o+=f(s[4],i,r.push(e[a]),u);else e&&(o+=f(s[4],i,r.push(e),u));else typeof e=="function"?(p=u==null?null:u.slice(s[3],s[5]),e=e.call(r.view,p,function(n){return i.render(n,r)}),e!=null&&(o+=e)):e&&(o+=f(s[4],i,r,u));break;case"^":e=r.lookup(c),(!e||h(e)&&e.length===0)&&(o+=f(s[4],i,r,u));break;case">":e=i.getPartial(c),typeof e=="function"&&(o+=e(r));break;case"&":e=r.lookup(c),e!=null&&(o+=e);break;case"name":e=r.lookup(c),e!=null&&(o+=n.escape(e));break;case"text":o+=c}}return o}function nt(n){for(var f=[],r=f,i=[],t,o,u=0,e=n.length;u<e;++u){t=n[u];switch(t[0]){case"#":case"^":i.push(t),r.push(t),r=t[4]=[];break;case"/":o=i.pop(),o[5]=t[2],r=i.length>0?i[i.length-1][4]:f;break;default:r.push(t)}}return f}function tt(n){for(var u=[],t,i,r=0,f=n.length;r<f;++r)t=n[r],t&&(t[0]==="text"&&i&&i[0]==="text"?(i[1]+=t[1],i[3]=t[3]):(i=t,u.push(t)));return u}function c(n){return[new RegExp(e(n[0])+"\\s*"),new RegExp("\\s*"+e(n[1]))]}function it(t,i){function st(){if(ft&&!it)while(g.length)delete w[g.pop()];else g=[];ft=!1,it=!1}var a,f,h,rt,et,ut,ot,k;if(t=t||"",i=i||n.tags,typeof i=="string"&&(i=i.split(o)),i.length!==2)throw new Error("Invalid tags: "+i.join(", "));for(var p=c(i),r=new u(t),d=[],w=[],g=[],ft=!1,it=!1;!r.eos();){if(a=r.pos,h=r.scanUntil(p[0]),h)for(ut=0,ot=h.length;ut<ot;++ut)rt=h.charAt(ut),b(rt)?g.push(w.length):it=!0,w.push(["text",rt,a,a+1]),a+=1,rt=="\n"&&st();if(!r.scan(p[0]))break;if(ft=!0,f=r.scan(y)||"name",r.scan(l),f==="="?(h=r.scanUntil(s),r.scan(s),r.scanUntil(p[1])):f==="{"?(h=r.scanUntil(new RegExp("\\s*"+e("}"+i[1]))),r.scan(v),r.scanUntil(p[1]),f="&"):h=r.scanUntil(p[1]),!r.scan(p[1]))throw new Error("Unclosed tag at "+r.pos);if(et=[f,h,a,r.pos],w.push(et),f==="#"||f==="^")d.push(et);else if(f==="/"){if(d.length===0)throw new Error('Unopened section "'+h+'" at '+a);if(k=d.pop(),k[1]!==h)throw new Error('Unclosed section "'+k[1]+'" at '+a);}else if(f==="name"||f==="{"||f==="&")it=!0;else if(f==="="){if(i=h.split(o),i.length!==2)throw new Error("Invalid tags at "+a+": "+i.join(", "));p=c(i)}}if(k=d.pop(),k)throw new Error('Unclosed section "'+k[1]+'" at '+r.pos);return w=tt(w),nt(w)}var l=/\s*/,o=/\s+/,a=/\S/,s=/\s*=/,v=/\s*\}/,y=/#|\^|\/|>|\{|&|=|!/,p=RegExp.prototype.test,k=Object.prototype.toString,h=Array.isArray||function(n){return k.call(n)==="[object Array]"},d={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"},r;u.prototype.eos=function(){return this.tail===""},u.prototype.scan=function(n){var t=this.tail.match(n);return t&&t.index===0?(this.tail=this.tail.substring(t[0].length),this.pos+=t[0].length,t[0]):""},u.prototype.scanUntil=function(n){var t,i=this.tail.search(n);switch(i){case-1:t=this.tail,this.pos+=this.tail.length,this.tail="";break;case 0:t="";break;default:t=this.tail.substring(0,i),this.tail=this.tail.substring(i),this.pos+=i}return t},t.make=function(n){return n instanceof t?n:new t(n)},t.prototype.push=function(n){return new t(n,this)},t.prototype.lookup=function(n){var t=this._cache[n],i,r,u;if(!t){if(n==".")t=this.view;else for(i=this;i;){if(n.indexOf(".")>0)for(t=i.view,r=n.split("."),u=0;t&&u<r.length;)t=t[r[u++]];else t=i.view[n];if(t!=null)break;i=i.parent}this._cache[n]=t}return typeof t=="function"&&(t=t.call(this.view)),t},i.prototype.clearCache=function(){this._cache={},this._partialCache={}},i.prototype.compile=function(t,i){var r=this._cache[t],u;return r||(u=n.parse(t,i),r=this._cache[t]=this.compileTokens(u,t)),r},i.prototype.compilePartial=function(n,t,i){var r=this.compile(t,i);return this._partialCache[n]=r,r},i.prototype.getPartial=function(n){return n in this._partialCache||!this._loadPartial||this.compilePartial(n,this._loadPartial(n)),this._partialCache[n]},i.prototype.compileTokens=function(n,i){var r=this;return function(u,e){if(e)if(typeof e=="function")r._loadPartial=e;else for(var o in e)r.compilePartial(o,e[o]);return f(n,r,t.make(u),i)}},i.prototype.render=function(n,t,i){return this.compile(n)(t,i)},n.name="mustache.js",n.version="0.7.2",n.tags=["{{","}}"],n.Scanner=u,n.Context=t,n.Writer=i,n.parse=it,n.escape=g,r=new i,n.clearCache=function(){return r.clearCache()},n.compile=function(n,t){return r.compile(n,t)},n.compilePartial=function(n,t,i){return r.compilePartial(n,t,i)},n.compileTokens=function(n,t){return r.compileTokens(n,t)},n.render=function(n,t,i){return r.render(n,t,i)},n.to_html=function(t,i,r,u){var f=n.render(t,i,r);if(typeof u=="function")u(f);else return f}})