ó
    oñ:iúÎ  ã            	       ó  • S SK Jr  S SKJrJr  SSKJr  S SKJr  S SKrS SK	r	S SK
r
S SKrS SKJr  S SKJrJrJrJr  \R&                  " \5      rS	r S SKrS
r\\ S3   r " S S\5      r " S S\5      r " S S\5      r " S S\5      r \!" \
RD                  " SS 5      5      S:X  d   e\	R                  " S5      RF                  S:X  d   S5       e " S S\5      r$ " S S\5      r% " S S\5      r& " S S\5      r'S r(S  r)S! r*S" r+ " S# S$\5      r, " S% S&\,5      r- " S' S(\-5      r.\-\.S).r/S* r0\" 5       S5S+\,S,\\1   S-\\2   4S. jj5       r3/ S/Qr4S0 r5\5" 5       r6 " S1 S2\5      r7 " S3 S4\5      r8g! \ a     GN&f = f)6é    )ÚOPTIONS)ÚTagÚ	bytesjoiné   )ÚDefaultTable)ÚIntEnumN)Ú	lru_cache)ÚIteratorÚ
NamedTupleÚOptionalÚTupleFTz:USE_HARFBUZZ_REPACKERc                   ó    • \ rS rSrS rS rSrg)ÚOverflowErrorRecordé   c                 óh   • US   U l         US   U l        US   U l        US   U l        US   U l        g )Nr   r   é   é   é   )Ú	tableTypeÚLookupListIndexÚSubTableIndexÚitemNameÚ	itemIndex)ÚselfÚoverflowTuples     Ú`/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/fontTools/ttLib/tables/otBase.pyÚ__init__ÚOverflowErrorRecord.__init__   s@   € Ø& qÑ)ˆŒØ,¨QÑ/ˆÔØ*¨1Ñ-ˆÔØ% aÑ(ˆŒØ& qÑ)ˆ�ó    c                 óŽ   • [        U R                  SU R                  SU R                  SU R                  SU R
                  4	5      $ )NzLookupIndex:zSubTableIndex:z	ItemName:z
ItemIndex:)Ústrr   r   r   r   r   ©r   s    r   Ú__repr__ÚOverflowErrorRecord.__repr__!   sG   € Üà—‘ØØ×$Ñ$Ø Ø×"Ñ"ØØ—‘ØØ—‘ð
ó
ð 	
r   )r   r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r#   Ú__static_attributes__© r   r   r   r      s   † ò*õ
r   r   c                   ó    • \ rS rSrS rS rSrg)ÚOTLOffsetOverflowErroré1   c                 ó   • Xl         g ©N©Úvalue)r   ÚoverflowErrorRecords     r   r   ÚOTLOffsetOverflowError.__init__2   s   € Ø(�
r   c                 ó,   • [        U R                  5      $ r/   )Úreprr1   r"   s    r   Ú__str__ÚOTLOffsetOverflowError.__str__5   s   € Ü�D—J‘JÓÐr   r0   N)r%   r&   r'   r(   r   r6   r)   r*   r   r   r,   r,   1   s   † ò)õ r   r,   c                   ó    • \ rS rSrSrSrSrSrg)ÚRepackerStateé9   r   r   r   r*   N)r%   r&   r'   r(   ÚPURE_FTÚHB_FTÚFT_FALLBACKr)   r*   r   r   r9   r9   9   s   † ð €Gð €Eð ƒKr   r9   c                   óL   • \ rS rSrSrS rS rS rS rS r	S r
S	 rSS
 jrSrg)ÚBaseTTXConverteréN   zÆGeneric base class for TTX table converters. It functions as an
adapter between the TTX (ttLib actually) table model and the model
we use for OpenType tables, which is necessarily subtly different.
c                 ó®   • SSK Jn  [        XR                  S9n[	        X0R                  5      nU" 5       U l        U R
                  R                  XB5        g)zFCreate an object from the binary data. Called automatically on access.r   ©ÚotTables©ÚtableTagN)Ú rC   ÚOTTableReaderrE   ÚgetattrÚtableÚ	decompile)r   ÚdataÚfontrC   ÚreaderÚ
tableClasss         r   rJ   ÚBaseTTXConverter.decompileT   s<   € åä˜t¯m©mÑ<ˆÜ˜X§}¡}Ó5ˆ
Ù“\ˆŒ
Ø�
‰
×Ñ˜VÕ*r   c                 ó*  • SnUR                   [           nU R                  S;   af  USL a!  [        R	                  SU R                  5        O@[
        (       d5  USL a  [        S5      eUb   e[        R	                  SU R                  5        US;   a,  [
        (       a!  U R                  S;   a  [        R                  nO[        R                  nSnSn  [        U R                  S	9nU R                  R                  Xq5        U[        R                  :X  a  U R                  Xu5      $ U[        R                  :X  a  U R                  U5      $ U[        R                  :X  a6  U R                  U5        [        R	                  S
5        [        R                  nMÅ  ! [          ap  nSnU R#                  XU5      n	UR$                  nU	(       a   SnAMý  U[        R                  L a*  [        R	                  S5        [        R                  n SnANve SnAff = f)z=Compiles the table into binary. Called automatically on save.N)ÚGSUBÚGPOSFz>hb.repack disabled, compiling '%s' with pure-python serializerTzNo module named 'uharfbuzz'z?uharfbuzz not found, compiling '%s' with pure-python serializer)NTrD   zXRe-enabling sharing between extensions and switching back to harfbuzz+fontTools packing.zrHarfbuzz packing out of resolutions, disabling sharing between extensions and switching to fontTools only packing.)ÚcfgÚUSE_HARFBUZZ_REPACKERrE   ÚlogÚdebugÚhave_uharfbuzzÚImportErrorr9   r<   r;   ÚOTTableWriterrI   ÚcompileÚtryPackingHarfbuzzÚtryPackingFontToolsr=   r,   ÚtryResolveOverflowr1   )
r   rL   ÚoverflowRecordÚuse_hb_repackÚstateÚhb_first_error_loggedÚlastOverflowRecordÚwriterÚeÚoks
             r   rZ   ÚBaseTTXConverter.compile]   sÑ  € ð. ˆð Ÿ™Ô!6Ñ7ˆØ�=‰=Ð,Ó,Ø Ò%Ü—	‘	ØTØ—M‘Mõ÷ $’^Ø  DÒ(Ü%Ð&CÓDÐDà(Ñ0Ð0Ð0Ü—I‘IØYØŸ™ôð ˜\Ó)ß’Ø—‘Ð!1Ó1ä!×'Ñ'‰Eä!×)Ñ)ˆEà %ÐØ!ÐØð!Ü&°·±Ñ>�Ø—
‘
×"Ñ" 6Ô0ØœM×/Ñ/Ó/Ø×2Ñ2°6ÓQÐQØœm×3Ñ3Ó3Ø×3Ñ3°FÓ;Ð;Øœm×7Ñ7Ó7ð ×,Ñ,¨VÔ4Ü—I‘Ið6ôô *×/Ñ/�Eñ# øô& *ó Ø(,Ð%Ø×,Ñ,¨TÐ6HÓI�Ø%&§W¡WÐ"æÝàœM×/Ñ/Ò/Ü—I‘Ið?ôô *×5Ñ5•Eàûðús2   ÃAF Ä'$F ÅA
F Æ
HÆ"'HÇ8HÈHÈHc                 óž  •  [         R                  SU R                  5        UR                  U R                  5      $ ! [        [
        [        R                  4 ap  nU(       dP  [        U5      R                   n[        U5      S:w  a  USU 3-  n[         R                  SU R                  U5        SnUR                  SS9s S nA$ S nAff = f)Nzserializing '%s' with hb.repackrF   z: z`hb.repack failed to serialize '%s', attempting fonttools resolutions ; the error message was: %sTF)Úremove_duplicate)rU   rV   rE   ÚgetAllDataUsingHarfbuzzÚ
ValueErrorÚMemoryErrorÚhbÚRepackerErrorÚtyper%   r!   ÚwarningÚ
getAllData)r   rc   ra   rd   Ú	error_msgs        r   r[   Ú#BaseTTXConverter.tryPackingHarfbuzz¸   sµ   € ð	=Ü�I‰IÐ7¸¿¹ÔGØ×1Ñ1°$·-±-Ó@Ð@øÜœK¬×)9Ñ)9Ð:ó 	=ö
 )Ü# A›w×/Ñ/Ð0�	Ü�q“6˜R“<Ø 2 a S Ñ)�IÜ—‘ð2à—M‘MØô	ð )-Ð%Ø×$Ñ$°eÐ$Ð<Õ<ûð!	=ús   ‚:= ½CÁA%CÃCÃCc                 ó"   • UR                  5       $ r/   )rp   ©r   rc   s     r   r\   Ú$BaseTTXConverter.tryPackingFontToolsÎ   s   € Ø× Ñ Ó"Ð"r   c                 óî   • SnX2R                   :X  a  U$ UR                   n[        R                  SU5        UR                  c  SSKJn  U" X5      nOSSKJn  U" X5      nU(       a  U$ SSKJn  U" X5      $ )Nr   z+Attempting to fix OTLOffsetOverflowError %sr   )ÚfixLookupOverFlows)ÚfixSubTableOverFlows)r1   rU   Úinfor   rC   rw   rx   )r   rL   rd   rb   re   r^   rw   rx   s           r   r]   Ú#BaseTTXConverter.tryResolveOverflowÑ   sl   € ØˆØ§¡Ó(àˆIàŸ™ˆÜ�‰Ð>ÀÔBà×"Ñ"Ñ*Ý4á# DÓ9‰Bå6á% dÓ;ˆBæØˆIõ
 	1á! $Ó7Ð7r   c                 ó:   • U R                   R                  X5        g r/   )rI   ÚtoXML2)r   rc   rL   s      r   ÚtoXMLÚBaseTTXConverter.toXMLí   s   € Ø�
