§
    ‚ÛgÌz ã                   óÆ  — d Z ddlZddlmZ ddlmZ ddlmZ ddlZddl	m
Z
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZ ddlmZmZmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z*m+Z,m-Z.m/Z0 ddl1m2Z2m3Z3 ddl4Z4ddl5Z5ddl6Z6ddl7Z7ddlm8Z8 ddl9m:Z:m;Z;m<Z<m=Z=m>Z> e:rddl?m@Z@  e4jA        eB¦  «        ZC G d„ de8¦  «        ZD edg d¢¦  «        ZE eEeDjF        ddd¦  «         eEeDjG        ddd¦  «         eEeDjH        ddd¦  «         eEeDjI        ddd¦  «         eEeDjJ        ddd¦  «         eEeDjK        ddd¦  «         eEeDjL        ddd¦  «         eEeDjM        ddd¦  «         eEeDjN        ddd¦  «        dœ	ZOd „ d!„ d"„ d#„ d$œZPd%„ d&„ d'„ d(„ d$œZQd)„ ZRd*„ ZS G d+„ d,¦  «        ZT G d-„ d.¦  «        ZU G d/„ d0eV¦  «        ZW G d1„ d2eV¦  «        ZX G d3„ d4eV¦  «        ZY G d5„ d6eY¦  «        ZZ G d7„ d8eY¦  «        Z[ G d9„ d:eV¦  «        Z\ G d;„ d<eY¦  «        Z] G d=„ d>eY¦  «        Z^ G d?„ d@e#¦  «        Z_ G dA„ dBe_¦  «        Z` G dC„ dDe_¦  «        Za G dE„ dFe_¦  «        Zb G dG„ dHe$¦  «        ZcdIZd G dJ„ dK e'dL¦  «        ¦  «        Ze G dM„ dNe#¦  «        Zf G dO„ dPe#¦  «        Zg G dQ„ dRe$¦  «        Zh G dS„ dTe$¦  «        Zi G dU„ dVe$¦  «        Zj G dW„ dXe$¦  «        Zk G dY„ dZe$¦  «        Zl G d[„ d\e#¦  «        Zm G d]„ d^e#¦  «        Zn G d_„ d`e#¦  «        Zo G da„ dbe#¦  «        Zp G dc„ dde¦  «        Zq G de„ df e'dL¦  «        ¦  «        Zr G dg„ dh e'dL¦  «        ¦  «        Zs G di„ dje¦  «        Zt G dk„ dle¦  «        Zu G dm„ dne¦  «        Zv G do„ dp e'dL¦  «        ¦  «        Zwdqdrdsdtdudvdwdxdydzd{d|d}d~dd€œZxd�„ Zyd‚„ Zzdƒ„ Z{d„„ Z|d…„ Z}d†„ Z~eze{e|d‡œe}e~dˆœd‰œZdŠ„ Z€d‹„ Z� e�¦   «          dŒ„ Z‚dS )�záfontTools.ttLib.tables.otTables -- A collection of classes representing the various
OpenType subtables.

Most are constructed upon import from data in otData.py, all are populated with
converter objects from otConverters.py.
é    N)ÚIntEnum)Úreduce)Úradians)ÚdefaultdictÚ
namedtuple)ÚTupleVariation)Údfs_base_table)ÚquantizeRect)ÚotRound)Ú	TransformÚIdentityÚDecomposedTransform)Ú	bytesjoinÚpadÚsafeEval)ÚVector)ÚControlBoundsPen)ÚTransformPené   )Ú	BaseTableÚFormatSwitchingBaseTableÚValueRecordÚCountReferenceÚ getFormatSwitchingBaseTableClass)ÚfixedToFloatÚfloatToFixedÚfloatToFixedToStrÚstrToFixedToFloat)ÚLookupDebugInfoÚLOOKUP_DEBUG_INFO_KEY)ÚIntFlag)ÚTYPE_CHECKINGÚIteratorÚListÚOptionalÚSet)Ú_TTGlyphSetc                   óN   — 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S )ÚVarComponentFlagsr   é   é   é   é   é    é@   é€   é   i   é   é   é   é    é @  l     ÿ N)Ú__name__Ú
__module__Ú__qualname__ÚRESET_UNSPECIFIED_AXESÚ	HAVE_AXESÚAXIS_VALUES_HAVE_VARIATIONÚTRANSFORM_HAS_VARIATIONÚHAVE_TRANSLATE_XÚHAVE_TRANSLATE_YÚHAVE_ROTATIONÚHAVE_CONDITIONÚHAVE_SCALE_XÚHAVE_SCALE_YÚHAVE_TCENTER_XÚHAVE_TCENTER_YÚGID_IS_24BITÚHAVE_SKEW_XÚHAVE_SKEW_YÚRESERVED_MASK© ó    úU/granary/edev/quantum/lib/python3.11/site-packages/fontTools/ttLib/tables/otTables.pyr)   r)   3   sc   € € € € € Ø#Ðà€Ià!'ÐØ$ÐàÐØÐØ€Mà€Nà€LØ€LØ€NØ€Nà€Là€KØ€Kà)€M€M€MrK   r)   ÚVarTransformMappingValues)ÚflagÚfractionalBitsÚscaleÚdefaultValueé   é´   é
   iLÿÿÿ)	Ú
translateXÚ
translateYÚrotationÚscaleXÚscaleYÚskewXÚskewYÚtCenterXÚtCenterYc                 ó,   — t          j        d| ¦  «        S )Nú>B©ÚstructÚpack©Úvs    rL   ú<lambda>re   e   ó   € •”˜T 1Ñ%Ô%€ rK   c                 ó,   — t          j        d| ¦  «        S )Nú>Hr`   rc   s    rL   re   re   f   rf   rK   c                 ó<   — t          j        d| ¦  «        dd …         S )Nú>Lr   r`   rc   s    rL   re   re   g   s   € •”˜T 1Ñ%Ô% a b bÔ)€ rK   c                 ó,   — t          j        d| ¦  «        S )Nrj   r`   rc   s    rL   re   re   h   rf   rK   )r   r*   é   r+   c                 ó8   — t          j        d| ¦  «        d         S )Nr_   r   ©ra   Úunpackrc   s    rL   re   re   k   ó   € •”˜t QÑ'Ô'¨Ô*€ rK   c                 ó8   — t          j        d| ¦  «        d         S )Nrh   r   rn   rc   s    rL   re   re   l   rp   rK   c                 ó>   — t          j        dd| z   ¦  «        d         S )Nrj   ó    r   rn   rc   s    rL   re   re   m   s   € •”˜t U¨Q¡YÑ/Ô/°Ô2€ rK   c                 ó8   — t          j        d| ¦  «        d         S )Nrj   r   rn   rc   s    rL   re   re   n   rp   rK   c                 óÌ  — | |         }|dk     r||dz   fS |dk     r|dz
  dz  | |dz            z  |dz   fS |dk     r(|dz
  dz  | |dz            dz  z  | |dz            z  |dz   fS |d	k     r7|dz
  d
z  | |dz            dz  z  | |dz            dz  z  | |dz            z  |dz   fS |d	z
  dz  | |dz            d
z  z  | |dz            dz  z  | |dz            dz  z  | |dz            z  |dz   fS )zlRead a variable-length number from data starting at index i.

    Return the number and the next index.
    r0   r   éÀ   r,   r*   éà   r-   rl   éð   é   r+   r.   é   rJ   )ÚdataÚiÚb0s      rL   Ú_read_uint32varr~   r   s`  € ð 
ˆaŒ€BØ	ˆD‚y€yØ�1�q‘5ˆyÐØ	ˆdŠˆØ�T‘	˜aÑ $ q¨1¡u¤+Ñ-¨q°1©uÐ4Ð4Ø	ˆdŠˆØ�T‘	˜bÑ  4¨¨A©¤;°!Ñ#3Ñ3°d¸1¸q¹5´kÑAÀ1ÀqÁ5ÐHÐHØ	ˆdŠˆØ�T‘	˜bÑ  4¨¨A©¤;°"Ñ#4Ñ4°t¸AÀ¹E´{ÀaÑ7GÑGÈ$Ø�‰EôK
ñ 
àˆq‰5ðð 	ð �T‘	˜bÑ  4¨¨A©¤;°"Ñ#4Ñ4°t¸AÀ¹E´{ÀbÑ7HÑHÈ4Ø�‰EôL
àñLñ à�a˜!‘e”ñà !™eð$ð 	$rK   c                 óR  — | dk     rt          j        d| ¦  «        S | dk     rt          j        d| dz  ¦  «        S | dk     r t          j        d| dz  ¦  «        d	d
…         S | dk     rt          j        d| dz  ¦  «        S t          j        dd¦  «        t          j        d| ¦  «        z   S )z:Write a variable-length number.

    Return the data.
    r0   r_   r6   rh   é €  i    rj   i  À r   Ni   l      @ rx   r`   rc   s    rL   Ú_write_uint32varr�   ‰   s¨   € ð
 	ˆ4‚x€xÝŒ{˜4 Ñ#Ô#Ð#Ø	
ˆVŠˆÝŒ{˜4 ! f¡*Ñ.Ô.Ð.Ø	
ˆXŠˆÝŒ{˜4 ! h¡,Ñ0Ô0°°°Ô4Ð4Ø	
ˆZŠˆÝŒ{˜4 ! j¡.Ñ2Ô2Ð2åŒ{˜4 Ñ&Ô&­¬°T¸1Ñ)=Ô)=Ñ=Ð=rK   c                   óF   — e Zd Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ ZdS )ÚVarComponentc                 ó.   — |                       ¦   «          d S ©N)ÚpopulateDefaults©Úselfs    rL   Ú__init__zVarComponent.__init__›   s   € Ø×ÒÑÔÐÐÐrK   Nc                 ó¢   — d| _         d | _        d | _        d | _        d| _        t
          | _        t
          | _        t          ¦   «         | _	        d S )Nr   rJ   )
ÚflagsÚ	glyphNameÚconditionIndexÚaxisIndicesIndexÚ
axisValuesÚNO_VARIATION_INDEXÚaxisValuesVarIndexÚtransformVarIndexr   Ú	transform©rˆ   Ú
propagators     rL   r†   zVarComponent.populateDefaultsž   sH   € ØˆŒ
ØˆŒØ"ˆÔØ $ˆÔØˆŒÝ"4ˆÔÝ!3ˆÔÝ,Ñ.Ô.ˆŒˆˆrK   c                 óú  ‡‡‡— dŠt          ‰‰¦  «        \  | _        Š| j        Š‰t          j        z  rdnd}t	          |         ‰‰‰|z   …         ¦  «        }‰|z  Š|j        |         | _        ‰t          j        z  rt          ‰‰¦  «        \  | _        Š‰t          j	        z  rt          ‰‰¦  «        \  | _
        Šnd | _
        | j
        €d}n'|d         j        | j
                 }t          |¦  «        }‰t          j	        z  r8t          j        |‰‰¦  «        \  }Št          d„ |D ¦   «         ¦  «        | _        nd| _        t          | j        ¦  «        |k    sJ ‚‰t          j        z  rt          ‰‰¦  «        \  | _        Šnt&          | _        ‰t          j        z  rt          ‰‰¦  «        \  | _        Šnt&          | _        t-          ¦   «         | _        ˆˆˆfd„}	t0                               ¦   «         D ]&\  }
} |	|¦  «        }t5          | j        |
|¦  «         Œ'‰t          j        z  s| j        j        | j        _        ‰t          j        z  }|rt          ‰‰¦  «        \  }Š||dz
  z  }|°‰‰d …         S )	Nr   rl   r*   ÚAxisIndicesListc              3   ó6   K  — | ]}t          |d ¦  «        V — ŒdS ©é   N)Úfi2fl©Ú.0rd   s     rL   ú	<genexpr>z)VarComponent.decompile.<locals>.<genexpr>Â   s*   è è € Ð#EÐ#E°Q¥E¨!¨R¡L¤LÐ#EÐ#EÐ#EÐ#EÐ#EÐ#ErK   rJ   c           	      ó¶   •— ‰| j         z  rHt          t          j        d‰‰‰dz   …         ¦  «        d         | j        ¦  «        | j        z  }‰dz  Š|S | j        S )Nú>hr*   r   )rN   r›   ra   ro   rO   rP   rQ   )Úvaluesrd   r{   r‹   r|   s     €€€rL   Úread_transform_componentz8VarComponent.decompile.<locals>.read_transform_componentÒ   sn   ø€ à�v”{Ñ"ð 
+åÝœ d¨D°°Q¸±U°¬OÑ<Ô<¸QÔ?ÀÔAVñô ð ”lñ#ð ð �Q‘�Ø�àÔ*Ð*rK   r   )r~   r‹   r)   rF   Ú	_unpackerÚ
glyphOrderrŒ   rA   r�   r;   rŽ   ÚItemÚlenr   ÚdecompileDeltas_Útupler�   r<   r‘   r�   r=   r’   r   r“   ÚVAR_TRANSFORM_MAPPINGÚitemsÚsetattrrC   rX   rY   rI   )rˆ   r{   ÚfontÚ
localStateÚgidSizeÚglyphIDÚnumAxesÚaxisIndicesr�   r¢   Ú	attr_nameÚmapping_valuesÚvalueÚnÚ_r‹   r|   s    `             @@rL   Ú	decompilezVarComponent.decompile¨   s·  øøø€ ØˆÝ'¨¨aÑ0Ô0‰ˆŒ
�AØ”
ˆàÕ0Ô=Ñ=ÐD�!�!À1ˆÝ˜GÔ$ T¨!¨a°'©k¨/Ô%:Ñ;Ô;ˆØ	ˆW‰ˆØœ¨Ô1ˆŒàÕ$Ô3Ñ3ð 	>Ý%4°T¸1Ñ%=Ô%=Ñ"ˆDÔ àÕ$Ô.Ñ.ð 	)Ý'6°t¸QÑ'?Ô'?Ñ$ˆDÔ! 1 1à$(ˆDÔ!àÔ Ð(ØˆGˆGà$Ð%6Ô7Ô<¸TÔ=RÔSˆKÝ˜+Ñ&Ô&ˆGàÕ$Ô.Ñ.ð 	!Ý*Ô;¸GÀTÈ1ÑMÔM‰MˆJ˜Ý#Ð#EÐ#E¸*Ð#EÑ#EÔ#EÑEÔEˆDŒOˆOà ˆDŒOÝ�4”?Ñ#Ô# wÒ.Ð.Ð.Ð.àÕ$Ô?Ñ?ð 	9Ý)8¸¸qÑ)AÔ)AÑ&ˆDÔ# Q Qå&8ˆDÔ#ØÕ$Ô<Ñ<ð 	8Ý(7¸¸aÑ(@Ô(@Ñ%ˆDÔ" A Aå%7ˆDÔ"å,Ñ.Ô.ˆŒð	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+õ *?×)DÒ)DÑ)FÔ)Fð 	6ð 	6Ñ%ˆI�~Ø,Ð,¨^Ñ<Ô<ˆEÝ�D”N I¨uÑ5Ô5Ð5Ð5àÕ)Ô6Ñ6ð 	:Ø$(¤NÔ$9ˆDŒNÔ!àÕ%Ô3Ñ3ˆØð 	Ý" 4¨Ñ+Ô+‰DˆAˆqØ��Q‘‰JˆAð ð 	ð �A�B�BŒxˆrK   c                 ó   ‡	— g }| j         Š	|                     | j        ¦  «        }|dk    r8‰	t          j        z  Š	|                     t          d         |¦  «        ¦  «         n8‰	t          j         z  Š	|                     t          d         |¦  «        ¦  «         | j        �6‰	t          j        z  Š	|                     t          | j        ¦  «        ¦  «         t          | j        ¦  «        }|rm‰	t          j        z  Š	|                     t          | j        ¦  «        ¦  «         |                     t          j        d„ | j        D ¦   «         ¦  «        ¦  «         n‰	t          j         z  Š	| j        t"          k    r7‰	t          j        z  Š	|                     t          | j        ¦  «        ¦  «         n‰	t          j         z  Š	| j        t"          k    r7‰	t          j        z  Š	|                     t          | j        ¦  «        ¦  «         n‰	t          j         z  Š	ˆ	fd„}t*                               ¦   «         D ]9\  }}t/          | j        |¦  «        }|                      |||¦  «        ¦  «         Œ:t          ‰	¦  «        t3          |¦  «        z   S )Néÿÿ  rl   r*   c                 ó.   — g | ]}t          |d ¦  «        ‘ŒS ©rš   )Úfl2firœ   s     rL   ú
<listcomp>z(VarComponent.compile.<locals>.<listcomp>  s    € Ð;Ð;Ð; a•U˜1˜b‘\”\Ð;Ð;Ð;rK   c                 ó|   •— ‰|j         z  r0t          j        dt          | |j        z  |j        ¦  «        ¦  «        S dS )Nr    rK   )rN   ra   rb   r¼   rP   rO   )r´   r¡   r‹   s     €rL   Úwrite_transform_componentz7VarComponent.compile.<locals>.write_transform_component  sF   ø€ Ø�v”{Ñ"ð Ý”{Ø�% ¨¬Ñ 4°fÔ6KÑLÔLñô ð ð �srK   )r‹   Ú
getGlyphIDrŒ   r)   rF   ÚappendÚ_packerr�   rA   r�   r¦   r�   r;   rŽ   r   ÚcompileDeltaValues_r‘   r�   r<   r’   r=   r©   rª   Úgetattrr“   r   )
rˆ   r¬   r{   r¯   r°   r¿   r²   r³   r´   r‹   s
            @rL   ÚcompilezVarComponent.compileî   sz  ø€ Øˆà”
ˆà—/’/ $¤.Ñ1Ô1ˆØ�UŠ?ˆ?ØÕ&Ô3Ñ3ˆEØ�KŠK� œ
 7Ñ+Ô+Ñ,Ô,Ð,Ð,àÕ'Ô4Ð4Ñ4ˆEØ�KŠK� œ
 7Ñ+Ô+Ñ,Ô,Ð,àÔÐ*ØÕ&Ô5Ñ5ˆEØ�KŠKÕ(¨Ô)<Ñ=Ô=Ñ>Ô>Ð>å�d”oÑ&Ô&ˆàð 		2ØÕ&Ô0Ñ0ˆEØ�KŠKÕ(¨Ô)>Ñ?Ô?Ñ@Ô@Ð@Ø�KŠKÝÔ2Ø;Ð;¨4¬?Ð;Ñ;Ô;ñô ñô ð ð ð Õ'Ô1Ð1Ñ1ˆEàÔ"Õ&8Ò8Ð8ØÕ&ÔAÑAˆEØ�KŠKÕ(¨Ô)@ÑAÔAÑBÔBÐBÐBàÕ'ÔBÐBÑBˆEØÔ!Õ%7Ò7Ð7ØÕ&Ô>Ñ>ˆEØ�KŠKÕ(¨Ô)?Ñ@Ô@ÑAÔAÐAÐAàÕ'Ô?Ð?Ñ?ˆEð	ð 	ð 	ð 	ð 	õ *?×)DÒ)DÑ)FÔ)Fð 	Jð 	JÑ%ˆI�~Ý˜DœN¨IÑ6Ô6ˆEØ�KŠKÐ1Ð1°%¸ÑHÔHÑIÔIÐIÐIå Ñ&Ô&­°4©¬Ñ8Ð8rK   c                 ó&  ‡— ‰                      d|¦  «         ‰                     ¦   «          dˆfd„	} |d| j        ¦  «         | j        � |d| j        ¦  «         | j        � |d| j        ¦  «         | j        €| j        t          j        z  r5| j        t          j        z  rd}nd} |dd	„ | j        D ¦   «         |¦  «         | j	        t          k    r |d
| j	        ¦  «         | j        t          k    r |d| j        ¦  «         t                               ¦   «         D ]I\  }}| j        |j        z  sŒt          | j        |¦  «        } ||t#          ||j        ¦  «        ¦  «         ŒJ‰                     d¦  «         ‰                     ¦   «          d S )Nrƒ   rJ   c                 óp   •— |�2‰                      | d|ff|z   ¦  «         ‰                     ¦   «          d S d S )Nr´   )Ú	simpletagÚnewline)Únamer´   ÚattrsÚwriters      €rL   Úwritez!VarComponent.toXML.<locals>.write)  sJ   ø€ ØÐ Ø× Ò  ¨°%Ð(8Ð':¸UÑ'BÑCÔCÐCØ—’Ñ Ô Ð Ð Ð ð !Ð rK   rŒ   r�   rŽ   ))ÚresetUnspecifiedAxesr   r�   c                 óH   — g | ]}t          t          |d ¦  «        ¦  «        ‘Œ S r»   )ÚfloatÚfl2strrœ   s     rL   r½   z&VarComponent.toXML.<locals>.<listcomp><  s(   € Ð OÐ OÐ O¸!¥¥v¨a°¡}¤}Ñ!5Ô!5Ð OÐ OÐ OrK   r‘   r’   )rJ   )ÚbegintagrÉ   rŒ   r�   rŽ   r‹   r)   r:   r�   r‘   r�   r’   r©   rª   rN   rÄ   r“   rÑ   rO   Úendtag)rˆ   rÌ   ÚttFontrË   rÍ   r²   Úmappingrd   s    `      rL   ÚtoXMLzVarComponent.toXML%  sÙ  ø€ Ø�Š˜¨Ñ.Ô.Ð.Ø�ŠÑÔÐð	!ð 	!ð 	!ð 	!ð 	!ð 	!ð
 	ˆˆk˜4œ>Ñ*Ô*Ð*àÔÐ*ØˆEÐ" DÔ$7Ñ8Ô8Ð8ØÔ Ð,ØˆEÐ$ dÔ&;Ñ<Ô<Ð<àÔ!Ð-ØŒzÕ-ÔDÑDð .ð ŒzÕ-ÔDÑDð Ø6��à�ØˆE�,Ð OÐ O¸t¼Ð OÑ OÔ OÐQVÑWÔWÐWàÔ"Õ&8Ò8Ð8ØˆEÐ&¨Ô(?Ñ@Ô@Ð@ØÔ!Õ%7Ò7Ð7ØˆEÐ% tÔ'=Ñ>Ô>Ð>õ #8×"=Ò"=Ñ"?Ô"?ð 	@ð 	@ÑˆI�wØ”J ¤Ñ-ð ØÝ˜œ¨	Ñ2Ô2ˆAØˆE�)�V A wÔ'=Ñ>Ô>Ñ?Ô?Ð?Ð?à�Š�nÑ%Ô%Ð%Ø�ŠÑÔÐÐÐrK   c                 óò  — d„ |D ¦   «         }|                       ¦   «          |D �]R\  }}}|rJ ‚|d         }|dk    r|| _        Œ!|dk    rt          |¦  «        | _        Œ<|dk    rt          |¦  «        | _        ŒW|dk    rit          d„ t          |¦  «        D ¦   «         ¦  «        | _        t          |                     dd	¦  «        ¦  «        r| xj        t          j
        z  c_        ŒÆ|d
