+
    VBiJi                        ^RI Ht ^RIHt ^RIHt ^RIHt ^RIHtHt ^RI	H
t
 ^RI	Ht ^RI	Ht ^R	I	Ht ^R
I	Ht R<R lt ! R R]4      tR=tR^RRRRRR/t^tRtRtRtRtRtRtRtRtR>R lt ! R R 4      tR! tR" tR# t R$ t!R% t"R& t#R' t$R( t%R) t&R* t'R+ t(R, t)R- t*R. t+R/ t,R?R0 lt-R?R1 lt.]/! ]
P`                  R27      t1].! R3]1R47      t2].! R54      t3].! R64      t4].! R74      t5].! R84      t6].! R9]1R47      t7].! R:]1R47      t8].! R;4      t9R# )@   )CythonTransform)
ModuleNode)CompileError)CythonUtilityCode)UtilityCodeTempitaUtilityCode)Options)Interpreter)
PyrexTypes)Naming)Symtabc                     ^ RI Hp V! V 4      p V^ 8  d@   RV,          pRP                  V P                  R4       Uu. uF  qCV,           NK  	  up4      p V # u upi )    )dedent 
)textwrapr   joinsplit)textreindentr   indentxs   &&   ;/usr/lib/python3.14/site-packages/Cython/Compiler/Buffer.pyr   r      sU    $<D!|xyydjj.>?.>1**.>?@K @s   Ac                   L   a a ] tR t^t oRtRtV 3R ltR tR tR t	Rt
VtV ;t# )IntroduceBufferAuxiliaryVarsFc                   < \        V\        4      '       g   Q h^ V n        \        SV `  V4      pV P
                  '       d   \        VP                  4       V# r   )
isinstancer   max_ndimsuper__call__buffers_existsuse_bufstruct_declare_codescope)selfnoderesult	__class__s   && r   r"   %IntroduceBufferAuxiliaryVars.__call__   sI    $
++++!$'&tzz2    c           	     t  aaaa SP                   P                  4       pV UUu. uF%  w  rEVP                  P                  '       g   K#  VNK'  	  ppp\	        V4      ^ 8  d   VP                  R R7       RV n        V UUu. uF%  w  rEVP                  P                  '       g   K#  VNK'  	  ppp\	        V4      ^ 8  d   RV n        V F8  w  ooSR8X  g   K  \        SP                  \        4      '       g   K1  RV n         M	  ?\        S\        4      '       d'   \	        V4      ^ 8  d   \        SP                  R4      hV EFP  oSP                  P                  P                   '       d   \        SP                  R4      hSP"                  oSP                  pVP$                  \&        P(                  8  d,   \        SP                  R\&        P(                  ,          4      hVP$                  V P*                  8  d   VP$                  V n        VVVV3R lp	\,        P.                  \0        P2                  3\,        P4                  \0        P6                  33p
V
 UUu. uF  w  rV	! W4      NK  	  uppw  r\8        P:                  ! W4      Sn        EKS  	  VSn        SV n         R	# u uppi u uppi u uppi )
