§
    cÒ³gõ®  ã                   ól  — d dl mZ d dlmZmZ d dlmZmZ 	 d dl mZ	 n# e
$ r ddl	Z	Y nw xY wddlZddlZddlZ	 ej        dk     rddlZnddlZ ej        ¦   «         Zn# e
$ r dZY nw xY wd„ Zd	Z ej        d
ej        ej        z  ¦  «        Z ej        dej        ej        z  ¦  «        Z ej        dej        ¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Zda ej        dej         ¦  «        Z! ej        d¦  «        Z" ej        d¦  «        Z# ej        d¦  «        Z$ ej        d¦  «        Z% ej        d¦  «        Z& ej        d¦  «        Z' ej        d¦  «        Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d „ Z0d!„ Z1 G d"„ d#e2¦  «        Z3dS )$é   )Úmodel)ÚCOMMON_TYPESÚresolve_common_type)ÚFFIErrorÚ	CDefError)Ú
_pycparseré    N)é   c                  ó   — dd l } dd l} d S ©Nr	   )Úpycparser.yacctabÚpycparser.lextab)Ú	pycparsers    úJ/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/cffi/cparser.pyÚ%_workaround_for_static_import_findersr      s"   € ð ÐÐÐØÐÐÐÐÐó    z<cdef source string>z/\*.*?\*/|//([^\n\\]|\\.)*?$z?^\s*#\s*define\s+([A-Za-z_][A-Za-z_0-9]*)\b((?:[^\n\\]|\\.)*?)$z^[ \t]*#[ \t]*(?:line|\d+)\b.*$z=\s*\.\.\.\s*[,}]|\.\.\.\s*\}z__dotdotdot\d+__$z\[\s*\.\.\.\s*\]z\w+|\Sz-?0?x?[0-9a-f]+[lu]*$z\b(__stdcall|WINAPI)\bz[(]\s*(__stdcall|WINAPI)\bz\b__cdecl\bz9\bextern\s*"(Python|Python\s*\+\s*C|C\s*\+\s*Python)"\s*.z'[*]\s*((const|volatile|restrict)\b\s*)+z3(\b(int|long|short|signed|unsigned|char)\s*)+\.\.\.z\b(double|float)\s*\.\.\.c                  óD   — t           €t          j        ¦   «         a t           S ©N)Ú_parser_cacher   ÚCParser© r   r   Ú_get_parserr   2   s   € åÐÝ!Ô)Ñ+Ô+ˆÝÐr   c                 óð  — g }	 t                                | ¦  «        }|s�n,|                     | d |                     ¦   «         …         ¦  «         |                     d¦  «         d}|                     |                     ¦   «         ¦  «         |                     ¦   «         }|                      d|¦  «        r|                     d¦  «         |dz  }d}|}|t          | ¦  «        k     rJ| |         }|dk    r|dz  }n|dk    r|dk    rn)|dz  }n|dv r|dk    rn|dz  }|t          | ¦  «        k     °J| ||…         |z   | |d …         z   } �ŒJ|                     | ¦  «         d                     |¦  «        S )	NTú(ú)Ú*r	   r   z,;=Ú )	Ú_r_star_const_spaceÚsearchÚappendÚstartÚgroupÚendÚ
startswithÚlenÚjoin)ÚcsourceÚpartsÚmatchÚclosingÚendposÚlevelÚiÚcs           r   Ú_workaround_for_old_pycparserr/   8   s’  € ð €Eð<Ý#×*Ò*¨7Ñ3Ô3ˆØð 	Ùà�Š�W˜^˜eŸkšk™mœm˜^Ô,Ñ-Ô-Ð-Ø�Š�SÑÔÐ S˜7Ø�Š�U—[’[‘]”]Ñ#Ô#Ð#Ø—’‘”ˆØ×Ò˜c 6Ñ*Ô*ð 	.Ø�LŠL˜ÑÔÐ˜w¨#™~˜wØˆØˆØ•#�g‘,”,ÒÐØ˜”
ˆAØ�CŠxˆxØ˜‘
��Ø�c’�Ø˜A’:�:ØØ˜‘
��Ø�e��Ø˜A’:�:ØØ�‰FˆAð •#�g‘,”,ÒÐð ˜& ˜(Ô# gÑ-°¸¸¸´Ñ;ˆñ3<ð6 
‡L‚L�ÑÔÐØ�7Š7�5‰>Œ>Ðr   c                 óª  — g }	 t                                | ¦  «        }|s�n‰|                     ¦   «         dz
  }|                     | d |                     ¦   «         …         ¦  «         d|                     d¦  «        v r|                     d¦  «         n|                     d¦  «         | |         dk    r†|                      d|¦  «        }|dk     rt          d	¦  «        ‚|                      d|dz   |¦  «        dk    rt          d
¦  «        ‚|                     | |dz   |…         ¦  «         | |dz   d …         } nX|                      d|¦  «        }|dk     rt          d¦  «        ‚|                     | ||dz   …         ¦  «         | |dz   d …         } |                     d¦  «         �Œ§|                     | ¦  «         d 	                    |¦  «        S )NTr   ÚCz(void __cffi_extern_python_plus_c_start; z!void __cffi_extern_python_start; Ú{Ú}r	   z!'extern "Python" {': no '}' foundz7cannot use { } inside a block 'extern "Python" { ... }'ú;z'extern "Python": no ';' foundz  void __cffi_extern_python_stop;r   )
Ú_r_extern_pythonr   r#   r    r!   r"   Úfindr   ÚNotImplementedErrorr&   )r'   r(   r)   r+   r*   Ú	semicolons         r   Ú_preprocess_extern_pythonr9   b   sä  € ð €Eð9Ý ×'Ò'¨Ñ0Ô0ˆØð 	ÙØ—’‘”˜q‘ˆð 	�Š�W˜^˜eŸkšk™mœm˜^Ô,Ñ-Ô-Ð-Ø�%—+’+˜a‘.”.Ð Ð Ø�LŠLÐCÑDÔDÐDÐDà�LŠLÐ<Ñ=Ô=Ð=Ø�6Œ?˜cÒ!Ð!à—l’l 3¨Ñ/Ô/ˆGØ˜Š{ˆ{ÝÐ EÑFÔFÐFØ�|Š|˜C ¨!¡¨WÑ5Ô5¸Ò:Ð:Ý)ð +Hñ Iô Ið Ià�LŠL˜ ¨¡¨'Ð!1Ô2Ñ3Ô3Ð3Ø˜g a™i˜j˜jÔ)ˆGˆGð  Ÿš S¨&Ñ1Ô1ˆIØ˜1Š}ˆ}ÝÐ BÑCÔCÐCØ�LŠL˜ ¨	°!©Ð!3Ô4Ñ5Ô5Ð5Ø˜i¨™k˜l˜lÔ+ˆGØ�ŠÐ7Ñ8Ô8Ð8ñ=9ðB 
‡L‚L�ÑÔÐØ�7Š7�5‰>Œ>Ðr   c                 óÎ   — d| vrd S |                       ¦   «         D ]I}d|v rC|                     ¦   «                              d¦  «        sdd l}|                     d¦  «          d S ŒJd S )Nú"ú#r	   z¨String literal found in cdef() or type source. String literals are ignored here, but you should remove them anyway because some character sequences confuse pre-parsing.)Ú
splitlinesÚlstripr$   ÚwarningsÚwarn)r'   Úliner?   s      r   Ú_warn_for_string_literalrB   ”   sˆ   € Ø
�'ÐÐØˆØ×"Ò"Ñ$Ô$ð ð ˆØ�$ˆ;ˆ;˜tŸ{š{™}œ}×7Ò7¸Ñ<Ô<ˆ;ØˆOˆOˆOØ�MŠMð 1ñ 2ô 2ð 2ð ˆEˆEøðð r   c                 ó\   — | j         s$dd l}|                     d| j        ›d�¦  «         d S d S )Nr	   zGlobal variable 'z_' in cdef(): for consistency with C it should have a storage class specifier (usually 'extern'))Ústorager?   r@   Úname)Údeclr?   s     r   Ú/_warn_for_non_extern_non_static_global_variablerG       sO   € ØŒ<ð ;ØˆˆˆØ�Šˆà.2¬i¨i¨ið:ñ 	;ô 	;ð 	;ð 	;ð 	;ð;ð ;r   c                 óP   ‡— g Šˆfd„}t                                || ¦  «        } | ‰fS )Nc                 óz   •— t          ‰¦  «        }‰                     |                      ¦   «         ¦  «         d|z  S )Nz#line@%d)r%   r    r"   )Úmr-   Úline_directivess     €r   Úreplacez(_remove_line_directives.<locals>.replace­   s6   ø€ Ý�Ñ Ô ˆØ×Ò˜qŸwšw™yœyÑ)Ô)Ð)Ø˜A‰~Ðr   ©Ú_r_line_directiveÚsub)r'   rL   rK   s     @r   Ú_remove_line_directivesrP   §   sE   ø€ ð
 €Oðð ð ð ð õ  ×#Ò# G¨WÑ5Ô5€GØ�OÐ#Ð#r   c                 óD   ‡— ˆfd„}t                                || ¦  «        S )Nc                 ó®   •— |                       ¦   «         }|                     d¦  «        st          d¦  «        ‚‰t          |dd …         ¦  «                 S )Nz#line@zBunexpected #line directive (should have been processed and removedé   )r"   r$   ÚAssertionErrorÚint)rJ   ÚsrK   s     €r   rL   z*_put_back_line_directives.<locals>.replaceµ   sY   ø€ Ø�GŠG‰IŒIˆØ�|Š|˜HÑ%Ô%ð 	LÝ ð "Kñ Lô Lð Là�s 1 Q R R¤5™zœzÔ*Ð*r   rM   )r'   rK   rL   s    ` r   Ú_put_back_line_directivesrW   ´   s4   ø€ ð+ð +ð +ð +ð +õ × Ò  ¨'Ñ2Ô2Ð2r   c                 ó8  — t          | ¦  «        \  } }d„ }t                               || ¦  «        } i }t                               | ¦  «        D ]F}|                     ¦   «         \  }}|                     dd¦  «                             ¦   «         }|||<   ŒGt                               d| ¦  «        } t          j	        dk     rt          | ¦  «        } t                               d| ¦  «        } t                               d| ¦  «        } t                               d| ¦  «        } t          | ¦  «        } t          | ¦  «         t                                d| ¦  «        } t#          t$                               | ¦  «        ¦  «        }t'          t)          |¦  «        ¦  «        D ] \  }}|                     ¦   «         }	| |	         d	k    rM|                      d