k    rt          |¦  «        | _        Œá|dk    rt          |¦  «        | _        Œü|t          v rEt          | j        |t          |¦  «        ¦  «         | xj        t          |         j        z  c_        �ŒJJ |¦   «         ‚d S )Nc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rJ   ©Ú
isinstancer¨   ©r�   Úcs     rL   r½   z(VarComponent.fromXML.<locals>.<listcomp>O  ó'   € Ð>Ð>Ð>˜­°AµuÑ)=Ô)=Ð>�1Ð>Ð>Ð>rK   r´   rŒ   r�   rŽ   r�   c              3   ó6   K  — | ]}t          |d ¦  «        V — ŒdS r™   )Ústr2flrœ   s     rL   rž   z'VarComponent.fromXML.<locals>.<genexpr>^  s*   è è € Ð'KÐ'K¸!­¨q°"©¬Ð'KÐ'KÐ'KÐ'KÐ'KÐ'KrK   rÎ   Ú0r‘   r’   )r†   rŒ   r   r�   rŽ   r¨   r�   Úgetr‹   r)   r:   r‘   r’   r©   r«   r“   rN   )rˆ   rÊ   rË   ÚcontentrÔ   rd   s         rL   ÚfromXMLzVarComponent.fromXMLN  s¢  € Ø>Ð>˜gÐ>Ñ>Ô>ˆà×ÒÑÔÐà$+ð 	#ñ 	#Ñ ˆD�%˜ØÐÐÐØ�g”ˆAà�{Ò"Ð"Ø!"�”�ØÐ)Ò)Ð)Ý&.¨q¡k¤k�Ô#Ð#ØÐ+Ò+Ð+Ý(0°©¬�Ô%Ð%Ø˜Ò%Ð%Ý"'Ð'KÐ'K½xÈ¹{¼{Ð'KÑ'KÔ'KÑ"KÔ"K�”Ý˜EŸIšIÐ&<¸cÑBÔBÑCÔCð KØ�J”JÕ"3Ô"JÑJ�J”JøØÐ-Ò-Ð-Ý*2°1©+¬+�Ô'Ð'ØÐ,Ò,Ð,Ý)1°!©¬�Ô&Ð&ØÕ.Ð.Ð.ÝØ”NØÝ˜Q‘K”Kñô ð ð
 �
”
Õ3°DÔ9Ô>Ñ>�
”
‘
à"˜dÑ"Ô"Ð"ð5	#ð 	#rK   c           	      óv  ‡ ‡‡— dŠˆˆˆ fd„}t                                ¦   «         D ]<\  }} ||¦  «        }t          ‰ j        |t	          ‰ j        |¦  «        |z   ¦  «         Œ=‰ j        t          j        z  s‰ j        j        ‰ j        _	        ‰t          ‰¦  «        k    sJ ‰t          ‰¦  «        f¦   «         ‚d S )Nr   c                 óz   •— ‰j         | j        z  r*t          ‰‰         | j        ¦  «        | j        z  }‰dz  Š|S dS )Nr   r   )r‹   rN   r›   rO   rP   )r¡   rd   Údeltasr|   rˆ   s     €€€rL   Úread_transform_component_deltazIVarComponent.applyTransformDeltas.<locals>.read_transform_component_deltar  sD   ø€ àŒz˜FœKÑ'ð Ý˜& œ) VÔ%:Ñ;Ô;¸f¼lÑJ�Ø�Q‘�Ø�à�qrK   )r©   rª   r«   r“   rÄ   r‹   r)   rC   rX   rY   r¦   )rˆ   ræ   rç   r²   r³   r´   r|   s   ``    @rL   ÚapplyTransformDeltasz!VarComponent.applyTransformDeltaso  så   øøø€ Øˆð	ð 	ð 	ð 	ð 	ð 	ð 	õ *?×)DÒ)DÑ)FÔ)Fð 	ð 	Ñ%ˆI�~Ø2Ð2°>ÑBÔBˆEÝØ” 	­7°4´>À9Ñ+MÔ+MÐPUÑ+Uñô ð ð ð ”
Õ.Ô;Ñ;ð 	:Ø$(¤NÔ$9ˆDŒNÔ!à•C˜‘K”KÒÐÐ !¥S¨¡[¤[Ð!1ÑÔÐÐÐrK   c                 óp   — t          | ¦  «        t          |¦  «        k    rt          S | j        |j        k    S r…   )ÚtypeÚNotImplementedÚ__dict__)rˆ   Úothers     rL   Ú__eq__zVarComponent.__eq__†  s.   € Ý�‰:Œ:�˜e™œÒ$Ð$Ý!Ð!ØŒ} ¤Ò.Ð.rK   c                 óH   — |                       |¦  «        }|t          u r|n| S r…   )rî   rë   )rˆ   rí   Úresults      rL   Ú__ne__zVarComponent.__ne__‹  s)   € Ø—’˜UÑ#Ô#ˆØ¥>Ð1Ð1ˆvˆv¸6°zÐArK   r…   )r7   r8   r9   r‰   r†   r·   rÅ   rÖ   rã   rè   rî   rñ   rJ   rK   rL   rƒ   rƒ   š   s¬   € € € € € ð ð  ð  ð/ð /ð /ð /ðDð Dð DðL59ð 59ð 59ðn'ð 'ð 'ðR#ð #ð #ðB2ð 2ð 2ð./ð /ð /ð
Bð Bð Bð Bð BrK   rƒ   c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚVarCompositeGlyphNc                 ó   — |�|ng | _         d S r…   ©Ú
components)rˆ   rö   s     rL   r‰   zVarCompositeGlyph.__init__‘  s   € Ø(2Ð(>˜*˜*ÀBˆŒˆˆrK   c                 óž   — g | _         |rCt          ¦   «         }|                     |||¦  «        }| j                              |¦  «         |°Ad S d S r…   )rö   rƒ   r·   rÁ   )rˆ   r{   r¬   r­   Ú	components        rL   r·   zVarCompositeGlyph.decompile”  se   € ØˆŒØð 	.Ý$™œˆIØ×&Ò& t¨T°:Ñ>Ô>ˆDØŒO×"Ò" 9Ñ-Ô-Ð-ð ð 	.ð 	.ð 	.ð 	.ð 	.rK   c                 óˆ   — g }| j         D ]*}|                     |                     |¦  «        ¦  «         Œ+t          |¦  «        S r…   )rö   rÁ   rÅ   r   )rˆ   r¬   r{   rø   s       rL   rÅ   zVarCompositeGlyph.compile›  sG   € ØˆØœð 	1ð 	1ˆIØ�KŠK˜	×)Ò)¨$Ñ/Ô/Ñ0Ô0Ð0Ð0Ý˜‰ŒÐrK   c                 ó  — |                      d|¦  «         |                     ¦   «          t          | j        ¦  «        D ]\  }}|                     ||d|fg¦  «         Œ |                     d¦  «         |                     ¦   «          d S )Nró   Úindex)rÒ   rÉ   Ú	enumeraterö   rÖ   rÓ   )rˆ   Ú	xmlWriterr¬   rË   rÊ   r|   rø   s          rL   rÖ   zVarCompositeGlyph.toXML¡  s”   € Ø×ÒÐ.°Ñ6Ô6Ð6Ø×ÒÑÔÐÝ% d¤oÑ6Ô6ð 	=ð 	=‰LˆAˆyØ�OŠO˜I t¨w¸¨l¨^Ñ<Ô<Ð<Ð<Ø×ÒÐ,Ñ-Ô-Ð-Ø×ÒÑÔÐÐÐrK   c                 óÀ   — d„ |D ¦   «         }|D ]N\  }}}|dk    sJ ‚t          ¦   «         }|                     ||||¦  «         | j                             |¦  «         ŒOd S )Nc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rJ   rÙ   rÛ   s     rL   r½   z-VarCompositeGlyph.fromXML.<locals>.<listcomp>ª  rÝ   rK   rƒ   )rƒ   rã   rö   rÁ   )rˆ   rÊ   rË   râ   r¬   rø   s         rL   rã   zVarCompositeGlyph.fromXML©  s‚   € Ø>Ð>˜gÐ>Ñ>Ô>ˆØ$+ð 	.ð 	.Ñ ˆD�%˜Ø˜>Ò)Ð)Ð)Ð)Ý$™œˆIØ×Ò˜d E¨7°DÑ9Ô9Ð9ØŒO×"Ò" 9Ñ-Ô-Ð-Ð-ð		.ð 	.rK   r…   )r7   r8   r9   r‰   r·   rÅ   rÖ   rã   rJ   rK   rL   ró   ró   �  sh   € € € € € ðGð Gð Gð Gð.ð .ð .ðð ð ðð ð ð.ð .ð .ð .ð .rK   ró   c                   ó   — e Zd Zd„ ZdS )ÚAATStateTablec                 ó0   — i | _         g | _        g | _        d S r…   )ÚGlyphClassesÚStatesÚPerGlyphLookupsr‡   s    rL   r‰   zAATStateTable.__init__³  s   € ØˆÔØˆŒØ!ˆÔÐÐrK   N©r7   r8   r9   r‰   rJ   rK   rL   r  r  ²  s#   € € € € € ð"ð "ð "ð "ð "rK   r  c                   ó   — e Zd Zd„ ZdS )ÚAATStatec                 ó   — i | _         d S r…   )ÚTransitionsr‡   s    rL   r‰   zAATState.__init__º  s   € ØˆÔÐÐrK   Nr  rJ   rK   rL   r  r  ¹  s#   € € € € € ðð ð ð ð rK   r  c                   ó4   — e Zd ZdZed„ ¦   «         Zd„ Zd„ ZdS )Ú	AATActionNc                 ó   — dS )N©NNrJ   )r¬   Ústatess     rL   ÚcompileActionszAATAction.compileActionsÁ  s   € àˆ|rK   c                 ó.  ‡ — ˆ fd„‰ j         D ¦   «         }|r>|                     dd                     |¦  «        ¬¦  «         |                     ¦   «          ‰ j        dk    r5|                     dd‰ j        z  ¬¦  «         |                     ¦   «          d S d S )Nc                 ó.   •— g | ]}‰j         |         ¯|‘ŒS rJ   )rì   )r�   Úfrˆ   s     €rL   r½   z.AATAction._writeFlagsToXML.<locals>.<listcomp>Æ  s%   ø€ Ð<Ð<Ð<�q¨4¬=¸Ô+;Ð<�Ð<Ð<Ð<rK   ÚFlagsú,©r´   r   ÚReservedFlagsz0x%04X)Ú_FLAGSrÈ   ÚjoinrÉ   r  )rˆ   rý   r‹   s   `  rL   Ú_writeFlagsToXMLzAATAction._writeFlagsToXMLÅ  sª   ø€ Ø<Ð<Ð<Ð<˜DœKÐ<Ñ<Ô<ˆØð 	 Ø×Ò ¨s¯xªx¸©¬ÐÑ?Ô?Ð?Ø×ÒÑÔÐØÔ Ò"Ð"Ø×Ò °xÀ$ÔBTÑ7TÐÑUÔUÐUØ×ÒÑÔÐÐÐð #Ð"rK   c                 óF   — || j         v sJ d|z  ¦   «         ‚d| j        |<   d S )Nzunsupported flag %sT)r  rì   ©rˆ   rN   s     rL   Ú_setFlagzAATAction._setFlagÎ  s5   € Ø�t”{Ð"Ð"Ð"Ð$9¸DÑ$@Ñ"Ô"Ð"Ø"ˆŒ�dÑÐÐrK   )r7   r8   r9   r  Ústaticmethodr  r  r  rJ   rK   rL   r  r  ¾  sP   € € € € € Ø€Fàðð ñ „\ðð ð  ð  ð#ð #ð #ð #ð #rK   r  c                   ó    — e Zd ZdZdZg d¢Zi dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“Zd"„ Zd#„ Zd$„ Z	d%„ Z
d&„ Zd'S )(ÚRearrangementMorphActionr+   r   )Ú	MarkFirstÚDontAdvanceÚMarkLastz	no changer   u	   Ax â‡’ xAr*   u	   xD â‡’ Dxrl   u   AxD â‡’ DxAu   ABx â‡’ xABrz   u   ABx â‡’ xBAé   u   xCD â‡’ CDxé   u   xCD â‡’ DCxr,   u   AxCD â‡’ CDxAé	   u   AxCD â‡’ DCxArT   u   ABxD â‡’ DxABé   u   ABxD â‡’ DxBArR   u   ABxCD â‡’ CDxABé   u   ABxCD â‡’ CDxBArš   u   ABxCD â‡’ DCxABé   u   ABxCD â‡’ DCxBAc                 óZ   — d| _         d| _        d| _        d| _        d| _        d| _        d S ©Nr   F)ÚNewStateÚVerbr!  r"  r#  r  r‡   s    rL   r‰   z!RearrangementMorphAction.__init__ë  s4   € ØˆŒØˆŒ	ØˆŒØ ˆÔØˆŒØˆÔÐÐrK   c                 ó  — |�J ‚|                      | j        ¦  «         | j        dk    r| j        dk    sJ | j        ¦   «         ‚| j        | j        z  }| j        r|dz  }| j        r|dz  }| j        r|dz  }|                      |¦  «         d S )Nr   r)  r€   r6   r5   )ÚwriteUShortr,  r-  r  r!  r"  r#  ©rˆ   rÌ   r¬   ÚactionIndexr‹   s        rL   rÅ   z RearrangementMorphAction.compileó  s¨   € ØÐ"Ð"Ð"Ø×Ò˜4œ=Ñ)Ô)Ð)ØŒy˜AŠ~ˆ~ $¤)¨r¢/ / /°4´9¡/¤/ /Ø”	˜DÔ.Ñ.ˆØŒ>ð 	Ø�V‰OˆEØÔð 	Ø�V‰OˆEØŒ=ð 	Ø�V‰OˆEØ×Ò˜5Ñ!Ô!Ð!Ð!Ð!rK   c                 ó  — |�J ‚|                      ¦   «         | _        |                      ¦   «         }|dz  | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        |dz  | _        d S )Nr)  r€   r6   r5   ið  )Ú
readUShortr,  r-  Úboolr!  r"  r#  r  ©rˆ   Úreaderr¬   ÚactionReaderr‹   s        rL   r·   z"RearrangementMorphAction.decompile   s‰   € ØÐ#Ð#Ð#Ø×)Ò)Ñ+Ô+ˆŒØ×!Ò!Ñ#Ô#ˆØ˜C‘KˆŒ	Ý˜e f™nÑ-Ô-ˆŒÝ ¨¡Ñ/Ô/ˆÔÝ˜U V™^Ñ,Ô,ˆŒØ" V™^ˆÔÐÐrK   c                 óò  —  |j         |fi |¤Ž |                     ¦   «          |                     d| j        ¬¦  «         |                     ¦   «          |                      |¦  «         |                     d| j        ¬¦  «         | j                             | j        ¦  «        }|�|                     |¦  «         |                     ¦   «          | 	                    |¦  «         |                     ¦   «          d S )Nr,  r  r-  )
rÒ   rÉ   rÈ   r,  r  r-  Ú_VERBSrá   ÚcommentrÓ   )rˆ   rý   r¬   rË   rÊ   ÚverbComments         rL   rÖ   zRearrangementMorphAction.toXML
  sø   € Øˆ	Ô˜4Ð)Ð) 5Ð)Ð)Ð)Ø×ÒÑÔÐØ×Ò˜J¨d¬mÐÑ<Ô<Ð<Ø×ÒÑÔÐØ×Ò˜iÑ(Ô(Ð(Ø×Ò˜F¨$¬)ÐÑ4Ô4Ð4Ø”k—o’o d¤iÑ0Ô0ˆØÐ"Ø×Ò˜kÑ*Ô*Ð*Ø×ÒÑÔÐØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐrK   c                 óà  — dx| _         x| _        | _        dx| _        x| _        | _        d„ |D ¦   «         }|D ]´\  }}}|dk    rt          |d         ¦  «        | _         Œ'|dk    rt          |d         ¦  «        | _        ŒH|dk    rt          |d         ¦  «        | _        Œi|dk    rE|d                              d	¦  «        D ])}|                      | 	                    ¦   «         ¦  «         Œ*Œµd S )
Nr   Fc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rJ   rÙ   ©r�   Úts     rL   r½   z4RearrangementMorphAction.fromXML.<locals>.<listcomp>  rÝ   rK   r,  r´   r-  r  r  r  )
r,  r-  r  r!  r"  r#  r   Úsplitr  Ústrip©	rˆ   rÊ   rË   râ   r¬   ÚeltNameÚeltAttrsÚ
eltContentrN   s	            rL   rã   z RearrangementMorphAction.fromXML  s  € Ø9:Ð:ˆŒÐ:˜œ	 DÔ$6Ø<AÐAˆŒÐA˜Ô)¨D¬MØ>Ð>˜gÐ>Ñ>Ô>ˆØ-4ð 		0ð 		0Ñ)ˆG�X˜zØ˜*Ò$Ð$Ý (¨°'Ô):Ñ ;Ô ;�”�Ø˜FÒ"Ð"Ý$ X¨gÔ%6Ñ7Ô7�”	�	Ø˜OÒ+Ð+Ý%-¨h°wÔ.?Ñ%@Ô%@�Ô"Ð"Ø˜GÒ#Ð#Ø$ WÔ-×3Ò3°CÑ8Ô8ð 0ð 0�DØ—M’M $§*¢*¡,¤,Ñ/Ô/Ð/Ð/øð		0ð 		0rK   N)r7   r8   r9   Ú
staticSizeÚactionHeaderSizer  r9  r‰   rÅ   r·   rÖ   rã   rJ   rK   rL   r   r   Ó  s<  € € € € € Ø€JØÐØ5Ð5Ð5€FðØ	ˆ;ðà	ˆ;ðð 	
ˆ;ðð 	
ˆ=ð	ð
 	
ˆ=ðð 	
ˆ=ðð 	
ˆ=ðð 	
ˆ=ðð 	
ˆ?ðð 	
ˆ?ðð 	ˆOðð 	ˆOðð 	Ððð 	Ððð 	Ððð  	Ðð!€Fð&ð ð ð"ð "ð "ð,ð ,ð ,ðð ð ð0ð 0ð 0ð 0ð 0rK   r   c                   ó<   — e Zd ZdZdZddgZd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
S )ÚContextualMorphActionr,   r   ÚSetMarkr"  c                 ó^   — d| _         d\  | _        | _        d| _        d\  | _        | _        d S )Nr   ©FF©r¹   r¹   )r,  rJ  r"  r  Ú	MarkIndexÚCurrentIndexr‡   s    rL   r‰   zContextualMorphAction.__init__-  s5   € ØˆŒØ)5Ñ&ˆŒ�dÔ&ØˆÔØ,:Ñ)ˆŒ˜Ô)Ð)Ð)rK   c                 ó  — |�J ‚|                      | j        ¦  «         | j        }| j        r|dz  }| j        r|dz  }|                      |¦  «         |                      | j        ¦  «         |                      | j        ¦  «         d S )Nr€   r6   )r/  r,  r  rJ  r"  rN  rO  r0  s        rL   rÅ   zContextualMorphAction.compile3  sš   € ØÐ"Ð"Ð"Ø×Ò˜4œ=Ñ)Ô)Ð)ØÔ"ˆØŒ<ð 	Ø�V‰OˆEØÔð 	Ø�V‰OˆEØ×Ò˜5Ñ!Ô!Ð!Ø×Ò˜4œ>Ñ*Ô*Ð*Ø×Ò˜4Ô,Ñ-Ô-Ð-Ð-Ð-rK   c                 ó<  — |�J ‚|                      ¦   «         | _        |                      ¦   «         }t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        |dz  | _        |                      ¦   «         | _        |                      ¦   «         | _        d S )Nr€   r6   iÿ?  )r3  r,  r4  rJ  r"  r  rN  rO  r5  s        rL   r·   zContextualMorphAction.decompile?  s’   € ØÐ#Ð#Ð#Ø×)Ò)Ñ+Ô+ˆŒØ×!Ò!Ñ#Ô#ˆÝ˜E F™NÑ+Ô+ˆŒÝ ¨¡Ñ/Ô/ˆÔØ" V™^ˆÔØ×*Ò*Ñ,Ô,ˆŒØ"×-Ò-Ñ/Ô/ˆÔÐÐrK   c                 óæ  —  |j         |fi |¤Ž |                     ¦   «          |                     d| j        ¬¦  «         |                     ¦   «          |                      |¦  «         |                     d| j        ¬¦  «         |                     ¦   «          |                     d| j        ¬¦  «         |                     ¦   «          |                     |¦  «         |                     ¦   «          d S )Nr,  r  rN  rO  )rÒ   rÉ   rÈ   r,  r  rN  rO  rÓ   ©rˆ   rý   r¬   rË   rÊ   s        rL   rÖ   zContextualMorphAction.toXMLI  s÷   € Øˆ	Ô˜4Ð)Ð) 5Ð)Ð)Ð)Ø×ÒÑÔÐØ×Ò˜J¨d¬mÐÑ<Ô<Ð<Ø×ÒÑÔÐØ×Ò˜iÑ(Ô(Ð(Ø×Ò˜K¨t¬~ÐÑ>Ô>Ð>Ø×ÒÑÔÐØ×Ò˜N°$Ô2CÐÑDÔDÐDØ×ÒÑÔÐØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐrK   c                 ó$  — dx| _         | _        dx| _        | _        d\  | _        | _        d„ |D ¦   «         }|D ]Õ\  }}}|dk    rt          |d         ¦  «        | _         Œ'|dk    rF|d                              d¦  «        D ])}|                      | 	                    ¦   «         ¦  «         Œ*Œs|d	k    rt          |d         ¦  «        | _        Œ”|d
k    rt          |d         ¦  «        | _        Œµ|dk    rt          |d         ¦  «        | _        ŒÖd S )Nr   FrM  c                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rJ   rÙ   r>  s     rL   r½   z1ContextualMorphAction.fromXML.<locals>.<listcomp>Z  rÝ   rK   r,  r´   r  r  r  rN  rO  )
r,  r  rJ  r"  rN  rO  r   r@  r  rA  rB  s	            rL   rã   zContextualMorphAction.fromXMLV  s;  € Ø-.Ð.ˆŒ˜Ô*Ø*/Ð/ˆŒ�tÔ'Ø,:Ñ)ˆŒ˜Ô)Ø>Ð>˜gÐ>Ñ>Ô>ˆØ-4ð 	@ð 	@Ñ)ˆG�X˜zØ˜*Ò$Ð$Ý (¨°'Ô):Ñ ;Ô ;�”�Ø˜GÒ#Ð#Ø$ WÔ-×3Ò3°CÑ8Ô8ð 0ð 0�DØ—M’M $§*¢*¡,¤,Ñ/Ô/Ð/Ð/ð0à˜OÒ+Ð+Ý%-¨h°wÔ.?Ñ%@Ô%@�Ô"Ð"Ø˜KÒ'Ð'Ý!)¨(°7Ô*;Ñ!<Ô!<�”�Ø˜NÒ*Ð*Ý$,¨X°gÔ->Ñ$?Ô$?�Ô!øð	@ð 	@rK   N)r7   r8   r9   rF  rG  r  r‰   rÅ   r·   rÖ   rã   rJ   rK   rL   rI  rI  (  sy   € € € € € Ø€JØÐØ˜Ð'€Fð;ð ;ð ;ð
.ð 
.ð 
.ð0ð 0ð 0ðð ð ð@ð @ð @ð @ð @rK   rI  c                   ó   — e Zd Zd„ ZdS )Ú	LigActionc                 ó"   — d| _         d| _        d S )NFr   )ÚStoreÚGlyphIndexDeltar‡   s    rL   r‰   zLigAction.__init__j  s   € ØˆŒ
ð  !ˆÔÐÐrK   Nr  rJ   rK   rL   rW  rW  i  s#   € € € € € ð!ð !ð !ð !ð !rK   rW  c                   ó^   — e Zd ZdZdZddgZd„ Zd„ Zd„ Ze	d„ ¦   «         Z
d	„ Zd
„ Zd„ Zd„ ZdS )ÚLigatureMorphActionr$  rR   ÚSetComponentr"  c                 óN   — d| _         d\  | _        | _        d| _        g | _        d S )Nr   rL  )r,  r]  r"  r  ÚActionsr‡   s    rL   r‰   zLigatureMorphAction.__init__€  s,   € ØˆŒØ.:Ñ+ˆÔ˜4Ô+ØˆÔØˆŒˆˆrK   c                 ó   — |€J ‚|                      | j        ¦  «         | j        }| j        r|dz  }| j        r|dz  }t          | j        ¦  «        dk    r|dz  }|                      |¦  «         t          | j        ¦  «        dk    r1|                      ¦   «         }|                      ||         ¦  «         d S |                      d¦  «         d S )Nr€   r6   r   r5   )r/  r,  r  r]  r"  r¦   r_  ÚcompileLigActions)rˆ   rÌ   r¬   r1  r‹   Úactionss         rL   rÅ   zLigatureMorphAction.compile†  så   € ØÐ&Ð&Ð&Ø×Ò˜4œ=Ñ)Ô)Ð)ØÔ"ˆØÔð 	Ø�V‰OˆEØÔð 	Ø�V‰OˆEÝˆtŒ|ÑÔ˜qÒ Ð Ø�V‰OˆEØ×Ò˜5Ñ!Ô!Ð!ÝˆtŒ|ÑÔ˜qÒ Ð Ø×,Ò,Ñ.Ô.ˆGØ×Ò˜{¨7Ô3Ñ4Ô4Ð4Ð4Ð4à×Ò˜qÑ!Ô!Ð!Ð!Ð!rK   c                 óp  — |€J ‚|                      ¦   «         | _        |                      ¦   «         }t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        }|dz  | _        |                      ¦   «         }|r|                      ||¦  «        | _        d S g | _        d S )Nr€   r6   r5   iÿ  )r3  r,  r4  r]  r"  r  Ú_decompileLigActionsr_  )rˆ   r6  r¬   r7  r‹   ÚperformActionr1  s          rL   r·   zLigatureMorphAction.decompile—  s¸   € ØÐ'Ð'Ð'Ø×)Ò)Ñ+Ô+ˆŒØ×!Ò!Ñ#Ô#ˆÝ  ¨¡Ñ0Ô0ˆÔÝ ¨¡Ñ/Ô/ˆÔÝ˜U V™^Ñ,Ô,ˆð # V™^ˆÔØ×'Ò'Ñ)Ô)ˆØð 	Ø×4Ò4°\À;ÑOÔOˆDŒLˆLˆLàˆDŒLˆLˆLrK   c                 óÌ  — dt          ¦   «         i }}}|D ]H}|j                             ¦   «         D ],\  }}|                     |                     ¦   «         ¦  «         Œ-ŒIt          |d„ ¬¦  «        D ]a}||vr[t          dt          |¦  «        d¦  «        D ]7}	||	d …         }
t          |¦  «        |	z   dz  }|                     |
|¦  «         Œ8||z  }Œbt          |d¦  «        }||fS )NrK   c                 ó&   — t          | ¦  «         | fS r…   ©r¦   ©Úxs    rL   re   z4LigatureMorphAction.compileActions.<locals>.<lambda>»  s   € µ°Q±´°¸¨|€ rK   ©Úkeyr   r+   )
Úsetr
  rª   Úaddra  ÚsortedÚranger¦   Ú
