§
    ¢”jÌ©  ã                   ót  — d Z ddlmZmZmZmZ ddlmZmZm	Z	m
Z
 ddlmZ ddlZddlZ ej        e¦  «        Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zdgdz  Zdegz  edd…<   degz  edd…<   degz  edd…<   degz  edd…<   eed<    ee¦  «        dk    sJ ‚edd…         Zeed<   eed<   edd…         Zeed<   eed<   eed<   g d¢Zd„  e e¦  «        D ¦   «         Z!dZ"d„ Z#g d¢Z$d„ Z% e%d¦  «        Z& e%d ¦  «        Z' e%d!¦  «        Z(ej)        fd"„Z* ed¦  «         ed#¦  «        z   Z+d$„ Z, G d%„ d&e-¦  «        Z. G d'„ d(e/¦  «        Z0g d)¢Z1 G d*„ d+e0¦  «        Z2 G d,„ d-e0¦  «        Z3 G d.„ d/e3¦  «        Z4 G d0„ d1e4¦  «        Z5 G d2„ d3e/¦  «        Z6 G d4„ d5e6¦  «        Z7 G d6„ d7e/¦  «        Z8d8„ Z9dS )9zwpsCharStrings.py -- module implementing various kinds of CharStrings:
CFF dictionary data and Type1/Type2 CharStrings.
é    )ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloat)ÚbytechrÚbyteordÚ	bytesjoinÚstrjoin)Ú	BoundsPenNc                 óÄ   — |dk    r|t          ||         ¦  «        f}|dz   }n|}	 | j        |         }n# t          $ r d |fcY S w xY w|                      |¦  «        }||fS )Né   é   )r   Ú	operatorsÚKeyErrorÚhandle_operator)ÚselfÚb0ÚdataÚindexÚopÚoperatorÚvalues          úk/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/fontTools/misc/psCharStrings.pyÚread_operatorr      sŒ   € Ø	ˆR‚x€xØ•'˜$˜uœ+Ñ&Ô&Ð'ˆØ˜‘	ˆˆàˆðØ”> "Ô%ˆˆøÝð ð ð Ø�Uˆ{ÐÐÐðøøøà× Ò  Ñ*Ô*€EØ�%ˆ<Ðs   §5 µAÁAc                 ó   — |dz
  |fS )Né‹   © ©r   r   r   r   s       r   Ú	read_byter   "   s   € Ø�‰8�Uˆ?Ðó    c                 óR   — t          ||         ¦  «        }|dz
  dz  |z   dz   |dz   fS )Né÷   é   él   r   ©r   ©r   r   r   r   Úb1s        r   Úread_smallInt1r(   &   s5   € Ý	��e”Ñ	Ô	€BØ�‰H˜Ñ˜bÑ  3Ñ&¨°©	Ð1Ð1r    c                 óT   — t          ||         ¦  «        }|dz
   dz  |z
  dz
  |dz   fS )Néû   r#   r$   r   r%   r&   s        r   Úread_smallInt2r+   +   s7   € Ý	��e”Ñ	Ô	€BØ�#‰Xˆ;˜Ñ˜rÑ! CÑ'¨°©Ð2Ð2r    c                 óT   — t          j        d|||dz   …         ¦  «        \  }||dz   fS )Nú>hé   ©ÚstructÚunpack©r   r   r   r   r   s        r   Úread_shortIntr3   0   ó2   € ÝŒ}˜T 4¨°¸±	Ð(9Ô#:Ñ;Ô;�H€UØ�%˜!‘)ÐÐr    c                 óT   — t          j        d|||dz   …         ¦  «        \  }||dz   fS )Nú>lé   r/   r2   s        r   Úread_longIntr8   5   r4   r    c                 ór   — t          j        d|||dz   …         ¦  «        \  }t          |d¬¦  «        |dz   fS )Nr6   r7   é   ©ÚprecisionBits)r0   r1   r   r2   s        r   Úread_fixed1616r=   :   s?   € ÝŒ}˜T 4¨°¸±	Ð(9Ô#:Ñ;Ô;�H€UÝ˜¨RÐ0Ñ0Ô0°%¸!±)Ð;Ð;r    c                 ó&   — t           sJ ‚t          |fS ©N)ÚNotImplementedErrorÚNotImplementedr   s       r   Úread_reservedrB   ?   s   € ÝÐÐÐÝ˜5Ð Ð r    c                 óÖ   — d}	 t          ||         ¦  «        }|dz   }|dz  dz	  }|dz  }|dk    rn(|t          |         z   }|dk    rn|t          |         z   }ŒVt          |¦  «        |fS )NÚ Tr   éð   r7   é   )r   ÚrealNibblesÚfloat)r   r   r   r   ÚnumberÚbÚnibble0Únibble1s           r   Úread_realNumberrM   D   sŠ   € Ø€Fð
/Ý�D˜”KÑ Ô ˆØ˜‘	ˆØ�t‘8 ‘/ˆØ�d‘(ˆØ�cŠ>ˆ>ØØ�+ gÔ.Ñ.ˆØ�cŠ>ˆ>ØØ�+ gÔ.Ñ.ˆð
/õ �‰=Œ=˜%ÐÐr    r#   é    é×   r"   r7   r*   éÿ   é   é   é   )Ú0Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9ú.ÚEúE-Nú-c                 ó   — i | ]\  }}||“Œ	S r   r   )Ú.0ÚiÚvs      r   ú
<dictcomp>rf   w   s   € Ð;Ð;Ð;™D˜A˜q�1�aÐ;Ð;Ð;r    éÁ   c                 ó
  — i }i }| D ]y}t          |¦  «        dk    r|d         ||d         <   n|dd …         ||d         <   t          |d         t          ¦  «        r|d         ||d         <   Œg|d         f||d         <   Œz||fS )Nr.   r   r   )ÚlenÚ
isinstanceÚtuple)ÚoperatorListÚoperÚopcÚitems       r   ÚbuildOperatorDictrp   |   sš   € Ø€DØ
€CØð &ð &ˆÝˆt‰9Œ9˜Š>ˆ>Ø  œGˆD��a”‰MˆMà    œHˆD��a”‰MÝ�d˜1”g�uÑ%Ô%ð 	&Ø œ7ˆC��Q”‰LˆLà  œG˜:ˆC��Q”‰LˆLØ�ˆ9Ðr    )4©r   Úhstem©é   Úvstem©r7   Úvmoveto©é   Úrlineto©é   Úhlineto©é   Úvlineto©é   Ú	rrcurveto©é
   Úcallsubr©é   Úreturn©é   Úendchar)rF   Úvsindex)r:   Úblend)é   Úhstemhm)é   Úhintmask)é   Úcntrmask©é   Úrmoveto©é   Úhmoveto)é   Úvstemhm)é   Ú
rcurveline)é   Ú
rlinecurve)é   Ú	vvcurveto)é   Ú	hhcurveto)rR   Ú	callgsubr©rS   Ú	vhcurveto©é   Ú	hvcurveto)©r   r   Úignore))r   rt   Úand))r   r7   Úor))r   ry   Únot))r   r‚   Ústore))r   é	   Úabs))r   r…   Úadd))r   rˆ   Úsub©)r   r   Údiv))r   é   Úload))r   r‹   Úneg))r   rF   Úeq))r   r�   Údrop))r   r“   Úput))r   r–   Úget))r   r™   Úifelse))r   r›   Úrandom))r   r�   Úmul))r   r¡   Úsqrt))r   r£   Údup))r   rQ   Úexch))r   rR   r   ))r   rS   Úroll))r   é"   Úhflex))r   é#   Úflex))r   é$   Úhflex1))r   é%   Úflex1c                 óö   — | dk    rt          d¦  «        }t          d¦  «        }n1| dk    rd }t          d¦  «        }n| dk    sJ ‚t          d¦  «        }d }|t           t          j        t          j        |fd„}|S )NÚcffrQ   rR   Út1rP   Út2c                 óê  — d| cxk    rdk    rn n || dz   ¦  «        }nÓd| cxk    rdk    r)n n&| dz
  }  || dz	  dz   ¦  «         || dz  ¦  «        z   }n�d	| cxk    rd
k    r*n n'|  dz
  }  || dz	  dz   ¦  «         || dz  ¦  «        z   }nf|� d| cxk    rdk    rn n| |d| ¦  «        z   }nD|€3t                                d¦  «          |d¦  «         |d| ¦  «        z   }n| |d| ¦  «        z   }|S )Ni•ÿÿÿék   r   r$   ék  r‚   r"   rP   i•ûÿÿi”ÿÿÿr*   i €ÿÿiÿ  r-   zk4-byte T2 number got passed to the IntType handler. This should happen only when reading in old XML files.
r6   )ÚlogÚwarning)r   Ú
fourByteOpr   Úpackr1   Ú	twoByteOpÚcodes          r   Ú	encodeIntz getIntEncoder.<locals>.encodeIntÒ   sŒ  € ð �5ÐÐÒÐ˜CÒÐÐÐÐØ�7˜5 3™;Ñ'Ô'ˆDˆDØ�EÐ!Ð!Ò!Ð!˜TÒ!Ð!Ð!Ð!Ð!Ø˜C‘KˆEØ�7˜E Q™J¨#Ñ-Ñ.Ô.°°¸À¹Ñ1FÔ1FÑFˆDˆDØ�eÐ#Ð#Ò#Ð#˜tÒ#Ð#Ð#Ð#Ð#Ø�F˜S‘LˆEØ�7˜E Q™J¨#Ñ-Ñ.Ô.°°¸À¹Ñ1FÔ1FÑFˆDˆDØÐ" v°Ð'?Ð'?Ò'?Ð'?¸%Ò'?Ð'?Ð'?Ð'?Ð'?Ø˜t˜t D¨%Ñ0Ô0Ñ0ˆDˆDØÐõ �KŠKð#ñô ð ð
 �7˜3‘<”< $ $ t¨UÑ"3Ô"3Ñ3ˆDˆDà   T¨5Ñ 1Ô 1Ñ1ˆDØˆr    )r   r0   r×   r1   )ÚformatrØ   rÖ   rÚ   s       r   ÚgetIntEncoderrÜ   Æ   s�   € Ø�‚€Ý˜B‘K”Kˆ	Ý˜R‘[”[ˆ
ˆ
Ø	�4ŠˆØˆ	Ý˜S‘\”\ˆ
ˆ
à˜Š~ˆ~ˆ~ˆ~Ý˜B‘K”Kˆ	Øˆ
ð ÝÝŒ[ÝŒ}Øð#ð #ð #ð #ðJ Ðr    rÎ   rÏ   rÐ   c                 óx   — t          | d¬¦  «        }|dz  dk    rt          |dz	  ¦  «        S d |d|¦  «        z   S )zFor T2 onlyr:   r;   iÿÿ  r   ó   ÿr6   )r   ÚencodeIntT2)Úfr×   r   s      r   ÚencodeFixedrá   ÿ   sL   € å˜¨"Ð-Ñ-Ô-€EØˆv�~˜ÒÐÝ˜5 B™;Ñ'Ô'Ð'à˜˜˜d EÑ*Ô*Ñ*Ð*r    rF   c                 ó6  — | dk    rt           S d| z  }|d d…         dk    r|dd …         }nú|d d…         dk    rd|dd …         z   }nÞ|                     d	¦  «        r:|                     d
¦  «        }d|t          |¦  «        t          |¦  «        z
  fz  }n�|                     d¦  «        }|                     d¦  «        }|dk    r_|dk    rY|d |…         }||dz   |…         }t          ||dz   d …         ¦  «        }|t          |¦  «        z
  }|dk    r|›|›d
