Ë
    íÍ:j• ã                   ó<  — 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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-m.Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddlm>Z> ddl?m@Z@  ej‚                  eB«      ZCd;d„ZDd„ ZEd„ ZFd<d„ZGd<d„ZHd<d„ZIeJj—                  dddd d!d"œ«      ZLd#„ ZM G d$„ d%«      ZNe G d&„ d'«      «       ZO G d(„ d)«      ZP G d*„ d+e«      ZQ G d,„ d-«      ZRd.„ ZS G d/„ d0«      ZT G d1„ d2e@jª                  «      ZV G d3„ d4e%«      ZW G d5„ d6«      ZX G d7„ d8e#«      ZYe$ZZe"j¶                   G d9„ 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)ÚFontPathÚget_fontÚfontManager)ÚAFM)ÚFT2FontÚ	FaceFlagsÚ	LoadFlagsÚ
StyleFlags)Ú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           út/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/matplotlib/backends/backend_pdf.pyÚ_fillr5   ^   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    r4   Úis_string_likez-_create_pdf_info_dict.<locals>.is_string_like£   s   € Ü˜!œSÓ!Ð!r6   zan instance of strc                 ó"   — t        | t        «      S r>   )r?   r   rA   s    r4   Úis_datez&_create_pdf_info_dict.<locals>.is_date§   s   € Ü˜!œXÓ&Ð&r6   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ÚnamerA   s    r4   Úcheck_trappedz,_create_pdf_info_dict.<locals>.check_trapped«   s(   € Ü�aœÔØ—6‘6Ð<Ð<Ð<àÐ4Ð4Ð4r6   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 rS   )ÚosÚgetenvr   ÚfromtimestampÚintr   ÚutcÚreplacer!   ÚtodayÚmplÚ__version__ÚitemsÚtext_for_warningr	   Úwarn_externalÚsetrK   )ÚbackendÚmetadataÚsource_date_epochÚsource_dateÚinfoÚkÚvrC   rE   rM   Úkeywordss              r4   Ú_create_pdf_info_dictrj   t   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      r4   Ú_datetime_to_pdfrv   Ë   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ˆØ€Hr6   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)rB   ÚyÚwidthÚheightÚangleÚ	sin_angleÚ	cos_angleÚaÚbÚcrs   ÚeÚfs                r4   Ú!_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Ð+Ð+r6   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© ©Ú.0rh   s     r4   ú	<genexpr>z,_get_coordinates_of_block.<locals>.<genexpr>  ó   è ø€ Ò'˜��!•Ñ'ùó   ‚c              3   ó&   K  — | ]	  }|d    –— Œ y­w©r#   NrŒ   r�   s     r4   r�   z,_get_coordinates_of_block.<locals>.<genexpr>  r�   r‘   c              3   ó&   K  — | ]	  }|d    –— Œ y­wr‹   rŒ   r�   s     r4   r�   z,_get_coordinates_of_block.<locals>.<genexpr>  r�   r‘   c              3   ó&   K  — | ]	  }|d    –— Œ y­wr“   rŒ   r�   s     r4   r�   z,_get_coordinates_of_block.<locals>.<genexpr>  r�   r‘   )r‡   ÚminÚmaxÚtupleÚ	itertoolsÚchainÚfrom_iterable)rB   r|   r}   r~   r   ÚverticesÚpadÚmin_xÚmin_yÚmax_xÚmax_ys              r4   Ú_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 %Ð(ð*ð *r6   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¢   rK   Úget_url)	ÚgcrB   r|   r}   r~   r   Ú
quadpointsÚrectÚlink_annotations	            r4   Ú_get_link_annotationr´     sd   € ô 1°°A°u¸fÀeÓLÑ€J�ä�W“Ü˜“<ØÚä�e“Ø—:‘:“<ñ
ñ	€Oð ˆr‚zà(2ˆ˜Ñ%ØÐr6   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ó   (úlatin-1ó   )s   <<r&   s   >>ó   [ó   ]s   nullz$Don't know a PDF representation for z objects)!Úhasattrr»   r?   ÚfloatÚnpÚfloatingÚisfiniteÚ
ValueErrorÚrstripÚboolrX   Úintegerr@   ÚisasciiÚencodeÚcodecsÚBOM_UTF16_BEÚbytesÚdecodeÚ	translateÚ_str_escapesÚdictr5   r^   rK   Úlistr˜   r   rv   r   ÚboundsÚ	TypeErrorÚtype)Úobjrt   rg   rh   Úvals        r4   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                   ó(   — 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     r4   Ú__init__zReference.__init__z  s	   € Øˆ�r6   c                 ó    — d| j                   z  S )Nz<Reference %d>rß   ©râ   s    r4   Ú__repr__zReference.__repr__}  s   € Ø $§'¡'Ñ)Ð)r6   c                 ó    — d| j                   z  S )Ns   %d 0 Rrß   rå   s    r4   r»   zReference.pdfRepr€  s   € Ø˜4Ÿ7™7Ñ"Ð"r6   c                 óx   — |j                   } |d| j                  z  «        |t        |«      «        |d«       y )Nó	   %d 0 obj
s   
endobj
)Úwriterà   r»   )râ   ÚcontentsÚfilerê   s       r4   rê   zReference.writeƒ  s1   € Ø—
‘
ˆÙˆm˜dŸg™gÑ%Ô&ÙŒg�hÓÔ ÙˆmÕr6   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rã   ræ   r»   rê   rŒ   r6   r4   rÝ   rÝ   s  s   „ ñòò*ò#ór6   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 )rK   zPDF name object.©rL   é   ú!ú~r#   z#%02xc                 óè   — t        |t        «      r|j                  | _        y t        |t        «      r|j	                  d«      }|j                  | j                  «      j                  d«      | _        y )Nr¾   )r?   rK   rL   rÑ   rÒ   rÓ   Ú_hexifyrÎ   )râ   rL   s     r4   rã   zName.__init__‘  sN   € Ü�dœDÔ!ØŸ	™	ˆD�Iä˜$¤Ô&Ø—{‘{ 7Ó+�ØŸ™ t§|¡|Ó4×;Ñ;¸GÓDˆD�Ir6   c                 ó    — d| j                   z  S )Nz	<Name %s>rò   rå   s    r4   ræ   zName.__repr__™  s   € Ø˜TŸY™YÑ&Ð&r6   c                 ó>   — d| j                   j                  d«      z   S )Nú/r¾   )rL   rÒ   rå   s    r4   Ú__str__zName.__str__œ  s   € Ø�T—Y‘Y×%Ñ% gÓ.Ñ.Ð.r6   c                 óX   — t        |t        «      xr | j                  |j                  k(  S r>   rJ   ©râ   Úothers     r4   Ú__eq__zName.__eq__Ÿ  s!   € Ü˜%¤Ó&ÒB¨4¯9©9¸¿
¹
Ñ+BÐBr6   c                 óX   — t        |t        «      xr | j                  |j                  k  S r>   rJ   rý   s     r4   Ú__lt__zName.__lt__¢  s!   € Ü˜%¤Ó&ÒA¨4¯9©9°u·z±zÑ+AÐAr6   c                 ó,   — t        | j                  «      S r>   )ÚhashrL   rå   s    r4   Ú__hash__zName.__hash__¥  s   € Ü�D—I‘I‹Ðr6   c                 ó    — d| j                   z   S )Nó   /rò   rå   s    r4   r»   zName.pdfRepr¨  s   € Ø�d—i‘iÑÐr6   N)rí   rî   rï   rð   Ú	__slots__ÚrangeÚordr÷   rã   ræ   rû   rÿ   r  r  r»   ©rŽ   r„   s   00r4   rK   rK   Š  s~   „ áØ€Ià%™% ›*˜Ð(H©%±°C³¹#¸c»(ÀQ¹,Ó*GÐ(HÑH÷JØð �'˜A‘+‰~ó J€GòEò'ò/òCòBòó ùó5Js   ±ArK   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â   rB   s     r4   rã   zVerbatim.__init__®  s	   € Øˆ�r6   c                 ó   — | j                   S r>   r  rå   s    r4   r»   zVerbatim.pdfRepr±  s   € Ø�w‰wˆr6   N)rí   rî   rï   rð   rã   r»   rŒ   r6   r4   r  r  ¬  s   „ ÙOòór6   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)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   Tss   Tjs   TJó   wó   Ws   shc                 ó   — | j                   S r>   )Úvaluerå   s    r4   r»   z
Op.pdfReprß  s   € Ø�z‰zÐr6   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)Úclsr+  r*  s      r4   Ú
paint_pathzOp.paint_pathâ  s4   € ñ ÙØ—‘Ð&à—z‘zÐ!áØ—x‘x�à—{‘{Ð"r6   N)-rí   rî   rï   rð   Úclose_fill_stroker)  r+  Ú	closepathÚclose_stroker*  r,  Ú
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ÚtextriseÚshowÚshowkernÚsetlinewidthÚclipÚshadingr»   Úclassmethodr.  rŒ   r6   r4   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Ø€HØ€DØ€HØ€LØ€DØ€Gòð ñ#ó ñ#r6   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)   rT  Úfhrì   rU  rÕ   rV  ÚcopyÚupdaterK   Ú
recordXrefr\   ÚrcParamsÚzlibr   Ú_writeHeaderÚtellrW  )râ   rà   r)   rì   rV  Úpngs         r4   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�Hr6   c                 ó  — | j                   j                  } |d| j                  z  «       | j                  }| j                  |d<   t
        j                  d   rt        d«      |d<    |t        |«      «        |d«       y )Nré   ÚLengthr\  rY  rZ  s   
stream
)	rì   rê   rà   rV  r)   r\   ra  rK   r»   )râ   rê   rÕ   s      r4   rc  zStream._writeHeader*  se   € Ø—	‘	—‘ˆÙˆm˜dŸg™gÑ%Ô&Ø�z‰zˆØŸ™ˆˆX‰Ü�<‰<Ð)Ò*Ü! -Ó0ˆD�‰NáŒg�d‹mÔÙˆmÕr6   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ì   ÚgetvaluerT  r]  rc  rê   rd  rW  ÚwriteObject)râ   rë   r3   s      r4   Úendz
Stream.end5  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Õ6r6   c                 óÀ   — | j                   €| j                  j                  |«       y| j                   j                  |«      }| j                  j                  |«       y)zWrite some data on the stream.N)rU  rì   rê   Úcompress)râ   ÚdataÚ
compresseds      r4   rê   zStream.writeE  sF   € ð ×ÑÐ#Ø�I‰I�O‰O˜DÕ!à×)Ñ)×2Ñ2°4Ó8ˆJØ�I‰I�O‰O˜JÕ'r6   c                 ó–   — | j                   �=| j                   j                  «       }| j                  j                  |«       d| _         yy)zFlush the compression object.N)rU  Úflushrì   rê   )râ   rp  s     r4   ri  zStream._flushN  sA   € ð ×ÑÐ'Ø×)Ñ)×/Ñ/Ó1ˆJØ�I‰I�O‰O˜JÔ'Ø#ˆDÕð (r6   ©NN)
rí   rî   rï   rð   r  rã   rc  rl  rê   ri  rŒ   r6   r4   rS  rS  ú  s)   „ ñð P€Ió%(òN	ò7ò (ó$r6   rS  c                 ó  — t        | «      }d|j                  z  }i }|D �]e  }|j                  |t        j                  «      }t        |j                  |z  «      dt        j                  |j                  d   |z  «      t        j                  |j                  d   |z  «      t        j                  |j                  d   |z  «      t        j                  |j                  d   |z  «      g}|j                  «       \  }}	|dz  |z  j                  «       }dj                  t        t        |«      «      j                  d«      d	z   t!        j"                  t%        ||	«      d d d
d dg d¢d«      z   dz   ||j'                  |«      <   �Œh |S )Néè  r   r#   é   é   é@   ú r¾   s    d1
F)r  r  r6   r  r  Tr  )r   Úunits_per_EMÚ
load_glyphr   ÚNO_SCALEÚroundÚhoriAdvancerx   ÚfloorÚbboxÚceilÚget_pathr+   Úmapr@   rÎ   r"   Úconvert_to_stringr    Úget_glyph_name)
Ú	font_pathÚglyph_indicesÚfontÚconvÚprocsÚglyph_indexÚgÚd1rh   r„   s
             r4   Ú_get_pdf_charprocsrŽ  W  s\  € Ü�IÓ€DØ�$×#Ñ#Ñ#€DØ€EØ$ó ˆØ�O‰O˜K¬×);Ñ);Ó<ˆä�!—-‘- $Ñ&Ó'¨ä�J‰J�q—v‘v˜a‘y 4Ñ'Ó(¬$¯*©*°Q·V±V¸A±YÀÑ5EÓ*FÜ�I‰I�a—f‘f˜Q‘i $Ñ&Ó'¬¯©°1·6±6¸!±9¸tÑ3CÓ)Dð	
