§
    ‚Ûg*H  ã            
       ó.  — d dl 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mZmZmZmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZmZ  e j        e¦  «        Zee› d�         ZdZ  e!ej"        ¦  «        Z#de$fd„Z%dede$defd„Z&dede$dej'        ddfd„Z(dede$dej'        ddfd„Z)dede$deej*                 deej*                 fd„Z+dede$dej*        deej*                 fd„Z,dej-        de.fd„Z/eeee!df         ee!df         f         eej0        ej0        f         f         Z1dee$         fd„Z2	 d*deeeee$e$f                  e$e$f                  d ee$         fd!„Z3 ed"g d#¢¦  «        Z4 G d$„ d%¦  «        Z5	 d+ded'e1d(e$dee1         fd)„Z6dS ),é    N)ÚdefaultdictÚ
namedtuple)Úreduce)Úchain)Úlog2)ÚDefaultDictÚDictÚIterableÚListÚSequenceÚTuple)ÚOPTIONS)Ú	bit_countÚbit_indices)ÚTTFont)ÚotBaseÚotTablesz:COMPRESSION_LEVELÚFONTTOOLS_GPOS_COMPACT_MODEÚreturnc                  ó4  — t           } t          t          j        v r?dd l}|                     dt          › d�t          ¦  «         t          j        t                   } t          | ¦  «        dk    r| dv rt          | ¦  «        S t          dt          › d| › �¦  «        ‚)Nr   ú'z}' environment variable is deprecated. Please set the 'fontTools.otlLib.optimize.gpos:COMPRESSION_LEVEL' option in TTFont.cfg.é   Ú
0123456789zBad ú=)
ÚGPOS_COMPACT_MODE_DEFAULTÚGPOS_COMPACT_MODE_ENV_KEYÚosÚenvironÚwarningsÚwarnÚDeprecationWarningÚlenÚintÚ
ValueError)Ú	env_levelr   s     úT/granary/edev/quantum/lib/python3.11/site-packages/fontTools/otlLib/optimize/gpos.pyÚ_compression_level_from_envr'      s¥   € Ý)€IÝ ¥B¤JÐ.Ð.Øˆˆˆà�ŠðÕ)ð ð ð õ ñ		
ô 	
ð 	
õ ”JÕ8Ô9ˆ	Ý
ˆ9�~„~˜ÒÐ˜y¨LÐ8Ð8Ý�9‰~Œ~ÐÝ
ÐCÕ5ÐCÐC¸	ÐCÐCÑ
DÔ
DÐDó    ÚfontÚlevelc                 óÜ   — | d         }|j         j        j        D ]Q}|j        dk    rt	          | ||¦  «         Œ|j        dk    r'|j        d         j        dk    rt          | ||¦  «         ŒR| S )NÚGPOSé   é	   r   )ÚtableÚ
LookupListÚLookupÚ
LookupTypeÚcompact_lookupÚSubTableÚExtensionLookupTypeÚcompact_ext_lookup)r)   r*   ÚgposÚlookups       r&   Úcompactr9   *   s‚   € ð �Œ<€DØ”*Ô'Ô.ð 4ð 4ˆØÔ Ò!Ð!Ý˜4 ¨Ñ/Ô/Ð/Ð/ØÔ !Ò#Ð#¨¬¸Ô(:Ô(NÐRSÒ(SÐ(SÝ˜t U¨FÑ3Ô3Ð3øØ€Kr(   r8   c                 óh   — t          | ||j        ¦  «        }||_        t          |¦  «        |_        d S ©N)Úcompact_pair_posr4   r"   ÚSubTableCount)r)   r*   r8   Únew_subtabless       r&   r3   r3   A   s2   € Ý$ T¨5°&´/ÑBÔB€MØ#€F„OÝ˜}Ñ-Ô-€FÔÐÐr(   c                 óö   — t          | |d„ |j        D ¦   «         ¦  «        }g }|D ]8}t          j        ¦   «         }d|_        ||_        |                     |¦  «         Œ9||_        t          |¦  «        |_        d S )Nc                 ó   — g | ]	}|j         ‘Œ
S © )ÚExtSubTable)Ú.0Úext_subtables     r&   ú
<listcomp>z&compact_ext_lookup.<locals>.<listcomp>I   s   € ÐSÐSÐS°<�lÔ.ÐSÐSÐSr(   r   )	r<   r4   r   ÚExtensionPosÚFormatrB   Úappendr"   r=   )r)   r*   r8   r>   Únew_ext_subtablesÚsubtablerD   s          r&   r6   r6   G   s“   € Ý$ØˆeÐSÐSÀ6Ä?ÐSÑSÔSñô €Mð ÐØ!ð /ð /ˆÝÔ,Ñ.Ô.ˆØˆÔØ#+ˆÔ Ø× Ò  Ñ.Ô.Ð.Ð.Ø'€F„OÝÐ0Ñ1Ô1€FÔÐÐr(   Ú	subtablesc                 ó´   — g }|D ]R}|j         dk    r|                     |¦  «         Œ#|j         dk    r$|                     t          | ||¦  «        ¦  «         ŒS|S )Nr   r-   )rG   rH   ÚextendÚcompact_class_pairs)r)   r*   rK   r>   rJ   s        r&   r<   r<   U   ss   € ð €MØð Mð MˆØŒ?˜aÒÐà× Ò  Ñ*Ô*Ð*Ð*ØŒ_ Ò!Ð!Ø× Ò Õ!4°T¸5À(Ñ!KÔ!KÑLÔLÐLøØÐr(   rJ   c                 ó\  — ddl m} g }t          t          ¦  «        }|j        j        D ];}||j        j                             |d¦  «                  	                    |¦  «         Œ<t          t          ¦  «        }|j
        j                             ¦   «         D ] \  }}||          	                    |¦  «         Œ!i }	t          |j        ¦  «        D ]–\  }}
