Ë
    éÿæiåÿ  ã                   ó  — d dl Z d dlZd dlZd dlZddlmZmZ ddlmZ ddl	­ dZ
dZdZej                  d	k7  xs  ej                  d
k  xs ej                  dk\  xr  ej                  d«       Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Zej                  dk\  re j.                  Zn G d„ de j2                  «      Zd„ Zd„ Zd&d„Zd&d„Zd „ Zd!„ Zd"„ Z d#„ Z!d$„ Z"	 	 	 	 d'd%„Z#y)(é    Né   )ÚffiplatformÚmodel)ÚVerificationError)Ú*i&  i'  i(  Úwin32)é   r   )r	   é   ÚPy_GIL_DISABLEDc                   ó    — e Zd Zdd„Zd„ Zd„ Zy)Ú
GlobalExprc                 óJ   — || _         || _        || _        || _        || _        y ©N)ÚnameÚaddressÚtype_opÚsizeÚcheck_value)Úselfr   r   r   r   r   s         úd/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/cffi/recompiler.pyÚ__init__zGlobalExpr.__init__   s&   € ØˆŒ	ØˆŒØˆŒØˆŒ	Ø&ˆÕó    c           	      óŒ   — d| j                   ›d| j                  ›d| j                  j                  «       ›d| j                  ›d�	S )Nú  { "z", (void *)ú, z
, (void *)ú },)r   r   r   Ú	as_c_exprr   ©r   s    r   r   zGlobalExpr.as_c_expr   s0   � à�I‹I�t—|“| T§\¡\×%;Ñ%;Õ%=¸t¿y»yðJð 	Jr   c                 ój   — d| j                   j                  «       | j                  | j                  fz  S )Nz
b'%s%s',%d)r   Úas_python_bytesr   r   r   s    r   Úas_python_exprzGlobalExpr.as_python_expr   s2   € Ø˜tŸ|™|×;Ñ;Ó=¸t¿y¹yØ#×/Ñ/ð1ñ 1ð 	1r   N)r   r   ©Ú__name__Ú
__module__Ú__qualname__r   r   r!   © r   r   r   r      s   „ ó'òJó1r   r   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú	FieldExprc                 óJ   — || _         || _        || _        || _        || _        y r   )r   Úfield_offsetÚ
field_sizeÚfbitsizeÚfield_type_op)r   r   r*   r+   r,   r-   s         r   r   zFieldExpr.__init__   s'   € ØˆŒ	Ø(ˆÔØ$ˆŒØ ˆŒØ*ˆÕr   c                 óØ   — dt        | j                  «      z  }d| j                  ›d| j                  ›d�d|›d| j                  ›d�z   d|›d| j                  j                  «       ›d�z   S )NÚ r   ú", z,
z     z   r   )Úlenr   r*   r+   r-   r   )r   Úspacess     r   r   zFieldExpr.as_c_expr&   sZ   € Ø”s˜4Ÿ9™9“~Ñ%‰Ø%)§Y£Y°×0AÓ0AÑBÚ%+¨T¯_«_Ð=ò>â%+¨T×-?Ñ-?×-IÑ-IÕ-KÐLñMð 	Nr   c                 ó   — t         ‚r   )ÚNotImplementedErrorr   s    r   r!   zFieldExpr.as_python_expr,   s   € Ü!Ð!r   c                 ó  — | j                   j                  t        k(  rd}n9| j                   j                  t        k(  rt	        | j
                  «      }nt        ‚d| j                   j                  «       ›|›| j                  ›d�S )NÚ úb'Ú')	r-   ÚopÚOP_NOOPÚOP_BITFIELDÚformat_four_bytesr,   r4   r    r   )r   Ú	size_exprs     r   Úas_field_python_exprzFieldExpr.as_field_python_expr/   sj   € Ø×Ñ× Ñ ¤GÒ+Ø‰IØ×Ñ×"Ñ"¤kÒ1Ü)¨$¯-©-Ó8‰Iä%Ð%øØ"×0Ñ0×@Ñ@ÔBÙ'Ø"Ÿi›ið)ð 	)r   N)r#   r$   r%   r   r   r!   r>   r&   r   r   r(   r(      s   „ ò+òNò"ó	)r   r(   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚStructUnionExprc	                 ót   — || _         || _        || _        || _        || _        || _        || _        || _        y r   )r   Ú
type_indexÚflagsr   Ú	alignmentÚcommentÚfirst_field_indexÚc_fields)	r   r   rB   rC   r   rD   rE   rF   rG   s	            r   r   zStructUnionExpr.__init__;   s;   € àˆŒ	Ø$ˆŒØˆŒ
ØˆŒ	Ø"ˆŒØˆŒØ!2ˆÔØ ˆ�r   c                 ó   — d| j                   | j                  | j                  fz  d| j                  ›d| j                  ›d�z   d| j
                  t        | j                  «      fz  z   | j                  rd| j                  z  z   dz   S dz   dz   S )Nz  { "%s", %d, %s,z
    r   z%d, %d z	/* %s */ r6   z},)	r   rB   rC   r   rD   rF   r1   rG   rE   r   s    r   r   zStructUnionExpr.as_c_exprF   sš   € Ø# t§y¡y°$·/±/À4Ç:Á:Ð&NÒNØ&*§i£i°·³Ð@ñAà˜t×5Ñ5´s¸4¿=¹=Ó7IÐJÑJñKð 26·²�; §¡Ñ-ñGð ñ	ð 	ð DFñGð ñ	ð 	r   c                 ó  — t        | j                  t        «      }| j                  D �cg c]  }|j	                  «       ‘Œ }}dt        | j                  «      ›t        |«      ›| j                  ›ddj                  |«      ›d�S c c}w )Nz(b'ú',Ú,Ú))	ÚevalrC   ÚG_FLAGSrG   r>   r<   rB   r   Újoin)r   rC   Úc_fieldÚfields_exprs       r   r!   zStructUnionExpr.as_python_exprM   sw   € Ü�T—Z‘Z¤Ó)ˆà&*§m¢mó5Ù&3˜7ð ×3Ñ3Õ5Ø&3ð 	ñ 5ô ˜dŸo™oÔ.Ü˜eÔ$Ø�I‹IØ�H‰H�[Õ!ð	#ð 	#ùò5s   ©BNr"   r&   r   r   r@   r@   :   s   „ ò	!òó#r   r@   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚEnumExprc                 óJ   — || _         || _        || _        || _        || _        y r   ©r   rB   r   ÚsignedÚallenums)r   r   rB   r   rV   rW   s         r   r   zEnumExpr.__init__X   s%   € ØˆŒ	Ø$ˆŒØˆŒ	ØˆŒØ ˆ�r   c                 óz   — d| j                   | j                  | j                  | j                  | j                  fz  S )Nz1  { "%s", %d, _cffi_prim_int(%s, %s),
    "%s" },rU   r   s    r   r   zEnumExpr.as_c_expr_   s9   € ðØ!%§¡¨D¯O©OØ!%§¡¨D¯K©K¸¿¹ð!HñHð 	Ir   c           	      ó  — t         t        t        t        t        t
        t        t        dœ| j                  | j                  f   }dt        | j                  «      ›t        |«      ›| j                  ›d| j                  ›d�S )N))r   r   )r   r   )é   r   )rZ   r   )é   r   )r[   r   )é   r   )r\   r   r7   z\x00r8   )Ú
PRIM_UINT8Ú	PRIM_INT8ÚPRIM_UINT16Ú
PRIM_INT16ÚPRIM_UINT32Ú
PRIM_INT32ÚPRIM_UINT64Ú
PRIM_INT64r   rV   r<   rB   r   rW   )r   Ú
prim_indexs     r   r!   zEnumExpr.as_python_exprd   sa   € ä¬)Ü¬*Ü¬*Ü¬*ñ	ð
 �i‰i˜Ÿ™Ð$ñ&‰
ô &7°t·±Ô%GÜ%6°zÔ%BØ%)§Y£Y°·³ð?ð 	?r   Nr"   r&   r   r   rS   rS   W   s   „ ò!òIó
	?r   rS   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTypenameExprc                 ó    — || _         || _        y r   ©r   rB   )r   r   rB   s      r   r   zTypenameExpr.__init__p   s   € ØˆŒ	Ø$ˆ�r   c                 ó8   — d| j                   | j                  fz  S )Nz  { "%s", %d },ri   r   s    r   r   zTypenameExpr.as_c_exprt   s   € Ø  D§I¡I¨t¯©Ð#?Ñ?Ð?r   c                 óL   — dt        | j                  «      ›| j                  ›d�S )Nr7   r8   )r<   rB   r   r   s    r   r!   zTypenameExpr.as_python_exprw   s   � Ü-¨d¯o©oÔ>ÀÇ	Ã	ÐJÐJr   Nr"   r&   r   r   rg   rg   o   s   „ ò%ò@óKr   rg   c                   óø  — e Zd ZdZdKd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	g d¢Z
d	„ ZdLd
„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!dMd!„Z"d"„ Z#d#„ Z$d$„ Z%e%Z&d%„ Z'd&„ Z(e(Z)d'„ Z*e*Z+d(„ Z,d)„ Z-d*„ Z.	 	 dNd+„Z/d,„ Z0d-„ Z1d.„ Z2d/„ Z3dMd0„Z4d1„ Z5d2„ Z6d3„ Z7d4„ Z8d5„ Z9d6„ Z:d7„ Z;d8„ Z<d9„ Z=d:„ Z>e>xZ?Z@d;„ ZAd<„ ZBd=„ ZCd>„ ZDd?„ ZEeExZFZGd@„ ZHdA„ ZIdB„ ZJdC„ ZKdD„ ZLdE„ ZMdF„ ZNeNZOeNZPdG„ ZQdH„ ZRdI„ ZSeSZTdJ„ ZUy )OÚ
Recompilerr   c                 óD   — || _         || _        || _        t        | _        y r   )ÚffiÚmodule_nameÚtarget_is_pythonÚVERSION_BASEÚ_version)r   ro   rp   rq   s       r   r   zRecompiler.__init__�   s    € ØˆŒØ&ˆÔØ 0ˆÔÜ$ˆ�r   c                 ó:   — t        | j                  |«      | _        y r   )Úmaxrs   )r   Úvers     r   Úneeds_versionzRecompiler.needs_version‡   s   € Ü˜DŸM™M¨3Ó/ˆ�r   c           
      óö  — i | _         | j                  d«       t        | j                   t        ¬«      }g | _        |D �]/  }|j
                  sŒ| j                   |   �J ‚t        | j                  «      | j                   |<   | j                  j                  |«       |j                  D ]§  }t        |t        j                  t        j                  t        j                  t        j                  t        j                  f«      sJ ‚| j                   |   €"t        | j                  «      | j                   |<   | j                  j                  |«       Œ© | j                  j                  d«       �Œ2 |D ]‘  }|j
                  rŒ| j                   |   �Œ t        | j                  «      | j                   |<   | j                  j                  |«       |j                   sŒj|j"                  €Œw| j                  j                  d«       Œ“ d | j                   j%                  «       vsJ ‚i | _        i | _        |D ]V  }t        |t        j*                  «      rd | j&                  |<   Œ-t        |t        j,                  «      sŒHd | j(                  |<   ŒX t/        t        | j&                  d„ ¬«      «      D ]  \  }}|| j&                  |<   Œ t/        t        | j(                  d„ ¬«      «      D ]  \  }}|| j(                  |<   Œ |D ];  }t1        | d|j2                  j4                  z   «      } ||| j                   |   «       Œ= | j                  D ]  }t        |t6        «      rŒJ ‚ t9        | j                  «      | _        y )NÚcollecttype©ÚkeyÚENDÚLENc                 ó   — | j                   S r   ©r   ©Útps    r   Ú<lambda>z/Recompiler.collect_type_table.<locals>.<lambda>´   ó   € °R·W²Wr   c                 ó   — | j                   S r   r   r€   s    r   r‚   z/Recompiler.collect_type_table.<locals>.<lambda>·   rƒ   r   Ú_emit_bytecode_)Ú