ˆð �}‰}‹‰ˆˆ1Ø�‰V�d‰]×!Ñ!Ó#ˆà�H‰H”Sœ˜b“\Ó"×)Ñ)¨'Ó2°XÑ=Ü×%Ñ%Ü�Q˜“
˜D $¨¨t°Qâ-¨tó5ñ5ð
 ñð 	ˆd×!Ñ! +Ó.Ó/ðð" €Lr6   c                   óÎ  ‡ — e Zd ZdZd<ˆ fd„	Z  ej                  d«       ed„ «      «      Z  ej                  d«       ed„ «      «      Z	  ej                  d«       ed„ «      «      Z
 ej                  d«      ed„ «       «       Zd	„ Zg d
¢fd„Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd=d„Zd„ Zddœd„Zd„ Zd>d„Zd„ Zd„ Zd„ Zd„ Zd„ Z ej>                  dd«      d<d„«       Z dZ!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'  ej                  d&«       ed'„ «      «      Z(d(„ Z)d)„ Z*d*„ Z+d+„ Z,d,„ Z-d-„ Z.d<d.„Z/d/„ Z0d0„ Z1d1„ Z2d2„ Z3d3„ Z4ed?d4„«       Z5d@d5„Z6dAd6„Z7d7„ Z8d8„ Z9d9„ Z:d:„ Z;d;„ Z<ˆ xZ=S )BÚPdfFilezPDF file object.Nc                 ó6  •— 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 «      | _        d„ t        j                  d«      D «       | _        i | _         i | _!        tE        jF                  tD        jH                  jK                  tL        jN                  d   d«      «      | _(        i | _)        d„ t        j                  d«      D «       | _*        i | _+        d„ t        j                  d«      D «       | _,        g | _-        i | _.        d„ t        j                  d«      D «       | _/        g | _0        i | _1        d„ t        j                  d«      D «       | _2        i | _3        g | _4        g | _5        g | _6        djo                  «       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   iÿÿ  ú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©rK   ©rŽ   r1   s     r4   r�   z#PdfFile.__init__.<locals>.<genexpr>­  ó   è ø€ Ò"M°Q¤4¨!¨A¨3¨§=Ñ"Mùó   ‚zps.fonttypec              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)r­   Nrž  rŸ  s     r4   r�   z#PdfFile.__init__.<locals>.<genexpr>´  s   è ø€ Ò K°1¤¨¨!¨ g§Ñ Kùr¡  c              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)ÚSMNrž  rŸ  s     r4   r�   z#PdfFile.__init__.<locals>.<genexpr>¶  s   è ø€ ÒJ°!œt b¨¨ HŸ~ÑJùr¡  c              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)ÚHNrž  rŸ  s     r4   r�   z#PdfFile.__init__.<locals>.<genexpr>¹  r   r¡  c              3   ó8   K  — | ]  }t        d |› �«      –— Œ y­w)ÚINrž  rŸ  s     r4   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)8Úsuperrã   r™   ÚcountÚ_object_seqÚ	xrefTableÚpassed_in_file_objectÚoriginal_file_likeÚ	tell_baser   Úto_filehandlerd  ÚOSErrorr   r]  Úcurrentstreamrê   ÚreserveObjectÚ
rootObjectÚpagesObjectÚpageListÚ
fontObjectÚ_extGStateObjectÚhatchObjectÚgouraudObjectÚXObjectObjectÚresourceObjectrK   rk  rj   ÚinfoDictÚ_internal_font_seqÚ
_fontNamesÚ_dviFontInfor$   ÚCharacterTrackerÚ_FONT_MAX_GLYPHÚgetr\   ra  Ú_character_trackerÚalphaStatesÚ_alpha_state_seqÚ_soft_mask_statesÚ_soft_mask_seqÚ_soft_mask_groupsÚ_hatch_patternsÚ_hatch_pattern_seqÚgouraudTrianglesÚ_imagesÚ
_image_seqÚmarkersÚpathsÚ_annotationsÚpageAnnotationsÚsplit)
râ   Úfilenamerc   r]  Úopenedr•  rB   Úprocsetsr˜  Ú	__class__s
            €r4   rã   zPdfFile.__init__r  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Ü×+Ñ+×/Ñ/´·±¸]Ñ0KÈQÓOó#QˆÔð ˆÔÙ 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øôS ò 3Ü“Y�Ø*2�×'ð3üò| Ns   Á'M5 Ì	NÍ5NÎNz3.11c                 ó   — | j                   S r>   )rÆ  rå   s    r4   ú<lambda>zPdfFile.<lambda>Ù  s
   € ¸d¿o¹o€ r6   c                 ó   — i S r>   rŒ   ©Ú_s    r4   rà  zPdfFile.<lambda>Ú  s   € Àb€ r6   c                 ó   — i S r>   rŒ   râ  s    r4   rà  zPdfFile.<lambda>Û  s   € À"€ r6   c           	      óÒ  — i }t        j                  t        j                  d«      «      }| j                  j	                  «       D ]Ÿ  \  }}||j
                     }|j                  €/t        dj                  |j                  |j
                  «      «      ‚t        j                  |||j                  |j                  |j                  |j                  ¬«      ||j
                  <   Œ¡ |S )Nú
pdftex.mapúNNo usable font file found for {} (TeX: {}); the font may lack a Type-1 version)ÚdvifontÚpdfnameÚfontfileÚbasefontÚencodingfileÚeffects)r   Ú
PsfontsMapÚfind_tex_filerÇ  r^   ÚtexnamerÛ  rÉ   ÚformatÚpsnameÚtypesÚSimpleNamespaceÚencodingrí  )râ   rs   Útex_font_mapré  rè  Úpsfonts         r4   ÚdviFontInfozPdfFile.dviFontInfoÝ  sÉ   € ð ˆÜ×)Ñ)¬'×*?Ñ*?ÀÓ*MÓNˆØ $× 1Ñ 1× 7Ñ 7Ó 9ò 	ÑˆG�WØ! '§/¡/Ñ2ˆFØ�‰Ð&Ü ð9ç‘V˜FŸM™M¨7¯?©?Ó;ó=ð =ô "'×!6Ñ!6ØØØŸ™ØŸ™Ø#Ÿ_™_ØŸ™ô"ˆAˆg�o‰oÒð	ð ˆr6   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Ú	DeviceRGBr}  )Ú	endStreamr}   r~   rº  rK   r¼  rÃ  rk  r½  r*   rØ  rÙ  ÚbeginStreamrà   Úoutputr  r>  r?  ÚGraphicsContextPdfÚ
joinstylesrC  )râ   r}   r~   ÚcontentObjectÚannotsObjectÚthePageÚ
pageObjects          r4   Ú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ð  "ˆÕr6   ©éœÿÿÿr  r   r   c                 ól   — t        d«      t        d«      ||dœ}| j                  j                  |«       y )Nr¤   ÚText)r©   rª   r   r«   )rK   rÙ  r*   )râ   ÚtextÚpositionRectÚtheNotes       r4   ÚnewTextnotezPdfFile.newTextnote  s3   € ä ›=Ü" 6›lØ#Ø'ñˆð
 	×Ñ×#Ñ# GÕ,r6   c                 ót   ‡— ˆfd„Št        | «      t        j                  dz   dz  z  } ‰|d«      }|dd dz   S )zµ
        Get a prefix for a subsetted font name.

        The prefix is six uppercase letters followed by a plus sign;
        see PDF reference section 5.5.3 Font Subsets.
        c                 óz   •— | |k  rt         j                  |    S  ‰| |z  |«      t         j                  | |z     z   S r>   )ÚstringÚascii_uppercase)ÚnÚbaseÚtoStrs     €r4   r  z)PdfFile._get_subset_prefix.<locals>.toStr!  sD   ø€ Ø�4ŠxÜ×-Ñ-¨aÑ0Ð0ñ ˜!˜t™) TÓ*¬V×-CÑ-CÀAÈÁHÑ-MÑMðr6   r#   rv  é   Né   ú+)r  ÚsysÚmaxsize)ÚcharsetÚhashedÚprefixr  s      @r4   Ú_get_subset_prefixzPdfFile._get_subset_prefix  sD   ø€ ô	ô �g“¤3§;¡;°¡?°aÑ"7Ñ8ˆÙ�v˜rÓ"ˆð �b�qˆz˜CÑÐr6   c                 ó`   — t         j                  t        |j                  «       «      «      | z   S r>   )r�  r%  Ú	frozensetÚvalues)Úps_nameÚcharmaps     r4   Ú_get_subsetted_psnamezPdfFile._get_subsetted_psname0  s$   € ä×)Ñ)¬)°G·N±NÓ4DÓ*EÓFÈÑPÐPr6   c           
      ój  — | j                  «        | j                  «        | j                  «        | j                  «        | j	                  «        | j                  «        | j                  «        | j                  j                  «       D ���ci c]	  \  }}}||“Œ }}}}| j                  j                  «       D ]  }|d   ||d   <   Œ | j                  D ]  \	  }}}}}}	}
}}|||<   Œ | j                  | j                  |«       | j                  «        | j                  «        | j                  «        | j                  | j                   t#        d«      | j$                  t'        | j$                  «      dœ«       | j)                  «        | j+                  «        | j-                  «        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Ô  r(  rÖ  r×  rk  rÂ  ÚwriteImagesÚwriteMarkersÚwritePathCollectionTemplatesr¼  rK   r½  r)   ÚwriteInfoDictÚ	writeXrefÚwriteTrailer)râ   ÚimagerL   ÚobÚxobjectsÚtupÚpathÚtransr+   ÚcapÚpaddingÚfilledÚstrokeds                r4   ÚfinalizezPdfFile.finalize4  sŠ  € ð 	�‰ÔØ×ÑÔ!Ø�‰ÔØ×ÑÔØ×$Ñ$Ô&Ø×ÑÔØ×"Ñ"Ô$à,0¯L©L×,?Ñ,?Ó,A÷Cð CÙ(˜  bˆD�"‰HðCˆò Cà—<‘<×&Ñ&Ó(ò 	&ˆCØ" 1™vˆH�S˜‘VÒð	&ð —:‘:ò	 ÑFˆD�$˜˜r 4¨¨g°v¸wàˆH�TŠNð	 ð 	×Ñ˜×+Ñ+¨XÔ6Ø×ÑÔØ×ÑÔØ×)Ñ)Ô+Ø×Ñ˜×)Ñ)Ü"& w£-Ø"&§-¡-Ü#& t§}¡}Ó#5ñ7ô	8ð 	×ÑÔð 	�‰ÔØ×ÑÕùô'Cs   ÂF.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´  r]  rr  rµ  rê   rj  Úcloserå   s    r4   rG  zPdfFile.closeS  s^   € ð 	�‰ÔØ×%Ò%Ø�G‰G�M‰M�Oà×&Ñ&Ð2Ø×'Ñ'×-Ñ-¨d¯g©g×.>Ñ.>Ó.@ÔAØ�G‰G�M‰M�Or6   c                 óŠ   — | j                   €| j                  j                  |«       y | j                   j                  |«       y r>   )r¹  r]  rê   )râ   ro  s     r4   rê   zPdfFile.write^  s2   € Ø×ÑÐ%Ø�G‰G�M‰M˜$Õà×Ñ×$Ñ$ TÕ*r6   c           
      ó’   — | j                  t        |D �cg c]  }t        |«      ‘Œ c}«      «       | j                  d«       y c c}w )Nr'   )rê   r5   r»   )râ   ro  rB   s      r4   r  zPdfFile.outputd  s3   € Ø�
