Ë
    ^ãj�ª  ã                   óô
  — d Z d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mZmZ ddlmZ ddlmZ ddlmZmZ d	d
lmZmZmZmZ ddlmZ  G d„ d«      Z e«       Z	 ddlZ ej>                  «       dk(  Z d„ Z! G d„ d«      Z" e#e"jH                  «      fd„Z%["d„ Z&e'e(ffd„Z)d„ Z* e#d«      Z+e,e-fZ.d„ Z/d‰d„Z0d‰d„Z1d‰d„Z2d‰d„Z3d„ Z4d„ Z5d„ Z6d„ Z7d „ Z8d!„ Z9d"„ Z:d‰d#„Z;d$„ Z<d%„ Z=d&„ Z>d'„ Z?ddl@Z@ eAe@d(«      ZB[@d)„ ZCdŠd*„ZDd+„ ZEdŠd,„ZFd‹d-„ZG G d.„ d/eH«      ZIej”                  d0k(  rddlKZKddlLZLd1d2d2d3d4d4d5d5d6d7d8d8d9d:d;œZMdŒd<„ZNnd�d=„ZNddlOZOej                   j£                  eOj¤                  «      ZSej                   j©                  eS«      xr eSxs ej                   j«                  eS«      ZV[O	 eR ddlXZXddlYZY	 eZZ[e[ Z\ eFe[¬>«      s e]d?e[z  «      ‚ej                   j½                  ej                   j¿                  e[jÀ                  «      «      ZaeaejÄ                  z   Zcej                   j£                  ea«      ZdedejÄ                  z   Ze efec«      Zg efee«      Zheceeeaedej                   j¾                  ej                   j¼                  ejÒ                  ejÄ                   efejÄ                  «      f	d@„ZjdA„ ZkeXj°                  eYj²                  eVej                   jØ                  fdB„Zm[X[Ye\xr: ej                   jÝ                  ej                   jß                  eR«      d   dEz   «      ZpdF„ ZqdG„ ZrdH„ ZsdI„ Zt eAedJdK„ «      ZudŽdL„ZveduZw G dM„ dN«      ZxdO„ ZydŠdP„ZzdQ„ Z{d�dR„Z|ddSl}m~Z~mZ ddTl€m�Z� dU„ Z‚d�dV„Zƒd�dW„Z„d�dX„Z…ej                   jÜ                  fdY„Z†ej                   �j                  ej                   j¾                  fdZ„Zˆej                   �j                  ej                   j¾                  e�j                  fd[„ZŠej                   jÜ                  ej                   j¾                  ej                   �j                  e�j                  fd\„Z�dd]lmŽZ� d^„ Z�d_„ Z‘d`„ Z’ G da„ db«      Z“ G dc„ dde“«      Z”de„ Z• G df„ dg«      Z–dh„ Z—di„ Z˜d‘dj„Z™ G dk„ dl«      Zš G dm„ dn«      Z›do„ Zœdp„ Z�dq„ Zždr„ ZŸddl Z ds„ Z¡dt„ Z¢du„ Z£d’dv„Z¤d“dw„Z¥dx„ Z¦ G dy„ dze,«      Z§ G d{„ d|e,«      Z¨d}„ Z© G d~„ de�jT                  «      Z« G d€„ d�«      Z¬dŠd‚„Z­dƒ„ Z®d„„ Z¯d…„ Z° G d†„ d‡«      Z± e±«       Z±dˆ„ Z²y#  dZ Y �ŒªxY w#  ej®                  d   ZRY �ŒˆxY w#  ej                   jÝ                  eR«      Z\dZ[dC„ ZkeXj°                  fdD„ZmY �ŒŠxY w)”z3.5.34z6Gazillions of miscellaneous internal utility functionsé    N)Úliteral_eval)ÚdecodebytesÚencodebytes)ÚBytesIO)Úmd5)Úget_rl_tempfileÚget_rl_tempdiré   )Úrl_safe_execÚrl_safe_evalÚsafer_globalsÚrl_extended_literal_eval)ÚImagec                   ó0   — e Zd Zed„ «       Zed„ «       ZeZy)Ú	__UNSET__c                   ó   — y)NF© r   ó    úU/var/www/html/metafoliadorv2/venv/lib/python3.12/site-packages/reportlab/lib/utils.pyÚ__bool__z__UNSET__.__bool__   s   € àr   c                   ó   — y)Nr   r   r   r   r   Ú__str__z__UNSET__.__str__   s   € àr   N)Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r   Ú__repr__r   r   r   r   r      s+   „ Øñó ðàñó ðà�Hr   r   ÚPyPyFc                 ó8   — t        | «      t        t        «      k(  S ©N)ÚtypeÚ
isFunction©Úvs    r   r"   r"   !   s   € Ü�‹7”dœ:Ó&Ñ&Ð&r   c                   ó   — e Zd Zd„ Zy)Úcc                  ó   — y r    r   ©Úselfs    r   Úmzc.m%   ó   � r   N)r   r   r   r*   r   r   r   r&   r&   $   s   „ Ûr   r&   c                 ó   — t        | «      |k(  S r    )r!   )r$   Úmts     r   ÚisMethodr.   '   s   € Ü�‹7�b‰=Ðr   c                 ó8   — t        | «      t        t        «      k(  S r    )r!   Úsysr#   s    r   ÚisModuler1   +   s   € Ü�‹7”dœ3“iÑÐr   c                 ó   — t        | |«      S r    )Ú
isinstance)r$   Ú_sts     r   ÚisSeqr5   .   s   € Ü�a˜ÓÐr   c                 ó"   — t        | t        «      S r    ©r3   Ústrr#   s    r   ÚisNativer9   1   ó   € Ü�aœÓÐr   c                 ó�   — t        t        | «      r| «      j                  «       S | j                  d«      «      j                  «       S )NÚutf8)r   ÚisBytesÚencodeÚ	hexdigest©Úss    r   Ú	_digesterrB   9   s6   € Ü”G˜A”JˆqÓ5×?Ñ?ÓAÐA A§H¡H¨VÓ$4Ó5×?Ñ?ÓAÐAr   c           	      ó    — t        | t        «      r| S 	 | j                  |«      S #  t        dt	        | «      ›dt	        |«      ›d�«       Y y xY w)NzasBytes(ú,enc=ú	) error: )r3   Úbytesr>   ÚannotateExceptionÚascii©r$   Úencs     r   ÚasBytesrK   <   sA   € Ü�!”EÔ 1˜HðPØ�x‰x˜‹}ÐøðPÝ¼%À½(Ä5ÈÅ:ÐNÖOúó	   ”% ¥&Ac           	      ó    — t        | t        «      r| S 	 | j                  |«      S #  t        dt	        | «      ›dt	        |«      ›d�«       Y y xY w)Nz
asUnicode(rD   rE   )r3   r8   ÚdecoderG   rH   rI   s     r   Ú	asUnicoderO   C   sA   € Ü�!”CÔ ˜(ðRØ�x‰x˜‹}ÐøðRÝ¼EÀ!½HÄUÈ3ÅZÐPÖQúrL   c           	      óÖ   — t        | t        «      r| S 	 t        | t        «      r| j                  |«      S t        | «      S #  t	        dt        | «      ›dt        |«      ›d�«       Y y xY w)NzasUnicodeEx(rD   rE   )r3   r8   rF   rN   rG   rH   rI   s     r   ÚasUnicodeExrQ   J   sS   € Ü�!”CÔ ˜(ðTÜ *¨1¬UÔ 3ˆq�x‰x˜‹}Ð?¼¸Q»Ð?øðTÝ¼eÀA½hÄuÈSÅzÐRÖSús   ” A  µ
A  Á &A(c                 ó   — t        | |¬«      S )N)rJ   )rO   rI   s     r   ÚasNativerS   Q   s   € Ü�Q˜3ÔÐr   c                 ó   — t        | g«      S r    )rF   )Úis    r   Úint2ByterV   T   s   € Ü�!�‹:Ðr   c                 ó.   — t        | t        t        f«      S r    )r3   r8   rF   r#   s    r   ÚisStrrX   W   s   € Ü�aœ#œe˜Ó%Ð%r   c                 ó"   — t        | t        «      S r    )r3   rF   r#   s    r   r=   r=   Z   s   € Ü�aœÓÐr   c                 ó"   — t        | t        «      S r    r7   r#   s    r   Ú	isUnicoder[   ]   r:   r   c                 ó"   — t        | t        «      S r    ©r3   r!   r#   s    r   ÚisClassr^   `   s   € Ü�aœÓÐr   c                 ó8  — t        | t        t        t        t        t
        t        t        t        t        t        t        t        t        j                  t        j                  t        j                   t        j"                  t        j$                  t        j&                  t        j(                  t        j*                  t        j,                  t        j.                  t        j0                  t        j2                  t        j4                  t        j6                  f«       S r    )r3   ÚfloatÚintr!   ÚtupleÚlistÚdictr8   rF   ÚcomplexÚboolÚsliceÚ_rl_NoneTypeÚtypesÚFunctionTypeÚ
LambdaTypeÚCodeTypeÚMappingProxyTypeÚSimpleNamespaceÚGeneratorTypeÚ
MethodTypeÚBuiltinFunctionTypeÚBuiltinMethodTypeÚ
ModuleTypeÚTracebackTypeÚ	FrameTypeÚGetSetDescriptorTypeÚMemberDescriptorType)Úxs    r   ÚisNonPrimitiveInstancery   c   sª   € Ü˜!œU¤3¤t¬E´$´t¼CÄÄgÌdÔSXÔYeÜ×Ñœ5×+Ñ+¬E¯N©NÜ×Ñœu×4Ñ4Ü×ÑœE×,Ñ,¬U×-FÑ-FÜ×Ñ¤× 0Ñ 0´×1DÑ1DÜ�‰œ×2Ñ2´5×3MÑ3MðOó Pð Pð Pr   c                 ó$   — t        | t        «       S r    r]   r#   s    r   Úinstantiatedr{   k   s   € Ü˜!œDÓ!Ð!Ð!r   c                 óœ   — t        | t        «      r| j                  |«      S t        | t        «      r| S t        | «      j                  |«      S r    )r3   r8   r>   rF   )rx   rJ   s     r   Úbytestrr}   n   s<   € Ü�!”CÔØ�x‰x˜‹}ÐÜ	�A”eÔ	Øˆä�1‹v�}‰}˜SÓ!Ð!r   c                 óx   — t        t        j                  | «      «      j                  «       j	                  d«      S ©NÚlatin1)Úbase64_encodebytesÚpickleÚdumpsÚstriprN   )Úargss    r   Úencode_labelr†   v   s*   € ÜœfŸl™l¨4Ó0Ó1×7Ñ7Ó9×@Ñ@ÀÓJÐJr   c                 ó\   — t        j                  t        | j                  d«      «      «      S r   )r‚   ÚloadsÚbase64_decodebytesr>   )Úlabels    r   Údecode_labelr‹   y   s    € Ü�<‰<Ô*¨5¯<©<¸Ó+AÓBÓCÐCr   c                 óH   — t        | t        «      s| j                  d«      S | S ©zconverts first 256 unicodes 1-1r€   )r3   r8   rN   r@   s    r   Ú
rawUnicoderŽ   |   s   € ä%/°´#Ô%6ˆ1�8‰8�HÓÐ=¸AÐ=r   c                 óH   — t        | t        «      r| j                  d«      S | S r�   )r3   r8   r>   r@   s    r   ÚrawBytesr�   €   s   € ä!+¨A¬cÔ!2ˆ1�8‰8�HÓÐ9¸Ð9r   Úexecc                 ó~   — t        | t        «      r| S t        t        | t        «      r| n| j	                  d«      «      S r   )r3   ra   Úordr8   rN   r@   s    r   Úchar2intr”   †   s0   € Ü˜AœcÔ"ˆAÐ[¬´¸A¼cÔ1B©AÈÏÉÐQYÓHZÓ([Ð[r   c                 óD   — |j                   |ur|j                  |«      ‚|‚r    )Ú__traceback__Úwith_traceback)Útr$   Úbs      r   Ú
rl_reraiserš   ˆ   s$   € Ø‡�˜aÑØ×Ñ˜qÓ!Ð!Ø
€Gr   c                  óV   — dd l }| j                  «       D ]  \  }}t        |||«       Œ y ©Nr   )ÚbuiltinsÚitemsÚsetattr)Úkwdr�   Úkr$   s       r   Úrl_add_builtinsr¢   Œ   s*   € ÛØ�y‰y‹{ò ‰ˆˆ!Ü�˜˜1Õñr   c                 ó°   — 	 | s"t        j                  d«      j                  d   } ddlm} t        | |«      rt        | j                  «      r| S d S #  Y y xY w)Nr
   Ú
__loader__r   )Úzipimporter)r0   Ú	_getframeÚ	f_globalsÚ	zipimportr¥   r3   ÚlenÚ_files)Úldrr¥   s     r   ÚzipImportedr¬   ‘   sN   € ðÙÜ—-‘- Ó"×,Ñ,¨\Ñ:ˆCÝ)Ü   [Ô1´c¸#¿*¹*´oˆsÐOÈ4ÐOøðÙús   ‚AA ÁA ÁAc                 ó  — ddl m}m}m} ddlm} |j                  «       }g }|j                  }| D ]T  } ||«      sŒ ||«      D ]>  }	 |||	«      }	 ||	«      sŒ|r |	j                  «       j                  |«      sŒ7 ||	«       Œ@ ŒV |S )Nr   )ÚisfileÚisdirÚjoin)Úlistdir)	Úos.pathr®   r¯   r°   Úosr±   ÚlowerÚappendÚendswith)
ÚdirListÚextr®   r¯   Ú	path_joinr±   ÚRÚAÚDÚfns
             r   Ú
