2021-02-11 10:35:13 +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 (_f "encoding/binary";_ff "fmt";_g "github.com/unidoc/unipdf/v3/common";_fa "github.com/unidoc/unipdf/v3/internal/bitwise";_gb "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_fc "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_af "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_b "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_fb "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_e "io";_de "math";_a "runtime/debug";);func (_gbc *Page )fitsPage (_fded *_af .PageInformationSegment ,_efb *_fc .Bitmap )bool {return _gbc .countRegions ()==1&&_fded .DefaultPixelValue ==0&&_fded .PageBMWidth ==_efb .Width &&_fded .PageBMHeight ==_efb .Height ;};func (_cbf *Document )encodeEOFHeader (_dfd _fa .BinaryWriter )(_ggd int ,_agd error ){_acc :=&_af .Header {SegmentNumber :_cbf .nextSegmentNumber (),Type :_af .TEndOfFile };if _ggd ,_agd =_acc .Encode (_dfd );_agd !=nil {return 0,_fb .Wrap (_agd ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _ggd ,nil ;};func (_agg *Document )isFileHeaderPresent ()(bool ,error ){_agg .InputStream .Mark ();for _ ,_ce :=range _gf {_bfbg ,_dag :=_agg .InputStream .ReadByte ();if _dag !=nil {return false ,_dag ;};if _ce !=_bfbg {_agg .InputStream .Reset ();return false ,nil ;};};_agg .InputStream .Reset ();return true ,nil ;};func (_cd *Document )produceClassifiedPage (_bf *Page ,_eba *_af .Header )(_ccc error ){const _bfb ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";var _dfa map[int ]int ;_gaa :=_cd ._ef ;_ag :=[]*_af .Header {_eba };if len (_cd ._gbf [_bf .PageNumber ])> 0{_dfa =map[int ]int {};_ca ,_cb :=_cd .addSymbolDictionary (_bf .PageNumber ,_cd .Classer .UndilatedTemplates ,_cd ._gbf [_bf .PageNumber ],_dfa ,false );if _cb !=nil {return _fb .Wrap (_cb ,_bfb ,"");};_ag =append (_ag ,_ca );_gaa +=len (_cd ._gbf [_bf .PageNumber ]);};_gag :=_cd ._gc [_bf .PageNumber ];_g .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_bf .PageNumber ,_gag );_bf .addTextRegionSegment (_ag ,_cd ._bc ,_dfa ,_cd ._gc [_bf .PageNumber ],_cd .Classer .PtaLL ,_cd .Classer .UndilatedTemplates ,_cd .Classer .ClassIDs ,nil ,_ffbad (_gaa ),len (_cd ._gc [_bf .PageNumber ]));return nil ;};func (_feg *Page )addTextRegionSegment (_aea []*_af .Header ,_ecf ,_cec map[int ]int ,_cff []int ,_daf *_fc .Points ,_efa *_fc .Bitmaps ,_gfd *_gb .IntSlice ,_fec *_fc .Boxes ,_dgg ,_egbf int ){_aba :=&_af .TextRegion {NumberOfSymbols :uint32 (_egbf )};_aba .InitEncode (_ecf ,_cec ,_cff ,_daf ,_efa ,_gfd ,_fec ,_feg .FinalWidth ,_feg .FinalHeight ,_dgg );_dbe :=&_af .Header {RTSegments :_aea ,SegmentData :_aba ,PageAssociation :_feg .PageNumber ,Type :_af .TImmediateTextRegion };_fae :=_af .TPageInformation ;if _cec !=nil {_fae =_af .TSymbolDictionary ;};var _eea int ;for ;_eea < len (_feg .Segments );_eea ++{if _feg .Segments [_eea ].Type ==_fae {_eea ++;break ;};};_feg .Segments =append (_feg .Segments ,nil );copy (_feg .Segments [_eea +1:],_feg .Segments [_eea :]);_feg .Segments [_eea ]=_dbe ;};type Page struct{Segments []*_af .Header ;PageNumber int ;Bitmap *_fc .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;};func (_gccg *Document )nextPageNumber ()uint32 {_gccg .NumberOfPages ++;return _gccg .NumberOfPages };func (_bged *Page )GetWidth ()(int ,error ){return _bged .getWidth ()};func (_bgb *Page )GetSegment (number int )(*_af .Header ,error ){const _fff ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";for _ ,_ebfd :=range _bgb .Segments {if _ebfd .SegmentNumber ==uint32 (number ){return _ebfd ,nil ;};};_bgba :=make ([]uint32 ,len (_bgb .Segments ));for _beg ,_bbc :=range _bgb .Segments {_bgba [_beg ]=_bbc .SegmentNumber ;};return nil ,_fb .Errorf (_fff ,"\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 ,_bgb .PageNumber ,_bgba );};func (_ade *Globals )GetSegmentByIndex (index int )(*_af .Header ,error ){const _bgef ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _ade ==nil {return nil ,_fb .Error (_bgef ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_ade .Segments )==0{return nil ,_fb .Error (_bgef ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_ade .Segments )-1{return nil ,_fb .Error (_bgef ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");};return _ade .Segments [index ],nil ;};func (_cded *Page )getPageInformationSegment ()*_af .Header {for _ ,_cad :=range _cded .Segments {if _cad .Type ==_af .TPageInformation {return _cad ;};};_g .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",_cded );return nil ;};func (_dge *Document )determineRandomDataOffsets (_afg []*_af .Header ,_eae uint64 ){if _dge .OrganizationType !=_af .ORandom {return ;};for _ ,_cgg :=range _afg {_cgg .SegmentDataStartOffset =_eae ;_eae +=_cgg .SegmentDataLength ;};};func (_gg *Document )addSymbolDictionary (_bg int ,_geb *_fc .Bitmaps ,_bd []int ,_ed map[int ]int ,_ee bool )(*_af .Header ,error ){const _dfg ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";_fge :=&_af .SymbolDictionary {};if _ebg :=_fge .InitEncode (_geb ,_bd ,_ed ,_ee );_ebg !=nil {return nil ,_ebg ;};_abb :=&_af .Header {Type :_af .TSymbolDictionary ,PageAssociation :_bg ,SegmentData :_fge };if _bg ==0{if _gg .GlobalSegments ==nil {_gg .GlobalSegments =&Globals {};};_gg .GlobalSegments .AddSegment (_abb );return _abb ,nil ;};_bb ,_dbc :=_gg .Pages [_bg ];if !_dbc {return nil ,_fb .Errorf (_dfg ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_bg );};var (_gcc int ;_dba *_af .Header ;);for _gcc ,_dba =range _bb .Segments {if _dba .Type ==_af .TPageInformation {break ;};};_gcc ++;_bb .Segments =append (_bb .Segments ,nil );copy (_bb .Segments [_gcc +1:],_bb .Segments [_gcc :]);_bb .Segments [_gcc ]=_abb ;return _abb ,nil ;};func (_def *Document )AddGenericPage (bm *_fc .Bitmap ,duplicateLineRemoval bool )(_eb error ){const _db ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";if !_def .FullHeaders &&_def .NumberOfPages !=0{return _fb .Error (_db ,"\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");};_ba :=&Page {Segments :[]*_af .Header {},Bitmap :bm ,Document :_def ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_fc .Chocolate };_ba .PageNumber =int (_def .nextPageNumber ());_def .Pages [_ba .PageNumber ]=_ba ;bm .InverseData ();_ba .AddPageInformationSegment ();if _eb =_ba .AddGenericRegion (bm ,0,0,0,_af .TImmediateGenericRegion ,duplicateLineRemoval );_eb !=nil {return _fb .Wrap (_eb ,_db ,"");};if _def .FullHeaders {_ba .AddEndOfPageSegment ();};return nil ;};func (_afgg *Document )reachedEOF (_bbb int64 )(bool ,error ){const _dfc ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_cca :=_afgg .InputStream .Seek (_bbb ,_e .SeekStart );if _cca !=nil {_g .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",_cca );return false ,_fb .Wrap (_cca ,_dfc ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_cca =_afgg .InputStream .ReadBits (32);if _cca ==_e .EOF {return true ,nil ;}else if _cca !=nil {return false ,_fb .Wrap (_cca ,_dfc ,"");};return false ,nil ;};func (_cce *Document )completeSymbols ()(_dbd error ){const _eg ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _cce .Classer ==nil {return nil ;};if _cce .Classer .UndilatedTemplates ==nil {return _fb .Error (_eg ,"\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");};_abe :=len (_cce .Pages )==1;_cgd :=make ([]int ,_cce .Classer .UndilatedTemplates .Size ());var _gdg int ;for _bea :=0;_bea < _cce .Classer .ClassIDs .Size ();_bea ++{_gdg ,_dbd =_cce .Classer .ClassIDs .Get (_bea );if _dbd !=nil {return _fb .Wrap (_dbd ,_eg ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");};_cgd [_gdg ]++;};var _dg []int ;for _abc :=0;_abc < _cce .Classer .UndilatedTemplates .Size ();_abc ++{if _cgd [_abc ]==0{return _fb .Error (_eg ,"\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 _cgd [_abc ]> 1||_abe {_dg =append (_dg ,_abc );};};_cce ._ef =len (_dg );var _ccf ,_bcd int ;for _bbf :=0;_bbf < _cce .Classer .ComponentPageNumbers .Size ();_bbf ++{_ccf ,_dbd =_cce .Classer .ComponentPageNumbers .Get (_bbf );if _dbd !=nil {return _fb .Wrapf (_dbd ,_eg ,"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",_bbf );};_bcd ,_dbd =_cce .Classer .ClassIDs .Get (_bbf );if _dbd !=nil {return _fb .Wrapf (_dbd ,_eg ,"\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",_ccf );};if _cgd [_bcd ]==1&&!_abe {_cce ._gbf [_ccf ]=append (_cce ._gbf [_ccf ],_bcd );};};if _dbd =_cce .Classer .ComputeLLCorners ();_dbd !=nil {return _fb .Wrap (_dbd ,_eg ,"");};return nil ;};type EncodingMethod int ;func (_ada *Page )GetBitmap ()(_aeag *_fc .Bitmap ,_cafb error ){_g .Log .Trace (_ff .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",_ada .PageNumber ));defer func (){if _cafb !=nil {_g .Log .Trace (_ff .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",_ada .PageNumber ,_cafb ));}else {_g .Log .Trace (_ff .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",_ada .PageNumber ));};}();if _ada .Bitmap !=nil {return _ada .Bitmap ,nil ;};_cafb =_ada .composePageBitmap ();if _cafb !=nil {return nil ,_cafb ;};return _ada .Bitmap ,nil ;};func (_acf *Document )parseFileHeader ()error {const _ddd ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_eab :=_acf .InputStream .Seek (8,_e .SeekStart );if _eab !=nil {return _fb .Wrap (_eab ,_ddd ,"\u0069\u0064");};_ ,_eab =_acf .InputStream .ReadBits (5);if _eab !=nil {return _fb .Wrap (_eab ,_ddd ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_aeb ,_eab :=_acf .InputStream .ReadBit ();if _eab !=nil {return _fb .Wrap (_eab ,_ddd ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");};if _aeb ==1{_acf .GBUseExtTemplate =true ;};_aeb ,_eab =_acf .InputStream .ReadBit ();if _eab !=nil {return _fb .Wrap (_eab ,_ddd ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _aeb !=1{_acf .NumberOfPagesUnknown =false ;};_aeb ,_eab =_acf .InputStream .ReadBit ();if _eab !=nil {return _fb .Wrap (_eab ,_ddd ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_acf .OrganizationType =_af .OrganizationType (_aeb );if !_acf .NumberOfPagesUnknown {_acf .NumberOfPages ,_eab =_acf .InputStream .ReadUint32 ();if _eab !=nil {return _fb .Wrap (_eab ,_ddd ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_acf ._fcb =13;};return nil ;};func (_gad *Document )encodeFileHeader (_eff _fa .BinaryWriter )(_gdgf int ,_egd error ){const _dbb ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_gdgf ,_egd =_eff .Write (_gf );if _egd !=nil {return _gdgf ,_fb .Wrap (_egd ,_dbb ,"\u0069\u0064");};if _egd =_eff .WriteByte (0x01);_egd !=nil {return _gdgf ,_fb .Wrap (_egd ,_dbb ,"\u0066\u006c\u0061g\u0073");};_gdgf ++;_egb :=make ([]byte ,4);_f .BigEndian .PutUint32 (_egb ,_gad .NumberOfPages );_efg ,_egd :=_eff .Write (_egb );if _egd !=nil {return _efg ,_fb .Wrap (_egd ,_dbb ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_gdgf +=_efg ;return _gdgf ,nil ;};func (_ad *Document )encodeSegment (_dgc *_af .Header ,_fe *int )error {const _gdgd ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";_dgc .SegmentNumber =_ad .nextSegmentNumber ();_bce ,_gcce :=_dgc .Encode (_ad ._ec );if _gcce !=nil {return _fb .Wrapf (_gcce ,_gdgd ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_dgc .SegmentNumber );};*_fe +=_bce ;return nil ;};func (_bcf *Page )GetResolutionX ()(int ,error ){return _bcf .getResolutionX ()};func (_ea *Document )completeClassifiedPages ()(_fgg error ){const _cc ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";if _ea .Classer ==nil {return nil ;};_ea ._ge =make ([]int ,_ea .Classer .UndilatedTemplates .Size ());for _faa :=0;_faa < _ea .Classer .ClassIDs .Size ();_faa ++{_fca ,_ae :=_ea .Classer .ClassIDs .Get (_faa );if _ae !=nil {return _fb .Wrapf (_ae ,_cc ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_faa );};_ea ._ge [_fca ]++;};var _aee []int ;for _cg :=0;_cg < _ea .Classer .UndilatedTemplates .Size ();_cg ++{if _ea .NumberOfPages ==1||_ea ._ge [_cg ]> 1{_aee =append (_aee ,_cg );};};var (_gaf *Page ;_ab bool ;);for _ddf ,_aa :=range *_ea .Classer .ComponentPageNumbers {if _gaf ,_ab =_ea .Pages [_aa ];!_ab {return _fb .Errorf (_cc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ddf );};if _gaf .EncodingMethod ==GenericEM {_g .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",_ddf );continue ;};_ea ._gc [_aa ]=append (_ea ._gc [_aa ],_ddf );_dbg ,_fcg :=_ea .Classer .ClassIDs .Get (_ddf );if _fcg !=nil {return _fb .Wrapf (_fcg ,_cc ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_ddf );};if _ea ._ge [_dbg ]==1&&_ea .NumberOfPages !=1{_da :=append (_ea ._gbf [_aa ],_dbg );_ea ._gbf [_aa ]=_da ;};};if _fgg =_ea .Classer .ComputeLLCorners ();_fgg !=nil {return _fb .Wrap (_fgg ,_cc ,"");};if _ ,_fgg =_ea .addSymbolDictionary (0,_ea .Classer .UndilatedTemplates ,_aee ,_ea ._bc ,false );_fgg !=nil {return _fb .Wrap (_fgg ,_cc ,"");};return nil ;};func (_ddc *Page )nextSegmentNumber ()uint32 {return _ddc .Document .nextSegmentNumber ()};func (_gfa *Page )AddEndOfPageSegment (){_acba :=&_af .Header {Type :_af .TEndOfPage ,PageAssociation :_gfa .PageNumber };_gfa .Segments =append (_gfa .Segments ,_acba );};func (_cgf *Document )GetNumberOfPages ()(uint32 ,error ){if _cgf .NumberOfPagesUnknown ||_cgf .NumberOfPages ==0{if len (_cgf .Pages )==0{if _cgc :=_cgf .mapData ();_cgc !=nil {return 0,_fb .Wrap (_cgc ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_cgf .Pages )),nil ;};return _cgf .NumberOfPages ,nil ;};const (GenericEM EncodingMethod =iota ;CorrelationEM ;RankHausEM ;);func (_dbeb *Page )getResolutionX ()(int ,error ){const _agf ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _dbeb .ResolutionX !=0{return _dbeb .ResolutionX ,nil ;};_ccdc :=_dbeb .getPageInformationSegment ();if _ccdc ==nil {return 0,_fb .Error (_agf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_cgff ,_bcg :=_ccdc .GetSegmentData ();if _bcg !=nil {return 0,_fb .Wrap (_bcg ,_agf ,"");};_befe ,_gcgf :=_cgff .(*_af .PageInformationSegment );if !_gcgf {return 0,_fb .Errorf (_agf ,"\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",_cgff );};_dbeb .ResolutionX =_befe .ResolutionX ;return _dbeb .ResolutionX ,nil ;};func (_bfg *Page )composePageBitmap ()error {const _abca ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";if _bfg .PageNumber ==0{return nil ;};_cecd :=_bfg .getPageInformationSegment ();if _cecd ==nil {return _fb .Error (_abca ,"\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");};_dbea ,_ede :=_cecd .GetSegmentData ();if _ede !=nil {return _ede ;};_aece ,_cfc :=_dbea .(*_af .PageInformationSegment );if !_cfc {return _fb .Error (_abca ,"\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 _ede =_bfg .createPage (_aece );_ede !=nil {return _fb .Wrap (_ede ,_abca ,"");};_bfg .clearSegmentData ();return nil ;};func (_bgg *Page )collectPageStripes ()(_eeb []_af .Segmenter ,_eaa error ){const _efab ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _ddbb _af .Segmenter ;for _ ,_adgd :=range _bgg .Segments {switch _adgd .Type {case 6,7,22,23,38,39,42,43:_ddbb ,_eaa =_adgd .GetSegmentData ();if _eaa !=nil {return nil ,_fb .Wrap (_eaa ,_efab ,"");};_eeb =append (_eeb ,_ddbb );case 50:_ddbb ,_eaa =_adgd .GetSegmentData ();if _eaa !=nil {return nil ,_eaa ;};_gbag ,_gee :=_ddbb .(*_af .EndOfStripe );if !_gee {return nil ,_fb .Errorf (_efab ,"\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",_ddbb );};_eeb =append (_eeb ,_gbag );_bgg .FinalHeight =_gbag .LineNumber ();};};return _eeb ,nil ;};func (_bcee *Page )String ()string {return _ff .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_bcee .PageNumber );};func (_bbd *Globals )GetSymbolDictionary ()(*_af .Header ,error ){const _eca ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";if _bbd ==nil {return nil ,_fb .Error (_eca ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_bbd .Segments )==0{return nil ,_fb .Error (_eca ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};for _ ,_bef :=range _bbd .Segments {if _bef .Type ==_af .TSymbolDictionary {return _bef ,nil ;};};return nil ,_fb .Error (_eca ,"\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 (_cgb *Document )Encode ()(_bac []byte ,_acb error ){const _cde ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _fcbg ,_egf int ;if _cgb .FullHeaders {if _fcbg ,_acb =_cgb .encodeFileHeader (_cgb ._ec );_acb !=nil {return nil ,_fb .Wrap (_acb ,_cde ,"");};};var (_bee bool ;_ded *_af .Header ;_dgf *Page ;);if _acb =_cgb .completeClassifiedPages ();_acb !=nil {return nil ,_fb .Wrap (_acb ,_cde ,"");};if _acb =_cgb .produceClassifiedPages ();_acb !=nil {return nil ,_fb .Wrap (_acb ,_cde ,"");};if _cgb .GlobalSegments !=nil {for _ ,_ded =range _cgb .GlobalSegments .Segments {if _acb =_cgb .encodeSegment (_ded ,&_fcbg );_acb !=nil {return nil ,_fb .Wrap (_acb ,_cde ,"");};};};for _abed :=1;_abed <=int (_cgb .NumberOfPages );_abed ++{if _dgf ,_bee =_cgb .Pages [_abed ];!_bee {return nil ,_fb .Errorf (_cde ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_abed );};for _ ,_ded =range _dgf .Segments {if _acb =_cgb .encodeSegment (_ded ,&_fcbg );_acb !=nil {return nil ,_fb .Wrap (_acb ,_cde ,"");};};};if _cgb .FullHeaders {if _egf ,_acb =_cgb .encodeEOFHeader (_cgb ._ec );_acb !=nil {return nil ,_fb .Wrap (_acb ,_cde ,"");};_fcbg +=_egf ;};_bac =_cgb ._ec .Data ();if len (_bac )!=_fcbg {_g .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",_fcbg ,len (_bac ));};return _bac ,nil ;};func (_ceec *Page )createNormalPage (_afb *_af .PageInformationSegment )error {const _cea ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_ceec .Bitmap =_fc .New (_afb .PageBMWidth ,_afb .PageBMHeight );if _afb .DefaultPixelValue !=0{_ceec .Bitmap .SetDefaultPixel ();};for _ ,_dbbe :=range _ceec .Segments {switch _dbbe .Type {case 6,7,22,23,38,39,42,43:_g .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_dbbe .SegmentNumber );_bbdd ,_eaea :=_dbbe .GetSegmentData ();if _eaea !=nil {return _eaea ;};_abag ,_gdb :=_bbdd .(_af .Regioner );if !_gdb {_g .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",_bbdd );return _fb .Errorf (_cea ,"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",_bbdd );};_gdgg ,_eaea :=_abag .GetRegionBitmap ();if _eaea !=nil {return _fb .Wrap (_eaea ,_cea ,"");};if _ceec .fitsPage (_afb ,_gdgg ){_ceec .Bitmap =_gdgg ;}else {_ged :=_abag .GetRegionInfo ();_bad :=_ceec .getCombinationOperator (_afb ,_ged .CombinaionOperator );_eaea =_fc .Blit (_gdgg ,_ceec .Bitmap ,int (_ged .XLocation ),int (_ged .YLocation ),_bad );if _eaea !=nil {return _fb .Wrap (_eaea ,_cea ,"");};};};};return nil ;};func _gff (_bfbc _fa .StreamReader ,_fgea *Globals )(*Document ,error ){_gaag :=&Document {Pages :make (map[int ]*Page ),InputStream :_bfbc ,OrganizationType :_af .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_fgea ,_fcb :9};if _gaag .GlobalSegments ==nil {_gaag .GlobalSegments =&Globals {};};if _baf :=_gaag .mapData ();_baf !=nil {return nil ,_baf ;};return _gaag ,nil ;};func (_bed *Page )GetResolutionY ()(int ,error ){return _bed .getResolutionY ()};func (_agb *Page )countRegions ()int {var _cac int ;for _ ,_gabd :=range _agb .Segments {switch _gabd .Type {case 6,7,22,23,38,39,42,43:_cac ++;};};return _cac ;};func (_dae *Page )AddPageInformationSegment (){_gcb :=&_af .PageInformationSegment {PageBMWidth :_dae .FinalWidth ,PageBMHeight :_dae .FinalHeight ,ResolutionX :_dae .ResolutionX ,ResolutionY :_dae .ResolutionY ,IsLossless :_dae .IsLossless };if _dae .BlackIsOne {_gcb .DefaultPixelValue =uint8 (0x1);};_ccd :=&_af .Header {PageAssociation :_dae .PageNumber ,SegmentDataLength :uint64 (_gcb .Size ()),SegmentData :_gcb ,Type :_af .TPageInformation };_dae .Segments =append (_dae .Segments ,_ccd );};func DecodeDocument (input _fa .StreamReader ,globals *Globals )(*Document ,error ){return _gff (input ,globals );};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_ec :_fa .BufferedMSB (),Pages :map[int ]*Page {},_gbf :map[int ][]int {},_bc :map[int ]int {},_gc :map[int ][]int {}};};func (_gac *Document )produceClassifiedPages ()(_fbb error ){const _gd ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";if _gac .Classer ==nil {return nil ;};var (_afe *Page ;_df bool ;_fcd *_af .Header ;);for _ffba :=1;_ffba <=int (_gac .NumberOfPages );_ffba ++{if _afe ,_df =_gac .Pages [_ffba ];!_df {return _fb .Errorf (_gd ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_ffba );};if _afe .EncodingMethod ==GenericEM {continue ;};if _fcd ==nil {if _fcd ,_fbb =_gac .GlobalSegments .GetSymbolDictionary ();_fbb !=nil {return _fb .Wrap (_fbb ,_gd ,"");};};if _fbb =_gac .produceClassifiedPage (_afe ,_fcd );_fbb !=nil {return _fb .Wrapf (_fbb ,_gd ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_ffba );};};return nil ;};func (_fffg *Page )getResolutionY ()(int ,error ){const _gdc ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";if _fffg .ResolutionY !=0{return _fffg .ResolutionY ,nil ;};_abef :=_fffg .getPageInformationSegment ();if _abef ==nil {return 0,_fb .Error (_gdc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_bbe ,_ceb :=_abef .GetSegmentData ();if _ceb !=nil {return 0,_fb .Wrap (_ceb ,_gdc ,"");};_adcc ,_daa :=_bbe .(*_af .PageInformationSegment );if !_daa {return 0,_fb .Errorf (_gdc ,"\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",_bbe );};_fffg .ResolutionY =_adcc .ResolutionY ;return _fffg .ResolutionY ,nil ;};func (_bgf *Page )getWidth ()(int ,error ){const _cafc ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _bgf .FinalWidth !=0{return _bgf .FinalWidth ,nil ;};_gcg :=_bgf .getPageInformationSegment ();if _gcg ==nil {return 0,_fb .Error (_cafc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_dgcc ,_gfe :=_gcg .GetSegmentData ();if _gfe !=nil {return 0,_fb .Wrap (_gfe ,_cafc ,"");};_ceed ,_faaa :=_dgcc .(*_af .PageInformationSegment );if !_faaa {return 0,_fb .Errorf (_cafc ,"\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",_dgcc );};_bgf .FinalWidth =_ceed .PageBMWidth ;return _bgf .FinalWidth ,nil ;};func (_dede *Page )createStripedPage (_ecad *_af .PageInformationSegment )error {const _fggf ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_gedb ,_gffb :=_dede .collectPageStripes ();if _gffb !=nil {return _fb .Wrap (_gffb ,_fggf ,"");};var _dgd int ;for _ ,_bde :=range _gedb {if _fcga ,_edb :=_bde .(*_af .EndOfStripe );_edb {_dgd =_fcga .LineNumber ()+1;}else {_dgb :=_bde .(_af .Regioner );_fde :=_dgb .GetRegionInfo ();_cba :=_dede .getCombinationOperator (_ecad ,_fde .CombinaionOperator );_bcfg ,_ccff :=_dgb .GetRegionBitmap ();if _ccff !=nil {return _fb .Wrap (_ccff ,_fggf ,"");};_ccff =_fc .Blit (_bcfg ,_dede .Bitmap ,int (_fde .XLocation ),_dgd ,_cba );if _ccff !=nil {return _fb .Wrap (_ccff ,_fggf ,"");};};};return nil ;};func (_fggg *Document )mapData ()error {const _dee ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_bge []*_af .Header ;_aeg int64 ;_cdeg _af .Type ;);_afeb ,_bfd :=_fggg .isFileHeaderPresent ();if _bfd !=nil {return _fb .Wrap (_bfd ,_dee ,"");};if _afeb {if _bfd =_fggg .parseFileHeader ();_bfd !=nil {return _fb .Wrap (_bfd ,_dee ,"");};_aeg +=int64 (_fggg ._fcb );_fggg .FullHeaders =true ;};var (_adg *Page ;_dfga bool ;);for _cdeg !=51&&!_dfga {_edd ,_cggf :=_af .NewHeader (_fggg ,_fggg .InputStream ,_aeg ,_fggg .OrganizationType );if _cggf !=nil {return _fb .Wrap (_cggf ,_dee ,"");};_g .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",_edd .SegmentNumber ,_edd .Type );_cdeg =_edd .Type ;if _cdeg !=_af .TEndOfFile {if _edd .PageAssociation !=0{_adg =_fggg .Pages [_edd .PageAssociation ];if _adg ==nil {_adg =_adc (_fggg ,_edd .PageAssociation );_fggg .Pages [_edd .PageAssociation ]=_adg ;if _fggg .NumberOfPagesUnknown {_fggg .NumberOfPages ++;};};_adg .Segments =append (_adg .Segments ,_edd );}else {_fggg .GlobalSegments .AddSegment (_edd );};};_bge =append (_bge ,_edd );_aeg =_fggg .InputStream .StreamPosition ();if _fggg .OrganizationType ==_af .OSequential {_aeg +=int64 (_edd .SegmentDataLength );};_dfga ,_cggf =_fggg .reachedEOF (_aeg );if _cggf !=nil {_g .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",_cggf );return _fb .Wrap (_cggf ,_dee ,"");};};_fggg .determineRandomDataOffsets (_bge ,uint64 (_aeg ));return nil ;};func (_caf *Globals )AddSegment (segment *_af .Header ){_caf .Segments =append (_caf .Segments ,segment )};func (_bcc *Document )GetGlobalSegment (i int )(*_af .Header ,error ){_dec ,_cab :=_bcc .GlobalSegments .GetSegment (i );if _cab !=nil {return nil ,_fb .Wrap (_cab ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");};return _dec ,nil ;};var _gf =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};func _adc (_bae *Document ,_aec int )*Page {return &Page {Document :_bae ,PageNumber :_aec ,Segments :[]*_af .Header {}};};func (_bdge *Page )Encode (w _fa .BinaryWriter )(_deea int ,_dfe error ){const _dfcf ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _fgead int ;for _ ,_daee :=range _bdge .Segments {if _fgead ,_dfe =_daee .Encode (w );_dfe !=nil {return _deea ,_fb .Wrap (_dfe ,_dfcf ,"");};_deea +=_fgead ;};return _deea ,nil ;};func (_cee *Globals )GetSegment (segmentNumber int )(*_af .Header ,error ){const _ebf ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";if _cee ==nil {return nil ,_fb .Error (_ebf ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_cee .Segments )==0{return nil ,_fb .Error (_ebf ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};var _fbc *_af .Header ;for _ ,_fbc =range _cee .Segments {if _fbc .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _fbc ==nil {return nil ,_fb .Error (_ebf ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};return _fbc ,nil ;};func (_aga *Page )getCombinationOperator (_beeg *_af .PageInformationSegment ,_abec _fc .CombinationOperator )_fc .CombinationOperator {if _beeg .CombinationOperatorOverrideAllowed (){return _abec ;};return _beeg .CombinationOperator ();};func (_fcc *Document )GetPage (pageNumber int )(_af .Pager ,error ){const _edg ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";if pageNumber < 0{_g .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 ,_fb .Errorf (_edg ,"\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 (_fcc .Pages ){_g .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 ,_fb .Error (_edg ,"\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");};_dfb ,_fd :=_fcc .Pages [pageNumber ];if !_fd {_g .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 ,_fb .Errorf (_edg ,"\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 _dfb ,nil ;};func (_cfg *Page )clearSegmentData (){for _cgbd :=range _cfg .Segments {_cfg .Segments [_cgbd ].CleanSegmentData ();};};func (_acca *Page )AddGenericRegion (bm *_fc .Bitmap ,xloc ,yloc ,template int ,tp _af .Type ,duplicateLineRemoval bool )error {const _gab ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";_eef :=&_af .GenericRegion {};if _aaa :=_eef .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_aaa !=nil {return _fb .Wrap (_aaa ,_gab ,"");};_abcd :=&_af .Header {Type :_af .TImmediateGenericRegion ,PageAssociation :_acca .PageNumber ,SegmentData :_eef };_acca .Segments =append (_acca .Segments ,_abcd );return nil ;};type Globals struct{Segments []*_af .Header ;};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _fa .StreamReader ;GlobalSegments *Globals ;OrganizationType _af .OrganizationType ;Classer *_b .Classer ;XRes ,YRes int ;FullHeaders bool ;CurrentSegmentNumber uint32 ;AverageTemplates *_fc .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_fcb uint8 ;_ec *_fa .BufferedWriter ;EncodeGlobals bool ;_ef int ;_gbf map[int ][]int ;_gc map[int ][]int ;_ge []int ;_bc map[int ]int ;};func _ffbad (_dc int )int {_gfg :=0;_be :=(_dc &(_dc -1))==0;_dc >>=1;for ;_dc !=0;_dc >>=1{_gfg ++;};if _be {return _gfg ;};return _gfg +1;};func (_efge *Page )lastSegmentNumber ()(_dega uint32 ,_edf error ){const _age ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";if len (_efge .Segments )==0{return _dega ,_fb .Errorf (_age ,"\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",_efge .PageNumber );};return _efge .Segments [len (_efge .Segments )-1].SegmentNumber ,nil ;};func (_bdg *Document )nextSegmentNumber ()uint32 {_fba :=_bdg .CurrentSegmentNumber ;_bdg .CurrentSegmentNumber ++;return _fba ;};func (_ga *Document )AddClassifiedPage (bm *_fc .Bitmap ,method _b .Method )(_ac error ){const _c ="\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 !_ga .FullHeaders &&_ga .NumberOfPages !=0{return _fb .Error (_c ,"\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 _ga .Classer ==nil {if _ga .Classer ,_ac =_b .Init (_b .DefaultSettings ());_ac !=nil {return _fb .Wrap (_ac ,_c ,"");};};_fg :=int (_ga .nextPageNumber ());_dd :=&Page {Segments :[]*_af .Header {},Bitmap :bm ,Document :_ga ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_fg };_ga .Pages [_fg ]=_dd ;switch method {case _b .RankHaus :_dd .EncodingMethod =RankHausEM ;case _b .Correlation :_dd .EncodingMethod =CorrelationEM ;};_dd .AddPageInformationSegment ();if _ac =_ga .Classer .AddPage (bm ,_fg ,method );_ac !=nil {return _fb .Wrap (_ac ,_c ,"");};if _ga .FullHeaders {_dd .AddEndOfPageSegment ();};return nil ;};func (_ddb *Page )GetHeight ()(int ,error ){return _ddb .getHeight ()};func (_cbb *Page )getHeight ()(int ,error ){const _egc ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _cbb .FinalHeight !=0{return _cbb .FinalHeight ,nil ;};_cceb :=_cbb .getPageInformationSegment ();if _cceb ==nil {return 0,_fb .Error (_egc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_gacg ,_gbac :=_cceb .GetSegmentData ();if _gbac !=nil {return 0,_fb .Wrap (_gbac ,_egc ,"");};_gce ,_bded :=_gacg .(*_af .PageInformationSegment );if !_bded {return 0,_fb .Errorf (_egc ,"\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",_gacg );};if _gce .PageBMHeight ==_de .MaxInt32 {_ ,_gbac =_cbb .GetBitmap ();if _gbac !=nil {return 0,_fb .Wrap (_gbac ,_egc ,"");};}else {_cbb .FinalHeight =_gce .PageBMHeight ;};return _cbb .FinalHeight ,nil ;};func (_dfeb *Page )createPage (_deg *_af .PageInformationSegment )error {var _fga error ;if !_deg .IsStripe ||_deg .PageBMHeight !=-1{_fga =_dfeb .createNormalPage (_deg );}else {_fga =_dfeb .createStripedPage (_deg );};return _fga ;};