‰
×Ñ˜&Õ'r   c                 óà   • SSK Jn  [        U S5      (       d!  [        XPR                  5      nU" 5       U l        U R
                  R                  XX45        U R
                  R                  5         g )Nr   rB   rI   )rF   rC   ÚhasattrrH   rE   rI   ÚfromXMLÚpopulateDefaults)r   ÚnameÚattrsÚcontentrL   rC   rN   s          r   r�   ÚBaseTTXConverter.fromXMLð   sM   € Ýä�t˜W×%Ñ%Ü  ¯=©=Ó9ˆJÙ#›ˆDŒJØ�
‰
×Ñ˜4¨Ô6Ø�
‰
×#Ñ#Õ%r   c                 ó6   • U R                   R                  US9  g )N)Úrecurse)rI   ÚensureDecompiled)r   rˆ   s     r   r‰   Ú!BaseTTXConverter.ensureDecompiledù   s   € Ø�
‰
×#Ñ#¨GÐ#Ò4r   )rI   N©T)r%   r&   r'   r(   Ú__doc__rJ   rZ   r[   r\   r]   r}   r�   r‰   r)   r*   r   r   r?   r?   N   s1   † ñò
+òYòv=ò,#ò8ò8(ò&÷5r   r?   Úir   z#Oops, file a bug against fonttools.c                   ó¼   • \ rS rSrSrSrS S jrS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSr g)!rG   i  z5Helper class to retrieve data from an OpenType table.©rK   ÚoffsetÚposÚ
localStaterE   Nc                 ó@   • Xl         X0l        X0l        X l        X@l        g r/   r�   )r   rK   r’   r�   rE   s        r   r   ÚOTTableReader.__init__  s   € ØŒ	ØŒØŒØ$ŒØ �r   c                 ó.   • U =R                   U-  sl         g r/   ©r‘   ©r   Úcounts     r   ÚadvanceÚOTTableReader.advance  s   € Ø�Š�EÑŽr   c                 ó   • Xl         g r/   r–   )r   r‘   s     r   ÚseekÚOTTableReader.seek  s   € Ø�r   c                 ó    • U R                  U R                  U R                  U R                  U R                  5      nU R
                  Ul        U$ r/   )Ú	__class__rK   r’   r�   rE   r‘   ©r   Úothers     r   ÚcopyÚOTTableReader.copy  s6   € Ø—‘˜tŸy™y¨$¯/©/¸4¿;¹;ÈÏÉÓVˆØ—H‘HˆŒ	Øˆr   c                 ó‚   • U R                   U-   nU R                  U R                  U R                  XR                  5      $ r/   )r�   rŸ   rK   r’   rE   )r   r�   s     r   ÚgetSubReaderÚOTTableReader.getSubReader  s/   € Ø—‘˜vÑ%ˆØ�~‰~˜dŸi™i¨¯©¸&Ç-Á-ÓPÐPr   c                 ó‚   • U R                   nX2-   n[        R                  " SU 3U R                  X4 5      u  nX@l         U$ ©NÚ>©r‘   ÚstructÚunpackrK   )r   ÚtypecodeÚ
staticSizer‘   Únewposr1   s         r   Ú	readValueÚOTTableReader.readValue  s>   € Ø�h‰hˆØÑ!ˆÜ—=’= 1 X J °·±¸3Ð1FÓG‰ˆØŒØˆr   c                 óà   • U R                   nXCU-  -   n[        R                  " XR                  XE 5      n[        R                  S:w  a  UR                  5         XPl         UR                  5       $ ©NÚbig)r‘   ÚarrayrK   ÚsysÚ	byteorderÚbyteswapÚtolist)r   r­   r®   r˜   r‘   r¯   r1   s          r   Ú	readArrayÚOTTableReader.readArray$  sV   € Ø�h‰hˆØ˜zÑ)Ñ)ˆÜ—’˜H§i¡i°Ð&;Ó<ˆÜ�=‰=˜EÓ!Ø�N‰NÔØŒØ�|‰|‹~Ðr   c                 ó"   • U R                  SSS9$ )NÚbr   ©r®   ©r°   r"   s    r   ÚreadInt8ÚOTTableReader.readInt8-  ó   € Ø�~‰~˜c¨aˆ~Ð0Ð0r   c                 ó$   • U R                  SSUS9$ )Nr½   r   ©r®   r˜   ©rº   r—   s     r   ÚreadInt8ArrayÚOTTableReader.readInt8Array0  ó   € Ø�~‰~˜c¨a°uˆ~Ð=Ð=r   c                 ó"   • U R                  SSS9$ )NÚhr   r¾   r¿   r"   s    r   Ú	readShortÚOTTableReader.readShort3  rÂ   r   c                 ó$   • U R                  SSUS9$ )NrÊ   r   rÄ   rÅ   r—   s     r   ÚreadShortArrayÚOTTableReader.readShortArray6  rÈ   r   c                 ó"   • U R                  SSS9$ )Nr�   r   r¾   r¿   r"   s    r   ÚreadLongÚOTTableReader.readLong9  rÂ   r   c                 ó$   • U R                  SSUS9$ )Nr�   r   rÄ   rÅ   r—   s     r   ÚreadLongArrayÚOTTableReader.readLongArray<  rÈ   r   c                 ó"   • U R                  SSS9$ )NÚBr   r¾   r¿   r"   s    r   Ú	readUInt8ÚOTTableReader.readUInt8?  rÂ   r   c                 ó$   • U R                  SSUS9$ )Nr×   r   rÄ   rÅ   r—   s     r   ÚreadUInt8ArrayÚOTTableReader.readUInt8ArrayB  rÈ   r   c                 ó"   • U R                  SSS9$ )NÚHr   r¾   r¿   r"   s    r   Ú
readUShortÚOTTableReader.readUShortE  rÂ   r   c                 ó$   • U R                  SSUS9$ )NrÞ   r   rÄ   rÅ   r—   s     r   ÚreadUShortArrayÚOTTableReader.readUShortArrayH  rÈ   r   c                 ó"   • U R                  SSS9$ )NÚIr   r¾   r¿   r"   s    r   Ú	readULongÚOTTableReader.readULongK  rÂ   r   c                 ó$   • U R                  SSUS9$ )Nrå   r   rÄ   rÅ   r—   s     r   ÚreadULongArrayÚOTTableReader.readULongArrayN  rÈ   r   c                 ó„   • U R                   nUS-   n[        R                  " SSU R                  X -   5      u  nX l         U$ )Nr   z>ló    rª   ©r   r‘   r¯   r1   s       r   Ú
readUInt24ÚOTTableReader.readUInt24Q  s>   € Ø�h‰hˆØ�q‘ˆÜ—=’=  u¨t¯y©y¸Ð/DÑ'DÓE‰ˆØŒØˆr   c                 ó^   • [        U5       Vs/ s H  o R                  5       PM     sn$ s  snf r/   )Úrangerî   )r   r˜   Ú_s      r   ÚreadUInt24ArrayÚOTTableReader.readUInt24ArrayX  s#   € Ü+0°¬<Ó8ª< a—‘Ö!©<Ñ8Ð8ùÒ8s   Ž*c                 óŽ   • U R                   nUS-   n[        U R                  X 5      n[        U5      S:X  d   U5       eX l         U$ ©Nr   )r‘   r   rK   Úlenrí   s       r   ÚreadTagÚOTTableReader.readTag[  sF   € Ø�h‰hˆØ�q‘ˆÜ�D—I‘I˜cÐ)Ó*ˆÜ�5‹z˜Q‹Ð% Ó%ˆØŒØˆr   c                 óN   • U R                   nX!-   nU R                  X# nX0l         U$ r/   )r‘   rK   )r   r˜   r‘   r¯   r1   s        r   ÚreadDataÚOTTableReader.readDatac  s*   € Ø�h‰hˆØ‘ˆØ—	‘	˜#Ð%ˆØŒØˆr   c                 ó‚   • U R                   (       a  U R                   R                  5       O	[        5       nX#U'   X0l         g r/   ©r’   r¢   Údict©r   rƒ   r1   r`   s       r   Ú__setitem__ÚOTTableReader.__setitem__j  ó*   € Ø*.¯/¯/�—‘×$Ñ$Ô&¼t»vˆØˆd‰Ø�r   c                 óF   • U R                   =(       a    U R                   U   $ r/   ©r’   ©r   rƒ   s     r   Ú__getitem__ÚOTTableReader.__getitem__o  s   € Ø�‰×8 4§?¡?°4Ñ#8Ð8r   c                 óD   • U R                   =(       a    XR                   ;   $ r/   r  r  s     r   Ú__contains__ÚOTTableReader.__contains__r  s   € Ø�‰×: 4¯?©?Ñ#:Ð:r   )rK   r’   r�   r‘   rE   )Nr   N)!r%   r&   r'   r(   rŒ   Ú	__slots__r   r™   rœ   r¢   r¥   r°   rº   rÀ   rÆ   rË   rÎ   rÑ   rÔ   rØ   rÛ   rß   râ   ræ   ré   rî   ró   rø   rû   r  r  r
  r)   r*   r   r   rG   rG     s�   † Ù?àC€Iô!òòòò
Qòòò1ò>ò1ò>ò1ò>ò1ò>ò1ò>ò1ò>òò9òòò ò
9õ;r   rG   c                   ó&   • \ rS rSrS rS rS rSrg)ÚOffsetToWriteriv  c                 ó   • Xl         X l        g r/   )Ú	subWriterÚ
offsetSize©r   r  r  s      r   r   ÚOffsetToWriter.__init__w  s   € Ø"ŒØ$�r   c                 ó°   • [        U 5      [        U5      :w  a  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r/   )rn   ÚNotImplementedr  r  r    s     r   Ú__eq__ÚOffsetToWriter.__eq__{  s?   € Ü�‹:œ˜e›Ó$Ü!Ð!Ø�~‰~ §¡Ñ0×X°T·_±_È×HXÑHXÑ5XÐXr   c                 óD   • [        U R                  U R                  45      $ r/   )Úhashr  r  r"   s    r   Ú__hash__ÚOffsetToWriter.__hash__€  s   € ä�T—^‘^ T§_¡_Ð5Ó6Ð6r   )r  r  N)r%   r&   r'   r(   r   r  r  r)   r*   r   r   r  r  v  s   † ò%òYõ
7r   r  c                   ó  • \ rS rSrSrS+S jrS rS rS rS r	S	 r
S
 rS rS rS rS,S jrS rS rS rS-S jrS rS rS rS rS rS rS rS rS rS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&S.S& jr'S' r(S( r)S) r*S*r+g)/rY   i…  z=Helper class to gather and assemble data for OpenType tables.Nc                 óT   • / U l         S U l        Xl        X l        S U l        SU l        g )Nú<none>)Úitemsr‘   r’   rE   Úparentrƒ   )r   r’   rE   s      r   r   ÚOTTableWriter.__init__ˆ  s(   € ØˆŒ
ØˆŒØ$ŒØ ŒØˆŒØˆ�	r   c                 ó‚   • U R                   (       a  U R                   R                  5       O	[        5       nX#U'   X0l         g r/   rþ   r   s       r   r  ÚOTTableWriter.__setitem__�  r  r   c                 ó    • U R                   U   $ r/   r  r  s     r   r  ÚOTTableWriter.__getitem__•  s   € Ø�‰˜tÑ$Ð$r   c                 ó   • U R                   U	 g r/   r  r  s     r   Ú__delitem__ÚOTTableWriter.__delitem__˜  s   € Ø�O‰O˜DÑ!r   c                 óÐ   • SnU R                    HS  n[        US5      (       a  XR                  -  nM$  [        US5      (       a  XR                  -  nME  U[	        U5      -   nMU     U$ )z<Return the length of this table in bytes, without subtables.r   ÚgetCountDatar  )r  r€   Úsizer  r÷   )r   ÚlÚitems      r   ÚgetDataLengthÚOTTableWriter.getDataLength�  sZ   € àˆØ—J”JˆDÜ�t˜^×,Ñ,Ø—Y‘Y‘’Ü˜˜{×+Ñ+Ø—_‘_Ñ$’àœ˜D›	‘M’ñ ð ˆr   c                 óª  • [        U R                  5      nU R                  n[        U5      n[	        U5       HÐ  nX   n[        US5      (       d  M  UR                  S:X  a&  [        UR                  R                  U-
  5      X'   MP  UR                  S:X  a'   [        UR                  R                  U-
  5      X'   M‡  UR                  S:X  a&  [        UR                  R                  U-
  5      X'   M½  [        UR                  5      e   [!        U5      $ ! [        R                   a'    U R                  UR                  5      n[        U5      ef = f)z;Assemble the data for this writer/table, without subtables.r  r   r   r   )Úlistr  r‘   r÷   rñ   r€   r  Ú	packULongr  Ú
packUShortr«   ÚerrorÚgetOverflowErrorRecordr,   Ú
packUInt24rj   r   )r   r  r‘   ÚnumItemsr�   r-  r2   s          r   ÚgetDataÚOTTableWriter.getData©  s  € ä�T—Z‘ZÓ ˆØ�h‰hˆÜ�u“:ˆÜ�x–ˆAØ‘8ˆDä�t˜[×)Ó)Ø—?‘? aÓ'Ü(¨¯©×);Ñ);¸cÑ)AÓB�E“HØ—_‘_¨Ó)ðJÜ#-¨d¯n©n×.@Ñ.@À3Ñ.FÓ#G˜›ð —_‘_¨Ó)Ü)¨$¯.©.×*<Ñ*<¸sÑ*BÓC�E“Hä$ T§_¡_Ó5Ð5ñ' !ô* ˜ÓÐøô "Ÿ<™<ó Jà.2×.IÑ.IØ ŸN™Nó/Ð+ô 5Ð5HÓIÐIðJús   Â$DÄ;Ec                 ó*  • [        U R                  5      n[        [        [        S.n[        U5       HS  u  p4[        US5      (       d  M  UR                  U;   a  X$R                     " S5      X'   M@  [        UR                  5      e   [        U5      $ )zFAssemble the data for this writer/table with all offset field set to 0)r   r   r   r  r   )
r1  r  r3  r6  r2  Ú	enumerater€   r  rj   r   )r   r  Ú	packFuncsr�   r-  s        r   ÚgetDataForHarfbuzzÚ OTTableWriter.getDataForHarfbuzzÅ  su   € ä�T—Z‘ZÓ ˆÜ"¤z´iÑ@ˆ	Ü  Ö'‰GˆAÜ�t˜[×)Ó)à—?‘? iÓ/Ø(¯©Ò9¸!Ó<�E“Hä$ T§_¡_Ó5Ð5ñ (ô ˜ÓÐr   c                 ó,   • [        U R                  5      $ r/   )r  r  r"   s    r   r  ÚOTTableWriter.__hash__Ó  s   € ä�D—J‘JÓÐr   c                 óH   • U R                  U5      nU[        L a  U$ U(       + $ r/   ©r  r  ©r   r¡   Úresults      r   Ú__ne__ÚOTTableWriter.__ne__×  ó$   € Ø—‘˜UÓ#ˆØ¤>Ò1ˆvÐA¸6´zÐAr   c                 óp   • [        U 5      [        U5      :w  a  [        $ U R                  UR                  :H  $ r/   )rn   r  r  r    s     r   r  ÚOTTableWriter.__eq__Û  s+   € Ü�‹:œ˜e›Ó$Ü!Ð!Ø�z‰z˜UŸ[™[Ñ(Ð(r   c                 óÂ  • [        U S5      n[        U S5      nU(       a	  U(       d  0 nU R                  n[        U5       HŒ  u  pg[        US5      (       a  UR                  5       XV'   M*  [        US5      (       d  M=  UR                  R                  XS9  U(       a  M_  UR                  UR                  UR                  5      XV   l        MŽ     [        U5      U l        g )NÚ	ExtensionÚ	DontSharer*  r  ©ÚshareExtension)r€   r  r;  r*  r  Ú_doneWritingÚ
setdefaultÚtuple)r   ÚinternedTablesrN  ÚisExtensionÚ	dontSharer  r�   r-  s           r   rO  ÚOTTableWriter._doneWritingà  s¼   € ô ˜d KÓ0ˆô ˜D +Ó.ˆ	æž~ØˆNà—
‘
ˆÜ  Ö'‰GˆAÜ�t˜^×,Ñ,Ø×,Ñ,Ó.�“Ü˜˜{×+Ó+Ø—‘×+Ñ+Ø"ð ,ñ ÷ !�yØ)7×)BÑ)BØŸ™¨¯©ó*�E‘HÖ&ñ (ô" ˜5“\ˆ�
r   c                 óN  • SU[        U 5      '   [        U R                  5      n[        [	        U5      5      nUR                  5         [        U S5      nUnU(       a  Uc   S5       eUS 0 p2nSn[        U S5      (       aŠ  [	        U5       HD  n	U R                  U	   n
[        U
S5      (       d  M%  [        U
R                  SS 5      S:X  d  MB  Sn  O   [        W
R                  5      U;  a  U
R                  R                  XU5        O U H†  n	U R                  U	   n
[        U
S5      (       d  M%  U(       a#  U	S	:X  a  [        U
R                  SS 5      S:X  a  MO  [        U
R                  5      U;  a  U
R                  R                  XU5        M†  Mˆ     UR                  U 5        g )
NTrK  zUProgram or XML editing error. Extension subtables cannot contain extensions subtablesFÚsortCoverageLastr  rƒ   ÚCoverager   )Úidr÷   r  r1  rñ   Úreverser€   rH   r  Ú_gatherTablesÚappend)r   ÚtablesÚ	extTablesÚdoner7  ÚiRangerS  Ú
selfTablesrW  r�   r-  s              r   r[  ÚOTTableWriter._gatherTables  s|  € ð ˆŒR�‹X‰ä�t—z‘z“?ˆÜ”e˜H“oÓ&ˆØ�‰Ôä˜d KÓ0ˆàˆ
æàÑ%ðgàfógØ%à&/°°r˜tˆFð !ÐÜ�4Ð+×,Ñ,ä˜8–_�Ø—z‘z !‘}�ä˜D +×.Ó.Ü §¡°¸Ó=ÀÕKà'+Ð$Ùñ %ô �$—.‘.Ó!¨Ó-Ø—‘×,Ñ,¨VÀÕEð ãˆAØ—:‘:˜a‘=ˆDÜ˜4 ×-Ñ-Ùö !Ø˜!“VÜ˜DŸN™N¨F°DÓ9¸ZÓGñ ä�$—.‘.Ó!¨Ó-Ø—‘×,Ñ,¨VÀÖEñ ñ# ð& 	×Ñ˜$Õr   c                 óÄ  • / n/ nUnU H  n	UR                  SSU	45        M     Sn
Sn[        U S5      (       av  [        U R                  5       H]  u  pÍ[	        USS 5      S:X  d  M  Sn
[        U5      U;  a  UR                  XX8U5      =p¸OU[        U5         nUR                  U5          O   SnSn[        U R                  5       HÈ  u  pÍ[        US5      (       a  UnO1[        US5      (       a  XýR                  -  nM:  U[        U5      -   nMJ  [        UR                  5      U;  a  UR                  R                  XX8U5      =pèOU[        UR                  5         nUUR                  U4nUR                  U5        XýR                  -  nMÊ     UR                  U 5        UR                  Xg45        US	-  nXƒ[        U 5      '   U
(       a  UR                  5         U$ )
Nr   FrW  rƒ   rX  Tr  r*  r   )r\  r€   r;  r  rH   rY  Ú_gatherGraphForHarfbuzzr+  r÷   r  r  Úpop)r   r]  Úobj_listr_  ÚobjidxÚvirtual_edgesÚ
real_linksÚvirtual_linksÚitem_idxÚidxrW  Úcoverage_idxr�   r-  Ú	child_idxÚ
offset_posr‘   Ú	real_edges                     r   rd  Ú%OTTableWriter._gatherGraphForHarfbuzzG  sÙ  € Øˆ
ØˆØˆó !ˆCØ× Ñ  ! Q¨ Ö-ñ !ð !ÐØˆÜ�4Ð+×,Ñ,ä$ T§Z¡ZÖ0‘�Ü˜4 ¨Ó.°*Õ<Ø'+Ð$Ü˜$“x tÓ+Ø26×2NÑ2NØ"¨d¸mó3ð ˜ xð (,¬B¨t«H¡~˜Ø!×(Ñ(¨Ô6Ùñ 1ð ˆ	Øˆ
Ü  §¡Ö,‰GˆAÜ�t˜[×)Ñ)Ø ‘Ü˜˜~×.Ñ.ØŸi™iÑ'�
Ùà'¬#¨d«)Ñ3�
Ùä�$—.‘.Ó!¨Ó-Ø'+§~¡~×'MÑ'MØ d°mó(ð �	˜Hð !¤ D§N¡NÓ!3Ñ4�	à˜dŸo™o¨yÐ9ˆIØ×Ñ˜iÔ(ØŸ/™/Ñ)ŠJñ' -ð* 	�‰�dÔØ�‰˜Ð3Ô4Ø�A‰ˆØ!ŒR�‹X‰ÞØ×ÑÔàˆr   c                 ó>  • 0 nU R                  USS9  / n/ n0 nSn/ nU R                  X4XVU5        SnU H  n	X‰l        X‰R                  5       -   nM     / n
U H$  n	U	R	                  5       nU
R                  U5        M&     [        R                  " [        U5      X¤5      $ )a’  The Whole table is represented as a Graph.
Assemble graph data and call Harfbuzz repacker to pack the table.
Harfbuzz repacker is faster and retain as much sub-table sharing as possible, see also:
https://github.com/harfbuzz/harfbuzz/blob/main/docs/repacker.md
The input format for hb.repack() method is explained here:
https://github.com/harfbuzz/uharfbuzz/blob/main/src/uharfbuzz/_harfbuzz.pyx#L1149
TrM  r   )	rO  rd  r‘   r.  r=  r\  rl   Úserialize_with_tagr!   )r   rE   rR  r]  rf  r_  rg  rh  r‘   rI   rK   Ú	tableDatas               r   ri   Ú%OTTableWriter.getAllDataUsingHarfbuzz€  s²   € ð ˆØ×Ñ˜.¸ÐÑ>ØˆØˆØˆØˆØˆØ×$Ñ$ V°tÀ]ÔSð ˆÛˆEØŒIØ×+Ñ+Ó-Ñ-ŠCñ ð ˆÛˆEØ×0Ñ0Ó2ˆIØ�K‰K˜	Ö"ñ ô ×$Ò$¤S¨£]°DÓCÐCr   c                 óð  • U(       a  0 nU R                  U5        / n/ n0 nU R                  X4U5        UR                  5         UR                  5         SnU H  nXgl        XgR	                  5       -   nM     U H  nXgl        XgR	                  5       -   nM     / nU H$  nUR                  5       n	UR                  U	5        M&     U H$  nUR                  5       n	UR                  U	5        M&     [        U5      $ )z+Assemble all data, including all subtables.r   )rO  r[  rZ  r‘   r.  r8  r\  r   )
r   rh   rR  r]  r^  r_  r‘   rI   rK   rt  s
             r   rp   ÚOTTableWriter.getAllDataž  sí   € æØˆNØ×Ñ˜nÔ-ØˆØˆ	ØˆØ×Ñ˜6¨dÔ3Ø�‰ÔØ×ÑÔð ˆÛˆEØŒIØ×+Ñ+Ó-Ñ-ŠCñ ó ˆEØŒIØ×+Ñ+Ó-Ñ-ŠCñ ð ˆÛˆEØŸ™›ˆIØ�K‰K˜	Ö"ñ ó ˆEØŸ™›ˆIØ�K‰K˜	Ö"ñ ô ˜‹Ðr   c                 ó`   • U R                  U R                  U R                  5      nU Ul        U$ r/   )rŸ   r’   rE   r   )r   Ú	subwriters     r   ÚgetSubWriterÚOTTableWriter.getSubWriterÁ  s-   € Ø—N‘N 4§?¡?°D·M±MÓBˆ	àð 	Ôð Ðr   c                 ój   • U R                   R                  [        R                  " SU 3U5      5        g r¨   ©r  r\  r«   Úpack)r   r­   r1   s      r   Ú
writeValueÚOTTableWriter.writeValueË  s%   € Ø�
‰
×Ñœ&Ÿ+š+¨¨(¨ n°eÓ<Õ=r   c                 óÊ   • [         R                   " X5      n[        R                  S:w  a  UR                  5         U R                  R                  UR                  5       5        g r³   )rµ   r¶   r·   r¸   r  r\  Útobytes)r   r­   ÚvaluesÚas       r   Ú
writeArrayÚOTTableWriter.writeArrayÎ  s=   € Ü�KŠK˜Ó)ˆÜ�=‰=˜EÓ!Ø�J‰JŒLØ�
‰
×Ñ˜!Ÿ)™)›+Õ&r   c                 óœ   • SUs=::  a  S:  d   U5       e   U5       eU R                   R                  [        R                  " SU5      5        g )Ni€ÿÿÿé€   z>br}  ©r   r1   s     r   Ú	writeInt8ÚOTTableWriter.writeInt8Ô  sB   € Ø�uÕ"˜sÓ"Ð) EÓ)Ñ"Ð) EÓ)Ð"Ø�
‰
×Ñœ&Ÿ+š+ d¨EÓ2Õ3r   c                 ó(   • U R                  SU5        g )Nr½   ©r…  ©r   rƒ  s     r   ÚwriteInt8ArrayÚOTTableWriter.writeInt8ArrayØ  ó   € Ø�‰˜˜VÕ$r   c                 óœ   • SUs=::  a  S:  d   U5       e   U5       eU R                   R                  [        R                  " SU5      5        g )Ni €ÿÿé €  z>hr}  r‰  s     r   Ú
writeShortÚOTTableWriter.writeShortÛ  sB   € Ø˜Õ& Ó&Ð-¨Ó-Ñ&Ð-¨Ó-Ð&Ø�
‰
×Ñœ&Ÿ+š+ d¨EÓ2Õ3r   c                 ó(   • U R                  SU5        g )NrÊ   r�  rŽ  s     r   ÚwriteShortArrayÚOTTableWriter.writeShortArrayß  r‘  r   c                 ód   • U R                   R                  [        R                  " SU5      5        g )Nz>ir}  r‰  s     r   Ú	writeLongÚOTTableWriter.writeLongâ  ó   € Ø�
‰
×Ñœ&Ÿ+š+ d¨EÓ2Õ3r   c                 ó(   • U R                  SU5        g )Nr�   r�  rŽ  s     r   ÚwriteLongArrayÚOTTableWriter.writeLongArrayå  r‘  r   c                 óœ   • SUs=::  a  S:  d   U5       e   U5       eU R                   R                  [        R                  " SU5      5        g )Nr   é   ú>Br}  r‰  s     r   Ú
writeUInt8ÚOTTableWriter.writeUInt8è  sB   € Ø�EÕ˜CÓÐ& Ó&ÑÐ& Ó&ÐØ�
‰
×Ñœ&Ÿ+š+ d¨EÓ2Õ3r   c                 ó(   • U R                  SU5        g )Nr×   r�  rŽ  s     r   ÚwriteUInt8ArrayÚOTTableWriter.writeUInt8Arrayì  r‘  r   c                 óœ   • SUs=::  a  S:  d   U5       e   U5       eU R                   R                  [        R                  " SU5      5        g )Nr   i   ú>Hr}  r‰  s     r   ÚwriteUShortÚOTTableWriter.writeUShortï  sB   € Ø�EÕ#˜GÓ#Ð* UÓ*Ñ#Ð* UÓ*Ð#Ø�
‰
×Ñœ&Ÿ+š+ d¨EÓ2Õ3r   c                 ó(   • U R                  SU5        g )NrÞ   r�  rŽ  s     r   ÚwriteUShortArrayÚOTTableWriter.writeUShortArrayó  r‘  r   c                 ód   • U R                   R                  [        R                  " SU5      5        g )Nú>Ir}  r‰  s     r   Ú
writeULongÚOTTableWriter.writeULongö  rœ  r   c                 ó(   • U R                  SU5        g )Nrå   r�  rŽ  s     r   ÚwriteULongArrayÚOTTableWriter.writeULongArrayù  r‘  r   c                 ó¦   • SUs=::  a  S:  d   U5       e   U5       e[         R                  " SU5      nU R                  R                  USS  5        g )Nr   é   z>Lr   ©r«   r~  r  r\  )r   r1   r½   s      r   ÚwriteUInt24ÚOTTableWriter.writeUInt24ü  sM   € Ø�EÕ%˜IÓ%Ð, uÓ,Ñ%Ð, uÓ,Ð%Ü�KŠK˜˜eÓ$ˆØ�
‰
×Ñ˜!˜A˜B˜%Õ r   c                 ó8   • U H  nU R                  U5        M     g r/   )r¹  )r   rƒ  r1   s      r   ÚwriteUInt24ArrayÚOTTableWriter.writeUInt24Array  s   € ÛˆEØ×Ñ˜UÖ#ò r   c                 ó˜   • [        U5      R                  5       n[        U5      S:X  d   U5       eU R                  R	                  U5        g rö   )r   r‚  r÷   r  r\  )r   Útags     r   ÚwriteTagÚOTTableWriter.writeTag  s;   € Ü�#‹h×ÑÓ ˆÜ�3‹x˜1‹}Ð!˜cÓ!ˆ}Ø�
‰
×Ñ˜#Õr   c                 óL   • U R                   R                  [        X5      5        g r/   )r  r\  r  r  s      r   ÚwriteSubTableÚOTTableWriter.writeSubTable
  s   € Ø�
‰
×Ñœ.¨Ó?Õ@r   c                 óP   • [        XX4S9nU R                  R                  U5        U$ )N)r+  r1   )ÚCountReferencer  r\  )r   rI   rƒ   r+  r1   Úrefs         r   ÚwriteCountReferenceÚ!OTTableWriter.writeCountReference  s%   € Ü˜U¨tÑAˆØ�
‰
×Ñ˜#ÔØˆ
r   c                 óh   • [         R                  " U4U-   6 nU R                  R                  U5        g r/   r¸  )r   Úformatrƒ  rK   s       r   ÚwriteStructÚOTTableWriter.writeStruct  s)   € Ü�{Š{˜V˜I¨Ñ.Ð/ˆØ�
‰
×Ñ˜$Õr   c                 ó:   • U R                   R                  U5        g r/   )r  r\  )r   rK   s     r   Ú	writeDataÚOTTableWriter.writeData  s   € Ø�
‰
×Ñ˜$Õr   c                 óþ  • S =n=n=pEU R                   S:X  a  UR                  nGOÁU R                   S:X  a  U R                  nUR                  nGO—[        USS5      n[        US5      (       a  UR                  nU R                   S:X  a$  U R                  R                  nU R                  nGO9U R                   S:X  a7  U R                  R                  R                  nU R                  R                  nOòSR                  U R                   U/5      nU R                  nU(       aR  UR                   S	;  aB  SR                  UR                   U/5      nUR                  nU(       a  UR                   S	;  a  MB  U(       ai  UR                   S:X  a7  UR                  R                  R                  nUR                  R                  nO"UR                  R                  nUR                  n[        U R                  X#XE45      $ )
NÚ
LookupListÚLookuprƒ   r  ÚrepeatIndexÚSubTableÚExtSubTableÚ.)rÖ  rÕ  )rƒ   rÔ  rH   r€   r   Újoinr   rE   )r   r-  r   r   r   r   Úp1s          r   r5  Ú$OTTableWriter.getOverflowErrorRecord  s‘  € ØAEÐEˆÐE˜-ÐE¨(Ø�9‰9˜Ó$Ø"×.Ñ.ŠOØ�Y‰Y˜(Ó"Ø"×.Ñ.ˆOØ ×,Ñ,ŠMä˜t V¨XÓ6ˆHÜ�t˜]×+Ñ+Ø ×,Ñ,�	Ø�y‰y˜JÓ&Ø"&§+¡+×"9Ñ"9�Ø $× 0Ñ 0’Ø—‘˜mÓ+Ø"&§+¡+×"4Ñ"4×"@Ñ"@�Ø $§¡× 7Ñ 7‘àŸ8™8 T§Y¡Y°Ð$9Ó:�Ø—[‘[�Þ˜RŸW™WÐ,GÓGØ"Ÿx™x¨¯©°(Ð(;Ó<�HØŸ™�Bö ˜RŸW™WÐ,GÕGö Ø—w‘w -Ó/Ø*,¯)©)×*:Ñ*:×*FÑ*F˜Ø(*¯	©	×(=Ñ(=™à*,¯)©)×*?Ñ*?˜Ø(*¯©˜ä"Ø�]‰]˜O¸HÐPó
ð 	
r   )r  r’   rƒ   r   r‘   rE   ©NN©Fr‹   )r   N),r%   r&   r'   r(   rŒ   r   r  r  r'  r.  r8  r=  r  rE  r  rO  r[  rd  ri   rp   rz  r  r…  rŠ  r�  r”  r—  rš  rž  r£  r¦  rª  r­  r±  r´  r¹  r¼  rÀ  rÃ  rÈ  rÌ  rÏ  r5  r)   r*   r   r   rY   rY   …  sÊ   † ÙGôò ò
%ò"ò

ò ò8 ò òBò)ô
%"òN> ò@7òrDô<òFò>ò'ò4ò%ò4ò%ò4ò%ò4ò%ò4ò%ò4ò%ò!ò
$òò
Aôò
 ò õ!
r   rY   c                   ó4   • \ rS rSrSrS	S jrS rS rS rSr	g)
rÆ  i=  z8A reference to a Count value, not a count of references.Nc                 óR   • Xl         X l        X0l        Ub  U R                  U5        g g r/   )rI   rƒ   r+  ÚsetValue)r   rI   rƒ   r+  r1   s        r   r   ÚCountReference.__init__@  s(   € ØŒ
ØŒ	ØŒ	ØÑØ�M‰M˜%Õ ð r   c                 óp   • U R                   nU R                  nX#   c  XU'   g X#   U:X  d   X2U   U45       eg r/   ©rI   rƒ   )r   r1   rI   rƒ   s       r   rß  ÚCountReference.setValueG  sA   € Ø—
‘
ˆØ�y‰yˆØ‰;ÑØ�$ŠKà‘; %Ó'ÐC¨$°d±¸UÐ)CÓCÑ'r   c                 ó4   • U R                   U R                     $ r/   râ  r"   s    r   ÚgetValueÚCountReference.getValueO  s   € Ø�z‰z˜$Ÿ)™)Ñ$Ð$r   c                 óˆ   • U R                   U R                     nUc  Sn[        [        [        S.U R
                     " U5      $ )Nr   )r   r   r   )rI   rƒ   Ú	packUInt8r3  r2  r+  )r   Úvs     r   r*  ÚCountReference.getCountDataR  s9   € Ø�J‰J�t—y‘yÑ!ˆØ‰9ØˆAÜ¤´	Ñ:¸4¿9¹9ÒEÀaÓHÐHr   )rƒ   r+  rI   rÛ  )
r%   r&   r'   r(   rŒ   r   rß  rå  r*  r)   r*   r   r   rÆ  rÆ  =  s   † ÙBô!òDò%õIr   rÆ  c                 ó0   • [         R                  " SU 5      $ )Nr¢  ©r«   r~  r0   s    r   rè  rè  Y  ó   € Ü�;Š;�t˜UÓ#Ð#r   c                 ó0   • [         R                  " SU 5      $ )Nr©  rì  r0   s    r   r3  r3  ]  rí  r   c                 óh   • SU s=::  a  S:  d   U 5       e   U 5       e[         R                  " SU 5      $ )Nr   l        r°  rì  r0   s    r   r2  r2  a  s6   € Ø�Õ#˜Ó#Ð* UÓ*Ñ#Ð* UÓ*Ð#Ü�;Š;�t˜UÓ#Ð#r   c                 ón   • SU s=::  a  S:  d   U 5       e   U 5       e[         R                  " SU 5      SS  $ )Nr   r·  r°  r   rì  r0   s    r   r6  r6  f  s=   € Ø�Õ!˜	Ó!Ð( 5Ó(Ñ!Ð( 5Ó(Ð!Ü�;Š;�t˜UÓ# A BÐ'Ð'r   c                   ó¾   • \ rS rSrSrS rSS jrS r\S 5       r	S r
S rSS
 jrS rS rS rS rSS jrS rS rS rS r " S S\5      rS\\   4S jrS rSrg	)Ú	BaseTableik  z0Generic base class for all OpenType (sub)tables.c                 ó´   • U R                   R                  S5      nU(       a,  U ?U R                  nU ?U R	                  X#5        [        X5      $ [        U5      e©NrM   )Ú__dict__ÚgetrM   rL   rJ   rH   ÚAttributeError)r   ÚattrrM   rL   s       r   Ú__getattr__ÚBaseTable.__getattr__n  sN   € Ø—‘×"Ñ" 8Ó,ˆÞØ�Ø—9‘9ˆDØ�	Ø�N‰N˜6Ô(Ü˜4Ó&Ð&ä˜TÓ"Ð"r   c                 óþ   • U R                   R                  S5      nU(       a!  U ?U R                  nU ?U R	                  X#5        U(       a3  U R                  5        H  nUR                  R                  U5        M      g g rô  )rõ  rö  rM   rL   rJ   ÚiterSubTablesr1   r‰   )r   rˆ   rM   rL   Úsubtables        r   r‰   ÚBaseTable.ensureDecompiledy  se   € Ø—‘×"Ñ" 8Ó,ˆÞØ�Ø—9‘9ˆDØ�	Ø�N‰N˜6Ô(ÞØ ×.Ñ.Ö0�Ø—‘×/Ñ/°Ö8ò 1ð r   c                 ó²   • SU R                   ;   a<  U R                   R                  5       nU R                   S   R                  5       US'   U$ U R                   $ rô  )rõ  r¢   )r   r`   s     r   Ú__getstate__ÚBaseTable.__getstate__„  sL   € ð �t—}‘}Ó$Ø—M‘M×&Ñ&Ó(ˆEØ"Ÿm™m¨HÑ5×:Ñ:Ó<ˆE�(‰OØˆLØ�}‰}Ðr   c                 ó  • SnU R                    Hs  nUR                  U5      nU[        L a  [        s  $ SnUR                  (       a4  UR                  U;   a  XR                     UR                  -   nO[        s  $ X$U-  -  nMu     U$ )Nr   r   )Ú
convertersÚgetRecordSizer  ÚrepeatÚaux)ÚclsrM   Ú	totalSizeÚconvr+  Ú
countValues         r   r  ÚBaseTable.getRecordSize�  s{   € àˆ	Ø—N”NˆDØ×%Ñ% fÓ-ˆDØ”~Ò%Ü%Ò%ØˆJØ�{�{Ø—;‘; &Ó(Ø!'¯©Ñ!4°t·x±xÑ!?‘Jä)Ò)Ø 
Ñ*Ñ*ŠIñ #ð Ðr   c                 ó   • U R                   $ r/   )r  r"   s    r   ÚgetConvertersÚBaseTable.getConverters�  s   € Ø�‰Ðr   c                 ó    • U R                   U   $ r/   )ÚconvertersByNamer  s     r   ÚgetConverterByNameÚBaseTable.getConverterByName   s   € Ø×$Ñ$ TÑ*Ð*r   Nc                 ór  • U R                  5        GHT  nUR                  (       a�  [        XR                  5      (       d  [	        XR                  / 5        [        [        XR                  5      5      UR                  -
  n U R                  UR                  5      n[	        XR                  U5        M¤  UR                  (       a(  [        UR                  S U R                  5      (       d  MÝ  [        XR                  5      (       a  Mù  [        US5      (       a  [	        XR                  S 5        [        US5      (       d  GM4  [	        XR                  UR                  5        GMW     g ! [         aA    U(       a5  UR                  U;   a!  XR                     R                  U5         GMœ   GM    GM¤  f = f)NÚwriteNullOffsetÚDEFAULT)r  r  r€   rƒ   Úsetattrr÷   rH   r  r  ÚKeyErrorrß  Úevalrõ  r  )r   Ú
propagatorr	  r
  Ú
count_convs        r   r‚   ÚBaseTable.populateDefaults£  s/  € Ø×&Ñ&×(ˆDØ�{�{Ü˜t§Y¡Y×/Ñ/Ü˜D§)¡)¨RÔ0Ü ¤¨¯y©yÓ!9Ó:¸T¿X¹XÑE�
ðEØ!%×!8Ñ!8¸¿¹Ó!E�JÜ˜D§+¡+¨zÖ:ð —8—8¤D¨¯©°4¸¿¹×$GÑ$GÙÜ˜4§¡×+Ñ+ÙÜ˜4Ð!2×3Ñ3Ü˜D§)¡)¨TÔ2ô ˜4 ×+Ô+ä˜D§)¡)¨T¯\©\×:ò1 )øô  ó Eæ! d§k¡k°ZÓ&?Ø"§;¡;Ñ/×8Ñ8¸×DÐDó '@“zðEús   Â1E+Å+>F6Æ5F6c                 óâ  • U R                  U5        0 nX0l        U R                  5        GHË  nUR                  S:X  a  UR	                  UR
                  US   5      nUR                  S:X  a  UR	                  UR
                  US   5      nUR                  S:X  a  UR	                  US   5      nUR                  S:X  a  UR	                  UR
                  US   5      n UR                  (       aˆ  [        UR                  [        5      (       a  UR                  nO-UR                  U;   a  X4R                     nOXR                     nXTR                  -  nUR                  XX55      X4R                  '   GMO  UR                  (       a  [        UR                  S U5      (       d  GM  UR                  XU5      X4R                  '   UR                  (       a  X4R                     XR                  '   GMË  GMÎ     [!        U S	5      (       a  U R#                  X25        U ?g U R$                  R'                  U5        U ?g ! [         a'  nUR                  nUR                  U4-   Ul        e S nAff = f)
NrÕ  Ú
LookupTyperÖ  ÚExtensionLookupTypeÚFeatureParamsÚ
FeatureTagÚ	SubStructÚ	MorphTypeÚpostRead)Ú
readFormatÚ_BaseTable__rawTabler  rƒ   ÚgetConverterrE   r  Ú
isinstanceÚintr  rº   r  ÚreadÚisPropagatedÚ	ExceptionÚargsr€   r#  rõ  Úupdate)r   rM   rL   rI   r	  r
  rd   rƒ   s           r   rJ   ÚBaseTable.decompile¾  sð  € Ø�‰˜ÔØˆØŒØ×&Ñ&×(ˆDØ�y‰y˜JÓ&Ø×(Ñ(¨¯©¸%ÀÑ:MÓN�Ø�y‰y˜MÓ)Ø×(Ñ(¨¯©¸%Ð@UÑ:VÓW�Ø�y‰y˜OÓ+Ø×(Ñ(¨°Ñ)=Ó>�Ø�y‰y˜KÓ'Ø×(Ñ(¨¯©¸%ÀÑ:LÓM�ðØ—;—;Ü! $§+¡+¬s×3Ñ3Ø%)§[¡[™
ØŸ™¨Ó-Ø%*¯;©;Ñ%7™
ð &,¯K©KÑ%8˜
Ø§(¡(Ñ*�JØ'+§~¡~°fÀEÓ'V�EŸ)™)Ô$à—x—x¬¨T¯X©X°t¸U×(CÑ(CÚ Ø'+§y¡y°¸uÓ'E�EŸ)™)Ñ$Ø×(×(Ø,1·)±)Ñ,<˜Ÿy™yÔ)ò )ñ1 )ô> �4˜×$Ñ$Ø�M‰M˜%Ô&ð ‰Oð �M‰M× Ñ  Ô'à‰Oøô ó Ø—y‘y�ØŸ™ 4 'Ñ)�”Øûðús&   Ã BH=Å9-H=Æ)A	H=È=
I.É"I)É)I.c                 óF	  • U R                  5         [        U S5      (       a8  [        U S5      (       + nU R                  U5      nU=(       a    [        U S5      nOSnU R                  R	                  5       nU R                  5        Hi  nUR                  (       d  M  UR                  (       d  M)  UR                  UR                  5      n[        U[        5      (       d  M[  XaUR                  '   Mk     [        U S5      (       a  SUl        [        U S5      (       a  SUl        [        U R                  S5      (       a(  US   R                  U R                  R                   5        U R#                  U5        U R                  5        GHŠ  nUR                  UR                  5      nUR$                  (       aÌ  Uc  / n['        U5      UR(                  -
  n[        UR$                  [*        5      (       a9  ['        U5      UR$                  :X  d   S	UR$                  ['        U5      4-  5       eOBUR$                  U;   a  [        XER$                  US
9  OXR$                     R                  U5         UR-                  XXF5        Mü  UR                  (       a¯  [        U[        5      (       aA  Un	UR2                  U	l        UR7                  U	5        U	R9                  5       XER                  '   O4UR;                  XER                  UR2                  5      n	S XER                  '   UR                  (       a  X‘UR                  '   GM¹  GM¼  UR<                  (       aX  UR                  U;  a  S XER                  '   UR;                  XER                  UR2                  XER                     5      n	X‘S'   GM%  UR(                  (       a  [?        UR(                  S U5      (       d  GMU   URA                  XXF5        UR                  (       d  GM|  XaUR                  '   GM�     U(       a  U ?"g g ! [.         a(  nUR0                  UR                  S-   4-   Ul        e S nAff = f! [.         a@  nUb  UR                  RB                  OUR                  n
UR0                  U
4-   Ul        e S nAff = f)NÚpreWriteÚFormatFrW  r   rL  Tr  zexpected %d values, got %dr0   z[])#r‰   r€   r0  rõ  r¢   r  ÚisCountr*  rö  rƒ   r'  rÆ  rW  rL  rŸ   rß  r  ÚwriteFormatr  r÷   r  r(  r…  r+  r,  r®   r+  rÏ  rå  rÈ  ÚisLookupTyper  Úwriter%   r1  )r   rc   rL   ÚdeleteFormatrI   r	  r1   r
  rd   rÇ  rƒ   s              r   rZ   ÚBaseTable.compileè  s¤  € Ø×ÑÔô �4˜×$Ñ$Ü& t¨XÓ6Ô6ˆLØ—M‘M $Ó'ˆEØ'×C¬G°D¸(Ó,C‰Là ˆLØ—M‘M×&Ñ&Ó(ˆEð ×&Ñ&Ö(ˆDØ�|�|‰| × 1× 1Ñ 1ØŸ	™	 $§)¡)Ó,�Ü˜e¤^×4Ó4Ø(-˜4Ÿ9™9Ó%ñ	 )ô �4Ð+×,Ñ,Ø&'ˆFÔ#ä�4˜×%Ñ%Ø#ˆFÔä�4—>‘> <×0Ñ0Ø�<Ñ ×)Ñ)¨$¯.©.×*CÑ*CÔDà×Ñ˜Ô Ø×&Ñ&×(ˆDØ—I‘IØ—	‘	óˆEð �{�{Ø‘=Ø�EÜ  ›Z¨$¯(©(Ñ2�
Ü˜dŸk™k¬3×/Ñ/Ü˜u›:¨¯©Ó4ð Ð6RØŸ™Ü˜E›
ðVñ 7ó Ñ4ð —[‘[ EÓ)Ü" 5¯+©+¸ZÓHð Ÿ;™;Ñ'×0Ñ0°Ô<ðØ—O‘O F°%Ö?ð ——ô ˜e¤^×4Ñ4Ø�CØ#Ÿ™�C”HØ×$Ñ$ SÔ)Ø'*§|¡|£~�EŸ)™)Ò$à ×4Ñ4°U¿I¹IÀtÇÁÓW�CØ'+�EŸ)™)Ñ$Ø×$×$Ø(+˜4Ÿ9™9Ô%ò %à×"×"ð —9‘9 EÓ)Ø'+�EŸ)™)Ñ$Ø×0Ñ0ØŸ9™9 d§o¡o°u¿Y¹YÑ7Gó�ð (+�|Ô$à—8—8¤D¨¯©°4¸×$?Ñ$?ÚðØ—J‘J˜v¨UÔ:ð
 ×$×$Ò$Ø(-˜4Ÿ9™9Ô%ñ )öB Ø‘ð øô[ !ó ØŸV™V t§y¡y°4Ñ'7Ð&9Ñ9�A”FØûðûôL !ó Ø7<Ñ7H˜5Ÿ?™?×3Ò3ÈdÏiÉi�DØŸV™V t gÑ-�A”FØûðús0   É/P!ÏQÐ!
QÐ+#QÑQÑ
R Ñ ;RÒR c                 ó   • g r/   r*   ©r   rM   s     r   r$  ÚBaseTable.readFormatM  ó   € Ør   c                 ó   • g r/   r*   rt   s     r   r3  ÚBaseTable.writeFormatP  r;  r   c                 ó8  • U(       a  UOU R                   R                  nUc  / n[        U S5      (       a  USU R                  4/-   nUR	                  XS5        UR                  5         U R                  X5        UR                  U5        UR                  5         g )Nr1  )rŸ   r%   r€   r1  ÚbegintagÚnewliner|   Úendtag)r   Ú	xmlWriterrL   r„   rƒ   Ú	tableNames         r   r}   ÚBaseTable.toXMLS  s‚   € Þ ‘D d§n¡n×&=Ñ&=ˆ	Ø‰=ØˆEÜ�4˜×"Ñ"Ø˜h¨¯©Ð4Ð5Ñ5ˆEØ×Ñ˜9Ô,Ø×ÑÔØ�‰�IÔ$Ø×Ñ˜Ô#Ø×ÑÕr   c           
      óÂ  • U R                  5        HË  nUR                  (       aL  [        XR                  / 5      n[	        U5       H%  u  pVUR                  XXcR                  SU4/5        M'     M`  UR                  (       a'  [        UR                  S [        U 5      5      (       d  M˜  [        XR                  S 5      nUR                  XXCR                  / 5        MÍ     g )NÚindex)	r  r  rH   rƒ   r;  ÚxmlWriter  r  Úvars)r   rB  rL   r	  r1   r�   r-  s          r   r|   ÚBaseTable.toXML2_  s¤   € ð ×&Ñ&Ö(ˆDØ�{�{Ü §i¡i°Ó4�Ü(¨Ö/‘G�AØ—M‘M )°4¿¹ÀgÈqÀ\ÀNÖSó  0ð —8—8¤D¨¯©°4¼¸d»×$DÑ$DÙÜØŸ)™) Tó�ð —‘˜i¨u·i±iÀÖDò )r   c                 ó6  •  U R                  U5      nUR                  X#U5      nUR                  bC  [	        XR
                  S 5      nUc  / n[        XR
                  U5        UR                  U5        g [        XR
                  U5        g ! [         a    e f = fr/   )r  r  ÚxmlReadr  rH   rƒ   r  r\  )r   rƒ   r„   r…   rL   r	  r1   Úseqs           r   r�   ÚBaseTable.fromXMLp  s‹   € ð	Ø×*Ñ*¨4Ó0ˆDð —‘˜U¨TÓ2ˆð �;‰;Ñ"Ü˜$§	¡	¨4Ó0ˆCØ‰{Ø�Ü˜Ÿi™i¨Ô-Ø�J‰J�uÕä�DŸ)™) UÕ+øô ó 	Øð	ús   ‚B ÂBc                 óH   • U R                  U5      nU[        L a  U$ U(       + $ r/   rB  rC  s      r   rE  ÚBaseTable.__ne__‚  rG  r   c                 ó°   • [        U 5      [        U5      :w  a  [        $ U R                  5         UR                  5         U R                  UR                  :H  $ r/   )rn   r  r‰   rõ  r    s     r   r  ÚBaseTable.__eq__†  sC   € Ü�‹:œ˜e›Ó$Ü!Ð!à×ÑÔØ×ÑÔ à�}‰} §¡Ñ.Ð.r   c                   óB   • \ rS rSr% Sr\\S'   S\S'   Sr\\	   \S'   Sr
g)	ÚBaseTable.SubTableEntryi�  zSee BaseTable.iterSubTables()rƒ   rò  r1   NrF  r*   )r%   r&   r'   r(   rŒ   r!   Ú__annotations__rF  r   r(  r)   r*   r   r   ÚSubTableEntryrS  �  s   ‡ Ù+à‹	ØÓØ#ˆˆx˜‰}Ö#r   rU  Úreturnc              #   ó>  ^ ^#   • T R                  5        H�  nUR                  m[        T TS5      nUc  M!  [        U[        5      (       a  T R                  TU5      v •  ML  [        U[        5      (       d  Mc  UU 4S j[        U5       5        Sh  v•N   Mƒ     g N	7f)a÷  Yield (name, value, index) namedtuples for all subtables of current table.

A sub-table is an instance of BaseTable (or subclass thereof) that is a child
of self, the current parent table.
The tuples also contain the attribute name (str) of the of parent table to get
a subtable, and optionally, for lists of subtables (i.e. attributes associated
with a converter that has a 'repeat'), an index into the list containing the
given subtable value.
This method can be useful to traverse trees of otTables.
Nc              3   óv   >#   • U  H.  u  p[        U[        5      (       d  M  TR                  TX!S 9v •  M0     g7f))rF  N)r'  rò  rU  )Ú.0r�   ré  rƒ   r   s      €€r   Ú	<genexpr>Ú*BaseTable.iterSubTables.<locals>.<genexpr>©  s6   øé € ð â 0™˜Ü! !¤Y×/ó 9�D×&Ñ& t¨QÐ&Õ8Ú 0ùs   ƒ9¢9)r  rƒ   rH   r'  rò  rU  r1  r;  )r   r	  r1   rƒ   s   `  @r   rü  ÚBaseTable.iterSubTables–  sˆ   ùé € ð ×&Ñ&Ö(ˆDØ—9‘9ˆDÜ˜D $¨Ó-ˆEØ‰}ÙÜ˜%¤×+Ñ+Ø×(Ñ(¨¨uÓ5Ô5Ü˜E¤4×(Ó(õä )¨%Ô 0ó÷ ò ò )ñùs   „A0BÁ8BÂBÂ
Bc                 ó,   • [        U R                  5      $ r/   )ÚgetVariableAttrsrŸ   r"   s    r   r^  ÚBaseTable.getVariableAttrs°  s   € Ü §¡Ó/Ð/r   )Ú
__rawTablerÜ  r/   rÛ  )r%   r&   r'   r(   rŒ   rù  r‰   r   Úclassmethodr  r  r  r‚   rJ   rZ   r$  r3  r}   r|   r�   rE  r  r   rU  r
   rü  r^  r)   r*   r   r   rò  rò  k  s‹   † Ù:ò	#ô	9òð ñó ðòò+ô;ò6(òTcòJòô
òEò",ò$Bò/ô$˜
ô $ð˜x¨Ñ6ô õ40r   rò  c                   óP   • \ rS rSrSr\S 5       rS rS rS r	S r
SS	 jrS
 rSrg)ÚFormatSwitchingBaseTablei´  zrMinor specialization of BaseTable, for tables that have multiple
formats, eg. CoverageFormat1 vs. CoverageFormat2.c                 ó   • [         $ r/   )r  )r  rM   s     r   r  Ú&FormatSwitchingBaseTable.getRecordSize¸  s   € äÐr   c                 óŒ   •  U R                   nU R                  R                  U R                   / 5      $ ! [         a    / s $ f = fr/   )r1  r÷  r  rö  )r   Úfmts     r   r  Ú&FormatSwitchingBaseTable.getConverters¼  sE   € ð	Ø—+‘+ˆCð �‰×"Ñ" 4§;¡;°Ó3Ð3øô ó 	ð ŠIð	ús   ‚4 ´AÁAc                 ó:   • U R                   U R                     U   $ r/   )r  r1  r  s     r   r  Ú+FormatSwitchingBaseTable.getConverterByNameÈ  s   € Ø×$Ñ$ T§[¡[Ñ1°$Ñ7Ð7r   c                 ó.   • UR                  5       U l        g r/   )rß   r1  r9  s     r   r$  Ú#FormatSwitchingBaseTable.readFormatË  s   € Ø×'Ñ'Ó)ˆ�r   c                 ó:   • UR                  U R                  5        g r/   )rª  r1  rt   s     r   r3  Ú$FormatSwitchingBaseTable.writeFormatÎ  s   € Ø×Ñ˜4Ÿ;™;Õ'r   Nc                 ó2   • [         R                  XX#U5        g r/   )rò  r}   )r   rB  rL   r„   rƒ   s        r   r}   ÚFormatSwitchingBaseTable.toXMLÑ  s   € Ü�‰˜¨°dÕ;r   c                 óB   • [        U R                  U R                  5      $ r/   )r^  rŸ   r1  r"   s    r   r^  Ú)FormatSwitchingBaseTable.getVariableAttrsÔ  s   € Ü §¡°·±Ó<Ð<r   ©r1  rÛ  )r%   r&   r'   r(   rŒ   ra  r  r  r  r$  r3  r}   r^  r)   r*   r   r   rc  rc  ´  s9   † ñ9ð ñó ðò
4ò8ò*ò(ô<õ=r   rc  c                   ó    • \ rS rSrS rS rSrg)ÚUInt8FormatSwitchingBaseTableiØ  c                 ó.   • UR                  5       U l        g r/   )rØ   r1  r9  s     r   r$  Ú(UInt8FormatSwitchingBaseTable.readFormatÙ  s   € Ø×&Ñ&Ó(ˆ�r   c                 ó:   • UR                  U R                  5        g r/   )r£  r1  rt   s     r   r3  Ú)UInt8FormatSwitchingBaseTable.writeFormatÜ  s   € Ø×Ñ˜$Ÿ+™+Õ&r   rs  N)r%   r&   r'   r(   r$  r3  r)   r*   r   r   ru  ru  Ø  s   † ò)õ'r   ru  )Úuint16Úuint8c                 óP   •  [         U    $ ! [         a    [        SU < 35      ef = f)NzUnsupported format type: )ÚformatSwitchingBaseTablesr  Ú	TypeError)Ú
formatTypes    r   Ú getFormatSwitchingBaseTableClassr€  æ  s7   € ðDÜ(¨Ñ4Ð4øÜó DÜÐ3°J±>ÐBÓCÐCðDús   ‚ ‹%r  rg  rV  c                 óˆ  • [        U [        5      (       d  [        U 5      e[        U [        5      (       a+  Uc  [        SU R                   35      eU R
                  U   nOU R
                  nSU;  a  g0 nUR                  5        H  u  pEUR                  5       nUc  M  XcU'   M      [        [        X3R                  S95      $ )zÄReturn sequence of variable table field names (can be empty).

Attributes are deemed "variable" when their otData.py's description contain
'VarIndexBase + {offset}', e.g. COLRv1 PaintVar* tables.
z''fmt' is required for format-switching ÚVarIndexBaser*   )Úkey)Ú
issubclassrò  r~  rc  r%   r  r  ÚgetVarIndexOffsetrQ  Úsortedr  )r  rg  r  ÚvarAttrsrƒ   r	  r�   s          r   r^  r^  î  s¸   € ô �cœ9×%Ñ%Ü˜‹nÐÜ�#Ô/×0Ñ0Ø‰;ÜÐEÀcÇlÁlÀ^ÐTÓUÐUØ×)Ñ)¨#Ñ.‰
à×)Ñ)ˆ
à˜ZÓ'ØØ€HØ ×&Ñ&Ö(‰
ˆØ×'Ñ'Ó)ˆØÓØ#�T‹Nñ )ô ”˜×&:Ñ&:Ñ;Ó<Ð<r   ))r   Ú
XPlacementr   r   )r   Ú
YPlacementr   r   )r   ÚXAdvancer   r   )é   ÚYAdvancer   r   )é   Ú
XPlaDevicer   r   )é    Ú
YPlaDevicer   r   )é@   Ú
XAdvDevicer   r   )rˆ  Ú
YAdvDevicer   r   )r¡  Ú	Reserved1r   r   )i   Ú	Reserved2r   r   )i   Ú	Reserved3r   r   )i   Ú	Reserved4r   r   )i   Ú	Reserved5r   r   )i    Ú	Reserved6r   r   )i @  Ú	Reserved7r   r   )r“  Ú	Reserved8r   r   c                  ó6   • 0 n [          H  u  pp4XU4X'   M     U $ r/   )ÚvalueRecordFormat)ÚdÚmaskrƒ   ÚisDeviceÚsigneds        r   Ú
_buildDictr¢  &  s'   € Ø
€Aß(9Ñ$ˆ�HØ &Ð(ˆ‹ñ ):à€Hr   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚValueRecordFactoryi0  z6Given a format code, this object convert ValueRecords.c                 óp   • / n[          H$  u  p4pVX-  (       d  M  UR                  XEU45        M&     X l        g r/   )r�  r\  rË  )r   ÚvalueFormatrË  rŸ  rƒ   r   r¡  s          r   r   ÚValueRecordFactory.__init__3  s7   € Øˆß,=Ñ(ˆD˜Ø×!Ñ!Ø—‘˜t¨vÐ6Ö7ñ ->ð �r   c                 ó,   • [        U R                  5      $ r/   )r÷   rË  r"   s    r   Ú__len__ÚValueRecordFactory.__len__:  s   € Ü�4—;‘;ÓÐr   c                 óT  • U R                   nU(       d  g [        5       nU Hƒ  u  pVnU(       a  UR                  5       nOUR                  5       nU(       aB  U(       a9  SSKJn	  UR                  U5      n
[        X•5      " 5       nUR                  X¢5        OS n[        XEU5        M…     U$ ©Nr   rB   )
rË  ÚValueRecordrË   rß   rF   rC   r¥   rH   rJ   r  )r   rM   rL   rË  ÚvalueRecordrƒ   r   r¡  r1   rC   Ú	subReaders              r   ÚreadValueRecordÚ"ValueRecordFactory.readValueRecord=  s�   € Ø—‘ˆÞØÜ!“mˆÛ&,Ñ"ˆD˜FÞØ×(Ñ(Ó*‘à×)Ñ)Ó+�ÞÞÝ*à &× 3Ñ 3°EÓ :�IÜ# HÔ3Ó5�EØ—O‘O IÕ4à �EÜ�K uÖ-ñ '-ð Ðr   c                 óF  • U R                    H‘  u  pEn[        X4S5      nU(       aM  U(       a3  UR                  5       nUR                  USS9  UR	                  X‚5        MS  UR                  S5        Mf  U(       a  UR                  U5        M€  UR                  U5        M“     g )Nr   r   )r  )rË  rH   rz  rÃ  rZ   rª  r”  )	r   rc   rL   r®  rƒ   r   r¡  r1   r  s	            r   ÚwriteValueRecordÚ#ValueRecordFactory.writeValueRecordS  s�   € Ø&*§k¤kÑ"ˆD˜FÜ˜K¨qÓ1ˆEÞÞØ &× 3Ñ 3Ó 5�IØ×(Ñ(¨¸qÐ(ÑAØ—M‘M )Ö2à×&Ñ& qÖ)ÞØ×!Ñ! %Ö(à×"Ñ" 5Ö)ò '2r   )rË  N)
r%   r&   r'   r(   rŒ   r   r©  r°  r³  r)   r*   r   r   r¤  r¤  0  s   † Ù@òò òõ,*r   r¤  c                   óF   • \ rS rSrSS jrS rS rSS jrS rS r	S	 r
S
rg)r­  ic  Nc                 ó<  • Ubv  [          H&  u  p4pVX-  (       d  M  [        XU(       a  S OS5        M(     UbB  UR                  R                  5        H#  u  px[	        X5      (       d  M  [        XU5        M%     g g Ub   UR                  R                  5       U l        g g ©Nr   )r�  r  rõ  r  r€   r¢   )	r   r¦  ÚsrcrŸ  rƒ   r   r¡  rƒ  Úvals	            r   r   ÚValueRecord.__init__f  sŒ   € ØÑ"ß0AÑ,�˜HØ×%Ñ%Ü˜D¶©¸aÖ@ñ 1Bð ‰Ø #§¡× 2Ñ 2Ö 4‘H�CÜ" 4×-Ñ-Ù Ü˜D sÖ+ò !5ð ð
 ‰_ØŸL™L×-Ñ-Ó/ˆD�Mð r   c                 ój   • SnU R                   R                  5        H  nU[        U   S   -  nM     U$ r·  )rõ  ÚkeysÚvalueRecordFormatDict)r   rË  rƒ   s      r   Ú	getFormatÚValueRecord.getFormats  s8   € ØˆØ—M‘M×&Ñ&Ö(ˆDØÔ3°DÑ9¸!Ñ<Ñ<ŠFñ )àˆr   c                 ó€   • SnU R                   R                  5        H  u  p#U(       d  M  U[        U   S   -  nM     U$ r·  )rõ  r  r½  )r   rË  rƒ   r1   s       r   ÚgetEffectiveFormatÚValueRecord.getEffectiveFormaty  sA   € ØˆØŸ=™=×.Ñ.Ö0‰KˆDßˆuØÔ"7¸Ñ"=¸aÑ"@Ñ@’ñ 1ð ˆr   c                 óP  • Uc  / nO[        U5      n[        S S  H4  u  pgp‰[        X5      (       d  M  UR                  U[	        X5      45        M6     / n
[        SS  H:  u  pgp‰[        X5      (       d  M  [	        X5      nUc  M(  U
R                  X{45        M<     U
(       ac  UR                  X55        UR                  5         U
 H  u  p|Uc  M
  UR                  XUS9  M     UR                  U5        UR                  5         g UR                  X55        UR                  5         g )Nr   r‹  )rƒ   )
r1  r�  r€   r\  rH   r?  r@  r}   rA  Ú	simpletag)r   rB  rL   Ú	valueNamer„   ÚsimpleItemsrŸ  rƒ   r   rË  ÚdeviceItemsÚdeviceÚdeviceRecords                r   r}   ÚValueRecord.toXML€  s  € Ø‰=Ø‰Kä˜u›+ˆKÜ,=¸b¸qÓ,AÑ(ˆD˜Ü�t×"Ó"Ø×"Ñ" D¬'°$Ó*=Ð#>Ö?ñ -Bð ˆÜ,=¸aÀÓ,BÑ(ˆD˜Ü�t×"Ó"Ü  Ó,�ØÓ%Ø×&Ñ&¨ ~Ö6ñ	 -Cö
 Ø×Ñ˜yÔ6Ø×ÑÔÛ&1Ñ"�ØÓ+Ø ×&Ñ& y¸TÐ&ÓBñ '2ð ×Ñ˜YÔ'Ø×ÑÕà×Ñ 	Ô7Ø×ÑÕr   c                 ó\  • SSK Jn  UR                  5        H  u  pg[        X[	        U5      5        M     U Hr  n[        U[        5      (       d  M  Uu  pn[        XQ5      " 5       n	U H1  n
[        U
[        5      (       d  M  U
u  p¼nU	R                  X¼XÔ5        M3     [        XU	5        Mt     g r¬  )	rF   rC   r  r  r(  r'  rQ  rH   r�   )r   rƒ   r„   r…   rL   rC   Úkré  Úelementr1   Úelem2Úname2Úattrs2Úcontent2s                 r   r�   ÚValueRecord.fromXMLš  s”   € Ýà—K‘K–M‰DˆAÜ�DœS ›VÖ$ñ "ãˆGÜ˜g¤u×-Ñ-ÙØ#*Ñ ˆD˜Ü˜HÔ+Ó-ˆEÛ �Ü! %¬×/Ñ/ÙØ*/Ñ'�˜xØ—‘˜e¨XÖ<ñ	 !ô
 �D Ö&ò r   c                 óH   • U R                  U5      nU[        L a  U$ U(       + $ r/   rB  rC  s      r   rE  ÚValueRecord.__ne__«  rG  r   c                 óp   • [        U 5      [        U5      :w  a  [        $ U R                  UR                  :H  $ r/   )rn   r  rõ  r    s     r   r  ÚValueRecord.__eq__¯  s+   € Ü�‹:œ˜e›Ó$Ü!Ð!Ø�}‰} §¡Ñ.Ð.r   )rõ  rÛ  r/   )r%   r&   r'   r(   r   r¾  rÁ  r}   r�   rE  r  r)   r*   r   r   r­  r­  c  s&   † ô0òòô ò4'ò"Bõ/r   r­  r/   )9ÚfontTools.configr   ÚfontTools.misc.textToolsr   r   r   Úenumr   r¶   rµ   r«   ÚloggingÚ	functoolsr	   Útypingr
   r   r   r   Ú	getLoggerr%   rU   rW   Ú	uharfbuzzrl   rX   rT   Úobjectr   r+  r,   r9   r?   r÷   r~  ÚitemsizerG   r  rY   rÆ  rè  r3  r2  r6  rò  rc  ru  r}  r€  r(  r!   r^  r�  r¢  r½  r¤  r­  r*   r   r   Ú<module>rá     sÙ  ðÝ $ß 3Ý &Ý Û 
Û Û Û Ý ß 8Ó 8à×Ò˜Ó!€à€ð	Ûà€Nð   8 *Ð,BÐ CÑDÐ ô
˜&ô 
ô0 ˜Yô  ô�Gô ô*l5�|ô l5ñ` ˆ6�;Š;�s˜AÓÓ 1Ó$Ð $Ð$Ø‡{‚{�3Ó× Ñ  AÓ%Ð LÐ'LÓ LÐ%ôq;�Fô q;ôh7�Vô 7ôu
�Fô u
ôpI�Vô Iò8$ò$ò$ò
(ô
F0�ô F0ôR
!=˜yô !=ôH'Ð$<ô 'ð 'Ø*ñÐ òDñ ƒñ=˜)ð =¨(°3©-ð =À5ÈÁ:ô =ó ð=òBÐ ò,ñ #›Ð ô0*˜ô 0*ôfO/�&õ O/øða* ó 	Úð	ús   ÁE5 Å5E?Å>E?