setdefaultr   )r¬   r  rð   rb  r1  ÚstateÚ_glyphClassÚtransÚar|   ÚsuffixÚsuffixIndexs               rL   r  z"LigatureMorphAction.compileActionsª  s  € à'*­C©E¬E°2˜�ˆØð 	7ð 	7ˆEØ&+Ô&7×&=Ò&=Ñ&?Ô&?ð 7ð 7Ñ"�˜UØ—’˜E×3Ò3Ñ5Ô5Ñ6Ô6Ð6Ð6ð7õ ˜Ð%;Ð%;Ð<Ñ<Ô<ð 	ð 	ˆAØ˜Ð#Ð#Ý˜q¥# a¡&¤&¨!Ñ,Ô,ð @ð @�AØ˜q˜r˜rœU�FÝ#& v¡;¤;°¡?°qÑ"8�KØ×*Ò*¨6°;Ñ?Ô?Ð?Ð?Ø˜!‘�øÝ�V˜Q‘”ˆØ˜Ð$Ð$rK   c                 ó   — g }t          | j        ¦  «        D ]i\  }}|t          | j        ¦  «        dz
  k    }|j        dz  }||rdndz  }||j        rdndz  }|                     t          j        d|¦  «        ¦  «         Œjt          |¦  «        S )Nr   éÿÿÿ?ì        r   é   @rj   )	rü   r_  r¦   rZ  rY  rÁ   ra   rb   r   )rˆ   rð   r|   ÚactionÚlastr´   s         rL   ra  z%LigatureMorphAction.compileLigActionsÅ  s¡   € ØˆÝ" 4¤<Ñ0Ô0ð 	4ð 	4‰IˆAˆvØ�˜DœLÑ)Ô)¨AÑ-Ò-ˆDØÔ*¨ZÑ7ˆEØ 4Ð.�Z�Z¨QÑ.ˆEØ 6¤<Ð6�Z�Z°QÑ6ˆEØ�MŠM�&œ+ d¨EÑ2Ô2Ñ3Ô3Ð3Ð3Ý˜Ñ Ô Ð rK   c                 óD  — g }d}|                      |j        |dz  z   ¦  «        }|sy|                     ¦   «         }t          |dz  ¦  «        }t	          ¦   «         }|                     |¦  «         t          |dz  ¦  «        |_        |dz  }|dk    rd|z   }||_        |¯y|S )NFr+   rz  r{  ry  i    i   À)ÚgetSubReaderÚposÚ	readULongr4  rW  rÁ   rY  rZ  )	rˆ   r7  r1  rb  r}  r6  r´   r|  Údeltas	            rL   rd  z(LigatureMorphAction._decompileLigActionsÏ  s½   € ØˆØˆØ×*Ò*¨<Ô+;¸kÈA¹oÑ+MÑNÔNˆØð 		+Ø×$Ò$Ñ&Ô&ˆEÝ˜ 
Ñ*Ñ+Ô+ˆDÝ‘[”[ˆFØ�NŠN˜6Ñ"Ô"Ð"Ý ¨
Ñ 2Ñ3Ô3ˆFŒLØ˜JÑ&ˆEØ˜
Ò"Ð"Ø# eÑ+�Ø%*ˆFÔ"ð ð 		+ð ˆrK   c                 ó°  — dx| _         | _        dx| _        | _        d| _        g | _        d„ |D ¦   «         }|D �]\  }}}|dk    rt          |d         ¦  «        | _         Œ(|dk    rF|d                              d¦  «        D ])}|                      |                     ¦   «         ¦  «         Œ*Œt|dk    rt          |d         ¦  «        | _        Œ•|d	k    r€t          ¦   «         }	| 
                    dd
¦  «                             d¦  «        }
d„ |
D ¦   «         }
d|
v |	_        t          |d         ¦  «        |	_        | j                             |	¦  «         �Œd S )Nr   Fc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rJ   rÙ   r>  s     rL   r½   z/LigatureMorphAction.fromXML.<locals>.<listcomp>ä  rÝ   rK   r,  r´   r  r  r  ÚActionÚ c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rJ   ©rA  )r�   r  s     rL   r½   z/LigatureMorphAction.fromXML.<locals>.<listcomp>ð  s    € Ð2Ð2Ð2 q˜Ÿš™œÐ2Ð2Ð2rK   rY  rZ  )r,  r  r]  r"  r_  r   r@  r  rA  rW  rá   rY  rZ  rÁ   )rˆ   rÊ   rË   râ   r¬   rC  rD  rE  rN   r|  r‹   s              rL   rã   zLigatureMorphAction.fromXMLß  sw  € Ø-.Ð.ˆŒ˜Ô*Ø/4Ð4ˆÔ˜DÔ,ØˆÔØˆŒØ>Ð>˜gÐ>Ñ>Ô>ˆØ-4ð 	,ñ 	,Ñ)ˆG�X˜zØ˜*Ò$Ð$Ý (¨°'Ô):Ñ ;Ô ;�”�Ø˜GÒ#Ð#Ø$ WÔ-×3Ò3°CÑ8Ô8ð 0ð 0�DØ—M’M $§*¢*¡,¤,Ñ/Ô/Ð/Ð/ð0à˜OÒ+Ð+Ý%-¨h°wÔ.?Ñ%@Ô%@�Ô"Ð"Ø˜HÒ$Ð$Ý"™œ�Ø Ÿš W¨bÑ1Ô1×7Ò7¸Ñ<Ô<�Ø2Ð2¨EÐ2Ñ2Ô2�Ø&¨%Ð/�”Ý)1°(Ð;LÔ2MÑ)NÔ)N�Ô&Ø”×#Ò# FÑ+Ô+Ð+ùð	,ð 	,rK   c                 óÚ  —  |j         |fi |¤Ž |                     ¦   «          |                     d| j        ¬¦  «         |                     ¦   «          |                      |¦  «         | j        D ]R}d|j        fg}|j        r|                     d¦  «         |                     d|¦  «         |                     ¦   «          ŒS| 	                    |¦  «         |                     ¦   «          d S )Nr,  r  rZ  )r  rY  r…  )
rÒ   rÉ   rÈ   r,  r  r_  rZ  rY  rÁ   rÓ   )rˆ   rý   r¬   rË   rÊ   r|  Úattribss          rL   rÖ   zLigatureMorphAction.toXMLõ  s  € Øˆ	Ô˜4Ð)Ð) 5Ð)Ð)Ð)Ø×ÒÑÔÐØ×Ò˜J¨d¬mÐÑ<Ô<Ð<Ø×ÒÑÔÐØ×Ò˜iÑ(Ô(Ð(Ø”lð 	 ð 	 ˆFØ)¨6Ô+AÐBÐCˆGØŒ|ð 3Ø—’Ð1Ñ2Ô2Ð2Ø×Ò ¨'Ñ2Ô2Ð2Ø×ÒÑÔÐÐØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐrK   N)r7   r8   r9   rF  rG  r  r‰   rÅ   r·   r  r  ra  rd  rã   rÖ   rJ   rK   rL   r\  r\  x  s¯   € € € € € Ø€Jð Ðà˜mÐ,€Fðð ð ð"ð "ð "ð"ð ð ð& ð%ð %ñ „\ð%ð4!ð !ð !ðð ð ð ,ð ,ð ,ð,ð ð ð ð rK   r\  c                   óX   — e Zd ZdZdZg d¢Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ ¦   «         ZdS )ÚInsertionMorphActionr,   r+   )rJ  r"  ÚCurrentIsKashidaLikeÚMarkedIsKashidaLikeÚCurrentInsertBeforeÚMarkedInsertBeforec                 óv   — d| _         | j        D ]}t          | |d¦  «         Œd| _        g g c| _        | _        d S r+  )r,  r  r«   r  ÚCurrentInsertionActionÚMarkedInsertionActionr  s     rL   r‰   zInsertionMorphAction.__init__  sO   € ØˆŒØ”Kð 	'ð 	'ˆDÝ�D˜$ Ñ&Ô&Ð&Ð&ØˆÔØBDÀbÐ?ˆÔ# TÔ%?Ð%?Ð%?rK   c                 ó”  — |€J ‚|                      | j        ¦  «         | j        }| j        r|dz  }| j        r|dz  }| j        r|dz  }| j        r|dz  }| j        r|dz  }| j        r|dz  }|t          | j
        ¦  «        dz  z  }|t          | j        ¦  «        z  }|                      |¦  «         t          | j
        ¦  «        dk    r|t          | j
        ¦  «                 }nd	}|                      |¦  «         t          | j        ¦  «        dk    r|t          | j        ¦  «                 }nd	}|                      |¦  «         d S )
Nr€   r6   r5   r4   r3   r2   rz   r   r¹   )r/  r,  r  rJ  r"  r�  rŽ  r�  r�  r¦   r’  r“  r¨   )rˆ   rÌ   r¬   r1  r‹   ÚcurrentIndexÚmarkedIndexs          rL   rÅ   zInsertionMorphAction.compile  sx  € ØÐ&Ð&Ð&Ø×Ò˜4œ=Ñ)Ô)Ð)ØÔ"ˆØŒ<ð 	Ø�V‰OˆEØÔð 	Ø�V‰OˆEØÔ$ð 	Ø�V‰OˆEØÔ#ð 	Ø�V‰OˆEØÔ#ð 	Ø�V‰OˆEØÔ"ð 	Ø�V‰OˆEØ•�TÔ0Ñ1Ô1°QÑ6Ñ6ˆØ•�TÔ/Ñ0Ô0Ñ0ˆØ×Ò˜5Ñ!Ô!Ð!ÝˆtÔ*Ñ+Ô+¨aÒ/Ð/Ø&¥u¨TÔ-HÑ'IÔ'IÔJˆLˆLà!ˆLØ×Ò˜<Ñ(Ô(Ð(ÝˆtÔ)Ñ*Ô*¨QÒ.Ð.Ø%¥e¨DÔ,FÑ&GÔ&GÔHˆKˆKà ˆKØ×Ò˜;Ñ'Ô'Ð'Ð'Ð'rK   c                 óN  — |€J ‚|                      ¦   «         | _        |                      ¦   «         }t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        t          |dz  ¦  «        | _        |  	                    |||                      ¦   «         |dz  dz	  ¬	¦  «        | _
        |  	                    |||                      ¦   «         |d
z  ¬	¦  «        | _        d S )Nr€   r6   r5   r4   r3   r2   ià  rz   )rû   Úcounté   )r3  r,  r4  rJ  r"  r�  rŽ  r�  r�  Ú_decompileInsertionActionr’  r“  r5  s        rL   r·   zInsertionMorphAction.decompile6  s%  € ØÐ'Ð'Ð'Ø×)Ò)Ñ+Ô+ˆŒØ×!Ò!Ñ#Ô#ˆÝ˜E F™NÑ+Ô+ˆŒÝ ¨¡Ñ/Ô/ˆÔÝ$(¨°©Ñ$8Ô$8ˆÔ!Ý#'¨°©Ñ#7Ô#7ˆÔ Ý#'¨°©Ñ#7Ô#7ˆÔ Ý"& u¨v¡~Ñ"6Ô"6ˆÔØ&*×&DÒ&DØ˜$ f×&7Ò&7Ñ&9Ô&9À5È6Á>ÐVWÑBWð 'Eñ '
ô '
ˆÔ#ð &*×%CÒ%CØ˜$ f×&7Ò&7Ñ&9Ô&9À%È&Á.ð &Dñ &
ô &
ˆÔ"Ð"Ð"rK   c                 ó®   — |dk    s|dk    rg S |                      |j        |dz  z   ¦  «        }|                     |                     |¦  «        ¦  «        S )Nr¹   r   r*   )r  r€  ÚgetGlyphNameManyÚreadUShortArray)rˆ   r7  r¬   rû   r˜  r6  s         rL   rš  z.InsertionMorphAction._decompileInsertionActionG  sY   € Ø�FŠ?ˆ?˜e qšj˜jØˆIØ×*Ò*¨<Ô+;¸eÀa¹iÑ+GÑHÔHˆØ×$Ò$ V×%;Ò%;¸EÑ%BÔ%BÑCÔCÐCrK   c                 óú  —  |j         |fi |¤Ž |                     ¦   «          |                     d| j        ¬¦  «         |                     ¦   «          |                      |¦  «         | j        D ]-}|                     d|¬¦  «         |                     ¦   «          Œ.| j        D ]-}|                     d|¬¦  «         |                     ¦   «          Œ.|                     |¦  «         |                     ¦   «          d S )Nr,  r  r’  ©Úglyphr“  )rÒ   rÉ   rÈ   r,  r  r’  r“  rÓ   )rˆ   rý   r¬   rË   rÊ   Úgs         rL   rÖ   zInsertionMorphAction.toXMLM  s  € Øˆ	Ô˜4Ð)Ð) 5Ð)Ð)Ð)Ø×ÒÑÔÐØ×Ò˜J¨d¬mÐÑ<Ô<Ð<Ø×ÒÑÔÐØ×Ò˜iÑ(Ô(Ð(ØÔ,ð 	 ð 	 ˆAØ×ÒÐ 8ÀÐÑBÔBÐBØ×ÒÑÔÐÐØÔ+ð 	 ð 	 ˆAØ×ÒÐ 7¸qÐÑAÔAÐAØ×ÒÑÔÐÐØ×Ò˜ÑÔÐØ×ÒÑÔÐÐÐrK   c                 óà  — |                       ¦   «          d„ |D ¦   «         }|D ]Ê\  }}}|dk    rt          |d         ¦  «        | _        Œ'|dk    rF|d                              d¦  «        D ])}|                      |                     ¦   «         ¦  «         Œ*Œs|dk    r!| j                             |d         ¦  «         Œš|dk    r!| j                             |d         ¦  «         ŒÁJ |¦   «         ‚d S )	Nc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rJ   rÙ   r>  s     rL   r½   z0InsertionMorphAction.fromXML.<locals>.<listcomp>^  rÝ   rK   r,  r´   r  r  r’  r   r“  )	r‰   r   r,  r@  r  rA  r’  rÁ   r“  rB  s	            rL   rã   zInsertionMorphAction.fromXML\  s  € Ø�Š‰ŒˆØ>Ð>˜gÐ>Ñ>Ô>ˆØ-4ð 	&ð 	&Ñ)ˆG�X˜zØ˜*Ò$Ð$Ý (¨°'Ô):Ñ ;Ô ;�”�Ø˜GÒ#Ð#Ø$ WÔ-×3Ò3°CÑ8Ô8ð 0ð 0�DØ—M’M $§*¢*¡,¤,Ñ/Ô/Ð/Ð/ð0àÐ4Ò4Ð4ØÔ+×2Ò2°8¸GÔ3DÑEÔEÐEÐEØÐ3Ò3Ð3ØÔ*×1Ò1°(¸7Ô2CÑDÔDÐDÐDà%˜gÑ%Ô%Ð%ð	&ð 	&rK   c                 ó¶  — t          ¦   «         i d}}}|D ]}}|j                             ¦   «         D ]a\  }}|j        �'|                     t          |j        ¦  «        ¦  «         |j        �'|                     t          |j        ¦  «        ¦  «         ŒbŒ~t          |d„ ¬¦  «        D ]±}||v rŒt          dt          |¦  «        ¦  «        D ]Z}	t          |¦  «        dz  |	z   }
t          |	t          |¦  «        ¦  «        D ]%}||	|dz   …         }| 
                    ||
¦  «         Œ&Œ[|D ]/}|                      |¦  «        }|t          j        d|¦  «        z  }Œ0Œ²||fS )NrK   c                 ó&   — t          | ¦  «         | fS r…   rh  ri  s    rL   re   z5InsertionMorphAction.compileActions.<locals>.<lambda>x  s   € µc¸!±f´f°W¸a°L€ rK   rk  r   r*   r   rh   )rm  r
  rª   r’  rn  r¨   r“  ro  rp  r¦   rq  rÀ   ra   rb   )r¬   r  rb  r1  rð   rr  rs  rt  r|  ÚstartÚ
startIndexÚlimitÚglyphsr   r¯   s                  rL   r  z#InsertionMorphAction.compileActionsl  sž  € å'*¡u¤u¨b°#˜f�ˆØð 	Dð 	DˆEØ&+Ô&7×&=Ò&=Ñ&?Ô&?ð Dð DÑ"�˜UØÔ/Ð;Ø—K’K¥ eÔ&BÑ CÔ CÑDÔDÐDØÔ.Ð:Ø—K’K¥ eÔ&AÑ BÔ BÑCÔCÐCøð	Dõ ˜WÐ*@Ð*@ÐAÑAÔAð 	5ð 	5ˆFð ˜Ð$Ð$ØÝ˜q¥# f¡+¤+Ñ.Ô.ð ?ð ?�Ý! &™kœk¨QÑ.°%Ñ7�
Ý" 5­#¨f©+¬+Ñ6Ô6ð ?ð ?�EØ# E¨E°A©IÐ$5Ô6�FØ×*Ò*¨6°:Ñ>Ô>Ð>Ð>ð?ð  ð 5ð 5�ØŸ/š/¨%Ñ0Ô0�Ø�&œ+ d¨GÑ4Ô4Ñ4��ð5ð �{Ð"Ð"rK   N)r7   r8   r9   rF  rG  r  r‰   rÅ   r·   rš  rÖ   rã   r  r  rJ   rK   rL   rŒ  rŒ    s«   € € € € € Ø€JØÐðð ð €FðIð Ið Ið(ð (ð (ð<
ð 
ð 
ð"Dð Dð Dðð ð ð&ð &ð &ð  ð#ð #ñ „\ð#ð #ð #rK   rŒ  c                   ó   — e Zd Zd„ Zdd„ZdS )ÚFeatureParamsc                 óÄ   — t                                |d         ¦  «        | j        k    s J d|d         ›d| j        j        ›�¦   «         ‚t	          j        | ||¦  «         d S )NÚ
FeatureTagz&Wrong FeatureParams type for feature 'z': )ÚfeatureParamTypesrá   Ú	__class__r7   r   rÅ   )rˆ   rÌ   r¬   s      rL   rÅ   zFeatureParams.compile�  so   € å×!Ò! &¨Ô"6Ñ7Ô7¸4¼>ÒIÐIÐIÐIà�<Ô Ð Ð ØŒNÔ#Ð#ð
ñ JÔIÐIõ
 	Ô˜$ ¨Ñ-Ô-Ð-Ð-Ð-rK   Nc                 óL   — t          j        | |||| j        j        ¬¦  «         d S )N)rÊ   )r   rÖ   r¯  r7   rS  s        rL   rÖ   zFeatureParams.toXML–  s(   € ÝŒ˜˜i¨¨u¸4¼>Ô;RÐSÑSÔSÐSÐSÐSrK   r  )r7   r8   r9   rÅ   rÖ   rJ   rK   rL   r«  r«  Œ  s=   € € € € € ð.ð .ð .ðTð Tð Tð Tð Tð TrK   r«  c                   ó   — e Zd ZdS )ÚFeatureParamsSizeN©r7   r8   r9   rJ   rK   rL   r²  r²  š  ó   € € € € € Ø€DrK   r²  c                   ó   — e Zd ZdS )ÚFeatureParamsStylisticSetNr³  rJ   rK   rL   r¶  r¶  ž  r´  rK   r¶  c                   ó   — e Zd ZdS )ÚFeatureParamsCharacterVariantsNr³  rJ   rK   rL   r¸  r¸  ¢  r´  rK   r¸  c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚCoverageNc                 ó8   — t          | d¦  «        s	g | _        d S d S )Nr©  )Úhasattrr©  r”   s     rL   r†   zCoverage.populateDefaults©  s)   € Ý�t˜XÑ&Ô&ð 	ØˆDŒKˆKˆKð	ð 	rK   c           	      ó  — | j         dk    r|d         | _        nï| j         dk    r½g x}| _        |d         }t          |d„ ¬¦  «        }||k    rt                               d¦  «         |}~|D ]s}|j        }|j        }|                     |¦  «        }	|                     |¦  «        dz   }