_findFilesr¾   š   s‡   € ß8Ñ8ÝØ
�)‰)‹+€CØ
€AØ	�‰€AØò KˆÙ�QŒx˜Ù˜!“*ò 	KˆBÙ˜1˜R“ˆBÙ�b�z¡3¨"¯(©(«*×*=Ñ*=¸cÕ*BÁQÀrÅUñ	KðKð
 €Hr   c                   óD   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Z	d	„ Z
d
„ Zy)ÚCIDictc                 óV   — |D ]  }| j                  |«       Œ | j                  |«       y r    )Úupdate)r)   r…   ÚkwdsÚas       r   Ú__init__zCIDict.__init__¨   s#   € ØÒ%ˆA�t—{‘{ 1•~Ð%Ø�‰�DÕr   c                 ó>   — |j                  «       D ]
  \  }}|| |<   Œ y r    )rž   )r)   r¼   r¡   r$   s       r   rÂ   zCIDict.update¬   s   € Ø—7‘7“9Ò)‰CˆAˆa¨˜d 1šgÑ)r   c                 ób   — 	 |j                  «       }t        j                  | ||«       y #  Y ŒxY wr    )r´   rd   Ú__setitem__©r)   r¡   r$   s      r   rÈ   zCIDict.__setitem__¯   s0   € ð	Ø—‘“	ˆAô 	×Ñ˜˜a Õ"øð	Ùús   ‚* ª.c                 ó^   — 	 |j                  «       }t        j                  | |«      S #  Y ŒxY wr    )r´   rd   Ú__getitem__©r)   r¡   s     r   rË   zCIDict.__getitem__¶   ó1   € ð	Ø—‘“	ˆAô ×Ñ  QÓ'Ð'øð	Ùúó   ‚( ¨,c                 ó^   — 	 |j                  «       }t        j                  | |«      S #  Y ŒxY wr    )r´   rd   Ú__delitem__rÌ   s     r   rÐ   zCIDict.__delitem__½   rÍ   rÎ   Nc                 ó0   — 	 | |   S # t         $ r |cY S w xY wr    )ÚKeyError)r)   r¡   Údvs      r   Úgetz
CIDict.getÄ   s$   € ð	Ø˜‘7ˆNøÜò 	ØŠIð	ús   ‚ ‡”c                 ó   — 	 | |    y#  Y yxY w)NTFr   rÌ   s     r   Ú__contains__zCIDict.__contains__Ê   s   € ð	Ø�ŠGØøð	Ùús   ‚ ˆc                 ó`   — 	 |j                  «       }t        j                  | |f|z   Ž S #  Y ŒxY wr    )r´   rd   Úpop©r)   r¡   rÄ   s      r   rØ   z
CIDict.popÑ   s5   € ð	Ø—‘“	ˆAô �x‰x˜4 ˜( 1™*Ð&Ð&øð	Ùúó   ‚) ©-c                 ó`   — 	 |j                  «       }t        j                  | |f|z   Ž S #  Y ŒxY wr    )r´   rd   Ú
setdefaultrÙ   s      r   rÜ   zCIDict.setdefaultØ   s5   € ð	Ø—‘“	ˆAô �‰ $ q ¨!¡Ð-Ð-øð	ÙúrÚ   r    )r   r   r   rÅ   rÂ   rÈ   rË   rÐ   rÔ   rÖ   rØ   rÜ   r   r   r   rÀ   rÀ   §   s/   „ òò*ò#ò(ò(óòò'ó.r   rÀ   Úmac)ÚoglezBMP )rÞ   ÚEPSF)rÞ   ÚGIFf)rÞ   ÚJPEG)ÚttxtÚPICT)rÞ   ÚPNGf)rÞ   z.PPM)rÞ   ÚTIFF)ÚCAROzPDF )ÚMSIEÚTEXT)ÚBMPÚEPSrß   ÚGIFÚJPGrá   ÚPCTrã   ÚPNGÚPPMÚTIFrå   ÚPDFÚHTMLc                 óØ   — 	 |�|€|�	 t         |j                  «          \  }}t        j                  | «      j	                  ||«       t        j                  | «       y #  Y y xY w#  Y y xY wr    )Ú_KNOWN_MAC_EXTÚupperÚmacfsÚFSSpecÚSetCreatorTypeÚ
macostoolsÚtouched)ÚfilenameÚcreatorcodeÚfiletyper¸   s       r   Úmarkfilenamerþ   ô   sl   € ð		ØÐ" hÐ&6¸3¸?ðÜ,:¸3¿9¹9»;Ñ,GÑ)�K ô �L‰L˜Ó"×1Ñ1°+¸hÔGÜ×Ñ˜xÕ(øðÙûð	Ùús'   ‚A% ‰A £:A% ÁA"Á A% Á"A% Á%A)c                  ó   — y r    r   )rû   rü   rý   s      r   rþ   rþ      s   € Ør   )r«   z#can't handle compact distro type %rc
                 ó°  —  || j                  d|«      «      }  || «      }
|
||fv ry|
j                  |«      rd| t        d fS |
j                  |«      rd| t        d fS  | |«       «      }t	        |«      }|
j                  |«      r-| |d j                  |«      r
d| ||	z   d fS |t	        | «      k(  ryt
        j                  j                  | «       | fS )z3if the name starts with a known prefix strip it offú/)r
   Ú r
   N)ÚreplaceÚ
startswithÚ_archivepfxlenÚ_archivedirpfxlenr©   r³   ÚpathÚisabs)r½   Ú_archivepfxÚ_archivedirpfxÚ_archiveÚ_archivedirÚos_path_normpathÚos_path_normcaseÚ	os_getcwdÚos_sepÚ
os_sep_lenÚnfnÚcwdÚns                r   Ú__startswith_rlr    sà   € ñ ˜bŸj™j¨¨VÓ4Ó5ˆÙ˜rÓ"ˆØ�;˜xÐ(Ñ(°Ø�>‰>˜+Ô&¨q°´N°OÐ1DÐ/DÐ(DØ�>‰>˜.Ô)°!°BÔ7HÐ7IÐ4JÐ2JÐ+JÙ™y›{Ó+ˆÜ�‹HˆØ�>‰>˜#ÔØ�!�"ˆv× Ñ  Ô(°°B°q¸±|°}Ð4EÐ1EÐ*EØ”#�b“'Šz $Ü—7‘7—=‘= Ó$Ð$ RÐ'Ð'r   c                 ó   — t        | «      d   S )Nr
   )r  ©r½   s    r   Ú_startswith_rlr  3  s   € Ü˜rÓ" 1Ñ%Ð%r   c                 óø   — t        | «      \  }} ||«      }|s|g k(  r\|t        t        t        |fd„t        t	        ||fd„t        t
        j                  j                  «       «      «      «      «      «      z  }|S )Nc                 ó   —  |t         | «      S r    )r	  )rx   r¼   Úpjoins      r   ú<lambda>zrl_glob.<locals>.<lambda>:  s   € ¹eÄKÐPQÓ>R€ r   c                 ó   —  || |«      S r    r   )rx   ÚpfnÚfnmatchs      r   r  zrl_glob.<locals>.<lambda>:  s    € ñ  BIð  JKð  LOó  BP€ r   )r  rc   Úmapr	  ÚfilterÚ__rl_loader__rª   Úkeys)ÚpatternÚglobr  Ú_RL_DIRr  r&   r  Úrs           r   Úrl_globr(  6  s¢   € Ü  Ó)‰ˆˆ3Ù�‹IˆÙ��2’Ø””c¤[°uÒRÔSWÔX^ÐloÐxò  `Pô  QUô  Vc÷  Vjñ  Vj÷  Voñ  Voó  Vqó  Qró  Ysó  Ttó  uó  vñ  vˆAØˆr   c                 ó   — | S r    r   r  s    r   r  r  ?  s   € Øˆ	r   c                 ó   —  || «      S r    r   )r$  r%  s     r   r(  r(  A  s   € Ù�G‹}Ðr   ú.pyc                  ó   — t         S )z*return truth if a file system distribution©Ú_isFSDr   r   r   ÚisFileSystemDistror/  F  s   € ä€Mr   c                  ó   — t          S )z.return truth if not a file system distributionr-  r   r   r   ÚisCompactDistror1  J  s
   € äˆ:Ðr   c                  ó   — t         S )z1return truth if a source file system distribution)Ú_isFSSDr   r   r   ÚisSourceDistror4  N  s   € ä€Nr   c                 ó´   — t         j                  j                  t         j                  j                  t         j                  j	                  | «      «      «      S r    )r³   r  ÚnormcaseÚabspathÚnormpath)Úps    r   Únormalize_pathr:  R  s3   € Ü�7‰7×ÑœBŸG™GŸO™O¬B¯G©G×,<Ñ,<¸QÓ,?Ó@ÓAÐAr   Úinvalidate_cachesc                   ó   — y r    r   r   r   r   r  r  U  r+   r   c                 óT  — t         j                  D �cg c]  }t        |«      ‘Œ }}|rEt        |t        t
        f«      r|n|fD ]'  }|sŒt        |«      }||vsŒ|j                  d|«       Œ) |r?ddt        d«      fD ]-  }||v sŒ|rt        d|z  «       |j                  |«       ||v rŒ&Œ/ n*t        j                  «       }||vr|j                  d|«       t         j                  }	 |t         _        t        «        |rât        «        t        d«       t        dt        | «      z  «       t        dt        t        j                  «       «      z  «       t        dt        t         j                  «      z  «       t        d	t        d