�}nd|||fz  }|                     d¦  «        rA|                     dd¦  «        \  }	}d|	|                     d
¦  «        t          |¦  «        fz  }g }
|r†|d         }|dd …         }|dk    rL|d d…         }|dk    r|dd …         }d}n|dk    r
|dd …         }|                     d
¦  «        r
|dd …         }|
 	                    t          |         ¦  «         |°†|
 	                    d¦  «         t          |
¦  «        dz  r|
 	                    d¦  «         t          d¦  «        }t          dt          |
¦  «        d¦  «        D ])}|t          |
|         dz  |
|dz            z  ¦  «        z   }Œ*|S )Ng        z%.8Gr.   z0.r   rt   z-0.ra   Ú000rT   z%sE%dr^   r_   éÿÿÿÿz%s%sE%d)z.0z-.0z%s%sE-%dr   r`   ú+rF   rS   r7   )ÚrealZeroBytesÚendswithÚrstripri   ÚfindÚintÚ
startswithÚsplitÚlstripÚappendÚrealNibblesDictr   Úrange)rà   ÚsÚsignificantDigitsÚdotIndexÚeIndexÚintegerPartÚfractionalPartÚexponentÚnewExponentÚsignÚnibblesÚcÚc2Údrd   s                  r   ÚencodeFloatrþ     sÞ  € àˆC‚x€xÝÐð 	�‰
€AØˆˆ!ˆ„u�‚}€}ØˆaˆbˆbŒEˆˆØ	
ˆ2ˆAˆ2Œ�%ŠˆØ�!�A�B�B”%‰KˆˆØ	
�Š�EÑ	Ô	ð KØŸHšH S™MœMÐØÐ(­#¨a©&¬&µ3Ð7HÑ3IÔ3IÑ*IÐJÑJˆˆà—6’6˜#‘;”;ˆØ—’˜‘”ˆØ�rŠ>ˆ>˜f¨šl˜lØ˜I˜X˜Iœ,ˆKØ˜x¨!™|¨fÐ4Ô5ˆNÝ˜1˜V a™Z˜\˜\œ?Ñ+Ô+ˆHØ"¥S¨Ñ%8Ô%8Ñ8ˆKØ˜aÒÐØ*˜{¨N¨N¨NÐ;��à ¨n¸kÐ JÑJ�Ø‡|‚|�MÑ"Ô"ð 7Ø—'’'˜#˜q‘/”/‰ˆˆaØ˜$ §¢¨¡¤­s°1©v¬vÐ6Ñ6ˆØ€GØ
ð +ØˆaŒDˆØˆaˆbˆbŒEˆØ�Š8ˆ8Ø�2�A�2”ˆBØ�SŠyˆyØ�a�b�b”E�Ø��Ø�s’�Ø�a�b�b”E�Ø�|Š|˜CÑ Ô ð Ø�a�b�b”E�Ø�Š• qÔ)Ñ*Ô*Ð*ð ð +ð ‡N‚N�3ÑÔÐÝ
ˆ7�|„|�aÑð Ø�Š�sÑÔÐÝ�‰Œ€AÝ�1•c˜'‘l”l AÑ&Ô&ð :ð :ˆØ•˜ œ
 a™¨'°!°a±%¬.Ñ8Ñ9Ô9Ñ9ˆˆØ€Hr    c                   ó   — e Zd ZdS )ÚCharStringCompileErrorN)Ú__name__Ú
__module__Ú__qualname__r   r    r   r   r   ?  s   € € € € € Ø€Dr    r   c                   ó  — e Zd Zd,d„Zd„ Zddœd„Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z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S )-ÚSimpleT2DecompilerNc                 ó¶   — || _         t          |¦  «        | _        || _        t          |¦  «        | _        || _        || _        |                      ¦   «          d S r?   )Ú
localSubrsÚcalcSubrBiasÚ	localBiasÚglobalSubrsÚ
globalBiasÚprivateÚblenderÚreset)r   r  r
  r  r  s        r   Ú__init__zSimpleT2Decompiler.__init__D  sN   € Ø$ˆŒÝ% jÑ1Ô1ˆŒØ&ˆÔÝ& {Ñ3Ô3ˆŒØˆŒØˆŒØ�
Š
‰Œˆˆˆr    c                 óZ   — g | _         g | _        d| _        d| _        d| _        d| _        d S ©Nr   )ÚcallingStackÚoperandStackÚ	hintCountÚhintMaskBytesÚ
numRegionsÚvsIndex©r   s    r   r  zSimpleT2Decompiler.resetM  s3   € ØˆÔØˆÔØˆŒØˆÔØˆŒØˆŒˆˆr    ©ÚpushToStackc                óà  — | j                              |¦  «         |                     ¦   «         }|r
g }|j        }nd„ }|€| j        j        }d}	 |                     |¦  «        \  }}}|€nd ||¦  «         |rKd|z   }	t          | |	d ¦  «        }
|
� |
|¦  «        }|r|\  }} ||¦  «         n |                      ¦   «          n ||¦  «         Œ€|r|                     |¦  «         | j         d= d S )Nc                 ó   — d S r?   r   )Úxs    r   ú<lambda>z,SimpleT2Decompiler.execute.<locals>.<lambda>\  s   €  d€ r    r   TÚop_rä   )r  rî   ÚneedsDecompilationr  ÚgetTokenÚgetattrÚpopallÚ
setProgram)r   Ú
charStringr  r   ÚprogramÚpushToProgramr   ÚtokenÚ
isOperatorÚhandlerNameÚhandlerÚrvr  s                r   ÚexecutezSimpleT2Decompiler.executeU  s@  € ØÔ× Ò  Ñ,Ô,Ð,Ø'×:Ò:Ñ<Ô<ÐØð 	+ØˆGØ#œNˆMˆMà*˜NˆMØÐØÔ+Ô2ˆKØˆð	#Ø'1×':Ò':¸5Ñ'AÔ'AÑ$ˆE�:˜uØˆ}ØØˆM˜%Ñ Ô Ð Øð #Ø# e™m�Ý! $¨°TÑ:Ô:�ØÐ&Ø ˜ ™œ�BØð 5Ø/1Ñ,˜ uØ%˜ mÑ4Ô4Ð4øà—K’K‘M”M�M�Mà�˜EÑ"Ô"Ð"ð!	#ð" ð 	+Ø×!Ò! 'Ñ*Ô*Ð*ØÔ˜bÐ!Ð!Ð!r    c                 ó0   — | j         d         }| j         d= |S ©Nrä   ©r  ©r   r   s     r   ÚpopzSimpleT2Decompiler.popu  s   € ØÔ! "Ô%ˆØÔ˜bÐ!Øˆr    c                 ó<   — | j         d d …         }g | j         d d …<   |S r?   r0  ©r   Ústacks     r   r#  zSimpleT2Decompiler.popallz  s)   € ØÔ! ! ! !Ô$ˆØ!ˆÔ˜!˜!˜!ÑØˆr    c                 ó:   — | j                              |¦  «         d S r?   )r  rî   r1  s     r   ÚpushzSimpleT2Decompiler.push  s   € ØÔ× Ò  Ñ'Ô'Ð'Ð'Ð'r    c                 ó   — | j         rd S d S r?   r0  ©r   r   s     r   Ú	op_returnzSimpleT2Decompiler.op_return‚  s   € ØÔð 	ØˆDð	ð 	r    c                 ó   — d S r?   r   r9  s     r   Ú
op_endcharzSimpleT2Decompiler.op_endchar†  ó   € Øˆr    c                 ó   — d S r?   r   r9  s     r   Ú	op_ignorezSimpleT2Decompiler.op_ignore‰  r=  r    c                 ó‚   — |                       ¦   «         }| j        || j        z            }|                      |¦  «         d S r?   )r2  r  r	  r-  ©r   r   Ú	subrIndexÚsubrs       r   Úop_callsubrzSimpleT2Decompiler.op_callsubrŒ  s:   € Ø—H’H‘J”Jˆ	ØŒ˜y¨4¬>Ñ9Ô:ˆØ�Š�TÑÔÐÐÐr    c                 ó‚   — |                       ¦   «         }| j        || j        z            }|                      |¦  «         d S r?   )r2  r
  r  r-  rA  s       r   Úop_callgsubrzSimpleT2Decompiler.op_callgsubr‘  s;   € Ø—H’H‘J”Jˆ	ØÔ 	¨D¬OÑ ;Ô<ˆØ�Š�TÑÔÐÐÐr    c                 ó.   — |                       ¦   «          d S r?   ©Ú
countHintsr9  s     r   Úop_hstemzSimpleT2Decompiler.op_hstem–  ó   € Ø�ŠÑÔÐÐÐr    c                 ó.   — |                       ¦   «          d S r?   rH  r9  s     r   Úop_vstemzSimpleT2Decompiler.op_vstem™  rK  r    c                 ó.   — |                       ¦   «          d S r?   rH  r9  s     r   Ú
op_hstemhmzSimpleT2Decompiler.op_hstemhmœ  rK  r    c                 ó.   — |                       ¦   «          d S r?   rH  r9  s     r   Ú
op_vstemhmzSimpleT2Decompiler.op_vstemhmŸ  rK  r    c                 ó¶   — | j         s&|                      ¦   «          | j        dz   dz  | _         | j        d                              || j         ¦  «        \  }}||fS )Nr   r‚   rä   )r  rI  r  r  ÚgetBytes)r   r   r  s      r   Úop_hintmaskzSimpleT2Decompiler.op_hintmask¢  sa   € ØÔ!ð 	;Ø�OŠOÑÔÐØ"&¤.°1Ñ"4¸Ñ!:ˆDÔØ#Ô0°Ô4×=Ò=¸eÀTÔEWÑXÔXÑˆ�uØ˜eÐ#Ð#r    c                 ól   — |                       ¦   «         }| j        t          |¦  «        dz  z   | _        d S ©Nr.   )r#  r  ri   ©r   Úargss     r   rI  zSimpleT2Decompiler.countHints«  s+   € Ø�{Š{‰}Œ}ˆØœ­#¨d©)¬)°q©.Ñ8ˆŒˆˆr    c                 ó   — t           ‚r?   ©r@   r9  s     r   Úop_andzSimpleT2Decompiler.op_and°  ó   € Ý!Ð!r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_orzSimpleT2Decompiler.op_or³  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_notzSimpleT2Decompiler.op_not¶  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_storezSimpleT2Decompiler.op_store¹  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_abszSimpleT2Decompiler.op_abs¼  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_addzSimpleT2Decompiler.op_add¿  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_subzSimpleT2Decompiler.op_subÂ  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_divzSimpleT2Decompiler.op_divÅ  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_loadzSimpleT2Decompiler.op_loadÈ  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_negzSimpleT2Decompiler.op_negË  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_eqzSimpleT2Decompiler.op_eqÎ  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_dropzSimpleT2Decompiler.op_dropÑ  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_putzSimpleT2Decompiler.op_putÔ  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_getzSimpleT2Decompiler.op_get×  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Ú	op_ifelsezSimpleT2Decompiler.op_ifelseÚ  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Ú	op_randomzSimpleT2Decompiler.op_randomÝ  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_mulzSimpleT2Decompiler.op_mulà  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_sqrtzSimpleT2Decompiler.op_sqrtã  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_dupzSimpleT2Decompiler.op_dupæ  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_exchzSimpleT2Decompiler.op_exché  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_indexzSimpleT2Decompiler.op_indexì  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   Úop_rollzSimpleT2Decompiler.op_rollï  r\  r    c                 óÔ  — | j         dk    r| j                             ¦   «         | _         |                      ¦   «         }|| j         dz   z  }| j        €| j        ||z
   d …= d S t          | j        ¦  «        |z
  }||z   x}}||k     rV|| j         z   }| j        ||…         }|                      | j        |¦  «        }	| j        |xx         |	z  cc<   |}|dz  }||k     °Vg | j        |d …<   d S ©Nr   r   )r  r  ÚgetNumRegionsr2  r  r  ri   r  )
r   r   Ú	numBlendsÚnumOpsÚargiÚend_argsÚtupleiÚnext_tiÚdeltasÚdeltas
             r   Úop_blendzSimpleT2Decompiler.op_blendò  s"  € ØŒ?˜aÒÐØ"œl×8Ò8Ñ:Ô:ˆDŒOØ—H’H‘J”Jˆ	Ø˜dœo°Ñ1Ñ2ˆØŒ<ÐØÔ!Ø˜9Ñ$Ð%Ð'Ð'ðð ð õ �tÔ(Ñ)Ô)¨FÑ2ˆDØ $ yÑ 0Ð0ˆH�vØ˜’/�/Ø  4¤?Ñ2�ØÔ*¨6°'¨>Ô:�ØŸš T¤\°6Ñ:Ô:�ØÔ! $Ð'Ð'Ô'¨5Ñ0Ð'Ð'Ñ'Ø �Ø˜‘	�ð ˜’/�/ð ,.ˆDÔ˜h˜i˜iÑ(Ð(Ð(r    c                 óz   — |                       ¦   «         }|| _        | j                             |¦  «        | _        d S r?   )r2  r  r  r‰  r  )r   r   Úvis      r   Ú
op_vsindexzSimpleT2Decompiler.op_vsindex  s1   € Ø�XŠX‰ZŒZˆØˆŒØœ,×4Ò4°RÑ8Ô8ˆŒˆˆr    ©NN)-r  r  r  r  r  r-  r2  r#  r7  r:  r<  r?  rD  rF  rJ  rM  rO  rQ  rT  Úop_cntrmaskrI  r[  r^  r`  rb  rd  rf  rh  rj  rl  rn  rp  rr  rt  rv  rx  rz  r|  r~  r€  r‚  r„  r†  r’  r•  r   r    r   r  r  C  s—  € € € € € ðð ð ð ðð ð ð 26ð "ð "ð "ð "ð "ð@ð ð ð
ð ð ð
(ð (ð (ðð ð ðð ð ðð ð ðð ð ð
ð ð ð
ð ð ðð ð ðð ð ðð ð ð$ð $ð $ð €Kð9ð 9ð 9ð
"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð.ð .ð .ð*9ð 9ð 9ð 9ð 9r    r  )rq   rs   rv   rx   r{   r~   r�   )r±   Ú	closepathr„   r‡   )r·   ÚhsbwrŠ   r•   r˜   r¦   r¨   )r«   Ú
dotsection))r   r   Úvstem3))r   r.   Úhstem3))r   r|   Úseac))r   r   Úsbwrµ   ))r   r:   Úcallothersubr))r   é   r2  ))r   é!   Úsetcurrentpointc                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚT2StackUseExtractorc                 ób   •‡ ‡— dŠˆˆ fd„}t          ¦   «                              ||¬¦  «         ‰S )Nr   c                 ó€   •— ‰j                              | ¦  «         t          ‰t          ‰j         ¦  «        ¦  «        Šd S r?   )r  rî   Úmaxri   )r   ÚmaxStackUser   s    €€r   r  z0T2StackUseExtractor.execute.<locals>.pushToStack0  s8   ø€ àÔ×$Ò$ UÑ+Ô+Ð+Ý˜k­3¨tÔ/@Ñ+AÔ+AÑBÔBˆKˆKˆKr    r  )Úsuperr-  )r   r%  r  r¨  Ú	__class__s   `  @€r   r-  zT2StackUseExtractor.execute-  sP   øøø€ Øˆð	Cð 	Cð 	Cð 	Cð 	Cð 	Cõ
 	‰Œ�Š˜
°ˆÑ<Ô<Ð<ØÐr    )r  r  r  r-  Ú__classcell__©rª  s   @r   r¤  r¤  +  s8   ø€ € € € € ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r    r¤  c                   óF   — e Zd Z	 	 dd„Zd„ Zdd„Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
dS )ÚT2WidthExtractorNc                 ó^   — t                                | ||||¦  «         || _        || _        d S r?   )r  r  ÚnominalWidthXÚdefaultWidthX)r   r  r
  r°  r±  r  r  s          r   r  zT2WidthExtractor.__init__:  s6   € õ 	×#Ò# D¨*°kÀ7ÈGÑTÔTÐTØ*ˆÔØ*ˆÔÐÐr    c                 óV   — t                                | ¦  «         d| _        d| _        d S r  )r  r  ÚgotWidthÚwidthr  s    r   r  zT2WidthExtractor.resetG  s(   € Ý× Ò  Ñ&Ô&Ð&ØˆŒØˆŒ
ˆ
ˆ
r    r   c                 óî   — |                       ¦   «         }| j        sY|t          |¦  «        dz  z  r1| j        €
J d¦   «         ‚| j        |d         z   | _        |dd …         }n| j        | _        d| _        |S )Nr.   z5CFF2 CharStrings must not have an initial width valuer   r   )r#  r³  ri   r±  r°  r´  )r   ÚevenOddrX  s      r   ÚpopallWidthzT2WidthExtractor.popallWidthL  s„   € Ø�{Š{‰}Œ}ˆØŒ}ð 
	Ø�#˜d™)œ) a™-Ñ(ð 0ð Ô&Ð2Ð2ØJñ 3Ô2Ð2à!Ô/°$°q´'Ñ9�”
Ø˜A˜B˜B”x��à!Ô/�”
ØˆDŒMØˆr    c                 ól   — |                       ¦   «         }| j        t          |¦  «        dz  z   | _        d S rV  )r·  r  ri   rW  s     r   rI  zT2WidthExtractor.countHints[  s/   € Ø×ÒÑ!Ô!ˆØœ­#¨d©)¬)°q©.Ñ8ˆŒˆˆr    c                 ó.   — |                       ¦   «          d S r?   ©r·  r9  s     r   Ú
op_rmovetozT2WidthExtractor.op_rmoveto_  ó   € Ø×ÒÑÔÐÐÐr    c                 ó0   — |                       d¦  «         d S ©Nr   rº  r9  s     r   Ú
op_hmovetozT2WidthExtractor.op_hmovetob  ó   € Ø×Ò˜ÑÔÐÐÐr    c                 ó0   — |                       d¦  «         d S r¾  rº  r9  s     r   Ú
op_vmovetozT2WidthExtractor.op_vmovetoe  rÀ  r    c                 ó.   — |                       ¦   «          d S r?   rº  r9  s     r   r<  zT2WidthExtractor.op_endcharh  r¼  r    r–  ©r   )r  r  r  r  r  r·  rI  r»  r¿  rÂ  r<  r   r    r   r®  r®  9  sž   € € € € € ð Øð+ð +ð +ð +ðð ð ð
ð ð ð ð9ð 9ð 9ðð ð ðð ð ðð ð ðð ð ð ð r    r®  c                   óV  ‡ — e Zd Z	 	 d6d„Zd„ Zˆ f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-d-„ Z.d.„ Z/d/„ Z0d0„ Z1d1„ Z2d2„ Z3d3„ Z4d4„ Z5d5„ Z6ˆ xZ7S )7ÚT2OutlineExtractorNc           	      ób   — t                                | ||||||¦  «         || _        d| _        d S r  )r®  r  ÚpenÚ	subrLevel)r   rÈ  r  r
  r°  r±  r  r  s           r   r  zT2OutlineExtractor.__init__m  sE   € õ 	×!Ò!ØØØØØØØñ	
ô 	
ð 	
ð ˆŒØˆŒˆˆr    c                 ód   — t                                | ¦  «         d| _        d| _        d| _        d S )N©r   r   r   )r®  r  ÚcurrentPointÚ	sawMoveTorÉ  r  s    r   r  zT2OutlineExtractor.resetƒ  s0   € Ý×Ò˜tÑ$Ô$Ð$Ø"ˆÔØˆŒØˆŒˆˆr    c                 óÌ   •— | xj         dz  c_         t          ¦   «                              |¦  «         | xj         dz  c_         | j         dk    r|                      ¦   «          d S d S ©Nr   r   )rÉ  r©  r-  ÚendPath)r   r%  rª  s     €r   r-  zT2OutlineExtractor.execute‰  s_   ø€ ØˆŒ˜!ÑˆŒÝ‰Œ�Š˜
Ñ#Ô#Ð#ØˆŒ˜!ÑˆŒØŒ>˜QÒÐØ�LŠL‰NŒNˆNˆNˆNð Ðr    c                 óT   — | j         \  }}||d         z   ||d         z   f}|| _         |S rˆ  )rÌ  )r   Úpointr  Úys       r   Ú
_nextPointzT2OutlineExtractor._nextPoint�  s5   € ØÔ ‰ˆˆ1Ø�E˜!”H‘˜a %¨¤(™lÐ*ˆØ!ˆÔØˆr    c                 ón   — | j                              |                      |¦  «        ¦  «         d| _        d S r¾  )rÈ  ÚmoveTorÔ  rÍ  ©r   rÒ  s     r   ÚrMoveTozT2OutlineExtractor.rMoveTo–  s-   € ØŒ�Š˜Ÿš¨Ñ.Ô.Ñ/Ô/Ð/ØˆŒˆˆr    c                 ó˜   — | j         s|                      d¦  «         | j                             |                      |¦  «        ¦  «         d S ©NrË  )rÍ  rØ  rÈ  ÚlineTorÔ  r×  s     r   ÚrLineTozT2OutlineExtractor.rLineToš  sD   € ØŒ~ð 	!Ø�LŠL˜Ñ Ô Ð ØŒ�Š˜Ÿš¨Ñ.Ô.Ñ/Ô/Ð/Ð/Ð/r    c                 óº   — | j         s|                      d¦  «         | j        }| j                              ||¦  «         ||¦  «         ||¦  «        ¦  «         d S rÚ  )rÍ  rØ  rÔ  rÈ  ÚcurveTo)r   Úpt1Úpt2Úpt3Ú	nextPoints        r   ÚrCurveTozT2OutlineExtractor.rCurveToŸ  s]   € ØŒ~ð 	!Ø�LŠL˜Ñ Ô Ð Ø”Oˆ	ØŒ×Ò˜˜ 3™œ¨¨°3©¬¸¸À3¹¼ÑHÔHÐHÐHÐHr    c                 óT   — | j         r| j                             ¦   «          d| _         d S r  )rÍ  rÈ  Ú	closePathr  s    r   rå  zT2OutlineExtractor.closePath¥  s+   € ØŒ>ð 	!ØŒH×ÒÑ Ô Ð ØˆŒˆˆr    c                 ó@   — | j         r|                      ¦   «          d S d S r?   )rÍ  rå  r  s    r   rÐ  zT2OutlineExtractor.endPathª  s.   € ð
 Œ>ð 	Ø�NŠNÑÔÐÐÐð	ð 	r    c                 ó|   — |                       ¦   «          |                      |                      ¦   «         ¦  «         d S r?   ©rÐ  rØ  r·  r9  s     r   r»  zT2OutlineExtractor.op_rmovetoÅ  s3   € Ø�Š‰ŒˆØ�Š�T×%Ò%Ñ'Ô'Ñ(Ô(Ð(Ð(Ð(r    c                 óŽ   — |                       ¦   «          |                      |                      d¦  «        d         df¦  «         d S rÏ  rè  r9  s     r   r¿  zT2OutlineExtractor.op_hmovetoÉ  s?   € Ø�Š‰ŒˆØ�Š�d×&Ò& qÑ)Ô)¨!Ô,¨aÐ0Ñ1Ô1Ð1Ð1Ð1r    c                 óŽ   — |                       ¦   «          |                      d|                      d¦  «        d         f¦  «         d S rˆ  rè  r9  s     r   rÂ  zT2OutlineExtractor.op_vmovetoÍ  s?   € Ø�Š‰ŒˆØ�Š�a˜×)Ò)¨!Ñ,Ô,¨QÔ/Ð0Ñ1Ô1Ð1Ð1Ð1r    c           	      ó  — |                       ¦   «          |                      ¦   «         }|r[ddlm} |\  }}}}||         }| j                             |d¦  «         ||         }	| j                             |	dddd||f¦  «         d S d S )Nr   ©ÚStandardEncoding©r   r   r   r   r   r   r   )rÐ  r·  Ú$fontTools.encodings.StandardEncodingrí  rÈ  ÚaddComponent)
r   r   rX  rí  ÚadxÚadyÚbcharÚacharÚ	baseGlyphÚaccentGlyphs
             r   r<  zT2OutlineExtractor.op_endcharÑ  s¯   € Ø�Š‰ŒˆØ×ÒÑ!Ô!ˆØð 		GØMÐMÐMÐMÐMÐMð &*Ñ"ˆC��e˜UØ(¨Ô/ˆIØŒH×!Ò! )Ð-?Ñ@Ô@Ð@Ø*¨5Ô1ˆKØŒH×!Ò! +°°1°a¸¸CÀÐ/EÑFÔFÐFÐFÐFð		Gð 		Gr    c                 ó´   — |                       ¦   «         }t          dt          |¦  «        d¦  «        D ]$}|||dz   …         }|                      |¦  «         Œ%d S )Nr   r.   )r#  rð   ri   rÜ  )r   r   rX  rd   rÒ  s        r   Ú
op_rlinetozT2OutlineExtractor.op_rlinetoâ  s`   € Ø�{Š{‰}Œ}ˆÝ�q�#˜d™)œ) QÑ'Ô'ð 	 ð 	 ˆAØ˜˜Q ™U˜”OˆEØ�LŠL˜ÑÔÐÐð	 ð 	 r    c                 ó0   — |                       d¦  «         d S r¾  ©ÚalternatingLinetor9  s     r   Ú
op_hlinetozT2OutlineExtractor.op_hlinetoè  ó   € Ø×Ò˜qÑ!Ô!Ð!Ð!Ð!r    c                 ó0   — |                       d¦  «         d S r  rú  r9  s     r   Ú
op_vlinetozT2OutlineExtractor.op_vlinetoë  rý  r    c                 óÒ   — |                       ¦   «         }t          dt          |¦  «        d¦  «        D ]3}|||dz   …         \  }}}}}}	|                      ||f||f||	f¦  «         Œ4dS )z${dxa dya dxb dyb dxc dyc}+ rrcurvetor   r|   N)r#  rð   ri   rã  )
r   r   rX  rd   ÚdxaÚdyaÚdxbÚdybÚdxcÚdycs
             r   Úop_rrcurvetozT2OutlineExtractor.op_rrcurvetoñ  s‡   € à�{Š{‰}Œ}ˆÝ�q�#˜d™)œ) QÑ'Ô'ð 		>ð 		>ˆAð �Q˜˜Q™�Y”ñØØØØØØà�MŠM˜3 ˜* s¨C j°3¸°*Ñ=Ô=Ð=Ð=ð		>ð 		>r    c                 ó  — |                       ¦   «         }t          dt          |¦  «        dz
  d¦  «        D ]3}|||dz   …         \  }}}}}}	|                      ||f||f||	f¦  «         Œ4|                      |dd…         ¦  «         dS )z-{dxa dya dxb dyb dxc dyc}+ dxd dyd rcurveliner   r.   r|   éþÿÿÿN)r#  rð   ri   rã  rÜ  )