‰
”5¨dÖ3¨œ' !�*Ò3Ó4Ô5Ø�
‰
�5Õùò 4s   •Ac                 óH   — | j                   �J ‚t        ||| ||«      | _         y r>   )r¹  rS  )râ   rà   r)   rV  re  s        r4   r  zPdfFile.beginStreamh  s)   € Ø×!Ñ!Ð)Ð)Ð)Ü# B¨¨T°5¸#Ó>ˆÕr6   c                 ó`   — | j                   �"| j                   j                  «        d | _         y y r>   )r¹  rl  rå   s    r4   r  zPdfFile.endStreaml  s-   € Ø×ÑÐ)Ø×Ñ×"Ñ"Ô$Ø!%ˆDÕð *r6   ©rV  c                ó”   — | j                  |j                  d |«       | j                  j                  |«       | j	                  «        y r>   )r  rà   r¹  rê   r  )râ   Úrefro  rV  s       r4   ÚoutputStreamzPdfFile.outputStreamq  s6   € Ø×Ñ˜Ÿ™  uÔ-Ø×Ñ× Ñ  Ô&Ø�‰Õr6   c                 óP   — | j                   D ]  \  }}| j                  ||«       Œ y r>   )rØ  rk  )râ   r
  rú  s      r4   r/  zPdfFile._write_annotationsv  s,   € Ø)-×):Ñ):ò 	8Ñ%ˆL˜+Ø×Ñ˜\¨;Õ7ñ	8r6   c                 óè  — t        |t        «      r|g}nmt        |t        «      rt        |d«      g}nOt        j                  d   r't        j                  |dt        j                  ¬«      }nt        j                  |«      }d}|D ]i  }| j                  j                  ||f«      }|s|}|�Œ't        | j                  «      }|| j                  ||f<   t        j                  d|||«       |rŒh|}Œk |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.
        r   úpdf.use14corefontsÚafm)ÚfontextÚ	directoryNz"Assigning font %s (subset %d) = %r)r?   r   r@   r\   ra  Ú_fontManagerÚ_find_fonts_by_propsÚRendererPdfÚ_afm_font_dirrÆ  rÊ  ÚnextrÅ  Ú_logÚdebug)râ   ÚfontpropÚsubsetÚ	filenamesÚfirst_FxÚfnameÚFxs          r4   ÚfontNamezPdfFile.fontNamez  sç   € ô �h¤Ô)Ø!˜
‰IÜ˜¤#Ô&Ü! (¨AÓ.Ð/‰IÜ�\‰\Ð.Ò/Ü$×9Ñ9Ø %´;×3LÑ3Lô‰Iô %×9Ñ9¸(ÓCˆIØˆØò 		"ˆEØ—‘×$Ñ$ e¨V _Ó5ˆBÙØ�Ø‰zÜ˜$×1Ñ1Ó2�Ø35�—‘ ¨ Ñ0Ü—
‘
Ð?ÀÀVÈUÔSÚØ!‘Hð		"ð ˆr6   c                 óÆ   — t        d|j                  j                  d«      › �«      }t        j	                  d||j                  «       || j
                  |<   t        |«      S )z§
        Given a dvi font object, return a name suitable for Op.selectfont.

        Register the font internally (in ``_dviFontInfo``) if not yet registered.
        zF-r¾   zAssigning font %s = %s (dvi))rK   rð  rÒ   r[  r\  rÇ  )râ   rè  ré  s      r4   ÚdviFontNamezPdfFile.dviFontName›  sT   € ô ˜˜GŸO™O×2Ñ2°7Ó;Ð<Ð=Ó>ˆÜ�
‰
Ð1°7¸G¿O¹OÔLØ%,ˆ×Ñ˜'Ñ"Ü�G‹}Ðr6   c                 óŒ  — i }t        | j                  j                  «       «      D ]9  \  }}t        j	                  d|j
                  «       | j                  |«      ||<   Œ; t        | j                  j                  «       «      D ]¡  \  \  }}}t        j	                  d||«       |j                  d«      r*t        j	                  d«       | j                  |«      ||<   Œ[t        j	                  d«       | j                  j                  |   |   }| j                  |||«      ||<   Œ£ | j                  | j                  |«       y )Nz"Embedding Type-1 font %s from dvi.zEmbedding font %r:%d.z.afmzWriting AFM font.zWriting TrueType font.)ÚsortedrÇ  r^   r[  r\  rð  Ú_embedTeXFontrÆ  ÚendswithÚ_write_afm_fontrË  ÚusedÚembedTTFrk  r¾  )râ   r—  ré  rè  rÛ  r^  rb  r*  s           r4   r0  zPdfFile.writeFonts¦  s  € ØˆÜ & t×'8Ñ'8×'>Ñ'>Ó'@Ó Aò 	9ÑˆG�WÜ�J‰JÐ;¸W¿_¹_ÔMØ!×/Ñ/°Ó8ˆE�'ŠNð	9ô '-¨T¯_©_×-BÑ-BÓ-DÓ&Eò 
	EÑ"ÑˆX�v Ü�J‰JÐ.°¸&ÔAØ× Ñ  Ô(ä—
‘
Ð.Ô/Ø ×0Ñ0°Ó:��b’	ô —
‘
Ð3Ô4Ø×1Ñ1×6Ñ6°xÑ@ÀÑH�Ø ŸM™M¨(°F¸GÓD��b’	ð
	Eð 	×Ñ˜Ÿ™¨%Õ0r6   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_fontnamerK   rº  rk  )râ   rÛ  r]  rˆ  ÚfontnameÚfontdictÚfontdictObjects          r4   rj  zPdfFile._write_afm_font¸  sˆ   € Ü�(˜DÓ!ð 	 RÜ�r“7ˆD÷	à×$Ñ$Ó&ˆÜ  ›LÜ# G›}Ü $ X£Ü $Ð%6Ó 7ñ9ˆð ×+Ñ+Ð,=Ó>ˆØ×Ñ˜¨Ô2ØÐ÷	ð 	ús   �BÂB
c           
      ó  — t        j                  t        j                  d«      «      }||j                     }|j                  €/t        dj                  |j                  |j                  «      «      ‚| j                  d«      }t        d«      t        d«      dœ}t        j                  |j                  «      }|j                  �K|j                  t        t        j                  |j                  «      «      D ��ci c]  \  }}||“Œ
 c}}«      }|j                   r|j#                  |j                   «      }t%        |j&                  |j(                  «      }	| j*                  j,                  |	   d   }
|
D �ch c](  }t/        | j*                  j1                  |	d|«      «      ’Œ* }}|j3                  || j5                  |
j7                  «       «      «      }t        |j8                  d   «      |d	<   | j;                  |«      |d
<   |j8                  d   }| j=                  |«      |d<   t?        |jA                  «       d¬«      x}|d<   tC        |jA                  «       d¬«      x}|d<   |jD                  }tG        ||dz   «      D �cg c])  }|jI                  |«      x}rd|jJ                  z  dz	  nd‘Œ+ }}| j                  d«      x|d<   }| jM                  ||«       | jM                  ||«       |S c c}}w c c}w c c}w )Nræ  rç  rs  rª  ro  )r©   rª   r   ÚFontNamerq  ÚFontDescriptorrr  )ÚdefaultÚ	FirstCharéÿ   ÚLastCharr#   ru  é   zglyph widthsÚWidths)'r   rî  rï  rð  rÛ  rÉ   rñ  rò  rº  rK   r   Ú	Type1Fontrõ  Úwith_encodingr(   Ú
_parse_encrí  Ú	transformr   ra  Ú
face_indexrË  rk  r	  Úsubset_to_unicoder^  r%  r(  ÚpropÚcreateType1DescriptorÚ_generate_encodingr–   Úkeysr—   Ú_metricsr  Úget_metricsÚ	tex_widthrk  )râ   rè  rö  r÷  rx  rw  Út1fontr1   r„   r†  r*  ÚccodeÚcharsrõ  ÚfcÚlcÚfont_metricsÚcharÚglyph_metricsÚwidthsÚwidthsObjects                        r4   rh  zPdfFile._embedTeXFontÄ  sÍ  € Ü×)Ñ)¬'×*?Ñ*?ÀÓ*MÓNˆØ˜gŸo™oÑ.ˆØ�?‰?Ð"Üð5ç‘˜Ÿ™ w§¡Ó7ó9ð 9ð ×+Ñ+Ð,=Ó>ˆä˜f›Ü˜g›ñ
ˆô ×%Ñ% f§o¡oÓ6ˆØ�?‰?Ð&Ø×)Ñ)Ü"+¬G×,>Ñ,>¸v¿¹Ó,OÓ"P×Q™$˜!˜Q��A‘ÓQóˆFð �>Š>Ø×%Ñ% f§n¡nÓ5ˆFô ˜WŸ]™]¨G×,>Ñ,>Ó?ˆ	Ø×)Ñ)×.Ñ.¨yÑ9¸!Ñ<ˆð !ö
ð ô �×'Ñ'×9Ñ9¸)ÀQÈÓNÕOð
ˆð 
ð
 —‘˜u d×&=Ñ&=¸g¿n¹nÓ>NÓ&OÓPˆÜ# F§K¡K°
Ñ$;Ó<ˆ�Ñà%)×%?Ñ%?ÀÓ%GˆÐ!Ñ"Ø—;‘;˜zÑ*ˆØ#×6Ñ6°xÓ@ˆ�ÑÜ%(¨¯©«À!Ô%DÐDˆˆX�kÑ"Ü$'¨¯©«ÀÔ$EÐEˆˆX�jÑ!à×'Ñ'ˆô $ B¨¨Q©Ó/ö1àð (4×'?Ñ'?ÀÓ'EÐE�mÐEð ˜-×1Ñ1Ñ1°bÒ8ØLMñNð 1ˆð 1ð -1×,>Ñ,>¸~Ó,NÐNˆ�Ñ˜\Ø×Ñ˜ vÔ.Ø×Ñ˜¨Ô2ØÐùó= Rùò
ùò1s   Ã<K1
Å8-K7Ê.K<c                 óÒ   — d}g }t        |j                  «       «      D ]:  \  }}||dz   k7  r|j                  |«       |}|j                  t        |«      «       Œ< t        d«      |dœS )Néþÿÿÿr#   rr  ©r©   ÚDifferences)rg  r^   r*   rK   )râ   rõ  Úprevr0   ÚcoderL   s         r4   rŠ  zPdfFile._generate_encodingø  so   € ØˆØˆÜ  §¡Ó!1Ó2ò 	&‰JˆD�$Ø�t˜a‘xÒØ—‘˜dÔ#ØˆDØ�M‰Mœ$˜t›*Õ%ð		&ô ˜Ó$Ø!ñ
ð 	
r6   rê  c                 óì  — | j                  d«      }| j                  d«      }|j                  d   }|j                  d   }d}|r|dz  }	 	 |dz  }|r|d	z  }	 	 	 |j                  d
   }dj                  t        d„ |j	                  «       D «       «      «      }	t        d«      t        |j                  d   «      ||j                  d   ||j                  d   d   |j                  d   d   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#   rv  é   rx  rr  Ú c              3   ó0   K  — | ]  }|d k7  rd|› �–— Œ y­w)z.notdefrú   NrŒ   r
  s     r4   r�   z0PdfFile.createType1Descriptor.<locals>.<genexpr>+  s%   è ø€ ò ØØ˜	’>ð �A�3”ñùs   ‚r{  rz  ÚFontBBoxrw  ru  iô  Ú
FamilyNameé2   )r©   rz  ÚFlagsr¦  r¡  ÚAscentÚDescentÚ	CapHeightÚXHeightÚFontFileÚ
FontFamilyÚStemVÚCharSetr6   )ÚLength1ÚLength2ÚLength3rL  )
rº  rˆ  r+   rg  r(  rK   rk  rO  Úpartsr)   )râ   r�  rê  ÚfontdescObjectÚfontfileObjectÚitalic_angleÚfixed_pitchÚflagsrõ  r"  Ú
descriptors              r4   r‰  zPdfFile.createType1Descriptor  s—  € ð ×+Ñ+Ð,=Ó>ˆØ×+Ñ+¨KÓ8ˆà—{‘{ =Ñ1ˆØ—k‘k .Ñ1ˆàˆáØ�V‰OˆEàð Ø�V‰OˆEñ
 Ø�V‰OˆEàð ð ð —;‘;˜zÑ*ˆØ—'‘'Üñ Ø!)§¡Ó!2ôó ó
ˆô  Ð 0Ó1Ü §¡¨JÑ 7Ó8Ø Ø!Ÿ;™; zÑ2Ø'Ø!Ÿ;™; zÑ2°1Ñ5Ø!Ÿ;™; zÑ2°1Ñ5ØØØ)Ø!Ÿ;™; |Ñ4ØØ"ñ
ˆ
ð$ 	×Ñ˜¨Ô4à×Ñ˜.¨#¯(©(°6·<±<ÀÀÐ3CÓ*DÜ,/°·±¸Q±Ó,@Ü,/°·±¸Q±Ó,@Ø,-ñ!/ð 	ô 	0ð
 Ðr6   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                 óV  ‡ ‡‡‡‡‡— t        ‰«      }t        j                  d   Š|j                  dfd„Šˆˆˆ fd„Šˆˆˆˆˆ fd„}ˆˆˆˆˆ fd„}‰ 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        j                  |	v r|dz  }	 |r|dz  }n|dz  }t        j                  |
v 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.ru  r   )r}  rx   r  r�  )r3   ÚupeÚnearestr'  s       r4   ÚcvtzPdfFile.embedTTF.<locals>.cvtf  sB   € à˜S‘L 4Ñ'ˆEÙÜ˜U“|Ð#à�qŠyÜ—z‘z %Ó(Ð(ä—y‘y Ó'Ð'r6   c           
      óÜ  •‡ ‡— d}g }t        |j                  «       «      D ](  }||dz   k7  r|j                  ||g«       n||d   d<   |}Œ* ˆˆˆ fd„Š‰dk(  rdnd}g }|D ]Q  \  }}dj                  ˆfd	„t	        ||dz   «      D «       «      }	|j                  d
