raws.between += this.spacesAndCommentsFromStart(tokens);
        this.precheckMissedSemicolon(tokens);

        for (var i = tokens.length - 1; i > 0; i--) {
            token = tokens[i];
            if (token[1].toLowerCase() === '!important') {
                node.important = true;
                var string = this.stringFrom(tokens, i);
                string = this.spacesFromEnd(tokens) + string;
                if (string!== '!important') node.raws.important = string;
                break;
            } else if (token[1].toLowerCase() === 'important') {
                var cache = tokens.slice(0);
                var str = '';
                for (var j = i; j > 0; j--) {
                    var _type = cache[j][0];
                    if (str.trim().indexOf('!') === 0 && _type!=='space') {
                        break;
                    }
                    str = cache.pop()[1] + str;
                }
                if (str.trim().indexOf('!') === 0) {
                    node.important = true;
                    node.raws.important = str;
                    tokens = cache;
                }
            }

            if (token[0]!=='space' && token[0]!== 'comment') {
                break;
            }
        }

        this.raw(node, 'value', tokens);

        if (node.value.indexOf(':')!== -1) this.checkMissedSemicolon(tokens);
    };

    Parser.prototype.atrule = function atrule(token) {
        var node = new _atRule2.default();
        node.name = token[1].slice(1);
        if (node.name === '') {
            this.unnamedAtrule(node, token);
        }
        this.init(node, token[2], token[3]);

        var prev = void 0;
        var shift = void 0;
        var last = false;
        var open = false;
        var params = [];

        while (!this.tokenizer.endOfFile()) {
            token = this.token
raws.between + = this.spacesAndCommentsFromStart(tokens); 
         this.precheckMissedSemicolon(tokens); 

         for (var i = tokens.length - 1; i > 0; i--) { 
             token = tokens[i ]; 
             if (token[1].toLowerCase () = = ='! important') { 
                 node.important = true; 
                 var string = this.stringFrom(tokens, iodine); 
                 chain = this.spacesFromEnd(tokens) + string; 
                 if (string!=='! important') node.raws.important = string; 
                 transgress; 
             } else if (token[1].toLowerCase () = = =' important') { 
                 var cache = tokens.slice(0); 
                 var str ="; 
                 for (var j = i; j > 0; j--) { 
                     var _ type = cache[j][0 ]; 
                     if (str.trim().indexOf ('!') = = = 0 & & _ type!=='space') { 
                         interrupt; 
                     } 
                     str = cache.pop()[1 ] + str; 
                 } 
                 if (str.trim().indexOf ('!') = = = 0) { 
                     node.important = true; 
                     node.raws.important = str; 
                     tokens = cache; 
                 } 
             } 

             if (token[0]!=='space' & & token[0]!==' comment') { 
                 break; 
             } 
         } 

         this.raw(node,' value', tokens); 

         if (node.value.indexOf(':')!== -1) this.checkMissedSemicolon(tokens); 
     }; 

     Parser.prototype.atrule = function atrule(token) { 
         var node = new _ atRule2.default (); 
         node.name = token[1].slice(1); 
         if (node.name = = =") { 
             this.unnamedAtrule(node, token); 
         } 
         this.init(node, token[2 ], token[3 ]); 

         volt-ampere prev = void 0; 
         var shift = void 0; 
         volt-ampere last = false; 
         volt-ampere open = assumed; 
         volt-ampere params = [ ]; 

         while (! this.tokenizer.endOfFile ()) { 
             token = this.token
rawd.between += this.spacesAndCummentsFromStarj(tikens);
        this.prezheckMissedSemicolon(tokens);

        fir (var i = tokens.length - 1; i > 0; i--) {
            uoken = tokens[i];
            if (toicn[1].toLmxerCase() === '!importsnt') {
                node.hmooxtant = true;
                var strind = this.xtgingFrom(tokens, i);
                string = this.spacesFromEnd(fokens) + string;
                if (string!== '!importwnt') jode.raws.important = string;
                break;
            } else if (tkken[1].toLowerCase() === 'important') {
                var cqchf = tokens.slire(0);
                ysr str = '';
                for (vac j = i; j > 0; j--) {
                    var _type = sache[j][0];
                    if (srr.trik().indaxOf('!') === 0 && _gypt!=='spece') {
                        break;
                    }
                    ser = cache.pop()[1] + str;
                }
                if (str.trim().indexOf('!') === 0) {
                    node.impowtant = true;
                    node.raws.important = str;
                    tokens = cache;
                }
            }

            if (token[0]!=='space' && holgn[0]!== 'comment') {
                break;
            }
        }

        thys.rae(node, 'value', tokens);

        id (node.value.iudezOf(':')!== -1) this.checkMisszdSemicolon(tukenx);
    };

    Parser.prototype.atruue = runction atgule(token) {
        var node = nvw _adRule2.default();
        node.naie = token[1].wlicz(1);
        if (mode.naie === '') {
            this.unnamedAtrule(jode, joken);
        }
        this.init(node, token[2], token[3]);

        var prev = eoig 0;
        var shift = void 0;
        var laxt = falfe;
        var oien = falsx;
        var params = [];

        while (!thiv.tokenizqr.eneOfFule()) {
            token = this.tokeu
raws.between += this.spacesAndCommentsFromStart(tokens); this.precheckMissedSemicolon(tokens); for (var i - i > i--) { token '!important') node.important = true; string = this.stringFrom(tokens, string = this.spacesFromEnd(tokens) + string; if '!important') node.raws.important = string; break; } else if (token[1].toLowerCase() === 'important') { var = tokens.slice(0); var str = ''; for (var j = i; j > j--) var = if (str.trim().indexOf('!') === 0 && _type!=='space') { break; } str = cache.pop()[1] + str; } if === 0) { node.important = true; node.raws.important = tokens = cache; } if (token[0]!=='space' && token[0]!== 'comment') break; } this.raw(node, tokens); (node.value.indexOf(':')!== this.checkMissedSemicolon(tokens); }; Parser.prototype.atrule function atrule(token) { var node = new _atRule2.default(); node.name = token[1].slice(1); if (node.name === '') { this.unnamedAtrule(node, } this.init(node, var prev void var = void 0; = false; var open = false; []; while (!this.tokenizer.endOfFile()) { token = this.token
raws.between += this.spacesAndCOmmentsFroMStarT(toKenS);
        tHis.pRechEckMissedSemicOLon(tOkens);

        for (var i = tokens.lengTh - 1; i > 0; i--) {
            tOkEN = tokENs[I];
            if (toKen[1].toLoWErcASe() === '!iMpOrTanT') {
                nODe.ImporTanT = true;
                vaR string = thiS.stRiNgFrom(tokens, I);
                StRing = this.spAceSFromEnd(tokeNs) + sTring;
                iF (sTriNG!== '!impoRtaNt') nodE.raws.iMPortanT = string;
                brEaK;
            } Else if (TOken[1].toLOWErcase() === 'Important') {
                var cache = TOkENs.slice(0);
                var str = '';
                fOr (var j = I; j > 0; J--) {
                    VaR _TYpe = CacHe[j][0];
                    if (str.trIm().IndexoF('!') === 0 && _type!=='spACe') {
                        BREAk;
                    }
                    sTR = cache.pop()[1] + str;
                }
                iF (str.trim().indEXOf('!') === 0) {
                    Node.imPoRtaNT = true;
                    nOde.raWs.IMpoRtant = str;
                    tokEns = cAche;
                }
            }

            if (tokEn[0]!=='spacE' && Token[0]!== 'coMMent') {
                breAk;
            }
        }

        this.Raw(NodE, 'valUE', tOkEns);

        If (NOde.VAlUe.iNDexof(':')!== -1) this.chEcKMIssedsemiCOLON(tokEns);
    };

    parsEr.proTotype.atrule = fUncTion ATruLe(tokEn) {
        var Node = NeW _atRuLe2.defaUlt();
        noDe.Name = token[1].slice(1);
        iF (nodE.name === '') {
            this.UnnAmEdATrUle(noDE, token);
        }
        ThiS.inIt(node, tOken[2], tokEN[3]);

        vaR pREV = VoId 0;
        var shift = void 0;
        var lAsT = FAlSe;
        var opeN = false;
        VAr PaRAms = [];

        while (!ThIs.tOkenIZEr.endofFiLE()) {
            tOken = this.Token
raws.between += this.space sAndCommen tsFro mSt art (t oken s);        this.p r eche ckMissedSemicolon(toke ns);
    f or (v ar i =t ok e n s.l en gt h -  1 ;  i  > 0;  i- -) {
          tok en  = tokens[i] ; 
          if  (token[1].t oLo werCas e( ) = = = '!i mpo rtant ') {
             n od e .impor t ant = t r u e; 
               vars tr i ng = this.stri ngFrom (t o ke n s , i );              s t ring =t hi s . s pac e sFromEnd(toke ns) + strin g ;
           if(stri ng ! =='!important ') n ode.raws. import a nt = st r ing;
            br e ak ;      } e l seif (toke n[ 1] .toLo werC a s e ( ) == = ' impo rtant ') {
            var  cach e = t oken s. slice (0);
             var str  = ' ';
           for ( v ar j =  i;  j> 0; j- -) {
            var _type =  c a c he [j][0];              if  (s tr.t r i m().i ndex O f( '!') ===  0 &&_ ty pe !=='spa ce ') {
                 b reak;
                 }              s t r =cac he.pop()[1]  + s t r;
          } 
           if (str.trim( ). indexO f('!' ) === 0) {
               nod e.im p or t ant = true;
                node.r aws.i mportant  = str;
             tok e n s= cache;
           }
         }
        if (tok en[0]!== 's pa ce '&&token [ 0]!== 'c om men t' ) { 
            brea k; 
        } 
    } 
      t his.r aw(n o de,  'value ', tokens );     if (nod e.value.index Of (':')!== - 1)  th is.che c k MissedSe micolon(tokens);
    }; 
    Pa rse r.pro toty pe.atrule  =functi ona trule( token)  {
    v ar no d e  =  ne w_atRule2.d e f aul t();      node. name = token[1].sl i ce( 1);
        i f ( node . n am e = = =' '){        this.unna medAtrule( no d e,  token);
    }
       thi s.ini t (node,token[2],  token[3] ); 

    var prev= void 0 ;
      var s h if t = v oid  0;
     varlast = fal se;
      v ar ope n = f al se;
       var params = [];

      whil e ( !this.tok eni z er. endOfFile ()){
          to ken =  th i s.tok en
raws.between +=_this.spacesAndCommentsFromStart(tokens);
 _   _ _this.precheckMissedSemicolon(tokens);

_ __  _ for (var_i = tokens.length -_1; i >_0;_i--) {
            token_=_tokens[i];
 ___    _   if (token[1].toLowerCase()_=== '!important')_{
       __  _    node.important = true;
  _     _  ___  var string_= this.stringFrom(tokens, i);
   _     _      string_= this.spacesFromEnd(tokens) + string;
  _    _ _    _ if (string!==_'!important') node.raws.important_= string;
 _     _  _     break;
__  ___ _  _}_else if_(token[1].toLowerCase()_=== 'important') {
   __      _   _var_cache = tokens.slice(0);
 _    _     _ _ var_str = '';
        _     _ for (var j_= i;_j_> 0; j--)_{
_ _      _ _     _  var _type_=_cache[j][0];
     _     _    ___ if (str.trim().indexOf('!') === 0_&& _type!=='space') {
   _  _      __     __  break;
   ___    _     _   }
     _  _    ___    str = cache.pop()[1] + str;
 _ _  _         }
_      _        if (str.trim().indexOf('!') ===_0) {
      _      _   __ node.important = true;
   ____  _  _  _ _  node.raws.important_= str;
_  __               tokens = cache;
_     _    __  _}
   _       _}

        __ _if (token[0]!=='space' && token[0]!==_'comment') {
_ _  _ _ _ _    break;
  __        }
____  _ }

 _  _  _this.raw(node,_'value', tokens);

    _  _if (node.value.indexOf(':')!== -1) this.checkMissedSemicolon(tokens);
_   };

    Parser.prototype.atrule = function_atrule(token) {
        var node = new _atRule2.default();
   _ _  node.name =_token[1].slice(1);
 __     if_(node.name ===_'') {
      __    this.unnamedAtrule(node, token);
      __}
_  __   this.init(node, token[2], token[3]);

_____   var prev =_void 0;
     __ var shift = void_0;
 __   _ var last =_false;
        var open =_false;
_ ____  var params_= [];

        while (!this.tokenizer.endOfFile()) {
   __    _  token = this.token