r   r   rX  rd   r  r  r  r  ÚdxdÚdyds
             r   Úop_rcurvelinez T2OutlineExtractor.op_rcurvelineÿ  s—   € à�{Š{‰}Œ}ˆÝ�q�#˜d™)œ) a™-¨Ñ+Ô+ð 	>ð 	>ˆAØ+/°°A¸±E°	¬?Ñ(ˆC��c˜3  SØ�MŠM˜3 ˜* s¨C j°3¸°*Ñ=Ô=Ð=Ð=Ø�Š�T˜"˜#˜#”YÑÔÐÐÐr    c                 ó   — |                       ¦   «         }|dd…         }t          dt          |¦  «        d¦  «        D ]"}|                      |||dz   …         ¦  «         Œ#|dd…         \  }}}}}	}
|                      ||f||f|	|
f¦  «         dS )z-{dxa dya}+ dxb dyb dxc dyc dxd dyd rlinecurveNiúÿÿÿr   r.   )r#  rð   ri   rÜ  rã  )r   r   rX  ÚlineArgsrd   r  r  r  r  r
  r  s              r   Úop_rlinecurvez T2OutlineExtractor.op_rlinecurve  s¡   € à�{Š{‰}Œ}ˆØ˜˜˜”9ˆÝ�q�#˜h™-œ-¨Ñ+Ô+ð 	.ð 	.ˆAØ�LŠL˜ ! a¨!¡e )Ô,Ñ-Ô-Ð-Ð-Ø'+¨B¨C¨C¤yÑ$ˆˆS�#�s˜C Ø�Š�s˜C�j 3¨ *¨s°C¨jÑ9Ô9Ð9Ð9Ð9r    c                 ó   — |                       ¦   «         }t          |¦  «        dz  r|d         }|dd…         }nd}t          dt          |¦  «        d¦  «        D ]3}|||dz   …         \  }}}}|                      ||f||fd|f¦  «         d}Œ4dS )z!dx1? {dya dxb dyb dyc}+ vvcurvetor.   r   r   Nr7   ©r#  ri   rð   rã  )	r   r   rX  Údx1rd   r  r  r  r  s	            r   Úop_vvcurvetozT2OutlineExtractor.op_vvcurveto  s¬   € à�{Š{‰}Œ}ˆÝˆt‰9Œ9�q‰=ð 	Ø�q”'ˆCØ˜˜˜”8ˆDˆDàˆCÝ�q�#˜d™)œ) QÑ'Ô'ð 	ð 	ˆAØ!% a¨!¨a©% i¤ÑˆC��c˜3Ø�MŠM˜3 ˜* s¨C j°1°c°(Ñ;Ô;Ð;ØˆCˆCð	ð 	r    c                 ó   — |                       ¦   «         }t          |¦  «        dz  r|d         }|dd…         }nd}t          dt          |¦  «        d¦  «        D ]3}|||dz   …         \  }}}}|                      ||f||f|df¦  «         d}Œ4dS )z!dy1? {dxa dxb dyb dxc}+ hhcurvetor.   r   r   Nr7   r  )	r   r   rX  Údy1rd   r  r  r  r  s	            r   Úop_hhcurvetozT2OutlineExtractor.op_hhcurveto  s¬   € à�{Š{‰}Œ}ˆÝˆt‰9Œ9�q‰=ð 	Ø�q”'ˆCØ˜˜˜”8ˆDˆDàˆCÝ�q�#˜d™)œ) QÑ'Ô'ð 	ð 	ˆAØ!% a¨!¨a©% i¤ÑˆC��c˜3Ø�MŠM˜3 ˜* s¨C j°3¸°(Ñ;Ô;Ð;ØˆCˆCð	ð 	r    c                 ó’   — |                       ¦   «         }|r0|                      |¦  «        }|r|                      |¦  «        }|°.dS dS )z‰dy1 dx2 dy2 dx3 {dxa dxb dyb dyc dyd dxe dye dxf}* dyf? vhcurveto (30)
        {dya dxb dyb dxc dxd dxe dye dyf}+ dxf? vhcurveto
        N)r#  ÚvcurvetoÚhcurveto©r   r   rX  s      r   Úop_vhcurvetozT2OutlineExtractor.op_vhcurveto*  óa   € ð �{Š{‰}Œ}ˆØð 	+Ø—=’= Ñ&Ô&ˆDØð +Ø—}’} TÑ*Ô*�ð ð 	+ð 	+ð 	+ð 	+ð 	+r    c                 ó’   — |                       ¦   «         }|r0|                      |¦  «        }|r|                      |¦  «        }|°.dS dS )zpdx1 dx2 dy2 dy3 {dya dxb dyb dxc dxd dxe dye dyf}* dxf?
        {dxa dxb dyb dyc dyd dxe dye dxf}+ dyf?
        N)r#  r  r  r  s      r   Úop_hvcurvetozT2OutlineExtractor.op_hvcurveto4  r  r    c                 óÈ   — |                       ¦   «         \  }}}}}}}dx}	x}