|d|› d�›d|d|› d�›d|	› d�«       ŒS ‰j
                  t        |«      dj                  |«      j                  d«      fz  }
|
S )Nrš  r#   éÿÿÿÿc                 óˆ   •— ‰j                   j                  ‰‰| «      }|j                  d«      j                  «       }d|› d�S )Núutf-16beú<ú>)rË  r‡  rÎ   Úhex)r�  r‘  ÚhexstrrÛ  râ   Úsubset_indexs      €€€r4   Ú_to_unicodezDPdfFile.embedTTF.<locals>.generate_unicode_cmap.<locals>._to_unicode|  sE   ø€ Ø×/Ñ/×AÑAØ˜l¨Eó3�àŸ™ jÓ1×5Ñ5Ó7�Ø˜6˜( !�}Ð$r6   rw  rv  r£  ry  c              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wr>   rŒ   )rŽ   rB   rË  s     €r4   r�   zBPdfFile.embedTTF.<locals>.generate_unicode_cmap.<locals>.<genexpr>…  s   øè ø€ Ò&S¸!¡{°1§~Ñ&Sùs   ƒrÆ  Ú0rB   z> <z> [ú]r¸   r¾   )rg  r‹  r*   r+   r  Ú_identityToUnicodeCMapr)   rÎ   )rÊ  r*  Ú
last_ccodeÚunicode_groupsr�  r}   Úunicode_bfrangeÚstartrl  Úreal_valuesÚunicode_cmaprË  rÛ  Úfonttyperâ   s   `          @€€€r4   Úgenerate_unicode_cmapz/PdfFile.embedTTF.<locals>.generate_unicode_cmapq  s#  ú€ àˆJØˆNÜ §¡£Ó/ò #�Ø˜J¨™NÒ*Ø"×)Ñ)¨5°%¨.Õ9à,1�N 2Ñ& qÑ)Ø"‘
ð#ö%ð " Qš‘A¨AˆEØ ˆOØ,ò N‘
��sØ!Ÿh™hÓ&S¼uÀUÈCÐPQÉEÓ?RÔ&SÓS�Ø×&Ñ&Ø˜˜a ˜w a˜ZÐ(¨¨C°°%°¸¨z¨?¸#¸k¸]È!ÐLõNðNð !×7Ñ7Ü  Ó0Ø!ŸY™Y Ó7×>Ñ>¸wÓGðIñIˆLð  Ðr6   c                 ó�  •‡ ‡— ‰"j                  d«      }‰"j                  d«      }‰"j                  d«      }‰"j                  d«      }‰"j                  d«      }g }	t        ‰«      t        ‰«      }}
‰ j                  D �cg c]  } ‰|d¬«      ‘Œ }}t	        d«      ‰!|
||t	        d	«      |d
   |g d¢|t	        d«      |	dœ||dœ}ˆˆˆ fd„}t        |
|dz   «      D �cg c]
  } ||«      ‘Œ }}t        |«      |d<   t        ‰j                  «       D ��cg c]  \  }}|‰ j                  |«      f‘Œ c}}«      }d}|D ]:  \  }}||dz   k7  r|	j                  |«       |	j                  t	        |«      «       |}Œ< t        ‰‰j                  «       «      }i }t        |«      D ]/  }||   }‰"j                  d«      }‰"j                  ||«       |||<   Œ1  ‰ |‰«      }‰"j                  ||«       ‰"j                  ||«       ‰"j                  ||«       ‰"j                  ||«       ‰"j                  ||«       |S c c}w c c}w c c}}w )z5The Type 3-specific part of embedding a Truetype fontzfont widthsr   rs  zcharacter procsúToUnicode mapF©rÀ  rª  ÚType3rz  )çü©ñÒMbP?r   r   rÜ  r   r   rr  r›  )r©   rq  r}  r  r{  rª   rK   r¦  Ú
FontMatrixÚ	CharProcsrr  r�  Ú	ToUnicodec                 ó¬   •— ‰j                  ‰j                  | d«      t        j                  t        j                  z  ¬«      j
                  } ‰|«      S )Nr   ©rº  )r{  rÊ  r   r|  Ú
NO_HINTINGr~  )Úcharcoder}   r*  rÁ  rˆ  s     €€€r4   Úget_char_widthz?PdfFile.embedTTF.<locals>.embedTTFType3.<locals>.get_char_width¬  sM   ø€ ØŸ™Ø—K‘K ¨!Ó,Ü#×,Ñ,¬y×/CÑ/CÑCð (ó EçEPÁ[ð ñ ˜5“zÐ!r6   r#   ÚMaxWidthrš  ÚcharProc)rº  r–   r—   r€  rK   r  rg  r^   r…  r*   rŽ  r(  rO  rk  )#rˆ  rÊ  r*  r»  r˜  r¶  rx  ÚcharprocsObjectÚtoUnicodeMapObjectÚdifferencesArrayÚ	firstcharÚlastcharrB   r€  rw  rä  rã  r—  r�  ÚgindÚdifferencesÚlast_cr„   rL   ÚrawcharprocsÚ	charprocsÚcharnameÚstreamÚcharprocObjectrÕ  rÁ  rÛ  r×  r)  râ   s#   ` `                           €€€€€r4   ÚembedTTFType3z'PdfFile.embedTTF.<locals>.embedTTFType3Ž  sz  ú€ à×-Ñ-¨mÓ<ˆLØ!×/Ñ/Ð0AÓBˆNØ!×/Ñ/Ð0AÓBˆNØ"×0Ñ0Ð1BÓCˆOØ!%×!3Ñ!3°OÓ!DÐØ!ÐÜ"% g£,´°G³�xˆIØ37·9±9Ö=¨a‘C˜ 5Ö)Ð=ˆDÐ=ô ˜V›Ø#Ø&Ø$Ø"0Ü ›=Ø" :Ñ.Ø Ú6Ø,ä  Ó,Ø#3ñ5ð 'Ø/ñˆHö&"ô ',¨I°xÀ±zÓ&BöDØ"ñ % XÕ.ð DˆFð Dä%(¨£[ˆJ�zÑ"ô !ØFMÇmÁmÃo÷"Ù7B°u¸d�˜×+Ñ+¨DÓ1Ò2ó"ó ˆKð ˆFØ&ò ‘��4Ø˜ ™
’?Ø$×+Ñ+¨AÔ.Ø ×'Ñ'¬¨T«
Ô3Ø‘ð	ô .¨h¸¿¹Ó8HÓIˆLØˆIÜ" <Ó0ò 5�Ø% hÑ/�Ø!%×!3Ñ!3°JÓ!?�Ø×!Ñ! .°&Ô9Ø&4�	˜(Ò#ð	5ñ 1°¸wÓGˆLð ×Ñ˜^¨XÔ6Ø×Ñ˜^¨ZÔ8Ø×Ñ˜\¨6Ô2Ø×Ñ˜_¨iÔ8Ø×ÑÐ0°,Ô?à!Ð!ùòy >ùò4Dùó"s   Á?H8ÃH=ÄI
c                 óÄ  •— ‰j                  d«      }‰j                  d«      }‰j                  d«      }‰j                  d«      }‰j                  d«      }‰j                  d«      }	‰j                  d«      }
t        j                  d‰||«       t        j                  ‰|j                  «       «      5 }t        j                  |«      }d	d	d	«       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}|j!                  «       D ]t  \  }}| j#                  |t$        j&                  t$        j(                  z  ¬«      }|j+                  | ‰|j,                  «      f«       t/        |«      ||<   t1        ||«      }Œv |j3                  «        |d	|dz    }d}g }d}|D ]S  \  }}||dz   k7  r$|j+                  |«       |j+                  |g«       n|d   j+                  |«       t1        ||«      }|}ŒU dj5                  |«      j7                  d«      }‰j                  ||«        ‰||«      }‰j                  |
|«       ||d <   ‰j9                  ||«       ‰j9                  ||«       ‰j9                  ||«       ‰j9                  |	|«       |S # 1 sw Y   �ŒŒxY 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 widthsrÙ  zSUBSET %r:%d characters: %sNzSUBSET %r:%d %d -> %drª  ÚCIDFontType2ÚAdobeÚIdentityr   )ÚRegistryÚOrderingÚ
Supplement)r©   rª   rq  ÚCIDSystemInfor{  ÚWÚCIDToGIDMapÚType0z
Identity-H)r©   rª   rq  rr  ÚDescendantFontsrß  Ú	FontFile2r²  rL  ú i   rá  r#   rš  rÃ  r¤  rÅ  rå  )rº  r[  r\  r$   Úget_glyphs_subsetr(  Úfont_as_filerU   ÚstatÚst_sizeÚ	getbufferÚnbytesr   rK   rO  rj  r^   r{  r   r|  râ  r*   r~  Úchrr—   Úsortr+   rÎ   rk  )rˆ  rÊ  r*  r»  r¶  ÚcidFontDictObjectÚtype0FontDictObjectÚcidToGidMapObjectr·  ÚwObjectrè  r^  ÚfontdataÚcidFontDictÚtype0FontDictÚcid_to_gid_mapr—  Ú	max_ccoder�  rì  ÚglyphrÐ  ÚwÚ	max_widthr}   rÕ  rÁ  rÛ  r×  r)  râ   s                             €€€€€r4   ÚembedTTFType42z(PdfFile.embedTTF.<locals>.embedTTFType42Õ  sq  ø€ à!×/Ñ/Ð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Ð4°hÀÈgÔVÜ ×2Ñ2°8Ø3:·>±>Ó3CóEð @ØHNÜ*×7Ñ7¸Ó?�÷@ô �J‰JØ'¨°<Ü—‘˜Ó!×)Ñ)¨8×+=Ñ+=Ó+?×+FÑ+Fôô ˜8Ó$ˆDô ˜V›Ü Ó/Ø#à 'Ø *Ø"#ñ"%ð #1ØØ0ñˆKô ˜V›Ü ›=Ø#Ü  Ó.Ø$5Ð#6Ø/ñˆMð '5ˆJ�{Ñ#Ø×ÑØ × 1Ñ 1Ó 3Ø  (×"4Ñ"4Ó"6×"=Ñ"=Ð>ð ô @ð
 #˜V e™^ˆNØˆFØˆIØ&Ÿ}™}›ò 2‘��tØŸ™¨Ü.7×.@Ñ.@Ä9×CWÑCWÑ.Wð (ó Y�à—‘˜u¡c¨%×*;Ñ*;Ó&<Ð=Ô>Ü(+¨D«	�˜uÑ%Ü  yÓ1‘	ð2ð �K‰KŒMØ+¨N¨Y¸©]Ð;ˆNàˆJØˆAØˆIØ &ò #‘��uØ˜J¨™NÒ*Ø—H‘H˜U”OØ—H‘H˜e˜WÕ%à�b‘E—L‘L Ô'Ü 	¨5Ó1�	Ø"‘
ð#ð  ŸW™W ^Ó4×;Ñ;¸JÓGˆNØ×ÑÐ/°Ô@ñ 1°¸wÓGˆLØ×ÑÐ0°,Ô?à%.ˆJ�zÑ"ð ×ÑÐ.°Ô<Ø×ÑÐ0°-Ô@Ø×Ñ˜^¨ZÔ8Ø×Ñ˜W aÔ(à&Ð&÷e@ñ @ús   Â5MÍMr¾   rZ   Úpcltr   )Ú	capHeightÚxHeightÚpostÚitalicAngle©r   r   Fr#   r£  é    rx  r{  rÚ  r  r  )
r©   rz  r©  r¦  rª  r«  r¬  r­  r¡  r°  rw  é*   N)r   r\   ra  rz  r+  Úpostscript_namerÎ   rK   Úget_sfnt_tableÚ
face_flagsÚstyle_flagsr   ÚFIXED_WIDTHr   ÚITALICr€  ÚascenderÚ	descender)râ   rÛ  rÊ  r*  rˆ  rô  r  r  r  ÚffÚsfrº  ÚsymbolicrB   r»  rÁ  rÖ  r×  r)  s   ``             @@@@r4   rl  zPdfFile.embedTTFa  sÓ  ý€ ä˜Ó!ˆÜ—<‘< Ñ/ˆà ×-Ñ-°tó 		(ö	 ÷:E	"ð E	"÷N]	'ð ]	'ðB ×,Ñ,¨T×-AÑ-AÀ7ÓKˆØ—.‘. ¨)Ó4ˆÜ�w“-ˆØ×"Ñ" 6Ó*ÒL¸AÈ!Ñ.LˆØ×"Ñ" 6Ó*ÒE¨}¸fÐ.EˆØ�_‰_ˆØ×ÑˆàˆØˆÜ× Ñ  BÑ&Ø�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Š=Ù   |°W¸jÓIÐIØ˜Š^Ù! $¨°g¸zÓJÐ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Ì  rÊ  rZ  rÍ  rK   )râ   ÚalphaÚstaterL   s       r4   Ú
alphaStatezPdfFile.alphaStatec  ss   € ð × Ñ ×$Ñ$ U¨DÓ1ˆØÐØ˜‘8ˆOä�D×)Ñ)Ó*ˆàœD Ó-Ø ™(¨%°©(ñ4ð 5ð 	×Ñ˜Ñð ˆr6   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«  ÚFormÚTransparencyÚ
DeviceGray)r¨   ÚCS)r#   r   r   r#   r   r   r®  r¨   )r   r   r#   r#   )r©   rª   ÚFormTypeÚGroupÚMatrixrþ  ÚBBox)
rÎ  rÊ  rZ  rÏ  rº  rK   rÐ  r*   r  rP  )râ   Úsmaskr/  rL   ÚgroupObs        r4   Ú_soft_mask_statezPdfFile._soft_mask_statep  s  € ð ×&Ñ&×*Ñ*¨5°$Ó7ˆØÐØ˜‘8ˆOä�D×'Ñ'Ó(ˆØ×$Ñ$Ð%GÓHˆàä˜[Ó)Øä  ›LÜ˜lÓ+Ø˜#Ø ñ	ñ	ð)
ˆ×Ñ˜uÑ%ð 	×Ñ×%Ñ%Øä˜Y›Ü ›<Øä˜nÓ-Ü˜|Ó,ñò -Ø'¨#¨u¨Ð6Ú$ñô �#‹YœŸ
™
Ð#ð'
ô 	ð  ˆr6   c                 ó¶   — | j                  | j                  t        g | j                  j	                  «       ¢| j
                  j	                  «       ¢«      «       y r>   )rk  r¿  rÕ   rÌ  r(  rÎ  rå   s    r4   r1  zPdfFile.writeExtGSTates¤  sT   € Ø×ÑØ×!Ñ!Üð Ø×!Ñ!×(Ñ(Ó*ðà×'Ñ'×.Ñ.Ó0ðó õ	
r6   c                 ó¦   — | j                   D ]B  \  }}}| j                  |j                  d |«        | j                  |Ž  | j	                  «        ŒD y r>   )rÐ  r  rà   r  r  )râ   r<  Ú
attributesÚcontents       r4   r2  zPdfFile._write_soft_mask_groups­  sL   € Ø'+×'=Ñ'=ò 	Ñ#ˆB�
˜GØ×Ñ˜RŸU™U D¨*Ô5ØˆD�K‰K˜Ñ!Ø�N‰NÕñ	r6   c                 óÜ   — |\  }}}}|�t        |«      }|�t        |«      }||||f}| j                  j                  |d «      }|�|S t        | j                  «      }|| j                  |<   |S r>   )r˜   rÑ  rÊ  rZ  rÒ  )râ   Úhatch_styleÚedgeÚfaceÚhatchÚlwÚpatternrL   s           r4   ÚhatchPatternzPdfFile.hatchPattern³  s„   € à +Ñˆˆd�E˜2ØÐÜ˜“;ˆDØÐÜ˜“;ˆDØ˜T 5¨"Ð-ˆà×&Ñ&×*Ñ*¨;¸Ó=ˆØÐØˆNä�D×+Ñ+Ó,ˆØ,0ˆ×Ñ˜[Ñ)Øˆr6   ú3.10c                 óŒ   — | j                   j                  «       D �����ci c]  \  }\  }}}}||||f“Œ c}}}}}S c c}}}}}w r>   )rÑ  r^   )râ   rg   r…   r†   ÚhÚls         r4   rà  zPdfFile.<lambda>Ä  sJ   € Ø,0×,@Ñ,@×,FÑ,FÓ,H÷Cò CÙ(˜™L˜Q  1 aˆˆAˆq�!ˆ9‰öC€ ùö Cs   ¡=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                  |d   |d   |d
   t        j                  «       | j                  |t        j                  «        | j                  | j!                  t#        j$                  |
«      t'        «       j)                  |«      d¬«      Ž  | j                  t        j*                  «       | j-                  «        �ŒÕ | j/                  | j0                  |«       y c c}w )Nç      R@zhatch patternÚProcsetsr©  r­  r#   r   rü  )	r©   ÚPatternTypeÚ	PaintTypeÚ
TilingTyper?  ÚXStepÚYSteprþ  r>  rv  F©Úsimplify)rÕ   rÑ  r^   rº  rÚ  rK   r  rà   r~   r  r  r<  r=  r5  r+  rN  ÚpathOperationsr    rK  r   Úscaler)  r  rk  rÀ  )râ   Ú	hatchDictÚsidelenrH  rL   r<  rB   ÚresÚ
stroke_rgbÚfill_rgbrK  rL  s               r4   r3  zPdfFile.writeHatchesÈ  sù  € Ü“Fˆ	ØˆØ!%×!5Ñ!5×!;Ñ!;Ó!=ó "	Ñˆ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¯;©;¸Ñ+;Ð<ñ>ô?ð /:Ñ+ˆJ˜ %¨Ø�K‰K˜
 1™ z°!¡}°jÀ±mÜ×(Ñ(ô*àÐ#Ø—‘˜H Q™K¨°!©°h¸q±kÜ×/Ñ/Ø˜q '¨7´B·L±LÜŸG™Gô%ð �K‰K˜
 1™ z°!¡}°jÀ±mÜ×+Ñ+ô-ð �K‰K˜œBŸO™OÔ,àˆD�K‰K˜×,Ñ,Ü—
‘
˜5Ó!Ü“
× Ñ  Ó)Øð -ó  ñ !ð �K‰KœŸ™Ô'à�N‰NÖðE"	ðF 	×Ñ˜×)Ñ)¨9Õ5ùò? Ns   ÁH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 )rK   r)   rÓ  rº  r*   )râ   ÚpointsÚcolorsrL   r<  s        r4   ÚaddGouraudTriangleszPdfFile.addGouraudTrianglesð  s\   € ô$ �FœS ×!6Ñ!6Ó7Ñ7Ó8ˆØ×ÑÐ"3°D°6Ð :Ó;ˆØ×Ñ×$Ñ$ d¨B°¸Ð%?Ô@Ø�Rˆxˆr6   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#   rv  ©r#   r£  r£  rw  ©Úaxisró   l   ÿÿ r  é   r  r:  F)ÚShadingTypeÚBitsPerCoordinateÚBitsPerComponentÚBitsPerFlagÚ
ColorSpaceÚ	AntiAliasÚDecode)rº  Úu1)re  z>u4)rv  rf  rt  ©Údtyperº  re  g     ào@)rÕ   rÓ  ÚshapeÚreshaperÆ   r–   r—   r  rà   rK   Úemptyrê   Útobytesr  rk  rÁ  )râ   ÚgouraudDictrL   r<  re  rf  rw  Úflat_pointsÚcolordimÚflat_colorsÚ
points_minÚ
points_maxÚfactorÚ	streamarrs                 r4   r4  zPdfFile.writeGouraudTriangles  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 	×Ñ˜×+Ñ+¨[Õ9r6   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Ô  rÊ  rà   rZ  rÕ  rº  )râ   r;  ÚentryrL   r<  s        r4   ÚimageObjectzPdfFile.imageObject3  so   € ð —‘× Ñ ¤ E£¨DÓ1ˆØÐØ˜‘8ˆOä�D—O‘OÓ$ˆØ×Ñ &¨¨ Ó0ˆØ#(¨$°Ð"3ˆ�‰”R˜“YÑØˆr6   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Ã  rv  rw  ÚC)Úorderr£  ).Nr~  )ÚndimrÆ   Úarrayrw  Úall)râ   ÚimÚrgbr.  s       r4   Ú_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ð ˜�:Ðð �Ø˜�:Ðr6   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.
        re  )rñ  rl  r6   Ns   !L4s)ó   IHDRó   PLTEó   IDATztruncated datar�  r‘  r’  s   IENDr#   r£  )	r   ÚsaveÚseekÚstructÚunpackÚreadr)   ÚRuntimeErrorrX   )	râ   ÚimgÚbufferÚpng_dataÚ	bit_depthÚpaletter3   rÙ   ro  s	            r4   Ú	_writePngzPdfFile._writePngV  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Ð+Ð+r6   c           	      óf  — |j                   \  }}}t        d«      t        d«      ||t        dddœ|   «      ddœ}|r||d<   t        j                  d	   �rX|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                  |«      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/                  |j1                  «       «       | j3                  «        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#   rw  rl  )r©   rª   ÚWidthÚHeightrq  ro  r7  r\  rÃ  r#   rj  é
   )Ú	PredictorÚColorsÚColumnsró   )Ú	maxcolorsrw  Nru  r   é   rv  )ÚsorterÚPzinvalid PNG headerÚIndexedrq  ro  r¥  zlength of image stream)re  )rw  rK   r\   ra  Úsqueezer   Ú	fromarrayÚ	getcolorsr)   rÆ   rŠ  Úuint8ÚastypeÚuint32ÚargsortÚsearchsortedÚconvertÚ
putpaletterž  r˜  r  rº  r¹  rê   rz  r  )râ   ro  rà   r@  r~   r}   Úcolor_channelsrÚ   re  r™  Ú
img_colorsÚ
num_colorsrã  ÚcolorÚcompr�  Ú	palette24Úrgb24ÚindicesÚrgb8r›  rœ  s                         r4   Ú	_writeImgzPdfFile._writeImgs  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Ó+×3Ñ3°CÓ8�Ø—‘˜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 )Nr@  )rÔ  r(  rŽ  rº  r¿  rà   )râ   r™  rL   r<  ro  ÚadataÚsmaskObjects          r4   r5  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ñ	5r6   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Ö  rÊ  rK   r)   rº  Úget_extents)râ   r?  r@  r+  r*  rL  Ú	joinstyleÚcapstyleÚpathopsÚkeyr0   rL   r<  r€  s                 r4   Ú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Øˆr6   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«  r8  ©r©   rª   r?  )rÖ  r^   Úpaddedr  rà   rK   rÖ   Úextentsr  r  r  r  rC  Ú	capstylesrD  r.  r  )
râ   rÇ  r+  r*  rÅ  rÆ  rL   r<  r€  rL  s
             r4   r6  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Öñ'	r6   c                 ó  — t        dt        | j                  «      z  «      }| j                  dt        | j                  «      z  «      }| j                  j	                  |||||j                  «       |j                  «       |||f	«       |S )NzP%dzpath %d)rK   r)   r×  rº  r*   Úget_joinstyleÚget_capstyle)	râ   r°   r?  r@  rB  rC  rD  rL   r<  s	            r4   ÚpathCollectionObjectzPdfFile.pathCollectionObjectï  sx   € Ü�EœC §
¡
›OÑ+Ó,ˆØ×Ñ 	¬C°·
±
«OÑ ;Ó<ˆØ�
‰
×ÑØ�4˜  B×$4Ñ$4Ó$6¸¿¹Ó8IØ�f˜gð'ô	(ð ˆr6   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«  r8  rÌ  )r×  r]  rÄ  rÆ   r‹  rÈ   rÎ  rÍ  rÖ   r  rà   rK   r  r  r  r  rC  rÏ  rD  r.  r  )râ   rL   r?  r@  r<  rÅ  rÆ  rB  rC  rD  rÇ  r€  rÎ  s                r4   r7  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Öñ%	r6   c                 ó  — t        t        j                  | ||||dt        j                  j
                  t        j                  j
                  dt        j                  j
                  t        j                  j
                  gd«      «      gS )Nr  r6   T)	r  r"   r„  r  r7  r'  r6  r4  r0  )r?  r…  rO  r\  Úsketchs        r4   r]  zPdfFile.pathOperations  sg   € äœ×0Ñ0Ø�)˜T 8¨VØÜ�Y‰Y�_‰_œbŸi™iŸo™o¨s´B·J±J×4DÑ4DÜ�\‰\×Ñð!àóó ð ð 	r6   c                 ó´   — |r-dd| j                   dz  | j                  dz  f}|j                  }nd }d}| j                  |||||¬«      } | j                  |Ž  y )Nç        rü  F)r\  r×  )r}   r~   Úshould_simplifyr]  r  )râ   r?  r…  rO  r×  r\  Úcmdss          r4   Ú	writePathzPdfFile.writePath  sg   € ÙØ˜˜dŸj™j¨2™o¨t¯{©{¸RÑ/?Ð@ˆDØ×+Ñ+‰HàˆDØˆHØ×"Ñ" 4¨°DÀ8Ø*0ð #ó 2ˆàˆ�‰�TÒr6   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   )rZ  r²  r³  r*   rÝ   )râ   rL   rà   s      r4   rº  zPdfFile.reserveObject   s6   € ô �$×"Ñ"Ó#ˆØ�‰×Ñ˜t Q¨˜oÔ.Ü˜‹}Ðr6   c                 ór   — | j                   j                  «       | j                  z
  | j                  |   d<   y ©Nr   )r]  rd  r¶  r³  rá   s     r4   r`  zPdfFile.recordXref+  s(   € Ø $§¡§¡£°·±Ñ ?ˆ�‰�rÑ˜1Òr6   c                 ó^   — | j                  |j                  «       |j                  || «       y r>   )r`  rà   rê   )râ   Úobjectrë   s      r4   rk  zPdfFile.writeObject.  s    € Ø�‰˜Ÿ	™	Ô"Ø�‰�X˜tÕ$r6   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 
)	r]  rd  r¶  Ú	startxrefrê   r)   r³  r(   ÚAssertionError)râ   r1   ÚoffsetÚ
generationrL   rÈ  r  s          r4   r9  zPdfFile.writeXref2  s¨   € àŸ™Ÿ™›¨$¯.©.Ñ8ˆŒØ�
‰
�?¤S¨¯©Ó%8Ñ8Ô9Ü-6°t·~±~Ó-Fò 	!Ñ)ˆAÑ)�˜
 DØˆ~Ü$Ø2°a¸°YÑ>ó@ð @ð #Ð&7Ò7‘d¸T�Ø*¨f°jÀ#Ð-FÑF�Ø—
‘
˜4Õ ñ	!r6   c                 ó|   — | j                  d«      | _        | j                  | j                  | j                  «       y)z8Write out the info dictionary, checking it for good formrf   N)rº  Ú
infoObjectrk  rÄ  rå   s    r4   r8  zPdfFile.writeInfoDict?  s.   € ð ×,Ñ,¨VÓ4ˆŒØ×Ñ˜Ÿ™¨$¯-©-Õ8r6   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    r4   r:  zPdfFile.writeTrailerE  sZ   € ð 	�
‰
�<Ô Ø�
‰
”7Ü˜Ÿ™Ó(Ø—_‘_Ø—_‘_ñ&ó'ô 	(ð
 	�
‰
Ð0°4·>±>ÑAÕBr6   r>   rs  ©r   )NNN©FN)r¤  )>rí   rî   rï   rð   rã   r	   Ú
deprecatedÚpropertyÚ	fontNamesÚmulti_byte_charprocsÚtype1Descriptorsrø  r  r  Ústaticmethodr%  r+  rE  rG  rê   r  r  r  rO  r/  rc  re  r0  rj  rh  rŠ  Údelete_parameterr‰  rÏ  rl  r0  rB  r1  r2  rN  ÚhatchPatternsr3  rg  r4  r…  rŽ  rž  r¿  r5  rÉ  r6  rÓ  r7  r]  rÜ  rº  r`  rk  r9  r8  r:  Ú__classcell__©rÞ  s   @r4   r�  r�  o  sÿ  ø„ Ùõe9ðN (��—‘ Ó'©Ñ1MÓ(NÓO€IØ2˜?˜4Ÿ?™?¨6Ó2±8¹LÓ3IÓJÐØ.��t—‘ vÓ.©x¹Ó/EÓFÐà€T‡_�_�VÓØñó ó ðò("ò: .@ó -ð ñ ó ð ð, ñQó ðQòò>	ò+òó?ò&ð
 04ô ò
8óòB	ò1ò$
ò2òh
ð €T×Ñ˜6 :Ó.òDó /ðDðLÐò*@KòDò2òh
òòð" ,�O�D—O‘O FÓ+©Hñ 6ó -ó €Mò&6òPò.*:òX
òò.,ó:=ò~5òò:ò,òð* òó ðó	ó	ò@ò%ò!ò9ö	Cr6   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d
œd„Z	 dd„Zd„ Zdd„Zd„ Zddœd„Zd„ Zd„ Zdd„Zd„ Zˆ xZS )rX  zfonts/pdfcorefontsrR  c                 ól   •— t         ‰| �  ||«       || _        | j                  «       | _        || _        y r>   )r°  rã   rì   Únew_gcr°   Ú	image_dpi)râ   rì   rü  r~   r}   rÞ  s        €r4   rã   zRendererPdf.__init__V  s-   ø€ Ü‰Ñ˜ Ô'ØˆŒ	Ø—+‘+“-ˆŒØ"ˆ�r6   c                 óf   —  | j                   j                  | j                  j                  «       Ž  y r>   )rì   r  r°   rE  rå   s    r4   rE  zRendererPdf.finalize\  s#   € Øˆ�	‰	×Ñ˜$Ÿ'™'×*Ñ*Ó,Ò-r6   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Õ  T)ÚisRGBAr£  rw  r  )Úgetattrrÿ  Úget_rgbÚset_foregroundÚ_forced_alphaÚ_alphar  r)   Ú_rgbr°   Údeltarì   r  )râ   r°   Ú	fillcolorÚ	orig_fillÚorig_alphasr  s         r4   Ú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Ñ$ð "ˆŒØ*ˆÕr6   c                 ó    — | j                   dz  S )NrT  )rü  rå   s    r4   Úget_image_magnificationz#RendererPdf.get_image_magnificationz  s   € Ø�~‰~˜dÑ"Ð"r6   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 )Nrv  r   r  rT  r#   )rw  Ú	set_alphar  rü  rì   r…  r  r  rF  r8  r9  rG  ÚfrozenÚ	to_values)râ   r°   rB   r|   rŒ  r…  rQ  r  ÚimobÚtr1Útr2Útr3Útr4Útr5Útr6s                  r4   Ú
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·;±;õ@r6   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°   r?  r…  ÚrgbFaces        r4   Ú	draw_pathzRendererPdf.draw_path›  sk   € à�‰�b˜'Ô"Ø�	‰	×ÑØ�)Ø�tˆOÒ; × 1Ñ 1Ó 3°tÐ ;Ø× Ñ Ó"ô	$ð 	�	‰	×Ñ˜Ÿ™Ÿ™›Õ)r6   ©Úhatchcolorsc                óª  — d}t        j                  |«      }t        j                  |«      }|€g }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 }g }t        | j                  |||«      «      D ]ž  \  }\  }}| j                  j                  ||||«      }|j                  |«       t        |j
                  «      r?|j                  |«      }|j                  |j                   d	z  |j"                  d	z  f«       ŒŽ|j                  d