t          |
j        ¦  «        D ]|\  }}t          |¦  «        rŒt!          |dd ¦  «        t!          |dd ¦  «        f|	t#          t%          ||         ¦  «        ¦  «        t#          t%          ||         ¦  «        ¦  «        f<   Œ}Œ—t'          | |	|¦  «        }|D ]3}| 	                     |||                      ¦   «         ¦  «        ¦  «         Œ4|S )Nr   )ÚbuildPairPosClassesSubtableÚValue1ÚValue2)ÚfontTools.otlLib.builderrP   r   ÚlistÚCoverageÚglyphsÚ	ClassDef1Ú	classDefsÚgetrH   Ú	ClassDef2ÚitemsÚ	enumerateÚClass1RecordÚClass2RecordÚis_really_zeroÚgetattrÚtupleÚsortedÚ,cluster_pairs_by_class2_coverage_custom_costÚgetReverseGlyphMap)r)   r*   rJ   rP   rK   Úclasses1ÚgÚclasses2ÚiÚ	all_pairsÚclass1ÚjÚclass2Úgrouped_pairsÚpairss                  r&   rN   rN   b   sÐ  € ð EÐDÐDÐDÐDÐDà€IÝ,7½Ñ,=Ô,=€HØÔÔ%ð Cð CˆØ�Ô#Ô-×1Ò1°!°QÑ7Ô7Ô8×?Ò?ÀÑBÔBÐBÐBÝ,7½Ñ,=Ô,=€HØÔ"Ô,×2Ò2Ñ4Ô4ð ð ‰ˆˆ1Ø�Œ×Ò˜1ÑÔÐÐØ€IÝ˜xÔ4Ñ5Ô5ð ð ‰	ˆˆ6Ý" 6Ô#6Ñ7Ô7ð 	ð 	‰IˆAˆvÝ˜fÑ%Ô%ð Øå˜ ¨$Ñ/Ô/Ý˜ ¨$Ñ/Ô/ðSˆI•u�V H¨Q¤KÑ0Ô0Ñ1Ô1µ5½ÀÈÄÑ9LÔ9LÑ3MÔ3MÐNÑOÐOð	õ AÀÀyÐRWÑXÔX€MØð Xð XˆØ×ÒÐ4Ð4°U¸D×<SÒ<SÑ<UÔ<UÑVÔVÑWÔWÐWÐWØÐr(   rl   c                 ó¶   — t          | dd ¦  «        }t          | dd ¦  «        }|d u s|                     ¦   «         dk    o|d u p|                     ¦   «         dk    S )NrQ   rR   r   )r`   ÚgetEffectiveFormat)rl   Úv1Úv2s      r&   r_   r_   }   sh   € Ý	�˜ 4Ñ	(Ô	(€BÝ	�˜ 4Ñ	(Ô	(€BØ�$ˆJÐ6˜"×/Ò/Ñ1Ô1°QÒ6ð Ø
ˆdˆ
Ð2�b×+Ò+Ñ-Ô-°Ò2ðr(   .ÚglyphIDsc                 ó"  — t          | ¦  «        } | d         }|gg}| dd …         D ]>}||dz   k    r1|d                              |¦  «         |                     |g¦  «         |}Œ?|d                              |¦  «         || d         | d         fS )Nr   r   éÿÿÿÿ)rb   rH   )rs   ÚlastÚrangesÚglyphIDs       r&   Ú_getClassRangesry   Œ   s§   € Ý�hÑÔ€HØ�AŒ;€DØˆfˆX€FØ˜A˜B˜B”<ð ð ˆØ�d˜Q‘hÒÐØ�2ŒJ×Ò˜dÑ#Ô#Ð#Ø�MŠM˜7˜)Ñ$Ô$Ð$ØˆˆØ
ˆ2„J×Ò�dÑÔÐØ�8˜A”; ¨¤Ð,Ð,r(   FÚ
class_dataÚ	class_idsc                 óN  — |sdS | |d                  \  }}}t          |¦  «        }|dd …         D ]N}| |         }|t          |d         ¦  «        z  }t          ||d         ¦  «        }t          ||d         ¦  «        }ŒO||z
  dz   }	d|	dz  z   }