x}}| }|                      ||	f||f||
f¦  «         |                      ||f||f||f¦  «         d S r  ©r#  rã  )r   r   r  Údx2Údy2Údx3Údx4Údx5Údx6r  Údy3Údy4Údy6Údy5s                 r   Úop_hflexzT2OutlineExtractor.op_hflexA  sƒ   € Ø,0¯KªK©M¬MÑ)ˆˆS�#�s˜C  cØ !Ð!ˆÐ!ˆcÐ!�C˜#ØˆdˆØ�Š�s˜C�j 3¨ *¨s°C¨jÑ9Ô9Ð9Ø�Š�s˜C�j 3¨ *¨s°C¨jÑ9Ô9Ð9Ð9Ð9r    c                 ó¾   — |                       ¦   «         \  }}}}}}}}	}
}}}}|                      ||f||f||f¦  «         |                      ||	f|
|f||f¦  «         d S r?   r   )r   r   r  r  r!  r"  r#  r'  r$  r(  r%  r*  r&  r)  Úfds                  r   Úop_flexzT2OutlineExtractor.op_flexH  st   € ØIMÏÊÉÌÑFˆˆS�#�s˜C  c¨3°°S¸#¸sÀBØ�Š�s˜C�j 3¨ *¨s°C¨jÑ9Ô9Ð9Ø�Š�s˜C�j 3¨ *¨s°C¨jÑ9Ô9Ð9Ð9Ð9r    c           	      óÜ   — |                       ¦   «         \	  }}}}}}}}	}
dx}}||z   |z   |z   |	z    }|                      ||f||f||f¦  «         |                      ||f||	f|
|f¦  «         d S r  r   )r   r   r  r  r!  r"  r#  r$  r%  r*  r&  r'  r(  r)  s                 r   Ú	op_hflex1zT2OutlineExtractor.op_hflex1M  s�   € Ø6:·k²k±m´mÑ3ˆˆS�#�s˜C  c¨3°ØˆˆˆcØ�c‘	˜C‘ #Ñ%¨Ñ+Ð,ˆà�Š�s˜C�j 3¨ *¨s°C¨jÑ9Ô9Ð9Ø�Š�s˜C�j 3¨ *¨s°C¨jÑ9Ô9Ð9Ð9Ð9r    c                 óH  — |                       ¦   «         \  }}}}}}}}	}
}}||z   |z   |z   |
z   }||z   |z   |	z   |z   }t          |¦  «        t          |¦  «        k    r|}| }n| }|}|                      ||f||f||f¦  «         |                      ||	f|
|f||f¦  «         d S r?   )r#  r²   rã  )r   r   r  r  r!  r"  r#  r'  r$  r(  r%  r*  Úd6ÚdxÚdyr&  r)  s                    r   Úop_flex1zT2OutlineExtractor.op_flex1U  sÏ   € Ø?C¿{º{¹}¼}Ñ<ˆˆS�#�s˜C  c¨3°°S¸"Ø�3‰Y˜‰_˜sÑ" SÑ(ˆØ�3‰Y˜‰_˜sÑ" SÑ(ˆÝˆr‰7Œ7•S˜‘W”WÒÐØˆCØ�#ˆCˆCà�#ˆCØˆCØ�Š�s˜C�j 3¨ *¨s°C¨jÑ9Ô9Ð9Ø�Š�s˜C�j 3¨ *¨s°C¨jÑ9Ô9Ð9Ð9Ð9r    c                 ó   — t           ‚r?   rZ  r9  s     r   r[  zT2OutlineExtractor.op_andc  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   r^  zT2OutlineExtractor.op_orf  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   r`  zT2OutlineExtractor.op_noti  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   rb  zT2OutlineExtractor.op_storel  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   rd  zT2OutlineExtractor.op_abso  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   rf  zT2OutlineExtractor.op_addr  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   rh  zT2OutlineExtractor.op_subu  r\  r    c                 óÎ   — |                       ¦   «         }|                       ¦   «         }||z  }||z  }||k    r|                      |¦  «         d S |                      |¦  «         d S r?   )r2  r7  )r   r   Únum2Únum1Úd1Úd2s         r   rj  zT2OutlineExtractor.op_divx  s]   € Ø�xŠx‰zŒzˆØ�xŠx‰zŒzˆØ�T‰\ˆØ�D‰[ˆØ�Š8ˆ8Ø�IŠI�b‰MŒMˆMˆMˆMà�IŠI�b‰MŒMˆMˆMˆMr    c                 ó   — t           ‚r?   rZ  r9  s     r   rl  zT2OutlineExtractor.op_load‚  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   rn  zT2OutlineExtractor.op_neg…  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   rp  zT2OutlineExtractor.op_eqˆ  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   rr  zT2OutlineExtractor.op_drop‹  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   rt  zT2OutlineExtractor.op_putŽ  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   rv  zT2OutlineExtractor.op_get‘  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   rx  zT2OutlineExtractor.op_ifelse”  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   rz  zT2OutlineExtractor.op_random—  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   r|  zT2OutlineExtractor.op_mulš  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   r~  zT2OutlineExtractor.op_sqrt�  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   r€  zT2OutlineExtractor.op_dup   r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   r‚  zT2OutlineExtractor.op_exch£  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   r„  zT2OutlineExtractor.op_index¦  r\  r    c                 ó   — t           ‚r?   rZ  r9  s     r   r†  zT2OutlineExtractor.op_roll©  r\  r    c                 ó~   — |                       ¦   «         }|D ]%}|r|df}nd|f}|                      |¦  «         | }Œ&d S r  )r#  rÜ  )r   ÚisHorizontalrX  ÚargrÒ  s        r   rû  z$T2OutlineExtractor.alternatingLineto¯  s`   € Ø�{Š{‰}Œ}ˆØð 	,ð 	,ˆCØð !Ø˜a˜��à˜C˜�Ø�LŠL˜ÑÔÐØ+Ð+ˆLˆLð	,ð 	,r    c                 ó²   — |d d…         \  }}}}|dd …         }t          |¦  «        dk    r|d         }g }nd}|                      d|f||f||f¦  «         |S ©Nr7   r   r   ©ri   rã  )r   rX  r  r  r  r  r  s          r   r  zT2OutlineExtractor.vcurveto¹  sp   € Ø! " 1 "œXÑˆˆS�#�sØ�A�B�BŒxˆÝˆt‰9Œ9˜Š>ˆ>Ø�q”'ˆCØˆDˆDàˆCØ�Š�q˜#�h  c 
¨S°#¨JÑ7Ô7Ð7Øˆr    c                 ó²   — |d d…         \  }}}}|dd …         }t          |¦  «        dk    r|d         }g }nd}|                      |df||f||f¦  «         |S rT  rU  )r   rX  r  r  r  r  r  s          r   r  zT2OutlineExtractor.hcurvetoÄ  sp   € Ø! " 1 "œXÑˆˆS�#�sØ�A�B�BŒxˆÝˆt‰9Œ9˜Š>ˆ>Ø�q”'ˆCØˆDˆDàˆCØ�Š�s˜A�h  c 
¨S°#¨JÑ7Ô7Ð7Øˆr    r–  )8r  r  r  r  r  r-  rÔ  rØ  rÜ  rã  rå  rÐ  r»  r¿  rÂ  r<  rø  rü  rÿ  r  r  r  r  r  r  r  r+  r.  r0  r5  r[  r^  r`  rb  rd  rf  rh  rj  rl  rn  rp  rr  rt  rv  rx  rz  r|  r~  r€  r‚  r„  r†  rû  r  r  r«  r¬  s   @r   rÆ  rÆ  l  sH  ø€ € € € € ð Øðð ð ð ð,ð ð ðð ð ð ð ðð ð ðð ð ð0ð 0ð 0ð
Ið Ið Iðð ð ð
ð ð ð6)ð )ð )ð2ð 2ð 2ð2ð 2ð 2ðGð Gð Gð" ð  ð  ð"ð "ð "ð"ð "ð "ð>ð >ð >ð ð  ð  ð:ð :ð :ðð ð ðð ð ð+ð +ð +ð+ð +ð +ð:ð :ð :ð:ð :ð :ð
:ð :ð :ð:ð :ð :ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ðð ð ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð,ð ,ð ,ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	ð 	r    rÆ  c                   óŽ   — e Zd Zd„ 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d„ ZdS )ÚT1OutlineExtractorc                 óJ   — || _         || _        |                      ¦   «          d S r?   )rÈ  Úsubrsr  )r   rÈ  rZ  s      r   r  zT1OutlineExtractor.__init__Ñ  s!   € ØˆŒØˆŒ
Ø�
Š
‰Œˆˆˆr    c                 ód   — d| _         d| _        d| _        t                               | ¦  «         d S r  )Úflexingr´  ÚsbxrÆ  r  r  s    r   r  zT1OutlineExtractor.resetÖ  s1   € ØˆŒØˆŒ
ØˆŒÝ× Ò  Ñ&Ô&Ð&Ð&Ð&r    c                 óT   — | j         r| j                             ¦   «          d| _         d S r  )rÍ  rÈ  rÐ  r  s    r   rÐ  zT1OutlineExtractor.endPathÜ  s+   € ØŒ>ð 	ØŒH×ÒÑÔÐØˆŒˆˆr    r   c                 ó*   — |                       ¦   «         S r?   ©r#  )r   r¶  s     r   r·  zT1OutlineExtractor.popallWidthá  ó   € Ø�{Š{‰}Œ}Ðr    c                 óB   — | j         }|d         |d         c|d<   |d<   d S )Nr	  rä   r0  r4  s     r   rÃ   zT1OutlineExtractor.exchä  s*   € ØÔ!ˆØ$ Rœy¨%°¬)Ðˆˆb‰	�5˜‘9�9�9r    c                 óŽ   — | j         rd S |                      ¦   «          |                      |                      ¦   «         ¦  «         d S r?   )r\  rÐ  rØ  r#  r9  s     r   r»  zT1OutlineExtractor.op_rmovetoë  s>   € ØŒ<ð 	ØˆFØ�Š‰ŒˆØ�Š�T—[’[‘]”]Ñ#Ô#Ð#Ð#Ð#r    c                 óÈ   — | j         r|                      d¦  «         d S |                      ¦   «          |                      |                      ¦   «         d         df¦  «         d S r  )r\  r7  rÐ  rØ  r#  r9  s     r   r¿  zT1OutlineExtractor.op_hmovetoñ  sW   € ØŒ<ð 	à�IŠI�a‰LŒLˆLØˆFØ�Š‰ŒˆØ�Š�d—k’k‘m”m AÔ&¨Ð*Ñ+Ô+Ð+Ð+Ð+r    c                 óð   — | j         r+|                      d¦  «         |                      ¦   «          d S |                      ¦   «          |                      d|                      ¦   «         d         f¦  «         d S r  )r\  r7  rÃ   rÐ  rØ  r#  r9  s     r   rÂ  zT1OutlineExtractor.op_vmovetoù  sd   € ØŒ<ð 	à�IŠI�a‰LŒLˆLØ�IŠI‰KŒKˆKØˆFØ�Š‰ŒˆØ�Š�a˜Ÿš™œ qÔ)Ð*Ñ+Ô+Ð+Ð+Ð+r    c                 ó.   — |                       ¦   «          d S r?   )rå  r9  s     r   Úop_closepathzT1OutlineExtractor.op_closepath  s   € Ø�ŠÑÔÐÐÐr    c                 óJ   — |                       ¦   «         }|\  }}||f| _        d S r?   )r#  rÌ  )r   r   rX  r  rÓ  s        r   Úop_setcurrentpointz%T1OutlineExtractor.op_setcurrentpoint  s*   € Ø�{Š{‰}Œ}ˆØ‰ˆˆ1Ø˜q˜DˆÔÐÐr    c                 ó.   — |                       ¦   «          d S r?   )rÐ  r9  s     r   r<  zT1OutlineExtractor.op_endchar
  s   € Ø�Š‰Œˆˆˆr    c                 óx   — |                       ¦   «         \  }}|| _        || _        || j        d         f| _        d S r¾  )r#  r´  r]  rÌ  )r   r   r]  Úwxs       r   Úop_hsbwzT1OutlineExtractor.op_hsbw  s<   € Ø—+’+‘-”-‰ˆˆRØˆŒ