|                     | 	                    t          |	|
¦  «        ¦  «        ¦  «         Œtn'g | _        t                               d| j         ¦  «         | ` d S )	Nr   Ú
GlyphArrayr*   ÚRangeRecordc                 ó   — | j         S r…   )ÚStartCoverageIndex©ru  s    rL   re   z#Coverage.postRead.<locals>.<lambda>¶  s	   € ¸Ô9M€ rK   rk  ú.GSUB/GPOS Coverage is not sorted by glyph ids.zUnknown Coverage format: %s)ÚFormatr©  ro  ÚlogÚwarningÚStartÚEndrÀ   Úextendrœ  rp  )rˆ   ÚrawTabler¬   r©  ÚrangesÚsorted_rangesÚrr¦  ÚendÚstartIDÚendIDs              rL   ÚpostReadzCoverage.postRead­  s   € ØŒ;˜!ÒÐØ" <Ô0ˆDŒKˆKØŒ[˜AÒÐØ#%Ð%ˆF�T”[Ø˜mÔ,ˆFõ # 6Ð/MÐ/MÐNÑNÔNˆMØ˜Ò&Ð&Ý—’ÐLÑMÔMÐMØ&�ØØð Lð L�Øœ�Ø”e�ØŸ/š/¨%Ñ0Ô0�ØŸš¨Ñ,Ô,¨qÑ0�Ø—’˜d×3Ò3µE¸'À5Ñ4IÔ4IÑJÔJÑKÔKÐKÐKðLð ˆDŒKÝ�KŠKÐ5°t´{ÑCÔCÐCØˆKˆKˆKrK   c                 óp  — t          | dd ¦  «        }|€	g x}| _        d}d|i}|�r‰|                     |¦  «        }t          |¦  «        |k    }|d         }|gg}|dd …         D ]>}	|	|dz   k    r1|d                              |¦  «         |                     |	g¦  «         |	}Œ?|d                              |¦  «         |s#t          |¦  «        dz  t          |¦  «        k     rÌd}
t          t          |¦  «        ¦  «        D ]m}||         \  }}t          ¦   «         }||_        | 	                    |¦  «        |_
        | 	                    |¦  «        |_        |
|_        |||<   |
|z   |z
  dz   }
Œn|r1t                               d¦  «         |                     d„ ¬	¦  «         |D ]}|`Œd
}d|i}|| _        |S )Nr©  r   r¾  r   éÿÿÿÿrl   rÃ  c                 ó   — | j         S r…   )ÚStartIDrÂ  s    rL   re   z#Coverage.preWrite.<locals>.<lambda>è  s   € ¨a¬i€ rK   rk  r*   r¿  )rÄ   r©  ÚgetGlyphIDManyro  rÁ   r¦   rp  r¿  rÕ  ÚgetGlyphNamerÇ  rÈ  rÁ  rÅ  rÆ  ÚsortrÄ  )rˆ   r¬   r©  ÚformatrÊ  ÚglyphIDsÚbrokenOrderr}  rË  r¯   rû   r|   r¦  rÎ  rÍ  s                  rL   ÚpreWritezCoverage.preWriteÆ  sú  € Ý˜˜x¨Ñ.Ô.ˆØˆ>Ø#%Ð%ˆF�T”[ØˆØ  &Ð)ˆØñ  	3à×*Ò*¨6Ñ2Ô2ˆHÝ  Ñ*Ô*¨hÒ6ˆKà˜A”;ˆDØ�f�XˆFØ# A B Bœ<ð ð �Ø˜d Q™hÒ&Ð&Ø˜2”J×%Ò% dÑ+Ô+Ð+Ø—M’M 7 )Ñ,Ô,Ð,Ø��Ø�2ŒJ×Ò˜dÑ#Ô#Ð#àð 3�c &™kœk¨A™oµ°F±´Ò;Ð;à�Ý�s 6™{œ{Ñ+Ô+ð 4ð 4�AØ!'¨¤‘J�E˜3Ý#™œ�AØ %�A”IØ"×/Ò/°Ñ6Ô6�A”GØ ×-Ò-¨cÑ2Ô2�A”EØ+0�AÔ(Ø !�F˜1‘IØ! C™K¨%Ñ/°!Ñ3�E�EØð 9Ý—K’KÐ PÑQÔQÐQØ—K’KÐ$7Ð$7�KÑ8Ô8Ð8Øð "ð "�AØ˜	˜	Ø�Ø)¨6Ð2�ð ˆŒØˆrK   c                 ó„   — t          | dg ¦  «        D ]-}|                     d|¬¦  «         |                     ¦   «          Œ.d S )Nr©  ÚGlyphr  )rÄ   rÈ   rÉ   )rˆ   rý   r¬   rŒ   s       rL   ÚtoXML2zCoverage.toXML2ò  sU   € Ý   x°Ñ4Ô4ð 	 ð 	 ˆIØ×Ò ¨yÐÑ9Ô9Ð9Ø×ÒÑÔÐÐð	 ð 	 rK   c                 ót   — t          | dd ¦  «        }|€	g }|| _        |                     |d         ¦  «         d S )Nr©  r´   )rÄ   r©  rÁ   )rˆ   rÊ   rË   râ   r¬   r©  s         rL   rã   zCoverage.fromXML÷  s@   € Ý˜˜x¨Ñ.Ô.ˆØˆ>ØˆFØ ˆDŒKØ�Š�e˜G”nÑ%Ô%Ð%Ð%Ð%rK   r…   ©r7   r8   r9   r†   rÑ  rÜ  rß  rã   rJ   rK   rL   rº  rº  ¦  se   € € € € € ðð ð ð ðð ð ð2*ð *ð *ðX ð  ð  ð
&ð &ð &ð &ð &rK   rº  l   ÿÿ c                   óJ   — e Zd Zd	d„Zd„ Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
dS )
ÚDeltaSetIndexMapNc                 ó8   — t          | d¦  «        s	g | _        d S d S ©NrÕ   ©r¼  rÕ   r”   s     rL   r†   z!DeltaSetIndexMap.populateDefaults  ó)   € Ý�t˜YÑ'Ô'ð 	ØˆDŒLˆLˆLð	ð 	rK   c                 óB   — |d         dz  dk    sJ ‚|d         | _         d S )NÚEntryFormatéÀÿ  r   rÕ   )rÕ   )rˆ   rÊ  r¬   s      rL   rÑ  zDeltaSetIndexMap.postRead	  s-   € Ø˜Ô'¨&Ñ0°QÒ6Ð6Ð6Ð6Ø 	Ô*ˆŒˆˆrK   c                 óò   — d}| D ]}||z  }Œ|dz  }d}|r|dz  }|dz  }|°t          |d¦  «        }|dk    sJ ‚|d|z
  z	  |d|z  dz
  z  z  }|dk    rd}n|dk    rd}n|dk    rd}nd	}|dz
  d	z  |dz
  z  S )
Nr   r¹   r   r-   éÿ   r*   iÿÿÿ rl   r+   )Úmax)rÕ   ÚoredÚidxÚinnerÚ	innerBitsÚ	entrySizes         rL   ÚgetEntryFormatzDeltaSetIndexMap.getEntryFormat  så   € àˆØð 	ð 	ˆCØ�C‰KˆDˆDà�v‘ˆØˆ	Øð 	Ø˜‰NˆIØ�a‰KˆEð ð 	õ ˜	 1Ñ%Ô%ˆ	Ø˜BŠˆˆˆà˜˜i™Ñ(¨T°a¸9±nÈÑ5IÑ-JÑKˆØ�:ÒÐØˆIˆIØ�ZÒÐØˆIˆIØ�ZÒÐØˆIˆIàˆIà˜Q‘ 1Ñ$¨°Q©Ñ7Ð7rK   c                 óü   — t          | dd ¦  «        }|€	g x}| _        t          |¦  «        dk    rdnd| _        | j                             ¦   «         }t          |¦  «        |d<   |                      |¦  «        |d<   |S )NrÕ   r¹   r   r   ÚMappingCountré  )rÄ   rÕ   r¦   rÄ  rì   Úcopyró  )rˆ   r¬   rÕ   rÊ  s       rL   rÜ  zDeltaSetIndexMap.preWrite'  s   € Ý˜$ 	¨4Ñ0Ô0ˆØˆ?Ø%'Ð'ˆG�d”lÝ˜w™<œ<¨&Ò0Ð0�a�a°aˆŒØ”=×%Ò%Ñ'Ô'ˆÝ#& w¡<¤<ˆ�Ñ Ø"&×"5Ò"5°gÑ">Ô">ˆ�ÑØˆrK   c                 óV  — |                      d¦  «         |                     ¦   «          t          t          | dg ¦  «        ¦  «        D ]`\  }}d|fg}|t          k    r!|                     d|dz	  fd|dz  fg¦  «         |                     d|¦  «         |                     ¦   «          Œad S )	Nz7Omitted values default to 0xFFFF/0xFFFF (no variations)rÕ   rû   Úouterr-   rð  r¹   ÚMap)r:  rÉ   rü   rÄ   r�   rÉ  rÈ   )rˆ   rý   r¬   r|   r´   rË   s         rL   rß  zDeltaSetIndexMap.toXML21  sÓ   € ð 	×ÒÐSÑTÔTÐTØ×ÒÑÔÐÝ!¥'¨$°	¸2Ñ">Ô">Ñ?Ô?ð 
	 ð 
	 ‰HˆAˆuØ˜q�\�NˆEØÕ*Ò*Ð*Ø—’à  %¨2¡+Ð.Ø  %¨&¡.Ð1ðñô ð ð ×Ò  uÑ-Ô-Ð-Ø×ÒÑÔÐÐð
	 ð 
	 rK   c                 ó<  — t          | dd ¦  «        }|€	g x| _        }t          |d         ¦  «        }t          |                     dd¦  «        ¦  «        }t          |                     dd¦  «        ¦  «        }|dk    sJ ‚|                     ||dz  |z  ¦  «         d S )NrÕ   rû   rø  Ú0xFFFFrð  r¹   r-   )rÄ   rÕ   r   rá   Úinsert)	rˆ   rÊ   rË   râ   r¬   rÕ   rû   rø  rð  s	            rL   rã   zDeltaSetIndexMap.fromXMLB  s›   € Ý˜$ 	¨4Ñ0Ô0ˆØˆ?Ø%'Ð'ˆDŒL˜7Ý˜˜wœÑ(Ô(ˆÝ˜Ÿš 7¨HÑ5Ô5Ñ6Ô6ˆÝ˜Ÿš 7¨HÑ5Ô5Ñ6Ô6ˆØ˜ŠˆˆˆØ�Š�u˜u¨™{¨eÑ3Ñ4Ô4Ð4Ð4Ð4rK   c                 óZ   — |t          | j        ¦  «        k     r| j        |         nt          S r…   )r¦   rÕ   r�   )rˆ   r|   s     rL   Ú__getitem__zDeltaSetIndexMap.__getitem__L  s'   € Ø"#¥c¨$¬,Ñ&7Ô&7Ò"7Ð"7ˆtŒ|˜AŒˆÕ=OÐOrK   r…   )r7   r8   r9   r†   rÑ  r  ró  rÜ  rß  rã   rþ  rJ   rK   rL   rã  rã    s“   € € € € € ðð ð ð ð+ð +ð +ð ð8ð 8ñ „\ð8ð2ð ð ð ð  ð  ð"5ð 5ð 5ðPð Pð Pð Pð PrK   rã  Úuint8c                   ó4   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )	Ú	VarIdxMapNc                 ó8   — t          | d¦  «        s	i | _        d S d S rå  ræ  r”   s     rL   r†   zVarIdxMap.populateDefaultsQ  rç  rK   c                 ó  — |d         dz  dk    sJ ‚|                      ¦   «         }|d         }|                     |d         gt          |¦  «        t          |¦  «        z
  z  ¦  «         t          t	          ||¦  «        ¦  «        | _        d S )Nré  rê  r   rÕ   rÓ  )ÚgetGlyphOrderrÉ  r¦   ÚdictÚziprÕ   )rˆ   rÊ  r¬   r¤   ÚmapLists        rL   rÑ  zVarIdxMap.postReadU  sƒ   € Ø˜Ô'¨&Ñ0°QÒ6Ð6Ð6Ð6Ø×'Ò'Ñ)Ô)ˆ
Ø˜9Ô%ˆØ�Š˜ œ�}­¨J©¬½#¸g¹,¼,Ñ(FÑGÑHÔHÐHÝ�C 
¨GÑ4Ô4Ñ5Ô5ˆŒˆˆrK   c                 ó„  ‡— t          | dd ¦  «        Š‰€	i xŠ| _        |                     ¦   «         }ˆfd„|D ¦   «         Št          ‰¦  «        dk    r:‰d         ‰d         k    r(‰d= t          ‰¦  «        dk    r‰d         ‰d         k    °(d‰i}t          ‰¦  «        |d<   t                               ‰¦  «        |d<   |S )NrÕ   c                 ó    •— g | ]
}‰|         ‘ŒS rJ   rJ   )r�   r¡  rÕ   s     €rL   r½   z&VarIdxMap.preWrite.<locals>.<listcomp>b  s   ø€ Ð2Ð2Ð2 !�7˜1”:Ð2Ð2Ð2rK   r   éþÿÿÿrÓ  rõ  ré  )rÄ   rÕ   r  r¦   rã  ró  )rˆ   r¬   r¤   rÊ  rÕ   s       @rL   rÜ  zVarIdxMap.preWrite\  s×   ø€ Ý˜$ 	¨4Ñ0Ô0ˆØˆ?Ø%'Ð'ˆG�d”là×'Ò'Ñ)Ô)ˆ
Ø2Ð2Ð2Ð2 zÐ2Ñ2Ô2ˆÝ�'‰lŒl˜QÒÐ 7¨2¤;°'¸"´+Ò#=Ð#=Ø˜�õ �'‰lŒl˜QÒÐ 7¨2¤;°'¸"´+Ò#=Ð#=ð ˜wÐ'ˆÝ#& w¡<¤<ˆ�Ñ Ý"2×"AÒ"AÀ'Ñ"JÔ"Jˆ�ÑØˆrK   c                 óè   — t          t          | di ¦  «                             ¦   «         ¦  «        D ]@\  }}d|fd|dz	  fd|dz  ff}|                     d|¦  «         |                     ¦   «          ŒAd S )NrÕ   r   rø  r-   rð  r¹   rù  )ro  rÄ   rª   rÈ   rÉ   )rˆ   rý   r¬   r   r´   rË   s         rL   rß  zVarIdxMap.toXML2k  s“   € Ý"¥7¨4°¸BÑ#?Ô#?×#EÒ#EÑ#GÔ#GÑHÔHð 	 ð 	 ‰LˆE�5à˜%Ð Ø˜% 2™+Ð&Ø˜% &™.Ð)ðˆEð
 ×Ò  uÑ-Ô-Ð-Ø×ÒÑÔÐÐð	 ð 	 rK   c                 ó  — t          | dd ¦  «        }|€	i }|| _        	 |d         }n'#  |                     ¦   «         |d                  }Y nxY wt          |d         ¦  «        }t          |d         ¦  «        }|dk    sJ ‚|dz  |z  ||<   d S )NrÕ   r   rû   rø  rð  r¹   r-   )rÄ   rÕ   r  r   )	rˆ   rÊ   rË   râ   r¬   rÕ   r   rø  rð  s	            rL   rã   zVarIdxMap.fromXMLu  s    € Ý˜$ 	¨4Ñ0Ô0ˆØˆ?ØˆGØ"ˆDŒLð	9Ø˜'”NˆEˆEøð	9Ø×&Ò&Ñ(Ô(¨¨w¬Ô8ˆEˆEˆEøøøÝ˜˜wœÑ(Ô(ˆÝ˜˜wœÑ(Ô(ˆØ˜ŠˆˆˆØ 2™+¨Ñ.ˆ�‰ˆˆs	   ž' §"Ac                 óB   — | j                              |t          ¦  «        S r…   )rÕ   rá   r�   )rˆ   rŒ   s     rL   rþ  zVarIdxMap.__getitem__ƒ  s   € ØŒ|×Ò 	Õ+=Ñ>Ô>Ð>rK   r…   )	r7   r8   r9   r†   rÑ  rÜ  rß  rã   rþ  rJ   rK   rL   r  r  P  ss   € € € € € ðð ð ð ð6ð 6ð 6ðð ð ð ð  ð  ð/ð /ð /ð?ð ?ð ?ð ?ð ?rK   r  c                   ó   — e Zd Zd„ ZdS )ÚVarRegionListc                 ó¢   — |                      d¦  «        }|rt          |j        ¦  «        | _        i | j        ¥dt          | j        d¦  «        i¥S )NÚfvarÚRegionAxisCount)rá   r¦   Úaxesr  rì   r   )rˆ   r¬   Ú	fvarTables      rL   rÜ  zVarRegionList.preWriteˆ  s_   € ð —H’H˜VÑ$Ô$ˆ	Øð 	7Ý#& y¤~Ñ#6Ô#6ˆDÔ ð
ØŒmð
à�~¨d¬mÐ=NÑOÔOð
ð 
ð 	
rK   N©r7   r8   r9   rÜ  rJ   rK   rL   r  r  ‡  s#   € € € € € ð
ð 
ð 
ð 
ð 
rK   r  c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚSingleSubstNc                 ó8   — t          | d¦  «        s	i | _        d S d S rå  ræ  r”   s     rL   r†   zSingleSubst.populateDefaultsš  rç  rK   c                 óÞ  ‡— i }t          |d         ¦  «        }| j        dk    r\|d         Š|                     |¦  «        }ˆfd„|D ¦   «         }|                     |¦  «        }t	          ||¦  «        D ]
\  }}	|	||<   Œnd| j        dk    rGt          |¦  «        |d         k    s
J d¦   «         ‚|d         }
t	          ||
¦  «        D ]
\  }}|||<   ŒnJ d
| j        z  ¦   «         ‚|| _        | `d S )Nrº  r   ÚDeltaGlyphIDc                 ó    •— g | ]
}|‰z   d z  ‘ŒS )é   rJ   )r�   r¯   r‚  s     €rL   r½   z(SingleSubst.postRead.<locals>.<listcomp>¤  s"   ø€ ÐJÐJÐJ°W˜ %™¨5Ñ0ÐJÐJÐJrK   r*   Ú
GlyphCountz invalid SingleSubstFormat2 tableÚ
Substituter   úunknown format: %s)Ú_getGlyphsFromCoverageTablerÄ  rÖ  rœ  r  r¦   rÕ   )rˆ   rÊ  r¬   rÕ   ÚinputÚ	inputGIDSÚoutGIDSÚoutNamesÚinpÚoutÚsubstÚsubr‚  s               @rL   rÑ  zSingleSubst.postReadž  s0  ø€ ØˆÝ+¨H°ZÔ,@ÑAÔAˆØŒ;˜!ÒÐØ˜^Ô,ˆEØ×+Ò+¨EÑ2Ô2ˆIØJÐJÐJÐJÀ	ÐJÑJÔJˆGØ×,Ò,¨WÑ5Ô5ˆHÝ  xÑ0Ô0ð #ð #‘��SØ"�˜‘�ð#àŒ[˜AÒÐå�E‘
”
˜h |Ô4Ò4Ð4Ð4Ø1ñ 5Ô4Ð4à˜\Ô*ˆEÝ  uÑ-Ô-ð #ð #‘��SØ"�˜‘�ð#ð 9Ð*¨T¬[Ñ8Ñ8Ô8Ð8ØˆŒØˆKˆKˆKrK   c                 óÜ  ‡— t          | dd ¦  «        }|€	i x}| _        t          |                     ¦   «         ¦  «        }|j        Šˆfd„|D ¦   «         }t          t          ||¦  «        ¦  «        }d}d }|D ]\  }}	|€|	|z
  dz  }||z   dz  |	k    r nŒ|€d}nd}i }
|| _        t          ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }||_	        ||
d<   |dk    r
|€J ‚||
d	<   n||
d
<   |
S )NrÕ   c                 óB   •— g | ]\  }} ‰|¦  «         ‰|¦  «        f‘ŒS rJ   rJ   )r�   ru  ÚbrÀ   s      €rL   r½   z(SingleSubst.preWrite.<locals>.<listcomp>º  s2   ø€ ÐEÐEÐE±t°q¸!�Z�Z ‘]”] J J¨q¡M¤MÐ2ÐEÐEÐErK   r*   r  r   c                 ó*   — g | ]}|d          d         ‘ŒS )r   r   rJ   ©r�   Úitems     rL   r½   z(SingleSubst.preWrite.<locals>.<listcomp>Ð  ó    € Ð6Ð6Ð6 ��a”˜”Ð6Ð6Ð6rK   c                 ó*   — g | ]}|d          d          ‘ŒS ©r   rJ   r-  s     rL   r½   z(SingleSubst.preWrite.<locals>.<listcomp>Ñ  r/  rK   rº  r  r  )
rÄ   rÕ   Úlistrª   rÀ   ro  r  rÄ  rº  r©  )rˆ   r¬   rÕ   rª   ÚgidItemsÚsortableItemsrÙ  r‚  ÚinIDÚoutIDrÊ  Úcovr!  r'  rÀ   s                 @rL   rÜ  zSingleSubst.preWrite´  sQ  ø€ Ý˜$ 	¨4Ñ0Ô0ˆØˆ?Ø%'Ð'ˆG�d”lÝ�W—]’]‘_”_Ñ%Ô%ˆØ”_ˆ
ØEÐEÐEÐE¸uÐEÑEÔEˆÝ�s 8¨UÑ3Ô3Ñ4Ô4ˆð ˆØˆØ#ð 	ð 	‰KˆD�%Øˆ}Ø ™¨Ñ.�à�u‘ Ñ%¨Ò.Ð.Ø�ð /ð ˆ}à��à�àˆØˆŒÝ‰jŒjˆØ6Ð6¨Ð6Ñ6Ô6ˆØ6Ð6¨Ð6Ñ6Ô6ˆØˆŒ
Ø"ˆ�ÑØ�QŠ;ˆ;ØÐ$Ð$Ð$Ø',ˆH�^Ñ$Ð$à%*ˆH�\Ñ"ØˆrK   c                 óÂ   — t          | j                             ¦   «         ¦  «        }|D ]5\  }}|                     dd|fd|fg¦  «         |                     ¦   «          Œ6d S )NÚSubstitutionÚinr&  )ro  rÕ   rª   rÈ   rÉ   )rˆ   rý   r¬   rª   ÚinGlyphÚoutGlyphs         rL   rß  zSingleSubst.toXML2Û  st   € Ý�t”|×)Ò)Ñ+Ô+Ñ,Ô,ˆØ!&ð 	 ð 	 ÑˆG�XØ×Ò °$¸°À5È(ÐBSÐ0TÑUÔUÐUØ×ÒÑÔÐÐð	 ð 	 rK   c                 ó`   — t          | dd ¦  «        }|€	i }|| _        |d         ||d         <   d S )NrÕ   r&  r:  )rÄ   rÕ   )rˆ   rÊ   rË   râ   r¬   rÕ   s         rL   rã   zSingleSubst.fromXMLá  s<   € Ý˜$ 	¨4Ñ0Ô0ˆØˆ?ØˆGØ"ˆDŒLØ$ Uœ|ˆ��d”ÑÐÐrK   r…   rá  rJ   rK   rL   r  r  ™  se   € € € € € ðð ð ð ðð ð ð,%ð %ð %ðN ð  ð  ð,ð ,ð ,ð ,ð ,rK   r  c                   óD   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Z	dS )	ÚMultipleSubstNc                 ó8   — t          | d¦  «        s	i | _        d S d S rå  ræ  r”   s     rL   r†   zMultipleSubst.populateDefaultsê  rç  rK   c                 óà   — i }| j         dk    rEt          |d         ¦  «        }d„ |d         D ¦   «         }t          t          ||¦  «        ¦  «        }nJ d| j         z  ¦   «         ‚|| _        | ` d S )Nr   rº  c                 ó   — g | ]	}|j         ‘Œ
S rJ   )r  )r�   Úss     rL   r½   z*MultipleSubst.postRead.<locals>.<listcomp>ò  s   € Ð@Ð@Ð@ a�Q”\Ð@Ð@Ð@rK   ÚSequencer   r  )rÄ  r   r  r  rÕ   )rˆ   rÊ  r¬   rÕ   r©  r'  s         rL   rÑ  zMultipleSubst.postReadî  s}   € ØˆØŒ;˜!ÒÐÝ0°¸*Ô1EÑFÔFˆFØ@Ð@¨8°JÔ+?Ð@Ñ@Ô@ˆEÝ�3˜v uÑ-Ô-Ñ.Ô.ˆGˆGà8Ð*¨T¬[Ñ8Ñ8Ô8Ð8ØˆŒØˆKˆKˆKrK   c                 ó  ‡ ‡— t          ‰ dd ¦  «        Š‰€	i xŠ‰ _        t          ¦   «         }t          t	          ‰                     ¦   «         ¦  «        |j        ¬¦  «        |_        d‰ _        |ˆˆ fd„|j        D ¦   «         dœ}|S )NrÕ   rk  r   c                 óF   •— g | ]}‰                      ‰|         ¦  «        ‘ŒS rJ   )ÚmakeSequence_)r�   r   rÕ   rˆ   s     €€rL   r½   z*MultipleSubst.preWrite.<locals>.<listcomp>  s+   ø€ ÐTÐTÐTÀ˜×+Ò+¨G°E¬NÑ;Ô;ÐTÐTÐTrK   )rº  rD  )	rÄ   rÕ   rº  ro  r2  ÚkeysrÀ   r©  rÄ  )rˆ   r¬   r7  rÊ  rÕ   s   `   @rL   rÜ  zMultipleSubst.preWriteù  sŽ   øø€ Ý˜$ 	¨4Ñ0Ô0ˆØˆ?Ø%'Ð'ˆG�d”lÝ‰jŒjˆÝ�D §¢¡¤Ñ0Ô0°d´oÐFÑFÔFˆŒ
ØˆŒàØTÐTÐTÐTÐTÈÌÐTÑTÔTð
ð 
ˆð ˆrK   c                 óì   — t          | j                             ¦   «         ¦  «        }|D ]J\  }}d                     |¦  «        }|                     dd|fd|fg¦  «         |                     ¦   «          ŒKd S )Nr  r9  r:  r&  )ro  rÕ   rª   r  rÈ   rÉ   )rˆ   rý   r¬   rª   r;  Ú	outGlyphsr&  s          rL   rß  zMultipleSubst.toXML2  s„   € Ý�t”|×)Ò)Ñ+Ô+Ñ,Ô,ˆØ"'ð 	 ð 	 ÑˆG�YØ—(’(˜9Ñ%Ô%ˆCØ×Ò °$¸°À5È#À,Ð0OÑPÔPÐPØ×ÒÑÔÐÐð	 ð 	 rK   c                 óz  — t          | dd ¦  «        }|€	i }|| _        |dk    rPg | _        |D ]D}t          |t          ¦  «        sŒ|\  }}}	|dk    r | j                             |d         ¦  «         ŒEd S |dk    rˆt          |                     dt          |¦  «        ¦  «        ¦  «        }
| j        |
         }g x}||<   |D ]?}t          |t          ¦  «        sŒ|\  }}}	|dk    r|                     |d         ¦  «         Œ@d S |d         r|d          	                    d	¦  «        ng }d
