package extractor ;import (_bb "bytes";_cc "errors";_ad "fmt";_g "github.com/unidoc/unipdf/v4/common";_fc "github.com/unidoc/unipdf/v4/contentstream";_cg "github.com/unidoc/unipdf/v4/core";_ec "github.com/unidoc/unipdf/v4/internal/license";_ac "github.com/unidoc/unipdf/v4/internal/textencoding"; _dc "github.com/unidoc/unipdf/v4/internal/transform";_aa "github.com/unidoc/unipdf/v4/model";_a "golang.org/x/image/draw";_b "golang.org/x/text/unicode/norm";_ff "image";_ed "image/color";_da "io";_ea "math";_e "reflect";_bcc "regexp";_f "sort";_add "strings"; _c "unicode";_bc "unicode/utf8";);type textState struct{_debe float64 ;_bag float64 ;_beb float64 ;_dcfb float64 ;_dced float64 ;_cbffg RenderMode ;_bac float64 ;_ebca *_aa .PdfFont ;_bcgef _aa .PdfRectangle ;_accd int ;_gfbdb int ;};func (_gfff *subpath )close (){if !_cfaf (_gfff ._eae [0],_gfff .last ()){_gfff .add (_gfff ._eae [0]); };_gfff ._bebg =true ;_gfff .removeDuplicates ();};func (_fbe *shapesState )moveTo (_egb ,_cbcc float64 ){_fbe ._geee =true ;_fbe ._cfddfa =_fbe .devicePoint (_egb ,_cbcc );if _fdee {_g .Log .Info ("\u006d\u006fv\u0065\u0054\u006f\u003a\u0020\u0025\u002e\u0032\u0066\u002c\u0025\u002e\u0032\u0066\u0020\u0064\u0065\u0076\u0069\u0063\u0065\u003d%.\u0032\u0066",_egb ,_cbcc ,_fbe ._cfddfa ); };};func (_aeac *textObject )setTextRise (_cdadg float64 ){if _aeac ==nil {return ;};_aeac ._abf ._bac =_cdadg ;};func (_fafcc rulingList )removeDuplicates ()rulingList {if len (_fafcc )==0{return nil ;};_fafcc .sort ();_afea :=rulingList {_fafcc [0]}; for _ ,_ggbe :=range _fafcc [1:]{if _ggbe .equals (_afea [len (_afea )-1]){continue ;};_afea =append (_afea ,_ggbe );};return _afea ;};const _ebec =1.0/1000.0;func _dadf (_cagd float64 )int {var _gbfe int ;if _cagd >=0{_gbfe =int (_cagd /_bbbd );}else {_gbfe =int (_cagd /_bbbd )-1; };return _gbfe ;};type textMark struct{_aa .PdfRectangle ;_afbe int ;_gacc string ;_efdc string ;_acea *_aa .PdfFont ;_fadfd float64 ;_acbd float64 ;_ecef _dc .Matrix ;_fcfa _dc .Point ;_ebac _aa .PdfRectangle ;_fbbbc _ed .Color ;_abag _ed .Color ;_eecd _cg .PdfObject ; _aacc []string ;Tw float64 ;Th float64 ;_ecfc int ;_dcdga int ;};func _bgdca (_ddea _aa .PdfRectangle ,_efac []*textLine )*textPara {return &textPara {PdfRectangle :_ddea ,_fdfb :_efac };};func _afgf (_fecc ,_eedf _aa .PdfRectangle )bool {return _bbgc (_fecc ,_eedf )&&_ffae (_fecc ,_eedf )}; func _afag (_ffca []byte ,_aeff *_aa .PdfFont )string {_eec :=_aeff .BytesToCharcodes (_ffca );_efb ,_fce ,_cbbg :=_aeff .CharcodesToStrings (_eec ,"");if _cbbg > 0{_g .Log .Debug ("\u0072\u0065nd\u0065\u0072\u0054e\u0078\u0074\u003a\u0020num\u0043ha\u0072\u0073\u003d\u0025\u0064\u0020\u006eum\u004d\u0069\u0073\u0073\u0065\u0073\u003d%\u0064",_fce ,_cbbg ); };_cdad :=_add .Join (_efb ,"");return _cdad ;};func _bbgf (_cdebg map[float64 ]map[float64 ]gridTile )[]float64 {_bggbf :=make ([]float64 ,0,len (_cdebg ));_aeebg :=make (map[float64 ]struct{},len (_cdebg ));for _ ,_ceea :=range _cdebg {for _edgc :=range _ceea {if _ ,_aecd :=_aeebg [_edgc ]; _aecd {continue ;};_bggbf =append (_bggbf ,_edgc );_aeebg [_edgc ]=struct{}{};};};_f .Float64s (_bggbf );return _bggbf ;};func _bbdec (_dbfbd *list ,_fcb *_add .Builder ,_fccd *string ){_debcc :=_ecfg (_dbfbd ,_fccd );_fcb .WriteString (_debcc );for _ ,_bea :=range _dbfbd ._bfaf {_gfbff :=*_fccd +"\u0020\u0020\u0020"; _bbdec (_bea ,_fcb ,&_gfbff );};};