d|dz  z   }t          |
|¦  «        S )Nr   r   r-   é   é   )r"   ÚminÚmax)rz   r{   ÚcoverageÚfirst_rangesÚmin_glyph_idÚmax_glyph_idÚrange_countrh   ÚdataÚ
glyphCountÚformat1_bytesÚformat2_bytess               r&   Ú_classDef_bytesrŠ   š   sÊ   € ð
 ð ØˆqØ/9¸)ÀA¼,Ô/GÑ,€L�, Ý�lÑ#Ô#€KØ�q�r�rŒ]ð 2ð 2ˆØ˜!Œ}ˆØ•s˜4 œ7‘|”|Ñ#ˆÝ˜<¨¨a¬Ñ1Ô1ˆÝ˜<¨¨a¬Ñ1Ô1ˆˆØ Ñ,¨qÑ0€Jà˜
 Q™Ñ&€Mà˜ a™Ñ'€MÝˆ}˜mÑ,Ô,Ð,r(   ÚClusteringContext)ÚlinesÚ
all_class1Úall_class1_dataÚall_class2_dataÚvalueFormat1_bytesÚvalueFormat2_bytesc                   ó¼   — e Zd ZdZdedefd„Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         Zed	„ ¦   «         Zed
„ ¦   «         Zed„ ¦   «         ZdS )ÚCluster©ÚctxÚindices_bitmaskÚ_indicesÚ_column_indicesÚ_costr•   r–   c                 óL   — || _         || _        d | _        d | _        d | _        d S r;   r”   )Úselfr•   r–   s      r&   Ú__init__zCluster.__init__Ê   s+   € ØˆŒØ.ˆÔØˆŒØ#ˆÔØˆŒ
ˆ
ˆ
r(   c                 óP   — | j         €t          | j        ¦  «        | _         | j         S r;   )r—   r   r–   ©r›   s    r&   ÚindiceszCluster.indicesÑ   s$   € àŒ=Ð Ý'¨Ô(<Ñ=Ô=ˆDŒMØŒ}Ðr(   c                 óž   ‡ — ‰ j         €?t          t          j        ˆ fd„‰ j        D ¦   «         ¦  «        }t          |¦  «        ‰ _         ‰ j         S )Nc              3   ó<   •K  — | ]}‰j         j        |         V — Œd S r;   )r•   rŒ   ©rC   rh   r›   s     €r&   ú	<genexpr>z)Cluster.column_indices.<locals>.<genexpr>Ü   s,   øè è € Ð)RÐ)RÀ¨$¬(¬.¸Ô*;Ð)RÐ)RÐ)RÐ)RÐ)RÐ)Rr(   )r˜   r   r#   Ú__or__rŸ   r   )r›   Úbitmasks   ` r&   Úcolumn_indiceszCluster.column_indices×   sO   ø€ àÔÐ'õ �SœZÐ)RÐ)RÐ)RÐ)RÀTÄ\Ð)RÑ)RÔ)RÑSÔSˆGÝ#.¨wÑ#7Ô#7ˆDÔ ØÔ#Ð#r(   c                 ó0   — t          | j        ¦  «        dz   S )Nr   )r"   r¦   rž   s    r&   ÚwidthzCluster.widthà   s   € õ �4Ô&Ñ'Ô'¨!Ñ+Ð+r(   c                 óî   — | j         €hd| j        z   dz   dz   dz   | j        z   dz   | j        z   dz   dz   | j        j        | j        j        z   t          | j        ¦  «        z  | j	        z  z   | _         | j         S )Nr}   r-   )
r™   Úcoverage_bytesÚclassDef1_bytesÚclassDef2_bytesr•   r�   r‘   r"   rŸ   r¨   rž   s    r&   ÚcostzCluster.costå   s¸   € àŒ:Ððð Ô%ñ&ð ñ	ð ñð ñð Ô&ñ'ð  ñ!ð" Ô&ñ#'ð& ñ'ð* ñ+ð. ”8Ô.°´Ô1LÑLÝ�d”lÑ#Ô#ñ$à”*ññ/ð ŒJð: ŒzÐr(   c                 ó   ‡ — dt          ˆ fd„‰ j        D ¦   «         ¦  «        dz  z   }t          t          j        ˆ fd„‰ j        D ¦   «         ¦  «        ¦  «        }d}d }|D ]\  }}|�||dz   k    r|dz  }|}Œd|dz  z   }t          ||¦  «        S )Nr~   c              3   óV   •K  — | ]#}t          ‰j        j        |         ¦  «        V — Œ$d S r;   ©r"   r•   r�   r¢   s     €r&   r£   z)Cluster.coverage_bytes.<locals>.<genexpr>  s5   øè è € ÐDÐD°!•#�d”hÔ)¨!Ô,Ñ-Ô-ÐDÐDÐDÐDÐDÐDr(   r-   c              3   óH   •K  — | ]}‰j         j        |         d          V — ŒdS ©r   N)r•   rŽ   r¢   s     €r&   r£   z)Cluster.coverage_bytes.<locals>.<genexpr>  s2   øè è € ÐUÐUÀ1 ¤Ô 8¸Ô ;¸AÔ >ÐUÐUÐUÐUÐUÐUr(   r   r   r}   )ÚsumrŸ   rb   r   Úfrom_iterabler   )r›   rˆ   rw   Úmerged_range_countrv   ÚstartÚendr‰   s   `       r&   rª   zCluster.coverage_bytes  sá   ø€ ð åÐDÐDÐDÐD°t´|ÐDÑDÔDÑDÔDÀqÑHñIð	 	õ ÝÔÐUÐUÐUÐUÈÌÐUÑUÔUÑUÔUñ
ô 
ˆð ÐØˆØ ð 	ð 	‰JˆE�3ØÐ E¨T°A©XÒ$5Ð$5Ø" aÑ'Ð"ØˆDˆDð
 ð
 ! 1Ñ$ñ%ð	 	õ �= -Ñ0Ô0Ð0r(   c                 óŽ   ‡ ‡— t          ‰ j        ˆ fd„¬¦  «        Št          ‰ j        j        ˆfd„‰ j        D ¦   «         ¦  «        S )Nc                 óB   •— t          ‰j        j        |          ¦  «        S r;   r°   )rh   r›   s    €r&   ú<lambda>z)Cluster.classDef1_bytes.<locals>.<lambda>.  s   ø€ ½¸D¼HÔ<OÐPQÔ<RÑ8SÔ8S€ r(   )Úkeyc                 ó    •— g | ]
}|‰k    ¯|‘ŒS rA   rA   )rC   rh   Úbiggest_indexs     €r&   rE   z+Cluster.classDef1_bytes.<locals>.<listcomp>0  s#   ø€ Ð&UÐ&UÐ&U¨QÀ!À}ÒBTÐBT qÐBTÐBTÐBTr(   )r€   rŸ   rŠ   r•   rŽ   )r›   r½   s   `@r&   r«   zCluster.classDef1_bytes'  sW   øø€ õ ˜DœLÐ.SÐ.SÐ.SÐ.SÐTÑTÔTˆÝØŒHÔ$Ð&UÐ&UÐ&UÐ&U°$´,Ð&UÑ&UÔ&Uñ
ô 
ð 	
r(   c                 ó@   — t          | j        j        | j        ¦  «        S r;   )rŠ   r•   r�   r¦   rž   s    r&   r¬   zCluster.classDef2_bytes3  s   € õ ˜tœxÔ7¸Ô9LÑMÔMÐMr(   N)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r‹   r#   rœ   ÚpropertyrŸ   r¦   r¨   r­   rª   r«   r¬   rA   r(   r&   r“   r“   ½   s  € € € € € ð Q€IðÐ-ð Àð ð ð ð ð ðð ñ „Xðð
 ð$ð $ñ „Xð$ð ð,ð ,ñ „Xð,ð ðð ñ „XððB ð1ð 1ñ „Xð1ð> ð	