r   c                     V P                   # N)name)entrys   &r   <lambda>;IntroduceBufferAuxiliaryVars.handle_scope.<locals>.<lambda>2   s    5::r+   )keyT
memoryviewz'Buffer vars not allowed in module scopez-Buffers with pointer types not yet supported.z1Buffer ndims exceeds Options.buffer_max_dims = %dc                    < SP                  VS4      pSP                  R VV SP                  R7      pSP                  '       d   RVn        V# )N)r/   cnametypeposT)mangledeclare_varr8   is_argused)r7   prefixr6   aux_varr0   r/   r'   r%   s   &&  r   decvar9IntroduceBufferAuxiliaryVars.handle_scope.<locals>.decvarP   sK    VT2++U15488 , E<<<#'GLr+   N)!entriesitemsr7   	is_bufferlensortr#   is_memoryviewslicer   utility_code_definitionr   using_memoryviewr   r   r8   dtypeis_ptrr/   ndimr	   buffer_max_dimsr    r   c_pyx_buffer_nd_typer   pybuffernd_prefixc_pyx_buffer_typepybufferstruct_prefixr   	BufferAux
buffer_auxbuffer_entriesr%   )r&   r'   r%   scope_itemsr/   r0   bufvarsmemviewslicevarsbuftyper?   auxvarsr7   r=   
pybufferndrcbuffers   &ff ``         r   handle_scope)IntroduceBufferAuxiliaryVars.handle_scope+   s$    mm))+,7PK[T5::;O;O55KPw<!LL5L6"&D5@b[kdEJJDaDaEE[b 1$"&D )MT5|#
53P3PRc(d(d(,% ) dJ''CL1,<txx)RSSEzz&&&"488-\]]::DjjG||g555"488KgNeNeeg g||dmm+ '  #779Q9QR"44f6R6RSUGOV#Ww^dF4$8w#W J%//
EE5 8  '
a Q
 cL $Xs    J(	J( J.&J.J4c                ^    V P                  WP                  4       V P                  V4       V# r.   )r[   r%   visitchildrenr&   r'   s   &&r   visit_ModuleNode-IntroduceBufferAuxiliaryVars.visit_ModuleNodeb   s'    $

+4 r+   c                ^    V P                  WP                  4       V P                  V4       V# r.   )r[   local_scoper^   r_   s   &&r   visit_FuncDefNode.IntroduceBufferAuxiliaryVars.visit_FuncDefNodeg   s)    $ 0 014 r+   )r#   r    r%   rH   )__name__
__module____qualname____firstlineno__r#   rH   r"   r[   r`   rd   __static_attributes____classdictcell____classcell__)r)   __classdict__s   @@r   r   r      s,      N5n
 r+   r   rK   modenegative_indicescastfullTFz"%s" is not a buffer optionzToo many buffer optionsz#"%s" buffer option already suppliedz"%s" missingz[Only allowed buffer modes are: "c", "fortran", "full", "strided" (as a compile-time string)z#ndim must be a non-negative integerz0dtype must be "object", numeric type or a structz"%s" must be a booleanNc                <  a a Vf   \         p\        P                  ! W#VRR7      w  r#\        V4      \        8  d   \        VR	,          ^,          \        4      h/ oVP                  4        F/  w  pw  rxV\        9  d   \        V\        V,          4      hVSV&   K1  	  \        \        V4       FM  w  pw  rxV\        9  d   \        V\        V,          4      hVS9   d   \        V\        V,          4      hVSV&   KO  	  \         F  pVS9  g   K   WF,          SV&   K  	  SP                  R4      p	V	'       d#   V	P                  '       d   \        S \         4      hSP                  R4      p
V
'       d.   \#        V
\$        4      '       d   V
^ 8  d   \        S \&        4      hSP                  R4      pV'       d   VR
9   g   \        S \(        4      hV V3R lpV! R4       V! R4       S#   \         d%    T'       d   \        S \        T,          4      h EK  i ; i)a3  
Must be called during type analysis, as analyse is called
on the dtype argument.

posargs and dictargs should consist of a list and a dict
of tuples (value, pos). Defaults should be a dict of values.

Returns a dict containing all the options a buffer can have and
its value (with the positions stripped).
rI   )type_env	type_argsrK   rn   c                    < SP                  V 4      p\        V\        4      '       g   \        S\        V ,          4      hR # r.   )getr   boolr   ERR_BUF_BOOL)r/   r   	globalposoptionss   & r   assert_bool+analyse_buffer_options.<locals>.assert_bool   s5    KK!T""y,*=>> #r+   ro   rp   )r   rI   )rq   stridedcfortran)buffer_defaultsr
   interpret_compiletime_optionsrD   buffer_positional_options_countr   ERR_BUF_TOO_MANYrB   buffer_optionsERR_BUF_OPTION_UNKNOWNzipERR_BUF_DUPKeyErrorERR_BUF_MISSINGrv   is_extension_typeERR_BUF_DTYPEr   intERR_BUF_NDIMERR_BUF_MODE)ry   envposargsdictargsdefaultsneed_completer/   valuer8   rI   rK   rn   r{   rz   s   f&&&&&       @r   analyse_buffer_optionsr   |   s    "#AAC<AG 7|5572;q>+;<<G&nn.lu~%s$:T$ABB /
 ".':lu~%s$:T$ABB7?sK$$677 ; wJ (  KK E(((9m44;;vDZc**dQh9l33;;vDT@@9l33?
 "#N1  J &y/D2HII !Js   G,,H?HHc                   J   a  ] tR t^t o R tR tR tR tR tR t	R t
RtV tR	# )
BufferEntryc                   Wn         VP                  V n        VP                  P                  P                  V n        R V P                  ,          V n        VP                  P                  V n        V P                  4        R# )z%s.rcbuffer->pybuffer.bufN)	r0   r7   rR   buflocal_nd_varr6   buf_ptrbuffer_ptr_typebuf_ptr_typeinit_attributes)r&   r0   s   &&r   __init__BufferEntry.__init__   sY    
JJ	%%55;;
2TZZ?!JJ66r+   c                    V P                  4       V n        V P                  4       V n        V P	                  4       V n        R # r.   )get_buf_shapevarsshapeget_buf_stridevarsstridesget_buf_suboffsetvars
suboffsetsr&   s   &r   r   BufferEntry.init_attributes   s2    ++-
..0446r+   c                $    V P                  R 4      # )z%s.diminfo[%d].suboffsets_for_all_ndimr   s   &r   r   !BufferEntry.get_buf_suboffsetvars   s    !!"=>>r+   c                $    V P                  R 4      # )z%s.diminfo[%d].stridesr   r   s   &r   r   BufferEntry.get_buf_stridevars   s    !!":;;r+   c                $    V P                  R 4      # )z%s.diminfo[%d].shaper   r   s   &r   r   BufferEntry.get_buf_shapevars   s    !!"899r+   c                    \        V P                  P                  4       Uu. uF  q!V P                  V3,          NK  	  up# u upi r.   )ranger7   rK   r6   )r&   sis   && r   r   BufferEntry._for_all_ndim   s7    -2499>>-BC-BTZZO##-BCCCs   Ac           	        . pV P                   P                  pV P                   P                  pVR 8X  dw   \        VV P	                  4       V P                  4       4       F9  w  rgpVP                  V4       VP                  V4       VP                  V4       K;  	  RV,          p	\        p
MVR8X  d   RV,          p	\        p
M0VR8X  d   RV,          p	\        p
MVR8X  d   RV,          p	\        p
MQ h\        W P	                  4       4       F'  w  rgVP                  V4       VP                  V4       K)  	  WP                  P                  9  dV   VP                  P                  P                  V	4       VP                  R,          pVP                  R	,          pV
! WWR
7       V P                  P                  4       pV	: RV: RV P                   : RRP#                  V4      : R2pV# )rq   z__Pyx_BufPtrFull%ddr~   z__Pyx_BufPtrStrided%ddr   z__Pyx_BufPtrCContig%ddr   z__Pyx_BufPtrFortranContig%ddutility_code_protoutility_code_def)r/   nd(, ))r7   rK   rn   r   r   r   appendbuf_lookup_full_codebuf_lookup_strided_codebuf_lookup_c_codebuf_lookup_fortran_codeglobalstateutility_codesaddr   empty_declaration_coder   r   )r&   codeindex_cnamesparamsr   rn   r   r   ofuncnamefuncgen	protocodedefcodebuf_ptr_type_codeptrcodes   &&&            r   generate_buffer_lookup_code'BufferEntry.generate_buffer_lookup_code   s    YY^^yy~~6>|#668#99;=a a a a = -r1H*Gy 3b813b8+"9B>1uL*A*A*CDa a  E
 ++999**..x8(()=>I&&'9:GIX= --DDF&.0A4<<&*ii&79r+   )r   r   r6   r0   r   r   r   r7   N)rf   rg   rh   ri   r   r   r   r   r   r   r   rj   rk   )rm   s   @r   r   r      s.     7
?<:D* *r+   r   c                     R pVP                   pVR8X  d   VR,          pM5VR8X  d   VR,          pM$VR8X  d   VR,          pMVR8X  d   VR,          pMQ hV P                  '       d
   VR	,          pV# )
PyBUF_FORMATrq   z| PyBUF_INDIRECTr~   z| PyBUF_STRIDESr   z| PyBUF_C_CONTIGUOUSr   z| PyBUF_F_CONTIGUOUSz| PyBUF_WRITABLE)rn   writable_needed)rR   buffer_typeflagsrn   s   &&  r   	get_flagsr     s|    EDv~##		""	''		''u!!!5,>#>5Lr+   c                 b    V P                   pR VP                  n        R VP                  n        R# )TN)rR   r   r<   	rcbuf_var)r0   rR   s   & r   used_buffer_aux_varsr     s)    !!J&*J# $Jr+   c                    V P                   V P                  P                  r2VP                  P                  pR R.pVR8X  d   VP                  R4       . p\        V P                  P                  4       F(  pV F  pVP                  RWGVWHV3,          4       K!  	  K*  	  VP                  RP                  V4      4       R# )r   r   rq   r   z1%s.diminfo[%d].%s = %s.rcbuffer->pybuffer.%s[%d];r   N)
rR   r7   rn   r   r6   r   r   rK   putlnr   )		buf_entryr   rR   rn   pybuffernd_structfldnameslnr   fldnames	   &&       r    put_unpack_buffer_aux_into_scoper     s     !++Y^^-@-@"22887#Hv~%	B9>>&&'GIII!g!AM     ( 	JJsxx|r+   c                 8   V P                   pVP                  P                  pVP                  P                  pVP	                  R V,          4       VP	                  RV,          4       VP	                  RV,          4       VP	                  V: RV: R24       R# )z%s.pybuffer.buf = NULL;z%s.refcount = 0;z%s.data = NULL;z.rcbuffer = &;N)rR   r   r6   r   r   )r0   r   bufauxr   pybuffer_structs   &&   r   put_init_varsr   0  s{    F..44&&,,OJJ(?:;JJ!O34 	JJ #445JJ'8/JKr+   c                 |   V P                   p\        WP                  W0P                  4      pVP	                  R 4       VP	                  RV P                  P
                  P                  4       ,          4       VP	                  VP                  RV,          V4      4       VP	                  R4       \        W4       R# ){'__Pyx_BufFmt_StackElem __pyx_stack[%d];%s == -1}N)	rR   get_getbuffer_callr6   r7   r   rI   struct_nesting_deptherror_goto_ifr   )r0   r   r8   rR   	getbuffers   &&&  r   put_acquire_arg_bufferr   >  s    !!J"4j**MI 	JJsOJJ85::;K;K;`;`;bbcJJt!!*y"8#>?JJsO %U1r+   c                     V P                   P                  \        4       V P                  R VP                  P
                  P                  ,          4       R# )0__Pyx_SafeReleaseBuffer(&%s.rcbuffer->pybuffer);N)r   use_utility_codeacquire_utility_coder   rR   r   r6   )r   r0   s   &&r   put_release_buffer_coder   L  s;    %%&:;JJAEDTDTDdDdDjDjjkr+   c                    VP                   p\        VP                  4      p\        W#4      pVP                  P
                  p\        WP                  4      pV P                  P                  \        4       R \        4       ,          # )z__Pyx_GetBufferAndValidate(&%(pybuffernd_struct)s.rcbuffer->pybuffer, (PyObject*)%(obj_cname)s, &%(dtype_typeinfo)s, %(flags)s, %(ndim)d, %(cast)d, __pyx_stack))rK   r   rp   r   r   r6   get_type_information_cnamerI   r   r   r   locals)	r   	obj_cnamerR   r   rK   rp   r   r   dtype_typeinfos	   &&&&     r   r   r   Q  sr    D{ Dj.E"2288/6G6GHN%%&:;%'-x0 1r+   c           	     <  a VP                   VP                  rvVP                  P                  p\	        Wg4      p	SP                  R4       SP                  RVP                  P                  4       ,          4       \        SRWg4      p
V'       Ed8   SP                  RV,          4       SP                  P                  \        P                  RR7      pSP                  V: RW,          : R24       SP                  R	SP                  R
V,          4      ,          4       \        ;QJ d     . V3R l\        ^4       4       F  NK  	  5M! V3R l\        ^4       4       4      pSP                  RV,          4       SP                  R	SP                  RW,          ,          4      ,          4       SP                  RV,          4       SP                   P#                  \$        4       SP                  R4       SP                  R4       SP                  RV,          4       SP                  R4       SP                  RV,          4       V F  pSP                  P'                  V4       K   	  SP                  R4       \)        VS4       SP                  SP+                  W4      4       SP                  P'                  V4       MSP                  R	SP                  RW,          ,          4      ,          4       SP                  V : R\        P,                  ! V\        P.                  R4      : RV: R24       SP                  SP1                  V4      4       SP3                  R4       \)        VS4       SP                  R4       SP                  R4       R# )a"  
Generate code for reassigning a buffer variables. This only deals with getting
the buffer auxiliary structure and variables set up correctly, the assignment
itself and refcounting is the responsibility of the caller.

However, the assignment operation may throw an exception so that the reassignment
never happens.

Depending on the circumstances there are two possible outcomes:
- Old buffer released, new acquired, rhs assigned to lhs
- Old buffer released, new acquired which fails, reaqcuire old lhs buffer
  (which may or may not succeed).
r   r   z%sr   F
manage_refz = r   	if (%s) {%s < 0c              3   z   <"   T F0  pSP                   P                  \        P                  R R7      x  K2  	  R# 5i)Fr   N)	funcstateallocate_tempr   py_object_type).0_r   s   & r   	<genexpr>'put_assign_to_buffer.<locals>.<genexpr>  s6      -#+a ..66z7P7P]b6cc#+s   8;zPyErr_Fetch(&%s, &%s, &%s);r   z/Py_XDECREF(%s); Py_XDECREF(%s); Py_XDECREF(%s);z!__Pyx_RaiseBufferFallbackError();z} else {zPyErr_Restore(%s, %s, %s);r   z%s = %s = %s = 0;Py_Nonez; __Pyx_INCREF(Py_None); z.rcbuffer->pybuffer.buf = NULL;N)rR   r7   r   r6   r   r   rI   r   r   r  r  r   
c_int_typeunlikelytupler   r   r   raise_buffer_fallback_coderelease_tempr   error_goto_if_negtypecastr  
error_gotoput)	lhs_cname	rhs_cnamer   is_initializedr8   r   rR   r   r   r   r   retcode_cname	exc_tempsts   &&&&&f        r   put_assign_to_bufferr  _  s     (22INN"2288j.EJJsOJJ8;;L;L;a;a;ccd"4zGI~

EHYYZ44Z5J5JW\4]

	0E0EFG

;$--=0H"IJK
 E -#(8-EE -#(8- -	

09<=

;zY=R/S!TTU

DyPQ))*DE