_typesdictÚ	_generateÚsortedÚstrÚ
cffi_typesÚis_raw_functionr1   ÚappendÚargsÚ
isinstancer   ÚVoidTypeÚBasePrimitiveTypeÚPointerTypeÚStructOrUnionOrEnumÚFunctionPtrTypeÚis_array_typeÚlengthÚvaluesÚ_struct_unionsÚ_enumsÚStructOrUnionÚEnumTypeÚ	enumerateÚgetattrÚ	__class__r#   ÚCffiOpÚtuple)r   Ú	all_declsr�   Útp1ÚiÚmethodr9   s          r   Úcollect_type_tablezRecompiler.collect_type_tableŠ   sÙ  € ØˆŒØ�‰�}Ô%ä˜4Ÿ?™?´Ô4ˆ	ð ˆŒÜˆBØ×!Ó!Ø—‘ rÑ*Ð2Ð2Ð2Ü&)¨$¯/©/Ó&:�—‘ Ñ#Ø—‘×&Ñ& rÔ*ØŸ7œ7�CÜ% c¬E¯N©NÜ,1×,CÑ,CÜ,1×,=Ñ,=Ü,1×,EÑ,EÜ,1×,AÑ,Að	,Cô Dð Dð Dð
 —‘ sÑ+Ð3Ü/2°4·?±?Ó/C˜Ÿ™¨Ñ,Ø—O‘O×*Ñ*¨3Õ/ð #ð —‘×&Ñ& uÖ-ð ó" ˆBØ×%Ó%¨$¯/©/¸"Ñ*=Ñ*EÜ&)¨$¯/©/Ó&:�—‘ Ñ#Ø—‘×&Ñ& rÔ*Ø×#Ó#¨¯	©	Ñ(=Ø—O‘O×*Ñ*¨5Õ1ð ð ˜4Ÿ?™?×1Ñ1Ó3Ñ3Ð3Ð3ð !ˆÔØˆŒÛˆBÜ˜"œe×1Ñ1Ô2Ø*.�×#Ñ# BÒ'Ü˜B¤§¡Õ/Ø"&�—‘˜B’ð	 ô
 œv d×&9Ñ&9Ù*<ô >ö ?‰EˆAˆrà&'ˆD×Ñ Ò#ð?ô œv d§k¡kÙ*<ô >ö ?‰EˆAˆràˆD�K‰K˜ŠOð?ó
 ˆBÜ˜TÐ#4°r·|±|×7LÑ7LÑ#LÓMˆFÙ�2�t—‘ rÑ*Õ+ð ð
 —/”/ˆBÜ˜b¤&Õ)Ð)Ð)ð "ä §¡Ó0ˆ�r   c                 ó>   — | j                    }|j                  |«      S r   )rq   Ú
enumfields)r   r�   Úexpand_anonymous_struct_unions      r   Ú_enum_fieldszRecompiler._enum_fieldsÄ   s#   € ð -1×,AÑ,AÐ(AÐ%Ø�}‰}Ð:Ó;Ð;r   c                 óœ  — t        |t        j                  «      s)t        |t        «      r|D ]  }| j	                  |«       Œ y || j
                  vrûd | j
                  |<   t        |t        j                  «      r | j	                  |j                  «       «       y t        |t        j                  «      rn|j                  �a|| j                  j                  j                  vr>| j                  |«      D ])  \  }}}}| j	                  | j                  |||«      «       Œ+ y y y |j                  «       D ]  \  }}| j	                  |«       Œ y y r   )rŽ   r   ÚBaseTypeByIdentityrŸ   Ú_do_collect_typer†   r“   Úas_raw_functionr™   Úfldtypesro   Ú_parserÚ_included_declarationsr¨   Ú_field_typeÚ
_get_items)r   r�   ÚxÚname1r¡   Ú_s         r   r«   zRecompiler._do_collect_typeÏ   s  € Ü˜"œe×6Ñ6Ô7Ü˜"œeÔ$Û�AØ×)Ñ)¨!Õ,ð àØ�T—_‘_Ñ$Ø"&ˆD�O‰O˜BÑÜ˜"œe×3Ñ3Ô4Ø×%Ñ% b×&8Ñ&8Ó&:Õ;Ü˜B¤× 3Ñ 3Ô4Ø—;‘;Ð*Ø $§(¡(×"2Ñ"2×"IÑ"IÑIØ,0×,=Ñ,=¸bÖ,AÑ(˜˜s A qØ×-Ñ-¨d×.>Ñ.>¸rÀ5È#Ó.NÕOñ -Bð Jð +ð
 ŸM™MžO‘D�A�qØ×)Ñ)¨!Õ,ñ ,ð %r   c                 ó„  — | j                   j                  j                  j                  «       }t	        |«      D ]A  \  }\  }}|j                  dd«      \  }}	 t        | d|›d|›�«      }	 || _	         |||«       ŒC y # t        $ r t        d|z  «      ‚w xY w# t        $ r}	t        j                  |	|«       ‚ d }	~	ww xY w)Nr/   r   Ú_generate_cpy_r´   z"not implemented in recompile(): %r)ro   r®   Ú_declarationsÚitemsrˆ   Úsplitrœ   ÚAttributeErrorr   Ú_current_qualsÚ	Exceptionr   Úattach_exception_info)
r   Ú	step_nameÚlstr   r�   ÚqualsÚkindÚrealnamer£   Úes
             r   r‡   zRecompiler._generateâ   sÎ   € Ø�h‰h×Ñ×,Ñ,×2Ñ2Ó4ˆÜ!'¨¦ÑˆD‘+�2�uØ!ŸZ™Z¨¨QÓ/‰NˆD�(ðAÜ ¡ÂÙ@Ið(Kó L�ð
Ø&+�Ô#Ù�r˜8Õ$ñ "-øô
 "ò AÜ'Ø8¸4Ñ?óAð AðAûô ò Ü×+Ñ+¨A¨tÔ4Øûðús$   ÁA?Á,BÁ?BÂ	B?Â#B:Â:B?)ÚglobalÚfieldÚstruct_unionÚenumÚtypenamec                 óZ  — i | _         | j                  D ]  }g | j                   |<   Œ t        «       | _        | j	                  d«       | j                  «        | j                  D ]A  }| j                   |   }|dk7  r|j                  d„ ¬«       t        |«      | j                   |<   ŒC | j                   d   }| j                  j                  «       D ]3  \  }}|t        |«      k  sJ ‚||   j                  |j                  k(  rŒ3J ‚ t        |«      t        | j                  «      k(  sJ ‚| j                   d   }| j                  j                  «       D ]3  \  }}|t        |«      k  sJ ‚||   j                  |j                  k(  rŒ3J ‚ t        |«      t        | j                  «      k(  sJ ‚y )NÚctxrÅ   c                 ó   — | j                   S r   r   )Úentrys    r   r‚   z0Recompiler.collect_step_tables.<locals>.<lambda>  s   € ¨5¯:ª:r   rz   rÆ   rÇ   )Ú_lstsÚ	ALL_STEPSÚsetÚ_seen_struct_unionsr‡   Ú_add_missing_struct_unionsÚsortrŸ   r—   r¸   r1   r   r˜   )r   r¾   r¿   r�   r¢   s        r   Úcollect_step_tableszRecompiler.collect_step_tables÷   sr  € àˆŒ
ØŸœˆIØ$&ˆD�J‰J�yÒ!ð (ä#&£5ˆÔ Ø�‰�uÔØ×'Ñ'Ô)àŸœˆIØ—*‘*˜YÑ'ˆCØ˜GÒ#Ø—‘Ñ5�Ô6Ü$)¨#£JˆD�J‰J�yÒ!ð	 (ð �j‰j˜Ñ(ˆØ×(Ñ(×.Ñ.Ö0‰EˆB�Ø”s˜3“x’<Ð�<Ø�q‘6—;‘; "§'¡'Ó)Ð)Ð)ð 1ô �3‹xœ3˜t×2Ñ2Ó3Ò3Ð3Ð3à�j‰j˜Ñ ˆØ—[‘[×&Ñ&Ö(‰EˆB�Ø”s˜3“x’<Ð�<Ø�q‘6—;‘; "§'¡'Ó)Ð)Ð)ð )ô �3‹xœ3˜tŸ{™{Ó+Ò+Ð+Ñ+r   c                 ó@   — | j                   j                  |dz   «       y )NÚ
)Ú_fÚwrite)r   Úwhats     r   Ú_prntzRecompiler._prnt  s   € Ø�‰�‰�d˜T‘kÕ"r   c                 ót   — | j                   r|�J ‚| j                  |«       y |€J ‚| j                  ||«       y r   )rq   Úwrite_py_source_to_fÚwrite_c_source_to_f)r   ÚfÚpreambles      r   Úwrite_source_to_fzRecompiler.write_source_to_f  sA   € Ø× Ò ØÐ#Ð#Ð#Ø×%Ñ% aÕ(àÐ'Ð'Ð'Ø×$Ñ$ Q¨Õ1r   c                 óÜ   — t        t        j                  j                  t        j                  j	                  t
        «      |«      d«      }|j                  «       }|j                  «        |S )NÚr)ÚopenÚosÚpathrO   ÚdirnameÚ__file__Ú	readlinesÚclose)r   ÚfilenameÚgÚliness       r   Ú_rel_readlineszRecompiler._rel_readlines!  sC   € Ü”—‘—‘œbŸg™gŸo™o¬hÓ7¸ÓBÀCÓHˆØ—‘“ˆØ	�‰Œ	Øˆr   c           	      óô  — || _         | j                  }| j                  j                  � |d«       t        s |d«       | j                  d«      }|j                  d«      }| j                  d«      |||dz     |dj                  |«      «       | j                  j                  d«      d	   }| j                  j                  �ñ |d
| j                  ›d�«        |d«       | j                  | j                  j                  «        |d«        |d«        |d|›�«        |d«        |d|›�«        |d«        |d|›�«        |d«       | j                  d«      }|j                  d«      }| j                  d«      |||dz     |dj                  |«      «       | j                  t        «        |d«        |«         ||«        |«         |d«        |«         |d«       t        | j                  j                  «       D ��cg c]	  \  }}||f‘Œ c}}«      }t!        | j"                  «      D ]=  \  }}	d}
||v rd||   j%                  «       z   }
 |d||	j'                  «       |