„ |D ¦   «         ||d         <   d S )NrÕ   rº  rÞ  r´   rD  rû   r  r&  r  c                 ó6   — g | ]}|                      ¦   «         ‘ŒS rJ   rˆ  )r�   r¡  s     rL   r½   z)MultipleSubst.fromXML.<locals>.<listcomp>+  s    € Ð=Ð=Ð=¨a §¢¡	¤	Ð=Ð=Ð=rK   r:  )
rÄ   rÕ   Úold_coverage_rÚ   r¨   rÁ   Úintrá   r¦   r@  )rˆ   rÊ   rË   râ   r¬   rÕ   ÚelementÚelement_nameÚelement_attrsr¶   rû   r   Úglyph_mappingrJ  s                 rL   rã   zMultipleSubst.fromXML  s„  € Ý˜$ 	¨4Ñ0Ô0ˆØˆ?ØˆGØ"ˆDŒLð �:ÒÐØ!#ˆDÔØ"ð Fð F�Ý! '­5Ñ1Ô1ð ØØ18Ñ.�˜m¨QØ 7Ò*Ð*ØÔ&×-Ò-¨m¸GÔ.DÑEÔEÐEøØˆFØ�:ÒÐÝ˜Ÿ	š	 '­3¨w©<¬<Ñ8Ô8Ñ9Ô9ˆEØÔ& uÔ-ˆEØ-/Ð/ˆM˜G E™NØ"ð Að A�Ý! '­5Ñ1Ô1ð ØØ18Ñ.�˜m¨QØ <Ò/Ð/Ø!×(Ò(¨°wÔ)?Ñ@Ô@Ð@øØˆFð 05°U¬|ÐC�E˜%”L×&Ò& sÑ+Ô+Ð+Àˆ	Ø=Ð=°9Ð=Ñ=Ô=ˆ��d”ÑÐÐrK   c                 ó0   — t          ¦   «         }| |_        |S r…   )rD  r  )r¡  Úseqs     rL   rG  zMultipleSubst.makeSequence_-  s   € å‰jŒjˆØˆŒØˆ
rK   r…   )
r7   r8   r9   r†   rÑ  rÜ  rß  rã   r  rG  rJ   rK   rL   r?  r?  é  s€   € € € € € ðð ð ð ð	ð 	ð 	ðð ð ð ð  ð  ð>ð >ð >ð@ ðð ñ „\ðð ð rK   r?  c                   ó4   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )	ÚClassDefNc                 ó8   — t          | d¦  «        s	i | _        d S d S )NÚ	classDefs)r¼  rX  r”   s     rL   r†   zClassDef.populateDefaults5  ó)   € Ý�t˜[Ñ)Ô)ð 	 ØˆDŒNˆNˆNð	 ð 	 rK   c                 óx  — i }| j         dk    rx|d         }|d         }|                     |¦  «        }|t          |¦  «        z   }|                     t	          ||¦  «        ¦  «        }t          ||¦  «        D ]\  }	}
|
r|
||	<   Œn«| j         dk    r€|d         }|D ]t}|j        }
|
sŒ|j        }|j        }|                     |¦  «        }|                     |¦  «        dz   }|                     t	          ||¦  «        ¦  «        }|D ]}	|
||	<   ŒŒun t           
                    d| j         ¦  «         || _        | ` d S )Nr   Ú
StartGlyphÚClassValueArrayr*   ÚClassRangeRecordzUnknown ClassDef format: %s)rÄ  rÀ   r¦   rœ  rp  r  ÚClassrÇ  rÈ  rÅ  rÆ  rX  )rˆ   rÊ  r¬   rX  r¦  Ú	classListrÏ  rÐ  Ú
glyphNamesrŒ   ÚclsÚrecordsÚrecrÎ  s                 rL   rÑ  zClassDef.postRead9  sx  € Øˆ	àŒ;˜!ÒÐØ˜\Ô*ˆEØ Ð!2Ô3ˆIØ—o’o eÑ,Ô,ˆGØ�c )™nœnÑ,ˆEØ×.Ò.­u°W¸eÑ/DÔ/DÑEÔEˆJÝ"% j°)Ñ"<Ô"<ð /ð /‘�	˜3Øð /Ø+.�I˜iÑ(øð/ð Œ[˜AÒÐØÐ1Ô2ˆGØð 
/ð 
/�Ø”i�Øð ØØœ	�Ø”g�ØŸ/š/¨%Ñ0Ô0�ØŸš¨Ñ,Ô,¨qÑ0�Ø!×2Ò2µ5¸À%Ñ3HÔ3HÑIÔI�
Ø!+ð /ð /�IØ+.�I˜iÑ(Ð(ð/ð
/õ �KŠKÐ5°t´{ÑCÔCÐCØ"ˆŒØˆKˆKˆKrK   c                 ó  — t          | dd ¦  «        }|€	i | _        d S |j        }g }|                     ¦   «         D ])\  }}|sŒ|                      ||¦  «        ||f¦  «         Œ*|r |                     ¦   «          |d         \  }}}	|	||gg}
|dd …         D ]P\  }}}||dz   k    s||	k    r5|
d                              ||g¦  «         |
                     |||g¦  «         |}|}|}	ŒQ|
d                              ||g¦  «         |
S d S )NrX  r   r   rÓ  )rÄ   rX  rÀ   rª   rÁ   rØ  rÉ  )rˆ   r¬   rX  rÀ   rª   rŒ   ra  r}  ÚlastNameÚlastClsrË  r¯   s               rL   Ú_getClassRangeszClassDef._getClassRangesX  s]  € Ý˜D +¨tÑ4Ô4ˆ	ØÐØˆDŒNØˆFØ”_ˆ
ØˆØ'ŸošoÑ/Ô/ð 	Bð 	B‰NˆI�sØð ØØ�LŠL˜*˜* YÑ/Ô/°¸CÐ@ÑAÔAÐAÐAØð 	Ø�JŠJ‰LŒLˆLØ&+¨A¤hÑ#ˆD�(˜GØ  hÐ/Ð0ˆFØ+0°°°¬9ð ð Ñ'�˜ CØ˜d Q™hÒ&Ð&¨#°ª.¨.Ø˜2”J×%Ò% t¨XÐ&6Ñ7Ô7Ð7Ø—M’M 3¨°Ð";Ñ<Ô<Ð<Ø�Ø$�Ø��Ø�2ŒJ×Ò˜t XÐ.Ñ/Ô/Ð/ØˆMð	ð 	rK   c                 ó  — d}dg i}|                       |¦  «        }|rà|d         d         }|d         d         }||z
  dz   }t          |¦  «        dz  |dz   k     r\t          t          |¦  «        ¦  «        D ]8}||         \  }	}
}}}t          ¦   «         }||_        ||_        |	|_        |||<   Œ9d}d|i}nG|d         d         }dg|z  }|D ])\  }	}
}}}t          |
|z
  ||z
  dz   ¦  «        D ]}|	||<   ŒŒ*d}||dœ}|| _        |S )Nr*   r]  r   r   rÓ  rl   )r[  r\  )rg  r¦   rp  r]  rÇ  rÈ  r^  rÄ  )rˆ   r¬   rÙ  rÊ  rË  Ú
startGlyphÚendGlyphÚ
glyphCountr|   ra  r¦  Ú	startNamerÎ  ÚendNamerc  ÚstartGlyphNameÚclassesr¡  s                     rL   rÜ  zClassDef.preWriteq  sg  € ØˆØ&¨Ð+ˆØ×%Ò% dÑ+Ô+ˆØð 	VØ œ 1œˆJØ˜b”z !”}ˆHØ! JÑ.°Ñ2ˆJÝ�6‰{Œ{˜Q‰ ¨a¡Ò/Ð/å�s 6™{œ{Ñ+Ô+ð $ð $�AØ:@À¼)Ñ7�C˜ 	¨3°Ý*Ñ,Ô,�CØ )�C”IØ%�C”GØ #�C”IØ #�F˜1‘I�IØ�Ø.°Ð7��ð "(¨¤¨1¤�Ø˜# 
Ñ*�Ø;Að )ð )Ñ7�C˜ 	¨3°Ý" 5¨:Ñ#5°s¸ZÑ7GÈ!Ñ7KÑLÔLð )ð )˜Ø%(˜ ™
˜
ð)à�Ø*8ÈWÐUÐU�ØˆŒØˆrK   c                 óÂ   — t          | j                             ¦   «         ¦  «        }|D ]5\  }}|                     dd|fd|fg¦  «         |                     ¦   «          Œ6d S )NrV  r   Úclass)ro  rX  rª   rÈ   rÉ   )rˆ   rý   r¬   rª   rŒ   ra  s         rL   rß  zClassDef.toXML2�  ss   € Ý�t”~×+Ò+Ñ-Ô-Ñ.Ô.ˆØ#ð 	 ð 	 ‰NˆI�sØ×Ò 
¨g°yÐ-AÀGÈSÀ>Ð,RÑSÔSÐSØ×ÒÑÔÐÐð	 ð 	 rK   c                 óz   — t          | dd ¦  «        }|€	i }|| _        t          |d         ¦  «        ||d         <   d S )NrX  rq  r   )rÄ   rX  rN  )rˆ   rÊ   rË   râ   r¬   rX  s         rL   rã   zClassDef.fromXML–  sE   € Ý˜D +¨tÑ4Ô4ˆ	ØÐØˆIØ&ˆDŒNÝ$'¨¨g¬Ñ$7Ô$7ˆ	�%˜”.Ñ!Ð!Ð!rK   r…   )	r7   r8   r9   r†   rÑ  rg  rÜ  rß  rã   rJ   rK   rL   rV  rV  4  ss   € € € € € ð ð  ð  ð  ðð ð ð>ð ð ð2ð ð ð> ð  ð  ð8ð 8ð 8ð 8ð 8rK   rV  c                   ó.   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚAlternateSubstNc                 ó8   — t          | d¦  «        s	i | _        d S d S )NÚ
alternates)r¼  rv  r”   s     rL   r†   zAlternateSubst.populateDefaultsŸ  s)   € Ý�t˜\Ñ*Ô*ð 	!Ø ˆDŒOˆOˆOð	!ð 	!rK   c                 ó  — i }| j         dk    r`t          |d         ¦  «        }|d         }t          |¦  «        t          |¦  «        k    sJ ‚t          ||¦  «        D ]\  }}|j        ||<   ŒnJ d| j         z  ¦   «         ‚|| _        | ` d S )Nr   rº  ÚAlternateSetr   r  )rÄ  r   r¦   r  Ú	Alternaterv  )rˆ   rÊ  r¬   rv  r!  Úaltsr%  Úalts           rL   rÑ  zAlternateSubst.postRead£  s¤   € Øˆ
ØŒ;˜!ÒÐÝ/°¸Ô0DÑEÔEˆEØ˜NÔ+ˆDÝ�u‘:”:¥ T¡¤Ò*Ð*Ð*Ð*Ý  tÑ,Ô,ð 0ð 0‘��SØ"%¤-�
˜3‘�ð0ð 9Ð*¨T¬[Ñ8Ñ8Ô8Ð8Ø$ˆŒØˆKˆKˆKrK   c                 ó  — d| _         t          | dd ¦  «        }|€	i x}| _        t          |                     ¦   «         ¦  «        }t          t          |¦  «        ¦  «        D ](}||         \  }}|                     |¦  «        ||f||<   Œ)|                     ¦   «          t          ¦   «         }d„ |D ¦   «         |_
        g }d„ |D ¦   «         }|D ],}t          ¦   «         }	||	_        |                     |	¦  «         Œ-d| _        ||dœS )Nr   rv  c                 ó   — g | ]
}|d          ‘ŒS r1  rJ   r-  s     rL   r½   z+AlternateSubst.preWrite.<locals>.<listcomp>»  ó   € Ð0Ð0Ð0 $�d˜1”gÐ0Ð0Ð0rK   c                 ó   — g | ]
}|d          ‘ŒS ©rÓ  rJ   r-  s     rL   r½   z+AlternateSubst.preWrite.<locals>.<listcomp>½  ó   € Ð.Ð.Ð. �4˜”8Ð.Ð.Ð.rK   )rº  rx  )rÄ  rÄ   rv  r2  rª   rp  r¦   rÀ   rØ  rº  r©  rx  ry  rÁ   ÚsortCoverageLast)
rˆ   r¬   rv  rª   r|   rŒ   rm  r7  ÚsetListrz  s
             rL   rÜ  zAlternateSubst.preWrite°  s   € ØˆŒÝ˜T <°Ñ6Ô6ˆ
ØÐØ+-Ð-ˆJ˜œÝ�Z×%Ò%Ñ'Ô'Ñ(Ô(ˆÝ•s˜5‘z”zÑ"Ô"ð 	Bð 	BˆAØ" 1œX‰NˆI�sØ—’ yÑ1Ô1°9¸cÐAˆE�!‰HˆHØ�
Š
‰ŒˆÝ‰jŒjˆØ0Ð0¨%Ð0Ñ0Ô0ˆŒ
Øˆ
Ø.Ð.¨Ð.Ñ.Ô.ˆØð 	$ð 	$ˆCÝ‘>”>ˆDØ ˆDŒNØ×Ò˜dÑ#Ô#Ð#Ð#ð !"ˆÔØ°Ð<Ð<Ð<rK   c                 ój  — t          | j                             ¦   «         ¦  «        }|D ]‰\  }}|                     d|¬¦  «         |                     ¦   «          |D ]-}|                     d|¬¦  «         |                     ¦   «          Œ.|                     d¦  «         |                     ¦   «          ŒŠd S )Nrx  rŸ  ry  )ro  rv  rª   rÒ   rÉ   rÈ   rÓ   )rˆ   rý   r¬   rª   rŒ   rv  r{  s          rL   rß  zAlternateSubst.toXML2Ê  sÌ   € Ý�t”×,Ò,Ñ.Ô.Ñ/Ô/ˆØ%*ð 	 ð 	 Ñ!ˆI�zØ×Ò˜~°YÐÑ?Ô?Ð?Ø×ÒÑÔÐØ!ð $ð $�Ø×#Ò# K°sÐ#Ñ;Ô;Ð;Ø×!Ò!Ñ#Ô#Ð#Ð#Ø×Ò˜^Ñ,Ô,Ð,Ø×ÒÑÔÐÐð	 ð 	 rK   c                 óÔ   — t          | dd ¦  «        }|€	i }|| _        |d         }g }|||<   |D ]9}t          |t          ¦  «        sŒ|\  }}}|                     |d         ¦  «         Œ:d S )Nrv  r   )rÄ   rv  rÚ   r¨   rÁ   )	rˆ   rÊ   rË   râ   r¬   rv  rŒ   rm  rO  s	            rL   rã   zAlternateSubst.fromXMLÕ  s�   € Ý˜T <°Ñ6Ô6ˆ
ØÐØˆJØ(ˆDŒOØ˜'”Nˆ	ØˆØ #ˆ
�9ÑØð 	'ð 	'ˆGÝ˜g¥uÑ-Ô-ð ØØ#*Ñ ˆD�%˜Ø�JŠJ�u˜W”~Ñ&Ô&Ð&Ð&ð		'ð 	'rK   r…   rá  rJ   rK   rL   rt  rt  ž  sd   € € € € € ð!ð !ð !ð !ðð ð ð=ð =ð =ð4	 ð 	 ð 	 ð'ð 'ð 'ð 'ð 'rK   rt  c                   óD   — e Zd Zdd„Zd„ Zed„ ¦   «         Zd„ Zd„ Zd„ Z	dS )	ÚLigatureSubstNc                 ó8   — t          | d¦  «        s	i | _        d S d S )NÚ	ligatures)r¼  r‰  r”   s     rL   r†   zLigatureSubst.populateDefaultså  rY  rK   c                 ó@  — i }| j         dk    rut          |d         ¦  «        }|d         }t          |¦  «        t          |¦  «        k    sJ ‚t          t          |¦  «        ¦  «        D ]}||         j        |||         <   ŒnJ d| j         z  ¦   «         ‚|| _        | ` d S )Nr   rº  ÚLigatureSetr   r  )rÄ  r   r¦   rp  ÚLigaturer‰  )rˆ   rÊ  r¬   r‰  r!  ÚligSetsr|   s          rL   rÑ  zLigatureSubst.postReadé  s¯   € Øˆ	ØŒ;˜!ÒÐÝ/°¸Ô0DÑEÔEˆEØ˜}Ô-ˆGÝ�u‘:”:¥ W¡¤Ò-Ð-Ð-Ð-Ý�3˜u™:œ:Ñ&Ô&ð :ð :�Ø&-¨a¤jÔ&9�	˜% œ(Ñ#Ð#ð:ð 9Ð*¨T¬[Ñ8Ñ8Ô8Ð8Ø"ˆŒØˆKˆKˆKrK   c                 ó"   — t          | ¦  «         S r…   rh  rõ   s    rL   Ú_getLigatureSortKeyz!LigatureSubst._getLigatureSortKeyö  s   € õ6 �J‘”ÐÐrK   c                 óö  — d| _         t          | dd ¦  «        }|€	i x}| _        |r×t          t	          t          |¦  «        ¦  «        t          ¦  «        r¨t          ¦   «         }t          | 	                    ¦   «         | j
        ¬¦  «        D ]o}t          ¦   «         }|dd …         |_        t          |¦  «        |_        ||         |_        |                     |d         g ¦  «                             |¦  «         Œp|}t%          |                     ¦   «         ¦  «        }t)          t          |¦  «        ¦  «        D ](}||         \  }}	|                     |¦  «        ||	f||<   Œ)|                     ¦   «          t/          ¦   «         }
d„ |D ¦   «         |
_        g }d„ |D ¦   «         }|D ]H}	t3          ¦   «         }g x}|_        |	D ]}|                     |¦  «         Œ|                     |¦  «         ŒId| _        |
|dœS )Nr   r‰  rk  r   c                 ó   — g | ]
}|d          ‘ŒS r1  rJ   r-  s     rL   r½   z*LigatureSubst.preWrite.<locals>.<listcomp>-  r~  rK   c                 ó   — g | ]
}|d          ‘ŒS r€  rJ   r-  s     rL   r½   z*LigatureSubst.preWrite.<locals>.<listcomp>0  r�  rK   )rº  r‹  )rÄ  rÄ   r‰  rÚ   ÚnextÚiterr¨   r  ro  rH  r�  rŒ  Ú	Componentr¦   Ú	CompCountÚLigGlyphrq  rÁ   r2  rª   rp  rÀ   rØ  rº  r©  r‹  r‚  )rˆ   r¬   r‰  ÚnewLigaturesÚcompsÚligaturerª   r|   rŒ   rm  r7  r�  rƒ  ÚligSetÚligsÚligs                   rL   rÜ  zLigatureSubst.preWrite  s  € ØˆŒÝ˜D +¨tÑ4Ô4ˆ	ØÐØ)+Ð+ˆI˜œàð 	%�¥D­¨i©¬Ñ$9Ô$9½5ÑAÔAð 	%õ
  ™6œ6ˆLÝ 	§¢Ñ 0Ô 0°dÔ6NÐOÑOÔOð Gð G�Ý#™:œ:�Ø%*¨1¨2¨2¤Y�Ô"Ý%(¨¡Z¤Z�Ô"Ø$-¨eÔ$4�Ô!Ø×'Ò'¨¨a¬°"Ñ5Ô5×<Ò<¸XÑFÔFÐFÐFØ$ˆIå�Y—_’_Ñ&Ô&Ñ'Ô'ˆÝ•s˜5‘z”zÑ"Ô"ð 	Bð 	BˆAØ" 1œX‰NˆI�sØ—’ yÑ1Ô1°9¸cÐAˆE�!‰HˆHØ�
