code: function deflate_internal(buff, off, buff_size) {
  		var n;
  
  		if (!initflag) {
  			init_deflate();
  			initflag = true;
  			if (lookahead === 0) { // empty
  				complete = true;
  				return 0;
  			}
  		}
  
  		n = qcopy(buff, off, buff_size);
  		if (n === buff_size) {
  			return buff_size;
  		}
  
  		if (complete) {
  			return n;
  		}
  
  		if (compr_level <= 3) {
  			// optimized for speed
  			deflate_fast();
  		} else {
  			deflate_better();
  		}
  
  		if (lookahead === 0) {
  			if (match_available) {
  				ct_tally(0, window[strstart - 1] & 0xff);
  			}
  			flush_block(1);
  			complete = true;
  		}
  
  		return n + qcopy(buff, n + off, buff_size - n);
  	}
docs: /* ==========================================================================
  Same as above, but achieves better compression. We use a lazy
  evaluation for matches: a match is finally adopted only if there is
  no better match at the next window position.