2020-09-28 23:18:17 +00:00

12 lines
13 KiB
Go

//
// 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 mmr ;import (_e "errors";_a "fmt";_ab "github.com/unidoc/unipdf/v3/common";_ea "github.com/unidoc/unipdf/v3/internal/bitwise";_b "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_af "io";);func _bf (_ed [3]int )*code {return &code {_c :_ed [0],_cc :_ed [1],_eg :_ed [2]}};func _bb (_gdg ,_bc int )int {if _gdg > _bc {return _bc ;};return _gdg ;};func (_geb *runData )uncompressGetCode (_gbc []*code )(*code ,error ){return _geb .uncompressGetCodeLittleEndian (_gbc );};type code struct{_c int ;_cc int ;_eg int ;_d []*code ;_aa bool ;};const (EOF =-3;_cd =-2;EOL =-1;_ag =8;_bbd =(1<<_ag )-1;_ced =5;_eag =(1<<_ced )-1;);func (_gde *Decoder )initTables ()(_gaa error ){if _gde ._bbe ==nil {_gde ._bbe ,_gaa =_gde .createLittleEndianTable (_cg );if _gaa !=nil {return ;};_gde ._fb ,_gaa =_gde .createLittleEndianTable (_bfe );if _gaa !=nil {return ;};_gde ._ff ,_gaa =_gde .createLittleEndianTable (_dec );if _gaa !=nil {return ;};};return nil ;};func (_dfc *runData )fillBuffer (_gdb int )error {_dfc ._eefe =_gdb ;_ ,_gg :=_dfc ._afc .Seek (int64 (_gdb ),_af .SeekStart );if _gg !=nil {if _gg ==_af .EOF {_ab .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");_dfc ._dc =-1;}else {return _gg ;};};if _gg ==nil {_dfc ._dc ,_gg =_dfc ._afc .Read (_dfc ._faa );if _gg !=nil {if _gg ==_af .EOF {_ab .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_dfc ._dc =-1;}else {return _gg ;};};};if _dfc ._dc > -1&&_dfc ._dc < 3{for _dfc ._dc < 3{_eab ,_cgbb :=_dfc ._afc .ReadByte ();if _cgbb !=nil {if _cgbb ==_af .EOF {_dfc ._faa [_dfc ._dc ]=0;}else {return _cgbb ;};}else {_dfc ._faa [_dfc ._dc ]=_eab &0xFF;};_dfc ._dc ++;};};_dfc ._dc -=3;if _dfc ._dc < 0{_dfc ._faa =make ([]byte ,len (_dfc ._faa ));_dfc ._dc =len (_dfc ._faa )-3;};return nil ;};var (_dec =[][3]int {{4,0x1,int (_de )},{3,0x1,int (_dg )},{1,0x1,int (_fg )},{3,0x3,int (_ce )},{6,0x3,int (_edb )},{7,0x3,int (_eb )},{3,0x2,int (_ec )},{6,0x2,int (_ga )},{7,0x2,int (_ca )},{10,0xf,int (_df )},{12,0xf,int (_caf )},{12,0x1,int (EOL )}};_cg =[][3]int {{4,0x07,2},{4,0x08,3},{4,0x0B,4},{4,0x0C,5},{4,0x0E,6},{4,0x0F,7},{5,0x12,128},{5,0x13,8},{5,0x14,9},{5,0x1B,64},{5,0x07,10},{5,0x08,11},{6,0x17,192},{6,0x18,1664},{6,0x2A,16},{6,0x2B,17},{6,0x03,13},{6,0x34,14},{6,0x35,15},{6,0x07,1},{6,0x08,12},{7,0x13,26},{7,0x17,21},{7,0x18,28},{7,0x24,27},{7,0x27,18},{7,0x28,24},{7,0x2B,25},{7,0x03,22},{7,0x37,256},{7,0x04,23},{7,0x08,20},{7,0xC,19},{8,0x12,33},{8,0x13,34},{8,0x14,35},{8,0x15,36},{8,0x16,37},{8,0x17,38},{8,0x1A,31},{8,0x1B,32},{8,0x02,29},{8,0x24,53},{8,0x25,54},{8,0x28,39},{8,0x29,40},{8,0x2A,41},{8,0x2B,42},{8,0x2C,43},{8,0x2D,44},{8,0x03,30},{8,0x32,61},{8,0x33,62},{8,0x34,63},{8,0x35,0},{8,0x36,320},{8,0x37,384},{8,0x04,45},{8,0x4A,59},{8,0x4B,60},{8,0x5,46},{8,0x52,49},{8,0x53,50},{8,0x54,51},{8,0x55,52},{8,0x58,55},{8,0x59,56},{8,0x5A,57},{8,0x5B,58},{8,0x64,448},{8,0x65,512},{8,0x67,640},{8,0x68,576},{8,0x0A,47},{8,0x0B,48},{9,0x01,_cd },{9,0x98,1472},{9,0x99,1536},{9,0x9A,1600},{9,0x9B,1728},{9,0xCC,704},{9,0xCD,768},{9,0xD2,832},{9,0xD3,896},{9,0xD4,960},{9,0xD5,1024},{9,0xD6,1088},{9,0xD7,1152},{9,0xD8,1216},{9,0xD9,1280},{9,0xDA,1344},{9,0xDB,1408},{10,0x01,_cd },{11,0x01,_cd },{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560}};_bfe =[][3]int {{2,0x02,3},{2,0x03,2},{3,0x02,1},{3,0x03,4},{4,0x02,6},{4,0x03,5},{5,0x03,7},{6,0x04,9},{6,0x05,8},{7,0x04,10},{7,0x05,11},{7,0x07,12},{8,0x04,13},{8,0x07,14},{9,0x01,_cd },{9,0x18,15},{10,0x01,_cd },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_cd },{11,0x17,24},{11,0x18,25},{11,0x28,23},{11,0x37,22},{11,0x67,19},{11,0x68,20},{11,0x6C,21},{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560},{12,0x24,52},{12,0x27,55},{12,0x28,56},{12,0x2B,59},{12,0x2C,60},{12,0x33,320},{12,0x34,384},{12,0x35,448},{12,0x37,53},{12,0x38,54},{12,0x52,50},{12,0x53,51},{12,0x54,44},{12,0x55,45},{12,0x56,46},{12,0x57,47},{12,0x58,57},{12,0x59,58},{12,0x5A,61},{12,0x5B,256},{12,0x64,48},{12,0x65,49},{12,0x66,62},{12,0x67,63},{12,0x68,30},{12,0x69,31},{12,0x6A,32},{12,0x6B,33},{12,0x6C,40},{12,0x6D,41},{12,0xC8,128},{12,0xC9,192},{12,0xCA,26},{12,0xCB,27},{12,0xCC,28},{12,0xCD,29},{12,0xD2,34},{12,0xD3,35},{12,0xD4,36},{12,0xD5,37},{12,0xD6,38},{12,0xD7,39},{12,0xDA,42},{12,0xDB,43},{13,0x4A,640},{13,0x4B,704},{13,0x4C,768},{13,0x4D,832},{13,0x52,1280},{13,0x53,1344},{13,0x54,1408},{13,0x55,1472},{13,0x5A,1536},{13,0x5B,1600},{13,0x64,1664},{13,0x65,1728},{13,0x6C,512},{13,0x6D,576},{13,0x72,896},{13,0x73,960},{13,0x74,1024},{13,0x75,1088},{13,0x76,1152},{13,0x77,1216}};);type Decoder struct{_ef ,_gag int ;_aaf *runData ;_bbe []*code ;_fb []*code ;_ff []*code ;};func _gd (_dd ,_cf int )int {if _dd < _cf {return _cf ;};return _dd ;};func _dfe (_ba *_ea .SubstreamReader )(*runData ,error ){_dgf :=&runData {_afc :_ba ,_decb :0,_cdfg :1};_eaea :=_bb (_gd (_gdd ,int (_ba .Length ())),_eda );_dgf ._faa =make ([]byte ,_eaea );if _gee :=_dgf .fillBuffer (0);_gee !=nil {if _gee ==_af .EOF {_dgf ._faa =make ([]byte ,10);_ab .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_gee );}else {return nil ,_gee ;};};return _dgf ,nil ;};func (_db *runData )align (){_db ._decb =((_db ._decb +7)>>3)<<3};func (_bd *Decoder )uncompress1d (_fa *runData ,_aac []int ,_afe int )(int ,error ){var (_ffe =true ;_aga int ;_fag *code ;_cdf int ;_bfc error ;);_fdf :for _aga < _afe {_bcd :for {if _ffe {_fag ,_bfc =_fa .uncompressGetCode (_bd ._bbe );if _bfc !=nil {return 0,_bfc ;};}else {_fag ,_bfc =_fa .uncompressGetCode (_bd ._fb );if _bfc !=nil {return 0,_bfc ;};};_fa ._decb +=_fag ._c ;if _fag ._eg < 0{break _fdf ;};_aga +=_fag ._eg ;if _fag ._eg < 64{_ffe =!_ffe ;_aac [_cdf ]=_aga ;_cdf ++;break _bcd ;};};};if _aac [_cdf ]!=_afe {_aac [_cdf ]=_afe ;};_ebd :=EOL ;if _fag !=nil &&_fag ._eg !=EOL {_ebd =_cdf ;};return _ebd ,nil ;};func New (r _ea .StreamReader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_fc :=&Decoder {_ef :width ,_gag :height };_bg ,_ad :=_ea .NewSubstreamReader (r ,uint64 (dataOffset ),uint64 (dataLength ));if _ad !=nil {return nil ,_ad ;};_abe ,_ad :=_dfe (_bg );if _ad !=nil {return nil ,_ad ;};_fc ._aaf =_abe ;if _ecc :=_fc .initTables ();_ecc !=nil {return nil ,_ecc ;};return _fc ,nil ;};const (_eda int =1024<<7;_gdd int =3;_cb uint =24;);func (_afd *runData )uncompressGetCodeLittleEndian (_gc []*code )(*code ,error ){_gac ,_dgfg :=_afd .uncompressGetNextCodeLittleEndian ();if _dgfg !=nil {_ab .Log .Debug ("\u0055n\u0063\u006fm\u0070\u0072\u0065\u0073s\u0047\u0065\u0074N\u0065\u0078\u0074\u0043\u006f\u0064\u0065\u004c\u0069tt\u006c\u0065\u0045n\u0064\u0069a\u006e\u0020\u0066\u0061\u0069\u006ce\u0064\u003a \u0025\u0076",_dgfg );return nil ,_dgfg ;};_gac &=0xffffff;_ddc :=_gac >>(_cb -_ag );_dcg :=_gc [_ddc ];if _dcg !=nil &&_dcg ._aa {_ddc =(_gac >>(_cb -_ag -_ced ))&_eag ;_dcg =_dcg ._d [_ddc ];};return _dcg ,nil ;};func (_ege *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_agd :=_ege ._decb -_ege ._cdfg ;if _agd < 0||_agd > 24{_eaf :=(_ege ._decb >>3)-_ege ._eefe ;if _eaf >=_ege ._dc {_eaf +=_ege ._eefe ;if _fcd :=_ege .fillBuffer (_eaf );_fcd !=nil {return 0,_fcd ;};_eaf -=_ege ._eefe ;};_gda :=(uint32 (_ege ._faa [_eaf ]&0xFF)<<16)|(uint32 (_ege ._faa [_eaf +1]&0xFF)<<8)|(uint32 (_ege ._faa [_eaf +2]&0xFF));_gdf :=uint32 (_ege ._decb &7);_gda <<=_gdf ;_ege ._bgg =int (_gda );}else {_cbg :=_ege ._cdfg &7;_aea :=7-_cbg ;if _agd <=_aea {_ege ._bgg <<=uint (_agd );}else {_dbe :=(_ege ._cdfg >>3)+3-_ege ._eefe ;if _dbe >=_ege ._dc {_dbe +=_ege ._eefe ;if _gacb :=_ege .fillBuffer (_dbe );_gacb !=nil {return 0,_gacb ;};_dbe -=_ege ._eefe ;};_cbg =8-_cbg ;for {_ege ._bgg <<=uint (_cbg );_ege ._bgg |=int (uint (_ege ._faa [_dbe ])&0xFF);_agd -=_cbg ;_dbe ++;_cbg =8;if !(_agd >=8){break ;};};_ege ._bgg <<=uint (_agd );};};_ege ._cdfg =_ege ._decb ;return _ege ._bgg ,nil ;};func (_dea *Decoder )createLittleEndianTable (_fd [][3]int )([]*code ,error ){_dae :=make ([]*code ,_bbd +1);for _dfb :=0;_dfb < len (_fd );_dfb ++{_efg :=_bf (_fd [_dfb ]);if _efg ._c <=_ag {_gdge :=_ag -_efg ._c ;_ac :=_efg ._cc <<uint (_gdge );for _daed :=(1<<uint (_gdge ))-1;_daed >=0;_daed --{_aff :=_ac |_daed ;_dae [_aff ]=_efg ;};}else {_bff :=_efg ._cc >>uint (_efg ._c -_ag );if _dae [_bff ]==nil {var _ae =_bf ([3]int {});_ae ._d =make ([]*code ,_eag +1);_dae [_bff ]=_ae ;};if _efg ._c <=_ag +_ced {_cdc :=_ag +_ced -_efg ._c ;_dga :=(_efg ._cc <<uint (_cdc ))&_eag ;_dae [_bff ]._aa =true ;for _dgc :=(1<<uint (_cdc ))-1;_dgc >=0;_dgc --{_dae [_bff ]._d [_dga |_dgc ]=_efg ;};}else {return nil ,_e .New ("\u0043\u006f\u0064\u0065\u0020\u0074a\u0062\u006c\u0065\u0020\u006f\u0076\u0065\u0072\u0066\u006c\u006f\u0077\u0020i\u006e\u0020\u004d\u004d\u0052\u0044\u0065c\u006f\u0064\u0065\u0072");};};};return _dae ,nil ;};func (_g *code )String ()string {return _a .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_g ._c ,_g ._cc ,_g ._eg );};func (_fcg *Decoder )UncompressMMR ()(_edf *_b .Bitmap ,_da error ){_edf =_b .New (_fcg ._ef ,_fcg ._gag );_adb :=make ([]int ,_edf .Width +5);_gb :=make ([]int ,_edf .Width +5);_gb [0]=_edf .Width ;_eae :=1;var _agf int ;for _cgb :=0;_cgb < _edf .Height ;_cgb ++{_agf ,_da =_fcg .uncompress2d (_fcg ._aaf ,_gb ,_eae ,_adb ,_edf .Width );if _da !=nil {return nil ,_da ;};if _agf ==EOF {break ;};if _agf > 0{_da =_fcg .fillBitmap (_edf ,_cgb ,_adb ,_agf );if _da !=nil {return nil ,_da ;};};_gb ,_adb =_adb ,_gb ;_eae =_agf ;};if _da =_fcg .detectAndSkipEOL ();_da !=nil {return nil ,_da ;};_fcg ._aaf .align ();return _edf ,nil ;};func (_edg *Decoder )uncompress2d (_aec *runData ,_acg []int ,_ee int ,_fba []int ,_bfeb int )(int ,error ){var (_aag int ;_egf int ;_bgc int ;_aab =true ;_eef error ;_gae *code ;);_acg [_ee ]=_bfeb ;_acg [_ee +1]=_bfeb ;_acg [_ee +2]=_bfeb +1;_acg [_ee +3]=_bfeb +1;_aeef :for _bgc < _bfeb {_gae ,_eef =_aec .uncompressGetCode (_edg ._ff );if _eef !=nil {return EOL ,nil ;};if _gae ==nil {_aec ._decb ++;break _aeef ;};_aec ._decb +=_gae ._c ;switch mmrCode (_gae ._eg ){case _fg :_bgc =_acg [_aag ];case _ce :_bgc =_acg [_aag ]+1;case _ec :_bgc =_acg [_aag ]-1;case _dg :_ge :=1;for _ge > 0{var _deb []*code ;if _aab {_deb =_edg ._bbe ;}else {_deb =_edg ._fb ;};_gae ,_eef =_aec .uncompressGetCode (_deb );if _eef !=nil {return 0,_eef ;};if _gae ==nil {break _aeef ;};_aec ._decb +=_gae ._c ;if _gae ._eg < 64{if _gae ._eg < 0{_fba [_egf ]=_bgc ;_egf ++;_gae =nil ;break _aeef ;};_bgc +=_gae ._eg ;_fba [_egf ]=_bgc ;_egf ++;break ;};_bgc +=_gae ._eg ;};_bbg :=_bgc ;_cgf :=1;_bfdb :for _cgf > 0{var _acf []*code ;if !_aab {_acf =_edg ._bbe ;}else {_acf =_edg ._fb ;};_gae ,_eef =_aec .uncompressGetCode (_acf );if _eef !=nil {return 0,_eef ;};if _gae ==nil {break _aeef ;};_aec ._decb +=_gae ._c ;if _gae ._eg < 64{if _gae ._eg < 0{_fba [_egf ]=_bgc ;_egf ++;break _aeef ;};_bgc +=_gae ._eg ;if _bgc < _bfeb ||_bgc !=_bbg {_fba [_egf ]=_bgc ;_egf ++;};break _bfdb ;};_bgc +=_gae ._eg ;};for _bgc < _bfeb &&_acg [_aag ]<=_bgc {_aag +=2;};continue _aeef ;case _de :_aag ++;_bgc =_acg [_aag ];_aag ++;continue _aeef ;case _edb :_bgc =_acg [_aag ]+2;case _ga :_bgc =_acg [_aag ]-2;case _eb :_bgc =_acg [_aag ]+3;case _ca :_bgc =_acg [_aag ]-3;default:if _aec ._decb ==12&&_gae ._eg ==EOL {_aec ._decb =0;if _ ,_eef =_edg .uncompress1d (_aec ,_acg ,_bfeb );_eef !=nil {return 0,_eef ;};_aec ._decb ++;if _ ,_eef =_edg .uncompress1d (_aec ,_fba ,_bfeb );_eef !=nil {return 0,_eef ;};_fdfc ,_cafa :=_edg .uncompress1d (_aec ,_acg ,_bfeb );if _cafa !=nil {return EOF ,_cafa ;};_aec ._decb ++;return _fdfc ,nil ;};_bgc =_bfeb ;continue _aeef ;};if _bgc <=_bfeb {_aab =!_aab ;_fba [_egf ]=_bgc ;_egf ++;if _aag > 0{_aag --;}else {_aag ++;};for _bgc < _bfeb &&_acg [_aag ]<=_bgc {_aag +=2;};};};if _fba [_egf ]!=_bfeb {_fba [_egf ]=_bfeb ;};if _gae ==nil {return EOL ,nil ;};return _egf ,nil ;};func (_aee *Decoder )fillBitmap (_cee *_b .Bitmap ,_fde int ,_fcga []int ,_agg int )error {var _fe byte ;_eca :=0;_daf :=_cee .GetByteIndex (_eca ,_fde );for _ffa :=0;_ffa < _agg ;_ffa ++{_bfd :=byte (1);_acd :=_fcga [_ffa ];if (_ffa &1)==0{_bfd =0;};for _eca < _acd {_fe =(_fe <<1)|_bfd ;_eca ++;if (_eca &7)==0{if _dde :=_cee .SetByte (_daf ,_fe );_dde !=nil {return _dde ;};_daf ++;_fe =0;};};};if (_eca &7)!=0{_fe <<=uint (8-(_eca &7));if _deg :=_cee .SetByte (_daf ,_fe );_deg !=nil {return _deg ;};};return nil ;};const (_de mmrCode =iota ;_dg ;_fg ;_ce ;_edb ;_eb ;_ec ;_ga ;_ca ;_df ;_caf ;);type mmrCode int ;type runData struct{_afc *_ea .SubstreamReader ;_decb int ;_cdfg int ;_bgg int ;_faa []byte ;_eefe int ;_dc int ;};func (_ddb *Decoder )detectAndSkipEOL ()error {for {_bbec ,_fgc :=_ddb ._aaf .uncompressGetCode (_ddb ._ff );if _fgc !=nil {return _fgc ;};if _bbec !=nil &&_bbec ._eg ==EOL {_ddb ._aaf ._decb +=_bbec ._c ;}else {return nil ;};};};