aboutsummaryrefslogtreecommitdiff
path: root/unipdf/render
diff options
context:
space:
mode:
Diffstat (limited to 'unipdf/render')
-rw-r--r--unipdf/render/internal/context/context.go40
-rw-r--r--unipdf/render/internal/context/imagerender/imagerender.go107
-rw-r--r--unipdf/render/render.go211
3 files changed, 358 insertions, 0 deletions
diff --git a/unipdf/render/internal/context/context.go b/unipdf/render/internal/context/context.go
new file mode 100644
index 0000000..5d5a57a
--- /dev/null
+++ b/unipdf/render/internal/context/context.go
@@ -0,0 +1,40 @@
+//
+// 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 context ;import (_a "errors";_b "github.com/unidoc/freetype/truetype";_gf "github.com/unidoc/unipdf/v4/core";_fe "github.com/unidoc/unipdf/v4/internal/cmap";_eg "github.com/unidoc/unipdf/v4/internal/textencoding";_aa "github.com/unidoc/unipdf/v4/internal/transform";
+_cd "github.com/unidoc/unipdf/v4/model";_ad "golang.org/x/image/font";_g "image";_c "image/color";_cf "strconv";_f "strings";);func (_bgg *TextFont )NewFace (size float64 )_ad .Face {return _b .NewFace (_bgg ._eab ,&_b .Options {Size :size });};type TextFont struct{Font *_cd .PdfFont ;
+Size float64 ;_eab *_b .Font ;_dca *_cd .PdfFont ;};const (FillRuleWinding FillRule =iota ;FillRuleEvenOdd ;);type Context interface{Push ();Pop ();Matrix ()_aa .Matrix ;SetMatrix (_ac _aa .Matrix );Translate (_aaa ,_ae float64 );Scale (_d ,_df float64 );
+Rotate (_ag float64 );MoveTo (_agd ,_ec float64 );LineTo (_bfa ,_ee float64 );CubicTo (_ea ,_fd ,_gd ,_dc ,_gfb ,_ge float64 );QuadraticTo (_bd ,_ef ,_fg ,_aab float64 );NewSubPath ();ClosePath ();ClearPath ();Clip ();ClipPreserve ();ResetClip ();LineWidth ()float64 ;
+SetLineWidth (_da float64 );SetLineCap (_dg LineCap );SetLineJoin (_ed LineJoin );SetDash (_cc ...float64 );SetDashOffset (_gff float64 );Fill ();FillPreserve ();Stroke ();StrokePreserve ();SetRGBA (_fdc ,_gg ,_gef ,_bb float64 );SetFillRGBA (_ccf ,_fa ,_cg ,_ga float64 );
+SetFillStyle (_fcf Pattern );SetFillRule (_geg FillRule );SetStrokeRGBA (_gc ,_gcf ,_bdc ,_fea float64 );SetStrokeStyle (_ede Pattern );FillPattern ()Pattern ;StrokePattern ()Pattern ;TextState ()*TextState ;DrawString (_ab string ,_bcf _ad .Face ,_add ,_egg float64 );
+MeasureString (_bde string ,_eb _ad .Face )(_bcd ,_gde float64 );DrawRectangle (_eca ,_cgd ,_ged ,_cfc float64 );DrawImage (_ff _g .Image ,_gge ,_egf int );DrawImageAnchored (_aee _g .Image ,_agg ,_fb int ,_ebe ,_bfac float64 );Height ()int ;Width ()int ;
+};const (LineJoinRound LineJoin =iota ;LineJoinBevel ;);type TextRenderingMode int ;func (_fdf *TextState )ProcTm (a ,b ,c ,d ,e ,f float64 ){_fdf .Tm =_aa .NewMatrix (a ,b ,c ,d ,e ,f );_fdf .Tlm =_fdf .Tm .Clone ();};type TextState struct{Tc float64 ;
+Tw float64 ;Th float64 ;Tl float64 ;Tf *TextFont ;Ts float64 ;Tm _aa .Matrix ;Tlm _aa .Matrix ;Tr TextRenderingMode ;GlobalScale float64 ;};func (_bga *TextFont )GetCharMetrics (code _eg .CharCode )(float64 ,float64 ,bool ){if _efb ,_afg :=_bga .Font .GetCharMetrics (code );
+_afg &&_efb .Wx !=0{return _efb .Wx ,_efb .Wy ,_afg ;};if _bga ._dca ==nil {return 0,0,false ;};_ggc ,_fbc :=_bga ._dca .GetCharMetrics (code );return _ggc .Wx ,_ggc .Wy ,_fbc &&_ggc .Wx !=0;};func (_cdab *TextState )ProcTf (font *TextFont ){_cdab .Tf =font };
+const (TextRenderingModeFill TextRenderingMode =iota ;TextRenderingModeStroke ;TextRenderingModeFillStroke ;TextRenderingModeInvisible ;TextRenderingModeFillClip ;TextRenderingModeStrokeClip ;TextRenderingModeFillStrokeClip ;TextRenderingModeClip ;);func NewTextFont (font *_cd .PdfFont ,size float64 )(*TextFont ,error ){_bg :=font .FontDescriptor ();
+if _bg ==nil {return nil ,_a .New ("\u0063\u006fu\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0067\u0065\u0074\u0020\u0066\u006f\u006e\u0074\u0020\u0064\u0065\u0073\u0063\u0072\u0069pt\u006f\u0072");};_bcc ,_bge :=_gf .GetStream (_bg .FontFile2 );if !_bge {return nil ,_a .New ("\u006di\u0073\u0073\u0069\u006e\u0067\u0020\u0066\u006f\u006e\u0074\u0020f\u0069\u006c\u0065\u0020\u0073\u0074\u0072\u0065\u0061\u006d");
+};_aeec ,_bce :=_gf .DecodeStream (_bcc );if _bce !=nil {return nil ,_bce ;};_daa ,_bce :=_b .Parse (_aeec );if _bce !=nil {return nil ,_bce ;};_bdd :=font .FontDescriptor ().FontName .String ();_adc :=len (_bdd )> 7&&_bdd [6]=='+';if _bg .Flags !=nil {_gdd ,_efa :=_cf .Atoi (_bg .Flags .String ());
+if _efa ==nil &&_gdd ==32{_adc =false ;};};if !_daa .HasCmap ()&&(!_f .Contains (font .Encoder ().String (),"\u0049d\u0065\u006e\u0074\u0069\u0074\u0079-")||!_adc ){return nil ,_a .New ("\u006e\u006f c\u006d\u0061\u0070 \u0061\u006e\u0064\u0020enc\u006fdi\u006e\u0067\u0020\u0069\u0073\u0020\u006eot\u0020\u0069\u0064\u0065\u006e\u0074\u0069t\u0079");
+};return &TextFont {Font :font ,Size :size ,_eab :_daa },nil ;};func (_dde *TextState )ProcTj (data []byte ,ctx Context ){_db :=_dde .Tf .Size ;_gb :=_dde .Th /100.0;_gac :=_dde .GlobalScale ;_daab :=_aa .NewMatrix (_db *_gb ,0,0,_db ,0,_dde .Ts );_aef :=ctx .Matrix ();
+_bgga :=_aef .Clone ().Mult (_dde .Tm .Clone ().Mult (_daab )).ScalingFactorY ();_fgd :=_dde .Tf .NewFace (_bgga );_age :=_dde .Tf .BytesToCharcodes (data );for _ ,_fae :=range _age {_adg ,_deb :=_dde .Tf .CharcodeToRunes (_fae );_daae :=string (_deb );
+if _daae =="\u0000"{continue ;};_abab :=_aef .Clone ().Mult (_dde .Tm .Clone ().Mult (_daab ));_eff :=_abab .ScalingFactorY ();_abab =_abab .Scale (1/_eff ,-1/_eff );if _dde .Tr !=TextRenderingModeInvisible {ctx .SetMatrix (_abab );ctx .DrawString (_daae ,_fgd ,0,0);
+ctx .SetMatrix (_aef );};_cdf :=0.0;if _daae =="\u0020"{_cdf =_dde .Tw ;};_cff ,_ ,_dcc :=_dde .Tf .GetCharMetrics (_adg );if _dcc {_cff =_cff *0.001*_db ;}else {_cff ,_ =ctx .MeasureString (_daae ,_fgd );_cff =_cff /_gac ;};_fge :=(_cff +_dde .Tc +_cdf )*_gb ;
+_dde .Tm =_dde .Tm .Mult (_aa .TranslationMatrix (_fge ,0));};};func (_abe *TextFont )WithSize (size float64 ,originalFont *_cd .PdfFont )*TextFont {return &TextFont {Font :_abe .Font ,Size :size ,_eab :_abe ._eab ,_dca :originalFont };};func (_dd *TextState )ProcTD (tx ,ty float64 ){_dd .Tl =-ty ;
+_dd .ProcTd (tx ,ty )};func (_cca *TextFont )BytesToCharcodes (data []byte )[]_eg .CharCode {if _cca ._dca !=nil {return _cca ._dca .BytesToCharcodes (data );};return _cca .Font .BytesToCharcodes (data );};func (_de *TextState )ProcTStar (){_de .ProcTd (0,-_de .Tl )};
+func NewTextState ()TextState {return TextState {Th :100,Tm :_aa .IdentityMatrix (),Tlm :_aa .IdentityMatrix ()};};func (_fdcc *TextFont )charcodeToRunesSimple (_eeb _eg .CharCode )(_eg .CharCode ,[]rune ){_agb :=[]_eg .CharCode {_eeb };if _fdcc .Font .IsSimple ()&&_fdcc ._eab !=nil {if _fec :=_fdcc ._eab .Index (rune (_eeb ));
+_fec > 0{return _eeb ,[]rune {rune (_eeb )};};};if _fdcc ._eab !=nil &&!_fdcc ._eab .HasCmap ()&&_f .Contains (_fdcc .Font .Encoder ().String (),"\u0049d\u0065\u006e\u0074\u0069\u0074\u0079-"){if _bcea :=_fdcc ._eab .Index (rune (_eeb ));_bcea > 0{return _eeb ,[]rune {rune (_eeb )};
+};};return _eeb ,_fdcc .Font .CharcodesToUnicode (_agb );};type FillRule int ;func (_fed *TextState )ProcQ (data []byte ,ctx Context ){_fed .ProcTStar ();_fed .ProcTj (data ,ctx )};func (_aaf *TextState )Translate (tx ,ty float64 ){_aaf .Tm =_aaf .Tm .Mult (_aa .TranslationMatrix (tx ,ty ));
+};func NewTextFontFromPath (filePath string ,size float64 )(*TextFont ,error ){_efd ,_fce :=_cd .NewPdfFontFromTTFFile (filePath );if _fce !=nil {return nil ,_fce ;};return NewTextFont (_efd ,size );};func (_gace *TextState )Reset (){_gace .Tm =_aa .IdentityMatrix ();
+_gace .Tlm =_aa .IdentityMatrix ()};type LineJoin int ;const (LineCapRound LineCap =iota ;LineCapButt ;LineCapSquare ;);type Gradient interface{Pattern ;AddColorStop (_fcc float64 ,_bf _c .Color );};type LineCap int ;type Pattern interface{ColorAt (_fc ,_bc int )_c .Color ;
+};func (_ecb *TextState )ProcTd (tx ,ty float64 ){_ecb .Tlm .Concat (_aa .TranslationMatrix (tx ,ty ));_ecb .Tm =_ecb .Tlm .Clone ();};func (_eec *TextFont )CharcodeToRunes (charcode _eg .CharCode )(_eg .CharCode ,[]rune ){_feac :=[]_eg .CharCode {charcode };
+if _eec ._dca ==nil ||_eec ._dca ==_eec .Font {return _eec .charcodeToRunesSimple (charcode );};_ffa :=_eec ._dca .CharcodesToUnicode (_feac );_bbb ,_ :=_eec .Font .RunesToCharcodeBytes (_ffa );_feag :=_eec .Font .BytesToCharcodes (_bbb );_ebg :=charcode ;
+if len (_feag )> 0&&_feag [0]!=0{_ebg =_feag [0];};if string (_ffa )==string (_fe .MissingCodeRune )&&_eec ._dca .BaseFont ()==_eec .Font .BaseFont (){return _eec .charcodeToRunesSimple (charcode );};return _ebg ,_ffa ;};func (_cda *TextState )ProcDQ (data []byte ,aw ,ac float64 ,ctx Context ){_cda .Tw =aw ;
+_cda .Tc =ac ;_cda .ProcQ (data ,ctx );}; \ No newline at end of file
diff --git a/unipdf/render/internal/context/imagerender/imagerender.go b/unipdf/render/internal/context/imagerender/imagerender.go
new file mode 100644
index 0000000..27efcc3
--- /dev/null
+++ b/unipdf/render/internal/context/imagerender/imagerender.go
@@ -0,0 +1,107 @@
+//
+// 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 imagerender ;import (_ea "errors";_e "fmt";_be "github.com/unidoc/freetype/raster";_gdb "github.com/unidoc/unipdf/v4/common";_gf "github.com/unidoc/unipdf/v4/internal/precision";_ad "github.com/unidoc/unipdf/v4/internal/transform";_gfg "github.com/unidoc/unipdf/v4/render/internal/context";
+_gde "golang.org/x/image/draw";_b "golang.org/x/image/font";_af "golang.org/x/image/math/f64";_gc "golang.org/x/image/math/fixed";_gd "image";_c "image/color";_cf "image/draw";_g "math";_dd "sort";_a "strings";);func (_gff *Context )SetLineCap (lineCap _gfg .LineCap ){_gff ._da =lineCap };
+func (_fgb *Context )SetStrokeRGBA (r ,g ,b ,a float64 ){_cddd :=_c .NRGBA {uint8 (r *255),uint8 (g *255),uint8 (b *255),uint8 (a *255)};_fgb ._adb =_adag (_cddd );};func (_caf *Context )DrawStringAnchored (s string ,face _b .Face ,x ,y ,ax ,ay float64 ){_aaacb ,_afab :=_caf .MeasureString (s ,face );
+_caf .drawString (s ,face ,x -ax *_aaacb ,y +ay *_afab );};func (_ccd *Context )QuadraticTo (x1 ,y1 ,x2 ,y2 float64 ){if !_ccd ._bfa {_ccd .MoveTo (x1 ,y1 );};x1 ,y1 =_ccd .Transform (x1 ,y1 );x2 ,y2 =_ccd .Transform (x2 ,y2 );_faed :=_ad .NewPoint (x1 ,y1 );
+_fff :=_ad .NewPoint (x2 ,y2 );_faec :=_dfb (_faed );_ag :=_dfb (_fff );_ccd ._bcf .Add2 (_faec ,_ag );_ccd ._geg .Add2 (_faec ,_ag );_ccd ._ged =_fff ;};func (_bcg *Context )DrawImageAnchored (im _gd .Image ,x ,y int ,ax ,ay float64 ){_gfc :=im .Bounds ().Size ();
+x -=int (ax *float64 (_gfc .X ));y -=int (ay *float64 (_gfc .Y ));_gdg :=_gde .BiLinear ;_dba :=_bcg ._aad .Clone ().Translate (float64 (x ),float64 (y ));_dce :=_af .Aff3 {_dba [0],_dba [3],_dba [6],_dba [1],_dba [4],_dba [7]};if _bcg ._aaa ==nil {_gdg .Transform (_bcg ._cfce ,_dce ,im ,im .Bounds (),_gde .Over ,nil );
+}else {_gdg .Transform (_bcg ._cfce ,_dce ,im ,im .Bounds (),_gde .Over ,&_gde .Options {DstMask :_bcg ._aaa ,DstMaskP :_gd .Point {}});};};func (_gfe *Context )ClipPreserve (){_abc :=_gd .NewAlpha (_gd .Rect (0,0,_gfe ._efc ,_gfe ._ca ));_gefa :=_be .NewAlphaOverPainter (_abc );
+_gfe .fill (_gefa );if _gfe ._aaa ==nil {_gfe ._aaa =_abc ;}else {_addf :=_gd .NewAlpha (_gd .Rect (0,0,_gfe ._efc ,_gfe ._ca ));_gde .DrawMask (_addf ,_addf .Bounds (),_abc ,_gd .Point {},_gfe ._aaa ,_gd .Point {},_gde .Over );_gfe ._aaa =_addf ;};};func (_abed *Context )FillPattern ()_gfg .Pattern {return _abed ._efe };
+func (_edg *Context )setFillAndStrokeColor (_cdc _c .Color ){_edg ._baaf =_cdc ;_edg ._efe =_adag (_cdc );_edg ._adb =_adag (_cdc );};func (_fec *Context )fill (_gea _be .Painter ){_baae :=_fec ._geg ;if _fec ._bfa {_baae =make (_be .Path ,len (_fec ._geg ));
+copy (_baae ,_fec ._geg );_baae .Add1 (_dfb (_fec ._gcae ));};_gfdd :=_fec ._dgd ;_gfdd .UseNonZeroWinding =_fec ._gcc ==_gfg .FillRuleWinding ;_gfdd .Clear ();_gfdd .AddPath (_baae );_gfdd .Rasterize (_gea );};func (_ecf *Context )SetFillStyle (pattern _gfg .Pattern ){if _ece ,_bdf :=pattern .(*solidPattern );
+_bdf {_ecf ._baaf =_ece ._egc ;};_ecf ._efe =pattern ;};func (_gaeg *Context )Identity (){_gaeg ._aad =_ad .IdentityMatrix ()};type radialGradient struct{_gdcde ,_bea ,_gfff circle ;_bcb ,_babb float64 ;_abede float64 ;_ecb stops ;};func (_edbd *Context )SetStrokeStyle (pattern _gfg .Pattern ){_edbd ._adb =pattern };
+func (_ccbb *Context )DrawArc (x ,y ,r ,angle1 ,angle2 float64 ){_ccbb .DrawEllipticalArc (x ,y ,r ,r ,angle1 ,angle2 );};func (_gbga *Context )Pop (){_ceb :=*_gbga ;_cec :=_gbga ._aae ;_dbg :=_cec [len (_cec )-1];*_gbga =*_dbg ;_gbga ._bcf =_ceb ._bcf ;
+_gbga ._geg =_ceb ._geg ;_gbga ._gcae =_ceb ._gcae ;_gbga ._ged =_ceb ._ged ;_gbga ._bfa =_ceb ._bfa ;};func NewRadialGradient (x0 ,y0 ,r0 ,x1 ,y1 ,r1 float64 )_gfg .Gradient {_ecba :=circle {x0 ,y0 ,r0 };_dbfb :=circle {x1 ,y1 ,r1 };_gbf :=circle {x1 -x0 ,y1 -y0 ,r1 -r0 };
+_bde :=_egg (_gbf ._bffa ,_gbf ._fbd ,-_gbf ._dag ,_gbf ._bffa ,_gbf ._fbd ,_gbf ._dag );var _eeg float64 ;if _bde !=0{_eeg =1.0/_bde ;};_ddd :=-_ecba ._dag ;_dff :=&radialGradient {_gdcde :_ecba ,_bea :_dbfb ,_gfff :_gbf ,_bcb :_bde ,_babb :_eeg ,_abede :_ddd };
+return _dff ;};func (_cae *Context )Width ()int {return _cae ._efc };func (_eadf *Context )capper ()_be .Capper {switch _eadf ._da {case _gfg .LineCapButt :return _be .ButtCapper ;case _gfg .LineCapRound :return _be .RoundCapper ;case _gfg .LineCapSquare :return _be .SquareCapper ;
+};return nil ;};func (_cbfb *Context )TextState ()*_gfg .TextState {return &_cbfb ._gcg };func (_gbg *Context )DrawImage (im _gd .Image ,x ,y int ){_gbg .DrawImageAnchored (im ,x ,y ,0,0)};func (_bce *Context )SetHexColor (x string ){_aaed ,_gb ,_de ,_cgd :=_deg (x );
+_bce .SetRGBA255 (_aaed ,_gb ,_de ,_cgd );};func _geac (_ddga _gd .Image )*_gd .RGBA {_cab :=_ddga .Bounds ();_bad :=_gd .NewRGBA (_cab );_cf .Draw (_bad ,_cab ,_ddga ,_cab .Min ,_cf .Src );return _bad ;};func (_gcec *Context )DrawEllipticalArc (x ,y ,rx ,ry ,angle1 ,angle2 float64 ){const _cb =16;
+for _gcb :=0;_gcb < _cb ;_gcb ++{_becb :=float64 (_gcb +0)/_cb ;_bff :=float64 (_gcb +1)/_cb ;_aef :=angle1 +(angle2 -angle1 )*_becb ;_dgb :=angle1 +(angle2 -angle1 )*_bff ;_bcad :=x +rx *_g .Cos (_aef );_aba :=y +ry *_g .Sin (_aef );_bab :=x +rx *_g .Cos ((_aef +_dgb )/2);
+_fegd :=y +ry *_g .Sin ((_aef +_dgb )/2);_edc :=x +rx *_g .Cos (_dgb );_begg :=y +ry *_g .Sin (_dgb );_bgca :=2*_bab -_bcad /2-_edc /2;_cbf :=2*_fegd -_aba /2-_begg /2;if _gcb ==0{if _gcec ._bfa {_gcec .LineTo (_bcad ,_aba );}else {_gcec .MoveTo (_bcad ,_aba );
+};};_gcec .QuadraticTo (_bgca ,_cbf ,_edc ,_begg );};};func (_eag *Context )Clear (){_eagc :=_gd .NewUniform (_eag ._baaf );_gde .Draw (_eag ._cfce ,_eag ._cfce .Bounds (),_eagc ,_gd .Point {},_gde .Src );};func (_aagd *Context )SetLineJoin (lineJoin _gfg .LineJoin ){_aagd ._cgg =lineJoin };
+type Context struct{_efc int ;_ca int ;_dgd *_be .Rasterizer ;_cfce *_gd .RGBA ;_aaa *_gd .Alpha ;_baaf _c .Color ;_efe _gfg .Pattern ;_adb _gfg .Pattern ;_bcf _be .Path ;_geg _be .Path ;_gcae _ad .Point ;_ged _ad .Point ;_bfa bool ;_bef []float64 ;_aff float64 ;
+_efec float64 ;_da _gfg .LineCap ;_cgg _gfg .LineJoin ;_gcc _gfg .FillRule ;_aad _ad .Matrix ;_gcg _gfg .TextState ;_aae []*Context ;};func (_eaf *Context )LineWidth ()float64 {return _eaf ._efec };func (_cfa *Context )MoveTo (x ,y float64 ){if _cfa ._bfa {_cfa ._geg .Add1 (_dfb (_cfa ._gcae ));
+};x ,y =_cfa .Transform (x ,y );_ace :=_ad .NewPoint (x ,y );_ggcg :=_dfb (_ace );_cfa ._bcf .Start (_ggcg );_cfa ._geg .Start (_ggcg );_cfa ._gcae =_ace ;_cfa ._ged =_ace ;_cfa ._bfa =true ;};func (_bcac *Context )DrawLine (x1 ,y1 ,x2 ,y2 float64 ){_bcac .MoveTo (x1 ,y1 );
+_bcac .LineTo (x2 ,y2 )};func NewContextForRGBA (im *_gd .RGBA )*Context {_cdd :=im .Bounds ().Size ().X ;_ecc :=im .Bounds ().Size ().Y ;return &Context {_efc :_cdd ,_ca :_ecc ,_dgd :_be .NewRasterizer (_cdd ,_ecc ),_cfce :im ,_baaf :_c .Transparent ,_efe :_aag ,_adb :_edb ,_efec :1,_gcc :_gfg .FillRuleWinding ,_aad :_ad .IdentityMatrix (),_gcg :_gfg .NewTextState ()};
+};func (_dab *Context )StrokePattern ()_gfg .Pattern {return _dab ._adb };func _ddg (_acc ,_fffa _c .Color ,_dfe float64 )_c .Color {_agbd ,_cegd ,_ffdc ,_ebe :=_acc .RGBA ();_dac ,_facb ,_ffa ,_adfdd :=_fffa .RGBA ();return _c .RGBA {_gdecc (_agbd ,_dac ,_dfe ),_gdecc (_cegd ,_facb ,_dfe ),_gdecc (_ffdc ,_ffa ,_dfe ),_gdecc (_ebe ,_adfdd ,_dfe )};
+};func (_bdb *Context )AsMask ()*_gd .Alpha {_fdc :=_gd .NewAlpha (_bdb ._cfce .Bounds ());_gde .Draw (_fdc ,_bdb ._cfce .Bounds (),_bdb ._cfce ,_gd .Point {},_gde .Src );return _fdc ;};func (_abf *Context )MeasureString (s string ,face _b .Face )(_fba ,_ggb float64 ){_gccc :=&_b .Drawer {Face :face };
+_ffd :=_gccc .MeasureString (s );return float64 (_ffd >>6),_abf ._gcg .Tf .Size ;};func _cebb (_ffbd _gc .Int26_6 )float64 {const _adfb ,_baba =6,1<<6-1;if _ffbd >=0{return float64 (_ffbd >>_adfb )+float64 (_ffbd &_baba )/64;};_ffbd =-_ffbd ;if _ffbd >=0{return -(float64 (_ffbd >>_adfb )+float64 (_ffbd &_baba )/64);
+};return 0;};func (_ccg stops )Swap (i ,j int ){_ccg [i ],_ccg [j ]=_ccg [j ],_ccg [i ]};func (_dfg *Context )Image ()_gd .Image {return _dfg ._cfce };func (_fac *radialGradient )AddColorStop (offset float64 ,color _c .Color ){_fac ._ecb =append (_fac ._ecb ,stop {_dcg :offset ,_afg :color });
+_dd .Sort (_fac ._ecb );};func (_afd *Context )SetLineWidth (lineWidth float64 ){_afd ._efec =lineWidth };func _cced (_gcdf [][]_ad .Point ,_dcf []float64 ,_beff float64 )[][]_ad .Point {var _eae [][]_ad .Point ;if len (_dcf )==0{return _gcdf ;};if len (_dcf )==1{_dcf =append (_dcf ,_dcf [0]);
+};for _ ,_gfce :=range _gcdf {if len (_gfce )< 2{continue ;};_bfd :=_gfce [0];_ddge :=1;_adba :=0;_gfa :=0.0;if _beff !=0{var _dfae float64 ;for _ ,_efbc :=range _dcf {_dfae +=_efbc ;};_beff =_g .Mod (_beff ,_dfae );if _beff < 0{_beff +=_dfae ;};for _gfca ,_dacc :=range _dcf {_beff -=_dacc ;
+if _beff < 0{_adba =_gfca ;_gfa =_dacc +_beff ;break ;};};};var _edgdd []_ad .Point ;_edgdd =append (_edgdd ,_bfd );for _ddge < len (_gfce ){_cag :=_dcf [_adba ];_ffff :=_gfce [_ddge ];_ccce :=_bfd .Distance (_ffff );_ddbb :=_cag -_gfa ;if _ccce > _ddbb {_bfc :=_ddbb /_ccce ;
+_cebe :=_bfd .Interpolate (_ffff ,_bfc );_edgdd =append (_edgdd ,_cebe );if _adba %2==0&&len (_edgdd )> 1{_eae =append (_eae ,_edgdd );};_edgdd =nil ;_edgdd =append (_edgdd ,_cebe );_gfa =0;_bfd =_cebe ;_adba =(_adba +1)%len (_dcf );}else {_edgdd =append (_edgdd ,_ffff );
+_bfd =_ffff ;_gfa +=_ccce ;_ddge ++;};};if _adba %2==0&&len (_edgdd )> 1{_eae =append (_eae ,_edgdd );};};return _eae ;};type solidPattern struct{_egc _c .Color };func (_bda *Context )StrokePreserve (){var _bbd _be .Painter ;if _bda ._aaa ==nil {if _ggg ,_dc :=_bda ._adb .(*solidPattern );
+_dc {_gedf :=_be .NewRGBAPainter (_bda ._cfce );_gedf .SetColor (_ggg ._egc );_bbd =_gedf ;};};if _bbd ==nil {_bbd =_gedfc (_bda ._cfce ,_bda ._aaa ,_bda ._adb );};_bda .stroke (_bbd );};func (_aec stops )Len ()int {return len (_aec )};func _bdaf (_cbc float64 ,_bbb stops )_c .Color {if _cbc <=0.0||len (_bbb )==1{return _bbb [0]._afg ;
+};_cgaf :=_bbb [len (_bbb )-1];if _cbc >=_cgaf ._dcg {return _cgaf ._afg ;};for _eab ,_abad :=range _bbb [1:]{if _cbc < _abad ._dcg {_cbc =(_cbc -_bbb [_eab ]._dcg )/(_abad ._dcg -_bbb [_eab ]._dcg );return _ddg (_bbb [_eab ]._afg ,_abad ._afg ,_cbc );
+};};return _cgaf ._afg ;};func (_ffb *Context )DrawEllipse (x ,y ,rx ,ry float64 ){_ffb .NewSubPath ();_ffb .DrawEllipticalArc (x ,y ,rx ,ry ,0,2*_g .Pi );_ffb .ClosePath ();};func _ec (_f ,_eg ,_ddb ,_fe ,_ba ,_cfc ,_fc float64 )(_fa ,_fg float64 ){_ab :=1-_fc ;
+_adg :=_ab *_ab ;_ge :=2*_ab *_fc ;_fae :=_fc *_fc ;_fa =_adg *_f +_ge *_ddb +_fae *_ba ;_fg =_adg *_eg +_ge *_fe +_fae *_cfc ;return ;};func (_gbc *linearGradient )ColorAt (x ,y int )_c .Color {if len (_gbc ._deee )==0{return _c .Transparent ;};_ecee ,_fdac :=float64 (x ),float64 (y );
+_gag ,_gccf ,_bee ,_gfeg :=_gbc ._baed ,_gbc ._fbb ,_gbc ._egf ,_gbc ._dee ;_gad ,_gfb :=_bee -_gag ,_gfeg -_gccf ;if _gfb ==0&&_gad !=0{return _bdaf ((_ecee -_gag )/_gad ,_gbc ._deee );};if _gad ==0&&_gfb !=0{return _bdaf ((_fdac -_gccf )/_gfb ,_gbc ._deee );
+};_ddfa :=_gad *(_ecee -_gag )+_gfb *(_fdac -_gccf );if _ddfa < 0{return _gbc ._deee [0]._afg ;};_fee :=_g .Hypot (_gad ,_gfb );_abd :=((_ecee -_gag )*-_gfb +(_fdac -_gccf )*_gad )/(_fee *_fee );_efca ,_bdgc :=_gag +_abd *-_gfb ,_gccf +_abd *_gad ;_fad :=_g .Hypot (_ecee -_efca ,_fdac -_bdgc )/_fee ;
+return _bdaf (_fad ,_gbc ._deee );};func (_dfa *Context )stroke (_agd _be .Painter ){_cgga :=_dfa ._bcf ;if len (_dfa ._bef )> 0{_cgga =_gedab (_cgga ,_dfa ._bef ,_dfa ._aff );}else {_cgga =_cfd (_eba (_cgga ));};_dgc :=_dfa ._dgd ;_dgc .UseNonZeroWinding =true ;
+_dgc .Clear ();_ceg :=(_dfa ._aad .ScalingFactorX ()+_dfa ._aad .ScalingFactorY ())/2;_dgc .AddStroke (_cgga ,_fdce (_dfa ._efec *_ceg ),_dfa .capper (),_dfa .joiner ());_dgc .Rasterize (_agd );};func NewContext (width ,height int )*Context {return NewContextForRGBA (_gd .NewRGBA (_gd .Rect (0,0,width ,height )));
+};func (_ddf *Context )joiner ()_be .Joiner {switch _ddf ._cgg {case _gfg .LineJoinBevel :return _be .BevelJoiner ;case _gfg .LineJoinRound :return _be .RoundJoiner ;};return nil ;};func _cfd (_bfcd [][]_ad .Point )_be .Path {var _aeaa _be .Path ;for _ ,_agf :=range _bfcd {var _cfda _gc .Point26_6 ;
+for _bgea ,_eadb :=range _agf {_dcee :=_dfb (_eadb );if _bgea ==0{_aeaa .Start (_dcee );}else {_efd :=_dcee .X -_cfda .X ;_bfe :=_dcee .Y -_cfda .Y ;if _efd < 0{_efd =-_efd ;};if _bfe < 0{_bfe =-_bfe ;};if _efd +_bfe > 8{_aeaa .Add1 (_dcee );};};_cfda =_dcee ;
+};};return _aeaa ;};func (_cdgf *Context )Matrix ()_ad .Matrix {return _cdgf ._aad };func (_efb *Context )SetFillRule (fillRule _gfg .FillRule ){_efb ._gcc =fillRule };func NewLinearGradient (x0 ,y0 ,x1 ,y1 float64 )_gfg .Gradient {_fcce :=&linearGradient {_baed :x0 ,_fbb :y0 ,_egf :x1 ,_dee :y1 };
+return _fcce ;};func (_cbg *Context )Shear (x ,y float64 ){_cbg ._aad .Shear (x ,y )};func (_baeg *Context )Clip (){_baeg .ClipPreserve ();_baeg .ClearPath ()};func (_ccdb *Context )RotateAbout (angle ,x ,y float64 ){_ccdb .Translate (x ,y );_ccdb .Rotate (angle );
+_ccdb .Translate (-x ,-y );};func (_ecfa *Context )SetRGB255 (r ,g ,b int ){_ecfa .SetRGBA255 (r ,g ,b ,255)};func (_cad *Context )Push (){_agdg :=*_cad ;_cad ._aae =append (_cad ._aae ,&_agdg )};func (_efea *linearGradient )AddColorStop (offset float64 ,color _c .Color ){_efea ._deee =append (_efea ._deee ,stop {_dcg :offset ,_afg :color });
+_dd .Sort (_efea ._deee );};type linearGradient struct{_baed ,_fbb ,_egf ,_dee float64 ;_deee stops ;};func (_aeba stops )Less (i ,j int )bool {return _aeba [i ]._dcg < _aeba [j ]._dcg };func (_eadef *Context )DrawRoundedRectangle (x ,y ,w ,h ,r float64 ){_cce ,_feg ,_fbf ,_dae :=x ,x +r ,x +w -r ,x +w ;
+_eec ,_fbff ,_eafa ,_cgcc :=y ,y +r ,y +h -r ,y +h ;_eadef .NewSubPath ();_eadef .MoveTo (_feg ,_eec );_eadef .LineTo (_fbf ,_eec );_eadef .DrawArc (_fbf ,_fbff ,r ,_efcd (270),_efcd (360));_eadef .LineTo (_dae ,_eafa );_eadef .DrawArc (_fbf ,_eafa ,r ,_efcd (0),_efcd (90));
+_eadef .LineTo (_feg ,_cgcc );_eadef .DrawArc (_feg ,_eafa ,r ,_efcd (90),_efcd (180));_eadef .LineTo (_cce ,_fbff );_eadef .DrawArc (_feg ,_fbff ,r ,_efcd (180),_efcd (270));_eadef .ClosePath ();};func (_aebf *Context )FillPreserve (){var _aaae _be .Painter ;
+if _aebf ._aaa ==nil {if _faeda ,_gcea :=_aebf ._efe .(*solidPattern );_gcea {_bfb :=_be .NewRGBAPainter (_aebf ._cfce );_bfb .SetColor (_faeda ._egc );_aaae =_bfb ;};};if _aaae ==nil {_aaae =_gedfc (_aebf ._cfce ,_aebf ._aaa ,_aebf ._efe );};_aebf .fill (_aaae );
+};func (_gegg *Context )ClosePath (){if _gegg ._bfa {_bg :=_dfb (_gegg ._gcae );_gegg ._bcf .Add1 (_bg );_gegg ._geg .Add1 (_bg );_gegg ._ged =_gegg ._gcae ;};};func _eba (_bcgd _be .Path )[][]_ad .Point {var _aebfd [][]_ad .Point ;var _bfge []_ad .Point ;
+var _aea ,_dbgg float64 ;for _aadb :=0;_aadb < len (_bcgd );{switch _bcgd [_aadb ]{case 0:if len (_bfge )> 0{_aebfd =append (_aebfd ,_bfge );_bfge =nil ;};_dfaa :=_cebb (_bcgd [_aadb +1]);_debb :=_cebb (_bcgd [_aadb +2]);_bfge =append (_bfge ,_ad .NewPoint (_dfaa ,_debb ));
+_aea ,_dbgg =_dfaa ,_debb ;_aadb +=4;case 1:_fbfe :=_cebb (_bcgd [_aadb +1]);_fgeg :=_cebb (_bcgd [_aadb +2]);_bfge =append (_bfge ,_ad .NewPoint (_fbfe ,_fgeg ));_aea ,_dbgg =_fbfe ,_fgeg ;_aadb +=4;case 2:_edf :=_cebb (_bcgd [_aadb +1]);_gddb :=_cebb (_bcgd [_aadb +2]);
+_edd :=_cebb (_bcgd [_aadb +3]);_geda :=_cebb (_bcgd [_aadb +4]);_cdba :=_faf (_aea ,_dbgg ,_edf ,_gddb ,_edd ,_geda );_bfge =append (_bfge ,_cdba ...);_aea ,_dbgg =_edd ,_geda ;_aadb +=6;case 3:_ebed :=_cebb (_bcgd [_aadb +1]);_ddbd :=_cebb (_bcgd [_aadb +2]);
+_gced :=_cebb (_bcgd [_aadb +3]);_edcd :=_cebb (_bcgd [_aadb +4]);_ebga :=_cebb (_bcgd [_aadb +5]);_ccbd :=_cebb (_bcgd [_aadb +6]);_daf :=_cca (_aea ,_dbgg ,_ebed ,_ddbd ,_gced ,_edcd ,_ebga ,_ccbd );_bfge =append (_bfge ,_daf ...);_aea ,_dbgg =_ebga ,_ccbd ;
+_aadb +=8;default:_gdb .Log .Debug ("\u0057\u0041\u0052\u004e: \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0070\u0061\u0074\u0068\u003a\u0020%\u0076",_bcgd );return _aebfd ;};};if len (_bfge )> 0{_aebfd =append (_aebfd ,_bfge );};return _aebfd ;};
+func (_gfd *Context )SetRGB (r ,g ,b float64 ){_gfd .SetRGBA (r ,g ,b ,1)};type circle struct{_bffa ,_fbd ,_dag float64 };func (_ebg *Context )SetPixel (x ,y int ){_ebg ._cfce .Set (x ,y ,_ebg ._baaf )};func (_bac *Context )SetMatrix (m _ad .Matrix ){_bac ._aad =m };
+func _bace (_bdbc _gd .Image ,_dcfa repeatOp )_gfg .Pattern {return &surfacePattern {_adff :_bdbc ,_ffe :_dcfa };};func (_efcb *Context )SetMask (mask *_gd .Alpha )error {if mask .Bounds ().Size ()!=_efcb ._cfce .Bounds ().Size (){return _ea .New ("\u006d\u0061\u0073\u006b\u0020\u0073i\u007a\u0065\u0020\u006d\u0075\u0073\u0074\u0020\u006d\u0061\u0074\u0063\u0068 \u0063\u006f\u006e\u0074\u0065\u0078\u0074 \u0073\u0069\u007a\u0065");
+};_efcb ._aaa =mask ;return nil ;};func (_afa *Context )DrawString (s string ,face _b .Face ,x ,y float64 ){_afa .DrawStringAnchored (s ,face ,x ,y ,0,0);};type surfacePattern struct{_adff _gd .Image ;_ffe repeatOp ;};type repeatOp int ;func (_aac *Context )DrawPoint (x ,y ,r float64 ){_aac .Push ();
+_fbe ,_cgc :=_aac .Transform (x ,y );_aac .Identity ();_aac .DrawCircle (_fbe ,_cgc ,r );_aac .Pop ();};func _gdecc (_edbf ,_ebgc uint32 ,_eaa float64 )uint8 {return uint8 (int32 (float64 (_edbf )*(1.0-_eaa )+float64 (_ebgc )*_eaa )>>8);};func (_cbe *Context )drawString (_egb string ,_gcgb _b .Face ,_eccb ,_dda float64 ){_fda :=&_b .Drawer {Src :_gd .NewUniform (_cbe ._baaf ),Face :_gcgb ,Dot :_dfb (_ad .NewPoint (_eccb ,_dda ))};
+_gddg :=rune (-1);for _ ,_bcfg :=range _egb {if _gddg >=0{_fda .Dot .X +=_fda .Face .Kern (_gddg ,_bcfg );};_fgab ,_aagc ,_fcc ,_gdcd ,_dgdf :=_fda .Face .Glyph (_fda .Dot ,_bcfg );if !_dgdf {continue ;};_baf :=_fgab .Sub (_fgab .Min );_edgd :=_gd .NewRGBA (_baf );
+_gde .DrawMask (_edgd ,_baf ,_fda .Src ,_gd .Point {},_aagc ,_fcc ,_gde .Over );var _fdg *_gde .Options ;if _cbe ._aaa !=nil {_fdg =&_gde .Options {DstMask :_cbe ._aaa ,DstMaskP :_gd .Point {}};};_gdf :=_cbe ._aad .Clone ().Translate (float64 (_fgab .Min .X ),float64 (_fgab .Min .Y ));
+_gdef :=_af .Aff3 {_gdf [0],_gdf [3],_gdf [6],_gdf [1],_gdf [4],_gdf [7]};_gde .BiLinear .Transform (_cbe ._cfce ,_gdef ,_edgd ,_baf ,_gde .Over ,_fdg );_fda .Dot .X +=_gdcd ;_gddg =_bcfg ;};};type stops []stop ;func _cca (_adfg ,_fge ,_ef ,_gce ,_ff ,_bb ,_ae ,_ccc float64 )[]_ad .Point {_eade :=(_g .Hypot (_ef -_adfg ,_gce -_fge )+_g .Hypot (_ff -_ef ,_bb -_gce )+_g .Hypot (_ae -_ff ,_ccc -_bb ));
+_cd :=int (_eade +0.5);if _cd < 4{_cd =4;};_baa :=float64 (_cd )-1;_bf :=make ([]_ad .Point ,_cd );for _fgae :=0;_fgae < _cd ;_fgae ++{_bc :=float64 (_fgae )/_baa ;_bec ,_ga :=_gef (_adfg ,_fge ,_ef ,_gce ,_ff ,_bb ,_ae ,_ccc ,_bc );_bf [_fgae ]=_ad .NewPoint (_bec ,_ga );
+};return _bf ;};func (_caa *Context )drawRegularPolygon (_bge int ,_ccae ,_cff ,_ecfac ,_cfca float64 ){_cac :=2*_g .Pi /float64 (_bge );_cfca -=_g .Pi /2;if _bge %2==0{_cfca +=_cac /2;};_caa .NewSubPath ();for _cffg :=0;_cffg < _bge ;_cffg ++{_cdg :=_cfca +_cac *float64 (_cffg );
+_caa .LineTo (_ccae +_ecfac *_g .Cos (_cdg ),_cff +_ecfac *_g .Sin (_cdg ));};_caa .ClosePath ();};func (_ggcf *Context )Stroke (){_ggcf .StrokePreserve ();_ggcf .ClearPath ()};func _gedfc (_cadf *_gd .RGBA ,_bcfb *_gd .Alpha ,_faff _gfg .Pattern )*patternPainter {return &patternPainter {_cadf ,_bcfb ,_faff };
+};func (_aaedg *Context )ShearAbout (sx ,sy ,x ,y float64 ){_aaedg .Translate (x ,y );_aaedg .Shear (sx ,sy );_aaedg .Translate (-x ,-y );};var (_aag =_adag (_c .White );_edb =_adag (_c .Black ););func (_aagdd *Context )ClearPath (){_aagdd ._bcf .Clear ();
+_aagdd ._geg .Clear ();_aagdd ._bfa =false };func (_dbf *Context )SetDash (dashes ...float64 ){_dbf ._bef =dashes };func (_cgac *Context )SetRGBA (r ,g ,b ,a float64 ){_ ,_ ,_ ,_cfb :=_cgac ._baaf .RGBA ();if _cfb > 0&&_cfb !=65535&&a ==1{a =float64 (_cfb )/65535;
+};_cgac ._baaf =_c .NRGBA {uint8 (r *255),uint8 (g *255),uint8 (b *255),uint8 (a *255)};_cgac .setFillAndStrokeColor (_cgac ._baaf );};func (_fddd *Context )InvertMask (){if _fddd ._aaa ==nil {_fddd ._aaa =_gd .NewAlpha (_fddd ._cfce .Bounds ());}else {for _egd ,_bca :=range _fddd ._aaa .Pix {_fddd ._aaa .Pix [_egd ]=255-_bca ;
+};};};func (_bcfd *solidPattern )ColorAt (x ,y int )_c .Color {return _bcfd ._egc };func (_gcgg *Context )Rotate (angle float64 ){_gcgg ._aad =_gcgg ._aad .Rotate (angle )};func (_ddc *Context )SetFillRGBA (r ,g ,b ,a float64 ){_ ,_ ,_ ,_afb :=_ddc ._baaf .RGBA ();
+if _afb > 0&&_afb !=65535&&a ==1{a =float64 (_afb )/65535;};_efce :=_c .NRGBA {uint8 (r *255),uint8 (g *255),uint8 (b *255),uint8 (a *255)};_ddc ._baaf =_efce ;_ddc ._efe =_adag (_efce );};func (_bae *Context )LineTo (x ,y float64 ){if !_bae ._bfa {_bae .MoveTo (x ,y );
+}else {x ,y =_bae .Transform (x ,y );_fdd :=_ad .NewPoint (x ,y );_eff :=_dfb (_fdd );_bae ._bcf .Add1 (_eff );_bae ._geg .Add1 (_eff );_bae ._ged =_fdd ;};};type patternPainter struct{_bdc *_gd .RGBA ;_gcgf *_gd .Alpha ;_cgafg _gfg .Pattern ;};func (_ee *Context )NewSubPath (){if _ee ._bfa {_ee ._geg .Add1 (_dfb (_ee ._gcae ));
+};_ee ._bfa =false ;};func (_eee *Context )DrawRectangle (x ,y ,w ,h float64 ){_eee .NewSubPath ();_eee .MoveTo (x ,y );_eee .LineTo (x +w ,y );_eee .LineTo (x +w ,y +h );_eee .LineTo (x ,y +h );_eee .ClosePath ();};func _egg (_dbfa ,_afdd ,_deb ,_bgf ,_agc ,_ffbf float64 )float64 {return _dbfa *_bgf +_afdd *_agc +_deb *_ffbf ;
+};func _dfb (_bcgec _ad .Point )_gc .Point26_6 {return _gc .Point26_6 {X :_fdce (_bcgec .X ),Y :_fdce (_bcgec .Y )};};func (_adaf *Context )Fill (){_adaf .FillPreserve ();_adaf .ClearPath ()};func (_gegf *Context )DrawCircle (x ,y ,r float64 ){_gegf .NewSubPath ();
+_gegf .DrawEllipticalArc (x ,y ,r ,r ,0,2*_g .Pi );_gegf .ClosePath ();};func (_cde *Context )ScaleAbout (sx ,sy ,x ,y float64 ){_cde .Translate (x ,y );_cde .Scale (sx ,sy );_cde .Translate (-x ,-y );};func _fdce (_bcc float64 )_gc .Int26_6 {_bcc =_gf .RoundDefault (_bcc );
+return _gc .Int26_6 (_bcc *64)};func (_fgd *surfacePattern )ColorAt (x ,y int )_c .Color {_gcdd :=_fgd ._adff .Bounds ();switch _fgd ._ffe {case _febe :if y >=_gcdd .Dy (){return _c .Transparent ;};case _fdf :if x >=_gcdd .Dx (){return _c .Transparent ;
+};case _gfbc :if x >=_gcdd .Dx ()||y >=_gcdd .Dy (){return _c .Transparent ;};};x =x %_gcdd .Dx ()+_gcdd .Min .X ;y =y %_gcdd .Dy ()+_gcdd .Min .Y ;return _fgd ._adff .At (x ,y );};func (_gdge *radialGradient )ColorAt (x ,y int )_c .Color {if len (_gdge ._ecb )==0{return _c .Transparent ;
+};_bfg ,_feb :=float64 (x )+0.5-_gdge ._gdcde ._bffa ,float64 (y )+0.5-_gdge ._gdcde ._fbd ;_dbe :=_egg (_bfg ,_feb ,_gdge ._gdcde ._dag ,_gdge ._gfff ._bffa ,_gdge ._gfff ._fbd ,_gdge ._gfff ._dag );_egda :=_egg (_bfg ,_feb ,-_gdge ._gdcde ._dag ,_bfg ,_feb ,_gdge ._gdcde ._dag );
+if _gdge ._bcb ==0{if _dbe ==0{return _c .Transparent ;};_agb :=0.5*_egda /_dbe ;if _agb *_gdge ._gfff ._dag >=_gdge ._abede {return _bdaf (_agb ,_gdge ._ecb );};return _c .Transparent ;};_dfd :=_egg (_dbe ,_gdge ._bcb ,0,_dbe ,-_egda ,0);if _dfd >=0{_gcd :=_g .Sqrt (_dfd );
+_cfff :=(_dbe +_gcd )*_gdge ._babb ;_gcab :=(_dbe -_gcd )*_gdge ._babb ;if _cfff *_gdge ._gfff ._dag >=_gdge ._abede {return _bdaf (_cfff ,_gdge ._ecb );}else if _gcab *_gdge ._gfff ._dag >=_gdge ._abede {return _bdaf (_gcab ,_gdge ._ecb );};};return _c .Transparent ;
+};func (_gccg *Context )Scale (x ,y float64 ){_gccg ._aad =_gccg ._aad .Scale (x ,y )};func (_bgc *Context )ResetClip (){_bgc ._aaa =nil };func (_acd *Context )SetDashOffset (offset float64 ){_acd ._aff =offset };func _gedab (_bgef _be .Path ,_ebef []float64 ,_afe float64 )_be .Path {return _cfd (_cced (_eba (_bgef ),_ebef ,_afe ));
+};func _adag (_dfga _c .Color )_gfg .Pattern {return &solidPattern {_egc :_dfga }};func NewContextForImage (im _gd .Image )*Context {return NewContextForRGBA (_geac (im ))};func (_cdca *Context )Translate (x ,y float64 ){_cdca ._aad =_cdca ._aad .Translate (x ,y )};
+func (_bdg *Context )SetColor (c _c .Color ){_bdg .setFillAndStrokeColor (c )};func (_fgdf *patternPainter )Paint (ss []_be .Span ,done bool ){_fbg :=_fgdf ._bdc .Bounds ();for _ ,_dcfc :=range ss {if _dcfc .Y < _fbg .Min .Y {continue ;};if _dcfc .Y >=_fbg .Max .Y {return ;
+};if _dcfc .X0 < _fbg .Min .X {_dcfc .X0 =_fbg .Min .X ;};if _dcfc .X1 > _fbg .Max .X {_dcfc .X1 =_fbg .Max .X ;};if _dcfc .X0 >=_dcfc .X1 {continue ;};const _ced =1<<16-1;_fbffg :=_dcfc .Y -_fgdf ._bdc .Rect .Min .Y ;_ebge :=_dcfc .X0 -_fgdf ._bdc .Rect .Min .X ;
+_baec :=(_dcfc .Y -_fgdf ._bdc .Rect .Min .Y )*_fgdf ._bdc .Stride +(_dcfc .X0 -_fgdf ._bdc .Rect .Min .X )*4;_abg :=_baec +(_dcfc .X1 -_dcfc .X0 )*4;for _fef ,_aaag :=_baec ,_ebge ;_fef < _abg ;_fef ,_aaag =_fef +4,_aaag +1{_fefa :=_dcfc .Alpha ;if _fgdf ._gcgf !=nil {_fefa =_fefa *uint32 (_fgdf ._gcgf .AlphaAt (_aaag ,_fbffg ).A )/255;
+if _fefa ==0{continue ;};};_fgg :=_fgdf ._cgafg .ColorAt (_aaag ,_fbffg );_beca ,_gddf ,_edcdb ,_aed :=_fgg .RGBA ();_fbc :=uint32 (_fgdf ._bdc .Pix [_fef +0]);_bgd :=uint32 (_fgdf ._bdc .Pix [_fef +1]);_cgcf :=uint32 (_fgdf ._bdc .Pix [_fef +2]);_gac :=uint32 (_fgdf ._bdc .Pix [_fef +3]);
+_bgb :=(_ced -(_aed *_fefa /_ced ))*0x101;_fgdf ._bdc .Pix [_fef +0]=uint8 ((_fbc *_bgb +_beca *_fefa )/_ced >>8);_fgdf ._bdc .Pix [_fef +1]=uint8 ((_bgd *_bgb +_gddf *_fefa )/_ced >>8);_fgdf ._bdc .Pix [_fef +2]=uint8 ((_cgcf *_bgb +_edcdb *_fefa )/_ced >>8);
+_fgdf ._bdc .Pix [_fef +3]=uint8 ((_gac *_bgb +_aed *_fefa )/_ced >>8);};};};func (_aeb *Context )SetRGBA255 (r ,g ,b ,a int ){_aeb ._baaf =_c .NRGBA {uint8 (r ),uint8 (g ),uint8 (b ),uint8 (a )};_aeb .setFillAndStrokeColor (_aeb ._baaf );};func _efcd (_dage float64 )float64 {return _dage *_g .Pi /180};
+func _gef (_bd ,_beg ,_adad ,_abe ,_gdc ,_gg ,_ade ,_ggc ,_afc float64 )(_ed ,_ccb float64 ){_ce :=1-_afc ;_fab :=_ce *_ce *_ce ;_gee :=3*_ce *_ce *_afc ;_df :=3*_ce *_afc *_afc ;_add :=_afc *_afc *_afc ;_ed =_fab *_bd +_gee *_adad +_df *_gdc +_add *_ade ;
+_ccb =_fab *_beg +_gee *_abe +_df *_gg +_add *_ggc ;return ;};func (_cga *Context )Height ()int {return _cga ._ca };func _faf (_adf ,_aa ,_cg ,_fb ,_dg ,_ead float64 )[]_ad .Point {_cfe :=(_g .Hypot (_cg -_adf ,_fb -_aa )+_g .Hypot (_dg -_cg ,_ead -_fb ));
+_fd :=int (_cfe +0.5);if _fd < 4{_fd =4;};_ac :=float64 (_fd )-1;_ada :=make ([]_ad .Point ,_fd );for _db :=0;_db < _fd ;_db ++{_gca :=float64 (_db )/_ac ;_cc ,_fga :=_ec (_adf ,_aa ,_cg ,_fb ,_dg ,_ead ,_gca );_ada [_db ]=_ad .NewPoint (_cc ,_fga );};
+return _ada ;};type stop struct{_dcg float64 ;_afg _c .Color ;};func _deg (_aced string )(_bfde ,_ebaa ,_bbbe ,_fbeg int ){_aced =_a .TrimPrefix (_aced ,"\u0023");_fbeg =255;if len (_aced )==3{_gfda :="\u00251\u0078\u0025\u0031\u0078\u0025\u0031x";_e .Sscanf (_aced ,_gfda ,&_bfde ,&_ebaa ,&_bbbe );
+_bfde |=_bfde <<4;_ebaa |=_ebaa <<4;_bbbe |=_bbbe <<4;};if len (_aced )==6{_cbfbc :="\u0025\u0030\u0032x\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078";_e .Sscanf (_aced ,_cbfbc ,&_bfde ,&_ebaa ,&_bbbe );};if len (_aced )==8{_cgb :="\u0025\u00302\u0078\u0025\u00302\u0078\u0025\u0030\u0032\u0078\u0025\u0030\u0032\u0078";
+_e .Sscanf (_aced ,_cgb ,&_bfde ,&_ebaa ,&_bbbe ,&_fbeg );};return ;};func (_dea *Context )CubicTo (x1 ,y1 ,x2 ,y2 ,x3 ,y3 float64 ){if !_dea ._bfa {_dea .MoveTo (x1 ,y1 );};_agg ,_aadd :=_dea ._ged .X ,_dea ._ged .Y ;x1 ,y1 =_dea .Transform (x1 ,y1 );
+x2 ,y2 =_dea .Transform (x2 ,y2 );x3 ,y3 =_dea .Transform (x3 ,y3 );_eac :=_cca (_agg ,_aadd ,x1 ,y1 ,x2 ,y2 ,x3 ,y3 );_aaac :=_dfb (_dea ._ged );for _ ,_cdb :=range _eac [1:]{_gdec :=_dfb (_cdb );if _gdec ==_aaac {continue ;};_aaac =_gdec ;_dea ._bcf .Add1 (_gdec );
+_dea ._geg .Add1 (_gdec );_dea ._ged =_cdb ;};};func (_aebfe *Context )Transform (x ,y float64 )(_bcge ,_fffe float64 ){return _aebfe ._aad .Transform (x ,y );};const (_caed repeatOp =iota ;_febe ;_fdf ;_gfbc ;); \ No newline at end of file
diff --git a/unipdf/render/render.go b/unipdf/render/render.go
new file mode 100644
index 0000000..e128aee
--- /dev/null
+++ b/unipdf/render/render.go
@@ -0,0 +1,211 @@
+//
+// 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 render ;import (_a "errors";_db "fmt";_gc "github.com/adrg/sysfont";_cd "github.com/unidoc/unipdf/v4/annotator";_ec "github.com/unidoc/unipdf/v4/common";_cee "github.com/unidoc/unipdf/v4/contentstream";_e "github.com/unidoc/unipdf/v4/contentstream/draw";
+_fe "github.com/unidoc/unipdf/v4/core";_ce "github.com/unidoc/unipdf/v4/internal/license";_fbd "github.com/unidoc/unipdf/v4/internal/transform";_b "github.com/unidoc/unipdf/v4/model";_fda "github.com/unidoc/unipdf/v4/render/internal/context";_dbe "github.com/unidoc/unipdf/v4/render/internal/context/imagerender";
+_gd "golang.org/x/image/draw";_fb "image";_fd "image/color";_g "image/draw";_ae "image/jpeg";_ga "image/png";_ca "math";_f "os";_df "path/filepath";_d "strings";);
+
+// Render converts the specified PDF page into an image, flattens annotations by default and returns the result.
+func (_bd *ImageDevice )Render (page *_b .PdfPage )(_fb .Image ,error ){return _bd .RenderWithOpts (page ,false );};func _cacg (_bdcea _fda .Gradient ,_fbf *_b .PdfFunctionType3 ,_dede _b .PdfColorspace ,_babb []float64 )(_fda .Gradient ,error ){var _fbaf error ;
+for _ebde :=0;_ebde < len (_fbf .Functions );_ebde ++{if _gdd ,_cefg :=_fbf .Functions [_ebde ].(*_b .PdfFunctionType2 );_cefg {_bdcea ,_fbaf =_agdd (_bdcea ,_gdd ,_dede ,_babb [_ebde +1],_ebde ==0);if _fbaf !=nil {return nil ,_fbaf ;};};};return _bdcea ,nil ;
+};
+
+// NewImageDevice returns a new image device.
+func NewImageDevice ()*ImageDevice {const _ge ="r\u0065\u006e\u0064\u0065r.\u004ee\u0077\u0049\u006d\u0061\u0067e\u0044\u0065\u0076\u0069\u0063\u0065";_ce .TrackUse (_ge );return &ImageDevice {};};func (_baed renderer )processLinearShading (_bdfg _fda .Context ,_ded *_b .PdfShading )(_fda .Gradient ,*_fe .PdfObjectArray ,error ){_cbd :=_ded .GetContext ().(*_b .PdfShadingType2 );
+if len (_cbd .Function )==0{return nil ,nil ,_a .New ("\u006e\u006f\u0020\u0067\u0072\u0061\u0064i\u0065\u006e\u0074 \u0066\u0075\u006e\u0063t\u0069\u006f\u006e\u0020\u0066\u006f\u0075\u006e\u0064\u002c\u0020\u0073\u006b\u0069\u0070\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e");
+};_cfbb ,_bagc :=_cbd .Coords .ToFloat64Array ();if _bagc !=nil {return nil ,nil ,_a .New ("\u0066\u0061\u0069l\u0065\u0064\u0020\u0067e\u0074\u0074\u0069\u006e\u0067\u0020\u0073h\u0061\u0064\u0069\u006e\u0067\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u006f\u006e");
+};_gagef :=_ded .ColorSpace ;_gaad ,_cbeg :=_bdfg .Matrix ().Transform (_cfbb [0],_cfbb [1]);_ecgg ,_bac :=_bdfg .Matrix ().Transform (_cfbb [2],_cfbb [3]);_bfdf :=_dbe .NewLinearGradient (_gaad ,_cbeg ,_ecgg ,_bac );_fgb :=_fe .MakeArrayFromFloats ([]float64 {0,0,1,1});
+for _ ,_fged :=range _cfbb {if _fged > 1{_fgb =_cbd .Coords ;break ;};};if _cfc ,_dddfd :=_cbd .Function [0].(*_b .PdfFunctionType2 );_dddfd {_bfdf ,_bagc =_agdd (_bfdf ,_cfc ,_gagef ,1.0,true );}else if _edea ,_cac :=_cbd .Function [0].(*_b .PdfFunctionType3 );
+_cac {_beg :=append ([]float64 {0},_edea .Bounds ...);_beg =append (_beg ,1.0);_bfdf ,_bagc =_cacg (_bfdf ,_edea ,_gagef ,_beg );};return _bfdf ,_fgb ,_bagc ;};func _agdd (_fcaa _fda .Gradient ,_aggc *_b .PdfFunctionType2 ,_efabe _b .PdfColorspace ,_fbgb float64 ,_aed bool )(_fda .Gradient ,error ){switch _efabe .(type ){case *_b .PdfColorspaceDeviceRGB :if len (_aggc .C0 )!=3||len (_aggc .C1 )!=3{return nil ,_a .New ("\u0069\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u0020\u0052\u0047\u0042\u0020\u0063o\u006co\u0072\u0020\u0061\u0072\u0072\u0061\u0079\u0020\u006c\u0065\u006e\u0067\u0074\u0068");
+};_afaaf :=_aggc .C0 ;_dff :=_aggc .C1 ;if _aed {_fcaa .AddColorStop (0.0,_fd .RGBA {R :uint8 (_afaaf [0]*255),G :uint8 (_afaaf [1]*255),B :uint8 (_afaaf [2]*255),A :255});};_fcaa .AddColorStop (_fbgb ,_fd .RGBA {R :uint8 (_dff [0]*255),G :uint8 (_dff [1]*255),B :uint8 (_dff [2]*255),A :255});
+case *_b .PdfColorspaceDeviceCMYK :if len (_aggc .C0 )!=4||len (_aggc .C1 )!=4{return nil ,_a .New ("\u0069\u006e\u0063\u006f\u0072\u0072e\u0063\u0074\u0020\u0043\u004d\u0059\u004b\u0020\u0063\u006f\u006c\u006f\u0072 \u0061\u0072\u0072\u0061\u0079\u0020\u006ce\u006e\u0067\u0074\u0068");
+};_bfb :=_aggc .C0 ;_ade :=_aggc .C1 ;if _aed {_fcaa .AddColorStop (0.0,_fd .CMYK {C :uint8 (_bfb [0]*255),M :uint8 (_bfb [1]*255),Y :uint8 (_bfb [2]*255),K :uint8 (_bfb [3]*255)});};_fcaa .AddColorStop (_fbgb ,_fd .CMYK {C :uint8 (_ade [0]*255),M :uint8 (_ade [1]*255),Y :uint8 (_ade [2]*255),K :uint8 (_ade [3]*255)});
+default:return nil ,_db .Errorf ("u\u006e\u0073\u0075\u0070\u0070\u006fr\u0074\u0065\u0064\u0020\u0063\u006f\u006c\u006f\u0072 \u0073\u0070\u0061c\u0065:\u0020\u0025\u0073",_efabe .String ());};return _fcaa ,nil ;};func _edc (_bfa _fe .PdfObject )(_fb .Image ,error ){_gfdg ,_cgae :=_fe .GetStream (_bfa );
+if !_cgae {return nil ,nil ;};_fdgd ,_bfbb :=_b .NewXObjectImageFromStream (_gfdg );if _bfbb !=nil {return nil ,_bfbb ;};_dggf ,_bfbb :=_fdgd .ToImage ();if _bfbb !=nil {return nil ,_bfbb ;};if _dggf .Width ==0||_dggf .Height ==0{_ec .Log .Debug ("\u0073o\u0066t\u0020\u006d\u0061\u0073\u006b\u0020\u0069\u006d\u0061\u0067\u0065 \u0068\u0061\u0073\u0020i\u006e\u0076\u0061\u006c\u0069d\u0020\u0064\u0069\u006d\u0065\u006e\u0073\u0069\u006f\u006e\u0073\u0020\u0028\u0025\u0064\u002c\u0020\u0025\u0064\u0029\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074\u0020\u006d\u0061y\u0020\u0062\u0065\u0020\u0069\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u002e",_dggf .Width ,_dggf .Height );
+return nil ,nil ;};return _ead (_dggf ),nil ;};func _eaga (_dbb ,_ffea _fb .Image )_fb .Image {_bce ,_eabbd :=_ffea .Bounds ().Size (),_dbb .Bounds ().Size ();_fae ,_aacb :=_bce .X ,_bce .Y ;if _eabbd .X > _fae {_fae =_eabbd .X ;};if _eabbd .Y > _aacb {_aacb =_eabbd .Y ;
+};_agcg :=_fb .Rect (0,0,_fae ,_aacb );if _bce .X !=_fae ||_bce .Y !=_aacb {_gcbg :=_fb .NewRGBA (_agcg );_gd .BiLinear .Scale (_gcbg ,_agcg ,_ffea ,_ffea .Bounds (),_gd .Over ,nil );_ffea =_gcbg ;};if _eabbd .X !=_fae ||_eabbd .Y !=_aacb {_dce :=_fb .NewRGBA (_agcg );
+_gd .BiLinear .Scale (_dce ,_agcg ,_dbb ,_dbb .Bounds (),_gd .Over ,nil );_dbb =_dce ;};_aegf :=_fb .NewRGBA (_agcg );_gd .DrawMask (_aegf ,_agcg ,_dbb ,_fb .Point {},_ffea ,_fb .Point {},_gd .Over );return _aegf ;};func _ead (_gca *_b .Image )_fb .Image {_bca ,_gcc :=int (_gca .Width ),int (_gca .Height );
+if _bca <=0||_gcc <=0{_ec .Log .Debug ("\u0069\u006e\u0076\u0061\u006c\u0069d\u0020\u0069\u006d\u0061\u0067\u0065\u0020\u0064\u0069\u006d\u0065\u006e\u0073i\u006f\u006e\u0073\u0020\u0028\u0025\u0064,\u0020\u0025\u0064\u0029",_bca ,_gcc );return nil ;};
+_gbd :=_fb .NewRGBA (_fb .Rect (0,0,_bca ,_gcc ));for _dcf :=0;_dcf < _gcc ;_dcf ++{for _gbcf :=0;_gbcf < _bca ;_gbcf ++{_gac ,_gdbd :=_gca .ColorAt (_gbcf ,_dcf );if _gdbd !=nil {_ec .Log .Debug ("\u0063o\u0075l\u0064\u0020\u006e\u006f\u0074\u0020\u0072\u0065\u0074\u0072\u0069e\u0076\u0065\u0020\u0069m\u0061\u0067\u0065\u0020\u006da\u0073\u006b\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0061\u0074\u0020\u0028\u0025\u0064\u002c\u0020\u0025\u0064\u0029\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074\u0020\u006d\u0061y\u0020\u0062\u0065\u0020\u0069\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u002e",_gbcf ,_dcf );
+continue ;};_acfec ,_cgb ,_fdfe ,_ :=_gac .RGBA ();var _eggee _fd .Color ;if _acfec +_cgb +_fdfe ==0{_eggee =_fd .Transparent ;}else {_acc :=uint8 (_fe .RGBToGrayscale (int (_acfec >>8),int (_cgb >>8),int (_fdfe >>8)));_eggee =_fd .RGBA {R :255,G :255,B :255,A :_acc };
+};_gbd .Set (_gbcf ,_dcf ,_eggee );};};return _gbd ;};func (_ede renderer )processGradient (_ecc _fda .Context ,_bbg *_cee .ContentStreamOperation ,_fgf *_b .PdfPageResources ,_eabb *_fe .PdfObjectName )(_fda .Gradient ,error ){if _gaeb ,_ddeb :=_fgf .GetPatternByName (*_eabb );
+_ddeb &&_gaeb .IsShading (){_dgeb :=_gaeb .GetAsShadingPattern ().Shading ;_bab ,_ ,_fge :=_ede .processShading (_ecc ,_dgeb );if _fge !=nil {return nil ,_fge ;};return _bab ,nil ;};return nil ,nil ;};
+
+// PdfShadingType defines PDF shading types.
+// Source: PDF32000_2008.pdf. Chapter 8.7.4.5
+type PdfShadingType int64 ;type renderer struct{_edd float64 };func _adb (_gfec _fe .PdfObject ,_cfdg _fd .Color )(_fb .Image ,error ){_gfecc ,_eegd :=_fe .GetStream (_gfec );if !_eegd {return nil ,nil ;};_aggcc ,_dacc :=_b .NewXObjectImageFromStream (_gfecc );
+if _dacc !=nil {return nil ,_dacc ;};_dffb ,_dacc :=_aggcc .ToImage ();if _dacc !=nil {return nil ,_dacc ;};return _ebcf (_dffb ,_cfdg ),nil ;};var (_gcf =_a .New ("\u0074\u0079p\u0065\u0020\u0063h\u0065\u0063\u006b\u0020\u0065\u0072\u0072\u006f\u0072");
+_ee =_a .New ("\u0072\u0061\u006e\u0067\u0065\u0020\u0063\u0068\u0065\u0063\u006b\u0020e\u0072\u0072\u006f\u0072"););func _ebcf (_dga *_b .Image ,_geda _fd .Color )_fb .Image {_deeg ,_fefd :=int (_dga .Width ),int (_dga .Height );_ecdb :=_fb .NewRGBA (_fb .Rect (0,0,_deeg ,_fefd ));
+for _gcfcc :=0;_gcfcc < _fefd ;_gcfcc ++{for _acfa :=0;_acfa < _deeg ;_acfa ++{_ggb ,_cdf :=_dga .ColorAt (_acfa ,_gcfcc );if _cdf !=nil {_ec .Log .Debug ("\u0063o\u0075l\u0064\u0020\u006e\u006f\u0074\u0020\u0072\u0065\u0074\u0072\u0069e\u0076\u0065\u0020\u0069m\u0061\u0067\u0065\u0020\u006da\u0073\u006b\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u0061\u0074\u0020\u0028\u0025\u0064\u002c\u0020\u0025\u0064\u0029\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074\u0020\u006d\u0061y\u0020\u0062\u0065\u0020\u0069\u006e\u0063\u006fr\u0072\u0065\u0063\u0074\u002e",_acfa ,_gcfcc );
+continue ;};_cce ,_adfb ,_gbbg ,_ :=_ggb .RGBA ();var _afc _fd .Color ;if _cce +_adfb +_gbbg ==0{_afc =_geda ;}else {_afc =_fd .Transparent ;};_ecdb .Set (_acfa ,_gcfcc ,_afc );};};return _ecdb ;};
+
+// ImageDevice is used to render PDF pages to image targets.
+type ImageDevice struct{renderer ;
+
+// OutputWidth represents the width of the rendered images in pixels.
+// The heights of the output images are calculated based on the selected
+// width and the original height of each rendered page.
+OutputWidth int ;};const (ShadingTypeFunctionBased PdfShadingType =1;ShadingTypeAxial PdfShadingType =2;ShadingTypeRadial PdfShadingType =3;ShadingTypeFreeForm PdfShadingType =4;ShadingTypeLatticeForm PdfShadingType =5;ShadingTypeCoons PdfShadingType =6;
+ShadingTypeTensorProduct PdfShadingType =7;);
+
+// RenderToPath converts the specified PDF page into an image and saves the
+// result at the specified location.
+func (_eg *ImageDevice )RenderToPath (page *_b .PdfPage ,outputPath string )error {_dfa ,_dfd :=_eg .Render (page );if _dfd !=nil {return _dfd ;};_fdg :=_d .ToLower (_df .Ext (outputPath ));if _fdg ==""{return _a .New ("\u0063\u006ful\u0064\u0020\u006eo\u0074\u0020\u0072\u0065cog\u006eiz\u0065\u0020\u006f\u0075\u0074\u0070\u0075t \u0066\u0069\u006c\u0065\u0020\u0074\u0079p\u0065");
+};switch _fdg {case "\u002e\u0070\u006e\u0067":return _aceg (outputPath ,_dfa );case "\u002e\u006a\u0070\u0067","\u002e\u006a\u0070e\u0067":return _dgf (outputPath ,_dfa ,100);};return _db .Errorf ("\u0075\u006e\u0072\u0065\u0063\u006fg\u006e\u0069\u007a\u0065\u0064\u0020\u006f\u0075\u0074\u0070\u0075\u0074\u0020f\u0069\u006c\u0065\u0020\u0074\u0079\u0070e\u003a\u0020\u0025\u0073",_fdg );
+};func (_bgda renderer )processRadialShading (_gegf _fda .Context ,_cca *_b .PdfShading )(_fda .Gradient ,*_fe .PdfObjectArray ,error ){_deag :=_cca .GetContext ().(*_b .PdfShadingType3 );if len (_deag .Function )==0{return nil ,nil ,_a .New ("\u006e\u006f\u0020\u0067\u0072\u0061\u0064i\u0065\u006e\u0074 \u0066\u0075\u006e\u0063t\u0069\u006f\u006e\u0020\u0066\u006f\u0075\u006e\u0064\u002c\u0020\u0073\u006b\u0069\u0070\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e");
+};_aeg ,_fgbb :=_deag .Coords .ToFloat64Array ();if _fgbb !=nil {return nil ,nil ,_a .New ("\u0066\u0061\u0069l\u0065\u0064\u0020\u0067e\u0074\u0074\u0069\u006e\u0067\u0020\u0073h\u0061\u0064\u0069\u006e\u0067\u0020\u0070\u006f\u0073\u0069\u0074\u0069\u006f\u006e");
+};_feg :=_cca .ColorSpace ;_ebcb :=_fe .MakeArrayFromFloats ([]float64 {0,0,1,1});var _gbbc ,_ace ,_agc ,_gfcg ,_fegf ,_dad float64 ;_gbbc ,_ace =_gegf .Matrix ().Transform (_aeg [0],_aeg [1]);_agc ,_gfcg =_gegf .Matrix ().Transform (_aeg [3],_aeg [4]);
+_fegf ,_ =_gegf .Matrix ().Transform (_aeg [2],0);_dad ,_ =_gegf .Matrix ().Transform (_aeg [5],0);_afgd ,_ :=_gegf .Matrix ().Translation ();_fegf -=_afgd ;_dad -=_afgd ;for _cae ,_fcde :=range _aeg {if _cae ==2||_cae ==5{continue ;};if _fcde > 1.0{_bbe :=_ca .Min (_gbbc -_fegf ,_agc -_dad );
+_bdce :=_ca .Min (_ace -_fegf ,_gfcg -_dad );_bada :=_ca .Max (_gbbc +_fegf ,_agc +_dad );_cba :=_ca .Max (_ace +_fegf ,_gfcg +_dad );_cdec :=_bada -_bbe ;_cada :=_bdce -_cba ;_ebcb =_fe .MakeArrayFromFloats ([]float64 {_bbe ,_bdce ,_cdec ,_cada });break ;
+};};_fafe :=_dbe .NewRadialGradient (_gbbc ,_ace ,_fegf ,_agc ,_gfcg ,_dad );if _eeec ,_cdbg :=_deag .Function [0].(*_b .PdfFunctionType2 );_cdbg {_fafe ,_fgbb =_agdd (_fafe ,_eeec ,_feg ,1.0,true );}else if _ccag ,_afb :=_deag .Function [0].(*_b .PdfFunctionType3 );
+_afb {_ccc :=append ([]float64 {0},_ccag .Bounds ...);_ccc =append (_ccc ,1.0);_fafe ,_fgbb =_cacg (_fafe ,_ccag ,_feg ,_ccc );};if _fgbb !=nil {return nil ,nil ,_fgbb ;};return _fafe ,_ebcb ,nil ;};func (_egg renderer )renderContentStream (_gcd _fda .Context ,_cbge string ,_dg *_b .PdfPageResources )error {_bg ,_ac :=_cee .NewContentStreamParser (_cbge ).Parse ();
+if _ac !=nil {return _ac ;};_ebd :=_gcd .TextState ();_ebd .GlobalScale =_egg ._edd ;_bb :=map[string ]*_fda .TextFont {};_dfc :=_gc .NewFinder (&_gc .FinderOpts {Extensions :[]string {"\u002e\u0074\u0074\u0066","\u002e\u0074\u0074\u0063"}});var _aa *_cee .ContentStreamOperation ;
+var _dd bool ;var _bfc _fda .FillRule ;_da :=_cee .NewContentStreamProcessor (*_bg );_da .AddHandler (_cee .HandlerConditionEnumAllOperands ,"",func (_fdc *_cee .ContentStreamOperation ,_ffg _cee .GraphicsState ,_dab *_b .PdfPageResources )error {_ec .Log .Debug ("\u0050\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0025\u0073",_fdc .Operand );
+switch _fdc .Operand {case "\u0071":_gcd .Push ();case "\u0051":_gcd .Pop ();_ebd =_gcd .TextState ();case "\u0063\u006d":if len (_fdc .Params )!=6{return _ee ;};_daf ,_fc :=_fe .GetNumbersAsFloat (_fdc .Params );if _fc !=nil {return _fc ;};_cbf :=_fbd .NewMatrix (_daf [0],_daf [1],_daf [2],_daf [3],_daf [4],_daf [5]);
+_ec .Log .Debug ("\u0047\u0072\u0061\u0070\u0068\u0069\u0063\u0073\u0020\u0073\u0074a\u0074\u0065\u0020\u006d\u0061\u0074\u0072\u0069\u0078\u003a \u0025\u002b\u0076",_cbf );_gcd .SetMatrix (_gcd .Matrix ().Mult (_cbf ));case "\u0077":if len (_fdc .Params )!=1{return _ee ;
+};_dee ,_feac :=_fe .GetNumbersAsFloat (_fdc .Params );if _feac !=nil {return _feac ;};_gcd .SetLineWidth (_dee [0]);case "\u004a":if len (_fdc .Params )!=1{return _ee ;};_ecb ,_ddg :=_fe .GetIntVal (_fdc .Params [0]);if !_ddg {return _gcf ;};switch _ecb {case 0:_gcd .SetLineCap (_fda .LineCapButt );
+case 1:_gcd .SetLineCap (_fda .LineCapRound );case 2:_gcd .SetLineCap (_fda .LineCapSquare );default:_ec .Log .Debug ("\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0069\u006ee\u0020\u0063\u0061\u0070\u0020\u0073\u0074\u0079\u006c\u0065:\u0020\u0025\u0064",_ecb );
+return _ee ;};case "\u006a":if len (_fdc .Params )!=1{return _ee ;};_fcd ,_ffgg :=_fe .GetIntVal (_fdc .Params [0]);if !_ffgg {return _gcf ;};switch _fcd {case 0:_gcd .SetLineJoin (_fda .LineJoinBevel );case 1:_gcd .SetLineJoin (_fda .LineJoinRound );case 2:_gcd .SetLineJoin (_fda .LineJoinBevel );
+default:_ec .Log .Debug ("I\u006e\u0076\u0061\u006c\u0069\u0064 \u006c\u0069\u006e\u0065\u0020\u006a\u006f\u0069\u006e \u0073\u0074\u0079l\u0065:\u0020\u0025\u0064",_fcd );return _ee ;};case "\u004d":if len (_fdc .Params )!=1{return _ee ;};_ag ,_aac :=_fe .GetNumbersAsFloat (_fdc .Params );
+if _aac !=nil {return _aac ;};_ =_ag ;_ec .Log .Debug ("\u004di\u0074\u0065\u0072\u0020l\u0069\u006d\u0069\u0074\u0020n\u006ft\u0020s\u0075\u0070\u0070\u006f\u0072\u0074\u0065d");case "\u0064":if len (_fdc .Params )!=2{return _ee ;};_be ,_ddd :=_fe .GetArray (_fdc .Params [0]);
+if !_ddd {return _gcf ;};_dca ,_ddd :=_fe .GetIntVal (_fdc .Params [1]);if !_ddd {_ ,_dbee :=_fe .GetFloatVal (_fdc .Params [1]);if !_dbee {return _gcf ;};};_afa ,_bcb :=_fe .GetNumbersAsFloat (_be .Elements ());if _bcb !=nil {return _bcb ;};_gcd .SetDash (_afa ...);
+_ =_dca ;_ec .Log .Debug ("\u004c\u0069n\u0065\u0020\u0064\u0061\u0073\u0068\u0020\u0070\u0068\u0061\u0073\u0065\u0020\u006e\u006f\u0074\u0020\u0073\u0075\u0070\u0070\u006frt\u0065\u0064");case "\u0072\u0069":_ec .Log .Debug ("\u0052\u0065\u006e\u0064\u0065\u0072\u0069\u006e\u0067\u0020i\u006e\u0074\u0065\u006e\u0074\u0020\u006eo\u0074\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064");
+case "\u0069":_ec .Log .Debug ("\u0046\u006c\u0061\u0074\u006e\u0065\u0073\u0073\u0020\u0074\u006f\u006c\u0065\u0072\u0061n\u0063e\u0020\u006e\u006f\u0074\u0020\u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064");case "\u0067\u0073":if len (_fdc .Params )!=1{return _ee ;
+};_aca ,_fbg :=_fe .GetName (_fdc .Params [0]);if !_fbg {return _gcf ;};if _aca ==nil {return _ee ;};_ebc ,_fbg :=_dab .GetExtGState (*_aca );if !_fbg {_ec .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006eo\u0074 \u0066i\u006ed\u0020\u0072\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u003a\u0020\u0025\u0073",*_aca );
+return _a .New ("\u0072e\u0073o\u0075\u0072\u0063\u0065\u0020n\u006f\u0074 \u0066\u006f\u0075\u006e\u0064");};_bga ,_fbg :=_fe .GetDict (_ebc );if !_fbg {_ec .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020c\u006f\u0075\u006c\u0064 ge\u0074 g\u0072\u0061\u0070\u0068\u0069\u0063\u0073 s\u0074\u0061\u0074\u0065\u0020\u0064\u0069c\u0074");
+return _gcf ;};_ec .Log .Debug ("G\u0053\u0020\u0064\u0069\u0063\u0074\u003a\u0020\u0025\u0073",_bga .String ());_dgc :=_bga .Get ("\u0063\u0061");if _dgc !=nil {_dac ,_fab :=_fe .GetNumberAsFloat (_dgc );if _fab ==nil {_ffga ,_cc :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );
+if _cc !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cc );return _cc ;};_eac ,_cga :=_ffga .(*_b .PdfColorDeviceRGB );if !_cga {_ec .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");
+return _cc ;};_gcd .SetFillRGBA (_eac .R (),_eac .G (),_eac .B (),_dac );};};case "\u006d":if len (_fdc .Params )!=2{_ec .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0065\u0072\u0072o\u0072\u0020\u0077\u0068\u0069\u006c\u0065\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0060\u006d\u0060\u0020o\u0070\u0065r\u0061\u0074o\u0072\u003a\u0020\u0025\u0073\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074 m\u0061\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063o\u0072\u0072\u0065\u0063\u0074\u002e",_ee );
+return nil ;};_cef ,_deg :=_fe .GetNumbersAsFloat (_fdc .Params );if _deg !=nil {return _deg ;};_ec .Log .Debug ("M\u006f\u0076\u0065\u0020\u0074\u006f\u003a\u0020\u0025\u0076",_cef );_gcd .NewSubPath ();_gcd .MoveTo (_cef [0],_cef [1]);case "\u006c":if len (_fdc .Params )!=2{_ec .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0065\u0072\u0072o\u0072\u0020\u0077\u0068\u0069\u006c\u0065\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0060\u006c\u0060\u0020o\u0070\u0065r\u0061\u0074o\u0072\u003a\u0020\u0025\u0073\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074 m\u0061\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063o\u0072\u0072\u0065\u0063\u0074\u002e",_ee );
+return nil ;};_ccf ,_fg :=_fe .GetNumbersAsFloat (_fdc .Params );if _fg !=nil {return _fg ;};_gcd .LineTo (_ccf [0],_ccf [1]);case "\u0063":if len (_fdc .Params )!=6{return _ee ;};_faf ,_ffd :=_fe .GetNumbersAsFloat (_fdc .Params );if _ffd !=nil {return _ffd ;
+};_ec .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_faf );_gcd .CubicTo (_faf [0],_faf [1],_faf [2],_faf [3],_faf [4],_faf [5]);case "\u0076","\u0079":if len (_fdc .Params )!=4{return _ee ;
+};_baf ,_geae :=_fe .GetNumbersAsFloat (_fdc .Params );if _geae !=nil {return _geae ;};_ec .Log .Debug ("\u0043u\u0062\u0069\u0063\u0020\u0062\u0065\u007a\u0069\u0065\u0072\u0020p\u0061\u0072\u0061\u006d\u0073\u003a\u0020\u0025\u002b\u0076",_baf );_gcd .QuadraticTo (_baf [0],_baf [1],_baf [2],_baf [3]);
+case "\u0068":_gcd .ClosePath ();_gcd .NewSubPath ();case "\u0072\u0065":if len (_fdc .Params )!=4{return _ee ;};_cgd ,_afaa :=_fe .GetNumbersAsFloat (_fdc .Params );if _afaa !=nil {return _afaa ;};_gcd .DrawRectangle (_cgd [0],_cgd [1],_cgd [2],_cgd [3]);
+_gcd .NewSubPath ();case "\u0053":_ebg ,_def :=_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _def !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_def );
+return _def ;};_bed ,_geg :=_ebg .(*_b .PdfColorDeviceRGB );if !_geg {_ec .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _def ;};_gcd .SetRGBA (_bed .R (),_bed .G (),_bed .B (),1);
+_gcd .Stroke ();case "\u0073":_bec ,_bgb :=_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _bgb !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_bgb );
+return _bgb ;};_fff ,_gagd :=_bec .(*_b .PdfColorDeviceRGB );if !_gagd {_ec .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _bgb ;};_gcd .ClosePath ();_gcd .NewSubPath ();
+_gcd .SetRGBA (_fff .R (),_fff .G (),_fff .B (),1);_gcd .Stroke ();case "\u0066","\u0046":_edf ,_dde :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _dde !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_dde );
+return _dde ;};switch _cbe :=_edf .(type ){case *_b .PdfColorDeviceRGB :_gcd .SetRGBA (_cbe .R (),_cbe .G (),_cbe .B (),1);_gcd .SetFillRule (_fda .FillRuleWinding );_gcd .Fill ();case *_b .PdfColorPattern :_gcd .Fill ();};_ec .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");
+case "\u0066\u002a":_bcbg ,_cde :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _cde !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cde );
+return _cde ;};_fcg ,_gaf :=_bcbg .(*_b .PdfColorDeviceRGB );if !_gaf {_ec .Log .Debug ("\u0045\u0072\u0072\u006fr \u0063\u006f\u006e\u0076\u0065\u0072\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006co\u0072");return _cde ;};_gcd .SetRGBA (_fcg .R (),_fcg .G (),_fcg .B (),1);
+_gcd .SetFillRule (_fda .FillRuleEvenOdd );_gcd .Fill ();case "\u0042":_cfa ,_cfd :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _cfd !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cfd );
+return _cfd ;};switch _gage :=_cfa .(type ){case *_b .PdfColorDeviceRGB :_gcd .SetRGBA (_gage .R (),_gage .G (),_gage .B (),1);_gcd .SetFillRule (_fda .FillRuleWinding );_gcd .FillPreserve ();_cfa ,_cfd =_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );
+if _cfd !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cfd );return _cfd ;};if _fba ,_ecd :=_cfa .(*_b .PdfColorDeviceRGB );_ecd {_gcd .SetRGBA (_fba .R (),_fba .G (),_fba .B (),1);
+_gcd .Stroke ();};case *_b .PdfColorPattern :_gcd .SetFillRule (_fda .FillRuleWinding );_gcd .Fill ();_gcd .StrokePattern ();};case "\u0042\u002a":_gdc ,_cfda :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _cfda !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cfda );
+return _cfda ;};switch _gae :=_gdc .(type ){case *_b .PdfColorDeviceRGB :_gcd .SetRGBA (_gae .R (),_gae .G (),_gae .B (),1);_gcd .SetFillRule (_fda .FillRuleEvenOdd );_gcd .FillPreserve ();_gdc ,_cfda =_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );
+if _cfda !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cfda );return _cfda ;};if _bag ,_ffa :=_gdc .(*_b .PdfColorDeviceRGB );
+_ffa {_gcd .SetRGBA (_bag .R (),_bag .G (),_bag .B (),1);_gcd .Stroke ();};case *_b .PdfColorPattern :_gcd .SetFillRule (_fda .FillRuleEvenOdd );_gcd .Fill ();_gcd .StrokePattern ();};case "\u0062":_gcd .ClosePath ();_ad ,_bgg :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );
+if _bgg !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_bgg );return _bgg ;};switch _gcfc :=_ad .(type ){case *_b .PdfColorDeviceRGB :_gcd .SetRGBA (_gcfc .R (),_gcfc .G (),_gcfc .B (),1);
+_gcd .NewSubPath ();_gcd .SetFillRule (_fda .FillRuleWinding );_gcd .FillPreserve ();_ad ,_bgg =_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _bgg !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_bgg );
+return _bgg ;};if _eeg ,_bba :=_ad .(*_b .PdfColorDeviceRGB );_bba {_gcd .SetRGBA (_eeg .R (),_eeg .G (),_eeg .B (),1);_gcd .Stroke ();};case *_b .PdfColorPattern :_gcd .NewSubPath ();_gcd .SetFillRule (_fda .FillRuleWinding );_gcd .Fill ();_gcd .StrokePattern ();
+};case "\u0062\u002a":_gcd .ClosePath ();_gdg ,_gafg :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _gafg !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_gafg );
+return _gafg ;};switch _aaf :=_gdg .(type ){case *_b .PdfColorDeviceRGB :_gcd .SetRGBA (_aaf .R (),_aaf .G (),_aaf .B (),1);_gcd .NewSubPath ();_gcd .SetFillRule (_fda .FillRuleEvenOdd );_gcd .FillPreserve ();_gdg ,_gafg =_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );
+if _gafg !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_gafg );return _gafg ;};if _cfb ,_fabg :=_gdg .(*_b .PdfColorDeviceRGB );
+_fabg {_gcd .SetRGBA (_cfb .R (),_cfb .G (),_cfb .B (),1);_gcd .Stroke ();};case *_b .PdfColorPattern :_gcd .NewSubPath ();_gcd .SetFillRule (_fda .FillRuleEvenOdd );_gcd .Fill ();_gcd .StrokePattern ();};case "\u006e":if _dd {_gcd .SetFillRule (_bfc );
+_gcd .ClipPreserve ();_dd =false ;};_gcd .ClearPath ();case "\u0057":_dd =true ;_bfc =_fda .FillRuleWinding ;case "\u0057\u002a":_dd =true ;_bfc =_fda .FillRuleEvenOdd ;case "\u0072\u0067":_aba ,_aec :=_ffg .ColorNonStroking .(*_b .PdfColorDeviceRGB );
+if !_aec {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );return nil ;};_gcd .SetFillRGBA (_aba .R (),_aba .G (),_aba .B (),1);
+case "\u0052\u0047":_cbec ,_cgg :=_ffg .ColorStroking .(*_b .PdfColorDeviceRGB );if !_cgg {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );
+return nil ;};_gcd .SetStrokeRGBA (_cbec .R (),_cbec .G (),_cbec .B (),1);case "\u006b":_fabf ,_aag :=_ffg .ColorNonStroking .(*_b .PdfColorDeviceCMYK );if !_aag {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );
+return nil ;};_faa ,_dgg :=_ffg .ColorspaceNonStroking .ColorToRGB (_fabf );if _dgg !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );
+return nil ;};_fdca ,_aag :=_faa .(*_b .PdfColorDeviceRGB );if !_aag {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_faa );return nil ;
+};_gcd .SetFillRGBA (_fdca .R (),_fdca .G (),_fdca .B (),1);case "\u004b":_gdb ,_efa :=_ffg .ColorStroking .(*_b .PdfColorDeviceCMYK );if !_efa {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );
+return nil ;};_ebff ,_cbed :=_ffg .ColorspaceStroking .ColorToRGB (_gdb );if _cbed !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );
+return nil ;};_dddf ,_efa :=_ebff .(*_b .PdfColorDeviceRGB );if !_efa {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ebff );return nil ;
+};_gcd .SetStrokeRGBA (_dddf .R (),_dddf .G (),_dddf .B (),1);case "\u0067":_ebe ,_bad :=_ffg .ColorNonStroking .(*_b .PdfColorDeviceGray );if !_bad {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );
+return nil ;};_gf ,_cea :=_ffg .ColorspaceNonStroking .ColorToRGB (_ebe );if _cea !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );
+return nil ;};_dcg ,_bad :=_gf .(*_b .PdfColorDeviceRGB );if !_bad {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_gf );return nil ;
+};_gcd .SetFillRGBA (_dcg .R (),_dcg .G (),_dcg .B (),1);case "\u0047":_ccfg ,_ddef :=_ffg .ColorStroking .(*_b .PdfColorDeviceGray );if !_ddef {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );
+return nil ;};_bggc ,_eee :=_ffg .ColorspaceStroking .ColorToRGB (_ccfg );if _eee !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );
+return nil ;};_ffgd ,_ddef :=_bggc .(*_b .PdfColorDeviceRGB );if !_ddef {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_bggc );return nil ;
+};_gcd .SetStrokeRGBA (_ffgd .R (),_ffgd .G (),_ffgd .B (),1);case "\u0063\u0073":if len (_fdc .Params )> 0{if _dcc ,_cff :=_fe .GetName (_fdc .Params [0]);_cff &&_dcc .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{break ;};};_bgd ,_agb :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );
+if _agb !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );return nil ;};_ddf ,_gbb :=_bgd .(*_b .PdfColorDeviceRGB );
+if !_gbb {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_bgd );return nil ;};_gcd .SetFillRGBA (_ddf .R (),_ddf .G (),_ddf .B (),1);
+case "\u0073\u0063":_dge ,_agf :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );if _agf !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );
+return nil ;};_bdc ,_gce :=_dge .(*_b .PdfColorDeviceRGB );if !_gce {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_dge );return nil ;
+};_gcd .SetFillRGBA (_bdc .R (),_bdc .G (),_bdc .B (),1);case "\u0073\u0063\u006e":if len (_fdc .Params )> 0&&len (_aa .Params )> 0{if _gdf ,_cec :=_fe .GetName (_aa .Params [0]);_cec &&_gdf .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{if _dggg ,_cad :=_fe .GetName (_fdc .Params [0]);
+_cad {_aaga ,_acae :=_egg .processGradient (_gcd ,_fdc ,_dab ,_dggg );if _acae !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0077\u0068\u0065\u006e\u0020\u0070\u0072o\u0063\u0065\u0073\u0073\u0069\u006eg\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074\u0020\u0064\u0061\u0074a\u003a\u0020\u0025\u0076",_acae );
+break ;};if _aaga ==nil {_ec .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_gcd .SetFillStyle (_aaga );_gcd .SetStrokeStyle (_aaga );break ;};};};_aecd ,_afg :=_ffg .ColorspaceNonStroking .ColorToRGB (_ffg .ColorNonStroking );
+if _afg !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorNonStroking );return nil ;};_caf ,_gee :=_aecd .(*_b .PdfColorDeviceRGB );
+if !_gee {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_aecd );return nil ;};_gcd .SetFillRGBA (_caf .R (),_caf .G (),_caf .B (),1);
+case "\u0043\u0053":if len (_fdc .Params )> 0{if _bcc ,_dcb :=_fe .GetName (_fdc .Params [0]);_dcb &&_bcc .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{break ;};};_cgda ,_gcb :=_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _gcb !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );
+return nil ;};_beb ,_bfcb :=_cgda .(*_b .PdfColorDeviceRGB );if !_bfcb {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_cgda );return nil ;
+};_gcd .SetStrokeRGBA (_beb .R (),_beb .G (),_beb .B (),1);case "\u0053\u0043":_bfce ,_fcc :=_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );if _fcc !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );
+return nil ;};_ged ,_ecg :=_bfce .(*_b .PdfColorDeviceRGB );if !_ecg {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_bfce );return nil ;
+};_gcd .SetStrokeRGBA (_ged .R (),_ged .G (),_ged .B (),1);case "\u0053\u0043\u004e":if len (_fdc .Params )> 0&&len (_aa .Params )> 0{if _gg ,_abg :=_fe .GetName (_aa .Params [0]);_abg &&_gg .String ()=="\u0050a\u0074\u0074\u0065\u0072\u006e"{if _fac ,_fga :=_fe .GetName (_fdc .Params [0]);
+_fga {_cag ,_dgec :=_egg .processGradient (_gcd ,_fdc ,_dab ,_fac );if _dgec !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0077\u0068\u0065\u006e\u0020\u0070\u0072o\u0063\u0065\u0073\u0073\u0069\u006eg\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074\u0020\u0064\u0061\u0074a\u003a\u0020\u0025\u0076",_dgec );
+break ;};if _cag ==nil {_ec .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_gcd .SetFillStyle (_cag );_gcd .SetStrokeStyle (_cag );break ;};};};_dfb ,_ceag :=_ffg .ColorspaceStroking .ColorToRGB (_ffg .ColorStroking );
+if _ceag !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_ffg .ColorStroking );return nil ;};_gdcc ,_ceb :=_dfb .(*_b .PdfColorDeviceRGB );
+if !_ceb {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0063\u006f\u006e\u0076\u0065r\u0074\u0069\u006e\u0067\u0020\u0063\u006f\u006c\u006f\u0072:\u0020\u0025\u0076",_dfb );return nil ;};_gcd .SetStrokeRGBA (_gdcc .R (),_gdcc .G (),_gdcc .B (),1);
+case "\u0073\u0068":if len (_fdc .Params )!=1{_ec .Log .Debug ("\u0049n\u0076\u0061\u006c\u0069\u0064\u0020\u0073\u0068\u0020\u0070\u0061r\u0061\u006d\u0073\u0020\u0066\u006f\u0072\u006d\u0061\u0074");break ;};_dged ,_fbdc :=_fe .GetName (_fdc .Params [0]);
+if !_fbdc {_ec .Log .Debug ("F\u0061\u0069\u006c\u0065\u0064\u0020g\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0073\u0068a\u0064\u0069\u006eg\u0020n\u0061\u006d\u0065");break ;};_eaca ,_fbdc :=_dab .GetShadingByName (*_dged );if !_fbdc {_ec .Log .Debug ("F\u0061\u0069\u006c\u0065\u0064\u0020g\u0065\u0074\u0074\u0069\u006e\u0067\u0020\u0073\u0068a\u0064\u0069\u006eg\u0020d\u0061\u0074\u0061");
+break ;};_geee ,_gcbd ,_agfb :=_egg .processShading (_gcd ,_eaca );if _agfb !=nil {_ec .Log .Debug ("\u0045\u0072\u0072\u006f\u0072\u0020\u0077\u0068\u0065\u006e\u0020\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0069\u006e\u0067\u0020\u0073\u0068a\u0064\u0069\u006e\u0067\u0020d\u0061\u0074a\u003a\u0020\u0025\u0076",_agfb );
+break ;};if _geee ==nil {_ec .Log .Debug ("\u0055\u006ek\u006e\u006f\u0077n\u0020\u0067\u0072\u0061\u0064\u0069\u0065\u006e\u0074");break ;};_degc ,_agfb :=_gcbd .ToFloat64Array ();if _agfb !=nil {_ec .Log .Debug ("\u0045\u0072r\u006f\u0072\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0063\u006f\u006f\u0072\u0064\u0069\u006e\u0061\u0074\u0065\u0073: \u0025\u0076",_agfb );
+break ;};_gcd .DrawRectangle (_degc [0],_degc [1],_degc [2],_degc [3]);_gcd .NewSubPath ();_gcd .SetFillStyle (_geee );_gcd .SetStrokeStyle (_geee );_gcd .Fill ();case "\u0044\u006f":if len (_fdc .Params )!=1{return _ee ;};_acb ,_abc :=_fe .GetName (_fdc .Params [0]);
+if !_abc {return _gcf ;};_ ,_acg :=_dab .GetXObjectByName (*_acb );switch _acg {case _b .XObjectTypeImage :_ec .Log .Debug ("\u0058\u004f\u0062\u006a\u0065\u0063\u0074\u0020\u0069\u006d\u0061\u0067e\u003a\u0020\u0025\u0073",_acb .String ());_bbb ,_bfe :=_dab .GetXObjectImageByName (*_acb );
+if _bfe !=nil {return _bfe ;};_acf ,_bfe :=_bbb .ToImage ();if _bfe !=nil {_ec .Log .Debug ("\u0052\u0065\u006e\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u006day\u0020b\u0065\u0020\u0069\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065.\u0020\u0049\u006d\u0061\u0067\u0065\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e \u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_bfe );
+return nil ;};if _gfd :=_bbb .ColorSpace ;_gfd !=nil {var _dcd bool ;switch _gfd .(type ){case *_b .PdfColorspaceSpecialIndexed :_dcd =true ;};if _dcd {if _gdcg ,_cebe :=_gfd .ImageToRGB (*_acf );_cebe !=nil {_ec .Log .Debug ("\u0057\u0041\u0052\u004e\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0063\u006fnv\u0065r\u0074\u0020\u0069\u006d\u0061\u0067\u0065\u0020\u0074\u006f\u0020\u0052G\u0042\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074\u0020\u006d\u0061\u0079\u0020\u0062\u0065\u0020i\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u002e");
+}else {_acf =&_gdcg ;};};};_efab :=_gcd .FillPattern ().ColorAt (0,0);var _agg _fb .Image ;if _bbb .Mask !=nil {if _agg ,_bfe =_adb (_bbb .Mask ,_efab );_bfe !=nil {_ec .Log .Debug ("\u0057\u0041\u0052\u004e\u003a \u0063\u006f\u0075\u006c\u0064 \u006eo\u0074\u0020\u0067\u0065\u0074\u0020\u0065\u0078\u0070\u006c\u0069\u0063\u0069\u0074\u0020\u0069\u006d\u0061\u0067e\u0020\u006d\u0061\u0073\u006b\u002e\u0020\u004f\u0075\u0074\u0070\u0075\u0074\u0020\u006d\u0061\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063o\u0072\u0072\u0065\u0063\u0074\u002e");
+_agg =nil ;};}else if _bbb .SMask !=nil {if _agg ,_bfe =_edc (_bbb .SMask );_bfe !=nil {_ec .Log .Debug ("W\u0041\u0052\u004e\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0067\u0065\u0074\u0020\u0073\u006f\u0066\u0074\u0020\u0069\u006da\u0067e\u0020\u006d\u0061\u0073k\u002e\u0020O\u0075\u0074\u0070\u0075\u0074\u0020\u006d\u0061\u0079\u0020\u0062\u0065\u0020\u0069\u006e\u0063\u006f\u0072\u0072\u0065\u0063\u0074\u002e");
+_agg =nil ;};};var _gcdf _fb .Image ;if _ceg ,_ :=_fe .GetBoolVal (_bbb .ImageMask );_ceg {_gcdf =_ebcf (_acf ,_efab );}else {_gcdf ,_bfe =_acf .ToGoImage ();if _bfe !=nil {_ec .Log .Debug ("\u0052\u0065\u006e\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u006day\u0020b\u0065\u0020\u0069\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065.\u0020\u0049\u006d\u0061\u0067\u0065\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e \u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_bfe );
+return nil ;};};if _agg !=nil {_gcdf =_eaga (_gcdf ,_agg );};_fccb :=_gcdf .Bounds ();_gcd .Push ();_gcd .Scale (1.0/float64 (_fccb .Dx ()),-1.0/float64 (_fccb .Dy ()));_gcd .DrawImageAnchored (_gcdf ,0,0,0,1);_gcd .Pop ();case _b .XObjectTypeForm :_ec .Log .Debug ("\u0058\u004fb\u006a\u0065\u0063t\u0020\u0066\u006f\u0072\u006d\u003a\u0020\u0025\u0073",_acb .String ());
+_ebgf ,_dcge :=_dab .GetXObjectFormByName (*_acb );if _dcge !=nil {return _dcge ;};_dec ,_dcge :=_ebgf .GetContentStream ();if _dcge !=nil {return _dcge ;};_dggb :=_ebgf .Resources ;if _dggb ==nil {_dggb =_dab ;};_gcd .Push ();if _ebgf .Matrix !=nil {_aad ,_fed :=_fe .GetArray (_ebgf .Matrix );
+if !_fed {return _gcf ;};_bcg ,_ega :=_fe .GetNumbersAsFloat (_aad .Elements ());if _ega !=nil {return _ega ;};if len (_bcg )!=6{return _ee ;};_ddc :=_fbd .NewMatrix (_bcg [0],_bcg [1],_bcg [2],_bcg [3],_bcg [4],_bcg [5]);_gcd .SetMatrix (_gcd .Matrix ().Mult (_ddc ));
+};if _ebgf .BBox !=nil {_ccb ,_becc :=_fe .GetArray (_ebgf .BBox );if !_becc {return _gcf ;};_gaa ,_bfd :=_fe .GetNumbersAsFloat (_ccb .Elements ());if _bfd !=nil {return _bfd ;};if len (_gaa )!=4{_ec .Log .Debug ("\u004c\u0065\u006e\u0020\u003d\u0020\u0025\u0064",len (_gaa ));
+return _ee ;};_gcd .DrawRectangle (_gaa [0],_gaa [1],_gaa [2]-_gaa [0],_gaa [3]-_gaa [1]);_gcd .SetRGBA (1,0,0,1);_gcd .Clip ();}else {_ec .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0052\u0065q\u0075\u0069\u0072e\u0064\u0020\u0042\u0042\u006f\u0078\u0020\u006d\u0069ss\u0069\u006e\u0067 \u006f\u006e \u0058\u004f\u0062\u006a\u0065\u0063t\u0020\u0046o\u0072\u006d");
+};_dcge =_egg .renderContentStream (_gcd ,string (_dec ),_dggb );if _dcge !=nil {return _dcge ;};_gcd .Pop ();};case "\u0042\u0049":if len (_fdc .Params )!=1{return _ee ;};_feae ,_egge :=_fdc .Params [0].(*_cee .ContentStreamInlineImage );if !_egge {return nil ;
+};_bagg ,_ffc :=_feae .ToImage (_dab );if _ffc !=nil {_ec .Log .Debug ("\u0052\u0065\u006e\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u006day\u0020b\u0065\u0020\u0069\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065.\u0020\u0049\u006d\u0061\u0067\u0065\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e \u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_ffc );
+return nil ;};_cdc ,_ffc :=_bagg .ToGoImage ();if _ffc !=nil {_ec .Log .Debug ("\u0052\u0065\u006e\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0072\u0065\u0073\u0075\u006c\u0074\u0020\u006day\u0020b\u0065\u0020\u0069\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065.\u0020\u0049\u006d\u0061\u0067\u0065\u0020\u0063\u006f\u006e\u0076\u0065\u0072\u0073\u0069\u006f\u006e \u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_ffc );
+return nil ;};_cge :=_cdc .Bounds ();_gcd .Push ();_gcd .Scale (1.0/float64 (_cge .Dx ()),-1.0/float64 (_cge .Dy ()));_gcd .DrawImageAnchored (_cdc ,0,0,0,1);_gcd .Pop ();case "\u0042\u0054":_ebd .Reset ();case "\u0045\u0054":_ebd .Reset ();case "\u0054\u0072":if len (_fdc .Params )!=1{return _ee ;
+};_abd ,_dbfb :=_fe .GetNumberAsFloat (_fdc .Params [0]);if _dbfb !=nil {return _dbfb ;};_ebd .Tr =_fda .TextRenderingMode (_abd );case "\u0054\u004c":if len (_fdc .Params )!=1{return _ee ;};_bagf ,_ccd :=_fe .GetNumberAsFloat (_fdc .Params [0]);if _ccd !=nil {return _ccd ;
+};_ebd .Tl =_bagf ;case "\u0054\u0063":if len (_fdc .Params )!=1{return _ee ;};_gga ,_ebb :=_fe .GetNumberAsFloat (_fdc .Params [0]);if _ebb !=nil {return _ebb ;};_ec .Log .Debug ("\u0054\u0063\u003a\u0020\u0025\u0076",_gga );_ebd .Tc =_gga ;case "\u0054\u0077":if len (_fdc .Params )!=1{return _ee ;
+};_acgd ,_ecee :=_fe .GetNumberAsFloat (_fdc .Params [0]);if _ecee !=nil {return _ecee ;};_ec .Log .Debug ("\u0054\u0077\u003a\u0020\u0025\u0076",_acgd );_ebd .Tw =_acgd ;case "\u0054\u007a":if len (_fdc .Params )!=1{return _ee ;};_bage ,_fbe :=_fe .GetNumberAsFloat (_fdc .Params [0]);
+if _fbe !=nil {return _fbe ;};_ebd .Th =_bage ;case "\u0054\u0073":if len (_fdc .Params )!=1{return _ee ;};_dfda ,_eegg :=_fe .GetNumberAsFloat (_fdc .Params [0]);if _eegg !=nil {return _eegg ;};_ebd .Ts =_dfda ;case "\u0054\u0064":if len (_fdc .Params )!=2{return _ee ;
+};_ecf ,_egb :=_fe .GetNumbersAsFloat (_fdc .Params );if _egb !=nil {return _egb ;};_ec .Log .Debug ("\u0054\u0064\u003a\u0020\u0025\u0076",_ecf );_ebd .ProcTd (_ecf [0],_ecf [1]);case "\u0054\u0044":if len (_fdc .Params )!=2{return _ee ;};_gfc ,_acfe :=_fe .GetNumbersAsFloat (_fdc .Params );
+if _acfe !=nil {return _acfe ;};_ec .Log .Debug ("\u0054\u0044\u003a\u0020\u0025\u0076",_gfc );_ebd .ProcTD (_gfc [0],_gfc [1]);case "\u0054\u002a":_ebd .ProcTStar ();case "\u0054\u006d":if len (_fdc .Params )!=6{return _ee ;};_age ,_fbdb :=_fe .GetNumbersAsFloat (_fdc .Params );
+if _fbdb !=nil {return _fbdb ;};_ec .Log .Debug ("\u0054\u0065x\u0074\u0020\u006da\u0074\u0072\u0069\u0078\u003a\u0020\u0025\u002b\u0076",_age );_ebd .ProcTm (_age [0],_age [1],_age [2],_age [3],_age [4],_age [5]);case "\u0027":if len (_fdc .Params )!=1{return _ee ;
+};_aggf ,_eed :=_fe .GetStringBytes (_fdc .Params [0]);if !_eed {return _gcf ;};_ec .Log .Debug ("\u0027\u0020\u0073t\u0072\u0069\u006e\u0067\u003a\u0020\u0025\u0073",string (_aggf ));_ebd .ProcQ (_aggf ,_gcd );case "\u0022":if len (_fdc .Params )!=3{return _ee ;
+};_fbb ,_ffe :=_fe .GetNumberAsFloat (_fdc .Params [0]);if _ffe !=nil {return _ffe ;};_gedb ,_ffe :=_fe .GetNumberAsFloat (_fdc .Params [1]);if _ffe !=nil {return _ffe ;};_eae ,_ddb :=_fe .GetStringBytes (_fdc .Params [2]);if !_ddb {return _gcf ;};_ebd .ProcDQ (_eae ,_fbb ,_gedb ,_gcd );
+case "\u0054\u006a":if len (_fdc .Params )!=1{return _ee ;};_dfe ,_fffe :=_fe .GetStringBytes (_fdc .Params [0]);if !_fffe {return _gcf ;};_ec .Log .Debug ("\u0054j\u0020s\u0074\u0072\u0069\u006e\u0067\u003a\u0020\u0060\u0025\u0073\u0060",string (_dfe ));
+_ebd .ProcTj (_dfe ,_gcd );case "\u0054\u004a":if len (_fdc .Params )!=1{return _ee ;};_fag ,_agd :=_fe .GetArray (_fdc .Params [0]);if !_agd {_ec .Log .Debug ("\u0054\u0079\u0070\u0065\u003a\u0020\u0025\u0054",_fag );return _gcf ;};_ec .Log .Debug ("\u0054\u004a\u0020\u0061\u0072\u0072\u0061\u0079\u003a\u0020\u0025\u002b\u0076",_fag );
+for _ ,_fdd :=range _fag .Elements (){switch _ggg :=_fdd .(type ){case *_fe .PdfObjectString :if _ggg !=nil {_ebd .ProcTj (_ggg .Bytes (),_gcd );};case *_fe .PdfObjectFloat ,*_fe .PdfObjectInteger :_bagfd ,_ecbg :=_fe .GetNumberAsFloat (_ggg );if _ecbg ==nil {_ebd .Translate (-_bagfd *0.001*_ebd .Tf .Size *_ebd .Th /100.0,0);
+};};};case "\u0054\u0066":if len (_fdc .Params )!=2{return _ee ;};_ec .Log .Debug ("\u0025\u0023\u0076",_fdc .Params );_ddcb ,_gfa :=_fe .GetName (_fdc .Params [0]);if !_gfa ||_ddcb ==nil {_ec .Log .Debug ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0066\u006f\u006e\u0074\u0020\u006e\u0061m\u0065 \u006f\u0062\u006a\u0065\u0063\u0074\u003a \u0025\u0076",_fdc .Params [0]);
+return _gcf ;};_ec .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u006e\u0061\u006d\u0065\u003a\u0020\u0025\u0073",_ddcb .String ());_bde ,_eag :=_fe .GetNumberAsFloat (_fdc .Params [1]);if _eag !=nil {_ec .Log .Debug ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u0066\u006f\u006e\u0074\u0020\u0073\u0069z\u0065 \u006f\u0062\u006a\u0065\u0063\u0074\u003a \u0025\u0076",_fdc .Params [1]);
+return _gcf ;};_ec .Log .Debug ("\u0046\u006f\u006e\u0074\u0020\u0073\u0069\u007a\u0065\u003a\u0020\u0025\u0076",_bde );_dda ,_fbab :=_dab .GetFontByName (*_ddcb );if !_fbab {_ec .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0046\u006f\u006e\u0074\u0020\u0025s\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064",_ddcb .String ());
+return _a .New ("\u0066\u006f\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");};_ec .Log .Debug ("\u0046\u006f\u006e\u0074\u003a\u0020\u0025\u0054",_dda );_abf ,_gfa :=_fe .GetDict (_dda );if !_gfa {_ec .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0063\u006f\u0075l\u0064\u0020\u006e\u006f\u0074\u0020\u0067e\u0074\u0020\u0066\u006f\u006e\u0074\u0020\u0064\u0069\u0063\u0074");
+return _gcf ;};_cbea ,_eag :=_b .NewPdfFontFromPdfObject (_abf );if _eag !=nil {_ec .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u006c\u006f\u0061\u0064\u0020\u0066\u006fn\u0074\u0020\u0066\u0072\u006fm\u0020\u006fb\u006a\u0065\u0063\u0074");
+return _eag ;};_fcdc :=_cbea .BaseFont ();if _fcdc ==""{_fcdc =_ddcb .String ();};_gaee ,_gfa :=_bb [_fcdc ];if !_gfa {_gaee ,_eag =_fda .NewTextFont (_cbea ,_bde );if _eag !=nil {_ec .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_eag );};
+};if _gaee ==nil {if len (_fcdc )> 7&&_fcdc [6]=='+'{_fcdc =_fcdc [7:];};_eabd :=[]string {_fcdc ,"\u0054i\u006de\u0073\u0020\u004e\u0065\u0077\u0020\u0052\u006f\u006d\u0061\u006e","\u0041\u0072\u0069a\u006c","D\u0065\u006a\u0061\u0056\u0075\u0020\u0053\u0061\u006e\u0073"};
+for _ ,_fdde :=range _eabd {_ec .Log .Debug ("\u0044\u0045\u0042\u0055\u0047\u003a \u0073\u0065\u0061\u0072\u0063\u0068\u0069\u006e\u0067\u0020\u0073\u0079\u0073t\u0065\u006d\u0020\u0066\u006f\u006e\u0074 \u0060\u0025\u0073\u0060",_fdde );if _gaee ,_gfa =_bb [_fdde ];
+_gfa {break ;};_gcee :=_dfc .Match (_fdde );if _gcee ==nil {_ec .Log .Debug ("c\u006f\u0075\u006c\u0064\u0020\u006eo\u0074\u0020\u0066\u0069\u006e\u0064\u0020\u0066\u006fn\u0074\u0020\u0066i\u006ce\u0020\u0025\u0073",_fdde );continue ;};_gaee ,_eag =_fda .NewTextFontFromPath (_gcee .Filename ,_bde );
+if _eag !=nil {_ec .Log .Debug ("c\u006f\u0075\u006c\u0064\u0020\u006eo\u0074\u0020\u006c\u006f\u0061\u0064\u0020\u0066\u006fn\u0074\u0020\u0066i\u006ce\u0020\u0025\u0073",_gcee .Filename );continue ;};_ec .Log .Debug ("\u0053\u0075\u0062\u0073\u0074\u0069t\u0075\u0074\u0069\u006e\u0067\u0020\u0066\u006f\u006e\u0074\u0020\u0025\u0073 \u0077\u0069\u0074\u0068\u0020\u0025\u0073 \u0028\u0025\u0073\u0029",_fcdc ,_gcee .Name ,_gcee .Filename );
+_bb [_fdde ]=_gaee ;break ;};};if _gaee ==nil {_ec .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0063\u006f\u0075\u006c\u0064\u0020n\u006f\u0074\u0020\u0066\u0069\u006ed\u0020\u0061\u006e\u0079\u0020\u0073\u0075\u0069\u0074\u0061\u0062\u006c\u0065 \u0066\u006f\u006e\u0074");
+return _a .New ("\u0063\u006f\u0075\u006c\u0064\u0020\u006e\u006f\u0074\u0020\u0066\u0069\u006e\u0064\u0020a\u006ey\u0020\u0073\u0075\u0069\u0074\u0061\u0062\u006c\u0065\u0020\u0066\u006f\u006e\u0074");};_ebd .ProcTf (_gaee .WithSize (_bde ,_cbea ));case "\u0042\u004d\u0043","\u0042\u0044\u0043":if len (_fdc .Params )==2&&_fdc .Params [0].String ()=="\u0041\u0072\u0074\u0069\u0066\u0061\u0063\u0074"{_egaf ,_fbgf :=_fe .GetDict (_fdc .Params [1]);
+if _fbgf {if _egaf .Get ("\u0053u\u0062\u0074\u0079\u0070\u0065")!=nil &&_egaf .Get ("\u0053u\u0062\u0074\u0079\u0070\u0065").String ()=="\u0057a\u0074\u0065\u0072\u006d\u0061\u0072k"{_ebd .Tr =_fda .TextRenderingModeInvisible ;};};};case "\u0045\u004d\u0043":default:_ec .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0075\u006e\u0073u\u0070\u0070\u006f\u0072\u0074\u0065\u0064 \u006f\u0070\u0065\u0072\u0061\u006e\u0064\u003a\u0020\u0025\u0073",_fdc .Operand );
+};_aa =_fdc ;return nil ;});_ac =_da .Process (_dg );if _ac !=nil {return _ac ;};return nil ;};func _aceg (_acd string ,_gaag _fb .Image )error {_gfe ,_gdbg :=_f .Create (_acd );if _gdbg !=nil {return _gdbg ;};defer _gfe .Close ();return _ga .Encode (_gfe ,_gaag );
+};func (_cgdf renderer )processShading (_cab _fda .Context ,_bee *_b .PdfShading )(_fda .Gradient ,*_fe .PdfObjectArray ,error ){_dgb :=int64 (*_bee .ShadingType );if _dgb ==int64 (ShadingTypeAxial ){return _cgdf .processLinearShading (_cab ,_bee );}else if _dgb ==int64 (ShadingTypeRadial ){return _cgdf .processRadialShading (_cab ,_bee );
+}else {_ec .Log .Debug (_db .Sprintf ("\u0050r\u006f\u0063e\u0073\u0073\u0069n\u0067\u0020\u0067\u0072\u0061\u0064\u0069e\u006e\u0074\u0020\u0074\u0079\u0070e\u0020\u0025\u0064\u0020\u006e\u006f\u0074\u0020\u0079\u0065\u0074 \u0073\u0075\u0070\u0070\u006f\u0072\u0074\u0065\u0064",_dgb ));
+};return nil ,nil ,nil ;};func (_ef renderer )renderPage (_fef _fda .Context ,_edga *_b .PdfPage ,_de _fbd .Matrix ,_bae bool )error {if !_bae {_gag :=_b .FieldFlattenOpts {AnnotFilterFunc :func (_ece *_b .PdfAnnotation )bool {switch _ece .GetContext ().(type ){case *_b .PdfAnnotationLine :return true ;
+case *_b .PdfAnnotationSquare :return true ;case *_b .PdfAnnotationCircle :return true ;case *_b .PdfAnnotationPolygon :return true ;case *_b .PdfAnnotationPolyLine :return true ;};return false ;}};_gea :=_cd .FieldAppearance {};_dbfd :=_edga .FlattenFieldsWithOpts (_gea ,&_gag );
+if _dbfd !=nil {_ec .Log .Debug ("\u0045\u0072r\u006f\u0072\u0020\u0064u\u0072\u0069n\u0067\u0020\u0061\u006e\u006e\u006f\u0074\u0061t\u0069\u006f\u006e\u0020\u0066\u006c\u0061\u0074\u0074\u0065\u006e\u0069n\u0067\u0020\u0025\u0076",_dbfd );};};_fa ,_eab :=_edga .GetAllContentStreams ();
+if _eab !=nil {return _eab ;};if _gb :=_de ;!_gb .Identity (){_fa =_db .Sprintf ("%\u002e\u0032\u0066\u0020\u0025\u002e2\u0066\u0020\u0025\u002e\u0032\u0066 \u0025\u002e\u0032\u0066\u0020\u0025\u002e2\u0066\u0020\u0025\u002e\u0032\u0066\u0020\u0063\u006d\u0020%\u0073",_gb [0],_gb [1],_gb [3],_gb [4],_gb [6],_gb [7],_fa );
+};_fef .Translate (0,float64 (_fef .Height ()));_fef .Scale (1,-1);_fef .Push ();_fef .SetRGBA (1,1,1,1);_fef .DrawRectangle (0,0,float64 (_fef .Width ()),float64 (_fef .Height ()));_fef .Fill ();_fef .Pop ();_fef .SetLineWidth (1.0);_fef .SetRGBA (0,0,0,1);
+return _ef .renderContentStream (_fef ,_fa ,_edga .Resources );};func _dgf (_cdg string ,_edda _fb .Image ,_bbc int )error {_bfcd ,_eaf :=_f .Create (_cdg );if _eaf !=nil {return _eaf ;};defer _bfcd .Close ();return _ae .Encode (_bfcd ,_edda ,&_ae .Options {Quality :_bbc });
+};func _ecef (_bfcec ,_cece ,_ffb float64 )_e .BoundingBox {return _e .Path {Points :[]_e .Point {_e .NewPoint (0,0).Rotate (_ffb ),_e .NewPoint (_bfcec ,0).Rotate (_ffb ),_e .NewPoint (0,_cece ).Rotate (_ffb ),_e .NewPoint (_bfcec ,_cece ).Rotate (_ffb )}}.GetBoundingBox ();
+};
+
+// RenderWithOpts converts the specified PDF page into an image, optionally flattens annotations and returns the result.
+func (_cg *ImageDevice )RenderWithOpts (page *_b .PdfPage ,skipFlattening bool )(_fb .Image ,error ){_eb ,_cdd :=page .GetMediaBox ();if _cdd !=nil {return nil ,_cdd ;};_eb .Normalize ();_cf :=page .CropBox ;var _cb ,_gad float64 ;if _cf !=nil {_cf .Normalize ();
+_cb ,_gad =_cf .Width (),_cf .Height ();};_ff :=page .Rotate ;_bf ,_ea ,_ebf ,_dc :=_eb .Llx ,_eb .Lly ,_eb .Width (),_eb .Height ();_ed :=_fbd .IdentityMatrix ();if _ff !=nil &&*_ff %360!=0&&*_ff %90==0{_af :=-float64 (*_ff );_aff :=_ecef (_ebf ,_dc ,_af );
+_ed =_ed .Translate ((_aff .Width -_ebf )/2+_ebf /2,(_aff .Height -_dc )/2+_dc /2).Rotate (_af *_ca .Pi /180).Translate (-_ebf /2,-_dc /2);_ebf ,_dc =_aff .Width ,_aff .Height ;if _cf !=nil {_fdf :=_ecef (_cb ,_gad ,_af );_cb ,_gad =_fdf .Width ,_fdf .Height ;
+};};if _bf !=0||_ea !=0{_ed =_ed .Translate (-_bf ,-_ea );};_cg ._edd =1.0;if _cg .OutputWidth !=0{_bc :=_ebf ;if _cf !=nil {_bc =_cb ;};_cg ._edd =float64 (_cg .OutputWidth )/_bc ;_ebf ,_dc ,_cb ,_gad =_ebf *_cg ._edd ,_dc *_cg ._edd ,_cb *_cg ._edd ,_gad *_cg ._edd ;
+_ed =_fbd .ScaleMatrix (_cg ._edd ,_cg ._edd ).Mult (_ed );};_fea :=_dbe .NewContext (int (_ebf ),int (_dc ));if _ab :=_cg .renderPage (_fea ,page ,_ed ,skipFlattening );_ab !=nil {return nil ,_ab ;};_aee :=_fea .Image ();if _cf !=nil {_dbf ,_cbg :=(_cf .Llx -_bf )*_cg ._edd ,(_cf .Lly -_ea )*_cg ._edd ;
+_aeeg :=_fb .Rect (0,0,int (_cb ),int (_gad ));_edg :=_fb .Pt (int (_dbf ),int (_dc -_cbg -_gad ));_ba :=_fb .NewRGBA (_aeeg );_g .Draw (_ba ,_aeeg ,_aee ,_edg ,_g .Src );_aee =_ba ;};return _aee ,nil ;}; \ No newline at end of file