| z  «      ›dt        t        j                  j                  d
| z  «      «      ›�«       t        dt        |«      z  «       t        d«       t        j                  | «      |t         _        t        «        |rt        dt!        |«      z  «       S S c c}w # t"        $ r7 t%        d| ›dt         j                  ›dt        j                  «       ›�«       Y n[ t%        dt'        t        j(                  «       d   «      ›d| ›dt         j                  ›dt        j                  «       ›�«       Y nxY w|t         _        t        «        |rt        dt!        |«      z  «       yy# |t         _        t        «        |rt        dt!        |«      z  «       w w xY w)zEDynamically imports possible packagized module, or raises ImportErrorr   r  ú.zremoved "%s" from pathz++++++++++++++++++++z+++++ modulename=%sz+++++ cwd=%sz+++++ sys.path=%sz+++++ os.paths.isfile(z./%s.pyz)=z+++++ opath=%sz--------------------z===== restore sys.path=%szCould not import z
using sys.path z in cwd=z
Exception r
   z while importing N)r0   r  r:  r3   rc   rb   ÚinsertÚprintÚremover³   ÚgetcwdÚ_importlib_invalidate_cachesrH   r®   Ú	importlibÚimport_moduleÚreprÚImportErrorrG   r8   Úexc_info)Ú
modulenameÚbaseDirÚnoCWDÚdebugr9  r  Úopaths          r   ÚrecursiveImportrN  W  s~  € ä'*§x¡xÖ0 !ŒN˜1ÕÐ0€DÐ0ÙÜ& w´´U¨|Ô<‘À7À*ò 	3ˆAÚÜ" 1Ó%�Ø˜D’= $§+¡+¨a°Õ"2ð	3ñ Ø�Sœ¨Ó,Ð-ò 	ˆAØ�t’)Ùœ%Ð 8¸1Ñ <Ô=Ø—‘˜A”ð �t“)ñ	ô
 �I‰I‹KˆØ�D‰=Ø�K‰K˜˜!Ôô �H‰H€Eð=ØŒŒÜ$Ô&ÙÜŒGÜ�&ŒMÜÐ'¬%°
Ó*;Ñ;Ô<Ü�.¤5¬¯©«Ó#5Ñ5Ô6ÜÐ%¬¬c¯h©h«Ñ7Ô8Ý´E¸)ÀJÑ:NÕ4OÔQVÔWY×W^ÑW^×WeÑWeÐfoÐpzÑfzÓW{ÔQ|Ð}Ô~ÜÐ"¤U¨5£\Ñ1Ô2Ü�&ŒMÜ×&Ñ& zÓ2ð ŒŒÜ$Ô&ÙÜÐ-´°U³Ñ;Õ<ð ùòS 1øô> ò ÝÚœ3Ÿ8›8¤B§I¡I¤Kð1ö 	ðJÝÜ”C—L‘L“N 1Ñ%Õ&ª
´3·8³8¼B¿I¹I¼KðIö 	Júð ŒŒÜ$Ô&ÙÜÐ-´°U³Ñ;Õ<ð øð ŒŒÜ$Ô&ÙÜÐ-´°U³Ñ;Õ<ð ús+   “H'Ã*DH, È,=KÉ)K6 É+AKËK6 Ë61L'c                   ó   — e Zd ZdZd„ Zy)ÚArgvDictValuezGA type to allow clients of getArgvDict to specify a conversion functionc                 ó    — || _         || _        y r    )ÚvalueÚfunc)r)   rR  rS  s      r   rÅ   zArgvDictValue.__init__‰  s   € ØˆŒ
Øˆ�	r   N)r   r   r   Ú__doc__rÅ   r   r   r   rP  rP  ‡  s
   „ ÙQór   rP  c                  óz  — d„ }t         j                  dd }i }| j                  «       D ]�  \  }}t        |t        «      r|j
                  |j                  }}nd}d}|dz   }|D ]C  }	|	j                  |«      sŒ|	t        |«      d }
|j                  |	«        |||
|«      ||<   d} n |rŒƒ ||||«      ||<   Œ‘ |S )zæ Builds a dictionary from its keyword arguments with overrides from sys.argv.
        Attempts to be smart about conversions, but the value can be an instance
        of ArgDictValue to allow specifying a conversion function.
    c                 ó|  — |r
 ||«      } | S t        | «      r|} | S t        | t        «      rt        |«      } | S t        | t        «      rt        |«      } | S t        | t        «      rt	        t        |«      i «      } | S t        | t        «      rt        t        |«      i «      } | S t        d|›dt        | «      ›�«      ‚)NzCan't convert string z to )	rX   r3   r`   ra   rc   r   rb   Ú	TypeErrorr!   )r$   ÚavrS  s      r   ÚhandleValuez getArgvDict.<locals>.handleValue’  sÀ   € ÙÙ�R“ˆAð ˆô �QŒxØ�ð ˆô ˜AœeÔ$Ü˜"“I�ð ˆô ˜AœcÔ"Ü˜“G�ð ˆô ˜AœdÔ#Üœ bÓ)¨"Ó-�ð
 ˆô	 ˜AœeÔ$Üœ, rÓ*¨2Ó.�ð ˆõ  Â2ÄdÈ1ÄgÐ NÓOÐOr   r
   Nr   ú=)
r0   Úargvrž   r3   rP  rR  rS  r  r©   rA  )ÚkwrY  r»   rº   r¡   r$   rS  ÚhandledÚkerÄ   rX  s              r   ÚgetArgvDictr_  �  sÐ   € ò
ô$ 	�‰��ˆ€AØ
€AØ—‘“
ò 5‰ˆˆ1Ü�aœÔ&Ø—g‘g˜qŸv™vˆt‰AàˆDØˆØˆs‰UˆØò 	ˆAØ�|‰|˜BÕØ”s˜2“w�x�[�Ø—‘˜”Ù" 1 R¨Ó-��!‘Ø�Ùð	ò ™{¨1¨Q¨tÓ4˜˜!šð5ð" €Hr   c                 óð   — 	 ddl m} | €At        j                  j	                  t        j                  j                  t        «      d«      }  || «      S # t        $ r}t        |«      dk7  r‚ Y d }~y d }~ww xY w)Nr   )ÚHyphenzhyphen.mashedzNo module named pyHnj)	Úreportlab.lib.pyHnjra  r³   r  r°   ÚdirnameÚ__file__rG  r8   )ÚhDictra  ÚerrMsgs      r   ÚgetHyphenaterrg  ¹  s[   € ðÝ.Øˆ=¤§¡§¡¬R¯W©W¯_©_¼XÓ-FÀÓ W˜%Ù�e‹}ÐøÜò Üˆv‹;Ð/Ò/°Üûðús   ‚AA Á	A5ÁA0Á0A5c                 ó¤   — 	 | j                   j                  }|j                  d«      }|dk\  r||dz   d S |S # t        $ r t	        | «      cY S w xY w)zReturn a shortened class namer>  r   r
   N)Ú	__class__r   ÚrfindÚAttributeErrorr8   )r)   ÚnamerU   s      r   Ú
_classNamerm  Â  sW   € ðØ�~‰~×&Ñ&ˆØ
�*‰*�S‹/ˆØˆaŠ4˜˜Q˜q™S˜T˜
Ð"ØˆøÜò Ü�4‹yÒðús   ‚38 ¶8 ¸AÁAc                 ó*  — d|vrd|z   }	 t        | |«      S # t        $ rr t        st        €‚ t	        | «      } t        j                  | «      }d|vr3t        j                  dk7  r |j                  t        j                  d«      }t        |«      cY S w xY w)Nr'  r™   ú
)
ÚopenÚIOErrorr.  r"  r  Úget_datar³   Úlinesepr  r   )rl  ÚmoderA   s      r   Úopen_for_read_by_nameru  Ì  s†   € Ø
�$�˜s 4™x˜ð	Ü�D˜‹ÐøÜò Ý”]Ð*¨Eô ˜dÓ#ˆÜ×"Ñ" 4Ó(ˆØ�d‰?œrŸz™z¨4Ò/°Q·Y±Y¼r¿z¹zÈ$Ó5O°Ü�q‹zÒðús   ‹ —A8BÂB)ÚunquoteÚurlparse)Úurlopenc                 ó4   — t        | «      j                  «       S r    )rx  Úread)rl  s    r   Ú	rlUrlReadr{  Û  s   € Ü�4‹=×ÑÓÐr   c                 óþ   ‡‡‡‡— t         fd„ŠddlmŠmŠ ‰rIdd l}dd lŠˆfd„}|j                  dj                  ddj                  t        |‰«      «      df«      «      Šdˆˆˆfd	„	}|t        «       d
<    || |«      S )Nc                 ó6  — 	 | j                  dd«      \  }}|sd}|j                  d«      }|dk\  rd||d	 vr||dz   d	 }|d	| }nd
}|dk(  rt	        |j                  d«      «      }|S  ||«      j                  d«      }|S # t        $ r t        dd«      ‚w xY w)zUse "data" URL.ú,r
   z
data errorzbad data URLztext/plain;charset=US-ASCIIú;r   rZ  Nr  Úbase64rH   zlatin-1)ÚsplitÚ
ValueErrorrq  rj  r‰   r>   )Úurlrv  ÚtypÚdataÚsemiÚencodings         r   Ú
datareaderz!open_for_read.<locals>.datareaderã  sÀ   € ð	8ØŸ	™	 # qÓ)‰IˆC�ñ Ø/ˆCØ�y‰y˜‹~ˆØ�1Š9˜ C¨¨ JÑ.Ø˜4 ™6˜7�|ˆHØ�e�t�*‰CàˆHØ�xÒä% d§k¡k°'Ó&:Ó;ˆDð ˆñ ˜4“=×'Ñ'¨	Ó2ˆDØˆøô ò 	8Ü˜,¨Ó7Ð7ð	8ús   ‚B ÂBr   )ÚtrustedHostsÚtrustedSchemesc                 ó^   •—  ‰j                   | «      } | j                  d«      r| dd S | d d S )Nz(?s:é   éýÿÿÿiùÿÿÿ)Ú	translater  )rA   r  s    €r   Úxrezopen_for_read.<locals>.xre  s7   ø€ Ø!�×!Ñ! !Ó$ˆAØŸl™l¨6Ô2�1�Q�r�7Ð>¸¸#¸2¸Ð>r   r  z^(?:ú|z)\Zc                 óH  •— t        | d«      r| S 	 t        | |«      S #  	 ‰�=t        | «      }|d   r-|d   dv s‰j                  |d   «      r|d   ‰v st	        d«      ‚t         | dd j                  «       dk(  r‰nt        | «      «      cY S #  t        d	| z  «      ‚xY wxY w)
z)attempt to open a file or URL for readingrz  Nr   )r…  Úfiler
   zAttempted untrusted host accessé   zdata:zCannot open resource "%s")	Úhasattrru  rw  Úmatchr‚  r   r´   r{  rq  )rl  rt  Úpurlrˆ  r‰  rŠ  s      €€€r   Úopen_for_readz$open_for_read.<locals>.open_for_read  sÌ   ø€ ä�4˜Ô¨ ð
	BÜ(¨¨dÓ3Ð3øð	BðBØÐ+Ü# D›>�DØ˜A’w¨¨a©°OÑ)CÀ|×GYÑGYÐZ^Ð_`ÑZaÔGbÐimÐnoÑipð  uCñ  jCÜ(Ð)JÓKÐKÜÐ V¨d°2°A¨h¯n©nÓ.>ÀÒ.G¡
ÌYÐX\Ó]Ó^Ò^øðBÜÐ9¸DÑ@ÓAÐAýs!   ‘ �B! A+BÂB!ÂBÂB!r—  ©r™   )
rv  Úreportlab.rl_configr‰  rŠ  Úrer  Úcompiler°   r   Úglobals)	rl  rt  rš  r�  r—  rˆ  r  r‰  rŠ  s	        @@@@r   r—  r—  Þ  sw   û€ ô
 !(ó ÷6 AÙßô	?ð —z‘z "§'¡'¨6Ø #§¡¬¨S°Ó)>Ó ?Ø &ð+(ó #)ó *ˆ÷Bð "/„GƒIˆoÑÙ˜˜dÓ#Ð#r   c                 óª   — t        | |«      }| |ur(t        |d«      r|5  |j                  «       cd d d «       S |j                  «       S # 1 sw Y   y xY w)NÚ__exit__)r—  r”  rz  )rl  rt  Úfs      r   Úopen_and_readr     sQ   € Ü�d˜4Ó €AØ�1�}œ  :Ô.Øñ 	Ø—6‘6“8÷	ñ 	ð �v‰v‹xˆ÷	ð 	ús   ŸA	Á	Ac                 ó8   — t        | |«      j                  d«      S ©Nro  )r   r�  )rl  rt  s     r   Úopen_and_readlinesr£     s   € Ü˜˜dÓ#×)Ñ)¨$Ó/Ð/r   c                 ó°   — t        | d«      ry || «      ryt        st        €yt        | «      } | t	        t        j
                  j                  «       «      v S )Nrz  TF)r”  r.  r"  r  rc   rª   r#  )r½   Úos_path_isfiles     r   Ú	rl_isfiler¦  #  sK   € Üˆr�&Ô $Ù�bÔ $Ý”Ð&¨uÜ	˜Ó	€BØ””m×*Ñ*×/Ñ/Ó1Ó2Ð2Ð2r   c                 óF  —  || «      ryt         st        €yt         || «      «      } | j                  t        j
                  «      s| t        j
                  z  } t        t        t        | fd„t        t        j                  j                  «       «      «      «      «      dkD  S )NTFc                 ó$   — | j                  |«      S r    )r  )rx   Úpns     r   r  zrl_isdir.<locals>.<lambda>/  s   € ¨1¯<©<¸Ó+;€ r   r   )r.  r"  r  r¶   r³   Úsepr©   rc   r!  rª   r#  )r©  Úos_path_isdirr  s      r   Úrl_isdirr¬  *  sv   € Ù�RÔ Ý”Ð&¨uÜ	Ñ(¨Ó,Ó	-€BØ�;‰;”r—v‘vÔ ¤b§f¡f¡ ÜŒt”F rÒ;¼DÄ×AUÑAU×AZÑAZÓA\Ó<]Ó^Ó_Ó`ÐabÑbÐbr   c                 ó^  —  || «      st         st        € || «      S t         || «      «      } | j                  t        j
                  «      s| t        j
                  z  } t        j                  j                  «       D �cg c]"  }|j                  | «      sŒ|t        | «      d  ‘Œ$ c}S c c}w r    )
