亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? infblocks.java

?? 著名的zlib 壓縮解壓縮庫的JAVA語言實現。
?? JAVA
字號:
/* -*-mode:java; c-basic-offset:2; -*- *//*Copyright (c) 2000,2001,2002,2003 ymnk, JCraft,Inc. All rights reserved.Redistribution and use in source and binary forms, with or withoutmodification, are permitted provided that the following conditions are met:  1. Redistributions of source code must retain the above copyright notice,     this list of conditions and the following disclaimer.  2. Redistributions in binary form must reproduce the above copyright      notice, this list of conditions and the following disclaimer in      the documentation and/or other materials provided with the distribution.  3. The names of the authors may not be used to endorse or promote products     derived from this software without specific prior written permission.THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ANDFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OFLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDINGNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *//* * This program is based on zlib-1.1.3, so all credit should go authors * Jean-loup Gailly(jloup@gzip.org) and Mark Adler(madler@alumni.caltech.edu) * and contributors of zlib. */package com.jcraft.jzlib;final class InfBlocks{  static final private int MANY=1440;  // And'ing with mask[n] masks the lower n bits  static final private int[] inflate_mask = {    0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f,    0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff,    0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff,    0x00007fff, 0x0000ffff  };  // Table for deflate from PKZIP's appnote.txt.  static final int[] border = { // Order of the bit length code lengths    16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15  };  static final private int Z_OK=0;  static final private int Z_STREAM_END=1;  static final private int Z_NEED_DICT=2;  static final private int Z_ERRNO=-1;  static final private int Z_STREAM_ERROR=-2;  static final private int Z_DATA_ERROR=-3;  static final private int Z_MEM_ERROR=-4;  static final private int Z_BUF_ERROR=-5;  static final private int Z_VERSION_ERROR=-6;  static final private int TYPE=0;  // get type bits (3, including end bit)  static final private int LENS=1;  // get lengths for stored  static final private int STORED=2;// processing stored block  static final private int TABLE=3; // get table lengths  static final private int BTREE=4; // get bit lengths tree for a dynamic block  static final private int DTREE=5; // get length, distance trees for a dynamic block  static final private int CODES=6; // processing fixed or dynamic block  static final private int DRY=7;   // output remaining window bytes  static final private int DONE=8;  // finished last block, done  static final private int BAD=9;   // ot a data error--stuck here  int mode;            // current inflate_block mode   int left;            // if STORED, bytes left to copy   int table;           // table lengths (14 bits)   int index;           // index into blens (or border)   int[] blens;         // bit lengths of codes   int[] bb=new int[1]; // bit length tree depth   int[] tb=new int[1]; // bit length decoding tree   InfCodes codes=new InfCodes();      // if CODES, current state   int last;            // true if this block is the last block   // mode independent information   int bitk;            // bits in bit buffer   int bitb;            // bit buffer   int[] hufts;         // single malloc for tree space   byte[] window;       // sliding window   int end;             // one byte after sliding window   int read;            // window read pointer   int write;           // window write pointer   Object checkfn;      // check function   long check;          // check on output   InfTree inftree=new InfTree();  InfBlocks(ZStream z, Object checkfn, int w){    hufts=new int[MANY*3];    window=new byte[w];    end=w;    this.checkfn = checkfn;    mode = TYPE;    reset(z, null);  }  void reset(ZStream z, long[] c){    if(c!=null) c[0]=check;    if(mode==BTREE || mode==DTREE){    }    if(mode==CODES){      codes.free(z);    }    mode=TYPE;    bitk=0;    bitb=0;    read=write=0;    if(checkfn != null)      z.adler=check=z._adler.adler32(0L, null, 0, 0);  }  int proc(ZStream z, int r){    int t;              // temporary storage    int b;              // bit buffer    int k;              // bits in bit buffer    int p;              // input data pointer    int n;              // bytes available there    int q;              // output window write pointer    int m;              // bytes to end of window or read pointer    // copy input/output information to locals (UPDATE macro restores)    {p=z.next_in_index;n=z.avail_in;b=bitb;k=bitk;}    {q=write;m=(int)(q<read?read-q-1:end-q);}    // process input based on current state    while(true){      switch (mode){      case TYPE:	while(k<(3)){	  if(n!=0){	    r=Z_OK;	  }	  else{	    bitb=b; bitk=k; 	    z.avail_in=n;	    z.total_in+=p-z.next_in_index;z.next_in_index=p;	    write=q;	    return inflate_flush(z,r);	  };	  n--;	  b|=(z.next_in[p++]&0xff)<<k;	  k+=8;	}	t = (int)(b & 7);	last = t & 1;	switch (t >>> 1){        case 0:                         // stored           {b>>>=(3);k-=(3);}          t = k & 7;                    // go to byte boundary          {b>>>=(t);k-=(t);}          mode = LENS;                  // get length of stored block          break;        case 1:                         // fixed          {            int[] bl=new int[1];	    int[] bd=new int[1];            int[][] tl=new int[1][];	    int[][] td=new int[1][];	    InfTree.inflate_trees_fixed(bl, bd, tl, td, z);            codes.init(bl[0], bd[0], tl[0], 0, td[0], 0, z);          }          {b>>>=(3);k-=(3);}          mode = CODES;          break;        case 2:                         // dynamic          {b>>>=(3);k-=(3);}          mode = TABLE;          break;        case 3:                         // illegal          {b>>>=(3);k-=(3);}          mode = BAD;          z.msg = "invalid block type";          r = Z_DATA_ERROR;	  bitb=b; bitk=k; 	  z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	  write=q;	  return inflate_flush(z,r);	}	break;      case LENS:	while(k<(32)){	  if(n!=0){	    r=Z_OK;	  }	  else{	    bitb=b; bitk=k; 	    z.avail_in=n;	    z.total_in+=p-z.next_in_index;z.next_in_index=p;	    write=q;	    return inflate_flush(z,r);	  };	  n--;	  b|=(z.next_in[p++]&0xff)<<k;	  k+=8;	}	if ((((~b) >>> 16) & 0xffff) != (b & 0xffff)){	  mode = BAD;	  z.msg = "invalid stored block lengths";	  r = Z_DATA_ERROR;	  bitb=b; bitk=k; 	  z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	  write=q;	  return inflate_flush(z,r);	}	left = (b & 0xffff);	b = k = 0;                       // dump bits	mode = left!=0 ? STORED : (last!=0 ? DRY : TYPE);	break;      case STORED:	if (n == 0){	  bitb=b; bitk=k; 	  z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	  write=q;	  return inflate_flush(z,r);	}	if(m==0){	  if(q==end&&read!=0){	    q=0; m=(int)(q<read?read-q-1:end-q);	  }	  if(m==0){	    write=q; 	    r=inflate_flush(z,r);	    q=write;m=(int)(q<read?read-q-1:end-q);	    if(q==end&&read!=0){	      q=0; m=(int)(q<read?read-q-1:end-q);	    }	    if(m==0){	      bitb=b; bitk=k; 	      z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	      write=q;	      return inflate_flush(z,r);	    }	  }	}	r=Z_OK;	t = left;	if(t>n) t = n;	if(t>m) t = m;	System.arraycopy(z.next_in, p, window, q, t);	p += t;  n -= t;	q += t;  m -= t;	if ((left -= t) != 0)	  break;	mode = last!=0 ? DRY : TYPE;	break;      case TABLE:	while(k<(14)){	  if(n!=0){	    r=Z_OK;	  }	  else{	    bitb=b; bitk=k; 	    z.avail_in=n;	    z.total_in+=p-z.next_in_index;z.next_in_index=p;	    write=q;	    return inflate_flush(z,r);	  };	  n--;	  b|=(z.next_in[p++]&0xff)<<k;	  k+=8;	}	table = t = (b & 0x3fff);	if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29)	  {	    mode = BAD;	    z.msg = "too many length or distance symbols";	    r = Z_DATA_ERROR;	    bitb=b; bitk=k; 	    z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	    write=q;	    return inflate_flush(z,r);	  }	t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f);	if(blens==null || blens.length<t){	  blens=new int[t];	}	else{	  for(int i=0; i<t; i++){blens[i]=0;}	}	{b>>>=(14);k-=(14);}	index = 0;	mode = BTREE;      case BTREE:	while (index < 4 + (table >>> 10)){	  while(k<(3)){	    if(n!=0){	      r=Z_OK;	    }	    else{	      bitb=b; bitk=k; 	      z.avail_in=n;	      z.total_in+=p-z.next_in_index;z.next_in_index=p;	      write=q;	      return inflate_flush(z,r);	    };	    n--;	    b|=(z.next_in[p++]&0xff)<<k;	    k+=8;	  }	  blens[border[index++]] = b&7;	  {b>>>=(3);k-=(3);}	}	while(index < 19){	  blens[border[index++]] = 0;	}	bb[0] = 7;	t = inftree.inflate_trees_bits(blens, bb, tb, hufts, z);	if (t != Z_OK){	  r = t;	  if (r == Z_DATA_ERROR){	    blens=null;	    mode = BAD;	  }	  bitb=b; bitk=k; 	  z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	  write=q;	  return inflate_flush(z,r);	}	index = 0;	mode = DTREE;      case DTREE:	while (true){	  t = table;	  if(!(index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))){	    break;	  }	  int[] h;	  int i, j, c;	  t = bb[0];	  while(k<(t)){	    if(n!=0){	      r=Z_OK;	    }	    else{	      bitb=b; bitk=k; 	      z.avail_in=n;	      z.total_in+=p-z.next_in_index;z.next_in_index=p;	      write=q;	      return inflate_flush(z,r);	    };	    n--;	    b|=(z.next_in[p++]&0xff)<<k;	    k+=8;	  }	  if(tb[0]==-1){            //System.err.println("null...");	  }	  t=hufts[(tb[0]+(b&inflate_mask[t]))*3+1];	  c=hufts[(tb[0]+(b&inflate_mask[t]))*3+2];	  if (c < 16){	    b>>>=(t);k-=(t);	    blens[index++] = c;	  }	  else { // c == 16..18	    i = c == 18 ? 7 : c - 14;	    j = c == 18 ? 11 : 3;	    while(k<(t+i)){	      if(n!=0){		r=Z_OK;	      }	      else{		bitb=b; bitk=k; 		z.avail_in=n;		z.total_in+=p-z.next_in_index;z.next_in_index=p;		write=q;		return inflate_flush(z,r);	      };	      n--;	      b|=(z.next_in[p++]&0xff)<<k;	      k+=8;	    }	    b>>>=(t);k-=(t);	    j += (b & inflate_mask[i]);	    b>>>=(i);k-=(i);	    i = index;	    t = table;	    if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) ||		(c == 16 && i < 1)){	      blens=null;	      mode = BAD;	      z.msg = "invalid bit length repeat";	      r = Z_DATA_ERROR;	      bitb=b; bitk=k; 	      z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	      write=q;	      return inflate_flush(z,r);	    }	    c = c == 16 ? blens[i-1] : 0;	    do{	      blens[i++] = c;	    }	    while (--j!=0);	    index = i;	  }	}	tb[0]=-1;	{	  int[] bl=new int[1];	  int[] bd=new int[1];	  int[] tl=new int[1];	  int[] td=new int[1];	  bl[0] = 9;         // must be <= 9 for lookahead assumptions	  bd[0] = 6;         // must be <= 9 for lookahead assumptions	  t = table;	  t = inftree.inflate_trees_dynamic(257 + (t & 0x1f), 					    1 + ((t >> 5) & 0x1f),					    blens, bl, bd, tl, td, hufts, z);	  if (t != Z_OK){	    if (t == Z_DATA_ERROR){	      blens=null;	      mode = BAD;	    }	    r = t;	    bitb=b; bitk=k; 	    z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	    write=q;	    return inflate_flush(z,r);	  }	  codes.init(bl[0], bd[0], hufts, tl[0], hufts, td[0], z);	}	mode = CODES;      case CODES:	bitb=b; bitk=k;	z.avail_in=n; z.total_in+=p-z.next_in_index;z.next_in_index=p;	write=q;	if ((r = codes.proc(this, z, r)) != Z_STREAM_END){	  return inflate_flush(z, r);	}	r = Z_OK;	codes.free(z);	p=z.next_in_index; n=z.avail_in;b=bitb;k=bitk;	q=write;m=(int)(q<read?read-q-1:end-q);	if (last==0){	  mode = TYPE;	  break;	}	mode = DRY;      case DRY:	write=q; 	r=inflate_flush(z, r); 	q=write; m=(int)(q<read?read-q-1:end-q);	if (read != write){	  bitb=b; bitk=k; 	  z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	  write=q;	  return inflate_flush(z, r);	}	mode = DONE;      case DONE:	r = Z_STREAM_END;	bitb=b; bitk=k; 	z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	write=q;	return inflate_flush(z, r);      case BAD:	r = Z_DATA_ERROR;	bitb=b; bitk=k; 	z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	write=q;	return inflate_flush(z, r);      default:	r = Z_STREAM_ERROR;	bitb=b; bitk=k; 	z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p;	write=q;	return inflate_flush(z, r);      }    }  }  void free(ZStream z){    reset(z, null);    window=null;    hufts=null;    //ZFREE(z, s);  }  void set_dictionary(byte[] d, int start, int n){    System.arraycopy(d, start, window, 0, n);    read = write = n;  }  // Returns true if inflate is currently at the end of a block generated  // by Z_SYNC_FLUSH or Z_FULL_FLUSH.   int sync_point(){    return mode == LENS ? 1 : 0;  }  // copy as much as possible from the sliding window to the output area  int inflate_flush(ZStream z, int r){    int n;    int p;    int q;    // local copies of source and destination pointers    p = z.next_out_index;    q = read;    // compute number of bytes to copy as far as end of window    n = (int)((q <= write ? write : end) - q);    if (n > z.avail_out) n = z.avail_out;    if (n!=0 && r == Z_BUF_ERROR) r = Z_OK;    // update counters    z.avail_out -= n;    z.total_out += n;    // update check information    if(checkfn != null)      z.adler=check=z._adler.adler32(check, window, q, n);    // copy as far as end of window    System.arraycopy(window, q, z.next_out, p, n);    p += n;    q += n;    // see if more to copy at beginning of window    if (q == end){      // wrap pointers      q = 0;      if (write == end)        write = 0;      // compute bytes to copy      n = write - q;      if (n > z.avail_out) n = z.avail_out;      if (n!=0 && r == Z_BUF_ERROR) r = Z_OK;      // update counters      z.avail_out -= n;      z.total_out += n;      // update check information      if(checkfn != null)	z.adler=check=z._adler.adler32(check, window, q, n);      // copy      System.arraycopy(window, q, z.next_out, p, n);      p += n;      q += n;    }    // update pointers    z.next_out_index = p;    read = q;    // done    return r;  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本韩国精品在线| 欧美精品v国产精品v日韩精品| 最近中文字幕一区二区三区| aaa欧美色吧激情视频| 国产精品家庭影院| 色综合天天综合狠狠| 一区二区三区视频在线观看| 欧美日韩国产欧美日美国产精品| 日本不卡一区二区| 久久综合久久综合久久综合| 高清国产午夜精品久久久久久| 国产精品久久久一区麻豆最新章节| 91香蕉视频在线| 亚洲va欧美va天堂v国产综合| 欧美一区二区三区播放老司机| 国产一区不卡精品| 最近日韩中文字幕| 91精品在线观看入口| 国产一区高清在线| 亚洲欧美日韩成人高清在线一区| 欧美色电影在线| 免费不卡在线视频| 国产精品水嫩水嫩| 欧美三级韩国三级日本一级| 久久99国产精品久久99果冻传媒| 国产欧美日韩综合| 欧美人体做爰大胆视频| 国产一区福利在线| 一级中文字幕一区二区| 日韩精品一区二区三区三区免费| 成人av网站免费观看| 日韩综合小视频| 国产精品嫩草影院av蜜臀| 欧美日韩在线观看一区二区| 经典三级一区二区| 亚洲一区二区精品3399| 久久综合av免费| 色天天综合久久久久综合片| 裸体歌舞表演一区二区| 自拍偷拍欧美激情| 欧美不卡一区二区三区四区| aaa亚洲精品| 精品一区二区影视| 一区二区三区欧美视频| 久久久影院官网| 精品视频1区2区| 成人精品视频.| 麻豆精品一区二区| 亚洲综合一区二区精品导航| 久久夜色精品国产噜噜av| 色美美综合视频| 国产美女精品一区二区三区| 亚洲伊人色欲综合网| 国产三级精品三级| 3d动漫精品啪啪一区二区竹菊| 成人午夜电影小说| 久久成人18免费观看| 亚洲精品精品亚洲| 久久久久九九视频| 欧美精品tushy高清| 色综合天天综合给合国产| 国产精品一区二区在线观看网站 | 精品区一区二区| 色又黄又爽网站www久久| 国产成人在线观看免费网站| 日韩高清一区二区| 一区二区三区影院| 精品国产一区二区国模嫣然| 欧美天天综合网| 日韩午夜精品电影| 亚洲第一激情av| 91老司机福利 在线| 三级一区在线视频先锋| 成人久久视频在线观看| 精品国产伦一区二区三区观看方式| 婷婷夜色潮精品综合在线| 欧美网站一区二区| 青青草精品视频| 久久精品日产第一区二区三区高清版 | 久久精品国产免费| 波多野结衣在线一区| 日韩欧美一二三| 一本在线高清不卡dvd| 国产欧美日韩亚州综合| 免费成人在线网站| 日韩精品一区二区三区蜜臀 | 成人免费高清视频| 日韩欧美一区在线| 国产经典欧美精品| 亚洲人成小说网站色在线| 国产黄色成人av| 国产色91在线| 久久众筹精品私拍模特| 韩国精品久久久| 国产精品素人一区二区| 欧美一区二区不卡视频| 丁香另类激情小说| 国产精品亚洲综合一区在线观看| 成人黄色在线视频| 中文字幕在线视频一区| 欧美一区二区三区在线看 | 日韩专区中文字幕一区二区| 国产欧美一区二区精品婷婷| 日韩电影一二三区| 欧美一区二区三级| 日韩成人精品视频| 中文字幕第一区综合| 欧美伊人久久大香线蕉综合69| 九九视频精品免费| 亚洲视频在线一区观看| 国产精品电影一区二区| 中文在线资源观看网站视频免费不卡| 国产三级三级三级精品8ⅰ区| 欧美日韩久久久| 亚洲欧美影音先锋| 国产精品久久久久久久久晋中 | 欧美色爱综合网| 国产a视频精品免费观看| 亚洲一二三级电影| **性色生活片久久毛片| 中文字幕精品在线不卡| 国产欧美日韩视频在线观看| 日韩欧美成人激情| 在线免费观看不卡av| 97久久精品人人做人人爽| 国产一区二区91| 国产女同性恋一区二区| 久久免费看少妇高潮| 久久综合九色欧美综合狠狠| 国产精品入口麻豆原神| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产.欧美.日韩| 成人午夜精品在线| 成人免费视频国产在线观看| 日韩一区二区麻豆国产| 欧美日韩免费电影| 欧美日韩一区在线| 精品国产3级a| 亚洲免费在线看| 一级精品视频在线观看宜春院| 亚洲国产综合色| 国产一区二区日韩精品| 成人涩涩免费视频| 久久久亚洲精华液精华液精华液| 久久久精品中文字幕麻豆发布| 国产精品天干天干在观线| 亚洲男人天堂一区| 国内精品免费**视频| www.欧美亚洲| 欧美日韩1区2区| 中文一区一区三区高中清不卡| 91精品国产综合久久蜜臀| 日韩欧美国产综合一区 | 国产精品久久久久桃色tv| 亚洲国产欧美日韩另类综合| 日本少妇一区二区| 欧美一级二级在线观看| 久久精品一区二区三区不卡| 亚洲bdsm女犯bdsm网站| 亚洲卡通欧美制服中文| 国产精品一区二区男女羞羞无遮挡| 99麻豆久久久国产精品免费 | 欧美一区二区三区思思人| 亚洲精品欧美综合四区| 国产精品久久久久aaaa| 日韩福利电影在线观看| 99精品国产91久久久久久| 久久久不卡影院| 日日摸夜夜添夜夜添国产精品| 久久精品久久精品| 91视频观看视频| 日本一区二区高清| 国产精品一级在线| 欧美日韩一本到| 亚洲综合区在线| 91蜜桃网址入口| 99精品视频一区二区三区| 欧美一区二区三区免费大片| 中文字幕不卡在线观看| 国产成人精品影视| 日韩二区三区四区| 欧美一区二区精品在线| 亚洲一区自拍偷拍| 日韩精品一区二区三区视频在线观看| 国产免费成人在线视频| 蜜桃av噜噜一区二区三区小说| 欧美亚州韩日在线看免费版国语版| 亚洲欧美一区二区在线观看| 99久久精品免费精品国产| 亚洲欧洲日本在线| 色婷婷久久一区二区三区麻豆| 一二三四社区欧美黄| 欧美综合视频在线观看| 亚洲丝袜美腿综合| 91在线porny国产在线看| 国产乱淫av一区二区三区| 一区二区三区小说| 午夜精品久久久久久久久久久| 欧美精品第1页| 国产一区在线观看视频|