ØˆŒØ Ô!2°1Ô!5Ð5ˆÔÐÐr    c                 ó.   — |                       ¦   «          d S r?   r`  r9  s     r   Úop_sbwzT1OutlineExtractor.op_sbw  ó   € Ø�Š‰Œˆˆˆr    c                 ór   — |                       ¦   «         }| j        |         }|                      |¦  «         d S r?   )r2  rZ  r-  rA  s       r   rD  zT1OutlineExtractor.op_callsubr  s3   € Ø—H’H‘J”Jˆ	ØŒz˜)Ô$ˆØ�Š�TÑÔÐÐÐr    c                 óÖ   — |                       ¦   «         }|                       ¦   «         }|dk    r#|dk    r|                      ¦   «          d| _        d S |dk    r|dk    rd| _        d S d S d S )Nr   rt   r   )r2  ÚdoFlexr\  )r   r   rB  ÚnArgss       r   Úop_callothersubrz#T1OutlineExtractor.op_callothersubr  sl   € Ø—H’H‘J”Jˆ	Ø—’‘
”
ˆà˜Š>ˆ>˜e qšj˜jØ�KŠK‰MŒMˆMØˆDŒLˆLˆLØ˜!Š^ˆ^ ¨¢
 
ØˆDŒLˆLˆLð ˆ^ 
 
r    c                 ó   — d S r?   r   r9  s     r   Úop_popzT1OutlineExtractor.op_pop'  r=  r    c                 óZ  — |                       ¦   «         }|                       ¦   «         }|                       ¦   «          |                       ¦   «         }|                       ¦   «         }|                       ¦   «         }|                       ¦   «         }|                       ¦   «         }|                       ¦   «         }|                       ¦   «         }	|                       ¦   «         }
|                       ¦   «         }|                       ¦   «         }|                       ¦   «         }|                       ¦   «         }|                       ¦   «         }|                       ¦   «         }|                      ||z   ¦  «         |                      ||z   ¦  «         |                      |¦  «         |                      |¦  «         |                      |
¦  «         |                      |	¦  «         |                      d ¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      d ¦  «         |                      |¦  «         |                      |¦  «         d S r?   )r2  r7  r  )r   ÚfinalyÚfinalxÚp3yÚp3xÚbcp4yÚbcp4xÚbcp3yÚbcp3xÚp2yÚp2xÚbcp2yÚbcp2xÚbcp1yÚbcp1xÚrpyÚrpxs                    r   rs  zT1OutlineExtractor.doFlex*  s  € Ø—’‘”ˆØ—’‘”ˆØ�Š‰
Œ
ˆ
à�hŠh‰jŒjˆØ�hŠh‰jŒjˆØ—’‘
”
ˆØ—’‘
”
ˆØ—’‘
”
ˆØ—’‘
”
ˆØ�hŠh‰jŒjˆØ�hŠh‰jŒjˆØ—’‘
”
ˆØ—’‘
”
ˆØ—’‘
”
ˆØ—’‘
”
ˆØ�hŠh‰jŒjˆØ�hŠh‰jŒjˆð 	�	Š	�%˜#‘+ÑÔÐØ�	Š	�%˜#‘+ÑÔÐØ�	Š	�%ÑÔÐØ�	Š	�%ÑÔÐØ�	Š	�#‰ŒˆØ�	Š	�#‰ŒˆØ×Ò˜$ÑÔÐð 	�	Š	�%ÑÔÐØ�	Š	�%ÑÔÐØ�	Š	�%ÑÔÐØ�	Š	�%ÑÔÐØ�	Š	�#‰ŒˆØ�	Š	�#‰ŒˆØ×Ò˜$ÑÔÐð 	�	Š	�&ÑÔÐØ�	Š	�&ÑÔÐÐÐr    c                 ó.   — |                       ¦   «          d S r?   r`  r9  s     r   Úop_dotsectionz T1OutlineExtractor.op_dotsectionT  rp  r    c                 ó.   — |                       ¦   «          d S r?   r`  r9  s     r   Ú	op_hstem3zT1OutlineExtractor.op_hstem3W  rp  r    c           	      óø   — ddl m} |                      ¦   «         \  }}}}}||         }| j                             |d¦  «         ||         }	|| j        z   |z
  }| j                             |	dddd||f¦  «         dS )zasb adx ady bchar achar seacr   rì  rî  r   N)rï  rí  r#  rÈ  rð  r]  )
r   r   rí  Úasbrñ  rò  ró  rô  rõ  rö  s
             r   Úop_seaczT1OutlineExtractor.op_seacZ  s”   € àIÐIÐIÐIÐIÐIà&*§k¢k¡m¤mÑ#ˆˆS�#�u˜eØ$ UÔ+ˆ	ØŒ×Ò˜iÐ);Ñ<Ô<Ð<Ø& uÔ-ˆØ�D”H‰n˜sÑ"ˆØŒ×Ò˜k¨A¨q°!°Q¸¸SÐ+AÑBÔBÐBÐBÐBr    c                 ó.   — |                       ¦   «          d S r?   r`  r9  s     r   Ú	op_vstem3zT1OutlineExtractor.op_vstem3e  rp  r    NrÄ  )r  r  r  r  r  rÐ  r·  rÃ   r»  r¿  rÂ  rg  ri  r<  rm  ro  rD  ru  rw  rs  rŠ  rŒ  r�  r‘  r   r    r   rX  rX  Ð  sX  € € € € € ðð ð ð
