Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 Neb1”ã@s¶dZdZddlZddlmZmZddlmZmZm Z ddl m Z m Z m Z mZmZddlmZddlmZmZmZdd lmZdd lmZdd lmZiZxfed ƒD]ZZed ks¶edkrÄdeee<q¢eedƒedƒedƒfkrðde eƒee<q¢e eƒee<q¢W[dd„Z!dZ"Gdd„dƒZ#ddlTddej$fdd„Z%dd„Z&Gdd„deƒZ'ej$fdd „Z(ej$fd!d"„Z)d+d%d&„Z*e+d'k�r²ddl,Z,e-e,j.ƒd(k�r¢e,j.d(Z/nd#Z/e*e/d)d*�dS),z3.3.0z$Render drawing objects in PostscriptéN)ÚBytesIOÚStringIO)ÚgetFontÚ stringWidthÚ unicode2T1)ÚasBytesÚchar2intÚrawBytesÚasNativeÚ isUnicode)Úfp_str)ÚRendererÚ getStateDeltaÚrenderScaledDrawing)ÚSTATE_DEFAULTS)Ú rl_config)Ú FILL_EVEN_ODDéé éz\%03oú\ú(ú)cCsbt|ƒ}g}|j}d}x@|D]8}tt|ƒ}||ƒ|t|ƒ7}|dkrd}|dƒqWdj|ƒS)NréÈz\ Ú)rÚappendÚ _ESCAPEDICTrÚlenÚjoin)ÚsÚRZaRÚnÚc©r#ú„Zdxd@dA„ZdBdC„ZdDdE„Z dydGdH„Z!dIdJ„Z"dzdKdL„Z#d{dMdN„Z$dOdP„Z%dQdR„Z&dSdT„Z'dUdV„Z(dWdX„Z)d|dYdZ„Z*d}d[d\„Z+d]d^„Z,d_d`„Z-dadb„Z.dcdd„Z/d~dedf„Z0dgdh„Z1ddidj„Z2dS)€ÚPSCanvasé,écCsÂ|\|_|_g}|j|_|j|_d|_g|_|jj|_d|_ d|_ |_ |_ |_ |_|_|_|_g|_|jtdtdƒ|jtdƒ|jdƒ|jdƒ|jdƒ||_t|_dS)NrÚ ÚfontNameÚfontSizeÚ strokeColorr(é)ÚwidthÚheightrÚ_xtraState_pushÚpopÚ_xtraState_popÚcommentsÚcodeÚ code_appendÚ_sepÚ _strokeColorÚ _fillColorÚ _lineWidthÚ_fontÚ _fontSizeÚ_lineCapÚ _lineJoinÚ_colorÚ _fontsUsedÚsetFontrÚsetStrokeColorÚ setLineCapÚ setLineJoinÚ setLineWidthÚPostScriptLevelrÚ _fillMode)ÚselfÚsizerEZ xtraStater#r#r$Ú__init__[s"  0   zPSCanvas.__init__cCs|jr|jd|ƒdS)Nú%)r3r5)rGÚmsgr#r#r$ÚcommentqszPSCanvas.commentNcCsN|jdkr|j|||||ƒn,|jdkr<|j|||||ƒntd|jƒ‚dS)Nr-r(zUnsupported Postscript Level %s)rEÚ_drawImageLevel1Ú_drawImageLevel2Ú ValueError)rGÚimageÚx1Úy1r.r/r#r#r$Ú drawImagets   zPSCanvas.drawImagecCs|jdƒdS)NÚshowpage)r5)rGr#r#r$Úclear}szPSCanvas.clearcCst|js dSg}x:|jD]0}t|ƒ}|j r|jdkr|jd||fƒqW|rp|jdtƒ|jjd|jj |ƒƒdS)NZWinAnsiEncodingzWinAnsiEncoding /%s /%s RErr-) r?rÚ _dynamicFontÚencNamerÚinsertÚPS_WinAnsiEncodingr4r6r)rGÚCr*ÚfontObjr#r#r$Ú _t1_re_encode€s  zPSCanvas._t1_re_encodecCs˜t|dƒst|dƒ}n|}|jd dkr0|jƒ|jjdd|j|jfƒ|jƒ|jt |j j |jƒƒƒ||k r”|j ƒddl m}||dd d �dS) NÚwriteÚwbr-rTrz‰%%!PS-Adobe-3.0 EPSF-3.0 %%%%BoundingBox: 0 0 %d %d %%%% Initialization: /m {moveto} bind def /l {lineto} bind def /c {curveto} bind def )Ú markfilenameZXPR3ZEPSF)Z creatorcodeZfiletypeéÿÿÿÿ)ÚhasattrÚopenr4rUrXr.r/r\r]r r6rÚcloseÚreportlab.lib.utilsr_)rGÚfZ_fr_r#r#r$ÚsaveŒs   z PSCanvas.savecCs|j|jfƒ|jdƒdS)NÚgsave)r0Ú _fontCodeLocr5)rGr#r#r$Ú saveState¢szPSCanvas.saveStatecCs|jdƒ|jƒ\|_dS)NÚgrestore)r5r2rh)rGr#r#r$Ú restoreState¦s zPSCanvas.restoreStatecCs |p|j}|p|j}t|||ƒS)zlReturn the logical width of the string if it were drawn in the current font (defaults to self.font).)r:r;r)rGrÚfontr+r#r#r$rªs  zPSCanvas.stringWidthcCs"|j|kr||_|jd|ƒdS)Nz %d setlinecap)r<r5)rGÚvr#r#r$rB±s zPSCanvas.setLineCapcCs"|j|kr||_|jd|ƒdS)Nz%d setlinejoin)r=r5)rGrmr#r#r$rC¶s zPSCanvas.setLineJoinrcCsnd}t|ttfƒr(|jd|||fƒnBt|ttfƒrj|dksFtdƒ‚djtt |ƒƒ}|jd|||fƒdS)z7Two notations. pass two numbers, or an array and phaseZsetdashz [%s %s] 0 %srzphase is a length in user spaceú z [%s] %s %sN) Ú isinstanceÚfloatÚintr5ÚtupleÚlistÚAssertionErrorrÚmapÚstr)rGÚarrayÚphaseZ psoperationZ textarrayr#r#r$ÚsetDash»szPSCanvas.setDashcCs||_|j|ƒdS)N)r7ÚsetColor)rGÚcolorr#r#r$rAÆszPSCanvas.setStrokeColorcCs`|j|kr\||_|r\t|dƒr@|jdt|j|j|j|jƒƒn|jdt|j|j |j ƒƒdS)NÚcyanz%s setcmykcolorz%s setrgbcolor) r>rar5r r|ZmagentaZyellowZblackZredZgreenZblue)rGr{r#r#r$rzÊs   "zPSCanvas.setColorcCs||_|j|ƒdS)N)r8rz)rGr{r#r#r$Ú setFillColorÓszPSCanvas.setFillColorcCs ||_dS)N)rF)rGrmr#r#r$Ú setFillMode×szPSCanvas.setFillModecCs"||jkr||_|jd|ƒdS)Nz%s setlinewidth)r9r5)rGr.r#r#r$rDÚs zPSCanvas.setLineWidthcCs:|j|ks|j|kr6t|jƒ|_||_||_|jdƒdS)Nr)r:r;rr4rhr5)rGrlr+Zleadingr#r#r$r@ßs  zPSCanvas.setFontcCs8|jdkr4|j|jƒ|jdt||ƒt||ƒfƒdS)Nz%s m %s l stroke)r7rzr5r )rGrQrRÚx2Úy2r#r#r$Úlineæs  z PSCanvas.linec Cs*yt|ƒStdt|ƒƒ‚YnXdS)z{ return a copy of string s with special characters in postscript strings escaped with backslashes. zcannot escape %sN)r%rOÚascii)rGrr#r#r$Ú_escapeëszPSCanvas._escapec Cs|dkr dSt||ƒ}|j|ƒ}|dkrJ|j|jƒ|jd||fƒdS|dkph|dkph|dkph|dk}|dkpˆ|dkpˆ|dkpˆ|dk}|dk}|rú|rú|jdkrªd } nd } |j|jƒ|jd ||| fƒ|jd ƒ|jdk rø|j|jƒ|jd ƒn|j|jƒ|jd||fƒdS)Nérz%s m (%s) show r(éér-érzfill z %s m (%s) true charpath gsave %sz grestore zstroke z%s m (%s) true charpath stroke )r rƒrzr8r5r7) rGÚxÚyrÚtextRenderModeZxyÚfillÚstrokeZ addToClipÚopr#r#r$Ú_textOutõs.            zPSCanvas._textOutcCs`|}|j}|j}|j} |j} t|ƒs²y|jdƒ}Wn~tk r°} zb| jdd…\} } t| jdd…d| jd|| d| …|| | …|| | d…ffŽ‚WYdd} ~ XnXxˆt||g|j ƒD]r\}}||k�rt |j j ƒ}|d|t |ƒfƒ|| k�r | j|ƒ|}|j||||ƒ||j|j|jƒ|ƒ7}qÆW||k�r\d|_|j|j j |ƒdS)NÚutf8r(r…z%s %s-->%s<--%sé z"(%s) findfont %s scalefont setfont)r5r;r?rƒr ÚdecodeÚUnicodeDecodeErrorÚargsrZsubstitutionFontsr ÚfaceÚnamer rrŽrrWr:r@)rGr[rˆr‰rrŠZfcr5r+Z fontsUsedÚescapeÚeÚiÚjreÚtÚpsNamer#r#r$Ú_issueT1Strings.\     zPSCanvas._issueT1StringÚleftc CsR|dk}|dk}|s|�rN|dkrzt||j|jƒ} |dkrD|| 8}n6|d krZ|| d 8}n |d krz|t||| |j|jƒ8}t|jƒ} |j|jsÌt| jj ƒ} d | t |jƒf|j|j<| |j krÌ|j j | ƒ|dk�rú|j d t ||ƒt |ƒfƒd}}|j} | j�r|j||||d�n|j| ||||d�|j| ƒ|dk�rN|j dƒdS)Nrr(r…r†r-r‡r�ÚendÚmiddleg@Únumericz"(%s) findfont %s scalefont setfontzgsave %s translate %s rotate)rŠrj)rr(r…r†)r-r(r‡r†)rr:r;Ú numericXShiftrr4rhr r”r•r r?rr5r>rVrŽrœrz) rGrˆr‰rZangleÚ text_anchorrŠZneedFillZ needStrokeÚtextLenr[r›ZoldColorr#r#r$Ú drawString+s6          zPSCanvas.drawStringrŸcCs|j|||||d�dS)N)r¢rŠ)r¤)rGrˆr‰Útextr¢rŠr#r#r$ÚdrawCentredStringIszPSCanvas.drawCentredStringržcCs|j|||||d�dS)N)r¢rŠ)r¤)rGr¥rˆr‰r¢rŠr#r#r$ÚdrawRightStringLszPSCanvas.drawRightStringc Cs€d} t||ƒt||||||ƒf} |jdkrH|j|jƒ|j| | dƒ|jdkr||j|jƒ|j| | | rpdprddƒdS)Nz%s m %s curvetoz eofillz closepathrz stroke)r r8rzr5r7) rGrQrRrr€Úx3Úy3Zx4Zy4ÚclosedÚcodelineÚdatar#r#r$Ú drawCurveOs    zPSCanvas.drawCurver-cCsZt||ƒt||ƒ}}t||ƒt||ƒ}}|j||f||f||f||ffd||d�dS)z)Draw a rectangle between x1,y1, and x2,y2r-)rªrŒr‹N)ÚminÚmaxÚpolygon)rGrQrRrr€rŒr‹r#r#r$Úrect]sz PSCanvas.rectéc CsÚt||ƒt||ƒ}}t||ƒt||ƒ}}d}dg}|j} | ||||||| ddfƒ| ||||||| ddfƒ| ||||||| ddfƒ| ||||||| ddfƒ| dƒ|j|ƒd S) z³Draw a rounded rectangle between x1,y1, and x2,y2, with corners inset as ellipses with x radius rx and y radius ry. These should have x10, and ry>0.zJmatrix currentmatrix %s %s translate %s %s scale 0 0 1 %s %s arc setmatrixÚnewpathéZé´iihrÚ closepathN)r®r¯rÚ_fillAndStroke) rGrQrRrr€ÚrxÚryZ ellipsePathZrrÚar#r#r$Ú roundRectes""""zPSCanvas.roundRectcCs|j||||ƒdS)zqDraw an orthogonal ellipse inscribed within the rectangle x1,y1,x2,y2. These should have x1|j}|sF|rP|jdƒ|j|jƒ|j|tkrldndƒ|sz|r„|jdƒ|rº|r–|jdƒ|j|jƒ|jdƒ|rº|jdƒ|rÒ|jdƒ|jdƒdS)NrgrÁr‹rjrŒÚclipr³)r8r7r4ÚextendrFr5rzr)rGr4rÛr‹rŒÚfillModer#r#r$r·s.            zPSCanvas._fillAndStrokecCs|jdt||ƒƒdS)Nz %s translate)r5r )rGrˆr‰r#r#r$Ú translate,szPSCanvas.translatecCs|jdt||ƒƒdS)Nz%s scale)r5r )rGrˆr‰r#r#r$Úscale/szPSCanvas.scalec Cs |jdt||||||ƒƒdS)Nz [%s] concat)r5r )rGrºÚbr"Údr—rer#r#r$Ú transform2szPSCanvas.transformcCs|||_|_dS)z1if this is used we're probably in the wrong worldN)r.r/)rGÚwÚhr#r#r$Ú_drawTimeResize5szPSCanvas._drawTimeResizec Csîd}|jdƒ}|j\}} |s |}|s(| }|jjdd||fd||fd|gƒ|jjd|| |fd|d d | d | fd d gƒt|d ƒr�|jn|jƒ} |j| ƒ} t| ƒ} | j d ƒ} x | dkrÔ|j | ƒ| j d ƒ} q¶W|j dƒ|j dƒdS)Nr²ÚRGBrgz%s %s translatez %s %s scalez/scanline %d 3 mul string defz%s %s %sz[%s %s %s %s %s %s]rz2{ currentfile scanline readhexstring pop } false 3z colorimage ÚtobyteséNrz% end of image datarj) ÚconvertrHr4rÜrarçÚtostringÚ_AsciiHexEncoderÚreadr5)rGrPrQrRr.r/Zcomponent_depthÚmyimageZimgwidthZ imgheightÚrawimageÚ hex_encodedÚ outstreamÚdataliner#r#r$rM9s4           zPSCanvas._drawImageLevel1cCs2tƒ}x"t|ƒD]}|jdt|ƒƒqW|jƒS)zHelper function used by imagesz%02x)rrr]rÚgetvalue)rGÚinputÚoutputÚcharr#r#r$rëwszPSCanvas._AsciiHexEncodecCsv|jdkrd}d}|}n0|jdkr6|jdƒ}d}|}n|jdƒ}d}d}|j\} } |sZ| }|sb| }|jjdd||fd ||fgƒ|dkr˜|jd ƒn|dkrª|jd ƒ|jd | | |fƒ|dkrÐ|jd ƒ|dkrâ|jdƒ|jjd| | | fdddgƒt|dƒ�r|jn|jƒ} |j | ƒ} t | ƒ} | j dƒ}x$|dk�r\|j|ƒ| j dƒ}�q:W|jdƒ|jdƒdS)z"At present we're handling only PILÚLr²r-Ú1rær„rgz%s %s translatez %s %s scalez/DeviceRGB setcolorspacez/DeviceGray setcolorspacezY << /ImageType 1 /Width %d /Height %d %% dimensions of source image /BitsPerComponent %dz /Decode [0 1]z6/Decode [0 1 0 1 0 1] %% decode color values normallyz/ImageMatrix [%s 0 0 %s 0 %s]z./DataSource currentfile /ASCIIHexDecode filterz>> % End image dictionaryrPrçrèrz> % end of image datarjN) ÚmoderérHr4rÜr5rarçrêrërrì)rGrPrQrRr.r/ZimBitsPerComponentZimNumComponentsríZimwidthZimheightrîrïrðrñr#r#r$rN~sV               zPSCanvas._drawImageLevel2©r'r')rùr()NN)N)NN)N)r)r)rr�r)rŸr)ržr)r)r-r-)r²r²)rrÀr)rr-r-)NN)r)rr-r-N)NN)NN)3Ú__name__Ú __module__Ú __qualname__rIrLrSrUr\rfrirkrrBrCryrArzr}r~rDr@r�rƒrŽrœr¤r¦r§r­r±r»r½r¿r¼rÂr°rÒrÓrÅrÔrÕrÖrÚr·rÞrßrârårMrërNr#r#r#r$r&Zs`                +   $  >r&)Ú*cCs"tƒ}|jt|ƒ||||d�dS)z As it says)Ú showBoundaryN)Ú _PSRendererÚdrawr)ÚdrawingZcanvasrˆr‰rþr r#r#r$rÅsrcCs@g}|j}x0tdt|ƒdƒD]}|||||dfƒqW|S)zo given a list of coordinates [x0, y0, x1, y1....] produce a list of points [(x0,y0), (y1,y0),....] rr(r-)rÚranger)röÚPrºr˜r#r#r$Ú_pointsFromListÊs rc@s†eZdZdZdd„Zdddddd d d œZd d „Zdd„Zdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z d#dd„Zdd „Zd!d"„ZdS)$rÿz±This draws onto a EPS document. It needs to be a class rather than a function, as some EPS-specific state tracking is needed outside of the state info in the SVG model.cCsÐ|jjd|ƒ|jj}t|tƒo&|js2|jjƒt|ƒ}|jj |ƒ|j |iƒ|j |ƒ|jj ƒ}t|tƒot|js€|jj ƒ|jjd|ƒ||j_x2|jƒD]&\}}||jkr¢t|j|j||ƒq¢WdS)zEThis is the recursive method called for each node in the treez begin node %rz end node %rN)Ú_canvasrLr>roÚPathÚ isClipPathrirÚ_trackerÚpushÚapplyStateChangesZdrawNodeDispatcherr1rkÚitemsÚ _restoresÚsetattr)rGÚnoder{ZdeltasZrDeltasÚkrmr#r#r$ÚdrawNodeÚs        z_PSRenderer.drawNoder7r9r<r=r8r:r;)r,Ú strokeWidthÚ strokeLineCapÚstrokeLineJoinÚ fillColorr*r+cCsv|j|jkodknrD|jj|j|j|j|j|j|jƒn.|jj|j|j|j|j|j|j|j|jƒdS)Nr) r¸r¹rr±rˆr‰r.r/r»)rGr±r#r#r$ÚdrawRectüsz_PSRenderer.drawRectcCs&|jjr"|jj|j|j|j|jƒdS)N)rr7r�rQrRrr€)rGr�r#r#r$ÚdrawLine sz_PSRenderer.drawLinecCs|jj|j|j|jƒdS)N)rr¿rËrÌr¾)rGr¿r#r#r$Ú drawCirclesz_PSRenderer.drawCirclec Cs´|jƒ\}}}|dks|dkrˆ|dks.|dkrˆ|j rˆ|j}|j}|j}|j}|j} ||} |jj|| |||| |||| dd�n(|j ƒ} t | t ƒr¦|j | ƒn |j | ƒdS)Nrr-)rÊ)Z _xtraRadiiZannularÚstartangledegreesÚendangledegreesÚcenterxÚcenteryÚradiusrr¼Z asPolygonrorÚdrawPathÚ drawPolygon) rGZwedgeZyradiusZradius1Zyradius1rrrrrrÉrr#r#r$Ú drawWedges(  z_PSRenderer.drawWedgecCs|jjr|jjt|jƒƒdS)N)rr7rÖrÚpoints)rGrÏr#r#r$Ú drawPolyLine#sz_PSRenderer.drawPolyLinecCsF|j|j}|j|j}|j|j}|j|j}|jj||||ƒdS)N)rËr¸rÌr¹rr½)rGr½rQrrRr€r#r#r$Ú drawEllipse's     z_PSRenderer.drawEllipsecCs|jjt|jƒdd�dS)Nr-)rª)rr°rr )rGrÏr#r#r$r/sz_PSRenderer.drawPolygonc CsØt|ddƒ}|jjs|rÔ|jjƒ}|d|j|j|jf\}}}}|dkrÀ|d|d}} t||| ƒ} |dkrx|| 8}nH|d krŽ|| d 8}n2|d kr°|t ||| || d d �8}nt dt |ƒƒ‚|jj ||||d�dS)NrŠrZ textAnchorrÐÚ inheritedr*r+ržrŸr(r Zwinansi)Úencodingzbad value for text_anchor )rŠ)rÐr#) Úgetattrrr8rZgetStaterˆr‰r¥rr¡rOrvr¤) rGZ stringObjrŠÚSr¢rˆr‰r¥rlr+r£r#r#r$r¤2s     z_PSRenderer.drawStringNc s:ddlm‰|j‰ˆjˆjˆjˆjf‰tˆddƒ}‡‡‡fdd„}ˆdkrXtˆdˆjƒ‰ˆj dk }ˆj dk }ˆj }‡‡fdd „}‡‡fd d „} ‡fd d „} |d kr¸|ƒ||||d �n~|dkrü|rÞ|dd�||||d �n|sæ|rú|ƒ||d|d �n:|�r|dd��r|ƒn |�s"|�r6|ƒ||d|d �dS)Nr)Ú _renderPathÚ autoclosercsˆˆˆf|ŽS)Nr#)Úkwds)r'Ú drawFuncsÚpathr#r$ÚrPIsz _PSRenderer.drawPath..rPrÝcsˆjgfdˆi|—ŽS)NrÝ)r·)r))r"rÝr#r$ÚPsz&_PSRenderer.drawPath..csˆjgdˆd�S)Nr)rŒrÝ)r·r#)r"rÝr#r$r-Qscsˆjgdd�S)Nr)r‹)r·r#)r"r#r$r-RsZsvg)rŒr‹rÛZpdfT)Z forceClose)Z countOnly) Úreportlab.graphics.shapesr'rrÓrÅrÔrÕr%rFr8r7r) rGr+rÝr(r,r‹rŒrÛZfasZpathFillZ pathStroker#)r'r"r*rÝr+r$rDs8       z_PSRenderer.drawPathc Csj�xb|jƒD�]T\}}|dkrN|jj|d|d|d|d|d|dƒq |dkrd|jj|ƒq |d krz|jj|ƒq |d kr�|jj|ƒq |d kr¦|jj|ƒq |d k�r|�rt|tt fƒrôt |ƒdkrôt|dt tfƒrô|d}|d}nd}|jj ||ƒn |jj ƒq |d k�r,|jj |ƒq |dkr |j d|jjƒ}|j d|jjƒ}|jj||ƒq WdS)z\This takes a set of states, and outputs the operators needed to set those propertiesrârr-r(r„r…r‡r,rrrZstrokeDashArrayrr+r*N)r+r*)r rrârArDrBrCrorsrrrryr}Úgetr:r;r@)rGÚdeltaZnewStateÚkeyÚvaluerxZfontnameZfontsizer#r#r$r ds4 ,   z_PSRenderer.applyStateChangescCs8ddlm}||jƒ}|jj|j|j|j|j|j ƒdS)Nr)Ú ImageReader) rdr3r+rrSZ_imagerˆr‰r.r/)rGrPr3Zimr#r#r$rS“s  z_PSRenderer.drawImage)N)rúrûrüÚ__doc__rr rrrrr!r"rr¤rr rSr#r#r#r$rÿÕs  /rÿcKs8t|ƒ}t|j|jfƒ}t||dd|d�|j|ƒdS)Nr)rþ)rr&r.r/rrf)ráÚfnrþZkwdr"r#r#r$Ú drawToFile˜sr6cCstƒ}t|||d�|jƒS)z=Returns a PS as a string in memory, without touching the disk)rþ)rr6rò)rárþrr#r#r$Ú drawToStringžsr7ÚepsoutFc Csddlm}ddlm}|jdd…}dddddg|jdd…<zÈddl}|jj|ƒs^|j|ƒg}xJt |ƒD]>}|dd …d krlt ||ƒ}|ƒ} t |d d ƒ} |j | | fƒqlWd} xP|D]H\} } ||j d | } t | | ƒ|sè|dkrøtdt| ƒƒ| d7} q¸WWd||jdd…<XdS)Nr)Ú testshapes)Úverbosez Times-Romanz Times-Boldz Times-ItaliczTimes-BoldItalicZCourierr�Z getDrawingr4rzrenderPS_%d.epsr(zrenderPS test saved %sr-)Zreportlab.graphicsr9Zreportlab.rl_configr:Z_FONTSÚosr+ÚisdirÚmkdirÚdirr%rÚsepr6Úprintr‚)ZoutDirÚshoutr9r:ZOLDFONTSr;ZdrawingsÚfuncnameÚfuncrZ docstringr˜ráÚfilenamer#r#r$Útestªs.        rEÚ__main__r-T)rA)r8F)0Ú __version__r4rÃÚiorrZreportlab.pdfbase.pdfmetricsrrrrdrrr r r Zreportlab.lib.rl_accelr Zreportlab.graphics.renderbaser rrr.rÚ reportlabrZreportlab.pdfgen.canvasrrrr"ÚordÚchrr%rYr&rþrrrÿr6r7rErúÚsysrÚargvÚoutdirr#r#r#r$ÚsN    =i D