aboutsummaryrefslogtreecommitdiff
path: root/unipdf/internal/ccittfax/ccittfax.go
blob: eebeb02904557968edb79b665c3bfd5756694ac0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/

package ccittfax ;import (_e "errors";_d "github.com/unidoc/unipdf/v4/internal/bitwise";_g "io";_b "math";);func _affc (_gbbe int ,_aac bool )(code ,int ,bool ){if _gbbe < 64{if _aac {return _db [_gbbe ],0,true ;};return _fe [_gbbe ],0,true ;};_gbfd :=_gbbe /64;
if _gbfd > 40{return _dgb [2560],_gbbe -2560,false ;};if _gbfd > 27{return _dgb [_gbfd *64],_gbbe -_gbfd *64,false ;};if _aac {return _ed [_gbfd *64],_gbbe -_gbfd *64,false ;};return _fab [_gbfd *64],_gbbe -_gbfd *64,false ;};func init (){_c =&treeNode {_fefg :true ,_beb :_fa };
_dc =&treeNode {_beb :_ca ,_dac :_c };_dc ._efcb =_dc ;_a =&tree {_cfd :&treeNode {}};if _ce :=_a .fillWithNode (12,0,_dc );_ce !=nil {panic (_ce .Error ());};if _cc :=_a .fillWithNode (12,1,_c );_cc !=nil {panic (_cc .Error ());};_cf =&tree {_cfd :&treeNode {}};
for _fbe :=0;_fbe < len (_dg );_fbe ++{for _ag :=0;_ag < len (_dg [_fbe ]);_ag ++{if _bf :=_cf .fill (_fbe +2,int (_dg [_fbe ][_ag ]),int (_fbg [_fbe ][_ag ]));_bf !=nil {panic (_bf .Error ());};};};if _ff :=_cf .fillWithNode (12,0,_dc );_ff !=nil {panic (_ff .Error ());
};if _fae :=_cf .fillWithNode (12,1,_c );_fae !=nil {panic (_fae .Error ());};_ba =&tree {_cfd :&treeNode {}};for _ffd :=0;_ffd < len (_bdg );_ffd ++{for _bd :=0;_bd < len (_bdg [_ffd ]);_bd ++{if _ae :=_ba .fill (_ffd +4,int (_bdg [_ffd ][_bd ]),int (_ge [_ffd ][_bd ]));
_ae !=nil {panic (_ae .Error ());};};};if _ab :=_ba .fillWithNode (12,0,_dc );_ab !=nil {panic (_ab .Error ());};if _bb :=_ba .fillWithNode (12,1,_c );_bb !=nil {panic (_bb .Error ());};_cg =&tree {_cfd :&treeNode {}};if _ced :=_cg .fill (4,1,_eb );_ced !=nil {panic (_ced .Error ());
};if _cd :=_cg .fill (3,1,_df );_cd !=nil {panic (_cd .Error ());};if _af :=_cg .fill (1,1,0);_af !=nil {panic (_af .Error ());};if _be :=_cg .fill (3,3,1);_be !=nil {panic (_be .Error ());};if _gc :=_cg .fill (6,3,2);_gc !=nil {panic (_gc .Error ());};
if _aff :=_cg .fill (7,3,3);_aff !=nil {panic (_aff .Error ());};if _ea :=_cg .fill (3,2,-1);_ea !=nil {panic (_ea .Error ());};if _ec :=_cg .fill (6,2,-2);_ec !=nil {panic (_ec .Error ());};if _cda :=_cg .fill (7,2,-3);_cda !=nil {panic (_cda .Error ());
};};func (_dbfd *Decoder )decodeRun (_egf *tree )(int ,error ){var _edd int ;_ggae :=_egf ._cfd ;for {_fegc ,_dfe :=_dbfd ._ddg .ReadBool ();if _dfe !=nil {return 0,_dfe ;};_ggae =_ggae .walk (_fegc );if _ggae ==nil {return 0,_e .New ("\u0075\u006e\u006bno\u0077\u006e\u0020\u0063\u006f\u0064\u0065\u0020\u0069n\u0020H\u0075f\u0066m\u0061\u006e\u0020\u0052\u004c\u0045\u0020\u0073\u0074\u0072\u0065\u0061\u006d");
};if _ggae ._fefg {_edd +=_ggae ._beb ;switch {case _ggae ._beb >=64:_ggae =_egf ._cfd ;case _ggae ._beb >=0:return _edd ,nil ;default:return _dbfd ._ddc ,nil ;};};};};func (_dbbe *Encoder )appendEncodedRow (_bafg ,_efa []byte ,_fdea int )[]byte {if len (_bafg )> 0&&_fdea !=0&&!_dbbe .EncodedByteAlign {_bafg [len (_bafg )-1]=_bafg [len (_bafg )-1]|_efa [0];
_bafg =append (_bafg ,_efa [1:]...);}else {_bafg =append (_bafg ,_efa ...);};return _bafg ;};func (_eba *Encoder )encodeG4 (_dgf [][]byte )[]byte {_daf :=make ([][]byte ,len (_dgf ));copy (_daf ,_dgf );_daf =_dea (_daf );var _dcb []byte ;var _gea int ;
for _bca :=1;_bca < len (_daf );_bca ++{if _eba .Rows > 0&&!_eba .EndOfBlock &&_bca ==(_eba .Rows +1){break ;};var _gbg []byte ;var _ffe ,_eegg ,_bedb int ;_efca :=_gea ;_feag :=-1;for _feag < len (_daf [_bca ]){_ffe =_afc (_daf [_bca ],_feag );_eegg =_gfgf (_daf [_bca ],_daf [_bca -1],_feag );
_bedb =_afc (_daf [_bca -1],_eegg );if _bedb < _ffe {_gbg ,_efca =_bea (_gbg ,_efca ,_de );_feag =_bedb ;}else {if _b .Abs (float64 (_eegg -_ffe ))> 3{_gbg ,_efca ,_feag =_dfg (_daf [_bca ],_gbg ,_efca ,_feag ,_ffe );}else {_gbg ,_efca =_fcga (_gbg ,_efca ,_ffe ,_eegg );
_feag =_ffe ;};};};_dcb =_eba .appendEncodedRow (_dcb ,_gbg ,_gea );if _eba .EncodedByteAlign {_efca =0;};_gea =_efca %8;};if _eba .EndOfBlock {_ggd ,_ :=_caac (_gea );_dcb =_eba .appendEncodedRow (_dcb ,_ggd ,_gea );};return _dcb ;};func (_cfa *Encoder )Encode (pixels [][]byte )[]byte {if _cfa .BlackIs1 {_gcfc =0;
_cae =1;}else {_gcfc =1;_cae =0;};if _cfa .K ==0{return _cfa .encodeG31D (pixels );};if _cfa .K > 0{return _cfa .encodeG32D (pixels );};if _cfa .K < 0{return _cfa .encodeG4 (pixels );};return nil ;};func _gfgf (_gge ,_dfc []byte ,_bfa int )int {_bgaf :=_afc (_dfc ,_bfa );
if _bgaf < len (_dfc )&&(_bfa ==-1&&_dfc [_bgaf ]==_gcfc ||_bfa >=0&&_bfa < len (_gge )&&_gge [_bfa ]==_dfc [_bgaf ]||_bfa >=len (_gge )&&_gge [_bfa -1]!=_dfc [_bgaf ]){_bgaf =_afc (_dfc ,_bgaf );};return _bgaf ;};func (_eecc *treeNode )set (_cbef bool ,_ggb *treeNode ){if !_cbef {_eecc ._efcb =_ggb ;
}else {_eecc ._dac =_ggb ;};};func init (){_fe =make (map[int ]code );_fe [0]=code {Code :13<<8|3<<6,BitsWritten :10};_fe [1]=code {Code :2<<(5+8),BitsWritten :3};_fe [2]=code {Code :3<<(6+8),BitsWritten :2};_fe [3]=code {Code :2<<(6+8),BitsWritten :2};
_fe [4]=code {Code :3<<(5+8),BitsWritten :3};_fe [5]=code {Code :3<<(4+8),BitsWritten :4};_fe [6]=code {Code :2<<(4+8),BitsWritten :4};_fe [7]=code {Code :3<<(3+8),BitsWritten :5};_fe [8]=code {Code :5<<(2+8),BitsWritten :6};_fe [9]=code {Code :4<<(2+8),BitsWritten :6};
_fe [10]=code {Code :4<<(1+8),BitsWritten :7};_fe [11]=code {Code :5<<(1+8),BitsWritten :7};_fe [12]=code {Code :7<<(1+8),BitsWritten :7};_fe [13]=code {Code :4<<8,BitsWritten :8};_fe [14]=code {Code :7<<8,BitsWritten :8};_fe [15]=code {Code :12<<8,BitsWritten :9};
_fe [16]=code {Code :5<<8|3<<6,BitsWritten :10};_fe [17]=code {Code :6<<8,BitsWritten :10};_fe [18]=code {Code :2<<8,BitsWritten :10};_fe [19]=code {Code :12<<8|7<<5,BitsWritten :11};_fe [20]=code {Code :13<<8,BitsWritten :11};_fe [21]=code {Code :13<<8|4<<5,BitsWritten :11};
_fe [22]=code {Code :6<<8|7<<5,BitsWritten :11};_fe [23]=code {Code :5<<8,BitsWritten :11};_fe [24]=code {Code :2<<8|7<<5,BitsWritten :11};_fe [25]=code {Code :3<<8,BitsWritten :11};_fe [26]=code {Code :12<<8|10<<4,BitsWritten :12};_fe [27]=code {Code :12<<8|11<<4,BitsWritten :12};
_fe [28]=code {Code :12<<8|12<<4,BitsWritten :12};_fe [29]=code {Code :12<<8|13<<4,BitsWritten :12};_fe [30]=code {Code :6<<8|8<<4,BitsWritten :12};_fe [31]=code {Code :6<<8|9<<4,BitsWritten :12};_fe [32]=code {Code :6<<8|10<<4,BitsWritten :12};_fe [33]=code {Code :6<<8|11<<4,BitsWritten :12};
_fe [34]=code {Code :13<<8|2<<4,BitsWritten :12};_fe [35]=code {Code :13<<8|3<<4,BitsWritten :12};_fe [36]=code {Code :13<<8|4<<4,BitsWritten :12};_fe [37]=code {Code :13<<8|5<<4,BitsWritten :12};_fe [38]=code {Code :13<<8|6<<4,BitsWritten :12};_fe [39]=code {Code :13<<8|7<<4,BitsWritten :12};
_fe [40]=code {Code :6<<8|12<<4,BitsWritten :12};_fe [41]=code {Code :6<<8|13<<4,BitsWritten :12};_fe [42]=code {Code :13<<8|10<<4,BitsWritten :12};_fe [43]=code {Code :13<<8|11<<4,BitsWritten :12};_fe [44]=code {Code :5<<8|4<<4,BitsWritten :12};_fe [45]=code {Code :5<<8|5<<4,BitsWritten :12};
_fe [46]=code {Code :5<<8|6<<4,BitsWritten :12};_fe [47]=code {Code :5<<8|7<<4,BitsWritten :12};_fe [48]=code {Code :6<<8|4<<4,BitsWritten :12};_fe [49]=code {Code :6<<8|5<<4,BitsWritten :12};_fe [50]=code {Code :5<<8|2<<4,BitsWritten :12};_fe [51]=code {Code :5<<8|3<<4,BitsWritten :12};
_fe [52]=code {Code :2<<8|4<<4,BitsWritten :12};_fe [53]=code {Code :3<<8|7<<4,BitsWritten :12};_fe [54]=code {Code :3<<8|8<<4,BitsWritten :12};_fe [55]=code {Code :2<<8|7<<4,BitsWritten :12};_fe [56]=code {Code :2<<8|8<<4,BitsWritten :12};_fe [57]=code {Code :5<<8|8<<4,BitsWritten :12};
_fe [58]=code {Code :5<<8|9<<4,BitsWritten :12};_fe [59]=code {Code :2<<8|11<<4,BitsWritten :12};_fe [60]=code {Code :2<<8|12<<4,BitsWritten :12};_fe [61]=code {Code :5<<8|10<<4,BitsWritten :12};_fe [62]=code {Code :6<<8|6<<4,BitsWritten :12};_fe [63]=code {Code :6<<8|7<<4,BitsWritten :12};
_db =make (map[int ]code );_db [0]=code {Code :53<<8,BitsWritten :8};_db [1]=code {Code :7<<(2+8),BitsWritten :6};_db [2]=code {Code :7<<(4+8),BitsWritten :4};_db [3]=code {Code :8<<(4+8),BitsWritten :4};_db [4]=code {Code :11<<(4+8),BitsWritten :4};_db [5]=code {Code :12<<(4+8),BitsWritten :4};
_db [6]=code {Code :14<<(4+8),BitsWritten :4};_db [7]=code {Code :15<<(4+8),BitsWritten :4};_db [8]=code {Code :19<<(3+8),BitsWritten :5};_db [9]=code {Code :20<<(3+8),BitsWritten :5};_db [10]=code {Code :7<<(3+8),BitsWritten :5};_db [11]=code {Code :8<<(3+8),BitsWritten :5};
_db [12]=code {Code :8<<(2+8),BitsWritten :6};_db [13]=code {Code :3<<(2+8),BitsWritten :6};_db [14]=code {Code :52<<(2+8),BitsWritten :6};_db [15]=code {Code :53<<(2+8),BitsWritten :6};_db [16]=code {Code :42<<(2+8),BitsWritten :6};_db [17]=code {Code :43<<(2+8),BitsWritten :6};
_db [18]=code {Code :39<<(1+8),BitsWritten :7};_db [19]=code {Code :12<<(1+8),BitsWritten :7};_db [20]=code {Code :8<<(1+8),BitsWritten :7};_db [21]=code {Code :23<<(1+8),BitsWritten :7};_db [22]=code {Code :3<<(1+8),BitsWritten :7};_db [23]=code {Code :4<<(1+8),BitsWritten :7};
_db [24]=code {Code :40<<(1+8),BitsWritten :7};_db [25]=code {Code :43<<(1+8),BitsWritten :7};_db [26]=code {Code :19<<(1+8),BitsWritten :7};_db [27]=code {Code :36<<(1+8),BitsWritten :7};_db [28]=code {Code :24<<(1+8),BitsWritten :7};_db [29]=code {Code :2<<8,BitsWritten :8};
_db [30]=code {Code :3<<8,BitsWritten :8};_db [31]=code {Code :26<<8,BitsWritten :8};_db [32]=code {Code :27<<8,BitsWritten :8};_db [33]=code {Code :18<<8,BitsWritten :8};_db [34]=code {Code :19<<8,BitsWritten :8};_db [35]=code {Code :20<<8,BitsWritten :8};
_db [36]=code {Code :21<<8,BitsWritten :8};_db [37]=code {Code :22<<8,BitsWritten :8};_db [38]=code {Code :23<<8,BitsWritten :8};_db [39]=code {Code :40<<8,BitsWritten :8};_db [40]=code {Code :41<<8,BitsWritten :8};_db [41]=code {Code :42<<8,BitsWritten :8};
_db [42]=code {Code :43<<8,BitsWritten :8};_db [43]=code {Code :44<<8,BitsWritten :8};_db [44]=code {Code :45<<8,BitsWritten :8};_db [45]=code {Code :4<<8,BitsWritten :8};_db [46]=code {Code :5<<8,BitsWritten :8};_db [47]=code {Code :10<<8,BitsWritten :8};
_db [48]=code {Code :11<<8,BitsWritten :8};_db [49]=code {Code :82<<8,BitsWritten :8};_db [50]=code {Code :83<<8,BitsWritten :8};_db [51]=code {Code :84<<8,BitsWritten :8};_db [52]=code {Code :85<<8,BitsWritten :8};_db [53]=code {Code :36<<8,BitsWritten :8};
_db [54]=code {Code :37<<8,BitsWritten :8};_db [55]=code {Code :88<<8,BitsWritten :8};_db [56]=code {Code :89<<8,BitsWritten :8};_db [57]=code {Code :90<<8,BitsWritten :8};_db [58]=code {Code :91<<8,BitsWritten :8};_db [59]=code {Code :74<<8,BitsWritten :8};
_db [60]=code {Code :75<<8,BitsWritten :8};_db [61]=code {Code :50<<8,BitsWritten :8};_db [62]=code {Code :51<<8,BitsWritten :8};_db [63]=code {Code :52<<8,BitsWritten :8};_fab =make (map[int ]code );_fab [64]=code {Code :3<<8|3<<6,BitsWritten :10};_fab [128]=code {Code :12<<8|8<<4,BitsWritten :12};
_fab [192]=code {Code :12<<8|9<<4,BitsWritten :12};_fab [256]=code {Code :5<<8|11<<4,BitsWritten :12};_fab [320]=code {Code :3<<8|3<<4,BitsWritten :12};_fab [384]=code {Code :3<<8|4<<4,BitsWritten :12};_fab [448]=code {Code :3<<8|5<<4,BitsWritten :12};
_fab [512]=code {Code :3<<8|12<<3,BitsWritten :13};_fab [576]=code {Code :3<<8|13<<3,BitsWritten :13};_fab [640]=code {Code :2<<8|10<<3,BitsWritten :13};_fab [704]=code {Code :2<<8|11<<3,BitsWritten :13};_fab [768]=code {Code :2<<8|12<<3,BitsWritten :13};
_fab [832]=code {Code :2<<8|13<<3,BitsWritten :13};_fab [896]=code {Code :3<<8|18<<3,BitsWritten :13};_fab [960]=code {Code :3<<8|19<<3,BitsWritten :13};_fab [1024]=code {Code :3<<8|20<<3,BitsWritten :13};_fab [1088]=code {Code :3<<8|21<<3,BitsWritten :13};
_fab [1152]=code {Code :3<<8|22<<3,BitsWritten :13};_fab [1216]=code {Code :119<<3,BitsWritten :13};_fab [1280]=code {Code :2<<8|18<<3,BitsWritten :13};_fab [1344]=code {Code :2<<8|19<<3,BitsWritten :13};_fab [1408]=code {Code :2<<8|20<<3,BitsWritten :13};
_fab [1472]=code {Code :2<<8|21<<3,BitsWritten :13};_fab [1536]=code {Code :2<<8|26<<3,BitsWritten :13};_fab [1600]=code {Code :2<<8|27<<3,BitsWritten :13};_fab [1664]=code {Code :3<<8|4<<3,BitsWritten :13};_fab [1728]=code {Code :3<<8|5<<3,BitsWritten :13};
_ed =make (map[int ]code );_ed [64]=code {Code :27<<(3+8),BitsWritten :5};_ed [128]=code {Code :18<<(3+8),BitsWritten :5};_ed [192]=code {Code :23<<(2+8),BitsWritten :6};_ed [256]=code {Code :55<<(1+8),BitsWritten :7};_ed [320]=code {Code :54<<8,BitsWritten :8};
_ed [384]=code {Code :55<<8,BitsWritten :8};_ed [448]=code {Code :100<<8,BitsWritten :8};_ed [512]=code {Code :101<<8,BitsWritten :8};_ed [576]=code {Code :104<<8,BitsWritten :8};_ed [640]=code {Code :103<<8,BitsWritten :8};_ed [704]=code {Code :102<<8,BitsWritten :9};
_ed [768]=code {Code :102<<8|1<<7,BitsWritten :9};_ed [832]=code {Code :105<<8,BitsWritten :9};_ed [896]=code {Code :105<<8|1<<7,BitsWritten :9};_ed [960]=code {Code :106<<8,BitsWritten :9};_ed [1024]=code {Code :106<<8|1<<7,BitsWritten :9};_ed [1088]=code {Code :107<<8,BitsWritten :9};
_ed [1152]=code {Code :107<<8|1<<7,BitsWritten :9};_ed [1216]=code {Code :108<<8,BitsWritten :9};_ed [1280]=code {Code :108<<8|1<<7,BitsWritten :9};_ed [1344]=code {Code :109<<8,BitsWritten :9};_ed [1408]=code {Code :109<<8|1<<7,BitsWritten :9};_ed [1472]=code {Code :76<<8,BitsWritten :9};
_ed [1536]=code {Code :76<<8|1<<7,BitsWritten :9};_ed [1600]=code {Code :77<<8,BitsWritten :9};_ed [1664]=code {Code :24<<(2+8),BitsWritten :6};_ed [1728]=code {Code :77<<8|1<<7,BitsWritten :9};_dgb =make (map[int ]code );_dgb [1792]=code {Code :1<<8,BitsWritten :11};
_dgb [1856]=code {Code :1<<8|4<<5,BitsWritten :11};_dgb [1920]=code {Code :1<<8|5<<5,BitsWritten :11};_dgb [1984]=code {Code :1<<8|2<<4,BitsWritten :12};_dgb [2048]=code {Code :1<<8|3<<4,BitsWritten :12};_dgb [2112]=code {Code :1<<8|4<<4,BitsWritten :12};
_dgb [2176]=code {Code :1<<8|5<<4,BitsWritten :12};_dgb [2240]=code {Code :1<<8|6<<4,BitsWritten :12};_dgb [2304]=code {Code :1<<8|7<<4,BitsWritten :12};_dgb [2368]=code {Code :1<<8|12<<4,BitsWritten :12};_dgb [2432]=code {Code :1<<8|13<<4,BitsWritten :12};
_dgb [2496]=code {Code :1<<8|14<<4,BitsWritten :12};_dgb [2560]=code {Code :1<<8|15<<4,BitsWritten :12};_gb =make (map[int ]byte );_gb [0]=0xFF;_gb [1]=0xFE;_gb [2]=0xFC;_gb [3]=0xF8;_gb [4]=0xF0;_gb [5]=0xE0;_gb [6]=0xC0;_gb [7]=0x80;_gb [8]=0x00;};type Decoder struct{_ddc int ;
_ef int ;_fc int ;_ebf []byte ;_edb int ;_gd bool ;_faf bool ;_feg bool ;_adf bool ;_cb bool ;_gg bool ;_cff bool ;_ee int ;_bac int ;_ebd []int ;_bg []int ;_dbc int ;_eaf int ;_gcc int ;_eef int ;_ddg *_d .Reader ;_bff tiffType ;_ceg error ;};func (_eegd *Decoder )decodeRowType6 ()error {if _eegd ._cff {_eegd ._ddg .Align ();
};if _eegd ._gg {_eegd ._ddg .Mark ();_fgd ,_cbg :=_eegd .tryFetchEOL ();if _cbg !=nil {return _cbg ;};if _fgd {_fgd ,_cbg =_eegd .tryFetchEOL ();if _cbg !=nil {return _cbg ;};if _fgd {return _g .EOF ;};};_eegd ._ddg .Reset ();};return _eegd .decode2D ();
};func (_afbd *Decoder )tryFetchRTC2D ()(_cgd error ){_afbd ._ddg .Mark ();var _effd bool ;for _bfd :=0;_bfd < 5;_bfd ++{_effd ,_cgd =_afbd .tryFetchEOL1 ();if _cgd !=nil {if _e .Is (_cgd ,_g .EOF ){if _bfd ==0{break ;};return _fg ;};};if _effd {continue ;
};if _bfd > 0{return _fg ;};break ;};if _effd {return _g .EOF ;};_afbd ._ddg .Reset ();return _cgd ;};func _bea (_bgb []byte ,_agb int ,_ebff code )([]byte ,int ){_dfb :=0;for _dfb < _ebff .BitsWritten {_cdd :=_agb /8;_abge :=_agb %8;if _cdd >=len (_bgb ){_bgb =append (_bgb ,0);
};_cbbb :=8-_abge ;_eede :=_ebff .BitsWritten -_dfb ;if _cbbb > _eede {_cbbb =_eede ;};if _dfb < 8{_bgb [_cdd ]=_bgb [_cdd ]|byte (_ebff .Code >>uint (8+_abge -_dfb ))&_gb [8-_cbbb -_abge ];}else {_bgb [_cdd ]=_bgb [_cdd ]|(byte (_ebff .Code <<uint (_dfb -8))&_gb [8-_cbbb ])>>uint (_abge );
};_agb +=_cbbb ;_dfb +=_cbbb ;};return _bgb ,_agb ;};func (_efg *Decoder )decoderRowType41D ()error {if _efg ._cff {_efg ._ddg .Align ();};_efg ._ddg .Mark ();var (_cce bool ;_gee error ;);if _efg ._cb {_cce ,_gee =_efg .tryFetchEOL ();if _gee !=nil {return _gee ;
};if !_cce {return _agg ;};}else {_cce ,_gee =_efg .looseFetchEOL ();if _gee !=nil {return _gee ;};};if !_cce {_efg ._ddg .Reset ();};if _cce &&_efg ._gg {_efg ._ddg .Mark ();for _fafc :=0;_fafc < 5;_fafc ++{_cce ,_gee =_efg .tryFetchEOL ();if _gee !=nil {if _e .Is (_gee ,_g .EOF ){if _fafc ==0{break ;
};return _fg ;};};if _cce {continue ;};if _fafc > 0{return _fg ;};break ;};if _cce {return _g .EOF ;};_efg ._ddg .Reset ();};if _gee =_efg .decode1D ();_gee !=nil {return _gee ;};return nil ;};func (_eec *Decoder )tryFetchEOL1 ()(bool ,error ){_fea ,_ddgg :=_eec ._ddg .ReadBits (13);
if _ddgg !=nil {return false ,_ddgg ;};return _fea ==0x3,nil ;};func NewDecoder (data []byte ,options DecodeOptions )(*Decoder ,error ){_acc :=&Decoder {_ddg :_d .NewReader (data ),_ddc :options .Columns ,_ef :options .Rows ,_edb :options .DamagedRowsBeforeError ,_ebf :make ([]byte ,(options .Columns +7)/8),_ebd :make ([]int ,options .Columns +2),_bg :make ([]int ,options .Columns +2),_cff :options .EncodedByteAligned ,_adf :options .BlackIsOne ,_cb :options .EndOfLine ,_gg :options .EndOfBlock };
switch {case options .K ==0:_acc ._bff =_gf ;if len (data )< 20{return nil ,_e .New ("\u0074o\u006f\u0020\u0073\u0068o\u0072\u0074\u0020\u0063\u0063i\u0074t\u0066a\u0078\u0020\u0073\u0074\u0072\u0065\u0061m");};_caf :=data [:20];if _caf [0]!=0||(_caf [1]>>4!=1&&_caf [1]!=1){_acc ._bff =_bc ;
_ddf :=(uint16 (_caf [0])<<8+uint16 (_caf [1]&0xff))>>4;for _bgd :=12;_bgd < 160;_bgd ++{_ddf =(_ddf <<1)+uint16 ((_caf [_bgd /8]>>uint16 (7-(_bgd %8)))&0x01);if _ddf &0xfff==1{_acc ._bff =_gf ;break ;};};};case options .K < 0:_acc ._bff =_ecc ;case options .K > 0:_acc ._bff =_gf ;
_acc ._gd =true ;};switch _acc ._bff {case _bc ,_gf ,_ecc :default:return nil ,_e .New ("\u0075\u006ek\u006e\u006f\u0077\u006e\u0020\u0063\u0063\u0069\u0074\u0074\u0066\u0061\u0078\u002e\u0044\u0065\u0063\u006f\u0064\u0065\u0072\u0020ty\u0070\u0065");};
return _acc ,nil ;};func (_dcc tiffType )String ()string {switch _dcc {case _bc :return "\u0074\u0069\u0066\u0066\u0054\u0079\u0070\u0065\u004d\u006f\u0064i\u0066\u0069\u0065\u0064\u0048\u0075\u0066\u0066\u006d\u0061n\u0052\u006c\u0065";case _gf :return "\u0074\u0069\u0066\u0066\u0054\u0079\u0070\u0065\u0054\u0034";
case _ecc :return "\u0074\u0069\u0066\u0066\u0054\u0079\u0070\u0065\u0054\u0036";default:return "\u0075n\u0064\u0065\u0066\u0069\u006e\u0065d";};};type Encoder struct{K int ;EndOfLine bool ;EncodedByteAlign bool ;Columns int ;Rows int ;EndOfBlock bool ;
BlackIs1 bool ;DamagedRowsBeforeError int ;};var _fbg =[...][]uint16 {{3,2},{1,4},{6,5},{7},{9,8},{10,11,12},{13,14},{15},{16,17,0,18,64},{24,25,23,22,19,20,21,1792,1856,1920},{1984,2048,2112,2176,2240,2304,2368,2432,2496,2560,52,55,56,59,60,320,384,448,53,54,50,51,44,45,46,47,57,58,61,256,48,49,62,63,30,31,32,33,40,41,128,192,26,27,28,29,34,35,36,37,38,39,42,43},{640,704,768,832,1280,1344,1408,1472,1536,1600,1664,1728,512,576,896,960,1024,1088,1152,1216}};
func (_fde *Decoder )tryFetchEOL ()(bool ,error ){_ddff ,_aeg :=_fde ._ddg .ReadBits (12);if _aeg !=nil {return false ,_aeg ;};return _ddff ==0x1,nil ;};func (_dbbb *treeNode )walk (_acec bool )*treeNode {if _acec {return _dbbb ._dac ;};return _dbbb ._efcb ;
};func _afc (_cde []byte ,_bba int )int {if _bba >=len (_cde ){return _bba ;};if _bba < -1{_bba =-1;};var _adb byte ;if _bba > -1{_adb =_cde [_bba ];}else {_adb =_gcfc ;};_bbaa :=_bba +1;for _bbaa < len (_cde ){if _cde [_bbaa ]!=_adb {break ;};_bbaa ++;
};return _bbaa ;};func _dfg (_bffe ,_dcfc []byte ,_ddde ,_daa ,_cgdf int )([]byte ,int ,int ){_fgaa :=_afc (_bffe ,_cgdf );_dgfc :=_daa >=0&&_bffe [_daa ]==_gcfc ||_daa ==-1;_dcfc ,_ddde =_bea (_dcfc ,_ddde ,_abg );var _cgf int ;if _daa > -1{_cgf =_cgdf -_daa ;
}else {_cgf =_cgdf -_daa -1;};_dcfc ,_ddde =_dec (_dcfc ,_ddde ,_cgf ,_dgfc );_dgfc =!_dgfc ;_cba :=_fgaa -_cgdf ;_dcfc ,_ddde =_dec (_dcfc ,_ddde ,_cba ,_dgfc );_daa =_fgaa ;return _dcfc ,_ddde ,_daa ;};var (_c *treeNode ;_dc *treeNode ;_cf *tree ;_ba *tree ;
_a *tree ;_cg *tree ;_fa =-2000;_ca =-1000;_eb =-3000;_df =-4000;);const (_ tiffType =iota ;_bc ;_gf ;_ecc ;);func _dea (_cac [][]byte )[][]byte {_gfc :=make ([]byte ,len (_cac [0]));for _adfg :=range _gfc {_gfc [_adfg ]=_gcfc ;};_cac =append (_cac ,[]byte {});
for _gde :=len (_cac )-1;_gde > 0;_gde --{_cac [_gde ]=_cac [_gde -1];};_cac [0]=_gfc ;return _cac ;};func (_bbe *Encoder )encodeG32D (_aae [][]byte )[]byte {var _gcaf []byte ;var _dbd int ;for _dgg :=0;_dgg < len (_aae );_dgg +=_bbe .K {if _bbe .Rows > 0&&!_bbe .EndOfBlock &&_dgg ==_bbe .Rows {break ;
};_cec ,_ggf :=_bga (_aae [_dgg ],_dbd ,_dba );_gcaf =_bbe .appendEncodedRow (_gcaf ,_cec ,_dbd );if _bbe .EncodedByteAlign {_ggf =0;};_dbd =_ggf ;for _fcge :=_dgg +1;_fcge < (_dgg +_bbe .K )&&_fcge < len (_aae );_fcge ++{if _bbe .Rows > 0&&!_bbe .EndOfBlock &&_fcge ==_bbe .Rows {break ;
};_bbg ,_cge :=_bea (nil ,_dbd ,_gcf );var _dbae ,_gbf ,_afac int ;_gdac :=-1;for _gdac < len (_aae [_fcge ]){_dbae =_afc (_aae [_fcge ],_gdac );_gbf =_gfgf (_aae [_fcge ],_aae [_fcge -1],_gdac );_afac =_afc (_aae [_fcge -1],_gbf );if _afac < _dbae {_bbg ,_cge =_ffcd (_bbg ,_cge );
_gdac =_afac ;}else {if _b .Abs (float64 (_gbf -_dbae ))> 3{_bbg ,_cge ,_gdac =_dfg (_aae [_fcge ],_bbg ,_cge ,_gdac ,_dbae );}else {_bbg ,_cge =_fcga (_bbg ,_cge ,_dbae ,_gbf );_gdac =_dbae ;};};};_gcaf =_bbe .appendEncodedRow (_gcaf ,_bbg ,_dbd );if _bbe .EncodedByteAlign {_cge =0;
};_dbd =_cge %8;};};if _bbe .EndOfBlock {_cedd ,_ :=_eca (_dbd );_gcaf =_bbe .appendEncodedRow (_gcaf ,_cedd ,_dbd );};return _gcaf ;};func (_fef *Decoder )getNextChangingElement (_bed int ,_cbb bool )int {_ecg :=0;if !_cbb {_ecg =1;};_fbd :=int (uint32 (_fef ._eef )&0xFFFFFFFE)+_ecg ;
if _fbd > 2{_fbd -=2;};if _bed ==0{return _fbd ;};for _dgd :=_fbd ;_dgd < _fef ._dbc ;_dgd +=2{if _bed < _fef ._ebd [_dgd ]{_fef ._eef =_dgd ;return _dgd ;};};return -1;};func _eca (_cegb int )([]byte ,int ){var _faeg []byte ;for _dbb :=0;_dbb < 6;_dbb ++{_faeg ,_cegb =_bea (_faeg ,_cegb ,_dba );
};return _faeg ,_cegb %8;};var _bdg =[...][]uint16 {{0x7,0x8,0xb,0xc,0xe,0xf},{0x12,0x13,0x14,0x1b,0x7,0x8},{0x17,0x18,0x2a,0x2b,0x3,0x34,0x35,0x7,0x8},{0x13,0x17,0x18,0x24,0x27,0x28,0x2b,0x3,0x37,0x4,0x8,0xc},{0x12,0x13,0x14,0x15,0x16,0x17,0x1a,0x1b,0x2,0x24,0x25,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x3,0x32,0x33,0x34,0x35,0x36,0x37,0x4,0x4a,0x4b,0x5,0x52,0x53,0x54,0x55,0x58,0x59,0x5a,0x5b,0x64,0x65,0x67,0x68,0xa,0xb},{0x98,0x99,0x9a,0x9b,0xcc,0xcd,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb},{},{0x8,0xc,0xd},{0x12,0x13,0x14,0x15,0x16,0x17,0x1c,0x1d,0x1e,0x1f}};
type tree struct{_cfd *treeNode };func (_cbf *tree )fill (_egg ,_aee ,_eab int )error {_cbae :=_cbf ._cfd ;for _gba :=0;_gba < _egg ;_gba ++{_bbda :=_egg -1-_gba ;_cacg :=((_aee >>uint (_bbda ))&1)!=0;_aed :=_cbae .walk (_cacg );if _aed !=nil {if _aed ._fefg {return _e .New ("\u006e\u006f\u0064\u0065\u0020\u0069\u0073\u0020\u006c\u0065\u0061\u0066\u002c\u0020\u006eo\u0020o\u0074\u0068\u0065\u0072\u0020\u0066\u006f\u006c\u006c\u006f\u0077\u0069\u006e\u0067");
};_cbae =_aed ;continue ;};_aed =&treeNode {};if _gba ==_egg -1{_aed ._beb =_eab ;_aed ._fefg =true ;};if _aee ==0{_aed ._agd =true ;};_cbae .set (_cacg ,_aed );_cbae =_aed ;};return nil ;};func (_fce *Encoder )encodeG31D (_cffe [][]byte )[]byte {var _eag []byte ;
_afa :=0;for _abfe :=range _cffe {if _fce .Rows > 0&&!_fce .EndOfBlock &&_abfe ==_fce .Rows {break ;};_ace ,_cbec :=_bga (_cffe [_abfe ],_afa ,_aa );_eag =_fce .appendEncodedRow (_eag ,_ace ,_afa );if _fce .EncodedByteAlign {_cbec =0;};_afa =_cbec ;};if _fce .EndOfBlock {_cege ,_ :=_abfd (_afa );
_eag =_fce .appendEncodedRow (_eag ,_cege ,_afa );};return _eag ;};func (_gca *Decoder )decodeG32D ()error {_gca ._dbc =_gca ._eaf ;_gca ._bg ,_gca ._ebd =_gca ._ebd ,_gca ._bg ;_fec :=true ;var (_dcf bool ;_ded int ;_ffc error ;);_gca ._eaf =0;_bgc :for _ded < _gca ._ddc {_baf :=_cg ._cfd ;
for {_dcf ,_ffc =_gca ._ddg .ReadBool ();if _ffc !=nil {return _ffc ;};_baf =_baf .walk (_dcf );if _baf ==nil {continue _bgc ;};if !_baf ._fefg {continue ;};switch _baf ._beb {case _df :var _acb int ;if _fec {_acb ,_ffc =_gca .decodeRun (_ba );}else {_acb ,_ffc =_gca .decodeRun (_cf );
};if _ffc !=nil {return _ffc ;};_ded +=_acb ;_gca ._bg [_gca ._eaf ]=_ded ;_gca ._eaf ++;if _fec {_acb ,_ffc =_gca .decodeRun (_cf );}else {_acb ,_ffc =_gca .decodeRun (_ba );};if _ffc !=nil {return _ffc ;};_ded +=_acb ;_gca ._bg [_gca ._eaf ]=_ded ;_gca ._eaf ++;
case _eb :_fd :=_gca .getNextChangingElement (_ded ,_fec )+1;if _fd >=_gca ._dbc {_ded =_gca ._ddc ;}else {_ded =_gca ._ebd [_fd ];};default:_dbf :=_gca .getNextChangingElement (_ded ,_fec );if _dbf >=_gca ._dbc ||_dbf ==-1{_ded =_gca ._ddc +_baf ._beb ;
}else {_ded =_gca ._ebd [_dbf ]+_baf ._beb ;};_gca ._bg [_gca ._eaf ]=_ded ;_gca ._eaf ++;_fec =!_fec ;};continue _bgc ;};};return nil ;};func _bgg (_dge ,_efba []byte ,_begb int ,_bec bool )int {_ffda :=_afc (_efba ,_begb );if _ffda < len (_efba )&&(_begb ==-1&&_efba [_ffda ]==_gcfc ||_begb >=0&&_begb < len (_dge )&&_dge [_begb ]==_efba [_ffda ]||_begb >=len (_dge )&&_bec &&_efba [_ffda ]==_gcfc ||_begb >=len (_dge )&&!_bec &&_efba [_ffda ]==_cae ){_ffda =_afc (_efba ,_ffda );
};return _ffda ;};var _ge =[...][]uint16 {{2,3,4,5,6,7},{128,8,9,64,10,11},{192,1664,16,17,13,14,15,1,12},{26,21,28,27,18,24,25,22,256,23,20,19},{33,34,35,36,37,38,31,32,29,53,54,39,40,41,42,43,44,30,61,62,63,0,320,384,45,59,60,46,49,50,51,52,55,56,57,58,448,512,640,576,47,48},{1472,1536,1600,1728,704,768,832,896,960,1024,1088,1152,1216,1280,1344,1408},{},{1792,1856,1920},{1984,2048,2112,2176,2240,2304,2368,2432,2496,2560}};
func _aaef (_bfdd []byte ,_gdaf bool ,_fegd int )(int ,int ){_bfcc :=0;for _fegd < len (_bfdd ){if _gdaf {if _bfdd [_fegd ]!=_gcfc {break ;};}else {if _bfdd [_fegd ]!=_cae {break ;};};_bfcc ++;_fegd ++;};return _bfcc ,_fegd ;};var (_gcfc byte =1;_cae byte =0;
);func (_aeb *Decoder )decode2D ()error {_aeb ._dbc =_aeb ._eaf ;_aeb ._bg ,_aeb ._ebd =_aeb ._ebd ,_aeb ._bg ;_bfc :=true ;var (_gdc bool ;_ceag int ;_abgb error ;);_aeb ._eaf =0;_adfe :for _ceag < _aeb ._ddc {_fafb :=_cg ._cfd ;for {_gdc ,_abgb =_aeb ._ddg .ReadBool ();
if _abgb !=nil {return _abgb ;};_fafb =_fafb .walk (_gdc );if _fafb ==nil {continue _adfe ;};if !_fafb ._fefg {continue ;};switch _fafb ._beb {case _df :var _aggd int ;if _bfc {_aggd ,_abgb =_aeb .decodeRun (_ba );}else {_aggd ,_abgb =_aeb .decodeRun (_cf );
};if _abgb !=nil {return _abgb ;};_ceag +=_aggd ;_aeb ._bg [_aeb ._eaf ]=_ceag ;_aeb ._eaf ++;if _bfc {_aggd ,_abgb =_aeb .decodeRun (_cf );}else {_aggd ,_abgb =_aeb .decodeRun (_ba );};if _abgb !=nil {return _abgb ;};_ceag +=_aggd ;_aeb ._bg [_aeb ._eaf ]=_ceag ;
_aeb ._eaf ++;case _eb :_cgb :=_aeb .getNextChangingElement (_ceag ,_bfc )+1;if _cgb >=_aeb ._dbc {_ceag =_aeb ._ddc ;}else {_ceag =_aeb ._ebd [_cgb ];};default:_edfd :=_aeb .getNextChangingElement (_ceag ,_bfc );if _edfd >=_aeb ._dbc ||_edfd ==-1{_ceag =_aeb ._ddc +_fafb ._beb ;
}else {_ceag =_aeb ._ebd [_edfd ]+_fafb ._beb ;};_aeb ._bg [_aeb ._eaf ]=_ceag ;_aeb ._eaf ++;_bfc =!_bfc ;};continue _adfe ;};};return nil ;};func _bga (_add []byte ,_fff int ,_eed code )([]byte ,int ){_fgc :=true ;var _fbbb []byte ;_fbbb ,_fff =_bea (nil ,_fff ,_eed );
_beg :=0;var _gfg int ;for _beg < len (_add ){_gfg ,_beg =_aaef (_add ,_fgc ,_beg );_fbbb ,_fff =_dec (_fbbb ,_fff ,_gfg ,_fgc );_fgc =!_fgc ;};return _fbbb ,_fff %8;};func _dec (_fdb []byte ,_efbf int ,_fad int ,_ece bool )([]byte ,int ){var (_ggg code ;
_adc bool ;);for !_adc {_ggg ,_fad ,_adc =_affc (_fad ,_ece );_fdb ,_efbf =_bea (_fdb ,_efbf ,_ggg );};return _fdb ,_efbf ;};func (_fcg *Decoder )looseFetchEOL ()(bool ,error ){_efcg ,_eff :=_fcg ._ddg .ReadBits (12);if _eff !=nil {return false ,_eff ;
};switch _efcg {case 0x1:return true ,nil ;case 0x0:for {_gad ,_gda :=_fcg ._ddg .ReadBool ();if _gda !=nil {return false ,_gda ;};if _gad {return true ,nil ;};};default:return false ,nil ;};};func (_gfb *Decoder )decodeRowType4 ()error {if !_gfb ._gd {return _gfb .decoderRowType41D ();
};if _gfb ._cff {_gfb ._ddg .Align ();};_gfb ._ddg .Mark ();_cbe ,_aga :=_gfb .tryFetchEOL ();if _aga !=nil {return _aga ;};if !_cbe &&_gfb ._cb {_gfb ._gcc ++;if _gfb ._gcc > _gfb ._edb {return _agg ;};_gfb ._ddg .Reset ();};if !_cbe {_gfb ._ddg .Reset ();
};_aaa ,_aga :=_gfb ._ddg .ReadBool ();if _aga !=nil {return _aga ;};if _aaa {if _cbe &&_gfb ._gg {if _aga =_gfb .tryFetchRTC2D ();_aga !=nil {return _aga ;};};_aga =_gfb .decode1D ();}else {_aga =_gfb .decode2D ();};if _aga !=nil {return _aga ;};return nil ;
};func _caac (_dce int )([]byte ,int ){var _cgdc []byte ;for _ccg :=0;_ccg < 2;_ccg ++{_cgdc ,_dce =_bea (_cgdc ,_dce ,_aa );};return _cgdc ,_dce %8;};func _fcga (_fdbd []byte ,_cfc ,_aebd ,_deb int )([]byte ,int ){_gdf :=_fdec (_aebd ,_deb );_fdbd ,_cfc =_bea (_fdbd ,_cfc ,_gdf );
return _fdbd ,_cfc ;};type tiffType int ;type treeNode struct{_efcb *treeNode ;_dac *treeNode ;_beb int ;_agd bool ;_fefg bool ;};func (_cea *Decoder )fetch ()error {if _cea ._ee ==-1{return nil ;};if _cea ._bac < _cea ._ee {return nil ;};_cea ._ee =0;
_ecb :=_cea .decodeRow ();if _ecb !=nil {if !_e .Is (_ecb ,_g .EOF ){return _ecb ;};if _cea ._ee !=0{return _ecb ;};_cea ._ee =-1;};_cea ._bac =0;return nil ;};var (_fg =_e .New ("\u0063\u0063\u0069\u0074tf\u0061\u0078\u0020\u0063\u006f\u0072\u0072\u0075\u0070\u0074\u0065\u0064\u0020\u0052T\u0043");
_agg =_e .New ("\u0063\u0063\u0069\u0074tf\u0061\u0078\u0020\u0045\u004f\u004c\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075n\u0064"););func (_fga *Decoder )Read (in []byte )(int ,error ){if _fga ._ceg !=nil {return 0,_fga ._ceg ;};_efb :=len (in );var (_gga int ;
_eg int ;);for _efb !=0{if _fga ._bac >=_fga ._ee {if _geg :=_fga .fetch ();_geg !=nil {_fga ._ceg =_geg ;return 0,_geg ;};};if _fga ._ee ==-1{return _gga ,_g .EOF ;};switch {case _efb <=_fga ._ee -_fga ._bac :_bbd :=_fga ._ebf [_fga ._bac :_fga ._bac +_efb ];
for _ ,_abf :=range _bbd {if !_fga ._adf {_abf =^_abf ;};in [_eg ]=_abf ;_eg ++;};_gga +=len (_bbd );_fga ._bac +=len (_bbd );return _gga ,nil ;default:_efc :=_fga ._ebf [_fga ._bac :];for _ ,_abab :=range _efc {if !_fga ._adf {_abab =^_abab ;};in [_eg ]=_abab ;
_eg ++;};_gga +=len (_efc );_fga ._bac +=len (_efc );_efb -=len (_efc );};};return _gga ,nil ;};func _fdec (_eccf ,_dgfb int )code {var _abb code ;switch _dgfb -_eccf {case -1:_abb =_fbb ;case -2:_abb =_ad ;case -3:_abb =_fed ;case 0:_abb =_afb ;case 1:_abb =_ebg ;
case 2:_abb =_bdf ;case 3:_abb =_dd ;};return _abb ;};var _dg =[...][]uint16 {{0x2,0x3},{0x2,0x3},{0x2,0x3},{0x3},{0x4,0x5},{0x4,0x5,0x7},{0x4,0x7},{0x18},{0x17,0x18,0x37,0x8,0xf},{0x17,0x18,0x28,0x37,0x67,0x68,0x6c,0x8,0xc,0xd},{0x12,0x13,0x14,0x15,0x16,0x17,0x1c,0x1d,0x1e,0x1f,0x24,0x27,0x28,0x2b,0x2c,0x33,0x34,0x35,0x37,0x38,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xda,0xdb},{0x4a,0x4b,0x4c,0x4d,0x52,0x53,0x54,0x55,0x5a,0x5b,0x64,0x65,0x6c,0x6d,0x72,0x73,0x74,0x75,0x76,0x77}};
type DecodeOptions struct{Columns int ;Rows int ;K int ;EncodedByteAligned bool ;BlackIsOne bool ;EndOfBlock bool ;EndOfLine bool ;DamagedRowsBeforeError int ;};func _ffcd (_fbf []byte ,_gfd int )([]byte ,int ){return _bea (_fbf ,_gfd ,_de )};func (_gbb *Decoder )decodeRowType2 ()error {if _gbb ._cff {_gbb ._ddg .Align ();
};if _gcd :=_gbb .decode1D ();_gcd !=nil {return _gcd ;};return nil ;};func _abfd (_gdab int )([]byte ,int ){var _eaa []byte ;for _fecg :=0;_fecg < 6;_fecg ++{_eaa ,_gdab =_bea (_eaa ,_gdab ,_aa );};return _eaa ,_gdab %8;};func (_caa *Decoder )decode1D ()error {var (_fafe int ;
_dbcc error ;);_fdd :=true ;_caa ._eaf =0;for {var _ddd int ;if _fdd {_ddd ,_dbcc =_caa .decodeRun (_ba );}else {_ddd ,_dbcc =_caa .decodeRun (_cf );};if _dbcc !=nil {return _dbcc ;};_fafe +=_ddd ;_caa ._bg [_caa ._eaf ]=_fafe ;_caa ._eaf ++;_fdd =!_fdd ;
if _fafe >=_caa ._ddc {break ;};};return nil ;};type code struct{Code uint16 ;BitsWritten int ;};func (_bafb *tree )fillWithNode (_eaba ,_cad int ,_ebfg *treeNode )error {_gaf :=_bafb ._cfd ;for _caag :=0;_caag < _eaba ;_caag ++{_cgfd :=uint (_eaba -1-_caag );
_dbdc :=((_cad >>_cgfd )&1)!=0;_cfae :=_gaf .walk (_dbdc );if _cfae !=nil {if _cfae ._fefg {return _e .New ("\u006e\u006f\u0064\u0065\u0020\u0069\u0073\u0020\u006c\u0065\u0061\u0066\u002c\u0020\u006eo\u0020o\u0074\u0068\u0065\u0072\u0020\u0066\u006f\u006c\u006c\u006f\u0077\u0069\u006e\u0067");
};_gaf =_cfae ;continue ;};if _caag ==_eaba -1{_cfae =_ebfg ;}else {_cfae =&treeNode {};};if _cad ==0{_cfae ._agd =true ;};_gaf .set (_dbdc ,_cfae );_gaf =_cfae ;};return nil ;};func (_ebfe *Decoder )decodeRow ()(_abc error ){if !_ebfe ._gg &&_ebfe ._ef > 0&&_ebfe ._ef ==_ebfe ._fc {return _g .EOF ;
};switch _ebfe ._bff {case _bc :_abc =_ebfe .decodeRowType2 ();case _gf :_abc =_ebfe .decodeRowType4 ();case _ecc :_abc =_ebfe .decodeRowType6 ();};if _abc !=nil {return _abc ;};_edg :=0;_eeg :=true ;_ebfe ._eef =0;for _cfg :=0;_cfg < _ebfe ._eaf ;_cfg ++{_edf :=_ebfe ._ddc ;
if _cfg !=_ebfe ._eaf {_edf =_ebfe ._bg [_cfg ];};if _edf > _ebfe ._ddc {_edf =_ebfe ._ddc ;};_ddca :=_edg /8;for _edg %8!=0&&_edf -_edg > 0{var _bdfg byte ;if !_eeg {_bdfg =1<<uint (7-(_edg %8));};_ebfe ._ebf [_ddca ]|=_bdfg ;_edg ++;};if _edg %8==0{_ddca =_edg /8;
var _ga byte ;if !_eeg {_ga =0xff;};for _edf -_edg > 7{_ebfe ._ebf [_ddca ]=_ga ;_edg +=8;_ddca ++;};};for _edf -_edg > 0{if _edg %8==0{_ebfe ._ebf [_ddca ]=0;};var _ccd byte ;if !_eeg {_ccd =1<<uint (7-(_edg %8));};_ebfe ._ebf [_ddca ]|=_ccd ;_edg ++;
};_eeg =!_eeg ;};if _edg !=_ebfe ._ddc {return _e .New ("\u0073\u0075\u006d\u0020\u006f\u0066 \u0072\u0075\u006e\u002d\u006c\u0065\u006e\u0067\u0074\u0068\u0073\u0020\u0064\u006f\u0065\u0073\u0020\u006e\u006f\u0074 \u0065\u0071\u0075\u0061\u006c\u0020\u0073\u0063\u0061\u006e\u0020\u006c\u0069\u006ee\u0020w\u0069\u0064\u0074\u0068");
};_ebfe ._ee =(_edg +7)/8;_ebfe ._fc ++;return nil ;};var (_fe map[int ]code ;_db map[int ]code ;_fab map[int ]code ;_ed map[int ]code ;_dgb map[int ]code ;_gb map[int ]byte ;_aa =code {Code :1<<4,BitsWritten :12};_dba =code {Code :3<<3,BitsWritten :13};
_gcf =code {Code :2<<3,BitsWritten :13};_de =code {Code :1<<12,BitsWritten :4};_abg =code {Code :1<<13,BitsWritten :3};_afb =code {Code :1<<15,BitsWritten :1};_fbb =code {Code :3<<13,BitsWritten :3};_ad =code {Code :3<<10,BitsWritten :6};_fed =code {Code :3<<9,BitsWritten :7};
_ebg =code {Code :2<<13,BitsWritten :3};_bdf =code {Code :2<<10,BitsWritten :6};_dd =code {Code :2<<9,BitsWritten :7};);