'ð 'ð 'ðð ð ð
ð ð ð ð4ð 4ð 4ð$ð $ð $ð,ð ,ð ,ð,ð ,ð ,ðð ð ð!ð !ð !ð
ð ð ð6ð 6ð 6ðð ð ðð ð ð
ð ð ðð ð ð(ð (ð (ðTð ð ðð ð ð	Cð 	Cð 	Cðð ð ð ð r    rX  c                   ó®   — e Zd ZeZ ee¦  «        \  ZZe	Z
eZdd„Zdd„Zd„ Zd„ Zd„ Zd„ Zdd„Zd	„ Zdd„Zd„ Zd„ Zd„ Zeeefd„Zd„ Zd„ Zdd„Zd„ Z dS )ÚT2CharStringNc                 ó\   — |€g }|| _         || _        || _        |�|ng | _        d | _        d S r?   )Úbytecoder&  r  r
  Ú_cur_vsindex)r   r•  r&  r  r
  s        r   r  zT2CharString.__init__o  s@   € Øˆ?ØˆGØ ˆŒØˆŒØˆŒØ*5Ð*A˜;˜;ÀrˆÔØ ˆÔÐÐr    c                 óª   — | j         }|€J ‚|�|| _        n%| j        €t          |d¦  «        r|j        nd| _        |                     | j        ¦  «        S )Nr�   r   )r  r–  Úhasattrr�   r‰  )r   r�   Úpds      r   r‰  zT2CharString.getNumRegionsx  s`   € ØŒ\ˆØˆ~ˆ~ˆ~ØÐØ 'ˆDÔÐØÔÐ&Ý.5°b¸)Ñ.DÔ.DÐ K ¤
 
È!ˆDÔØ×Ò Ô 1Ñ2Ô2Ð2r    c                 óˆ   — | j         €d| j        j        t          | ¦  «        fz  S d| j        j        t          | ¦  «        fz  S )Nz<%s (source) at %x>z<%s (bytecode) at %x>)r•  rª  r  Úidr  s    r   Ú__repr__zT2CharString.__repr__�  s@   € ØŒ=Ð Ø(¨D¬NÔ,CÅRÈÁXÄXÐ+NÑNÐNà*¨d¬nÔ.EÅrÈ$ÁxÄxÐ-PÑPÐPr    c                 ó   — t           S r?   )rß   r  s    r   rÜ   zT2CharString.getIntEncoder‡  ó   € ÝÐr    c                 ó   — t           S r?   )rá   r  s    r   ÚgetFixedEncoderzT2CharString.getFixedEncoderŠ  rž  r    c                 óÊ   — |                       ¦   «         sd S t          | j        dg ¦  «        }|                      || j        | j        ¦  «        }|                     | ¦  «         d S ©NÚSubrs)r   r"  r  ÚdecompilerClassr
  r-  )r   rZ  Ú
decompilers      r   Ú	decompilezT2CharString.decompile�  sd   € Ø×&Ò&Ñ(Ô(ð 	ØˆFÝ˜œ g¨rÑ2Ô2ˆØ×)Ò)¨%°Ô1AÀ4Ä<ÑPÔPˆ
Ø×Ò˜4Ñ Ô Ð Ð Ð r    c           	      óæ   — t          | j        dg ¦  «        }|                      ||| j        | j        j        | j        j        | j        |¦  «        }|                     | ¦  «         |j        | _        d S r¢  )r"  r  ÚoutlineExtractorr
  r°  r±  r-  r´  )r   rÈ  r  rZ  Ú	extractors        r   ÚdrawzT2CharString.draw”  sq   € Ý˜œ g¨rÑ2Ô2ˆØ×)Ò)ØØØÔØŒLÔ&ØŒLÔ&ØŒLØñ
ô 
ˆ	ð 	×Ò˜$ÑÔÐØ”_ˆŒ
ˆ
ˆ
r    c                 óX   — t          |¦  «        }|                      |¦  «         |j        S r?   )r   rª  Úbounds)r   ÚglyphSetÚ	boundsPens      r   Ú
calcBoundszT2CharString.calcBounds¢  s*   € Ý˜hÑ'Ô'ˆ	Ø�	Š	�)ÑÔÐØÔÐr    Fc                 ó  — | j         �d S | j        }| j        }|r|r|d         dv r
|d d…         }n,|r*t          |d         t          ¦  «        st          d¦  «        ‚g }|                      ¦   «         }|                      ¦   «         }d}t          |¦  «        }||k     �r||         }	|dz   }t          |	t          ¦  «        rl	 | 	                    d„ ||	         D ¦   «         ¦  «         n # t          $ r t          d|	z  ¦  «        ‚w xY w|	dv r |                     ||         ¦  «         |dz   }n‚t          |	t          ¦  «        r|                      ||	¦  «        ¦  «         nNt          |	t          ¦  «        r|                      ||	¦  «        ¦  «         nJ d	t          |	¦  «        z  ¦   «         ‚||k     �°	 t          |¦  «        }n)# t           $ r t"                               |¦  «         ‚ w xY w|                      |¦  «         d S )
Nrä   )r‰   rŒ   z@T2CharString or Subr has items on the stack after last operator.r   r   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r?   )r   )rc   rJ   s     r   ú	<genexpr>z'T2CharString.compile.<locals>.<genexpr>À  s(   è è € Ð#GÐ#G°1¥G¨A¡J¤JÐ#GÐ#GÐ#GÐ#GÐ#GÐ#Gr    zillegal operator: %s©r’   r”   zunsupported type: %s)r•  Úopcodesr&  rj   Ústrr   rÜ   r   ri   Úextendr   rî   rê   rH   Útyper	   Ú	TypeErrorrÔ   ÚerrorÚsetBytecode)
r   ÚisCFF2r´  r&  r•  rÚ   rá   rd   Úendr(  s
             r   ÚcompilezT2CharString.compile§  sV  € ØŒ=Ð$ØˆFØ”,ˆØ”,ˆàð 	àð '˜7 2œ;Ð*?Ð?Ð?Ø! # 2 #œ,�øØð 	�Z¨°¬µSÑ9Ô9ð 	Ý(ØRñô ð ð ˆØ×&Ò&Ñ(Ô(ˆ	Ø×*Ò*Ñ,Ô,ˆØˆÝ�'‰lŒlˆØ�#Šg‰gØ˜A”JˆEØ�A‘ˆAÝ˜%¥Ñ%Ô%ð ?ðQØ—O’OÐ#GÐ#G¸À¼Ð#GÑ#GÔ#GÑGÔGÐGÐGøÝð Qð Qð QÝ0Ð1GÈ%Ñ1OÑPÔPÐPðQøøøàÐ4Ð4Ð4Ø—O’O G¨A¤JÑ/Ô/Ð/Ø˜A™�AøÝ˜E¥3Ñ'Ô'ð ?Ø—’ 	 	¨%Ñ 0Ô 0Ñ1Ô1Ð1Ð1Ý˜E¥5Ñ)Ô)ð ?Ø—’  ¨EÑ 2Ô 2Ñ3Ô3Ð3Ð3à>Ð0µ4¸±;´;Ñ>Ñ>Ô>Ð>ð! �#Šg‰gð"	Ý  Ñ*Ô*ˆHˆHøÝð 	ð 	ð 	Ý�IŠI�hÑÔÐØð	øøøð 	×Ò˜Ñ"Ô"Ð"Ð"Ð"s   Ã%C( Ã(DÆ7G Ç&G-c                 ó   — | j         d uS r?   )r•  r  s    r   r   zT2CharString.needsDecompilationÓ  s   € ØŒ} DÐ(Ð(r    c                 ó"   — || _         d | _        d S r?   )r&  r•  )r   r&  s     r   r$  zT2CharString.setProgramÖ  s   € ØˆŒØˆŒˆˆr    c                 ó"   — || _         d | _        d S r?   )r•  r&  )r   r•  s     r   rº  zT2CharString.setBytecodeÚ  s   € Ø ˆŒØˆŒˆˆr    c                 ó6  — | j         �U| || j         ¦  «        k    rdS  || j         |         ¦  «        }|dz   }| j        |         } || || j         |¦  «        \  }}n(| || j        ¦  «        k    rdS | j        |         }|dz   } ||t          ¦  «        }|||fS )N)Nr   r   r   )r•  ÚoperandEncodingr&  rµ  )	r   r   ri   r   rj   r   r+  r(  r)  s	            r   r!  zT2CharString.getTokenÞ  s¾   € ØŒ=Ð$Ø˜˜˜DœMÑ*Ô*Ò*Ð*Ø!�zØ�˜œ uÔ-Ñ.Ô.ˆBØ˜A‘IˆEØÔ*¨2Ô.ˆGØ"˜7 4¨¨T¬]¸EÑBÔB‰LˆE�5�5à˜˜˜DœLÑ)Ô)Ò)Ð)Ø!�zØ”L Ô'ˆEØ˜A‘IˆEØ�Z ¥sÑ+Ô+ˆ
Ø�j %Ð'Ð'r    c                 ó”   — | j         �||z   }| j         ||…         }|}n| j        |         }|dz   }t          |¦  «        |k    sJ ‚||fS r¾  )r•  r&  ri   )r   r   ÚnBytesÚnewIndexÚbytess        r   rS  zT2CharString.getBytesî  s`   € ØŒ=Ð$Ø˜v‘~ˆHØ”M %¨ .Ô1ˆEØˆEˆEà”L Ô'ˆEØ˜A‘IˆEÝ�5‰zŒz˜VÒ#Ð#Ð#Ð#Ø�eˆ|Ðr    c                 ó   — |S r?   r   )r   r   s     r   r   zT2CharString.handle_operatorù  s   € Øˆr    c                 ó  — ddl m} | j        �|                     | j        ¦  «         d S d}g }	 |                      |¦  «        \  }}}|€�n|r¿|dv rv|                      |¦  «        \  }}}g }	|D ].}
|	                      |t          |
¦  «        d¦  «        ¦  «         Œ/t          |	¦  «        }d                     |||gz   ¦  «        }nd                     ||gz   ¦  «        }| 	                    |¦  «         | 
                    ¦   «          g }nKt          |t          ¦  «        rt          |d¬¦  «        }nt          |¦  «        }|                     |¦  «         �Œ+|r,d                     |¦  «        }| 	                    |¦  «         d S d S )	Nr   )Ú
