nl_tokens: Inflater
pl_tokens: function Inflater ( ) { var that = this ; var z = new ZStream ( ) ; var bufsize = 512 ; var flush = Z_NO_FLUSH ; var buf = new Uint8Array ( bufsize ) ; var nomoreinput = false ; z . inflateInit ( ) ; z . next_out = buf ; that . append = function ( data , onprogress ) { var <mask> , buffers = [ ] , lastIndex = 0 , bufferIndex = 0 , bufferSize = 0 , array ; if ( data . length === 0 ) return ; z . next_in_index = 0 ; z . next_in = data ; z . avail_in = data . length ; do { z . next_out_index = 0 ; z . avail_out = bufsize ; if ( ( z . avail_in === 0 ) && ( ! nomoreinput ) ) { // if buffer is empty and more input is available, refill it z . next_in_index = 0 ; nomoreinput = true ; } err = z . inflate ( flush ) ; if ( nomoreinput && ( err === Z_BUF_ERROR ) ) { if ( z . avail_in !== 0 ) throw new Error ( "inflating: bad input" ) ; } else if ( err !== Z_OK && err !== Z_STREAM_END ) throw new Error ( "inflating: " + z . msg ) ; if ( ( nomoreinput || err === Z_STREAM_END ) && ( z . avail_in === data . length ) ) throw new Error ( "inflating: bad input" ) ; if ( z . next_out_index ) if ( z . next_out_index === bufsize ) buffers . push ( new Uint8Array ( buf ) ) ; else buffers . push ( new Uint8Array ( buf . subarray ( 0 , z . next_out_index ) ) ) ; bufferSize += z . next_out_index ; if ( onprogress && z . next_in_index > 0 && z . next_in_index != lastIndex ) { onprogress ( z . next_in_index ) ; lastIndex = z . next_in_index ; } } while ( z . avail_in > 0 || z . avail_out === 0 ) ; array = new Uint8Array ( bufferSize ) ; buffers . forEach ( function ( chunk ) { array . set ( chunk , bufferIndex ) ; bufferIndex += chunk . length ; } ) ; return array ; } ; that . flush = function ( ) { z . inflateEnd ( ) ; } ; }