fz  «       Œ? | j"                  s |d«        |d«        |«        t)        «       | _        | j-                  d«       i }| j.                  D ]c  }| j0                  |   }t3        |«      ||<   ||   dkD  sŒ) |d |›d!|›d"�«       |D ]  } ||j'                  «       «       Œ  |d«        |«        Œe | j                  j4                  rf |d#«       | j                  j4                  D ].  }	 |j6                  d d$ \  }}|€t;        d(«      ‚ |d)|›d*�«       Œ0  |d+«        |d«        |«         |d,«        |d-«       | j.                  D ]!  }||   dkD  r |d.|z  «       Œ |d/|z  «       Œ# | j.                  D ]  }|d0k7  sŒ	 |d1||   |fz  «       Œ | j                  j4                  r	 |d2«       n |d3«        |d4t3        | j"                  «      fz  «       d}| j<                  dkD  s| j                  j                  �|dz  } |d5|z  «        |d«        |«         |d6«        |d7«        |d«        |«         |d«        |d8«        |d9|›d:�«        |d;«       |dz  r |d<«        |d=«        |d>«        |d?| j>                  z  «        |d@«        |dA«        |dB«        |d«        |dC«        |dD«        |dE«        |dF«        |dG|›dH�«        |dI«        |dJ|›dK�«        |dL«        |dL«        |d«        |d8«        |dM|›dN�«        |d;«        |dO| j                  | j>                  fz  «        |dC«        |d«        |d8«        |dP|›dN�«        |d;«        |dQ| j                  | j>                  fz  «        |dC«        |d«        |«         |d6«        |dR«        |d«       d | _        y c c}}w # t8        $ r t;        d%| j                  ›d&|›d'�«      ‚w xY w)SNz#define _CFFI_USE_EMBEDDINGz#define _CFFI_NO_LIMITED_APIz_cffi_include.hz#include "parse_c_type.h"
zparse_c_type.hr   r6   Ú.éÿÿÿÿz#define _CFFI_MODULE_NAME  "Ú"z1static const char _CFFI_PYTHON_STARTUP_CODE[] = {z0 };z#ifdef PYPY_VERSIONz3# define _CFFI_PYTHON_STARTUP_FUNC  _cffi_pypyinit_z#elif PY_MAJOR_VERSION >= 3z+# define _CFFI_PYTHON_STARTUP_FUNC  PyInit_ú#elsez(# define _CFFI_PYTHON_STARTUP_FUNC  initú#endifz_embedding.hz#include "_cffi_errors.h"
z_cffi_errors.hz>/************************************************************/zstatic void *_cffi_types[] = {z // z/* %2d */ %s,%sz  0z};Údeclr   zstatic const struct _cffi_z	_s _cffi_zs[] = {z.static const char * const _cffi_includes[] = {rZ   úffi object ú
 includes ú8, but the latter has not been prepared with set_source()zMnot implemented yet: ffi.include() of a Python-based ffi inside a C-based ffiz  "z",z  NULLz?static const struct _cffi_type_context_s _cffi_type_context = {z  _cffi_types,z  _cffi_%ss,z  NULL,  /* no %ss */rÅ   z  %d,  /* num_%ss */z  _cffi_includes,z  NULL,  /* no includes */z  %d,  /* num_types */z  %d,  /* flags */z#ifdef __GNUC__z?#  pragma GCC visibility push(default)  /* for -fvisibility= */ÚPyMODINIT_FUNCÚ_cffi_pypyinit_z(const void *p[])Ú{z%    if (((intptr_t)p[0]) >= 0x0A03) {zQ        _cffi_call_python_org = (void(*)(struct _cffi_externpy_s *, char *))p[1];z    }z    p[0] = (const void *)0x%x;z    p[1] = &_cffi_type_context;z#if PY_MAJOR_VERSION >= 3ú    return NULL;Ú}z#  ifdef _MSC_VERz     PyMODINIT_FUNCz#  if PY_MAJOR_VERSION >= 3z     PyInit_z(void) { return NULL; }z#  elsez	     initz
(void) { }z#  endifÚPyInit_ú(void)z5  return _cffi_init("%s", 0x%x, &_cffi_type_context);Úinitz.  _cffi_init("%s", 0x%x, &_cffi_type_context);z#  pragma GCC visibility pop) rÖ   rÙ   ro   Ú
_embeddingÚUSE_LIMITED_APIrì   ÚindexrO   rp   r¹   Ú_print_string_literal_in_arrayrw   ÚVERSION_EMBEDDEDÚdictr†   r¸   r›   rŠ   Ú_get_c_namer   rÏ   Ú_seen_constantsr‡   rÎ   rÍ   r1   Ú_included_ffisÚ_assigned_sourcerº   r   Ú_num_externpyrs   )r   rÝ   rÞ   Úprntrë   r¢   Úbase_module_namer�   Útypeindex2typer9   rE   Únumsr¾   r¿   rÌ   Úffi_to_includeÚincluded_module_nameÚincluded_sourcerC   s                      r   rÜ   zRecompiler.write_c_source_to_f'  sk  € ØˆŒØ�z‰zˆØ�8‰8×ÑÐ*ÙÐ.Ô/ÝÙÐ/Ô0ð ×#Ñ#Ð$5Ó6ˆØ�K‰KÐ5Ó6ˆØ×*Ñ*Ð+;Ó<ˆˆa��!‘ˆÙˆR�W‰W�U‹^Ôð  ×+Ñ+×1Ñ1°#Ó6°rÑ:ÐØ�8‰8×ÑÐ*Ú°d×6FÓ6FÐHÔIÙÐDÔEØ×/Ñ/°·±×0CÑ0CÔDÙ�ŒLÙÐ&Ô'ÚÙ ð#ô $áÐ.Ô/ÚÙ ð#ô $á�ŒMÚÙ ð#ô $á�ŒNØ×'Ñ'¨Ó7ˆEØ—‘Ð9Ó:ˆAØ×.Ñ.Ð/?Ó@ˆE�!�A�a‘CˆLÙ�—‘˜“Ô Ø×ÑÔ/Ô0ñ 	ÐMÔNÙŒÙˆXŒÙŒÙÐMÔNÙŒñ 	Ð-Ô.Ü°d·o±o×6KÑ6KÔ6MÔNÑ6M©7¨B°  2šwÐ6MÒNÓOˆÜ˜tŸ™Ö/‰EˆAˆrØˆGØ�NÑ"Ø  >°!Ñ#4×#@Ñ#@Ó#BÑB�ÙÐ" a¨¯©«¸Ð%AÑAÕBð	 0ð
 �ŠÙ�ŒKÙˆTŒ
ÙŒô  #›uˆÔØ�‰�vÔð ˆØŸœˆIØ—*‘*˜YÑ'ˆCÜ! #›hˆD�‰OØ�I‰ Ó"ÚÚšyð*ô +ã �EÙ˜Ÿ™Ó*Õ+ð !á�T”
Ù•ð (ð �8‰8×"Ò"ÙÐAÔBØ"&§(¡(×"9Ô"9�ð8à&×7Ñ7¸¸Ð;ñ :Ð(¨/ð #Ð*Ü+ð3ó4ð 4ò Ò"6Ð8Õ9ð #:ñ �ŒNÙ�ŒJÙŒFñ 	ÐNÔOÙÐÔØŸœˆIØ�I‰ Ò"Ù�^ iÑ/Õ0áÐ,¨yÑ8Õ9ð	 (ð
 ŸœˆIØ˜GÓ#ÙÐ+¨t°I©À	Ð.JÑJÕKð (ð �8‰8×"Ò"ÙÐ$Õ%áÐ-Ô.ÙÐ%¬¨T¯_©_Ó)=Ð(?Ñ?Ô@ØˆØ×Ñ Ò! T§X¡X×%8Ñ%8Ð%DØ�Q‰JˆEÙÐ! EÑ)Ô*ÙˆTŒ
ÙŒñ 	ÐÔÙÐNÔOÙˆXŒÙŒÙÐ"Ô#ÙÐÔÚÒ5EÐGÔHÙˆSŒ	Ø�1Š9ÙÐ8Ô9Ùð Eô Fá�ŒMÙÐ-°·±Ñ=Ô>ÙÐ.Ô/ÙÐ(Ô)ÙÐÔ ÙˆXŒÙˆSŒ	ñ 	Ð Ô!ÙÐ"Ô#ÙÐ*Ô+ÚÒ8HÐJÔKÙˆYŒÚÒ(8Ð:Ô;ÙˆZÔÙˆZÔÙÐ*Ô+ÙÐÔÚÒ"2Ð4Ô5ÙˆSŒ	ÙÐDØ×Ñ˜dŸm™mðH-ñ -ô 	.áˆSŒ	ÙˆWŒÙÐÔÚÒ/Ð1Ô2ÙˆSŒ	ÙÐ=Ø×Ñ˜dŸm™mðA-ñ -ô 	.áˆSŒ	ÙˆXŒÙŒÙÐÔÙÐ+Ô,ÙˆXŒØˆ�ùów OøôH &ò 8Ý+ð !ŸH›H¢nð7ó8ð 8ð8ús   ÈY
Í&YÙ&Y7c                 ó(  — t        |t        «      rd|›d�S t        |t        t        f«      rR|D �cg c]  }| j	                  |«      ‘Œ }}t        |«      dk(  r|j                  d«       ddj                  |«      ›d�S |j                  «       S c c}w )Nr7   r8   r   r6   Ú(rK   rL   )	rŽ   r‰   ÚlistrŸ   Ú_to_pyr1   rŒ   rO   r!   )r   r²   ÚitemÚreps       r   r  zRecompiler._to_pyÔ  s{   € Ü�aœÕÚ�>Ð!Ü�aœ$¤˜Ô'Ù12Ó3±¨�4—;‘;˜tÕ$°ˆCÐ3Ü�3‹x˜1Š}Ø—
‘
˜2”øØ ŸX™X c�]Ð,Ð,Ø×ÑÓ!Ð!ùò	 4s   ±Bc           
      ó’  — || _         | j                  } |d«        |d«       t        | j                  j                  xs d«      }t        |«      D ]H  }| j                  j                  |   }	 |j                  d d \  }}|�t        d«      ‚ |d	||fz  «       ŒJ  |«         |d
| j                  ›d�«        |d| j                  fz  «       d | _
        t        | j                  «      | _        | j                  D �cg c]  }|j                  «       ‘Œ }	} |d| j                  dj                  |	«      «      ›d�«       t!        | j"                  j%                  «       D �
�cg c]	  \  }
}||
f‘Œ c}}
«      }| j&                  D ]D  }| j(                  |   }t        |«      dkD  sŒ!|dk7  sŒ' |d|›d| j                  |«      ›d�«       ŒF |dkD  r5 |ddj                  t        |«      D �cg c]  }d|z  ‘Œ	 c}«      ›d�«        |d«       y # t        $ r t        d| j                  ›d|›d�«      ‚w xY wc c}w c c}}
w c c}w )Nz# auto-generated filezimport _cffi_backendr&   rZ   rô   rõ   rö   zMnot implemented yet: ffi.include() of a C-based ffi inside a Python-based ffizfrom %s import ffi as _ffi%dzffi = _cffi_backend.FFI('rJ   z    _version = 0x%x,z    _types = r6   rK   r   rÅ   z    _zs = z    _includes = (r   z_ffi%dz,),rL   )rÖ   rÙ   r1   ro   r  Úranger  rº   r   rp   rs   rŸ   rŠ   r    r  rO   r  r†   r¸   rÎ   rÍ   )r   rÝ   r
  Únum_includesr¢   r  r  r  r9   Ú	types_lstr�   r  r¾   r¿   s                 r   rÛ   zRecompiler.write_py_source_to_fÞ  s2  € ØˆŒØ�z‰zˆñ 	Ð$Ô%ÙÐ#Ô$ô ˜4Ÿ8™8×2Ñ2Ò8°bÓ9ˆÜ�|Ö$ˆAØ!ŸX™X×4Ñ4°QÑ7ˆNð4à"×3Ñ3°B°QÐ7ñ 6Ð$ oð Ð*Ü'ð4ó5ð 5ñ Ð/Ð3GÈÐ2KÑKÕLð %ñ 	ŒÚ°×0@Ó0@ÐBÔCÙÐ# t§}¡}Ð&6Ñ6Ô7ØˆŒô   §¡Ó0ˆŒØ48·O²OÓD±O¨b�R×'Ñ'Õ)°Oˆ	ÐDÚ 4§;¡;¨r¯w©w°yÓ/AÕ#BÐDÔEÜ°d·o±o×6KÑ6KÔ6MÔNÑ6M©7¨B°  2šwÐ6MÒNÓOˆð ŸœˆIØ—*‘*˜YÑ'ˆCÜ�3‹x˜!‹| 	¨WÓ 4Úª°D·K±KÀÕ4DÐEÕFð (ð ˜!ÒÚØ—	‘	´°|Ô1DÓEÑ1D¨A˜8 a›<Ð1DÑEÕFðIô Jñ 	ˆS�	øôC "ò 4Ý'ð Ÿ›¢.ð3ó4ð 4ð4üò" EùãNùò Fs   Á/HÃ?H9Å$H>
Ç-IÈ&H6c                 ó    — | j                   |   S r   )r†   )r   Útypes     r   Ú_gettypenumzRecompiler._gettypenum  s   € à�‰˜tÑ$Ð$r   c           
      óN  — d}t        |t        j                  «      rÀ|j                  «       s°|j	                  «       r!|j
                  dk7  rd}d|j
                  z  }n|t        |t        j                  «      rd|j                  d«      ›d�}nL|j                  d«      }d|›d|j
                  j                  dd	«      ›�}|d
v r| j                  t        «       d}nît        |t        j                  «      r| j                  ||||«       y t        |t        j                  «      st        |t        j                  «      r;| j                  d|| j                  |«      |fz  «       | j                  d|z  «       y t        |t        j                   «      r+d|j                  d«      z  }d| j                  |«      z  }d}nt#        |«      ‚| j                  d|›d|›d|›|›d�«       | j                  d|›d|j                  d«      ›d|›d�«       | j                  d|z  «       y )Nr6   Ú_BoolÚ_cffi_to_c_intz, %sr  z)_cffi_to_c_doublez)_cffi_to_c_r/   r´   ©Úchar16_tÚchar32_tz-1z6  if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)z    %s;z(%s)_cffi_to_c_pointerz, _cffi_type(%d)ÚNULLú  z = ú);z  if (z == (rL   z && PyErr_Occurred()))rŽ   r   r�   Úis_complex_typeÚis_integer_typer   ÚUnknownFloatTypeÚ
get_c_nameÚreplacerw   ÚVERSION_CHAR16CHAR32r‘   Ú"_convert_funcarg_to_c_ptr_or_arrayr’   rÙ   r  r“   r4   )	r   r�   ÚfromvarÚtovarÚerrcodeÚextraargÚ	converterÚcnameÚerrvalues	            r   Ú_convert_funcarg_to_cz Recompiler._convert_funcarg_to_c  sÓ  € ØˆÜ�bœ%×1Ñ1Ô2¸2×;MÑ;MÔ;OØ×!Ñ!Ô#¨¯©°7Ò(:Ø,�	Ø! B§G¡GÑ+‘Ü˜B¤× 6Ñ 6Õ7ð 8:·}±}ÀRÕ7HÐJ‘	àŸ™ bÓ)‘Ú38Ø35·7±7·?±?À3ÈÔ3LðN�	àÐ4Ñ4Ø×&Ñ&Ô';Ô<Ø‰Hä˜œE×-Ñ-Ô.Ø×3Ñ3°B¸Ø49¸7ôDàä˜œU×6Ñ6Ô7Ü˜œU×4Ñ4Ô5ð �J‰JÐOØ × 0Ñ 0°Ó 4°gÐ>ñ?ô @à�J‰J�y 7Ñ*Ô+Øä˜œE×1Ñ1Ô2Ø0°2·=±=ÀÓ3DÑDˆIØ)¨D×,<Ñ,<¸RÓ,@Ñ@ˆHØ‰Hô & bÓ)Ð)à�
Š
ª²	¹7ÂHÐMÔNØ�
Š
Ú�2—=‘= Õ$¢hð0ô 	1à�
‰
�9˜wÑ&Õ'r   c                 ó    — t        |t        j                  «      r4|j                  d«       |j                  d«       |j                  d«       y y )NzPy_ssize_t datasizez-struct _cffi_freeme_s *large_args_free = NULLzIif (large_args_free != NULL) _cffi_free_array_arguments(large_args_free);)rŽ   r   r‘   Úadd)r   r�   Ú	localvarsÚ	freeliness       r   Ú_extra_local_variablesz!Recompiler._extra_local_variablesC  sD   € Ü�bœ%×+Ñ+Ô,Ø�M‰MÐ/Ô0Ø�M‰MÐIÔJØ�M‰Mð Jõ Kð -r   c                 óš  — | j                  d«       | j                  d| j                  |«      ||fz  «       | j                  d«       | j                  d|›d|j                  d«      ›d�«       | j                  d| j                  |«      ||fz  «       | j                  d	«       | j                  d
|z  «       | j                  d«       y )Nz1  datasize = _cffi_prepare_pointer_call_argument(z(      _cffi_type(%d), %s, (char **)&%s);z  if (datasize != 0) {z    z  = ((size_t)datasize) <= 640 ? (r6   z!)alloca((size_t)datasize) : NULL;zF    if (_cffi_convert_array_argument(_cffi_type(%d), %s, (char **)&%s,z,            datasize, &large_args_free) < 0)z	      %s;z  })rÙ   r  r*  )r   r�   r.  r/  r0  s        r   r-  z-Recompiler._convert_funcarg_to_c_ptr_or_arrayJ  sÀ   € Ø�
‰
ÐFÔGØ�
‰
Ð=Ø×Ñ˜RÓ  '¨5ðA2ñ 2ô 	3à�
‰
Ð+Ô,Ø�
Š
â�2—=‘= Õ$ð&ô 	'ð 	�
‰
ð #Ø&*×&6Ñ&6°rÓ&:¸GÀUÐ%KñLô 	Mà�
‰
ÐAÔBØ�
‰
�; Ñ(Ô)Ø�
‰
�5Õr   c                 ó  — t        |t        j                  «      rÅ|j                  «       r"|j                  dk7  rd|›d|j                  ›d�S t        |t        j
                  «      rd|›d�S |j                  dk7  rN|j                  «       s>|j                  j                  dd«      }|d	v r| j                  t        «       d