num2binaryTr³  r‚   ú r:   r;   )ÚfontTools.misc.textToolsrÉ  r•  Údumphexr!  rî   r   r
   ÚjoinÚwriteÚnewlinerj   rH   r   rµ  )r   Ú	xmlWriterÚttFontrÉ  r   rX  r(  r)  ÚhintMaskÚbitsÚbyteÚlines               r   ÚtoXMLzT2CharString.toXMLü  s¿  € Ø7Ð7Ð7Ð7Ð7Ð7àŒ=Ð$Ø×Ò˜dœmÑ,Ô,Ð,Ð,Ð,àˆEØˆDð'Ø+/¯=ª=¸Ñ+?Ô+?Ñ(��z 5Ø�=ÙØð 'ØÐ 8Ð8Ð8Ø6:·m²mÀEÑ6JÔ6JÑ3˜ *¨eØ!˜Ø$,ð Fð F˜DØ ŸKšK¨
¨
µ7¸4±=´=À!Ñ(DÔ(DÑEÔEÐEÐEÝ#*¨4¡=¤=˜Ø"Ÿxšx¨°°xÐ/@Ñ(@ÑAÔA˜˜à"Ÿxšx¨°¨w©Ñ7Ô7˜Ø—O’O DÑ)Ô)Ð)Ø×%Ò%Ñ'Ô'Ð'Ø�D�Då! %­Ñ/Ô/ð +Ý 1°%ÀrÐ JÑ JÔ J˜˜å # E¡
¤
˜Ø—K’K Ñ&Ô&Ð&ñ-'ð. ð &ð —x’x ‘~”~�Ø—’ Ñ%Ô%Ð%Ð%Ð%ð&ð &r    c                 ó0  — ddl m}m} |                     d¦  «        r |                       ||¦  «        ¦  «         d S t          |¦  «        }|                     ¦   «         }g }t          |¦  «        }d}||k     �r||         }	|dz   }	 t          |	¦  «        }	| 	                    |	¦  «         nÌ# t          $ r¿ 	 t          |	d¬¦  «        }	| 	                    |	¦  «         n”# t          $ r‡ | 	                    |	¦  «         |	dv rk||         }
d}t          dt          |
¦  «        d	¦  «        D ](}|t           ||
||d	z   …         ¦  «        ¦  «        z   }Œ)| 	                    |¦  «         |dz   }Y nw xY wY nw xY w||k     �°|                      |¦  «         d S )
Nr   )Ú
binary2numÚreadHexÚrawr   r:   r;   r³  r    r‚   )rË  rØ  rÙ  r½   rº  r
   rì   ri   rê   rî   Ú
