unipdf/internal/cmap/cmap.go
2021-09-23 22:37:42 +00:00

143 lines
41 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 (_dc "bufio";_aeb "bytes";_d "encoding/hex";_ag "errors";_ae "fmt";_gc "github.com/unidoc/unipdf/v3/common";_af "github.com/unidoc/unipdf/v3/core";_c "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_dd "io";_g "sort";_aaf "strconv";
_b "strings";_aa "unicode/utf16";);func _bb (_gac string )(*CMap ,error ){_adg ,_bcg :=_c .Asset (_gac );if _bcg !=nil {return nil ,_bcg ;};return LoadCmapFromDataCID (_adg );};type CMap struct{*cMapParser ;_ee string ;_eb int ;_ef int ;_ca string ;_ed string ;
_dfb CIDSystemInfo ;_fc []Codespace ;_dgf map[CharCode ]CharCode ;_acf map[CharCode ]CharCode ;_ec map[CharCode ]string ;_ad map[string ]CharCode ;_add []byte ;_ga *_af .PdfObjectStream ;_eec integer ;};func (cmap *CMap )matchCode (_aee []byte )(_cca CharCode ,_ggf int ,_eaf bool ){for _cbc :=0;
_cbc < _dg ;_cbc ++{if _cbc < len (_aee ){_cca =_cca <<8|CharCode (_aee [_cbc ]);_ggf ++;};_eaf =cmap .inCodespace (_cca ,_cbc +1);if _eaf {return _cca ,_ggf ,true ;};};_gc .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",_aee ,string (_aee ),cmap );
return 0,0,false ;};func (cmap *CMap )computeInverseMappings (){for _addb ,_fag :=range cmap ._dgf {if _bbc ,_fg :=cmap ._acf [_fag ];!_fg ||(_fg &&_bbc > _addb ){cmap ._acf [_fag ]=_addb ;};};for _fe ,_ccf :=range cmap ._ec {if _aff ,_cde :=cmap ._ad [_ccf ];
!_cde ||(_cde &&_aff > _fe ){cmap ._ad [_ccf ]=_fe ;};};_g .Slice (cmap ._fc ,func (_ade ,_bg int )bool {return cmap ._fc [_ade ].Low < cmap ._fc [_bg ].Low });};func (cmap *CMap )parseBfrange ()error {for {var _fgbc CharCode ;_aadf ,_egb :=cmap .parseObject ();
if _egb !=nil {if _egb ==_dd .EOF {break ;};return _egb ;};switch _edg :=_aadf .(type ){case cmapOperand :if _edg .Operand ==_gfe {return nil ;};return _ag .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_fgbc =_cebb (_edg );default:return _ag .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _aggc CharCode ;_aadf ,_egb =cmap .parseObject ();if _egb !=nil {if _egb ==_dd .EOF {break ;};return _egb ;
};switch _dccc :=_aadf .(type ){case cmapOperand :_gc .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 :_aggc =_cebb (_dccc );default:_gc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_aadf );return ErrBadCMap ;};_aadf ,_egb =cmap .parseObject ();
if _egb !=nil {if _egb ==_dd .EOF {break ;};return _egb ;};switch _dad :=_aadf .(type ){case cmapArray :if len (_dad .Array )!=int (_aggc -_fgbc )+1{_gc .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 _efa :=_fgbc ;_efa <=_aggc ;_efa ++{_daf :=_dad .Array [_efa -_fgbc ];_cfe ,_aded :=_daf .(cmapHexString );if !_aded {return _ag .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_gcd :=_fggd (_cfe );cmap ._ec [_efa ]=string (_gcd );};case cmapHexString :_gcee :=_fggd (_dad );_gaa :=len (_gcee );for _abdb :=_fgbc ;_abdb <=_aggc ;_abdb ++{cmap ._ec [_abdb ]=string (_gcee );if _gaa > 0{_gcee [_gaa -1]++;}else {_gc .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",_abdb );
};};default:_gc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_aadf );return ErrBadCMap ;};};return nil ;};func _cgge (_gef cmapHexString )rune {_adcg :=_fggd (_gef );
if _bgga :=len (_adcg );_bgga ==0{_gc .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",_gef );
return MissingCodeRune ;};if len (_adcg )> 1{_gc .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",_gef ,_adcg );
};return _adcg [0];};type cmapInt struct{_bgc int64 };func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _cgc []CharCode ;if cmap ._eb ==8{for _ ,_gde :=range data {_cgc =append (_cgc ,CharCode (_gde ));};return _cgc ,true ;};for _gcg :=0;
_gcg < len (data );{_eae ,_dgg ,_dce :=cmap .matchCode (data [_gcg :]);if !_dce {_gc .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",_gcg ,data ,string (data ));
return _cgc ,false ;};_cgc =append (_cgc ,_eae );_gcg +=_dgg ;};return _cgc ,true ;};func (cmap *CMap )parseSystemInfo ()error {_gcb :=false ;_gdgfb :=false ;_gegf :="";_dge :=false ;_afeg :=CIDSystemInfo {};for _ece :=0;_ece < 50&&!_dge ;_ece ++{_bcf ,_ebg :=cmap .parseObject ();
if _ebg !=nil {return _ebg ;};switch _cgcc :=_bcf .(type ){case cmapDict :_eac :=_cgcc .Dict ;_dabg ,_dac :=_eac ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_dac {_gc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_bce ,_dac :=_dabg .(cmapString );if !_dac {_gc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_afeg .Registry =_bce .String ;
_dabg ,_dac =_eac ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_dac {_gc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_bce ,_dac =_dabg .(cmapString );
if !_dac {_gc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_afeg .Ordering =_bce .String ;_egf ,_dac :=_eac ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];
if !_dac {_gc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_be ,_dac :=_egf .(cmapInt );if !_dac {_gc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_afeg .Supplement =int (_be ._bgc );_dge =true ;case cmapOperand :switch _cgcc .Operand {case "\u0062\u0065\u0067i\u006e":_gcb =true ;case "\u0065\u006e\u0064":_dge =true ;case "\u0064\u0065\u0066":_gdgfb =false ;};case cmapName :if _gcb {_gegf =_cgcc .Name ;
_gdgfb =true ;};case cmapString :if _gdgfb {switch _gegf {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_afeg .Registry =_cgcc .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_afeg .Ordering =_cgcc .String ;};};case cmapInt :if _gdgfb {switch _gegf {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_afeg .Supplement =int (_cgcc ._bgc );
};};};};if !_dge {_gc .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 ._dfb =_afeg ;return nil ;};type cmapHexString struct{_cab int ;_aea []byte ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_cge :=make (map[CharCode ]string ,len (codeToRune ));for _def ,_fcd :=range codeToRune {_cge [_def ]=string (_fcd );
};cmap :=&CMap {_ee :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_ef :2,_eb :16,_dfb :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_fc :[]Codespace {{Low :0,High :0xffff}},_ec :_cge ,_ad :make (map[string ]CharCode ,len (codeToRune )),_dgf :make (map[CharCode ]CharCode ,len (codeToRune )),_acf :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._dfb };func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_ccb ,_efc :=cmap ._acf [cid ];return _ccb ,_efc ;};func (cmap *CMap )Bytes ()[]byte {_gc .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 ._add )> 0{return cmap ._add ;};cmap ._add =[]byte (_b .Join ([]string {_fcb ,cmap .toBfData (),_afe },"\u000a"));return cmap ._add ;};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_gbe ,_gce :=cmap .BytesToCharcodes (data );
if !_gce {_gc .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;};_dcf :=make ([]string ,len (_gbe ));var _fgf []CharCode ;for _bge ,_ab :=range _gbe {_aed ,_ce :=cmap ._ec [_ab ];if !_ce {_fgf =append (_fgf ,_ab );_aed =MissingCodeString ;};_dcf [_bge ]=_aed ;};_cgf :=_b .Join (_dcf ,"");if len (_fgf )> 0{_gc .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 ),_gbe ,len (_fgf ),_fgf ,_cgf ,cmap );
};return _cgf ,len (_fgf );};func (_dcec *cMapParser )parseName ()(cmapName ,error ){_eafc :="";_aga :=false ;for {_ggfb ,_ddcb :=_dcec ._ddc .Peek (1);if _ddcb ==_dd .EOF {break ;};if _ddcb !=nil {return cmapName {_eafc },_ddcb ;};if !_aga {if _ggfb [0]=='/'{_aga =true ;
_dcec ._ddc .ReadByte ();}else {_gc .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",_ggfb ,_ggfb );return cmapName {_eafc },_ae .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_ggfb [0]);
};}else {if _af .IsWhiteSpace (_ggfb [0]){break ;}else if (_ggfb [0]=='/')||(_ggfb [0]=='[')||(_ggfb [0]=='(')||(_ggfb [0]==']')||(_ggfb [0]=='<')||(_ggfb [0]=='>'){break ;}else if _ggfb [0]=='#'{_feeg ,_abb :=_dcec ._ddc .Peek (3);if _abb !=nil {return cmapName {_eafc },_abb ;
};_dcec ._ddc .Discard (3);_fdf ,_abb :=_d .DecodeString (string (_feeg [1:3]));if _abb !=nil {return cmapName {_eafc },_abb ;};_eafc +=string (_fdf );}else {_ffed ,_ :=_dcec ._ddc .ReadByte ();_eafc +=string (_ffed );};};};return cmapName {_eafc },nil ;
};type cmapArray struct{Array []cmapObject ;};func (cmap *CMap )parseCodespaceRange ()error {for {_efdc ,_bae :=cmap .parseObject ();if _bae !=nil {if _bae ==_dd .EOF {break ;};return _bae ;};_cece ,_ddbd :=_efdc .(cmapHexString );if !_ddbd {if _gbfb ,_gdf :=_efdc .(cmapOperand );
_gdf {if _gbfb .Operand ==_fegbc {return nil ;};return _ag .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_efdc ,_bae =cmap .parseObject ();if _bae !=nil {if _bae ==_dd .EOF {break ;};return _bae ;
};_fgd ,_ddbd :=_efdc .(cmapHexString );if !_ddbd {return _ag .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_cece ._aea )!=len (_fgd ._aea ){return _ag .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");
};_ege :=_cebb (_cece );_bbb :=_cebb (_fgd );if _bbb < _ege {_gc .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",_ege ,_bbb );
return ErrBadCMap ;};_dbb :=_fgd ._cab ;_aade :=Codespace {NumBytes :_dbb ,Low :_ege ,High :_bbb };cmap ._fc =append (cmap ._fc ,_aade );_gc .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",_ege ,_bbb );
};if len (cmap ._fc )==0{_gc .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 (cmap *CMap )parseCIDRange ()error {for {_bbbc ,_gacb :=cmap .parseObject ();
if _gacb !=nil {if _gacb ==_dd .EOF {break ;};return _gacb ;};_ecg ,_abdf :=_bbbc .(cmapHexString );if !_abdf {if _agfg ,_ageg :=_bbbc .(cmapOperand );_ageg {if _agfg .Operand ==_fb {return nil ;};return _ag .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");
};};_bfdd :=_cebb (_ecg );_bbbc ,_gacb =cmap .parseObject ();if _gacb !=nil {if _gacb ==_dd .EOF {break ;};return _gacb ;};_agg ,_abdf :=_bbbc .(cmapHexString );if !_abdf {return _ag .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 (_ecg ._aea )!=len (_agg ._aea ){return _ag .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");};_baa :=_cebb (_agg );
if _bfdd > _baa {_gc .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",_bfdd ,_baa );
return ErrBadCMap ;};_bbbc ,_gacb =cmap .parseObject ();if _gacb !=nil {if _gacb ==_dd .EOF {break ;};return _gacb ;};_afc ,_abdf :=_bbbc .(cmapInt );if !_abdf {return _ag .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 _afc ._bgc < 0{return _ag .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_ddf :=_afc ._bgc ;for _cdge :=_bfdd ;_cdge <=_baa ;_cdge ++{cmap ._dgf [_cdge ]=CharCode (_ddf );
_ddf ++;};_gc .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",_bfdd ,_baa ,_afc ._bgc );};return nil ;};func (_fgg *cMapParser )parseDict ()(cmapDict ,error ){_gc .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");
_bea :=_geaf ();_baba ,_ :=_fgg ._ddc .ReadByte ();if _baba !='<'{return _bea ,ErrBadCMapDict ;};_baba ,_ =_fgg ._ddc .ReadByte ();if _baba !='<'{return _bea ,ErrBadCMapDict ;};for {_fgg .skipSpaces ();_fdff ,_eda :=_fgg ._ddc .Peek (2);if _eda !=nil {return _bea ,_eda ;
};if (_fdff [0]=='>')&&(_fdff [1]=='>'){_fgg ._ddc .ReadByte ();_fgg ._ddc .ReadByte ();break ;};_ggadb ,_eda :=_fgg .parseName ();_gc .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_ggadb .Name );if _eda !=nil {_gc .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",_eda );
return _bea ,_eda ;};_fgg .skipSpaces ();_bfdc ,_eda :=_fgg .parseObject ();if _eda !=nil {return _bea ,_eda ;};_bea .Dict [_ggadb .Name ]=_bfdc ;_fgg .skipSpaces ();_fdff ,_eda =_fgg ._ddc .Peek (3);if _eda !=nil {return _bea ,_eda ;};if string (_fdff )=="\u0064\u0065\u0066"{_fgg ._ddc .Discard (3);
};};return _bea ,nil ;};type cmapObject interface{};func NewCIDSystemInfo (obj _af .PdfObject )(_cg CIDSystemInfo ,_de error ){_f ,_df :=_af .GetDict (obj );if !_df {return CIDSystemInfo {},_af .ErrTypeError ;};_cc ,_df :=_af .GetStringVal (_f .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));
if !_df {return CIDSystemInfo {},_af .ErrTypeError ;};_bc ,_df :=_af .GetStringVal (_f .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_df {return CIDSystemInfo {},_af .ErrTypeError ;};_gbg ,_df :=_af .GetIntVal (_f .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));
if !_df {return CIDSystemInfo {},_af .ErrTypeError ;};return CIDSystemInfo {Registry :_cc ,Ordering :_bc ,Supplement :_gbg },nil ;};func _eef (_aedd string )rune {_defa :=[]rune (_aedd );return _defa [len (_defa )-1]};func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _efd ,_cf :=cmap ._ec [code ];
_cf {return _efd ,true ;};return MissingCodeString ,false ;};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_bf :=_bb (name );if _bf !=nil {return nil ,_bf ;};if cmap ._ed ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_adc ,_bf :=_bb (cmap ._ed );
if _bf !=nil {return nil ,_bf ;};for _gfb ,_cd :=range _adc ._dgf {if _ ,_ea :=cmap ._dgf [_gfb ];!_ea {cmap ._dgf [_gfb ]=_cd ;};};cmap ._fc =append (cmap ._fc ,_adc ._fc ...);cmap .computeInverseMappings ();return cmap ,nil ;};type charRange struct{_ac CharCode ;
_e CharCode ;};type cmapOperand struct{Operand string ;};func (_fabd *cMapParser )parseOperand ()(cmapOperand ,error ){_ccc :=cmapOperand {};_befa :=_aeb .Buffer {};for {_gcfd ,_bad :=_fabd ._ddc .Peek (1);if _bad !=nil {if _bad ==_dd .EOF {break ;};return _ccc ,_bad ;
};if _af .IsDelimiter (_gcfd [0]){break ;};if _af .IsWhiteSpace (_gcfd [0]){break ;};_cdade ,_ :=_fabd ._ddc .ReadByte ();_befa .WriteByte (_cdade );};if _befa .Len ()==0{return _ccc ,_ae .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
};_ccc .Operand =_befa .String ();return _ccc ,nil ;};func (_ceb *cMapParser )skipSpaces ()(int ,error ){_cbb :=0;for {_dfde ,_cdgg :=_ceb ._ddc .Peek (1);if _cdgg !=nil {return 0,_cdgg ;};if _af .IsWhiteSpace (_dfde [0]){_ceb ._ddc .ReadByte ();_cbb ++;
}else {break ;};};return _cbb ,nil ;};func (cmap *CMap )parseName ()error {_cdd :="";_fea :=false ;for _cga :=0;_cga < 20&&!_fea ;_cga ++{_abg ,_bab :=cmap .parseObject ();if _bab !=nil {return _bab ;};switch _bfd :=_abg .(type ){case cmapOperand :switch _bfd .Operand {case "\u0064\u0065\u0066":_fea =true ;
default:_gc .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",_abg ,_cdd );
if _cdd !=""{_cdd =_ae .Sprintf ("\u0025\u0073\u0020%\u0073",_cdd ,_bfd .Operand );};_gc .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",_cdd );
};case cmapName :_cdd =_bfd .Name ;};};if !_fea {_gc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._ee =_cdd ;return nil ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};
func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_gcf ,_bgb :=cmap ._ad [s ];return _gcf ,_bgb ;};func _cebb (_adf cmapHexString )CharCode {_dfda :=CharCode (0);for _ ,_gddc :=range _adf ._aea {_dfda <<=8;_dfda |=CharCode (_gddc );};return _dfda ;
};const (_afd =100;_fcb ="\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";
_afe ="\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";
);func (cmap *CMap )String ()string {_ddb :=cmap ._dfb ;_cb :=[]string {_ae .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._eb ),_ae .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._ef )};if cmap ._ca !=""{_cb =append (_cb ,_ae .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._ca ));
};if cmap ._ed !=""{_cb =append (_cb ,_ae .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._ed ));};_cb =append (_cb ,_ae .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_ddb .String ()));
if len (cmap ._fc )> 0{_cb =append (_cb ,_ae .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._fc )));};if len (cmap ._ec )> 0{_cb =append (_cb ,_ae .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._ec )));
};return _ae .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._ee ,_b .Join (_cb ,"\u0020"));};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_gc .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 :=_da (isSimple );cmap .cMapParser =_fde (data );_gbf :=cmap .parse ();if _gbf !=nil {return nil ,_gbf ;};if len (cmap ._fc )==0{if cmap ._ed !=""{return cmap ,nil ;};_gc .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 cmapName struct{Name string ;};type cMapParser struct{_ddc *_dc .Reader };func (_gafc *cMapParser )parseArray ()(cmapArray ,error ){_dceg :=cmapArray {};_dceg .Array =[]cmapObject {};
_gafc ._ddc .ReadByte ();for {_gafc .skipSpaces ();_fcc ,_cfeg :=_gafc ._ddc .Peek (1);if _cfeg !=nil {return _dceg ,_cfeg ;};if _fcc [0]==']'{_gafc ._ddc .ReadByte ();break ;};_fgc ,_cfeg :=_gafc .parseObject ();if _cfeg !=nil {return _dceg ,_cfeg ;};
_dceg .Array =append (_dceg .Array ,_fgc );};return _dceg ,nil ;};func _fde (_aaac []byte )*cMapParser {_dcd :=cMapParser {};_fgaf :=_aeb .NewBuffer (_aaac );_dcd ._ddc =_dc .NewReader (_fgaf );return &_dcd ;};func (_gf *CIDSystemInfo )String ()string {return _ae .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_gf .Registry ,_gf .Ordering ,_gf .Supplement );
};type integer struct{_dbfc bool ;_gab int ;};func (_ggb *cMapParser )parseNumber ()(cmapObject ,error ){_adge ,_aeeb :=_af .ParseNumber (_ggb ._ddc );if _aeeb !=nil {return nil ,_aeeb ;};switch _daec :=_adge .(type ){case *_af .PdfObjectFloat :return cmapFloat {float64 (*_daec )},nil ;
case *_af .PdfObjectInteger :return cmapInt {int64 (*_daec )},nil ;};return nil ,_ae .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_adge );};func _bbcf (_gee string )string {_ggfa :=[]rune (_gee );
_gfcg :=make ([]string ,len (_ggfa ));for _bba ,_gca :=range _ggfa {_gfcg [_bba ]=_ae .Sprintf ("\u0025\u0030\u0034\u0078",_gca );};return _ae .Sprintf ("\u003c\u0025\u0073\u003e",_b .Join (_gfcg ,""));};func (cmap *CMap )Name ()string {return cmap ._ee };
func (cmap *CMap )parseType ()error {_bfc :=0;_cgd :=false ;for _abd :=0;_abd < 3&&!_cgd ;_abd ++{_ded ,_gdec :=cmap .parseObject ();if _gdec !=nil {return _gdec ;};switch _efb :=_ded .(type ){case cmapOperand :switch _efb .Operand {case "\u0064\u0065\u0066":_cgd =true ;
default:_gc .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",_ded );return ErrBadCMap ;};case cmapInt :_bfc =int (_efb ._bgc );
};};cmap ._ef =_bfc ;return nil ;};type CharCode uint32 ;func (cmap *CMap )inCodespace (_adb CharCode ,_cec int )bool {for _ ,_cdg :=range cmap ._fc {if _cdg .Low <=_adb &&_adb <=_cdg .High &&_cec ==_cdg .NumBytes {return true ;};};return false ;};type cmapDict struct{Dict map[string ]cmapObject ;
};func (_fbf *cMapParser )parseHexString ()(cmapHexString ,error ){_fbf ._ddc .ReadByte ();_fgag :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");_bgbg :=_aeb .Buffer {};
for {_fbf .skipSpaces ();_gec ,_dca :=_fbf ._ddc .Peek (1);if _dca !=nil {return cmapHexString {},_dca ;};if _gec [0]=='>'{_fbf ._ddc .ReadByte ();break ;};_cgb ,_ :=_fbf ._ddc .ReadByte ();if _aeb .IndexByte (_fgag ,_cgb )>=0{_bgbg .WriteByte (_cgb );
};};if _bgbg .Len ()%2==1{_gc .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",_bgbg .String ());_bgbg .WriteByte ('0');};_agge :=_bgbg .Len ()/2;
_cbe ,_ :=_d .DecodeString (_bgbg .String ());return cmapHexString {_cab :_agge ,_aea :_cbe },nil ;};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_ff ,_aad :=cmap ._dgf [code ];
return _ff ,_aad ;};func (_dgb *cMapParser )parseComment ()(string ,error ){var _dbg _aeb .Buffer ;_ ,_gcbe :=_dgb .skipSpaces ();if _gcbe !=nil {return _dbg .String (),_gcbe ;};_ecc :=true ;for {_daa ,_dade :=_dgb ._ddc .Peek (1);if _dade !=nil {_gc .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_dade );
return _dbg .String (),_dade ;};if _ecc &&_daa [0]!='%'{return _dbg .String (),ErrBadCMapComment ;};_ecc =false ;if (_daa [0]!='\r')&&(_daa [0]!='\n'){_bcff ,_ :=_dgb ._ddc .ReadByte ();_dbg .WriteByte (_bcff );}else {break ;};};return _dbg .String (),nil ;
};func (cmap *CMap )parse ()error {var _geb cmapObject ;for {_gdgf ,_dec :=cmap .parseObject ();if _dec !=nil {if _dec ==_dd .EOF {break ;};_gc .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_dec );
return _dec ;};switch _gea :=_gdgf .(type ){case cmapOperand :_ceg :=_gea ;switch _ceg .Operand {case _eecd :_cfg :=cmap .parseCodespaceRange ();if _cfg !=nil {return _cfg ;};case _eca :_bac :=cmap .parseCIDRange ();if _bac !=nil {return _bac ;};case _bgec :_cdaf :=cmap .parseBfchar ();
if _cdaf !=nil {return _cdaf ;};case _bca :_bcgf :=cmap .parseBfrange ();if _bcgf !=nil {return _bcgf ;};case _gbec :if _geb ==nil {_gc .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 ;};_dcc ,_dfbb :=_geb .(cmapName );if !_dfbb {_gc .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",_geb );
return ErrBadCMap ;};cmap ._ed =_dcc .Name ;case _bde :_gbgf :=cmap .parseSystemInfo ();if _gbgf !=nil {return _gbgf ;};};case cmapName :_eaa :=_gea ;switch _eaa .Name {case _bde :_dfe :=cmap .parseSystemInfo ();if _dfe !=nil {return _dfe ;};case _fbd :_acc :=cmap .parseName ();
if _acc !=nil {return _acc ;};case _bga :_dfd :=cmap .parseType ();if _dfd !=nil {return _dfd ;};case _ecda :_fffe :=cmap .parseVersion ();if _fffe !=nil {return _fffe ;};case _ecaf :if _dec =cmap .parseWMode ();_dec !=nil {return _dec ;};};};_geb =_gdgf ;
};return nil ;};func (cmap *CMap )parseVersion ()error {_gae :="";_dbf :=false ;for _ggad :=0;_ggad < 3&&!_dbf ;_ggad ++{_dab ,_fd :=cmap .parseObject ();if _fd !=nil {return _fd ;};switch _agf :=_dab .(type ){case cmapOperand :switch _agf .Operand {case "\u0064\u0065\u0066":_dbf =true ;
default:_gc .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",_dab );
return ErrBadCMap ;};case cmapInt :_gae =_ae .Sprintf ("\u0025\u0064",_agf ._bgc );case cmapFloat :_gae =_ae .Sprintf ("\u0025\u0066",_agf ._gba );case cmapString :_gae =_agf .String ;default:_gc .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",_dab );
};};cmap ._ca =_gae ;return nil ;};func (cmap *CMap )NBits ()int {return cmap ._eb };var (ErrBadCMap =_ag .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_ag .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 =_ag .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func (cmap *CMap )Stream ()(*_af .PdfObjectStream ,error ){if cmap ._ga !=nil {return cmap ._ga ,nil ;};_adee ,_dae :=_af .MakeStream (cmap .Bytes (),_af .NewFlateEncoder ());
if _dae !=nil {return nil ,_dae ;};cmap ._ga =_adee ;return cmap ._ga ,nil ;};func (cmap *CMap )parseWMode ()error {var _abge int ;_adcd :=false ;for _egg :=0;_egg < 3&&!_adcd ;_egg ++{_fga ,_fef :=cmap .parseObject ();if _fef !=nil {return _fef ;};switch _bbe :=_fga .(type ){case cmapOperand :switch _bbe .Operand {case "\u0064\u0065\u0066":_adcd =true ;
default:_gc .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",_fga );return ErrBadCMap ;};case cmapInt :_abge =int (_bbe ._bgc );
};};cmap ._eec =integer {_dbfc :true ,_gab :_abge };return nil ;};func _geaf ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};type cmapFloat struct{_gba float64 };type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func IsPredefinedCMap (name string )bool {return _c .AssetExists (name )};
func (cmap *CMap )parseBfchar ()error {for {_aac ,_bcgd :=cmap .parseObject ();if _bcgd !=nil {if _bcgd ==_dd .EOF {break ;};return _bcgd ;};var _bcc CharCode ;switch _aebc :=_aac .(type ){case cmapOperand :if _aebc .Operand ==_cee {return nil ;};return _ag .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_bcc =_cebb (_aebc );default:return _ag .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_aac ,_bcgd =cmap .parseObject ();if _bcgd !=nil {if _bcgd ==_dd .EOF {break ;};return _bcgd ;};var _bee []rune ;
switch _bbd :=_aac .(type ){case cmapOperand :if _bbd .Operand ==_cee {return nil ;};_gc .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",_bbd );
return ErrBadCMap ;case cmapHexString :_bee =_fggd (_bbd );case cmapName :_gc .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",_bbd );_bee =[]rune {MissingCodeRune };
default:_gc .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",_aac );return ErrBadCMap ;};cmap ._ec [_bcc ]=string (_bee );};return nil ;};func (cmap *CMap )Type ()int {return cmap ._ef };
func (_dfbd *cMapParser )parseString ()(cmapString ,error ){_dfbd ._ddc .ReadByte ();_fdd :=_aeb .Buffer {};_dcg :=1;for {_agb ,_deg :=_dfbd ._ddc .Peek (1);if _deg !=nil {return cmapString {_fdd .String ()},_deg ;};if _agb [0]=='\\'{_dfbd ._ddc .ReadByte ();
_adeed ,_aaaa :=_dfbd ._ddc .ReadByte ();if _aaaa !=nil {return cmapString {_fdd .String ()},_aaaa ;};if _af .IsOctalDigit (_adeed ){_cfgd ,_gbd :=_dfbd ._ddc .Peek (2);if _gbd !=nil {return cmapString {_fdd .String ()},_gbd ;};var _dba []byte ;_dba =append (_dba ,_adeed );
for _ ,_ecce :=range _cfgd {if _af .IsOctalDigit (_ecce ){_dba =append (_dba ,_ecce );}else {break ;};};_dfbd ._ddc .Discard (len (_dba )-1);_gc .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_dba );
_ffeg ,_gbd :=_aaf .ParseUint (string (_dba ),8,32);if _gbd !=nil {return cmapString {_fdd .String ()},_gbd ;};_fdd .WriteByte (byte (_ffeg ));continue ;};switch _adeed {case 'n':_fdd .WriteByte ('\n');case 'r':_fdd .WriteByte ('\r');case 't':_fdd .WriteByte ('\t');
case 'b':_fdd .WriteByte ('\b');case 'f':_fdd .WriteByte ('\f');case '(':_fdd .WriteByte ('(');case ')':_fdd .WriteByte (')');case '\\':_fdd .WriteByte ('\\');};continue ;}else if _agb [0]=='('{_dcg ++;}else if _agb [0]==')'{_dcg --;if _dcg ==0{_dfbd ._ddc .ReadByte ();
break ;};};_edf ,_ :=_dfbd ._ddc .ReadByte ();_fdd .WriteByte (_edf );};return cmapString {_fdd .String ()},nil ;};func (cmap *CMap )toBfData ()string {if len (cmap ._ec )==0{return "";};_ccba :=make ([]CharCode ,0,len (cmap ._ec ));for _afb :=range cmap ._ec {_ccba =append (_ccba ,_afb );
};_g .Slice (_ccba ,func (_gbeg ,_fff int )bool {return _ccba [_gbeg ]< _ccba [_fff ]});var _fegb []charRange ;_fad :=charRange {_ccba [0],_ccba [0]};_faf :=cmap ._ec [_ccba [0]];for _ ,_bcb :=range _ccba [1:]{_cbgc :=cmap ._ec [_bcb ];if _bcb ==_fad ._e +1&&_eef (_cbgc )==_eef (_faf )+1{_fad ._e =_bcb ;
}else {_fegb =append (_fegb ,_fad );_fad ._ac ,_fad ._e =_bcb ,_bcb ;};_faf =_cbgc ;};_fegb =append (_fegb ,_fad );var _eba []CharCode ;var _dfa []fbRange ;for _ ,_bd :=range _fegb {if _bd ._ac ==_bd ._e {_eba =append (_eba ,_bd ._ac );}else {_dfa =append (_dfa ,fbRange {_gb :_bd ._ac ,_gg :_bd ._e ,_gd :cmap ._ec [_bd ._ac ]});
};};_gc .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 (_fegb ),len (_eba ),len (_dfa ));var _gda []string ;if len (_eba )> 0{_cef :=(len (_eba )+_afd -1)/_afd ;
for _ggeb :=0;_ggeb < _cef ;_ggeb ++{_ggec :=_aacc (len (_eba )-_ggeb *_afd ,_afd );_gda =append (_gda ,_ae .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_ggec ));for _fafb :=0;_fafb < _ggec ;_fafb ++{_bgg :=_eba [_ggeb *_afd +_fafb ];
_dfc :=cmap ._ec [_bgg ];_gda =append (_gda ,_ae .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_bgg ,_bbcf (_dfc )));};_gda =append (_gda ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_dfa )> 0{_faa :=(len (_dfa )+_afd -1)/_afd ;
for _ebd :=0;_ebd < _faa ;_ebd ++{_edc :=_aacc (len (_dfa )-_ebd *_afd ,_afd );_gda =append (_gda ,_ae .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_edc ));for _cgeb :=0;_cgeb < _edc ;_cgeb ++{_cdad :=_dfa [_ebd *_afd +_cgeb ];
_gda =append (_gda ,_ae .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_cdad ._gb ,_cdad ._gg ,_bbcf (_cdad ._gd )));};_gda =append (_gda ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};
return _b .Join (_gda ,"\u000a");};type cmapString struct{String string ;};func _aacc (_cce ,_bfca int )int {if _cce < _bfca {return _cce ;};return _bfca ;};const (_dg =4;MissingCodeRune ='\ufffd';MissingCodeString =string (MissingCodeRune ););func _fggd (_badg cmapHexString )[]rune {if len (_badg ._aea )==1{return []rune {rune (_badg ._aea [0])};
};_gcff :=_badg ._aea ;if len (_gcff )%2!=0{_gcff =append (_gcff ,0);_gc .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",_badg ,_gcff );
};_dggf :=len (_gcff )>>1;_bbag :=make ([]uint16 ,_dggf );for _faef :=0;_faef < _dggf ;_faef ++{_bbag [_faef ]=uint16 (_gcff [_faef <<1])<<8+uint16 (_gcff [_faef <<1+1]);};_dgfa :=_aa .Decode (_bbag );return _dgfa ;};type fbRange struct{_gb CharCode ;_gg CharCode ;
_gd string ;};func (_bgf *cMapParser )parseObject ()(cmapObject ,error ){_bgf .skipSpaces ();for {_gfd ,_fab :=_bgf ._ddc .Peek (2);if _fab !=nil {return nil ,_fab ;};if _gfd [0]=='%'{_bgf .parseComment ();_bgf .skipSpaces ();continue ;}else if _gfd [0]=='/'{_adcb ,_ebgc :=_bgf .parseName ();
return _adcb ,_ebgc ;}else if _gfd [0]=='('{_ggfg ,_bgbf :=_bgf .parseString ();return _ggfg ,_bgbf ;}else if _gfd [0]=='['{_dbd ,_ggee :=_bgf .parseArray ();return _dbd ,_ggee ;}else if (_gfd [0]=='<')&&(_gfd [1]=='<'){_beb ,_gaag :=_bgf .parseDict ();
return _beb ,_gaag ;}else if _gfd [0]=='<'{_egeb ,_adgg :=_bgf .parseHexString ();return _egeb ,_adgg ;}else if _af .IsDecimalDigit (_gfd [0])||(_gfd [0]=='-'&&_af .IsDecimalDigit (_gfd [1])){_bef ,_caad :=_bgf .parseNumber ();if _caad !=nil {return nil ,_caad ;
};return _bef ,nil ;}else {_gaf ,_fae :=_bgf .parseOperand ();if _fae !=nil {return nil ,_fae ;};return _gaf ,nil ;};};};func (cmap *CMap )WMode ()(int ,bool ){return cmap ._eec ._gab ,cmap ._eec ._dbfc };func _da (_acfb bool )*CMap {_gdg :=16;if _acfb {_gdg =8;
};return &CMap {_eb :_gdg ,_dgf :make (map[CharCode ]CharCode ),_acf :make (map[CharCode ]CharCode ),_ec :make (map[CharCode ]string ),_ad :make (map[string ]CharCode )};};const (_bde ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";
_aec ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";_fefb ="\u0065n\u0064\u0063\u006d\u0061\u0070";_eecd ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_fegbc ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
_bgec ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_cee ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_bca ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_gfe ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_eca ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_fb ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_gbec ="\u0075s\u0065\u0063\u006d\u0061\u0070";_ecaf ="\u0057\u004d\u006fd\u0065";_fbd ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
_bga ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_ecda ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);