|›d|›d�S d|| j                  |«      fz  S t        |t        j                  t        j                  f«      rd|| j                  |«      fz  S t        |t        j                  «      r3d|| j                  t        j                  |j                  «      «      fz  S t        |t        j                  «      rB|j                   € t#        d|j%                  «       ›d|›d�«      ‚d|| j                  |«      fz  S t        |t        j&                  «      rd|| j                  |«      fz  S t)        |«      ‚)Nr  z_cffi_from_c_int(r   rL   z_cffi_from_c_double(úlong doubler/   r´   r!  Ú_cffi_from_c_r  z/_cffi_from_c_deref((char *)&%s, _cffi_type(%d))z0_cffi_from_c_pointer((char *)%s, _cffi_type(%d))r8   z' is used as z, but is opaquez0_cffi_from_c_struct((char *)&%s, _cffi_type(%d)))rŽ   r   r�   r(  r   r)  r'  r+  rw   r,  r  r‘   r“   Ú	ArrayTyper  r™   ÚfldnamesÚ	TypeErrorr  rš   r4   )r   r�   ÚvarÚcontextr3  s        r   Ú_convert_expr_from_czRecompiler._convert_expr_from_cX  sÝ  € Ü�bœ%×1Ñ1Ô2Ø×!Ñ!Ô#¨¯©°7Ó(:Ú58¸"¿'»'ÐBÐBÜ˜B¤× 6Ñ 6Õ7Ú47Ð9Ð9Ø—‘˜MÒ)°"×2DÑ2DÔ2FØŸ™Ÿ™¨¨SÓ1�ØÐ4Ñ4Ø×&Ñ&Ô';Ô<øÚ05²sÐ;Ð;àHØ˜×)Ñ)¨"Ó-ðL/ñ /ð /ä˜œU×.Ñ.´×0EÑ0EÐFÔGØEØ�T×%Ñ% bÓ)ðI+ñ +ð +ä˜œEŸO™OÔ,ØEØ�T×%Ñ%¤e×&7Ñ&7¸¿¹Ó&@ÓAðICñ Cð Cä˜œE×/Ñ/Ô0Ø�{‰{Ð"ÝØ—N‘NÕ$¢gð!/ó 0ð 0àEØ�T×%Ñ% bÓ)ðI+ñ +ð +ä˜œEŸN™NÔ+ØDØ�T×%Ñ% bÓ)ðH+ñ +ð +ô & bÓ)Ð)r   c                 ó.   — | j                  |d|›d�«      S )Nz(*(z *)0))Ú_global_type©r   r�   r   s      r   Ú_typedef_typezRecompiler._typedef_type{  s   € Ø× Ñ ¡²TÐ%;Ó<Ð<r   c                 óF   — | j                  | j                  ||«      «       y r   )r«   rH  rG  s      r   Ú!_generate_cpy_typedef_collecttypez,Recompiler._generate_cpy_typedef_collecttype~  s   € Ø×Ñ˜d×0Ñ0°°TÓ:Õ;r   c                  ó   — y r   r&   rG  s      r   Ú_generate_cpy_typedef_declz%Recompiler._generate_cpy_typedef_decl�  ó   € Ør   c                 ór   — | j                   |   }| j                  d   j                  t        ||«      «       y )NrÈ   )r†   rÍ   rŒ   rg   )r   r�   r   rB   s       r   Ú_typedef_ctxzRecompiler._typedef_ctx„  s.   € Ø—_‘_ RÑ(ˆ
Ø�
‰
�:Ñ×%Ñ%¤l°4¸Ó&DÕEr   c                 óZ  — | j                  ||«      }| j                  ||«       t        |dd «      dk(  r| j                  ||j                  d ¬«       y t        |t        j                  «      r>| j                  |j                  |j                  j                  |j                  |¬«       y y )NÚoriginÚunknown_type)Ú
approxname)rS  Ú	named_ptr)	rH  rO  rœ   Ú_struct_ctxr   rŽ   r   ÚNamedPointerTypeÚtotyperG  s      r   Ú_generate_cpy_typedef_ctxz$Recompiler._generate_cpy_typedef_ctxˆ  s�   € Ø×Ñ  DÓ)ˆØ×Ñ˜"˜dÔ#Ü�2�x Ó&¨.Ò8Ø×Ñ˜R §¡°TÐÕ:Ü˜œE×2Ñ2Ô3Ø×Ñ˜RŸY™Y¨¯	©	¯©À2Ç7Á7Ø')ð õ +ð 4r   c                 ó˜   — | j                  |j                  «       «       |j                  r| j                  s| j                  |«       y y y r   )r«   r¬   Úellipsisrq   rG  s      r   Ú"_generate_cpy_function_collecttypez-Recompiler._generate_cpy_function_collecttype”  s=   € Ø×Ñ˜b×0Ñ0Ó2Ô3Ø�;Š;˜t×4Ò4Ø×!Ñ! "Õ%ð  5ˆ;r   c                 ó  — | j                   rJ ‚t        |t        j                  «      sJ ‚|j                  r| j                  ||«       y | j                  }t        |j                  «      }|dk(  rd}n
|dk(  rd}nd}g }g }d|z  }t        |j                  «      D ]=  \  }	}
|j                  |
j                  d|	z  |«      «       |j                  d|	z  «       Œ? d	j                  |«      }|xs d
}|j                  r|j                  dz   }nd}|›d|›d|›d�} |d|j                  j                  |«      ›�«        |d«       d	j                  |«      }d}t        |j                  t        j                  «      rd} |d|›|›d|›d�«        |d«        |d«        |d«        |d|›d|›d�«        |d«       d|z  }t        |j                  «      D ]%  \  }	}
|
j                  d|	z  |«      } |d|z  «       Œ' t!        «       }t!        «       }|j                  D ]  }
| j#                  |
||«       Œ t%        |«      D ]  } |d|›d�«       Œ t        |j                  t        j                  «      s7d}d|z  }d|j                  j                  d|«      z  } ||«        |d«       nd }d}t        |j                  «      dkD  r€t'        t        |j                  «      «      }|D ]  }	 |d |	z  «       Œ  |«         |d!|t        |«      t        |«      d	j                  |D �	cg c]  }	d"|	z  ‘Œ	 c}	«      fz  «        |d#«        |«        t        |j                  «      D ]&  \  }	}
| j)                  |
d$|	z  d|	z  d%«        |«        Œ(  |d&«        |d'«       t'        t        |j                  «      «      D �	cg c]  }	d|	z  ‘Œ	 }}	d	j                  |«      } |d(|›|›d|›d)�«        |d*«        |d+«        |«         |d,«       |dk(  r |d-«       |rA |d.| j+                  |j                  d/d0«      z  «       |D ]  } |d|z   «       Œ  |d1«       n"|D ]  } |d|z   «       Œ  |d2«        |d3«        |d«        |d4«       d5„ }d6}g }g }d|z  }t        |j                  «      D ]Q  \  }	}
d} ||
«      rd7}d8}|
j                  d9||	fz  |«      }|j                  |«       |j                  d:||	fz  «       ŒS |j                  } ||«      r?d|z  }|j                  d;|«      }|j-                  d|«       t        j.                  }d }d<}d8}|rƒd	j                  |«      }|xs d
}|›d|›d|›d�} |d|j                  |«      ›�«        |d«       |r ||«       d	j                  |«      } |d(|›|›d|›d)�«       |r |d=«        |d«       n |d>|›d?|›�«        |d@«        |«        y c c}	w c c}	w )ANr   Únoargr   Úarg0r�   úargument of %sz x%dzx%dr   Úvoidr/   r6   Ú_cffi_d_r  rL   ústatic rù   zreturn r%  r&  rû   z#ifndef PYPY_VERSIONzstatic PyObject *Ú_cffi_f_z(PyObject *self, PyObject *z  %s;Ú;z	result = úresult of %sz resultz  PyObject *pyresult;z  PyObject *arg%d;z1  if (!PyArg_UnpackTuple(args, "%s", %d, %d, %s))z&arg%drú   zarg%dzreturn NULLz  Py_BEGIN_ALLOW_THREADSz  _cffi_restore_errno();ú  { z); }z  _cffi_save_errno();z  Py_END_ALLOW_THREADSz  (void)self; /* unused */z  (void)noarg; /* unused */z  pyresult = %s;Úresultzresult typez  return pyresult;z  Py_INCREF(Py_None);z  return Py_None;rñ   c                 ó’   — t        | t        j                  «      xs, t        | t        j                  «      xr | j	                  «       S r   )rŽ   r   r™   ÚPrimitiveTyper'  )r  s    r   Úneed_indirectionz@Recompiler._generate_cpy_function_decl.<locals>.need_indirection  s=   € Ü˜t¤U×%8Ñ%8Ó9ò -Ü ¤e×&9Ñ&9Ó:ò ,Ø×)Ñ)Ó+ð.r   Fr   Tz %sx%dz%sx%dz *resultz
*result = z  return result;z#  define _cffi_f_z	 _cffi_d_rò   )rq   rŽ   r   r“   rZ  Ú_generate_cpy_constant_declrÙ   r1   r�   r›   rŒ   r*  rO   Úabirg  r�   rÏ   r:  rˆ   r  r5  rD  ÚinsertÚ	void_type)r   r�   r   r
  ÚnumargsÚargnameÚ	argumentsÚcall_argumentsrC  r¢   r  Úrepr_argumentsrl  Úname_and_argumentsÚresult_codeÚargr8  r9  ró   Úresult_declÚrngÚfreelinerj  Ú
differenceÚindirectionÚ	tp_results                             r   Ú_generate_cpy_function_declz&Recompiler._generate_cpy_function_decl™  sã  € Ø×(Ò(Ð(Ð(Ü˜"œe×3Ñ3Ô4Ð4Ð4Ø�;Š;ð ×,Ñ,¨R°Ô6ØØ�z‰zˆÜ�b—g‘g“,ˆØ�aŠ<Ø‰GØ˜Š\Ø‰GàˆGð ˆ	ØˆØ" TÑ)ˆÜ  §¡Ö)‰GˆAˆtØ×Ñ˜TŸ_™_¨V°a©Z¸ÓAÔBØ×!Ñ! %¨!¡)Õ,ð *ð Ÿ™ 9Ó-ˆØ'Ò1¨6ˆØ�6Š6Ø—&‘&˜3‘,‰CàˆCÚ36ººnÐMÐÚ˜BŸI™I×0Ñ0Ð1CÔDÐFÔGÙˆSŒ	ØŸ™ >Ó2ˆØˆÜ�b—i‘i¤§¡Ô0ØˆKÚ™kª4²Ð@ÔAÙˆSŒ	áÐ#Ô$áÐ Ô!Úº4ÂÐIÔJÙˆSŒ	à" TÑ)ˆÜ  §¡Ö)‰GˆAˆtØ—/‘/ &¨1¡*¨gÓ6ˆCÙ�˜3‘Õð *ô “Eˆ	Ü“Eˆ	Ø—G”GˆDØ×'Ñ'¨¨i¸ÕCð ä˜9Ö%ˆDÚšDÐ"Õ#ð &ô ˜"Ÿ)™)¤U§^¡^Ô4Ø%ˆKØ$ tÑ+ˆGØ! B§I¡I×$8Ñ$8¸ÀGÓ$LÑLˆKÙ�ÔÙÐ(Õ)àˆKØˆKäˆr�w‰w‹<˜!ÒÜœ˜BŸG™G›Ó%ˆCÛ�ÙÐ)¨AÑ-Õ.ð áŒFÙÐDØ”c˜#“h¤ C£Ø—	‘	±Ó5±¨A˜8 a›<°Ñ5Ó6ðH8ñ 8ô 9ñ Ð#Ô$ÙŒä  §¡Ö)‰GˆAˆtØ×&Ñ& t¨W°q©[¸%À!¹)Ø'4ô6á�Fð *ñ
 	Ð'Ô(ÙÐ'Ô(Ü-2´3°r·w±w³<Ô-@ÓAÑ-@¨˜% !›)Ð-@ˆÐAØŸ™ >Ó2ˆÚ¡+ªt²^ÐDÔEÙÐ$Ô%ÙÐ%Ô&ÙŒáÐ)Ô*Ø�aŠ<ÙÐ.Ô/ÙÙÐ#Ø×*Ñ*¨2¯9©9°hÀÓNñOô Pã%�Ù�T˜H‘_Õ%ð &áÐ%Õ&ã%�Ù�T˜H‘_Õ%ð &áÐ(Ô)ÙÐ$Ô%ÙˆSŒ	áˆWŒò	.ð ˆ