67

:

/);<

3

&23ANN''* 

3(D9

4))-=>##M2
 	

;zY=R/S!TTU

''Z5N5NPYZ%' 	( 	

4??3'((D9

3JJsOr+   c           
     h   VR,          ;'       d    TpVR,          '       Ed-   VP                   P                  \        P                  RR7      pVP	                  RV,          4       \        \        WV P                  4       4      4       F  w  p	w  rpV
^ 8w  d   VP	                  RV,          4       V'       dK   VP	                  V: RV: R24       VP	                  R	VP                  R
V,          4      W3,          4       MVP	                  RW3,          4       VP                  R4       V
^ 8w  d   RpMRpVP	                  R	VP                  V: RV: V: 24      W3,          4       K  	  V'       d#   VP                  P                  \        4       RpM!VP                  P                  \        4       RpVP	                  RVP                  RV,          4      ,          4       VP	                  V: RV: R24       VP	                  VP                  V4      4       VP	                  R4       VP                   P                  V4       MSV'       dL   \        WV P                  4       4       F-  w  rpV
^ 8w  g   K  VP	                  RV: RV: RV: R24       K/  	  V P!                  WR4      # )a=  
Generates code to process indices and calculate an offset into
a buffer. Returns a C string which gives a pointer which can be
read from or written to at will (it is an expression so caller should
store it in a temporary if it is used more than once).