|	|                     ¦   «         ¦  «        }
|
|	k    sJ ‚d| d |	…         || |
dz   d …         fz  } Œr| |	|	dz   …         d
k    sJ ‚d| d |	…         || |	dz   d …         fz  } Œ¡t0                               d| ¦  «        } t2                               d| ¦  «        } |                      d
d¦  «        } t5          | |¦  «        } | |fS )Nc                 ó\   — d|                       ¦   «                              d¦  «        dz  z   S )Nú ú
)r"   Úcount)rJ   s    r   Úreplace_keeping_newlinesz-_preprocess.<locals>.replace_keeping_newlinesÃ   s&   € Ø�Q—W’W‘Y”Y—_’_ TÑ*Ô*¨TÑ1Ñ1Ð1r   z\
r   z2.14z volatile volatile const(z volatile volatile const rZ   z[__dotdotdotarray__]ú=ú...z%s,__dotdotdot%d__ %sr
   z%s __dotdotdot%d__ %sz __dotdotdotint__ z __dotdotdotfloat__ z __dotdotdot__ )rP   Ú
_r_commentrO   Ú	_r_defineÚfinditerÚgroupsrL   Ústripr   Ú__version__r/   Ú_r_stdcall2Ú_r_stdcall1Ú_r_cdeclr9   rB   Ú_r_partial_arrayÚlistÚ_r_partial_enumÚ	enumerateÚreversedr!   r6   r#   Ú_r_int_dotdotdotÚ_r_float_dotdotdotrW   )r'   rK   r]   Úmacrosr)   Ú	macronameÚ
macrovalueÚmatchesÚnumberÚpÚp2s              r   Ú_preprocessrw   ½   s�  € õ  7°wÑ?Ô?Ñ€Gˆ_ð2ð 2ð 2å�nŠnÐ5°wÑ?Ô?€Gà€FÝ×#Ò# GÑ,Ô,ð 'ð 'ˆØ %§¢¡¤Ñˆ	�:Ø×'Ò'¨°Ñ3Ô3×9Ò9Ñ;Ô;ˆ
Ø&ˆˆyÑÐÝ�mŠm˜B Ñ(Ô(€GåÔ˜vÒ%Ð%Ý/°Ñ8Ô8ˆõ �oŠoÐ9¸7ÑCÔC€GÝ�oŠoÐ9¸7ÑCÔC€GÝ�lŠl˜3 Ñ(Ô(€Gõ (¨Ñ0Ô0€Gõ ˜WÑ%Ô%Ð%õ ×"Ò"Ð#9¸7ÑCÔC€Gõ •?×+Ò+¨GÑ4Ô4Ñ5Ô5€GÝ"¥8¨GÑ#4Ô#4Ñ5Ô5ð 
@ð 
@‰ˆ�Ø�KŠK‰MŒMˆØ�1Œ:˜ÒÐØ—’˜e Q¨¯	ª	©¬Ñ4Ô4ˆBØ˜’6�6�6�6Ø-°¸¸!¸´¸fØ18¸¸A¹¸¸´ð1Añ AˆGˆGð ˜1˜Q˜q™S˜5”> UÒ*Ð*Ð*Ð*Ø-°¸¸!¸´¸fØ18¸¸1¹¸¸´ð1@ñ @ˆGˆGõ ×"Ò"Ð#7¸ÑAÔA€Gå ×$Ò$Ð%;¸WÑEÔE€Gð �oŠo˜eÐ%6Ñ7Ô7€Gå'¨°ÑAÔA€GØ�Fˆ?Ðr   c                 óº  — t          t          ¦  «        }|                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         t          ¦   «         }d}d}d}t                               | ¦  «        D ]®}||v r¦|dk    r/|r,|                     |¦  «         |                     |¦  «         d}nq|dk    rd	}d}nf|dk    r|d
z  }nZ|dk    r|d
z  }nN|dk    r3|r0|dk    r*|                     |¦  «         |                     |¦  «         n|                     |¦  «         |}Œ¯|S )Nr4   ú,r   r   ÚtypedefFr	   r   Tr   )Úsetr   ÚaddÚ_r_wordsÚfindallÚdiscard)r'   Úlook_for_wordsÚ
words_usedÚ
is_typedefÚparenÚprevious_wordÚwords          r   Ú_common_type_namesr†   ÿ   s”  € õ �Ñ&Ô&€NØ×Ò�sÑÔÐØ×Ò�sÑÔÐØ×Ò�sÑÔÐØ×Ò�sÑÔÐØ×Ò�yÑ!Ô!Ð!Ý‘”€JØ€JØ€EØ€MÝ× Ò  Ñ)Ô)ð ð ˆØ�>Ð!Ð!Ø�sŠ{ˆ{Øð 'Ø×&Ò& }Ñ5Ô5Ð5Ø"×*Ò*¨=Ñ9Ô9Ð9Ø!&�JøØ˜Ò"Ð"Ø!�
Ø��Ø˜’�Ø˜‘
��Ø˜’�Ø˜‘
��Ø˜’�Øð : %¨1¢* *Ø×&Ò& }Ñ5Ô5Ð5Ø"×*Ò*¨=Ñ9Ô9Ð9øà—’˜tÑ$Ô$Ð$ØˆˆØÐr   c                   óÆ   — e Zd Zd„ Zd„ Zd„ Zd„ Z	 	 dd„Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd d„Zd„ Zd!d„Z	 	 d"d„Zd!d„Zd„ Zd#d„Zd„ Zd$d„Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )%ÚParserc                 ó°   — i | _         t          ¦   «         | _        d| _        t	          j        ¦   «         | _        i | _        i | _        g | _	        d | _
        d S r   )Ú_declarationsr{   Ú_included_declarationsÚ_anonymous_counterÚweakrefÚWeakKeyDictionaryÚ_structnode2typeÚ_optionsÚ_int_constantsÚ_recompleteÚ_uses_new_feature)Úselfs    r   Ú__init__zParser.__init__)  sT   € ØˆÔÝ&)¡e¤eˆÔ#Ø"#ˆÔÝ 'Ô 9Ñ ;Ô ;ˆÔØˆŒØ ˆÔØˆÔØ!%ˆÔÐÐr   c                 ó  — t          |¦  «        \  }}t          |¦  «        }g }t          | j        ¦  «        D ]K}|                     d¦  «        r4|dd …         }|                     |¦  «         |                     |¦  «         ŒL|t          |¦  «        z  }g }|                     d¦  «         |D ]}|                     d|z  ¦  «         Œ|                     d¦  «         |                     dt          ›d�¦  «         |                     |¦  «         |                     d¦  «         d	                     |¦  «        }t          �t           
                    ¦   «          	 t          ¦   «                              |¦  «        }	n7# t          j        j        $ r }
|                      |
|¦  «         Y d }
~
nd }
~
ww xY wt          �t                               ¦   «          n&# t          �t                               ¦   «          w w xY w|	||fS )
Nútypedef é   z*# 1 "<cdef automatic initialization code>"ztypedef int %s;z@typedef int __dotdotdotint__, __dotdotdotfloat__, __dotdotdot__;z# 1 "r;   r   r[   )rw   r†   ÚsortedrŠ   r$   r    r   ÚCDEF_SOURCE_STRINGr&   ÚlockÚacquirer   Úparser   Úc_parserÚ
ParseErrorÚconvert_pycparser_errorÚrelease)r”   r'   rp   ÚctnÚ	typenamesrE   ÚcsourcelinesÚtypenameÚfullcsourceÚastÚes              r   Ú_parsezParser._parse3  s  € Ý% gÑ.Ô.‰ˆ�õ
 ! Ñ)Ô)ˆØˆ	Ý˜4Ô-Ñ.Ô.ð 	"ð 	"ˆDØ�Š˜zÑ*Ô*ð "Ø˜A˜B˜B”x�Ø× Ò  Ñ&Ô&Ð&Ø—’˜DÑ!Ô!Ð!øØ•V˜C‘[”[Ñ ˆ	àˆØ×ÒÐHÑIÔIÐIØ!ð 	>ð 	>ˆHØ×ÒÐ 1°HÑ <Ñ=Ô=Ð=Ð=Ø×Òð .ñ 	/ô 	/ð 	/ð 	×ÒÐÕ*<Ð*<Ð*<Ð>Ñ?Ô?Ð?Ø×Ò˜GÑ$Ô$Ð$Ø×Ò˜BÑÔÐØ—i’i Ñ-Ô-ˆÝÐÝ�LŠL‰NŒNˆNð	Ý‘-”-×%Ò% kÑ2Ô2ˆCˆCøÝÔ!Ô,ð 	5ð 	5ð 	5Ø×(Ò(¨¨GÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4øøøøð	5øøøõ ÐÝ—’‘”�øøõ ÐÝ—’‘”��ð  øøøð �F˜GÐ#Ð#s0   Å!E? Å>G Å?F3ÆF.Æ)G Æ.F3Æ3G Ç#G:c                 ó$  — d }t          |¦  «        }t          j        t          ›d�|¦  «        }|r_t	          |                     d¦  «        d¦  «        }|                     ¦   «         }d|cxk    rt          |¦  «        k    rn n||dz
           }|S )Nz:(\d+):r   é
   )ÚstrÚrer)   rš   rU   r"   r=   r%   )r”   r¨   r'   rA   Úmsgr)   Úlinenumr¤   s           r   Ú_convert_pycparser_errorzParser._convert_pycparser_errorZ  sž   € ð ˆÝ�!‰fŒfˆÝ”Õ);Ð);Ð);Ð=¸sÑCÔCˆØð 	/Ý˜%Ÿ+š+ a™.œ.¨"Ñ-Ô-ˆGØ"×-Ò-Ñ/Ô/ˆLØ�GÐ0Ð0Ò0Ð0�s <Ñ0Ô0Ò0Ð0Ð0Ð0Ð0Ø# G¨A¡IÔ.�Øˆr   c                 ó®   — |                       ||¦  «        }t          |¦  «        }|rd|                     ¦   «         ›d|›�}nd|›�}t          |¦  «        ‚)Nzcannot parse "z"
zparse error
)r°   r¬   rd   r   )r”   r¨   r'   rA   r®   s        r   r    zParser.convert_pycparser_errorh  sf   € Ø×,Ò,¨Q°Ñ8Ô8ˆå�!‰fŒfˆØð 	-ð 	-Ø-1¯ZªZ©\¬\¨\¨\¸3¸3Ð?ˆCˆCð	-ð (+ sÐ,ˆCÝ˜‰nŒnÐr   FNc                 ó  — |r)|dk    rt          d¦  «        ‚|rt          d¦  «        ‚d}n|r||dz
  z  rt          d|›�¦  «        ‚nd}| j        }	 |||dœ| _        |                      |¦  «         || _        d S # || _        w xY w)NTzB'packed' should be False or True; use 'pack' to give another valuez$cannot give both 'pack' and 'packed'r   z#'pack' must be a power of two, not r	   )ÚoverrideÚpackedÚ	dllexport)Ú
ValueErrorr�   Ú_internal_parse)r”   r'   r³   r´   Úpackrµ   Úprev_optionss          r   r�   zParser.parser  sç   € àð 	Ø˜Š~ˆ~Ý ð "@ñ Aô Að Aàð IÝ Ð!GÑHÔHÐHØˆDˆDØð 	Ø�t˜a‘xÑ ð Ý �jØ�Tð"ñ ô ð ðð ˆDØ”}ˆð	)Ø)1Ø'+Ø*3ð5ð 5ˆDŒMð × Ò  Ñ)Ô)Ð)à(ˆDŒMˆMˆMø˜LˆDŒMÐ(Ð(Ð(Ð(s   Á A< Á<	Bc           	      ó(  — |                       |¦  «        \  }}}|                      |¦  «         t          |j        ¦  «        }|D ]}|j        dk    r nŒJ ‚d }	 d| _        |D �]3}|}t          |t          j        j	        ¦  «        r|  
                    |¦  «         Œ:t          |t          j        j        ¦  «        �r“|j        st          d|¦  «        ‚d}t          |j        j        t          j        j        ¦  «        r@|j        j        j        d                              d¦  «        r|                      |¦  «        }nït          |j        t          j        j        ¦  «        rœt          |j        j        t          j        j        ¦  «        rst          |j        j        j        t          j        j        ¦  «        rE|j        j        j        j        d                              d¦  «        r|                      |¦  «        }n/|                      |j        |j        dd|j        ›d	�¬
¦  «        \  }}|                      d|j        z   ||¬¦  «         �Œí|j        j        dk    rdd l}	|	                     d¦  «         �Œt          d|j        j        z  |¦  «        ‚d S # t          $ r.}
t7          |
j        ¦  «        dk    r|
j        |fz   |
_        ‚ d }
~
wt:          $ r7}
|                      |
|¦  «        }|r|
j        d         d|z  z   f|
_        ‚ d }
~
ww xY w)NÚ__dotdotdot__r	   Ú__cffi_extern_python_stopz!typedef does not declare any nameéÿÿÿÿÚ__dotdotdotTz*(z *)0)rE   Úpartial_length_okÚtypedef_exampler—   ©ÚqualsÚPragmaa  #pragma in cdef() are entirely ignored. They should be removed for now, otherwise your code might behave differently in a future version of CFFI if #pragma support gets added. Note that '#pragma pack' needs to be replaced with the 'packed' keyword argument to cdef().zBunexpected <%s>: this construct is valid C but not valid in cdef()r   z
    *** Err: %s)r©   Ú_process_macrosÚiterÚextrE   Ú_inside_extern_pythonÚ
isinstancer   Úc_astÚDeclÚ_parse_declÚTypedefr   ÚtypeÚIdentifierTypeÚnamesr$   Ú_get_unknown_typeÚPtrDeclÚTypeDeclÚ_get_unknown_ptr_typeÚ_get_type_and_qualsÚ_declareÚ	__class__Ú__name__r?   r@   r%   Úargsr   r°   )r”   r'   r§   rp   ÚiteratorrF   Úcurrent_declrÂ   Úrealtyper?   r¨   r®   s               r   r·   zParser._internal_parseŠ  s^  € Ø#Ÿ{š{¨7Ñ3Ô3ÑˆˆV�Wà×Ò˜VÑ$Ô$Ð$õ ˜œ‘=”=ˆØð 	ð 	ˆDØŒy˜OÒ+Ð+Ø�ð ,ð ˆHØˆð/	Ø)DˆDÔ&Ø ð $Cñ $C�Ø#�Ý˜d¥I¤OÔ$8Ñ9Ô9ð "CØ×$Ò$ TÑ*Ô*Ð*Ð*Ý ¥i¤oÔ&=Ñ>Ô>ñ  CØœ9ð .Ý'Ð(KØ(,ñ.ô .ð .à�EÝ" 4¤9¤>µ9´?Ô3QÑRÔRð GØ œIœNÔ0°Ô4×?Ò?ÀÑNÔNðGà#'×#9Ò#9¸$Ñ#?Ô#?˜˜Ý$ T¤Yµ	´Ô0GÑHÔHð 	GÝ$ T¤Y¤^µY´_Ô5MÑNÔNð	Gå$ T¤Y¤^Ô%8Ý%.¤_Ô%CñEô Eð	Gð œ)œ.Ô-Ô3°BÔ7×BÒBÀ=ÑQÔQð		Gð
 $(×#=Ò#=¸dÑ#CÔ#C˜˜à*.×*BÒ*BØ œI¨D¬IÈÈØ:>¼)¸)¸)Ð,Eð +Cñ +Gô +G™˜ %ð —M’M *¨t¬yÑ"8¸(È%�MÑPÔPÐPÑPØ”^Ô,°Ò8Ð8à#�O�O�OØ—M’Mð?ñ@ô @ð @ñ @õ $ð %@à$(¤NÔ$;ñ%<à=AñCô Cð CðE$Cð $CøõJ ð 	ð 	ð 	Ý�1”6‰{Œ{˜aÒÐØœ < /Ñ1�”ØøøøøÝð 	ð 	ð 	Ø×/Ò/°°7Ñ;Ô;ˆCØð BØœ& œ)Ð&9¸CÑ&?Ñ?ÐA�”Øøøøøð		øøøs%   ÁH>J Ê
LÊ$)KËLË2LÌLc                 óv   — || j         v r%| j         |         |k    rd S t          d|›�¦  «        ‚|| j         |<   d S )Nz#multiple declarations of constant: )r‘   r   )r”   ÚkeyÚvals      r   Ú_add_constantszParser._add_constantsÉ  sZ   € Ø�$Ô%Ð%Ð%ØÔ" 3Ô'¨3Ò.Ð.Ø�Ý�(Ø;>¸3Ð@ñBô Bð Bà#&ˆÔ˜CÑ Ð Ð r   c                 ó˜  — |                      ¦   «                              d¦  «        }|                     d¦  «        }|r
|dd …         }|                     d¦  «        r(|dk    r"|                     d¦  «        sd|dd …         z   }t          |d¦  «        }|r| }|                      ||¦  «         |                      d|z   |¦  «         d S )	NÚulú-r   Ú0Ú0xÚ0or	   úmacro )ÚlowerÚrstripr$   rU   rß   rÕ   )r”   rE   Úint_strÚnegÚpyvalues        r   Ú_add_integer_constantzParser._add_integer_constantÑ  sÛ   € Ø—-’-‘/”/×(Ò(¨Ñ.Ô.ˆØ× Ò  Ñ%Ô%ˆØð 	"Ø˜a˜b˜b”kˆGà×Ò˜sÑ#Ô#ð 	)¨°3ª¨Ø×*Ò*¨4Ñ0Ô0ð )7à˜W Q R Rœ[Ñ(ˆGÝ�g˜q‘/”/ˆØð 	Ø�hˆGØ×Ò˜D 'Ñ*Ô*Ð*Ø�Š�h ‘o wÑ/Ô/Ð/Ð/Ð/r   c                 ó8  — |                      ¦   «         D ]„\  }}|                     ¦   «         }t                               |¦  «        r|                      ||¦  «         ŒJ|dk    r|                      d|z   |¦  «         Œjt          d|›d|›d|›d|›�¦  «        ‚d S )Nr_   ræ   z5only supports one of the following syntax:
  #define z+ ...     (literally dot-dot-dot)
  #define zM NUMBER  (with NUMBER an integer constant, decimal/hex/octal)
got:
  #define rZ   )Úitemsrd   Ú_r_int_literalr)   rì   rÕ   r   )r”   rp   rÝ   Úvalues       r   rÄ   zParser._process_macrosà  s¹   € Ø Ÿ,š,™.œ.ð 	.ð 	.‰JˆC�Ø—K’K‘M”MˆEÝ×#Ò# EÑ*Ô*ð .Ø×*Ò*¨3°Ñ6Ô6Ð6Ð6Ø˜%’�Ø—’˜h¨™n¨eÑ4Ô4Ð4Ð4å�ið �s�s˜C˜C˜C    e eð-ñ.ô .ð .ð	.ð 	.r   c                 óä   — |                       ||¦  «        }| j                             d¦  «        rd}n| j        dk    rd}n| j        dk    rd}nd}|                      ||j        z   |¦  «         d S )Nrµ   zdllexport_python Ú__cffi_extern_python_startzextern_python Ú!__cffi_extern_python_plus_c_startzextern_python_plus_c z	function )Ú_get_type_pointerr�   ÚgetrÇ   rÕ   rE   )r”   ÚtprÂ   rF   Útags        r   Ú_declare_functionzParser._declare_functionñ  s‡   € Ø×#Ò# B¨Ñ.Ô.ˆØŒ=×Ò˜[Ñ)Ô)ð 	Ø%ˆCˆCØÔ'Ð+GÒGÐGØ"ˆCˆCØÔ'Ð+NÒNÐNØ)ˆCˆCàˆCØ�Š�c˜DœI‘o rÑ*Ô*Ð*Ð*Ð*r   c                 óÞ  — |j         }t          |t          j        j        ¦  «        rT|                      ||j        ¬¦  «        \  }}t          |t          j        ¦  «        sJ ‚|  	                    |||¦  «         d S t          |t          j        j
        ¦  «        r|                      d|¦  «         nƒt          |t          j        j        ¦  «        r|                      d|¦  «         nMt          |t          j        j        ¦  «        r|                      d|¦  «         n|j        st          d|¦  «        ‚|j        �r1|                      |d¬¦  «        \  }}|j        r|  	                    |||¦  «         d S |                     ¦   «         rpt#          |d¦  «        r`t#          |j        d	¦  «        rKt&                               |j        j        ¦  «        r'|                      |j        |j        j        ¦  «         d S |                     ¦   «         r¦t          |j        t          j        j        ¦  «        r‚|j        j        d
k    rrt#          |j        j        d	¦  «        rXt&                               |j        j        j        ¦  «        r/|                      |j        d
|j        j        j        z   ¦  «         d S |t          j        u r(|j                             d¦  «        r|j        | _        d S | j        dk    rt          d¦  «        ‚|t          j        z  r)|j        s"|                      d|j        z   ||¬¦  «         d S tA          |¦  «         |                      d|j        z   ||¬¦  «         d S d S )N)rE   ÚstructÚunionÚenumz'construct does not declare any variableT©r¿   Úinitrð   râ   Ú__cffi_extern_python_r¼   z<cannot declare constants or variables with 'extern "Python"'z	constant rÁ   z	variable )!rÍ   rÈ   r   rÉ   ÚFuncDeclrÔ   rE   r   ÚRawFunctionTyperø   ÚStructÚ_get_struct_union_enum_typeÚUnionÚEnumr   Úis_raw_functionÚis_integer_typeÚhasattrrþ   rï   r)   rð   rì   ÚUnaryOpÚopÚexprÚ	void_typer$   rÇ   ÚQ_CONSTÚis_array_typerÕ   rG   )r”   rF   Únoderö   rÂ   s        r   rË   zParser._parse_declý  s“  € ØŒyˆÝ�d�IœOÔ4Ñ5Ô5ð /	PØ×0Ò0°¸D¼IÐ0ÑFÔF‰IˆB�Ý˜b¥%Ô"7Ñ8Ô8Ð8Ð8Ð8Ø×"Ò" 2 u¨dÑ3Ô3Ð3Ð3Ð3å˜$¥	¤Ô 6Ñ7Ô7ð &Ø×0Ò0°¸4Ñ@Ô@Ð@Ð@Ý˜D¥)¤/Ô"7Ñ8Ô8ð &Ø×0Ò0°¸$Ñ?Ô?Ð?Ð?Ý˜D¥)¤/Ô"6Ñ7Ô7ð &Ø×0Ò0°¸Ñ>Ô>Ð>Ð>Ø”Yð &ÝÐ IØ $ñ&ô &ð &ð Œyñ  PØ ×4Ò4°TØGKð 5ñ Mô M‘	��EàÔ%ð PØ×*Ò*¨2¨u°dÑ;Ô;Ð;Ð;Ð;Ø×(Ò(Ñ*Ô*ð PÝ  fÑ-Ô-ðPå ¤	¨7Ñ3Ô3ðPõ '×,Ò,¨T¬Y¬_Ñ=Ô=ðPð ×.Ò.¨t¬y¸$¼)¼/ÑJÔJÐJÐJÐJØ×(Ò(Ñ*Ô*ð PÝ" 4¤9­i¬oÔ.EÑFÔFðPàœ	œ¨Ò+Ð+Ý ¤	¤°Ñ8Ô8ð ,å&×,Ò,¨T¬Y¬^Ô-AÑBÔBð ,ð ×.Ò.¨t¬yØ/2°T´Y´^Ô5IÑ/IñKô Kð Kð Kð Kà�EœOÐ+Ð+Ø”i×*Ò*Ð+BÑCÔCð ,ð
 26´�DÔ.Ð.Ð.àÔ1Ð4OÒOÐOÝ'ðAñBô Bð Bð ¥¤Ñ-ð P°rÔ7Gð PØŸš k°D´IÑ&=¸rÈ˜ÑOÔOÐOÐOÐOåGÈÑMÔMÐMØŸš k°D´IÑ&=¸rÈ˜ÑOÔOÐOÐOÐOðA Pð  Pr   c                 ó8   — |                       |¦  «        d         S r   )Úparse_type_and_quals)r”   Úcdecls     r   Ú
parse_typezParser.parse_type0  s   € Ø×(Ò(¨Ñ/Ô/°Ô2Ð2r   c                 ó6  — |                       d|z  ¦  «        d d…         \  }}|rJ ‚|j        d         j        j        j        d         }t          |t          j        j        ¦  «        rt          d|j
        ›d�¦  «        ‚|                      |j        ¦  «        S )Nzvoid __dummy(
%s
);é   r½   r	   zunknown identifier 'ú')r©   rÆ   rÍ   rØ   ÚparamsrÈ   r   rÉ   ÚIDr   rE   rÔ   )r”   r  r§   rp   Úexprnodes        r   r  zParser.parse_type_and_quals3  s’   € Ø—k’kÐ"9¸EÑ"AÑBÔBÀ2ÀAÀ2ÔF‰ˆˆVØÐÐÐØ”7˜2”;Ô#Ô(Ô/°Ô2ˆÝ�h¥	¤Ô 2Ñ3Ô3ð 	JÝ�)¸¼¸¸ÐHÑIÔIÐIØ×'Ò'¨¬Ñ6Ô6Ð6r   r	   c                 ó.  — || j         v rI| j         |         \  }}||u r||k    rd S | j                             d¦  «        st          d|›d�¦  «        ‚d|                     ¦   «         vsJ ‚||f| j         |<   |r| j                             |¦  «         d S d S )Nr³   zmultiple declarations of z5 (for interactive usage, try cdef(xx, override=True))r»   )rŠ   r�   rõ   r   Úsplitr‹   r|   )r”   rE   ÚobjÚincludedrÂ   ÚprevobjÚ	prevqualss          r   rÕ   zParser._declare;  sÍ   € Ø�4Ô%Ð%Ð%Ø!%Ô!3°DÔ!9ÑˆG�YØ˜#ˆ~ˆ~ )¨uÒ"4Ð"4Ø�Ø”=×$Ò$ ZÑ0Ô0ð >Ý�hà6:°d°dð=ñ>ô >ð >ð  d§j¢j¡l¤lÐ2Ð2Ð2Ð2Ø$'¨ <ˆÔ˜4Ñ Øð 	1ØÔ'×+Ò+¨CÑ0Ô0Ð0Ð0Ð0ð	1ð 	1r   c                 óú   — d}t          |t          j        j        t          j        j        f¦  «        rHd|j        v r|t          j        z  }d|j        v r|t          j        z  }d|j        v r|t          j	        z  }|S )Nr	   ÚconstÚvolatileÚrestrict)
rÈ   r   rÉ   rÒ   rÑ   rÂ   r   r  Ú
Q_VOLATILEÚ
Q_RESTRICT©r”   rÍ   rÂ   s      r   Ú_extract_qualszParser._extract_qualsI  s�   € ØˆÝ�d�Yœ_Ô5Ý&œ_Ô4ð6ñ 7ô 7ð 	*à˜$œ*Ð$Ð$Ø�œÑ&�Ø˜TœZÐ'Ð'Ø�Ô)Ñ)�Ø˜TœZÐ'Ð'Ø�Ô)Ñ)�Øˆr   c                 óp  — t          |t          j        ¦  «        r|                     ¦   «         S t          |t          j        ¦  «        rZ|j                             d¦  «        r@|j        dd …                              ¦   «         r|j        €|�t          j	        |||¦  «        S t          j
        ||¦  «        S )Nú$r   )rÈ   r   r  Úas_function_pointerÚStructOrUnionOrEnumrE   r$   ÚisdigitÚ	forcenameÚNamedPointerTypeÚPointerType)r”   rÍ   rÂ   Údeclnames       r   rô   zParser._get_type_pointerU  s¬   € Ý�d�EÔ1Ñ2Ô2ð 	.Ø×+Ò+Ñ-Ô-Ð-Ý�t�UÔ6Ñ7Ô7ð 	AØ”	×$Ò$ SÑ)Ô)ð	AØ.2¬i¸¸¸¬m×.CÒ.CÑ.EÔ.Eð	Aà”Ð&¨8Ð+?ÝÔ)¨$°¸%Ñ@Ô@Ð@ÝÔ   uÑ-Ô-Ð-r   c                 ó4	  — t          |t          j        j        ¦  «        rœt          |j        t          j        j        ¦  «        rxt          |j        j        ¦  «        dk    r[d|j        j        d         z   | j        v r?| j        d|j        j        d         z            \  }}||  	                    |¦  «        z  }||fS t          |t          j        j
        ¦  «        rp|j        €d }n|                      |j        |¬¦  «        }|�|dk    rd|›d�}d|z   }|                      |j        ||¬	¦  «        \  }}t          j        ||¦  «        |fS t          |t          j        j        ¦  «        rN|                      |j        ¦  «        \  }}	|                      ||	|¬
¦  «        }|  	                    |¦  «        }||fS t          |t          j        j        ¦  «        �rû|  	                    |¦  «        }|j        }
t          |
t          j        j        ¦  «        �rt%          |
j        ¦  «        }|ddgk    r�i }|r/|d         }|dv r |                     |d¦  «        dz   ||<   |d= nn|°/g }dD ]=}t)          |                     |d¦  «        ¦  «        D ]}|                     |¦  «         ŒŒ>|sdg}|dgk    r
d|v sd|v rg }||z   }d                     |¦  «        }|dk    rt          j        |fS |dk    rt1          d|j        j        z  ¦  «        ‚t7          | |¦  «        \  }}|||z  fS t          |
t          j        j        ¦  «        r|                      d|
|¦  «        }||fS t          |
t          j        j        ¦  «        r|                      d|
|¦  «        }||fS t          |
t          j        j        ¦  «        r|                      d|
|¦  «        }||fS t          |t          j        j         ¦  «        r|  !                    ||¦  «        dfS t          |t          j        j        ¦  «        r|                      d||d¬¦  «        dfS t          |t          j        j        ¦  «        r|                      d||d¬¦  «        dfS t1          d|j        j        z  ¦  «        ‚)Nr   r—   r	   rý   r_   z_cffi_array_len(r   r   )r¿   rÀ   )r0  ÚsignedÚchar)ÚshortÚlongr2  Úunsigned)r6  r4  r5  rU   r4  r5  rZ   Úvoidr»   z:%d: bad usage of "..."rú   rû   rü   T)Únestedz(:%d: bad or unsupported type declaration)"rÈ   r   rÉ   rÒ   rÍ   rÎ   r%   rÏ   rŠ   r'  Ú	ArrayDeclÚdimÚ_parse_constantrÔ   r   Ú	ArrayTyperÑ   rô   rj   rõ   Úranger    r&   r  r   ÚcoordrA   r   r  r  r  r  r   Ú_parse_function_type)r”   ÚtypenoderE   r¿   rÀ   rö   rÂ   ÚlengthÚitemtypeÚ	itemqualsrÍ   rÏ   ÚprefixesÚnewnamesÚprefixr-   ÚidentÚtp0Úquals0s                      r   rÔ   zParser._get_type_and_quals^  s$  € õ �x¥¤Ô!9Ñ:Ô:ð 	Ý�x”}¥i¤oÔ&DÑEÔEð	å�”Ô#Ñ$Ô$¨Ò)Ð)Ø˜(œ-Ô-¨aÔ0Ñ0°TÔ5GÐGÐGØÔ*¨:¸¼Ô8KÈAÔ8NÑ+NÔO‰IˆB�Ø�T×(Ò(¨Ñ2Ô2Ñ2ˆEØ�u�9Ðå�h¥	¤Ô 9Ñ:Ô:ð 	6àŒ|Ð#Ø��à×-Ò-Ø”LÐ4Eð .ñ Gô G�ð Ð*Ø˜U’?�?�?Ø6E°o°oÐG�FØ"%¨Ñ"7�à×0Ò0°´Ø2CØ0?ð 1ñ Aô A‰IˆB�õ ”? 2 vÑ.Ô.°Ð5Ð5å�h¥	¤Ô 7Ñ8Ô8ð 	à"&×":Ò":¸8¼=Ñ"IÔ"IÑˆH�iØ×'Ò'¨°)ÀdÐ'ÑKÔKˆBØ×'Ò'¨Ñ1Ô1ˆEØ�u�9Ðå�h¥	¤Ô 8Ñ9Ô9ñ 1	!Ø×'Ò'¨Ñ1Ô1ˆEØ”=ˆDÝ˜$¥	¤Ô >Ñ?Ô?ñ -õ ˜TœZÑ(Ô(�Ø˜X vÐ.Ò.Ð.Ø!�HØð "Ø$ Qœx˜ØÐ#JÐJÐJØ-5¯\ª\¸$ÀÑ-BÔ-BÀQÑ-F˜H T™NØ % a  à!ð  ð "ð  "�HØ"?ð 4ð 4˜Ý!& x§|¢|°F¸AÑ'>Ô'>Ñ!?Ô!?ð 4ð 4˜AØ$ŸOšO¨FÑ3Ô3Ð3Ð3ð4à ð (Ø!& ˜Ø  Ò'Ð'Ø" hÐ.Ð.°&¸HÐ2DÐ2DØ$&˜EØ$ uÑ,�EØŸš ™œ�Ø˜F’?�?Ý œ?¨EÐ1Ð1Ø˜OÒ+Ð+Ý"Ð#<Ø$œNÔ/ñ$0ñ 1ô 1ð 1å1°$¸Ñ>Ô>‘��VØ˜U V™^Ð,Ð,å˜$¥	¤Ô 6Ñ7Ô7ð !à×5Ò5°hÀÀdÑKÔK�Ø˜5�yÐ å˜$¥	¤Ô 5Ñ6Ô6ð !à×5Ò5°g¸tÀTÑJÔJ�Ø˜5�yÐ å˜$¥	¤Ô 4Ñ5Ô5ð !à×5Ò5°f¸dÀDÑIÔI�Ø˜5�yÐ å�h¥	¤Ô 8Ñ9Ô9ð 	@à×,Ò,¨X°tÑ<Ô<¸aÐ?Ð?õ �h¥	¤Ô 6Ñ7Ô7ð 	DØ×3Ò3°H¸hÈØ;?ð 4ñ Aô AØBCðDð Då�h¥	¤Ô 5Ñ6Ô6ð 	DØ×3Ò3°G¸XÀtØ;?ð 4ñ Aô AØBCðDð Dõ ÐAØ”Ô#ñ$ñ %ô %ð 	%r   c                 ó|  ‡ — t          t          |j        dg ¦  «        ¦  «        }t          |¦  «        D ]>\  }}t	          |d¦  «        s)t          d|pd|dz   t          |dd¦  «        fz  ¦  «        ‚Œ?t          |¦  «        dk    ott          |d	         j        t          j
        j        ¦  «        oJt          |d	         j        j        t          j
        j        ¦  «        o|d	         j        j        j        d
gk    }|r*|                     ¦   «          |st          d|pdz  ¦  «        ‚ˆ fd„|D ¦   «         }|s|t          j        gk    rg }‰                      |j        ¦  «        \  }}	d }
t	          |j        d¦  «        r|j        j        dd …         g d¢k    rd}
t          j        t)          |¦  «        |||
¦  «        S )Nr  rÍ   zt%s arg %d: unknown type '%s' (if you meant to use the old C syntax of giving untyped arguments, it is not supported)zin expressionr   rE   ú?r	   r½   r»   z=%s: a function with only '(...)' as argument is not correct Cc                 óT   •— g | ]$} ‰j         ‰                     |j        ¦  «        Ž ‘Œ%S r   )Ú_as_func_argrÔ   rÍ   )Ú.0Úargdeclnoder”   s     €r   ú
<listcomp>z/Parser._parse_function_type.<locals>.<listcomp>Ü  sD   ø€ ð +ð +ð +Øð "�Ô! 4×#;Ò#;¸KÔ<LÑ#MÔ#MÐNð +ð +ð +r   rÂ   éýÿÿÿ)r"  r"  r!  Ú	__stdcall)rj   ÚgetattrrØ   rl   r  r   r%   rÈ   rÍ   r   rÉ   rÒ   rÎ   rÏ   Úpopr   r  rÔ   rÂ   r  Útuple)r”   r@  Úfuncnamer  r-   ÚargÚellipsisrØ   ÚresultrÂ   Úabis   `          r   r?  zParser._parse_function_typeÇ  s  ø€ Ý•g˜hœm¨X°rÑ:Ô:Ñ;Ô;ˆÝ Ñ'Ô'ð 	3ð 	3‰FˆAˆsÝ˜3 Ñ'Ô'ð 3Ýð !?ð  Ð2 ?°A¸±EÝ˜s F¨CÑ0Ô0ð2ñ!2ñ 3ô 3ð 3ð3õ �‰KŒK˜!ŠOð <Ý�v˜b”z”­	¬Ô(@ÑAÔAð<å�v˜b”z”Ô+Ý ”Ô5ñ7ô 7ð<ð �2ŒJŒOÔ Ô&¨?Ð*;Ò;ð 	ð ð 	IØ�JŠJ‰LŒLˆLØð IÝð(Ø+3Ð+F°ñHñIô Ið Ið+ð +ð +ð +Ø#)ð+ñ +ô +ˆàð 	˜D¥U¤_Ð$5Ò5Ð5ØˆDØ×0Ò0°´Ñ?Ô?‰ˆ�ð ˆÝ�8”= 'Ñ*Ô*ð 	"ØŒ}Ô" 2 3 3Ô'Ð+LÐ+LÐ+LÒLÐLØ!�ÝÔ$¥U¨4¡[¤[°&¸(ÀCÑHÔHÐHr   c                 óÊ   — t          |t          j        ¦  «        rt          j        |j        |¦  «        S t          |t          j        ¦  «        r|                     ¦   «         S |S r   )rÈ   r   r<  r/  Úitemr  r*  r&  s      r   rM  zParser._as_func_argê  sW   € Ý�d�EœOÑ,Ô,ð 	ÝÔ$ T¤Y°Ñ6Ô6Ð6Ý˜�eÔ3Ñ4Ô4ð 	Ø×+Ò+Ñ-Ô-Ð-àˆKr   c                 ó  — 	 | j         |         S # t          $ r Y nw xY w|}|j        }|€%|�d|z  }n| xj        dz  c_        d| j        z  }d }n'|}|›d|›�}| j                             |d¦  «        \  }}	|€ž|dk    rt          j        |d d d ¦  «        }ng|dk    rt          j        |d d d ¦  «        }nI|dk    r1|d	k    rt          d
¦  «        ‚|  
                    ||j        ¦  «        }nt          d|›�¦  «        ‚|�|                      ||¦  «         n|dk    r|j        �t          d|z  ¦  «        ‚|j        s|                     |¦  «         |j        r'd|j        v r|                      d|j        z  |¦  «         || j         |<   |dk    r|S |j        €|S |j        �t          d|z  ¦  «        ‚g }
g }g }g }|j        D �]Z}t'          |j        t*          j        j        ¦  «        r:d                     |j        j        ¦  «        d	k    r|                      ||¦  «         Œa|j        €d}n|                      |j        ¦  «        }d| _        |                      |j        d¬¦  «        \  }}| j        r|                      ||¦  «         t'          |t          j        ¦  «        r|j        r|                      ||¦  «         |
                      |j        pd¦  «         |                      |¦  «         |                      |¦  «         |                      |¦  «         �Œ\tC          |
¦  «        |_        tC          |¦  «        |_"        tC          |¦  «        |_#        tC          |¦  «        |_$        |dgtK          |¦  «        z  k    r3t'          |t          j        ¦  «        r|j        rt          |›d�¦  «        ‚| j&                             d¦  «        |_'        |j(        r!d|_(        | j)                              |¦  «         |S )Nz$%sr   z$%drZ   )NNrú   rû   rü   r»   z!Enums cannot be declared with ...zkind = z^enum %s: the '{}' declaration should appear on the first time the enum is mentioned, not laterr)  zanonymous %sz"duplicate declaration of struct %sr   r½   FTrý   z!: using both bitfields and '...;'r´   r	   )*r�   ÚKeyErrorrE   rŒ   rŠ   rõ   r   Ú
StructTypeÚ	UnionTyper   Ú_build_enum_typeÚvaluesrT   rÕ   r7   r-  Úforce_the_nameÚdeclsÚfldnamesrÈ   rÍ   r   rÉ   rÎ   r&   rÏ   Ú_make_partialÚbitsizer;  Ú_partial_lengthrÔ   Úpartialr    rU  ÚfldtypesÚ
fldbitsizeÚfldqualsr%   r�   r´   Ú	completedr’   )r”   ÚkindrÍ   rE   r8  Ú
force_nameÚexplicit_namerö   rÝ   Ú_re  rj  rk  rl  rF   rg  Úfquals                    r   r  z"Parser._get_struct_union_enum_typeò  sr  € ð	ØÔ(¨Ô.Ð.øÝð 	ð 	ð 	ØˆDð	øøøð ˆ
ØŒyˆð ˆ<ð Ð%Ø %¨
Ñ 2��àÐ'Ô'¨1Ñ,Ð'Ô'Ø %¨Ô(?Ñ ?�ØˆBˆBà ˆMØ!˜T˜T 4 4Ð(ˆCØÔ&×*Ò*¨3°Ñ=Ô=‰EˆB�àˆ:Ø�xÒÐÝÔ% m°T¸4ÀÑFÔF��Ø˜’�Ý”_ ]°D¸$ÀÑEÔE��Ø˜’�Ø  OÒ3Ð3Ý#Ð$GÑHÔHÐHØ×*Ò*¨=¸$¼+ÑFÔF��å$�n°D°DÐ%:Ñ;Ô;Ð;ØÐØ—’˜c 2Ñ&Ô&Ð&øà�vŠ~ˆ~ $¤+Ð"9Ý)ð<Ø>KñLñMô Mð Mð Œ|ð 	*Ø×Ò˜jÑ)Ô)Ð)ØŒ<ð 	=˜C 2¤7˜N˜NØ�MŠM˜.¨2¬<Ñ7¸Ñ<Ô<Ð<à&(ˆÔ˜dÑ#ð �6Š>ˆ>ØˆIð
 Œ:ÐØˆIàŒ;Ð"ÝÐ@À4ÑGÑHÔHÐHØˆØˆØˆ
ØˆØ”Jð 	#ñ 	#ˆDÝ˜4œ9¥i¤oÔ&DÑEÔEð Ø—G’G˜DœIœOÑ,Ô,°Ò?Ð?ð ×"Ò" 2 vÑ.Ô.Ð.ØØŒ|Ð#Ø��à×.Ò.¨t¬|Ñ<Ô<�Ø#(ˆDÔ Ø×2Ò2°4´9ØEIð 3ñ Kô K‰KˆD�%àÔ#ð /Ø×"Ò" 2 vÑ.Ô.Ð.Ý˜$¥Ô 0Ñ1Ô1ð /°d´lð /Ø×"Ò" 2 vÑ.Ô.Ð.Ø�OŠO˜DœI˜O¨Ñ,Ô,Ð,Ø�OŠO˜DÑ!Ô!Ð!Ø×Ò˜gÑ&Ô&Ð&Ø�OŠO˜EÑ"Ô"Ð"Ñ"Ý˜H‘o”oˆŒÝ˜H‘o”oˆŒÝ˜jÑ)Ô)ˆŒÝ˜H‘o”oˆŒØ˜"˜¥ J¡¤Ñ/Ò/Ð/Ý˜"�eÔ.Ñ/Ô/ð 3°B´Jð 3Ý)Ø-/¨R¨Rð+2ñ 3ô 3ð 3à”M×%Ò% hÑ/Ô/ˆŒ	ØŒ<ð 	(ØˆBŒLØÔ×#Ò# BÑ'Ô'Ð'Øˆ	s   ‚ �
›c                 ó¼   — t          |t          j        ¦  «        st          |›d�¦  «        ‚|                     ¦   «         s|st          |›d�¦  «        ‚d|_        d S )Nz cannot be partialz is partial but has no C nameT)rÈ   r   ÚStructOrUnionr   Ú
has_c_namer7   ri  )r”   rö   r8  s      r   rf  zParser._make_partialh  se   € Ý˜"�eÔ1Ñ2Ô2ð 	<Ý°b°b°bÐ:Ñ;Ô;Ð;Ø�}Š}‰Œð 	P vð 	PÝ%È"È"È"Ð&NÑOÔOÐOØˆŒ
ˆ
ˆ
r   c                 óÆ  — t          |t          j        j        ¦  «        �rr|j        }d|d         cxk    rdk    rçn nä|                     d¦  «        }	 |                     d¦  «        rt          |d¦  «        S t          |d¦  «        S # t          $ rz t          |¦  «        dk    rd| 
                    ¦   «         dd…         d	k    rt          |d
¦  «        cY S | 
                    ¦   «         dd…         dk    rt          |d¦  «        cY S Y nw xY wt          d|›�¦  «        ‚|d         dk    rS|d         dk    rGt          |¦  «        dk    st          |¦  «        dk    r!|d         dk    rt          |d         ¦  «        S t          d|›�¦  «        ‚t          |t          j        j        ¦  «        r%|j        dk    r|                      |j        ¦  «        S t          |t          j        j        ¦  «        r&|j        dk    r|                      |j        ¦  «         S t          |t          j        j        ¦  «        r |j        | j        v r| j        |j                 S t          |t          j        j        ¦  «        r2|j        dk    r'|r	d| _        dS t+          d|j        j        z  ¦  «        ‚t          |t          j        j        ¦  «        rü|                      |j        ¦  «        }|                      |j        ¦  «        }|j        dk    r||z   S |j        dk    r||z
  S |j        dk    r||z  S |j        dk    r|                      ||¦  «        S |j        dk    r||                      ||¦  «        |z  z
  S |j        dk    r||z  S |j        dk    r||z	  S |j        dk    r||z  S |j        dk    r||z  S |j        d k    r||z  S t+          d!|j        j        z  ¦  «        ‚)"Nrã   r	   Ú9ÚuUlLr˜   r«   r   r  rä   é   Ú0bzinvalid constant r  r½   r
   é   ú\éþÿÿÿú+râ   Ú__dotdotdotarray__Tr_   zT:%d: unsupported '[...]' here, cannot derive the actual array length in this contextr   ú/ú%z<<z>>ú&ú|ú^z?:%d: unsupported expression: expected a simple numeric constant)rÈ   r   rÉ   ÚConstantrð   rè   r$   rU   r¶   r%   rç   r   Úordr	  r
  r;  r  r  rE   r‘   rh  r   r>  rA   ÚBinaryOpÚleftÚrightÚ_c_div)r”   r  r¿   rV   rˆ  r‰  s         r   r;  zParser._parse_constanto  s  € õ �h¥	¤Ô 8Ñ9Ô9ñ 	>Ø”ˆAØ�a˜”dÐ!Ð!Ò!Ð!˜cÒ!Ð!Ð!Ð!Ð!Ø—H’H˜VÑ$Ô$�ð
-Ø—|’| CÑ(Ô(ð *Ý" 1 a™yœyÐ(å" 1 b™zœzÐ)øÝ!ð -ð -ð -Ý˜1‘v”v ’z�zØŸ7š7™9œ9 Q q Sœ>¨TÒ1Ð1Ý#& q¨"¡:¤:Ð-Ð-Ð-ØŸWšW™YœY q¨ sœ^¨tÒ3Ð3Ý#& q¨!¡9¤9Ð,Ð,Ð,øøð-øøøõ  �i¸¸Ð <Ñ=Ô=Ð=Ø�1”˜’�  2¤¨#¢ Ý˜‘F”F˜a’K�K¥C¨¡F¤F¨a¢K K°A°a´D¸D²L°LÝ˜1˜Rœ5‘z”zÐ!å�i¸¸Ð <Ñ=Ô=Ð=å�x¥¤Ô!8Ñ9Ô9ð 	7Ø”˜sÒ"Ð"Ø×'Ò'¨¬Ñ6Ô6Ð6å�x¥¤Ô!8Ñ9Ô9ð 	8Ø”˜sÒ"Ð"Ø×(Ò(¨¬Ñ7Ô7Ð7Ð7å�x¥¤Ô!3Ñ4Ô4ð 	6Ø” Ô!4Ð4Ð4ØÔ& x¤}Ô5Ð5å�x¥¤Ô!3Ñ4Ô4ð 	2Ø”MÐ%9Ò9Ð9Ø ð Ø'+�Ô$Ø�uÝð Eà%œ^Ô0ñ1ñ 2ô 2ð 2õ �h¥	¤Ô 8Ñ9Ô9ð 	$Ø×'Ò'¨¬Ñ6Ô6ˆDØ×(Ò(¨¬Ñ8Ô8ˆEØŒ{˜cÒ!Ð!Ø˜e‘|Ð#Ø” Ò#Ð#Ø˜e‘|Ð#Ø” Ò#Ð#Ø˜e‘|Ð#Ø” Ò#Ð#Ø—{’{ 4¨Ñ/Ô/Ð/Ø” Ò#Ð#Ø˜dŸkšk¨$°Ñ6Ô6¸Ñ>Ñ>Ð>Ø” Ò$Ð$Ø˜u‘}Ð$Ø” Ò$Ð$Ø˜u‘}Ð$Ø” Ò#Ð#Ø˜e‘|Ð#Ø” Ò#Ð#Ø˜e‘|Ð#Ø” Ò#Ð#Ø˜e‘|Ð#åð 1Ø3;´>Ô3FñGñ Hô Hð 	Hs   Á$B	 Á9B	 Â	ADÃ0DÄDc                 óF   — ||z  }|dk     |dk     z  r||z  dk    r|dz  }|S )Nr	   r   r   )r”   ÚaÚbrY  s       r   rŠ  zParser._c_div¸  s:   € Ø�a‘ˆØ�ŠU�q˜1’uÑð 	 A¨¡E¨a¢< <Ø�a‰KˆFØˆr   c                 óö  — |�àd}g }g }d}|j         D ]”}t                               |j        ¦  «        rd}Œ$|j        �|                      |j        ¦  «        }|                     |j        ¦  «         |                     |¦  «         |                      |j        |¦  «         |dz  }Œ•t          |¦  «        }t          |¦  «        }t          j
        |||¦  «        }||_        nt          j
        |dd¦  «        }|S )NFr	   Tr   r   )ÚenumeratorsÚ_r_enum_dotdotdotr)   rE   rð   r;  r    rß   rU  r   ÚEnumTyperi  )	r”   rp  rd  ri  r�  Ú