Øˆ	ØˆØ" TÑ)ˆÜ  §¡Ö)‰GˆAˆtØˆKÙ Ô%Ø!�Ø!�
Ø—/‘/ (¨k¸1Ð-=Ñ"=¸wÓGˆCØ×Ñ˜SÔ!Ø×!Ñ! '¨[¸!Ð,<Ñ"<Õ=ð *ð —I‘Iˆ	Ù˜IÔ&Ø$ tÑ+ˆGØ×&Ñ& z°7Ó;ˆCØ×Ñ˜Q Ô$ÜŸ™ˆIØˆKØ&ˆKØˆJÙØ!ŸY™Y yÓ1ˆNØ+Ò5¨vˆNÚ7:ºDÚ7Eð"GÐâ 	× 4Ñ 4Ð5GÔ HÐJÔKÙ�ŒIÙÙ�[Ô!Ø!ŸY™Y ~Ó6ˆNÚ¡k²4ºÐHÔIÙÙÐ'Ô(Ù��Iâ²d¹DÐAÔBáˆXŒÙ�ùòg 6ùò Bs   Ì+X ÏXc           
      ó–  — |j                   r| j                  s| j                  ||«       y | j                  |j	                  «          }t        |j                  «      }| j                  rt        }n|dk(  rt        }n|dk(  rt        }nt        }| j                  d   j                  t        |d|z  t        ||«      d|z  ¬«      «       y )Nr   r   rÄ   z
_cffi_f_%sz
_cffi_d_%s)r   )rZ  rq   Ú_generate_cpy_constant_ctxr†   r¬   r1   r�   ÚOP_DLOPEN_FUNCÚOP_CPYTHON_BLTN_NÚOP_CPYTHON_BLTN_OÚOP_CPYTHON_BLTN_VrÍ   rŒ   r   rž   )r   r�   r   rB   ro  Ú	meth_kinds         r   Ú_generate_cpy_function_ctxz%Recompiler._generate_cpy_function_ctx;  s­   € Ø�;Š;˜t×4Ò4Ø×+Ñ+¨B°Ô5ØØ—_‘_ R×%7Ñ%7Ó%9Ñ:ˆ
Ü�b—g‘g“,ˆØ× Ò Ü&‰IØ˜Š\Ü)‰IØ˜Š\Ü)‰Iä)ˆIØ�
‰
�8Ñ×#Ñ#Ü�t˜\¨DÑ0Ü˜i¨Ó4Ø(¨4Ñ/ô1õ	2r   c                 óü   — t        |t        j                  «      ra|j                  }|dk(  r|j	                  d«      }d|›d|›d�}| j                  |d|z  |j                  «      }t        j                  ||«      }|S )Nú...r   z_cffi_array_len(((ú)0)->rL   ú%s[0])rŽ   r   r?  r•   r*  r°   r  )r   Ú	tp_structÚ
field_nameÚtp_fieldÚactual_lengthÚptr_struct_nameÚtp_items          r   r°   zRecompiler._field_typeQ  sr   € Ü�h¤§¡Ô0Ø$ŸO™OˆMØ Ò%Ø"+×"6Ñ"6°sÓ";‘â#¢Zð!1�à×&Ñ& y°'¸JÑ2FØ'/§}¡}ó6ˆGä—‘ w°Ó>ˆHØˆr   c                 óŒ   — | j                  |«       | j                  r'|j                  «       D ]  }| j                  |«       Œ y y r   )r«   rq   Úanonymous_struct_fieldsÚ_struct_collecttype)r   r�   Úfldtypes      r   r’  zRecompiler._struct_collecttype]  s?   € Ø×Ñ˜bÔ!Ø× Ò à×5Ñ5Ö7�Ø×(Ñ(¨Õ1ñ 8ð !r   c           
      ó  — |j                   €y | j                  }d|›�} |d«        |d|›d|›d�«        |d«        |d«        |d«       | j                  |«      D ]Ö  \  }}}}		 |j                  «       s|d	k\  r|d
k7  r |d|›d|›d|›d�«       Œ6t	        |t
        j                  «      rc|j                  �|j                  dk(  rH|j                  }|dz   }t	        |t
        j                  «      r|j                  €Œ8|j                  dk(  rŒH |d|j                  dd|z  |	¬«      ›d|›d�«       ŒØ  |d«        |d|›d|›d�«        |«        y # t        $ r}
 |dt        |
«      z  «       Y d }
~
�Œd }
~
ww xY w)NÚ_cffi_checkfld_Ú_CFFI_UNUSED_FNzstatic void r  z *p)rù   z8  /* only to generate compile-time warnings or errors */z
  (void)p;r   r6   z  (void)((p->z) | 0);  /* check that 'rî   z' is an integer */r‡  z[0]rf  z*tmpzfield %r©rÀ   z = &p->z; (void)tmp; }z
  /* %s */rû   zstruct _cffi_align_z { char x; z y; };)r­   rÙ   r¨   r(  rŽ   r   r?  r•   r  r*  r   r‰   )r   r�   r3  rS  r
  ÚcheckfuncnameÚfnameÚftyper,   ÚfqualrÃ   s              r   Ú_struct_declzRecompiler._struct_decld  sm  € Ø�;‰;ÐØØ�z‰z‰Ù/9Ð;ˆÙÐÔÚª²uÐ=Ô>ÙˆSŒ	ÙÐGÔHÙˆ\ÔØ-1×->Ñ->¸rÖ-BÑ)ˆE�5˜( Eð,Ø×(Ñ(Ô*¨h¸!ªmà ’{ÚÚ05²uºeðEô Fàô " %¬¯©Ô9Ø!ŸL™LÐ0°E·L±LÀEÒ4IØ!ŸJ™J�EØ! E™M�Eô " %¬¯©Ô9Ø!ŸL™LÑ0°E·L±LÀEÓ4Iò Ø×$Ñ$ V¨Z¸Ñ-=ÀUÐ$ÕKÚðõ ð .Cñ( 	ˆSŒ	Úº:ÂuÐMÔNÙ�øô	 %ò ,Ù�\¤C¨£FÑ*×+Ò+ûð,ús+   Á(,EÂA,EÄEÄ$EÅ	E?Å E:Å:E?Nc                 óž  — | j                   |   }d }g }t        |t        j                  «      r|j	                  d«       |j
                  €|j	                  d«       d}|| j                  j                  j                  vr°|�"|| j                  j                  j                  vrŒ|j
                  €n7|j                  st        |j                  «       «      rn|j	                  d«       |j                  rO|j                  dkD  rt        |›d|j                  ›d�«      ‚|j	                  d«       n|j	                  d	«       d
}dj                  |«      xs d}g }|�€–t        | j!                  |«      «      }	|	D �]  \  }
}}}| j#                  ||
|«      }| j%                  |d|j&                  ›d|
›d�«       t(        }|dk\  rt*        }d|z  }nQ|�&t        |t        j,                  «      r|j.                  €d}n&d|€|j1                  d«      n|j&                  ›d|
›d�}|�|dk\  rd}n.|�d|j&                  ›d|
›d�}nd|j1                  d«      ›d|
›d�}|j	                  t3        |
|||t5        || j                   |   «      «      «       �Œ t7        | j8                  d   «      }| j8                  d   j;                  |«       |€d}d}d }n,|�d!|j&                  ›d"�}d#}nd$|›d�}d%|›d&�}d }nd}d'}d'}|}| j8                  d(   j	                  t=        |j&                  |||||||«      «       | j>                  jA                  |«       y ))NÚ_CFFI_F_UNIONÚ_CFFI_F_OPAQUEÚopaqueÚ_CFFI_F_CHECK_FIELDSr   z is declared with 'pack=zi'; only 0 or 1 are supported in API mode (try to use "...;", which does not require a 'pack' declaration)Ú_CFFI_F_PACKEDÚ_CFFI_F_EXTERNALÚexternalÚ|Ú0zfield 'rî   r8   r   z%d /* bits */z
(size_t)-1z	sizeof(((r   rˆ  rL   z(size_t)(((char *)&((z)4096)->z) - (char *)4096)z	offsetof(r6   r   rÅ   z
(size_t)-2éþÿÿÿÚunnamedz	sizeof(*(z)0)z-1 /* unknown alignment */zsizeof(zoffsetof(struct _cffi_align_z, y)rï   rÆ   )!r†   rŽ   r   Ú	UnionTyperŒ   r­   ro   r®   r¯   ÚpartialÚanyr‘  Úpackedr4   rO   r  r¨   r°   Ú_check_not_opaquer   r:   r;   r?  r•   r*  r(   rž   r1   rÍ   Úextendr@   rÐ   r7  )r   r�   r3  rS  rT  rB   Úreason_for_not_expandingrC   rG   r¦   Úfldnamer“  r,   r›  r9   r   ÚoffsetrF   ÚalignrE   s                       r   rU  zRecompiler._struct_ctx†  s3  € Ø—_‘_ RÑ(ˆ
Ø#'Ð ØˆÜ�bœ%Ÿ/™/Ô*Ø�L‰L˜Ô)Ø�;‰;ÐØ�L‰LÐ)Ô*Ø'/Ð$Ø�d—h‘h×&Ñ&×=Ñ=Ñ=ØÐ"Ø $§(¡(×"2Ñ"2×"IÑ"IÑIØ�{‰{Ð"ØØ—’œs 2×#=Ñ#=Ó#?Ô@Øà—‘Ð3Ô4Ø�yŠyØ—9‘9˜q’=Ü-ò ˜RŸY›Yð(ó)ð )ð
 —‘Ð-Õ.à�L‰LÐ+Ô,Ø'1Ð$Ø—‘˜“Ò& 3ˆØˆØ#Ñ+Ü˜d×/Ñ/°Ó3Ó4ˆJÜ5?Ñ1�˜ (¨EØ×*Ñ*¨2¨w¸Ó@�Ø×&Ñ&¡wØ:<¿'»'Â7Ð'KôMô �Ø˜q’=Ü$�BØ*¨XÑ5‘DØ�]Ü" 7¬E¯O©OÔ<ØŸ™Ð.Ø'‘Døð /8Ð.?˜Ÿ™ cÔ*Ø09·±ñ?âð!�Dð �= H°¢MØ)‘FØÑ*à!Ÿ›ªð1‘Fð +ð 46·=±=ÀÕ3DÂgÐN�FØ—‘Ü˜g v¨t°XÜ$ R¨¯©¸Ñ)AÓBóDöEð3 6@ô8 !$ D§J¡J¨wÑ$7Ó 8ÐØ�J‰J�wÑ×&Ñ& xÔ0àˆ}Ø#�Ø�Ø#‘àÑ(Ø/8¯~«~Ð?�DØ8‘Eð )ò ,1Ð2‘DÚDNÐP�EØ‘àˆDØˆEØ "ÐØ.ˆGØ�
‰
�>Ñ"×)Ñ)Ü˜BŸG™G Z°¸¸eÀWØ-¨xó9ô	:ð 	× Ñ ×$Ñ$ RÕ(r   c                 óð   — t        |t        j                  «      r'|j                  }t        |t        j                  «      rŒ't        |t        j                  «      r|j
                  €t        d|z  «      ‚y y )Nz0%s is of an opaque type (not declared in cdef()))rŽ   r   r?  r  r™   r­   rA  )r   r�   Úlocations      r   r­  zRecompiler._check_not_opaqueÜ  sb   € Ü˜œUŸ_™_Ô-Ø—‘ˆBô ˜œUŸ_™_Õ-ä�bœ%×-Ñ-Ô.°2·;±;Ð3FÜØBÀXÑMóOð Oð 4GÐ.r   c                 ó  — t        | j                  j                  «       «      }|j                  d„ ¬«       |D ]Ë  \  }}|| j                  vsŒ|j
                  rt        d|›d�«      ‚|j                  j                  d«      r-|j                  dd  j                  «       r|j                  dd  }nA|j                  dk(  r$|j                  dk(  rd}| j                  |d«       nt        d|›�«      ‚| j                  |d |«       ŒÍ y )	Nc                 ó   — | d   S )Nr   r&   )Útp_orders    r   r‚   z7Recompiler._add_missing_struct_unions.<locals>.<lambda>é  s   €  h¨q¢kr   rz   zinternal inconsistency: z* is partial but was not seen at this pointÚ$r   Ú_IO_FILEÚFILE)r  r—   r¸   rÒ   rÐ   rª  r4   r   Ú