r.  r"  r  r¶   r³   rª  rª   r#  r  r©   )r©  r«  r  Ú
os_listdirrx   s        r   Ú
rl_listdirr¯  1  s~   € Ù�RÔ�F¤mÐ&;ÁJÈrÃNÐ=RÜ	Ñ(¨Ó,Ó	-€BØ�;‰;”r—v‘vÔ ¤b§f¡f¡ Ü!.×!5Ñ!5×!:Ñ!:Ó!<ÖQ˜AÀÇÁÈRÕ@PˆAŒc�"‹gˆhŠKÒQÐQùÒQs   Â B*ÂB*c                 ó0  —  || «      st         st        € || «      S t         || «      «      }	 t        j                  |   }|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ddf	«      S # t        $ r  || «      cY S w xY w)Nr“  é   é	   é   i¼  é   é   é   é?   r
   r   )r.  r"  r  rª   rÒ   )	r©  r¥  r  Úos_path_getmtimeÚtime_mktimer9  ÚerA   Úds	            r   Úrl_getmtimer¼  7  sÊ   € Ù�bÔ�V¤}Ð'<ÑEUÐVXÓEYÐ>YÜÑ'¨Ó+Ó,€Að$Ü× Ñ  Ñ#ˆð 	
ˆ!‰€AØ	ˆ!‰€AÙ˜!˜Q™$ ™ dÑ*¨A¨q©D°#©:°a¸±f¸aÀ¹eÀT¹\È1ÈaÉ4ÐQUÉ+ÐWXÐY]ÑW]Ð`aÑVaÐbcÐdeÐfgÐhÓiÐiøô	 ò $Ù Ó#Ò#ð$ús   ¯B ÂBÂB)Úutilc                 ó  — dD ]v  }t         j                  j                  || |z   «      }t         j                  j                  |«      sŒFt	        j
                  | |«      }|j                  j                  «       c S  t        d«      ‚)N)r+  z.pywz.pyoz.pycz.pydzno suitable file found)	r³   r  r°   r®   Úimportlib_utilÚspec_from_file_locationÚloaderÚload_modulerG  )rl  Údirr¸   r  Úspecs        r   Ú__rl_get_module__rÅ  C  sl   € Ø2ò -ˆÜ�w‰w�|‰|˜C  S¡Ó)ˆÜ�7‰7�>‰>˜$ÕÜ!×9Ñ9¸$¸tÓDˆDØ—;‘;×*Ñ*Ó,Ò,ð	-ô
 Ð.Ó
/Ð/r   c                 óp  — | t         j                  v r%t         j                  |    }t         j                  | = nd }	 	 t        | |«      |r|t         j                  | <   S S #  t        «       rŸdd l}t        |«      }|dk(  xs | xr t        xsB t        j                  j                  t        |j                  dt        j                  «      «      }|j                  |«      }|j                  | «      cY |r|t         j                  | <   S S t        | ›d|›d�«      ‚xY w# |r|t         j                  | <   w w xY w)Nr   r>  r  ú[ú])r0   ÚmodulesrÅ  r1  r¨   r  r  r³   r  r°   r  rª  r¥   rÂ  rG  )rl  rÃ  Úomr¨   Úzis        r   Úrl_get_modulerÌ  K  s  € ØŒs�{‰{ÑÜ�[‰[˜ÑˆÜ�K‰K˜Ñàˆð&ð
	5Ü$ T¨#Ó.ñ  2Œs�{‰{˜4Ò ˆ2øð	5ÜÔ ã Ü$ SÓ)�Ø˜C‘xÒ* s 7Ò8´Òj¼B¿G¹G¿L¹LÌÐRU×R]ÑR]Ð^aÔbd×bhÑbhÓRiÓ<j�Ø×*Ñ*¨3Ó/�Ø—~‘~ dÓ+Ñ+ñ  2Œs�{‰{˜4Ò ˆ2ô ª$ªsÐ3Ó4Ð4ûá 2Œs�{‰{˜4Ò ˆ2ús$   ¼A ÁBDÃ1D Ä	DÄD ÄD5c                 óV   — 	 t        | t        j                  «      S # t        $ r Y yw xY wrœ   )r3   r   rk  )Úims    r   Ú_isPILImagerÏ  `  s*   € ðÜ˜"œUŸ[™[Ó)Ð)øÜò Ùðús   ‚ œ	(§(c                   ór   — e Zd ZdZi ZdZdd„Zd„ Zd„ Ze	d„ «       Z
e	dd„«       Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)ÚImageReaderz%Wraps up PIL to get data from bitmapsNc                 ó®  — t        |t        «      r|j                  | _        y || _        || _        d | _        d | _        d | _        d | _        d | _	        t        |«      r6|| _        t        |dd «      | _        	 | j
                  j                  | _        y 	 ddlm} |dk7  rt#        d«      ‚t%        |d«      }t        |t&        «      s,|t'        |j)                  «       «      }}|j+                  «        ~|| _        | j-                  | j                  «      | _        t        |t.        «      r|n
t1        |«      | j
                  _        | j3                  | j
                  «       t        | j
                  dd «      dk(  r| j4                  | _        y y # t        $ r dt        | «      z  | _        Y y w xY w#  t9        d	|›d
| j;                  «       ›�«       Y y xY w)NÚfpzPILIMAGE_%dr   )ÚimageReaderFlagszYimageReaderFlags values other than 0 are no longer supported; all images are interned nowr™   Úformatrá   z

fileName=z
 identity=)r3   rÑ  Ú__dict__Ú_identÚfileNameÚ_imageÚ_widthÚ_heightÚ_transparentÚ_datarÏ  ÚgetattrrÓ  rk  Úidr™  rÔ  r‚  r—  r   rz  ÚcloseÚ_read_imager8   rF  Úcheck_pil_image_sizeÚ_jpeg_fhÚjpeg_fhrG   Úidentity)r)   rØ  ÚidentrÔ  rÓ  Útfps         r   rÅ   zImageReader.__init__j  sŽ  € Ü�hœ{Ô+Ø$×-Ñ-ˆDŒMØØˆŒð !ˆŒØˆŒØˆŒØˆŒØ ˆÔØˆŒ
Ü�xÔ Ø"ˆDŒKÜ˜h t¨DÓ1ˆDŒGð9Ø $§¡× 4Ñ 4�•ðZÝ@Ø# qÒ(Ü$ð  &Aó  Bð  BÜ" 8¨CÓ0�Ü! "¤gÔ.Ø ¤'¨"¯'©'«)Ó"4˜�CØ—I‘I”KØØ�”Ø"×.Ñ.¨t¯w©wÓ7�”Ü3=¸hÄsÔ3K¡xÔQUÐV^ÓQ_�—‘Ô$Ø×)Ñ)¨$¯+©+Ô6Ü˜4Ÿ;™; x°Ó5°vÒ=Ø#'§=¡=�D•Lð >øô! "ò 9Ø -´°4³Ñ 8�–ð9ûð$ZÝ!ºxÈÏÉÌÐ"XÖYús   Á9F ÂC7F1 ÆF.Æ-F.Æ1!Gc                 ó
  — | j                   }t        |«      st        t        | dd«      dd«      }| j                  }d| j                  j
                  ›dt        t        | «      «      ›|xr d|z  xs d›|xr d|z  xs d›d	�S )
z9try to return information that will identify the instancerÓ  Nrl  rÇ  ú@z	 ident=%rr  z filename=%rrÈ  )rØ  rX   rÞ  r×  ri  r   Úhexrß  )r)   r½   ræ  s      r   rå  zImageReader.identity‘  s    € à�]‰]ˆÜ�RŒyÜœ  d¨4Ó0°¸Ó=ˆBØ—‘‰Ø $§¡× 7Ó 7¼¼B¸t»H¼ÀeÒFeÐQ\Ð_dÑQdÒFkÐikÐFkÐlnò  mIð  uCð  FHñ  uHò  mOð  MOñ  mOð  Pð  	Pr   c                 ó,   — t        j                  |«      S r    )r   rp  ©r)   rÓ  s     r   rá  zImageReader._read_image™  s   € Ü�z‰z˜"‹~Ðr   c                 óè   — | j                   }|€y |j                  \  }}|j                  }t        d|dk(  rdndt	        |«      z  |z  |z  dz	  «      }||kD  rt        d|›d|›d|›d|›d	|›d
�«      ‚y )Nr
   Ú1é   é   zPIL ú z x z image would use z > z bytes)Ú_max_image_sizeÚsizert  Úmaxr©   ÚMemoryError)ÚclsrÎ  Úmax_image_sizeÚwÚhr*   ró  s          r   râ  z ImageReader.check_pil_image_sizeœ  sƒ   € à×,Ñ,ˆØÐ! 6Ø�w‰w‰ˆˆ1Ø�G‰GˆÜ�1˜A˜sšF‘q¨¬#¨a«&©°!Ñ3°AÑ5¸Ñ9Ó:ˆØ�ÒÝÚ./²²!²DºðIó Jð Jð r   c                 óH   — || _         |�ddlm}  || j                  «       y y )Nr   )Úregister_reset)rò  r™  rû  Úset_max_image_size)rö  r÷  rû  s      r   rü  zImageReader.set_max_image_size¦  s&   € à,ˆÔØÐ%Ý:Ù˜3×1Ñ1Õ2ð &r   c                 ó@   — | j                   }|j                  d«       |S rœ   )rÓ  Úseekrì  s     r   rã  zImageReader._jpeg_fh­  s   € Ø�W‰WˆØ
�‰�Œ
Øˆ	r   c                  ó   — y r    r   r(   s    r   rä  zImageReader.jpeg_fh²  s   € Ør   c                 ó¨   — | j                   �| j                  €#| j                  j                  \  | _         | _        | j                   | j                  fS r    )rÚ  rÛ  rÙ  ró  r(   s    r   ÚgetSizezImageReader.getSizeµ  s@   € Ø�K‰KÐ 4§<¡<Ð#7Ø(,¯©×(8Ñ(8Ñ%ˆDŒK˜œØ—‘˜TŸ\™\Ð*Ð*r   c                 ó0  — 	 | j                   �€Zd| _        | j                  }|j                  x}| _        |dv rvt	        t
        dd«      j                  d«      r|j                  «        t        |j                  «       |dk(  rdnd   «      | _        |dd	 }|j                  |«      }|| _        nŒ|d
vrˆ|j                  dk(  ra|j                  dk(  rRd|j                  v rD|j                  d«      }t        |j                  «       d   «      | _        |j                  d«      }n|j                  d«      }d| _         t        |d«      r|j                  n|j                  «       | _         | j                   S #  t!        d| j#                  «       z  «       Y yxY w)z'Return byte array of RGB data as stringN)ÚLAÚRGBAÚVERSIONr  z1.1.7r  rð  r
   éÿÿÿÿ)ÚLÚRGBÚCMYKrî   ÚPÚtransparencyr  Útobytesz
identity=%s)rÝ  Ú_dataArÙ  rt  rÞ  r   r  ÚloadrÑ  r�  ÚconvertrÕ  Úinfor”  r  ÚtostringrG   rå  )r)   rÎ  rt  Únms       r   Ú
getRGBDatazImageReader.getRGBDataº  sL  € ð	?Ø�z‰zÑ!Ø"�”Ø—[‘[�Ø#%§7¡7Ð*��t”yØ˜=Ñ(Üœu Y¨rÓ2×=Ñ=¸gÔFØŸ™œ	Ü"-¨b¯h©h«j¸dÀFºl¹ÐPQÑ.RÓ"S�D”KØ˜c˜r˜�BØŸ™ B›�BØ "�D•IØÐ!3Ñ3Ø—y‘y %Ò'¨B¯G©G°SªL¸^ÈrÏwÉwÑ=VØŸZ™Z¨Ó/˜Ü&1°"·(±(³*¸Q±-Ó&@˜œØŸZ™Z¨Ó.™àŸZ™Z¨Ó.˜Ø %�D”IØS¬G°B¸	Ô,B˜bŸjšjÈÏÉÓV�”
Ø—:‘:Ðøð	?Ü˜o¨d¯m©m«oÑ=Ö>ús   ‚E2E5 Å5Fc                 óN   — | j                  «       \  }}||| j                  «       fS r    )r  r  )r)   ÚwidthÚheights      r   ÚgetImageDatazImageReader.getImageDataÕ  s%   € ØŸ™›‰ˆˆvØ�f˜dŸo™oÓ/Ð/Ð/r   c                 óü   — d| j                   j                  v rG| j                   j                  d   dz  }| j                   j                  }	 |j                  }|||dz    S y #  	 |j                  }n#  Y Y y xY wY Œ#xY w)Nr  rð  )rÙ  r  Úpaletter…  )r)   r  r  s      r   ÚgetTransparentzImageReader.getTransparentÙ  s„   € Ø˜TŸ[™[×-Ñ-Ñ-ØŸ;™;×+Ñ+¨NÑ;¸aÑ?ˆLØ—k‘k×)Ñ)ˆGð Ø!Ÿ/™/�ð ˜<¨°Q©Ð7Ð7àøð ð Ø%Ÿl™l‘Gøð Úúñ ús*   ÁA! Á!A;Á$A1Á0A;Á1A6Á3A;Á6A;r    )r   r   r   rT  Ú_cacherò  rÅ   rå  rá  Úclassmethodrâ  rü  rã  rä  r  r  r  r  r   r   r   rÑ  rÑ  f  si   „ Ù+Ø€FØ€Oó%ZòNPòð ñJó ðJð ò3ó ð3òò
ò+ò
?ò60ór   rÑ  c                   ó   — e Zd Zy)ÚLazyImageReaderN)r   r   r   r   r   r   r  r  è  s   „ Ør   r  c                 ót   — 	 | j                  «       S # t        $ r t        | «      j                  «       cY S w xY w)z<Get width, height and RGB pixels from image file.  Wraps PIL)r  rk  rÑ  )ÚimageFileNames    r   r  r  ë  s9   € ð9Ø×)Ñ)Ó+Ð+øÜò 9Ü˜=Ó)×6Ñ6Ó8Ò8ð9ús   ‚ ’"7¶7c                   ó¤   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeeeedœZd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú	DebugMemoaÅ  Intended as a simple report back encapsulator

    Typical usages:
        
    1. To record error data::
        
        dbg = DebugMemo(fn='dbgmemo.dbg',myVar=value)
        dbg.add(anotherPayload='aaaa',andagain='bbb')
        dbg.dump()

    2. To show the recorded info::
        
        dbg = DebugMemo(fn='dbgmemo.dbg',mode='r')
        dbg.load()
        dbg.show()

    3. To re-use recorded information::
        
        dbg = DebugMemo(fn='dbgmemo.dbg',mode='r')
            dbg.load()
        myTestFunc(dbg.payload('myVar'),dbg.payload('andagain'))

    In addition to the payload variables the dump records many useful bits
    of information which are also printed in the show() method.
    Nc                 ó@
  — dd l }|| _        |st        j                  | _        n%t	        |d«      r|| _        nt        |d«      | _        |dk7  ry i x| _        }	|rJt        j                  «       dk7  r3dd l}
t        «       }|
j                  d |«       |j                  «       |	d<   t        j                  «       }t        j                  |«      }t        j                  j!                  |«      }|xr t        j                  |«      xs d}t        j                  j#                  t        j                  j!                  t        j$                  d   «      «      }d}d }	 dd l}|j)                  t*        j-                  d«      «      }|d   }t        j.                  }t1        |j3                  «       «      }|j5                  «        |	j7                  i d	t9        j:                  t9        j<                  t9        j8                  «       «      «      “d
t        j>                  “dt        j@                  “dtC        t        jD                  «      “dt        jF                  “dt        jH                  “dt        jJ                  “dt        j                  “dt        j$                  “d|“d|jM                  «       “d|“d|“dt        jN                  “dtQ        t        dd«      “dtQ        t        dd«      “dtQ        t        dd«      “tQ        t        dd«      djS                  dg|D �cg c]  }|›d||   ›�‘Œ c}z   «      tU        t*        «      ||d œ¥«       t        d!ft        d"ffD ].  \  }}|D ]$  }t	        ||«      sŒ	  tQ        ||«      «       |	|<   Œ& Œ0 ||k7  r(	 |	j7                  |t        j                  |«      d#œ«       |rot        j                  j#                  t        j$                  d   «      }t        j                  jW                  |«      r 	 |t        |d$«      jY                  «       f|	d%<   i }t        jZ                  j]                  «       D ]y  \  }}|d&k(  s|d'k(  s|d d( d)k(  s	|d d* d+k(  sŒ!d,D �cg c]  }tQ        ||d «      ‘Œ }}|D �cg c]  }|sŒ|‘Œ	 c}sŒO|d   g|d-d  D �cg c]  }|sŒ|‘Œ	 c}z   }t_        |«      ||<   Œ{ ||	d.<   i | j                  d/<   | ja                  |«       y #  Y �ŒjxY wc c}w #  Y �Œ›xY w#  Y �ŒMxY w#  Y ŒãxY wc c}w c c}w c c}w )0Nr   Úwriterø  )NNNÚ__tracebackz???zmeta_data.marÚproject_versionÚgmtÚplatformÚversionÚ
hexversionÚ
executableÚexec_prefixÚprefixr  r[  r  ÚhostnameÚlcwdÚlpcwdÚ	byteorderÚmaxintÚ
maxunicodez????Úapi_versionÚversion_infoÚwinverz
			r  rZ  )r6  Úenvironmentr"  Úproject_meta_datar&  )ÚgetwindowsversionÚgetfilesystemencoding)ÚunameÚctermidÚgetgidÚgetuidÚgetegidÚgeteuidÚgetloginÚ	getgroupsÚgetpgrpÚgetpidÚgetppid)ÚexedÚlexedr'  Ú__scriptÚ	reportlabÚrlextraé
   z
reportlab.rï  zrlextra.)Ú__version__Ú__path__rd  r
   Ú__module_versionsÚ	__payload)1Úsocketr½   r0   Ústdoutr”  rp  ÚstorerH  Ú	tracebackr   Ú	print_excÚgetvaluer³   rB  r±   r  rc  r7  r[  Úmarshalrˆ   r"  rr  Úenvironrc   r#  ÚsortrÂ   ÚtimeÚasctimeÚgmtimer(  r)  rê  r*  r+  r,  r-  Úgethostnamer1  rÞ  r°   rF  r®   rz  rÉ  rž   rb   Ú_add) r)   r½   rt  Ú	getScriptrÉ  Úcapture_tracebackrQ  r\  rP  rR  rS  rA   r  r/  Úpcwdr0  rF  r&  ÚmdrV  ÚenvÚKr¡   ÚMr»   rÄ   Úmodule_versionsr  r*   rx   r$   Ú_fs                                    r   rÅ   zDebugMemo.__init__  s³  € ÛØˆŒÙÜŸ*™*ˆD�Kä�v˜gÔ&Ø$�•ä" 6¨#Ó.�”Ø�Š9�fØÐˆŒ
�UÙ¤§¡£Ð3CÒ!CÛÜ“	ˆAØ×Ñ  QÔ'Ø#$§:¡:£<ˆE�-Ñ Ü�I‰I‹KˆÜ�z‰z˜#‹ˆÜ�w‰w�‰˜sÓ#ˆØÒ)œŸ™ DÓ)Ò2¨UˆÜ�w‰w�‰œrŸw™wŸ™¬s¯x©x¸©{Ó;Ó<ˆØˆØˆð	ÛØ�}‰}œ]×3Ñ3°OÓDÓEˆBØÐ0Ñ1ˆOô �j‰jˆÜ
ˆs�x‰x‹zÓ
ˆØ	�‰ŒØ�‰ð ˜œtŸ|™|¬D¯K©K¼¿	¹	»Ó,DÓEð Ø"¤C§L¡Lðà!¤3§;¡;ðð %¤c¬#¯.©.Ó&9ðð %¤c§n¡nð	ð
 &¤s§¡ðð !¤#§*¡*ðð ¤§¡ðð ¤§¡ðð ˜sðð # F×$6Ñ$6Ó$8ðð  ðð   ðð $¤S§]¡]ðð !¤'¬#¨l¸6Ó"Bðð &¤w¬s°=ÀÓ'Hðð  '¬´°NÀ6Ó(Jð!ô" #*¬#¨h°vÓ">Ø'1§¡¸°tÐ[\Ö<]ÐVWÊÈ#ÈaÊ&Ò=QÒ<]Ñ7]Ó'^Ü)-¬mÓ)<Ø-/Ø+:ò+ô 	ô0 ÐBÐCÜð ð ðò 	‰CˆAˆað ò �Ü˜1˜Q•<ðØ#/¤7¨1¨Q£<£>˜˜ašñð	ð �Š9ðØ—‘ d´R·Z±ZÀÓ5EÑGÔHñ Ü—‘—‘¤§¡¨!¡Ó-ˆBÜ�w‰w�~‰~˜bÔ!ðØ)+¬D°°C«L×,=Ñ,=Ó,?Ð(@�E˜*Ñ%ð ˆÜ—;‘;×$Ñ$Ó&ò 	2‰CˆAˆaØ�+Š~  I¢°°3°B°¸Ò1EÈÈ2ÈAÈÐPZÓIZØ0UÖV¨1”W˜Q˜q Õ&ÐV�ÐVØ!"Ö)˜2¢b’BÔ)Ø˜1™˜¨q°°¨uÖ!;¨º¢"Ò!;Ñ;�AÜ).¨q«�O AÒ&ð	2ð &5ˆÐ!Ñ"Ø"$ˆ�
‰
�;ÑØ�	‰	�"�øð{	Úüò, =^øðÚûðÚûðÙüò WùÚ)ùÚ!;sT   Å-S- ÌS5Í5S:Î'T ÐT
 Ñ0TÒ
TÒTÒ&TÒ.TÓ-S2Ó:S?ÔTÔ
Tc                 ó\   — | j                   d   }|j                  «       D ]
  \  }}|||<   Œ y ©NrO  )rR  rž   )r)   r¼   Úpayloadr¡   r$   s        r   r]  zDebugMemo._addg  s2   € Ø—*‘*˜[Ñ)ˆØ—G‘G“Iò 	‰DˆAˆqØˆG�AŠJñ	r   c                 ó&   — | j                  |«       y r    )r]  )r)   r\  s     r   ÚaddzDebugMemo.addl  s   € Ø�	‰	�"�r   c                 óŒ  — 	 |j                  «       }t        j                  | j                  |«       y #  | j                  j	                  «       }t        «       }|j                  «       D ]-  \  }}	 t        j                  ||i|«       Œ #  d|z  ||<   Y Œ,xY w |j                  d«       t        j                  ||«       Y y xY w)Nz<unpicklable object %r>r   )Útellr‚   ÚdumprR  Úcopyr   rž   rþ  )r)   rŸ  ÚposÚSÚffr¡   r$   s          r   Ú_dumpzDebugMemo._dumpo  s¤   € ð	Ø—‘“ˆCÜ�K‰K˜Ÿ
™
 1Õ%øð		Ø�j‰j�o‰oÓˆAÜ‹yˆBØ—w‘w“yò 9‘��!ð9Ü—K‘K  1  bÕ)øð9Ø4°qÑ8�A�a“Dúð	9ð
 �F‰F�3�qŒMÜ�K‰K˜˜!Öús!   ‚03 ³<CÁ0B	ÂCÂ	
BÂ.Cc                 óž   — t        | j                  d«      }	 | j                  |«       |j                  «        y # |j                  «        w xY w)NÚwb)rp  r½   rs  rà  ©r)   rŸ  s     r   rn  zDebugMemo.dump~  ó5   € Ü�—‘˜Óˆð	Ø�J‰J�qŒMà�G‰G�IøˆA�G‰G�Iúó	   ˜: ºAc                 óX   — t        «       }| j                  |«       |j                  «       S r    )r   rs  rU  rv  s     r   rƒ   zDebugMemo.dumps…  s    € Ü‹IˆØ�
‰
�1ŒØ�z‰z‹|Ðr   c                 ó8   — t        j                  |«      | _        y r    )r‚   r  rR  rv  s     r   Ú_loadzDebugMemo._loadŠ  s   € Ü—[‘[ “^ˆ�
r   c                 óž   — t        | j                  d«      }	 | j                  |«       |j                  «        y # |j                  «        w xY w)NÚrb)rp  r½   r{  rà  rv  s     r   r  zDebugMemo.load�  rw  rx  c                 ó8   — | j                  t        |«      «       y r    )r{  r   )r)   rA   s     r   rˆ   zDebugMemo.loads”  s   € Ø�
‰
”7˜1“:Õr   c           
      ó~  — | j                  |dd  «       t        |j                  «       «      }|j                  «        |D ]p  }||   x}}t	        |t
        «      r|d   }	 t        |«       t        j                  |   }t        |dd «      |k(  xr dxs d}| j                  d|›d|›d	|›d
�«       Œr y #  d }d}Y Œ&xY w)Né   r   rL  ÚSAMEÚ	DIFFERENTz??????unknown??????z  ú = z (ú))
Ú_writelnrc   r#  rX  r3   rb   Ú
__import__r0   rÉ  rÞ  )r)   r¡   r$   rc  ÚvkÚvk0r*   r»  s           r   Ú_show_module_versionszDebugMemo._show_module_versions—  s¶   € Ø�‰�a˜˜�eÔÜ�—‘“‹NˆØ	�‰ŒØò 
	7ˆAØ˜‘tˆOˆB�Ü˜"œUÔ#¨2¨a©5 Sð*Ü˜1”Ü—K‘K ‘N�Ü˜A˜m¨DÓ1°3Ñ6ÒA¸6ÒPÀ[�ð �MŠMªa²²1Ð5Õ6ñ
	7øð*Ø�Ø)’ús   Á 6B4Â4B<c                 ó:   — | j                  d|›d|dd  ›d�«       y )Nz###################rñ  r€  z##################)r…  )r)   r¡   Úwhats      r   Ú_bannerzDebugMemo._banner§  s   € Ø�ŠÂdÈ1ÈQÈRÊ5ÐQÕRr   c                 ó(   — | j                  |d«       y )NzStart  ©rŒ  rÌ   s     r   Ú_startzDebugMemo._startª  ó   € Ø�‰�Q�yÕ!r   c                 ó(   — | j                  |d«       y )NzFinish rŽ  rÌ   s     r   Ú_finishzDebugMemo._finish­  r�  r   c                 ój   — | j                  |«       | j                  |«       | j                  |«       y r    )r�  r…  r’  rÉ   s      r   Ú_show_lineszDebugMemo._show_lines°  s$   € Ø�‰�AŒØ�‰�aÔØ�‰�Q�r   c                 ó|   — |›dt         j                  j                  |d   «      ›�}| j                  ||d   «       y )Nrñ  r   r
   )r³   r  Úbasenamer”  rÉ   s      r   Ú
_show_filezDebugMemo._show_fileµ  s3   € ÚœŸ™×)Ñ)¨!¨A©$Ô/Ð0ˆØ×Ñ˜˜1˜Q™4Õ r   c                 óŽ   — |rCdd l }| j                  |«       |j                  || j                  «       | j                  |«       y y rœ   )Úpprintr�  rQ  r’  )r)   r¡   r$   r™  s       r   Ú_show_payloadzDebugMemo._show_payload¹  s5   € ÙÛØ�K‰K˜ŒNØ�M‰M˜!˜DŸK™KÔ(Ø�L‰L˜�Oð	 r   c           
      ó^  — dD ]™  }	 |gj                   }t        |«       t        j                  |   } ||j                  «       dD ]&  }t        ||«      sŒ ||›dt        ||«      ›�«       Œ( 	 | j                  ddj                  |j                  «      z   «       Œ› y #   d«       Y Œ<xY w)N)Ú	_rl_accelÚ	_renderPMÚsgmlopÚpyRXPÚpyRXPUÚ_imagingr   )rL  r  Ú_versionr)  rZ  z	not foundrñ  )
rµ   r†  r0   rÉ  rd  r”  rÞ  r…  r°   Ú__self__)r)   Úmnr»   r*   Úvns        r   Ú_show_extensionszDebugMemo._show_extensionsÀ  s™   € ØXò 	4ˆBð	Ø�D—K‘K�Ü˜2”Ü—K‘K ‘O�Ù�!—*‘*”ØHò 8�BÜ˜q •}Ù¢R¬°°"¬Ð6Õ7ñ8ð
 �M‰M˜#˜cŸh™h q§z¡zÓ2Ñ2Õ3ñ	4øðÙ�+–ús   ‡AB ÁB Â 
B,)rN  rO  r%  rH  c                 óÎ  — t        | j                  j                  «       «      }|j                  «        |D ]L  }|t        | j                  j                  «       «      vsŒ)| j                  |d›d| j                  |   ›�«       ŒN |D ]L  }|t        | j                  j                  «       «      v sŒ) | j                  |   | || j                  |   «       ŒN | j                  «        y )NÚ15rƒ  )rc   rR  r#  rX  Úspecialsr…  r¦  )r)   rc  r¡   s      r   ÚshowzDebugMemo.showÓ  sÀ   € Ü�—‘—‘Ó"Ó#ˆØ	�‰ŒØò 	dˆAØœ˜TŸ]™]×/Ñ/Ó1Ó2Ò2°D·M±MÓRSÐTX×T^ÑT^Ð_`ÒTaÐBbÕ4cð	dàò 	WˆAØ”D˜Ÿ™×+Ñ+Ó-Ó.Ò.Ð0@°·±¸aÑ0@ÀÀaÈÏ
É
ÐSTÉÕ0Vð	Wà×ÑÕr   c                 ó&   — | j                   d   |   S rh  ©rR  ©r)   rl  s     r   ri  zDebugMemo.payloadÜ  ó   € Ø�z‰z˜+Ñ& tÑ,Ð,r   c                 ó(   — || j                   d   |<   y rh  r¬  )r)   rl  rR  s      r   rÈ   zDebugMemo.__setitem__ß  s   € Ø(-ˆ�
‰
�;Ñ Ò%r   c                 ó&   — | j                   d   |   S rh  r¬  r­  s     r   rË   zDebugMemo.__getitem__â  r®  r   c                 ó@   — | j                   j                  |dz   «       y r¢  )rQ  r$  )r)   Úmsgs     r   r…  zDebugMemo._writelnå  s   € Ø�‰×Ñ˜#˜d™(Õ#r   )zrl_dbgmemo.dbgrø  r
   r   r
   N)r   r   r   rT  rÅ   r]  rk  rs  rn  rƒ   r{  r  rˆ   r‰  rŒ  r�  r’  r”  r—  rš  r¦  r©  rª  ri  rÈ   rË   r…  r   r   r   r"  r"  ò  s�   „ ñó2Yòvò
òòòò
$òòò7ò Sò"ò"òò
!òò4ð &;Ø*Ø*Ø&ñ€Hò
 ò-ò.ò-ó$r   r"  c                 óR   — | D ]"  }t        |«      rt        ||«       Œ ||«       Œ$ y r    )r5   Ú_flatten)r  rÄ   rx   s      r   r´  r´  è  s'   € Øò ˆÜ�Œ8”X˜a •]Ù��dñr   c                 ó6   — g }t        | |j                  «       |S )z'recursively flatten the list or tuple L)r´  rµ   )r  rº   s     r   Úflattenr¶  í  s   € à
€AÜˆQˆq�x‰xÔØ€Hr   c                 ób   — 	  | t        j                  |«      j                  «      }|r|S |dz  }Œ/)zPapply func to the locals at each stack frame till func returns a non false valuer
   )r0   r¦   Úf_locals)rS  ÚdepthÚ_s      r   Úfind_localsr»  ó  s3   € à
Ù”—‘˜uÓ%×.Ñ.Ó/ˆÙ�QˆhØ�‰
ˆð r   c                   ó   — e Zd Zd„ Zd„ Zy)Ú_FmtSelfDictc                 ó    — || _         || _        y r    )ÚobjÚ_overrideArgs)r)   r¿  ÚoverrideArgss      r   rÅ   z_FmtSelfDict.__init__û  s   € ØˆŒØ)ˆÕr   c                 óÂ   — 	 | j                   |   S # t        $ rD 	 | j                  j                  |   cY S # t        $ r t	        | j                  |«      cY cY S w xY ww xY wr    )rÀ  rÒ   r¿  rÖ  rÞ  rÌ   s     r   rË   z_FmtSelfDict.__getitem__þ  sa   € ð	+Ø×%Ñ% aÑ(Ð(øÜò 	+ð+Ø—x‘x×(Ñ(¨Ñ+Ò+øÜò +Ü˜tŸx™x¨Ó*Ô*ð+úð	+ús)   ‚ ‘	A›6³A¶AÁAÁAÁAN)r   r   r   rÅ   rË   r   r   r   r½  r½  ú  s   „ ò*ó+r   r½  c                   ó   — e Zd ZdZd„ Zy)ÚFmtSelfDictz mixin to provide the _fmt methodc                 ó$   — t        | |«      }||z  S r    )r½  )r)   ÚfmtrÁ  r¼   s       r   Ú_fmtzFmtSelfDict._fmt	  s   € Ü˜˜|Ó,ˆØ�Q‰wˆr   N)r   r   r   rT  rÇ  r   r   r   rÄ  rÄ    s
   „ Ù*ór   rÄ  c                 óF  — g } |d«      }g }| }| j                  «       D ]Y  } ||«      }||z   |z   |k  s|g k(  r|j                  |«       ||z   |z   }Œ5|j                  dj                  |«      «       |g}|}Œ[ |g k7  r |j                  dj                  |«      «       |S )Nrñ  )r�  rµ   r°   )	ÚtxtÚmWÚSWr  ÚwsÚOrø  r˜   Últs	            r   Ú_simpleSplitrÏ    s¨   € Ø
€AÙ	ˆC‹€BØ
€AØ	ˆ€AØ�Y‰Y‹[ò ˆÙ�‹UˆØˆR‰4�‰7�BŠ;˜!˜Rš%Ø�H‰H�QŒKØ�B‘˜‘‰Aà�H‰H�S—X‘X˜a“[Ô!Ø�ˆAØ‰Aðð 	ˆ"‚uˆa�h‰h�s—x‘x “{Ô#Ø€Hr   c                 óª   ‡— ddl mŠ t        | «      j                  d«      }||fˆfd„	}|r'g }|D ]  }|j	                  t        |||«      «       Œ  |}|S )Nr   )ÚstringWidthro  c                 ó   •—  ‰| ||«      S r    r   )ÚtextÚfNÚfSrÑ  s      €r   r  zsimpleSplit.<locals>.<lambda>!  s   ø€ ±¸DÀ"ÀbÓ0I€ r   )Úreportlab.pdfbase.pdfmetricsrÑ  rO   r�  ÚextendrÏ  )	rÓ  ÚfontNameÚfontSizeÚmaxWidthÚlinesrË  r  ÚlrÑ  s	           @r   ÚsimpleSplitrÝ    sZ   ø€ Ý8Ü�d‹O×!Ñ! %Ó(€EØ! hÔ	I€BÙØˆØò 	2ˆAØ�H‰H”\ ! H¨RÓ0Õ1ð	2àˆØ€Lr   c                 óÎ   — ddl m} | €| S t        | «      r| j                  d«      } || «      } | j	                  dd«      } | j	                  dd«      } | j	                  dd	«      } | S )
zEscapes once onlyr   )Úescaper<   ú	&amp;amp;ú&amp;ú&amp;gt;ú&gt;ú&amp;lt;ú&lt;)Úxml.sax.saxutilsrß  r=   rN   r  )rÓ  rß  rA   s      r   ÚescapeTextOncerç  )  sa   € å'Ø€|ØˆÜˆt„}˜$Ÿ+™+ fÓ-�aÙ�$‹<€DØ�<‰<˜ XÓ.€DØ�<‰<˜ WÓ-€DØ�<‰<˜ WÓ-€DØ€Kr   c                 ó‚   — t        | «      r| S t        D ]  }	 | j                  |«      c S  t        d| z  «      ‚#  Y Œ*xY w)Nz(cannot convert %r to filesystem encoding)r[   ÚfsEncodingsrN   r‚  )r½   rJ   s     r   ÚfileName2FSEncrê  5  sM   € Ü�„}Øˆ
äò 	ˆCðØ—y‘y “~Ò%ð	ô
 Ð?À"ÑDÓ
EÐEøðÙús   ˜:º>c                 óÒ   — t        j                  dg| dg«      }t        j                  |d«      \  }}}	  ||«        ||«        ||«       t	        |||«      S # t        $ r Y Œw xY w)a¸  
    Loop over a collection with look-ahead and look-back.
    
    From Thomas Guest, 
    http://wordaligned.org/articles/zippy-triples-served-with-python
    
    Seriously useful looping tool (Google "zippy triples")
    lets you loop a collection and see the previous and next items,
    which get set to None at the ends.
    
    To be used in layout algorithms where one wants a peek at the
    next item coming down the pipe.

    Nrð  )Ú	itertoolsÚchainÚteeÚStopIterationÚzip)rž   r×  ÚprevÚthisÚnexts        r   Úprev_this_nextrô  A  sp   € ô  �_‰_˜d˜V U¨T¨FÓ3€FÜ —}‘} V¨QÓ/Ñ€Dˆ$�ðÙˆTŒ
ÙˆTŒ
ÙˆTŒ
ô ˆt�T˜4Ó Ð øô ò Ùðús   µA Á	A&Á%A&c                 ó€  — t        | «      r| j                  d«      } t        | «      dz
  }| dz  } d}dg}||k  rn| |   dk(  rK| |dz      dk(  r|dxx   dz  cc<   |dz  }n=|d   j                  «       |d<   ||k7  r"|j	                  d«       n|dxx   | |   z  cc<   |dz  }||k  rŒn|d   j                  «       |d<   |S )a  
    Splits the string s at every unescaped comma and returns the result as a list.
    To escape a comma, double it. Individual items are stripped.
    To avoid the ambiguity of 3 successive commas to denote a comma at the beginning
    or end of an item, add a space between the item seperator and the escaped comma.
    
    >>> commasplit(u'a,b,c') == [u'a', u'b', u'c']
    True
    >>> commasplit('a,, , b , c    ') == [u'a,', u'b', u'c']
    True
    >>> commasplit(u'a, ,,b, c') == [u'a', u',b', u'c']
    r<   r
   rñ  r   r  r~  r  )r=   rN   r©   r„   rµ   )rA   r  rU   r'  s       r   Ú
commasplitrö  [  sÒ   € ô ˆq„z�q—x‘x Ó'�1ÜˆA‹ˆq‰€AØˆ�I€AØ	€AØ
€e€AØ
ˆQŠ$ØˆQ‰4�Š:Ø��1‘‰v�tŠ|Ø�"“�t‘“Ø�Q‘‘à˜"™Ÿ™›��"‘Ø�a’4˜Ÿ™ #�àˆb‹E�Q�q‘T‰M‹EØ	ˆ1‰ˆð ˆQ‹$ð ˆb‰E�K‰K‹M€A€b�EØ€Hr   c           
      óˆ   — dj                  | D �cg c]#  }dt        |«      j                  dd«      z   dz   ‘Œ% c}«      S c c}w )a‘  
    Inverse of commasplit, except that whitespace around items is not conserved.
    Adds more whitespace than needed for simplicity and performance.
    
    >>> commasplit(commajoin(['a', 'b', 'c'])) == [u'a', u'b', u'c']
    True
    >>> commasplit((commajoin([u'a,', u' b ', u'c'])) == [u'a,', u'b', u'c']
    True
    >>> commasplit((commajoin([u'a ', u',b', u'c'])) == [u'a', u',b', u'c'] 
    r~  rñ  z,,)r°   rO   r  )rÜ  rU   s     r   Ú	commajoinrø  {  s=   € ð �9‰9ÐPQÖSÈ1�tœi¨›l×2Ñ2°4¸Ó?Ñ?À$ÓFÒSÓTÐTùÒSs   �(?c                 ó^  — |xr t         j                  j                  xs t         j                  j                  } || «      r| S t         j                  j                  }t         j                  j                  | «      s|D ]  } ||| «      } ||«      sŒ|c S  |rt        d| ›d|›�«      ‚| S )z*search for relative files in likely placeszcannot locate z with paths=)r³   r  r®   r¯   r°   r  r‚  )r½   Úpathsr®   ÚfailÚexistsr  r9  r  s           r   ÚfindInPathsrý  ˆ  sˆ   € àÒ&œŸ™Ÿ™Ò7¬"¯'©'¯-©-€FÙˆb„z˜"�9Ü�G‰G�L‰L€EÜ�7‰7�=‰=˜ÔØò 	ˆAÙ˜˜"“+ˆCÙ�c�{Ø’
ð	ñ •:Â"ÁUÐKÓLÐLØ€Ir   c                 óž   — t        j                  «       \  }}}t        | ||j                  d„ | t	        |«      |fD «       «      «      |«       y)z,add msg to the args of an existing exceptionc              3   ó&   K  — | ]	  }|sŒ|–— Œ y ­wr    r   ©Ú.0rº  s     r   ú	<genexpr>z$annotateException.<locals>.<genexpr>˜  s   è ø€ ÒB 1ÂœQÑBùs   ‚ŠN)r0   rH  rš   r°   r8   )r²  rJ   ÚpostMsgrª  r˜   r$   r™   s          r   rG   rG   •  s>   € ä
�,‰,‹.�E€A€aˆÜˆq‘�3—8‘8ÑB¨¬S°«V°GÐ(<ÔBÓCÓDÀQÕGr   c                 ó&  — | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  dd	«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } | S )
zÔEnsure XML output is escaped just once, irrespective of input

    >>> escapeOnce('A & B')
    'A &amp; B'
    >>> escapeOnce('C &amp; D')
    'C &amp; D'
    >>> escapeOnce('E &amp;amp; F')
    'E &amp; F'

    ú&rá  rà  râ  rã  rä  rå  z&amp;#z&#)r  )r…  s    r   Ú
escapeOncer  š  s�   € ð �<‰<˜˜WÓ%€Dð
 �<‰<˜ WÓ-€DØ�<‰<˜
 FÓ+€DØ�<‰<˜
 FÓ+€DØ�<‰<˜ $Ó'€Dð �<‰<˜ WÓ-€DØ�<‰<˜
 FÓ+€DØ�<‰<˜
 FÓ+€DØ€Kr   c                   ó   — e Zd ZdZd„ Zy)ÚIdentStrz,useful for identifying things that get splitc                 óÎ   — t        |t        «      r-|j                  }|d dt        t	        |«      «      z     }|dz  }nd}|d|z  z  }t        j                  | |«      }||_        |S )Nr€  r
   r   z[%d])r3   r  Ú_IdentStr__incr©   r8   Ú__new__)rö  rR  Úincr)   s       r   r  zIdentStr.__new__·  si   € Ü�eœHÔ%Ø—+‘+ˆCØÐ-˜Qœs¤3 s£8›}™_Ð-Ð.ˆEØ�1‰H‰CàˆCØ�˜#‘ÑˆÜ�{‰{˜3˜uÓ%ˆØˆŒ
Øˆr   N©r   r   r   rT  r  r   r   r   r  r  µ  s
   „ Ù6ó
r   r  c                   ó   — e Zd ZdZd„ Zy)ÚRLStringzÚallows specification of extra properties of a string using a dictionary of extra attributes
    eg fontName = RLString('proxima-nova-bold',
                    svgAttrs=dict(family='"proxima-nova"',weight='bold'))
    c                 ó|   — t         j                  | |«      }|j                  «       D ]  \  }}t        |||«       Œ |S r    )r8   r  rž   rŸ   )rö  r$   rÃ   r)   r¡   s        r   r  zRLString.__new__È  s<   € Ü�{‰{˜3˜qÓ!ˆØ—:‘:“<ò 	‰CˆAˆaÜ�D˜˜1Õð	àˆr   Nr  r   r   r   r  r  Ã  s   „ ñór   r  c                 ó>   — t        | «      s| j                  d«      } | S )zEforce filename strings to unicode so python can handle encoding stuffr<   )r[   rN   r@   s    r   ÚmakeFileNamer  Î  s   € ä�QŒ<Ø�H‰H�VÓˆØ€Hr   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚFixedOffsetTZz&Fixed offset in minutes east from UTC.c                 óJ   — t        j                  ||¬«      | _        || _        y )N)ÚhoursÚminutes)ÚdatetimeÚ	timedeltaÚ_FixedOffsetTZ__offsetÚ_FixedOffsetTZ__name)r)   rù  r*   rl  s       r   rÅ   zFixedOffsetTZ.__init__×  s   € Ü ×*Ñ*°¸aÔ@ˆŒØˆ�r   c                 ó   — | j                   S r    )r  ©r)   Údts     r   Ú	utcoffsetzFixedOffsetTZ.utcoffsetÛ  s   € Ø�}‰}Ðr   c                 ó   — | j                   S r    )r  r  s     r   ÚtznamezFixedOffsetTZ.tznameÞ  s   € Ø�{‰{Ðr   c                 ó,   — t        j                  d«      S rœ   )r  r  r  s     r   ÚdstzFixedOffsetTZ.dstá  s   € Ü×!Ñ! !Ó$Ð$r   N)r   r   r   rT  rÅ   r  r!  r#  r   r   r   r  r  Ô  s   „ Ù0òòòó%r   r  c                   ó4   — e Zd Zdd„Zed„ «       Zed„ «       Zy)Ú	TimeStampNc                 ó  — |€ddl m} t        j                  j	                  dd«      j                  «       }|s|r0|rt        |«      nd}t        j                  |«      }dx}}d| _	        not        j                  «       }t        j                  |«      }t        |«      }t        |j                  dz  «      }|j                  dz  d	z  }|j                  | _	        || _        || _        t        |«      d d
 | _        || _        || _        y )Nr   )Ú	invariantÚSOURCE_DATE_EPOCHr  g   À¡6ÌAÚUTCg      ¬@i  é<   r±  )r™  r'  r³   rW  rÔ   r„   ra   rY  r[  r!  Ú	localtimerb   Ú	tm_gmtoffÚtm_zoner˜   rÎ  ÚYMDhmsÚdhhÚdmm)r)   r'  r˜   rÎ  r/  r0  Ú
local_times          r   rÅ   zTimeStamp.__init__å  sß   € ØÐÝ5Ü�J‰J�N‰NÐ.¨rÓ2×8Ñ8Ó:ˆÙ™Ù”�A” ˆAÜ—‘˜Q“ˆBØˆMˆC�#ØˆD�Kä—	‘	“ˆAÜŸ™¨Ó*ˆJÜ�zÓ"ˆBÜ�j×*Ñ*¨fÑ5Ó6ˆCØ×'Ñ'¨$Ñ.°"Ñ4ˆCØ$×,Ñ,ˆDŒKØˆŒØˆŒÜ˜B“i  �mˆŒØˆŒØˆ�r   c                 óü   — | j                   rSt        j                  j                  | j                  t	        | j
                  | j                  | j                   «      «      S t        j                  j                  «       S r    )r!  r  Úfromtimestampr˜   r  r/  r0  Únowr(   s    r   r  zTimeStamp.datetimeû  sV   € à�;Š;Ü×$Ñ$×2Ñ2°4·6±6¼-ÈÏÉÐQU×QYÑQYÐZ^×ZeÑZeÓ:fÓgÐgä×$Ñ$×(Ñ(Ó*Ð*r   c                 ó@   — t        j                  | j                  «      S r    )rY  rZ  rÎ  r(   s    r   rZ  zTimeStamp.asctime  s   € ä�|‰|˜DŸG™GÓ$Ð$r   r    )r   r   r   rÅ   Úpropertyr  rZ  r   r   r   r%  r%  ä  s/   „ óð, ñ+ó ð+ð ñ%ó ñ%r   r%  c                 ó  — t        |«      st        dt        | «      ›d|›�«      ‚t        |«      }|j	                  «       }|st        dt        | «      z  «      ‚|r	|d   dvrdnd}t        d|›|›�i t        | ¬«      ¬	«      S )
z/Can call down into e.g. object1.object2[4].attrzinvalid recursive access of r>  zempty recursive access of %sr   z[.(r  r¿  )r¿  )ÚgrÜ  )rX   rW  rF  rS   r„   r‚  r   rd   )r¿  rl  r8  Údots       r   ÚrecursiveGetAttrr:    su   € ä�Œ;�iÌtÐTWÍyÑY]Ð(^Ó_Ð_Ü�D‹>€DØ�:‰:‹<€DÙ”zÐ"@Ä4ÈÃ9Ñ"LÓMÐMÙ˜$˜q™'¨Ñ.‰#°B€CÝ¡3¡tÐ,°´d¸s´mÔDÐDr   c                 óÂ   — |j                  d«      }t        |«      dk(  rt        | ||«       ydj                  |dd «      }|d   }t	        | |«      }t        |||«       y)z7Can call down into e.g. object1.object2[4].attr = valuer>  r
   Nr  )r�  r©   rŸ   r°   r:  )r¿  rl  rR  ÚtokensÚmostÚlastÚparents          r   ÚrecursiveSetAttrr@    s^   € ð �Z‰Z˜‹_€FÜ
ˆ6ƒ{�aÒÜ��T˜5Õ!à�x‰x˜˜s ˜Ó$ˆØ�b‰zˆÜ! # tÓ,ˆÜ�˜˜eÕ$r   c                 ó¾   — |j                  d«      }t        |«      dk(  rt        | |«       y dj                  |d d «      }|d   }t	        | |«      }t        ||«       y )Nr>  r
   r  )r�  r©   Údelattrr°   r:  )r¿  rl  r<  r=  r>  r?  s         r   ÚrecursiveDelAttrrC    sX   € Ø�Z‰Z˜‹_€FÜ
ˆ6ƒ{�aÒÜ��TÕà�x‰x˜˜s ˜Ó$ˆØ�b‰zˆÜ! # tÓ,ˆÜ�˜Õr   c              #   ó°   K  — d}t        | «      }||k  r*	 | j                  d|«      }| || –— |dz   }| sy	 ||k  rŒ)yy# t        $ r
 | |d –— Y yw xY w­w)z:yield sublists of L separated by None; the Nones disappearr   Nr
   )r©   Úindexr‚  )r  rU   r  Újs       r   ÚyieldNoneSplitsrG  %  sq   è ø€ à	€AÜˆA‹€AØ
ˆAŠ#ð	Ø—‘˜˜Q“ˆAØ�A�a�&ŠLØ�!‘ˆAÙ�e�1ð ˆA�#øô ò 	Ø�A�B�%ŠKÙð	üs,   ‚A– A  ¶A¾AÁ AÁAÁAÁAc                   ó,   ‡ — e Zd ZdZeˆ fd„«       Zˆ xZS )Ú_rl_reprTc                 ó’   •— | j                   }t        j                  rd|j                  › d|j                  › d�S t
        || �  «       S )Nú<r>  z object at 0x?hidden?>)ri  rI  Úhider   r   Úsuperr   )r¿  Úklassri  s     €r   Ú__call__z_rl_repr.__call__5  sJ   ø€ à—‘ˆÜQY×Q^ÒQ^�!�E×$Ñ$Ð% Q u§~¡~Ð&6Ð6LÐMð 	2Ü˜5 Ñ.Ó0ð	2r   )r   r   r   rL  r   rO  Ú__classcell__)ri  s   @r   rI  rI  3  s   ø„ Ø€DØó2ó ô2r   rI  c                 óP   — dj                  d„ | j                  d«      D «       «      S )Nro  c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr    )Úlstripr   s     r   r  z_rl_docdent.<locals>.<genexpr>=  s   è ø€ Ò8 Q�a—h‘h—jÑ8ùs   ‚)r°   r�  r@   s    r   Ú_rl_docdentrT  <  s   € Ø�9‰9Ñ8¨!¯'©'°$«-Ô8Ó9Ð9r   )r<   r    )z.ttf)NNrñ   )NN)Nr   r   r˜  )r˜   )r   )TF)r<   r  rñ  )³rL  rT  r³   r‚   r0   rY  ri   r  rD  Úastr   r€  r   r‰   r   r�   Úior   Úhashlibr   Úreportlab.lib.rltempfiler   r	   r   r   r   r   ÚPILr   r   r(  Úpython_implementationÚisPyPyr"   r&   r!   r*   r.   r1   rb   rc   r5   r9   rh   r8   rF   ÚstrTypesrB   rK   rO   rQ   rS   rV   rX   r=   r[   r^   ry   r{   r}   r†   r‹   rŽ   r�   r�   rÞ  Úrl_execr”   rš   r¢   r¬   r¾   rd   rÀ   rl  rö   rù   rô   rþ   rI  r  rc  rd  Ú__RL_DIRr  r7  r&  r[  r%  r  r¤   r"  r.  ÚNotImplementedErrorr6  r8  Úarchiver  rª  r	  r  r
  r©   r  r  rB  r  r  r°   r(  r®   Úsplitextr3  r/  r1  r4  r:  rC  rN  Ú
haveImagesrP  r_  rg  rm  ru  Úurllib.parserv  rw  Úurllib.requestrx  r{  r—  r   r£  r¦  r¯   r¬  r±   r¯  ÚgetmtimeÚmktimer¼  r½  r¿  rÅ  rÌ  rÏ  rÑ  r  r  r"  r´  r¶  r»  r½  rÄ  rÏ  rÝ  rç  rê  rì  rô  rö  rø  rý  rG   r  r  r  r  Útzinfor  r%  r:  r@  rC  rG  rI  rT  r   r   r   ú<module>rh     s�  ðð €ØD€ç 8× 8× 8Ó 8Ý ß WÝ Ý ç Dß ^Ó ^Ý ÷ñ ñ ‹K€	ðÛØ+ˆX×+Ñ+Ó-¨vÑ5€Fò'÷ñ ñ �q—s‘s“)ó àò ð �t�ó òñ �$‹Z€Ø�ˆ;€òBóPóRóTó òò&ò òòòPò"ó"òKòDò>ò:ó Ù
�(˜6Ó
"€Øò\óòó
óô6.ˆTô 6.ðp ‡7�7ˆeÒ÷ àØØØØØØØØØØØØØñ
€Nô 
óó Ø	�‰�‰˜×+Ñ+Ó	,€Ø
�‰�‰�hÓÒ, HÒI°·±·±ÀÓ0I€ØðÙ÷ ð1Ø€MØÐ€FÙ˜=Õ)Ù!Ð"GÈ-Ñ"WÓXÐXØ�w‰w×Ñ §¡× 0Ñ 0°×1FÑ1FÓ GÓH€HØ˜RŸV™VÑ#€KØ—'‘'—/‘/ (Ó+€KØ  2§6¡6Ñ)€NÙ˜Ó%€NÙ˜NÓ+Ðà +Ø#1Ø%Ø +Ø%'§W¡W×%5Ñ%5Ø%'§W¡W×%5Ñ%5Ø Ÿi™iØŸ6™6Ù!$ R§V¡V£ó(ò.&ð "ŸY™Y¨w¯©ÈÐVX×V]ÑV]×VbÑVbó ð 	ˆ'Ø
Ò
I�R—W‘W—^‘^ B§G¡G×$4Ñ$4°XÓ$>¸qÑ$AÀ5Ñ$HÓI€òòòòBñ  ' yÐ1DÁ\ÓRÐ ó,=ð\ ˜$Ð€
÷ñ ò*óXòó÷ +Ý "ò ó8$ótó0ð !#§¡§¡ó 3ð !Ÿg™gŸmšm¸R¿W¹W×=MÑ=Mó cð !#§¡§¢¸r¿w¹w×?OÑ?OÐ[]×[eÒ[eó Rð #%§'¡'§.¡.À"Ç'Á'×BRÑBRÐdf×dkÑdk×dtÒdtð  BF÷  BMò  BMó 	jõ -ò0ò&ò*÷@ñ @ôD	�kô 	ò9÷t$ñ t$òlò
ó÷+ñ +÷ñ òò"	ò
ò	Fó ò!ò4ò@UóóHò
ô6ˆsô ô	ˆsô 	òô%�H—O’Oô %÷  %ñ  %óDEò
%òò÷2ñ 2ñ ‹:€ó:øð}(ØƒFûð^Ø�x‰x˜‰{ƒHûðZØ�W‰W�^‰^˜HÓ%€FØ€Mòà!ŸY™Yö ús%   Á'T" Æ6T, ÇD,U Ô"T)Ô,U Õ1U7