Skip to content

Instantly share code, notes, and snippets.

@dector
Created August 12, 2020 21:40
Show Gist options
  • Save dector/26261d9c37122b6faacc2f85049ed0ca to your computer and use it in GitHub Desktop.
Save dector/26261d9c37122b6faacc2f85049ed0ca to your computer and use it in GitHub Desktop.
Stylus WEB
if(Function.prototype.name===undefined&&Object.defineProperty!==undefined){Object.defineProperty(Function.prototype,"name",{get:function(){var regex=/function\s([^(]{1,})\(/,match=regex.exec(this.toString());return match&&match.length>1?match[1].trim():""}})}if(String.prototype.trimRight===undefined){String.prototype.trimRight=function(){return String(this).replace(/\s+$/,"")}}var stylus=function(){function require(p){var path=require.resolve(p),mod=require.modules[path];if(!mod)throw new Error('failed to require "'+p+'"');if(!mod.exports){mod.exports={};mod.call(mod.exports,mod,mod.exports,require.relative(path))}return mod.exports}var bifs="called-from = ()\n\nvendors = moz webkit o ms official\n\n// stringify the given arg\n\n-string(arg)\n type(arg) + ' ' + arg\n\n// require a color\n\nrequire-color(color)\n unless color is a 'color'\n error('RGB or HSL value expected, got a ' + -string(color))\n\n// require a unit\n\nrequire-unit(n)\n unless n is a 'unit'\n error('unit expected, got a ' + -string(n))\n\n// require a string\n\nrequire-string(str)\n unless str is a 'string' or str is a 'ident'\n error('string expected, got a ' + -string(str))\n\n// Math functions\n\nabs(n) { math(n, 'abs') }\nmin(a, b) { a < b ? a : b }\nmax(a, b) { a > b ? a : b }\n\n// Trigonometrics\nPI = -math-prop('PI')\n\nradians-to-degrees(angle)\n angle * (180 / PI)\n\ndegrees-to-radians(angle)\n unit(angle * (PI / 180),'')\n\nsin(n)\n n = degrees-to-radians(n) if unit(n) == 'deg'\n round(math(n, 'sin'), 9)\n\ncos(n)\n n = degrees-to-radians(n) if unit(n) == 'deg'\n round(math(n, 'cos'), 9)\n\n// Rounding Math functions\n\nceil(n, precision = 0)\n multiplier = 10 ** precision\n math(n * multiplier, 'ceil') / multiplier\n\nfloor(n, precision = 0)\n multiplier = 10 ** precision\n math(n * multiplier, 'floor') / multiplier\n\nround(n, precision = 0)\n multiplier = 10 ** precision\n math(n * multiplier, 'round') / multiplier\n\n// return the sum of the given numbers\n\nsum(nums)\n sum = 0\n sum += n for n in nums\n\n// return the average of the given numbers\n\navg(nums)\n sum(nums) / length(nums)\n\n// return a unitless number, or pass through\n\nremove-unit(n)\n if typeof(n) is 'unit'\n unit(n, '')\n else\n n\n\n// convert a percent to a decimal, or pass through\n\npercent-to-decimal(n)\n if unit(n) is '%'\n remove-unit(n) / 100\n else\n n\n\n// check if n is an odd number\n\nodd(n)\n 1 == n % 2\n\n// check if n is an even number\n\neven(n)\n 0 == n % 2\n\n// check if color is light\n\nlight(color)\n lightness(color) >= 50%\n\n// check if color is dark\n\ndark(color)\n lightness(color) < 50%\n\n// desaturate color by amount\n\ndesaturate(color, amount)\n adjust(color, 'saturation', - amount)\n\n// saturate color by amount\n\nsaturate(color = '', amount = 100%)\n if color is a 'color'\n adjust(color, 'saturation', amount)\n else\n unquote( 'saturate(' + color + ')' )\n\n// darken by the given amount\n\ndarken(color, amount)\n adjust(color, 'lightness', - amount)\n\n// lighten by the given amount\n\nlighten(color, amount)\n adjust(color, 'lightness', amount)\n\n// decrease opacity by amount\n\nfade-out(color, amount)\n color - rgba(black, percent-to-decimal(amount))\n\n// increase opacity by amount\n\nfade-in(color, amount)\n color + rgba(black, percent-to-decimal(amount))\n\n// spin hue by a given amount\n\nspin(color, amount)\n color + unit(amount, deg)\n\n// mix two colors by a given amount\n\nmix(color1, color2, weight = 50%)\n unless weight in 0..100\n error('Weight must be between 0% and 100%')\n\n if length(color1) == 2\n weight = color1[0]\n color1 = color1[1]\n\n else if length(color2) == 2\n weight = 100 - color2[0]\n color2 = color2[1]\n\n require-color(color1)\n require-color(color2)\n\n p = unit(weight / 100, '')\n w = p * 2 - 1\n\n a = alpha(color1) - alpha(color2)\n\n w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2\n w2 = 1 - w1\n\n channels = (red(color1) red(color2)) (green(color1) green(color2)) (blue(color1) blue(color2))\n rgb = ()\n\n for pair in channels\n push(rgb, floor(pair[0] * w1 + pair[1] * w2))\n\n a1 = alpha(color1) * p\n a2 = alpha(color2) * (1 - p)\n alpha = a1 + a2\n\n rgba(rgb[0], rgb[1], rgb[2], alpha)\n\n// invert colors, leave alpha intact\n\ninvert(color = '')\n if color is a 'color'\n rgba(#fff - color, alpha(color))\n else\n unquote( 'invert(' + color + ')' )\n\n// give complement of the given color\n\ncomplement( color )\n spin( color, 180 )\n\n// give grayscale of the given color\n\ngrayscale( color = '' )\n if color is a 'color'\n desaturate( color, 100% )\n else\n unquote( 'grayscale(' + color + ')' )\n\n// mix the given color with white\n\ntint( color, percent )\n mix( white, color, percent )\n\n// mix the given color with black\n\nshade( color, percent )\n mix( black, color, percent )\n\n// return the last value in the given expr\n\nlast(expr)\n expr[length(expr) - 1]\n\n// return keys in the given pairs or object\n\nkeys(pairs)\n ret = ()\n if type(pairs) == 'object'\n for key in pairs\n push(ret, key)\n else\n for pair in pairs\n push(ret, pair[0]);\n ret\n\n// return values in the given pairs or object\n\nvalues(pairs)\n ret = ()\n if type(pairs) == 'object'\n for key, val in pairs\n push(ret, val)\n else\n for pair in pairs\n push(ret, pair[1]);\n ret\n\n// join values with the given delimiter\n\njoin(delim, vals...)\n buf = ''\n vals = vals[0] if length(vals) == 1\n for val, i in vals\n buf += i ? delim + val : val\n\n// add a CSS rule to the containing block\n\n// - This definition allows add-property to be used as a mixin\n// - It has the same effect as interpolation but allows users\n// to opt for a functional style\n\nadd-property-function = add-property\nadd-property(name, expr)\n if mixin\n {name} expr\n else\n add-property-function(name, expr)\n\nprefix-classes(prefix)\n -prefix-classes(prefix, block)\n\n// Caching mixin, use inside your functions to enable caching by extending.\n\n$stylus_mixin_cache = {}\ncache()\n $key = (current-media() or 'no-media') + '__' + called-from[0] + '__' + arguments\n if $key in $stylus_mixin_cache\n @extend {'$cache_placeholder_for_' + $stylus_mixin_cache[$key]}\n else if 'cache' in called-from\n {block}\n else\n $id = length($stylus_mixin_cache)\n\n &,\n /$cache_placeholder_for_{$id}\n $stylus_mixin_cache[$key] = $id\n {block}\n\n// Percentage function to convert a number, e.g. '.45', into a percentage, e.g. '45%'\n\npercentage(num)\n return unit(num * 100, '%')\n\n// Returns the position of a `value` within a `list`\n\nindex(list, value)\n for val, i in list\n return i if val == value\n";require.modules={};require.resolve=function(path){var orig=path,reg=path+".js",index=path+"/index.js";return require.modules[reg]&&reg||require.modules[index]&&index||orig};require.register=function(path,fn){require.modules[path]=fn};require.relative=function(parent){return function(p){if("."!=p[0])return require(p);var path=parent.split("/"),segs=p.split("/");path.pop();for(var i=0;i<segs.length;i++){var seg=segs[i];if(".."==seg)path.pop();else if("."!=seg)path.push(seg)}return require(path.join("/"))}};require.register("path.js",function(module,exports,require){var isWindows=false;function normalizeArray(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last=="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}var splitPathRe=/^([\s\S]+\/(?!$)|\/)?((?:[\s\S]+?)?(\.[^.]*)?)$/;exports.normalize=function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.slice(-1)==="/";path=normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path};exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(paths.filter(function(p,index){return p&&typeof p==="string"}).join("/"))};exports.relative=function(from,to){from=exports.resolve(from).substr(1);to=exports.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")};exports.dirname=function(path){var dir=splitPathRe.exec(path)[1]||"";if(!dir){return"."}else if(dir.length===1||isWindows&&dir.length<=3&&dir.charAt(1)===":"){return dir}else{return dir.substring(0,dir.length-1)}};exports.basename=function(path,ext){var f=splitPathRe.exec(path)[2]||"";if(ext&&f.substr(-1*ext.length)===ext){f=f.substr(0,f.length-ext.length)}return f};exports.extname=function(path){return splitPathRe.exec(path)[3]||""}});require.register("colors.js",function(module,exports,require){module.exports={aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],transparent:[0,0,0,0],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1],rebeccapurple:[102,51,153,1]}});require.register("errors.js",function(module,exports,require){exports.ParseError=ParseError;exports.SyntaxError=SyntaxError;SyntaxError.prototype.__proto__=Error.prototype;function ParseError(msg){this.name="ParseError";this.message=msg;Error.captureStackTrace(this,ParseError)}ParseError.prototype.__proto__=Error.prototype;function SyntaxError(msg){this.name="SyntaxError";this.message=msg;Error.captureStackTrace(this,ParseError)}SyntaxError.prototype.__proto__=Error.prototype});require.register("units.js",function(module,exports,require){module.exports=["em","ex","ch","rem","vw","vh","vmin","vmax","cm","mm","in","pt","pc","px","deg","grad","rad","turn","s","ms","Hz","kHz","dpi","dpcm","dppx","x","%","fr"]});require.register("functions/index.js",function(module,exports,require){exports["add-property"]=require("./add-property");exports.adjust=require("./adjust");exports.alpha=require("./alpha");exports["base-convert"]=require("./base-convert");exports.basename=require("./basename");exports.blend=require("./blend");exports.blue=require("./blue");exports.clone=require("./clone");exports.component=require("./component");exports.contrast=require("./contrast");exports.convert=require("./convert");exports["current-media"]=require("./current-media");exports.define=require("./define");exports.dirname=require("./dirname");exports.error=require("./error");exports.extname=require("./extname");exports.green=require("./green");exports.hsl=require("./hsl");exports.hsla=require("./hsla");exports.hue=require("./hue");exports.length=require("./length");exports.lightness=require("./lightness");exports["list-separator"]=require("./list-separator");exports.lookup=require("./lookup");exports.luminosity=require("./luminosity");exports.match=require("./match");exports.math=require("./math");exports.merge=exports.extend=require("./merge");exports.operate=require("./operate");exports["opposite-position"]=require("./opposite-position");exports.p=require("./p");exports.pathjoin=require("./pathjoin");exports.pop=require("./pop");exports.push=exports.append=require("./push");exports.range=require("./range");exports.red=require("./red");exports.remove=require("./remove");exports.replace=require("./replace");exports.rgb=require("./rgb");exports.rgba=require("./rgba");exports.s=require("./s");exports.saturation=require("./saturation");exports["selector-exists"]=require("./selector-exists");exports.selector=require("./selector");exports.selectors=require("./selectors");exports.shift=require("./shift");exports.split=require("./split");exports.substr=require("./substr");exports.slice=require("./slice");exports.tan=require("./tan");exports.trace=require("./trace");exports.transparentify=require("./transparentify");exports.type=exports.typeof=exports["type-of"]=require("./type");exports.unit=require("./unit");exports.unquote=require("./unquote");exports.unshift=exports.prepend=require("./unshift");exports.warn=require("./warn");exports["-math-prop"]=require("./math-prop");exports["-prefix-classes"]=require("./prefix-classes")});require.register("functions/url.js",function(module,exports,require){var Compiler=require("../visitor/compiler"),events=require("../renderer").events,nodes=require("../nodes"),extname=require("../path").extname,utils=require("../utils");var defaultMimes={".gif":"image/gif",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".svg":"image/svg+xml",".webp":"image/webp",".ttf":"application/x-font-ttf",".eot":"application/vnd.ms-fontobject",".woff":"application/font-woff",".woff2":"application/font-woff2"};var encodingTypes={BASE_64:"base64",UTF8:"charset=utf-8"};module.exports=function(options){options=options||{};var _paths=options.paths||[];var sizeLimit=null!=options.limit?options.limit:3e4;var mimes=options.mimes||defaultMimes;function fn(url,enc){var compiler=new Compiler(url),encoding=encodingTypes.BASE_64;compiler.isURL=true;url=url.nodes.map(function(node){return compiler.visit(node)}).join("");url=parse(url);var ext=extname(url.pathname),mime=mimes[ext],hash=url.hash||"",literal=new nodes.Literal('url("'+url.href+'")'),paths=_paths.concat(this.paths),buf,result;if(!mime)return literal;if(url.protocol)return literal;var found=utils.lookup(url.pathname,paths);if(!found){events.emit("file not found","File "+literal+" could not be found, literal url retained!");return literal}buf=fs.readFileSync(found);if(false!==sizeLimit&&buf.length>sizeLimit)return literal;if(enc&&"utf8"==enc.first.val.toLowerCase()){encoding=encodingTypes.UTF8;result=buf.toString("utf8").replace(/\s+/g," ").replace(/[{}\|\\\^~\[\]`"<>#%]/g,function(match){return"%"+match[0].charCodeAt(0).toString(16).toUpperCase()}).trim()}else{result=buf.toString(encoding)+hash}return new nodes.Literal('url("data:'+mime+";"+encoding+","+result+'")')}fn.raw=true;return fn};module.exports.mimes=defaultMimes});require.register("functions/add-property.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");(module.exports=function addProperty(name,expr){utils.assertType(name,"expression","name");name=utils.unwrap(name).first;utils.assertString(name,"name");utils.assertType(expr,"expression","expr");var prop=new nodes.Property([name],expr);var block=this.closestBlock;var len=block.nodes.length,head=block.nodes.slice(0,block.index),tail=block.nodes.slice(block.index++,len);head.push(prop);block.nodes=head.concat(tail);return prop}).raw=true});require.register("functions/adjust.js",function(module,exports,require){var utils=require("../utils");module.exports=function adjust(color,prop,amount){utils.assertColor(color,"color");utils.assertString(prop,"prop");utils.assertType(amount,"unit","amount");var hsl=color.hsla.clone();prop={hue:"h",saturation:"s",lightness:"l"}[prop.string];if(!prop)throw new Error("invalid adjustment property");var val=amount.val;if("%"==amount.type){val="l"==prop&&val>0?(100-hsl[prop])*val/100:hsl[prop]*(val/100)}hsl[prop]+=val;return hsl.rgba}});require.register("functions/alpha.js",function(module,exports,require){var nodes=require("../nodes"),rgba=require("./rgba");module.exports=function alpha(color,value){color=color.rgba;if(value){return rgba(new nodes.Unit(color.r),new nodes.Unit(color.g),new nodes.Unit(color.b),value)}return new nodes.Unit(color.a,"")}});require.register("functions/base-convert.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");(module.exports=function(num,base,width){utils.assertPresent(num,"number");utils.assertPresent(base,"base");num=utils.unwrap(num).nodes[0].val;base=utils.unwrap(base).nodes[0].val;width=width&&utils.unwrap(width).nodes[0].val||2;var result=Number(num).toString(base);while(result.length<width){result="0"+result}return new nodes.Literal(result)}).raw=true});require.register("functions/basename.js",function(module,exports,require){var utils=require("../utils"),path=require("../path");module.exports=function basename(p,ext){utils.assertString(p,"path");return path.basename(p.val,ext&&ext.val)}});require.register("functions/blend.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function blend(top,bottom){utils.assertColor(top);top=top.rgba;bottom=bottom||new nodes.RGBA(255,255,255,1);utils.assertColor(bottom);bottom=bottom.rgba;return new nodes.RGBA(top.r*top.a+bottom.r*(1-top.a),top.g*top.a+bottom.g*(1-top.a),top.b*top.a+bottom.b*(1-top.a),top.a+bottom.a-top.a*bottom.a)}});require.register("functions/blue.js",function(module,exports,require){var nodes=require("../nodes"),rgba=require("./rgba");module.exports=function blue(color,value){color=color.rgba;if(value){return rgba(new nodes.Unit(color.r),new nodes.Unit(color.g),value,new nodes.Unit(color.a))}return new nodes.Unit(color.b,"")}});require.register("functions/clone.js",function(module,exports,require){var utils=require("../utils");(module.exports=function clone(expr){utils.assertPresent(expr,"expr");return expr.clone()}).raw=true});require.register("functions/component.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");var componentMap={red:"r",green:"g",blue:"b",alpha:"a",hue:"h",saturation:"s",lightness:"l"};var unitMap={hue:"deg",saturation:"%",lightness:"%"};var typeMap={red:"rgba",blue:"rgba",green:"rgba",alpha:"rgba",hue:"hsla",saturation:"hsla",lightness:"hsla"};module.exports=function component(color,name){utils.assertColor(color,"color");utils.assertString(name,"name");var name=name.string,unit=unitMap[name],type=typeMap[name],name=componentMap[name];if(!name)throw new Error('invalid color component "'+name+'"');return new nodes.Unit(color[type][name],unit)}});require.register("functions/contrast.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes"),blend=require("./blend"),luminosity=require("./luminosity");module.exports=function contrast(top,bottom){if("rgba"!=top.nodeName&&"hsla"!=top.nodeName){return new nodes.Literal("contrast("+(top.isNull?"":top.toString())+")")}var result=new nodes.Object;top=top.rgba;bottom=bottom||new nodes.RGBA(255,255,255,1);utils.assertColor(bottom);bottom=bottom.rgba;function contrast(top,bottom){if(1>top.a){top=blend(top,bottom)}var l1=luminosity(bottom).val+.05,l2=luminosity(top).val+.05,ratio=l1/l2;if(l2>l1){ratio=1/ratio}return Math.round(ratio*10)/10}if(1<=bottom.a){var resultRatio=new nodes.Unit(contrast(top,bottom));result.set("ratio",resultRatio);result.set("error",new nodes.Unit(0));result.set("min",resultRatio);result.set("max",resultRatio)}else{var onBlack=contrast(top,blend(bottom,new nodes.RGBA(0,0,0,1))),onWhite=contrast(top,blend(bottom,new nodes.RGBA(255,255,255,1))),max=Math.max(onBlack,onWhite);function processChannel(topChannel,bottomChannel){return Math.min(Math.max(0,(topChannel-bottomChannel*bottom.a)/(1-bottom.a)),255)}var closest=new nodes.RGBA(processChannel(top.r,bottom.r),processChannel(top.g,bottom.g),processChannel(top.b,bottom.b),1);var min=contrast(top,blend(bottom,closest));result.set("ratio",new nodes.Unit(Math.round((min+max)*50)/100));result.set("error",new nodes.Unit(Math.round((max-min)*50)/100));result.set("min",new nodes.Unit(min));result.set("max",new nodes.Unit(max))}return result}});require.register("functions/convert.js",function(module,exports,require){var utils=require("../utils");module.exports=function convert(str){utils.assertString(str,"str");return utils.parseString(str.string)}});require.register("functions/current-media.js",function(module,exports,require){var nodes=require("../nodes");module.exports=function currentMedia(){var self=this;return new nodes.String(lookForMedia(this.closestBlock.node)||"");function lookForMedia(node){if("media"==node.nodeName){node.val=self.visit(node.val);return node.toString()}else if(node.block.parent.node){return lookForMedia(node.block.parent.node)}}}});require.register("functions/define.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function define(name,expr,global){utils.assertType(name,"string","name");expr=utils.unwrap(expr);var scope=this.currentScope;if(global&&global.toBoolean().isTrue){scope=this.global.scope}var node=new nodes.Ident(name.val,expr);scope.add(node);return nodes.nil}});require.register("functions/dirname.js",function(module,exports,require){var utils=require("../utils"),path=require("../path");module.exports=function dirname(p){utils.assertString(p,"path");return path.dirname(p.val).replace(/\\/g,"/")}});require.register("functions/error.js",function(module,exports,require){var utils=require("../utils");module.exports=function error(msg){utils.assertType(msg,"string","msg");var err=new Error(msg.val);err.fromStylus=true;throw err}});require.register("functions/extname.js",function(module,exports,require){var utils=require("../utils"),path=require("../path");module.exports=function extname(p){utils.assertString(p,"path");return path.extname(p.val)}});require.register("functions/green.js",function(module,exports,require){var nodes=require("../nodes"),rgba=require("./rgba");module.exports=function green(color,value){color=color.rgba;if(value){return rgba(new nodes.Unit(color.r),value,new nodes.Unit(color.b),new nodes.Unit(color.a))}return new nodes.Unit(color.g,"")}});require.register("functions/hsl.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes"),hsla=require("./hsla");module.exports=function hsl(hue,saturation,lightness){if(1==arguments.length){utils.assertColor(hue,"color");return hue.hsla}else{return hsla(hue,saturation,lightness,new nodes.Unit(1))}}});require.register("functions/hsla.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function hsla(hue,saturation,lightness,alpha){switch(arguments.length){case 1:utils.assertColor(hue);return hue.hsla;case 2:utils.assertColor(hue);var color=hue.hsla;utils.assertType(saturation,"unit","alpha");var alpha=saturation.clone();if("%"==alpha.type)alpha.val/=100;return new nodes.HSLA(color.h,color.s,color.l,alpha.val);default:utils.assertType(hue,"unit","hue");utils.assertType(saturation,"unit","saturation");utils.assertType(lightness,"unit","lightness");utils.assertType(alpha,"unit","alpha");var alpha=alpha.clone();if(alpha&&"%"==alpha.type)alpha.val/=100;return new nodes.HSLA(hue.val,saturation.val,lightness.val,alpha.val)}}});require.register("functions/hue.js",function(module,exports,require){var nodes=require("../nodes"),hsla=require("./hsla"),component=require("./component");module.exports=function hue(color,value){if(value){var hslaColor=color.hsla;return hsla(value,new nodes.Unit(hslaColor.s),new nodes.Unit(hslaColor.l),new nodes.Unit(hslaColor.a))}return component(color,new nodes.String("hue"))}});require.register("functions/length.js",function(module,exports,require){var utils=require("../utils");(module.exports=function length(expr){if(expr){if(expr.nodes){var nodes=utils.unwrap(expr).nodes;if(1==nodes.length&&"object"==nodes[0].nodeName){return nodes[0].length}else{return nodes.length}}else{return 1}}return 0}).raw=true});require.register("functions/lightness.js",function(module,exports,require){var nodes=require("../nodes"),hsla=require("./hsla"),component=require("./component");module.exports=function lightness(color,value){if(value){var hslaColor=color.hsla;return hsla(new nodes.Unit(hslaColor.h),new nodes.Unit(hslaColor.s),value,new nodes.Unit(hslaColor.a))}return component(color,new nodes.String("lightness"))}});require.register("functions/list-separator.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");(module.exports=function listSeparator(list){list=utils.unwrap(list);return new nodes.String(list.isList?",":" ")}).raw=true});require.register("functions/lookup.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function lookup(name){utils.assertType(name,"string","name");var node=this.lookup(name.val);if(!node)return nodes.nil;return this.visit(node)}});require.register("functions/luminosity.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function luminosity(color){utils.assertColor(color);color=color.rgba;function processChannel(channel){channel=channel/255;return.03928>channel?channel/12.92:Math.pow((channel+.055)/1.055,2.4)}return new nodes.Unit(.2126*processChannel(color.r)+.7152*processChannel(color.g)+.0722*processChannel(color.b))}});require.register("functions/match.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");var VALID_FLAGS="igm";module.exports=function match(pattern,val,flags){utils.assertType(pattern,"string","pattern");utils.assertString(val,"val");var re=new RegExp(pattern.val,validateFlags(flags)?flags.string:"");return val.string.match(re)};function validateFlags(flags){flags=flags&&flags.string;if(flags){return flags.split("").every(function(flag){return~VALID_FLAGS.indexOf(flag)})}return false}});require.register("functions/math-prop.js",function(module,exports,require){var nodes=require("../nodes");module.exports=function math(prop){return new nodes.Unit(Math[prop.string])}});require.register("functions/math.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function math(n,fn){utils.assertType(n,"unit","n");utils.assertString(fn,"fn");return new nodes.Unit(Math[fn.string](n.val),n.type)}});require.register("functions/merge.js",function(module,exports,require){var utils=require("../utils");(module.exports=function merge(dest){utils.assertPresent(dest,"dest");dest=utils.unwrap(dest).first;utils.assertType(dest,"object","dest");var last=utils.unwrap(arguments[arguments.length-1]).first,deep=true===last.val;for(var i=1,len=arguments.length-deep;i<len;++i){utils.merge(dest.vals,utils.unwrap(arguments[i]).first.vals,deep)}return dest}).raw=true});require.register("functions/operate.js",function(module,exports,require){var utils=require("../utils");module.exports=function operate(op,left,right){utils.assertType(op,"string","op");utils.assertPresent(left,"left");utils.assertPresent(right,"right");return left.operate(op.val,right)}});require.register("functions/opposite-position.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");(module.exports=function oppositePosition(positions){var expr=[];utils.unwrap(positions).nodes.forEach(function(pos,i){utils.assertString(pos,"position "+i);pos=function(){switch(pos.string){case"top":return"bottom";case"bottom":return"top";case"left":return"right";case"right":return"left";case"center":return"center";default:throw new Error("invalid position "+pos)}}();expr.push(new nodes.Literal(pos))});return expr}).raw=true});require.register("functions/p.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");(module.exports=function p(){[].slice.call(arguments).forEach(function(expr){expr=utils.unwrap(expr);if(!expr.nodes.length)return;console.log("inspect: %s",expr.toString().replace(/^\(|\)$/g,""))});return nodes.nil}).raw=true});require.register("functions/pathjoin.js",function(module,exports,require){var path=require("../path");(module.exports=function pathjoin(){var paths=[].slice.call(arguments).map(function(path){return path.first.string});return path.join.apply(null,paths).replace(/\\/g,"/")}).raw=true});require.register("functions/pop.js",function(module,exports,require){var utils=require("../utils");(module.exports=function pop(expr){expr=utils.unwrap(expr);return expr.nodes.pop()}).raw=true});require.register("functions/prefix-classes.js",function(module,exports,require){var utils=require("../utils");module.exports=function prefixClasses(prefix,block){
utils.assertString(prefix,"prefix");utils.assertType(block,"block","block");var _prefix=this.prefix;this.options.prefix=this.prefix=prefix.string;block=this.visit(block);this.options.prefix=this.prefix=_prefix;return block}});require.register("functions/push.js",function(module,exports,require){var utils=require("../utils");(module.exports=function(expr){expr=utils.unwrap(expr);for(var i=1,len=arguments.length;i<len;++i){expr.nodes.push(utils.unwrap(arguments[i]).clone())}return expr.nodes.length}).raw=true});require.register("functions/range.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function range(start,stop,step){utils.assertType(start,"unit","start");utils.assertType(stop,"unit","stop");if(step){utils.assertType(step,"unit","step");if(0==step.val){throw new Error('ArgumentError: "step" argument must not be zero')}}else{step=new nodes.Unit(1)}var list=new nodes.Expression;for(var i=start.val;i<=stop.val;i+=step.val){list.push(new nodes.Unit(i,start.type))}return list}});require.register("functions/red.js",function(module,exports,require){var nodes=require("../nodes"),rgba=require("./rgba");module.exports=function red(color,value){color=color.rgba;if(value){return rgba(value,new nodes.Unit(color.g),new nodes.Unit(color.b),new nodes.Unit(color.a))}return new nodes.Unit(color.r,"")}});require.register("functions/remove.js",function(module,exports,require){var utils=require("../utils");module.exports=function remove(object,key){utils.assertType(object,"object","object");utils.assertString(key,"key");delete object.vals[key.string];return object}});require.register("functions/replace.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function replace(pattern,replacement,val){utils.assertString(pattern,"pattern");utils.assertString(replacement,"replacement");utils.assertString(val,"val");pattern=new RegExp(pattern.string,"g");var res=val.string.replace(pattern,replacement.string);return val instanceof nodes.Ident?new nodes.Ident(res):new nodes.String(res)}});require.register("functions/rgb.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes"),rgba=require("./rgba");module.exports=function rgb(red,green,blue){switch(arguments.length){case 1:utils.assertColor(red);var color=red.rgba;return new nodes.RGBA(color.r,color.g,color.b,1);default:return rgba(red,green,blue,new nodes.Unit(1))}}});require.register("functions/rgba.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function rgba(red,green,blue,alpha){switch(arguments.length){case 1:utils.assertColor(red);return red.rgba;case 2:utils.assertColor(red);var color=red.rgba;utils.assertType(green,"unit","alpha");alpha=green.clone();if("%"==alpha.type)alpha.val/=100;return new nodes.RGBA(color.r,color.g,color.b,alpha.val);default:utils.assertType(red,"unit","red");utils.assertType(green,"unit","green");utils.assertType(blue,"unit","blue");utils.assertType(alpha,"unit","alpha");var r="%"==red.type?Math.round(red.val*2.55):red.val,g="%"==green.type?Math.round(green.val*2.55):green.val,b="%"==blue.type?Math.round(blue.val*2.55):blue.val;alpha=alpha.clone();if(alpha&&"%"==alpha.type)alpha.val/=100;return new nodes.RGBA(r,g,b,alpha.val)}}});require.register("functions/s.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes"),Compiler=require("../visitor/compiler");(module.exports=function s(fmt){fmt=utils.unwrap(fmt).nodes[0];utils.assertString(fmt);var self=this,str=fmt.string,args=arguments,i=1;str=str.replace(/%(s|d)/g,function(_,specifier){var arg=args[i++]||nodes.nil;switch(specifier){case"s":return new Compiler(arg,self.options).compile();case"d":arg=utils.unwrap(arg).first;if("unit"!=arg.nodeName)throw new Error("%d requires a unit");return arg.val}});return new nodes.Literal(str)}).raw=true});require.register("functions/saturation.js",function(module,exports,require){var nodes=require("../nodes"),hsla=require("./hsla"),component=require("./component");module.exports=function saturation(color,value){if(value){var hslaColor=color.hsla;return hsla(new nodes.Unit(hslaColor.h),value,new nodes.Unit(hslaColor.l),new nodes.Unit(hslaColor.a))}return component(color,new nodes.String("saturation"))}});require.register("functions/selector-exists.js",function(module,exports,require){var utils=require("../utils");module.exports=function selectorExists(sel){utils.assertString(sel,"selector");if(!this.__selectorsMap__){var Normalizer=require("../visitor/normalizer"),visitor=new Normalizer(this.root.clone());visitor.visit(visitor.root);this.__selectorsMap__=visitor.map}return sel.string in this.__selectorsMap__}});require.register("functions/selector.js",function(module,exports,require){var utils=require("../utils");(module.exports=function selector(){var stack=this.selectorStack,args=[].slice.call(arguments);if(1==args.length){var expr=utils.unwrap(args[0]),len=expr.nodes.length;if(1==len){utils.assertString(expr.first,"selector");var SelectorParser=require("../selector-parser"),val=expr.first.string,parsed=new SelectorParser(val).parse().val;if(parsed==val)return val;stack.push(parse(val))}else if(len>1){if(expr.isList){pushToStack(expr.nodes,stack)}else{stack.push(parse(expr.nodes.map(function(node){utils.assertString(node,"selector");return node.string}).join(" ")))}}}else if(args.length>1){pushToStack(args,stack)}return stack.length?utils.compileSelectors(stack).join(","):"&"}).raw=true;function pushToStack(selectors,stack){selectors.forEach(function(sel){sel=sel.first;utils.assertString(sel,"selector");stack.push(parse(sel.string))})}function parse(selector){var Parser=new require("../parser"),parser=new Parser(selector),nodes;parser.state.push("selector-parts");nodes=parser.selector();nodes.forEach(function(node){node.val=node.segments.map(function(seg){return seg.toString()}).join("")});return nodes}});require.register("functions/selectors.js",function(module,exports,require){var nodes=require("../nodes"),Parser=require("../selector-parser");module.exports=function selectors(){var stack=this.selectorStack,expr=new nodes.Expression(true);if(stack.length){for(var i=0;i<stack.length;i++){var group=stack[i],nested;if(group.length>1){expr.push(new nodes.String(group.map(function(selector){nested=new Parser(selector.val).parse().nested;return(nested&&i?"& ":"")+selector.val}).join(",")))}else{var selector=group[0].val;nested=new Parser(selector).parse().nested;expr.push(new nodes.String((nested&&i?"& ":"")+selector))}}}else{expr.push(new nodes.String("&"))}return expr}});require.register("functions/shift.js",function(module,exports,require){var utils=require("../utils");(module.exports=function(expr){expr=utils.unwrap(expr);return expr.nodes.shift()}).raw=true});require.register("functions/split.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function split(delim,val){utils.assertString(delim,"delimiter");utils.assertString(val,"val");var splitted=val.string.split(delim.string);var expr=new nodes.Expression;var ItemNode=val instanceof nodes.Ident?nodes.Ident:nodes.String;for(var i=0,len=splitted.length;i<len;++i){expr.nodes.push(new ItemNode(splitted[i]))}return expr}});require.register("functions/slice.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");(module.exports=function slice(val,start,end){start=start&&start.nodes[0].val;end=end&&end.nodes[0].val;val=utils.unwrap(val).nodes;if(val.length>1){return utils.coerce(val.slice(start,end),true)}var result=val[0].string.slice(start,end);return val[0]instanceof nodes.Ident?new nodes.Ident(result):new nodes.String(result)}).raw=true});require.register("functions/substr.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function substr(val,start,length){utils.assertString(val,"val");utils.assertType(start,"unit","start");length=length&&length.val;var res=val.string.substr(start.val,length);return val instanceof nodes.Ident?new nodes.Ident(res):new nodes.String(res)}});require.register("functions/tan.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function tan(angle){utils.assertType(angle,"unit","angle");var radians=angle.val;if(angle.type==="deg"){radians*=Math.PI/180}var m=Math.pow(10,9);var sin=Math.round(Math.sin(radians)*m)/m,cos=Math.round(Math.cos(radians)*m)/m,tan=Math.round(m*sin/cos)/m;return new nodes.Unit(tan,"")}});require.register("functions/trace.js",function(module,exports,require){var nodes=require("../nodes");module.exports=function trace(){console.log(this.stack);return nodes.nil}});require.register("functions/transparentify.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function transparentify(top,bottom,alpha){utils.assertColor(top);top=top.rgba;bottom=bottom||new nodes.RGBA(255,255,255,1);if(!alpha&&bottom&&!bottom.rgba){alpha=bottom;bottom=new nodes.RGBA(255,255,255,1)}utils.assertColor(bottom);bottom=bottom.rgba;var bestAlpha=["r","g","b"].map(function(channel){return(top[channel]-bottom[channel])/((0<top[channel]-bottom[channel]?255:0)-bottom[channel])}).sort(function(a,b){return a<b})[0];if(alpha){utils.assertType(alpha,"unit","alpha");if("%"==alpha.type){bestAlpha=alpha.val/100}else if(!alpha.type){bestAlpha=alpha=alpha.val}}bestAlpha=Math.max(Math.min(bestAlpha,1),0);function processChannel(channel){if(0==bestAlpha){return bottom[channel]}else{return bottom[channel]+(top[channel]-bottom[channel])/bestAlpha}}return new nodes.RGBA(processChannel("r"),processChannel("g"),processChannel("b"),Math.round(bestAlpha*100)/100)}});require.register("functions/type.js",function(module,exports,require){var utils=require("../utils");module.exports=function type(node){utils.assertPresent(node,"expression");return node.nodeName}});require.register("functions/unit.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function unit(unit,type){utils.assertType(unit,"unit","unit");if(type){utils.assertString(type,"type");return new nodes.Unit(unit.val,type.string)}else{return unit.type||""}}});require.register("functions/unquote.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function unquote(string){utils.assertString(string,"string");return new nodes.Literal(string.string)}});require.register("functions/unshift.js",function(module,exports,require){var utils=require("../utils");(module.exports=function(expr){expr=utils.unwrap(expr);for(var i=1,len=arguments.length;i<len;++i){expr.nodes.unshift(utils.unwrap(arguments[i]))}return expr.nodes.length}).raw=true});require.register("functions/warn.js",function(module,exports,require){var utils=require("../utils"),nodes=require("../nodes");module.exports=function warn(msg){utils.assertType(msg,"string","msg");console.warn("Warning: %s",msg.val);return nodes.nil}});require.register("lexer.js",function(module,exports,require){var Token=require("./token"),nodes=require("./nodes"),errors=require("./errors");exports=module.exports=Lexer;var alias={and:"&&",or:"||",is:"==",isnt:"!=","is not":"!=",":=":"?="};function Lexer(str,options){options=options||{};this.stash=[];this.indentStack=[];this.indentRe=null;this.lineno=1;this.column=1;function comment(str,val,offset,s){var inComment=s.lastIndexOf("/*",offset)>s.lastIndexOf("*/",offset),commentIdx=s.lastIndexOf("//",offset),i=s.lastIndexOf("\n",offset),double=0,single=0;if(~commentIdx&&commentIdx>i){while(i!=offset){if("'"==s[i])single?single--:single++;if('"'==s[i])double?double--:double++;if("/"==s[i]&&"/"==s[i+1]){inComment=!single&&!double;break}++i}}return inComment?str:val+"\r"}if("\ufeff"==str.charAt(0))str=str.slice(1);this.str=str.replace(/\s+$/,"\n").replace(/\r\n?/g,"\n").replace(/\\ *\n/g,"\r").replace(/([,(:](?!\/\/[^ ])) *(?:\/\/[^\n]*|\/\*.*?\*\/)?\n\s*/g,comment).replace(/\s*\n[ \t]*([,)])/g,comment)}Lexer.prototype={inspect:function(){var tok,tmp=this.str,buf=[];while("eos"!=(tok=this.next()).type){buf.push(tok.inspect())}this.str=tmp;return buf.concat(tok.inspect()).join("\n")},lookahead:function(n){var fetch=n-this.stash.length;while(fetch-- >0)this.stash.push(this.advance());return this.stash[--n]},skip:function(len){var chunk=len[0];len=chunk?chunk.length:len;this.str=this.str.substr(len);if(chunk){this.move(chunk)}else{this.column+=len}},move:function(str){var lines=str.match(/\n/g),idx=str.lastIndexOf("\n");if(lines)this.lineno+=lines.length;this.column=~idx?str.length-idx:this.column+str.length},next:function(){var tok=this.stashed()||this.advance();this.prev=tok;return tok},isPartOfSelector:function(){var tok=this.stash[this.stash.length-1]||this.prev;switch(tok&&tok.type){case"color":return 2==tok.val.raw.length;case".":case"[":return true}return false},advance:function(){var column=this.column,line=this.lineno,tok=this.eos()||this.nil()||this.sep()||this.keyword()||this.urlchars()||this.comment()||this.newline()||this.escaped()||this.important()||this.literal()||this.fun()||this.anonFunc()||this.atrule()||this.brace()||this.paren()||this.color()||this.string()||this.unit()||this.namedop()||this.boolean()||this.unicode()||this.ident()||this.op()||this.eol()||this.space()||this.selector();tok.lineno=line;tok.column=column;return tok},peek:function(){return this.lookahead(1)},stashed:function(){return this.stash.shift()},eos:function(){if(this.str.length)return;if(this.indentStack.length){this.indentStack.shift();return new Token("outdent")}else{return new Token("eos")}},urlchars:function(){var captures;if(!this.isURL)return;if(captures=/^[\/:@.;?&=*!,<>#%0-9]+/.exec(this.str)){this.skip(captures);return new Token("literal",new nodes.Literal(captures[0]))}},sep:function(){var captures;if(captures=/^;[ \t]*/.exec(this.str)){this.skip(captures);return new Token(";")}},eol:function(){if("\r"==this.str[0]){++this.lineno;this.skip(1);return this.advance()}},space:function(){var captures;if(captures=/^([ \t]+)/.exec(this.str)){this.skip(captures);return new Token("space")}},escaped:function(){var captures;if(captures=/^\\(.)[ \t]*/.exec(this.str)){var c=captures[1];this.skip(captures);return new Token("ident",new nodes.Literal(c))}},literal:function(){var captures;if(captures=/^@css[ \t]*\{/.exec(this.str)){this.skip(captures);var c,braces=1,css="",node;while(c=this.str[0]){this.str=this.str.substr(1);switch(c){case"{":++braces;break;case"}":--braces;break;case"\n":case"\r":++this.lineno;break}css+=c;if(!braces)break}css=css.replace(/\s*}$/,"");node=new nodes.Literal(css);node.css=true;return new Token("literal",node)}},important:function(){var captures;if(captures=/^!important[ \t]*/.exec(this.str)){this.skip(captures);return new Token("ident",new nodes.Literal("!important"))}},brace:function(){var captures;if(captures=/^([{}])/.exec(this.str)){this.skip(1);var brace=captures[1];return new Token(brace,brace)}},paren:function(){var captures;if(captures=/^([()])([ \t]*)/.exec(this.str)){var paren=captures[1];this.skip(captures);if(")"==paren)this.isURL=false;var tok=new Token(paren,paren);tok.space=captures[2];return tok}},nil:function(){var captures,tok;if(captures=/^(null)\b[ \t]*/.exec(this.str)){this.skip(captures);if(this.isPartOfSelector()){tok=new Token("ident",new nodes.Ident(captures[0]))}else{tok=new Token("null",nodes.nil)}return tok}},keyword:function(){var captures,tok;if(captures=/^(return|if|else|unless|for|in)\b[ \t]*/.exec(this.str)){var keyword=captures[1];this.skip(captures);if(this.isPartOfSelector()){tok=new Token("ident",new nodes.Ident(captures[0]))}else{tok=new Token(keyword,keyword)}return tok}},namedop:function(){var captures,tok;if(captures=/^(not|and|or|is a|is defined|isnt|is not|is)(?!-)\b([ \t]*)/.exec(this.str)){var op=captures[1];this.skip(captures);if(this.isPartOfSelector()){tok=new Token("ident",new nodes.Ident(captures[0]))}else{op=alias[op]||op;tok=new Token(op,op)}tok.space=captures[2];return tok}},op:function(){var captures;if(captures=/^([.]{1,3}|&&|\|\||[!<>=?:]=|\*\*|[-+*\/%]=?|[,=?:!~<>&\[\]])([ \t]*)/.exec(this.str)){var op=captures[1];this.skip(captures);op=alias[op]||op;var tok=new Token(op,op);tok.space=captures[2];this.isURL=false;return tok}},anonFunc:function(){var tok;if("@"==this.str[0]&&"("==this.str[1]){this.skip(2);tok=new Token("function",new nodes.Ident("anonymous"));tok.anonymous=true;return tok}},atrule:function(){var captures;if(captures=/^@(?:-(\w+)-)?([a-zA-Z0-9-_]+)[ \t]*/.exec(this.str)){this.skip(captures);var vendor=captures[1],type=captures[2],tok;switch(type){case"require":case"import":case"charset":case"namespace":case"media":case"scope":case"supports":return new Token(type);case"document":return new Token("-moz-document");case"block":return new Token("atblock");case"extend":case"extends":return new Token("extend");case"keyframes":return new Token(type,vendor);default:return new Token("atrule",vendor?"-"+vendor+"-"+type:type)}}},comment:function(){if("/"==this.str[0]&&"/"==this.str[1]){var end=this.str.indexOf("\n");if(-1==end)end=this.str.length;this.skip(end);return this.advance()}if("/"==this.str[0]&&"*"==this.str[1]){var end=this.str.indexOf("*/");if(-1==end)end=this.str.length;var str=this.str.substr(0,end+2),lines=str.split(/\n|\r/).length-1,suppress=true,inline=false;this.lineno+=lines;this.skip(end+2);if("!"==str[2]){str=str.replace("*!","*");suppress=false}if(this.prev&&";"==this.prev.type)inline=true;return new Token("comment",new nodes.Comment(str,suppress,inline))}},"boolean":function(){var captures;if(captures=/^(true|false)\b([ \t]*)/.exec(this.str)){var val=nodes.Boolean("true"==captures[1]);this.skip(captures);var tok=new Token("boolean",val);tok.space=captures[2];return tok}},unicode:function(){var captures;if(captures=/^u\+[0-9a-f?]{1,6}(?:-[0-9a-f]{1,6})?/i.exec(this.str)){this.skip(captures);return new Token("literal",new nodes.Literal(captures[0]))}},fun:function(){var captures;if(captures=/^(-*[_a-zA-Z$][-\w\d$]*)\(([ \t]*)/.exec(this.str)){var name=captures[1];this.skip(captures);this.isURL="url"==name;var tok=new Token("function",new nodes.Ident(name));tok.space=captures[2];return tok}},ident:function(){var captures;if(captures=/^-*[_a-zA-Z$][-\w\d$]*/.exec(this.str)){this.skip(captures);return new Token("ident",new nodes.Ident(captures[0]))}},newline:function(){var captures,re;if(this.indentRe){captures=this.indentRe.exec(this.str)}else{re=/^\n([\t]*)[ \t]*/;captures=re.exec(this.str);if(captures&&!captures[1].length){re=/^\n([ \t]*)/;captures=re.exec(this.str)}if(captures&&captures[1].length)this.indentRe=re}if(captures){var tok,indents=captures[1].length;this.skip(captures);if(this.str[0]===" "||this.str[0]===" "){throw new errors.SyntaxError("Invalid indentation. You can use tabs or spaces to indent, but not both.")}if("\n"==this.str[0])return this.advance();if(this.indentStack.length&&indents<this.indentStack[0]){while(this.indentStack.length&&this.indentStack[0]>indents){this.stash.push(new Token("outdent"));this.indentStack.shift()}tok=this.stash.pop()}else if(indents&&indents!=this.indentStack[0]){this.indentStack.unshift(indents);tok=new Token("indent")}else{tok=new Token("newline")}return tok}},unit:function(){var captures;if(captures=/^(-)?(\d+\.\d+|\d+|\.\d+)(%|[a-zA-Z]+)?[ \t]*/.exec(this.str)){this.skip(captures);var n=parseFloat(captures[2]);if("-"==captures[1])n=-n;var node=new nodes.Unit(n,captures[3]);node.raw=captures[0];return new Token("unit",node)}},string:function(){var captures;if(captures=/^("[^"]*"|'[^']*')[ \t]*/.exec(this.str)){var str=captures[1],quote=captures[0][0];this.skip(captures);str=str.slice(1,-1).replace(/\\n/g,"\n");return new Token("string",new nodes.String(str,quote))}},color:function(){return this.rrggbbaa()||this.rrggbb()||this.rgba()||this.rgb()||this.nn()||this.n()},n:function(){var captures;if(captures=/^#([a-fA-F0-9]{1})[ \t]*/.exec(this.str)){this.skip(captures);var n=parseInt(captures[1]+captures[1],16),color=new nodes.RGBA(n,n,n,1);color.raw=captures[0];return new Token("color",color)}},nn:function(){var captures;if(captures=/^#([a-fA-F0-9]{2})[ \t]*/.exec(this.str)){this.skip(captures);var n=parseInt(captures[1],16),color=new nodes.RGBA(n,n,n,1);color.raw=captures[0];return new Token("color",color)}},rgb:function(){var captures;if(captures=/^#([a-fA-F0-9]{3})[ \t]*/.exec(this.str)){this.skip(captures);var rgb=captures[1],r=parseInt(rgb[0]+rgb[0],16),g=parseInt(rgb[1]+rgb[1],16),b=parseInt(rgb[2]+rgb[2],16),color=new nodes.RGBA(r,g,b,1);color.raw=captures[0];return new Token("color",color)}},rgba:function(){var captures;if(captures=/^#([a-fA-F0-9]{4})[ \t]*/.exec(this.str)){this.skip(captures);var rgb=captures[1],r=parseInt(rgb[0]+rgb[0],16),g=parseInt(rgb[1]+rgb[1],16),b=parseInt(rgb[2]+rgb[2],16),a=parseInt(rgb[3]+rgb[3],16),color=new nodes.RGBA(r,g,b,a/255);color.raw=captures[0];return new Token("color",color)}},rrggbb:function(){var captures;if(captures=/^#([a-fA-F0-9]{6})[ \t]*/.exec(this.str)){this.skip(captures);var rgb=captures[1],r=parseInt(rgb.substr(0,2),16),g=parseInt(rgb.substr(2,2),16),b=parseInt(rgb.substr(4,2),16),color=new nodes.RGBA(r,g,b,1);color.raw=captures[0];return new Token("color",color)}},rrggbbaa:function(){var captures;if(captures=/^#([a-fA-F0-9]{8})[ \t]*/.exec(this.str)){this.skip(captures);var rgb=captures[1],r=parseInt(rgb.substr(0,2),16),g=parseInt(rgb.substr(2,2),16),b=parseInt(rgb.substr(4,2),16),a=parseInt(rgb.substr(6,2),16),color=new nodes.RGBA(r,g,b,a/255);color.raw=captures[0];return new Token("color",color)}},selector:function(){var captures;if(captures=/^\^|.*?(?=\/\/(?![^\[]*\])|[,\n{])/.exec(this.str)){var selector=captures[0];this.skip(captures);return new Token("selector",selector)}}}});require.register("nodes/arguments.js",function(module,exports,require){var Node=require("./node"),nodes=require("../nodes"),utils=require("../utils");var Arguments=module.exports=function Arguments(){nodes.Expression.call(this);this.map={}};Arguments.prototype.__proto__=nodes.Expression.prototype;Arguments.fromExpression=function(expr){var args=new Arguments,len=expr.nodes.length;args.lineno=expr.lineno;args.column=expr.column;args.isList=expr.isList;for(var i=0;i<len;++i){args.push(expr.nodes[i])}return args};Arguments.prototype.clone=function(parent){var clone=nodes.Expression.prototype.clone.call(this,parent);clone.map={};for(var key in this.map){clone.map[key]=this.map[key].clone(parent,clone)}clone.isList=this.isList;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Arguments.prototype.toJSON=function(){return{__type:"Arguments",map:this.map,isList:this.isList,preserve:this.preserve,lineno:this.lineno,column:this.column,filename:this.filename,nodes:this.nodes}}});require.register("nodes/binop.js",function(module,exports,require){var Node=require("./node");var BinOp=module.exports=function BinOp(op,left,right){Node.call(this);this.op=op;this.left=left;this.right=right};BinOp.prototype.__proto__=Node.prototype;BinOp.prototype.clone=function(parent){var clone=new BinOp(this.op);clone.left=this.left.clone(parent,clone);clone.right=this.right&&this.right.clone(parent,clone);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;if(this.val)clone.val=this.val.clone(parent,clone);return clone};BinOp.prototype.toString=function(){return this.left.toString()+" "+this.op+" "+this.right.toString()};BinOp.prototype.toJSON=function(){var json={__type:"BinOp",left:this.left,right:this.right,op:this.op,lineno:this.lineno,column:this.column,filename:this.filename};if(this.val)json.val=this.val;return json}});require.register("nodes/block.js",function(module,exports,require){var Node=require("./node");var Block=module.exports=function Block(parent,node){Node.call(this);this.nodes=[];this.parent=parent;this.node=node;this.scope=true};Block.prototype.__proto__=Node.prototype;Block.prototype.__defineGetter__("hasProperties",function(){for(var i=0,len=this.nodes.length;i<len;++i){if("property"==this.nodes[i].nodeName){return true}}});Block.prototype.__defineGetter__("hasMedia",function(){for(var i=0,len=this.nodes.length;i<len;++i){var nodeName=this.nodes[i].nodeName;if("media"==nodeName){return true}}return false});Block.prototype.__defineGetter__("isEmpty",function(){return!this.nodes.length});Block.prototype.clone=function(parent,node){parent=parent||this.parent;var clone=new Block(parent,node||this.node);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;clone.scope=this.scope;this.nodes.forEach(function(node){clone.push(node.clone(clone,clone))});return clone};Block.prototype.push=function(node){this.nodes.push(node)};Block.prototype.toJSON=function(){return{__type:"Block",scope:this.scope,lineno:this.lineno,column:this.column,filename:this.filename,nodes:this.nodes}}});require.register("nodes/boolean.js",function(module,exports,require){var Node=require("./node"),nodes=require("./index");var Boolean=module.exports=function Boolean(val){Node.call(this);if(this.nodeName){this.val=!!val}else{return new Boolean(val)}};Boolean.prototype.__proto__=Node.prototype;Boolean.prototype.toBoolean=function(){return this};Boolean.prototype.__defineGetter__("isTrue",function(){return this.val});Boolean.prototype.__defineGetter__("isFalse",function(){return!this.val});Boolean.prototype.negate=function(){return new Boolean(!this.val)};Boolean.prototype.inspect=function(){return"[Boolean "+this.val+"]"};Boolean.prototype.toString=function(){return this.val?"true":"false"};Boolean.prototype.toJSON=function(){return{__type:"Boolean",val:this.val}}});require.register("nodes/call.js",function(module,exports,require){var Node=require("./node");var Call=module.exports=function Call(name,args){Node.call(this);this.name=name;this.args=args};Call.prototype.__proto__=Node.prototype;Call.prototype.clone=function(parent){var clone=new Call(this.name);clone.args=this.args.clone(parent,clone);if(this.block)clone.block=this.block.clone(parent,clone);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Call.prototype.toString=function(){var args=this.args.nodes.map(function(node){var str=node.toString();return str.slice(1,str.length-1)}).join(", ");return this.name+"("+args+")"};Call.prototype.toJSON=function(){var json={__type:"Call",name:this.name,args:this.args,lineno:this.lineno,column:this.column,filename:this.filename};if(this.block)json.block=this.block;return json}});require.register("nodes/charset.js",function(module,exports,require){var Node=require("./node");var Charset=module.exports=function Charset(val){Node.call(this);this.val=val};Charset.prototype.__proto__=Node.prototype;Charset.prototype.toString=function(){return"@charset "+this.val};Charset.prototype.toJSON=function(){return{__type:"Charset",val:this.val,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/namespace.js",function(module,exports,require){var Node=require("./node");var Namespace=module.exports=function Namespace(val,prefix){Node.call(this);this.val=val;this.prefix=prefix};Namespace.prototype.__proto__=Node.prototype;Namespace.prototype.toString=function(){return"@namespace "+(this.prefix?this.prefix+" ":"")+this.val};Namespace.prototype.toJSON=function(){return{__type:"Namespace",val:this.val,prefix:this.prefix,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/comment.js",function(module,exports,require){var Node=require("./node");var Comment=module.exports=function Comment(str,suppress,inline){Node.call(this);this.str=str;this.suppress=suppress;this.inline=inline};Comment.prototype.__proto__=Node.prototype;Comment.prototype.toJSON=function(){return{__type:"Comment",str:this.str,suppress:this.suppress,inline:this.inline,lineno:this.lineno,column:this.column,filename:this.filename}};Comment.prototype.toString=function(){return this.str}});require.register("nodes/each.js",function(module,exports,require){var Node=require("./node"),nodes=require("./index");var Each=module.exports=function Each(val,key,expr,block){Node.call(this);this.val=val;this.key=key;this.expr=expr;this.block=block};Each.prototype.__proto__=Node.prototype;Each.prototype.clone=function(parent){var clone=new Each(this.val,this.key);clone.expr=this.expr.clone(parent,clone);clone.block=this.block.clone(parent,clone);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Each.prototype.toJSON=function(){return{__type:"Each",val:this.val,key:this.key,expr:this.expr,block:this.block,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/expression.js",function(module,exports,require){var Node=require("./node"),nodes=require("../nodes"),utils=require("../utils");var Expression=module.exports=function Expression(isList){Node.call(this);this.nodes=[];this.isList=isList};Expression.prototype.__defineGetter__("isEmpty",function(){return!this.nodes.length});Expression.prototype.__defineGetter__("first",function(){return this.nodes[0]?this.nodes[0].first:nodes.nil});Expression.prototype.__defineGetter__("hash",function(){return this.nodes.map(function(node){return node.hash}).join("::")});Expression.prototype.__proto__=Node.prototype;Expression.prototype.clone=function(parent){var clone=new this.constructor(this.isList);clone.preserve=this.preserve;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;clone.nodes=this.nodes.map(function(node){return node.clone(parent,clone)});return clone};Expression.prototype.push=function(node){this.nodes.push(node)};Expression.prototype.operate=function(op,right,val){switch(op){case"[]=":var self=this,range=utils.unwrap(right).nodes,val=utils.unwrap(val),len,node;range.forEach(function(unit){len=self.nodes.length;if("unit"==unit.nodeName){var i=unit.val<0?len+unit.val:unit.val,n=i;while(i-- >len)self.nodes[i]=nodes.nil;self.nodes[n]=val}else if(unit.string){node=self.nodes[0];if(node&&"object"==node.nodeName)node.set(unit.string,val.clone())}});return val;case"[]":var expr=new nodes.Expression,vals=utils.unwrap(this).nodes,range=utils.unwrap(right).nodes,node;range.forEach(function(unit){if("unit"==unit.nodeName){node=vals[unit.val<0?vals.length+unit.val:unit.val]}else if("object"==vals[0].nodeName){node=vals[0].get(unit.string)}if(node)expr.push(node)});return expr.isEmpty?nodes.nil:utils.unwrap(expr);case"||":return this.toBoolean().isTrue?this:right;case"in":return Node.prototype.operate.call(this,op,right);case"!=":return this.operate("==",right,val).negate();case"==":var len=this.nodes.length,right=right.toExpression(),a,b;if(len!=right.nodes.length)return nodes.no;for(var i=0;i<len;++i){a=this.nodes[i];b=right.nodes[i];if(a.operate(op,b).isTrue)continue;return nodes.no}return nodes.yes;break;default:return this.first.operate(op,right,val)}};Expression.prototype.toBoolean=function(){if(this.nodes.length>1)return nodes.yes;return this.first.toBoolean()};Expression.prototype.toString=function(){return"("+this.nodes.map(function(node){return node.toString()}).join(this.isList?", ":" ")+")"};Expression.prototype.toJSON=function(){return{__type:"Expression",isList:this.isList,preserve:this.preserve,lineno:this.lineno,column:this.column,filename:this.filename,nodes:this.nodes}}});require.register("nodes/function.js",function(module,exports,require){var Node=require("./node");var Function=module.exports=function Function(name,params,body){Node.call(this);this.name=name;this.params=params;this.block=body;if("function"==typeof params)this.fn=params};Function.prototype.__defineGetter__("arity",function(){return this.params.length});Function.prototype.__proto__=Node.prototype;Function.prototype.__defineGetter__("hash",function(){return"function "+this.name});Function.prototype.clone=function(parent){
if(this.fn){var clone=new Function(this.name,this.fn)}else{var clone=new Function(this.name);clone.params=this.params.clone(parent,clone);clone.block=this.block.clone(parent,clone)}clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Function.prototype.toString=function(){if(this.fn){return this.name+"("+this.fn.toString().match(/^function *\w*\((.*?)\)/).slice(1).join(", ")+")"}else{return this.name+"("+this.params.nodes.join(", ")+")"}};Function.prototype.toJSON=function(){var json={__type:"Function",name:this.name,lineno:this.lineno,column:this.column,filename:this.filename};if(this.fn){json.fn=this.fn}else{json.params=this.params;json.block=this.block}return json}});require.register("nodes/group.js",function(module,exports,require){var Node=require("./node");var Group=module.exports=function Group(){Node.call(this);this.nodes=[];this.extends=[]};Group.prototype.__proto__=Node.prototype;Group.prototype.push=function(selector){this.nodes.push(selector)};Group.prototype.__defineGetter__("block",function(){return this.nodes[0].block});Group.prototype.__defineSetter__("block",function(block){for(var i=0,len=this.nodes.length;i<len;++i){this.nodes[i].block=block}});Group.prototype.__defineGetter__("hasOnlyPlaceholders",function(){return this.nodes.every(function(selector){return selector.isPlaceholder})});Group.prototype.clone=function(parent){var clone=new Group;clone.lineno=this.lineno;clone.column=this.column;this.nodes.forEach(function(node){clone.push(node.clone(parent,clone))});clone.filename=this.filename;clone.block=this.block.clone(parent,clone);return clone};Group.prototype.toJSON=function(){return{__type:"Group",nodes:this.nodes,block:this.block,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/hsla.js",function(module,exports,require){var Node=require("./node"),nodes=require("./index");var HSLA=exports=module.exports=function HSLA(h,s,l,a){Node.call(this);this.h=clampDegrees(h);this.s=clampPercentage(s);this.l=clampPercentage(l);this.a=clampAlpha(a);this.hsla=this};HSLA.prototype.__proto__=Node.prototype;HSLA.prototype.toString=function(){return"hsla("+this.h+","+this.s.toFixed(0)+"%,"+this.l.toFixed(0)+"%,"+this.a+")"};HSLA.prototype.clone=function(parent){var clone=new HSLA(this.h,this.s,this.l,this.a);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};HSLA.prototype.toJSON=function(){return{__type:"HSLA",h:this.h,s:this.s,l:this.l,a:this.a,lineno:this.lineno,column:this.column,filename:this.filename}};HSLA.prototype.__defineGetter__("rgba",function(){return nodes.RGBA.fromHSLA(this)});HSLA.prototype.__defineGetter__("hash",function(){return this.rgba.toString()});HSLA.prototype.add=function(h,s,l){return new HSLA(this.h+h,this.s+s,this.l+l,this.a)};HSLA.prototype.sub=function(h,s,l){return this.add(-h,-s,-l)};HSLA.prototype.operate=function(op,right){switch(op){case"==":case"!=":case"<=":case">=":case"<":case">":case"is a":case"||":case"&&":return this.rgba.operate(op,right);default:return this.rgba.operate(op,right).hsla}};exports.fromRGBA=function(rgba){var r=rgba.r/255,g=rgba.g/255,b=rgba.b/255,a=rgba.a;var min=Math.min(r,g,b),max=Math.max(r,g,b),l=(max+min)/2,d=max-min,h,s;switch(max){case min:h=0;break;case r:h=60*(g-b)/d;break;case g:h=60*(b-r)/d+120;break;case b:h=60*(r-g)/d+240;break}if(max==min){s=0}else if(l<.5){s=d/(2*l)}else{s=d/(2-2*l)}h%=360;s*=100;l*=100;return new HSLA(h,s,l,a)};HSLA.prototype.adjustLightness=function(percent){this.l=clampPercentage(this.l+this.l*(percent/100));return this};HSLA.prototype.adjustHue=function(deg){this.h=clampDegrees(this.h+deg);return this};function clampDegrees(n){n=n%360;return n>=0?n:360+n}function clampPercentage(n){return Math.max(0,Math.min(n,100))}function clampAlpha(n){return Math.max(0,Math.min(n,1))}});require.register("nodes/ident.js",function(module,exports,require){var Node=require("./node"),nodes=require("./index");var Ident=module.exports=function Ident(name,val,mixin){Node.call(this);this.name=name;this.string=name;this.val=val||nodes.nil;this.mixin=!!mixin};Ident.prototype.__defineGetter__("isEmpty",function(){return undefined==this.val});Ident.prototype.__defineGetter__("hash",function(){return this.name});Ident.prototype.__proto__=Node.prototype;Ident.prototype.clone=function(parent){var clone=new Ident(this.name);clone.val=this.val.clone(parent,clone);clone.mixin=this.mixin;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;clone.property=this.property;clone.rest=this.rest;return clone};Ident.prototype.toJSON=function(){return{__type:"Ident",name:this.name,val:this.val,mixin:this.mixin,property:this.property,rest:this.rest,lineno:this.lineno,column:this.column,filename:this.filename}};Ident.prototype.toString=function(){return this.name};Ident.prototype.coerce=function(other){switch(other.nodeName){case"ident":case"string":case"literal":return new Ident(other.string);case"unit":return new Ident(other.toString());default:return Node.prototype.coerce.call(this,other)}};Ident.prototype.operate=function(op,right){var val=right.first;switch(op){case"-":if("unit"==val.nodeName){var expr=new nodes.Expression;val=val.clone();val.val=-val.val;expr.push(this);expr.push(val);return expr}case"+":return new nodes.Ident(this.string+this.coerce(val).string)}return Node.prototype.operate.call(this,op,right)}});require.register("nodes/if.js",function(module,exports,require){var Node=require("./node");var If=module.exports=function If(cond,negate){Node.call(this);this.cond=cond;this.elses=[];if(negate&&negate.nodeName){this.block=negate}else{this.negate=negate}};If.prototype.__proto__=Node.prototype;If.prototype.clone=function(parent){var clone=new If;clone.cond=this.cond.clone(parent,clone);clone.block=this.block.clone(parent,clone);clone.elses=this.elses.map(function(node){return node.clone(parent,clone)});clone.negate=this.negate;clone.postfix=this.postfix;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};If.prototype.toJSON=function(){return{__type:"If",cond:this.cond,block:this.block,elses:this.elses,negate:this.negate,postfix:this.postfix,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/import.js",function(module,exports,require){var Node=require("./node");var Import=module.exports=function Import(expr,once){Node.call(this);this.path=expr;this.once=once||false};Import.prototype.__proto__=Node.prototype;Import.prototype.clone=function(parent){var clone=new Import;clone.path=this.path.nodeName?this.path.clone(parent,clone):this.path;clone.once=this.once;clone.mtime=this.mtime;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Import.prototype.toJSON=function(){return{__type:"Import",path:this.path,once:this.once,mtime:this.mtime,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/extend.js",function(module,exports,require){var Node=require("./node");var Extend=module.exports=function Extend(selectors){Node.call(this);this.selectors=selectors};Extend.prototype.__proto__=Node.prototype;Extend.prototype.clone=function(){return new Extend(this.selectors)};Extend.prototype.toString=function(){return"@extend "+this.selectors.join(", ")};Extend.prototype.toJSON=function(){return{__type:"Extend",selectors:this.selectors,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/index.js",function(module,exports,require){exports.Node=require("./node");exports.Root=require("./root");exports.Null=require("./null");exports.Each=require("./each");exports.If=require("./if");exports.Call=require("./call");exports.UnaryOp=require("./unaryop");exports.BinOp=require("./binop");exports.Ternary=require("./ternary");exports.Block=require("./block");exports.Unit=require("./unit");exports.String=require("./string");exports.HSLA=require("./hsla");exports.RGBA=require("./rgba");exports.Ident=require("./ident");exports.Group=require("./group");exports.Literal=require("./literal");exports.Boolean=require("./boolean");exports.Return=require("./return");exports.Media=require("./media");exports.QueryList=require("./query-list");exports.Query=require("./query");exports.Feature=require("./feature");exports.Params=require("./params");exports.Comment=require("./comment");exports.Keyframes=require("./keyframes");exports.Member=require("./member");exports.Charset=require("./charset");exports.Namespace=require("./namespace");exports.Import=require("./import");exports.Extend=require("./extend");exports.Object=require("./object");exports.Function=require("./function");exports.Property=require("./property");exports.Selector=require("./selector");exports.Expression=require("./expression");exports.Arguments=require("./arguments");exports.Atblock=require("./atblock");exports.Atrule=require("./atrule");exports.Supports=require("./supports");exports.yes=new exports.Boolean(true);exports.no=new exports.Boolean(false);exports.nil=new exports.Null});require.register("nodes/keyframes.js",function(module,exports,require){var Atrule=require("./atrule");var Keyframes=module.exports=function Keyframes(segs,prefix){Atrule.call(this,"keyframes");this.segments=segs;this.prefix=prefix||"official"};Keyframes.prototype.__proto__=Atrule.prototype;Keyframes.prototype.clone=function(parent){var clone=new Keyframes;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;clone.segments=this.segments.map(function(node){return node.clone(parent,clone)});clone.prefix=this.prefix;clone.block=this.block.clone(parent,clone);return clone};Keyframes.prototype.toJSON=function(){return{__type:"Keyframes",segments:this.segments,prefix:this.prefix,block:this.block,lineno:this.lineno,column:this.column,filename:this.filename}};Keyframes.prototype.toString=function(){return"@keyframes "+this.segments.join("")}});require.register("nodes/literal.js",function(module,exports,require){var Node=require("./node"),nodes=require("./index");var Literal=module.exports=function Literal(str){Node.call(this);this.val=str;this.string=str;this.prefixed=false};Literal.prototype.__proto__=Node.prototype;Literal.prototype.__defineGetter__("hash",function(){return this.val});Literal.prototype.toString=function(){return this.val};Literal.prototype.coerce=function(other){switch(other.nodeName){case"ident":case"string":case"literal":return new Literal(other.string);default:return Node.prototype.coerce.call(this,other)}};Literal.prototype.operate=function(op,right){var val=right.first;switch(op){case"+":return new nodes.Literal(this.string+this.coerce(val).string);default:return Node.prototype.operate.call(this,op,right)}};Literal.prototype.toJSON=function(){return{__type:"Literal",val:this.val,string:this.string,prefixed:this.prefixed,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/media.js",function(module,exports,require){var Atrule=require("./atrule");var Media=module.exports=function Media(val){Atrule.call(this,"media");this.val=val};Media.prototype.__proto__=Atrule.prototype;Media.prototype.clone=function(parent){var clone=new Media;clone.val=this.val.clone(parent,clone);clone.block=this.block.clone(parent,clone);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Media.prototype.toJSON=function(){return{__type:"Media",val:this.val,block:this.block,lineno:this.lineno,column:this.column,filename:this.filename}};Media.prototype.toString=function(){return"@media "+this.val}});require.register("nodes/query-list.js",function(module,exports,require){var Node=require("./node");var QueryList=module.exports=function QueryList(){Node.call(this);this.nodes=[]};QueryList.prototype.__proto__=Node.prototype;QueryList.prototype.clone=function(parent){var clone=new QueryList;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;for(var i=0;i<this.nodes.length;++i){clone.push(this.nodes[i].clone(parent,clone))}return clone};QueryList.prototype.push=function(node){this.nodes.push(node)};QueryList.prototype.merge=function(other){var list=new QueryList,merged;this.nodes.forEach(function(query){for(var i=0,len=other.nodes.length;i<len;++i){merged=query.merge(other.nodes[i]);if(merged)list.push(merged)}});return list};QueryList.prototype.toString=function(){return"("+this.nodes.map(function(node){return node.toString()}).join(", ")+")"};QueryList.prototype.toJSON=function(){return{__type:"QueryList",nodes:this.nodes,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/query.js",function(module,exports,require){var Node=require("./node");var Query=module.exports=function Query(){Node.call(this);this.nodes=[];this.type="";this.predicate=""};Query.prototype.__proto__=Node.prototype;Query.prototype.clone=function(parent){var clone=new Query;clone.predicate=this.predicate;clone.type=this.type;for(var i=0,len=this.nodes.length;i<len;++i){clone.push(this.nodes[i].clone(parent,clone))}clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Query.prototype.push=function(feature){this.nodes.push(feature)};Query.prototype.__defineGetter__("resolvedType",function(){if(this.type){return this.type.nodeName?this.type.string:this.type}});Query.prototype.__defineGetter__("resolvedPredicate",function(){if(this.predicate){return this.predicate.nodeName?this.predicate.string:this.predicate}});Query.prototype.merge=function(other){var query=new Query,p1=this.resolvedPredicate,p2=other.resolvedPredicate,t1=this.resolvedType,t2=other.resolvedType,type,pred;t1=t1||t2;t2=t2||t1;if("not"==p1^"not"==p2){if(t1==t2)return;type="not"==p1?t2:t1;pred="not"==p1?p2:p1}else if("not"==p1&&"not"==p2){if(t1!=t2)return;type=t1;pred="not"}else if(t1!=t2){return}else{type=t1;pred=p1||p2}query.predicate=pred;query.type=type;query.nodes=this.nodes.concat(other.nodes);return query};Query.prototype.toString=function(){var pred=this.predicate?this.predicate+" ":"",type=this.type||"",len=this.nodes.length,str=pred+type;if(len){str+=(type&&" and ")+this.nodes.map(function(expr){return expr.toString()}).join(" and ")}return str};Query.prototype.toJSON=function(){return{__type:"Query",predicate:this.predicate,type:this.type,nodes:this.nodes,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/feature.js",function(module,exports,require){var Node=require("./node");var Feature=module.exports=function Feature(segs){Node.call(this);this.segments=segs;this.expr=null};Feature.prototype.__proto__=Node.prototype;Feature.prototype.clone=function(parent){var clone=new Feature;clone.segments=this.segments.map(function(node){return node.clone(parent,clone)});if(this.expr)clone.expr=this.expr.clone(parent,clone);if(this.name)clone.name=this.name;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Feature.prototype.toString=function(){if(this.expr){return"("+this.segments.join("")+": "+this.expr.toString()+")"}else{return this.segments.join("")}};Feature.prototype.toJSON=function(){var json={__type:"Feature",segments:this.segments,lineno:this.lineno,column:this.column,filename:this.filename};if(this.expr)json.expr=this.expr;if(this.name)json.name=this.name;return json}});require.register("nodes/node.js",function(module,exports,require){var Evaluator=require("../visitor/evaluator"),utils=require("../utils"),nodes=require("./index");function CoercionError(msg){this.name="CoercionError";this.message=msg;Error.captureStackTrace(this,CoercionError)}CoercionError.prototype.__proto__=Error.prototype;var Node=module.exports=function Node(){this.lineno=nodes.lineno||1;this.column=nodes.column||1;this.filename=nodes.filename};Node.prototype={constructor:Node,get first(){return this},get hash(){return this.val},get nodeName(){return this.constructor.name.toLowerCase()},clone:function(){return this},toJSON:function(){return{lineno:this.lineno,column:this.column,filename:this.filename}},eval:function(){return new Evaluator(this).evaluate()},toBoolean:function(){return nodes.yes},toExpression:function(){if("expression"==this.nodeName)return this;var expr=new nodes.Expression;expr.push(this);return expr},shouldCoerce:function(op){switch(op){case"is a":case"in":case"||":case"&&":return false;default:return true}},operate:function(op,right){switch(op){case"is a":if("string"==right.first.nodeName){return nodes.Boolean(this.nodeName==right.val)}else{throw new Error('"is a" expects a string, got '+right.toString())}case"==":return nodes.Boolean(this.hash==right.hash);case"!=":return nodes.Boolean(this.hash!=right.hash);case">=":return nodes.Boolean(this.hash>=right.hash);case"<=":return nodes.Boolean(this.hash<=right.hash);case">":return nodes.Boolean(this.hash>right.hash);case"<":return nodes.Boolean(this.hash<right.hash);case"||":return this.toBoolean().isTrue?this:right;case"in":var vals=utils.unwrap(right).nodes,len=vals&&vals.length,hash=this.hash;if(!vals)throw new Error('"in" given invalid right-hand operand, expecting an expression');if(1==len&&"object"==vals[0].nodeName){return nodes.Boolean(vals[0].has(this.hash))}for(var i=0;i<len;++i){if(hash==vals[i].hash){return nodes.yes}}return nodes.no;case"&&":var a=this.toBoolean(),b=right.toBoolean();return a.isTrue&&b.isTrue?right:a.isFalse?this:right;default:if("[]"==op){var msg="cannot perform "+this+"["+right+"]"}else{var msg="cannot perform"+" "+this+" "+op+" "+right}throw new Error(msg)}},coerce:function(other){if(other.nodeName==this.nodeName)return other;throw new CoercionError("cannot coerce "+other+" to "+this.nodeName)}}});require.register("nodes/null.js",function(module,exports,require){var Node=require("./node"),nodes=require("./index");var Null=module.exports=function Null(){};Null.prototype.__proto__=Node.prototype;Null.prototype.inspect=Null.prototype.toString=function(){return"null"};Null.prototype.toBoolean=function(){return nodes.no};Null.prototype.__defineGetter__("isNull",function(){return true});Null.prototype.__defineGetter__("hash",function(){return null});Null.prototype.toJSON=function(){return{__type:"Null",lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/params.js",function(module,exports,require){var Node=require("./node");var Params=module.exports=function Params(){Node.call(this);this.nodes=[]};Params.prototype.__defineGetter__("length",function(){return this.nodes.length});Params.prototype.__proto__=Node.prototype;Params.prototype.push=function(node){this.nodes.push(node)};Params.prototype.clone=function(parent){var clone=new Params;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;this.nodes.forEach(function(node){clone.push(node.clone(parent,clone))});return clone};Params.prototype.toJSON=function(){return{__type:"Params",nodes:this.nodes,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/property.js",function(module,exports,require){var Node=require("./node");var Property=module.exports=function Property(segs,expr){Node.call(this);this.segments=segs;this.expr=expr};Property.prototype.__proto__=Node.prototype;Property.prototype.clone=function(parent){var clone=new Property(this.segments);clone.name=this.name;if(this.literal)clone.literal=this.literal;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;clone.segments=this.segments.map(function(node){return node.clone(parent,clone)});if(this.expr)clone.expr=this.expr.clone(parent,clone);return clone};Property.prototype.toJSON=function(){var json={__type:"Property",segments:this.segments,name:this.name,lineno:this.lineno,column:this.column,filename:this.filename};if(this.expr)json.expr=this.expr;if(this.literal)json.literal=this.literal;return json};Property.prototype.toString=function(){return"property("+this.segments.join("")+", "+this.expr+")"};Property.prototype.operate=function(op,right,val){return this.expr.operate(op,right,val)}});require.register("nodes/return.js",function(module,exports,require){var Node=require("./node"),nodes=require("./index");var Return=module.exports=function Return(expr){this.expr=expr||nodes.nil};Return.prototype.__proto__=Node.prototype;Return.prototype.clone=function(parent){var clone=new Return;clone.expr=this.expr.clone(parent,clone);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Return.prototype.toJSON=function(){return{__type:"Return",expr:this.expr,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/rgba.js",function(module,exports,require){var Node=require("./node"),HSLA=require("./hsla"),functions=require("../functions"),adjust=functions.adjust,nodes=require("./index");var RGBA=exports=module.exports=function RGBA(r,g,b,a){Node.call(this);this.r=clamp(r);this.g=clamp(g);this.b=clamp(b);this.a=clampAlpha(a);this.name="";this.rgba=this};RGBA.prototype.__proto__=Node.prototype;RGBA.withoutClamping=function(r,g,b,a){var rgba=new RGBA(0,0,0,0);rgba.r=r;rgba.g=g;rgba.b=b;rgba.a=a;return rgba};RGBA.prototype.clone=function(){var clone=new RGBA(this.r,this.g,this.b,this.a);clone.raw=this.raw;clone.name=this.name;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};RGBA.prototype.toJSON=function(){return{__type:"RGBA",r:this.r,g:this.g,b:this.b,a:this.a,raw:this.raw,name:this.name,lineno:this.lineno,column:this.column,filename:this.filename}};RGBA.prototype.toBoolean=function(){return nodes.yes};RGBA.prototype.__defineGetter__("hsla",function(){return HSLA.fromRGBA(this)});RGBA.prototype.__defineGetter__("hash",function(){return this.toString()});RGBA.prototype.add=function(r,g,b,a){return new RGBA(this.r+r,this.g+g,this.b+b,this.a+a)};RGBA.prototype.sub=function(r,g,b,a){return new RGBA(this.r-r,this.g-g,this.b-b,a==1?this.a:this.a-a)};RGBA.prototype.multiply=function(n){return new RGBA(this.r*n,this.g*n,this.b*n,this.a)};RGBA.prototype.divide=function(n){return new RGBA(this.r/n,this.g/n,this.b/n,this.a)};RGBA.prototype.operate=function(op,right){if("in"!=op)right=right.first;switch(op){case"is a":if("string"==right.nodeName&&"color"==right.string){return nodes.yes}break;case"+":switch(right.nodeName){case"unit":var n=right.val;switch(right.type){case"%":return adjust(this,new nodes.String("lightness"),right);case"deg":return this.hsla.adjustHue(n).rgba;default:return this.add(n,n,n,0)}case"rgba":return this.add(right.r,right.g,right.b,right.a);case"hsla":return this.hsla.add(right.h,right.s,right.l)}break;case"-":switch(right.nodeName){case"unit":var n=right.val;switch(right.type){case"%":return adjust(this,new nodes.String("lightness"),new nodes.Unit(-n,"%"));case"deg":return this.hsla.adjustHue(-n).rgba;default:return this.sub(n,n,n,0)}case"rgba":return this.sub(right.r,right.g,right.b,right.a);case"hsla":return this.hsla.sub(right.h,right.s,right.l)}break;case"*":switch(right.nodeName){case"unit":return this.multiply(right.val)}break;case"/":switch(right.nodeName){case"unit":return this.divide(right.val)}break}return Node.prototype.operate.call(this,op,right)};RGBA.prototype.toString=function(){function pad(n){return n<16?"0"+n.toString(16):n.toString(16)}if("transparent"==this.name)return this.name;if(1==this.a){var r=pad(this.r),g=pad(this.g),b=pad(this.b);if(r[0]==r[1]&&g[0]==g[1]&&b[0]==b[1]){return"#"+r[0]+g[0]+b[0]}else{return"#"+r+g+b}}else{return"rgba("+this.r+","+this.g+","+this.b+","+ +this.a.toFixed(3)+")"}};exports.fromHSLA=function(hsla){var h=hsla.h/360,s=hsla.s/100,l=hsla.l/100,a=hsla.a;var m2=l<=.5?l*(s+1):l+s-l*s,m1=l*2-m2;var r=hue(h+1/3)*255,g=hue(h)*255,b=hue(h-1/3)*255;function hue(h){if(h<0)++h;if(h>1)--h;if(h*6<1)return m1+(m2-m1)*h*6;if(h*2<1)return m2;if(h*3<2)return m1+(m2-m1)*(2/3-h)*6;return m1}return new RGBA(r,g,b,a)};function clamp(n){return Math.max(0,Math.min(n.toFixed(0),255))}function clampAlpha(n){return Math.max(0,Math.min(n,1))}});require.register("nodes/root.js",function(module,exports,require){var Node=require("./node");var Root=module.exports=function Root(){this.nodes=[]};Root.prototype.__proto__=Node.prototype;Root.prototype.push=function(node){this.nodes.push(node)};Root.prototype.unshift=function(node){this.nodes.unshift(node)};Root.prototype.clone=function(){var clone=new Root;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;this.nodes.forEach(function(node){clone.push(node.clone(clone,clone))});return clone};Root.prototype.toString=function(){return"[Root]"};Root.prototype.toJSON=function(){return{__type:"Root",nodes:this.nodes,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/selector.js",function(module,exports,require){var Block=require("./block"),Node=require("./node");var Selector=module.exports=function Selector(segs){Node.call(this);this.inherits=true;this.segments=segs;this.optional=false};Selector.prototype.__proto__=Node.prototype;Selector.prototype.toString=function(){return this.segments.join("")+(this.optional?" !optional":"")};Selector.prototype.__defineGetter__("isPlaceholder",function(){return this.val&&~this.val.substr(0,2).indexOf("$")});Selector.prototype.clone=function(parent){var clone=new Selector;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;clone.inherits=this.inherits;clone.val=this.val;clone.segments=this.segments.map(function(node){return node.clone(parent,clone)});clone.optional=this.optional;return clone};Selector.prototype.toJSON=function(){return{__type:"Selector",inherits:this.inherits,segments:this.segments,optional:this.optional,val:this.val,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/string.js",function(module,exports,require){var Node=require("./node"),sprintf=require("../functions").s,utils=require("../utils"),nodes=require("./index");var String=module.exports=function String(val,quote){Node.call(this);this.val=val;this.string=val;this.prefixed=false;if(typeof quote!=="string"){this.quote="'"}else{this.quote=quote}};String.prototype.__proto__=Node.prototype;String.prototype.toString=function(){return this.quote+this.val+this.quote};String.prototype.clone=function(){var clone=new String(this.val,this.quote);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};String.prototype.toJSON=function(){return{__type:"String",val:this.val,quote:this.quote,lineno:this.lineno,column:this.column,filename:this.filename}};String.prototype.toBoolean=function(){return nodes.Boolean(this.val.length)};String.prototype.coerce=function(other){switch(other.nodeName){case"string":return other;case"expression":return new String(other.nodes.map(function(node){return this.coerce(node).val},this).join(" "));default:return new String(other.toString())}};String.prototype.operate=function(op,right){switch(op){case"%":var expr=new nodes.Expression;expr.push(this);var args="expression"==right.nodeName?utils.unwrap(right).nodes:[right];return sprintf.apply(null,[expr].concat(args));case"+":var expr=new nodes.Expression;expr.push(new String(this.val+this.coerce(right).val));return expr;default:return Node.prototype.operate.call(this,op,right)}}});require.register("nodes/ternary.js",function(module,exports,require){var Node=require("./node");var Ternary=module.exports=function Ternary(cond,trueExpr,falseExpr){Node.call(this);this.cond=cond;this.trueExpr=trueExpr;this.falseExpr=falseExpr};Ternary.prototype.__proto__=Node.prototype;Ternary.prototype.clone=function(parent){var clone=new Ternary;clone.cond=this.cond.clone(parent,clone);clone.trueExpr=this.trueExpr.clone(parent,clone);clone.falseExpr=this.falseExpr.clone(parent,clone);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Ternary.prototype.toJSON=function(){return{__type:"Ternary",cond:this.cond,trueExpr:this.trueExpr,falseExpr:this.falseExpr,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/unaryop.js",function(module,exports,require){var Node=require("./node");var UnaryOp=module.exports=function UnaryOp(op,expr){Node.call(this);this.op=op;this.expr=expr};UnaryOp.prototype.__proto__=Node.prototype;UnaryOp.prototype.clone=function(parent){var clone=new UnaryOp(this.op);clone.expr=this.expr.clone(parent,clone);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};UnaryOp.prototype.toJSON=function(){return{__type:"UnaryOp",op:this.op,expr:this.expr,lineno:this.lineno,column:this.column,filename:this.filename}}});require.register("nodes/unit.js",function(module,exports,require){var Node=require("./node"),nodes=require("./index");var FACTOR_TABLE={mm:{val:1,label:"mm"},cm:{val:10,label:"mm"},"in":{val:25.4,label:"mm"},pt:{val:25.4/72,label:"mm"},ms:{val:1,label:"ms"},s:{val:1e3,label:"ms"},Hz:{val:1,label:"Hz"},kHz:{val:1e3,label:"Hz"}};var Unit=module.exports=function Unit(val,type){Node.call(this);this.val=val;this.type=type};Unit.prototype.__proto__=Node.prototype;Unit.prototype.toBoolean=function(){return nodes.Boolean(this.type?true:this.val)};Unit.prototype.toString=function(){return this.val+(this.type||"")};Unit.prototype.clone=function(){var clone=new Unit(this.val,this.type);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Unit.prototype.toJSON=function(){return{__type:"Unit",val:this.val,type:this.type,lineno:this.lineno,column:this.column,filename:this.filename}};Unit.prototype.operate=function(op,right){var type=this.type||right.first.type;if("rgba"==right.nodeName||"hsla"==right.nodeName){return right.operate(op,this)}if(this.shouldCoerce(op)){right=right.first;if("%"!=this.type&&("-"==op||"+"==op)&&"%"==right.type){right=new Unit(this.val*(right.val/100),"%")}else{right=this.coerce(right)}switch(op){case"-":return new Unit(this.val-right.val,type);case"+":type=type||right.type=="%"&&right.type;return new Unit(this.val+right.val,type);case"/":return new Unit(this.val/right.val,type);case"*":return new Unit(this.val*right.val,type);case"%":return new Unit(this.val%right.val,type);case"**":return new Unit(Math.pow(this.val,right.val),type);case"..":case"...":var start=this.val,end=right.val,expr=new nodes.Expression,inclusive=".."==op;if(start<end){do{expr.push(new nodes.Unit(start))}while(inclusive?++start<=end:++start<end)}else{do{expr.push(new nodes.Unit(start))}while(inclusive?--start>=end:--start>end)}return expr}}return Node.prototype.operate.call(this,op,right)};Unit.prototype.coerce=function(other){if("unit"==other.nodeName){var a=this,b=other,factorA=FACTOR_TABLE[a.type],factorB=FACTOR_TABLE[b.type];if(factorA&&factorB&&factorA.label==factorB.label){var bVal=b.val*(factorB.val/factorA.val);return new nodes.Unit(bVal,a.type)}else{return new nodes.Unit(b.val,a.type)}}else if("string"==other.nodeName){if("%"==other.val)return new nodes.Unit(0,"%");var val=parseFloat(other.val);if(isNaN(val))Node.prototype.coerce.call(this,other);return new nodes.Unit(val)}else{return Node.prototype.coerce.call(this,other)}}});require.register("nodes/object.js",function(module,exports,require){var Node=require("./node"),nodes=require("./index"),nativeObj={}.constructor;var Object=module.exports=function Object(){Node.call(this);this.vals={}};Object.prototype.__proto__=Node.prototype;Object.prototype.set=function(key,val){this.vals[key]=val;return this};Object.prototype.__defineGetter__("length",function(){return nativeObj.keys(this.vals).length});Object.prototype.get=function(key){return this.vals[key]||nodes.nil};Object.prototype.has=function(key){return key in this.vals};Object.prototype.operate=function(op,right){switch(op){case".":case"[]":return this.get(right.hash);case"==":var vals=this.vals,a,b;if("object"!=right.nodeName||this.length!=right.length)return nodes.no;for(var key in vals){a=vals[key];b=right.vals[key];if(a.operate(op,b).isFalse)return nodes.no;
}return nodes.yes;case"!=":return this.operate("==",right).negate();default:return Node.prototype.operate.call(this,op,right)}};Object.prototype.toBoolean=function(){return nodes.Boolean(this.length)};Object.prototype.toBlock=function(){var str="{",key,val;for(key in this.vals){val=this.get(key);if("object"==val.first.nodeName){str+=key+" "+val.first.toBlock()}else{switch(key){case"@charset":str+=key+" "+val.first.toString()+";";break;default:str+=key+":"+toString(val)+";"}}}str+="}";return str;function toString(node){if(node.nodes){return node.nodes.map(toString).join(node.isList?",":" ")}else if("literal"==node.nodeName&&","==node.val){return"\\,"}return node.toString()}};Object.prototype.clone=function(parent){var clone=new Object;clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;for(var key in this.vals){clone.vals[key]=this.vals[key].clone(parent,clone)}return clone};Object.prototype.toJSON=function(){return{__type:"Object",vals:this.vals,lineno:this.lineno,column:this.column,filename:this.filename}};Object.prototype.toString=function(){var obj={};for(var prop in this.vals){obj[prop]=this.vals[prop].toString()}return JSON.stringify(obj)}});require.register("nodes/supports.js",function(module,exports,require){var Atrule=require("./atrule");var Supports=module.exports=function Supports(condition){Atrule.call(this,"supports");this.condition=condition};Supports.prototype.__proto__=Atrule.prototype;Supports.prototype.clone=function(parent){var clone=new Supports;clone.condition=this.condition.clone(parent,clone);clone.block=this.block.clone(parent,clone);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Supports.prototype.toJSON=function(){return{__type:"Supports",condition:this.condition,block:this.block,lineno:this.lineno,column:this.column,filename:this.filename}};Supports.prototype.toString=function(){return"@supports "+this.condition}});require.register("nodes/member.js",function(module,exports,require){var Node=require("./node");var Member=module.exports=function Member(left,right){Node.call(this);this.left=left;this.right=right};Member.prototype.__proto__=Node.prototype;Member.prototype.clone=function(parent){var clone=new Member;clone.left=this.left.clone(parent,clone);clone.right=this.right.clone(parent,clone);if(this.val)clone.val=this.val.clone(parent,clone);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Member.prototype.toJSON=function(){var json={__type:"Member",left:this.left,right:this.right,lineno:this.lineno,column:this.column,filename:this.filename};if(this.val)json.val=this.val;return json};Member.prototype.toString=function(){return this.left.toString()+"."+this.right.toString()}});require.register("nodes/atblock.js",function(module,exports,require){var Node=require("./node");var Atblock=module.exports=function Atblock(){Node.call(this)};Atblock.prototype.__defineGetter__("nodes",function(){return this.block.nodes});Atblock.prototype.__proto__=Node.prototype;Atblock.prototype.clone=function(parent){var clone=new Atblock;clone.block=this.block.clone(parent,clone);clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Atblock.prototype.toString=function(){return"@block"};Atblock.prototype.toJSON=function(){return{__type:"Atblock",block:this.block,lineno:this.lineno,column:this.column,fileno:this.fileno}}});require.register("nodes/atrule.js",function(module,exports,require){var Node=require("./node");var Atrule=module.exports=function Atrule(type){Node.call(this);this.type=type};Atrule.prototype.__proto__=Node.prototype;Atrule.prototype.__defineGetter__("hasOnlyProperties",function(){if(!this.block)return false;var nodes=this.block.nodes;for(var i=0,len=nodes.length;i<len;++i){var nodeName=nodes[i].nodeName;switch(nodes[i].nodeName){case"property":case"expression":case"comment":continue;default:return false}}return true});Atrule.prototype.clone=function(parent){var clone=new Atrule(this.type);if(this.block)clone.block=this.block.clone(parent,clone);clone.segments=this.segments.map(function(node){return node.clone(parent,clone)});clone.lineno=this.lineno;clone.column=this.column;clone.filename=this.filename;return clone};Atrule.prototype.toJSON=function(){var json={__type:"Atrule",type:this.type,segments:this.segments,lineno:this.lineno,column:this.column,filename:this.filename};if(this.block)json.block=this.block;return json};Atrule.prototype.toString=function(){return"@"+this.type};Atrule.prototype.__defineGetter__("hasOutput",function(){return!!this.block&&hasOutput(this.block)});function hasOutput(block){var nodes=block.nodes;if(nodes.every(function(node){return"group"==node.nodeName&&node.hasOnlyPlaceholders}))return false;return nodes.some(function(node){switch(node.nodeName){case"property":case"literal":case"import":return true;case"block":return hasOutput(node);default:if(node.block)return hasOutput(node.block)}})}});require.register("parser.js",function(module,exports,require){var Lexer=require("./lexer"),nodes=require("./nodes"),Token=require("./token"),units=require("./units"),errors=require("./errors");var selectorTokens=["ident","string","selector","function","comment","boolean","space","color","unit","for","in","[","]","(",")","+","-","*","*=","<",">","=",":","&","&&","~","{","}",".","..","/"];var pseudoSelectors=["matches","not","dir","lang","any-link","link","visited","local-link","target","scope","hover","active","focus","drop","current","past","future","enabled","disabled","read-only","read-write","placeholder-shown","checked","indeterminate","valid","invalid","in-range","out-of-range","required","optional","user-error","root","empty","blank","nth-child","nth-last-child","first-child","last-child","only-child","nth-of-type","nth-last-of-type","first-of-type","last-of-type","only-of-type","nth-match","nth-last-match","nth-column","nth-last-column","first-line","first-letter","before","after","selection"];var Parser=module.exports=function Parser(str,options){var self=this;options=options||{};this.lexer=new Lexer(str,options);this.prefix=options.prefix||"";this.root=options.root||new nodes.Root;this.state=["root"];this.stash=[];this.parens=0;this.css=0;this.state.pop=function(){self.prevState=[].pop.call(this)}};Parser.prototype={constructor:Parser,currentState:function(){return this.state[this.state.length-1]},previousState:function(){return this.state[this.state.length-2]},parse:function(){var block=this.parent=this.root;while("eos"!=this.peek().type){this.skipWhitespace();if("eos"==this.peek().type)break;var stmt=this.statement();this.accept(";");if(!stmt)this.error("unexpected token {peek}, not allowed at the root level");block.push(stmt)}return block},error:function(msg){var type=this.peek().type,val=undefined==this.peek().val?"":" "+this.peek().toString();if(val.trim()==type.trim())val="";throw new errors.ParseError(msg.replace("{peek}",'"'+type+val+'"'))},accept:function(type){if(type==this.peek().type){return this.next()}},expect:function(type){if(type!=this.peek().type){this.error('expected "'+type+'", got {peek}')}return this.next()},next:function(){var tok=this.stash.length?this.stash.pop():this.lexer.next(),line=tok.lineno,column=tok.column||1;if(tok.val&&tok.val.nodeName){tok.val.lineno=line;tok.val.column=column}nodes.lineno=line;nodes.column=column;return tok},peek:function(){return this.lexer.peek()},lookahead:function(n){return this.lexer.lookahead(n)},isSelectorToken:function(n){var la=this.lookahead(n).type;switch(la){case"for":return this.bracketed;case"[":this.bracketed=true;return true;case"]":this.bracketed=false;return true;default:return~selectorTokens.indexOf(la)}},isPseudoSelector:function(n){var val=this.lookahead(n).val;return val&&~pseudoSelectors.indexOf(val.name)},lineContains:function(type){var i=1,la;while(la=this.lookahead(i++)){if(~["indent","outdent","newline","eos"].indexOf(la.type))return;if(type==la.type)return true}},selectorToken:function(){if(this.isSelectorToken(1)){if("{"==this.peek().type){if(!this.lineContains("}"))return;var i=0,la;while(la=this.lookahead(++i)){if("}"==la.type){if(i==2||i==3&&this.lookahead(i-1).type=="space")return;break}if(":"==la.type)return}}return this.next()}},skip:function(tokens){while(~tokens.indexOf(this.peek().type))this.next()},skipWhitespace:function(){this.skip(["space","indent","outdent","newline"])},skipNewlines:function(){while("newline"==this.peek().type)this.next()},skipSpaces:function(){while("space"==this.peek().type)this.next()},skipSpacesAndComments:function(){while("space"==this.peek().type||"comment"==this.peek().type)this.next()},looksLikeFunctionDefinition:function(i){return"indent"==this.lookahead(i).type||"{"==this.lookahead(i).type},looksLikeSelector:function(fromProperty){var i=1,brace;if(fromProperty&&":"==this.lookahead(i+1).type&&(this.lookahead(i+1).space||"indent"==this.lookahead(i+2).type))return false;while("ident"==this.lookahead(i).type&&("newline"==this.lookahead(i+1).type||","==this.lookahead(i+1).type))i+=2;while(this.isSelectorToken(i)||","==this.lookahead(i).type){if("selector"==this.lookahead(i).type)return true;if("&"==this.lookahead(i+1).type)return true;if("."==this.lookahead(i).type&&"ident"==this.lookahead(i+1).type)return true;if("*"==this.lookahead(i).type&&"newline"==this.lookahead(i+1).type)return true;if(":"==this.lookahead(i).type&&":"==this.lookahead(i+1).type)return true;if("color"==this.lookahead(i).type&&"newline"==this.lookahead(i-1).type)return true;if(this.looksLikeAttributeSelector(i))return true;if(("="==this.lookahead(i).type||"function"==this.lookahead(i).type)&&"{"==this.lookahead(i+1).type)return false;if(":"==this.lookahead(i).type&&!this.isPseudoSelector(i+1)&&this.lineContains("."))return false;if("{"==this.lookahead(i).type)brace=true;else if("}"==this.lookahead(i).type)brace=false;if(brace&&":"==this.lookahead(i).type)return true;if("space"==this.lookahead(i).type&&"{"==this.lookahead(i+1).type)return true;if(":"==this.lookahead(i++).type&&!this.lookahead(i-1).space&&this.isPseudoSelector(i))return true;if("space"==this.lookahead(i).type&&"newline"==this.lookahead(i+1).type&&"{"==this.lookahead(i+2).type)return true;if(","==this.lookahead(i).type&&"newline"==this.lookahead(i+1).type)return true}if(","==this.lookahead(i).type&&"newline"==this.lookahead(i+1).type)return true;if("{"==this.lookahead(i).type&&"newline"==this.lookahead(i+1).type)return true;if(this.css){if(";"==this.lookahead(i).type||"}"==this.lookahead(i-1).type)return false}while(!~["indent","outdent","newline","for","if",";","}","eos"].indexOf(this.lookahead(i).type))++i;if("indent"==this.lookahead(i).type)return true},looksLikeAttributeSelector:function(n){var type=this.lookahead(n).type;if("="==type&&this.bracketed)return true;return("ident"==type||"string"==type)&&"]"==this.lookahead(n+1).type&&("newline"==this.lookahead(n+2).type||this.isSelectorToken(n+2))&&!this.lineContains(":")&&!this.lineContains("=")},looksLikeKeyframe:function(){var i=2,type;switch(this.lookahead(i).type){case"{":case"indent":case",":return true;case"newline":while("unit"==this.lookahead(++i).type||"newline"==this.lookahead(i).type);type=this.lookahead(i).type;return"indent"==type||"{"==type}},stateAllowsSelector:function(){switch(this.currentState()){case"root":case"atblock":case"selector":case"conditional":case"function":case"atrule":case"for":return true}},assignAtblock:function(expr){try{expr.push(this.atblock(expr))}catch(err){this.error("invalid right-hand side operand in assignment, got {peek}")}},statement:function(){var stmt=this.stmt(),state=this.prevState,block,op;if(this.allowPostfix){this.allowPostfix=false;state="expression"}switch(state){case"assignment":case"expression":case"function arguments":while(op=this.accept("if")||this.accept("unless")||this.accept("for")){switch(op.type){case"if":case"unless":stmt=new nodes.If(this.expression(),stmt);stmt.postfix=true;stmt.negate="unless"==op.type;this.accept(";");break;case"for":var key,val=this.id().name;if(this.accept(","))key=this.id().name;this.expect("in");var each=new nodes.Each(val,key,this.expression());block=new nodes.Block(this.parent,each);block.push(stmt);each.block=block;stmt=each}}}return stmt},stmt:function(){var type=this.peek().type;switch(type){case"keyframes":return this.keyframes();case"-moz-document":return this.mozdocument();case"comment":case"selector":case"extend":case"literal":case"charset":case"namespace":case"require":case"extend":case"media":case"atrule":case"ident":case"scope":case"supports":case"unless":return this[type]();case"function":return this.fun();case"import":return this.atimport();case"if":return this.ifstmt();case"for":return this.forin();case"return":return this.ret();case"{":return this.property();default:if(this.stateAllowsSelector()){switch(type){case"color":case"~":case">":case"<":case":":case"&":case"&&":case"[":case".":case"/":return this.selector();case"..":if("/"==this.lookahead(2).type)return this.selector();case"+":return"function"==this.lookahead(2).type?this.functionCall():this.selector();case"*":return this.property();case"unit":if(this.looksLikeKeyframe())return this.selector();case"-":if("{"==this.lookahead(2).type)return this.property()}}var expr=this.expression();if(expr.isEmpty)this.error("unexpected {peek}");return expr}},block:function(node,scope){var delim,stmt,next,block=this.parent=new nodes.Block(this.parent,node);if(false===scope)block.scope=false;this.accept("newline");if(this.accept("{")){this.css++;delim="}";this.skipWhitespace()}else{delim="outdent";this.expect("indent")}while(delim!=this.peek().type){if(this.css){if(this.accept("newline")||this.accept("indent"))continue;stmt=this.statement();this.accept(";");this.skipWhitespace()}else{if(this.accept("newline"))continue;next=this.lookahead(2).type;if("indent"==this.peek().type&&~["outdent","newline","comment"].indexOf(next)){this.skip(["indent","outdent"]);continue}if("eos"==this.peek().type)return block;stmt=this.statement();this.accept(";")}if(!stmt)this.error("unexpected token {peek} in block");block.push(stmt)}if(this.css){this.skipWhitespace();this.expect("}");this.skipSpaces();this.css--}else{this.expect("outdent")}this.parent=block.parent;return block},comment:function(){var node=this.next().val;this.skipSpaces();return node},forin:function(){this.expect("for");var key,val=this.id().name;if(this.accept(","))key=this.id().name;this.expect("in");this.state.push("for");this.cond=true;var each=new nodes.Each(val,key,this.expression());this.cond=false;each.block=this.block(each,false);this.state.pop();return each},ret:function(){this.expect("return");var expr=this.expression();return expr.isEmpty?new nodes.Return:new nodes.Return(expr)},unless:function(){this.expect("unless");this.state.push("conditional");this.cond=true;var node=new nodes.If(this.expression(),true);this.cond=false;node.block=this.block(node,false);this.state.pop();return node},ifstmt:function(){this.expect("if");this.state.push("conditional");this.cond=true;var node=new nodes.If(this.expression()),cond,block;this.cond=false;node.block=this.block(node,false);this.skip(["newline","comment"]);while(this.accept("else")){if(this.accept("if")){this.cond=true;cond=this.expression();this.cond=false;block=this.block(node,false);node.elses.push(new nodes.If(cond,block))}else{node.elses.push(this.block(node,false));break}this.skip(["newline","comment"])}this.state.pop();return node},atblock:function(node){if(!node)this.expect("atblock");node=new nodes.Atblock;this.state.push("atblock");node.block=this.block(node,false);this.state.pop();return node},atrule:function(){var type=this.expect("atrule").val,node=new nodes.Atrule(type),tok;this.skipSpacesAndComments();node.segments=this.selectorParts();this.skipSpacesAndComments();tok=this.peek().type;if("indent"==tok||"{"==tok||"newline"==tok&&"{"==this.lookahead(2).type){this.state.push("atrule");node.block=this.block(node);this.state.pop()}return node},scope:function(){this.expect("scope");var selector=this.selectorParts().map(function(selector){return selector.val}).join("");this.selectorScope=selector.trim();return nodes.nil},supports:function(){this.expect("supports");var node=new nodes.Supports(this.supportsCondition());this.state.push("atrule");node.block=this.block(node);this.state.pop();return node},supportsCondition:function(){var node=this.supportsNegation()||this.supportsOp();if(!node){this.cond=true;node=this.expression();this.cond=false}return node},supportsNegation:function(){if(this.accept("not")){var node=new nodes.Expression;node.push(new nodes.Literal("not"));node.push(this.supportsFeature());return node}},supportsOp:function(){var feature=this.supportsFeature(),op,expr;if(feature){expr=new nodes.Expression;expr.push(feature);while(op=this.accept("&&")||this.accept("||")){expr.push(new nodes.Literal("&&"==op.val?"and":"or"));expr.push(this.supportsFeature())}return expr}},supportsFeature:function(){this.skipSpacesAndComments();if("("==this.peek().type){var la=this.lookahead(2).type;if("ident"==la||"{"==la){return this.feature()}else{this.expect("(");var node=new nodes.Expression;node.push(new nodes.Literal("("));node.push(this.supportsCondition());this.expect(")");node.push(new nodes.Literal(")"));this.skipSpacesAndComments();return node}}},extend:function(){var tok=this.expect("extend"),selectors=[],sel,node,arr;do{arr=this.selectorParts();if(!arr.length)continue;sel=new nodes.Selector(arr);selectors.push(sel);if("!"!==this.peek().type)continue;tok=this.lookahead(2);if("ident"!==tok.type||"optional"!==tok.val.name)continue;this.skip(["!","ident"]);sel.optional=true}while(this.accept(","));node=new nodes.Extend(selectors);node.lineno=tok.lineno;node.column=tok.column;return node},media:function(){this.expect("media");this.state.push("atrule");var media=new nodes.Media(this.queries());media.block=this.block(media);this.state.pop();return media},queries:function(){var queries=new nodes.QueryList,skip=["comment","newline","space"];do{this.skip(skip);queries.push(this.query());this.skip(skip)}while(this.accept(","));return queries},query:function(){var query=new nodes.Query,expr,pred,id;if("ident"==this.peek().type&&("."==this.lookahead(2).type||"["==this.lookahead(2).type)){this.cond=true;expr=this.expression();this.cond=false;query.push(new nodes.Feature(expr.nodes));return query}if(pred=this.accept("ident")||this.accept("not")){pred=new nodes.Literal(pred.val.string||pred.val);this.skipSpacesAndComments();if(id=this.accept("ident")){query.type=id.val;query.predicate=pred}else{query.type=pred}this.skipSpacesAndComments();if(!this.accept("&&"))return query}do{query.push(this.feature())}while(this.accept("&&"));return query},feature:function(){this.skipSpacesAndComments();this.expect("(");this.skipSpacesAndComments();var node=new nodes.Feature(this.interpolate());this.skipSpacesAndComments();this.accept(":");this.skipSpacesAndComments();this.inProperty=true;node.expr=this.list();this.inProperty=false;this.skipSpacesAndComments();this.expect(")");this.skipSpacesAndComments();return node},mozdocument:function(){this.expect("-moz-document");var mozdocument=new nodes.Atrule("-moz-document"),calls=[];do{this.skipSpacesAndComments();calls.push(this.functionCall());this.skipSpacesAndComments()}while(this.accept(","));mozdocument.segments=[new nodes.Literal(calls.join(", "))];this.state.push("atrule");mozdocument.block=this.block(mozdocument,false);this.state.pop();return mozdocument},atimport:function(){this.expect("import");this.allowPostfix=true;return new nodes.Import(this.expression(),false)},require:function(){this.expect("require");this.allowPostfix=true;return new nodes.Import(this.expression(),true)},charset:function(){this.expect("charset");var str=this.expect("string").val;this.allowPostfix=true;return new nodes.Charset(str)},namespace:function(){var str,prefix;this.expect("namespace");this.skipSpacesAndComments();if(prefix=this.accept("ident")){prefix=prefix.val}this.skipSpacesAndComments();str=this.accept("string")||this.url();this.allowPostfix=true;return new nodes.Namespace(str,prefix)},keyframes:function(){var tok=this.expect("keyframes"),keyframes;this.skipSpacesAndComments();keyframes=new nodes.Keyframes(this.selectorParts(),tok.val);this.skipSpacesAndComments();this.state.push("atrule");keyframes.block=this.block(keyframes);this.state.pop();return keyframes},literal:function(){return this.expect("literal").val},id:function(){var tok=this.expect("ident");this.accept("space");return tok.val},ident:function(){var i=2,la=this.lookahead(i).type;while("space"==la)la=this.lookahead(++i).type;switch(la){case"=":case"?=":case"-=":case"+=":case"*=":case"/=":case"%=":return this.assignment();case".":if("space"==this.lookahead(i-1).type)return this.selector();if(this._ident==this.peek())return this.id();while("="!=this.lookahead(++i).type&&!~["[",",","newline","indent","eos"].indexOf(this.lookahead(i).type));if("="==this.lookahead(i).type){this._ident=this.peek();return this.expression()}else if(this.looksLikeSelector()&&this.stateAllowsSelector()){return this.selector()}case"[":if(this._ident==this.peek())return this.id();while("]"!=this.lookahead(i++).type&&"selector"!=this.lookahead(i).type&&"eos"!=this.lookahead(i).type);if("="==this.lookahead(i).type){this._ident=this.peek();return this.expression()}else if(this.looksLikeSelector()&&this.stateAllowsSelector()){return this.selector()}case"-":case"+":case"/":case"*":case"%":case"**":case"&&":case"||":case">":case"<":case">=":case"<=":case"!=":case"==":case"?":case"in":case"is a":case"is defined":if(this._ident==this.peek()){return this.id()}else{this._ident=this.peek();switch(this.currentState()){case"for":case"selector":return this.property();case"root":case"atblock":case"atrule":return"["==la?this.subscript():this.selector();case"function":case"conditional":return this.looksLikeSelector()?this.selector():this.expression();default:return this.operand?this.id():this.expression()}}default:switch(this.currentState()){case"root":return this.selector();case"for":case"selector":case"function":case"conditional":case"atblock":case"atrule":return this.property();default:var id=this.id();if("interpolation"==this.previousState())id.mixin=true;return id}}},interpolate:function(){var node,segs=[],star;star=this.accept("*");if(star)segs.push(new nodes.Literal("*"));while(true){if(this.accept("{")){this.state.push("interpolation");segs.push(this.expression());this.expect("}");this.state.pop()}else if(node=this.accept("-")){segs.push(new nodes.Literal("-"))}else if(node=this.accept("ident")){segs.push(node.val)}else{break}}if(!segs.length)this.expect("ident");return segs},property:function(){if(this.looksLikeSelector(true))return this.selector();var ident=this.interpolate(),prop=new nodes.Property(ident),ret=prop;this.accept("space");if(this.accept(":"))this.accept("space");this.state.push("property");this.inProperty=true;prop.expr=this.list();if(prop.expr.isEmpty)ret=ident[0];this.inProperty=false;this.allowPostfix=true;this.state.pop();this.accept(";");return ret},selector:function(){var arr,group=new nodes.Group,scope=this.selectorScope,isRoot="root"==this.currentState(),selector;do{this.accept("newline");arr=this.selectorParts();if(isRoot&&scope)arr.unshift(new nodes.Literal(scope+" "));if(arr.length){selector=new nodes.Selector(arr);selector.lineno=arr[0].lineno;selector.column=arr[0].column;group.push(selector)}}while(this.accept(",")||this.accept("newline"));if("selector-parts"==this.currentState())return group.nodes;this.state.push("selector");group.block=this.block(group);this.state.pop();return group},selectorParts:function(){var tok,arr=[];while(tok=this.selectorToken()){switch(tok.type){case"{":this.skipSpaces();var expr=this.expression();this.skipSpaces();this.expect("}");arr.push(expr);break;case this.prefix&&".":var literal=new nodes.Literal(tok.val+this.prefix);literal.prefixed=true;arr.push(literal);break;case"comment":break;case"color":case"unit":arr.push(new nodes.Literal(tok.val.raw));break;case"space":arr.push(new nodes.Literal(" "));break;case"function":arr.push(new nodes.Literal(tok.val.name+"("));break;case"ident":arr.push(new nodes.Literal(tok.val.name||tok.val.string));break;default:arr.push(new nodes.Literal(tok.val));if(tok.space)arr.push(new nodes.Literal(" "))}}return arr},assignment:function(){var op,node,name=this.id().name;if(op=this.accept("=")||this.accept("?=")||this.accept("+=")||this.accept("-=")||this.accept("*=")||this.accept("/=")||this.accept("%=")){this.state.push("assignment");var expr=this.list();if(expr.isEmpty)this.assignAtblock(expr);node=new nodes.Ident(name,expr);this.state.pop();switch(op.type){case"?=":var defined=new nodes.BinOp("is defined",node),lookup=new nodes.Expression;lookup.push(new nodes.Ident(name));node=new nodes.Ternary(defined,lookup,node);break;case"+=":case"-=":case"*=":case"/=":case"%=":node.val=new nodes.BinOp(op.type[0],new nodes.Ident(name),expr);break}}return node},fun:function(){var parens=1,i=2,tok;out:while(tok=this.lookahead(i++)){switch(tok.type){case"function":case"(":++parens;break;case")":if(!--parens)break out;break;case"eos":this.error('failed to find closing paren ")"')}}switch(this.currentState()){case"expression":return this.functionCall();default:return this.looksLikeFunctionDefinition(i)?this.functionDefinition():this.expression()}},url:function(){this.expect("function");this.state.push("function arguments");var args=this.args();this.expect(")");this.state.pop();return new nodes.Call("url",args)},functionCall:function(){var withBlock=this.accept("+");if("url"==this.peek().val.name)return this.url();var name=this.expect("function").val.name;this.state.push("function arguments");this.parens++;var args=this.args();this.expect(")");this.parens--;this.state.pop();var call=new nodes.Call(name,args);if(withBlock){this.state.push("function");call.block=this.block(call);this.state.pop()}return call},functionDefinition:function(){var name=this.expect("function").val.name;this.state.push("function params");this.skipWhitespace();var params=this.params();this.skipWhitespace();this.expect(")");this.state.pop();this.state.push("function");var fn=new nodes.Function(name,params);fn.block=this.block(fn);this.state.pop();return new nodes.Ident(name,fn)},params:function(){var tok,node,params=new nodes.Params;while(tok=this.accept("ident")){this.accept("space");params.push(node=tok.val);if(this.accept("...")){node.rest=true}else if(this.accept("=")){node.val=this.expression()}this.skipWhitespace();this.accept(",");this.skipWhitespace()}return params},args:function(){var args=new nodes.Arguments,keyword;do{if("ident"==this.peek().type&&":"==this.lookahead(2).type){keyword=this.next().val.string;this.expect(":");args.map[keyword]=this.expression()}else{args.push(this.expression())}}while(this.accept(","));return args},list:function(){var node=this.expression();while(this.accept(",")){if(node.isList){list.push(this.expression())}else{var list=new nodes.Expression(true);list.push(node);list.push(this.expression());node=list}}return node},expression:function(){var node,expr=new nodes.Expression;this.state.push("expression");while(node=this.negation()){if(!node)this.error("unexpected token {peek} in expression");expr.push(node)}this.state.pop();if(expr.nodes.length){expr.lineno=expr.nodes[0].lineno;expr.column=expr.nodes[0].column}return expr},negation:function(){if(this.accept("not")){return new nodes.UnaryOp("!",this.negation())}return this.ternary()},ternary:function(){var node=this.logical();if(this.accept("?")){var trueExpr=this.expression();this.expect(":");var falseExpr=this.expression();node=new nodes.Ternary(node,trueExpr,falseExpr)}return node},logical:function(){var op,node=this.typecheck();while(op=this.accept("&&")||this.accept("||")){node=new nodes.BinOp(op.type,node,this.typecheck())}return node},typecheck:function(){var op,node=this.equality();while(op=this.accept("is a")){this.operand=true;if(!node)this.error('illegal unary "'+op+'", missing left-hand operand');node=new nodes.BinOp(op.type,node,this.equality());this.operand=false}return node},equality:function(){var op,node=this.inop();while(op=this.accept("==")||this.accept("!=")){this.operand=true;if(!node)this.error('illegal unary "'+op+'", missing left-hand operand');node=new nodes.BinOp(op.type,node,this.inop());this.operand=false}return node},inop:function(){var node=this.relational();while(this.accept("in")){this.operand=true;if(!node)this.error('illegal unary "in", missing left-hand operand');node=new nodes.BinOp("in",node,this.relational());this.operand=false}return node},relational:function(){var op,node=this.range();while(op=this.accept(">=")||this.accept("<=")||this.accept("<")||this.accept(">")){this.operand=true;if(!node)this.error('illegal unary "'+op+'", missing left-hand operand');node=new nodes.BinOp(op.type,node,this.range());this.operand=false}return node},range:function(){var op,node=this.additive();if(op=this.accept("...")||this.accept("..")){this.operand=true;if(!node)this.error('illegal unary "'+op+'", missing left-hand operand');node=new nodes.BinOp(op.val,node,this.additive());this.operand=false}return node},additive:function(){var op,node=this.multiplicative();while(op=this.accept("+")||this.accept("-")){this.operand=true;node=new nodes.BinOp(op.type,node,this.multiplicative());this.operand=false}return node},multiplicative:function(){var op,node=this.defined();while(op=this.accept("**")||this.accept("*")||this.accept("/")||this.accept("%")){this.operand=true;if("/"==op&&this.inProperty&&!this.parens){this.stash.push(new Token("literal",new nodes.Literal("/")));this.operand=false;return node}else{if(!node)this.error('illegal unary "'+op+'", missing left-hand operand');node=new nodes.BinOp(op.type,node,this.defined());this.operand=false}}return node},defined:function(){var node=this.unary();if(this.accept("is defined")){if(!node)this.error('illegal unary "is defined", missing left-hand operand');node=new nodes.BinOp("is defined",node)}return node},unary:function(){var op,node;if(op=this.accept("!")||this.accept("~")||this.accept("+")||this.accept("-")){this.operand=true;node=this.unary();if(!node)this.error('illegal unary "'+op+'"');node=new nodes.UnaryOp(op.type,node);this.operand=false;return node}return this.subscript()},subscript:function(){var node=this.member(),id;while(this.accept("[")){node=new nodes.BinOp("[]",node,this.expression());this.expect("]")}if(this.accept("=")){node.op+="=";node.val=this.list();if(node.val.isEmpty)this.assignAtblock(node.val)}return node},member:function(){var node=this.primary();if(node){while(this.accept(".")){var id=new nodes.Ident(this.expect("ident").val.string);node=new nodes.Member(node,id)}this.skipSpaces();if(this.accept("=")){node.val=this.list();if(node.val.isEmpty)this.assignAtblock(node.val)}}return node},object:function(){var obj=new nodes.Object,id,val,comma;this.expect("{");this.skipWhitespace();while(!this.accept("}")){if(this.accept("comment")||this.accept("newline"))continue;if(!comma)this.accept(",");id=this.accept("ident")||this.accept("string");if(!id)this.error('expected "ident" or "string", got {peek}');id=id.val.hash;this.skipSpacesAndComments();this.expect(":");val=this.expression();obj.set(id,val);comma=this.accept(",");this.skipWhitespace()}return obj},primary:function(){var tok;this.skipSpaces();if(this.accept("(")){++this.parens;var expr=this.expression(),paren=this.expect(")");--this.parens;if(this.accept("%"))expr.push(new nodes.Ident("%"));tok=this.peek();if(!paren.space&&"ident"==tok.type&&~units.indexOf(tok.val.string)){expr.push(new nodes.Ident(tok.val.string));this.next()}return expr}tok=this.peek();switch(tok.type){case"null":case"unit":case"color":case"string":case"literal":case"boolean":case"comment":return this.next().val;case!this.cond&&"{":return this.object();case"atblock":return this.atblock();case"atrule":var id=new nodes.Ident(this.next().val);id.property=true;
return id;case"ident":return this.ident();case"function":return tok.anonymous?this.functionDefinition():this.functionCall()}}}});require.register("renderer.js",function(module,exports,require){var Parser=require("./parser"),Evaluator=require("./visitor/evaluator"),Normalizer=require("./visitor/normalizer"),utils=require("./utils"),nodes=require("./nodes"),join=require("./path").join;module.exports=Renderer;function Renderer(str,options){options=options||{};options.globals=options.globals||{};options.functions=options.functions||{};options.use=options.use||[];options.use=Array.isArray(options.use)?options.use:[options.use];options.imports=[];options.paths=options.paths||[];options.filename=options.filename||"stylus";options.Evaluator=options.Evaluator||Evaluator;this.options=options;this.str=str}Renderer.prototype.render=function(fn){var parser=this.parser=new Parser(this.str,this.options);for(var i=0,len=this.options.use.length;i<len;i++){this.use(this.options.use[i])}try{nodes.filename=this.options.filename;var ast=parser.parse();this.evaluator=new this.options.Evaluator(ast,this.options);this.nodes=nodes;this.evaluator.renderer=this;ast=this.evaluator.evaluate();var normalizer=new Normalizer(ast,this.options);ast=normalizer.normalize();var compiler=this.options.sourcemap?new(require("./visitor/sourcemapper"))(ast,this.options):new(require("./visitor/compiler"))(ast,this.options),css=compiler.compile();if(this.options.sourcemap)this.sourcemap=compiler.map.toJSON()}catch(err){var options={};options.input=err.input||this.str;options.filename=err.filename||this.options.filename;options.lineno=err.lineno||parser.lexer.lineno;options.column=err.column||parser.lexer.column;if(!fn)throw utils.formatException(err,options);return fn(utils.formatException(err,options))}if(!fn)return css;fn(null,css)};Renderer.prototype.deps=function(filename){var opts=utils.merge({cache:false},this.options);if(filename)opts.filename=filename;var DepsResolver=require("./visitor/deps-resolver"),parser=new Parser(this.str,opts);try{nodes.filename=opts.filename;var ast=parser.parse(),resolver=new DepsResolver(ast,opts);return resolver.resolve()}catch(err){var options={};options.input=err.input||this.str;options.filename=err.filename||opts.filename;options.lineno=err.lineno||parser.lexer.lineno;options.column=err.column||parser.lexer.column;throw utils.formatException(err,options)}};Renderer.prototype.set=function(key,val){this.options[key]=val;return this};Renderer.prototype.get=function(key){return this.options[key]};Renderer.prototype.include=function(path){this.options.paths.push(path);return this};Renderer.prototype.use=function(fn){fn.call(this,this);return this};Renderer.prototype.define=function(name,fn,raw){fn=utils.coerce(fn,raw);if(fn.nodeName){this.options.globals[name]=fn;return this}this.options.functions[name]=fn;if(undefined!=raw)fn.raw=raw;return this}});require.register("selector-parser.js",function(module,exports,require){var COMBINATORS=[">","+","~"];var SelectorParser=module.exports=function SelectorParser(str,stack,parts){this.str=str;this.stack=stack||[];this.parts=parts||[];this.pos=0;this.level=2;this.nested=true;this.ignore=false};SelectorParser.prototype.skip=function(len){this.str=this.str.substr(len);this.pos+=len};SelectorParser.prototype.skipSpaces=function(){while(" "==this.str[0])this.skip(1)};SelectorParser.prototype.advance=function(){return this.root()||this.relative()||this.initial()||this.escaped()||this.parent()||this.partial()||this.char()};SelectorParser.prototype.root=function(){if(!this.pos&&"/"==this.str[0]&&"deep"!=this.str.slice(1,5)){this.nested=false;this.skip(1)}};SelectorParser.prototype.relative=function(multi){if((!this.pos||multi)&&"../"==this.str.slice(0,3)){this.nested=false;this.skip(3);while(this.relative(true))this.level++;if(!this.raw){var ret=this.stack[this.stack.length-this.level];if(ret){return ret}else{this.ignore=true}}}};SelectorParser.prototype.initial=function(){if(!this.pos&&"~"==this.str[0]&&"/"==this.str[1]){this.nested=false;this.skip(2);return this.stack[0]}};SelectorParser.prototype.escaped=function(){if("\\"==this.str[0]){var char=this.str[1];if("&"==char||"^"==char){this.skip(2);return char}}};SelectorParser.prototype.parent=function(){if("&"==this.str[0]){this.nested=false;if(!this.pos&&(!this.stack.length||this.raw)){var i=0;while(" "==this.str[++i]);if(~COMBINATORS.indexOf(this.str[i])){this.skip(i+1);return}}this.skip(1);if(!this.raw)return this.stack[this.stack.length-1]}};SelectorParser.prototype.partial=function(){if("^"==this.str[0]&&"["==this.str[1]){this.skip(2);this.skipSpaces();var ret=this.range();this.skipSpaces();if("]"!=this.str[0])return"^[";this.nested=false;this.skip(1);if(ret){return ret}else{this.ignore=true}}};SelectorParser.prototype.number=function(){var i=0,ret="";if("-"==this.str[i])ret+=this.str[i++];while(this.str.charCodeAt(i)>=48&&this.str.charCodeAt(i)<=57)ret+=this.str[i++];if(ret){this.skip(i);return Number(ret)}};SelectorParser.prototype.range=function(){var start=this.number(),ret;if(".."==this.str.slice(0,2)){this.skip(2);var end=this.number(),len=this.parts.length;if(start<0)start=len+start-1;if(end<0)end=len+end-1;if(start>end){var tmp=start;start=end;end=tmp}if(end<len-1){ret=this.parts.slice(start,end+1).map(function(part){var selector=new SelectorParser(part,this.stack,this.parts);selector.raw=true;return selector.parse()},this).map(function(selector){return(selector.nested?" ":"")+selector.val}).join("").trim()}}else{ret=this.stack[start<0?this.stack.length+start-1:start]}if(ret){return ret}else{this.ignore=true}};SelectorParser.prototype.char=function(){var char=this.str[0];this.skip(1);return char};SelectorParser.prototype.parse=function(){var val="";while(this.str.length){val+=this.advance()||"";if(this.ignore){val="";break}}return{val:val.trimRight(),nested:this.nested}}});require.register("stack/index.js",function(module,exports,require){var Stack=module.exports=function Stack(){Array.apply(this,arguments)};Stack.prototype.__proto__=Array.prototype;Stack.prototype.push=function(frame){frame.stack=this;frame.parent=this.currentFrame;return[].push.apply(this,arguments)};Stack.prototype.__defineGetter__("currentFrame",function(){return this[this.length-1]});Stack.prototype.getBlockFrame=function(block){for(var i=0;i<this.length;++i){if(block==this[i].block){return this[i]}}};Stack.prototype.lookup=function(name){var block=this.currentFrame.block,val,ret;do{var frame=this.getBlockFrame(block);if(frame&&(val=frame.lookup(name))){return val}}while(block=block.parent)};Stack.prototype.inspect=function(){return this.reverse().map(function(frame){return frame.inspect()}).join("\n")};Stack.prototype.toString=function(){var block,node,buf=[],location,len=this.length;while(len--){block=this[len].block;if(node=block.node){location="("+node.filename+":"+(node.lineno+1)+":"+node.column+")";switch(node.nodeName){case"function":buf.push(" at "+node.name+"() "+location);break;case"group":buf.push(' at "'+node.nodes[0].val+'" '+location);break}}}return buf.join("\n")}});require.register("stack/frame.js",function(module,exports,require){var Scope=require("./scope");var Frame=module.exports=function Frame(block){this._scope=false===block.scope?null:new Scope;this.block=block};Frame.prototype.__defineGetter__("scope",function(){return this._scope||this.parent.scope});Frame.prototype.lookup=function(name){return this.scope.lookup(name)};Frame.prototype.inspect=function(){return"[Frame "+(false===this.block.scope?"scope-less":this.scope.inspect())+"]"}});require.register("stack/scope.js",function(module,exports,require){var Scope=module.exports=function Scope(){this.locals={}};Scope.prototype.add=function(ident){this.locals[ident.name]=ident.val};Scope.prototype.lookup=function(name){return this.locals[name]};Scope.prototype.inspect=function(){var keys=Object.keys(this.locals).map(function(key){return"@"+key});return"[Scope"+(keys.length?" "+keys.join(", "):"")+"]"}});require.register("stylus.js",function(module,exports,require){var Renderer=require("./renderer"),nodes=require("./nodes"),utils=require("./utils");exports=module.exports=render;exports.version="0.54.5";exports.nodes=nodes;exports.functions=require("./functions");exports.utils=require("./utils");exports.Visitor=require("./visitor");exports.Parser=require("./parser");exports.Evaluator=require("./visitor/evaluator");exports.Normalizer=require("./visitor/normalizer");exports.Compiler=require("./visitor/compiler");exports.render=function(str,options,fn){if("function"==typeof options)fn=options,options={};if(bifs)str=bifs+str;return new Renderer(str,options).render(fn)};function render(str,options){if(bifs)str=bifs+str;return new Renderer(str,options)}exports.url=require("./functions/url")});require.register("token.js",function(module,exports,require){var Token=exports=module.exports=function Token(type,val){this.type=type;this.val=val};Token.prototype.inspect=function(){var val=" "+this.val;return"[Token:"+this.lineno+":"+this.column+" "+""+this.type+""+""+(this.val?val:"")+""+"]"};Token.prototype.toString=function(){return(undefined===this.val?this.type:this.val).toString()}});require.register("utils.js",function(module,exports,require){var nodes=require("./nodes"),join=require("./path").join,isAbsolute=require("./path").isAbsolute;exports.absolute=isAbsolute||function(path){return path.substr(0,2)=="\\\\"||"/"===path.charAt(0)||/^[a-z]:[\\\/]/i.test(path)};exports.lookup=function(path,paths,ignore){var lookup,i=paths.length;if(exports.absolute(path)){try{return path}catch(err){}}while(i--){try{lookup=join(paths[i],path);if(ignore==lookup)continue;return lookup}catch(err){}}};exports.find=function(path,paths,ignore){var lookup,found,i=paths.length;if(exports.absolute(path)){if((found=glob.sync(path)).length){return found}}while(i--){lookup=join(paths[i],path);if(ignore==lookup)continue;if((found=glob.sync(lookup)).length){return found}}};exports.lookupIndex=function(name,paths,filename){var found=exports.find(join(name,"index.styl"),paths,filename);if(!found){found=exports.find(join(name,basename(name).replace(/\.styl/i,"")+".styl"),paths,filename)}if(!found&&!~name.indexOf("node_modules")){found=lookupPackage(join("node_modules",name))}return found;function lookupPackage(dir){var pkg=exports.lookup(join(dir,"package.json"),paths,filename);if(!pkg){return/\.styl$/i.test(dir)?exports.lookupIndex(dir,paths,filename):lookupPackage(dir+".styl")}var main=require(relative(__dirname,pkg)).main;if(main){found=exports.find(join(dir,main),paths,filename)}else{found=exports.lookupIndex(dir,paths,filename)}return found}};exports.formatException=function(err,options){var lineno=options.lineno,column=options.column,filename=options.filename,str=options.input,context=options.context||8,context=context/2,lines=("\n"+str).split("\n"),start=Math.max(lineno-context,1),end=Math.min(lines.length,lineno+context),pad=end.toString().length;var context=lines.slice(start,end).map(function(line,i){var curr=i+start;return" "+Array(pad-curr.toString().length+1).join(" ")+curr+"| "+line+(curr==lineno?"\n"+Array(curr.toString().length+5+column).join("-")+"^":"")}).join("\n");err.message=filename+":"+lineno+":"+column+"\n"+context+"\n\n"+err.message+"\n"+(err.stylusStack?err.stylusStack+"\n":"");if(err.fromStylus)err.stack="Error: "+err.message;return err};exports.assertType=function(node,type,param){exports.assertPresent(node,param);if(node.nodeName==type)return;var actual=node.nodeName,msg="expected "+(param?'"'+param+'" to be a ':"")+type+", but got "+actual+":"+node;throw new Error("TypeError: "+msg)};exports.assertString=function(node,param){exports.assertPresent(node,param);switch(node.nodeName){case"string":case"ident":case"literal":return;default:var actual=node.nodeName,msg="expected string, ident or literal, but got "+actual+":"+node;throw new Error("TypeError: "+msg)}};exports.assertColor=function(node,param){exports.assertPresent(node,param);switch(node.nodeName){case"rgba":case"hsla":return;default:var actual=node.nodeName,msg="expected rgba or hsla, but got "+actual+":"+node;throw new Error("TypeError: "+msg)}};exports.assertPresent=function(node,name){if(node)return;if(name)throw new Error('"'+name+'" argument required');throw new Error("argument missing")};exports.unwrap=function(expr){if(expr.preserve)return expr;if("arguments"!=expr.nodeName&&"expression"!=expr.nodeName)return expr;if(1!=expr.nodes.length)return expr;if("arguments"!=expr.nodes[0].nodeName&&"expression"!=expr.nodes[0].nodeName)return expr;return exports.unwrap(expr.nodes[0])};exports.coerce=function(val,raw){switch(typeof val){case"function":return val;case"string":return new nodes.String(val);case"boolean":return new nodes.Boolean(val);case"number":return new nodes.Unit(val);default:if(null==val)return nodes.nil;if(Array.isArray(val))return exports.coerceArray(val,raw);if(val.nodeName)return val;return exports.coerceObject(val,raw)}};exports.coerceArray=function(val,raw){var expr=new nodes.Expression;val.forEach(function(val){expr.push(exports.coerce(val,raw))});return expr};exports.coerceObject=function(obj,raw){var node=raw?new nodes.Object:new nodes.Expression,val;for(var key in obj){val=exports.coerce(obj[key],raw);key=new nodes.Ident(key);if(raw){node.set(key,val)}else{node.push(exports.coerceArray([key,val]))}}return node};exports.params=function(fn){return fn.toString().match(/\(([^)]*)\)/)[1].split(/ *, */)};exports.merge=function(a,b,deep){for(var k in b){if(deep&&a[k]){var nodeA=exports.unwrap(a[k]).first,nodeB=exports.unwrap(b[k]).first;if("object"==nodeA.nodeName&&"object"==nodeB.nodeName){a[k].first.vals=exports.merge(nodeA.vals,nodeB.vals,deep)}else{a[k]=b[k]}}else{a[k]=b[k]}}return a};exports.uniq=function(arr){var obj={},ret=[];for(var i=0,len=arr.length;i<len;++i){if(arr[i]in obj)continue;obj[arr[i]]=true;ret.push(arr[i])}return ret};exports.compileSelectors=function(arr,leaveHidden){var selectors=[],Parser=require("./selector-parser"),indent=this.indent||"",buf=[];function parse(selector,buf){var parts=[selector.val],str=new Parser(parts[0],parents,parts).parse().val,parents=[];if(buf.length){for(var i=0,len=buf.length;i<len;++i){parts.push(buf[i]);parents.push(str);var child=new Parser(buf[i],parents,parts).parse();if(child.nested){str+=" "+child.val}else{str=child.val}}}return str.trim()}function compile(arr,i){if(i){arr[i].forEach(function(selector){if(!leaveHidden&&selector.isPlaceholder)return;if(selector.inherits){buf.unshift(selector.val);compile(arr,i-1);buf.shift()}else{selectors.push(indent+parse(selector,buf))}})}else{arr[0].forEach(function(selector){if(!leaveHidden&&selector.isPlaceholder)return;var str=parse(selector,buf);if(str)selectors.push(indent+str)})}}compile(arr,arr.length-1);return exports.uniq(selectors)};exports.parseString=function(str){var Parser=require("./parser"),parser,ret;try{parser=new Parser(str);parser.state.push("expression");ret=new nodes.Expression;ret.nodes=parser.parse().nodes}catch(e){ret=new nodes.Literal(str)}return ret}});require.register("visitor/index.js",function(module,exports,require){var Visitor=module.exports=function Visitor(root){this.root=root};Visitor.prototype.visit=function(node,fn){var method="visit"+node.constructor.name;if(this[method])return this[method](node);return node}});require.register("visitor/compiler.js",function(module,exports,require){var Visitor=require("./index"),utils=require("../utils");var Compiler=module.exports=function Compiler(root,options){options=options||{};this.compress=options.compress;this.firebug=options.firebug;this.linenos=options.linenos;this.spaces=options["indent spaces"]||2;this.indents=1;Visitor.call(this,root);this.stack=[]};Compiler.prototype.__proto__=Visitor.prototype;Compiler.prototype.compile=function(){return this.visit(this.root)};Compiler.prototype.out=function(str,node){return str};Compiler.prototype.__defineGetter__("indent",function(){if(this.compress)return"";return new Array(this.indents).join(Array(this.spaces+1).join(" "))});Compiler.prototype.needBrackets=function(node){return 1==this.indents||"atrule"!=node.nodeName||node.hasOnlyProperties};Compiler.prototype.visitRoot=function(block){this.buf="";for(var i=0,len=block.nodes.length;i<len;++i){var node=block.nodes[i];if(this.linenos||this.firebug)this.debugInfo(node);var ret=this.visit(node);if(ret)this.buf+=this.out(ret+"\n",node)}return this.buf};Compiler.prototype.visitBlock=function(block){var node,separator=this.compress?"":"\n",needBrackets;if(block.hasProperties&&!block.lacksRenderedSelectors){needBrackets=this.needBrackets(block.node);if(needBrackets){this.buf+=this.out(this.compress?"{":" {\n");++this.indents}for(var i=0,len=block.nodes.length;i<len;++i){this.last=len-1==i;node=block.nodes[i];switch(node.nodeName){case"null":case"expression":case"function":case"group":case"block":case"unit":case"media":case"keyframes":case"atrule":case"supports":continue;case!this.compress&&node.inline&&"comment":this.buf=this.buf.slice(0,-1);this.buf+=this.out(" "+this.visit(node)+"\n",node);break;case"property":var ret=this.visit(node)+separator;this.buf+=this.compress?ret:this.out(ret,node);break;default:this.buf+=this.out(this.visit(node)+separator,node)}}if(needBrackets){--this.indents;this.buf+=this.out(this.indent+"}"+separator)}}for(var i=0,len=block.nodes.length;i<len;++i){node=block.nodes[i];switch(node.nodeName){case"group":case"block":case"keyframes":if(this.linenos||this.firebug)this.debugInfo(node);this.visit(node);break;case"media":case"import":case"atrule":case"supports":this.visit(node);break;case"comment":if(!node.suppress){this.buf+=this.out(this.indent+this.visit(node)+"\n",node)}break;case"charset":case"literal":case"namespace":this.buf+=this.out(this.visit(node)+"\n",node);break}}};Compiler.prototype.visitKeyframes=function(node){if(!node.frames)return;var prefix="official"==node.prefix?"":"-"+node.prefix+"-";this.buf+=this.out("@"+prefix+"keyframes "+this.visit(node.val)+(this.compress?"{":" {\n"),node);this.keyframe=true;++this.indents;this.visit(node.block);--this.indents;this.keyframe=false;this.buf+=this.out("}"+(this.compress?"":"\n"))};Compiler.prototype.visitMedia=function(media){var val=media.val;if(!media.hasOutput||!val.nodes.length)return;this.buf+=this.out("@media ",media);this.visit(val);this.buf+=this.out(this.compress?"{":" {\n");++this.indents;this.visit(media.block);--this.indents;this.buf+=this.out("}"+(this.compress?"":"\n"))};Compiler.prototype.visitQueryList=function(queries){for(var i=0,len=queries.nodes.length;i<len;++i){this.visit(queries.nodes[i]);if(len-1!=i)this.buf+=this.out(","+(this.compress?"":" "))}};Compiler.prototype.visitQuery=function(node){var len=node.nodes.length;if(node.predicate)this.buf+=this.out(node.predicate+" ");if(node.type)this.buf+=this.out(node.type+(len?" and ":""));for(var i=0;i<len;++i){this.buf+=this.out(this.visit(node.nodes[i]));if(len-1!=i)this.buf+=this.out(" and ")}};Compiler.prototype.visitFeature=function(node){if(!node.expr){return node.name}else if(node.expr.isEmpty){return"("+node.name+")"}else{return"("+node.name+":"+(this.compress?"":" ")+this.visit(node.expr)+")"}};Compiler.prototype.visitImport=function(imported){this.buf+=this.out("@import "+this.visit(imported.path)+";\n",imported)};Compiler.prototype.visitAtrule=function(atrule){var newline=this.compress?"":"\n";this.buf+=this.out(this.indent+"@"+atrule.type,atrule);if(atrule.val)this.buf+=this.out(" "+atrule.val.trim());if(atrule.block){if(atrule.hasOnlyProperties){this.visit(atrule.block)}else{this.buf+=this.out(this.compress?"{":" {\n");++this.indents;this.visit(atrule.block);--this.indents;this.buf+=this.out(this.indent+"}"+newline)}}else{this.buf+=this.out(";"+newline)}};Compiler.prototype.visitSupports=function(node){if(!node.hasOutput)return;this.buf+=this.out(this.indent+"@supports ",node);this.isCondition=true;this.buf+=this.out(this.visit(node.condition));this.isCondition=false;this.buf+=this.out(this.compress?"{":" {\n");++this.indents;this.visit(node.block);--this.indents;this.buf+=this.out(this.indent+"}"+(this.compress?"":"\n"))},Compiler.prototype.visitComment=function(comment){return this.compress?comment.suppress?"":comment.str:comment.str};Compiler.prototype.visitFunction=function(fn){return fn.name};Compiler.prototype.visitCharset=function(charset){return"@charset "+this.visit(charset.val)+";"};Compiler.prototype.visitNamespace=function(namespace){return"@namespace "+(namespace.prefix?this.visit(namespace.prefix)+" ":"")+this.visit(namespace.val)+";"};Compiler.prototype.visitLiteral=function(lit){var val=lit.val;if(lit.css)val=val.replace(/^ /gm,"");return val};Compiler.prototype.visitBoolean=function(bool){return bool.toString()};Compiler.prototype.visitRGBA=function(rgba){return rgba.toString()};Compiler.prototype.visitHSLA=function(hsla){return hsla.rgba.toString()};Compiler.prototype.visitUnit=function(unit){var type=unit.type||"",n=unit.val,float=n!=(n|0);if(this.compress){if("%"!=type&&"s"!=type&&"ms"!=type&&0==n)return"0";if(float&&n<1&&n>-1){return n.toString().replace("0.",".")+type}}return(float?parseFloat(n.toFixed(15)):n).toString()+type};Compiler.prototype.visitGroup=function(group){var stack=this.keyframe?[]:this.stack,comma=this.compress?",":",\n";stack.push(group.nodes);if(group.block.hasProperties){var selectors=utils.compileSelectors.call(this,stack),len=selectors.length;if(len){if(this.keyframe)comma=this.compress?",":", ";for(var i=0;i<len;++i){var selector=selectors[i],last=i==len-1;if(this.keyframe)selector=i?selector.trim():selector;this.buf+=this.out(selector+(last?"":comma),group.nodes[i])}}else{group.block.lacksRenderedSelectors=true}}this.visit(group.block);stack.pop()};Compiler.prototype.visitIdent=function(ident){return ident.name};Compiler.prototype.visitString=function(string){return this.isURL?string.val:string.toString()};Compiler.prototype.visitNull=function(node){return""};Compiler.prototype.visitCall=function(call){this.isURL="url"==call.name;var args=call.args.nodes.map(function(arg){return this.visit(arg)},this).join(this.compress?",":", ");if(this.isURL)args='"'+args+'"';this.isURL=false;return call.name+"("+args+")"};Compiler.prototype.visitExpression=function(expr){var buf=[],self=this,len=expr.nodes.length,nodes=expr.nodes.map(function(node){return self.visit(node)});nodes.forEach(function(node,i){var last=i==len-1;buf.push(node);if("/"==nodes[i+1]||"/"==node)return;if(last)return;var space=self.isURL||self.isCondition&&(")"==nodes[i+1]||"("==node)?"":" ";buf.push(expr.isList?self.compress?",":", ":space)});return buf.join("")};Compiler.prototype.visitArguments=Compiler.prototype.visitExpression;Compiler.prototype.visitProperty=function(prop){var val=this.visit(prop.expr).trim(),name=prop.name||prop.segments.join(""),arr=[];arr.push(this.out(this.indent),this.out(name+(this.compress?":":": "),prop),this.out(val,prop.expr),this.out(this.compress?this.last?"":";":";"));return arr.join("")};Compiler.prototype.debugInfo=function(node){var path=node.filename=="stdin"?"stdin":fs.realpathSync(node.filename),line=(node.nodes&&node.nodes.length?node.nodes[0].lineno:node.lineno)||1;if(this.linenos){this.buf+="\n/* "+"line "+line+" : "+path+" */\n"}if(this.firebug){path="file\\:\\/\\/"+path.replace(/([.:\/\\])/g,function(m){return"\\"+(m==="\\"?"/":m)});line="\\00003"+line;this.buf+="\n@media -stylus-debug-info"+"{filename{font-family:"+path+"}line{font-family:"+line+"}}\n"}}});require.register("visitor/evaluator.js",function(module,exports,require){var Visitor=require("./index"),nodes=require("../nodes"),Stack=require("../stack"),Frame=require("../stack/frame"),utils=require("../utils"),bifs=require("../functions"),dirname=require("../path").dirname,colors=require("../colors"),units=require("../units");function cloneNode(node){if(node.block&&node.block.node){node.block.node=node.block.node.clone()}if(node.nodes&&node.nodes.length){node.nodes.map(cloneNode)}return node}function importFile(node,file,literal){var importStack=this.importStack,Parser=require("../parser"),stat;if(node.once){if(this.requireHistory[file])return nodes.nil;this.requireHistory[file]=true;if(literal&&!this.includeCSS){return node}}if(~importStack.indexOf(file))throw new Error("import loop has been found");var str=fs.readFileSync(file,"utf8");if(!str.trim())return nodes.nil;node.path=file;node.dirname=dirname(file);stat=fs.statSync(file);node.mtime=stat.mtime;this.paths.push(node.dirname);if(this.options._imports)this.options._imports.push(node.clone());importStack.push(file);nodes.filename=file;if(literal){literal=new nodes.Literal(str.replace(/\r\n?/g,"\n"));literal.lineno=literal.column=1;if(!this.resolveURL)return literal}var block=new nodes.Block,parser=new Parser(str,utils.merge({root:block},this.options));try{block=parser.parse()}catch(err){var line=parser.lexer.lineno,column=parser.lexer.column;if(literal&&this.includeCSS&&this.resolveURL){this.warn("ParseError: "+file+":"+line+":"+column+". This file included as-is");return literal}else{err.filename=file;err.lineno=line;err.column=column;err.input=str;throw err}}block=block.clone(this.currentBlock);block.parent=this.currentBlock;block.scope=false;var ret=this.visit(block);importStack.pop();if(!this.resolveURL||this.resolveURL.nocheck)this.paths.pop();return ret}var Evaluator=module.exports=function Evaluator(root,options){options=options||{};Visitor.call(this,root);var functions=this.functions=options.functions||{};this.stack=new Stack;this.imports=options.imports||[];this.globals=options.globals||{};this.paths=options.paths||[];this.prefix=options.prefix||"";this.filename=options.filename;this.includeCSS=options["include css"];this.resolveURL=functions.url&&"resolver"==functions.url.name&&functions.url.options;this.paths.push(dirname(options.filename||"."));this.stack.push(this.global=new Frame(root));this.warnings=options.warn;this.options=options;this.calling=[];this.importStack=[];this.ret=0;this.requireHistory={}};Evaluator.prototype.__proto__=Visitor.prototype;var visit=Visitor.prototype.visit;Evaluator.prototype.visit=function(node){try{return visit.call(this,node)}catch(err){if(err.filename)throw err;err.lineno=node.lineno;err.column=node.column;err.filename=node.filename;err.stylusStack=this.stack.toString();try{}catch(err){}throw err}};Evaluator.prototype.setup=function(){var root=this.root;var imports=[];this.populateGlobalScope();this.imports.forEach(function(file){var expr=new nodes.Expression;expr.push(new nodes.String(file));imports.push(new nodes.Import(expr))},this);root.nodes=imports.concat(root.nodes)};Evaluator.prototype.populateGlobalScope=function(){var scope=this.global.scope;Object.keys(colors).forEach(function(name){var color=colors[name],rgba=new nodes.RGBA(color[0],color[1],color[2],color[3]),node=new nodes.Ident(name,rgba);rgba.name=name;scope.add(node)});scope.add(new nodes.Ident("embedurl",new nodes.Function("embedurl",require("../functions/url")({limit:false}))));var globals=this.globals;Object.keys(globals).forEach(function(name){var val=globals[name];if(!val.nodeName)val=new nodes.Literal(val);scope.add(new nodes.Ident(name,val))})};Evaluator.prototype.evaluate=function(){this.setup();return this.visit(this.root)};Evaluator.prototype.visitGroup=function(group){group.nodes=group.nodes.map(function(selector){selector.val=this.interpolate(selector);return selector},this);group.block=this.visit(group.block);return group};Evaluator.prototype.visitReturn=function(ret){ret.expr=this.visit(ret.expr);throw ret};Evaluator.prototype.visitMedia=function(media){media.block=this.visit(media.block);media.val=this.visit(media.val);return media};Evaluator.prototype.visitQueryList=function(queries){var val,query;queries.nodes.forEach(this.visit,this);if(1==queries.nodes.length){query=queries.nodes[0];if(val=this.lookup(query.type)){val=val.first.string;if(!val)return queries;var Parser=require("../parser"),parser=new Parser(val,this.options);queries=this.visit(parser.queries())}}return queries};Evaluator.prototype.visitQuery=function(node){node.predicate=this.visit(node.predicate);node.type=this.visit(node.type);node.nodes.forEach(this.visit,this);return node};Evaluator.prototype.visitFeature=function(node){node.name=this.interpolate(node);if(node.expr){this.ret++;node.expr=this.visit(node.expr);this.ret--}return node};Evaluator.prototype.visitObject=function(obj){for(var key in obj.vals){obj.vals[key]=this.visit(obj.vals[key])}return obj};Evaluator.prototype.visitMember=function(node){var left=node.left,right=node.right,obj=this.visit(left).first;if("object"!=obj.nodeName){throw new Error(left.toString()+" has no property ."+right)}if(node.val){this.ret++;obj.set(right.name,this.visit(node.val));this.ret--}return obj.get(right.name)};Evaluator.prototype.visitKeyframes=function(keyframes){var val;if(keyframes.fabricated)return keyframes;keyframes.val=this.interpolate(keyframes).trim();if(val=this.lookup(keyframes.val)){keyframes.val=val.first.string||val.first.name}keyframes.block=this.visit(keyframes.block);if("official"!=keyframes.prefix)return keyframes;this.vendors.forEach(function(prefix){if("ms"==prefix)return;var node=keyframes.clone();node.val=keyframes.val;node.prefix=prefix;node.block=keyframes.block;node.fabricated=true;this.currentBlock.push(node)},this);return nodes.nil};Evaluator.prototype.visitFunction=function(fn){var local=this.stack.currentFrame.scope.lookup(fn.name);if(local)this.warn("local "+local.nodeName+' "'+fn.name+'" previously defined in this scope');var user=this.functions[fn.name];if(user)this.warn('user-defined function "'+fn.name+'" is already defined');var bif=bifs[fn.name];if(bif)this.warn('built-in function "'+fn.name+'" is already defined');return fn};Evaluator.prototype.visitEach=function(each){this.ret++;var expr=utils.unwrap(this.visit(each.expr)),len=expr.nodes.length,val=new nodes.Ident(each.val),key=new nodes.Ident(each.key||"__index__"),scope=this.currentScope,block=this.currentBlock,vals=[],self=this,body,obj;this.ret--;each.block.scope=false;function visitBody(key,val){scope.add(val);scope.add(key);body=self.visit(each.block.clone());vals=vals.concat(body.nodes)}if(1==len&&"object"==expr.nodes[0].nodeName){obj=expr.nodes[0];for(var prop in obj.vals){val.val=new nodes.String(prop);key.val=obj.get(prop);visitBody(key,val)}}else{for(var i=0;i<len;++i){val.val=expr.nodes[i];key.val=new nodes.Unit(i);visitBody(key,val)}}this.mixin(vals,block);return vals[vals.length-1]||nodes.nil};Evaluator.prototype.visitCall=function(call){var fn=this.lookup(call.name),literal,ret;this.ignoreColors="url"==call.name;if(fn&&"expression"==fn.nodeName){fn=fn.nodes[0]}if(fn&&"function"!=fn.nodeName){fn=this.lookupFunction(call.name)}if(!fn||fn.nodeName!="function"){if("calc"==this.unvendorize(call.name)){literal=call.args.nodes&&call.args.nodes[0];if(literal)ret=new nodes.Literal(call.name+literal)}else{ret=this.literalCall(call)}this.ignoreColors=false;return ret}this.calling.push(call.name);if(this.calling.length>200){throw new RangeError("Maximum stylus call stack size exceeded")}if("expression"==fn.nodeName)fn=fn.first;this.ret++;var args=this.visit(call.args);for(var key in args.map){args.map[key]=this.visit(args.map[key].clone())}this.ret--;if(fn.fn){ret=this.invokeBuiltin(fn.fn,args)}else if("function"==fn.nodeName){if(call.block)call.block=this.visit(call.block);ret=this.invokeFunction(fn,args,call.block)}this.calling.pop();this.ignoreColors=false;return ret};Evaluator.prototype.visitIdent=function(ident){var prop;if(ident.property){if(prop=this.lookupProperty(ident.name)){return this.visit(prop.expr.clone())}return nodes.nil}else if(ident.val.isNull){var val=this.lookup(ident.name);if(val&&ident.mixin)this.mixinNode(val);return val?this.visit(val):ident}else{this.ret++;ident.val=this.visit(ident.val);this.ret--;this.currentScope.add(ident);return ident.val}};Evaluator.prototype.visitBinOp=function(binop){if("is defined"==binop.op)return this.isDefined(binop.left);
this.ret++;var op=binop.op,left=this.visit(binop.left),right="||"==op||"&&"==op?binop.right:this.visit(binop.right);var val=binop.val?this.visit(binop.val):null;this.ret--;try{return this.visit(left.operate(op,right,val))}catch(err){if("CoercionError"==err.name){switch(op){case"==":return nodes.no;case"!=":return nodes.yes}}throw err}};Evaluator.prototype.visitUnaryOp=function(unary){var op=unary.op,node=this.visit(unary.expr);if("!"!=op){node=node.first.clone();utils.assertType(node,"unit")}switch(op){case"-":node.val=-node.val;break;case"+":node.val=+node.val;break;case"~":node.val=~node.val;break;case"!":return node.toBoolean().negate()}return node};Evaluator.prototype.visitTernary=function(ternary){var ok=this.visit(ternary.cond).toBoolean();return ok.isTrue?this.visit(ternary.trueExpr):this.visit(ternary.falseExpr)};Evaluator.prototype.visitExpression=function(expr){for(var i=0,len=expr.nodes.length;i<len;++i){expr.nodes[i]=this.visit(expr.nodes[i])}if(this.castable(expr))expr=this.cast(expr);return expr};Evaluator.prototype.visitArguments=Evaluator.prototype.visitExpression;Evaluator.prototype.visitProperty=function(prop){var name=this.interpolate(prop),fn=this.lookup(name),call=fn&&"function"==fn.first.nodeName,literal=~this.calling.indexOf(name),_prop=this.property;if(call&&!literal&&!prop.literal){var args=nodes.Arguments.fromExpression(utils.unwrap(prop.expr.clone()));prop.name=name;this.property=prop;this.ret++;this.property.expr=this.visit(prop.expr);this.ret--;var ret=this.visit(new nodes.Call(name,args));this.property=_prop;return ret}else{this.ret++;prop.name=name;prop.literal=true;this.property=prop;prop.expr=this.visit(prop.expr);this.property=_prop;this.ret--;return prop}};Evaluator.prototype.visitRoot=function(block){if(block!=this.root){block.constructor=nodes.Block;return this.visit(block)}for(var i=0;i<block.nodes.length;++i){block.index=i;block.nodes[i]=this.visit(block.nodes[i])}return block};Evaluator.prototype.visitBlock=function(block){this.stack.push(new Frame(block));for(block.index=0;block.index<block.nodes.length;++block.index){try{block.nodes[block.index]=this.visit(block.nodes[block.index])}catch(err){if("return"==err.nodeName){if(this.ret){this.stack.pop();throw err}else{block.nodes[block.index]=err;break}}else{throw err}}}this.stack.pop();return block};Evaluator.prototype.visitAtblock=function(atblock){atblock.block=this.visit(atblock.block);return atblock};Evaluator.prototype.visitAtrule=function(atrule){atrule.val=this.interpolate(atrule);if(atrule.block)atrule.block=this.visit(atrule.block);return atrule};Evaluator.prototype.visitSupports=function(node){var condition=node.condition,val;this.ret++;node.condition=this.visit(condition);this.ret--;val=condition.first;if(1==condition.nodes.length&&"string"==val.nodeName){node.condition=val.string}node.block=this.visit(node.block);return node};Evaluator.prototype.visitIf=function(node){var ret,block=this.currentBlock,negate=node.negate;this.ret++;var ok=this.visit(node.cond).first.toBoolean();this.ret--;node.block.scope=node.block.hasMedia;if(negate){if(ok.isFalse){ret=this.visit(node.block)}}else{if(ok.isTrue){ret=this.visit(node.block)}else if(node.elses.length){var elses=node.elses,len=elses.length,cond;for(var i=0;i<len;++i){if(elses[i].cond){elses[i].block.scope=elses[i].block.hasMedia;this.ret++;cond=this.visit(elses[i].cond).first.toBoolean();this.ret--;if(cond.isTrue){ret=this.visit(elses[i].block);break}}else{elses[i].scope=elses[i].hasMedia;ret=this.visit(elses[i])}}}}if(ret&&!node.postfix&&block.node&&~["group","atrule","media","supports","keyframes"].indexOf(block.node.nodeName)){this.mixin(ret.nodes,block);return nodes.nil}return ret||nodes.nil};Evaluator.prototype.visitExtend=function(extend){var block=this.currentBlock;if("group"!=block.node.nodeName)block=this.closestGroup;extend.selectors.forEach(function(selector){block.node.extends.push({selector:this.interpolate(selector.clone()).trim(),optional:selector.optional,lineno:selector.lineno,column:selector.column})},this);return nodes.nil};Evaluator.prototype.visitImport=function(imported){this.ret++;var path=this.visit(imported.path).first,nodeName=imported.once?"require":"import",found,literal;this.ret--;if("url"==path.name){if(imported.once)throw new Error("You cannot @require a url");return imported}if(!path.string)throw new Error("@"+nodeName+" string expected");var name=path=path.string;if(/(?:url\s*\(\s*)?['"]?(?:#|(?:https?:)?\/\/)/i.test(path)){if(imported.once)throw new Error("You cannot @require a url");return imported}if(/\.css(?:"|$)/.test(path)){literal=true;if(!imported.once&&!this.includeCSS){return imported}}if(!literal&&!/\.styl$/i.test(path))path+=".styl";found=utils.find(path,this.paths,this.filename);if(!found){found=utils.lookupIndex(name,this.paths,this.filename)}if(!found)throw new Error("failed to locate @"+nodeName+" file "+path);var block=new nodes.Block;for(var i=0,len=found.length;i<len;++i){block.push(importFile.call(this,imported,found[i],literal))}return block};Evaluator.prototype.invokeFunction=function(fn,args,content){var block=new nodes.Block(fn.block.parent);var body=fn.block.clone(block);var mixinBlock=this.stack.currentFrame.block;this.stack.push(new Frame(block));var scope=this.currentScope;if("arguments"!=args.nodeName){var expr=new nodes.Expression;expr.push(args);args=nodes.Arguments.fromExpression(expr)}scope.add(new nodes.Ident("arguments",args));scope.add(new nodes.Ident("mixin",this.ret?nodes.no:new nodes.String(mixinBlock.nodeName)));if(this.property){var prop=this.propertyExpression(this.property,fn.name);scope.add(new nodes.Ident("current-property",prop))}else{scope.add(new nodes.Ident("current-property",nodes.nil))}var expr=new nodes.Expression;for(var i=this.calling.length-1;i--;){expr.push(new nodes.Literal(this.calling[i]))}scope.add(new nodes.Ident("called-from",expr));var i=0,len=args.nodes.length;fn.params.nodes.forEach(function(node){if(node.rest){node.val=new nodes.Expression;for(;i<len;++i)node.val.push(args.nodes[i]);node.val.preserve=true;node.val.isList=args.isList}else{var arg=args.map[node.name]||args.nodes[i++];node=node.clone();if(arg){arg.isEmpty?args.nodes[i-1]=this.visit(node):node.val=arg}else{args.push(node.val)}if(node.val.isNull){throw new Error('argument "'+node+'" required for '+fn)}}scope.add(node)},this);if(content)scope.add(new nodes.Ident("block",content,true));return this.invoke(body,true,fn.filename)};Evaluator.prototype.invokeBuiltin=function(fn,args){if(fn.raw){args=args.nodes}else{args=utils.params(fn).reduce(function(ret,param){var arg=args.map[param]||args.nodes.shift();if(arg){arg=utils.unwrap(arg);var len=arg.nodes.length;if(len>1){for(var i=0;i<len;++i){ret.push(utils.unwrap(arg.nodes[i].first))}}else{ret.push(arg.first)}}return ret},[])}var body=utils.coerce(fn.apply(this,args));var expr=new nodes.Expression;expr.push(body);body=expr;return this.invoke(body)};Evaluator.prototype.invoke=function(body,stack,filename){var self=this,ret;if(filename)this.paths.push(dirname(filename));if(this.ret){ret=this.eval(body.nodes);if(stack)this.stack.pop()}else{body=this.visit(body);if(stack)this.stack.pop();this.mixin(body.nodes,this.currentBlock);ret=nodes.nil}if(filename)this.paths.pop();return ret};Evaluator.prototype.mixin=function(nodes,block){if(!nodes.length)return;var len=block.nodes.length,head=block.nodes.slice(0,block.index),tail=block.nodes.slice(block.index+1,len);this._mixin(nodes,head,block);block.index=0;block.nodes=head.concat(tail)};Evaluator.prototype._mixin=function(items,dest,block){var node,len=items.length;for(var i=0;i<len;++i){switch((node=items[i]).nodeName){case"return":return;case"block":this._mixin(node.nodes,dest,block);break;case"media":var parentNode=node.block.parent.node;if(parentNode&&"call"!=parentNode.nodeName){node.block.parent=block}case"property":var val=node.expr;if(node.literal&&"block"==val.first.name){val=utils.unwrap(val);val.nodes[0]=new nodes.Literal("block")}default:dest.push(node)}}};Evaluator.prototype.mixinNode=function(node){node=this.visit(node.first);switch(node.nodeName){case"object":this.mixinObject(node);return nodes.nil;case"block":case"atblock":this.mixin(node.nodes,this.currentBlock);return nodes.nil}};Evaluator.prototype.mixinObject=function(object){var Parser=require("../parser"),root=this.root,str="$block "+object.toBlock(),parser=new Parser(str,utils.merge({root:block},this.options)),block;try{block=parser.parse()}catch(err){err.filename=this.filename;err.lineno=parser.lexer.lineno;err.column=parser.lexer.column;err.input=str;throw err}block.parent=root;block.scope=false;var ret=this.visit(block),vals=ret.first.nodes;for(var i=0,len=vals.length;i<len;++i){if(vals[i].block){this.mixin(vals[i].block.nodes,this.currentBlock);break}}};Evaluator.prototype.eval=function(vals){if(!vals)return nodes.nil;var len=vals.length,node=nodes.nil;try{for(var i=0;i<len;++i){node=vals[i];switch(node.nodeName){case"if":if("block"!=node.block.nodeName){node=this.visit(node);break}case"each":case"block":node=this.visit(node);if(node.nodes)node=this.eval(node.nodes);break;default:node=this.visit(node)}}}catch(err){if("return"==err.nodeName){return err.expr}else{throw err}}return node};Evaluator.prototype.literalCall=function(call){call.args=this.visit(call.args);return call};Evaluator.prototype.lookupProperty=function(name){var i=this.stack.length,index=this.currentBlock.index,top=i,nodes,block,len,other;while(i--){block=this.stack[i].block;if(!block.node)continue;switch(block.node.nodeName){case"group":case"function":case"if":case"each":case"atrule":case"media":case"atblock":case"call":nodes=block.nodes;if(i+1==top){while(index--){if(this.property==nodes[index])continue;other=this.interpolate(nodes[index]);if(name==other)return nodes[index].clone()}}else{len=nodes.length;while(len--){if("property"!=nodes[len].nodeName||this.property==nodes[len])continue;other=this.interpolate(nodes[len]);if(name==other)return nodes[len].clone()}}break}}return nodes.nil};Evaluator.prototype.__defineGetter__("closestBlock",function(){var i=this.stack.length,block;while(i--){block=this.stack[i].block;if(block.node){switch(block.node.nodeName){case"group":case"keyframes":case"atrule":case"atblock":case"media":case"call":return block}}}});Evaluator.prototype.__defineGetter__("closestGroup",function(){var i=this.stack.length,block;while(i--){block=this.stack[i].block;if(block.node&&"group"==block.node.nodeName){return block}}});Evaluator.prototype.__defineGetter__("selectorStack",function(){var block,stack=[];for(var i=0,len=this.stack.length;i<len;++i){block=this.stack[i].block;if(block.node&&"group"==block.node.nodeName){block.node.nodes.forEach(function(selector){if(!selector.val)selector.val=this.interpolate(selector)},this);stack.push(block.node.nodes)}}return stack});Evaluator.prototype.lookup=function(name){var val;if(this.ignoreColors&&name in colors)return;if(val=this.stack.lookup(name)){return utils.unwrap(val)}else{return this.lookupFunction(name)}};Evaluator.prototype.interpolate=function(node){var self=this,isSelector="selector"==node.nodeName;function toString(node){switch(node.nodeName){case"function":case"ident":return node.name;case"literal":case"string":if(self.prefix&&!node.prefixed&&!node.val.nodeName){node.val=node.val.replace(/\./g,"."+self.prefix);node.prefixed=true}return node.val;case"unit":return"%"==node.type?node.val+"%":node.val;case"member":return toString(self.visit(node));case"expression":if(self.calling&&~self.calling.indexOf("selector")&&self._selector)return self._selector;self.ret++;var ret=toString(self.visit(node).first);self.ret--;if(isSelector)self._selector=ret;return ret}}if(node.segments){return node.segments.map(toString).join("")}else{return toString(node)}};Evaluator.prototype.lookupFunction=function(name){var fn=this.functions[name]||bifs[name];if(fn)return new nodes.Function(name,fn)};Evaluator.prototype.isDefined=function(node){if("ident"==node.nodeName){return nodes.Boolean(this.lookup(node.name))}else{throw new Error('invalid "is defined" check on non-variable '+node)}};Evaluator.prototype.propertyExpression=function(prop,name){var expr=new nodes.Expression,val=prop.expr.clone();expr.push(new nodes.String(prop.name));function replace(node){if("call"==node.nodeName&&name==node.name){return new nodes.Literal("__CALL__")}if(node.nodes)node.nodes=node.nodes.map(replace);return node}replace(val);expr.push(val);return expr};Evaluator.prototype.cast=function(expr){return new nodes.Unit(expr.first.val,expr.nodes[1].name)};Evaluator.prototype.castable=function(expr){return 2==expr.nodes.length&&"unit"==expr.first.nodeName&&~units.indexOf(expr.nodes[1].name)};Evaluator.prototype.warn=function(msg){if(!this.warnings)return;console.warn("Warning: "+msg)};Evaluator.prototype.__defineGetter__("currentBlock",function(){return this.stack.currentFrame.block});Evaluator.prototype.__defineGetter__("vendors",function(){return this.lookup("vendors").nodes.map(function(node){return node.string})});Evaluator.prototype.unvendorize=function(prop){for(var i=0,len=this.vendors.length;i<len;i++){if("official"!=this.vendors[i]){var vendor="-"+this.vendors[i]+"-";if(~prop.indexOf(vendor))return prop.replace(vendor,"")}}return prop};Evaluator.prototype.__defineGetter__("currentScope",function(){return this.stack.currentFrame.scope});Evaluator.prototype.__defineGetter__("currentFrame",function(){return this.stack.currentFrame})});require.register("visitor/normalizer.js",function(module,exports,require){var Visitor=require("./index"),nodes=require("../nodes/index"),utils=require("../utils");var Normalizer=module.exports=function Normalizer(root,options){options=options||{};Visitor.call(this,root);this.hoist=options["hoist atrules"];this.stack=[];this.map={};this.imports=[]};Normalizer.prototype.__proto__=Visitor.prototype;Normalizer.prototype.normalize=function(){var ret=this.visit(this.root);if(this.hoist){if(this.imports.length)ret.nodes=this.imports.concat(ret.nodes);if(this.charset)ret.nodes=[this.charset].concat(ret.nodes)}return ret};Normalizer.prototype.bubble=function(node){var props=[],other=[],self=this;function filterProps(block){block.nodes.forEach(function(node){node=self.visit(node);switch(node.nodeName){case"property":props.push(node);break;case"block":filterProps(node);break;default:other.push(node)}})}filterProps(node.block);if(props.length){var selector=new nodes.Selector([new nodes.Literal("&")]);selector.lineno=node.lineno;selector.column=node.column;selector.filename=node.filename;selector.val="&";var group=new nodes.Group;group.lineno=node.lineno;group.column=node.column;group.filename=node.filename;var block=new nodes.Block(node.block,group);block.lineno=node.lineno;block.column=node.column;block.filename=node.filename;props.forEach(function(prop){block.push(prop)});group.push(selector);group.block=block;node.block.nodes=[];node.block.push(group);other.forEach(function(n){node.block.push(n)});var group=this.closestGroup(node.block);if(group)node.group=group.clone();node.bubbled=true}};Normalizer.prototype.closestGroup=function(block){var parent=block.parent,node;while(parent&&(node=parent.node)){if("group"==node.nodeName)return node;parent=node.block&&node.block.parent}};Normalizer.prototype.visitRoot=function(block){var ret=new nodes.Root,node;for(var i=0;i<block.nodes.length;++i){node=block.nodes[i];switch(node.nodeName){case"null":case"expression":case"function":case"unit":case"atblock":continue;default:this.rootIndex=i;ret.push(this.visit(node))}}return ret};Normalizer.prototype.visitProperty=function(prop){this.visit(prop.expr);return prop};Normalizer.prototype.visitExpression=function(expr){expr.nodes=expr.nodes.map(function(node){if("block"==node.nodeName){var literal=new nodes.Literal("block");literal.lineno=expr.lineno;literal.column=expr.column;return literal}return node});return expr};Normalizer.prototype.visitBlock=function(block){var node;if(block.hasProperties){for(var i=0,len=block.nodes.length;i<len;++i){node=block.nodes[i];switch(node.nodeName){case"null":case"expression":case"function":case"group":case"unit":case"atblock":continue;default:block.nodes[i]=this.visit(node)}}}for(var i=0,len=block.nodes.length;i<len;++i){node=block.nodes[i];block.nodes[i]=this.visit(node)}return block};Normalizer.prototype.visitGroup=function(group){var stack=this.stack,map=this.map,parts;group.nodes.forEach(function(selector,i){if(!~selector.val.indexOf(","))return;if(~selector.val.indexOf("\\,")){selector.val=selector.val.replace(/\\,/g,",");return}parts=selector.val.split(",");var root="/"==selector.val.charAt(0),part,s;for(var k=0,len=parts.length;k<len;++k){part=parts[k].trim();if(root&&k>0&&!~part.indexOf("&")){part="/"+part}s=new nodes.Selector([new nodes.Literal(part)]);s.val=part;s.block=group.block;group.nodes[i++]=s}});stack.push(group.nodes);var selectors=utils.compileSelectors(stack,true);selectors.forEach(function(selector){map[selector]=map[selector]||[];map[selector].push(group)});this.extend(group,selectors);stack.pop();return group};Normalizer.prototype.visitFunction=function(){return nodes.nil};Normalizer.prototype.visitMedia=function(media){var medias=[],group=this.closestGroup(media.block),parent;function mergeQueries(block){block.nodes.forEach(function(node,i){switch(node.nodeName){case"media":node.val=media.val.merge(node.val);medias.push(node);block.nodes[i]=nodes.nil;break;case"block":mergeQueries(node);break;default:if(node.block&&node.block.nodes)mergeQueries(node.block)}})}mergeQueries(media.block);this.bubble(media);if(medias.length){medias.forEach(function(node){if(group){group.block.push(node)}else{this.root.nodes.splice(++this.rootIndex,0,node)}node=this.visit(node);parent=node.block.parent;if(node.bubbled&&(!group||"group"==parent.node.nodeName)){node.group.block=node.block.nodes[0].block;node.block.nodes[0]=node.group}},this)}return media};Normalizer.prototype.visitSupports=function(node){this.bubble(node);return node};Normalizer.prototype.visitAtrule=function(node){if(node.block)node.block=this.visit(node.block);return node};Normalizer.prototype.visitKeyframes=function(node){var frames=node.block.nodes.filter(function(frame){return frame.block&&frame.block.hasProperties});node.frames=frames.length;return node};Normalizer.prototype.visitImport=function(node){this.imports.push(node);return this.hoist?nodes.nil:node};Normalizer.prototype.visitCharset=function(node){this.charset=node;return this.hoist?nodes.nil:node};Normalizer.prototype.extend=function(group,selectors){var map=this.map,self=this,parent=this.closestGroup(group.block);group.extends.forEach(function(extend){var groups=map[extend.selector];if(!groups){if(extend.optional)return;var err=new Error('Failed to @extend "'+extend.selector+'"');err.lineno=extend.lineno;err.column=extend.column;throw err}selectors.forEach(function(selector){var node=new nodes.Selector;node.val=selector;node.inherits=false;groups.forEach(function(group){if(!parent||parent!=group)self.extend(group,selectors);group.push(node)})})});group.block=this.visit(group.block)}});return require("stylus")}();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment