Ë
    µ2Úi¸ž ã                   óN  — d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZ ddlZdd	lmZmZmZmZmZ dd
l m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z:m;Z; ddl<m=Z= ddl>m?Z? ddlm@Z@ ddlAmBZB  ej†                  eD«      ZEd<d„ZFd„ ZGd„ ZHd=d„ZId=d„ZJd=d„ZKeLj›                  dddd d!d"œ«      ZNd#„ ZOd$„ ZP G d%„ d&«      ZQe G d'„ d(«      «       ZR G d)„ d*«      ZS G d+„ d,e«      ZT G d-„ d.«      ZUd/„ ZV G d0„ d1«      ZW G d2„ d3eBj°                  «      ZY G d4„ d5e&«      ZZ G d6„ d7«      Z[ G d8„ d9e$«      Z\e%Z]e#j¼                   G d:„ d;e#«      «       Z_y)>uO   
A PDF Matplotlib backend.

Author: Jouni K SeppÃ¤nen <jks@iki.fi> and others.
é    N)Útimezone)Údatetime)ÚEnum)Útotal_ordering)ÚBytesIO)ÚImage)Ú_apiÚ_text_helpersÚ
_type1fontÚcbookÚdviread)ÚGcf)Ú_BackendÚFigureCanvasBaseÚFigureManagerBaseÚGraphicsContextBaseÚRendererBase)ÚMixedModeRenderer)ÚFigure)Úget_fontÚfontManager)ÚAFM)ÚFIXED_WIDTHÚITALICÚLOAD_NO_SCALEÚLOAD_NO_HINTINGÚKERNING_UNFITTEDÚFT2Font)ÚAffine2DÚBboxBase)ÚPath)ÚUTC)Ú_pathé   )Ú_backend_pdf_psc                 ó"  — d}d}g }t        | «      D ]H  \  }}t        |«      }||z   |k  r	||dz   z  }Œ"|j                  dj                  | || «      «       |}|}ŒJ |j                  dj                  | |d «      «       dj                  |«      S )z­
    Make one string from sequence of strings, with whitespace in between.

    The whitespace is chosen to form lines of at most *linelen* characters,
    if possible.
    r   r$   ó    Nó   
)Ú	enumerateÚlenÚappendÚjoin)ÚstringsÚlinelenÚcurrposÚlastiÚresultÚiÚsÚlengths           úV/var/www/html/acx/venv/lib/python3.12/site-packages/matplotlib/backends/backend_pdf.pyÚ_fillr6   `   s¡   € ð €GØ€EØ€FÜ˜'Ó"ò ‰ˆˆ1Ü�Q“ˆØ�VÑ˜gÒ%Ø�v ‘zÑ!‰Gà�M‰M˜$Ÿ)™) G¨E°!Ð$4Ó5Ô6ØˆEØ‰Gðð ‡M�M�$—)‘)˜G E F˜OÓ,Ô-Ø�:‰:�fÓÐó    c           
      óô  — t        j                  d«      }|rDt        j                  t	        |«      t
        j                  «      }|j                  t        ¬«      }nt        j                  «       }dt        j                  › d�d| › dt        j                  › �|dœ|¥}|j                  «       D ��ci c]  \  }}|€Œ	||“Œ }}}d„ }d	|_        d
„ }d|_        d„ }	d|	_        |||||||||	dœ	}
|D ]j  }||
vr&t        j                  d|›dt!        |
«      ›d�«       Œ- |
|   ||   «      rŒ<t        j                  d|› d||   ›d|
|   j                  › d�«       Œl d|v rt#        |d   «      |d<   |S c c}}w )aÓ  
    Create a PDF infoDict based on user-supplied metadata.

    A default ``Creator``, ``Producer``, and ``CreationDate`` are added, though
    the user metadata may override it. The date may be the current time, or a
    time set by the ``SOURCE_DATE_EPOCH`` environment variable.

    Metadata is verified to have the correct keys and their expected types. Any
    unknown keys/types will raise a warning.

    Parameters
    ----------
    backend : str
        The name of the backend to use in the Producer value.

    metadata : dict[str, Union[str, datetime, Name]]
        A dictionary of metadata supplied by the user with information
        following the PDF specification, also defined in
        `~.backend_pdf.PdfPages` below.

        If any value is *None*, then the key will be removed. This can be used
        to remove any pre-defined values.

    Returns
    -------
    dict[str, Union[str, datetime, Name]]
        A validated dictionary of metadata.
    ÚSOURCE_DATE_EPOCH)ÚtzinfozMatplotlib vz, https://matplotlib.orgzMatplotlib z
 backend v)ÚCreatorÚProducerÚCreationDatec                 ó"   — t        | t        «      S ©N)Ú
isinstanceÚstr©Úxs    r5   Úis_string_likez-_create_pdf_info_dict.<locals>.is_string_like¥   s   € Ü˜!œSÓ!Ð!r7   zan instance of strc                 ó"   — t        | t        «      S r?   )r@   r   rB   s    r5   Úis_datez&_create_pdf_info_dict.<locals>.is_date©   s   € Ü˜!œXÓ&Ð&r7   z an instance of datetime.datetimec                 óF   — t        | t        «      r| j                  dv S | dv S )N)s   Trues   Falses   Unknown)ÚTrueÚFalseÚUnknown©r@   ÚNameÚnamerB   s    r5   Úcheck_trappedz,_create_pdf_info_dict.<locals>.check_trapped­   s(   € Ü�aœÔØ—6‘6Ð<Ð<Ð<àÐ4Ð4Ð4r7   z#one of {"True", "False", "Unknown"})	ÚTitleÚAuthorÚSubjectÚKeywordsr;   r<   r=   ÚModDateÚTrappedzUnknown infodict keyword: z. Must be one of ú.zBad value for infodict keyword z. Got z which is not rT   )ÚosÚgetenvr   ÚfromtimestampÚintr   ÚutcÚreplacer"   ÚtodayÚmplÚ__version__ÚitemsÚtext_for_warningr	   Úwarn_externalÚsetrL   )ÚbackendÚmetadataÚsource_date_epochÚsource_dateÚinfoÚkÚvrD   rF   rN   Úkeywordss              r5   Ú_create_pdf_info_dictrk   v   sÆ  € ô@ Ÿ	™	Ð"5Ó6ÐÙÜ×,Ñ,¬SÐ1BÓ-CÄXÇ\Á\ÓRˆØ!×)Ñ)´Ð)Ó5‰ä—n‘nÓ&ˆð "¤#§/¡/Ð!2Ð2JÐKØ! ' ¨*´S·_±_Ð4EÐFØ#ñð ð	€Dð  $Ÿz™z›|×=‘V�a˜¨q©}ˆAˆq‰DÐ=€DÑ=ò"à&:€NÔ#ò'àA€GÔò5ð
 &K€MÔ"ð  Ø Ø!Ø"Ø!Ø"ØØØ ñ
€Hð ò CˆØ�HÑÜ×ÑÐ!;¸A¸5ð A1Ü14°X³Ð0AÀð Dõ Eà�˜!‘˜T !™WÕ%Ü×ÑÐ!@ÀÀð D&Ø&*¨1¡g [°Ø"*¨1¡+×">Ñ">Ð!?¸qð Bõ CðCð �DÑÜ˜t I™Ó/ˆˆY‰à€KùóO >s   Â1
E4Â<E4c                 ó2  — | j                  d«      }| j                  «       }|�|j                  }n1t        j                  rt        j
                  }nt        j                  }|dk(  r|dz  }|S |dk  r|d| dz  | dz  fz  z  }|S |d|dz  |dz  fz  z  }|S )zX
    Convert a datetime to a PDF string representing it.

    Used for PDF and PGF.
    zD:%Y%m%d%H%M%Sr   ÚZz+%02d'%02d'i  z-%02d'%02d')ÚstrftimeÚ	utcoffsetÚsecondsÚtimeÚdaylightÚaltzoner   )ÚdÚrÚzs      r5   Ú_datetime_to_pdfrw   Í   s¯   € ð 	
�
‰
Ð#Ó$€AØ	�‰‹€AØ€}Ø�I‰I‰ä�=Š=Ü—‘‰Aä—‘ˆAØˆA‚vØ	ˆS‰ˆð
 €Hð	 
ˆQŠØ	ˆ] ˜r d™l¨a¨R°4©KÐ8Ñ8Ñ8ˆð €Hð 	
ˆ]˜a 4™i¨¨T©Ð2Ñ2Ñ2ˆØ€Hr7   c                 ó  — t        j                  | «      }t        j                  |«      }t        j                  |«      }| ||z  z   }|||z  z   }| ||z  z   ||z  z   }	|||z  z
  ||z  z   }
| ||z  z   }|||z  z
  }| |f||f|	|
f||ffS )zR
    Calculate the coordinates of rectangle when rotated by angle around x, y
    )ÚmathÚradiansÚsinÚcos)rC   ÚyÚwidthÚheightÚangleÚ	sin_angleÚ	cos_angleÚaÚbÚcrt   ÚeÚfs                r5   Ú!_calculate_quad_point_coordinatesrˆ   å   s»   € ô
 �L‰L˜%˜Ó €EÜ—‘˜“€IÜ—‘˜“€IØ	ˆF�YÑÑ€AØ	ˆF�YÑÑ€AØ	ˆE�IÑÑ ¨Ñ 2Ñ2€AØ	ˆE�IÑÑ ¨Ñ 2Ñ2€AØ	ˆE�IÑÑ€AØ	ˆE�IÑÑ€AØ�ˆF�Q˜�F˜Q ˜F Q¨ FÐ+Ð+r7   c                 ó6  — t        | ||||«      }|dz  rdnd}t        d„ |D «       «      |z
  }t        d„ |D «       «      |z
  }t        d„ |D «       «      |z   }	t        d„ |D «       «      |z   }
t        t        j
                  j                  |«      «      |||	|
ffS )zg
    Get the coordinates of rotated rectangle and rectangle that covers the
    rotated rectangle.
    éZ   gñhãˆµøä>r   c              3   ó&   K  — | ]	  }|d    –— Œ y­w©r   N© ©Ú.0ri   s     r5   ú	<genexpr>z,_get_coordinates_of_block.<locals>.<genexpr>  ó   è ø€ Ò'˜��!•Ñ'ùó   ‚c              3   ó&   K  — | ]	  }|d    –— Œ y­w©r$   Nr�   rŽ   s     r5   r�   z,_get_coordinates_of_block.<locals>.<genexpr>  r‘   r’   c              3   ó&   K  — | ]	  }|d    –— Œ y­wrŒ   r�   rŽ   s     r5   r�   z,_get_coordinates_of_block.<locals>.<genexpr>  r‘   r’   c              3   ó&   K  — | ]	  }|d    –— Œ y­wr”   r�   rŽ   s     r5   r�   z,_get_coordinates_of_block.<locals>.<genexpr>	  r‘   r’   )rˆ   ÚminÚmaxÚtupleÚ	itertoolsÚchainÚfrom_iterable)rC   r}   r~   r   r€   ÚverticesÚpadÚmin_xÚmin_yÚmax_xÚmax_ys              r5   Ú_get_coordinates_of_blockr£   ö   sª   € ô 1°°A°uØ17¸ó@€Hð ˜R’Z‰' Q€CÜÑ'˜hÔ'Ó'¨#Ñ-€EÜÑ'˜hÔ'Ó'¨#Ñ-€EÜÑ'˜hÔ'Ó'¨#Ñ-€EÜÑ'˜hÔ'Ó'¨#Ñ-€EÜ”)—/‘/×/Ñ/°Ó9Ó:Ø�E˜5 %Ð(ð*ð *r7   c                 óª   — t        |||||«      \  }}t        d«      t        d«      |g d¢t        d«      | j                  «       dœdœ}|dz  r||d<   |S )	z=
    Create a link annotation object for embedding URLs.
    ÚAnnotÚLink©r   r   r   ÚURI)ÚSr¨   )ÚTypeÚSubtypeÚRectÚBorderÚArŠ   Ú
QuadPoints)r£   rL   Úget_url)	ÚgcrC   r}   r~   r   r€   Ú
quadpointsÚrectÚlink_annotations	            r5   Ú_get_link_annotationrµ     sd   € ô 1°°A°u¸fÀeÓLÑ€J�ä�W“Ü˜“<ØÚä�e“Ø—:‘:“<ñ
ñ	€Oð ˆr‚zà(2ˆ˜Ñ%ØÐr7   z\\z\(z\)z\nz\r)ú\ú(ú)ú
úc                 ó,  — t        | d«      r| j                  «       S t        | t        t        j
                  f«      rEt	        j                  | «      st        d«      ‚d| z  }|j                  d«      j                  d«      S t        | t        «      rddg|    S t        | t        t        j                  f«      rd| z  S t        | t        «      rPt        | j                  «       r| j                  d	«      «      S t        j                   | j                  d
«      z   «      S t        | t"        «      r9d| j%                  d«      j'                  t(        «      j                  d«      z   dz   S t        | t*        «      rWt-        dg| j/                  «       D ��cg c]-  \  }}t1        |«      j                  «       dz   t        |«      z   ‘Œ/ c}}¢d‘«      S t        | t2        t4        f«      r't-        dg| D �cg c]  }t        |«      ‘Œ c}¢d‘«      S | €yt        | t6        «      rt        t9        | «      «      S t        | t:        «      r,t-        | j<                  D �cg c]  }t        |«      ‘Œ c}«      S t?        dtA        | «      › d�«      ‚c c}}w c c}w c c}w )z!Map Python objects to PDF syntax.ÚpdfReprz%Can only output finite numbers in PDFs   %.10fó   0ó   .s   falses   trues   %dÚasciizUTF-16BEó   (zlatin-1ó   )s   <<r'   s   >>ó   [ó   ]s   nullz$Don't know a PDF representation for z objects)!Úhasattrr¼   r@   ÚfloatÚnpÚfloatingÚisfiniteÚ
ValueErrorÚrstripÚboolrY   ÚintegerrA   ÚisasciiÚencodeÚcodecsÚBOM_UTF16_BEÚbytesÚdecodeÚ	translateÚ_str_escapesÚdictr6   r_   rL   Úlistr™   r   rw   r    ÚboundsÚ	TypeErrorÚtype)Úobjru   rh   ri   Úvals        r5   r¼   r¼   ,  sW  € ô ˆs�IÔØ�{‰{‹}Ðô
 
�Cœ%¤§¡Ð-Ô	.Ü�{‰{˜3ÔÜÐDÓEÐEØ�s‰NˆØ�x‰x˜‹~×$Ñ$ TÓ*Ð*ô 
�CœÔ	Ø˜'Ð" 3Ñ'Ð'ô 
�Cœ#œrŸz™zÐ*Ô	+Ø�s‰{Ðô 
�CœÔ	Ü¨c¯k©k¬m�s—z‘z 'Ó*ó Jð 	JÜ"×/Ñ/°#·*±*¸ZÓ2HÑHóJð 	Jô 
�CœÔ	àØ�J‰J�yÓ!×+Ñ+¬LÓ9×@Ñ@ÀÓKñLàñð	ô 
�CœÔ	ÜØð
à@CÇ	Á	Ã×L¹¸¸1Œd�1‹g�o‰oÓ $Ñ&¬°«Ó3ÓLð
ð ð
ó ð 	ô 
�Cœ$¤˜Ô	'Ü�dÐA°cÖ:¨sœg c�lÒ:ÐA¸DÐAÓBÐBð 
ˆØô 
�CœÔ	"ÜÔ'¨Ó,Ó-Ð-ô 
�CœÔ	"Ü¨c¯j©jÖ9 s”g˜c•lÒ9Ó:Ð:ô Ð>¼tÀC»y¸kð J"ð "ó #ð 	#ùó+ Mùò ;ùò :s   Æ2JÇ/J
ÉJc                 ó>   — | dk(  r|dk  S | dk(  r|dk  S t        «       ‚)a  
    Returns True if the font is able to provide codepoint *glyph* in a PDF.

    For a Type 3 font, this method returns True only for single-byte
    characters. For Type 42 fonts this method return True if the character is
    from the Basic Multilingual Plane.
    é   éÿ   é*   éÿÿ  )ÚNotImplementedError)ÚfonttypeÚglyphs     r5   Ú_font_supports_glyphrä   u  s/   € ð �1‚}Ø˜‰|ÐØ�2‚~Ø˜‰~ÐÜ
Ó
Ðr7   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)Ú	ReferencezV
    PDF reference object.

    Use PdfFile.reserveObject() to create References.
    c                 ó   — || _         y r?   ©Úid©Úselfré   s     r5   Ú__init__zReference.__init__‹  s	   € Øˆ�r7   c                 ó    — d| j                   z  S )Nz<Reference %d>rè   ©rë   s    r5   Ú__repr__zReference.__repr__Ž  s   € Ø $§'¡'Ñ)Ð)r7   c                 ó    — d| j                   z  S )Ns   %d 0 Rrè   rî   s    r5   r¼   zReference.pdfRepr‘  s   € Ø˜4Ÿ7™7Ñ"Ð"r7   c                 óx   — |j                   } |d| j                  z  «        |t        |«      «        |d«       y )Nó	   %d 0 obj
s   
endobj
)Úwriteré   r¼   )rë   ÚcontentsÚfileró   s       r5   ró   zReference.write”  s1   € Ø—
‘
ˆÙˆm˜dŸg™gÑ%Ô&ÙŒg�hÓÔ ÙˆmÕr7   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rì   rï   r¼   ró   r�   r7   r5   ræ   ræ   „  s   „ ñòò*ò#ór7   ræ   c                   ó¼   — e Zd ZdZdZh  ed«      £h  e ed«       ed«      dz   «      £z
  D � �ci c]  }|d|z  “Œ
 c}} Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zyc c}} w )rL   zPDF name object.©rM   é   ú!ú~r$   z#%02xc                 óè   — t        |t        «      r|j                  | _        y t        |t        «      r|j	                  d«      }|j                  | j                  «      j                  d«      | _        y )Nr¿   )r@   rL   rM   rÑ   rÒ   rÓ   Ú_hexifyrÎ   )rë   rM   s     r5   rì   zName.__init__¢  sN   € Ü�dœDÔ!ØŸ	™	ˆD�Iä˜$¤Ô&Ø—{‘{ 7Ó+�ØŸ™ t§|¡|Ó4×;Ñ;¸GÓDˆD�Ir7   c                 ó    — d| j                   z  S )Nz	<Name %s>rû   rî   s    r5   rï   zName.__repr__ª  s   € Ø˜TŸY™YÑ&Ð&r7   c                 ó>   — d| j                   j                  d«      z   S )Nú/r¿   )rM   rÒ   rî   s    r5   Ú__str__zName.__str__­  s   € Ø�T—Y‘Y×%Ñ% gÓ.Ñ.Ð.r7   c                 óX   — t        |t        «      xr | j                  |j                  k(  S r?   rK   ©rë   Úothers     r5   Ú__eq__zName.__eq__°  s!   € Ü˜%¤Ó&ÒB¨4¯9©9¸¿
¹
Ñ+BÐBr7   c                 óX   — t        |t        «      xr | j                  |j                  k  S r?   rK   r  s     r5   Ú__lt__zName.__lt__³  s!   € Ü˜%¤Ó&ÒA¨4¯9©9°u·z±zÑ+AÐAr7   c                 ó,   — t        | j                  «      S r?   )ÚhashrM   rî   s    r5   Ú__hash__zName.__hash__¶  s   € Ü�D—I‘I‹Ðr7   c                 ó    — d| j                   z   S )Nó   /rû   rî   s    r5   r¼   zName.pdfRepr¹  s   € Ø�d—i‘iÑÐr7   N)rö   r÷   rø   rù   Ú	__slots__ÚrangeÚordr   rì   rï   r  r  r
  r  r¼   ©r�   r…   s   00r5   rL   rL   ›  s~   „ áØ€Ià%™% ›*˜Ð(H©%±°C³¹#¸c»(ÀQ¹,Ó*GÐ(HÑH÷JØð �'˜A‘+‰~ó J€GòEò'ò/òCòBòó ùó5Js   ±ArL   c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚVerbatimzEStore verbatim PDF command content for later inclusion in the stream.c                 ó   — || _         y r?   ©Ú_x)rë   rC   s     r5   rì   zVerbatim.__init__¿  s	   € Øˆ�r7   c                 ó   — | j                   S r?   r  rî   s    r5   r¼   zVerbatim.pdfReprÂ  s   € Ø�w‰wˆr7   N)rö   r÷   rø   rù   rì   r¼   r�   r7   r5   r  r  ½  s   „ ÙOòór7   r  c                   óº   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'„ Z)e*d(„ «       Z+y))*ÚOpz'PDF operators (not an exhaustive list).ó   bó   Bó   fó   hó   só   Só   ns   BTs   ETó   cs   reó   ló   ms   cms   Doó   Gó   gs   RGs   rgs   CSs   css   SCNs   scnó   dó   jó   Js   gsó   qó   Qs   Tds   Tfs   Tms   Tjs   TJó   wó   Ws   shc                 ó   — | j                   S r?   )Úvaluerî   s    r5   r¼   z
Op.pdfReprï  s   € Ø�z‰zÐr7   c                 ón   — |r|r| j                   S | j                  S |r| j                  S | j                  S )zú
        Return the PDF operator to paint a path.

        Parameters
        ----------
        fill : bool
            Fill the path with the fill color.
        stroke : bool
            Stroke the outline of the path with the line color.
        )Úfill_strokeÚstrokeÚfillÚendpath)Úclsr4  r3  s      r5   Ú
paint_pathzOp.paint_pathò  s4   € ñ ÙØ—‘Ð&à—z‘zÐ!áØ—x‘x�à—{‘{Ð"r7   N),rö   r÷   rø   rù   Úclose_fill_stroker2  r4  Ú	closepathÚclose_stroker3  r5  Ú
begin_textÚend_textÚcurvetoÚ	rectangleÚlinetoÚmovetoÚconcat_matrixÚuse_xobjectÚsetgray_strokeÚsetgray_nonstrokeÚsetrgb_strokeÚsetrgb_nonstrokeÚsetcolorspace_strokeÚsetcolorspace_nonstrokeÚsetcolor_strokeÚsetcolor_nonstrokeÚsetdashÚsetlinejoinÚ
setlinecapÚ	setgstateÚgsaveÚgrestoreÚtextposÚ
selectfontÚ
textmatrixÚshowÚshowkernÚsetlinewidthÚclipÚshadingr¼   Úclassmethodr7  r�   r7   r5   r  r  Æ  sÝ   „ Ù1àÐØ€KØ€DØ€IØ€LØ€FØ€GØ€JØ€HØ€GØ€IØ€FØ€FØ€MØ€KØ€NØÐØ€MØÐØ ÐØ#ÐØ€OØÐØ€GØ€KØ€JØ€IØ€EØ€HØ€GØ€JØ€JØ€DØ€HØ€LØ€DØ€Gòð ñ#ó ñ#r7   r  c                   ó4   — e Zd ZdZdZd	d„Zd„ Zd„ Zd„ Zd„ Z	y)
ÚStreamz«
    PDF stream object.

    This has no pdfRepr method. Instead, call begin(), then output the
    contents of the stream by calling write(), and finally call end().
    )ré   r*   ÚpdfFilerõ   ÚcompressobjÚextraÚposNc                 ó^  — || _         || _        || _        |j                  | _        d| _        |€t        «       | _        n|j                  «       | _        |�'| j                  j                  t        d«      |dœ«       | j                  j                  | j                   «       t        j                  d   r-|s+t        j
                  t        j                  d   «      | _        | j                  €t        «       | _        y| j!                  «        | j                  j#                  «       | _        y)a@  
        Parameters
        ----------
        id : int
            Object id of the stream.
        len : Reference or None
            An unused Reference object for the length of the stream;
            None means to use a memory buffer so the length can be inlined.
        file : PdfFile
            The underlying object to write the stream to.
        extra : dict from Name to anything, or None
            Extra key-value pairs to include in the stream header.
        png : dict or None
            If the data is already png encoded, the decode parameters.
        NÚFlateDecode)ÚFilterÚDecodeParmsúpdf.compression)ré   r*   r\  Úfhrõ   r]  rÕ   r^  ÚcopyÚupdaterL   Ú
recordXrefr]   ÚrcParamsÚzlibr   Ú_writeHeaderÚtellr_  )rë   ré   r*   rõ   r^  Úpngs         r5   rì   zStream.__init__  så   € ð  ˆŒØˆŒØˆŒØ—G‘GˆŒ	ØˆÔØˆ=Ü›ˆD�JàŸ™›ˆDŒJØˆ?Ø�J‰J×Ñ¬d°=Ó.AØ.1ñ3ô 4ð 	�‰×Ñ §¡Ô(Ü�<‰<Ð)Ò*±3Ü#×/Ñ/Ü—‘Ð.Ñ/ó 1ˆDÔà�8‰8ÐÜ›	ˆD�Ià×ÑÔØ—y‘y—~‘~Ó'ˆD�Hr7   c                 ó  — | j                   j                  } |d| j                  z  «       | j                  }| j                  |d<   t
        j                  d   rt        d«      |d<    |t        |«      «        |d«       y )Nrò   ÚLengthrd  ra  rb  s   
stream
)	rõ   ró   ré   r^  r*   r]   ri  rL   r¼   )rë   ró   rÕ   s      r5   rk  zStream._writeHeader:  se   € Ø—	‘	—‘ˆÙˆm˜dŸg™gÑ%Ô&Ø�z‰zˆØŸ™ˆˆX‰Ü�<‰<Ð)Ò*Ü! -Ó0ˆD�‰NáŒg�d‹mÔÙˆmÕr7   c                 ó$  — | j                  «        | j                  €Œ| j                  j                  «       }t        |«      | _        | j                  j
                  | _        | j                  «        | j                  j                  |«       | j                  j                  d«       y| j                  j                  «       | j                  z
  }| j                  j                  d«       | j                  j                  | j                  |«       y)zFinalize stream.Ns   
endstream
endobj
)Ú_flushr*   rõ   Úgetvaluer\  re  rk  ró   rl  r_  ÚwriteObject)rë   rô   r4   s      r5   Úendz
Stream.endE  s²   € ð 	�‰ŒØ�8‰8ÐØ—y‘y×)Ñ)Ó+ˆHÜ˜8“}ˆDŒHØŸ™Ÿ™ˆDŒIØ×ÑÔØ�I‰I�O‰O˜HÔ%Ø�I‰I�O‰OÐ4Õ5à—Y‘Y—^‘^Ó%¨¯©Ñ0ˆFØ�I‰I�O‰OÐ4Ô5Ø�L‰L×$Ñ$ T§X¡X¨vÕ6r7   c                 óÀ   — | j                   €| j                  j                  |«       y| j                   j                  |«      }| j                  j                  |«       y)zWrite some data on the stream.N)r]  rõ   ró   Úcompress)rë   ÚdataÚ
compresseds      r5   ró   zStream.writeU  sF   € ð ×ÑÐ#Ø�I‰I�O‰O˜DÕ!à×)Ñ)×2Ñ2°4Ó8ˆJØ�I‰I�O‰O˜JÕ'r7   c                 ó–   — | j                   �=| j                   j                  «       }| j                  j                  |«       d| _         yy)zFlush the compression object.N)r]  Úflushrõ   ró   )rë   rx  s     r5   rq  zStream._flush^  sA   € ð ×ÑÐ'Ø×)Ñ)×/Ñ/Ó1ˆJØ�I‰I�O‰O˜JÔ'Ø#ˆDÕð (r7   ©NN)
rö   r÷   rø   rù   r  rì   rk  rt  ró   rq  r�   r7   r5   r[  r[  
  s)   „ ñð P€Ió%(òN	ò7ò (ó$r7   r[  c                 ó:  — t        | d¬«      }d|j                  z  }i }|D �]ö  }|j                  |t        «      }t	        j
                  |j                  dg|j                  ¢«      |z  dz   j                  t        «      }|j                  «       \  }}	|dz  j                  t        «      }t	        j                  |	dk(  «      \  }
|
dd d…   }t	        j
                  t        h |£h |
dz
  £z  h |
dz   £z  «      t        «      }|||   ||dz
     ||dz      z   dz  j                  t        «      k(  j                  d¬	«         }|j                  |fd
v r|d d …dfxx   dz  cc<   ||z  dz   j                  t        «      }||dz
     ||dz      z   dz  j                  t        «      ||<   dj                  t!        t"        |«      «      j%                  d«      dz   t'        j(                  t+        ||	«      d d dd dg d¢d«      z   dz   ||j-                  |«      <   �Œù |S )Nr$   )Úhinting_factoréè  r   g      à?é@   rÝ   é   ©Úaxis))úDejaVuSerif-ItalicéM   )rƒ  é‡   ú r¿   s    d1
Féÿÿÿÿ)r%  r$  r7   r#  r  Tr  )r   Úunits_per_EMÚ
load_glyphr   rÆ   ÚarrayÚhoriAdvanceÚbboxÚastyperY   Úget_pathÚnonzeroÚsortedÚallÚpostscript_namer,   ÚmaprA   rÎ   r#   Úconvert_to_stringr!   Úget_glyph_name)Ú	font_pathÚ	glyph_idsÚfontÚconvÚprocsÚglyph_idÚgÚd1ri   r…   ÚquadsÚquads_onÚquads_mid_onÚimplicits                 r5   Ú_get_pdf_charprocsr¢  g  s.  € Ü�I¨aÔ0€DØ�$×#Ñ#Ñ#€DØ€EØó &ˆØ�O‰O˜H¤mÓ4ˆô �h‰h˜Ÿ™ qÐ2¨1¯6©6Ð2Ó3°dÑ:¸RÑ?×GÑGÌÓLˆØ�}‰}‹‰ˆˆ1Ø�‰V�O‰OœCÓ ˆô —‘˜A ™FÓ#‰ˆØ˜˜˜A˜‘;ˆÜ—x‘xÜ�;�X�;  E¨A¡I Ñ/°.°U¸Q±Y°.Ñ@ÓAÄ3óHˆàØˆ|‰_Ø�L 1Ñ$Ñ%¨¨,¸Ñ*:Ñ(;Ñ;¸qÑ@×HÑHÌÓMñNç‰S�aˆS‹[ñˆð × Ñ  (Ð+ð 0
ñ 
ð Ša�ˆd‹G�q‰L‹GØ�‰X˜‰]×"Ñ"¤3Ó'ˆàˆx˜!‰|‰_˜q ¨A¡™Ñ.°!Ñ3·V±V¼C³[ð 	
ˆ(‰ð �H‰H”Sœ˜b“\Ó"×)Ñ)¨'Ó2°XÑ=Ü×%Ñ%Ü�Q˜“
˜D $¨¨t°Râ-¨tó5ñ5ð
 ñð 	ˆd×!Ñ! (Ó+Ó,ðA&ðN €Lr7   c                   óR  ‡ — e Zd ZdZd3ˆ fd„	Zd„ Zg d¢fd„Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd4d„Zd„ Zddœd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Zd!„ Z d"„ Z!d#„ Z"d$„ Z#d3d%„Z$d&„ Z%d'„ Z&d(„ Z'd)„ Z(d*„ Z)e*d5d+„«       Z+d6d,„Z,d7d-„Z-d.„ Z.d/„ Z/d0„ Z0d1„ Z1d2„ Z2ˆ xZ3S )8ÚPdfFilezPDF file object.Nc                 óò  •— t         ‰	| �  «        t        j                  d«      | _        g d¢g| _        d| _        d| _        d| _        t        j                  |dd¬«      \  }}|s	 |j                  «       | _        |}d| _        || _        d| _        |j!                  d	«       |j!                  d
«       | j#                  d«      | _        | j#                  d«      | _        g | _        | j#                  d«      | _        | j#                  d«      | _        | j#                  d«      | _        | j#                  d«      | _        | j#                  d«      | _        | j#                  d«      | _        t7        d«      | j&                  dœ}| j9                  | j$                  |«       t;        d|xs i «      | _        i | _        d„ t        j                  d«      D «       | _         i | _!        i | _"        tG        jH                  «       | _%        i | _&        d„ t        j                  d«      D «       | _'        i | _(        d„ t        j                  d«      D «       | _)        g | _*        i | _+        d„ t        j                  d«      D «       | _,        g | _-        i | _.        d„ t        j                  d«      D «       | _/        i | _0        i | _1        g | _2        g | _3        g | _4        djk                  «       D �cg c]  }t7        |«      ‘Œ }}| j*                  | j2                  | j,                  | j.                  | j0                  |dœ}| j9                  | j4                  |«       y# t        $ r t        «       }|| _        Y �Œëw xY wc c}w )aã  
        Parameters
        ----------
        filename : str or path-like or file-like
            Output target; if a string, a file will be opened for writing.

        metadata : dict from strings to strings and dates
            Information dictionary object (see PDF reference section 10.2.1
            'Document Information Dictionary'), e.g.:
            ``{'Creator': 'My software', 'Author': 'Me', 'Title': 'Awesome'}``.

            The standard keys are 'Title', 'Author', 'Subject', 'Keywords',
            'Creator', 'Producer', 'CreationDate', 'ModDate', and
            'Trapped'. Values have been predefined for 'Creator', 'Producer'
            and 'CreationDate'. They can be removed by setting them to `None`.
        r$   )r   rà   úthe zero objectFNr   ÚwbT)Úreturn_openeds	   %PDF-1.4
s   %¬Ü «º
ÚrootÚpagesÚfontszextended graphics statesztiling patternszGouraud triangleszexternal objectsÚ	resourcesÚCatalog)rª   ÚPagesÚpdfc              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)ÚFN©rL   ©r�   r2   s     r5   r�   z#PdfFile.__init__.<locals>.<genexpr>Ô  ó   è ø€ Ò"M°Q¤4¨!¨A¨3¨§=Ñ"Mùó   ‚c              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)r®   Nr²  r³  s     r5   r�   z#PdfFile.__init__.<locals>.<genexpr>Û  s   è ø€ Ò K°1¤¨¨!¨ g§Ñ Kùrµ  c              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)ÚSMNr²  r³  s     r5   r�   z#PdfFile.__init__.<locals>.<genexpr>Ý  s   è ø€ ÒJ°!œt b¨¨ HŸ~ÑJùrµ  c              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)ÚHNr²  r³  s     r5   r�   z#PdfFile.__init__.<locals>.<genexpr>à  r´  rµ  c              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)ÚINr²  r³  s     r5   r�   z#PdfFile.__init__.<locals>.<genexpr>ä  s   è ø€ ÒE¨Qœ4 ! A 3 Ÿ=ÑEùrµ  úPDF Text ImageB ImageC ImageI)ÚFontÚXObjectÚ	ExtGStateÚPatternÚShadingÚProcSet)6Úsuperrì   rš   ÚcountÚ_object_seqÚ	xrefTableÚpassed_in_file_objectÚoriginal_file_likeÚ	tell_baser   Úto_filehandlerl  ÚOSErrorr   re  Úcurrentstreamró   ÚreserveObjectÚ
rootObjectÚpagesObjectÚpageListÚ
fontObjectÚ_extGStateObjectÚhatchObjectÚgouraudObjectÚXObjectObjectÚresourceObjectrL   rs  rk   ÚinfoDictÚ	fontNamesÚ_internal_font_seqÚdviFontInfoÚtype1Descriptorsr%   ÚCharacterTrackerÚ_character_trackerÚalphaStatesÚ_alpha_state_seqÚ_soft_mask_statesÚ_soft_mask_seqÚ_soft_mask_groupsÚhatchPatternsÚ_hatch_pattern_seqÚgouraudTrianglesÚ_imagesÚ
_image_seqÚmarkersÚmulti_byte_charprocsÚpathsÚ_annotationsÚpageAnnotationsÚsplit)
rë   Úfilenamerd   re  Úopenedr©  rC   Úprocsetsr¬  Ú	__class__s
            €r5   rì   zPdfFile.__init__˜  s  ø€ ô" 	‰ÑÔä$Ÿ?™?¨1Ó-ˆÔÚ7Ð8ˆŒØ%*ˆÔ"Ø"&ˆÔØˆŒÜ×(Ñ(¨°4ÀtÔL‰
ˆˆFÙð2Ø!)§¡£�”ð
 �Ø-1�Ô*àˆŒØ!ˆÔØ
�‰�Ôð 	�‰Ð(Ô)à×,Ñ,¨VÓ4ˆŒØ×-Ñ-¨gÓ6ˆÔØˆŒØ×,Ñ,¨WÓ5ˆŒØ $× 2Ñ 2Ð3MÓ NˆÔØ×-Ñ-Ð.?Ó@ˆÔØ!×/Ñ/Ð0CÓDˆÔØ!×/Ñ/Ð0BÓCˆÔØ"×0Ñ0°Ó=ˆÔä˜Y›Ø×)Ñ)ñ+ˆà×Ñ˜Ÿ™¨$Ô/ä-¨e°X²^ÀÓDˆŒàˆŒÙ"M¼)¿/¹/È!Ó:LÔ"MˆÔØˆÔà "ˆÔÜ"1×"BÑ"BÓ"DˆÔàˆÔÙ K¼	¿¹ÈÓ8JÔ KˆÔØ!#ˆÔÙJ´y·±ÀqÓ7IÔJˆÔØ!#ˆÔØˆÔÙ"M¼)¿/¹/È!Ó:LÔ"MˆÔØ "ˆÔàˆŒÙE´)·/±/À!Ó2DÔEˆŒàˆŒØ$&ˆÔ!àˆŒ
ð
 ˆÔð  "ˆÔð &E×%JÑ%JÓ%LÖM ”D˜•GÐMˆÐMð
 "Ÿ_™_Ø $× 2Ñ 2Ø"&×"7Ñ"7Ø $× 0Ñ 0Ø $× 2Ñ 2Ø (ñ*ˆ	ð 	×Ñ˜×,Ñ,¨iÕ8øôW ò 3Ü“Y�Ø*2�×'ð3üò@ Ns   Á'M Ë'M4ÍM1Í0M1c                 ó  — | j                  «        ||c| _        | _        | j                  d«      }| j                  d«      }t	        d«      | j
                  | j                  ddd|z  d|z  g||dœ}| j                  d«      }| j                  ||«       | j                  j                  |«       | j                  j                  || j                  f«       | j                  |j                  | j                  d«      «       | j                  t	        d	«      t        j                   «       | j                  t	        d	«      t        j"                  «       | j                  t$        j&                  d
   t        j(                  «       g | _        y )Nzpage contentsÚannotationsÚPager   éH   )rª   ÚParentÚ	ResourcesÚMediaBoxÚContentsÚAnnotsÚpagezlength of content streamÚ	DeviceRGBÚround)Ú	endStreamr~   r   rÎ  rL   rÐ  r×  rs  rÑ  r+   rì  rí  ÚbeginStreamré   Úoutputr  rG  rH  ÚGraphicsContextPdfÚ
joinstylesrL  )rë   r~   r   ÚcontentObjectÚannotsObjectÚthePageÚ
pageObjects          r5   ÚnewPagezPdfFile.newPage  sK  € Ø�‰Ôà"'¨ÐˆŒ
�D”KØ×*Ñ*¨?Ó;ˆØ×)Ñ)¨-Ó8ˆÜ ›<Ø!×-Ñ-Ø $× 3Ñ 3Ø ! 1 b¨5¡j°"°v±+Ð>Ø,Ø)ñˆð ×'Ñ'¨Ó/ˆ
Ø×Ñ˜ WÔ-Ø�‰×Ñ˜ZÔ(Ø×Ñ× Ñ  ,°×0DÑ0DÐ!EÔFà×Ñ˜×)Ñ)Ø×+Ñ+Ð,FÓGô	Ið 	�‰”D˜Ó%¤r×'>Ñ'>Ô?Ø�‰”D˜Ó%¤r×'AÑ'AÔBØ�‰Ô&×1Ñ1°'Ñ:¼B¿N¹NÔKð  "ˆÕr7   ©éœÿÿÿr
  r   r   c                 ól   — t        d«      t        d«      ||dœ}| j                  j                  |«       y )Nr¥   ÚText)rª   r«   rú  r¬   )rL   rí  r+   )rë   ÚtextÚpositionRectÚtheNotes       r5   ÚnewTextnotezPdfFile.newTextnote  s3   € ä ›=Ü" 6›lØ#Ø'ñˆð
 	×Ñ×#Ñ# GÕ,r7   c                 ó¨   ‡— ˆfd„Št        t        |j                  «       «      «      t        j                  dz   dz  z  } ‰|d«      }|d d dz   |z   S )Nc                 óz   •— | |k  rt         j                  |    S  ‰| |z  |«      t         j                  | |z     z   S r?   )ÚstringÚascii_uppercase)ÚnÚbaseÚtoStrs     €r5   r  z,PdfFile._get_subsetted_psname.<locals>.toStr(  sD   ø€ Ø�4ŠxÜ×-Ñ-¨aÑ0Ð0ñ ˜!˜t™) TÓ*¬V×-CÑ-CÀAÈÁHÑ-MÑMðr7   r$   r€  é   é   ú+)r  Ú	frozensetÚkeysÚsysÚmaxsize)rë   Úps_nameÚcharmapÚhashedÚprefixr  s        @r5   Ú_get_subsetted_psnamezPdfFile._get_subsetted_psname'  sU   ø€ ô	ô ”i §¡£Ó/Ó0´S·[±[À1±_ÈÑ4IÑJˆÙ�v˜rÓ"ˆð �b�qˆz˜CÑ 'Ñ)Ð)r7   c           
      ó¸  — | j                  «        | j                  «        | j                  «        | j                  «        | j	                  «        | j                  «        | j                  «        | j                  j                  «       D ���ci c]	  \  }}}||“Œ }}}}| j                  j                  «       D ]  }|d   ||d   <   Œ | j                  j                  «       D ]
  \  }}|||<   Œ | j                  D ]  \	  }}}}}	}
}}}|||<   Œ | j                  | j                  |«       | j                  «        | j!                  «        | j#                  «        | j                  | j$                  t'        d«      | j(                  t+        | j(                  «      dœ«       | j-                  «        | j/                  «        | j1                  «        yc c}}}w )z>Write out the various deferred objects and the pdf end matter.r$   r   r®  )rª   ÚKidsÚCountN)rÿ  Ú_write_annotationsÚ
writeFontsÚwriteExtGSTatesÚ_write_soft_mask_groupsÚwriteHatchesÚwriteGouraudTrianglesrç  Úvaluesré  rê  r_   rë  rs  rÖ  ÚwriteImagesÚwriteMarkersÚwritePathCollectionTemplatesrÐ  rL   rÑ  r*   ÚwriteInfoDictÚ	writeXrefÚwriteTrailer)rë   ÚimagerM   ÚobÚxobjectsÚtupr0  ÚpathÚtransr,   ÚcapÚpaddingÚfilledÚstrokeds                 r5   ÚfinalizezPdfFile.finalize7  sµ  € ð 	�‰ÔØ×ÑÔ!Ø�‰ÔØ×ÑÔØ×$Ñ$Ô&Ø×ÑÔØ×"Ñ"Ô$à,0¯L©L×,?Ñ,?Ó,A÷Cð CÙ(˜  bˆD�"‰HðCˆò Cà—<‘<×&Ñ&Ó(ò 	&ˆCØ" 1™vˆH�S˜‘VÒð	&à×4Ñ4×:Ñ:Ó<ò 	#‰KˆD�%Ø"ˆH�TŠNð	#ð —:‘:ò	 ÑFˆD�$˜˜r 4¨¨g°v¸wàˆH�TŠNð	 ð 	×Ñ˜×+Ñ+¨XÔ6Ø×ÑÔØ×ÑÔØ×)Ñ)Ô+Ø×Ñ˜×)Ñ)Ü"& w£-Ø"&§-¡-Ü#& t§}¡}Ó#5ñ7ô	8ð 	×ÑÔð 	�‰ÔØ×ÑÕùô+Cs   ÂGc                 ó$  — | j                  «        | j                  r| j                  j                  «        y| j                  �3| j                  j                  | j                  j                  «       «       | j                  j                  «        y)z)Flush all buffers and free all resources.N)rÿ  rÈ  re  rz  rÉ  ró   rr  Úcloserî   s    r5   r@  zPdfFile.closeX  s^   € ð 	�‰ÔØ×%Ò%Ø�G‰G�M‰M�Oà×&Ñ&Ð2Ø×'Ñ'×-Ñ-¨d¯g©g×.>Ñ.>Ó.@ÔAØ�G‰G�M‰M�Or7   c                 óŠ   — | j                   €| j                  j                  |«       y | j                   j                  |«       y r?   )rÍ  re  ró   )rë   rw  s     r5   ró   zPdfFile.writec  s2   € Ø×ÑÐ%Ø�G‰G�M‰M˜$Õà×Ñ×$Ñ$ TÕ*r7   c           
      ó’   — | j                  t        |D �cg c]  }t        |«      ‘Œ c}«      «       | j                  d«       y c c}w )Nr(   )ró   r6   r¼   )rë   rw  rC   s      r5   r  zPdfFile.outputi  s3   € Ø�
‰
”5¨dÖ3¨œ' !�*Ò3Ó4Ô5Ø�
‰
�5Õùò 4s   •Ac                 óH   — | j                   �J ‚t        ||| ||«      | _         y r?   )rÍ  r[  )rë   ré   r*   r^  rm  s        r5   r   zPdfFile.beginStreamm  s)   € Ø×!Ñ!Ð)Ð)Ð)Ü# B¨¨T°5¸#Ó>ˆÕr7   c                 ó`   — | j                   �"| j                   j                  «        d | _         y y r?   )rÍ  rt  rî   s    r5   rÿ  zPdfFile.endStreamq  s-   € Ø×ÑÐ)Ø×Ñ×"Ñ"Ô$Ø!%ˆDÕð *r7   ©r^  c                ó”   — | j                  |j                  d |«       | j                  j                  |«       | j	                  «        y r?   )r   ré   rÍ  ró   rÿ  )rë   Úrefrw  r^  s       r5   ÚoutputStreamzPdfFile.outputStreamv  s6   € Ø×Ñ˜Ÿ™  uÔ-Ø×Ñ× Ñ  Ô&Ø�‰Õr7   c                 óP   — | j                   D ]  \  }}| j                  ||«       Œ y r?   )rì  rs  )rë   r  rô  s      r5   r'  zPdfFile._write_annotations{  s,   € Ø)-×):Ñ):ò 	8Ñ%ˆL˜+Ø×Ñ˜\¨;Õ7ñ	8r7   c                 ó¢  — t        |t        «      r|g}nOt        j                  d   r't	        j
                  |dt        j                  ¬«      }nt	        j
                  |«      }d}|D ]d  }| j                  j                  |«      }|s|}|�Œ%t        | j                  «      }|| j                  |<   t        j                  d||«       |rŒc|}Œf |S )z¼
        Select a font based on fontprop and return a name suitable for
        Op.selectfont. If fontprop is a string, it will be interpreted
        as the filename of the font.
        úpdf.use14corefontsÚafm)ÚfontextÚ	directoryNzAssigning font %s = %r)r@   rA   r]   ri  Ú_fontManagerÚ_find_fonts_by_propsÚRendererPdfÚ_afm_font_dirrÙ  ÚgetÚnextrÚ  Ú_logÚdebug)rë   ÚfontpropÚ	filenamesÚfirst_FxÚfnameÚFxs         r5   ÚfontNamezPdfFile.fontName  sÄ   € ô �h¤Ô$Ø!˜
‰IÜ�\‰\Ð.Ò/Ü$×9Ñ9Ø %´;×3LÑ3Lô‰Iô %×9Ñ9¸(ÓCˆIØˆØò 		"ˆEØ—‘×#Ñ# EÓ*ˆBÙØ�Ø‰zÜ˜$×1Ñ1Ó2�Ø(*�—‘˜uÑ%Ü—
‘
Ð3°R¸Ô?ÚØ!‘Hð		"ð ˆr7   c                 óp  — | j                   j                  |j                  «      }|�|j                  S t	        j
                  t	        j                  d«      «      }||j                     }|j                  €/t        dj                  |j                  |j                  «      «      ‚t        | j                  «      }t        j                  d||j                  «       t        j                   |||j                  |j                  |j"                  |j$                  ¬«      | j                   |j                  <   |S )z·
        Given a dvi font object, return a name suitable for Op.selectfont.
        This registers the font information in ``self.dviFontInfo`` if not yet
        registered.
        z
pdftex.mapzNNo usable font file found for {} (TeX: {}); the font may lack a Type-1 versionzAssigning font %s = %s (dvi))ÚdvifontÚpdfnameÚfontfileÚbasefontÚencodingfileÚeffects)rÛ  rS  Útexnamer_  r   Ú
PsfontsMapÚfind_tex_filerï  rÉ   ÚformatÚpsnamerT  rÚ  rU  rV  ÚtypesÚSimpleNamespaceÚencodingrc  )rë   r^  Údvi_infoÚtex_font_mapÚpsfontr_  s         r5   ÚdviFontNamezPdfFile.dviFontNamež  sø   € ð ×#Ñ#×'Ñ'¨¯©Ó8ˆØÐØ×#Ñ#Ð#ä×)Ñ)¬'×*?Ñ*?ÀÓ*MÓNˆØ˜gŸo™oÑ.ˆØ�?‰?Ð"Üð5ç‘˜Ÿ™ w§¡Ó7ó9ð 9ô
 �t×.Ñ.Ó/ˆÜ�
‰
Ð1°7¸G¿O¹OÔLÜ,1×,AÑ,AØØØ—_‘_Ø—]‘]ØŸ™Ø—N‘Nô-$ˆ×Ñ˜Ÿ™Ñ)ð ˆr7   c                 óš  — i }t        | j                  j                  «       «      D ];  \  }}|j                  }t        j                  d|«       | j                  |«      ||<   Œ= t        | j                  «      D ]´  }| j                  |   }t        j                  d|«       |j                  d«      r*t        j                  d«       | j                  |«      ||<   Œct        j                  d«       | j                  j                  j                  |«      }|sŒ | j                  ||«      ||<   Œ¶ | j                  | j                  |«       y )Nz"Embedding Type-1 font %s from dvi.zEmbedding font %s.z.afmzWriting AFM font.zWriting TrueType font.)r�  rÛ  r_   r_  rU  rV  Ú_embedTeXFontrÙ  ÚendswithÚ_write_afm_fontrÞ  ÚusedrS  ÚembedTTFrs  rÒ  )rë   r«  Údvinamerg   r[  rï  Úcharss          r5   r(  zPdfFile.writeFonts¼  s  € ØˆÜ# D×$4Ñ$4×$:Ñ$:Ó$<Ó=ò 	1‰MˆG�TØ—‘ˆBÜ�J‰JÐ;¸WÔEØ×*Ñ*¨4Ó0ˆE�"ŠIð	1ô ˜tŸ~™~Ó.ò 	?ˆHØ—‘ Ñ)ˆBÜ�J‰JÐ+¨XÔ6Ø× Ñ  Ô(ä—
‘
Ð.Ô/Ø ×0Ñ0°Ó:��b’	ô —
‘
Ð3Ô4Ø×/Ñ/×4Ñ4×8Ñ8¸ÓB�ÚØ $§¡¨h¸Ó >�E˜"’Ið	?ð 	×Ñ˜Ÿ™¨%Õ0r7   c                 ó  — t        |d«      5 }t        |«      }d d d «       j                  «       }t        d«      t        d«      t        |«      t        d«      dœ}| j	                  d«      }| j                  ||«       |S # 1 sw Y   ŒixY w)NÚrbr¾  ÚType1ÚWinAnsiEncoding)rª   r«   ÚBaseFontÚEncodingúfont dictionary)Úopenr   Úget_fontnamerL   rÎ  rs  )rë   rï  re  r˜  ÚfontnameÚfontdictÚfontdictObjects          r5   rs  zPdfFile._write_afm_fontÑ  sˆ   € Ü�(˜DÓ!ð 	 RÜ�r“7ˆD÷	à×$Ñ$Ó&ˆÜ  ›LÜ# G›}Ü $ X£Ü $Ð%6Ó 7ñ9ˆð ×+Ñ+Ð,=Ó>ˆØ×Ñ˜¨Ô2ØÐ÷	ð 	ús   �BÂB
c                 óÚ  — t         j                  d|j                  j                  |j                  «       | j                  d«      }| j                  ||j                  j                  «       | j                  d«      }t        d«      t        d«      dt        |j                  j                  «      dz
  |dœ}|j                  �?t        d	«      dgt        t        t        j                  |j                  «      «      ¢d
œ|d	<   |j                  €Lt         j                  d|j                   «       t        |j                   «      |d<   | j                  ||«       |S t#        j$                  |j                  «      }|j&                  r|j)                  |j&                  «      }t        |j*                  d   «      |d<   |j&                  j-                  dd«      |j&                  j-                  dd«      f}| j.                  j-                  |j                  |f«      }|€7| j1                  ||j                  «      }|| j.                  |j                  |f<   ||d<   | j                  ||«       |S )Nz#Embedding TeX font %s - fontinfo=%súfont widthsr~  r¾  rz  r   r$   )rª   r«   Ú	FirstCharÚLastCharÚWidthsr}  ©rª   ÚDifferenceszâBecause of TeX configuration (pdftex.map, see updmap option pdftexDownloadBase14) the font %s is not embedded. This is deprecated as of PDF 1.5 and it may cause the consumer application to show something that was not intended.r|  ÚFontNameÚslantç        Úextendç      ð?ÚFontDescriptor)rU  rV  r^  rd  Ú__dict__rÎ  rs  ÚwidthsrL   r*   rb  r“  r   Ú
_parse_encr`  Úwarningra  r   Ú	Type1Fontrc  Ú	transformÚproprS  rÜ  ÚcreateType1Descriptor)rë   ÚfontinfoÚwidthsObjectrƒ  r‚  Út1fontrc  Úfontdescs           r5   rq  zPdfFile._embedTeXFontÝ  sA  € Ü�
‰
Ð8Ø×#Ñ#×+Ñ+¨X×->Ñ->ô	@ð ×)Ñ)¨-Ó8ˆØ×Ñ˜ x×'7Ñ'7×'>Ñ'>Ô?ð ×+Ñ+Ð,=Ó>ˆä˜f›Ü˜g›ØÜ˜X×-Ñ-×4Ñ4Ó5¸Ñ9Ø%ñˆð × Ñ Ð,ä˜ZÓ(àð NÜœD¤'×"4Ñ"4°X×5JÑ5JÓ"KÓLð Nñ$ˆH�ZÑ ð ×ÑÐ$Ü�L‰LðGð ×!Ñ!ô#ô $(¨×(9Ñ(9Ó#:ˆH�ZÑ Ø×Ñ˜^¨XÔ6Ø!Ð!ô ×%Ñ% h×&7Ñ&7Ó8ˆØ×ÒØ×%Ñ% h×&6Ñ&6Ó7ˆFÜ# F§K¡K°
Ñ$;Ó<ˆ�Ñð
 ×#Ñ#×'Ñ'¨°Ó5Ø×#Ñ#×'Ñ'¨°#Ó6ð8ˆà×(Ñ(×,Ñ,¨h×.?Ñ.?ÀÐ-IÓJˆØÐØ×1Ñ1°&¸(×:KÑ:KÓLˆHØBJˆD×!Ñ! 8×#4Ñ#4°gÐ">Ñ?Ø%-ˆÐ!Ñ"à×Ñ˜¨Ô2ØÐr7   c                 óf  — | j                  d«      }| j                  d«      }|j                  d   }|j                  d   }d}|r|dz  }	 	 |dz  }|r|d	z  }	 	 	 t        |«      }t        d
«      t        |j                  d   «      ||j                  ||j
                  |j                  dd||j                  d   ddœ}	| j                  ||	«       | j                  |dj                  |j                  d d «      t        |j                  d   «      t        |j                  d   «      ddœ¬«       |S )Núfont descriptorz	font fileÚItalicAngleÚisFixedPitchr   r$   r€  é   r  r�  r‹  r~  iô  Ú
FamilyNameé2   )rª   r‹  ÚFlagsÚFontBBoxrŸ  ÚAscentÚDescentÚ	CapHeightÚXHeightÚFontFileÚ
FontFamilyÚStemVr7   )ÚLength1ÚLength2ÚLength3rE  )rÎ  r—  r   rL   rŒ  ÚascenderÚ	descenderrs  rH  r,   Úpartsr*   )
rë   r›  r`  ÚfontdescObjectÚfontfileObjectÚitalic_angleÚfixed_pitchÚflagsÚft2fontÚ
descriptors
             r5   r˜  zPdfFile.createType1Descriptor  sQ  € ð ×+Ñ+Ð,=Ó>ˆØ×+Ñ+¨KÓ8ˆà—{‘{ =Ñ1ˆØ—k‘k .Ñ1ˆàˆáØ�V‰OˆEàð Ø�V‰OˆEñ
 Ø�V‰OˆEàð ð ô ˜8Ó$ˆô  Ð 0Ó1Ü §¡¨JÑ 7Ó8Ø Ø"Ÿ<™<Ø'Ø"×+Ñ+Ø"×,Ñ,ØØØ)Ø!Ÿ;™; |Ñ4Øñˆ
ð" 	×Ñ˜¨Ô4à×Ñ˜.¨#¯(©(°6·<±<ÀÀÐ3CÓ*DÜ,/°·±¸Q±Ó,@Ü,/°·±¸Q±Ó,@Ø,-ñ!/ð 	ô 	0ð
 Ðr7   c                 óö   — | j                  |«      }dj                  |j                  j                  «       t        j
                  j                  t        j
                  j                  |«      «      d   |g«      S )Nú-r   )r\  r,   rM   rÒ   rV   r8  ÚsplitextÚbasename)rë   rï  Ú
glyph_namer[  s       r5   Ú_get_xobject_glyph_namezPdfFile._get_xobject_glyph_nameV  s]   € Ø�]‰]˜8Ó$ˆØ�x‰xØ�G‰G�N‰NÓÜ�G‰G×ÑœRŸW™W×-Ñ-¨hÓ7Ó8¸Ñ;Øðó ð 	r7   sO  /CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<< /Registry (Adobe)
   /Ordering (UCS)
   /Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <ffff>
endcodespacerange
%d beginbfrange
%s
endbfrange
endcmap
CMapName currentdict /CMap defineresource pop
end
endc                 ó8  ‡ ‡‡‡‡— t        ‰«      }t        j                  d   Š|j                  dfd„Šˆˆˆˆ fd„}ˆˆˆˆˆ fd„}‰ j	                  |j
                  |j                  «       «      Š‰j                  dd«      Št        ‰«      Š|j                  d«      xs d	d	d
œ}|j                  d«      xs ddi}|j                  }|j                  }	d	}
d}|t        z  r|
dz  }
	 |r|
dz  }
n|
dz  }
|	t        z  r|
dz  }
	 	 	 t        d«      ‰|
|j                  D �cg c]  } ‰|d¬«      ‘Œ c} ‰|j                  d¬«       ‰|j                   d¬«       ‰|d   d¬«       ‰|d   «      |d   d   d	dœ
}‰dk(  r
 ||||«      S ‰dk(  r
 ||||«      S yc c}w )z9Embed the TTF font from the named file into the document.úpdf.fonttypeTc                 óŠ   — | |z  dz  }|rt        |«      S |dk  rt        j                  |«      S t        j                  |«      S )z2Convert font coordinates to PDF glyph coordinates.r~  r   )rþ  ry   ÚfloorÚceil)r4   ÚupeÚnearestr0  s       r5   ÚcvtzPdfFile.embedTTF.<locals>.cvtx  sB   € à˜S‘L 4Ñ'ˆEÙÜ˜U“|Ð#à�qŠyÜ—z‘z %Ó(Ð(ä—y‘y Ó'Ð'r7   c                 ó¾  •‡ ‡— ‰#j                  d«      }‰#j                  d«      }‰#j                  d«      }‰#j                  d«      }g }d\  }}	‰ j                  D �
cg c]  }
 ‰ |
d¬«      ‘Œ }}
t        d«      ‰"||	|t        d	«      |d
   |g d¢|t        d«      |dœ|dœ}ddlmŠ ˆˆ ˆ fd„}t        j                  «       5  t        j                  d«       t        ||	dz   «      D �cg c]
  } ||«      ‘Œ }}ddd«       t        «      |d<   g }g }t        «       }|D ]a  }|}‰ j                  |«      }|j                  |«       ‰ j                  |«      }|dk  r|j                  ||f«       ŒQ|j                  |«       Œc |j                  «        d}|D ]:  \  }}||dz   k7  r|j                  |«       |j                  t        |«      «       |}Œ< t!        ‰!|«      }i }t#        |«      D ]Œ  }||   }i }||v r/t        d«      t        d«      |dœ}||j%                  d«      dz   d }‰#j                  d«      }‰#j'                  |||¬«       ||v r"‰#j)                  ‰!|«      }|‰#j*                  |<   Œˆ|||<   ŒŽ ‰#j-                  ||«       ‰#j-                  ||«       ‰#j-                  ||«       ‰#j-                  ||«       |S c c}
w c c}w # 1 sw Y   �ŒÙxY w)z5The Type 3-specific part of embedding a Truetype fontr…  rž  r~  zcharacter procs)r   rÞ   F©rÆ  r¾  ÚType3r‹  )çü©ñÒMbP?r   r   rË  r   r   r}  r‰  )rª   r|  r†  r‡  r�  r«   rL   r¥  Ú
FontMatrixÚ	CharProcsr}  rˆ  r   )Úcp1252c                 ó”   •— t        ‰j                  |    «      }‰j                  |t        t        z  ¬«      j
                  } ‰|«      S )N©r·  )r  Údecoding_tableÚ	load_charr   r   r‹  )Úcharcoder3   r~   rÎ  rÇ  r˜  s      €€€r5   Úget_char_widthz?PdfFile.embedTTF.<locals>.embedTTFType3.<locals>.get_char_width¡  sG   ø€ Ü˜×-Ñ-¨hÑ7Ó8�ØŸ™Øœ]¬_Ñ<ð 'ó >ß>I¹kð á˜5“zÐ!r7   Úignorer$   NÚMaxWidthrÞ   éþÿÿÿr¿  ÚForm©rª   r«   ÚBBoxó   d1r€  ÚcharProcrE  )rÎ  rŒ  rL   Ú	encodingsrÎ  ÚwarningsÚcatch_warningsÚfilterwarningsr  r˜   rb   Úget_char_indexr+   r•  ÚaddÚsortr¢  r�  ÚfindrH  r¿  rê  rs  )$r˜  Ú
charactersr¹  rš  r³  rƒ  ÚcharprocsObjectÚdifferencesArrayÚ	firstcharÚlastcharrC   rŒ  r‚  rÔ  rÓ  r’  r—  ÚdifferencesÚmulti_byte_charsr…   ÚccodeÚgindr¾  Úlast_crM   ÚrawcharprocsÚ	charprocsÚcharnameÚstreamÚcharprocDictÚcharprocObjectrÎ  rÇ  rï  r  rë   s$   `                              @€€€€r5   ÚembedTTFType3z'PdfFile.embedTTF.<locals>.embedTTFType3ƒ  s9  ú€ à×-Ñ-¨mÓ<ˆLØ!×/Ñ/Ð0AÓBˆNØ!×/Ñ/Ð0AÓBˆNØ"×0Ñ0Ð1BÓCˆOØ!ÐØ"(ÑˆI�xØ37·9±9Ö=¨a‘C˜ 5Ö)Ð=ˆDÐ=ô ˜V›Ø#Ø&Ø$Ø"0Ü ›=Ø" :Ñ.Ø Ú6Ø,ä  Ó,Ø#3ñ5ð 'ñˆHõ" )ö"ô
 ×(Ñ(Ó*ñ Hô ×'Ñ'¨Ô1ä*/°	¸8ÀA¹:Ó*FöHØ&ñ )¨Õ2ð H�ð H÷Hô &)¨£[ˆJ�zÑ"ð
 ˆIØˆKÜ"›uÐØò 5�Ø�Ø×*Ñ*¨5Ó1�Ø× Ñ  Ô&Ø!×0Ñ0°Ó6�
Ø˜C’<Ø×&Ñ&¨¨zÐ':Õ;à$×(Ñ(¨Õ4ð5ð ×ÑÔàˆFØ&ò ‘��4Ø˜ ™
’?Ø$×+Ñ+¨AÔ.Ø ×'Ñ'¬¨T«
Ô3Ø‘ð	ô .¨h¸	ÓBˆLØˆIÜ" <Ó0ò 9�Ø% hÑ/�Ø!�ð Ð/Ñ/Ü,0°«OÜ/3°F«|Ø,0ñ$2�Lð $ F§K¡K°Ó$6¸Ñ$:Ð$;Ð<�FØ!%×!3Ñ!3°JÓ!?�Ø×!Ñ! .°&ÀÐ!ÔMð Ð/Ñ/Ø×7Ñ7¸À(ÓK�DØ6D�D×-Ñ-¨dÒ3à*8�I˜hÒ'ð39ð8 ×Ñ˜^¨XÔ6Ø×Ñ˜^¨ZÔ8Ø×Ñ˜\¨6Ô2Ø×Ñ˜_¨iÔ8à!Ð!ùòA >ùò@H÷Hñ Hús$   ÁKÃ'KÃ*KÃ9KËKËKc                 óz	  •— ‰,j                  d«      }‰,j                  d«      }‰,j                  d«      }‰,j                  d«      }‰,j                  d«      }‰,j                  d«      }‰,j                  d«      }	dj                  d	„ |D «       «      }
t        j                  d
‰)|
«       t	        j
                  ‰)|
«      }t        j                  d‰)t        j                  ‰)«      j                  |j                  «       j                  «       | }t        |«      } t        d«      t        d«      ‰+ddddœ|||dœ}t        d«      t        d«      ‰+t        d«      |g|	dœ}||d<   ‰,j                  ||j                  «       d|j                  «       j                  i¬«       dgdz  }g }d}|D ]u  }|}| j                  |«      }| j!                  |t"        t$        z  ¬«      }|j'                  | ‰(|j(                  «      f«       |dk  rt+        |«      ||<   t-        ||«      }Œw |j/                  «        |d|dz    }d}g }d}g }|D ]n  \  }}||dz   k7  r7|j'                  |«       |j'                  |g«       |j'                  ||g«       n|d   j'                  |«       ||d   d<   t-        ||«      }|}Œp g }|D ]Q  \  }}|d kD  rŒt1        d |«      }|j'                  d!||d"j                  d#„ t3        ||dz   «      D «       «      fz  «       ŒS ‰,j4                  t7        |«      d$j                  |«      fz  }g }|D ]1  }t9        ‰*|«      rŒ|j                  |«      }|j'                  |«       Œ3 |j:                  D � cg c]  }  ‰(| d%¬&«      ‘Œ }!} t=        ‰)|«      }"t?        |"«      D ]|  }#|"|#   }$t        d'«      t        d(«      |!d)œ}%|$|$jA                  d*«      d+z   d }$‰,j                  d,«      }&‰,j                  |&|$|%¬«       ‰,jC                  ‰)|#«      }'|&‰,jD                  |'<   Œ~ dj                  |«      jG                  d-«      }‰,j                  ||«       ‰,j                  |	|«       ||d.<   ‰,jI                  ||«       ‰,jI                  ||«       ‰,jI                  ||«       ‰,jI                  ||«       |S c c} w )/z6The Type 42-specific part of embedding a Truetype fontrž  zCID font dictionaryzType 0 font dictionaryzCIDToGIDMap streamzfont file streamzType 0 widthszToUnicode mapÚ c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr?   )Úchrr  s     r5   r�   z;PdfFile.embedTTF.<locals>.embedTTFType42.<locals>.<genexpr>÷  s   è ø€ Ò <¨A¤ Q§Ñ <ùs   ‚zSUBSET %s characters: %szSUBSET %s %d -> %dr¾  ÚCIDFontType2ÚAdobeÚIdentityr   )ÚRegistryÚOrderingÚ
Supplement)rª   r«   r|  ÚCIDSystemInfor�  ÚWÚCIDToGIDMapÚType0z
Identity-H)rª   r«   r|  r}  ÚDescendantFontsÚ	ToUnicodeÚ	FontFile2r­  rE  ú i   rÐ  Nr$   r×  r‡  rà   s   <%04x> <%04x> [%s]r'   c              3   ó&   K  — | ]	  }d |z  –— Œ y­w)s   <%04x>Nr�   )r�   rC   s     r5   r�   z;PdfFile.embedTTF.<locals>.embedTTFType42.<locals>.<genexpr>M  s   è ø€ ÒJ°˜y¨1�}ÑJùr’   r(   FrÉ  r¿  rØ  rÙ  rÛ  r€  rÜ  úutf-16berÖ  )%rÎ  r,   rU  rV  r%   Úget_glyphs_subsetrV   ÚstatÚst_sizeÚ	getbufferÚnbytesr   rL   rH  rr  rá  rÒ  r   r   r+   r‹  rù  r˜   rã  r—   r  Ú_identityToUnicodeCMapr*   rä   rŒ  r¢  r�  rä  r¿  rê  rÎ   rs  )-r˜  rå  r¹  r³  ÚcidFontDictObjectÚtype0FontDictObjectÚcidToGidMapObjectr´  ÚwObjectÚtoUnicodeMapObjectÚ
subset_strÚfontdataÚ	full_fontÚcidFontDictÚtype0FontDictÚcid_to_gid_mapr’  Ú	max_ccoder…   rì  rí  rã   Ú
last_ccodeÚwÚ	max_widthÚunicode_groupsr~   Úunicode_bfrangeÚstartrt  Úunicode_cmapr—  rC   rŒ  rï  rñ  rò  ró  rô  rM   rÇ  rï  râ   r  rë   s-                                           €€€€€r5   ÚembedTTFType42z(PdfFile.embedTTF.<locals>.embedTTFType42í  s  ø€ à!×/Ñ/Ð0AÓBˆNØ $× 2Ñ 2Ð3HÓ IÐØ"&×"4Ñ"4Ð5MÓ"NÐØ $× 2Ñ 2Ð3GÓ HÐØ!×/Ñ/Ð0BÓCˆNØ×(Ñ(¨Ó9ˆGØ!%×!3Ñ!3°OÓ!DÐàŸ™Ñ <°Ô <Ó<ˆJÜ�J‰JÐ1°8¸ZÔHÜ&×8Ñ8¸À:ÓNˆHÜ�J‰JØ$ hÜ—‘˜Ó!×)Ñ)¨8×+=Ñ+=Ó+?×+FÑ+Fôð ˆIô
 ˜8Ó$ˆDô ˜V›Ü Ó/Ø#à 'Ø *Ø"#ñ"%ð #1ØØ0ñˆKô ˜V›Ü ›=Ø#Ü  Ó.Ø$5Ð#6Ø/ñˆMð '5ˆJ�{Ñ#Ø×ÑØ × 1Ñ 1Ó 3Ø  (×"4Ñ"4Ó"6×"=Ñ"=Ð>ð ô @ð #˜V e™^ˆNØˆFØˆIØò 2�Ø�Ø×*Ñ*¨5Ó1�ØŸ™ uÜ-:¼_Ñ-Lð 'ó N�à—‘˜u¡c¨%×*;Ñ*;Ó&<Ð=Ô>Ø˜5’=Ü,/°«I�N 5Ñ)Ü  yÓ1‘	ð2ð �K‰KŒMØ+¨N¨Y¸©]Ð;ˆNàˆJØˆAØˆIØˆNØ &ò 	#‘��uØ˜J¨™NÒ*Ø—H‘H˜U”OØ—H‘H˜e˜WÔ%Ø"×)Ñ)¨5°%¨.Õ9à�b‘E—L‘L Ô'Ø,1�N 2Ñ& qÑ)Ü 	¨5Ó1�	Ø"‘
ð	#ð !ˆOØ,ò 	M‘
��sà˜5’=ØÜ˜% “o�à×&Ñ&Ø)Ø˜CØ—Y‘YÑJ´e¸EÀ3ÀqÁ5Ó6IÔJÓJðLñLõMð	Mð !×7Ñ7Ü  Ó0°%·*±*¸_Ó2MÐNñOˆLð ˆIØ#ò +�Ü+¨H°eÕ<Ø$×3Ñ3°EÓ:�DØ×$Ñ$ TÕ*ð+ð
 4=·>±>ÖB¨a‘C˜ 5Ö)ÐBˆDÐBÜ-¨h¸	ÓBˆLÜ" <Ó0ò A�Ø% hÑ/�Ü(,¨Y«Ü+/°«<Ø(,ñ .�ð   §¡¨EÓ 2°QÑ 6Ð 7Ð8�Ø!%×!3Ñ!3°JÓ!?�Ø×!Ñ! .°&ÀÐ!ÔMà×3Ñ3°H¸hÓG�Ø2@�×)Ñ)¨$Ò/ð!Að&  ŸW™W ^Ó4×;Ñ;¸JÓGˆNØ×ÑÐ/°Ô@ð ×ÑÐ0°,Ô?à%.ˆJ�zÑ"ð ×ÑÐ.°Ô<Ø×ÑÐ0°-Ô@Ø×Ñ˜^¨ZÔ8Ø×Ñ˜W aÔ(à&Ð&ùòG Cs   Í<R8r¿   r[   Úpcltr   )Ú	capHeightÚxHeightÚpostÚitalicAngle©r   r   Fr$   r¡  é    r  r�  rÉ  r%  r&  )
rª   r‹  r¤  r¥  r¦  r§  r¨  r©  rŸ  r¬  rÝ   rß   N)r   r]   ri  rˆ  r#  r’  Úget_charmaprÎ   rL   Úget_sfnt_tableÚ
face_flagsÚstyle_flagsr   r   rŒ  r°  r±  )rë   rï  rå  r˜  rõ  r#  r$  r'  ÚffÚsfr·  ÚsymbolicrC   r¹  rÇ  râ   r  s   ``            @@@r5   ru  zPdfFile.embedTTFr  sÈ  ü€ ô ˜Ó!ˆÜ—<‘< Ñ/ˆà ×-Ñ-°tó 		(÷h	"÷TN	'ð N	'ðd ×,Ñ,Ø× Ñ Ø×ÑÓó
ˆð —.‘. ¨)Ó4ˆÜ�w“-ˆØ×"Ñ" 6Ó*ÒL¸AÈ!Ñ.LˆØ×"Ñ" 6Ó*ÒE¨}¸fÐ.EˆØ�_‰_ˆØ×ÑˆàˆØˆØ”ÒØ�V‰OˆEØáØ�V‰O‰Eà�V‰OˆEØ”Š;Ø�V‰OˆEØààô Ð)Ó*ØØØ8<¿	¹	ÖB°1™˜Q¨Ö.ÒBÙ˜$Ÿ-™-°Ô7Ù˜4Ÿ>™>°5Ô9Ù˜T +Ñ.¸Ô>Ù˜4 	™?Ó+Ø Ñ.¨qÑ1Øñˆ
ð �qŠ=Ù   z°:Ó>Ð>Ø˜Š^Ù! $¨
°JÓ?Ð?ð ùò Cs   ÄF
c                 ó¾   — | j                   j                  |d«      }|�|d   S t        | j                  «      }|t	        d«      |d   |d   dœf| j                   |<   |S )z?Return name of an ExtGState that sets alpha to the given value.Nr   rÀ  r$   )rª   ÚCAÚca)rß  rS  rT  rà  rL   )rë   ÚalphaÚstaterM   s       r5   Ú
alphaStatezPdfFile.alphaState¯  ss   € ð × Ñ ×$Ñ$ U¨DÓ1ˆØÐØ˜‘8ˆOä�D×)Ñ)Ó*ˆàœD Ó-Ø ™(¨%°©(ñ4ð 5ð 	×Ñ˜Ñð ˆr7   c                 óà  — | j                   j                  |d«      }|�|d   S t        | j                  «      }| j	                  d«      }|t        d«      dt        d«      t        d«      dg|d	œd
œf| j                   |<   | j                  j                  |t        d«      t        d«      dt        d«      t        d«      dœg d¢dd|iig d¢dœt        d«      t        j                  gf«       |S )aA  
        Return an ExtGState that sets the soft mask to the given shading.

        Parameters
        ----------
        smask : Reference
            Reference to a shading in DeviceGray color space, whose luminosity
            is to be used as the alpha channel.

        Returns
        -------
        Name
        Nr   z transparency group for soft maskrÀ  FÚMaskÚ
Luminosityr$   )rª   r©   ÚBCÚG)rª   ÚAISÚSMaskr¿  rØ  ÚTransparencyÚ
DeviceGray)r©   ÚCS)r$   r   r   r$   r   r   rÂ  r©   )r   r   r$   r$   )rª   r«   ÚFormTypeÚGroupÚMatrixrø  rÚ  )
rá  rS  rT  râ  rÎ  rL   rã  r+   r  rX  )rë   Úsmaskr6  rM   ÚgroupObs        r5   Ú_soft_mask_statezPdfFile._soft_mask_state¼  s  € ð ×&Ñ&×*Ñ*¨5°$Ó7ˆØÐØ˜‘8ˆOä�D×'Ñ'Ó(ˆØ×$Ñ$Ð%GÓHˆàä˜[Ó)Øä  ›LÜ˜lÓ+Ø˜#Ø ñ	ñ	ð)
ˆ×Ñ˜uÑ%ð 	×Ñ×%Ñ%Øä˜Y›Ü ›<Øä˜nÓ-Ü˜|Ó,ñò -Ø'¨#¨u¨Ð6Ú$ñô �#‹YœŸ
™
Ð#ð'
ô 	ð  ˆr7   c                 ó¶   — | j                  | j                  t        g | j                  j	                  «       ¢| j
                  j	                  «       ¢«      «       y r?   )rs  rÓ  rÕ   rß  r-  rá  rî   s    r5   r)  zPdfFile.writeExtGSTatesð  sT   € Ø×ÑØ×!Ñ!Üð Ø×!Ñ!×(Ñ(Ó*ðà×'Ñ'×.Ñ.Ó0ðó õ	
r7   c                 ó¦   — | j                   D ]B  \  }}}| j                  |j                  d |«        | j                  |Ž  | j	                  «        ŒD y r?   )rã  r   ré   r  rÿ  )rë   r5  Ú
attributesÚcontents       r5   r*  zPdfFile._write_soft_mask_groupsù  sL   € Ø'+×'=Ñ'=ò 	Ñ#ˆB�
˜GØ×Ñ˜RŸU™U D¨*Ô5ØˆD�K‰K˜Ñ!Ø�N‰NÕñ	r7   c                 óÜ   — |�%|\  }}}|�t        |«      }|�t        |«      }|||f}| j                  j                  |d «      }|�|S t        | j                  «      }|| j                  |<   |S r?   )r™   rä  rS  rT  rå  )rë   Úhatch_styleÚedgeÚfaceÚhatchÚpatternrM   s          r5   ÚhatchPatternzPdfFile.hatchPatternÿ  s†   € àÐ"Ø +ÑˆD�$˜ØÐÜ˜T“{�ØÐÜ˜T“{�Ø  uÐ-ˆKà×$Ñ$×(Ñ(¨°dÓ;ˆØÐØˆNä�D×+Ñ+Ó,ˆØ*.ˆ×Ñ˜;Ñ'Øˆr7   c                 ó  — t        «       }d}| j                  j                  «       D �]·  \  }}| j                  d«      }|||<   ddj	                  «       D �cg c]  }t        |«      ‘Œ c}i}| j                  |j                  d t        d«      ddddd||g|||ddddd| j                  dz  gd	œ	«       |\  }}	}
| j                  |d   |d   |d
   t        j                  «       |	�M| j                  |	d   |	d   |	d
   t        j                  dd||t        j                  t        j                  «
       | j                  t        j                   d   t        j"                  «        | j                  | j%                  t'        j(                  |
«      t+        «       j-                  |«      d¬«      Ž  | j                  t        j.                  «       | j1                  «        �Œº | j3                  | j4                  |«       y c c}w )Nç      R@zhatch patternÚProcsetsr½  rÁ  r$   r   rö  )	rª   ÚPatternTypeÚ	PaintTypeÚ
TilingTyperÚ  ÚXStepÚYSteprø  rD  r€  zhatch.linewidthF©Úsimplify)rÕ   rä  r_   rÎ  rî  rL   r   ré   r   r  r  rE  rF  r>  r4  r]   ri  rV  ÚpathOperationsr!   rP  r   Úscaler2  rÿ  rs  rÔ  )rë   Ú	hatchDictÚsidelenrM  rM   r5  rC   ÚresÚ
stroke_rgbÚfill_rgbrP  s              r5   r+  zPdfFile.writeHatches  sØ  € Ü“Fˆ	ØˆØ!%×!3Ñ!3×!9Ñ!9Ó!;ó  	ÑˆK˜Ø×#Ñ# OÓ4ˆBØ ˆI�d‰OØØ%D×%JÑ%JÓ%LÖM ”D˜•GÒMðOˆCà×ÑØ—‘�tÜ˜i›Ø !°ÀØ˜Q ¨Ð1Ø!¨GØ!à˜q ! Q¨¨4¯;©;¸Ñ+;Ð<ñ>ô?ð +6Ñ'ˆJ˜ %Ø�K‰K˜
 1™ z°!¡}°jÀ±mÜ×(Ñ(ô*àÐ#Ø—‘˜H Q™K¨°!©°h¸q±kÜ×/Ñ/Ø˜q '¨7´B·L±LÜŸG™Gô%ð
 �K‰KœŸ™Ð%6Ñ7¼¿¹ÔIàˆD�K‰K˜×,Ñ,Ü—
‘
˜5Ó!Ü“
× Ñ  Ó)Øð -ó  ñ !ð �K‰KœŸ™Ô'à�N‰NÖðA 	ðB 	×Ñ˜×)Ñ)¨9Õ5ùò; Ns   ÁG?c                 ó²   — t        dt        | j                  «      z  «      }| j                  d|› �«      }| j                  j	                  ||||f«       ||fS )aÕ  
        Add a Gouraud triangle shading.

        Parameters
        ----------
        points : np.ndarray
            Triangle vertices, shape (n, 3, 2)
            where n = number of triangles, 3 = vertices, 2 = x, y.
        colors : np.ndarray
            Vertex colors, shape (n, 3, 1) or (n, 3, 4)
            as with points, but last dimension is either (gray,)
            or (r, g, b, alpha).

        Returns
        -------
        Name, Reference
        zGT%dzGouraud triangle )rL   r*   ræ  rÎ  r+   )rë   ÚpointsÚcolorsrM   r5  s        r5   ÚaddGouraudTriangleszPdfFile.addGouraudTriangles7  s\   € ô$ �FœS ×!6Ñ!6Ó7Ñ7Ó8ˆØ×ÑÐ"3°D°6Ð :Ó;ˆØ×Ñ×$Ñ$ d¨B°¸Ð%?Ô@Ø�Rˆxˆr7   c                 óL  — t        «       }| j                  D �]n  \  }}}}|||<   |j                  }|j                  |d   |d   z  df«      }|j                  d   }|dv sJ ‚|j                  |d   |d   z  |f«      }	|dk(  rd}t	        j
                  |d¬«      dz
  }
t	        j                  |d¬«      dz   }d	||
z
  z  }| j                  |j                  d dd
ddt        |dk(  rdnd«      d|
d   |d   |
d   |d   gddg|z  z   dœ«       t	        j                  |d   |d   z  fdddd|ffg¬«      }d|d<   ||
z
  |z  |d<   |	d d …d |…f   dz  |d<   | j                  |j                  «       «       | j                  «        �Œq | j                  | j                  |«       y )Nr   r$   r€  ©r$   r¡  r¡  rÝ   r�  rü   l   ÿÿ r*  é   rý  r@  F)ÚShadingTypeÚBitsPerCoordinateÚBitsPerComponentÚBitsPerFlagÚ
ColorSpaceÚ	AntiAliasÚDecode)r·  Úu1)re  z>u4)r€  rf  rr  ©Údtyper·  re  g     ào@)rÕ   ræ  ÚshapeÚreshaperÆ   r—   r˜   r   ré   rL   Úemptyró   Útobytesrÿ  rs  rÕ  )rë   ÚgouraudDictrM   r5  re  rf  ru  Úflat_pointsÚcolordimÚflat_colorsÚ
points_minÚ
points_maxÚfactorÚ	streamarrs                 r5   r,  zPdfFile.writeGouraudTrianglesN  sù  € Ü“fˆØ(,×(=Ñ(=ó '	Ñ$ˆD�"�f˜fØ "ˆK˜ÑØ—L‘LˆEØ Ÿ.™.¨%°©(°U¸1±XÑ*=¸qÐ)AÓBˆKØ—|‘| A‘ˆHØ˜vÑ%Ð%Ð%Ø Ÿ.™.¨%°©(°U¸1±XÑ*=¸xÐ)HÓIˆKØ˜1Š}à�ÜŸ™ °!Ô4¸Ñ?ˆJÜŸ™ °!Ô4¸Ñ?ˆJØ :°
Ñ#:Ñ;ˆFà×ÑØ—‘�tØ !Ø&(Ø%&Ø !Ü#Ø$,°¢M‘[°|ó ð $Ø'¨™]¨J°q©MØ'¨™]¨J°q©Mð;à  !˜f xÑ/ñ0ñôô Ÿ™Ø�q‘˜E !™HÑ$Ð&Ø&Ø.Ø  $¨¨Ð4ð6ô7ˆIð
 "#ˆI�gÑØ#.°Ñ#;¸vÑ"EˆI�hÑØ"-ªa°°(°¨lÑ";¸eÑ"CˆI�hÑà�J‰J�y×(Ñ(Ó*Ô+Ø�N‰NÖðO'	ðP 	×Ñ˜×+Ñ+¨[Õ9r7   c                 óæ   — | j                   j                  t        |«      d«      }|�|d   S t        | j                  «      }| j                  d|› �«      }|||f| j                   t        |«      <   |S )z=Return name of an image XObject representing the given image.Nr$   zimage )rç  rS  ré   rT  rè  rÎ  )rë   r4  ÚentryrM   r5  s        r5   ÚimageObjectzPdfFile.imageObjectz  so   € ð —‘× Ñ ¤ E£¨DÓ1ˆØÐØ˜‘8ˆOä�D—O‘OÓ$ˆØ×Ñ &¨¨ Ó0ˆØ#(¨$°Ð"3ˆ�‰”R˜“YÑØˆr7   c                 óB  — |ddd…   }|j                   dk(  r|dfS |dd…dd…dd…f   }t        j                  |d¬«      }|j                  d   dk(  rH|dd…dd…df   d   }t        j                  |d	k(  «      rd}||fS t        j                  |d¬«      }||fS d}||fS )
zç
        Unpack image array *im* into ``(data, alpha)``, which have shape
        ``(height, width, 3)`` (RGB) or ``(height, width, 1)`` (grayscale or
        alpha), except that alpha is None if the image is fully opaque.
        Nr‡  r€  rÝ   ÚC)Úorderr¡  ).NrÞ   )ÚndimrÆ   rŠ  ru  r‘  )rë   ÚimÚrgbr5  s       r5   Ú_unpackzPdfFile._unpack†  s¼   € ð ‘�"�‰XˆØ�7‰7�aŠ<Ø�t�8ˆOà’Qš˜2˜A˜2�X‘,ˆCÜ—(‘(˜3 cÔ*ˆCà�x‰x˜‰{˜aÒØš1ša ˜7™ IÑ.�Ü—6‘6˜% 3™,Ô'Ø �Eð
 ˜�:Ðô ŸH™H U°#Ô6�Eð ˜�:Ðð �Ø˜�:Ðr7   c                 óÆ  — t        «       }|j                  |d¬«       |j                  d«       d}dx}}	 t        j                  d|j                  d«      «      \  }}|dv rQ|j                  |«      }t        |«      |k7  rt        d«      ‚|d	k(  rt        |d   «      }n+|d
k(  r|}n#|dk(  r||z  }n|dk(  rn%|j                  |d«       |j                  dd«       Œ¨|||fS )zn
        Write the image *img* into the pdf file using png
        predictors with Flate compression.
        rm  )rg  rj  r7   Ns   !L4s)ó   IHDRó   PLTEó   IDATztruncated datarŒ  r�  rŽ  s   IENDr$   r¡  )	r   ÚsaveÚseekÚstructÚunpackÚreadr*   ÚRuntimeErrorrY   )	rë   ÚimgÚbufferÚpng_dataÚ	bit_depthÚpaletter4   rÙ   rw  s	            r5   Ú	_writePngzPdfFile._writePng�  sî   € ô
 “ˆØ�‰� ˆÔ&Ø�‰�AŒØˆØ"Ð"ˆ	�GØÜ!Ÿ=™=¨°&·+±+¸a³.ÓA‰LˆF�DØÐ2Ñ2Ø—{‘{ 6Ó*�Ü�t“9 Ò&Ü&Ð'7Ó8Ð8Ø˜7’?Ü # D¨¡G£‘IØ˜W’_Ø"‘GØ˜W’_Ø Ñ$‘HØ˜’Øà—‘˜F AÔ&Ø�K‰K˜˜1Ôð! ð" ˜ GÐ+Ð+r7   c           	      óL  — |j                   \  }}}t        d«      t        d«      ||t        dddœ|   «      ddœ}|r||d<   t        j                  d	   �rK|j                   d
   dk(  r|j	                  d
¬«      }d||dœ}t        j                  |«      }	|	j                  d¬«      }
|dk(  �rÞ|
��Ût        |
«      }t        j                  |
D ���cg c]  \  }}|D ]  }|‘Œ Œ c}}}t        j                  ¬«      }|ddd…   j                  t        j                  «      dz  |ddd…   j                  t        j                  «      dz  z  |ddd…   z  }|dd…dd…df   j                  t        j                  «      dz  |dd…dd…df   j                  t        j                  «      dz  z  |dd…dd…df   z  }t        j                  |«      j                  t        j                  «      }|t        j                  |||¬«         }t        j                  |d¬«      }	|	j!                  |«       | j#                  |	«      \  }}}|�|€t%        d«      ‚|d|dz   }t        d«      t        d«      |dz
  |g|d<   ||d<   d|d<   ||d<   n| j#                  |	«      \  }}}nd}| j'                  || j)                  d«      ||¬ «       |r| j*                  j-                  «       n)| j*                  j-                  |j/                  «       «       | j1                  «        yc c}}}w )!a  
        Write the image *data*, of shape ``(height, width, 1)`` (grayscale) or
        ``(height, width, 3)`` (RGB), as pdf object *id* and with the soft mask
        (alpha channel) *smask*, which should be either None or a ``(height,
        width, 1)`` array.
        r¿  r   r@  rý  ©r$   rÝ   rj  )rª   r«   ÚWidthÚHeightro  rm  r>  rd  r‡  r$   r�  é
   )Ú	PredictorÚColorsÚColumnsrü   )Ú	maxcolorsrÝ   Nrs  r   é   r€  )ÚsorterÚP)Úmodezinvalid PNG headerÚIndexedro  rm  r¡  zlength of image stream)rm  )ru  rL   r]   ri  Úsqueezer   Ú	fromarrayÚ	getcolorsr*   rÆ   rŠ  Úuint8r�  Úuint32ÚargsortÚsearchsortedÚ
putpaletterš  r”  r   rÎ  rÍ  ró   rx  rÿ  )rë   rw  ré   rE  r   r~   Úcolor_channelsrÚ   rm  r•  Ú
img_colorsÚ
num_colorsÚ_ÚcolorÚcompr™  Ú	palette24Úrgb24ÚindicesÚrgb8r—  r˜  s                         r5   Ú	_writeImgzPdfFile._writeImgº  s  € ð )-¯
©
Ñ%ˆ��~Ü˜I“Ü˜w›-ØØÜ! l°{Ñ"CÀNÑ"SÓTØ#$ñ&ˆñ Ø ˆC�‰LÜ�<‰<Ð)Ó*Ø�z‰z˜"‰~ Ò"Ø—|‘|¨�|Ó,�Ø "¨nÈÑOˆCÜ—/‘/ $Ó'ˆCØŸ™°˜Ó5ˆJØ Ó" zÑ'=ô ! ›_�
ÜŸ(™(¸×#VÐ#V©X¨Q°ÐPUÒ#VÈ¢DÐ#V DÔ#VÜ)+¯©ô3�à% a d¨ d™m×2Ñ2´2·9±9Ó=ÀÑCØ% a d¨ d™m×2Ñ2´2·9±9Ó=ÀÑBñDà$ Q T¨ T™]ñ+�	ð šq¢! Q˜w™-×.Ñ.¬r¯y©yÓ9¸RÑ?Øšq¢! Q˜w™-×.Ñ.¬r¯y©yÓ9¸QÑ>ñ@àša¢ A˜g™ñ'�ô Ÿ*™* YÓ/×6Ñ6´r·x±xÓ@�ØœrŸ™¨y¸%ÈÔPÑQ�Ü—o‘o d°Ô5�Ø—‘˜wÔ'Ø/3¯~©~¸cÓ/BÑ,�˜) WØÐ$¨¨Ü&Ð';Ó<Ð<Ø! / :°¡>Ð2�Ü%)¨)£_´d¸;Ó6GØ%/°!¡^°Wð%>��LÑ!à*3�Ð&Ñ'Ø !��H‘Ø*3�Ð&Ò'à!%§¡°Ó!4‘�˜!™QàˆCØ×ÑØØ×ÑÐ7Ó8ØØð	 	ô 	ñ Ø×Ñ×$Ñ$ XÕ.à×Ñ×$Ñ$ T§\¡\£^Ô4Ø�‰ÕùôG $Ws   ÃLc                 ó  — | j                   j                  «       D ]i  \  }}}| j                  |«      \  }}|�.| j                  d«      }| j	                  ||j
                  «       nd }| j	                  ||j
                  |«       Œk y )NrE  )rç  r-  rŠ  rÎ  r»  ré   )rë   r•  rM   r5  rw  ÚadataÚsmaskObjects          r5   r.  zPdfFile.writeImagesù  sw   € Ø!Ÿ\™\×0Ñ0Ó2ò 	5‰MˆC��rØŸ,™, sÓ+‰KˆD�%ØÐ Ø"×0Ñ0°Ó9�Ø—‘˜u k§n¡nÕ5à"�Ø�N‰N˜4 §¡¨Õ4ñ	5r7   c                 ó¬  — | j                  ||d¬«      }t        |«      t        |«      t        |«      ||f}	| j                  j	                  |	«      }
|
€nt        dt        | j                  «      z  «      }| j                  dt        | j                  «      z  «      }|j                  |«      }||||g| j                  |	<   |S |
d   |k  r||
d<   |
d   }|S )z<Return name of a marker XObject representing the given path.Fr[  zM%dz	marker %dr‡  r   )	r]  r™   rË   ré  rS  rL   r*   rÎ  Úget_extents)rë   r8  r9  r4  r3  ÚlwÚ	joinstyleÚcapstyleÚpathopsÚkeyr1   rM   r5  rŒ  s                 r5   ÚmarkerObjectzPdfFile.markerObject  sØ   € ð ×%Ñ% d¨E¸EÐ%ÓBˆÜ�W‹~œt D›z¬4°«<¸ÀHÐMˆØ—‘×!Ñ! #Ó&ˆØˆ>Ü˜¤ D§L¡LÓ 1Ñ1Ó2ˆDØ×#Ñ# K´#°d·l±lÓ2CÑ$CÓDˆBØ×#Ñ# EÓ*ˆDØ!% r¨4°Ð 4ˆD�L‰L˜Ñð
 ˆð �b‰z˜BŠØ��r‘
Ø˜!‘9ˆDØˆr7   c           
      ób  — | j                   j                  «       D �]  \  \  }}}}}\  }}}}	|j                  |	dz  «      }| j                  |j                  d t        d«      t        d«      t        |j                  «      dœ«       | j                  t        j                  |   t        j                  «       | j                  t        j                  |   t        j                  «        | j                  |Ž  | j                  t        j                  ||«      «       | j!                  «        �Œ y )Né   r¿  rØ  rÙ  )ré  r_   Úpaddedr   ré   rL   rÖ   Úextentsr  r  r  r  rL  Ú	capstylesrM  r7  rÿ  )
rë   rÄ  r4  r3  rÂ  rÃ  rM   r5  rŒ  rÁ  s
             r5   r/  zPdfFile.writeMarkers   sò   € à&*§l¡l×&8Ñ&8Ó&:ó	ñ #Ñ9ˆg�t˜V Y°Ù!ˆd�B˜˜bð —;‘;˜r A™vÓ&ˆDØ×ÑØ—‘�tÜ˜i›´T¸&³\Ü˜dŸl™lÓ+ñ-ô.ð �K‰KÔ*×5Ñ5°iÑ@ÜŸ™ô(à�K‰KÔ*×4Ñ4°XÑ>ÄÇÁÔNØˆD�K‰K˜Ñ!Ø�K‰KœŸ™ d¨FÓ3Ô4Ø�N‰NÖñ'	r7   c                 ó  — t        dt        | j                  «      z  «      }| j                  dt        | j                  «      z  «      }| j                  j	                  |||||j                  «       |j                  «       |||f	«       |S )NzP%dzpath %d)rL   r*   rë  rÎ  r+   Úget_joinstyleÚget_capstyle)	rë   r±   r8  r9  r;  r<  r=  rM   r5  s	            r5   ÚpathCollectionObjectzPdfFile.pathCollectionObject6  sx   € Ü�EœC §
¡
›OÑ+Ó,ˆØ×Ñ 	¬C°·
±
«OÑ ;Ó<ˆØ�
‰
×ÑØ�4˜  B×$4Ñ$4Ó$6¸¿¹Ó8IØ�f˜gð'ô	(ð ˆr7   c           
      óô  — | j                   D �]h  \	  }}}}}}}}}	| j                  ||d¬«      }
|j                  |«      }t        j                  t        j
                  |j                  «      «      sg d¢}n&|j                  |«      }t        |j                  «      }| j                  |j                  d t        d«      t        d«      |dœ«       | j                  t        j                  |   t        j                   «       | j                  t        j"                  |   t        j$                  «        | j                  |
Ž  | j                  t        j'                  ||	«      «       | j)                  «        �Œk y )NFr[  ©r   r   r   r   r¿  rØ  rÙ  )rë  r]  rÀ  rÆ   r‘  rÈ   rÊ  rÉ  rÖ   r   ré   rL   r  r  r  r  rL  rË  rM  r7  rÿ  )rë   rM   r8  r9  r5  rÂ  rÃ  r;  r<  r=  rÄ  rŒ  rÊ  s                r5   r0  z$PdfFile.writePathCollectionTemplates>  s(  € àŸ™ó	ñ ˆT�4˜  I¨x¸À&ØØ×)Ñ)¨$°ÀÐ)ÓFˆGØ×#Ñ# EÓ*ˆDÜ—6‘6œ"Ÿ+™+ d§l¡lÓ3Ô4Ú&‘à—{‘{ 7Ó+�Ü˜tŸ|™|Ó,�Ø×ÑØ—‘�tÜ˜i›´T¸&³\Ø ñ"ô#ð �K‰KÔ*×5Ñ5°iÑ@ÜŸ™ô(à�K‰KÔ*×4Ñ4°XÑ>ÄÇÁÔNØˆD�K‰K˜Ñ!Ø�K‰KœŸ™ f¨gÓ6Ô7Ø�N‰NÖñ%	r7   c                 ó  — t        t        j                  | ||||dt        j                  j
                  t        j                  j
                  dt        j                  j
                  t        j                  j
                  gd«      «      gS )Nr  r7   T)	r  r#   r”  r  r@  r0  r?  r=  r9  )r8  r–  rW  r\  Úsketchs        r5   r]  zPdfFile.pathOperationsS  sg   € äœ×0Ñ0Ø�)˜T 8¨VØÜ�Y‰Y�_‰_œbŸi™iŸo™o¨s´B·J±J×4DÑ4DÜ�\‰\×Ñð!àóó ð ð 	r7   c                 ó´   — |r-dd| j                   dz  | j                  dz  f}|j                  }nd }d}| j                  |||||¬«      } | j                  |Ž  y )Nr�  rö  F)r\  rÓ  )r~   r   Úshould_simplifyr]  r  )rë   r8  r–  rW  rÓ  r\  Úcmdss          r5   Ú	writePathzPdfFile.writePath\  sg   € ÙØ˜˜dŸj™j¨2™o¨t¯{©{¸RÑ/?Ð@ˆDØ×+Ñ+‰HàˆDØˆHØ×"Ñ" 4¨°DÀ8Ø*0ð #ó 2ˆàˆ�‰�TÒr7   c                 ó~   — t        | j                  «      }| j                  j                  dd|g«       t	        |«      S )z£
        Reserve an ID for an indirect object.

        The name is used for debugging in case we forget to print out
        the object with writeObject.
        Nr   )rT  rÆ  rÇ  r+   ræ   )rë   rM   ré   s      r5   rÎ  zPdfFile.reserveObjectg  s6   € ô �$×"Ñ"Ó#ˆØ�‰×Ñ˜t Q¨˜oÔ.Ü˜‹}Ðr7   c                 ór   — | j                   j                  «       | j                  z
  | j                  |   d<   y ©Nr   )re  rl  rÊ  rÇ  rê   s     r5   rh  zPdfFile.recordXrefr  s(   € Ø $§¡§¡£°·±Ñ ?ˆ�‰�rÑ˜1Òr7   c                 ó^   — | j                  |j                  «       |j                  || «       y r?   )rh  ré   ró   )rë   Úobjectrô   s      r5   rs  zPdfFile.writeObjectu  s    € Ø�‰˜Ÿ	™	Ô"Ø�‰�X˜tÕ$r7   c                 óT  — | j                   j                  «       | j                  z
  | _        | j	                  dt        | j                  «      z  «       t        | j                  «      D ]=  \  }\  }}}|€t        d||fz  «      ‚|dk(  rdnd}d|||fz  }| j	                  |«       Œ? y)zWrite out the xref table.s
   xref
0 %d
NzNo offset for object %d (%s)r¦  r  r"  s   %010d %05d %b 
)	re  rl  rÊ  Ú	startxrefró   r*   rÇ  r)   ÚAssertionError)rë   r2   ÚoffsetÚ
generationrM   rÅ  r  s          r5   r2  zPdfFile.writeXrefy  s¨   € àŸ™Ÿ™›¨$¯.©.Ñ8ˆŒØ�
‰
�?¤S¨¯©Ó%8Ñ8Ô9Ü-6°t·~±~Ó-Fò 	!Ñ)ˆAÑ)�˜
 DØˆ~Ü$Ø2°a¸°YÑ>ó@ð @ð #Ð&7Ò7‘d¸T�Ø*¨f°jÀ#Ð-FÑF�Ø—
‘
˜4Õ ñ	!r7   c                 ó|   — | j                  d«      | _        | j                  | j                  | j                  «       y)z8Write out the info dictionary, checking it for good formrg   N)rÎ  Ú
infoObjectrs  rØ  rî   s    r5   r1  zPdfFile.writeInfoDict†  s.   € ð ×,Ñ,¨VÓ4ˆŒØ×Ñ˜Ÿ™¨$¯-©-Õ8r7   c                 óì   — | j                  d«       | j                  t        t        | j                  «      | j                  | j
                  dœ«      «       | j                  d| j                  z  «       y)zWrite out the PDF trailer.s   trailer
)ÚSizeÚRootÚInfos   
startxref
%d
%%%%EOF
N)ró   r¼   r*   rÇ  rÏ  rã  rÞ  rî   s    r5   r3  zPdfFile.writeTrailerŒ  sZ   € ð 	�
‰
�<Ô Ø�
‰
”7Ü˜Ÿ™Ó(Ø—_‘_Ø—_‘_ñ&ó'ô 	(ð
 	�
‰
Ð0°4·>±>ÑAÕBr7   r?   r{  )NNN©FN)r÷  )4rö   r÷   rø   rù   rì   r  r  r#  r>  r@  ró   r  r   rÿ  rH  r'  r\  ro  r(  rs  rq  r˜  r¿  r  ru  r7  rG  r)  r*  rR  r+  rg  r,  rƒ  rŠ  rš  r»  r.  rÆ  r/  rÏ  r0  Ústaticmethodr]  r×  rÎ  rh  rs  r2  r1  r3  Ú__classcell__©rò  s   @r5   r¤  r¤  •  s  ø„ Ùõg9òR"ò: .@ó -ò*ò òB	ò+òó?ò&ð
 04ô ò
8òò>ò<1ò*
ò8òt=ò~ðÐò*{@òz	ò2òh
òòò$$6òLò.*:òX
òò.,ó:=ò~5òò:ò,òð* òó ðó	ó	ò@ò%ò!ò9ö	Cr7   r¤  c                   óº   ‡ — e Zd Z ej                  d«      ZdZˆ fd„Zd„ Zdd„Z	d„ Z
dd„Zdd	„Zd
„ Z	 dd„Zd„ Zd„ Zdd„Zd„ Zddœd„Zd„ Zdd„Zd„ Zd„ Zˆ xZS )rQ  zfonts/pdfcorefontsrK  c                 ól   •— t         ‰| �  ||«       || _        | j                  «       | _        || _        y r?   )rÄ  rì   rõ   Únew_gcr±   Ú	image_dpi)rë   rõ   rï  r   r~   rò  s        €r5   rì   zRendererPdf.__init__�  s-   ø€ Ü‰Ñ˜ Ô'ØˆŒ	Ø—+‘+“-ˆŒØ"ˆ�r7   c                 óf   —  | j                   j                  | j                  j                  «       Ž  y r?   )rõ   r  r±   r>  rî   s    r5   r>  zRendererPdf.finalize£  s#   € Øˆ�	‰	×Ñ˜$Ÿ'™'×*Ñ*Ó,Ò-r7   Nc                 óè  — t        |dd«      }||_        t        |dd«      }|j                  «       €|j                  dd¬«       |j                  r|j
                  |j
                  f|_        n@|�t        |«      dk  r|j                  d	   d
f|_        n|j                  d	   |d	   f|_        | j                  j                  |«      }|r | j                  j                  |Ž  ||_        ||_        y )NÚ
_fillcolor©r�  r�  r�  Ú_effective_alphas©r�  r�  rÑ  T)ÚisRGBAr¡  rÝ   r�  )Úgetattrrò  Úget_rgbÚset_foregroundÚ_forced_alphaÚ_alpharô  r*   Ú_rgbr±   Údeltarõ   r  )rë   r±   Ú	fillcolorÚ	orig_fillÚorig_alphasrý  s         r5   Úcheck_gczRendererPdf.check_gc¦  sÞ   € Ü˜B ¨lÓ;ˆ	Ø!ˆŒä˜bÐ"5°zÓBˆà�:‰:‹<Ðð ×Ñ˜l°4ÐÔ8à×ÒØ$&§I¡I¨r¯y©yÐ#9ˆBÕ ØÐ¤# i£.°1Ò"4Ø$&§G¡G¨A¡J°Ð#4ˆBÕ à$&§G¡G¨A¡J°	¸!±Ð#=ˆBÔ à—‘—‘˜bÓ!ˆÙØˆD�I‰I×Ñ˜eÑ$ð "ˆŒØ*ˆÕr7   c                 ó    — | j                   dz  S )NrT  )rï  rî   s    r5   Úget_image_magnificationz#RendererPdf.get_image_magnificationÁ  s   € Ø�~‰~˜dÑ"Ð"r7   c                 óò  — |j                   d d \  }}|dk(  s|dk(  ry |€|j                  d«       | j                  |«       d|z  | j                  z  }d|z  | j                  z  }| j                  j                  |«      }|€^| j                  j                  t        j                  |dd|||t        j                  |t        j                  t        j                  «       y |j                  «       j                  «       \  }	}
}}}}| j                  j                  t        j                  dddd||t        j                  |	|
||||t        j                  |t        j                  t        j                  «       y )Nr€  r   r�  rT  r$   )ru  Ú	set_alphar  rï  rõ   rƒ  r  r  rO  rA  rB  rP  ÚfrozenÚ	to_values)rë   r±   rC   r}   rˆ  r–  Úhr  ÚimobÚtr1Útr2Útr3Útr4Útr5Útr6s                  r5   Ú
draw_imagezRendererPdf.draw_imageÄ  s8  € ð �x‰x˜˜ˆ|‰ˆˆ1Ø�Š6�Q˜!’VØàÐà�L‰L˜Ôà�‰�bÔà�1‰H�t—~‘~Ñ%ˆØ�1‰H�t—~‘~Ñ%ˆà�y‰y×$Ñ$ RÓ(ˆàÐØ�I‰I×ÑœRŸX™XØ  1 a¨¨A¬r×/?Ñ/?Ø!¤2§>¡>´2·;±;õ@ð ,5×+;Ñ+;Ó+=×+GÑ+GÓ+IÑ(ˆC��c˜3  Sà�I‰I×ÑœRŸX™XØ  1 a¨¨A¬r×/?Ñ/?Ø  # s¨C°°c¼2×;KÑ;KØ!¤2§>¡>´2·;±;õ@r7   c                 ó  — | j                  ||«       | j                  j                  |||d u xr |j                  «       d u |j	                  «       «       | j                  j                  | j                  j                  «       «       y r?   )r  rõ   r×  Úget_hatch_pathÚget_sketch_paramsr  r±   Úpaint)rë   r±   r8  r–  ÚrgbFaces        r5   Ú	draw_pathzRendererPdf.draw_pathâ  sk   € à�‰�b˜'Ô"Ø�	‰	×ÑØ�)Ø�tˆOÒ; × 1Ñ 1Ó 3°tÐ ;Ø× Ñ Ó"ô	$ð 	�	‰	×Ñ˜Ÿ™Ÿ™›Õ)r7   c                 ó  — d}t        j                  |«      }t        j                  |«      }t        |«      sd}|j                  «        }n-t        j                  |d d …df   |d   k(  «      r	|d   dk7  }nd}t        |«      sd}n[t        j                  t        j                  |	«      dk(  «      rd}n-t        j                  |d d …df   |d   k(  «      r	|d   dk7  }nd}t        |«      dkD  rt        |d   j
                  «      nd}| j                  |||||«      }||z   dz   ||z  k  }|r|s"t        j                  | |||||||||	|
|||«      S t        j                  |	«      }g }t        | j                  |||«      «      D ]9  \  }\  }}| j                  j                  ||||«      }|j                  |«       Œ; | j                  j                  } || j                   j#                  «       Ž  d\  }}| j%                  |||||||	|
|||«      D ]T  \  }}}} }!| j'                  | |!«       ||z
  ||z
  }#}" |d	ddd	|"|#t(        j*                  |t(        j,                  «	       ||}}ŒV  || j                   j/                  «       Ž  y )
NTFrÝ   )r   rÝ   r�  r   rÈ  r)  r$   )rÆ   Úasarrayr*   Ú	get_hatchr‘  r�   Ú_iter_collection_uses_per_pathr   Údraw_path_collectionr˜   r)   Ú_iter_collection_raw_pathsrõ   rÏ  r+   r  r±   ÚpushÚ_iter_collectionr  r  rA  rB  Úpop)$rë   r±   Úmaster_transformrë  Úall_transformsÚoffsetsÚoffset_transÚ
facecolorsÚ
edgecolorsÚ
linewidthsÚ
linestylesÚantialiasedsÚurlsÚoffset_positionÚcan_do_optimizationr<  r=  Úlen_pathÚuses_per_pathÚshould_do_optimizationr;  Ú
path_codesr2   r8  r–  rM   r  ÚlastxÚlastyÚxoÚyoÚpath_idÚgc0r  ÚdxÚdys$                                       r5   r  z RendererPdf.draw_path_collectionë  s¯  € ð #ÐÜ—Z‘Z 
Ó+ˆ
Ü—Z‘Z 
Ó+ˆ
ä�:ŒØˆFØ&(§l¡l£nÐ"4Ñä�v‰v�j¢ A Ñ&¨*°TÑ*:Ñ:Ô;Ø# DÑ)¨SÑ0‘à&+Ð#ä�:ŒØ‰Gä�v‰v”b—j‘j Ó,°Ñ3Ô4Ø‘Ü—‘˜
¢1 a 4Ñ(¨J°tÑ,<Ñ<Ô=Ø$ TÑ*¨cÑ1‘à&+Ð#ô .1°«Z¸!ª^”3�u˜Q‘x×(Ñ(Ô)ÀˆØ×;Ñ;Ø�> 7¨J¸
óDˆð �}Ñ$ qÑ(¨8°mÑ+CÑCð 	ñ $Ñ-CÜ×4Ñ4Ø�bÐ*¨E°>Ø˜ z°:Ø˜J¨°dØó	!ð !ô —&‘&˜Ó$ˆØˆ
Ü$-¨d×.MÑ.MØ  %¨ó/9ó %:ò 	$Ñ ˆAÑ ��ià—9‘9×1Ñ1Ø�D˜) W¨f°gó?ˆDà×Ñ˜dÕ#ð		$ð —‘×!Ñ!ˆÙ�—‘—‘“ÑØ‰ˆˆuØ-1×-BÑ-BØ�J ¨Ø˜J¨
°JØ˜d Oó.5ò 		"Ñ)ˆB��G˜S 'ð
 �M‰M˜#˜wÔ'Ø˜%‘Z  e¡�ˆBÙ�1�a˜˜A˜r 2¤r×'7Ñ'7¸Ü—>‘>ô#à˜r�5‰Eð		"ñ 	�—‘—‘“Òr7   c                 óæ  — t        |«      }t        |«      }||z  ||z   dz   k  rt        j                  | ||||||«       y | j                  ||«       |j	                  |«      }	|j                  «       }
| j                  j                  }| j                  j                  |||	|
| j                  j                  |j                  «       |j                  «       «      } |t        j                  «       d\  }}|j                  |dd| j                  j                   dz  | j                  j"                  dz  fd¬«      D ]�  \  }}t        |«      sŒ|dd  \  }}d|cxk  r| j                  j                   dz  k  r'n n$d|cxk  r| j                  j"                  dz  k  sn Œd||z
  ||z
  }} |dddd||t        j$                  |t        j&                  «	       ||}}ŒŸ  |t        j(                  «       y )	NrÈ  r)  r   rö  F)rW  r\  r×  r$   )r*   r   Údraw_markersr  r4  r3  rõ   r  rÆ  r±   Ú
_linewidthrÍ  rÎ  r  rO  Úiter_segmentsr~   r   rA  rB  rP  )rë   r±   Úmarker_pathÚmarker_transr8  r9  r  Úlen_marker_pathÚusesr4  r3  r  Úmarkerr0  r1  r�   ÚcoderC   r}   r6  r7  s                        r5   r9  zRendererPdf.draw_markers1  sÈ  € ô
 ˜kÓ*ˆÜ�4‹yˆØ˜TÑ! O°dÑ$:¸QÑ$>Ò>Ü×%Ñ% d¨B°¸\Ø&*¨E°7ô<àà�‰�b˜'Ô"Ø�w‰w�wÓˆØ—‘“ˆà—‘×!Ñ!ˆØ—‘×'Ñ'Ø˜ t¨V°T·W±W×5GÑ5GØ×ÑÓ §¡Ó 1ó3ˆñ 	Œr�x‰xÔØ‰ˆˆuØ"×0Ñ0ØØ˜˜DŸI™IŸO™O¨BÑ.°·	±	×0@Ñ0@ÀÑ0CÐDØð 1ó  ò 	$‰NˆH�dô �8�}Ø  �}‘��1Ø˜QÔ6 $§)¡)§/¡/°BÑ"6Õ6Ø Ô; d§i¡i×&6Ñ&6¸Ñ&;Ô;ØØ˜U™ A¨¡I�B�Ù�q˜!˜Q  2 r¬2×+;Ñ+;ØœrŸ~™~ô/à  !�u‘ð	$ñ 	Œr�{‰{Õr7   c                 óh   — | j                  ||j                  d«      |j                  d«      |«       y )N)r$   rÝ   r€  )r$   rÝ   r¡  )Údraw_gouraud_trianglesrv  )rë   r±   re  rf  r9  s        r5   Údraw_gouraud_trianglez!RendererPdf.draw_gouraud_triangleW  s,   € Ø×#Ñ# B¨¯©°yÓ(AØ$*§N¡N°9Ó$=¸uõ	Fr7   c                 ó´  — t        |«      t        |«      k(  sJ ‚t        |«      dk(  ry |j                  dk(  sJ ‚|j                  d   dk(  sJ ‚|j                  d   dk(  sJ ‚|j                  dk(  sJ ‚|j                  d   dk(  sJ ‚|j                  d   dv sJ ‚|j                  }|j                  |d   |d   z  df«      }|j	                  |«      }|j                  |«      }| j
                  j                  ||«      \  }}| j
                  j                  }	|j                  d   dk(  r:|j                  d«       | j                  |«        |	|t        j                  «       y |d   }
t        j                  |
|d d …d d …df   «      r:|j                  |
«       | j                  |«        |	|t        j                  «       y |d d …d d …df   d d …d d …d f   }
| j
                  j                  ||
«      \  }}| j
                  j                  |«      } |	t        j                  |t        j                   |t        j                  t        j"                  «       y )Nr   rÝ   r$   r€  ri  r�  )r   r   rÝ   )r*   r‡  ru  rv  r–  rõ   rg  r  r  r  r  rX  rÆ   ÚallcloserG  rO  rN  rP  )rë   r±   re  rf  r9  ru  ÚtpointsrM   r´  r  r5  Úsmask_obÚgstates                r5   rC  z"RendererPdf.draw_gouraud_triangles[  s  € Ü�6‹{œc &›kÒ)Ð)Ð)Üˆv‹;˜!ÒØØ�{‰{˜aÒÐÐØ�|‰|˜A‰ !Ò#Ð#Ð#Ø�|‰|˜A‰ !Ò#Ð#Ð#Ø�{‰{˜aÒÐÐØ�|‰|˜A‰ !Ò#Ð#Ð#Ø�|‰|˜A‰ &Ñ(Ð(Ð(à—‘ˆØ—‘  q¡¨E°!©HÑ!4°aÐ 8Ó9ˆØ—/‘/ &Ó)ˆØ—/‘/ %Ó(ˆØ—)‘)×/Ñ/°¸Ó@‰ˆˆaØ—‘×!Ñ!ˆà�<‰<˜‰?˜aÒà�L‰L˜ÔØ�M‰M˜"ÔÙ�4œŸ™Ô$Øà�w‘ˆÜ�;‰;�u˜f¢Qª¨1 W™oÔ.à�L‰L˜ÔØ�M‰M˜"ÔÙ�4œŸ™Õ$ð š1ša ˜7‘O¢A¢q¨$ JÑ/ˆEØŸ)™)×7Ñ7¸ÀÓG‰KˆAˆxØ—Y‘Y×/Ñ/°Ó9ˆFÙ”2—8‘8˜V¤R§\¡\ØœŸ™Ü—;‘;õ r7   c           	      óü  — ||cxk(  rdk(  r5n n2| j                   j                  ||z
  ||z
  t        j                  «       y t	        j
                  |«      }| j                   j                  t	        j                  |«      t	        j                  |«      t	        j                  |«       t	        j                  |«      ||t        j                  «       | j                   j                  ddt        j                  «       y rÚ  )	rõ   r  r  rQ  ry   rz   r|   r{   rS  )rë   rC   r}   r€   ÚoldxÚoldyÚoldangles          r5   Ú_setup_textposzRendererPdf._setup_textposƒ  s¤   € Ø�HÔ! Õ!Ø�I‰I×Ñ˜Q ™X q¨4¡x´·±Õ<ä—L‘L Ó'ˆEØ�I‰I×ÑœTŸX™X e›_¬d¯h©h°u«oÜ"Ÿh™h u›oÐ-¬t¯x©x¸«Ø ¤2§=¡=ô2ð �I‰I×Ñ˜Q ¤2§:¡:Õ.r7   c                 ó  — | j                   j                  j                  |d|«      \  }}}	}
}|j                  «       �9| j                  j
                  d   d   j                  t        ||||||«      «       t        j                  d   }t        j                  |«      }| j                  j                  t        j                  «       | j                  j                  t        j                  |«      t        j                   |«      t        j                   |«       t        j                  |«      ||t        j"                  «       | j%                  ||j&                  «       d}d\  }}g }| j                  j                  t        j(                  «       |
D �]	  \  }}}}}| j                  j*                  j-                  ||«       |j.                  }t1        ||«      s|j                  |||||f«       Œ_| j3                  ||d||«       ||}}||f|k7  rH| j                  j                  | j                  j5                  |«      |t        j6                  «       ||f}| j                  j                  | j9                  t;        |«      |«      t        j<                  «       �Œ | j                  j                  t        j>                  «       |D ],  \  }}}}}| jA                  |||jC                  |«      ||«       Œ. |D ]a  \  }}}}| j                  j                  t        j                  ||||t        jD                  t        jF                  t        jH                  «       Œc | j                  j                  t        jH                  «       y )Nrö  r‡  r$   rÁ  r{  r)  r   )%Ú
_text2pathÚmathtext_parserÚparser°   rõ   rì  r+   rµ   r]   ri  ry   rz   r  r  rO  r|   r{   rA  r  rü  r;  rÞ  Útrack_glyphrZ  rä   rN  r\  rR  Úencode_stringrù  rT  r<  Ú_draw_xobject_glyphrá  r>  r4  rP  )rë   r±   rC   r}   r3   r—  r€   r~   r   ÚdescentÚglyphsÚrectsrâ   rƒ   Ú	prev_fontrK  rL  Úunsupported_charsr˜  ÚfontsizeÚnumÚoxÚoyr�  s                           r5   Údraw_mathtextzRendererPdf.draw_mathtext�  sã  € ð �O‰O×+Ñ+×1Ñ1°!°R¸Ó>ñ 	.ˆˆv�w ¨ð �:‰:‹<Ð#Ø�I‰I×"Ñ" 2Ñ& qÑ)×0Ñ0Ô1EØ�A�q˜% ¨ó20ô 1ô —<‘< Ñ/ˆô �L‰L˜ÓˆØ�	‰	×ÑœŸ™Ô"Ø�	‰	×ÑœŸ™ !›¤d§h¡h¨q£kÜŸ(™( 1›+˜¤t§x¡x°£{Ø˜Aœr×/Ñ/ô	1ð 	�‰�b˜"Ÿ'™'Ô"Øˆ	Ø‰
ˆˆdØÐà�	‰	×ÑœŸ™Ô'Ø+1ó 	*Ñ'ˆD�(˜C  RØ�I‰I×(Ñ(×4Ñ4°T¸3Ô?Ø—z‘zˆHÜ'¨°#Ô6ð "×(Ñ(¨$°¸"¸bÀ#Ð)FÕGà×#Ñ# B¨¨A¨t°TÔ:Ø �d�Ø˜hÐ'¨9Ò4Ø—I‘I×$Ñ$ T§Y¡Y×%7Ñ%7¸Ó%AÀ8Ü%'§]¡]ô4à (¨(Ð 2�IØ—	‘	× Ñ  ×!3Ñ!3´C¸³H¸hÓ!GÜ!#§¡ö*ð	*ð  	�	‰	×ÑœŸ™Ô%à+<ò 	BÑ'ˆD�(˜B  CØ×$Ñ$Ø�h × 3Ñ 3°CÓ 8¸"¸bõBð	Bð
 &+ò 	AÑ!ˆB��E˜6Ø�I‰I×ÑœRŸX™X r¨2¨u°fÜŸ\™\¬2¯7©7´B·K±KõAð	Að
 	�	‰	×ÑœŸ™Õ%r7   )Úmtextc          
      óÎ  — | j                  «       }|j                  «       }	|j                  ||	«      }
t        j                  |
d«      5 }|\  }d d d «       |j                  «       �M| j                  j                  d   d   j                  t        |||j                  |j                  |«      «       d g }}j                  D ]V  \  }}}}}||k7  r0| j                  j                  |«      }|d||j                  ggz  }|}|d||t        |g«      g||z   ggz  }ŒX d\  }}}	|t!        |«      dz
  k  r¿|||dz    \  }}|d   dk(  r|d   }	n�|d   |d   cxk(  rdk(  r~n n{|d   |d   k(  rp|d	   |d   z
  }t#        |«      d
k  r-|d   dxx   |d   d   z  cc<   |d	xx   |d	   |d   z
  z  cc<   n#|dxx   |dz  |	z  |d   d   gz  cc<   |d	   |d	<   ||dz   = Œ¹|dz  }|t!        |«      dz
  k  rŒ¿t%        «       j'                  |«      j)                  ||«      }| j+                  ||j,                  «       | j                  j/                  t0        j2                  «       d\  }}}}|D ]ê  }|d   dk(  r2| j                  j/                  |d   |d   t0        j4                  «       Œ=|d   dk(  r¥|j7                  |d   |d   f«      \  }}| j9                  |||||«       ||}}t!        |d   «      dk(  r1| j                  j/                  |d   d   t0        j:                  «       Œ¼| j                  j/                  |d   t0        j<                  «       ŒêJ ‚ | j                  j/                  t0        j>                  «       | jA                  «       }|jC                  |«       |jE                  d«       tF        jH                  tF        jJ                  tF        jJ                  tF        jJ                  tF        jL                  g}|jN                  D ]L  \  }}} }!tG        ||g||!z   |g||!z   || z   g||| z   gddgg|«      }"| jQ                  ||"||j,                  «       ŒN y # 1 sw Y   �ŒxY w)Nrö  r‡  r$   r˜  r  )r   r   Nr€  r   r¡  gš™™™™™¹?rÝ   g     @�@rÑ  ))Úget_texmanagerÚget_size_in_pointsÚmake_dvir   ÚDvir°   rõ   rì  r+   rµ   r~   r   r  ro  ÚsizerÑ   r*   Úabsr   Ú
rotate_degrÓ   r  rü  r  r  r;  rR  r–  rN  rT  rU  r<  rî  Úcopy_propertiesÚset_linewidthr!   ÚMOVETOÚLINETOÚ	CLOSEPOLYÚboxesr  )#rë   r±   rC   r}   r3   r—  r€   r`  Ú
texmanagerr[  ÚdvifileÚdvirü  ÚoldfontÚseqÚx1Úy1r^  rã   r~   r_  r2   ÚcurxÚeltÚnxtrà  ÚmytransÚcuryrK  rL  ÚboxgcrÄ  r  r  r8  s#                                      r5   Údraw_texzRendererPdf.draw_texÃ  sS  € à×(Ñ(Ó*ˆ
Ø×*Ñ*Ó,ˆØ×%Ñ% a¨Ó2ˆÜ�[‰[˜ "Ó%ð 	¨Ø‰EˆD÷	ð �:‰:‹<Ð#Ø�I‰I×"Ñ" 2Ñ& qÑ)×0Ñ0Ô1EØ�A�q˜$Ÿ*™* d§k¡k°5ó2:ô ;ð ˜R�ˆØ-1¯Y©Yò 	BÑ)ˆB��G˜U EØ˜'Ò!ØŸ)™)×/Ñ/°Ó8�Ø˜ ¨'¯,©,Ð7Ð8Ñ8�Ø!�Ø�V˜R ¤e¨U¨G£nÐ%5°r¸%±xÐ@ÐAÑA‰Cð	Bð 'Ñˆˆ4�Ø”#�c“(˜1‘*ŠnØ˜1˜Q˜q™S�z‰HˆC�Ø�1‰v˜ÒØ˜q™6‘Ø�Q‘˜3˜q™6Ô+ VÕ+°°A±¸#¸a¹&Ò0@Ø˜Q™ # a¡&™�Ü�v“; Ò$Ø˜‘F˜2“J # a¡&¨¡)Ñ+“JØ˜“F˜c !™f S¨¡V™mÑ+”Fà˜“F˜v f™}¨XÑ5°s¸1±v¸a±yÐAÑA“FØ  ™V�C˜‘FØ˜˜!™�HØØ�‰FˆAð ”#�c“(˜1‘*‹nô" “*×'Ñ'¨Ó.×8Ñ8¸¸AÓ>ˆð 	�‰�b˜"Ÿ'™'Ô"Ø�	‰	×ÑœŸ™Ô'Ø!+Ñˆˆd�D˜$Øò 	ˆCØ�1‰v˜ÒØ—	‘	× Ñ   Q¡¨¨Q©´·±Õ?Ø�Q‘˜6Ò!Ø$×.Ñ.°°A±¸¸A¹Ð/?Ó@‘
��dØ×#Ñ# D¨$°°t¸TÔBØ! 4�d�Ü�s˜1‘v“; !Ò#Ø—I‘I×$Ñ$ S¨¡V¨A¡Y´·±Õ8à—I‘I×$Ñ$ S¨¡V¬R¯[©[Õ9à�uð	ð 	�	‰	×ÑœŸ™Ô%ð —‘“ˆØ×Ñ˜bÔ!Ø×Ñ˜AÔÜ—;‘;¤§¡¬T¯[©[¼$¿+¹+Ü—>‘>ð#ˆà ŸJ™Jò 	:‰LˆB��A�qÜ˜"˜b˜ B q¡D¨" :°°1±°b¸±d¨|¸bÀ"ÀQÁ$¸ZØ˜Q˜ð!Ø")ó+ˆDà�N‰N˜5 $¨°·±Õ9ñ	:÷S	ñ 	ús   Á	QÑQ$c                 óR   — |dv r|j                  dd«      S |j                  dd«      S )Nrœ  rÎ  r[   r	  )rÎ   )rë   r3   râ   s      r5   rT  zRendererPdf.encode_string	  s,   € Ø�vÑØ—8‘8˜H iÓ0Ð0Ø�x‰x˜
 IÓ.Ð.r7   c	                 óœ
  — | j                  ||j                  «       |r| j                  ||||||«      S |j                  «       }	t        j
                  d   r| j                  |«      }
d}nJ| j                  |«      }
| j                  j                  j                  |
|«       t        j
                  d   }|j                  «       �c|
j                  |«       |
j                  «       \  }}| j                  j                  d   d   j                  t!        ||||dz  |dz  |«      «       |dvr°| j                  j#                  t$        j&                  | j                  j)                  |«      |	t$        j*                  «       | j-                  |||«       | j                  j#                  | j/                  ||«      t$        j0                  t$        j2                  «       y g }g }d}|
}t5        j6                  ||
t8        ¬«      D ]ë  }t;        |t=        |j>                  «      «      r–|s|j@                  |k7  r4|j                  |j@                  |jB                  g f«       |j@                  }|jD                  r!|d   d	   j                  |jD                  «       |d   d	   j                  |j>                  «       d
}Œ¸|j                  |j@                  |jB                  |jF                  f«       d}Œí | j                  j#                  t$        jH                  «       tK        jL                  |«      }| j                  j#                  tK        jN                  |«      tK        jP                  |«      tK        jP                  |«       tK        jN                  |«      ||t$        jR                  «       | j                  j#                  t$        j&                  «       d}|D ]ü  \  }}}| j                  j)                  |jT                  «      }| j                  j#                  ||	t$        j*                  «       | j-                  |dd|dd«       | j                  j#                  tW        jX                  |tZ        «      D ��cg c]@  \  }}|t\        k(  rdt_        |«      z  |	z  n | j/                  dja                  |«      |«      ‘ŒB c}}t$        jb                  «       |}Œþ | j                  j#                  t$        j2                  «       |D ]  \  }}}| je                  ||	||d«       Œ | j                  j#                  t$        jf                  «       y c c}}w )NrK  r$   rÁ  r‡  r  )rÝ   rß   T)Ú	kern_moder€  Fr   iüÿÿr÷  )4r  rü  r_  rc  r]   ri  Ú_get_font_afmÚ_get_font_ttfrõ   rÞ  Útrackr°   Úset_textÚget_width_heightrì  r+   rµ   r  r  r;  r\  rR  rN  rT  rT  r<  r
   Úlayoutr   rä   r  ÚcharÚ	ft_objectrC   Ú	prev_kernÚ	glyph_idxrO  ry   rz   r|   r{   rA  rZ  rš   ÚgroupbyrÙ   rÅ   rT  r,   rU  rU  rP  )rë   r±   rC   r}   r3   r—  r€   Úismathr`  r[  r˜  râ   r~   r   Úsinglebyte_chunksÚmultibyte_glyphsÚprev_was_multibyterY  Úitemrƒ   Úprev_start_xr‡  Ústart_xÚkerns_or_charsÚft_nameÚtpÚgroupr‰  s                               r5   Ú	draw_textzRendererPdf.draw_text	  sE  € ð
 	�‰�b˜"Ÿ'™'Ô"ÙØ×%Ñ% b¨!¨Q°°4¸Ó?Ð?à×*Ñ*Ó,ˆä�<‰<Ð,Ò-Ø×%Ñ% dÓ+ˆDØ‰Hà×%Ñ% dÓ+ˆDØ�I‰I×(Ñ(×.Ñ.¨t°QÔ7Ü—|‘| NÑ3ˆHà�:‰:‹<Ð#Ø�M‰M˜!ÔØ ×1Ñ1Ó3‰MˆE�6Ø�I‰I×"Ñ" 2Ñ& qÑ)×0Ñ0Ô1EØ�A�q˜% "™* f¨r¡k°5ó2:ô ;ð
 ˜7Ñ"Ø�I‰I×ÑœRŸ]™]Ø!ŸY™Y×/Ñ/°Ó5°xÄÇÁôPà×Ñ  1 eÔ,Ø�I‰I×Ñ˜T×/Ñ/°°8Ó<ÜŸW™W¤b§k¡kõ3ð$ !#Ðà!ÐØ!%ÐØˆIÜ%×,Ñ,Ø�tÔ'7ô9ò .�ä'¨´#°d·i±i³.ÔAÙ)¨T¯^©^¸yÒ-HØ)×0Ñ0°$·.±.À$Ç&Á&È"Ð1MÔNØ$(§N¡N˜	Ø—~’~Ø)¨"Ñ-¨aÑ0×7Ñ7¸¿¹ÔGØ% bÑ)¨!Ñ,×3Ñ3°D·I±IÔ>Ø).Ñ&à$×+Ñ+ØŸ™¨¯©°·±Ð@ôð *.Ñ&ð.ð" �I‰I×ÑœRŸX™XÔ&Ü—‘˜UÓ#ˆAØ�I‰I×ÑœTŸX™X a›[¬$¯(©(°1«+Ü"Ÿh™h q›k˜\¬4¯8©8°A«;Ø ¤2×#3Ñ#3ô5ð
 �I‰I×ÑœRŸ]™]Ô+ØˆLØ6Gò 'Ñ2�	˜7 NØŸ)™)×,Ñ,¨Y¯_©_Ó=�Ø—	‘	× Ñ  ¨(´B·M±MÔBØ×#Ñ# G¨Q°°<ÀÀAÔFØ—	‘	× Ñ ô
 '0×&7Ñ&7¸ÌÓ&M÷Oá"˜˜Uð 8:¼U²{�UœT %›[Ñ(¨8Ò3Ø×,Ñ,¨R¯W©W°U«^¸XÓFñGó Oô —K‘Kô!ð  '‘ð'ð �I‰I×ÑœRŸ[™[Ô)à1Aò Ñ-�	˜7 IØ×(Ñ(Ø˜x¨°G¸Qõðð �I‰I×ÑœRŸ[™[Õ)ùóOs   Ñ5AUc                 óJ  — |j                  |«      }| j                  j                  |j                  |«      }| j                  j	                  t
        j                  d|z  ddd|z  ||t
        j                  t        |«      t
        j                  t
        j                  «       y)z<Draw a multibyte character from a Type 3 font as an XObject.rË  r   N)r•  rõ   r¿  rZ  r  r  rO  rA  rL   rB  rP  )rë   r˜  r[  r‰  rC   r}   r¾  rM   s           r5   rU  zRendererPdf._draw_xobject_glyph	  sx   € à×(Ñ(¨Ó3ˆ
Ø�y‰y×0Ñ0°·±¸ZÓHˆØ�	‰	×ÑÜ�H‰HØ�HÑ˜a  E¨HÑ$4°a¸¼B×<LÑ<LÜ�‹JœŸ™Ü�K‰Kõ		
r7   c                 ó,   — t        | j                  «      S r?   )r  rõ   rî   s    r5   rî  zRendererPdf.new_gcŠ	  s   € ä! $§)¡)Ó,Ð,r7   r?   r§   rè  )rö   r÷   rø   r   Ú_get_data_pathrR  Ú_use_afm_rc_namerì   r>  r  r  r  r  r  r9  rD  rC  rN  r_  r|  rT  r–  rU  rî  rê  rë  s   @r5   rQ  rQ  ˜  s†   ø„ à(�E×(Ñ(Ð)=Ó>€MØ+Ðô#ò.ó+ò6#ó@ó<*òDðN "ó$òLFò& óP/ò4&ðl ;?ô Q:òf/ó
b*òH	
ö-r7   rQ  c            
       óà   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zdddd	œZdddd
œZ	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdefdefde
fdefdefdefdefdefdeff	Zd„ Zˆ fd „Zd!„ Zˆ xZS )"r  c                 óZ   •— t         ‰| �  «        d| _        d| _        || _        d | _        y )Nró  rõ  )rÄ  rì   rò  rô  rõ   Úparent)rë   rõ   rò  s     €r5   rì   zGraphicsContextPdf.__init__‘	  s+   ø€ Ü‰ÑÔØ)ˆŒØ!+ˆÔØˆŒ	Øˆ�r7   c                 óN   — t        | j                  «      }|d= |d= t        |«      S )Nrõ   r�  )rÕ   r‘  Úrepr)rë   rt   s     r5   rï   zGraphicsContextPdf.__repr__˜	  s'   € Ü�—‘ÓˆØˆfˆIØˆhˆKÜ�A‹wˆr7   c                 óž   — | j                   dkD  xr= | j                  dkD  xr, t        | j                  «      dk  xs | j                  d   dk7  S )zÕ
        Predicate: does the path need to be stroked (its outline drawn)?
        This tests for the various conditions that disable stroking
        the path, in which case it would presumably be filled.
        r   rÝ   r�  )r:  rû  r*   rü  rî   s    r5   r3  zGraphicsContextPdf.strokež	  sK   € ð —‘ !Ñ#ò =¨¯©°a©ò =Ü�T—Y‘Y“ 1Ñ$Ò;¨¯	©	°!©¸Ñ(;ð	>r7   c                 ó”   — t        |«      r|d   }n| j                  }| j                  xs |duxr t        |«      dk  xs |d   dk7  S )z¼
        Predicate: does the path need to be filled?

        An optional argument can be used to specify an alternative
        _fillcolor, as needed by RendererPdf.draw_markers.
        r   NrÝ   r�  )r*   rò  Ú_hatch)rë   Úargsrò  s      r5   r4  zGraphicsContextPdf.fill©	  sX   € ô ˆtŒ9Ø˜a™‰JàŸ™ˆJØ—‘ò AØ 4Ð'ò @Ü�j“/ QÑ&Ò>¨*°Q©-¸3Ñ*>ð	Br7   c                 óf   — t         j                  | j                  «       | j                  «       «      S )zo
        Return the appropriate pdf operator to cause the path to be
        stroked, filled, or both.
        )r  r7  r4  r3  rî   s    r5   r  zGraphicsContextPdf.paint¸	  s!   € ô
 �}‰}˜TŸY™Y›[¨$¯+©+«-Ó8Ð8r7   r   r$   r€  )Úbuttrþ  Ú
projecting)Úmiterrþ  Úbevelc                 ó@   — | j                   |   t        j                  gS r?   )rË  r  rM  ©rë   Ústyles     r5   Úcapstyle_cmdzGraphicsContextPdf.capstyle_cmdÂ	  s   € Ø—‘˜uÑ%¤r§}¡}Ð5Ð5r7   c                 ó@   — | j                   |   t        j                  gS r?   )r  r  rL  rª  s     r5   Újoinstyle_cmdz GraphicsContextPdf.joinstyle_cmdÅ	  s   € Ø—‘ Ñ&¬¯©Ð7Ð7r7   c                 ó&   — |t         j                  gS r?   )r  rV  )rë   r~   s     r5   Úlinewidth_cmdz GraphicsContextPdf.linewidth_cmdÈ	  s   € Ø”r—‘Ð'Ð'r7   c                 óP   — |\  }}|€g }d}t        |«      |t        j                  gS rÚ  )rÖ   r  rK  )rë   Údashesrà  Údashs       r5   Údash_cmdzGraphicsContextPdf.dash_cmdË	  s/   € Ø‰ˆ�Øˆ<ØˆDØˆFÜ�T“
˜F¤B§J¡JÐ/Ð/r7   c                 ó\   — | j                   j                  |«      }|t        j                  gS r?   )rõ   r7  r  rN  )rë   r5  ÚforcedÚeffective_alphasrM   s        r5   Ú	alpha_cmdzGraphicsContextPdf.alpha_cmdÒ	  s&   € Ø�y‰y×#Ñ#Ð$4Ó5ˆØ”b—l‘lÐ#Ð#r7   c                 ó4  — |sB| j                   �| j                  | j                   «      S t        d«      t        j                  gS || j                   |f}| j
                  j                  |«      }t        d«      t        j                  |t        j                  gS )Nrý  rÁ  )rò  Úfillcolor_cmdrL   r  rH  rõ   rR  rJ  )rë   rP  Úhatch_colorrM  rM   s        r5   Ú	hatch_cmdzGraphicsContextPdf.hatch_cmdÖ	  s‚   € ÙØ�‰Ð*Ø×)Ñ)¨$¯/©/Ó:Ð:ä˜[Ó)¬2×+EÑ+EÐFÐFà&¨¯©¸Ð?ˆKØ—9‘9×)Ñ)¨+Ó6ˆDÜ˜“O¤R×%?Ñ%?Øœ"×/Ñ/ð1ð 1r7   c                 ó²   — t         j                  d   rg S |d   |d   cxk(  r|d   k(  rn n|d   t        j                  gS g |d d ¢t        j                  ‘S ©Nzpdf.inheritcolorr   r$   r€  rÝ   )r]   ri  r  rC  rE  ©rë   r‰  s     r5   Úrgb_cmdzGraphicsContextPdf.rgb_cmdâ	  s^   € Ü�<‰<Ð*Ò+ØˆIØˆq‰6�S˜‘VÔ%˜s 1™vÕ%Ø˜‘FœB×-Ñ-Ð.Ð.à/�S˜˜!�WÐ/œb×.Ñ.Ð/Ð/r7   c                 ó¶   — |�t         j                  d   rg S |d   |d   cxk(  r|d   k(  rn n|d   t        j                  gS g |d d ¢t        j                  ‘S r¾  )r]   ri  r  rD  rF  r¿  s     r5   rº  z GraphicsContextPdf.fillcolor_cmdê	  sb   € Øˆ;œ#Ÿ,™,Ð'9Ò:ØˆIØ�‰V�s˜1‘vÔ'  Q¡Õ'Ø˜‘FœB×0Ñ0Ð1Ð1à2�S˜˜!�WÐ2œb×1Ñ1Ð2Ð2r7   c                 ó    — t        | j                  «      }|j                  | «       | j                  |_        || _        t        j
                  gS r?   )r  rõ   ri  r�  r  rO  )rë   r�  s     r5   r  zGraphicsContextPdf.pushò	  s<   € Ü# D§I¡IÓ.ˆØ×Ñ˜tÔ$ØŸ™ˆŒØˆŒÜ—‘ˆzÐr7   c                 ó¬   — | j                   €J ‚| j                  | j                   «       | j                   j                   | _         t        j                  gS r?   )r�  ri  r  rP  rî   s    r5   r  zGraphicsContextPdf.popù	  sA   € Ø�{‰{Ð&Ð&Ð&Ø×Ñ˜TŸ[™[Ô)Ø—k‘k×(Ñ(ˆŒÜ—‘ˆ}Ðr7   c                 óî  — g }| j                   | j                  f||fk7  rU| j                  �I|j                  | j	                  «       «       | j                   | j                  f||fk7  r| j                  �ŒI| j                   | j                  f||fk7  s| j                  €×|j                  | j                  «       «       | j                   |k7  r?|j                  |t        j                  t        j                  t        j                  g«       | j                  |k7  r[|j                  «       \  }}|j                  t        j                  ||d¬«      t        j                  t        j                  gz   «       |S )z1Set clip rectangle. Calls `.pop()` and `.push()`.Fr[  )Ú	_cliprectÚ	_clippathr�  rŽ  r  r  r  r>  rW  r5  Úget_transformed_path_and_affiner¤  r]  )rë   ÚcliprectÚclippathrÖ  r8  Úaffines         r5   Úclip_cmdzGraphicsContextPdf.clip_cmdÿ	  s#  € àˆà—‘ §¡Ð/°H¸hÐ3GÒGØ—K‘KÐ+Ø�K‰K˜Ÿ™›
Ô#ð —‘ §¡Ð/°H¸hÐ3GÒGØ—K‘KÑ+ð �^‰^˜TŸ^™^Ð,°¸8Ð0DÒDØ—‘Ð#Ø�K‰K˜Ÿ	™	›Ô$Ø�~‰~ Ò)Ø—‘˜X¤r§|¡|´R·W±W¼b¿j¹jÐIÔJØ�~‰~ Ò)Ø'×GÑGÓI‘��fØ—‘Ü×*Ñ*¨4°À%Ð*ÓHÜ—W‘WœbŸj™jÐ)ñ*ô+ð ˆr7   )rÅ  rÆ  )rû  rú  rô  )Ú	_capstyle©rò  )Ú
_joinstyle)r:  )Ú_dashes)rü  ©r¢  Ú_hatch_colorc           
      óV  — g }d}| j                   D ]¤  \  }}d}|D ]6  }t        | |«      }t        ||«      }		 |�|	€||	u}nt        ||	k7  «      }|sŒ6 n |dk(  r|rd}|sŒO|dk(  rd}|D �cg c]  }t        ||«      ‘Œ }	}|j                   || g|	¢­Ž «       |D ]  }t        | |t        ||«      «       Œ Œ¦ |S # t        $ r` t	        j
                  |«      }t	        j
                  |	«      }	|j                  |	j                  k7  xs t	        j                  ||	k7  «      }Y ŒÔw xY wc c}w )z}
        Copy properties of other into self and return PDF commands
        needed to transform *self* into *other*.
        FrÐ  TrÍ  )
Úcommandsr÷  rË   rÉ   rÆ   r  ru  ÚanyrŽ  Úsetattr)
rë   r  rÖ  Úfill_performedÚparamsÚcmdÚ	differentÚpÚoursÚtheirss
             r5   rý  zGraphicsContextPdf.delta!
  sU  € ð
 ˆØˆØŸ=™=ò 	8‰KˆF�CØˆIØò �Ü˜t QÓ'�Ü  ¨Ó*�ð	9Ø�| v ~Ø$(°Ð$6™	ä$(¨°©Ó$8˜	ò Ùðð" Ð3Ò3¹Ø �	âØ˜_Ò,Ø%)�NØ5;Ö<°œ' %¨Õ+Ð<�Ð<Ø—‘™C Ð. vÒ.Ô/Øò 8�AÜ˜D !¤W¨U°AÓ%6Õ7ñ8ð7	8ð: ˆøô' "ò 9ÜŸ:™: dÓ+�DÜŸZ™Z¨Ó/�FØ!%§¡¨v¯|©|Ñ!;ò "8Ü!#§¡¨°©Ó!7ò ð9üò =s   ·B:Á+D&Â:A&D#Ä"D#c                 óœ   •— t         ‰| �  |«       t        |d| j                  «      }t        |d| j                  «      }|| _        || _        y)z5
        Copy properties of other into self.
        rò  rô  N)rÄ  ri  r÷  rò  rô  )rë   r  rþ  r·  rò  s       €r5   ri  z"GraphicsContextPdf.copy_propertiesG
  sL   ø€ ô 	‰Ñ Ô&Ü˜E <°·±ÓAˆ	Ü" 5Ð*=Ø#'×#9Ñ#9ó;Ðà#ˆŒØ!1ˆÕr7   c                 óz   — g }| j                   �,|j                  | j                  «       «       | j                   �Œ,|S )zB
        Make sure every pushed graphics state is popped.
        )r�  rŽ  r  )rë   rÖ  s     r5   r>  zGraphicsContextPdf.finalizeR
  s6   € ð ˆØ�k‰kÐ%Ø�K‰K˜Ÿ™›
Ô#ð �k‰kÑ%àˆr7   )rö   r÷   rø   rì   rï   r3  r4  r  rË  r  r¬  r®  r°  r´  r¸  r¼  rÀ  rº  r  r  rË  rÓ  rý  ri  r>  rê  rë  s   @r5   r  r  �	  sÏ   ø„ ôòò	>òBò9ð  Q°aÑ8€IØ q°1Ñ5€Jò6ò8ò(ò0ò$ò
1ò0ò3òòòð, 
$ XÐ.Ø	9¸9ÐEØ	˜Ð&Ø	˜-Ð(Ø	˜-Ð(Ø	˜-Ð(Ø	�xÐ Ø	�GÐà	# YÐ/ð
€Hò$ôL	2ör7   r  c                   óˆ   — e Zd ZdZ e«       Zedfd„Z ej                  d«      Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zdd
„Zd„ Zg d¢fd„Zy)ÚPdfPagesa=  
    A multi-page PDF file.

    Examples
    --------
    >>> import matplotlib.pyplot as plt
    >>> # Initialize:
    >>> with PdfPages('foo.pdf') as pdf:
    ...     # As many times as you like, create a figure fig and save it:
    ...     fig = plt.figure()
    ...     pdf.savefig(fig)
    ...     # When no figure is specified the current figure is saved
    ...     pdf.savefig()

    Notes
    -----
    In reality `PdfPages` is a thin wrapper around `PdfFile`, in order to avoid
    confusion when using `~.pyplot.savefig` and forgetting the format argument.
    Nc                 óŠ   — || _         || _        d| _        |r%|| j                  urt	        j
                  dd¬«       || _        y)a  
        Create a new PdfPages object.

        Parameters
        ----------
        filename : str or path-like or file-like
            Plots using `PdfPages.savefig` will be written to a file at this location.
            The file is opened when a figure is saved for the first time (overwriting
            any older file with the same name).

        keep_empty : bool, optional
            If set to False, then empty pdf files will be deleted automatically
            when closed.

        metadata : dict, optional
            Information dictionary object (see PDF reference section 10.2.1
            'Document Information Dictionary'), e.g.:
            ``{'Creator': 'My software', 'Author': 'Me', 'Title': 'Awesome'}``.

            The standard keys are 'Title', 'Author', 'Subject', 'Keywords',
            'Creator', 'Producer', 'CreationDate', 'ModDate', and
            'Trapped'. Values have been predefined for 'Creator', 'Producer'
            and 'CreationDate'. They can be removed by setting them to `None`.
        Nú3.8ú^Keeping empty pdf files is deprecated since %(since)s and support will be removed %(removal)s.©Úmessage)Ú	_filenameÚ	_metadataÚ_fileÚ_UNSETr	   Úwarn_deprecatedÚ_keep_empty)rë   rï  Ú
keep_emptyrd   s       r5   rì   zPdfPages.__init__s
  sF   € ð2 "ˆŒØ!ˆŒØˆŒ
Ù˜*¨D¯K©KÑ7Ü× Ñ  ð/õ1ð &ˆÕr7   râ  c                 ó   — | S r?   r�   rî   s    r5   Ú	__enter__zPdfPages.__enter__—
  s   € Øˆr7   c                 ó$   — | j                  «        y r?   )r@  )rë   Úexc_typeÚexc_valÚexc_tbs       r5   Ú__exit__zPdfPages.__exit__š
  s   € Ø�
‰
�r7   c                 ó~   — | j                   €&t        | j                  | j                  ¬«      | _         | j                   S )N©rd   )rè  r¤  ræ  rç  rî   s    r5   Ú_ensure_filezPdfPages._ensure_file�
  s,   € Ø�:‰:ÐÜ  §¡¸$¿.¹.ÔIˆDŒJØ�z‰zÐr7   c                 ó  — | j                   �<| j                   j                  «        | j                   j                  «        d| _         y| j                  r9t	        j
                  dd¬«       t        | j                  | j                  ¬«       yy)z_
        Finalize this object, making the underlying file a complete
        PDF file.
        Nrâ  rã  rä  rõ  )	rè  r>  r@  rë  r	   rê  r¤  ræ  rç  rî   s    r5   r@  zPdfPages.close¢
  sl   € ð
 �:‰:Ð!Ø�J‰J×ÑÔ!Ø�J‰J×ÑÔØˆD�JØ×ÒÜ× Ñ  ð/õ1ô �D—N‘N¨T¯^©^Ö<ð	 r7   c                 ó6   — | j                  «       j                  S )z™
        Return a modifiable information dictionary object
        (see PDF reference section 10.2.1 'Document Information
        Dictionary').
        )rö  rØ  rî   s    r5   ÚinfodictzPdfPages.infodict±
  s   € ð × Ñ Ó"×+Ñ+Ð+r7   c                 ó\  — t        |t        «      sR|€t        j                  «       }nt        j                  |«      }|€t        d|› �«      ‚|j                  j                  }t        j                  |t        |«      ¬«      5   |j                  | fddi|¤Ž ddd«       y# 1 sw Y   yxY w)a5  
        Save a `.Figure` to this file as a new page.

        Any other keyword arguments are passed to `~.Figure.savefig`.

        Parameters
        ----------
        figure : `.Figure` or int, default: the active figure
            The figure, or index of the figure, that is saved to the file.
        Nz
No figure )Úcanvasrg  r¯  )r@   r   r   Ú
get_activeÚget_fig_managerrÉ   rû  Úfigurer   Ú_setattr_cmÚFigureCanvasPdfÚsavefig)rë   rþ  ÚkwargsÚmanagers       r5   r  zPdfPages.savefig¹
  s—   € ô ˜&¤&Ô)Øˆ~ÜŸ.™.Ó*‘ä×-Ñ-¨fÓ5�ØˆÜ  :¨f¨XÐ!6Ó7Ð7Ø—^‘^×*Ñ*ˆFä×Ñ˜v¬o¸fÓ.EÔFñ 	9ØˆF�N‰N˜4Ñ8¨Ð8°Ò8÷	9÷ 	9ñ 	9ús   ÂB"Â"B+c                 óH   — t        | j                  «       j                  «      S )z=Return the current number of pages in the multipage pdf file.)r*   rö  rÑ  rî   s    r5   Úget_pagecountzPdfPages.get_pagecountÐ
  s   € ä�4×$Ñ$Ó&×/Ñ/Ó0Ð0r7   r	  c                 óD   — | j                  «       j                  ||«       y)z÷
        Add a new text note to the page to be saved next. The optional
        positionRect specifies the position of the new note on the
        page. It is outside the page per default to make sure it is
        invisible on printouts.
        N)rö  r  )rë   r  r  s      r5   Úattach_notezPdfPages.attach_noteÔ
  s   € ð 	×ÑÓ×'Ñ'¨¨lÕ;r7   r?   )rö   r÷   rø   rù   rÜ  ré  rì   r	   Údeprecate_privatize_attributerì  rî  ró  rö  r@  rù  r  r  r  r�   r7   r5   rà  rà  \
  s]   „ ññ( ‹X€Fà,2¸Tó  &ðD 4�×3Ñ3°EÓ:€Jòòòò
=ò,ó9ò.1ò .@ô <r7   rà  c                   ó>   ‡ — e Zd ZdZddiZd„ Zdddœd„Zˆ fd„Zˆ xZS )	r   rö  r¯  zPortable Document Formatc                  ó   — y)Nr¯  r�   rî   s    r5   Úget_default_filetypez$FigureCanvasPdf.get_default_filetypeä
  s   € Ør7   N)Úbbox_inches_restorerd   c                óÀ  — | j                   j                  }d| j                   _        | j                   j                  «       \  }}t        |t        «      r|j                  «       }nt        ||¬«      }	 |j                  ||«       t        | j                   |||t        ||||«      |¬«      }| j                   j                  |«       |j                  «        t        |t        «      s|j                  «        t        |t        «      r|j                  «        y |j                  «        y # t        |t        «      r|j                  «        w |j                  «        w xY w)Nrö  rõ  )r  )rþ  ÚdpiÚget_size_inchesr@   rà  rö  r¤  r  r   rQ  Údrawr>  rÿ  r@  )	rë   rï  r  rd   r  r~   r   rõ   Úrenderers	            r5   Ú	print_pdfzFigureCanvasPdf.print_pdfç
  s  € ð �k‰k�o‰oˆØˆ�‰ŒØŸ™×3Ñ3Ó5‰ˆˆvÜ�h¤Ô)Ø×(Ñ(Ó*‰Dä˜8¨hÔ7ˆDð	Ø�L‰L˜ Ô'Ü(Ø—‘˜U F¨CÜ˜D # v¨uÓ5Ø$7ô9ˆHð �K‰K×Ñ˜XÔ&Ø×ÑÔÜ˜h¬Ô1Ø—‘”ä˜(¤HÔ-Ø—‘Õ à—
‘
•øô ˜(¤HÔ-Ø—‘Õ à—
‘
•ús   Á4BD* Ä*3Ec                 óT   •— | j                   j                  «        t        ‰| �  «       S r?   )rþ  Údraw_without_renderingrÄ  r  )rë   rò  s    €r5   r  zFigureCanvasPdf.draw  s   ø€ Ø�‰×*Ñ*Ô,Ü‰w‰|‹~Ðr7   )	rö   r÷   rø   Ú	fixed_dpiÚ	filetypesr  r  r  rê  rë  s   @r5   r   r   Þ
  s0   ø„ ð €IØÐ2Ð3€Iòð '+°Tô÷4ð r7   r   c                   ó   — e Zd ZeZy)Ú_BackendPdfN)rö   r÷   rø   r   ÚFigureCanvasr�   r7   r5   r  r  	  s   „ à"�Lr7   r  )éK   )r   )`rù   rÏ   r   r   Úenumr   Ú	functoolsr   Úior   rš   Úloggingry   rV   r  r‘  r  rq   ri  rÞ  rj  ÚnumpyrÆ   ÚPILr   Ú
matplotlibr]   r	   r
   r   r   r   Úmatplotlib._pylab_helpersr   Úmatplotlib.backend_basesr   r   r   r   r   Ú!matplotlib.backends.backend_mixedr   Úmatplotlib.figurer   Úmatplotlib.font_managerr   r   rO  Úmatplotlib._afmr   Úmatplotlib.ft2fontr   r   r   r   r   r   Úmatplotlib.transformsr   r    Úmatplotlib.pathr!   Úmatplotlib.datesr"   r#   r÷  r%   Ú	getLoggerrö   rU  r6   rk   rw   rˆ   r£   rµ   rA   Ú	maketransrÔ   r¼   rä   ræ   rL   r  r  r[  r¢  r¤  ÚRendererPDFPSBaserQ  r  rà  r   ÚFigureManagerPdfÚexportr  r�   r7   r5   ú<module>r1     s¬  ðñó Ý Ý Ý Ý $Ý Û Û Û Û 	Û Û Û 
Û Û Û Û ã Ý ã ß FÕ FÝ )÷õ õ @Ý $ß IÝ ÷L÷ Lç 4Ý  Ý  Ý Ý à€w×Ñ˜Ó"€ódò,Tònó0,ó"*ó0ð4 �}‰}Ø
�u 5°¸UñDó E€òF#òR ÷ñ ð. ÷ ð  ó ð ÷Bñ ôA#ˆô A#÷HZ$ñ Z$òz+÷\@Cñ @CôF(t-�/×3Ñ3ô t-ônJÐ,ô J÷Z<ñ <ôD%Ð&ô %ðP %Ð ð 
‡�ô#�(ó #ó ñ#r7   