As the bounds checking can have any number of combinations of unsigned
arguments, smart optimizations etc. we insert it directly in the function
body. The lookup however is delegated to a inline function that is instantiated
once per ndim (lookup with suboffsets tend to get quite complicated).

entry is a BufferEntry

wraparoundboundscheckFr   z%s = -1;zif (%s < 0) {z += r   zif (%s) %s = %d;r  z%s = %d;z} else  z(size_t)z >=  __Pyx_RaiseBufferIndexErrorNogil__Pyx_RaiseBufferIndexErrorr   z%s != -1r   );r   zif (z < 0) )r  r  r   r  r   	enumerater   r   r  r  r   r   raise_indexerror_nogilraise_indexerror_coder  r  r   )r0   index_signedsr   
directivesr8   r   ro   in_nogil_contextfailed_dim_tempdimsignedr6   r   rp   funcs   &&&&&&&&       r   put_buffer_lookup_coder,    s'    ",/DD4D-  
 ..66z7L7LY^6_

:/0+4SV[VmVmVo5p+q'C'&{

?U23#JJeU;<JJ1h&67'5.  . / JJz_,BBC#{!JJ)eT5AB-& & '# ,r* --.DE5D--.CD0D

;zO/K!LLM

o67

4??3'(

3##O4	$'UE\E\E^$_ F5{

eUEJK %` ,,T@@r+   c                 0    V P                  \        4       R # r.   )r   buffer_struct_declare_code)r   s   &r   r$   r$     s    34r+   c                <   RP                  \        V4       Uu. uF  pRWDV3,          NK  	  up4      pV P                  RV: RV: RV: RV: R2	4       RP                  \        V4       Uu. uF  pRWDV3,          NK  	  up4      pV P                  R	V: R
V: R24       TP                  \        R4      W&3,          RP                  \        V4       Uu. uF  p\        R4      WDWD3,          NK  	  up4      ,           R,           4       R# u upi u upi u upi )
Generates a buffer lookup function for the right number
of dimensions. The function gives back a void* at the right location.
r   zi%d, s%d, o%d#define (type, buf, z	) (type)(z
_imp(buf, z))z.Py_ssize_t i%d, Py_ssize_t s%d, Py_ssize_t o%dzstatic CYTHON_INLINE void* z_imp(void* buf, r!  zf
        static CYTHON_INLINE void* %s_imp(void* buf, %s) {
          char* ptr = (char*)buf;
        r  zX          ptr += s%d * i%d;
          if (o%d >= 0) ptr = *((char**)ptr) + o%d;
        z
return ptr;
}N)r   r   r   r   )protodefinr/   r   r   	macroargsfuncargss   &&&&   r   r   r     s#    		b	J	1?aAY66	JKI	KKtYX\^ghiyy`efh`ij`i[\JaTUYVV`ijkH	KKtXVW	KK     #%'' &+2Y+0 &/ ,2 3 , a|, , &/+0 #

    K k
+0s   D.DDc           	        RP                  \        V4       Uu. uF  pRWD3,          NK  	  up4      pRP                  \        V4       Uu. uF  pRWD3,          NK  	  up4      pV P                  RV: RV: RV: R24       R	# u upi u upi )
r0  r   i%d, s%d + 	i%d * s%dr1  r2  z) (type)((char*)buf + r   N)r   r   r   r3  r4  r/   r   r   argsoffsets   &&&&   r   r   r     sv     9959=9ajA6))9=>DZZuRyAy!v--yABF	KKtTSYZ[ >As   BB
c                t   V^8X  d   V P                  RV,          4       R# RP                  \        V4       Uu. uF  pRWD3,          NK  	  up4      pRP                  \        V^,
          4       Uu. uF  pRWD3,          NK  	  up4      pV P                  RW%Wc^,
          3,          4       R# u upi u upi )z
Similar to strided lookup, but can assume that the last dimension
doesn't need a multiplication as long as.
Still we keep the same signature for now.
.#define %s(type, buf, i0, s0) ((type)buf + i0)r   r8  r9  r:  9#define %s(type, buf, %s) ((type)((char*)buf + %s) + i%d)Nr   r   r   r;  s   &&&&   r   r   r     s     
QwDtKLyyuRyAy!*v--yAB5a=I=a[A611=IJOSW_elmgmRnno BIs   B03B5c                \   V^8X  d   V P                  RV,          4       R# RP                  \        V4       Uu. uF  pRWD3,          NK  	  up4      pRP                  \        ^V4       Uu. uF  pRWD3,          NK  	  up4      pV P                  RW%V^ 3,          4       R# u upi u upi )z:
Like C lookup, but the first index is optimized instead.
r?  r   r8  r9  r:  r@  NrA  r;  s   &&&&   r   r   r     s     
QwDtKLyyuRyAy!*v--yAB5B<H<a[A611<HIOSW_eghRiij BHs   B$-B)c                     V P                   '       d   R # V P                  '       d   R# V P                  '       g   V P                  '       d   RpMRpWP	                  4       ,           # )objectptrnn_r  )is_pyobjectrJ   
is_typedefis_struct_or_unionspecialization_name)rI   r=   s   & r   mangle_dtype_namerK  '  sR     	u777FF11333r+   c                   \        V4      pRV,          pRV,          pVP                  '       d   R# Vf   VP                  4       pV^ 8:  d   Q hW@P                  P                  9  EdU   V P                  P                  P                  V4       V P                  R,          p. pVP                  '       d<   VP                  '       d*   VP                  VP                  4       VP                  pK;  VP                  ;'       d    VP                  4       pVP                  4       p	VP                  4       '       d   RpEMSVP                  '       Ed?   VP                  p
VP                   '       d   V
P"                  p
V
P$                  p\'        V4      ^ 8  g   Q hV Uu. uF   p\)        WP*                  V^,
          4      NK"  	  ppVP-                  RV,          RR7       VP                   '       d   VP.                  P                  4       pMVP                  4       p\1        W4       F=  w  rVP-                  R	V: R
VP2                  : RV: RVP4                  : R2	RR7       K?  	  VP-                  RRR7       VP-                  RRR7       MQ h\7        V4      pRpRpV\8        P:                  J d   RV	,          pRpMVP<                  '       d   RV	,          pRV,          pMwV'       g   VP>                  '       d   RpMZVP@                  '       d   RpMEVP                  '       d   RpVPB                  '       d   RpMVPD                  '       d   RpMQ T4       hRpTTYYRPG                  V Uu. uF  p\7        V4      NK  	  up4      ;'       g    R\'        V4      VVV3	pVP-                  VV,          RR7       V# u upi u upi )aV  
Output the run-time type information (__Pyx_TypeInfo) for given dtype,
and return the name of the type info struct.

Structs with two floats of the same size are encoded as complex numbers.
One can separate between complex numbers declared as struct or with native
encoding by inspecting to see if the fields field of the type is
filled in.
z__Pyx_TypeInfo_%sz__Pyx_StructFields_%sz<error>typeinfoNULLz'static const __Pyx_StructField %s[] = {T)safez  {&z, "z", offsetof(r   z)},z  {NULL, NULL, 0}z};0z__PYX_IS_UNSIGNED(%s)z'H'z%s ? 'U' : 'I'z'C'z'R'z'S'__PYX_BUF_FLAGS_PACKED_STRUCTz'O'zRstatic const __Pyx_TypeInfo %s = { "%s", %s, sizeof(%s), { %s }, %s, %s, %s, %s };)$rK  is_errorr   r   r   r   is_arrayr   size	base_typerI  can_be_complexr   is_simple_buffer_dtype	is_structr%   is_cv_qualifiedbase_type_scopevar_entriesrD   r   r7   r   cv_base_typer   r/   r6   strr   c_char_typeis_int
is_complexis_floatpackedrG  r   )r   rI   maxdepth
namesuffixr/   structinfo_nametypecode
arraysizescomplex_possibledeclcodestruct_scopefieldsftypesstruct_typerM  repr   is_unsigned	typegroupr   tups   &&&                   r   r   r   5  s/    #5)J+D-
:O~~~i E$>$>$@1}u##111&&**40##J/
>>>...!!%**- 33NN8L8L8N//1''))$O___ ;;L$$$+;;!--Fv;?"?$&$ 0ffhlK$  &NNDV]aNb$$$#00GGI#::<"61 (!&&+qww HNR  T  2 NN.TN:NN4dN+5%jJ***1H<KI\\\1H<K(;6I!1!1!1I^^^I___I|||7I%5LS/yy*5*Q#a&*56==#s:+u. 	x#~D1Kc&Z 6s   &O 1Oc                 n    Vf   \         P                  ! V R3/ VB # \        P                  ! V R3RV/VB # )NzBuffer.ccontext)r   loadr   )util_code_namert  kwargss   &&,r   load_buffer_utilityrx    s=    
EfEE!&&~z]7]V\]]r+   )max_dimsBufferStructDeclare)rt  BufferFormatStructsBufferIndexErrorBufferIndexErrorNogilBufferFallbackErrorBufferGetAndValidateBufferFormatCheckTypeInfoToFormatr   )rI   rK   rn   ro   rp   )NTr.   ):Visitorr   r   Errorsr   r   r   Coder   r  r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rx   r   r   r   r   r   r   r   r   r   r  r,  r$   r   r   r   r   rK  r   rx  dictrL   rt  r.  buffer_formats_declare_coder$  r#  r  r   buffer_format_check_code_typeinfo_to_format_code r+   r   <module>r     sx   $ "   * 1     U? Ut G1ff.@$PUV"# 6 , 3 l4B'>JD DN %
&L2l
1EP?AD5 *\p	k4]~^ //
001FPWX 12GH  ,,>? ,-DE 01FG *+A7S ./BGT  //AB r+   