unipdf/internal/cmap/cmap.go
2023-08-03 17:30:04 +00:00

142 lines
42 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 cmap ;import (_ag "bufio";_cf "bytes";_bg "encoding/hex";_bd "errors";_f "fmt";_fg "github.com/unidoc/unipdf/v3/common";_af "github.com/unidoc/unipdf/v3/core";_e "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_fb "io";_ad "sort";_c "strconv";
_g "strings";_b "unicode/utf16";);func (cmap *CMap )toBfData ()string {if len (cmap ._fcg )==0{return "";};_cac :=make ([]CharCode ,0,len (cmap ._fcg ));for _fbgc :=range cmap ._fcg {_cac =append (_cac ,_fbgc );};_ad .Slice (_cac ,func (_bbge ,_aecb int )bool {return _cac [_bbge ]< _cac [_aecb ]});
var _ead []charRange ;_dbd :=charRange {_cac [0],_cac [0]};_bgg :=cmap ._fcg [_cac [0]];for _ ,_gbc :=range _cac [1:]{_daa :=cmap ._fcg [_gbc ];if _gbc ==_dbd ._cb +1&&_fag (_daa )==_fag (_bgg )+1{_dbd ._cb =_gbc ;}else {_ead =append (_ead ,_dbd );_dbd ._cg ,_dbd ._cb =_gbc ,_gbc ;
};_bgg =_daa ;};_ead =append (_ead ,_dbd );var _cd []CharCode ;var _fbb []fbRange ;for _ ,_bfb :=range _ead {if _bfb ._cg ==_bfb ._cb {_cd =append (_cd ,_bfb ._cg );}else {_fbb =append (_fbb ,fbRange {_bc :_bfb ._cg ,_cba :_bfb ._cb ,_bcf :cmap ._fcg [_bfb ._cg ]});
};};_fg .Log .Trace ("\u0063\u0068ar\u0052\u0061\u006eg\u0065\u0073\u003d\u0025d f\u0062Ch\u0061\u0072\u0073\u003d\u0025\u0064\u0020fb\u0052\u0061\u006e\u0067\u0065\u0073\u003d%\u0064",len (_ead ),len (_cd ),len (_fbb ));var _feg []string ;if len (_cd )> 0{_cgf :=(len (_cd )+_adfd -1)/_adfd ;
for _bga :=0;_bga < _cgf ;_bga ++{_fed :=_adg (len (_cd )-_bga *_adfd ,_adfd );_feg =append (_feg ,_f .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_fed ));for _dabe :=0;_dabe < _fed ;_dabe ++{_dffa :=_cd [_bga *_adfd +_dabe ];
_gdc :=cmap ._fcg [_dffa ];_feg =append (_feg ,_f .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_dffa ,_cfdg (_gdc )));};_feg =append (_feg ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_fbb )> 0{_deb :=(len (_fbb )+_adfd -1)/_adfd ;
for _cdf :=0;_cdf < _deb ;_cdf ++{_adf :=_adg (len (_fbb )-_cdf *_adfd ,_adfd );_feg =append (_feg ,_f .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_adf ));for _gdg :=0;_gdg < _adf ;_gdg ++{_add :=_fbb [_cdf *_adfd +_gdg ];
_feg =append (_feg ,_f .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_add ._bc ,_add ._cba ,_cfdg (_add ._bcf )));};_feg =append (_feg ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _g .Join (_feg ,"\u000a");
};func (cmap *CMap )parseCIDRange ()error {for {_fgc ,_fafd :=cmap .parseObject ();if _fafd !=nil {if _fafd ==_fb .EOF {break ;};return _fafd ;};_aacd ,_cge :=_fgc .(cmapHexString );if !_cge {if _eca ,_cad :=_fgc .(cmapOperand );_cad {if _eca .Operand ==_cbbd {return nil ;
};return _bd .New ("\u0063\u0069\u0064\u0020\u0069\u006e\u0074\u0065\u0072\u0076\u0061\u006c\u0020s\u0074\u0061\u0072\u0074\u0020\u006du\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");};};_feec :=_aea (_aacd );
_fgc ,_fafd =cmap .parseObject ();if _fafd !=nil {if _fafd ==_fb .EOF {break ;};return _fafd ;};_dccg ,_cge :=_fgc .(cmapHexString );if !_cge {return _bd .New ("\u0063\u0069d\u0020\u0069\u006e\u0074e\u0072\u0076a\u006c\u0020\u0065\u006e\u0064\u0020\u006d\u0075s\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");
};if len (_aacd ._acgc )!=len (_dccg ._acgc ){return _bd .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");};_ecbg :=_aea (_dccg );
if _feec > _ecbg {_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0043\u0049\u0044\u0020\u0072\u0061\u006e\u0067\u0065\u002e\u0020\u0073t\u0061\u0072\u0074\u003d\u0030\u0078\u0025\u0030\u0032\u0078\u0020\u0065\u006e\u0064=\u0030x\u0025\u0030\u0032\u0078",_feec ,_ecbg );
return ErrBadCMap ;};_fgc ,_fafd =cmap .parseObject ();if _fafd !=nil {if _fafd ==_fb .EOF {break ;};return _fafd ;};_ece ,_cge :=_fgc .(cmapInt );if !_cge {return _bd .New ("\u0063\u0069\u0064\u0020\u0073t\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u006d\u0075\u0073t\u0020\u0062\u0065\u0020\u0061\u006e\u0020\u0064\u0065\u0063\u0069\u006d\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
};if _ece ._eeca < 0{return _bd .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_edfa :=_ece ._eeca ;for _feaa :=_feec ;_feaa <=_ecbg ;_feaa ++{cmap ._ecb [_feaa ]=CharCode (_edfa );
_edfa ++;};_fg .Log .Trace ("C\u0049\u0044\u0020\u0072\u0061\u006eg\u0065\u003a\u0020\u003c\u0030\u0078\u0025\u0058\u003e \u003c\u0030\u0078%\u0058>\u0020\u0025\u0064",_feec ,_ecbg ,_ece ._eeca );};return nil ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_cgc ,_dd :=cmap ._ace [cid ];
return _cgc ,_dd ;};func _dgee (_cccd cmapHexString )rune {_cee :=_bbf (_cccd );if _bbe :=len (_cee );_bbe ==0{_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054o\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065c\u0074\u0065\u0064\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u0072u\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023\u0076",_cccd );
return MissingCodeRune ;};if len (_cee )> 1{_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0065\u0078\u0061\u0063\u0074\u006c\u0079\u0020\u006f\u006e\u0065\u0020\u0072\u0075\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023v\u0020\u002d\u003e\u0020\u0025#\u0076",_cccd ,_cee );
};return _cee [0];};type cmapInt struct{_eeca int64 };func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_ca :=_ba (name );if _ca !=nil {return nil ,_ca ;};if cmap ._afg ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_gf ,_ca :=_ba (cmap ._afg );
if _ca !=nil {return nil ,_ca ;};for _cbf ,_dge :=range _gf ._ecb {if _ ,_fge :=cmap ._ecb [_cbf ];!_fge {cmap ._ecb [_cbf ]=_dge ;};};cmap ._cbc =append (cmap ._cbc ,_gf ._cbc ...);cmap .computeInverseMappings ();return cmap ,nil ;};type cmapFloat struct{_dae float64 };
type integer struct{_afca bool ;_fba int ;};func (cmap *CMap )NBits ()int {return cmap ._ae };var (ErrBadCMap =_bd .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_bd .New ("c\u006f\u006d\u006d\u0065\u006e\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0073\u0074a\u0072\u0074\u0020w\u0069t\u0068\u0020\u0025");
ErrBadCMapDict =_bd .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_cef ,_ada :=cmap ._ecb [code ];return _cef ,_ada ;};func (_cdg *cMapParser )parseObject ()(cmapObject ,error ){_cdg .skipSpaces ();
for {_fgb ,_acg :=_cdg ._cgff .Peek (2);if _acg !=nil {return nil ,_acg ;};if _fgb [0]=='%'{_cdg .parseComment ();_cdg .skipSpaces ();continue ;}else if _fgb [0]=='/'{_fgaga ,_gge :=_cdg .parseName ();return _fgaga ,_gge ;}else if _fgb [0]=='('{_abgd ,_eec :=_cdg .parseString ();
return _abgd ,_eec ;}else if _fgb [0]=='['{_eaac ,_gda :=_cdg .parseArray ();return _eaac ,_gda ;}else if (_fgb [0]=='<')&&(_fgb [1]=='<'){_dce ,_afeg :=_cdg .parseDict ();return _dce ,_afeg ;}else if _fgb [0]=='<'{_bge ,_adae :=_cdg .parseHexString ();
return _bge ,_adae ;}else if _af .IsDecimalDigit (_fgb [0])||(_fgb [0]=='-'&&_af .IsDecimalDigit (_fgb [1])){_bdag ,_dfd :=_cdg .parseNumber ();if _dfd !=nil {return nil ,_dfd ;};return _bdag ,nil ;}else {_dbb ,_bbad :=_cdg .parseOperand ();if _bbad !=nil {return nil ,_bbad ;
};return _dbb ,nil ;};};};func (cmap *CMap )parseSystemInfo ()error {_fbgf :=false ;_aceb :=false ;_bfg :="";_bdecb :=false ;_dde :=CIDSystemInfo {};for _dba :=0;_dba < 50&&!_bdecb ;_dba ++{_bfc ,_fedf :=cmap .parseObject ();if _fedf !=nil {return _fedf ;
};switch _fcf :=_bfc .(type ){case cmapDict :_bcff :=_fcf .Dict ;_gdca ,_cabf :=_bcff ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_cabf {_fg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_efg ,_cabf :=_gdca .(cmapString );if !_cabf {_fg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_dde .Registry =_efg .String ;
_gdca ,_cabf =_bcff ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_cabf {_fg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_efg ,_cabf =_gdca .(cmapString );
if !_cabf {_fg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_dde .Ordering =_efg .String ;_gce ,_cabf :=_bcff ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];
if !_cabf {_fg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gfc ,_cabf :=_gce .(cmapInt );if !_cabf {_fg .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_dde .Supplement =int (_gfc ._eeca );_bdecb =true ;case cmapOperand :switch _fcf .Operand {case "\u0062\u0065\u0067i\u006e":_fbgf =true ;case "\u0065\u006e\u0064":_bdecb =true ;case "\u0064\u0065\u0066":_aceb =false ;};case cmapName :if _fbgf {_bfg =_fcf .Name ;
_aceb =true ;};case cmapString :if _aceb {switch _bfg {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_dde .Registry =_fcf .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_dde .Ordering =_fcf .String ;};};case cmapInt :if _aceb {switch _bfg {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_dde .Supplement =int (_fcf ._eeca );
};};};};if !_bdecb {_fg .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0050\u0061\u0072\u0073\u0065\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006e\u0066\u006f\u0020\u0064\u0069\u0063\u0074\u0020\u0069\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u006c\u0079");
return ErrBadCMap ;};cmap ._fga =_dde ;return nil ;};type CMap struct{*cMapParser ;_ga string ;_ae int ;_ec int ;_aca string ;_afg string ;_fga CIDSystemInfo ;_cbc []Codespace ;_ecb map[CharCode ]CharCode ;_ace map[CharCode ]CharCode ;_fcg map[CharCode ]string ;
_ce map[string ]CharCode ;_bde []byte ;_bda *_af .PdfObjectStream ;_fd integer ;};func (cmap *CMap )parseBfrange ()error {for {var _edfb CharCode ;_fec ,_ggf :=cmap .parseObject ();if _ggf !=nil {if _ggf ==_fb .EOF {break ;};return _ggf ;};switch _aace :=_fec .(type ){case cmapOperand :if _aace .Operand ==_cgcc {return nil ;
};return _bd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_edfb =_aea (_aace );default:return _bd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");
};var _agb CharCode ;_fec ,_ggf =cmap .parseObject ();if _ggf !=nil {if _ggf ==_fb .EOF {break ;};return _ggf ;};switch _deg :=_fec .(type ){case cmapOperand :_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0049\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065\u0020\u0062\u0066r\u0061\u006e\u0067\u0065\u0020\u0074\u0072i\u0070\u006c\u0065\u0074");
return ErrBadCMap ;case cmapHexString :_agb =_aea (_deg );if _agb > 0xffff{_agb =0xffff;};default:_fg .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_fec );return ErrBadCMap ;
};_fec ,_ggf =cmap .parseObject ();if _ggf !=nil {if _ggf ==_fb .EOF {break ;};return _ggf ;};switch _gggf :=_fec .(type ){case cmapArray :if len (_gggf .Array )!=int (_agb -_edfb )+1{_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069d\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u006f\u0066\u0020\u0069\u0074\u0065\u006d\u0073\u0020\u0069\u006e\u0020a\u0072\u0072\u0061\u0079");
return ErrBadCMap ;};for _bea :=_edfb ;_bea <=_agb ;_bea ++{_cbg :=_gggf .Array [_bea -_edfb ];_afb ,_aeb :=_cbg .(cmapHexString );if !_aeb {return _bd .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_cbaga :=_bbf (_afb );cmap ._fcg [_bea ]=string (_cbaga );};case cmapHexString :_adab :=_bbf (_gggf );_bbbc :=len (_adab );for _bdd :=_edfb ;_bdd <=_agb ;_bdd ++{cmap ._fcg [_bdd ]=string (_adab );if _bbbc > 0{_adab [_bbbc -1]++;}else {_fg .Log .Debug ("\u004e\u006f\u0020c\u006d\u0061\u0070\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u0020\u0063\u0068\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065d\u0020\u0066\u006f\u0072\u0020\u0025\u0023\u0076",_bdd );
};if _bdd ==1<<32-1{break ;};};default:_fg .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_fec );return ErrBadCMap ;};};return nil ;};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _gd ,_gba :=cmap ._fcg [code ];
_gba {return _gd ,true ;};return MissingCodeString ,false ;};func (cmap *CMap )computeInverseMappings (){for _ecbe ,_afc :=range cmap ._ecb {if _ef ,_gg :=cmap ._ace [_afc ];!_gg ||(_gg &&_ef > _ecbe ){cmap ._ace [_afc ]=_ecbe ;};};for _efa ,_fa :=range cmap ._fcg {if _bgc ,_eed :=cmap ._ce [_fa ];
!_eed ||(_eed &&_bgc > _efa ){cmap ._ce [_fa ]=_efa ;};};_ad .Slice (cmap ._cbc ,func (_be ,_fab int )bool {return cmap ._cbc [_be ].Low < cmap ._cbc [_fab ].Low });};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_ea :=make (map[CharCode ]string ,len (codeToRune ));
for _bb ,_de :=range codeToRune {_ea [_bb ]=string (_de );};cmap :=&CMap {_ga :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_ec :2,_ae :16,_fga :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_cbc :[]Codespace {{Low :0,High :0xffff}},_fcg :_ea ,_ce :make (map[string ]CharCode ,len (codeToRune )),_ecb :make (map[CharCode ]CharCode ,len (codeToRune )),_ace :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func _bcg ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};func (cmap *CMap )Name ()string {return cmap ._ga };type cmapString struct{String string ;};func (cmap *CMap )String ()string {_bae :=cmap ._fga ;
_dbf :=[]string {_f .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._ae ),_f .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._ec )};if cmap ._aca !=""{_dbf =append (_dbf ,_f .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._aca ));
};if cmap ._afg !=""{_dbf =append (_dbf ,_f .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._afg ));};_dbf =append (_dbf ,_f .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_bae .String ()));
if len (cmap ._cbc )> 0{_dbf =append (_dbf ,_f .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._cbc )));};if len (cmap ._fcg )> 0{_dbf =append (_dbf ,_f .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._fcg )));
};return _f .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ga ,_g .Join (_dbf ,"\u0020"));};func NewCIDSystemInfo (obj _af .PdfObject )(_d CIDSystemInfo ,_ee error ){_db ,_cfg :=_af .GetDict (obj );if !_cfg {return CIDSystemInfo {},_af .ErrTypeError ;
};_fc ,_cfg :=_af .GetStringVal (_db .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_cfg {return CIDSystemInfo {},_af .ErrTypeError ;};_dg ,_cfg :=_af .GetStringVal (_db .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_cfg {return CIDSystemInfo {},_af .ErrTypeError ;
};_cc ,_cfg :=_af .GetIntVal (_db .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_cfg {return CIDSystemInfo {},_af .ErrTypeError ;};return CIDSystemInfo {Registry :_fc ,Ordering :_dg ,Supplement :_cc },nil ;};type cmapArray struct{Array []cmapObject ;
};func _cfdg (_eg string )string {_bdea :=[]rune (_eg );_fad :=make ([]string ,len (_bdea ));for _adb ,_faa :=range _bdea {_fad [_adb ]=_f .Sprintf ("\u0025\u0030\u0034\u0078",_faa );};return _f .Sprintf ("\u003c\u0025\u0073\u003e",_g .Join (_fad ,""));
};func (cmap *CMap )Bytes ()[]byte {_fg .Log .Trace ("\u0063\u006d\u0061\u0070.B\u0079\u0074\u0065\u0073\u003a\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",cmap .String ());if len (cmap ._bde )> 0{return cmap ._bde ;};cmap ._bde =[]byte (_g .Join ([]string {_dbfa ,cmap .toBfData (),_bcb },"\u000a"));
return cmap ._bde ;};func (_bbcg *cMapParser )parseArray ()(cmapArray ,error ){_edd :=cmapArray {};_edd .Array =[]cmapObject {};_bbcg ._cgff .ReadByte ();for {_bbcg .skipSpaces ();_fedc ,_bfgc :=_bbcg ._cgff .Peek (1);if _bfgc !=nil {return _edd ,_bfgc ;
};if _fedc [0]==']'{_bbcg ._cgff .ReadByte ();break ;};_caea ,_bfgc :=_bbcg .parseObject ();if _bfgc !=nil {return _edd ,_bfgc ;};_edd .Array =append (_edd .Array ,_caea );};return _edd ,nil ;};func (cmap *CMap )Type ()int {return cmap ._ec };func (cmap *CMap )parseName ()error {_gfg :="";
_abd :=false ;for _fgag :=0;_fgag < 20&&!_abd ;_fgag ++{_aef ,_ffa :=cmap .parseObject ();if _ffa !=nil {return _ffa ;};switch _gdcf :=_aef .(type ){case cmapOperand :switch _gdcf .Operand {case "\u0064\u0065\u0066":_abd =true ;default:_fg .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a\u0020\u0053\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076\u0020n\u0061\u006de\u003d\u0025\u0023\u0071",_aef ,_gfg );
if _gfg !=""{_gfg =_f .Sprintf ("\u0025\u0073\u0020%\u0073",_gfg ,_gdcf .Operand );};_fg .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a \u0052\u0065\u0063\u006f\u0076\u0065\u0072e\u0064\u002e\u0020\u006e\u0061\u006d\u0065\u003d\u0025\u0023\u0071",_gfg );
};case cmapName :_gfg =_gdcf .Name ;};};if !_abd {_fg .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._ga =_gfg ;return nil ;};func (cmap *CMap )inCodespace (_fbgg CharCode ,_aa int )bool {for _ ,_bf :=range cmap ._cbc {if _bf .Low <=_fbgg &&_fbgg <=_bf .High &&_aa ==_bf .NumBytes {return true ;
};};return false ;};func (_ebc *cMapParser )parseString ()(cmapString ,error ){_ebc ._cgff .ReadByte ();_edc :=_cf .Buffer {};_aaab :=1;for {_fgg ,_abbd :=_ebc ._cgff .Peek (1);if _abbd !=nil {return cmapString {_edc .String ()},_abbd ;};if _fgg [0]=='\\'{_ebc ._cgff .ReadByte ();
_bagd ,_gca :=_ebc ._cgff .ReadByte ();if _gca !=nil {return cmapString {_edc .String ()},_gca ;};if _af .IsOctalDigit (_bagd ){_cbbb ,_fede :=_ebc ._cgff .Peek (2);if _fede !=nil {return cmapString {_edc .String ()},_fede ;};var _gadb []byte ;_gadb =append (_gadb ,_bagd );
for _ ,_ddf :=range _cbbb {if _af .IsOctalDigit (_ddf ){_gadb =append (_gadb ,_ddf );}else {break ;};};_ebc ._cgff .Discard (len (_gadb )-1);_fg .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_gadb );
_gfd ,_fede :=_c .ParseUint (string (_gadb ),8,32);if _fede !=nil {return cmapString {_edc .String ()},_fede ;};_edc .WriteByte (byte (_gfd ));continue ;};switch _bagd {case 'n':_edc .WriteByte ('\n');case 'r':_edc .WriteByte ('\r');case 't':_edc .WriteByte ('\t');
case 'b':_edc .WriteByte ('\b');case 'f':_edc .WriteByte ('\f');case '(':_edc .WriteByte ('(');case ')':_edc .WriteByte (')');case '\\':_edc .WriteByte ('\\');};continue ;}else if _fgg [0]=='('{_aaab ++;}else if _fgg [0]==')'{_aaab --;if _aaab ==0{_ebc ._cgff .ReadByte ();
break ;};};_fgeb ,_ :=_ebc ._cgff .ReadByte ();_edc .WriteByte (_fgeb );};return cmapString {_edc .String ()},nil ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};func (cmap *CMap )matchCode (_bdg []byte )(_fcd CharCode ,_aecg int ,_baa bool ){for _ceb :=0;
_ceb < _ed ;_ceb ++{if _ceb < len (_bdg ){_fcd =_fcd <<8|CharCode (_bdg [_ceb ]);_aecg ++;};_baa =cmap .inCodespace (_fcd ,_ceb +1);if _baa {return _fcd ,_aecg ,true ;};};_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063o\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0020m\u0061t\u0063\u0068\u0065\u0073\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d=\u0025\u0023\u0071\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",_bdg ,string (_bdg ),cmap );
return 0,0,false ;};type charRange struct{_cg CharCode ;_cb CharCode ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_eda ,_bbg :=cmap ._ce [s ];return _eda ,_bbg ;};func IsPredefinedCMap (name string )bool {return _e .AssetExists (name )};
func _cbb (_aff bool )*CMap {_agg :=16;if _aff {_agg =8;};return &CMap {_ae :_agg ,_ecb :make (map[CharCode ]CharCode ),_ace :make (map[CharCode ]CharCode ),_fcg :make (map[CharCode ]string ),_ce :make (map[string ]CharCode )};};func (cmap *CMap )parseType ()error {_dcc :=0;
_ddd :=false ;for _cfbc :=0;_cfbc < 3&&!_ddd ;_cfbc ++{_eebc ,_dac :=cmap .parseObject ();if _dac !=nil {return _dac ;};switch _fdc :=_eebc .(type ){case cmapOperand :switch _fdc .Operand {case "\u0064\u0065\u0066":_ddd =true ;default:_fg .Log .Error ("\u0070\u0061r\u0073\u0065\u0054\u0079\u0070\u0065\u003a\u0020\u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020\u006f=%\u0023\u0076",_eebc );
return ErrBadCMap ;};case cmapInt :_dcc =int (_fdc ._eeca );};};cmap ._ec =_dcc ;return nil ;};func (cmap *CMap )parseCodespaceRange ()error {for {_cdc ,_efgb :=cmap .parseObject ();if _efgb !=nil {if _efgb ==_fb .EOF {break ;};return _efgb ;};_dca ,_def :=_cdc .(cmapHexString );
if !_def {if _eaa ,_ccd :=_cdc .(cmapOperand );_ccd {if _eaa .Operand ==_acba {return nil ;};return _bd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_cdc ,_efgb =cmap .parseObject ();if _efgb !=nil {if _efgb ==_fb .EOF {break ;
};return _efgb ;};_acfa ,_def :=_cdc .(cmapHexString );if !_def {return _bd .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_dca ._acgc )!=len (_acfa ._acgc ){return _bd .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");
};_cbcc :=_aea (_dca );_ebg :=_aea (_acfa );if _ebg < _cbcc {_fg .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0042\u0061d\u0020\u0063\u006fd\u0065\u0073\u0070\u0061\u0063\u0065\u002e\u0020\u006cow\u003d\u0030\u0078%\u0030\u0032x\u0020\u0068\u0069\u0067\u0068\u003d0\u0078\u00250\u0032\u0078",_cbcc ,_ebg );
return ErrBadCMap ;};_dec :=_acfa ._fae ;_cfgg :=Codespace {NumBytes :_dec ,Low :_cbcc ,High :_ebg };cmap ._cbc =append (cmap ._cbc ,_cfgg );_fg .Log .Trace ("\u0043\u006f\u0064e\u0073\u0070\u0061\u0063e\u0020\u006c\u006f\u0077\u003a\u0020\u0030x\u0025\u0058\u002c\u0020\u0068\u0069\u0067\u0068\u003a\u0020\u0030\u0078\u0025\u0058",_cbcc ,_ebg );
};if len (cmap ._cbc )==0{_fg .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u0020\u0069\u006e\u0020\u0063ma\u0070\u002e");return ErrBadCMap ;};return nil ;};func (_gbaf *cMapParser )parseOperand ()(cmapOperand ,error ){_ddfd :=cmapOperand {};
_dfe :=_cf .Buffer {};for {_aba ,_fdd :=_gbaf ._cgff .Peek (1);if _fdd !=nil {if _fdd ==_fb .EOF {break ;};return _ddfd ,_fdd ;};if _af .IsDelimiter (_aba [0]){break ;};if _af .IsWhiteSpace (_aba [0]){break ;};_aabf ,_ :=_gbaf ._cgff .ReadByte ();_dfe .WriteByte (_aabf );
};if _dfe .Len ()==0{return _ddfd ,_f .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");};_ddfd .Operand =_dfe .String ();return _ddfd ,nil ;};type cmapOperand struct{Operand string ;
};type cMapParser struct{_cgff *_ag .Reader };type cmapName struct{Name string ;};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._fd ._fba ,cmap ._fd ._afca };func (cmap *CMap )parseWMode ()error {var _fee int ;_ffd :=false ;for _edae :=0;_edae < 3&&!_ffd ;
_edae ++{_abb ,_ddde :=cmap .parseObject ();if _ddde !=nil {return _ddde ;};switch _abg :=_abb .(type ){case cmapOperand :switch _abg .Operand {case "\u0064\u0065\u0066":_ffd =true ;default:_fg .Log .Error ("\u0070\u0061\u0072\u0073\u0065\u0057\u004d\u006f\u0064\u0065:\u0020\u0073\u0074\u0061\u0074\u0065\u0020e\u0072\u0072\u006f\u0072\u002e\u0020\u006f\u003d\u0025\u0023\u0076",_abb );
return ErrBadCMap ;};case cmapInt :_fee =int (_abg ._eeca );};};cmap ._fd =integer {_afca :true ,_fba :_fee };return nil ;};func (cmap *CMap )parseBfchar ()error {for {_gde ,_bcbg :=cmap .parseObject ();if _bcbg !=nil {if _bcbg ==_fb .EOF {break ;};return _bcbg ;
};var _ddg CharCode ;switch _ebe :=_gde .(type ){case cmapOperand :if _ebe .Operand ==_ccf {return nil ;};return _bd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_ddg =_aea (_ebe );
default:return _bd .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_gde ,_bcbg =cmap .parseObject ();if _bcbg !=nil {if _bcbg ==_fb .EOF {break ;};return _bcbg ;};var _cca []rune ;switch _bfda :=_gde .(type ){case cmapOperand :if _bfda .Operand ==_ccf {return nil ;
};_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020o\u0070\u0065\u0072\u0061\u006e\u0064\u002e\u0020\u0025\u0023\u0076",_bfda );return ErrBadCMap ;case cmapHexString :_cca =_bbf (_bfda );
case cmapName :_fg .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u006e\u0061\u006de\u002e \u0025\u0023\u0076",_bfda );_cca =[]rune {MissingCodeRune };default:_fg .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u0074\u0079\u0070e\u002e \u0025\u0023\u0076",_gde );
return ErrBadCMap ;};cmap ._fcg [_ddg ]=string (_cca );};return nil ;};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._fga };func (_fedea *cMapParser )parseNumber ()(cmapObject ,error ){_gcaa ,_bab :=_af .ParseNumber (_fedea ._cgff );if _bab !=nil {return nil ,_bab ;
};switch _dgdb :=_gcaa .(type ){case *_af .PdfObjectFloat :return cmapFloat {float64 (*_dgdb )},nil ;case *_af .PdfObjectInteger :return cmapInt {int64 (*_dgdb )},nil ;};return nil ,_f .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_gcaa );
};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_fg .Log .Trace ("\u004c\u006fa\u0064\u0043\u006d\u0061\u0070\u0046\u0072\u006f\u006d\u0044\u0061\u0074\u0061\u003a\u0020\u0069\u0073\u0053\u0069\u006d\u0070\u006ce=\u0025\u0074",isSimple );
cmap :=_cbb (isSimple );cmap .cMapParser =_bba (data );_cce :=cmap .parse ();if _cce !=nil {return nil ,_cce ;};if len (cmap ._cbc )==0{if cmap ._afg !=""{return cmap ,nil ;};_fg .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0063\u006d\u0061p=\u0025\u0073",cmap );
return nil ,ErrBadCMap ;};cmap .computeInverseMappings ();return cmap ,nil ;};type fbRange struct{_bc CharCode ;_cba CharCode ;_bcf string ;};func (_adda *cMapParser )parseComment ()(string ,error ){var _gacf _cf .Buffer ;_ ,_fbf :=_adda .skipSpaces ();
if _fbf !=nil {return _gacf .String (),_fbf ;};_bdf :=true ;for {_dbg ,_aggcc :=_adda ._cgff .Peek (1);if _aggcc !=nil {_fg .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_aggcc );return _gacf .String (),_aggcc ;
};if _bdf &&_dbg [0]!='%'{return _gacf .String (),ErrBadCMapComment ;};_bdf =false ;if (_dbg [0]!='\r')&&(_dbg [0]!='\n'){_abf ,_ :=_adda ._cgff .ReadByte ();_gacf .WriteByte (_abf );}else {break ;};};return _gacf .String (),nil ;};func (_bfa *cMapParser )parseName ()(cmapName ,error ){_caa :="";
_cgb :=false ;for {_ggea ,_gcec :=_bfa ._cgff .Peek (1);if _gcec ==_fb .EOF {break ;};if _gcec !=nil {return cmapName {_caa },_gcec ;};if !_cgb {if _ggea [0]=='/'{_cgb =true ;_bfa ._cgff .ReadByte ();}else {_fg .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u004e\u0061\u006d\u0065\u0020\u0073\u0074a\u0072t\u0069n\u0067 \u0077\u0069\u0074\u0068\u0020\u0025\u0073\u0020\u0028\u0025\u0020\u0078\u0029",_ggea ,_ggea );
return cmapName {_caa },_f .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_ggea [0]);};}else {if _af .IsWhiteSpace (_ggea [0]){break ;}else if (_ggea [0]=='/')||(_ggea [0]=='[')||(_ggea [0]=='(')||(_ggea [0]==']')||(_ggea [0]=='<')||(_ggea [0]=='>'){break ;
}else if _ggea [0]=='#'{_ge ,_ccfg :=_bfa ._cgff .Peek (3);if _ccfg !=nil {return cmapName {_caa },_ccfg ;};_bfa ._cgff .Discard (3);_bbd ,_ccfg :=_bg .DecodeString (string (_ge [1:3]));if _ccfg !=nil {return cmapName {_caa },_ccfg ;};_caa +=string (_bbd );
}else {_feag ,_ :=_bfa ._cgff .ReadByte ();_caa +=string (_feag );};};};return cmapName {_caa },nil ;};func _bba (_fgac []byte )*cMapParser {_adbd :=cMapParser {};_cbd :=_cf .NewBuffer (_fgac );_adbd ._cgff =_ag .NewReader (_cbd );return &_adbd ;};func _fag (_cga string )rune {_bfd :=[]rune (_cga );
return _bfd [len (_bfd )-1]};func (_gcdc *cMapParser )parseHexString ()(cmapHexString ,error ){_gcdc ._cgff .ReadByte ();_aaad :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");
_adc :=_cf .Buffer {};for {_gcdc .skipSpaces ();_agcb ,_ddc :=_gcdc ._cgff .Peek (1);if _ddc !=nil {return cmapHexString {},_ddc ;};if _agcb [0]=='>'{_gcdc ._cgff .ReadByte ();break ;};_aab ,_ :=_gcdc ._cgff .ReadByte ();if _cf .IndexByte (_aaad ,_aab )>=0{_adc .WriteByte (_aab );
};};if _adc .Len ()%2==1{_fg .Log .Debug ("\u0070\u0061rs\u0065\u0048\u0065x\u0053\u0074\u0072\u0069ng:\u0020ap\u0070\u0065\u006e\u0064\u0069\u006e\u0067 '\u0030\u0027\u0020\u0074\u006f\u0020\u0025#\u0071",_adc .String ());_adc .WriteByte ('0');};_abgf :=_adc .Len ()/2;
_eee ,_ :=_bg .DecodeString (_adc .String ());return cmapHexString {_fae :_abgf ,_acgc :_eee },nil ;};type cmapHexString struct{_fae int ;_acgc []byte ;};type cmapObject interface{};const (_ed =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune );
);func _ba (_ccg string )(*CMap ,error ){_edf ,_edfc :=_e .Asset (_ccg );if _edfc !=nil {return nil ,_edfc ;};return LoadCmapFromDataCID (_edf );};type CharCode uint32 ;func (cmap *CMap )parse ()error {var _aecbd cmapObject ;for {_dfbd ,_ab :=cmap .parseObject ();
if _ab !=nil {if _ab ==_fb .EOF {break ;};_fg .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_ab );return _ab ;};switch _edfg :=_dfbd .(type ){case cmapOperand :_baae :=_edfg ;
switch _baae .Operand {case _cfc :_fdb :=cmap .parseCodespaceRange ();if _fdb !=nil {return _fdb ;};case _gdgf :_beb :=cmap .parseCIDRange ();if _beb !=nil {return _beb ;};case _aacc :_afea :=cmap .parseBfchar ();if _afea !=nil {return _afea ;};case _fdbc :_dgc :=cmap .parseBfrange ();
if _dgc !=nil {return _dgc ;};case _ddee :if _aecbd ==nil {_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0075\u0073\u0065\u0063m\u0061\u0070\u0020\u0077\u0069\u0074\u0068\u0020\u006e\u006f \u0061\u0072\u0067");return ErrBadCMap ;};_ff ,_ecf :=_aecbd .(cmapName );
if !_ecf {_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0075\u0073\u0065\u0063\u006d\u0061\u0070\u0020\u0061\u0072\u0067\u0020\u006eo\u0074\u0020\u0061\u0020\u006e\u0061\u006de\u0020\u0025\u0023\u0076",_aecbd );return ErrBadCMap ;};cmap ._afg =_ff .Name ;
case _gfga :_efb :=cmap .parseSystemInfo ();if _efb !=nil {return _efb ;};};case cmapName :_bag :=_edfg ;switch _bag .Name {case _gfga :_acc :=cmap .parseSystemInfo ();if _acc !=nil {return _acc ;};case _beag :_agc :=cmap .parseName ();if _agc !=nil {return _agc ;
};case _gfb :_bgce :=cmap .parseType ();if _bgce !=nil {return _bgce ;};case _afeb :_efbb :=cmap .parseVersion ();if _efbb !=nil {return _efbb ;};case _gag :if _ab =cmap .parseWMode ();_ab !=nil {return _ab ;};};};_aecbd =_dfbd ;};return nil ;};func _aea (_afbb cmapHexString )CharCode {_cbagae :=CharCode (0);
for _ ,_ecaa :=range _afbb ._acgc {_cbagae <<=8;_cbagae |=CharCode (_ecaa );};return _cbagae ;};const (_adfd =100;_dbfa ="\u000a\u002f\u0043\u0049\u0044\u0049\u006e\u0069\u0074\u0020\u002f\u0050\u0072\u006fc\u0053\u0065\u0074\u0020\u0066\u0069\u006e\u0064\u0072es\u006fu\u0072c\u0065 \u0062\u0065\u0067\u0069\u006e\u000a\u0031\u0032\u0020\u0064\u0069\u0063\u0074\u0020\u0062\u0065\u0067\u0069n\u000a\u0062\u0065\u0067\u0069\u006e\u0063\u006d\u0061\u0070\n\u002f\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065m\u0049\u006e\u0066\u006f\u0020\u003c\u003c\u0020\u002f\u0052\u0065\u0067\u0069\u0073t\u0072\u0079\u0020\u0028\u0041\u0064\u006f\u0062\u0065\u0029\u0020\u002f\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0028\u0055\u0043\u0053)\u0020\u002f\u0053\u0075\u0070p\u006c\u0065\u006d\u0065\u006et\u0020\u0030\u0020\u003e\u003e\u0020\u0064\u0065\u0066\u000a\u002f\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u002f\u0041\u0064\u006f\u0062\u0065-\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079\u002d\u0055\u0043\u0053\u0020\u0064\u0065\u0066\u000a\u002fC\u004d\u0061\u0070\u0054\u0079\u0070\u0065\u0020\u0032\u0020\u0064\u0065\u0066\u000a\u0031\u0020\u0062\u0065\u0067\u0069\u006e\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063e\u0072\u0061n\u0067\u0065\n\u003c\u0030\u0030\u0030\u0030\u003e\u0020<\u0046\u0046\u0046\u0046\u003e\u000a\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065\u000a";
_bcb ="\u0065\u006e\u0064\u0063\u006d\u0061\u0070\u000a\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u0063ur\u0072e\u006e\u0074\u0064\u0069\u0063\u0074\u0020\u002f\u0043\u004d\u0061\u0070 \u0064\u0065\u0066\u0069\u006e\u0065\u0072\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u0020\u0070\u006fp\u000a\u0065\u006e\u0064\u000a\u0065\u006e\u0064\u000a";
);const (_gfga ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_beab ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_bggg ="\u0065n\u0064\u0063\u006d\u0061\u0070";_cfc ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";
_acba ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_aacc ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_ccf ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_fdbc ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_cgcc ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_gdgf ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_cbbd ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_ddee ="\u0075s\u0065\u0063\u006d\u0061\u0070";
_gag ="\u0057\u004d\u006fd\u0065";_beag ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_gfb ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_afeb ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);type CIDSystemInfo struct{Registry string ;
Ordering string ;Supplement int ;};func (_ac *CIDSystemInfo )String ()string {return _f .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_ac .Registry ,_ac .Ordering ,_ac .Supplement );};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_cfd ,_fe :=cmap .BytesToCharcodes (data );
if !_fe {_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0043\u0068\u0061\u0072\u0063\u006f\u0064\u0065\u0042\u0079\u0074\u0065s\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069n\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0064\u0061\u0074\u0061\u003d\u005b\u0025\u0020\u0030\u0032\u0078]\u0020\u0063\u006d\u0061\u0070=\u0025\u0073",data ,cmap );
return "",0;};_cfb :=make ([]string ,len (_cfd ));var _cae []CharCode ;for _da ,_ccc :=range _cfd {_dab ,_ggb :=cmap ._fcg [_ccc ];if !_ggb {_cae =append (_cae ,_ccc );_dab =MissingCodeString ;};_cfb [_da ]=_dab ;};_bdec :=_g .Join (_cfb ,"");if len (_cae )> 0{_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020C\u0068\u0061\u0072c\u006f\u0064\u0065\u0042y\u0074\u0065\u0073\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069\u006e\u0020\u006d\u0061\u0070\u002e\u000a"+"\u0009d\u0061t\u0061\u003d\u005b\u0025\u00200\u0032\u0078]\u003d\u0025\u0023\u0071\u000a"+"\u0009\u0063h\u0061\u0072\u0063o\u0064\u0065\u0073\u003d\u0025\u0030\u0032\u0078\u000a"+"\u0009\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u003d\u0025\u0064\u0020%\u0030\u0032\u0078\u000a"+"\u0009\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u003d`\u0025\u0073\u0060\u000a"+"\u0009\u0063\u006d\u0061\u0070\u003d\u0025\u0073",data ,string (data ),_cfd ,len (_cae ),_cae ,_bdec ,cmap );
};return _bdec ,len (_cae );};type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _gac []CharCode ;if cmap ._ae ==8{for _ ,_aggc :=range data {_gac =append (_gac ,CharCode (_aggc ));
};return _gac ,true ;};for _ggg :=0;_ggg < len (data );{_eb ,_bdb ,_efe :=cmap .matchCode (data [_ggg :]);if !_efe {_fg .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0020\u006d\u0061\u0074\u0063\u0068\u0020\u0061\u0074\u0020\u0069\u003d\u0025\u0064\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d\u003d\u0025\u0023\u0071",_ggg ,data ,string (data ));
return _gac ,false ;};_gac =append (_gac ,_eb );_ggg +=_bdb ;};return _gac ,true ;};func _bbf (_gfcc cmapHexString )[]rune {if len (_gfcc ._acgc )==1{return []rune {rune (_gfcc ._acgc [0])};};_aed :=_gfcc ._acgc ;if len (_aed )%2!=0{_aed =append (_aed ,0);
_fg .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u0073\u002e\u0020\u0050\u0061\u0064\u0064\u0069\u006e\u0067\u0020\u0073\u0068\u0065\u0078\u003d\u0025#\u0076\u0020\u0074\u006f\u0020\u0025\u002b\u0076",_gfcc ,_aed );
};_addg :=len (_aed )>>1;_gea :=make ([]uint16 ,_addg );for _dcb :=0;_dcb < _addg ;_dcb ++{_gea [_dcb ]=uint16 (_aed [_dcb <<1])<<8+uint16 (_aed [_dcb <<1+1]);};_agbd :=_b .Decode (_gea );return _agbd ;};func (cmap *CMap )Stream ()(*_af .PdfObjectStream ,error ){if cmap ._bda !=nil {return cmap ._bda ,nil ;
};_fea ,_cag :=_af .MakeStream (cmap .Bytes (),_af .NewFlateEncoder ());if _cag !=nil {return nil ,_cag ;};cmap ._bda =_fea ;return cmap ._bda ,nil ;};func _adg (_bca ,_acfgc int )int {if _bca < _acfgc {return _bca ;};return _acfgc ;};func (_gcd *cMapParser )skipSpaces ()(int ,error ){_ffg :=0;
for {_aga ,_cace :=_gcd ._cgff .Peek (1);if _cace !=nil {return 0,_cace ;};if _af .IsWhiteSpace (_aga [0]){_gcd ._cgff .ReadByte ();_ffg ++;}else {break ;};};return _ffg ,nil ;};func (_cfgb *cMapParser )parseDict ()(cmapDict ,error ){_fg .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
_feaae :=_bcg ();_badb ,_ :=_cfgb ._cgff .ReadByte ();if _badb !='<'{return _feaae ,ErrBadCMapDict ;};_badb ,_ =_cfgb ._cgff .ReadByte ();if _badb !='<'{return _feaae ,ErrBadCMapDict ;};for {_cfgb .skipSpaces ();_dgd ,_adbg :=_cfgb ._cgff .Peek (2);if _adbg !=nil {return _feaae ,_adbg ;
};if (_dgd [0]=='>')&&(_dgd [1]=='>'){_cfgb ._cgff .ReadByte ();_cfgb ._cgff .ReadByte ();break ;};_adba ,_adbg :=_cfgb .parseName ();_fg .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_adba .Name );if _adbg !=nil {_fg .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0052\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u006e\u0061\u006d\u0065\u002e\u0020\u0065\u0072r=\u0025\u0076",_adbg );
return _feaae ,_adbg ;};_cfgb .skipSpaces ();_defc ,_adbg :=_cfgb .parseObject ();if _adbg !=nil {return _feaae ,_adbg ;};_feaae .Dict [_adba .Name ]=_defc ;_cfgb .skipSpaces ();_dgd ,_adbg =_cfgb ._cgff .Peek (3);if _adbg !=nil {return _feaae ,_adbg ;
};if string (_dgd )=="\u0064\u0065\u0066"{_cfgb ._cgff .Discard (3);};};return _feaae ,nil ;};func (cmap *CMap )parseVersion ()error {_acd :="";_faf :=false ;for _cab :=0;_cab < 3&&!_faf ;_cab ++{_aac ,_dbde :=cmap .parseObject ();if _dbde !=nil {return _dbde ;
};switch _ggc :=_aac .(type ){case cmapOperand :switch _ggc .Operand {case "\u0064\u0065\u0066":_faf =true ;default:_fg .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0070\u0061\u0072\u0073\u0065\u0056e\u0072\u0073\u0069\u006f\u006e\u003a \u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076",_aac );
return ErrBadCMap ;};case cmapInt :_acd =_f .Sprintf ("\u0025\u0064",_ggc ._eeca );case cmapFloat :_acd =_f .Sprintf ("\u0025\u0066",_ggc ._dae );case cmapString :_acd =_ggc .String ;default:_fg .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020p\u0061\u0072\u0073\u0065Ver\u0073io\u006e\u003a\u0020\u0042\u0061\u0064\u0020ty\u0070\u0065\u002e\u0020\u006f\u003d\u0025#\u0076",_aac );
};};cmap ._aca =_acd ;return nil ;};type cmapDict struct{Dict map[string ]cmapObject ;};