unipdf/internal/cmap/cmap.go
2020-09-14 09:32:45 +00:00

12 lines
40 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 (_f "bufio";_eg "bytes";_ef "encoding/hex";_af "errors";_c "fmt";_be "github.com/unidoc/unipdf/v3/common";_d "github.com/unidoc/unipdf/v3/core";_ec "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_ge "io";_ac "sort";_e "strconv";_b "strings";_g "unicode/utf16";);func _cd (_bb string )(*CMap ,error ){_cb ,_fee :=_ec .Asset (_bb );if _fee !=nil {return nil ,_fee ;};return LoadCmapFromDataCID (_cb );};func _fffc (_ebbaf cmapHexString )rune {_ebff :=_fdc (_ebbaf );if _cagc :=len (_ebff );_cagc ==0{_be .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",_ebbaf );return MissingCodeRune ;};if len (_ebff )> 1{_be .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",_ebbaf ,_ebff );};return _ebff [0];};func (cmap *CMap )parseCIDRange ()error {for {_caeb ,_eda :=cmap .parseObject ();if _eda !=nil {if _eda ==_ge .EOF {break ;};return _eda ;};_eaa ,_gbf :=_caeb .(cmapHexString );if !_gbf {if _afad ,_cbgf :=_caeb .(cmapOperand );_cbgf {if _afad .Operand ==_fda {return nil ;};return _af .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");};};_aea :=_egd (_eaa );_caeb ,_eda =cmap .parseObject ();if _eda !=nil {if _eda ==_ge .EOF {break ;};return _eda ;};_ddf ,_gbf :=_caeb .(cmapHexString );if !_gbf {return _af .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 (_eaa ._ggeb )!=len (_ddf ._ggeb ){return _af .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");};_baed :=_egd (_ddf );if _aea > _baed {_be .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",_aea ,_baed );return ErrBadCMap ;};_caeb ,_eda =cmap .parseObject ();if _eda !=nil {if _eda ==_ge .EOF {break ;};return _eda ;};_daa ,_gbf :=_caeb .(cmapInt );if !_gbf {return _af .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 _daa ._gbff < 0{return _af .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_bd :=_daa ._gbff ;for _aefb :=_aea ;_aefb <=_baed ;_aefb ++{cmap ._edg [_aefb ]=CharCode (_bd );_bd ++;};_be .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",_aea ,_baed ,_daa ._gbff );};return nil ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};type cmapName struct{Name string ;};func (_ddc *cMapParser )parseHexString ()(cmapHexString ,error ){_ddc ._ebb .ReadByte ();_dfb :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");_bed :=_eg .Buffer {};for {_ddc .skipSpaces ();_cbba ,_degg :=_ddc ._ebb .Peek (1);if _degg !=nil {return cmapHexString {},_degg ;};if _cbba [0]=='>'{_ddc ._ebb .ReadByte ();break ;};_edca ,_ :=_ddc ._ebb .ReadByte ();if _eg .IndexByte (_dfb ,_edca )>=0{_bed .WriteByte (_edca );};};if _bed .Len ()%2==1{_be .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",_bed .String ());_bed .WriteByte ('0');};_bede :=_bed .Len ()/2;_gfgf ,_ :=_ef .DecodeString (_bed .String ());return cmapHexString {_fff :_bede ,_ggeb :_gfgf },nil ;};func (cmap *CMap )parseVersion ()error {_beec :="";_dce :=false ;for _fdb :=0;_fdb < 3&&!_dce ;_fdb ++{_abe ,_fcf :=cmap .parseObject ();if _fcf !=nil {return _fcf ;};switch _dee :=_abe .(type ){case cmapOperand :switch _dee .Operand {case "\u0064\u0065\u0066":_dce =true ;default:_be .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",_abe );return ErrBadCMap ;};case cmapInt :_beec =_c .Sprintf ("\u0025\u0064",_dee ._gbff );case cmapFloat :_beec =_c .Sprintf ("\u0025\u0066",_dee ._eag );case cmapString :_beec =_dee .String ;default:_be .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",_abe );};};cmap ._db =_beec ;return nil ;};func (cmap *CMap )Type ()int {return cmap ._eb };func (_bfc *cMapParser )skipSpaces ()(int ,error ){_bfdf :=0;for {_gdaa ,_bgb :=_bfc ._ebb .Peek (1);if _bgb !=nil {return 0,_bgb ;};if _d .IsWhiteSpace (_gdaa [0]){_bfc ._ebb .ReadByte ();_bfdf ++;}else {break ;};};return _bfdf ,nil ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_ea ,_gda :=cmap .BytesToCharcodes (data );if !_gda {_be .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;};_afd :=make ([]string ,len (_ea ));var _ebe []CharCode ;for _eef ,_agg :=range _ea {_agd ,_cca :=cmap ._gb [_agg ];if !_cca {_ebe =append (_ebe ,_agg );_agd =MissingCodeString ;};_afd [_eef ]=_agd ;};_bf :=_b .Join (_afd ,"");if len (_ebe )> 0{_be .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 ),_ea ,len (_ebe ),_ebe ,_bf ,cmap );};return _bf ,len (_ebe );};func _egd (_abef cmapHexString )CharCode {_dedf :=CharCode (0);for _ ,_eggf :=range _abef ._ggeb {_dedf <<=8;_dedf |=CharCode (_eggf );};return _dedf ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_age ,_acf :=cmap ._edg [code ];return _age ,_acf ;};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_be .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 :=_edgd (isSimple );cmap .cMapParser =_fdbd (data );_ff :=cmap .parse ();if _ff !=nil {return nil ,_ff ;};if len (cmap ._bc )==0{if cmap ._bea !=""{return cmap ,nil ;};_be .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 ;};func (cmap *CMap )parse ()error {var _fbb cmapObject ;for {_deb ,_eaba :=cmap .parseObject ();if _eaba !=nil {if _eaba ==_ge .EOF {break ;};_be .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_eaba );return _eaba ;};switch _gbe :=_deb .(type ){case cmapOperand :_gba :=_gbe ;switch _gba .Operand {case _abc :_gdba :=cmap .parseCodespaceRange ();if _gdba !=nil {return _gdba ;};case _fceg :_bee :=cmap .parseCIDRange ();if _bee !=nil {return _bee ;};case _edd :_fgee :=cmap .parseBfchar ();if _fgee !=nil {return _fgee ;};case _baccd :_dge :=cmap .parseBfrange ();if _dge !=nil {return _dge ;};case _fad :if _fbb ==nil {_be .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 ;};_ecb ,_efee :=_fbb .(cmapName );if !_efee {_be .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",_fbb );return ErrBadCMap ;};cmap ._bea =_ecb .Name ;case _dgb :_eeg :=cmap .parseSystemInfo ();if _eeg !=nil {return _eeg ;};};case cmapName :_fdgf :=_gbe ;switch _fdgf .Name {case _dgb :_egc :=cmap .parseSystemInfo ();if _egc !=nil {return _egc ;};case _fgd :_fbf :=cmap .parseName ();if _fbf !=nil {return _fbf ;};case _gfg :_bcgd :=cmap .parseType ();if _bcgd !=nil {return _bcgd ;};case _bcff :_gde :=cmap .parseVersion ();if _gde !=nil {return _gde ;};};};_fbb =_deb ;};return nil ;};func _gga ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};type cmapInt struct{_gbff int64 };func (cmap *CMap )parseCodespaceRange ()error {for {_cddd ,_bbbe :=cmap .parseObject ();if _bbbe !=nil {if _bbbe ==_ge .EOF {break ;};return _bbbe ;};_adca ,_ccg :=_cddd .(cmapHexString );if !_ccg {if _dae ,_gbeb :=_cddd .(cmapOperand );_gbeb {if _dae .Operand ==_fec {return nil ;};return _af .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_cddd ,_bbbe =cmap .parseObject ();if _bbbe !=nil {if _bbbe ==_ge .EOF {break ;};return _bbbe ;};_fcde ,_ccg :=_cddd .(cmapHexString );if !_ccg {return _af .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_adca ._ggeb )!=len (_fcde ._ggeb ){return _af .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");};_bcf :=_egd (_adca );_dbc :=_egd (_fcde );if _dbc < _bcf {_be .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",_bcf ,_dbc );return ErrBadCMap ;};_gbaf :=_fcde ._fff ;_gegb :=Codespace {NumBytes :_gbaf ,Low :_bcf ,High :_dbc };cmap ._bc =append (cmap ._bc ,_gegb );_be .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",_bcf ,_dbc );};if len (cmap ._bc )==0{_be .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 (_fge *CIDSystemInfo )String ()string {return _c .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_fge .Registry ,_fge .Ordering ,_fge .Supplement );};type cmapObject interface{};func _fb (_cdd string )string {_badc :=[]rune (_cdd );_efe :=make ([]string ,len (_badc ));for _agga ,_adg :=range _badc {_efe [_agga ]=_c .Sprintf ("\u0025\u0030\u0034\u0078",_adg );};return _c .Sprintf ("\u003c\u0025\u0073\u003e",_b .Join (_efe ,""));};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_acag :=_cd (name );if _acag !=nil {return nil ,_acag ;};if cmap ._bea ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_beb ,_acag :=_cd (cmap ._bea );if _acag !=nil {return nil ,_acag ;};for _dba ,_aafg :=range _beb ._edg {if _ ,_dbe :=cmap ._edg [_dba ];!_dbe {cmap ._edg [_dba ]=_aafg ;};};for _ ,_bec :=range _beb ._bc {cmap ._bc =append (cmap ._bc ,_bec );};cmap .computeInverseMappings ();return cmap ,nil ;};type cmapDict struct{Dict map[string ]cmapObject ;};func (_aecf *cMapParser )parseComment ()(string ,error ){var _gcb _eg .Buffer ;_ ,_gaf :=_aecf .skipSpaces ();if _gaf !=nil {return _gcb .String (),_gaf ;};_abgf :=true ;for {_ggge ,_cbd :=_aecf ._ebb .Peek (1);if _cbd !=nil {_be .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_cbd );return _gcb .String (),_cbd ;};if _abgf &&_ggge [0]!='%'{return _gcb .String (),ErrBadCMapComment ;};_abgf =false ;if (_ggge [0]!='\r')&&(_ggge [0]!='\n'){_ggb ,_ :=_aecf ._ebb .ReadByte ();_gcb .WriteByte (_ggb );}else {break ;};};return _gcb .String (),nil ;};type cmapString struct{String string ;};func _fdbd (_gdbad []byte )*cMapParser {_bbbc :=cMapParser {};_dbea :=_eg .NewBuffer (_gdbad );_bbbc ._ebb =_f .NewReader (_dbea );return &_bbbc ;};func (cmap *CMap )String ()string {_eff :=cmap ._fe ;_ada :=[]string {_c .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._de ),_c .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._eb )};if cmap ._db !=""{_ada =append (_ada ,_c .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._db ));};if cmap ._bea !=""{_ada =append (_ada ,_c .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._bea ));};_ada =append (_ada ,_c .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_eff .String ()));if len (cmap ._bc )> 0{_ada =append (_ada ,_c .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._bc )));};if len (cmap ._gb )> 0{_ada =append (_ada ,_c .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._gb )));};return _c .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._cg ,_b .Join (_ada ,"\u0020"));};type fbRange struct{_efg CharCode ;_geg CharCode ;_fg string ;};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};type charRange struct{_ecc CharCode ;_ce CharCode ;};func (_ccf *cMapParser )parseName ()(cmapName ,error ){_aebg :="";_acde :=false ;for {_gfgd ,_cbda :=_ccf ._ebb .Peek (1);if _cbda ==_ge .EOF {break ;};if _cbda !=nil {return cmapName {_aebg },_cbda ;};if !_acde {if _gfgd [0]=='/'{_acde =true ;_ccf ._ebb .ReadByte ();}else {_be .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",_gfgd ,_gfgd );return cmapName {_aebg },_c .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_gfgd [0]);};}else {if _d .IsWhiteSpace (_gfgd [0]){break ;}else if (_gfgd [0]=='/')||(_gfgd [0]=='[')||(_gfgd [0]=='(')||(_gfgd [0]==']')||(_gfgd [0]=='<')||(_gfgd [0]=='>'){break ;}else if _gfgd [0]=='#'{_deba ,_bdb :=_ccf ._ebb .Peek (3);if _bdb !=nil {return cmapName {_aebg },_bdb ;};_ccf ._ebb .Discard (3);_ebba ,_bdb :=_ef .DecodeString (string (_deba [1:3]));if _bdb !=nil {return cmapName {_aebg },_bdb ;};_aebg +=string (_ebba );}else {_afdc ,_ :=_ccf ._ebb .ReadByte ();_aebg +=string (_afdc );};};};return cmapName {_aebg },nil ;};func (_adf *cMapParser )parseObject ()(cmapObject ,error ){_adf .skipSpaces ();for {_bgc ,_ffc :=_adf ._ebb .Peek (2);if _ffc !=nil {return nil ,_ffc ;};if _bgc [0]=='%'{_adf .parseComment ();_adf .skipSpaces ();continue ;}else if _bgc [0]=='/'{_ccag ,_eacd :=_adf .parseName ();return _ccag ,_eacd ;}else if _bgc [0]=='('{_dccf ,_fgca :=_adf .parseString ();return _dccf ,_fgca ;}else if _bgc [0]=='['{_dgee ,_aag :=_adf .parseArray ();return _dgee ,_aag ;}else if (_bgc [0]=='<')&&(_bgc [1]=='<'){_daf ,_afcf :=_adf .parseDict ();return _daf ,_afcf ;}else if _bgc [0]=='<'{_bdg ,_bdgb :=_adf .parseHexString ();return _bdg ,_bdgb ;}else if _d .IsDecimalDigit (_bgc [0])||(_bgc [0]=='-'&&_d .IsDecimalDigit (_bgc [1])){_edce ,_aecg :=_adf .parseNumber ();if _aecg !=nil {return nil ,_aecg ;};return _edce ,nil ;}else {_bfg ,_cba :=_adf .parseOperand ();if _cba !=nil {return nil ,_cba ;};return _bfg ,nil ;};};};func (_dbf *cMapParser )parseNumber ()(cmapObject ,error ){_bfcf ,_aadd :=_d .ParseNumber (_dbf ._ebb );if _aadd !=nil {return nil ,_aadd ;};switch _ccbc :=_bfcf .(type ){case *_d .PdfObjectFloat :return cmapFloat {float64 (*_ccbc )},nil ;case *_d .PdfObjectInteger :return cmapInt {int64 (*_ccbc )},nil ;};return nil ,_c .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_bfcf );};func _adb (_fdg string )rune {_eabf :=[]rune (_fdg );return _eabf [len (_eabf )-1]};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _cfc ,_ccd :=cmap ._gb [code ];_ccd {return _cfc ,true ;};return MissingCodeString ,false ;};func IsPredefinedCMap (name string )bool {return _ec .AssetExists (name )};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_dcc ,_da :=cmap ._aca [cid ];return _dcc ,_da ;};func (cmap *CMap )Name ()string {return cmap ._cg };type CMap struct{*cMapParser ;_cg string ;_de int ;_eb int ;_db string ;_bea string ;_fe CIDSystemInfo ;_bc []Codespace ;_edg map[CharCode ]CharCode ;_aca map[CharCode ]CharCode ;_gb map[CharCode ]string ;_dg map[string ]CharCode ;_ca []byte ;_cag *_d .PdfObjectStream ;};func (cmap *CMap )parseType ()error {_dcgb :=0;_ggf :=false ;for _bacc :=0;_bacc < 3&&!_ggf ;_bacc ++{_beg ,_aff :=cmap .parseObject ();if _aff !=nil {return _aff ;};switch _fcd :=_beg .(type ){case cmapOperand :switch _fcd .Operand {case "\u0064\u0065\u0066":_ggf =true ;default:_be .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",_beg );return ErrBadCMap ;};case cmapInt :_dcgb =int (_fcd ._gbff );};};cmap ._eb =_dcgb ;return nil ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_gef :=make (map[CharCode ]string ,len (codeToRune ));for _ba ,_ag :=range codeToRune {_gef [_ba ]=string (_ag );};cmap :=&CMap {_cg :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_eb :2,_de :16,_fe :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_bc :[]Codespace {{Low :0,High :0xffff}},_gb :_gef ,_dg :make (map[string ]CharCode ,len (codeToRune )),_edg :make (map[CharCode ]CharCode ,len (codeToRune )),_aca :make (map[CharCode ]CharCode ,len (codeToRune ))};cmap .computeInverseMappings ();return cmap ;};func (_fgba *cMapParser )parseArray ()(cmapArray ,error ){_egf :=cmapArray {};_egf .Array =[]cmapObject {};_fgba ._ebb .ReadByte ();for {_fgba .skipSpaces ();_ccb ,_edcd :=_fgba ._ebb .Peek (1);if _edcd !=nil {return _egf ,_edcd ;};if _ccb [0]==']'{_fgba ._ebb .ReadByte ();break ;};_dff ,_edcd :=_fgba .parseObject ();if _edcd !=nil {return _egf ,_edcd ;};_egf .Array =append (_egf .Array ,_dff );};return _egf ,nil ;};func (_aedf *cMapParser )parseOperand ()(cmapOperand ,error ){_fag :=cmapOperand {};_abeb :=_eg .Buffer {};for {_bfcb ,_cea :=_aedf ._ebb .Peek (1);if _cea !=nil {if _cea ==_ge .EOF {break ;};return _fag ,_cea ;};if _d .IsDelimiter (_bfcb [0]){break ;};if _d .IsWhiteSpace (_bfcb [0]){break ;};_debg ,_ :=_aedf ._ebb .ReadByte ();_abeb .WriteByte (_debg );};if _abeb .Len ()==0{return _fag ,_c .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");};_fag .Operand =_abeb .String ();return _fag ,nil ;};func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_acgg ,_beaf :=cmap ._dg [s ];return _acgg ,_beaf ;};func (cmap *CMap )Bytes ()[]byte {_be .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 ._ca )> 0{return cmap ._ca ;};cmap ._ca =[]byte (_b .Join ([]string {_fbg ,cmap .toBfData (),_df },"\u000a"));return cmap ._ca ;};func _cbef (_ceg ,_acdb int )int {if _ceg < _acdb {return _ceg ;};return _acdb ;};type cmapArray struct{Array []cmapObject ;};type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func NewCIDSystemInfo (obj _d .PdfObject )(_gg CIDSystemInfo ,_ed error ){_ad ,_egg :=_d .GetDict (obj );if !_egg {return CIDSystemInfo {},_d .ErrTypeError ;};_aa ,_egg :=_d .GetStringVal (_ad .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));if !_egg {return CIDSystemInfo {},_d .ErrTypeError ;};_aaf ,_egg :=_d .GetStringVal (_ad .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_egg {return CIDSystemInfo {},_d .ErrTypeError ;};_fc ,_egg :=_d .GetIntVal (_ad .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));if !_egg {return CIDSystemInfo {},_d .ErrTypeError ;};return CIDSystemInfo {Registry :_aa ,Ordering :_aaf ,Supplement :_fc },nil ;};type cmapOperand struct{Operand string ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _bg []CharCode ;if cmap ._de ==8{for _ ,_cac :=range data {_bg =append (_bg ,CharCode (_cac ));};return _bg ,true ;};for _dbg :=0;_dbg < len (data );{_ege ,_cbe ,_bbb :=cmap .matchCode (data [_dbg :]);if !_bbb {_be .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",_dbg ,data ,string (data ));return _bg ,false ;};_bg =append (_bg ,_ege );_dbg +=_cbe ;};return _bg ,true ;};var (ErrBadCMap =_af .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_af .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 =_af .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func _fdc (_eggfc cmapHexString )[]rune {if len (_eggfc ._ggeb )==1{return []rune {rune (_eggfc ._ggeb [0])};};_fcfb :=_eggfc ._ggeb ;if len (_fcfb )%2!=0{_fcfb =append (_fcfb ,0);_be .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",_eggfc ,_fcfb );};_gafbg :=len (_fcfb )>>1;_edcg :=make ([]uint16 ,_gafbg );for _ebcg :=0;_ebcg < _gafbg ;_ebcg ++{_edcg [_ebcg ]=uint16 (_fcfb [_ebcg <<1])<<8+uint16 (_fcfb [_ebcg <<1+1]);};_eefc :=_g .Decode (_edcg );return _eefc ;};func _edgd (_fd bool )*CMap {_cc :=16;if _fd {_cc =8;};return &CMap {_de :_cc ,_edg :make (map[CharCode ]CharCode ),_aca :make (map[CharCode ]CharCode ),_gb :make (map[CharCode ]string ),_dg :make (map[string ]CharCode )};};func (cmap *CMap )inCodespace (_ab CharCode ,_deg int )bool {for _ ,_bcd :=range cmap ._bc {if _bcd .Low <=_ab &&_ab <=_bcd .High &&_deg ==_bcd .NumBytes {return true ;};};return false ;};func (_bfa *cMapParser )parseString ()(cmapString ,error ){_bfa ._ebb .ReadByte ();_agge :=_eg .Buffer {};_efb :=1;for {_aae ,_eafd :=_bfa ._ebb .Peek (1);if _eafd !=nil {return cmapString {_agge .String ()},_eafd ;};if _aae [0]=='\\'{_bfa ._ebb .ReadByte ();_eba ,_cgb :=_bfa ._ebb .ReadByte ();if _cgb !=nil {return cmapString {_agge .String ()},_cgb ;};if _d .IsOctalDigit (_eba ){_aebe ,_fcdef :=_bfa ._ebb .Peek (2);if _fcdef !=nil {return cmapString {_agge .String ()},_fcdef ;};var _fdba []byte ;_fdba =append (_fdba ,_eba );for _ ,_agbb :=range _aebe {if _d .IsOctalDigit (_agbb ){_fdba =append (_fdba ,_agbb );}else {break ;};};_bfa ._ebb .Discard (len (_fdba )-1);_be .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_fdba );_gafb ,_fcdef :=_e .ParseUint (string (_fdba ),8,32);if _fcdef !=nil {return cmapString {_agge .String ()},_fcdef ;};_agge .WriteByte (byte (_gafb ));continue ;};switch _eba {case 'n':_agge .WriteByte ('\n');case 'r':_agge .WriteByte ('\r');case 't':_agge .WriteByte ('\t');case 'b':_agge .WriteByte ('\b');case 'f':_agge .WriteByte ('\f');case '(':_agge .WriteByte ('(');case ')':_agge .WriteByte (')');case '\\':_agge .WriteByte ('\\');};continue ;}else if _aae [0]=='('{_efb ++;}else if _aae [0]==')'{_efb --;if _efb ==0{_bfa ._ebb .ReadByte ();break ;};};_dfc ,_ :=_bfa ._ebb .ReadByte ();_agge .WriteByte (_dfc );};return cmapString {_agge .String ()},nil ;};type CharCode uint32 ;const (_cf =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func (cmap *CMap )Stream ()(*_d .PdfObjectStream ,error ){if cmap ._cag !=nil {return cmap ._cag ,nil ;};_bae ,_adcg :=_d .MakeStream (cmap .Bytes (),_d .NewFlateEncoder ());if _adcg !=nil {return nil ,_adcg ;};cmap ._cag =_bae ;return cmap ._cag ,nil ;};func (cmap *CMap )computeInverseMappings (){for _ced ,_fce :=range cmap ._edg {if _gd ,_bebe :=cmap ._aca [_fce ];!_bebe ||(_bebe &&_gd > _ced ){cmap ._aca [_fce ]=_ced ;};};for _gge ,_edgg :=range cmap ._gb {if _ee ,_cff :=cmap ._dg [_edgg ];!_cff ||(_cff &&_ee > _gge ){cmap ._dg [_edgg ]=_gge ;};};_ac .Slice (cmap ._bc ,func (_eee ,_dgf int )bool {return cmap ._bc [_eee ].Low < cmap ._bc [_dgf ].Low });};const (_dgb ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_gca ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_afc ="\u0065n\u0064\u0063\u006d\u0061\u0070";_abc ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_fec ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";_edd ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_acgb ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_baccd ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_gac ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_fceg ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_fda ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_fad ="\u0075s\u0065\u0063\u006d\u0061\u0070";_fgd ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";_gfg ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_bcff ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (cmap *CMap )toBfData ()string {if len (cmap ._gb )==0{return "";};_eac :=make ([]CharCode ,0,len (cmap ._gb ));for _ccac :=range cmap ._gb {_eac =append (_eac ,_ccac );};_ac .Slice (_eac ,func (_gdb ,_fa int )bool {return _eac [_gdb ]< _eac [_fa ]});var _ae []charRange ;_acad :=charRange {_eac [0],_eac [0]};_ebc :=cmap ._gb [_eac [0]];for _ ,_gegd :=range _eac [1:]{_bebee :=cmap ._gb [_gegd ];if _gegd ==_acad ._ce +1&&_adb (_bebee )==_adb (_ebc )+1{_acad ._ce =_gegd ;}else {_ae =append (_ae ,_acad );_acad ._ecc ,_acad ._ce =_gegd ,_gegd ;};_ebc =_bebee ;};_ae =append (_ae ,_acad );var _dec []CharCode ;var _gfd []fbRange ;for _ ,_ebf :=range _ae {if _ebf ._ecc ==_ebf ._ce {_dec =append (_dec ,_ebf ._ecc );}else {_gfd =append (_gfd ,fbRange {_efg :_ebf ._ecc ,_geg :_ebf ._ce ,_fg :cmap ._gb [_ebf ._ecc ]});};};_be .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 (_ae ),len (_dec ),len (_gfd ));var _dd []string ;if len (_dec )> 0{_fde :=(len (_dec )+_aed -1)/_aed ;for _gec :=0;_gec < _fde ;_gec ++{_cab :=_cbef (len (_dec )-_gec *_aed ,_aed );_dd =append (_dd ,_c .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_cab ));for _eab :=0;_eab < _cab ;_eab ++{_dcf :=_dec [_gec *_aed +_eab ];_gff :=cmap ._gb [_dcf ];_dd =append (_dd ,_c .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_dcf ,_fb (_gff )));};_dd =append (_dd ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_gfd )> 0{_fgb :=(len (_gfd )+_aed -1)/_aed ;for _dde :=0;_dde < _fgb ;_dde ++{_cae :=_cbef (len (_gfd )-_dde *_aed ,_aed );_dd =append (_dd ,_c .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_cae ));for _fded :=0;_fded < _cae ;_fded ++{_dgd :=_gfd [_dde *_aed +_fded ];_dd =append (_dd ,_c .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_dgd ._efg ,_dgd ._geg ,_fb (_dgd ._fg )));};_dd =append (_dd ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _b .Join (_dd ,"\u000a");};func (cmap *CMap )parseBfchar ()error {for {_efeg ,_aac :=cmap .parseObject ();if _aac !=nil {if _aac ==_ge .EOF {break ;};return _aac ;};var _afff CharCode ;switch _eea :=_efeg .(type ){case cmapOperand :if _eea .Operand ==_acgb {return nil ;};return _af .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_afff =_egd (_eea );default:return _af .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_efeg ,_aac =cmap .parseObject ();if _aac !=nil {if _aac ==_ge .EOF {break ;};return _aac ;};var _gc []rune ;switch _ead :=_efeg .(type ){case cmapOperand :if _ead .Operand ==_acgb {return nil ;};_be .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",_ead );return ErrBadCMap ;case cmapHexString :_gc =_fdc (_ead );case cmapName :_be .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",_ead );_gc =[]rune {MissingCodeRune };default:_be .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",_efeg );return ErrBadCMap ;};cmap ._gb [_afff ]=string (_gc );};return nil ;};func (cmap *CMap )NBits ()int {return cmap ._de };func (cmap *CMap )parseName ()error {_eeee :="";_ded :=false ;for _fbfg :=0;_fbfg < 20&&!_ded ;_fbfg ++{_bace ,_ga :=cmap .parseObject ();if _ga !=nil {return _ga ;};switch _dgea :=_bace .(type ){case cmapOperand :switch _dgea .Operand {case "\u0064\u0065\u0066":_ded =true ;default:_be .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",_bace ,_eeee );if _eeee !=""{_eeee =_c .Sprintf ("\u0025\u0073\u0020%\u0073",_eeee ,_dgea .Operand );};_be .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",_eeee );};case cmapName :_eeee =_dgea .Name ;};};if !_ded {_be .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._cg =_eeee ;return nil ;};type cMapParser struct{_ebb *_f .Reader };type cmapHexString struct{_fff int ;_ggeb []byte ;};func (cmap *CMap )parseSystemInfo ()error {_eaff :=false ;_eafb :=false ;_ece :="";_bbgg :=false ;_edc :=CIDSystemInfo {};for _aad :=0;_aad < 50&&!_bbgg ;_aad ++{_aec ,_egea :=cmap .parseObject ();if _egea !=nil {return _egea ;};switch _aef :=_aec .(type ){case cmapDict :_aeb :=_aef .Dict ;_gfa ,_acd :=_aeb ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_acd {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_abb ,_acd :=_gfa .(cmapString );if !_acd {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_edc .Registry =_abb .String ;_gfa ,_acd =_aeb ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_acd {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_abb ,_acd =_gfa .(cmapString );if !_acd {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_edc .Ordering =_abb .String ;_ffd ,_acd :=_aeb ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];if !_acd {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_ace ,_acd :=_ffd .(cmapInt );if !_acd {_be .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_edc .Supplement =int (_ace ._gbff );_bbgg =true ;case cmapOperand :switch _aef .Operand {case "\u0062\u0065\u0067i\u006e":_eaff =true ;case "\u0065\u006e\u0064":_bbgg =true ;case "\u0064\u0065\u0066":_eafb =false ;};case cmapName :if _eaff {_ece =_aef .Name ;_eafb =true ;};case cmapString :if _eafb {switch _ece {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_edc .Registry =_aef .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_edc .Ordering =_aef .String ;};};case cmapInt :if _eafb {switch _ece {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_edc .Supplement =int (_aef ._gbff );};};};};if !_bbgg {_be .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 ._fe =_edc ;return nil ;};func (cmap *CMap )parseBfrange ()error {for {var _dfd CharCode ;_bbbb ,_fgg :=cmap .parseObject ();if _fgg !=nil {if _fgg ==_ge .EOF {break ;};return _fgg ;};switch _bbe :=_bbbb .(type ){case cmapOperand :if _bbe .Operand ==_gac {return nil ;};return _af .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");case cmapHexString :_dfd =_egd (_bbe );default:return _af .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _bcfb CharCode ;_bbbb ,_fgg =cmap .parseObject ();if _fgg !=nil {if _fgg ==_ge .EOF {break ;};return _fgg ;};switch _dbcb :=_bbbb .(type ){case cmapOperand :_be .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0049\u006d\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 :_bcfb =_egd (_dbcb );default:_be .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_bbbb );return ErrBadCMap ;};_bbbb ,_fgg =cmap .parseObject ();if _fgg !=nil {if _fgg ==_ge .EOF {break ;};return _fgg ;};switch _abg :=_bbbb .(type ){case cmapArray :if len (_abg .Array )!=int (_bcfb -_dfd )+1{_be .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 _daaf :=_dfd ;_daaf <=_bcfb ;_daaf ++{_ddb :=_abg .Array [_daaf -_dfd ];_gee ,_agb :=_ddb .(cmapHexString );if !_agb {return _af .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");};_fgc :=_fdc (_gee );cmap ._gb [_daaf ]=string (_fgc );};case cmapHexString :_bebef :=_fdc (_abg );_bba :=len (_bebef );for _aga :=_dfd ;_aga <=_bcfb ;_aga ++{cmap ._gb [_aga ]=string (_bebef );_bebef [_bba -1]++;};default:_be .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_bbbb );return ErrBadCMap ;};};return nil ;};func (_cad *cMapParser )parseDict ()(cmapDict ,error ){_be .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_gcbc :=_gga ();_gdc ,_ :=_cad ._ebb .ReadByte ();if _gdc !='<'{return _gcbc ,ErrBadCMapDict ;};_gdc ,_ =_cad ._ebb .ReadByte ();if _gdc !='<'{return _gcbc ,ErrBadCMapDict ;};for {_cad .skipSpaces ();_cga ,_fdeb :=_cad ._ebb .Peek (2);if _fdeb !=nil {return _gcbc ,_fdeb ;};if (_cga [0]=='>')&&(_cga [1]=='>'){_cad ._ebb .ReadByte ();_cad ._ebb .ReadByte ();break ;};_def ,_fdeb :=_cad .parseName ();_be .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_def .Name );if _fdeb !=nil {_be .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",_fdeb );return _gcbc ,_fdeb ;};_cad .skipSpaces ();_ddac ,_fdeb :=_cad .parseObject ();if _fdeb !=nil {return _gcbc ,_fdeb ;};_gcbc .Dict [_def .Name ]=_ddac ;_cad .skipSpaces ();_cga ,_fdeb =_cad ._ebb .Peek (3);if _fdeb !=nil {return _gcbc ,_fdeb ;};if string (_cga )=="\u0064\u0065\u0066"{_cad ._ebb .Discard (3);};};return _gcbc ,nil ;};const (_aed =100;_fbg ="\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";_df ="\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";);type cmapFloat struct{_eag float64 };func (cmap *CMap )matchCode (_cbg []byte )(_gbc CharCode ,_efd int ,_bcb bool ){for _dcg :=0;_dcg < _cf ;_dcg ++{if _dcg < len (_cbg ){_gbc =_gbc <<8|CharCode (_cbg [_dcg ]);_efd ++;};_bcb =cmap .inCodespace (_gbc ,_dcg +1);if _bcb {return _gbc ,_efd ,true ;};};_be .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",_cbg ,string (_cbg ),cmap );return 0,0,false ;};