startswithÚisdigitÚ	forcenamerO  rU  )r   r¿   r�   ÚorderrS  s        r   rÑ   z%Recompiler._add_missing_struct_unionsã  sò   € ô
 �4×&Ñ&×,Ñ,Ó.Ó/ˆØ�‰Ñ1ˆÔ2Û‰IˆB�Ø˜×1Ñ1Ò1Ø—:’:Ý-â>@ð/Có Dð Dð —7‘7×%Ñ% cÔ*¨r¯w©w°q°r¨{×/BÑ/BÔ/DØ!#§¡¨¨ ‘JØ—W‘W 
Ò*¨r¯|©|¸vÒ/EØ!'�JØ×%Ñ% b¨&Õ1å-Ù/1ð/4ó 5ð 5à× Ñ   T¨:Õ6ñ r   c                 ó&   — | j                  |«       y r   )r’  rG  s      r   Ú _generate_cpy_struct_collecttypez+Recompiler._generate_cpy_struct_collecttypeú  s   € Ø× Ñ  Õ$r   c                 ób   — |j                  d«      }d|v r||j                  dd«      fS |d|z   fS )Nr6   r/   r´   )r*  r+  )r   r�   r3  s      r   Ú_struct_nameszRecompiler._struct_namesþ  s<   € Ø—‘˜bÓ!ˆØ�%‰<Ø˜%Ÿ-™-¨¨SÓ1Ð1Ð1à˜# ™+Ð%Ð%r   c                 óH   —  | j                   |g| j                  |«      ¢­Ž  y r   )rœ  rÂ  rG  s      r   Ú_generate_cpy_struct_declz$Recompiler._generate_cpy_struct_decl  s"   € Øˆ×Ñ˜"Ð6˜t×1Ñ1°"Ó5Ô6r   c                 óH   —  | j                   |g| j                  |«      ¢­Ž  y r   )rU  rÂ  rG  s      r   Ú_generate_cpy_struct_ctxz#Recompiler._generate_cpy_struct_ctx	  s"   € Øˆ×Ñ˜Ð5˜d×0Ñ0°Ó4Ô5r   c                 ó€   — t        |t        j                  «      r| j                  ||«       y | j	                  |«       y r   )rŽ   r   rš   Ú_generate_cpy_enum_collecttyper’  rG  s      r   Ú#_generate_cpy_anonymous_collecttypez.Recompiler._generate_cpy_anonymous_collecttype  s.   € Ü�bœ%Ÿ.™.Ô)Ø×/Ñ/°°DÕ9à×$Ñ$ RÕ(r   c                 óˆ   — t        |t        j                  «      r| j                  |«       y | j	                  ||d|z   «       y ©NÚtypedef_)rŽ   r   rš   Ú_generate_cpy_enum_declrœ  rG  s      r   Ú_generate_cpy_anonymous_declz'Recompiler._generate_cpy_anonymous_decl  s5   € Ü�bœ%Ÿ.™.Ô)Ø×(Ñ(¨Õ,à×Ñ˜b $¨
°TÑ(9Õ:r   c                 óŠ   — t        |t        j                  «      r| j                  ||«       y | j	                  ||d|z   «       y rË  )rŽ   r   rš   Ú	_enum_ctxrU  rG  s      r   Ú_generate_cpy_anonymous_ctxz&Recompiler._generate_cpy_anonymous_ctx  s5   € Ü�bœ%Ÿ.™.Ô)Ø�N‰N˜2˜tÕ$à×Ñ˜R  z°DÑ'8Õ9r   c                 óö  — ||f| j                   v rt        d|›d|›d�«      ‚| j                   j                  ||f«       | j                  }d|›d|›�}|r` |d|z  «        |d«        |d|›d	�«        |d
|›d|›d�«       |�|dkD  rd|fz  } |d|›d�«        |d«        |d«        |d«       n=|�J ‚ |d|z  «        |d«        |d|j	                  d«      ›d|›d�«        |d«        |«        y )Nzduplicate declaration of z 'r8   Ú_cffi_r´   z$static int %s(unsigned long long *o)rù   z  int n = (z) <= 0;z  *o = (unsigned long long)((z) | 0);  /* check that z is an integer */r   z%dUz  if (!_cffi_check_int(*o, n, z))z    n |= 2;z  return n;rû   zstatic void %s(char *o)z  *(r   z)o = rd  )r  r   r7  rÙ   r*  )r   Úis_intr   r�   Úcategoryr   r
  Úfuncnames           r   Ú_generate_cpy_constzRecompiler._generate_cpy_const&  s  € à�dÐ˜t×3Ñ3Ñ3Ý#Ú6>ÂÐEóGð Gà×Ñ× Ñ  (¨DÐ!1Ô2à�z‰z‰Ú$,©dÐ3ˆÙÙÐ7¸(ÑBÔCÙ�ŒIÚª4Ð1Ô2ÚÚ:>ÂðFô GàÐ&Ø ’?Ø"'¨;¨.Ñ"8�KÚº[ÐJÔKÙ�]Ô#Ù�ÔÙ��IàÐ&Ð&Ð&ÙÐ*¨XÑ5Ô6Ù�ŒIÚ R§]¡]°3Õ%7ºÐ>Ô?Ù�ŒIÙ�r   c                 ód   — |j                  «       }|r| j                  r| j                  |«       y y r   )r(  rq   r«   ©r   r�   r   rÔ  s       r   Ú"_generate_cpy_constant_collecttypez-Recompiler._generate_cpy_constant_collecttypeD  s.   € Ø×#Ñ#Ó%ˆÙ˜×.Ò.Ø×!Ñ! "Õ%ð /r   c                 óJ   — |j                  «       }| j                  |||«       y r   )r(  r×  rÙ  s       r   rk  z&Recompiler._generate_cpy_constant_declI  s"   € Ø×#Ñ#Ó%ˆØ× Ñ  ¨¨rÕ2r   c                 ó  — | j                   s!|j                  «       rt        t        d«      }n4| j                   rt        }nt
        }| j                  |   }t        ||«      }| j                  d   j                  t        |d|z  |«      «       y )Nrï   rÄ   ú_cffi_const_%s)
rq   r(  rž   ÚOP_CONSTANT_INTÚOP_DLOPEN_CONSTÚOP_CONSTANTr†   rÍ   rŒ   r   )r   r�   r   r   Ú
const_kindrB   s         r   r  z%Recompiler._generate_cpy_constant_ctxM  sy   € Ø×$Ò$¨×);Ñ);Ô)=Üœ_¨bÓ1‰Gà×$Ò$Ü,‘
ä(�
ØŸ™¨Ñ,ˆJÜ˜Z¨Ó4ˆGØ�
‰
�8Ñ×#Ñ#Ü�tÐ-°Ñ4°gÓ>õ	@r   c                 ó&   — | j                  |«       y r   )r«   rG  s      r   rÈ  z)Recompiler._generate_cpy_enum_collecttype]  s   € Ø×Ñ˜bÕ!r   c                 óJ   — |j                   D ]  }| j                  d|«       Œ y )NT)Úenumeratorsr×  )r   r�   r   Ú
enumerators       r   rÍ  z"Recompiler._generate_cpy_enum_decl`  s    € ØŸ.œ.ˆJØ×$Ñ$ T¨:Õ6ñ )r   c           	      óÐ  — | j                   |   }t        t        d«      }| j                  r|j	                  «        t        |j                  |j                  «      D ]3  \  }}| j                  d   j                  t        |d|z  ||¬«      «       Œ5 |�d|vr| j                  sd|z  }d|z  }nh|j                  | j                  g «      }	| j                  j                  |	«      }t        t        | j                  j                  |	d«      «      dk  «      }d	j!                  |j                  «      }
| j                  d
   j                  t#        |j$                  ||||
«      «       y )Nrï   rÄ   rÝ  ©r   r¸  z
sizeof(%s)z((%s)-1) <= 0r   rK   rÇ   )r†   rž   ÚOP_ENUMrq   Úcheck_not_partialÚziprä  Ú
enumvaluesrÍ   rŒ   r   Úbuild_baseinttypero   ÚsizeofÚintÚcastrO   rS   r   )r   r�   r3  rB   r   rå  Ú	enumvaluer   rV   ÚbasetprW   s              r   rÐ  zRecompiler._enum_ctxd  s2  € Ø—_‘_ RÑ(ˆ
Üœ "Ó%ˆØ× Ò Ø× Ñ Ô"Ü%(¨¯©¸¿¹Ö%GÑ!ˆJ˜	Ø�J‰J�xÑ ×'Ñ'Ü˜:Ð'7¸*Ñ'DÀgØ'0ô2õ3ð &Hð
 Ð ¨EÑ!1¸$×:OÒ:OØ %Ñ'ˆDØ$ uÑ,‰Fà×)Ñ)¨$¯(©(°BÓ7ˆFØ—8‘8—?‘? 6Ó*ˆDÜœ˜TŸX™XŸ]™]¨6°2Ó6Ó7¸!Ñ;Ó<ˆFØ—8‘8˜BŸN™NÓ+ˆØ�
‰
�6Ñ×!Ñ!Ü�R—W‘W˜j¨$°¸ÓAõ	Cr   c                 óD   — | j                  ||j                  «       «       y r   )rÐ  r  rG  s      r   Ú_generate_cpy_enum_ctxz!Recompiler._generate_cpy_enum_ctxy  s   € Ø�‰�r˜2Ÿ>™>Ó+Õ,r   c                  ó   — y r   r&   rG  s      r   Ú_generate_cpy_macro_collecttypez*Recompiler._generate_cpy_macro_collecttype  rM  r   c                 ó@   — |dk(  rd }n|}| j                  d||¬«       y )Nr‡  Trç  )r×  )r   r�   r   r   s       r   Ú_generate_cpy_macro_declz#Recompiler._generate_cpy_macro_decl‚  s(   € Ø�Š;Ø‰KàˆKØ× Ñ   t¸Ð ÕEr   c                 óÊ   — |dk(  r| j                   rt        d|›d�«      ‚d }n|}t        t        d«      }| j                  d   j                  t        |d|z  ||¬«      «       y )Nr‡  z(cannot use the syntax '...' in '#define z ...' when using the ABI moderï   rÄ   rÝ  rç  )rq   r   rž   rÞ  rÍ   rŒ   r   )r   r�   r   r   r   s        r   Ú_generate_cpy_macro_ctxz"Recompiler._generate_cpy_macro_ctx‰  sm   € Ø�Š;Ø×$Ò$Ý'â,0ð3ó4ð 4ð ‰KàˆKÜœ¨"Ó-ˆØ�
‰
�8Ñ×#Ñ#Ü�tÐ-°Ñ4°gØ#.ô0õ	1r   c                 óÒ   — t        |t        j                  «      rL|j                  }|dk(  rd|›d�}| j	                  |j
                  d|z  «      }t        j                  ||«      }|S )Nr‡  z_cffi_array_len(rL   r‰  )rŽ   r   r?  r•   rF  r  )r   r�   Úglobal_namer�  r�  s        r   rF  zRecompiler._global_typeš  sY   € Ü�bœ%Ÿ/™/Ô*ØŸI™IˆMØ Ó%Ú9DÐ F�Ø×'Ñ'¨¯©°¸;Ñ1FÓGˆGÜ—‘ ¨-Ó8ˆBØˆ	r   c                 óF   — | j                  | j                  ||«      «       y r   )r«   rF  rG  s      r   Ú"_generate_cpy_variable_collecttypez-Recompiler._generate_cpy_variable_collecttype£  s   € Ø×Ñ˜d×/Ñ/°°DÓ9Õ:r   c                 óR  — | j                   }| j                  ||«      }t        |t        j                  «      r|j
                  €|j                  }d}nd}d|›d�} |d|j                  || j                  ¬«      z   «        |d«        |d|›d	|›d