«       Œ  t%        t'        ||«      «      }| j                  j                   dz  }| j                  j"                  dz  }| j                  j(                  }  | | j*                  j-                  «       Ž  d
\  }!}"| j/                  |||||||	|
||||¬«      D ]é  \  }#}$}%}&}'d|#cxk  r|k  r^n n[d|$cxk  r|k  rPn nM| j1                  |&|'«       |#|!z
  |$|"z
  })}( | dddd|(|)t2        j4                  |%t2        j6                  «	       |#|$}"}!Œr||%   \  }*}+|* |#cxk  r||*z   k  rn n|+ |$cxk  r||+z   k  sn Œž| j1                  |&|'«       |#|!z
  |$|"z
  })}( | dddd|(|)t2        j4                  |%t2        j6                  «	       |#|$}"}!Œë  | | j*                  j9                  «       Ž  y )NTFrw  )r   rw  rÙ  r   rË  r$  rv  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}   r~   rÕ   Úzipr  r°   ÚpushÚ_iter_collectionr  r  r8  r9  Úpop),râ   r°   Úmaster_transformr×  Úall_transformsÚoffsetsÚoffset_transÚ
facecolorsÚ
edgecolorsÚ
linewidthsÚ
linestylesÚantialiasedsÚurlsÚoffset_positionr%  Úcan_do_optimizationrC  rD  Úlen_pathÚuses_per_pathÚshould_do_optimizationrB  Ú
path_codesÚpath_extentsr1   r?  r…  rL   r€  Úpath_extent_mapÚcanvas_widthÚcanvas_heightr  ÚlastxÚlastyÚxoÚyoÚpath_idÚgc0r"  ÚdxÚdyÚextent_xÚextent_ys,                                               r4   r*  z RendererPdf.draw_path_collection¤  sö  € ð #ÐÜ—Z‘Z 
Ó+ˆ
Ü—Z‘Z 
Ó+ˆ
àÐØˆKä�:ŒØˆ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Ô#ô
 �4—=‘=Ô!Ø×'Ñ'¨	Ó2�à×#Ñ# T§Z¡Z°!¡^°T·[±[À1±_Ð$EÕFà×#Ñ# FÕ+ð	,ô" œs :¨|Ó<Ó=ˆà—y‘y—‘¨Ñ+ˆØŸ	™	×(Ñ(¨2Ñ-ˆà—‘×!Ñ!ˆÙ�—‘—‘“ÑØ‰ˆˆuØ-1×-BÑ-BØ�J ¨Ø˜J¨
°JØ˜d OÀð .Có .Nò 	"Ñ)ˆB��G˜S 'ð �BÔ&˜,Õ&¨1°Ô+C°mÕ+Cà—‘˜c 7Ô+Ø˜e™ R¨%¡Z�B�Ù�q˜!˜Q  2 r¬2×+;Ñ+;¸WÜ—~‘~ô'à! 2�u�Øð "1°Ñ!9ÑˆH�hØ�I Ô> |°hÑ'>Õ>Ø!˜	 RÔC¨=¸8Ñ+CÔCØà�M‰M˜#˜wÔ'Ø˜%‘Z  e¡�ˆBÙ�1�a˜˜A˜r 2¤r×'7Ñ'7¸Ü—>‘>ô#à˜r�5‰Eð?	"ñ@ 	�—‘—‘“Òr6   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)rO  r\  rš  r#   )r)   r   Údraw_markersr  r+  r*  rì   r  rÉ  r°   Ú
_linewidthrÑ  rÒ  r  rF  Úiter_segmentsr}   r~   r8  r9  rG  )râ   r°   Úmarker_pathÚmarker_transr?  r@  r"  Úlen_marker_pathÚusesr+  r*  r  ÚmarkerrD  rE  rœ   rž  rB   r|   rJ  rK  s                        r4   rO  zRendererPdf.draw_markers  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�{‰{Õr6   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   rw  r#   rv  ri  r  )r   r   rw  )r)   r‰  rw  rx  r…  rì   rg  r  r  r  r  rP  rÆ   ÚallcloserB  rF  rE  rG  )râ   r°   re  rf  r@  rw  ÚtpointsrL   rã  r  r.  Úsmask_obÚgstates                r4   Údraw_gouraud_trianglesz"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§\¡\ØœŸ™Ü—;‘;õ r6   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  rH  rx   ry   r{   rz   rJ  )râ   rB   r|   r   ÚoldxÚoldyÚoldangles          r4   Ú_setup_textposzRendererPdf._setup_textposb  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§:¡:Õ.r6   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\  }}| j                  j                  t        j(                  «       |
D ]ù  \  }}}}}}| j                  j*                  j-                  |||«      \  }}t/        |j0                  |j2                  «      }| j5                  ||d||«       ||}}|||f|k7  rJ| j                  j                  | j                  j7                  ||«      |t        j8                  «       |||f}| j                  j                  | j;                  |g|«      t        j<                  «       Œû | j                  j                  t        j>                  «       |D ]a  \  }}}}| j                  j                  t        j                  ||||t        j@                  t        jB                  t        jD                  «       Œc | j                  j                  t        jD                  «       y )Nrü  rÃ  r#   r½  rs  r  r   )#Ú
_text2pathÚmathtext_parserÚparser¯   rì   rØ  r*   r´   r\   ra  rx   ry   r  r  rF  r{   rz   r8  r  r
  r2  rË  Útrack_glyphr   ra  r†  ra  rc  rI  Ú_encode_glyphsrL  r3  r5  r+  rG  )râ   r°   rB   r|   r2   rˆ  r   r}   r~   ÚdescentÚglyphsÚrectsrÖ  r‚   Ú	prev_fontr^  r_  rˆ  Úfontsizer�  r‹  ÚoxÚoyrÊ  Úsubset_charcoder†  s                             r4   Údraw_mathtextzRendererPdf.draw_mathtextl  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à�	‰	×ÑœŸ™Ô'Ø:@ò 	&Ñ6ˆD�(˜E ;°°BØ,0¯I©I×,HÑ,H×,TÑ,TØ�e˜[ó-*Ñ)ˆL˜/ä  §¡¨T¯_©_Ó=ˆIØ×Ñ  B¨¨4°Ô6Ø˜R�$ˆDØ˜<¨Ð2°iÒ?Ø—	‘	× Ñ  §¡×!3Ñ!3°I¸|Ó!LÈhÜ!#§¡ô0à% |°XÐ=�	Ø�I‰I×Ñ˜T×0Ñ0°/Ð1BÀHÓMÜŸW™Wõ&ð	&ð 	�	‰	×ÑœŸ™Ô%ð &+ò 	AÑ!ˆB��E˜6Ø�I‰I×ÑœRŸX™X r¨2¨u°fÜŸ\™\¬2¯7©7´B·K±KõAð	Að
 	�	‰	×ÑœŸ™Õ%r6   )Ú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 ]ï  }|j                  |k7  rN| j                  j                  |j                  «      }|d||j                  j                  ggz  }|j                  }|d|j                   |j"                  t%        |j&                  g«      g|j                   |j                  z   ggz  }| j                  j(                  j+                  |j                  |j&                  |j,                  «       Œñ 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
  }t1        |«      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Œ¿t3        «       j5                  |«      j7                  ||«      }| j9                  ||j:                  «       | j                  j=                  t>        j@                  «       d\  }}}}|D ]ê  }|d   dk(  r2| j                  j=                  |d   |d   t>        jB                  «       Œ=|d   dk(  r¥|jE                  |d   |d   f«      \  }}| jG                  |||||«       ||}}t/        |d   «      dk(  r1| j                  j=                  |d   d   t>        jH                  «       Œ¼| j                  j=                  |d   t>        jJ                  «       ŒêJ ‚ | j                  j=                  t>        jL                  «       | jO                  «       }|jQ                  |«       |jS                  d«       tT        jV                  tT        jX                  tT        jX                  tT        jX                  tT        jZ                  g}|j\                  D ]L  \  }}}}tU        ||g||z   |g||z   ||z   g|||z   gddgg|«      } | j_                  || ||j:                  «       ŒN y # 1 sw Y   �Œ§xY w)Nrü  rÃ  r#   rˆ  r  )r   r   Nrv  r   r£  gš™™™™™¹?rw  g     @�@rÕ  )0Úget_texmanagerÚget_size_in_pointsÚmake_dvir   ÚDvir¯   rì   rØ  r*   r´   r}   r~   r  rˆ  re  ÚsizerB   r|   rÑ   r  rË  rf  Úindexr)   Úabsr   Ú