enumvaluesÚnextenumvaluerü   rö   s	            r   ra  zParser._build_enum_type¾  s  € ØÐØˆGØˆKØˆJØˆMØÔ)ð 	#ð 	#�Ý$×*Ò*¨4¬9Ñ5Ô5ð Ø"�GØØ”:Ð)Ø$(×$8Ò$8¸¼Ñ$DÔ$D�MØ×"Ò" 4¤9Ñ-Ô-Ð-Ø×!Ò! -Ñ0Ô0Ð0Ø×#Ò# D¤I¨}Ñ=Ô=Ð=Ø Ñ"��Ý Ñ,Ô,ˆKÝ˜zÑ*Ô*ˆJÝ” ¨{¸JÑGÔGˆBØ ˆBŒJˆJå” ¨r°2Ñ6Ô6ˆBØˆ	r   c                 óR  — |j                              ¦   «         D ]W\  }\  }}|                     d¦  «        rŒ|                     dd¦  «        d         }|dv r|                      ||d|¬¦  «         ŒX|j                             ¦   «         D ]\  }}|                      ||¦  «         Œd S )Nzanonymous $enum_$rZ   r   r	   )rú   rû   rü   Ú	anonymousrz   T)r  rÂ   )rŠ   rî   r$   r  rÕ   r‘   rß   )r”   ÚotherrE   rö   rÂ   rn  ÚkÚvs           r   ÚincludezParser.includeÖ  sÇ   € Ø!&Ô!4×!:Ò!:Ñ!<Ô!<ð 	Dð 	DÑˆD‘+�2�uØ�ŠÐ2Ñ3Ô3ð ØØ—:’:˜c 1Ñ%Ô% aÔ(ˆDØÐJÐJÐJØ—’˜d B°¸U�ÑCÔCÐCøØÔ(×.Ò.Ñ0Ô0ð 	&ð 	&‰DˆAˆqØ×Ò  1Ñ%Ô%Ð%Ð%ð	&ð 	&r   c                 ót  — |j         j         j        }|dgk    rt          j        |j        ¦  «        S |dgk    r/| j        €d|j        z  | _        t          j        |j        ¦  «        S |dgk    r/| j        €d|j        z  | _        t          j        |j        ¦  «        S t          d|j	        j
        z  ¦  «        ‚)Nr»   Ú__dotdotdotint__z'typedef int... %s'Ú__dotdotdotfloat__z'typedef float... %s'ú*:%d: unsupported usage of "..." in typedef)rÍ   rÏ   r   Úunknown_typerE   r“   ÚUnknownIntegerTypeÚUnknownFloatTyper   r>  rA   )r”   rF   r£   s      r   rÐ   zParser._get_unknown_typeà  sÄ   € Ø”I”NÔ(ˆ	Ø˜Ð)Ò)Ð)ÝÔ% d¤iÑ0Ô0Ð0àÐ+Ð,Ò,Ð,ØÔ%Ð-Ø)>ÀÄÑ)J�Ô&ÝÔ+¨D¬IÑ6Ô6Ð6àÐ-Ð.Ò.Ð.àÔ%Ð-Ø)@À4Ä9Ñ)L�Ô&ÝÔ)¨$¬)Ñ4Ô4Ð4åÐCØœœñ)ñ *ô *ð 	*r   c                 ó¢   — |j         j         j         j        dgk    rt          j        |j        ¦  «        S t          d|j        j        z  ¦  «        ‚)Nr»   r�  )rÍ   rÏ   r   Úunknown_ptr_typerE   r   r>  rA   )r”   rF   s     r   rÓ   zParser._get_unknown_ptr_typeó  sN   € ØŒ9Œ>ÔÔ$¨Ð(9Ò9Ð9ÝÔ)¨$¬)Ñ4Ô4Ð4ÝÐCØœœñ)ñ *ô *ð 	*r   )FFNF)Fr	   r   )NFN)NF)F)r×   Ú
__module__Ú__qualname__r•   r©   r°   r    r�   r·   rß   rì   rÄ   rø   rË   r  r  rÕ   r'  rô   rÔ   r?  rM  r  rf  r;  rŠ  ra  r™  rÐ   rÓ   r   r   r   rˆ   rˆ   '  sþ  € € € € € ð&ð &ð &ð%$ð %$ð %$ðNð ð ðð ð ð AEØ#ð)ð )ð )ð )ð0=ð =ð =ð~'ð 'ð 'ð0ð 0ð 0ð.ð .ð .ð"
+ð 
+ð 
+ð1Pð 1Pð 1Pðf3ð 3ð 3ð7ð 7ð 7ð1ð 1ð 1ð 1ð
ð 
ð 
ð.ð .ð .ð .ð JOØ,0ðg%ð g%ð g%ð g%ðR!Ið !Ið !Ið !IðFð ð ðtð tð tð tðlð ð ðGHð GHð GHð GHðRð ð ðð ð ð0&ð &ð &ð*ð *ð *ð&*ð *ð *ð *ð *r   rˆ   )4r   r   Úcommontypesr   r   Úerrorr   r   r   r   ÚImportErrorr�   r­   ÚsysÚversion_infoÚthreadÚ_threadÚallocate_lockr›   r   rš   ÚcompileÚDOTALLÚ	MULTILINEr`   ra   rN   rk   r�  ri   r}   r   Ú
IGNORECASErï   rg   rf   rh   r5   r   rn   ro   r   r/   r9   rB   rG   rP   rW   rw   r†   Úobjectrˆ   r   r   r   ú<module>r²     sM  ðØ Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø &Ð &Ð &Ð &Ð &Ð &Ð &Ð &ðØ)Ð)Ð)Ð)Ð)Ð)Ð)øØð ð ð ØÐÐÐÐÐðøøøà Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð ðØ
Ô˜$ÒÐØ Ð Ð Ð Ð àˆˆˆØ ˆ7Ô Ñ"Ô"€D€DøØð ð ð Ø€D€D€Dðøøøðð ð ð ,Ð ØˆRŒZÐ7Øœ	 B¤LÑ0ñ2ô 2€
àˆRŒZð 2àœ	 B¤LÑ0ñ2ô 2€	ð �B”JÐAÀ2Ä<ÑPÔPÐ Ø�"”*Ð=Ñ>Ô>€Ø�B”JÐ3Ñ4Ô4Ð Ø�2”:Ð1Ñ2Ô2Ð Øˆ2Œ:�iÑ Ô €Ø€Ø�”Ð4°b´mÑDÔD€ØˆbŒjÐ2Ñ3Ô3€ØˆbŒjÐ6Ñ7Ô7€Øˆ2Œ:�nÑ%Ô%€Ø�2”:ð Oñ Pô PÐ à �b”jØ.ñ0ô 0Ð à�2”:ð (ñ )ô )Ð à�R”ZÐ <Ñ=Ô=Ð ðð ð ð(ð (ð (ðT0ð 0ð 0ðd
ð 
ð 
ð;ð ;ð ;ð$ð $ð $ð3ð 3ð 3ð@ð @ð @ðD%ð %ð %ðPP*ð P*ð P*ð P*ð P*ˆVñ P*ô P*ð P*ð P*ð P*s   ˜ Ÿ	+ª+»#A ÁA)Á(A)