�«        |d«        |«        y )Nr6   Ú&z*_cffi_var_rý   rb  r—  rù   z	  return r  r&  rû   )	rÙ   rF  rŽ   r   r?  r•   r  r*  r»   )r   r�   r   r
  Ú	ampersandró   s         r   Ú_generate_cpy_variable_declz&Recompiler._generate_cpy_variable_decl¦  s’   € Ø�z‰zˆØ×Ñ˜r 4Ó(ˆÜ�bœ%Ÿ/™/Ô*¨r¯y©yÐ/@Ø—‘ˆBØ‰IàˆIøò )-Ð.ˆÙˆY˜Ÿ™ t°4×3FÑ3F˜ÓGÑGÔHÙˆSŒ	Ú¢9ªdÐ3Ô4ÙˆSŒ	Ù�r   c           
      óä   — | j                  ||«      }| j                  |   }| j                  rt        }nt        }| j
                  d   j                  t        |d|z  t        ||«      «      «       y )NrÄ   z_cffi_var_%s)	rF  r†   rq   ÚOP_GLOBAL_VARÚOP_GLOBAL_VAR_FrÍ   rŒ   r   rž   )r   r�   r   rB   r9   s        r   Ú_generate_cpy_variable_ctxz%Recompiler._generate_cpy_variable_ctx½  se   € Ø×Ñ˜r 4Ó(ˆØ—_‘_ RÑ(ˆ
Ø× Ò Ü‰Bä ˆBØ�
‰
�8Ñ×#Ñ#Ü�t˜^¨dÑ2´F¸2¸zÓ4JÓKõ	Mr   c                 ó^   — t        |t        j                  «      sJ ‚| j                  |«       y r   )rŽ   r   r“   r«   rG  s      r   Ú'_generate_cpy_extern_python_collecttypez2Recompiler._generate_cpy_extern_python_collecttypeÊ  s&   € Ü˜"œe×3Ñ3Ô4Ð4Ð4Ø×Ñ˜bÕ!r   c           	      óº  — | j                   }t        |j                  t        j                  «      rd}n%d|z  }d|j                  j                  d|«      ›d�} |d|z  «        |d| j                  ›d|›d	|›d
�«        |«        g }d|z  }t        |j                  «      D ]+  \  }}	|	j                  d|z  |«      }
|j                  |
«       Œ- dj                  |«      }|xs d}|›d|›d�}|j                  dk(  rd|z   }d„ }t        t        |j                  «      dz  d«      } ||j                  «      rt        |d«      }t        |j                  t        j                  «      r;d|j                  j                  d«      ||j                  j                  d«      |fz  } ||›|j                  j                  |«      ›�«        |d«        |d|z  «        |d«       t        |j                  «      D ]f  \  }}	d|z  }
t        |	t        j                  «      s ||	«      rd|
z   }
t        j                  |	«      }	 |d|	j                  d«      |dz  |
fz  «       Œh  |d|z  «       t        |j                  t        j                  «      s% |d|j                  j                  d«      ›d�«        |d «        |«        | xj                   d!z  c_        y )"Nr¦  re  z(int)sizeof(r6   rL   z3static struct _cffi_externpy_s _cffi_externpy__%s =r   rî   r0   z	, 0, 0 };r_  z a%dr   r`  r  Ú	__stdcallz_cffi_stdcall c                 óX   — t        | t        j                  «      xr | j                  dk(  S )Nr=  )rŽ   r   ri  r   r€   s    r   Úmay_need_128_bitsz9Recompiler._extern_python_decl.<locals>.may_need_128_bitsê  s(   € Ü˜r¤5×#6Ñ#6Ó7ò -Ø—G‘G˜}Ñ,ð.r   r\   é   z!sizeof(%s) > %d ? sizeof(%s) : %drù   z  char a[%s];z  char *p = a;za%drÿ  z  *(%s)(p + %d) = %s;r   z,  _cffi_call_python(&_cffi_externpy__%s, p);z  return *(z)p;rû   r   )rÙ   rŽ   rg  r   r�   r*  rp   r›   r�   rŒ   rO   rl  ru   r1   r™   r‘   r	  )r   r�   r   Útag_and_spacer
  Úsize_of_resultrC  rq  r¢   r  rv  rs  rt  r  Ú	size_of_as                  r   Ú_extern_python_declzRecompiler._extern_python_declÑ  sƒ  € Ø�z‰zˆÜ�b—i‘i¤§¡Ô0Ø ‰Nà$ tÑ+‰Gà—	‘	×$Ñ$ R¨Õ1ð4ˆNáÐBÀTÑIÔJÚØ×Óšd¢Nð4ô 	5áŒàˆ	Ø" TÑ)ˆÜ  §¡Ö)‰GˆAˆtØ—/‘/ &¨1¡*¨gÓ6ˆCØ×Ñ˜SÕ!ð *ð Ÿ™ 9Ó-ˆØ'Ò1¨6ˆÚ)-ª~Ð>ÐØ�6‰6�[Ò Ø!1Ð4FÑ!FÐò	.ô œ˜BŸG™G› Q™¨Ó*ˆ	Ù˜RŸY™YÔ'Ü˜I rÓ*ˆIÜ�b—i‘i¤×!4Ñ!4Ô5Ø;Ø—	‘	×$Ñ$ RÓ(¨)Ø—	‘	×$Ñ$ RÓ(¨)ð?5ñ 5ˆIñ 	‘} b§i¡i×&:Ñ&:Ð;MÔ&NÐOÔPÙˆSŒ	Ùˆ_˜yÑ(Ô)ÙÐÔÜ  §¡Ö)‰GˆAˆtØ˜!‘)ˆCÜ˜4¤×!4Ñ!4Ô5Ù% dÔ+Ø˜C‘i�Ü×(Ñ(¨Ó.�ÙÐ(¨D¯O©O¸CÓ,@À!ÀAÁ#ÀsÐ+KÑKÕLð *ñ 	Ð;¸dÑBÔCÜ˜"Ÿ)™)¤U§^¡^Ô4Ú r§y¡y×';Ñ';¸CÕ'@ÐBÔCÙˆSŒ	ÙŒØ×Ò˜aÑÖr   c                 ó*   — | j                  ||d«       y )Nrb  ©r  rG  s      r   Ú _generate_cpy_extern_python_declz+Recompiler._generate_cpy_extern_python_decl  s   € Ø× Ñ   T¨9Õ5r   c                 ó*   — | j                  ||d«       y )NzCFFI_DLLEXPORT r  rG  s      r   Ú#_generate_cpy_dllexport_python_declz.Recompiler._generate_cpy_dllexport_python_decl
  s   € Ø× Ñ   TÐ+<Õ=r   c                 ó*   — | j                  ||d«       y )Nr6   r  rG  s      r   Ú'_generate_cpy_extern_python_plus_c_declz2Recompiler._generate_cpy_extern_python_plus_c_decl  s   € Ø× Ñ   T¨2Õ.r   c                 óø   — | j                   rt        d«      ‚|j                  rt        d«      ‚| j                  |   }t        t        |«      }| j                  d   j                  t        |d|z  ||«      «       y )Nz,cannot use 'extern "Python"' in the ABI modez$a vararg function is extern "Python"rÄ   z&_cffi_externpy__%s)
rq   r   rZ  r4   r†   rž   ÚOP_EXTERN_PYTHONrÍ   rŒ   r   )r   r�   r   rB   r   s        r   Ú_generate_cpy_extern_python_ctxz*Recompiler._generate_cpy_extern_python_ctx  sw   € Ø× Ò Ü#Ø@óBð Bà�;Š;Ü%Ð&NÓOÐOØ—_‘_ RÑ(ˆ
ÜÔ)¨:Ó6ˆØ�
‰
�8Ñ×#Ñ#Ü�tÐ2°TÑ9¸7ÀDÓIõ	Kr   c                 ó  — | j                   } |d«       t        |t        «      s|j                  d«      }n|j	                  d«       	 |j	                  d«       |j                  d«      D ]  }|}t        d«      t        u rt        t        |«      }nt        |«      dd } |d	|z   j                  «       «       d
}|D ]#  }t        |«      dk\  r
 ||«       d
}|d|fz  z  }Œ%  ||«       Œ� y # t
        $ r d|z   }Y Œ¤w xY w)Nz=// # NB. this is not a string because of a size limit in MSVCzutf-8Úasciis   # -*- encoding: utf8 -*-
Tz//r   rï   z// r6   éL   z%d,)rÙ   rŽ   ÚbytesÚencodeÚdecodeÚUnicodeDecodeErrorÚ
splitlinesr  ÚmapÚordr  Úrstripr1   )r   Úsr
  ÚlinerE   Úprinted_lineÚcs          r   r  z)Recompiler._print_string_literal_in_array  sÿ   € Ø�z‰zˆÙÐLÔMÜ˜!œUÔ#Ø—‘˜Ó!‰Aà�H‰H�WÔð	2Ø�H‰H�WÔð —L‘L Ö&ˆDØˆGÜ�D‹zœUÑ"Üœ3 “~‘ô   ›.¨¨2Ð.�Ù�%˜'‘/×)Ñ)Ó+Ô,ØˆLÛ�Ü�|Ó$¨Ò*Ù˜Ô&Ø#%�LØ ¨¨¡Ñ,‘ð	 ñ
 �Õñ 'øô "ò 	2Ø-°Ñ1ŠAð	2ús   Á	C. Ã.C?Ã>C?c                 óF   — t        t        t        «      | j                  |<   y r   )rž   ÚOP_PRIMITIVEÚ	PRIM_VOIDrŠ   ©r   r�   r  s      r   Ú_emit_bytecode_VoidTypez"Recompiler._emit_bytecode_VoidType=  s   € Ü!'¬´iÓ!@ˆ�‰˜Òr   c                 ód   — t         |j                     }t        t        |«      | j                  |<   y r   )ÚPRIMITIVE_TO_INDEXr   rž   r+  rŠ   )r   r�   r  re   s       r   Ú_emit_bytecode_PrimitiveTypez'Recompiler._emit_bytecode_PrimitiveType@  s%   € Ü'¨¯©Ñ0ˆ
Ü!'¬°jÓ!Aˆ�‰˜Òr   c                 ó’   — d|j                   ›d|j                   ›d|j                   ›d�}t        t        |«      | j                  |<   y )Nz_cffi_prim_int(sizeof(z), (
           ((z)-1) | 0 /* check that z' is an integer type */
         ) <= 0)©r   rž   r+  rŠ   ©r   r�   r  r&  s       r   Ú!_emit_bytecode_UnknownIntegerTypez,Recompiler._emit_bytecode_UnknownIntegerTypeD  s5   � ð $&§7£7¨B¯G«G°R·W³Wð>ˆô "(¬°aÓ!8ˆ�‰˜Òr   c                 óx   — d|j                   ›d|j                   ›d�}t        t        |«      | j                  |<   y )Nz_cffi_prim_float(sizeof(z) *
           (((z6)1) / 2) * 2 /* integer => 0, float => 1 */
         )r3  r4  s       r   Ú_emit_bytecode_UnknownFloatTypez*Recompiler._emit_bytecode_UnknownFloatTypeJ  s/   � ð  ŸW›W b§g£gð/ˆô "(¬°aÓ!8ˆ�‰˜Òr   c                 ó4  — t        t        | j                  |j                     «      | j                  |<   |dz  }|j
                  D ]e  }| j                  |   }||k7  rJt        |t        j                  «      r| j                  ||«       nt        t        |«      | j                  |<   |dz  }Œg t        |j                  «      }|j                  �-|j                  dk(  r|dz  }nt        d|j                  ›�«      ‚t        t        |«      | j                  |<   y )Nr   r	  rZ   zabi=)rž   ÚOP_FUNCTIONr†   rg  rŠ   r�   rŽ   r   ri  r1  r:   rî  rZ  rl  r4   ÚOP_FUNCTION_END)r   r�   r  r¡   Ú	realindexrC   s         r   Ú_emit_bytecode_RawFunctionTypez)Recompiler._emit_bytecode_RawFunctionTypeP  så   € Ü!'¬°T·_±_ÀRÇYÁYÑ5OÓ!Pˆ�‰˜ÑØ�‰
ˆØ—7”7ˆCØŸ™¨Ñ,ˆIØ˜	Ò!Ü˜c¤5×#6Ñ#6Ô7Ø×5Ñ5°c¸5ÕAä-3´G¸YÓ-G�D—O‘O EÑ*Ø�Q‰J‰Eð ô �B—K‘KÓ ˆØ�6‰6ÐØ�v‰v˜Ò$Ø˜‘
‘å)°b·f²fÐ*>Ó?Ð?Ü!'¬¸Ó!?ˆ�‰˜Òr   c                 ól   — t        t        | j                  |j                     «      | j                  |<   y r   )rž   Ú
OP_POINTERr†   rW  rŠ   r-  s      r   Ú_emit_bytecode_PointerTypez%Recompiler._emit_bytecode_PointerTypec  s$   € Ü!'¬
°D·O±OÀBÇIÁIÑ4NÓ!Oˆ�‰˜Òr   c                 óx   — |j                  «       }t        t        | j                  |   «      | j                  |<   y r   )r¬   rž   r>  r†   rŠ   )r   r�   r  Úraws       r   Ú_emit_bytecode_FunctionPtrTypez)Recompiler._emit_bytecode_FunctionPtrTypei  s.   € Ø× Ñ Ó"ˆÜ!'¬
°D·O±OÀCÑ4HÓ!Iˆ�‰˜Òr   c                 ó¾  — | j                   |j                     }|j                  €t        t        |«      | j
                  |<   y |j                  dk(  r(t        dt        |«      j                  dd«      ›d�«      ‚| j
                  |dz      dk(  sJ ‚t        t        |«      | j
                  |<   t        d t        |j                  «      «      | j
                  |dz   <   y )Nr‡  ztype z/*...*/zb badly placed: the '...' array length can only be used on global arrays or on fields of structuresr   r}   )
r†   r  r•   rž   ÚOP_OPEN_ARRAYrŠ   r   r‰   r+  ÚOP_ARRAY)r   r�   r  Ú
item_indexs       r   Ú_emit_bytecode_ArrayTypez#Recompiler._emit_bytecode_ArrayTypem  s¸   € Ø—_‘_ R§W¡WÑ-ˆ
Ø�9‰9ÐÜ%+¬M¸:Ó%FˆD�O‰O˜EÒ"Ø�Y‰Y˜%ÒÝ#ô ˜“G—O‘O I¨uÕ5ð8ó9ð 9ð
 —?‘? 5¨1¡9Ñ-°Ò6Ð6Ð6Ü%+¬H°jÓ%AˆD�O‰O˜EÑ"Ü)/°´c¸"¿)¹)³nÓ)EˆD�O‰O˜E A™IÒ&r   c                 ó\   — | j                   |   }t        t        |«      | j                  |<   y r   )r—   rž   ÚOP_STRUCT_UNIONrŠ   )r   r�   r  Ústruct_indexs       r   Ú_emit_bytecode_StructTypez$Recompiler._emit_bytecode_StructType{  s'   € Ø×*Ñ*¨2Ñ.ˆÜ!'¬¸Ó!Fˆ�‰˜Òr   c                 ó\   — | j                   |   }t        t        |«      | j                  |<   y r   )r˜   rž   rè  rŠ   )r   r�   r  Ú