rotate_degrÓ   r  r
  r  r  r2  rI  r…  ra  rL  rM  r3  rû  Úcopy_propertiesÚset_linewidthr    ÚMOVETOÚLINETOÚ	CLOSEPOLYÚboxesr#  )!râ   r°   rB   r|   r2   rˆ  r   rq  Ú
texmanagerrl  ÚdvifileÚdvir  ÚoldfontÚseqr  ré  r1   ÚcurxÚeltÚnxtrå  ÚmytransÚcuryr^  r_  ÚboxgcrÇ  Úx1Úy1rQ  r  r?  s!                                    r4   Údraw_texzRendererPdf.draw_tex™  s–  € à×(Ñ(Ó*ˆ
Ø×*Ñ*Ó,ˆØ×%Ñ% a¨Ó2ˆÜ�[‰[˜ "Ó%ð 	¨Ø‰EˆD÷	ð �:‰:‹<Ð#Ø�I‰I×"Ñ" 2Ñ& qÑ)×0Ñ0Ô1EØ�A�q˜$Ÿ*™* d§k¡k°5ó2:ô ;ð ˜R�ˆØ—I‘Iò 	XˆDØ�y‰y˜GÒ#ØŸ)™)×/Ñ/°·	±	Ó:�Ø˜ ¨$¯)©)¯.©.Ð9Ð:Ñ:�ØŸ)™)�Ø�V˜TŸV™V T§V¡V¬e°T·Z±Z°LÓ.AÐ-BÀDÇFÁFÈ4Ï:É:ÑDUÐVÐWÑWˆCØ�I‰I×(Ñ(×4Ñ4°T·Y±YÀÇ
Á
ÈDÏJÉJÕWð	Xð 'Ñˆˆ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ñ	:÷U	ñ 	ús   Á	S3Ó3S=c                 óP   — |dv rt        |«      S dj                  d„ |D «       «      S )Nr   r6   c              3   ó@   K  — | ]  }|j                  d d«      –— Œ y­w)rv  ÚbigN)Úto_bytes)rŽ   r  s     r4   r�   z-RendererPdf._encode_glyphs.<locals>.<genexpr>ð  s   è ø€ ÒE°U˜Ÿ™ q¨%×0ÑEùs   ‚)rÑ   r+   )râ   r^  rÖ  s      r4   rg  zRendererPdf._encode_glyphsí  s)   € Ø�vÑÜ˜“=Ð Ø�x‰xÑE¸fÔEÓEÐEr6   c                 ó8   — ddddœ|   }|j                  |d«      S )NÚcp1252rÀ   rÅ  )r#   rw  r  rZ   )rÎ   )râ   r2   rÖ  rõ  s       r4   Úencode_stringzRendererPdf.encode_stringò  s$   € Ø I°:Ñ>¸xÑHˆØ�x‰x˜ )Ó,Ð,r6   c	           
      óB
  ‡ ‡‡— ‰ j                  ||j                  «       |r‰ j                  ||||||«      S |j                  «       Š|�!|j	                  «       }	|j                  «       }
nd x}	}
t        j                  d   rÃ‰ j                  |«      }‰ j                  j                  t        j                  ‰ j                  j                  |«      ‰t        j                  «       ‰ j                  |||«       ‰ j                  j                  ‰ j!                  |d¬«      t        j"                  t        j$                  «       �nd‰ j'                  |«      }t        j                  d   Šˆˆˆ fd„}‰ j                  j                  t        j(                  «       t+        j,                  |«      }‰ j                  j                  t+        j.                  |«      t+        j0                  |«      t+        j0                  |«       t+        j.                  |«      ||t        j2                  «       g }d }d}‰ j                  j                  t        j                  «       t5        j6                  |||	|
¬«      D �]Ù  }‰ j                  j8                  j;                  |j<                  |j>                  |j@                  «      \  }}|j<                  |f|k7  r½ ||«       tC        |j<                  jD                  |j<                  jF                  «      }‰ j                  j                  ||«      }‰ j                  j                  |‰t        j                  «       ‰ j                  |jH                  dd|dd«       |j<                  |f}|jH                  }|jJ                  r< ||«       ‰ j                  j                  |jJ                  t        jL                  «       |jN                  r|jQ                  |jN                  «       |jQ                  |«       |jJ                  s�Œ¨ ||«       ‰ j                  j                  dt        jL                  «       �ŒÜ  ||«       ‰ j                  j                  t        j$                  «       ‰ j                  j                  t        jR                  «       |jU                  «       �g|jW                  ||	|
¬«       |jY                  «       \  }}‰ j                  jZ                  d   d   jQ                  t]        ||||d	z  |d	z  |«      «       y y )
NrR  r#   )rÖ  r½  c           
      ó6  •— | sy ‰j                   j                  t        j                  | t        «      D ��cg c]1  \  }}|t
        k(  rdt        |«      z  ‰z  n‰j                  |‰«      ‘Œ3 c}}t        j                  «       | j                  «        y c c}}w )Niüÿÿ)rì   r  r™   ÚgroupbyrÙ   rÅ   rZ  rg  r  rM  Úclear)Úkerns_or_charsÚtpÚgrouprl  rÖ  râ   s      €€€r4   Úoutput_singlebyte_chunkz6RendererPdf.draw_text.<locals>.output_singlebyte_chunk	  sŒ   ø€ Ù%ØØ—	‘	× Ñ ô
 '0×&7Ñ&7¸ÌÓ&M÷Oá"˜˜Uð :<¼uº�eœd 5›kÑ)¨HÒ4Ø×-Ñ-¨e°XÓ>ñ?ó Oô —K‘Kô!ð ×$Ñ$Õ&ùó	Os   ·6B