Š
‰ŒˆÝ‰jŒjˆØ0Ð0¨%Ð0Ñ0Ô0ˆŒ
àˆØ.Ð.¨Ð.Ñ.Ô.ˆØð 	#ð 	#ˆCÝ ‘]”]ˆFØ%'Ð'ˆD�6”?Øð !ð !�Ø—’˜CÑ Ô Ð Ð Ø�NŠN˜6Ñ"Ô"Ð"Ð"ð !"ˆÔØ°Ð8Ð8Ð8rK   c           	      ó¦  — t          | j                             ¦   «         ¦  «        }|D ]§\  }}|                     d|¬¦  «         |                     ¦   «          |D ]K}|                     d|j        d                     |j        ¦  «        ¬¦  «         |                     ¦   «          ŒL| 	                    d¦  «         |                     ¦   «          Œ¨d S )Nr‹  rŸ  rŒ  r  )r   rö   )
ro  r‰  rª   rÒ   rÉ   rÈ   r—  r  r•  rÓ   )rˆ   rý   r¬   rª   rŒ   r�  r�  s          rL   rß  zLigatureSubst.toXML2=  sé   € Ý�t”~×+Ò+Ñ-Ô-Ñ.Ô.ˆØ"'ð 		 ð 		 ÑˆI�wØ×Ò˜}°IÐÑ>Ô>Ð>Ø×ÒÑÔÐØð $ð $�Ø×#Ò#Ø c¤l¸s¿xºxÈÌÑ?VÔ?Vð $ñ ô ð ð ×!Ò!Ñ#Ô#Ð#Ð#Ø×Ò˜]Ñ+Ô+Ð+Ø×ÒÑÔÐÐð		 ð 		 rK   c                 ó|  — t          | dd ¦  «        }|€	i }|| _        |d         }g }|||<   |D ]�}t          |t          ¦  «        sŒ|\  }}}t	          ¦   «         }	|d         |	_        |d         }
|
r|
                     d¦  «        ng |	_        t          |	j        ¦  «        |	_	        | 
                    |	¦  «         ŒŽd S )Nr‰  r   rö   r  )rÄ   r‰  rÚ   r¨   rŒ  r—  r@  r•  r¦   r–  rÁ   )rˆ   rÊ   rË   râ   r¬   r‰  rŒ   rœ  rO  r�  rö   s              rL   rã   zLigatureSubst.fromXMLJ  sÚ   € Ý˜D +¨tÑ4Ô4ˆ	ØÐØˆIØ&ˆDŒNØ˜'”Nˆ	ØˆØ#ˆ	�)ÑØð 		ð 		ˆGÝ˜g¥uÑ-Ô-ð ØØ#*Ñ ˆD�%˜Ý‘*”*ˆCØ  œ>ˆCŒLØ˜|Ô,ˆJØ5?ÐG˜J×,Ò,¨SÑ1Ô1Ð1ÀRˆCŒMÝ ¤Ñ.Ô.ˆCŒMØ�KŠK˜ÑÔÐÐð		ð 		rK   r…   )
r7   r8   r9   r†   rÑ  r  r�  rÜ  rß  rã   rJ   rK   rL   r‡  r‡  ä  s€   € € € € € ð ð  ð  ð  ðð ð ð ð ð  ñ „\ð ð8(9ð (9ð (9ðT ð  ð  ðð ð ð ð rK   r‡  c                   ó,   — e Zd Zd„ Zd„ Zd	dddefd„ZdS )
ÚCOLRc                 ó4  — |                      d¬¦  «        }|                      ¦   «         D ]I}|j        dk    r|                     |j        ¦  «         Œ(|                     ||i ¬¦  «        ||j        <    nt          d¦  «        ‚t          j        | ||¦  «        S )Nr   )ÚoffsetÚLayerRecordCount)Ú	tableDictz$LayerRecordCount converter not found)	r  ÚgetConvertersrÊ   ÚadvancerF  ÚreadÚAssertionErrorr   r·   )rˆ   r6  r¬   Ú	subReaderÚconvs        rL   r·   zCOLR.decompile_  s¥   € ð ×'Ò'¨qÐ'Ñ1Ô1ˆ	Ø×&Ò&Ñ(Ô(ð 	Ið 	IˆDØŒyÐ.Ò.Ð.Ø×!Ò! $¤/Ñ2Ô2Ð2ØØ $§	¢	¨)°TÀR 	Ñ HÔ HˆF�4”9ÑØˆEå Ð!GÑHÔHÐHÝÔ" 4¨°Ñ6Ô6Ð6rK   c                 óP   — d | _         i | j        ¥dt          | j        d¦  «        i¥S )Nr¤  )r¤  rì   r   ©rˆ   r¬   s     rL   rÜ  zCOLR.preWritep  s<   € ð !%ˆÔð
ØŒmð
à¥¨t¬}Ð>PÑ QÔ Qð
ð 
ð 	
rK   r   ÚglyphSetr'   Úquantizationc                 ó˜  — | j         dk    rd S i }| j        j        D ]X}	 |j                             | ||¦  «        }n,# t
          $ r}ddlm}  |d|j        ›�¦  «        |‚d }~ww xY w|�
|||j        <   ŒYt          | d¦  «        o| j
        d u}|s|r	d | _
        d S d S |st          ¦   «         | _
        d| j
        _        || j
        _        d S )Nr   )Ú
TTLibErrorz#Failed to compute COLR ClipBox for ÚClipListr   )ÚVersionÚBaseGlyphListÚBaseGlyphPaintRecordÚPaintÚcomputeClipBoxÚ	ExceptionÚfontTools.ttLibr±  Ú	BaseGlyphr¼  r²  rÄ  Úclips)	rˆ   r®  r¯  r»  rc  ÚclipBoxÚer±  ÚhasClipLists	            rL   ÚcomputeClipBoxeszCOLR.computeClipBoxesz  s'  € ØŒ<˜1ÒÐØˆFàˆØÔ%Ô:ð 	/ð 	/ˆCðØœ)×2Ò2°4¸À<ÑPÔP��øÝð ð ð Ø6Ð6Ð6Ð6Ð6Ð6à �jØK¸#¼-ÐKÐKñô àðøøøøðøøøð Ð"Ø'.��c”mÑ$øå˜d JÑ/Ô/ÐM°D´MÈÐ4MˆØð 	(Øð %Ø $�”��ð%ð %ð ð )Ý (¡
¤
�”Ø'(�”Ô$Ø"'ˆDŒMÔÐÐs   Ÿ<¼
A%ÁA Á A%Nr1  )r7   r8   r9   r·   rÜ  rN  r¿  rJ   rK   rL   r¡  r¡  ^  sY   € € € € € ð7ð 7ð 7ð"
ð 
ð 
ð(ð (¨ð (Àcð (ð (ð (ð (ð (ð (rK   r¡  c                   ó4   ‡ — e Zd Zed„ ¦   «         Zˆ fd„Zˆ xZS )Ú
LookupListc                 óä   — | j         D ]b}|j        D ]X}t          |¦  «        j                             d¦  «        r  dS t          |¦  «        j                             d¦  «        r  dS ŒYŒct
          ‚)NÚSubstÚGSUBÚPosÚGPOS)ÚLookupÚSubTablerê   r7   ÚendswithÚ
ValueError)rˆ   ÚlÚsts      rL   ÚtablezLookupList.table˜  s†   € à”ð 	"ð 	"ˆAØ”jð "ð "�Ý˜‘8”8Ô$×-Ò-¨gÑ6Ô6ð "Ø!˜6˜6˜6Ý˜‘8”8Ô$×-Ò-¨eÑ4Ô4ð "Ø!˜6˜6˜6ð"ð"õ
 ÐrK   c           
      ó€  •— |rd|vst           |d         j        vr"t          ¦   «                              ||¦  «        S |d         j        t                    | j                 }|                      ¦   «         D �]G}|j        rÝt          | |j        g ¦  «        }t          |¦  «        D ]¶\  }}t          |¦  «        |v rt          |t          |¦  «                 Ž }|j        }	|j        r|j        › d|	› �}	|j        r|j        \  }
}}|	› d|› d|
› d|› d�}	|                     |	¦  «         |                     ¦   «          |                     ||||j        d|fg¦  «         Œ·Œç|j        r%t%          |j        d t'          | ¦  «        ¦  «        s�Œt          | |j        d ¦  «        }|                     ||||j        g ¦  «         �ŒId S )NÚDebgz: z in z (ú/ú)rû   )r    r{   Úsuperrß  rÍ  r¦  ÚrepeatrÄ   rÊ   rü   Ústrr   ÚlocationÚfeaturer:  rÉ   ÚxmlWriteÚauxÚevalÚvars)rˆ   rý   r¬   Ú	debugDatar«  r´   ÚlookupIndexr.  ÚinfoÚtagÚscriptÚlanguagerÖ  r¯  s                €rL   rß  zLookupList.toXML2¢  s	  ø€ àð	3à˜TÐ!Ð!Ý$¨D°¬LÔ,=Ð=Ð=å‘7”7—>’> )¨TÑ2Ô2Ð2Ø˜”LÔ%Õ&;Ô<¸T¼ZÔHˆ	Ø×&Ò&Ñ(Ô(ð 	Eñ 	EˆDØŒ{ð EÝ  d¤i°Ñ4Ô4�Ý)2°5Ñ)9Ô)9ð ð Ñ%�K Ý˜;Ñ'Ô'¨9Ð4Ð4Ý.°	½#¸kÑ:JÔ:JÔ0KÐL˜Ø"œm˜Øœ9ð 8Ø%)¤YÐ"7Ð"7°#Ð"7Ð"7˜CØœ<ð NØ8<¼Ñ5˜F H¨gØ%(Ð"MÐ"M¨gÐ"MÐ"M¸Ð"MÐ"MÀ(Ð"MÐ"MÐ"M˜CØ!×)Ò)¨#Ñ.Ô.Ð.Ø!×)Ò)Ñ+Ô+Ð+à—M’MØ! 4¨¨t¬y¸GÀ[Ð;QÐ:Rñô ð ð ðð  ”8ð ¥D¨¬°4½¸d¹¼Ñ$DÔ$Dð ÙÝØ˜$œ) Tñô �ð —’˜i¨¨u°d´iÀÑDÔDÐDÑDð1	Eð 	ErK   )r7   r8   r9   ÚpropertyrÍ  rß  Ú__classcell__)r¯  s   @rL   rÁ  rÁ  —  sZ   ø€ € € € € Øðð ñ „Xðð Eð  Eð  Eð  Eð  Eð  Eð  Eð  Eð  ErK   rÁ  c                   ó   — e Zd Zd„ ZdS )ÚBaseGlyphRecordArrayc                 ór   ‡— t          | j        ˆfd„¬¦  «        | _        | j                             ¦   «         S )Nc                 ó8   •— ‰                      | j        ¦  «        S r…   ©rÀ   rº  ©rc  r¬   s    €rL   re   z/BaseGlyphRecordArray.preWrite.<locals>.<lambda>È  s   ø€ °$·/²/À#Ä-Ñ2PÔ2P€ rK   rk  )ro  ÚBaseGlyphRecordrì   rö  r­  s    `rL   rÜ  zBaseGlyphRecordArray.preWriteÆ  sB   ø€ Ý%ØÔ Ð&PÐ&PÐ&PÐ&Pð 
ñ  
ô  
ˆÔð Œ}×!Ò!Ñ#Ô#Ð#rK   Nr  rJ   rK   rL   rä  rä  Å  ó#   € € € € € ð$ð $ð $ð $ð $rK   rä  c                   ó   — e Zd Zd„ ZdS )r´  c                 ór   ‡— t          | j        ˆfd„¬¦  «        | _        | j                             ¦   «         S )Nc                 ó8   •— ‰                      | j        ¦  «        S r…   rç  rè  s    €rL   re   z(BaseGlyphList.preWrite.<locals>.<lambda>Ð  s   ø€ °t·²ÀsÄ}Ñ7UÔ7U€ rK   rk  )ro  rµ  rì   rö  r­  s    `rL   rÜ  zBaseGlyphList.preWriteÎ  sB   ø€ Ý$*ØÔ%Ð+UÐ+UÐ+UÐ+Uð%
ñ %
ô %
ˆÔ!ð Œ}×!Ò!Ñ#Ô#Ð#rK   Nr  rJ   rK   rL   r´  r´  Í  rê  rK   r´  c                   ó"   — e Zd ZdZdZd„ Zd„ ZdS )ÚClipBoxFormatr   r*   c                 ó   — | | j         u S r…   ©ÚVariabler‡   s    rL   Úis_variablezClipBoxFormat.is_variableÙ  s   € Ø�t”}Ð$Ð$rK   c                 ó   — | j         S r…   rñ  r‡   s    rL   Úas_variablezClipBoxFormat.as_variableÜ  s
   € ØŒ}ÐrK   N)r7   r8   r9   ÚStaticrò  ró  rõ  rJ   rK   rL   rï  rï  Õ  s<   € € € € € Ø€FØ€Hð%ð %ð %ðð ð ð ð rK   rï  c                   ó   — e Zd ZeZd„ Zd„ ZdS )ÚClipBoxc                 ó^   ‡ — t          ˆ fd„‰                      ¦   «         D ¦   «         ¦  «        S )Nc              3   óB   •K  — | ]}t          ‰|j        ¦  «        V — Œd S r…   )rÄ   rÊ   )r�   r«  rˆ   s     €rL   rž   z#ClipBox.as_tuple.<locals>.<genexpr>ä  s/   øè è € ÐOÐO°$•W˜T 4¤9Ñ-Ô-ÐOÐOÐOÐOÐOÐOrK   )r¨   r¦  r‡   s   `rL   Úas_tuplezClipBox.as_tupleã  s2   ø€ ÝÐOÐOÐOÐO¸$×:LÒ:LÑ:NÔ:NÐOÑOÔOÑOÔOÐOrK   c                 óF   — | j         j        › |                      ¦   «         › �S r…   )r¯  r7   rû  r‡   s    rL   Ú__repr__zClipBox.__repr__æ  s    € Ø”.Ô)Ð<¨4¯=ª=©?¬?Ð<Ð<Ð<rK   N)r7   r8   r9   rï  Ú
formatEnumrû  rý  rJ   rK   rL   rø  rø  à  s:   € € € € € Ø€JðPð Pð Pð=ð =ð =ð =ð =rK   rø  c                   ó6   — e Zd Zdd„Zd„ Zd„ Zd„ Zd	d„Zd„ ZdS )
r²  Nc                 ó8   — t          | d¦  «        s	i | _        d S d S )Nr»  )r¼  r»  r”   s     rL   r†   zClipList.populateDefaultsë  s)   € Ý�t˜WÑ%Ô%ð 	ØˆDŒJˆJˆJð	ð 	rK   c           	      óà  — i }|                      ¦   «         }t          |d         ¦  «        D �]9\  }}|j        |j        k    r(t                               d||j        |j        ¦  «         Œ>g }g }t          |j        |j        dz   ¦  «        D ]g}		 ||	         }
n%# t          $ r |                     |	¦  «         Y Œ-w xY w|
|vrt          j	        |j
        ¦  «        ||
<   ŒR|                     |	¦  «         Œh|r7t                               d|t          |¦  «        t          |¦  «        ¦  «         |r7t                               d|t          |¦  «        t          |¦  «        ¦  «         �Œ;|| _        d S )NÚ
ClipRecordzCinvalid ClipRecord[%i].StartGlyphID (%i) > EndGlyphID (%i); skippedr   zqClipRecord[%i] overlaps previous records; ignoring redefined clip boxes for the following glyph ID range: [%i-%i]z:ClipRecord[%i] range references missing glyph IDs: [%i-%i])r  rü   ÚStartGlyphIDÚ
EndGlyphIDrÅ  rÆ  rp  Ú
IndexErrorrÁ   rö  rø  Úminrí  r»  )rˆ   rÊ  r¬   r»  r¤   r|   rc  ÚredefinedGlyphsÚmissingGlyphsr¯   r   s              rL   rÑ  zClipList.postReadï  s«  € ØˆØ×'Ò'Ñ)Ô)ˆ
Ý ¨Ô 6Ñ7Ô7ð %	ñ %	‰FˆAˆsØÔ #¤.Ò0Ð0Ý—’ð/àØÔ$Ø”Nñô ð ð Ø ˆOØˆMÝ  Ô!1°3´>ÀAÑ3EÑFÔFð 	4ð 	4�ðØ& wÔ/�E�EøÝ!ð ð ð Ø!×(Ò(¨Ñ1Ô1Ð1Ø�Hðøøøð  Ð%Ð%Ý#'¤9¨S¬[Ñ#9Ô#9�E˜%‘L�Là#×*Ò*¨7Ñ3Ô3Ð3Ð3Øð Ý—’ð8ð Ý˜Ñ(Ô(Ý˜Ñ(Ô(ñô ð ð ð Ý—’ØSØÝ˜Ñ&Ô&Ý˜Ñ&Ô&ñ	ô ð ùð ˆŒ
ˆ
ˆ
s   ÂBÂB9Â8B9c                 ó  ‡— t          t          ¦  «        }i Š| j                             ¦   «         D ]=\  }}|                     ¦   «         }||                              |¦  «         |‰vr|‰|<   Œ>ˆfd„|                     ¦   «         D ¦   «         S )Nc                 óB   •— i | ]\  }}t          |¦  «        ‰|         “ŒS rJ   )Ú	frozenset)r�   rl  r©  ÚuniqueClipss      €rL   ú
<dictcomp>z#ClipList.groups.<locals>.<dictcomp>"  s9   ø€ ð 
ð 
ð 
Ù4?°C¸�I�fÑÔ˜{¨3Ô/ð
ð 
ð 
rK   )r   r2  r»  rª   rû  rÁ   )rˆ   ÚglyphsByCliprŒ   r¼  rl  r  s        @rL   ÚgroupszClipList.groups  s®   ø€ Ý"¥4Ñ(Ô(ˆØˆØ"&¤*×"2Ò"2Ñ"4Ô"4ð 	+ð 	+ÑˆI�wØ×"Ò"Ñ$Ô$ˆCØ˜Ô×$Ò$ YÑ/Ô/Ð/Ø˜+Ð%Ð%Ø#*�˜CÑ øð
ð 
ð 
ð 
ØCO×CUÒCUÑCWÔCWð
ñ 
ô 
ð 	
rK   c                 óð  ‡— t          | d¦  «        si | _        i }|                     ¦   «         Š|                      ¦   «                              ¦   «         D ]ª\  }}t          ˆfd„|D ¦   «         ¦  «        }|sŒ#|d         }|gg}|dd …         D ]>}||dz   k    r1|d                              |¦  «         |                     |g¦  «         |}Œ?|d                              |¦  «         |D ]\  }	}
|	|
f|vsJ ‚|||	|
f<   ŒŒ«g }t          |                     ¦   «         ¦  «        D ]@\  \  }	}
}t          ¦   «         }|	|_        |
|_	        ||_
        |                     |¦  «         ŒAt          |¦  «        |dœ}|S )Nr»  c              3   ó0   •K  — | ]}|‰v ¯‰|         V — Œd S r…   rJ   )r�   rŒ   ÚglyphMaps     €rL   rž   z$ClipList.preWrite.<locals>.<genexpr>,  s;   øè è € ð ð Ø(1¸yÈHÐ?TÐ?T�˜Ô#Ð?TÐ?TÐ?TÐ?Tðð rK   r   r   rÓ  )Ú	ClipCountr  )r¼  r»  ÚgetReverseGlyphMapr  rª   ro  rÁ   r  r  r  rø  r¦   )rˆ   r¬   ÚclipBoxRangesr©  r¼  rÚ  r}  rË  r¯   r¦  rÎ  ÚclipRecordsÚrecordrÊ  r  s                 @rL   rÜ  zClipList.preWrite&  sç  ø€ Ý�t˜WÑ%Ô%ð 	ØˆDŒJØˆØ×*Ò*Ñ,Ô,ˆØ#Ÿ{š{™}œ}×2Ò2Ñ4Ô4ð 	6ð 	6‰OˆF�GÝð ð ð ð Ø5;ðñ ô ñ ô ˆHð ð ØØ˜A”;ˆDØ�f�XˆFØ# A B Bœ<ð ð �Ø˜d Q™hÒ&Ð&Ø˜2”J×%Ò% dÑ+Ô+Ð+Ø—M’M 7 )Ñ,Ô,Ð,Ø��Ø�2ŒJ×Ò˜dÑ#Ô#Ð#Ø$ð 6ð 6‘
��sØ˜s�|¨=Ð8Ð8Ð8Ð8Ø.5�˜u c˜lÑ+Ð+ð6ð ˆÝ%+¨M×,?Ò,?Ñ,AÔ,AÑ%BÔ%Bð 	'ð 	'Ñ!‰LˆU�C˜'Ý‘\”\ˆFØ"'ˆFÔØ #ˆFÔØ$ˆFŒNØ×Ò˜vÑ&Ô&Ð&Ð&å˜[Ñ)Ô)Ø%ð
ð 
ˆð ˆrK   c                 ó¨  — |r|n| j         j        }|€g }t          | d¦  «        r|                     d| j        f¦  «         |                     ||¦  «         |                     ¦   «          t          |                      ¦   «          	                    ¦   «         d„ ¬¦  «        D �]\  }}|                     d¦  «         |                     ¦   «          t          |¦  «        D ]-}| 
                    d|¬¦  «         |                     ¦   «          Œ.|                     dd|j        fg¦  «         |                     ¦   «          |                     ||¦  «         |                     d¦  «         |                     ¦   «          |                     d¦  «         |                     ¦   «          �Œ|                     |¦  «         |                     ¦   «          d S )NrÄ  c                 ó,   — t          | d         ¦  «        S )Nr   )r  )r.  s    rL   re   z ClipList.toXML.<locals>.<lambda>T  s   € µC¸¸Q¼±L´L€ rK   rk  ÚCliprÞ  r  rø  )r¯  r7   r¼  rÁ   rÄ  rÒ   rÉ   ro  r  rª   rÈ   rß  rÓ   )	rˆ   rý   r¬   rË   rÊ   Ú	tableNamer©  r¼  rŒ   s	            rL   rÖ   zClipList.toXMLJ  sÝ  € Ø Ð=�D�D d¤nÔ&=ˆ	Øˆ=ØˆEÝ�4˜Ñ"Ô"ð 	2Ø�LŠL˜( D¤KÐ0Ñ1Ô1Ð1Ø×Ò˜9 eÑ,Ô,Ð,Ø×ÒÑÔÐå%Ø�KŠK‰MŒM×ÒÑ!Ô!Ð'@Ð'@ð 
ñ  
ô  
ð 	 ñ 	 ‰OˆF�Gð ×Ò˜vÑ&Ô&Ð&Ø×ÒÑÔÐÝ# F™^œ^ð $ð $�	Ø×#Ò# G°9Ð#Ñ=Ô=Ð=Ø×!Ò!Ñ#Ô#Ð#Ð#Ø×Ò˜y¨H°g´nÐ+EÐ*FÑGÔGÐGØ×ÒÑÔÐØ�NŠN˜9 dÑ+Ô+Ð+Ø×Ò˜YÑ'Ô'Ð'Ø×ÒÑÔÐØ×Ò˜VÑ$Ô$Ð$Ø×ÒÑÔÐÑØ×Ò˜Ñ#Ô#Ð#Ø×ÒÑÔÐÐÐrK   c                 óÆ  — t          | dd ¦  «        }|€	i x| _        }|dk    sJ ‚g }d }|D ]§}t          |t          ¦  «        sŒ|\  }}}|dk    r|                     |d         ¦  «         Œ@|dk    rat          ¦   «         }t          |d         ¦  «        |_        |D ]6}t          |t          ¦  «        sŒ|\  }}}|                     ||||¦  «         Œ7Œ¨|r
|D ]	}	|||	<   Œd S d S )Nr»  r  rÞ  r´   rø  rÄ  )	rÄ   r»  rÚ   r¨   rÁ   rø  r   rÄ  rã   )
rˆ   rÊ   rË   râ   r¬   r»  r©  r¼  ÚelemrŒ   s
             rL   rã   zClipList.fromXMLe  s<  € Ý˜˜g tÑ,Ô,ˆØˆ=Ø!#Ð#ˆDŒJ˜Ø�vŠ~ˆ~ˆ~ˆ~ØˆØˆØð 	@ð 	@ˆDÝ˜d¥EÑ*Ô*ð ØØ#'Ñ ˆD�%˜Ø�wŠˆØ—’˜e GœnÑ-Ô-Ð-Ð-Ø˜Ò"Ð"Ý!™)œ)�Ý!)¨%°¬/Ñ!:Ô!:�”Ø#ð @ð @�DÝ% d­EÑ2Ô2ð !Ø Ø+/Ñ(�D˜% Ø—O’O D¨%°¸$Ñ?Ô?Ð?Ð?øØð 	+Ø#ð +ð +�	Ø#*��iÑ Ð ð	+ð 	+ð+ð +rK   r…   r  )	r7   r8   r9   r†   rÑ  r  rÜ  rÖ   rã   rJ   rK   rL   r²  r²  ê  sz   € € € € € ðð ð ð ð)ð )ð )ðV