enum_indexs       r   Ú_emit_bytecode_EnumTypez"Recompiler._emit_bytecode_EnumType€  s$   € Ø—[‘[ ‘_ˆ
Ü!'¬°Ó!<ˆ�‰˜Òr   ©F)r6   r   )NÚconstN)Vr#   r$   r%   r	  r   rw   r¤   r¨   r«   r‡   rÎ   rÓ   rÙ   rß   rì   rÜ   r  rÛ   r  r5  r:  r-  rD  rH  rJ  rL  rO  rX  r[  r}  r…  r°   r’  rœ  rU  r­  rÑ   rÀ  Ú_generate_cpy_union_collecttyperÂ  rÄ  Ú_generate_cpy_union_declrÆ  Ú_generate_cpy_union_ctxrÉ  rÎ  rÑ  r×  rÚ  rk  r  rÈ  rÍ  rÐ  ró  rõ  r÷  rù  rF  rý  r  r  r  Ú*_generate_cpy_dllexport_python_collecttypeÚ._generate_cpy_extern_python_plus_c_collecttyper  r  r  r  r  Ú"_generate_cpy_dllexport_python_ctxÚ&_generate_cpy_extern_python_plus_c_ctxr  r.  r1  r5  r7  r<  r?  Ú_emit_bytecode_ConstPointerTypeÚ_emit_bytecode_NamedPointerTyperB  rG  rK  Ú_emit_bytecode_UnionTyperN  r&   r   r   rm   rm   ~   sà  „ Ø€Mó%ò0ò81òt	<ò-ò&ò& H€Iò,ó>#ò2òòkòZ"ò0òh%ò+(òZKòò*òF=ò<òòFò+ò&ò
`òD2ò,
ò2ò óDT)òlOò7ò.%à&FÐ#ò&ò7à8Ðò6à6Ðò)ò;ò:ð CJØ(,óò<&ò
3ò@ò "ó7òCò*-òòFò1ò"ò;òò.Mò"ð
 .ð.Ð.Ø4ò4 òl6ò>ò/ò	Kð &ð&Ð&Ø,òò<AòBò9ò9ò@ò&Pð 'AÐ#Ø&@Ð#òJòFòGð  9Ðó=r   rm   )r	   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚNativeIOc                 ón   •— t        |t        «      r|j                  d«      }t        t        | �  |«       y )Nr  )rŽ   Úunicoder  Úsuperr\  r×   )r   r&  r�   s     €r   r×   zNativeIO.write‰  s*   ø€ Ü˜!œWÔ%Ø—H‘H˜WÓ%�Ü”(˜DÑ'¨Õ*r   )r#   r$   r%   r×   Ú__classcell__)r�   s   @r   r\  r\  ˆ  s   ø„ ÷	+ð 	+r   r\  c                 ó   — t        | d«      S )Nr×   )Úhasattr)Ú	maybefiles    r   Ú_is_file_likerd  Ž  s   € ä�9˜gÓ&Ð&r   c                 ó  — |rt        d|›�«       t        | ||d u ¬«      }|j                  «        |j                  «        t	        |«      r|j                  ||«       yt        «       }|j                  ||«       |j                  «       }	 t        |d«      5 }|j                  t        |«      dz   «      |k7  rt        ‚	 d d d «       |rt        d«       y# 1 sw Y   ŒxY w# t        $ r¡ d|t        j                  «       fz  }	t        |	d	«      5 }|j                  |«       d d d «       n# 1 sw Y   nxY w	 t        j                  |	|«       Y y# t         $ r/ t        j"                  |«       t        j                  |	|«       Y Y yw xY ww xY w)
Nzgenerating )rq   Trá   r   z(already up-to-date)Fz%s.~%dÚw)Úprintrm   r¤   rÓ   rd  rß   r\  Úgetvaluerâ   Úreadr1   ÚIOErrorrã   Úgetpidr×   ÚrenameÚOSErrorÚunlink)
ro   rp   rÞ   Útarget_fileÚverboseÚ
recompilerrÝ   ÚoutputÚf1Útmp_files
             r   Ú_make_c_or_py_sourceru  ’  s^  € ÙÝ¡Ð.Ô/Ü˜C Ø.6¸$Ð.>ôA€Jà×!Ñ!Ô#Ø×"Ñ"Ô$Ü�[Ô!Ø×$Ñ$ [°(Ô;ØÜ‹
€AØ× Ñ   HÔ-Ø�Z‰Z‹\€FðÜ�+˜sÔ# rØ�w‰w”s˜6“{ Q‘Ó'¨6Ò1Ü�ð 2÷ $ñ ÜÐ(Ô)Ø÷ $Ð#ûô ò 	Ø˜{¬B¯I©I«KÐ8Ñ8ˆÜ�(˜CÔ  BØ�H‰H�VÔ÷ !× Ñ úð	-Ü�I‰I�h Ô,ñ øô ò 	-Ü�I‰I�kÔ"Ü�I‰I�h Õ,Ùð	-úð	úsZ   ÂC" Â'CÃ C" ÃCÃC" Ã".FÄD+Ä"	FÄ+D4	Ä0FÄ8EÅ4FÆFÆFÆFc                 ó(   — |€J ‚t        | ||||«      S r   ©ru  )ro   rp   rÞ   Útarget_c_filerp  s        r   Úmake_c_sourcery  ±  s&   € ØÐÐÐÜ  [°(¸MØ 'ó)ð )r   c                 ó    — t        | |d ||«      S r   rw  )ro   rp   Útarget_py_filerp  s       r   Úmake_py_sourcer|  ¶  s   € Ü  [°$¸Ø 'ó)ð )r   c                 ó  — |j                  d«      }	 t        j                  t        j                  j                  | g|d d ¢­Ž «       |dxx   |z  cc<   t        j                  j                  | g|¢­Ž |fS # t
        $ r Y Œ:w xY w)Nrî   rï   )r¹   rã   Úmakedirsrä   rO   rm  )Ú	outputdirÚmodnameÚ	extensionÚpartss       r   Ú_modname_to_filerƒ  º  sz   € Ø�M‰M˜#Ó€EðÜ
�‰”B—G‘G—L‘L Ð8¨U°3°B¨ZÒ8Ô9ð 
ˆ"ƒI�ÑƒIÜ�7‰7�<‰<˜	Ð* EÒ*¨EÐ1Ð1øô ò Ùðús   “6A8 Á8	BÂBc                 ó`   — t        ||«      }| j                  |||f«       t        |||«       |S r   )rœ   rŒ   Úsetattr)Ú	patchlistÚclsr   Únew_methÚolds        r   Ú_patch_methrŠ  È  s4   € Ü
�#�tÓ
€CØ×Ñ�c˜4 Ð%Ô&ÜˆC��xÔ Ø€Jr   c                 óF   — t        | «      D ]  \  }}}t        |||«       Œ y r   )Úreversedr…  )r†  r‡  r   Úold_meths       r   Ú_unpatch_methsrŽ  Î  s$   € Ü'¨	Ö2ÑˆˆT�8Ü��T˜8Õ$ñ  3r   c                 ó´   ‡— t         j                  dk(  rddlm} |�t	        | |dd„ «       t         j                  dk(  rddlm} ˆfd„}t	        | |d	|«      Šy y )
Nr   r   )ÚMSVCCompilerÚ_remove_visual_c_refc                 ó   — |S r   r&   )r   Úmanifest_files     r   r‚   z&_patch_for_embedding.<locals>.<lambda>Ú  s   € ±Mr   Údarwin)Ú	CCompilerc                 óÀ   •— d| j                   v rDt        | j                   «      | _         | j                   j                  d«      }d| j                   |<    ‰| g|¢­i |¤ŽS )Nz-bundlez-dynamiclib)Ú	linker_sor  r  )r   r�   Úkwdsr¢   Úold_link_shared_objects       €r   Úmy_link_shared_objectz3_patch_for_embedding.<locals>.my_link_shared_objectß  sV   ø€ Ø˜DŸN™NÑ*Ü!% d§n¡nÓ!5�”Ø—N‘N×(Ñ(¨Ó3�Ø$1�—‘˜qÑ!Ù)¨$Ð>°Ò>¸Ñ>Ð>r   Úlink_shared_object)ÚsysÚplatformÚcffi._shimmed_dist_utilsr�  rŠ  r•  )r†  r�  r•  rš  r™  s       @r   Ú_patch_for_embeddingrŸ  Ò  s`   ø€ Ü
‡|�|�wÒõ 	:ØÐ#Ü˜	 <Ð1GÙAôCô ‡|�|�xÒå6ô	?ô "-¨Y¸	Ø-AØ-Bó"DÑð  r   c                 óÎ   ‡— ddl m} ‰j                  d«      r<‰d d Št        j                  dk(  r‰dz  Šnt        j                  dk(  r‰dz  Šn‰d	z  Št        | |d
ˆfd„«       y )Nr   )Ú	build_extz.*r§  r   z.dllr”  z.dylibz.soÚget_ext_filenamec                 ó   •— ‰S r   r&   )r   Úext_nameÚtargets     €r   r‚   z#_patch_for_target.<locals>.<lambda>÷  s   ø€ ¡vr   )rž  r¡  Úendswithrœ  r�  rŠ  )r†  r¥  r¡  s    ` r   Ú_patch_for_targetr§  é  sf   ø€ Ý2ð ‡��tÔØ˜˜�ˆÜ�<‰<˜7Ò"Ø�fÑ‰FÜ�\‰\˜XÒ%Ø�hÑ‰Fà�e‰OˆFÜ�	˜9Ð&8Û-õ/r   c                 óú  — t        |t        «      s|j                  d«      }| j                  r| j	                  |«       |��m|rt        |«      rt        d«      ‚| j                  d u}|r| j                  |«       |€5t        |||«      \  }}|r|g|z   }t        j                  j                  |Ž }n|}|	€
|rd|z  }	nd}	|rt        j                  ||fi |¤Ž}nd }t        | ||||¬«      }|r½g }t        j                   «       }	 |rt#        |«       |	dk7  rt%        ||	«       |r7|dk(  rd}nd}t'        |›d	t        j                  j)                  |«      ›�«       t        j*                  |«       t        j,                  d|||
«      }t        j*                  |«       t/        |«       |S ||fS |€t        ||d
«      \  }}t1        | |||¬«      }|r|S d |fS # t        j*                  |«       t/        |«       w xY w)Nr  zGWriting to file-like objects is not supported with call_c_compiler=Truez%s.*r   )rp  rî   zthe current directory isz setting the current directory tor/   z.py)rŽ   r‰   r  Ú_windows_unicodeÚ_apply_windows_unicoderd  rA  rÿ   Ú_apply_embedding_fixrƒ  rã   rä   rO   r   Úget_extensionry  ÚgetcwdrŸ  r§  rg  ÚabspathÚchdirÚcompilerŽ  r|  )ro   rp   rÞ   ÚtmpdirÚcall_c_compilerÚc_fileÚsource_extensionÚextradirÚcompiler_verboser¥  ÚdebugÚuses_ffiplatformr˜  Ú	embeddingr‚  Ú
ext_c_fileÚextÚupdatedr†  ÚcwdÚmsgÚoutputfilenamer´   s                          r   Ú	recompilerÀ  ú  s  € ô �k¤3Ô'Ø!×(Ñ(¨Ó1ˆØ
×ÒØ×"Ñ" 4Ô(ØÑÙœ}¨VÔ4Üð 8ó 9ð 9à—^‘^¨4Ð/ˆ	ÙØ×$Ñ$ TÔ*Øˆ>Ü,¨V°[Ø-=ó?‰MˆF�EáØ!˜
 UÑ*�ÜŸ™Ÿ™ uÐ-‰JàˆJàˆ>ÙØ +Ñ-‘à�áÜ×+Ñ+¨J¸ÑLÀtÑL‰CàˆCÜ  [°(¸FØ(8ô:ˆáØˆIÜ—)‘)“+ˆCð*ÙÜ(¨Ô3Ø˜S’=Ü% i°Ô8Ù#Ø ’}Ø8™à@˜Ü¢S¬"¯'©'¯/©/¸&Ô*AÐBÔCÜ—‘˜Ô Ü!,×!4Ñ!4°S¸#Ø5EÀuó"N�ô —‘˜”Ü˜yÔ)Ø!Ð!à˜�<Ðàˆ>Ü(¨°¸eÓD‰IˆF�AÜ   k°6Ø)9ô;ˆáØˆMà˜�=Ð øô —‘˜”Ü˜yÕ)ús   ÄBG Ç"G:rO  )	rî   TNz.cNr   NNT)$Úiorã   rœ  Ú	sysconfigr6   r   r   Úerrorr   Úcffi_opcoderr   r  r,  r�  Úversion_infoÚget_config_varr   r   r(   r@   rS   rg   rm   ÚStringIOr\  ÚBytesIOrd  ru  ry  r|  rƒ  rŠ  rŽ  rŸ  r§  rÀ  r&   r   r   Ú<module>rÉ     s#  ðß × ß  Ý $Ü à€ØÐ ØÐ à—L‘L GÑ+ò .¨s×/?Ñ/?À&Ñ/Hò .Ø×#Ñ# vÑ-òCà/�y×/Ñ/Ð0AÓBÐBð ÷1ñ 1÷ )ñ )÷8#ñ #÷:?ñ ?÷0	Kñ 	K÷D=ñ D=ðN( ×Ñ�tÒØ�{‰{�Hô+�2—:‘:ô +ò'òó>)ó
)ò2òò%òDò./ð" GKØ;?Ø59Ø#ôC!r   