r   )ÚfeaturesÚlanguagerÃ  rx  )/r  r
  rp  rt  Úget_fontfeaturesÚget_languager\   ra  Ú_get_font_afmrì   r  r  r2  rc  rI  ra  r•  rL  r3  Ú_get_font_ttfrF  rx   ry   r{   rz   r8  r
   ÚlayoutrË  rf  Ú	ft_objectr•  r‹  r   ra  r†  rB   r|   rK  Ú	prev_kernr*   rG  r¯   Úset_textÚget_width_heightrØ  r´   )râ   r°   rB   r|   r2   rˆ  r   Úismathrq  rž  rŸ  rˆ  r�  r‚   Úsinglebyte_chunkrk  Úprev_start_xÚitemr^  rã  r†  Úft_namer}   r~   rl  rÖ  s   `                       @@r4   Ú	draw_textzRendererPdf.draw_textö  sá  ú€ ð
 	�‰�b˜"Ÿ'™'Ô"ÙØ×%Ñ% b¨!¨Q°°4¸Ó?Ð?à×*Ñ*Ó,ˆØÐØ×-Ñ-Ó/ˆHØ×)Ñ)Ó+‰Hà"&Ð&ˆH�xô �<‰<Ð,Ò-Ø×%Ñ% dÓ+ˆDØ�I‰I×ÑœRŸ]™]Ø!ŸY™Y×/Ñ/°Ó5°xÄÇÁôPà×Ñ  1 eÔ,Ø�I‰I×Ñ˜T×/Ñ/°¸AÐ/Ó>ÜŸW™W¤b§k¡kö3ð  ×%Ñ% dÓ+ˆDÜ—|‘| NÑ3ˆHö
'ð �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ØˆLà�I‰I×ÑœRŸ]™]Ô+Ü%×,Ñ,¨Q°¸xØ6>ô@ó 5�à#'§9¡9×#?Ñ#?×#KÑ#KØ—N‘N D§I¡I¨t×/?Ñ/?ó$AÑ �˜à—N‘N FÐ+¨yÒ8Ù+Ð,<Ô=Ü (¨¯©×)=Ñ)=Ø)-¯©×)BÑ)Bó!D�Ià"Ÿi™i×0Ñ0°¸FÓC�GØ—I‘I×$Ñ$ W¨h¼¿¹ÔFØ×'Ñ'¨¯©°°1°lÀAÀqÔIØ!%§¡°Ð 8�IØ#'§6¡6�LØ—6’6Ù+Ð,<Ô=Ø—I‘I×$Ñ$ T§V¡V¬R¯[©[Ô9Ø—>’>Ø$×+Ñ+¨D¯N©NÔ;Ø ×'Ñ'¨Ô1Ø—6”6Ù+Ð,<Ô=Ø—I‘I×$Ñ$ Q¬¯©Ö4ð+5ñ, $Ð$4Ô5Ø�I‰I×ÑœRŸ[™[Ô)Ø�I‰I×ÑœRŸ[™[Ô)à�:‰:‹<Ð#Ø�M‰M˜! h¸ˆMÔBØ ×1Ñ1Ó3‰MˆE�6Ø�I‰I×"Ñ" 2Ñ& qÑ)×0Ñ0Ô1EØ�A�q˜% "™* f¨r¡k°5ó2:õ ;ð $r6   c                 ó,   — t        | j                  «      S r>   )r  rì   rå   s    r4   rû  zRendererPdf.new_gcW	  s   € ä! $§)¡)Ó,Ð,r6   r>   r¦   rî  )rí   rî   rï   r   Ú_get_data_pathrY  Ú_use_afm_rc_namerã   rE  r  r  r  r#  r*  rO  r\  ra  rp  rŽ  rg  r•  r®  rû  r÷  rø  s   @r4   rX  rX  Q  s‡   ø„ à(�E×(Ñ(Ð)=Ó>€MØ+Ðô#ò.ó+ò6#ó@ó<*ð >Bônðb "ó$òL& óP/ò+&ðZ ;?ô R:òhFò
-ó_;öB-r6   rX  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     €r4   rã   zGraphicsContextPdf.__init__^	  s+   ø€ Ü‰ÑÔØ)ˆŒØ!+ˆÔØˆŒ	Øˆ�r6   c                 óN   — t        | j                  «      }|d= |d= t        |«      S )Nrì   r´  )rÕ   Ú__dict__Úrepr)râ   rs   s     r4   ræ   zGraphicsContextPdf.__repr__e	  s'   € Ü�—‘ÓˆØˆfˆIØˆhˆKÜ�A‹wˆr6   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   rw  rÙ  )rP  r	  r)   r
  rå   s    r4   r*  zGraphicsContextPdf.strokek	  sK   € ð —‘ !Ñ#ò =¨¯©°a©ò =Ü�T—Y‘Y“ 1Ñ$Ò;¨¯	©	°!©¸Ñ(;ð	>r6   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   Nrw  rÙ  )r)   rÿ  Ú_hatch)râ   Úargsrÿ  s      r4   r+  zGraphicsContextPdf.fillv	  sX   € ô ˆtŒ9Ø˜a™‰JàŸ™ˆJØ—‘ò AØ 4Ð'ò @Ü�j“/ QÑ&Ò>¨*°Q©-¸3Ñ*>ð	Br6   c                 óf   — t         j                  | j                  «       | j                  «       «      S )zo
        Return the appropriate pdf operator to cause the path to be
        stroked, filled, or both.
        )r  r.  r+  r*  rå   s    r4   r!  zGraphicsContextPdf.paint…	  s!   € ô
 �}‰}˜TŸY™Y›[¨$¯+©+«-Ó8Ð8r6   r   r#   rv  )Úbuttr}  Ú
projecting)Úmiterr}  Úbevelc                 ó@   — | j                   |   t        j                  gS r>   )rÏ  r  rD  ©râ   Ústyles     r4   Úcapstyle_cmdzGraphicsContextPdf.capstyle_cmd�	  s   € Ø—‘˜uÑ%¤r§}¡}Ð5Ð5r6   c                 ó@   — | j                   |   t        j                  gS r>   )r  r  rC  rÂ  s     r4   Újoinstyle_cmdz GraphicsContextPdf.joinstyle_cmd’	  s   € Ø—‘ Ñ&¬¯©Ð7Ð7r6   c                 ó&   — |t         j                  gS r>   )r  rN  )râ   r}   s     r4   Úlinewidth_cmdz GraphicsContextPdf.linewidth_cmd•	  s   € Ø”r—‘Ð'Ð'r6   c                 óP   — |\  }}|€g }d}t        |«      |t        j                  gS rß  )rÖ   r  rB  )râ   Údashesrå  Údashs       r4   Údash_cmdzGraphicsContextPdf.dash_cmd˜	  s/   € Ø‰ˆ�Øˆ<ØˆDØˆFÜ�T“
˜F¤B§J¡JÐ/Ð/r6   c                 ó\   — | j                   j                  |«      }|t        j                  gS r>   )rì   r0  r  rE  )râ   r.  ÚforcedÚeffective_alphasrL   s        r4   Ú	alpha_cmdzGraphicsContextPdf.alpha_cmdŸ	  s&   € Ø�y‰y×#Ñ#Ð$4Ó5ˆØ”b—l‘lÐ#Ð#r6   c                 ó6  — |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_cmdrK   r  r?  rì   rN  rA  )râ   rK  Úhatch_colorÚhatch_linewidthrH  rL   s         r4   Ú	hatch_cmdzGraphicsContextPdf.hatch_cmd£	  s„   € ÙØ�‰Ð*Ø×)Ñ)¨$¯/©/Ó:Ð:ä˜[Ó)¬2×+EÑ+EÐFÐFà&¨¯©¸ÀÐPˆKØ—9‘9×)Ñ)¨+Ó6ˆDÜ˜“O¤R×%?Ñ%?Øœ"×/Ñ/ð1ð 1r6   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#   rv  rw  )r\   ra  r  r:  r<  ©râ   r�  s     r4   Úrgb_cmdzGraphicsContextPdf.rgb_cmd¯	  s^   € Ü�<‰<Ð*Ò+ØˆIØˆq‰6�S˜‘VÔ%˜s 1™vÕ%Ø˜‘FœB×-Ñ-Ð.Ð.à/�S˜˜!�WÐ/œb×.Ñ.Ð/Ð/r6   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\   ra  r  r;  r=  rØ  s     r4   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Ð2r6   c                 ó    — t        | j                  «      }|j                  | «       | j                  |_        || _        t        j
                  gS r>   )r  rì   r{  r´  r  rF  )râ   r´  s     r4   r-  zGraphicsContextPdf.push¿	  s<   € Ü# D§I¡IÓ.ˆØ×Ñ˜tÔ$ØŸ™ˆŒØˆŒÜ—‘ˆzÐr6   c                 ó¬   — | j                   €J ‚| j                  | j                   «       | j                   j                   | _         t        j                  gS r>   )r´  r{  r  rG  rå   s    r4   r/  zGraphicsContextPdf.popÆ	  sA   € Ø�{‰{Ð&Ð&Ð&Ø×Ñ˜TŸ[™[Ô)Ø—k‘k×(Ñ(ˆŒÜ—‘ˆ}Ðr6   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´  Úextendr/  r-  r  r5  rO  r,  Úget_transformed_path_and_affiner�  r]  )râ   ÚcliprectÚclippathrÛ  r?  Úaffines         r4   Ú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Ð)ñ*ô+ð ˆr6   )rÞ  rß  )r	  r  r  )Ú	_capstyle)rÿ  )Ú
_joinstyle)rP  )Ú_dashes)r
  )rº  Ú_hatch_colorÚ_hatch_linewidthc           
      ó~  — g }d}| j                   D ]¸  \  }}d}|D ]6  }t        | |«      }t        ||«      }		 |�|	€||	u}nt        ||	k7  «      }|sŒ6 n |j                  dk(  r|rd}|sŒY|j                  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'  rw  Úanyrí   rà  Úsetattr)
râ   rþ   rÛ  Úfill_performedÚparamsÚcmdÚ	differentÚpÚoursÚtheirss
             r4   r  zGraphicsContextPdf.deltaî	  s\  € ð
 ˆØˆØŸ=™=ò 	8‰KˆF�CØˆIØò �Ü˜t QÓ'�Ü  ¨Ó*�ð	9Ø�| v ~Ø$(°Ð$6™	ä$(¨°©Ó$8˜	ò Ùðð" �|‰|˜{Ò*©~Ø �	âØ—<‘< ?Ò2Ø%)�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   ·CÁ?D:ÃA&D7Ä6D7c                 óœ   •— t         ‰| �  |«       t        |d| j                  «      }t        |d| j                  «      }|| _        || _        y)z5
        Copy properties of other into self.
        rÿ  r  N)r°  r{  r  rÿ  r  )râ   rþ   r  rÏ  rÞ  s       €r4   r{  z"GraphicsContextPdf.copy_properties
  sL   ø€ ô 	‰Ñ Ô&Ü˜E <°·±ÓAˆ	Ü" 5Ð*=Ø#'×#9Ñ#9ó;Ðà#ˆŒØ!1ˆÕr6   c                 óz   — g }| j                   �,|j                  | j                  «       «       | j                   �Œ,|S )zB
        Make sure every pushed graphics state is popped.
        )r´  rà  r/  )râ   rÛ  s     r4   rE  zGraphicsContextPdf.finalize
  s6   € ð ˆØ�k‰kÐ%Ø�K‰K˜Ÿ™›
Ô#ð �k‰kÑ%àˆr6   )rí   rî   rï   rã   ræ   r*  r+  r!  rÏ  r  rÄ  rÆ  rÈ  rÌ  rÐ  rÕ  rÙ  rÒ  r-  r/  rå  rì  r  r{  rE  r÷  rø  s   @r4   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Ðà	7¸ÐCð€Hò$ôL	2ör6   r  c                   ó‚   — e Zd ZdZ ej
                  ddd¬«      d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.
    rO  Ú
keep_emptyzThis parameter does nothing.)ÚaddendumNc                 ó.   — || _         || _        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).

        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)Ú	_filenameÚ	_metadataÚ_file)râ   rÛ  rú  rc   s       r4   rã   zPdfPages.__init__>
  s   € ð. "ˆŒØ!ˆŒØˆ�
r6   c                 ó   — | S r>   rŒ   rå   s    r4   Ú	__enter__zPdfPages.__enter__Y
  s   € Øˆr6   c                 ó$   — | j                  «        y r>   )rG  )râ   Úexc_typeÚexc_valÚexc_tbs       r4   Ú__exit__zPdfPages.__exit__\
  s   € Ø�
‰
�r6   c                 ó~   — | j                   €&t        | j                  | j                  ¬«      | _         | j                   S )N©rc   )rÿ  r�  rý  rþ  rå   s    r4   Ú_ensure_filezPdfPages._ensure_file_
  s,   € Ø�:‰:ÐÜ  §¡¸$¿.¹.ÔIˆDŒJØ�z‰zÐr6   c                 ó”   — | j                   �<| j                   j                  «        | j                   j                  «        d| _         yy)z_
        Finalize this object, making the underlying file a complete
        PDF file.
        N)rÿ  rE  rG  rå   s    r4   rG  zPdfPages.closed
  s:   € ð
 �:‰:Ð!Ø�J‰J×ÑÔ!Ø�J‰J×ÑÔØˆD�Jð "r6   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    r4   ÚinfodictzPdfPages.infodictn
  s   € ð × Ñ Ó"×+Ñ+Ð+r6   c                 óô   — t        |t        «      sR|€t        j                  «       }nt        j                  |«      }|€t        d|› �«      ‚|j                  j                  } |j                  | fdddœ|¤Ž y)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 r›  )rñ  rb   )	r?   r   r   Ú
get_activeÚget_fig_managerrÉ   ÚcanvasÚfigureÚsavefig)râ   r  ÚkwargsÚmanagers       r4   r  zPdfPages.savefigv
  so   € ô ˜&¤&Ô)Øˆ~ÜŸ.™.Ó*‘ä×-Ñ-¨fÓ5�ØˆÜ  :¨f¨XÐ!6Ó7Ð7Ø—^‘^×*Ñ*ˆFàˆ�‰�tÐC E°5ÑC¸FÓCr6   c                 óH   — t        | j                  «       j                  «      S )z=Return the current number of pages in the multipage pdf file.)r)   r	  r½  rå   s    r4   Úget_pagecountzPdfPages.get_pagecountŒ
  s   € ä�4×$Ñ$Ó&×/Ñ/Ó0Ð0r6   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      r4   Úattach_notezPdfPages.attach_note�
  s   € ð 	×ÑÓ×'Ñ'¨¨lÕ;r6   rs  r>   )rí   rî   rï   rð   r	   rõ  rã   r  r  r	  rG  r  r  r  r  rŒ   r6   r4   rù  rù  )
  s`   „ ñð( €T×Ñ˜6 <Ø$BôDòóDðò2òòò
ò,óDò,1ò .@ô <r6   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 )	ÚFigureCanvasPdfrü  r›  zPortable Document Formatc                  ó   — y)Nr›  rŒ   rå   s    r4   Úget_default_filetypez$FigureCanvasPdf.get_default_filetype 
  s   € Ør6   N)Úbbox_inches_restorerc   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   rX  ÚdrawrE  r  rG  )	râ   rÛ  r  rc   r  r}   r~   rì   Úrenderers	            r4   Ú	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    €r4   r!  zFigureCanvasPdf.draw½
  s   ø€ Ø�‰×*Ñ*Ô,Ü‰w‰|‹~Ðr6   )	rí   rî   rï   Ú	fixed_dpiÚ	filetypesr  r#  r!  r÷  rø  s   @r4   r  r  š
  s0   ø„ ð €IØÐ2Ð3€Iòð '+°Tô÷4ð r6   r  c                   ó   — e Zd ZeZy)Ú_BackendPdfN)rí   rî   rï   r  ÚFigureCanvasrŒ   r6   r4   r)  r)  Å
  s   „ à"�Lr6   r)  )éK   rí  )]rð   rÏ   r   r   Úenumr   Ú	functoolsr   Úior   r™   Úloggingrx   rU   r  r•  r   rp   ró  rb  Ú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   r   rV  Úmatplotlib._afmr   Úmatplotlib.ft2fontr   r   r   r   Úmatplotlib.transformsr   r   Úmatplotlib.pathr    Úmatplotlib.datesr!   r"   r¤  r$   Ú	getLoggerrí   r[  r5   rj   rv   r‡   r¢   r´   r@   Ú	maketransrÔ   r»   rÝ   rK   r  r  rS  rŽ  r�  ÚRendererPDFPSBaserX  r  rù  r  ÚFigureManagerPdfÚexportr)  rŒ   r6   r4   ú<module>rB     s   ðñó Ý Ý Ý Ý $Ý Û Û Û Û 	Û Û Û 
Û Û Û ã Ý ã ß FÕ FÝ )÷õ õ @Ý $ß SÑ SÝ ß HÓ Hß 4Ý  Ý  Ý Ý à€w×Ñ˜Ó"€ódò,Tònó0,ó"*ó0ð4 �}‰}Ø
�u 5°¸UñDó E€òF#÷Rñ ð. ÷ ð  ó ð ÷Bñ ôB#ˆô B#÷JZ$ñ Z$òz÷0_Cñ _CôD'H-�/×3Ñ3ô H-ôVJÐ,ô J÷Zn<ñ n<ôb%Ð&ô %ðP %Ð ð 
‡�ô#�(ó #ó ñ#r6   