ð 

ð 

ð"ð "ð "ðHð ð ð ð6+ð +ð +ð +ð +rK   r²  c                   ó   — e Zd ZdZdZdZdS )Ú
ExtendModer   r   r*   N)r7   r8   r9   ÚPADÚREPEATÚREFLECTrJ   rK   rL   r  r    s   € € € € € Ø
€CØ€FØ€G€G€GrK   r  c                   ó~   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdS )ÚCompositeModer   r   r*   rl   r+   rz   r$  r%  r,   r&  rT   r'  rR   r(  rš   r)  r-   é   é   é   é   é   é   é   ry   é   é   é   N)r7   r8   r9   ÚCLEARÚSRCÚDESTÚSRC_OVERÚ	DEST_OVERÚSRC_INÚDEST_INÚSRC_OUTÚDEST_OUTÚSRC_ATOPÚ	DEST_ATOPÚXORÚPLUSÚSCREENÚOVERLAYÚDARKENÚLIGHTENÚCOLOR_DODGEÚ
COLOR_BURNÚ
HARD_LIGHTÚ
SOFT_LIGHTÚ
DIFFERENCEÚ	EXCLUSIONÚMULTIPLYÚHSL_HUEÚHSL_SATURATIONÚ	HSL_COLORÚHSL_LUMINOSITYrJ   rK   rL   r$  r$  ‡  sš   € € € € € Ø€EØ
€CØ€DØ€HØ€IØ€FØ€GØ€GØ€HØ€HØ€IØ
€CØ€DØ€FØ€GØ€FØ€GØ€KØ€JØ€JØ€JØ€JØ€IØ€HØ€GØ€NØ€IØ€N€N€NrK   r$  c                   óš   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!„ Z#d"„ Z$d#S )$ÚPaintFormatr   r*   rl   r+   rz   r$  r%  r,   r&  rT   r'  rR   r(  rš   r)  r-   r%  r&  r'  r(  r)  r*  r+  ry   r,  r-  r.  é   é   é   r™  r.   c                 ó6   — | j                              d¦  «        S )NÚPaintVar)rÊ   Ú
startswithr‡   s    rL   ró  zPaintFormat.is_variableÈ  s   € ØŒy×#Ò# JÑ/Ô/Ð/rK   c                 ó–   — |                       ¦   «         r| S 	 t          j        d| j        dd …         › �         S # t          $ r Y d S w xY w)NrQ  rz   )ró  rL  Ú__members__rÊ   ÚKeyErrorr‡   s    rL   rõ  zPaintFormat.as_variableË  sc   € Ø×ÒÑÔð 	ØˆKð	ÝÔ*Ð+E°d´iÀÀÀ´mÐ+EÐ+EÔFÐFøÝð 	ð 	ð 	Ø�4�4ð	øøøs   ˜!: º
AÁAN)%r7   r8   r9   ÚPaintColrLayersÚ
PaintSolidÚPaintVarSolidÚPaintLinearGradientÚPaintVarLinearGradientÚPaintRadialGradientÚPaintVarRadialGradientÚPaintSweepGradientÚPaintVarSweepGradientÚ
PaintGlyphÚPaintColrGlyphÚPaintTransformÚPaintVarTransformÚPaintTranslateÚPaintVarTranslateÚ
PaintScaleÚPaintVarScaleÚPaintScaleAroundCenterÚPaintVarScaleAroundCenterÚPaintScaleUniformÚPaintVarScaleUniformÚPaintScaleUniformAroundCenterÚ PaintVarScaleUniformAroundCenterÚPaintRotateÚPaintVarRotateÚPaintRotateAroundCenterÚPaintVarRotateAroundCenterÚ	PaintSkewÚPaintVarSkewÚPaintSkewAroundCenterÚPaintVarSkewAroundCenterÚPaintCompositeró  rõ  rJ   rK   rL   rL  rL  ¦  sä   € € € € € Ø€OØ€JØ€MØÐØÐØÐØÐØÐØÐØ€JØ€NØ€NØÐØ€NØÐØ€JØ€MØÐØ "ÐØÐØÐØ$&Ð!Ø')Ð$Ø€KØ€NØ ÐØ!#ÐØ€IØ€LØÐØ!ÐØ€Nð0ð 0ð 0ðð ð ð ð rK   rL  c            
       óž   — e Zd ZeZd„ Zdd„Zdedee	j
                 fd„Zded          fd„Zdefd„Zdefd	„Z	 ddedddedee         fd„ZdS )r¶  c                 óŒ   — 	 |                       | j        ¦  «        j        S # t          $ r t	          d| j        › �¦  «        ‚w xY w)NzUnknown Paint format: )rþ  rÄ  rÊ   rÊ  ÚNotImplementedErrorr‡   s    rL   ÚgetFormatNamezPaint.getFormatName×  sW   € ð	NØ—?’? 4¤;Ñ/Ô/Ô4Ð4øÝð 	Nð 	Nð 	NÝ%Ð&L¸t¼{Ð&LÐ&LÑMÔMÐMð	Nøøøs	   ‚! ¡"ANc                 ó†  — |r|n| j         j        }|€g }|                     d| j        f¦  «         |                     ||¦  «         |                     |                      ¦   «         ¦  «         |                     ¦   «          |                      ||¦  «         | 	                    |¦  «         |                     ¦   «          d S )NrÄ  )
r¯  r7   rÁ   rÄ  rÒ   r:  ry  rÉ   rß  rÓ   )rˆ   rý   r¬   rË   rÊ   r  s         rL   rÖ   zPaint.toXMLÝ  sÀ   € Ø Ð=�D�D d¤nÔ&=ˆ	Øˆ=ØˆEØ�Š�h ¤Ð,Ñ-Ô-Ð-Ø×Ò˜9 eÑ,Ô,Ð,Ø×Ò˜$×,Ò,Ñ.Ô.Ñ/Ô/Ð/Ø×ÒÑÔÐØ�Š�I˜tÑ$Ô$Ð$Ø×Ò˜Ñ#Ô#Ð#Ø×ÒÑÔÐÐÐrK   ÚcolrÚreturnc              #   óŽ  K  — | j         t          j        k    rPg }|j        �|j        j        }d„ t          || j        | j        | j        z   …         ¦  «        D ¦   «         E d {V —† d S | j         t          j        k    rV|j	        j
        D ]2}|j        | j        k    r t          j        d|j        ¬¦  «        V —  d S Œ3t          | j        ›d�¦  «        ‚|                      ¦   «         D ]]}|j        �Tt%          |j        t'          | ¦  «        ¦  «        r2t)          | |j        ¦  «        }t          j        |j        |¬¦  «        V — Œ^d S )Nc              3   óJ   K  — | ]\  }}t          j        d ||¬¦  «        V — ŒdS )ÚLayers)rÊ   r´   rû   N)r   ÚSubTableEntry)r�   r|   rd   s      rL   rž   z+Paint.iterPaintSubTables.<locals>.<genexpr>ï  sL   è è € ð ð á�A�qõ Ô'¨X¸QÀaÐHÑHÔHðð ð ð ð ð rK   rº  )rÊ   r´   z not in colr.BaseGlyphList)rÄ  rL  rV  Ú	LayerListr¶  rü   ÚFirstLayerIndexÚ	NumLayersr`  r´  rµ  rº  rÞ  r   r€  rU  r¦  Ú
tableClassÚ
issubclassrê   rÄ   rÊ   )rˆ   r{  Úlayersr  r«  r´   s         rL   ÚiterPaintSubTableszPaint.iterPaintSubTablesé  sŒ  è è € ØŒ;�+Ô5Ò5Ð5àˆFØŒ~Ð)ØœÔ-�ðð å%Ø˜4Ô/°$Ô2FÈÌÑ2WÐWÔXñô ðñ ô ð ð ð ð ð ð ð ð ˆFàŒ;�+Ô4Ò4Ð4ØÔ,ÔAð Lð L�ØÔ# t¤zÒ1Ð1Ý#Ô1°{È&Ì,ÐWÑWÔWÐWÐWÐWØ�F�Fð 2õ  $¤*ÐJÐJÐJÑKÔKÐKà×&Ò&Ñ(Ô(ð 	Kð 	KˆDØŒÐ*­z¸$¼/Í4ÐPTÉ:Ì:Ñ/VÔ/VÐ*Ý  d¤iÑ0Ô0�ÝÔ-°4´9ÀEÐJÑJÔJÐJÐJÐJøð	Kð 	KrK   c                 ó@   — d„ |                       |¦  «        D ¦   «         S )Nc                 ó   — g | ]	}|j         ‘Œ
S rJ   r  )r�   Úps     rL   r½   z%Paint.getChildren.<locals>.<listcomp>  s   € Ð?Ð?Ð?˜A�”Ð?Ð?Ð?rK   ©r‡  )rˆ   r{  s     rL   ÚgetChildrenzPaint.getChildren  s$   € à?Ð? ×!8Ò!8¸Ñ!>Ô!>Ð?Ñ?Ô?Ð?rK   c                 ó¢   ‡— t          |¦  «        st          d¦  «        ‚t          | ˆfd„¬¦  «        D ]}|d         j        } ||¦  «         ŒdS )zEDepth-first traversal of graph rooted at self, callback on each node.zcallback must be callablec                 ó.   •— |                       ‰¦  «        S r…   r‹  ©Úpaintr{  s    €rL   re   z Paint.traverse.<locals>.<lambda>  ó   ø€ °%×2JÒ2JÈ4Ñ2PÔ2P€ rK   ©Úiter_subtables_fnrÓ  N)ÚcallableÚ	TypeErrorr	   r´   )rˆ   r{  ÚcallbackÚpathr�  s    `   rL   ÚtraversezPaint.traverse  su   ø€ å˜Ñ!Ô!ð 	9ÝÐ7Ñ8Ô8Ð8å"ØÐ$PÐ$PÐ$PÐ$Pð
ñ 
ô 
ð 	ð 	ˆDð ˜”H”NˆEØˆH�U‰OŒOˆOˆOð		ð 	rK   c                 ó.  — | j         t          j        k    r9| j        }t          |j        |j        |j        |j        |j        |j	        ¦  «        S | j         t          j
        k    rt          j        | j        | j	        ¦  «        S | j         t          j        k    rt          j        | j        | j        ¦  «        S | j         t          j        k    r]t          j        | j        | j        ¦  «                             | j        | j        ¦  «                             | j         | j         ¦  «        S | j         t          j        k    rt          j        | j        ¦  «        S | j         t          j        k    rWt          j        | j        | j        ¦  «                             | j        ¦  «                             | j         | j         ¦  «        S | j         t          j        k    r&t          j        t1          | j        ¦  «        ¦  «        S | j         t          j        k    rdt          j        | j        | j        ¦  «                             t1          | j        ¦  «        ¦  «                             | j         | j         ¦  «        S | j         t          j        k    r:t          j        t1          | j         ¦  «        t1          | j        ¦  «        ¦  «        S | j         t          j        k    rxt          j        | j        | j        ¦  «                             t1          | j         ¦  «        t1          | j        ¦  «        ¦  «                             | j         | j         ¦  «        S t          | j         ¦  «                              ¦   «         rtC          d| j         › �¦  «        ‚t          S )NzVariable Paints not supported: )"rÄ  rL  ra  r   ÚxxÚyxÚxyÚyyÚdxÚdyrc  r   Ú	translatere  rP   rX   rY   rg  ÚcenterXÚcenterYri  rk  rm  Úrotater   Úanglero  rq  ÚskewÚ