ValueErrorr   rð   r   r$  )r   ÚnameÚattrsÚcontentrØ  rÙ  r&  r¼  rd   r(  ÚmaskÚ	maskBytesÚjs                r   ÚfromXMLzT2CharString.fromXML"  sê  € Ø@Ð@Ð@Ð@Ð@Ð@Ð@Ð@à�9Š9�UÑÔð 	Ø×Ò˜W˜W WÑ-Ô-Ñ.Ô.Ð.ØˆFÝ˜'Ñ"Ô"ˆØ—-’-‘/”/ˆØˆÝ�'‰lŒlˆØˆØ�#Šg‰gØ˜A”JˆEØ�A‘ˆAð&Ý˜E™
œ
�ð  —’˜uÑ%Ô%Ð%Ð%øõ ð *ð *ð *ð*Ý-¨eÀ2ÐFÑFÔF�Eð —N’N 5Ñ)Ô)Ð)Ð)øõ "ð "ð "ð "Ø—N’N 5Ñ)Ô)Ð)ØÐ 8Ð8Ð8Ø& qœz˜Ø$'˜	Ý!& q­#¨d©)¬)°QÑ!7Ô!7ð Yð Y˜AØ(1µG¸J¸JÀtÈAÐPQÐTUÑPUÈIÄÑ<WÔ<WÑ4XÔ4XÑ(X˜I˜IØŸš yÑ1Ô1Ð1Ø ™E˜øøð"øøøøøð*øøøð �#Šg‰gð* 	�Š˜Ñ Ô Ð Ð Ð s7   Â	B. Â.
E7Â9C Ã
E7Ã BE1Å.E7Å0E1Å1E7Å6E7)NNNNr?   )F)!r  r  r  Út2OperandEncodingrÂ  rp   Út2Operatorsr   r´  r  r¤  rÆ  r¨  r  r‰  rœ  rÜ   r   r¦  rª  r¯  r½  r   r$  rº  ri   r   rj   r!  rS  r   rÖ  râ  r   r    r   r“  r“  i  sd  € € € € € Ø'€OØ*Ð*¨;Ñ7Ô7Ñ€IˆwØ(€OØ)Ðð!ð !ð !ð !ð3ð 3ð 3ð 3ðQð Qð Qðð ð ðð ð ð!ð !ð !ð%ð %ð %ð %ð ð  ð  ð
*#ð *#ð *#ð *#ðX)ð )ð )ðð ð ðð ð ð #&¨wÀ:ð (ð (ð (ð (ð 	ð 	ð 	ðð ð ð$&ð $&ð $&ð $&ðL !ð  !ð  !ð  !ð  !r    r“  c                   óX   ‡ — e Zd ZeZ ee¦  «        \  ZZdˆ fd„	Z	d„ Z
d„ Zd„ Zd„ Zˆ xZS )ÚT1CharStringNc                 óZ   •— t          ¦   «                              ||¦  «         || _        d S r?   )r©  r  rZ  )r   r•  r&  rZ  rª  s       €r   r  zT1CharString.__init__I  s(   ø€ Ý‰Œ×Ò˜ 7Ñ+Ô+Ð+ØˆŒ
ˆ
ˆ
r    c                 ó   — t           S r?   )ÚencodeIntT1r  s    r   rÜ   zT1CharString.getIntEncoderM  rž  r    c                 ó   — d„ }d S )Nc                 ó    — t          d¦  «        ‚)Nz8Type 1 charstrings don't support floating point operands)r¸  )r   s    r   rá   z1T1CharString.getFixedEncoder.<locals>.encodeFixedQ  s   € ÝÐVÑWÔWÐWr    r   )r   rá   s     r   r   zT1CharString.getFixedEncoderP  s    € ð	Xð 	Xð 	Xð 	Xð 	Xr    c                 ó°   — | j         €d S g }d}	 |                      |¦  «        \  }}}|€n|                     |¦  «         Œ2|                      |¦  «         d S r  )r•  r!  rî   r$  )r   r&  r   r(  r)  s        r   r¦  zT1CharString.decompileT  so   € ØŒ=Ð ØˆFØˆØˆð	"Ø'+§}¢}°UÑ';Ô';Ñ$ˆE�:˜uØˆ}ØØ�NŠN˜5Ñ!Ô!Ð!ð		"ð
 	�Š˜Ñ Ô Ð Ð Ð r    c                 ór   — t          || j        ¦  «        }|                     | ¦  «         |j        | _        d S r?   )rX  rZ  r-  r´  )r   rÈ  r©  s      r   rª  zT1CharString.draw`  s4   € Ý& s¨D¬JÑ7Ô7ˆ	Ø×Ò˜$ÑÔÐØ”_ˆŒ
ˆ
ˆ
r    )NNN)r  r  r  Út1OperandEncodingrÂ  rp   Út1Operatorsr   r´  r  rÜ   r   r¦  rª  r«  r¬  s   @r   ræ  ræ  E  s–   ø€ € € € € Ø'€OØ*Ð*¨;Ñ7Ô7Ñ€Iˆwðð ð ð ð ð ðð ð ðXð Xð Xð
!ð 
!ð 
!ð%ð %ð %ð %ð %ð %ð %r    ræ  c                   ó\   — e Zd Ze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S )ÚDictDecompilerNc                 ó>   — g | _         || _        i | _        || _        d S r?   )r5  ÚstringsÚdictÚparent)r   ró  rõ  s      r   r  zDictDecompiler.__init__i  s"   € ØˆŒ
ØˆŒØˆŒ	ØˆŒˆˆr    c                 óT   — t          | j        ¦  «        dk    s
J d¦   «         ‚| j        S )Nr   znon-empty stack)ri   r5  rô  r  s    r   ÚgetDictzDictDecompiler.getDicto  s,   € Ý�4”:‰Œ !Ò#Ð#Ð#Ð%6Ñ#Ô#Ð#ØŒyÐr    c                 óæ   — d}t          |¦  «        }| j        j        }||k     rMt          ||         ¦  «        }|dz   }| j        |         } || |||¦  «        \  }}|� ||¦  «         ||k     °Kd S d S rˆ  )ri   r5  rî   r   rÂ  )r   r   r   ÚlenDatar7  r   r+  r   s           r   r¦  zDictDecompiler.decompiles  s‹   € ØˆÝ�d‘)”)ˆØŒzÔ ˆØ�gŠoˆoÝ˜˜eœÑ%Ô%ˆBØ˜A‘IˆEØÔ*¨2Ô.ˆGØ"˜7 4¨¨T°5Ñ9Ô9‰LˆE�5ØÐ Ø��U‘”�ð �gŠoˆoˆoˆoˆoˆor    c                 ó0   — | j         d         }| j         d= |S r/  ©r5  r1  s     r   r2  zDictDecompiler.pop  s   € Ø”
˜2”ˆØŒJ�rˆNØˆr    c                 ó8   — | j         d d …         }| j         d d …= |S r?   rû  rW  s     r   r#  zDictDecompiler.popall„  s#   € ØŒz˜!˜!˜!Œ}ˆØŒJ�q�q�qˆMØˆr    c                 óp  — |\  }}t          |t          ¦  «        rQd}t          t          |¦  «        dz
  dd¦  «        D ],}||         }t	          | d|z   ¦  «        } ||¦  «        f|z   }Œ-nt	          | d|z   ¦  «        } ||¦  «        }|dk    r| j                             |¦  «         d S || j        |<   d S )Nr   r   rä   Úarg_rŽ   )rj   rk   rð   ri   r"  r5  r¶  rô  )r   r   ÚargTyper   rd   rR  Ú
arghandlers          r   r   zDictDecompiler.handle_operator‰  sá   € Ø$Ñˆ�'Ý�g�uÑ%Ô%ð 	)ØˆEÝ�3˜w™<œ<¨!Ñ+¨R°Ñ4Ô4ð 8ð 8�Ø˜a”j�Ý$ T¨6°C©<Ñ8Ô8�
Ø#˜ HÑ-Ô-Ð/°%Ñ7��ð8õ
 !  v°Ñ'7Ñ8Ô8ˆJØ�J˜xÑ(Ô(ˆEØ�wÒÐØŒJ×Ò˜eÑ$Ô$Ð$Ð$Ð$à"'ˆDŒI�hÑÐÐr    c                 ó¤   — t          | j        d         t          ¦  «        r|                      | j        ¦  «        }n|                      ¦   «         }|S r  )rj   r5  ÚlistÚarg_blend_numberr2  )r   rÜ  Úouts      r   Ú
arg_numberzDictDecompiler.arg_number™  sC   € Ý�d”j ”m¥TÑ*Ô*ð 	Ø×'Ò'¨¬
Ñ3Ô3ˆCˆCà—(’(‘*”*ˆCØˆ
r    c                 óÌ   — g }|                       ¦   «         }t          |¦  «        }|                     |¦  «         |                     d¦  «         |                      ¦   «         }|S )NrŽ   )r2  ri   rî   r#  )r   rÜ  r  Ú	blendArgsÚ
numMastersÚdummys         r   r  zDictDecompiler.arg_blend_number   sV   € ØˆØ—H’H‘J”Jˆ	Ý˜‘^”^ˆ
Ø�
Š
�9ÑÔÐØ�
Š
�7ÑÔÐØ—’‘”ˆØÐr    c                 ó@   — | j         |                      ¦   «                  S r?   )ró  r2  ©r   rÜ  s     r   Úarg_SIDzDictDecompiler.arg_SID©  s   € ØŒ|˜DŸHšH™JœJÔ'Ð'r    c                 ó*   — |                       ¦   «         S r?   r`  r  s     r   Ú	arg_arrayzDictDecompiler.arg_array¬  ra  r    c                 ó�  — | j                              dd¦  «        }| j                             |¦  «        dz   }|                      ¦   «         }|                      ¦   «         }t          |¦  «        }|||z  k    sJ ‚dg|z  }|dz
  }d}	d}
|	|k     r6||	         |
z   }|}
||	|z  z   }|g||||z   …         z   }|||	<   |	dz  }	|	|k     °6|S )aé  
        There may be non-blend args at the top of the stack. We first calculate
        where the blend args start in the stack. These are the last
        numMasters*numBlends) +1 args.
        The blend args starts with numMasters relative coordinate values, the  BlueValues in the list from the default master font. This is followed by
        numBlends list of values. Each of  value in one of these lists is the
        Variable Font delta for the matching region.

        We re-arrange this to be a list of numMaster entries. Each entry starts with the corresponding default font relative value, and is followed by
        the delta values. We then convert the default values, the first item in each entry, to an absolute value.
        r�   r   r   N)rô  r½   rõ  r‰  r2  r#  ri   )r   rÜ  r�   r  rŠ  rX  ÚnumArgsr   Ú	numDeltasrd   ÚprevValÚnewValÚmasterOffsetÚ	blendLists                 r   Úarg_blendListzDictDecompiler.arg_blendList¯  sû   € ð ”)—-’- 	¨1Ñ-Ô-ˆàŒK×%Ò% gÑ.Ô.°Ñ2ð 	ð —H’H‘J”Jˆ	Ø�{Š{‰}Œ}ˆÝ�d‘)”)ˆà˜* yÑ0Ò0Ð0Ð0Ð0Ø�˜Ñ"ˆØ ‘Nˆ	ØˆØˆØ�)ŠmˆmØ˜!”W˜wÑ&ˆFØˆGØ$¨¨I©Ñ6ˆLØ˜ 4¨°|ÀiÑ7OÐ(OÔ#PÑPˆIØ ˆE�!‰HØ�‰FˆAð �)Šmˆmð ˆr    c                 ó´   — |                       ¦   «         }g }|rt          |d         t          ¦  «        r|}n!d}|D ]}||z   }|                     |¦  «         Œ|S r  )r#  rj   r  rî   )r   rÜ  Ú	valueListr  Úcurrentre   s         r   Ú	arg_deltazDictDecompiler.arg_deltaÑ  so   € Ø—K’K‘M”Mˆ	ØˆØð 	$� I¨a¤Lµ$Ñ7Ô7ð 	$àˆCˆCàˆGØð $ð $�Ø! A™+�Ø—
’
˜7Ñ#Ô#Ð#Ð#Øˆ
r    r?   )r  r  r  ÚcffDictOperandEncodingrÂ  r  r÷  r¦  r2  r#  r   r  r  r  r  r  r  r   r    r   rñ  rñ  f  sÓ   € € € € € Ø,€Oðð ð ð ðð ð ð
ð 
ð 
ðð ð ð
ð ð ð
(ð (ð (ð ð ð ðð ð ð(ð (ð (ðð ð ð ð  ð  ðDð ð ð ð r    rñ  c                 óL   — t          | ¦  «        }|dk     rd}n|dk     rd}nd}|S )NiØ  rÒ   il„  rÓ   i €  )ri   )rZ  ÚnSubrsÚbiass      r   r  r  ß  s7   € Ý�‰ZŒZ€FØ�‚}€}ØˆˆØ	�%ŠˆØˆˆàˆØ€Kr    ):Ú__doc__ÚfontTools.misc.fixedToolsr   r   r   r   rË  r   r   r	   r
   ÚfontTools.pens.boundsPenr   r0   ÚloggingÚ	getLoggerr  rÔ   r   r   r(   r+   r3   r8   r=   rB   rM   rî  ri   rã  r  rG   Ú	enumeraterï   Ú
maxOpStackrp   rä  rÜ   ÚencodeIntCFFré  rß   r×   rá   ræ   rþ   Ú	Exceptionr   Úobjectr  rï  r¤  r®  rÆ  rX  r“  ræ  rñ  r  r   r    r   ú<module>r)     sÈ  ððð ðð ð ð ð ð ð ð ð ð ð ð ð JÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ .Ð .Ð .Ð .Ð .Ð .Ø €€€Ø €€€ð €gÔ˜Ñ!Ô!€ðð ð ðð ð ð2ð 2ð 2ð
3ð 3ð 3ð
ð ð ð
ð ð ð
<ð <ð <ð
!ð !ð !ð
 ð  ð  ð  �F˜S‘LÐ Ø - Ñ0Ð �!�B�$Ñ Ø%¨)¨Ñ4Ð �"�S�&Ñ Ø'¨NÐ+;Ñ;Ð �#�c�'Ñ Ø'¨NÐ+;Ñ;Ð �#�c�'Ñ Ø%Ð �#Ñ Ø
€sÐÑÔ Ò$Ð$Ð$Ð$à% a a aÔ(Ð Ø%Ð �"Ñ Ø'Ð �#Ñ à*¨1¨1¨1Ô-Ð Ø)Ð �rÑ Ø,Ð �rÑ Ø+Ð �sÑ ðð ð €ð" <Ð; I I¨kÑ$:Ô$:Ð;Ñ;Ô;€à€
ðð ð ð8ð 8ð 8€ðv1ð 1ð 1ðh ˆ}˜UÑ#Ô#€Øˆm˜DÑ!Ô!€Øˆm˜DÑ!Ô!€ð œð +ð +ð +ð +ð �˜‘”˜g˜g c™lœlÑ*€ð1ð 1ð 1ðh	ð 	ð 	ð 	ð 	˜Yñ 	ô 	ð 	ðG9ð G9ð G9ð G9ð G9˜ñ G9ô G9ð G9ðTð ð €ð<ð ð ð ð Ð,ñ ô ð ð0ð 0ð 0ð 0ð 0Ð)ñ 0ô 0ð 0ðfað að að að aÐ)ñ aô að aðHVð Vð Vð Vð VÐ+ñ Vô Vð VðrY!ð Y!ð Y!ð Y!ð Y!�6ñ Y!ô Y!ð Y!ðx%ð %ð %ð %ð %�<ñ %ô %ð %ðBvð vð vð vð v�Vñ vô vð vðrð ð ð ð r    