ð 	
ñ „Xð	
ð ðNð Nñ „XðNð Nð Nr(   r“   é   rn   Úcompressionc                 ó–  ‡‡"‡#‡$‡%‡&— ‰s‰gS t          t          d„ ‰D ¦   «         ¦  «        ¦  «        }t          t          d„ ‰D ¦   «         ¦  «        ¦  «        Š"ˆ"ˆfd„|D ¦   «         }|                      ¦   «         Š&ˆ&fd„|D ¦   «         }ˆ&fd„‰"D ¦   «         }d}d}‰                     ¦   «         D ]S\  }	}
||
d         r|
d                              ¦   «         ndz  }||
d         r|
d                              ¦   «         ndz  }ŒTt          |¦  «        dz  }t          |¦  «        dz  }t          ||||||¦  «        Š$i Š#d	t          d
t          fˆ#ˆ$fd„Š%dt          dt          d
t          fˆ%fd„}ˆ%fd„t          t          |¦  «        ¦  «        D ¦   «         } ‰%dt          |¦  «        z  dz
  ¦  «        j        }t                               dt          |¦  «        › �¦  «         t          |¦  «        dk    �r=d }d }d }d }t          |¦  «        D ]^\  }}t          ||dz   d …         ¦  «        D ]>\  }} |||¦  «        }|j        |j        z
  |j        z
  }|�||k     r|}|}|dz   |z   }|}Œ?Œ_|€J ‚|€J ‚|€J ‚|€J ‚|dk    r•t          d„ |D ¦   «         ¦  «        }d||z  z
  }t!          d|z
  ¦  «         |z  }t                               dt          |¦  «        d›d|d›d|› �¦  «         |dk    rt          |¦  «        }t          |¦  «        |dz   k    rn||= |||<   t          |¦  «        dk    �°=t#          t$          ¦  «        }‰                     ¦   «         D ]\  }	}|||	d                  |	<   Œg }|D ]R}t%          ¦   «         } |j        D ]%}||         }!|                      ||!         ¦  «         Œ&|                     | ¦  «         ŒS|S )Nc              3   ó&   K  — | ]}|d          V — ŒdS r²   rA   ©rC   Úpairs     r&   r£   z?cluster_pairs_by_class2_coverage_custom_cost.<locals>.<genexpr>C  ó&   è è € Ð6Ð6¨˜D œGÐ6Ð6Ð6Ð6Ð6Ð6r(   c              3   ó&   K  — | ]}|d          V — ŒdS )r   NrA   rÈ   s     r&   r£   z?cluster_pairs_by_class2_coverage_custom_cost.<locals>.<genexpr>D  rÊ   r(   c                 ód   •‡— g | ]+Št          ˆˆfd „t          ‰¦  «        D ¦   «         ¦  «        ‘Œ,S )c              3   ó8   •K  — | ]\  }}‰|f‰v rd |z  ndV — ŒdS )r   r   NrA   )rC   rh   rl   rj   rn   s      €€r&   r£   zJcluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>.<genexpr>H  sR   øè è € ð 
ð 
á��6ð ˜vÐ&¨%Ð/Ð/ˆA�‰FˆF°Qð
ð 
ð 
ð 
ð 
ð 
r(   )r³   r\   )rC   rj   Ú
all_class2rn   s    @€€r&   rE   z@cluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>G  si   øø€ ð ð ð ð
 õ	 	ð 
ð 
ð 
ð 
ð 
å& zÑ2Ô2ð
ñ 
ô 
ñ 	
ô 	
ðð ð r(   c                 óF   •— g | ]}t          ˆfd „|D ¦   «         ¦  «        ‘ŒS )c              3   ó(   •K  — | ]}‰|         V — Œd S r;   rA   ©rC   ÚnameÚ
name_to_ids     €r&   r£   zJcluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>.<genexpr>S  ó(   øè è € Ð9Ð9¨T˜
 4Ô(Ð9Ð9Ð9Ð9Ð9Ð9r(   ©ry   ©rC   ÚclsrÓ   s     €r&   rE   z@cluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>R  óC   ø€ ð ð ð Ø>A�Ð9Ð9Ð9Ð9°SÐ9Ñ9Ô9Ñ9Ô9ðð ð r(   c                 óF   •— g | ]}t          ˆfd „|D ¦   «         ¦  «        ‘ŒS )c              3   ó(   •K  — | ]}‰|         V — Œd S r;   rA   rÑ   s     €r&   r£   zJcluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>.<genexpr>V  rÔ   r(   rÕ   rÖ   s     €r&   rE   z@cluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>U  rØ   r(   r   r   r-   rŸ   r   c                 óf   •— ‰                      | d ¦  «        }|�|S t          ‰| ¦  «        }|‰| <   |S r;   )rY   r“   )rŸ   ÚclusterÚcluster_cacher•   s     €€r&   Úmake_clusterzBcluster_pairs_by_class2_coverage_custom_cost.<locals>.make_clusterl  sA   ø€ Ø×#Ò# G¨TÑ2Ô2ˆØÐØˆNÝ˜#˜wÑ'Ô'ˆØ!(ˆ�gÑØˆr(   rÜ   Úotherc                 ó4   •—  ‰| j         |j         z  ¦  «        S r;   )r–   )rÜ   rß   rÞ   s     €r&   Úmergez;cluster_pairs_by_class2_coverage_custom_cost.<locals>.merget  s   ø€ Øˆ|˜GÔ3°eÔ6KÑKÑLÔLÐLr(   c                 ó,   •— g | ]} ‰d |z  ¦  «        ‘ŒS )r   rA   )rC   rh   rÞ   s     €r&   rE   z@cluster_pairs_by_class2_coverage_custom_cost.<locals>.<listcomp>{  s'   ø€ Ð@Ð@Ð@¨��˜Q !™VÑ$Ô$Ð@Ð@Ð@r(   z        len(clusters) = c              3   ó$   K  — | ]}|j         V — Œd S r;   )r­   )rC   Úcs     r&   r£   z?cluster_pairs_by_class2_coverage_custom_cost.<locals>.<genexpr>�  s$   è è € Ð&@Ð&@°! q¤vÐ&@Ð&@Ð&@Ð&@Ð&@Ð&@r(   z            len(clusters) = Ú3dz    size_reduction=z5.2fz    max_new_subtables=r.   )rb   Úsetrd   r[   rp   r   r‹   r#   r“   Úranger"   r­   ÚlogÚdebugr\   r³   r   r   ÚdictrŸ   ÚupdaterH   )'r)   rn   rÅ   r�   rŒ   rŽ   r�   Úformat1Úformat2rÉ   Úvaluer�   r‘   rá   ÚclustersÚcost_before_splittingÚlowest_cost_changeÚbest_cluster_indexÚbest_other_indexÚbest_mergedrh   rÜ   rk   rß   ÚmergedÚcost_changeÚcost_after_splittingÚsize_reductionÚmax_new_subtablesÚpairs_by_class1ÚvaluesÚpairs_groupsÚpairs_grouprj   rÎ   rÝ   r•   rÞ   rÓ   s'    `                                @@@@@r&   rc   rc   9  s^  øøøøøø€ ð
 ð àˆwˆõ �Ð6Ð6°Ð6Ñ6Ô6Ñ6Ô6Ñ7Ô7€JÝ�Ð6Ð6°Ð6Ñ6Ô6Ñ6Ô6Ñ7Ô7€Jðð ð ð ð ð
 !ðñ ô €Eð ×(Ò(Ñ*Ô*€Jðð ð ð ØEOðñ ô €Oðð ð ð ØEOðñ ô €Oð €GØ€GØ—{’{‘}”}ð Dð D‰ˆˆeØ°E¸!´HÐC�5˜”8×.Ò.Ñ0Ô0Ð0À!ÑCˆØ°E¸!´HÐC�5˜”8×.Ò.Ñ0Ô0Ð0À!ÑCˆˆÝ" 7Ñ+Ô+¨aÑ/ÐÝ" 7Ñ+Ô+¨aÑ/Ðå
ØØØØØØñô €Cð )+€Mð�cð ¥gð ð ð ð ð ð ð ðM•wð M¥wð Mµ7ð Mð Mð Mð Mð Mð Mð AÐ@Ð@Ð@­eµC¸±J´JÑ.?Ô.?Ð@Ñ@Ô@€Hð )˜L¨!­s°5©z¬z©/¸QÑ)>Ñ?Ô?ÔDÐÝ‡I‚IÐ8­¨X©¬Ð8Ð8Ñ9Ô9Ð9å
ˆh‰-Œ-˜!Ò
Ñ
Ø!ÐØ!ÐØÐØˆÝ# HÑ-Ô-ð 	)ð 	)‰JˆAˆwÝ% h¨q°1©u¨w¨wÔ&7Ñ8Ô8ð )ð )‘��5Ø˜˜w¨Ñ.Ô.�Ø$œk¨G¬LÑ8¸5¼:ÑE�Ø%Ð-°Ð?QÒ1QÐ1QØ)4Ð&Ø)*Ð&Ø'(¨1¡u¨q¡yÐ$Ø"(�Køð)ð "Ð-Ð-Ð-Ø!Ð-Ð-Ð-ØÐ+Ð+Ð+ØÐ&Ð&Ð&ð  Ò!Ð!õ $'Ð&@Ð&@°xÐ&@Ñ&@Ô&@Ñ#@Ô#@Ð ð Ð!5Ð8MÑ!MÑMˆNõ "& a¨.Ñ&8Ñ!9Ô!9Ð 9¸KÑ GÐÝ�IŠIð S­s°8©}¬}ð  Sð  Sð  SÐTbð  Sð  Sð  Sð  @Qð  Sð  Sñô ð ð ˜aÒÐå$'¨¡M¤MÐ!õ �8‰}Œ}Ð 1°AÑ 5Ò5Ð5Øð Ð%Ð&Ø'2ˆÐ#Ñ$õm ˆh‰-Œ-˜!Ò
Ñ
õr 5@ÅÑ4EÔ4E€OØŸš™œð 0ð 0‰ˆˆfØ)/ˆ˜˜QœÔ  Ñ&Ð&Ø "€LØð )ð )ˆÝ!™VœVˆØ”ð 	8ð 	8ˆAØ ”]ˆFØ×Ò˜¨vÔ6Ñ7Ô7Ð7Ð7Ø×Ò˜KÑ(Ô(Ð(Ð(ØÐr(   )F)rÄ   )7Úloggingr   Úcollectionsr   r   Ú	functoolsr   Ú	itertoolsr   Úmathr   Útypingr   r	   r
   r   r   r   ÚfontTools.configr   ÚfontTools.misc.intToolsr   r   ÚfontTools.ttLibr   ÚfontTools.ttLib.tablesr   r   Ú	getLoggerr¿   rè   ÚCOMPRESSION_LEVELr   ÚstrÚdefaultr   r#   r'   r9   r1   r3   r6   ÚPairPosr<   rN   r^   Úboolr_   ÚValueRecordÚPairsry   rŠ   r‹   r“   rc   rA   r(   r&   ú<module>r     sê  ðØ €€€Ø 	€	€	€	Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eà $Ð $Ð $Ð $Ð $Ð $Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø "Ð "Ð "Ð "Ð "Ð "Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à€gÔ˜Ñ!Ô!€à˜xÐ;Ð;Ð;Ô<Ð ð :Ð Ø˜CÐ 1Ô 9Ñ:Ô:Ð ðE Sð Eð Eð Eð Eð$�&ð  ð ¨ð ð ð ð ð..˜ð .¨ð .°X´_ð .Èð .ð .ð .ð .ð2˜Vð 2¨Cð 2¸¼ð 2ÈTð 2ð 2ð 2ð 2ð
Ø
ð
Øð
Ø)1°(Ô2BÔ)Cð
àˆhÔÔð
ð 
ð 
ð 
ðØ
ðØðØ(0Ô(8ðà	ˆ(Ô
Ôðð ð ð ð6˜8Ô0ð °Tð ð ð ð ð 	Ø	ˆ%��S�Œ/˜5  c œ?Ð
*Ô+Ø	ˆ&Ô
˜fÔ0Ð
0Ô1ð3ô	€ð
-˜h sœmð 
-ð 
-ð 
-ð 
-ð" ð-ð -Ø�U˜4  c¨3 h¤Ô0°#°sÐ:Ô;Ô<ð-à�CŒyð-ð -ð -ð -ð, �JØðð ð ñ
ô 
Ð ðyNð yNð yNð yNð yNñ yNô yNð yNð~ ðLð LØ
ðLàðLð ðLð 
ˆ%„[ð	Lð Lð Lð Lð Lð Lr(   