xSkewAngleÚ
ySkewAnglers  ró  rx  )rˆ   r?  s     rL   ÚgetTransformzPaint.getTransform  s³  € ØŒ;�+Ô4Ò4Ð4Ø”ˆAÝ˜QœT 1¤4¨¬¨q¬t°Q´T¸1¼4Ñ@Ô@Ð@ØŒ[�KÔ6Ò6Ð6ÝÔ% d¤g¨t¬wÑ7Ô7Ð7ØŒ[�KÔ2Ò2Ð2Ý”> $¤+¨t¬{Ñ;Ô;Ð;ØŒ[�KÔ>Ò>Ð>åÔ" 4¤<°´Ñ>Ô>ß’�t”{ D¤KÑ0Ô0ß’˜DœL˜=¨4¬<¨-Ñ8Ô8ðð
 Œ[�KÔ9Ò9Ð9Ý”> $¤*Ñ-Ô-Ð-ØŒ[�KÔEÒEÐEåÔ" 4¤<°´Ñ>Ô>ß’�t”zÑ"Ô"ß’˜DœL˜=¨4¬<¨-Ñ8Ô8ðð
 Œ[�KÔ3Ò3Ð3Ý”?¥7¨4¬:Ñ#6Ô#6Ñ7Ô7Ð7ØŒ[�KÔ?Ò?Ð?åÔ" 4¤<°´Ñ>Ô>ß’� ¤
Ñ+Ô+Ñ,Ô,ß’˜DœL˜=¨4¬<¨-Ñ8Ô8ðð
 Œ[�KÔ1Ò1Ð1Ý”=¥¨$¬/Ð)9Ñ!:Ô!:½GÀDÄOÑ<TÔ<TÑUÔUÐUØŒ[�KÔ=Ò=Ð=åÔ" 4¤<°´Ñ>Ô>ß’•g˜tœÐ.Ñ/Ô/µ¸¼Ñ1IÔ1IÑJÔJß’˜DœL˜=¨4¬<¨-Ñ8Ô8ðõ
 �t”{Ñ#Ô#×/Ò/Ñ1Ô1ð 	WÝ%Ð&UÈÌÐ&UÐ&UÑVÔVÐVåˆrK   r   r®  r'   r¯  c                 ó  ‡— t          |¦  «        }t          | ˆfd„¬¦  «        D ]|}|d         j        }|j        t          j        k    rXt          t          j        d„ |D ¦   «         t          ¦  «        }||j
                                      t          ||¦  «        ¦  «         Œ}|j        €d S t          ¦   «         }t          t           j        ¦  «        |_        t%          |j        |¦  «        \  |_        |_        |_        |_        |S )Nc                 ó.   •— |                       ‰¦  «        S r…   r‹  r�  s    €rL   re   z&Paint.computeClipBox.<locals>.<lambda>C  r‘  rK   r’  rÓ  c              3   óH   K  — | ]}|j                              ¦   «         V — Œd S r…   )r´   r¨  )r�   rÌ  s     rL   rž   z'Paint.computeClipBox.<locals>.<genexpr>I  s0   è è € Ð<Ð<°�R”X×*Ò*Ñ,Ô,Ð<Ð<Ð<Ð<Ð<Ð<rK   )r   r	   r´   rÄ  rL  r_  r   r   r“   r   rÞ  Údrawr   Úboundsrø  rN  rï  rö  r
   ÚxMinÚyMinÚxMaxÚyMax)	rˆ   r{  r®  r¯  Úpenr—  r�  ÚtransformationÚcbs	    `       rL   r·  zPaint.computeClipBox>  sþ   ø€ õ ˜xÑ(Ô(ˆÝ"ØÐ$PÐ$PÐ$PÐ$Pð
ñ 
ô 
ð 
	Nð 
	NˆDð ˜”H”NˆEØŒ|�{Ô5Ò5Ð5Ý!'ÝÔ'Ø<Ð<°tÐ<Ñ<Ô<Ýñ"ô "�ð
 ˜œÔ%×*Ò*­<¸¸^Ñ+LÔ+LÑMÔMÐMøàŒ:ÐØ�4å‰YŒYˆÝ�Ô,Ñ-Ô-ˆŒ	Ý-9¸#¼*ÀlÑ-SÔ-SÑ*ˆŒ�”˜"œ' 2¤7Øˆ	rK   r  r1  )r7   r8   r9   rL  rþ  ry  rÖ   r¡  r#   r   r€  r‡  r$   rŒ  r˜  r   r¨  rN  r%   rø  r·  rJ   rK   rL   r¶  r¶  Ô  s  € € € € € Ø€JðNð Nð Nð
ð 
ð 
ð 
ðK tð K°¸Ô9PÔ0Qð Kð Kð Kð Kð6@ 4¨¤=ð @ð @ð @ð @ð	˜Tð 	ð 	ð 	ð 	ð)˜ið )ð )ð )ð )ðX HIðð ØðØ$1ðØADðà	�'Ô	ðð ð ð ð ð rK   r¶  )Ú
Mark1Array)ÚDefaultLangSys)ÚMarkCoverageÚBaseCoverageÚLigatureCoverageÚMark1CoverageÚMark2CoverageÚBacktrackCoverageÚInputCoverageÚLookAheadCoverageÚVertGlyphCoverageÚHorizGlyphCoverageÚTopAccentCoverageÚExtendedShapeCoverageÚMathKernCoverage)Ú	ClassDef1Ú	ClassDef2ÚBacktrackClassDefÚInputClassDefÚLookAheadClassDefÚGlyphClassDefÚMarkAttachClassDef)ÚEntryAnchorÚ
ExitAnchorÚ
BaseAnchorÚLigatureAnchorÚMark2AnchorÚ
MarkAnchor)Ú
XPlaDeviceÚ
YPlaDeviceÚ
XAdvDeviceÚ
YAdvDeviceÚXDeviceTableÚYDeviceTableÚDeviceTable)Ú	HorizAxisÚVertAxis)ÚDefaultMinMax)ÚMinCoordÚMaxCoord)ÚDefJstfLangSys)ÚShrinkageEnableGSUBÚShrinkageDisableGSUBÚExtensionEnableGSUBÚExtensionDisableGSUB)ÚShrinkageEnableGPOSÚShrinkageDisableGPOSÚExtensionEnableGPOSÚExtensionDisableGPOS)ÚShrinkageJstfMaxÚExtensionJstfMax)ÚTopRightMathKernÚTopLeftMathKernÚBottomRightMathKernÚBottomLeftMathKern)ÚVertGlyphConstructionÚHorizGlyphConstruction)Ú	MarkArrayÚLangSysrº  rV  ÚAnchorÚDeviceÚAxisÚMinMaxÚ	BaseCoordÚJstfLangSysÚJstfGSUBModListÚJstfGPOSModListÚJstfMaxÚMathKernÚMathGlyphConstructionc                 ó¢  — d}|j         }|j        €|dz
  }|dk     r|S |j        dk    rd}n|j        dk    rd}| |j                 j        j        j        }||         }|j        d         j        j        |k    r0|dz
  }|dk     r|S ||         }|j        d         j        j        |k    °0t          |t          |¦  «        ¦  «        D ]‡}||         }|j        |k    rr||_        t          t          |j        ¦  «        ¦  «        D ]I}|j        |         }t          |j                 |         }	 |	¦   «         }
d|
_        ||
_        |
|j        |<   ŒJŒˆd}|S )a#  Either the offset from the LookupList to a lookup overflowed, or
    an offset from a lookup to a subtable overflowed.

    The table layout is::

      GPSO/GUSB
              Script List
              Feature List
              LookUpList
                      Lookup[0] and contents
                              SubTable offset list
                                      SubTable[0] and contents
                                      ...
                                      SubTable[n] and contents
                      ...
                      Lookup[n] and contents
                              SubTable offset list
                                      SubTable[0] and contents
                                      ...
                                      SubTable[n] and contents

    If the offset to a lookup overflowed (SubTableIndex is None)
            we must promote the *previous* lookup to an Extension type.

    If the offset from a lookup to subtable overflowed, then we must promote it
            to an Extension Lookup type.
    r   Nr   rÄ  r%  rÆ  r&  )ÚLookupListIndexÚSubTableIndexÚ	tableTyperÍ  rÁ  rÇ  rÈ  r¯  Ú
LookupTyperp  r¦   ÚlookupTypesrÄ  ÚExtSubTable)ÚttfÚoverflowRecordÚokrÜ  ÚextTypeÚlookupsÚlookupÚsiÚsubTableÚextSubTableClassÚextSubTables              rL   ÚfixLookupOverFlowsr  ²  s…  € ð8 
€BØ Ô0€KØÔ#Ð+Ø! A‘oˆØ�Q‚€Øˆ	ØÔ 6Ò)Ð)ØˆˆØ	Ô	! VÒ	+Ð	+Øˆà�.Ô*Ô+Ô1Ô<ÔC€GØ�[Ô!€Fà
Œ/˜!Ô
Ô
&Ô
1°WÒ
<Ð
<Ø! A‘oˆØ˜Š?ˆ?ØˆIØ˜Ô%ˆð	 Œ/˜!Ô
Ô
&Ô
1°WÒ
<Ð
<õ ˜[­#¨g©,¬,Ñ7Ô7ð 
2ð 
2ˆØ˜Ô%ˆØÔ Ò'Ð'Ø 'ˆFÔÝ�C ¤Ñ0Ô0Ñ1Ô1ð 2ð 2�Ø!œ?¨2Ô.�Ý#.¨~Ô/GÔ#HÈÔ#QÐ Ø.Ð.Ñ0Ô0�Ø%&�Ô"Ø*2�Ô'Ø&1�” Ñ#Ð#øØ	
€BØ€IrK   c                 ó@  — d}t          | j                             ¦   «         ¦  «        }t          |¦  «        }|j        dv r|dz  }n|j        dk    r
|j        dz
  }i |_        t          ||¦  «        D ]*}||         }|d         }	|d         |j        |	<   | j        |	= Œ+|S )Nr   ©rº  r¿  r*   rD  r   )ro  rÕ   rª   r¦   ÚitemNameÚ	itemIndexrp  )
ÚoldSubTableÚnewSubTabler  r  Ú
oldMappingÚoldLenÚnewLenr|   r.  rl  s
             rL   ÚsplitMultipleSubstr  ñ  s¾   € Ø	
€BÝ˜Ô+×1Ò1Ñ3Ô3Ñ4Ô4€JÝ�‰_Œ_€FàÔÐ"=Ð=Ð=ð ˜1‘ˆˆà	Ô	  JÒ	.Ð	.ð  Ô)¨AÑ-ˆà€KÔÝ�6˜6Ñ"Ô"ð %ð %ˆØ˜!Œ}ˆØ�1ŒgˆØ#'¨¤7ˆÔ˜CÑ ØÔ Ð$Ð$à€IrK   c                 óx  — d}t          | d¦  «        r| j        |_        t          | j                             ¦   «         ¦  «        }t          |¦  «        }|j        dv r|dz  }n|j        dk    r
|j        dz
  }i |_        t          ||¦  «        D ]*}||         }|d         }	|d         |j        |	<   | j        |	= Œ+|S )Nr   r‚  r  r*   rx  r   )	r¼  r‚  ro  rv  rª   r¦   r  r  rp  )
r  r  r  r  ÚoldAltsr  r  r|   r.  rl  s
             rL   ÚsplitAlternateSubstr  	  sÝ   € Ø	
€BÝˆ{Ð.Ñ/Ô/ð DØ'2Ô'CˆÔ$å�[Ô+×1Ò1Ñ3Ô3Ñ4Ô4€GÝ�‰\Œ\€FàÔÐ"=Ð=Ð=ð ˜1‘ˆˆà	Ô	  NÒ	2Ð	2ð  Ô)¨AÑ-ˆà€KÔÝ�6˜6Ñ"Ô"ð (ð (ˆØ�qŒzˆØ�1ŒgˆØ&*¨1¤gˆÔ˜sÑ#ØÔ" 3Ð'Ð'à€IrK   c                 ó@  — d}t          | j                             ¦   «         ¦  «        }t          |¦  «        }|j        dv r|dz  }n|j        dk    r
|j        dz
  }i |_        t          ||¦  «        D ]*}||         }|d         }	|d         |j        |	<   | j        |	= Œ+|S )Nr   r  r*   r‹  r   )ro  r‰  rª   r¦   r  r  rp  )
r  r  r  r  ÚoldLigsr  r  r|   r.  rl  s
             rL   ÚsplitLigatureSubstr  (	  s¾   € Ø	
€BÝ�[Ô*×0Ò0Ñ2Ô2Ñ3Ô3€GÝ�‰\Œ\€FàÔÐ"=Ð=Ð=ð ˜1‘ˆˆà	Ô	  MÒ	1Ð	1ð  Ô)¨AÑ-ˆà€KÔÝ�6˜6Ñ"Ô"ð 'ð 'ˆØ�qŒzˆØ�1ŒgˆØ%)¨!¤WˆÔ˜cÑ"ØÔ! #Ð&Ð&à€IrK   c           	      ó4  ‡	‡
— | }d}| j         |_         | j         dk    �r t          | j        ¦  «        dk    rèdD ]!}t          ||t	          | |¦  «        ¦  «         Œ"| j                             ¦   «         |_        | j        j        }| j        }t          | j        ¦  «        dz  Š
|d ‰
…         | j        _        |d ‰
…         | _        |‰
d …         |j        _        |‰
d …         |_        t          | j        ¦  «        | _        t          |j        ¦  «        |_        d}�nù| j         dk    �rít          | j	        ¦  «        dk    �rÔt          | d¦  «        s$t          | j	        d         j        ¦  «        | _        dD ]!}t          ||t	          | |¦  «        ¦  «         Œ"d| _        | j                             ¦   «         |_        | j                             ¦   «         |_        | j        j        }| j        j        }| j	        }t          | j	        ¦  «        dz  Š
t!          ˆ
fd	„|                     ¦   «         D ¦   «         ¦  «        Š	ˆ	fd
„|D ¦   «         | j        _        ˆ
fd„|                     ¦   «         D ¦   «         | j        _        |d ‰
…         | _	        ˆ	fd„|D ¦   «         |j        _        ˆ
fd„|                     ¦   «         D ¦   «         |j        _        |‰
d …         |_	        t          | j	        ¦  «        | _        t          |j	        ¦  «        |_        d}|S )NFr   )ÚValueFormat1ÚValueFormat2r*   TÚClass2Countr   )r   rÅ  r  r  c              3   ó.   •K  — | ]\  }}|‰k    ¯|V — Œd S r…   rJ   ©r�   Úkrd   ÚoldCounts      €rL   rž   zsplitPairPos.<locals>.<genexpr>s	  s+   øè è € ÐIÐI™d˜a ¸1Àº=¸=˜¸=¸=¸=¸=ÐIÐIrK   c                 ó   •— g | ]}|‰v¯|‘Œ	S rJ   rJ   ©r�   r¡  Ú	newGlyphss     €rL   r½   z splitPairPos.<locals>.<listcomp>u	  s#   ø€ Ð&QÐ&QÐ&Q¨Q¸aÀyÐ>PÐ>P qÐ>PÐ>PÐ>PrK   c                 ó(   •— i | ]\  }}|‰k     ¯||“ŒS rJ   rJ   r"  s      €rL   r  z splitPairPos.<locals>.<dictcomp>v	  s+   ø€ ð +
ð +
ð +
Ù�Q˜°!°h²,°,ˆAˆq°,°,°,rK   c                 ó   •— g | ]}|‰v ¯|‘Œ	S rJ   rJ   r&  s     €rL   r½   z splitPairPos.<locals>.<listcomp>{	  s   ø€ Ð&MÐ&MÐ&M¨Q¸aÀ9¸n¸n q¸n¸n¸nrK   c                 ó.   •— i | ]\  }}|‰k    ¯||‰z
  “ŒS rJ   rJ   r"  s      €rL   r  z splitPairPos.<locals>.<dictcomp>|	  s/   ø€ ð +
ð +
ð +
Ù"& ! Q¸qÀ8º|¸|ˆA��H‘¸|¸|¸|rK   )rÄ  r¦   ÚPairSetr«   rÄ   rº  r¯  r©  ÚPairSetCountÚClass1Recordr¼  ÚClass2Recordr   Ú	DontSharerÄ  rX  rm  rª   ÚClass1Count)r  r  r  rÌ  r  rÊ   Úcoveragerb  rX  r'  r$  s            @@rL   ÚsplitPairPosr2  B	  sB  øø€ Ø	€BØ	€BØ$Ô+€KÔØÔ˜QÒÑ¥3 {Ô':Ñ#;Ô#;¸aÒ#?Ð#?Ø2ð 	Cð 	CˆDÝ�K ¥w¨{¸DÑ'AÔ'AÑBÔBÐBÐBð  +Ô3×=Ò=Ñ?Ô?ˆÔàÔ'Ô.ˆØÔ%ˆå�{Ô*Ñ+Ô+¨qÑ0ˆà&.¨y°¨yÔ&9ˆÔÔ#Ø% i x iÔ0ˆÔà&.¨x¨y¨yÔ&9ˆÔÔ#Ø% h i iÔ0ˆÔå#& {Ô':Ñ#;Ô#;ˆÔ Ý#& {Ô':Ñ#;Ô#;ˆÔ àˆ‰à	Ô	˜qÒ	 Ñ	 ¥S¨Ô)AÑ%BÔ%BÀQÒ%FÑ%FÝ�{ MÑ2Ô2ð 	TÝ&)¨+Ô*BÀ1Ô*EÔ*RÑ&SÔ&SˆKÔ#ØNð 	Cð 	CˆDÝ�K ¥w¨{¸DÑ'AÔ'AÑBÔBÐBÐBð
 !%ˆÔð  +Ô3×=Ò=Ñ?Ô?ˆÔØ +Ô 5× ?Ò ?Ñ AÔ AˆÔàÔ'Ô.ˆØÔ)Ô3ˆ	ØÔ*ˆå�{Ô/Ñ0Ô0°AÑ5ˆÝÐIÐIÐIÐI i§o¢oÑ&7Ô&7ÐIÑIÔIÑIÔIˆ	à&QÐ&QÐ&QÐ&Q°(Ð&QÑ&QÔ&QˆÔÔ#ð+
ð +
ð +
ð +
Ø&Ÿ_š_Ñ.Ô.ð+
ñ +
ô +
ˆÔÔ'ð $+¨9¨H¨9Ô#5ˆÔ à&MÐ&MÐ&MÐ&M°(Ð&MÑ&MÔ&MˆÔÔ#ð+
ð +
ð +
ð +
Ø*3¯/ª/Ñ*;Ô*;ð+
ñ +
ô +
ˆÔÔ'ð $+¨8¨9¨9Ô#5ˆÔ å"% kÔ&>Ñ"?Ô"?ˆÔÝ"% kÔ&>Ñ"?Ô"?ˆÔàˆà€IrK   c                 óî  — | j         }|dk     rdS |dz  }||z
  }g g }}g g }	}t          | j        j        | j        j        ¦  «        D ]u\  }
}|j        |k     r+|                     |
¦  «         |                     |¦  «         Œ;|xj        |z  c_        |                     |
¦  «         |	                     |¦  «         Œvg g }}| j        j	        D ]|}| 
                    ¦   «         | 
                    ¦   «         }}|j        d |…         |_        |j        |d …         |_        |                     |¦  «         |                     |¦  «         Œ}| j        |_        || j        _        | j         
                    ¦   «         |_        ||j        _        | j        |_        || _         ||_         || j        _        | j         
                    ¦   «         |_        |	|j        _        t          |¦  «        | j        _        t          |	¦  «        |j        _        || j        _	        | j         
                    ¦   «         |_        ||j        _	        t          |¦  «        | j        _        t          |¦  «        |j        _        dS )Nr*   FT)Ú
ClassCountr  r·  r©  rî  Ú
MarkRecordr^  rÁ   Ú	BaseArrayÚ
BaseRecordr¯  rÍ  rÄ  r¸  r¦   Ú	MarkCountÚ	BaseCount)r  r  r  Ú
classCountÚoldClassCountÚnewClassCountÚoldMarkCoverageÚoldMarkRecordsÚnewMarkCoverageÚnewMarkRecordsrŒ   Ú
markRecordÚoldBaseRecordsÚnewBaseRecordsrc  ÚoldBaseRecordÚnewBaseRecords                    rL   ÚsplitMarkBasePosrF  ‰	  sn  € àÔ'€JØ�A‚~€~àˆuà !‘O€MØ Ñ.€Mà&(¨"�^€OØ&(¨"�^€OÝ!$ØÔ Ô'¨Ô)>Ô)Iñ"ô "ð 	.ð 	.Ñˆ	�:ð Ô˜mÒ+Ð+Ø×"Ò" 9Ñ-Ô-Ð-Ø×!Ò! *Ñ-Ô-Ð-Ð-àÐÔ Ñ-ÐÔØ×"Ò" 9Ñ-Ô-Ð-Ø×!Ò! *Ñ-Ô-Ð-Ð-à%'¨�N€NØÔ$Ô/ð -ð -ˆØ'*§}¢}¡¤¸¿º¹¼�}ˆØ#&¤>°.°=°.Ô#AˆÔ Ø#&¤>°-°.°.Ô#AˆÔ Ø×Ò˜mÑ,Ô,Ð,Ø×Ò˜mÑ,Ô,Ð,Ð,à$Ô+€KÔà&5€KÔÔ#Ø*Ô7×AÒAÑCÔC€KÔØ&5€KÔÔ#ð  +Ô7€KÔà*€KÔØ*€KÔà'5€KÔÔ$Ø'Ô1×;Ò;Ñ=Ô=€KÔØ'5€KÔÔ$å&)¨.Ñ&9Ô&9€KÔÔ#Ý&)¨.Ñ&9Ô&9€KÔÔ#à'5€KÔÔ$Ø'Ô1×;Ò;Ñ=Ô=€KÔØ'5€KÔÔ$å&)¨.Ñ&9Ô&9€KÔÔ#Ý&)¨.Ñ&9Ô&9€KÔÔ#àˆ4rK   )r*   rl   r+   )r*   r+   ©rÄ  rÆ  c                 ó^  — | |j                  j        }|j        j        |j                 }|j        }|j        |         }t          |d¦  «        s	d|_        dS t          |d¦  «        r~|j	        j
        j        }|}|j	        }t          |j                  |j
        j                 } |¦   «         }	|j        |	_        |	}
t          |j                  |         } |¦   «         }||	_	        n0|j
        j        }t          |j                  |         } |¦   «         }|}
t          |d¦  «        r|j        dz   |_        	 t          |j                  |         }n2# t           $ r% t"                               d|j         |¦  «         Y dS w xY w ||||¦  «        }|r|j                             |dz   |
¦  «         |S )zj
    An offset has overflowed within a sub-table. We need to divide this subtable into smaller parts.
    r/  Tr  ÚSubTableCountr   z)Don't know how to split %s lookup type %sF)rþ  rÍ  rÁ  rÇ  rü  rý  rÈ  r¼  r/  r  r¯  rÿ  r   rÄ  rI  Ú
splitTablerU  rÅ  Úerrorrü  )r  r  rÍ  r  ÚsubIndexÚsubtableÚsubTableTyper  ÚnewExtSubTableClassÚnewExtSubTableÚtoInsertÚnewSubTableClassr  Ú	splitFuncr  s                  rL   ÚfixSubTableOverFlowsrT  Þ	  sã  € ð �Ô(Ô)Ô/€EØÔÔ$ ^Ô%CÔD€FØÔ+€HØŒ˜xÔ(€Hõ �8˜[Ñ)Ô)ð Ø!ˆÔØˆtåˆx˜Ñ'Ô'ð ð  Ô+Ô5Ô@ˆØˆØÔ*ˆÝ)¨.Ô*BÔCØÔ!Ô,ô
Ðð -Ð,Ñ.Ô.ˆØ +Ô 2ˆÔØ!ˆå& ~Ô'?Ô@ÀÔNÐØ&Ð&Ñ(Ô(ˆØ%0ˆÔ"Ð"àÔ)Ô4ˆÝ& ~Ô'?Ô@ÀÔNÐØ&Ð&Ñ(Ô(ˆØˆåˆv�Ñ'Ô'ð 8Ø%Ô3°aÑ7ˆÔðÝ˜~Ô7Ô8¸ÔFˆ	ˆ	øÝð ð ð Ý�	Š	Ø7ØÔ$Øñ	
ô 	
ð 	
ð
 ˆuˆuðøøøð 
ˆ�8˜[¨.Ñ	9Ô	9€BØ	ð 7ØŒ×Ò˜x¨!™|¨XÑ6Ô6Ð6Ø€Is   Ä5E Å+E=Å<E=c                  ór  — dd l } ddlm} |                      d¦  «        }t          ¦   «         }|D ]{\  }}t          }|                     |¦  «        }|r2|                     d¦  «        }|d         d         }t          |¦  «        }||vr"t          ||fi ¦  «        }	|dv rd|	_	        |	||<   Œ||D ]_\  }}
| 
                    d¦  «        rEt          |¦  «        dk    r2|dd …         |v r&||         }||dd …                  }||_        ||_        Œ`t                               ¦   «         D ]\  }}||         }|D ]}|||<   ŒŒt           t"          t$          t&          t(          t*          t,          t.          d	œt0          t2          t4          t6          t8          t:          t<          t>          t@          d
œ	dtB          itD          tF          tH          tB          tJ          dœdœa&tL          d         tL          d<   tL           '                    ¦   «         D ]#}|                     ¦   «         D ]\  }}	||	_(        ŒŒ$dtR          ia*tW          dd¦  «        D ]}tX          tT          d|z  <   ŒtW          dd¦  «        D ]}tZ          tT          d|z  <   Œddl.m/} |D ]µ\  }}|                     |¦  «        }|rx| 0                    ¦   «         \  }}tc          |¦  «        }||         }	te          |	d¦  «        si |	_3        i |	_4         ||dd …         |¦  «        \  }}||	j3        |<   ||	j4        |<   Œ”||         }	 |||¦  «        \  |	_3        |	_4        Œ¶d S )Nr   r   )ÚotDataz([A-Za-z0-9]+)Format(\d+)$rG  TÚVarrl   )r   r*   rl   r+   rz   r$  r%  r,   )	r   r*   rl   r+   rz   r$  r%  r,   r&  r+   )r   r   r*   r+   rz   )rÄ  rÆ  ÚmortÚmorxrÆ  ÚJSTFÚsizer)  zss%02déd   zcv%02d)ÚbuildConvertersÚ
converters)5ÚrerV  rÅ   Úglobalsr   ÚmatchÚgroupr   rê   r/  rR  r¦   Ú	NoVarTypeÚVarTypeÚ_equivalentsrª   r  r?  rt  r‡  ÚContextSubstÚChainContextSubstÚExtensionSubstÚReverseChainSingleSubstÚ	SinglePosÚPairPosÚ
CursivePosÚMarkBasePosÚ
MarkLigPosÚMarkMarkPosÚ
ContextPosÚChainContextPosÚExtensionPosÚNoncontextualMorphÚRearrangementMorphÚContextualMorphÚLigatureMorphÚInsertionMorphr   r¡   rÿ  r²  r®  rp  r¶  r¸  ÚotConvertersr]  r  rN  r¼  r^  ÚconvertersByName)r_  rV  Ú	formatPatÚ	namespacerÊ   rÍ  Ú	baseClassÚmÚ
formatTypera  r¶   ÚvarTypeÚ	noVarTypeÚbaserz  r{  Ú
lookupEnumÚenumr|   r]  rÙ  r^  ry  s                          rL   Ú_buildClassesr„  
  sÌ  € Ø€I€I€IØÐÐÐÐÐà—
’
Ð8Ñ9Ô9€IÝ‘	”	€Ið ð "ð "‰ˆˆeÝˆ	Ø�OŠO˜DÑ!Ô!ˆØð 	Eà—7’7˜1‘:”:ˆDð ˜qœ !œˆJÝ8¸ÑDÔDˆIØ�yÐ Ð å�t˜i˜\¨2Ñ.Ô.ˆCØÐ'Ð'Ð'Ø $�”Ø!ˆI�d‰Oøð ð (ð (‰ˆˆaØ�?Š?˜5Ñ!Ô!ð 	(¥c¨$¡i¤i°!¢m m¸¸Q¸R¸R¼ÀIÐ8MÐ8MØ ”oˆGØ! $ q r r¤(Ô+ˆIØ )ˆGÔØ 'ˆIÔøå"×(Ò(Ñ*Ô*ð "ð "‰
ˆˆdØ˜ŒˆØð 	"ð 	"ˆCØ!ˆI�c‰NˆNð	"õ ÝÝÝÝÝ ÝÝ&ð	
ð 	
õ ÝÝÝÝÝÝÝÝð

ð 

ð Õ!ð
õ "ÝÝå!Ýð
ð 
ð3!ð !€KõD & fÔ-…K�ÑÝ!×(Ò(Ñ*Ô*ð "ð "ˆ
Ø#×)Ò)Ñ+Ô+ð 	"ð 	"‰IˆD�#Ø!ˆCŒNˆNð	"ð
 	Õ!ðÐõ �1�fÑÔð Dð DˆÝ*CÕ˜( Q™,Ñ'Ð'Ý�1�fÑÔð Ið IˆÝ*HÕ˜( Q™,Ñ'Ð'ð .Ð-Ð-Ð-Ð-Ð-àð Uð U‰ˆˆeØ�OŠO˜DÑ!Ô!ˆØð 	UàŸ8š8™:œ:‰LˆD�&Ý˜‘[”[ˆFØ˜D”/ˆCÝ˜3 Ñ-Ô-ð *Ø!#�”Ø')�Ô$Ø+:¨?¸5ÀÀÀ¼9ÀiÑ+PÔ+PÑ(ˆJÐ(Ø%/ˆCŒN˜6Ñ"Ø+;ˆCÔ  Ñ(Ð(ð ˜D”/ˆCØ3B°?À5È)Ñ3TÔ3TÑ0ˆCŒN˜CÔ0Ð0ð!Uð UrK   c                 ó   — | €g S | j         S r…   )r©  )r1  s    rL   r   r   ‹
  s   € ØÐàˆ	àŒÐrK   )ƒÚ__doc__rö  rƒ  r   Ú	functoolsr   Úmathr   Ú	itertoolsÚcollectionsr   r   Ú%fontTools.ttLib.tables.TupleVariationr   Ú!fontTools.ttLib.tables.otTraverser	   ÚfontTools.misc.arrayToolsr
   ÚfontTools.misc.roundToolsr   ÚfontTools.misc.transformr   r   r   ÚfontTools.misc.textToolsr   r   r   ÚfontTools.misc.vectorr   ÚfontTools.pens.boundsPenr   ÚfontTools.pens.transformPenr   ÚotBaser   r   r   r   r   ÚfontTools.misc.fixedToolsr   r›   r   r¼   r   rÑ   r   rß   Ú fontTools.feaLib.lookupDebugInfor   r    Úloggingra   ÚarrayÚsysr!   Útypingr"   r#   r$   r%   r&   ÚfontTools.ttLib.ttGlyphSetr'   Ú	getLoggerr7   rÅ  r)   rM   r>   r?   r@   rB   rC   rG   rH   rD   rE   r©   rÂ   r£   r~   r�   rƒ   ró   Úobjectr  r  r  r   rI  rW  r\  rŒ  r«  r²  r¶  r¸  rº  r�   rã  r  r  r  r?  rV  rt  r‡  r¡  rÁ  rä  r´  rï  rø  r²  r  r$  rL  r¶  re  r  r  r  r  r2  rF  rJ  rT  r„  r   rJ   rK   rL   ú<module>rž     s®  ððð ð €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø @Ð @Ð @Ð @Ð @Ð @Ø <Ð <Ð <Ð <Ð <Ð <Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø -Ð -Ð -Ð -Ð -Ð -Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø (Ð (Ð (Ð (Ð (Ð (Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð TÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ €€€Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?àð 7Ø6Ð6Ð6Ð6Ð6Ð6ð €gÔ˜Ñ!Ô!€ð*ð *ð *ð *ð *˜ñ *ô *ð *ð6 '˜JØØ7Ð7Ð7ñô Ð ð ,Ð+ØÔ*¨A¨q°!ñô ð ,Ð+ØÔ*¨A¨q°!ñô ð *Ð)Ð*;Ô*IÈ2ÈsÐTUÑVÔVØ'Ð'Ð(9Ô(FÈÈAÈqÑQÔQØ'Ð'Ð(9Ô(FÈÈAÈqÑQÔQØ&Ð&Ð'8Ô'DÀbÈ$ÐPQÑRÔRØ&Ð&Ð'8Ô'DÀbÈ#ÈqÑQÔQØ)Ð)Ð*;Ô*JÈAÈqÐRSÑTÔTØ)Ð)Ð*;Ô*JÈAÈqÐRSÑTÔTðð Ð ð$ &Ð%Ø%Ð%Ø)Ð)Ø%Ð%ð	ð €ð +Ð*Ø*Ð*Ø2Ð2Ø*Ð*ð	ð €	ð$ð $ð $ð.>ð >ð >ð"sBð sBð sBð sBð sBñ sBô sBð sBðl.ð .ð .ð .ð .ñ .ô .ð .ðD"ð "ð "ð "ð "�Fñ "ô "ð "ðð ð ð ð ˆvñ ô ð ð
#ð #ð #ð #ð #�ñ #ô #ð #ð*R0ð R0ð R0ð R0ð R0˜yñ R0ô R0ð R0ðj>@ð >@ð >@ð >@ð >@˜Iñ >@ô >@ð >@ðB!ð !ð !ð !ð !�ñ !ô !ð !ðJð Jð Jð Jð J˜)ñ Jô Jð JðZD#ð D#ð D#ð D#ð D#˜9ñ D#ô D#ð D#ðNTð Tð Tð Tð T�Iñ Tô Tð Tð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	 ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	 ]ñ 	ô 	ð 	ðV&ð V&ð V&ð V&ð V&Ð'ñ V&ô V&ð V&ðv  Ð ðIPð IPð IPð IPð IPÐ7Ð7¸Ñ@Ô@ñ IPô IPð IPðX4?ð 4?ð 4?ð 4?ð 4?�	ñ 4?ô 4?ð 4?ðn
ð 
ð 
ð 
ð 
�Iñ 
ô 
ð 
ð$M,ð M,ð M,ð M,ð M,Ð*ñ M,ô M,ð M,ð`Hð Hð Hð Hð HÐ,ñ Hô Hð HðVg8ð g8ð g8ð g8ð g8Ð'ñ g8ô g8ð g8ðTC'ð C'ð C'ð C'ð C'Ð-ñ C'ô C'ð C'ðLwð wð wð wð wÐ,ñ wô wð wðt6(ð 6(ð 6(ð 6(ð 6(ˆ9ñ 6(ô 6(ð 6(ðr+Eð +Eð +Eð +Eð +E�ñ +Eô +Eð +Eð\$ð $ð $ð $ð $˜9ñ $ô $ð $ð$ð $ð $ð $ð $�Iñ $ô $ð $ðð ð ð ð �Gñ ô ð ð=ð =ð =ð =ð =Ð.Ð.¨wÑ7Ô7ñ =ô =ð =ðR+ð R+ð R+ð R+ð R+Ð/Ð/°Ñ8Ô8ñ R+ô R+ð R+ðjð ð ð ð �ñ ô ð ðð ð ð ð �Gñ ô ð ð>+ð +ð +ð +ð +�'ñ +ô +ð +ð\@ð @ð @ð @ð @Ð,Ð,¨WÑ5Ô5ñ @ô @ð @ðT !Ø"ðððððð !ðð 'ððððð QðYMð M€ðj<ð <ð <ð~ð ð ð4ð ð ð:ð ð ð4Dð Dð DðN9ð 9ð 9ð~ ØØð		ð 	ð àð	
ð 
ðð €
ð25ð 5ð 5ðvkUð kUð kUð^ €�„€ðð ð ð ð rK   