2020-12-06 13:03:03 +00:00

12 lines
39 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 document ;import (_b "encoding/binary";_c "fmt";_be "github.com/unidoc/unipdf/v3/common";_g "github.com/unidoc/unipdf/v3/internal/bitwise";_e "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_fa "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_bd "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_ff "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_fg "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_ca "io";_f "math";_a "runtime/debug";);func (_gafcc *Globals )GetSegment (segmentNumber int )(*_bd .Header ,error ){const _aea ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _gafcc ==nil {return nil ,_fg .Error (_aea ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_gafcc .Segments )==0{return nil ,_fg .Error (_aea ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _aede *_bd .Header ;for _ ,_aede =range _gafcc .Segments {if _aede .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _aede ==nil {return nil ,_fg .Error (_aea ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _aede ,nil ;};func (_dddf *Page )nextSegmentNumber ()uint32 {return _dddf .Document .nextSegmentNumber ()};func (_cf *Page )countRegions ()int {var _dcae int ;for _ ,_deb :=range _cf .Segments {switch _deb .Type {case 6,7,22,23,38,39,42,43:_dcae ++;};};return _dcae ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _g .StreamReader ;GlobalSegments *Globals ;OrganizationType _bd .OrganizationType ;Classer *_ff .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_fa .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_ee uint8 ;_dg *_g .BufferedWriter ;EncodeGlobals bool ;_dd int ;_caf map[int ][]int ;_cg map[int ][]int ;_fe []int ;_bea map[int ]int ;};func (_aeb *Document )encodeEOFHeader (_faff _g .BinaryWriter )(_fbc int ,_ebf error ){_ccee :=&_bd .Header {SegmentNumber :_aeb .nextSegmentNumber (),Type :_bd .TEndOfFile };if _fbc ,_ebf =_ccee .Encode (_faff );_ebf !=nil {return 0,_fg .Wrap (_ebf ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _fbc ,nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_dg :_g .BufferedMSB (),Pages :map[int ]*Page {},_caf :map[int ][]int {},_bea :map[int ]int {},_cg :map[int ][]int {}};};func (_ecfe *Page )GetSegment (number int )(*_bd .Header ,error ){const _egg ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_gbg :=range _ecfe .Segments {if _gbg .SegmentNumber ==uint32 (number ){return _gbg ,nil ;};};_gbb :=make ([]uint32 ,len (_ecfe .Segments ));for _gfe ,_cbcg :=range _ecfe .Segments {_gbb [_gfe ]=_cbcg .SegmentNumber ;};return nil ,_fg .Errorf (_egg ,"\u0073e\u0067\u006d\u0065n\u0074\u0020\u0077i\u0074h \u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0069\u006e\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u003a\u0020'%\u0064'\u002e\u0020\u004b\u006e\u006f\u0077n\u0020\u0073\u0065\u0067\u006de\u006e\u0074\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0073\u003a \u0025\u0076",number ,_ecfe .PageNumber ,_gbb );};func _egb (_efd _g .StreamReader ,_bfa *Globals )(*Document ,error ){_fde :=&Document {Pages :make (map[int ]*Page ),InputStream :_efd ,OrganizationType :_bd .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_bfa ,_ee :9};if _fde .GlobalSegments ==nil {_fde .GlobalSegments =&Globals {};};if _fcd :=_fde .mapData ();_fcd !=nil {return nil ,_fcd ;};return _fde ,nil ;};func (_def *Page )collectPageStripes ()(_ecg []_bd .Segmenter ,_cdd error ){const _aeg ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _edea _bd .Segmenter ;for _ ,_dgaf :=range _def .Segments {switch _dgaf .Type {case 6,7,22,23,38,39,42,43:_edea ,_cdd =_dgaf .GetSegmentData ();if _cdd !=nil {return nil ,_fg .Wrap (_cdd ,_aeg ,"");};_ecg =append (_ecg ,_edea );case 50:_edea ,_cdd =_dgaf .GetSegmentData ();if _cdd !=nil {return nil ,_cdd ;};_befg ,_aacf :=_edea .(*_bd .EndOfStripe );if !_aacf {return nil ,_fg .Errorf (_aeg ,"\u0045\u006e\u0064\u004f\u0066\u0053\u0074\u0072\u0069\u0070\u0065\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u006f\u0066\u0020\u0076\u0061l\u0069\u0064\u0020\u0074\u0079p\u0065\u003a \u0027\u0025\u0054\u0027",_edea );};_ecg =append (_ecg ,_befg );_def .FinalHeight =_befg .LineNumber ();};};return _ecg ,nil ;};func DecodeDocument (input _g .StreamReader ,globals *Globals )(*Document ,error ){return _egb (input ,globals );};func (_cda *Page )AddPageInformationSegment (){_ecdg :=&_bd .PageInformationSegment {PageBMWidth :_cda .FinalWidth ,PageBMHeight :_cda .FinalHeight ,ResolutionX :_cda .ResolutionX ,ResolutionY :_cda .ResolutionY ,IsLossless :_cda .IsLossless };_bbe :=&_bd .Header {PageAssociation :_cda .PageNumber ,SegmentDataLength :uint64 (_ecdg .Size ()),SegmentData :_ecdg ,Type :_bd .TPageInformation };_cda .Segments =append (_cda .Segments ,_bbe );};func (_edd *Document )nextSegmentNumber ()uint32 {_gddg :=_edd .CurrentSegmentNumber ;_edd .CurrentSegmentNumber ++;return _gddg ;};func (_agb *Page )GetHeight ()(int ,error ){return _agb .getHeight ()};func (_eeff *Page )fitsPage (_agce *_bd .PageInformationSegment ,_cfa *_fa .Bitmap )bool {return _eeff .countRegions ()==1&&_agce .DefaultPixelValue ()==0&&_agce .PageBMWidth ==_cfa .Width &&_agce .PageBMHeight ==_cfa .Height ;};func (_acec *Document )encodeFileHeader (_cbc _g .BinaryWriter )(_cee int ,_dbde error ){const _gde ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_cee ,_dbde =_cbc .Write (_ce );if _dbde !=nil {return _cee ,_fg .Wrap (_dbde ,_gde ,"\u0069\u0064");};if _dbde =_cbc .WriteByte (0x01);_dbde !=nil {return _cee ,_fg .Wrap (_dbde ,_gde ,"\u0066\u006c\u0061g\u0073");};_cee ++;_caeg :=make ([]byte ,4);_b .BigEndian .PutUint32 (_caeg ,_acec .NumberOfPages );_bdd ,_dbde :=_cbc .Write (_caeg );if _dbde !=nil {return _bdd ,_fg .Wrap (_dbde ,_gde ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_cee +=_bdd ;return _cee ,nil ;};func (_db *Document )completeClassifiedPages ()(_dbe error ){const _fcc ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _db .Classer ==nil {return nil ;};_db ._fe =make ([]int ,_db .Classer .UndilatedTemplates .Size ());for _ad :=0;_ad < _db .Classer .ClassIDs .Size ();_ad ++{_aa ,_eb :=_db .Classer .ClassIDs .Get (_ad );if _eb !=nil {return _fg .Wrapf (_eb ,_fcc ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_ad );};_db ._fe [_aa ]++;};var _adg []int ;for _cc :=0;_cc < _db .Classer .UndilatedTemplates .Size ();_cc ++{if _db .NumberOfPages ==1||_db ._fe [_cc ]> 1{_adg =append (_adg ,_cc );};};var (_gd *Page ;_ag bool ;);for _cd ,_ed :=range *_db .Classer .ComponentPageNumbers {if _gd ,_ag =_db .Pages [_ed ];!_ag {return _fg .Errorf (_fcc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_cd );};if _gd .EncodingMethod ==GenericEM {_be .Log .Error ("\u0047\u0065\u006e\u0065\u0072\u0069c\u0020\u0070\u0061g\u0065\u0020\u0077i\u0074\u0068\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020ma\u0070\u0070\u0065\u0064\u0020\u0061\u0073\u0020\u0063\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0020\u0070\u0061\u0067\u0065",_cd );continue ;};_db ._cg [_ed ]=append (_db ._cg [_ed ],_cd );_ef ,_ba :=_db .Classer .ClassIDs .Get (_cd );if _ba !=nil {return _fg .Wrapf (_ba ,_fcc ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_cd );};if _db ._fe [_ef ]==1&&_db .NumberOfPages !=1{_dba :=append (_db ._caf [_ed ],_ef );_db ._caf [_ed ]=_dba ;};};if _dbe =_db .Classer .ComputeLLCorners ();_dbe !=nil {return _fg .Wrap (_dbe ,_fcc ,"");};if _ ,_dbe =_db .addSymbolDictionary (0,_db .Classer .UndilatedTemplates ,_adg ,_db ._bea ,false );_dbe !=nil {return _fg .Wrap (_dbe ,_fcc ,"");};return nil ;};func (_gcc *Document )GetGlobalSegment (i int )(*_bd .Header ,error ){_baf ,_eec :=_gcc .GlobalSegments .GetSegment (i );if _eec !=nil {return nil ,_fg .Wrap (_eec ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");};return _baf ,nil ;};func (_afb *Page )GetResolutionX ()(int ,error ){return _afb .getResolutionX ()};func (_dbebg *Page )GetBitmap ()(_fge *_fa .Bitmap ,_ebfb error ){_be .Log .Trace (_c .Sprintf ("\u005b\u0050\u0041G\u0045\u005d\u005b\u0023%\u0064\u005d\u0020\u0047\u0065\u0074\u0042i\u0074\u006d\u0061\u0070\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e",_dbebg .PageNumber ));defer func (){if _ebfb !=nil {_be .Log .Trace (_c .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064\u005d\u0020\u0047\u0065\u0074B\u0069t\u006d\u0061\u0070\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_dbebg .PageNumber ,_ebfb ));}else {_be .Log .Trace (_c .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064]\u0020\u0047\u0065\u0074\u0042\u0069\u0074m\u0061\u0070\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064",_dbebg .PageNumber ));};}();if _dbebg .Bitmap !=nil {return _dbebg .Bitmap ,nil ;};_ebfb =_dbebg .composePageBitmap ();if _ebfb !=nil {return nil ,_ebfb ;};return _dbebg .Bitmap ,nil ;};func _ac (_efb int )int {_ffd :=0;_fd :=(_efb &(_efb -1))==0;_efb >>=1;for ;_efb !=0;_efb >>=1{_ffd ++;};if _fd {return _ffd ;};return _ffd +1;};func (_ece *Globals )GetSymbolDictionary ()(*_bd .Header ,error ){const _bfe ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";if _ece ==nil {return nil ,_fg .Error (_bfe ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_ece .Segments )==0{return nil ,_fg .Error (_bfe ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};for _ ,_gb :=range _ece .Segments {if _gb .Type ==_bd .TSymbolDictionary {return _gb ,nil ;};};return nil ,_fg .Error (_bfe ,"\u0067\u006c\u006fba\u006c\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0020d\u0069c\u0074i\u006fn\u0061\u0072\u0079\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};func (_ede *Page )GetResolutionY ()(int ,error ){return _ede .getResolutionY ()};func (_aegc *Page )getCombinationOperator (_afeb *_bd .PageInformationSegment ,_dcg _fa .CombinationOperator )_fa .CombinationOperator {if _afeb .CombinationOperatorOverrideAllowed (){return _dcg ;};return _afeb .CombinationOperator ();};func (_fbe *Document )reachedEOF (_eeg int64 )(bool ,error ){const _dca ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_dag :=_fbe .InputStream .Seek (_eeg ,_ca .SeekStart );if _dag !=nil {_be .Log .Debug ("\u0072\u0065\u0061c\u0068\u0065\u0064\u0045\u004f\u0046\u0020\u002d\u0020\u0064\u002e\u0049\u006e\u0070\u0075\u0074\u0053\u0074\u0072\u0065\u0061\u006d\u002e\u0053\u0065\u0065\u006b\u0020\u0066a\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_dag );return false ,_fg .Wrap (_dag ,_dca ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_dag =_fbe .InputStream .ReadBits (32);if _dag ==_ca .EOF {return true ,nil ;}else if _dag !=nil {return false ,_fg .Wrap (_dag ,_dca ,"");};return false ,nil ;};func (_bag *Document )Encode ()(_eab []byte ,_cafa error ){const _ddg ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _bca ,_bgfb int ;if _bag .FullHeaders {if _bca ,_cafa =_bag .encodeFileHeader (_bag ._dg );_cafa !=nil {return nil ,_fg .Wrap (_cafa ,_ddg ,"");};};var (_ebe bool ;_cgda *_bd .Header ;_dda *Page ;);if _cafa =_bag .completeClassifiedPages ();_cafa !=nil {return nil ,_fg .Wrap (_cafa ,_ddg ,"");};if _cafa =_bag .produceClassifiedPages ();_cafa !=nil {return nil ,_fg .Wrap (_cafa ,_ddg ,"");};if _bag .GlobalSegments !=nil {for _ ,_cgda =range _bag .GlobalSegments .Segments {if _cafa =_bag .encodeSegment (_cgda ,&_bca );_cafa !=nil {return nil ,_fg .Wrap (_cafa ,_ddg ,"");};};};for _af :=1;_af <=int (_bag .NumberOfPages );_af ++{if _dda ,_ebe =_bag .Pages [_af ];!_ebe {return nil ,_fg .Errorf (_ddg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_af );};for _ ,_cgda =range _dda .Segments {if _cafa =_bag .encodeSegment (_cgda ,&_bca );_cafa !=nil {return nil ,_fg .Wrap (_cafa ,_ddg ,"");};};};if _bag .FullHeaders {if _bgfb ,_cafa =_bag .encodeEOFHeader (_bag ._dg );_cafa !=nil {return nil ,_fg .Wrap (_cafa ,_ddg ,"");};_bca +=_bgfb ;};_eab =_bag ._dg .Data ();if len (_eab )!=_bca {_be .Log .Debug ("\u0042\u0079\u0074\u0065\u0073 \u0077\u0072\u0069\u0074\u0074\u0065\u006e \u0028\u006e\u0029\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u0020\u0074\u0068\u0065\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006f\u0066\u0020t\u0068\u0065\u0020\u0064\u0061\u0074\u0061\u0020\u0065\u006e\u0063\u006fd\u0065\u0064\u003a\u0020\u0027\u0025d\u0027",_bca ,len (_eab ));};return _eab ,nil ;};func (_eda *Page )String ()string {return _c .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_eda .PageNumber );};func (_ddbd *Page )AddGenericRegion (bm *_fa .Bitmap ,xloc ,yloc ,template int ,tp _bd .Type ,duplicateLineRemoval bool )error {const _dbc ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_eae :=&_bd .GenericRegion {};if _abd :=_eae .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_abd !=nil {return _fg .Wrap (_abd ,_dbc ,"");};_ddaa :=&_bd .Header {Type :_bd .TImmediateGenericRegion ,PageAssociation :_ddbd .PageNumber ,SegmentData :_eae };_ddbd .Segments =append (_ddbd .Segments ,_ddaa );return nil ;};func (_eace *Page )createStripedPage (_ccc *_bd .PageInformationSegment )error {const _abb ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_bda ,_ddff :=_eace .collectPageStripes ();if _ddff !=nil {return _fg .Wrap (_ddff ,_abb ,"");};var _bbc int ;for _ ,_edfd :=range _bda {if _gdag ,_gab :=_edfd .(*_bd .EndOfStripe );_gab {_bbc =_gdag .LineNumber ()+1;}else {_cga :=_edfd .(_bd .Regioner );_egbd :=_cga .GetRegionInfo ();_eed :=_eace .getCombinationOperator (_ccc ,_egbd .CombinaionOperator );_gea ,_acb :=_cga .GetRegionBitmap ();if _acb !=nil {return _fg .Wrap (_acb ,_abb ,"");};_acb =_fa .Blit (_gea ,_eace .Bitmap ,int (_egbd .XLocation ),_bbc ,_eed );if _acb !=nil {return _fg .Wrap (_acb ,_abb ,"");};};};return nil ;};func (_ab *Document )produceClassifiedPage (_dgad *Page ,_dbef *_bd .Header )(_gaf error ){const _efa ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _cgg map[int ]int ;_gf :=_ab ._dd ;_fag :=[]*_bd .Header {_dbef };if len (_ab ._caf [_dgad .PageNumber ])> 0{_cgg =map[int ]int {};_adge ,_fb :=_ab .addSymbolDictionary (_dgad .PageNumber ,_ab .Classer .UndilatedTemplates ,_ab ._caf [_dgad .PageNumber ],_cgg ,false );if _fb !=nil {return _fg .Wrap (_fb ,_efa ,"");};_fag =append (_fag ,_adge );_gf +=len (_ab ._caf [_dgad .PageNumber ]);};_cb :=_ab ._cg [_dgad .PageNumber ];_be .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_dgad .PageNumber ,_cb );_dgad .addTextRegionSegment (_fag ,_ab ._bea ,_cgg ,_ab ._cg [_dgad .PageNumber ],_ab .Classer .PtaLL ,_ab .Classer .UndilatedTemplates ,_ab .Classer .ClassIDs ,nil ,_ac (_gf ),len (_ab ._cg [_dgad .PageNumber ]));return nil ;};func (_gfg *Page )createPage (_bab *_bd .PageInformationSegment )error {var _bgfbf error ;if !_bab .IsStripe ||_bab .PageBMHeight !=-1{_bgfbf =_gfg .createNormalPage (_bab );}else {_bgfbf =_gfg .createStripedPage (_bab );};return _bgfbf ;};type Globals struct{Segments []*_bd .Header ;};func (_fgec *Page )getPageInformationSegment ()*_bd .Header {for _ ,_fbb :=range _fgec .Segments {if _fbb .Type ==_bd .TPageInformation {return _fbb ;};};_be .Log .Debug ("\u0050\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0066o\u0072\u0020\u0070\u0061\u0067\u0065\u003a\u0020%\u0073\u002e",_fgec );return nil ;};func (_bfea *Page )AddEndOfPageSegment (){_gaab :=&_bd .Header {Type :_bd .TEndOfPage ,PageAssociation :_bfea .PageNumber };_bfea .Segments =append (_bfea .Segments ,_gaab );};func (_aba *Page )getWidth ()(int ,error ){const _edde ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _aba .FinalWidth !=0{return _aba .FinalWidth ,nil ;};_fgeb :=_aba .getPageInformationSegment ();if _fgeb ==nil {return 0,_fg .Error (_edde ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_efc ,_ged :=_fgeb .GetSegmentData ();if _ged !=nil {return 0,_fg .Wrap (_ged ,_edde ,"");};_bac ,_gaad :=_efc .(*_bd .PageInformationSegment );if !_gaad {return 0,_fg .Errorf (_edde ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_efc );};_aba .FinalWidth =_bac .PageBMWidth ;return _aba .FinalWidth ,nil ;};func (_gee *Document )nextPageNumber ()uint32 {_gee .NumberOfPages ++;return _gee .NumberOfPages };func (_agd *Document )addSymbolDictionary (_adga int ,_cgc *_fa .Bitmaps ,_dc []int ,_cae map[int ]int ,_agc bool )(*_bd .Header ,error ){const _ge ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";_ace :=&_bd .SymbolDictionary {};if _ec :=_ace .InitEncode (_cgc ,_dc ,_cae ,_agc );_ec !=nil {return nil ,_ec ;};_bf :=&_bd .Header {Type :_bd .TSymbolDictionary ,PageAssociation :_adga ,SegmentData :_ace };if _adga ==0{if _agd .GlobalSegments ==nil {_agd .GlobalSegments =&Globals {};};_agd .GlobalSegments .AddSegment (_bf );return _bf ,nil ;};_fga ,_faf :=_agd .Pages [_adga ];if !_faf {return nil ,_fg .Errorf (_ge ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_adga );};var (_ea int ;_eef *_bd .Header ;);for _ea ,_eef =range _fga .Segments {if _eef .Type ==_bd .TPageInformation {break ;};};_ea ++;_fga .Segments =append (_fga .Segments ,nil );copy (_fga .Segments [_ea +1:],_fga .Segments [_ea :]);_fga .Segments [_ea ]=_bf ;return _bf ,nil ;};func (_de *Globals )AddSegment (segment *_bd .Header ){_de .Segments =append (_de .Segments ,segment )};var _ce =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func (_aca *Page )createNormalPage (_efe *_bd .PageInformationSegment )error {const _eaec ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_aca .Bitmap =_fa .New (_efe .PageBMWidth ,_efe .PageBMHeight );if _efe .DefaultPixelValue ()!=0{_aca .Bitmap .SetDefaultPixel ();};for _ ,_eeb :=range _aca .Segments {switch _eeb .Type {case 6,7,22,23,38,39,42,43:_be .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_eeb .SegmentNumber );_eabf ,_gdbe :=_eeb .GetSegmentData ();if _gdbe !=nil {return _gdbe ;};_geed ,_fbgd :=_eabf .(_bd .Regioner );if !_fbgd {_be .Log .Debug ("\u0053\u0065g\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0054\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0052\u0065\u0067\u0069on\u0065\u0072",_eabf );return _fg .Errorf (_eaec ,"i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062i\u0067\u0032\u0020\u0073\u0065\u0067\u006den\u0074\u0020\u0074\u0079p\u0065\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0061 R\u0065\u0067i\u006f\u006e\u0065\u0072\u003a\u0020\u0025\u0054",_eabf );};_cea ,_gdbe :=_geed .GetRegionBitmap ();if _gdbe !=nil {return _fg .Wrap (_gdbe ,_eaec ,"");};if _aca .fitsPage (_efe ,_cea ){_aca .Bitmap =_cea ;}else {_bfg :=_geed .GetRegionInfo ();_afed :=_aca .getCombinationOperator (_efe ,_bfg .CombinaionOperator );_gdbe =_fa .Blit (_cea ,_aca .Bitmap ,int (_bfg .XLocation ),int (_bfg .YLocation ),_afed );if _gdbe !=nil {return _fg .Wrap (_gdbe ,_eaec ,"");};};};};return nil ;};func (_df *Document )completeSymbols ()(_cgd error ){const _edc ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _df .Classer ==nil {return nil ;};if _df .Classer .UndilatedTemplates ==nil {return _fg .Error (_edc ,"\u006e\u006f t\u0065\u006d\u0070l\u0061\u0074\u0065\u0073 de\u0066in\u0065\u0064\u0020\u0066\u006f\u0072\u0020th\u0065\u0020\u0063\u006c\u0061\u0073\u0073e\u0072");};_dcd :=len (_df .Pages )==1;_fgf :=make ([]int ,_df .Classer .UndilatedTemplates .Size ());var _ddf int ;for _bc :=0;_bc < _df .Classer .ClassIDs .Size ();_bc ++{_ddf ,_cgd =_df .Classer .ClassIDs .Get (_bc );if _cgd !=nil {return _fg .Wrap (_cgd ,_edc ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");};_fgf [_ddf ]++;};var _dbd []int ;for _gce :=0;_gce < _df .Classer .UndilatedTemplates .Size ();_gce ++{if _fgf [_gce ]==0{return _fg .Error (_edc ,"\u006eo\u0020\u0073y\u006d\u0062\u006f\u006cs\u0020\u0069\u006es\u0074\u0061\u006e\u0063\u0065\u0073\u0020\u0066\u006fun\u0064\u0020\u0066o\u0072\u0020g\u0069\u0076\u0065\u006e\u0020\u0063l\u0061\u0073s\u003f\u0020");};if _fgf [_gce ]> 1||_dcd {_dbd =append (_dbd ,_gce );};};_df ._dd =len (_dbd );var _gaa ,_dgg int ;for _gca :=0;_gca < _df .Classer .ComponentPageNumbers .Size ();_gca ++{_gaa ,_cgd =_df .Classer .ComponentPageNumbers .Get (_gca );if _cgd !=nil {return _fg .Wrapf (_cgd ,_edc ,"p\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027 \u006e\u006f\u0074\u0020\u0066\u006f\u0075nd\u0020\u0069\u006e\u0020t\u0068\u0065\u0020\u0063\u006c\u0061\u0073\u0073\u0065r \u0070\u0061g\u0065\u006e\u0075\u006d\u0062\u0065\u0072\u0073",_gca );};_dgg ,_cgd =_df .Classer .ClassIDs .Get (_gca );if _cgd !=nil {return _fg .Wrapf (_cgd ,_edc ,"\u0063\u0061\u006e\u0027\u0074\u0020\u0067e\u0074\u0020\u0073y\u006d\u0062\u006f\u006c \u0066\u006f\u0072\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027\u0020\u0066\u0072\u006f\u006d\u0020\u0063\u006c\u0061\u0073\u0073\u0065\u0072",_gaa );};if _fgf [_dgg ]==1&&!_dcd {_df ._caf [_gaa ]=append (_df ._caf [_gaa ],_dgg );};};if _cgd =_df .Classer .ComputeLLCorners ();_cgd !=nil {return _fg .Wrap (_cgd ,_edc ,"");};return nil ;};func (_edda *Page )getResolutionX ()(int ,error ){const _fdga ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _edda .ResolutionX !=0{return _edda .ResolutionX ,nil ;};_fcdd :=_edda .getPageInformationSegment ();if _fcdd ==nil {return 0,_fg .Error (_fdga ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bfc ,_adgb :=_fcdd .GetSegmentData ();if _adgb !=nil {return 0,_fg .Wrap (_adgb ,_fdga ,"");};_dgc ,_geb :=_bfc .(*_bd .PageInformationSegment );if !_geb {return 0,_fg .Errorf (_fdga ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_bfc );};_edda .ResolutionX =_dgc .ResolutionX ;return _edda .ResolutionX ,nil ;};func (_baff *Document )isFileHeaderPresent ()(bool ,error ){_baff .InputStream .Mark ();for _ ,_fbf :=range _ce {_gaaa ,_aac :=_baff .InputStream .ReadByte ();if _aac !=nil {return false ,_aac ;};if _fbf !=_gaaa {_baff .InputStream .Reset ();return false ,nil ;};};_baff .InputStream .Reset ();return true ,nil ;};func (_bef *Globals )GetSegmentByIndex (index int )(*_bd .Header ,error ){const _afd ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _bef ==nil {return nil ,_fg .Error (_afd ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_bef .Segments )==0{return nil ,_fg .Error (_afd ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_bef .Segments )-1{return nil ,_fg .Error (_afd ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _bef .Segments [index ],nil ;};func (_adgc *Document )mapData ()error {const _edf ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_bgg []*_bd .Header ;_gcf int64 ;_da _bd .Type ;);_ddd ,_afe :=_adgc .isFileHeaderPresent ();if _afe !=nil {return _fg .Wrap (_afe ,_edf ,"");};if _ddd {if _afe =_adgc .parseFileHeader ();_afe !=nil {return _fg .Wrap (_afe ,_edf ,"");};_gcf +=int64 (_adgc ._ee );_adgc .FullHeaders =true ;};var (_dgee *Page ;_ddb bool ;);for _da !=51&&!_ddb {_ecd ,_bce :=_bd .NewHeader (_adgc ,_adgc .InputStream ,_gcf ,_adgc .OrganizationType );if _bce !=nil {return _fg .Wrap (_bce ,_edf ,"");};_be .Log .Trace ("\u0044\u0065c\u006f\u0064\u0069\u006eg\u0020\u0073e\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u0075m\u0062\u0065\u0072\u003a\u0020\u0025\u0064\u002c\u0020\u0054\u0079\u0070e\u003a\u0020\u0025\u0073",_ecd .SegmentNumber ,_ecd .Type );_da =_ecd .Type ;if _da !=_bd .TEndOfFile {if _ecd .PageAssociation !=0{_dgee =_adgc .Pages [_ecd .PageAssociation ];if _dgee ==nil {_dgee =_ggb (_adgc ,_ecd .PageAssociation );_adgc .Pages [_ecd .PageAssociation ]=_dgee ;if _adgc .NumberOfPagesUnknown {_adgc .NumberOfPages ++;};};_dgee .Segments =append (_dgee .Segments ,_ecd );}else {_adgc .GlobalSegments .AddSegment (_ecd );};};_bgg =append (_bgg ,_ecd );_gcf =_adgc .InputStream .StreamPosition ();if _adgc .OrganizationType ==_bd .OSequential {_gcf +=int64 (_ecd .SegmentDataLength );};_ddb ,_bce =_adgc .reachedEOF (_gcf );if _bce !=nil {_be .Log .Debug ("\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u0072\u0065\u0061\u0063h\u0065\u0064\u0020\u0045\u004f\u0046\u0020\u0077\u0069\u0074\u0068\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_bce );return _fg .Wrap (_bce ,_edf ,"");};};_adgc .determineRandomDataOffsets (_bgg ,uint64 (_gcf ));return nil ;};func (_bee *Document )produceClassifiedPages ()(_gc error ){const _ae ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _bee .Classer ==nil {return nil ;};var (_dgb *Page ;_gg bool ;_agf *_bd .Header ;);for _cce :=1;_cce <=int (_bee .NumberOfPages );_cce ++{if _dgb ,_gg =_bee .Pages [_cce ];!_gg {return _fg .Errorf (_ae ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_cce );};if _dgb .EncodingMethod ==GenericEM {continue ;};if _agf ==nil {if _agf ,_gc =_bee .GlobalSegments .GetSymbolDictionary ();_gc !=nil {return _fg .Wrap (_gc ,_ae ,"");};};if _gc =_bee .produceClassifiedPage (_dgb ,_agf );_gc !=nil {return _fg .Wrapf (_gc ,_ae ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_cce );};};return nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_gdb *Page )GetWidth ()(int ,error ){return _gdb .getWidth ()};func (_dga *Document )AddClassifiedPage (bm *_fa .Bitmap ,method _ff .Method )(_bg error ){const _bgf ="\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0041\u0064d\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064P\u0061\u0067\u0065";if !_dga .FullHeaders &&_dga .NumberOfPages !=0{return _fg .Error (_bgf ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");};if _dga .Classer ==nil {if _dga .Classer ,_bg =_ff .Init (_ff .DefaultSettings ());_bg !=nil {return _fg .Wrap (_bg ,_bgf ,"");};};_fc :=int (_dga .nextPageNumber ());_ffc :=&Page {Segments :[]*_bd .Header {},Bitmap :bm ,Document :_dga ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_fc };_dga .Pages [_fc ]=_ffc ;switch method {case _ff .RankHaus :_ffc .EncodingMethod =RankHausEM ;case _ff .Correlation :_ffc .EncodingMethod =CorrelationEM ;};_ffc .AddPageInformationSegment ();if _bg =_dga .Classer .AddPage (bm ,_fc ,method );_bg !=nil {return _fg .Wrap (_bg ,_bgf ,"");};if _dga .FullHeaders {_ffc .AddEndOfPageSegment ();};return nil ;};func (_ebd *Document )GetPage (pageNumber int )(_bd .Pager ,error ){const _aed ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_be .Log .Debug ("\u004a\u0042\u0049\u00472\u0020\u0050\u0061\u0067\u0065\u0020\u002d\u0020\u0047e\u0074\u0050\u0061\u0067\u0065\u003a\u0020\u0025\u0064\u002e\u0020\u0050\u0061\u0067\u0065\u0020\u0063\u0061n\u006e\u006f\u0074\u0020\u0062e\u0020\u006c\u006f\u0077\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u002e\u0020\u0025\u0073",pageNumber ,_a .Stack ());return nil ,_fg .Errorf (_aed ,"\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032\u0020d\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u002d\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064 \u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a\u0020\u0025\u0064",pageNumber );};if pageNumber > len (_ebd .Pages ){_be .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_a .Stack ());return nil ,_fg .Error (_aed ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};_dcf ,_bfb :=_ebd .Pages [pageNumber ];if !_bfb {_be .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_a .Stack ());return nil ,_fg .Errorf (_aed ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _dcf ,nil ;};func (_gafc *Document )parseFileHeader ()error {const _egc ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_eea :=_gafc .InputStream .Seek (8,_ca .SeekStart );if _eea !=nil {return _fg .Wrap (_eea ,_egc ,"\u0069\u0064");};_ ,_eea =_gafc .InputStream .ReadBits (5);if _eea !=nil {return _fg .Wrap (_eea ,_egc ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_beeg ,_eea :=_gafc .InputStream .ReadBit ();if _eea !=nil {return _fg .Wrap (_eea ,_egc ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _beeg ==1{_gafc .GBUseExtTemplate =true ;};_beeg ,_eea =_gafc .InputStream .ReadBit ();if _eea !=nil {return _fg .Wrap (_eea ,_egc ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _beeg !=1{_gafc .NumberOfPagesUnknown =false ;};_beeg ,_eea =_gafc .InputStream .ReadBit ();if _eea !=nil {return _fg .Wrap (_eea ,_egc ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_gafc .OrganizationType =_bd .OrganizationType (_beeg );if !_gafc .NumberOfPagesUnknown {_gafc .NumberOfPages ,_eea =_gafc .InputStream .ReadUint32 ();if _eea !=nil {return _fg .Wrap (_eea ,_egc ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_gafc ._ee =13;};return nil ;};type EncodingMethod int ;type Page struct{Segments []*_bd .Header ;PageNumber int ;Bitmap *_fa .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;};func (_ecf *Page )Encode (w _g .BinaryWriter )(_fccf int ,_bdf error ){const _fgfa ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _cgdd int ;for _ ,_aff :=range _ecf .Segments {if _cgdd ,_bdf =_aff .Encode (w );_bdf !=nil {return _fccf ,_fg .Wrap (_bdf ,_fgfa ,"");};_fccf +=_cgdd ;};return _fccf ,nil ;};func (_fbbg *Page )getHeight ()(int ,error ){const _ggd ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _fbbg .FinalHeight !=0{return _fbbg .FinalHeight ,nil ;};_dfa :=_fbbg .getPageInformationSegment ();if _dfa ==nil {return 0,_fg .Error (_ggd ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bad ,_cfg :=_dfa .GetSegmentData ();if _cfg !=nil {return 0,_fg .Wrap (_cfg ,_ggd ,"");};_bgc ,_dab :=_bad .(*_bd .PageInformationSegment );if !_dab {return 0,_fg .Errorf (_ggd ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_bad );};if _bgc .PageBMHeight ==_f .MaxInt32 {_ ,_cfg =_fbbg .GetBitmap ();if _cfg !=nil {return 0,_fg .Wrap (_cfg ,_ggd ,"");};}else {_fbbg .FinalHeight =_bgc .PageBMHeight ;};return _fbbg .FinalHeight ,nil ;};func (_dcaa *Page )clearSegmentData (){for _gcefe :=range _dcaa .Segments {_dcaa .Segments [_gcefe ].CleanSegmentData ();};};func (_acd *Document )GetNumberOfPages ()(uint32 ,error ){if _acd .NumberOfPagesUnknown ||_acd .NumberOfPages ==0{if len (_acd .Pages )==0{if _eg :=_acd .mapData ();_eg !=nil {return 0,_fg .Wrap (_eg ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_acd .Pages )),nil ;};return _acd .NumberOfPages ,nil ;};func (_fee *Page )addTextRegionSegment (_bfeg []*_bd .Header ,_gda ,_gfa map[int ]int ,_dbeb []int ,_bae *_fa .Points ,_cbf *_fa .Bitmaps ,_afc *_e .IntSlice ,_gcd *_fa .Boxes ,_ggf ,_gba int ){_ebfc :=&_bd .TextRegion {NumberOfSymbols :uint32 (_gba )};_ebfc .InitEncode (_gda ,_gfa ,_dbeb ,_bae ,_cbf ,_afc ,_gcd ,_fee .FinalWidth ,_fee .FinalHeight ,_ggf );_gcdb :=&_bd .Header {RTSegments :_bfeg ,SegmentData :_ebfc ,PageAssociation :_fee .PageNumber ,Type :_bd .TImmediateTextRegion };_fdd :=_bd .TPageInformation ;if _gfa !=nil {_fdd =_bd .TSymbolDictionary ;};var _acf int ;for ;_acf < len (_fee .Segments );_acf ++{if _fee .Segments [_acf ].Type ==_fdd {_acf ++;break ;};};_fee .Segments =append (_fee .Segments ,nil );copy (_fee .Segments [_acf +1:],_fee .Segments [_acf :]);_fee .Segments [_acf ]=_gcdb ;};func (_afg *Page )getResolutionY ()(int ,error ){const _agcd ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _afg .ResolutionY !=0{return _afg .ResolutionY ,nil ;};_cbcga :=_afg .getPageInformationSegment ();if _cbcga ==nil {return 0,_fg .Error (_agcd ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_aab ,_ebc :=_cbcga .GetSegmentData ();if _ebc !=nil {return 0,_fg .Wrap (_ebc ,_agcd ,"");};_cedd ,_add :=_aab .(*_bd .PageInformationSegment );if !_add {return 0,_fg .Errorf (_agcd ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0074\u0079\u0070\u0065\u003a\u0027%\u0054\u0027",_aab );};_afg .ResolutionY =_cedd .ResolutionY ;return _afg .ResolutionY ,nil ;};func (_eag *Document )encodeSegment (_fbg *_bd .Header ,_gcb *int )error {const _gcec ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_fbg .SegmentNumber =_eag .nextSegmentNumber ();_bed ,_eac :=_fbg .Encode (_eag ._dg );if _eac !=nil {return _fg .Wrapf (_eac ,_gcec ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_fbg .SegmentNumber );};*_gcb +=_bed ;return nil ;};func (_dgbg *Page )composePageBitmap ()error {const _gcg ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _dgbg .PageNumber ==0{return nil ;};_dcb :=_dgbg .getPageInformationSegment ();if _dcb ==nil {return _fg .Error (_gcg ,"\u0070\u0061\u0067e \u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069o\u006e \u0073e\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_gcef ,_edfa :=_dcb .GetSegmentData ();if _edfa !=nil {return _edfa ;};_ecb ,_adbf :=_gcef .(*_bd .PageInformationSegment );if !_adbf {return _fg .Error (_gcg ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006da\u0074\u0069\u006f\u006e \u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065");};if _edfa =_dgbg .createPage (_ecb );_edfa !=nil {return _fg .Wrap (_edfa ,_gcg ,"");};_dgbg .clearSegmentData ();return nil ;};func _ggb (_bdde *Document ,_ddfa int )*Page {return &Page {Document :_bdde ,PageNumber :_ddfa ,Segments :[]*_bd .Header {}};};func (_bedf *Page )lastSegmentNumber ()(_fea uint32 ,_fba error ){const _cad ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_bedf .Segments )==0{return _fea ,_fg .Errorf (_cad ,"\u006e\u006f\u0020se\u0067\u006d\u0065\u006e\u0074\u0073\u0020\u0066\u006fu\u006ed\u0020i\u006e \u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027",_bedf .PageNumber );};return _bedf .Segments [len (_bedf .Segments )-1].SegmentNumber ,nil ;};func (_ga *Document )AddGenericPage (bm *_fa .Bitmap ,duplicateLineRemoval bool )(_caa error ){const _cge ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";if !_ga .FullHeaders &&_ga .NumberOfPages !=0{return _fg .Error (_cge ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");};_gag :=&Page {Segments :[]*_bd .Header {},Bitmap :bm ,Document :_ga ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true };_gag .PageNumber =int (_ga .nextPageNumber ());_ga .Pages [_gag .PageNumber ]=_gag ;_gag .AddPageInformationSegment ();if _caa =_gag .AddGenericRegion (bm ,0,0,0,_bd .TImmediateGenericRegion ,duplicateLineRemoval );_caa !=nil {return _fg .Wrap (_caa ,_cge ,"");};if _ga .FullHeaders {_gag .AddEndOfPageSegment ();};return nil ;};func (_feb *Document )determineRandomDataOffsets (_bb []*_bd .Header ,_gdd uint64 ){if _feb .OrganizationType !=_bd .ORandom {return ;};for _ ,_fdg :=range _bb {_fdg .SegmentDataStartOffset =_gdd ;_gdd +=_fdg .SegmentDataLength ;};};