§
    ƒÛg»» ã            
       óP-  — d Z ddlZddlZddlZddlmZ ddlmZ ddlZ	ddl
mZmZ ddlmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZ ddlmZmZmZ dd	lm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* dd
l+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z< ddl/m=Z= ddl>m?Z@mAZBmCZCmDZDmEZE d„ ZFd„ ZGd„ ZHd„ ZId„ ZJd„ ZKd„ ZLd„ ZMd„ ZN	 �dJd„ZOd„ ZPd„ ZQ e1eQ¦  «        d„ ¦   «         ZR e dejS        ¦  «        d „ ¦   «         ZTd!„ ZU e d"ejV        ¦  «         e&e*jW        ¦  «        d#„ ¦   «         ¦   «         ZX	 �dJd$„ZYd%„ ZZd&„ Z[ e ej\        ejS        ej]        ¦  «         e ej\        ejS        ej^        ¦  «        d'„ ¦   «         ¦   «         Z_ e ej\        ejS        ej`        ¦  «        d(„ ¦   «         Za e ejb        ejS        ejc        ejc        ¦  «        d)„ ¦   «         Zd e eeejS        ¦  «        d*„ ¦   «         Zf e d+ejg        ¦  «        d,„ ¦   «         Zh e d-ejg        ejc        ¦  «        d.„ ¦   «         Zi G d/„ d0ej¦  «        Zk G d1„ d2ek¦  «        Zl G d3„ d4ek¦  «        Zm G d5„ d6ek¦  «        Zn G d7„ d8ek¦  «        Zo G d9„ d:ek¦  «        Zp G d;„ d<ej¦  «        Zqd=„ Zr e ej\        ejS        ejg        ¦  «        d>„ ¦   «         Zsd?„ Ztd@„ ZudA„ ZvdB„ ZwdC„ ZxdD„ ZydE„ ZzdF„ Z{e3dG„ ¦   «         Z|e3dH„ ¦   «         Z}e0dI„ ¦   «         Z~dJ„ Z e1e	j€        ¦  «        dK„ ¦   «         Z�e0dL„ ¦   «         Z‚ e1e	jƒ        ¦  «        dM„ ¦   «         Z„ e1e	j…        ¦  «        dN„ ¦   «         Z†dO„ Z‡dP„ Zˆ e dQejg        ¦  «        dR„ ¦   «         Z‰dS„ ZŠ e dQejg        ej`        ¦  «        dT„ ¦   «         Z‹ e dQejg         ejŒ        ejc        ¦  «        ¦  «        dU„ ¦   «         Z� e1e	jŽ        ¦  «        �dJdV„¦   «         Z� e!ejg        dW¦  «        dX„ ¦   «         Z� e1e	j‘        ¦  «        �dKdZ„¦   «         Z’ e1e	j“        ¦  «        �dKd[„¦   «         Z” e1e	j•        ¦  «        �dLd]„¦   «         Z–d^„ Z—d_„ Z˜ e d`ejg        ej`        ¦  «        da„ ¦   «         Z™ e d`ejg         ejŒ        ejc        ¦  «        ¦  «        db„ ¦   «         Zš e1e	j›        ¦  «        dc„ ¦   «         Zœ e1e	j�        ¦  «        dd„ ¦   «         Zž e1e	jŸ        ¦  «        �dJde„¦   «         Z  e dfejg        ¦  «        dg„ ¦   «         Z¡ e e	j¢        ejg        ¦  «        dh„ ¦   «         Z£ e diejg        ¦  «        dj„ ¦   «         Z¤e0dk„ ¦   «         Z¥e0dl„ ¦   «         Z¦ e1e	j§        ¦  «        �dJdm„¦   «         Z¨ e2ejg        dn¦  «        �dMdo„¦   «         Z©dp„ Zª e1e	j«        ¦  «        dq„ ¦   «         Z¬ e1e	j­        ¦  «        dr„ ¦   «         Z® e1e	j¯        ¦  «        ds„ ¦   «         Z°e0dt„ ¦   «         Z± ej2        ejg        du¦  «        dv„ ¦   «         Z²e3dw„ ¦   «         Z³dx„ Z´ e1e´dy¬z¦  «        d{„ ¦   «         Zµ e d|ejg        ej¶        ¦  «        d}„ ¦   «         Z· e!ejg        d~¦  «        d„ ¦   «         Z¸ e!ejg        d€¦  «         e!ej¹        d€¦  «        d�„ ¦   «         ¦   «         Zº e!ejg        d‚¦  «         e!ej¹        d‚¦  «        dƒ„ ¦   «         ¦   «         Z» e!ejg        d„¦  «         e!ej¹        d„¦  «        d…„ ¦   «         ¦   «         Z¼ e!ejg        d†¦  «        d‡„ ¦   «         Z½ e!ejg        dˆ¦  «         e!ej¹        dˆ¦  «        d‰„ ¦   «         ¦   «         Z¾ e!ejg        dŠ¦  «         e!ej¹        dŠ¦  «        d‹„ ¦   «         ¦   «         Z¿ e!ej¹        dŒ¦  «        d�„ ¦   «         ZÀ e!ej¹        dŽ¦  «        d�„ ¦   «         ZÁ e!ej¹        d�¦  «        d‘„ ¦   «         ZÂ e!ej¹        d’¦  «        d“„ ¦   «         ZÃ e!ejg        d”¦  «        d•„ ¦   «         ZÄ e!ejÅ        d–¦  «        d—„ ¦   «         ZÆ e$ejÅ        ejÇ        ¦  «         e$ejÅ        ejÈ        ¦  «        d˜„ ¦   «         ¦   «         ZÉd™„ ZÊ e!ejg        dš¦  «        d›„ ¦   «         ZË e!ejÌ        dŒ¦  «         e!ejÌ        dŽ¦  «        dœ„ ¦   «         ¦   «         ZÍ e!ejÌ        d�¦  «        d�„ ¦   «         ZÎ e!ejg        dž¦  «        dŸ„ ¦   «         ZÏ e!ejg        d ¦  «        d¡„ ¦   «         ZÐd¢„ ZÑ e2ejg        d£¦  «         e2ejg        d¤¦  «        d¥„ ¦   «         ¦   «         ZÒd¦„ ZÓ  e!ejÔ        d§¦  «        eÓ¦  «           e!ejÔ        d¨¦  «        eÓ¦  «          e d©ejÕ        ejc        ¦  «        dª„ ¦   «         ZÖ e"ejg        ¦  «        d«„ ¦   «         Z× e d©ejg        ej.        ¦  «        d¬„ ¦   «         ZØ e"ejÙ        ¦  «        d­„ ¦   «         ZÚ e#ejÙ        ¦  «        d®„ ¦   «         ZÛ e d©ejÙ        ej.        ¦  «        d¯„ ¦   «         ZÜ e d©ejÙ        ejÝ        ¦  «        d°„ ¦   «         ZÞ e d±ejÙ        ej.        ejc        ¦  «        d²„ ¦   «         Zß e d±ejÙ        ejÝ        ejc        ¦  «        d³„ ¦   «         Zà e%ejg        ¦  «        d´„ ¦   «         Zá e%ejÙ        ¦  «        dµ„ ¦   «         Zâ e%ejã        ¦  «        d¶„ ¦   «         Zä e ejå        ejg        ejg        ¦  «        d·„ ¦   «         Zæ e4ejg        d¸¦  «        d¹„ ¦   «         Zçdº„ Zèd»„ Zé	 	 �dMd¼„Zê	 �dJd½„Zëd¾„ Zìd¿„ ZídÀ„ Zî e!ejg        dÁ¦  «        dÂ„ ¦   «         Zï e d"ejð        ¦  «         e&e*jW        ¦  «        dÃ„ ¦   «         ¦   «         Zñ e ej\        ejð        ej]        ¦  «        dÄ„ ¦   «         Zò e ejb        ejð        ej]        ejc        ¦  «        dÅ„ ¦   «         Zó e eeejð        ¦  «        dÆ„ ¦   «         Zô e e	jõ        ejg        ¦  «        dÇ„ ¦   «         Zö e d"ej÷        ¦  «         e&e*jW        ¦  «        dÈ„ ¦   «         ¦   «         Zø e e ejŒ        ej]        ¦  «        ¦  «         e e	jù         ejŒ        ej]        ¦  «        ¦  «        dÉ„ ¦   «         ¦   «         Zú e eej`        ¦  «         e e	jù        ej`        ¦  «        dÊ„ ¦   «         ¦   «         Zû e d"ejü        ¦  «         e&e*jW        ¦  «        dË„ ¦   «         ¦   «         Zý e e	jþ        ejc        ¦  «        dÌ„ ¦   «         Zÿ e d"e�j         ¦  «         e&e*jW        ¦  «        dÍ„ ¦   «         ¦   «         �ZdÎ„ �Z e=ejg        dÏ¦  «        dÐ„ ¦   «         �ZdÑ„ �Ze3dÒ„ ¦   «         �ZdÓ„ �ZdÔ„ �ZdÕ„ �ZdÖ„ �Z	e3d×„ ¦   «         �Z
 e1e	�j        ¦  «        �efdØ„¦   «         �Ze3dÙ„ ¦   «         �Z e1e	�j        ¦  «        �dJdÚ„¦   «         �Ze3dÛ„ ¦   «         �Z e2ejg        dÜ¦  «        dÝ„ ¦   «         �Z e1e	�j        ¦  «        �efdÞ„¦   «         �Z e1e	�j        ¦  «        �dJdß„¦   «         �Z e1e	�j        ¦  «        �dJdà„¦   «         �Z e1e	�j        ¦  «        �dJdá„¦   «         �Z e1e	�j        ¦  «        �dJdâ„¦   «         �Z e1e	�j        ¦  «        �dJdã„¦   «         �Z e1e	�j        ¦  «        �dJdä„¦   «         �Z då„ �Z! ej1        �e!¦  «        dæ„ ¦   «         �Z" ej1        e	�j#        ¦  «        dd�efdç„¦   «         �Z$ e1e	�j%        ¦  «        �dNdè„¦   «         �Z& e1e	�j'        ¦  «        �dNdé„¦   «         �Z( e1e	�j)        ¦  «         e2ejg        dê¦  «        dë„ ¦   «         ¦   «         �Z*dì„ �Z+ e1e	�j,        ¦  «        �dMdí„¦   «         �Z- e1e	�j.        ¦  «        �dKdî„¦   «         �Z/dï„ �Z0e3dð„ ¦   «         �Z1 e dñejg        ¦  «        dò„ ¦   «         �Z2 e1e	�j3        ¦  «        dó„ ¦   «         �Z4dô„ �Z5e3dõ„ ¦   «         �Z6 e1e	�j7        ¦  «        dö„ ¦   «         �Z8 e1e	�j9        ¦  «        d÷„ ¦   «         �Z: e døejg        ej¶        ¦  «         e døejg        ej.        ¦  «        dù„ ¦   «         ¦   «         �Z;e3dú„ ¦   «         �Z< e1e	�j=        ¦  «        �efdû„¦   «         �Z> e1e¦  «        �dJdü„¦   «         �Z? e1e¦  «        �dJdý„¦   «         �Z@dþ„ �ZAdÿ„ �ZB�d „ �ZC�d„ �ZD�d„ �ZE�d„ �ZF�d„ �ZG�d„ �ZHe3�d„ ¦   «         �ZI e1e	�jJ        ¦  «        �dJ�d„¦   «         �ZK�d„ �ZL�d	„ �ZM�d
„ �ZN�d„ �ZOe3�d„ ¦   «         �ZP e1e	�jO        ¦  «        �d„ ¦   «         �ZQ�d„ �ZR�d„ �ZS e1e	�jT        ¦  «        �d„ ¦   «         �ZU e1e	�jV        ¦  «        �d„ ¦   «         �ZW e1e	�jX        ¦  «        �d„ ¦   «         �ZY�d„ �ZZ�d„ �Z[�d„ �Z\�d„ �Z]e3�d„ ¦   «         �Z^ e1e	�j_        ¦  «        �dN�d„¦   «         �Z`�d„ �Zae3�d„ ¦   «         �Zb e1e	�jc        ¦  «        �d„ ¦   «         �Zd�d„ �Zee3�d„ ¦   «         �Zf e1e	�jg        ¦  «        �dN�d„¦   «         �Zh�d„ �Zie3�d „ ¦   «         �Zj e1e	�jk        ¦  «        �d!„ ¦   «         �Zle3�d"„ ¦   «         �Zm e1e	�jn        ¦  «        �d#„ ¦   «         �Zoe3�d$„ ¦   «         �Zp e1e	�jq        ¦  «        �d%„ ¦   «         �Zr ej2        ejg        �d&¦  «        �d'„ ¦   «         �Zs ej2        ejg        �d(¦  «        �d)„ ¦   «         �Zt e1e	�ju        ¦  «        �d*„ ¦   «         �Zv e1e	�jw        ¦  «        �d+„ ¦   «         �Zxe3�d,„ ¦   «         �Zy e1e	�jz        ¦  «        �d-„ ¦   «         �Z{ e1e	�j|        ¦  «        �dN�d.„¦   «         �Z} e1e	�j~        ¦  «        �dN�d/„¦   «         �Z e1e	�j€        ¦  «        �d0„ ¦   «         �Z� e1e	�j‚        ¦  «        �d1„ ¦   «         �Zƒ e1e	�j„        ¦  «        �d2„ ¦   «         �Z…i �Z†�d3„ �Z‡�dO�d5„�Zˆ e �d6ejg        ¦  «        �d7„ ¦   «         �Z‰ e1e	�jŠ        ¦  «        �d8„ ¦   «         �Z‹ e �d9ejg        ej.        ¦  «         e e	�jŒ        ejg        ej.        ¦  «        �d:„ ¦   «         ¦   «         �Z� e$ejg        ejg        ¦  «        �d;„ ¦   «         �ZŽ e$ejg        e�j�        ¦  «         e$ejg        e�j�        ¦  «         e$ejg        ej]        ¦  «         e$ejg        e�j‘        ¦  «         e$ejg        e�j’        ¦  «         e$ejg        e�j“        ¦  «         e$ejg        e�j”        ¦  «        �d<„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z• e$ejg        e�j�        ¦  «        �d=„ ¦   «         �Z–�d>„ �Z— e�j˜        �e—¦  «        �d?„ ¦   «         �Z™ e �e—ejg        ej`        ej`        ¦  «        �d@„ ¦   «         �Zš ej1        e	�j›        �jœ        �j�        ¦  «        �dP�dA„¦   «         �Z� ej1        e	�j›        �jœ        �jž        ¦  «        �dJ�dB„¦   «         �Zž e1�eŸ¦  «        �dC„ ¦   «         �Z  e1e	�j¡        ¦  «        �dD„ ¦   «         �Z¢e0�dE„ ¦   «         �Z£ e1e	�j¤        ¦  «        �dF„ ¦   «         �Z¥ e1e	�j¦        ¦  «        �dQ�dI„¦   «         �Z§dS (R  z[
Implementation of operations on Array objects and objects supporting
the buffer protocol.
é    N)Úir)ÚConstant)ÚpndindexÚliteral_unroll)ÚtypesÚtypingÚerrorsÚcgutilsÚ	extending)Úas_dtypeÚ
from_dtypeÚcarrayÚfarrayÚis_contiguousÚ
is_fortranÚcheck_is_integerÚtype_is_scalar)Útype_can_asarrayÚis_nonelikeÚnumpy_version)Úlower_builtinÚlower_getattrÚlower_getattr_genericÚlower_setattr_genericÚ
lower_castÚlower_constantÚiternext_implÚimpl_ret_borrowedÚimpl_ret_new_refÚimpl_ret_untrackedÚRefType)Ú	signature)ÚStringLiteral)Úregister_jitableÚoverloadÚoverload_methodÚ	intrinsicÚoverload_attribute)Ú	quicksortÚ	mergesort)Úslicing)Útuple_setitemÚbuild_full_slice_tuple)Úoverload_classmethod)Úparse_dtypeÚparse_shapeÚ_parse_nested_sequenceÚ_sequence_of_arraysÚ_choose_concatenation_layoutc                 óº   — t          |j        |¦  «        t          |j        |¦  «        g}| j                             |¦  «        }|                     d|¦  «         dS )zz
    Set the "range" metadata on a load instruction.
    Note the interval is in the form [lower_bound, upper_bound).
    ÚrangeN)r   ÚtypeÚmoduleÚadd_metadataÚset_metadata)ÚbuilderÚloadÚlower_boundÚupper_boundÚrange_operandsÚmds         úG/granary/edev/quantum/lib/python3.11/site-packages/numba/np/arrayobj.pyÚset_range_metadatarA   +   sZ   € õ
 ˜tœy¨+Ñ6Ô6Ý˜tœy¨+Ñ6Ô6ð8€Nà	Œ×	$Ò	$ ^Ñ	4Ô	4€BØ×Ò�g˜rÑ"Ô"Ð"Ð"Ð"ó    c                 óT   — d|j         j        dz
  z  dz
  }t          | |d|¦  «         dS )zF
    Mark the result of a load instruction as positive (or zero).
    é   r   N)r6   ÚwidthrA   )r:   r;   r=   s      r@   Úmark_positiverF   6   s6   € ð ˜œœ¨1Ñ,Ñ-°Ñ2€KÝ�w  a¨Ñ5Ô5Ð5Ð5Ð5rB   c                 ó|   ‡ ‡‡‡‡— ‰ j         Št          j        ‰¦  «        Š‰j        Š G ˆˆ ˆˆˆfd„d‰¦  «        Š‰S )zë
    Return the Structure representation of the given *array_type*
    (an instance of types.ArrayCompatible).

    Note this does not call __array_wrap__ in case a new array structure
    is being created (rather than populated).
    c                   óB   •‡ — e Zd Zˆˆ ˆˆfd„Zeˆˆfd„¦   «         Zˆ xZS )úmake_array.<locals>.ArrayStructc                 ó€  •— t          ‰
‰	¦  «        }	 | j                             d|¦  «        }n3# t          $ r& t	          ‰| ¦  «                             |¦  «        cY S w xY w| j        j        ‰	         }|                      |¦  «        }|€t          j	        | j
        |d¬¦  «        }n|} || j
        |f¦  «        }||fS )NÚ	__array__T)Úzfill)r"   Ú_contextÚget_functionÚNotImplementedErrorÚsuperÚ
_make_refsÚdata_model_managerÚ_get_be_typer
   Úalloca_onceÚ_builder)ÚselfÚrefÚsigÚ
array_implÚ	datamodelÚbe_typeÚ	outer_refÚArrayStructÚ	__class__Ú
array_typeÚreal_array_types          €€€€r@   rQ   z*make_array.<locals>.ArrayStruct._make_refsL   sç   ø€ Ý˜O¨ZÑ8Ô8ˆCð@Ø!œ]×7Ò7¸ÀSÑIÔI�
�
øÝ&ð @ð @ð @Ý˜[¨$Ñ/Ô/×:Ò:¸3Ñ?Ô?Ð?Ð?Ð?ð@øøøð œÔ8¸ÔDˆIØ×'Ò'¨	Ñ2Ô2ˆGØˆ{Ý#Ô/°´¸wØ6:ð<ñ <ô <�	�	ð  �	ð �*˜Tœ]¨Y¨LÑ9Ô9ˆCØ˜c�>Ð!s   “/ ¯-AÁAc                 óh  •— | j         }‰dk    r‰                     | d¦  «        S |                      d¦  «        }g }t          ‰¦  «        D ]S}t	          j        ||d|¦  «        }|                     |¦  «        }|                     |¦  «         t          ||¦  «         ŒTt	          j	        ||¦  «        S )z\
            Override .shape to inform LLVM that its elements are all positive.
            r   Úshape)
rU   Ú__getattr__Ú_get_ptr_by_namer5   r
   Úgep_inboundsr;   ÚappendrF   Ú
pack_array)	rV   r:   ÚptrÚdimsÚiÚdimptrr;   ÚbaseÚndims	          €€r@   rb   z%make_array.<locals>.ArrayStruct.shape`   s¹   ø€ ð
 ”mˆGØ�qŠyˆyØ×'Ò'¨¨gÑ6Ô6Ð6ð ×'Ò'¨Ñ0Ô0ˆCØˆDÝ˜4‘[”[ð -ð -�Ý Ô-¨g°s¸A¸qÑAÔA�Ø—|’| FÑ+Ô+�Ø—’˜DÑ!Ô!Ð!Ý˜g tÑ,Ô,Ð,Ð,åÔ% g¨tÑ4Ô4Ð4rB   )Ú__name__Ú
__module__Ú__qualname__rQ   Úpropertyrb   Ú__classcell__)r^   r]   r_   rl   rm   r`   s   @€€€€€r@   r]   rI   J   sr   øø€ € € € € ð	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð( 
ð	5ð 	5ð 	5ð 	5ð 	5ñ 
Œð	5ð 	5ð 	5ð 	5ð 	5rB   r]   )Úas_arrayr
   Úcreate_struct_proxyrm   )r_   r]   rl   rm   r`   s   `@@@@r@   Ú
make_arrayru   >   sz   øøøøø€ ð !Ô)€OÝÔ& Ñ7Ô7€DØÔ€Dð+5ð +5ð +5ð +5ð +5ð +5ð +5ð +5ð +5ð +5ð +5�dñ +5ô +5ð +5ðZ ÐrB   c                 ó`   — |                       |j        ¦  «        }|                      |¦  «        S )zB
    Return the item size for the given array or buffer type.
    )Úget_data_typeÚdtypeÚget_abi_sizeof)Úcontextr_   Úlltys      r@   Úget_itemsizer|   z   s.   € ð × Ò  Ô!1Ñ2Ô2€DØ×!Ò! $Ñ'Ô'Ð'rB   c                 óT   — |j         rdnd}|                      ||j        ||¬¦  «        S )z3
    Load the item at the given array pointer.
    NrD   ©Úalign)ÚalignedÚunpack_valuerx   )rz   r:   Úarraytyrh   r   s        r@   Ú	load_itemrƒ   ‚   s<   € ð ”OÐ*ˆDˆD¨€EØ×Ò ¨¬¸Ø&+ð  ñ -ô -ð -rB   c                 óV   — |j         rdnd}|                      ||j        |||¬¦  «        S )z4
    Store the item at the given array pointer.
    NrD   r~   )r€   Ú
pack_valuerx   )rz   r:   r‚   Úvalrh   r   s         r@   Ú
store_itemr‡   ‹   s5   € ð ”OÐ*ˆDˆD¨€EØ×Ò˜g w¤}°c¸3ÀeÐÑLÔLÐLrB   c                 óÊ   — |j         r9|                      |||t          j        ¦  «        }t	          j        |||¦  «        }n"|                      |||t          j        ¦  «        }|S )zM
    Fix the integer index' type and value for the given dimension size.
    )ÚsignedÚcastr   Úintpr+   Ú	fix_indexÚuintp)rz   r:   ÚidxtyÚidxÚsizeÚinds         r@   Úfix_integer_indexr’   “   s[   € ð „|ð =Ø�lŠl˜7 C¨µ´
Ñ;Ô;ˆÝÔ ¨¨dÑ3Ô3ˆˆà�lŠl˜7 C¨µ´Ñ<Ô<ˆØ€JrB   c                 ó
  — t          |t          j        ¦  «        rf|j        dk    r[t          |j        t          j        ¦  «        sJ ‚ t          |¦  «        | ||¦  «        }t          | |||j        ¦  «        }|j        |fS ||fS )zS
    Normalize the index type and value.  0-d arrays are converted to scalars.
    r   )	Ú
isinstancer   ÚArrayrm   rx   ÚIntegerru   rƒ   Údata)rz   r:   rŽ   r�   ÚidxaryÚidxvals         r@   Únormalize_indexrš   Ÿ   sƒ   € õ �%�œÑ%Ô%ð ¨%¬*¸ª/¨/Ý˜%œ+¥u¤}Ñ5Ô5Ð5Ð5Ð5Ø"•˜EÑ"Ô" 7¨G°SÑ9Ô9ˆÝ˜7 G¨U°F´KÑ@Ô@ˆØŒ{˜FÐ"Ð"à�cˆzÐrB   c                 óz   ‡ ‡— t          |¦  «        r't          ˆˆ fd„t          ||¦  «        D ¦   «         Ž \  }}||fS )z^
    Same as normalize_index(), but operating on sequences of
    index types and values.
    c                 ó:   •— g | ]\  }}t          ‰‰||¦  «        ‘ŒS © )rš   )Ú.0rŽ   r�   r:   rz   s      €€r@   ú
<listcomp>z%normalize_indices.<locals>.<listcomp>²   s@   ø€ ð %'ð %'ð %'á)3¨°õ &5°W¸gÀuØ58ñ&:ô &:ð %'ð %'ð %'rB   )ÚlenÚzip)rz   r:   Úindex_typesÚindicess   ``  r@   Únormalize_indicesr¤   ¬   se   øø€ õ
 ˆ7�|„|ð (Ý"ð %'ð %'ð %'ð %'ð %'å7:¸;ÈÑ7PÔ7Pð%'ñ %'ô %'ð  (Ñˆ�Wð ˜ÐÐrB   c                 ót  — | j         }| j        }| j        }	t          j        t          j        dd¦  «        }
|j        |
         }t          |j        ¦  «        }t          |	j        ¦  «        }||z  |k    r:||z
  }d| j	        › dt          |¦  «        dk    rdnd› d|› d�}t          |¦  «        ‚|€6t          |                     |	                     d
¦  «        ¦  «        d	¦  «        }|                     t          j        ¦  «        }t!          |t"          t$          f¦  «        rt'          j        |||¦  «        }t!          |t"          t$          f¦  «        rt'          j        |||¦  «        }t!          |t*          ¦  «        r ||¦  «        }t-          |||||¬¦  «        }|€:t          |                     |	                     d¦  «        ¦  «        d	¦  «        |d<   n||d<   |                     t          j        d¦  «        }t'          j        |||j        j        ¦  «        }|D ]}|                     ||dg¬¦  «        }Œ||d<   t          |                     ¦   «         ¦  «        }||k    r%t          d                     ||z
  ¦  «        ¦  «        ‚|                     ¦   «         D ]\  }}t?          | ||¦  «         Œ| S )z¤
    Helper function for populating array structures.
    This avoids forgetting to set fields.

    *shape* and *strides* can be Python tuples or LLVM arrays.
    rD   ÚCzThe datamodel for type z is missing fieldÚsÚ ú ú.NÚmeminfo)rb   Ústridesr—   Úitemsizer«   ÚparentÚnsw©ÚflagsÚnitemszmissing {0}) rM   rU   Ú
_datamodelr   r•   Úfloat64rR   ÚsetÚ_fieldsÚ_fe_typer    Ú
ValueErrorr   Úget_value_typeÚget_typer‹   r”   ÚtupleÚlistr
   rg   ÚintÚdictÚget_constantÚunpack_tupler6   ÚcountÚmulÚkeysÚformatÚitemsÚsetattr)Úarrayr—   rb   r¬   r­   r«   r®   rz   r:   rZ   Ústandard_arrayÚstandard_array_type_datamodelÚrequired_fieldsÚdatamodel_fieldsÚmissingÚmsgÚintp_tÚattrsr²   Úunpacked_shapeÚaxlenÚ
got_fieldsÚkÚvs                           r@   Úpopulate_arrayrÕ   ¹   sí  € ð Œn€GØŒn€GØÔ €Iõ ”[¥¤°°3Ñ7Ô7€NØ$+Ô$>¸~Ô$NÐ!ÝÐ7Ô?Ñ@Ô@€OÝ˜9Ô,Ñ-Ô-Ðð 	Ð*Ñ*¨Ò>Ð>Ø!Ð$4Ñ4ˆðD¨¬ð Dð DÝ! '™lœl¨QÒ.Ð.�s�s°BðDð DØ9@ðDð Dð Dˆå˜‰oŒoÐà€Ý˜7×1Ò1Ø×Ò˜yÑ)Ô)ñ+ô +Ø,0ñ2ô 2ˆð ×#Ò#¥E¤JÑ/Ô/€FÝ�%�%¥˜Ñ'Ô'ð ;ÝÔ" 7¨E°6Ñ:Ô:ˆÝ�'�E¥4˜=Ñ)Ô)ð ?ÝÔ$ W¨g°vÑ>Ô>ˆÝ�(�CÑ Ô ð $Ø�6˜(Ñ#Ô#ˆå�uØ ØØ"Ø ð	#ñ #ô #€Eð €~Ý" 7×#9Ò#9Ø×Ò˜xÑ(Ô(ñ$*ô $*Ø+/ñ1ô 1ˆˆh‰ˆð !ˆˆh‰à×!Ò!¥%¤*¨aÑ0Ô0€FÝÔ)¨'°5¸%¼*Ô:JÑKÔK€Nàð ;ð ;ˆØ—’˜V U°5°'�Ñ:Ô:ˆˆØ€Eˆ(�Oõ �U—Z’Z‘\”\Ñ"Ô"€JØ�_Ò$Ð$Ý˜×-Ò-¨oÀ
Ñ.JÑKÔKÑLÔLÐLð —’‘”ð ð ‰ˆˆ1Ý��q˜!ÑÔÐÐà€LrB   c                 óR  — |j         }|j        }|                     t          j        d¦  «        }t          j        ||j        | j        ¦  «        }|D ]}| 	                    ||dg¬¦  «        }Œ||_
        |                     t          j        t          || ¦  «        ¦  «        |_        dS )z‡
    Update some auxiliary information in *array* after some of its fields
    were changed.  `itemsize` and `nitems` are updated.
    rD   r¯   r°   N)rM   rU   r¿   r   r‹   r
   rÀ   rb   rm   rÂ   r²   r|   r­   )ÚarytyrÇ   rz   r:   r²   rÐ   rÑ   s          r@   Úupdate_array_inforØ   þ   s¢   € ð
 Œn€GØŒn€Gð ×!Ò!¥%¤*¨aÑ0Ô0€FÝÔ)¨'°5´;ÀÄ
ÑKÔK€NØð ;ð ;ˆØ—’˜V U°5°'�Ñ:Ô:ˆˆØ€E„Là×)Ò)­%¬*Ý*6°wÀÑ*FÔ*FñHô H€E„N€N€NrB   c                 ó   — t          ¦   «         ‚)z/Constrain axis values to valid positive values.©rO   )Ú	func_nameÚarg_namerm   Úaxiss       r@   Únormalize_axisrÞ     s   € å
Ñ
Ô
ÐrB   c                 óÚ   ‡— t          | t          ¦  «        st          j        d¦  «        ‚t          |t          ¦  «        st          j        d¦  «        ‚| j        › d|j        › d�Šˆfd„}|S )Nz func_name must be a str literal.zarg_name must be a str literal.z: Argument z* out of bounds for dimensions of the arrayc                 óT   •— |dk     r||z  }|dk     s||k    rt          ‰¦  «        ‚|S ©Nr   ©r¸   )rÛ   rÜ   rm   rÝ   rÍ   s       €r@   Úimplz&normalize_axis_overloads.<locals>.impl"  s7   ø€ Ø�!Š8ˆ8Ø�D‰LˆDØ�!Š8ˆ8�t˜t’|�|Ý˜S‘/”/Ð!àˆrB   )r”   r#   r	   ÚTypingErrorÚliteral_value)rÛ   rÜ   rm   rÝ   rã   rÍ   s        @r@   Únormalize_axis_overloadsræ     s˜   ø€ å�i¥Ñ/Ô/ð EÝÔ Ð!CÑDÔDÐDÝ�h¥Ñ.Ô.ð DÝÔ Ð!BÑCÔCÐCð Ô"ð 	4ð 	4¨xÔ/Eð 	4ð 	4ð 	4ð ð
ð ð ð ð ð €KrB   Úgetiterc                 óx  — |j         \  }|\  }|                      ||j        ¦  «        }|                      t          j        d¦  «        }t          j        ||¦  «        }||_        ||_	        | j
        r| j                             |||¦  «         |                     ¦   «         }	t          | ||j        |	¦  «        }
|
S rá   )ÚargsÚmake_helperÚreturn_typer¿   r   r‹   r
   Úalloca_once_valueÚindexrÇ   Ú
enable_nrtÚnrtÚincrefÚ	_getvaluer   )rz   r:   rX   ré   r‚   rÇ   ÚiterobjÚzeroÚindexptrÚresÚouts              r@   Úgetiter_arrayr÷   -  s´   € à”�I€WØ�G€Uà×!Ò! '¨3¬?Ñ;Ô;€Gà×Ò¥¤
¨AÑ.Ô.€DÝÔ(¨°$Ñ7Ô7€Hà€G„MØ€G„Mð Ôð 4ØŒ×Ò˜7 G¨UÑ3Ô3Ð3à
×
Ò
Ñ
Ô
€Cõ ˜7 G¨S¬_¸cÑ
BÔ
B€CØ€JrB   c           
      óÐ  — t          j        ||j        |j        ¬¦  «        }t          j        ||j        |j        ¬¦  «        }|                     |d         |¦  «        }t          j        ||j        |¦  «        }	|dd…         }
|dd…         }t          |t          j
        ¦  «        r*t          | |||||	|
|¦  «        }|                     ¦   «         S |
rJ ‚t          | |||	¦  «        S )z1 Evaluate `ary[idx]`, where idx is a single int. ©rÁ   r   rD   N)r
   rÀ   rb   rm   r¬   rÂ   Úpointer_addr—   r”   r   ÚBufferÚ	make_viewrñ   rƒ   )rz   r:   rë   r×   Úaryr�   Úshapesr¬   ÚoffsetÚdataptrÚview_shapesÚview_stridesÚretarys                r@   Ú_getitem_array_single_intr  E  sé   € õ Ô! '¨3¬9¸E¼JÐGÑGÔG€FÝÔ" 7¨C¬K¸u¼zÐJÑJÔJ€GØ�[Š[˜ œ SÑ)Ô)€FÝÔ! '¨3¬8°VÑ<Ô<€GØ˜˜˜”*€KØ˜1˜2˜2”;€Lå�+�uœ|Ñ,Ô,ð ;å˜7 G¨U°C¸Ø" K°ñ?ô ?ˆà×ÒÑ!Ô!Ð!ð ÐÐÐÝ˜ '¨5°'Ñ:Ô:Ð:rB   Úiternextc           	      ó~  — |j         \  }|\  }|j        }|                      |||¬¦  «        } t          |¦  «        | ||j        ¬¦  «        }	t          j        ||	j        d¬¦  «        \  }
|                     |j	        ¦  «        }| 
                    d||
¦  «        }|                     |¦  «         |                     |¦  «        5  t          | ||j        ||	|¦  «        }|                     |¦  «         t          j        ||¦  «        }|                     ||j	        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©ÚvaluerD   rù   ú<)ré   r_   rê   ru   rÇ   r
   rÀ   rb   r;   rí   Úicmp_signedÚ	set_validÚif_thenr  Ú
yield_typeÚyield_Úincrement_indexÚstore)rz   r:   rX   ré   ÚresultÚitertyÚiterr‚   rò   rý   r²   rí   Úis_validr  Únindexs                  r@   Úiternext_arrayr  Z  s€  € ð Œx�H€VØ�F€TØÔ€Gà×!Ò! '¨6¸Ð!Ñ>Ô>€GØ
�*�WÑ
Ô
˜g w°g´mÐ
DÑ
DÔ
D€CåÔ" 7¨C¬I¸QÐ?Ñ?Ô?�G€Fà�LŠL˜œÑ'Ô'€EØ×"Ò" 3¨¨vÑ6Ô6€HØ
×Ò�XÑÔÐà	�Š˜Ñ	"Ô	"ð -ð -Ý)Ø�W˜fÔ/°¸#¸uñ
ô 
ˆð 	�Š�eÑÔÐÝÔ(¨°%Ñ8Ô8ˆØ�Š�f˜gœmÑ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -s   ÃAD2Ä2D6Ä9D6c           	      óÀ  — |                       t          j        d¦  «        }|                       t          j        d¦  «        }t          j        ||j        |j        ¦  «        }	t          j        ||j        |j        ¦  «        }
g }g }g }t          d„ |D ¦   «         ¦  «        }d}t          ||¦  «        D �].\  }}|t          j
        u r€|j        t          |¦  «        z
  dz   |z   }t          |¦  «        D ]R}|                     |¦  «         |                     |	|         ¦  «         |                     |
|         ¦  «         |dz  }ŒSŒ”t          |t          j        ¦  «        rÁ|                      |||¬¦  «        }t!          j        | |||¦  «         t!          j        |||	|         ¦  «         |                     |j        ¦  «         t!          j        ||¦  «        }t!          j        |||
|         ¦  «        }|                     |¦  «         |                     |¦  «         nºt          |t          j        ¦  «        rOt/          | ||||	|         ¦  «        }|rt          j        | |||	|         |¦  «         |                     |¦  «         nQt3          |¦  «        r0|                     |¦  «         |                     |¦  «         |dz  }nt5          d|›�¦  «        ‚|dz  }�Œ0||j        k    sJ ‚||j        k     rF|                     |	|         ¦  «         |                     |
|         ¦  «         |dz  }||j        k     °Ft          j        | ||||dd¬¦  «        }|||fS )z“
    Perform basic indexing on the given array.
    A (data pointer, shapes, strides) tuple is returned describing
    the corresponding view.
    r   rD   c                 ó0   — g | ]}t          |¦  «        ¯|‘ŒS r�   ©r   ©rž   r�   s     r@   rŸ   z"basic_indexing.<locals>.<listcomp>‡  s%   € ÐFÐFÐF˜sµ[ÀÑ5EÔ5EÐF�sÐFÐFÐFrB   r  úunexpected index type: F©Ú
wraparoundÚboundscheck)r¿   r   r‹   r
   rÀ   rb   rm   r¬   r    r¡   Úellipsisr5   rf   r”   Ú	SliceTyperê   r+   Úguard_invalid_sliceÚ	fix_sliceÚstartÚget_slice_lengthÚ
fix_strider–   r’   Údo_boundscheckr   rO   Úget_item_pointer)rz   r:   r×   rý   r¢   r£   r  ró   Úonerþ   r¬   Úoutput_indicesÚoutput_shapesÚoutput_stridesÚnum_newaxesÚaxÚindexvalrŽ   Ú	n_missingrj   ÚsliceÚshÚstr‘   r   s                            r@   Úbasic_indexingr3  v  s�  € ð ×Ò¥¤
¨AÑ.Ô.€DØ
×
Ò
�uœz¨1Ñ
-Ô
-€CåÔ! '¨3¬9°e´jÑAÔA€FÝÔ" 7¨C¬K¸¼ÑDÔD€Gà€NØ€MØ€NåÐFÐF kÐFÑFÔFÑGÔG€KØ	
€BÝ˜w¨Ñ4Ô4ð  ñ  ‰ˆ�%Ø•E”NÐ"Ð"àœ
¥S¨¡\¤\Ñ1°AÑ5¸ÑCˆIÝ˜9Ñ%Ô%ð ð �Ø×%Ò% dÑ+Ô+Ð+Ø×$Ò$ V¨B¤ZÑ0Ô0Ð0Ø×%Ò% g¨b¤kÑ2Ô2Ð2Ø�a‘��Øå�e�Uœ_Ñ-Ô-ð 	NØ×'Ò'¨°¸hÐ'ÑGÔGˆEÝÔ'¨°¸%ÀÑGÔGÐGÝÔ˜g u¨f°R¬jÑ9Ô9Ð9Ø×!Ò! %¤+Ñ.Ô.Ð.ÝÔ)¨'°5Ñ9Ô9ˆBÝÔ# G¨U°G¸B´KÑ@Ô@ˆBØ× Ò  Ñ$Ô$Ð$Ø×!Ò! "Ñ%Ô%Ð%Ð%Ý˜�uœ}Ñ-Ô-ð 	NÝ# G¨W°e¸XØ$*¨2¤Jñ0ô 0ˆCàð NÝÔ& w°¸¸fÀR¼jÈ"ÑMÔMÐMØ×!Ò! #Ñ&Ô&Ð&Ð&Ý˜ÑÔð 	NØ× Ò  Ñ%Ô%Ð%Ø×!Ò! $Ñ'Ô'Ð'Ø�!‰GˆBˆBå%Ð%ÀUÀUÐ&LÑMÔMÐMØ
ˆa‰ˆ‰ð �”ÒÐÐÐØ
ˆuŒzŠ/ˆ/Ø×Ò˜V BœZÑ(Ô(Ð(Ø×Ò˜g bœkÑ*Ô*Ð*Ø
ˆa‰ˆð ˆuŒzŠ/ˆ/õ Ô& w°¸ÀØ'5Ø27ÀUðLñ Lô L€Gð �] NÐ3Ð3rB   c           	      ó‚   —  t          |¦  «        | |¦  «        }t          |||||j        |j        |j        ¬¦  «         |S )zF
    Build a view over the given array with the given parameters.
    ©r—   rb   r¬   r­   r«   r®   )ru   rÕ   r­   r«   r®   )	rz   r:   r×   rý   rë   r—   rþ   r¬   r  s	            r@   rü   rü   º  sU   € ð
 %�Z˜Ñ$Ô$ W¨gÑ6Ô6€FÝ�6ØØØ"ØœLØœ;Øœ*ð&ñ &ô &ð &ð €MrB   c           
      óô   — t          | |||||| j        ¬¦  «        \  }}}	t          |t          j        ¦  «        r*t          | |||||||	¦  «        }
|
                     ¦   «         S |rJ ‚t          | |||¦  «        S )zp
    Return the result of indexing *ary* with the given *indices*,
    returning either a scalar or a view.
    ©r  )r3  Úenable_boundscheckr”   r   rû   rü   rñ   rƒ   )rz   r:   rë   r×   rý   r¢   r£   r   r  r  r  s              r@   Ú_getitem_array_genericr9  Ê  s�   € õ 	�w ¨°°[À'Ø#*Ô#=ð	?ñ 	?ô 	?ñ '€Gˆ[˜,õ �+�uœ|Ñ,Ô,ð ;å˜7 G¨U°C¸Ø" K°ñ?ô ?ˆà×ÒÑ!Ô!Ð!ð ÐÐÐÝ˜ '¨5°'Ñ:Ô:Ð:rB   c           	      óÔ   — |j         \  }}|\  }}|j        dk    sJ ‚ t          |¦  «        | ||¦  «        }t          | ||j        |||f|f¦  «        }t          | ||j        |¦  «        S )z4
    Basic indexing with an integer or a slice.
    rD   )ré   rm   ru   r9  rë   r   ©	rz   r:   rX   ré   r×   rŽ   rý   r�   rõ   s	            r@   Úgetitem_arraynd_intpr<  ß  s|   € ð ”8�L€Eˆ5Ø�H€CˆàŒ:˜Š?ˆ?ˆ?ˆ?Ø
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€Cå
  ¨'°3´?Ø!&¨¨e¨X¸°vñ?ô ?€Cå˜W g¨s¬ÀÑDÔDÐDrB   c           
      ó”  — |j         \  }}|\  }} t          |¦  «        | ||¦  «        }|j        }t          j        ||t          |¦  «        ¬¦  «        }	t          | |||	¦  «        \  }}	t          d„ |D ¦   «         ¦  «        rt          | |||||||	¦  «        S t          | ||j
        ||||	¦  «        }
t          | ||j
        |
¦  «        S )z2
    Basic or advanced indexing with a tuple.
    rù   c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S ©N©r”   r   r•   )rž   Útys     r@   ú	<genexpr>z&getitem_array_tuple.<locals>.<genexpr>ÿ  s.   è è € Ð
=Ð
=¨2�:�b�%œ+Ñ&Ô&Ð
=Ð
=Ð
=Ð
=Ð
=Ð
=rB   )ré   ru   r   r
   rÀ   r    r¤   ÚanyÚfancy_getitemr9  rë   r   )rz   r:   rX   ré   r×   Útuptyrý   Útupr¢   r£   rõ   s              r@   Úgetitem_array_tuplerG  ð  sô   € ð
 ”8�L€Eˆ5Ø�H€CˆØ
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€Cà”+€KÝÔ" 7¨Cµs¸5±z´zÐBÑBÔB€Gå,¨W°gØ-8¸'ñCô CÑ€K�õ Ð
=Ð
=°Ð
=Ñ
=Ô
=Ñ=Ô=ð ?å˜W g¨s°DØ" C¨°gñ?ô ?ð 	?õ ! ¨'°3´?Ø!&¨¨[¸'ñCô C€Cå˜W g¨s¬ÀÑDÔDÐDrB   c           	      ó.  — |j         \  }}}|\  }}}	t          |t          j        ¦  «        r,|j        }
t	          j        ||t          |¦  «        ¬¦  «        }n|f}
|f} t          |¦  «        | ||¦  «        }t          | ||
|¦  «        \  }
}	 t          | ||||
|| j
        ¬¦  «        \  }}}t          |¦  «        }n# t          $ r d}Y nw xY w|rt          | ||||
|¦  «        S |                      ||	||j        ¦  «        }	t!          | |||	|¦  «         dS )zH
    array[a] = scalar_or_array
    array[a,..,b] = scalar_or_array
    rù   r7  TN)ré   r”   r   Ú	BaseTupler
   rÀ   r    ru   r¤   r3  r8  ÚboolrO   Úfancy_setslicerŠ   rx   r‡   )rz   r:   rX   ré   r×   rŽ   Úvaltyrý   r�   r†   r¢   r£   r   rþ   r¬   Úuse_fancy_indexings                   r@   Úsetitem_arrayrN  	  st  € ð œ(Ñ€Eˆ5�%Ø�M€Cˆˆcå�%�œÑ)Ô)ð Ø”kˆÝÔ& w°½3¸u¹:¼:ÐFÑFÔFˆˆà�hˆØ�&ˆà
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€Cõ -¨W°gØ-8¸'ñCô CÑ€K�ð*å˜7 G¨U°C¸ÀgØ'.Ô'AðCñ Cô Cñ 	!ˆ�˜õ " &™\œ\ÐÐøõ ð "ð "ð "Ø!ÐÐÐð"øøøð
 ð 4õ ˜g w°°TØ)¨7ñ4ô 4ð 	4ð �,Š,�w  U¨E¬KÑ
8Ô
8€CÝˆw˜ ¨¨WÑ5Ô5Ð5Ð5Ð5s   ÂB= Â=CÃCc                 ó¼   — |j         \  }|\  }t          |¦  «        } || ||¦  «        }|j        }|                     |d¦  «        }t	          | ||j        |¦  «        S rá   )ré   ru   rb   Úextract_valuer    rë   )	rz   r:   rX   ré   r×   rý   ÚarysttyÚshapearyrõ   s	            r@   Ú	array_lenrS  2  sd   € àŒx�H€UØ�F€SÝ˜ÑÔ€GØ
ˆ'�'˜7 CÑ
(Ô
(€CØŒy€HØ
×
Ò
 ¨!Ñ
,Ô
,€CÝ˜g w°´ÀÑEÔEÐErB   z
array.itemc           	      ó‚  — |j         \  }|\  } t          |¦  «        | ||¦  «        }|j        }|                     |                     d||                     d¦  «        ¦  «        d¬¦  «        5  d}| j                             |t          |f¦  «         d d d ¦  «         n# 1 swxY w Y   t          | |||j
        ¦  «        S )Nú!=rD   F©Úlikelyz>item(): can only convert an array of size 1 to a Python scalar)ré   ru   r²   r  r
  r6   Ú	call_convÚreturn_user_excr¸   rƒ   r—   )rz   r:   rX   ré   r×   rý   r²   rÍ   s           r@   Ú
array_itemrZ  =  s  € àŒX�F€EØ�D€CØ
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€CàŒZ€FØ	�Š˜×,Ò,¨T°6¸6¿;º;Àq¹>¼>ÑJÔJØ %ð 
ñ 
'ô 
'ð Gð GàNˆØÔ×)Ò)¨'µ:À¸vÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ
 �W˜g u¨c¬hÑ7Ô7Ð7s   Á.%BÂB#Â&B#zarray.itemsetc           	      óÊ  — |j         \  }}|\  }}||j        k    sJ ‚ t          |¦  «        | ||¦  «        }|j        }|                     |                     d||                     d¦  «        ¦  «        d¬¦  «        5  d}	| j                             |t          |	f¦  «         d d d ¦  «         n# 1 swxY w Y   t          | ||||j        ¦  «         |                      ¦   «         S )NrU  rD   FrV  z/itemset(): can only write to an array of size 1)ré   rx   ru   r²   r  r
  r6   rX  rY  r¸   r‡   r—   Úget_dummy_value)
rz   r:   rX   ré   r×   rL  rý   r†   r²   rÍ   s
             r@   Úarray_itemsetr]  L  s9  € à”8�L€Eˆ5Ø�H€CˆØ�E”KÒÐÐÐØ
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€CàŒZ€FØ	�Š˜×,Ò,¨T°6¸6¿;º;Àq¹>¼>ÑJÔJØ %ð 
ñ 
'ô 
'ð Gð Gà?ˆØÔ×)Ò)¨'µ:À¸vÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gõ
 ˆw˜ ¨¨S¬XÑ6Ô6Ð6Ø×"Ò"Ñ$Ô$Ð$s   Á=%B.Â.B2Â5B2c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚIndexerzq
    Generic indexer interface, for generating indices over a fancy indexed
    array on a single dimension.
    c                 ó   — t           ‚)ze
        Prepare the indexer by initializing any required variables, basic
        blocks...
        rÚ   ©rV   s    r@   ÚpreparezIndexer.prepareg  ó
   € õ
 "Ð!rB   c                 ó   — t           ‚)z=
        Return this dimension's size as an integer.
        rÚ   ra  s    r@   Úget_sizezIndexer.get_sizen  ó
   € õ "Ð!rB   c                 ó   — t           ‚)z;
        Return this dimension's shape as a tuple.
        rÚ   ra  s    r@   Ú	get_shapezIndexer.get_shapet  rf  rB   c                 ó   — t           ‚)z}
        Return a half-open [lower, upper) range of indices this dimension
        is guaranteed not to step out of.
        rÚ   ra  s    r@   Úget_index_boundszIndexer.get_index_boundsz  rc  rB   c                 ó   — t           ‚)aW  
        Start indexation loop.  Return a (index, count) tuple.
        *index* is an integer LLVM value representing the index over this
        dimension.
        *count* is either an integer LLVM value representing the current
        iteration count, or None if this dimension should be omitted from
        the indexation result.
        rÚ   ra  s    r@   Ú	loop_headzIndexer.loop_head�  s
   € õ "Ð!rB   c                 ó   — t           ‚)z)
        Finish indexation loop.
        rÚ   ra  s    r@   Ú	loop_tailzIndexer.loop_tailŒ  rf  rB   N)
rn   ro   rp   Ú__doc__rb  re  rh  rj  rl  rn  r�   rB   r@   r_  r_  a  sx   € € € € € ðð ð
"ð "ð "ð"ð "ð "ð"ð "ð "ð"ð "ð "ð	"ð 	"ð 	"ð"ð "ð "ð "ð "rB   r_  c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚEntireIndexerz:
    Compute indices along an entire array dimension.
    c                 óž   — || _         || _        || _        || _        || _        | j                              t          j        ¦  «        | _        d S r?  )	rz   r:   r×   rý   Údimr¹   r   r‹   Úll_intp)rV   rz   r:   r×   rý   rs  s         r@   Ú__init__zEntireIndexer.__init__˜  sB   € ØˆŒØˆŒØˆŒ
ØˆŒØˆŒØ”|×2Ò2µ5´:Ñ>Ô>ˆŒˆˆrB   c                 ó
  — | j         }|                     | j        j        | j        ¦  «        | _        t          j        || j        ¦  «        | _	        | 
                    ¦   «         | _        | 
                    ¦   «         | _        d S r?  )r:   rP  rý   rb   rs  r�   r
   rT   rt  rí   Úappend_basic_blockÚbb_startÚbb_end©rV   r:   s     r@   rb  zEntireIndexer.prepare   sf   € Ø”,ˆØ×)Ò)¨$¬(¬.¸$¼(ÑCÔCˆŒ	ÝÔ(¨°$´,Ñ?Ô?ˆŒ
Ø×2Ò2Ñ4Ô4ˆŒØ×0Ò0Ñ2Ô2ˆŒˆˆrB   c                 ó   — | j         S r?  ©r�   ra  s    r@   re  zEntireIndexer.get_size§  s
   € ØŒyÐrB   c                 ó   — | j         fS r?  r|  ra  s    r@   rh  zEntireIndexer.get_shapeª  s   € Ø”	ˆ|ÐrB   c                 ó:   — |                       d¦  «        | j        fS rá   ©rt  r�   ra  s    r@   rj  zEntireIndexer.get_index_bounds­  ó   € à—’˜Q‘” ¤Ð+Ð+rB   c                 óà  — | j         }| j                              t          | j        d¦  «        | j        ¦  «         |                     | j        ¦  «         |                     | j        ¦  «         |                     | j        ¦  «        }| 	                    | 
                    d|| j        ¦  «        d¬¦  «        5  |                     | j        ¦  «         d d d ¦  «         n# 1 swxY w Y   ||fS ©Nr   ú>=FrV  )r:   r  r   rt  rí   Úbranchrx  Úposition_at_endr;   r  r
  r�   ry  )rV   r:   Ú	cur_indexs      r@   rl  zEntireIndexer.loop_head±  s  € Ø”,ˆàŒ×Ò�8 D¤L°!Ñ4Ô4°d´jÑAÔAÐAØ�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ.Ô.Ð.Ø—L’L ¤Ñ,Ô,ˆ	Ø�_Š_˜W×0Ò0°°yÀ$Ä)ÑLÔLØ$)ð ñ +ô +ð 	(ð 	(à�NŠN˜4œ;Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð ˜)Ð#Ð#ó   Â:C!Ã!C%Ã(C%c                 ó  — | j         }t          j        ||                     | j        ¦  «        ¦  «        }|                     || j        ¦  «         |                     | j        ¦  «         |                     | j	        ¦  «         d S r?  )
r:   r
   r  r;   rí   r  r„  rx  r…  ry  ©rV   r:   Ú
next_indexs      r@   rn  zEntireIndexer.loop_tail½  so   € Ø”,ˆÝÔ,¨W°g·l²lÀ4Ä:Ñ6NÔ6NÑOÔOˆ
Ø�Š�j $¤*Ñ-Ô-Ð-Ø�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ,Ô,Ð,Ð,Ð,rB   N©rn   ro   rp   ro  ru  rb  re  rh  rj  rl  rn  r�   rB   r@   rq  rq  “  s‡   € € € € € ðð ð?ð ?ð ?ð3ð 3ð 3ðð ð ðð ð ð,ð ,ð ,ð
$ð 
$ð 
$ð-ð -ð -ð -ð -rB   rq  c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚIntegerIndexerz0
    Compute indices from a single integer.
    c                 ó‚   — || _         || _        || _        | j                              t          j        ¦  «        | _        d S r?  )rz   r:   r�   r¹   r   r‹   rt  )rV   rz   r:   r�   s       r@   ru  zIntegerIndexer.__init__Ê  s4   € ØˆŒØˆŒØˆŒØ”|×2Ò2µ5´:Ñ>Ô>ˆŒˆˆrB   c                 ó   — d S r?  r�   ra  s    r@   rb  zIntegerIndexer.prepareÐ  ó   € ØˆrB   c                 ó,   — t          | j        d¦  «        S ©NrD   )r   rt  ra  s    r@   re  zIntegerIndexer.get_sizeÓ  s   € Ý˜œ aÑ(Ô(Ð(rB   c                 ó   — dS ©Nr�   r�   ra  s    r@   rh  zIntegerIndexer.get_shapeÖ  s   € ØˆrrB   c                 ót   — | j         | j                             | j         |                      ¦   «         ¦  «        fS r?  )r�   r:   Úaddre  ra  s    r@   rj  zIntegerIndexer.get_index_boundsÙ  s+   € à”˜$œ,×*Ò*¨4¬8°T·]²]±_´_ÑEÔEÐFÐFrB   c                 ó   — | j         d fS r?  )r�   ra  s    r@   rl  zIntegerIndexer.loop_headÝ  s   € ØŒx˜ˆ~ÐrB   c                 ó   — d S r?  r�   ra  s    r@   rn  zIntegerIndexer.loop_tailà  r�  rB   Nr‹  r�   rB   r@   r�  r�  Å  sŠ   € € € € € ðð ð?ð ?ð ?ðð ð ð)ð )ð )ðð ð ðGð Gð Gðð ð ðð ð ð ð rB   r�  c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚIntegerArrayIndexerz;
    Compute indices from an array of integer indices.
    c                 ó¸   — || _         || _        || _        || _        || _        |j        dk    sJ ‚| j                              t          j        ¦  «        | _	        d S r’  )
rz   r:   rŽ   r˜   r�   rm   r¹   r   r‹   rt  )rV   rz   r:   rŽ   r˜   r�   s         r@   ru  zIntegerArrayIndexer.__init__é  sQ   € ØˆŒØˆŒØˆŒ
ØˆŒØˆŒ	ØŒz˜QŠˆˆˆØ”|×2Ò2µ5´:Ñ>Ô>ˆŒˆˆrB   c                 ó
  — | j         }t          j        || j        j        ¦  «        d         | _        t          j        || j        ¦  «        | _        | 	                    ¦   «         | _
        | 	                    ¦   «         | _        d S rá   )r:   r
   rÀ   r˜   rb   Úidx_sizerT   rt  Ú	idx_indexrw  rx  ry  rz  s     r@   rb  zIntegerArrayIndexer.prepareò  sg   € Ø”,ˆÝÔ,¨W°d´kÔ6GÑHÔHÈÔKˆŒÝ Ô,¨W°d´lÑCÔCˆŒØ×2Ò2Ñ4Ô4ˆŒØ×0Ò0Ñ2Ô2ˆŒˆˆrB   c                 ó   — | j         S r?  ©r�  ra  s    r@   re  zIntegerArrayIndexer.get_sizeù  s
   € ØŒ}ÐrB   c                 ó   — | j         fS r?  r   ra  s    r@   rh  zIntegerArrayIndexer.get_shapeü  s   € Ø”ÐÐrB   c                 ó:   — |                       d¦  «        | j        fS rá   r  ra  s    r@   rj  z$IntegerArrayIndexer.get_index_boundsÿ  r€  rB   c                 óˆ  — | j         }| j                              t          | j        d¦  «        | j        ¦  «         |                     | j        ¦  «         |                     | j        ¦  «         |                     | j        ¦  «        }| 	                    | 
                    d|| j        ¦  «        d¬¦  «        5  |                     | j        ¦  «         d d d ¦  «         n# 1 swxY w Y   t          | j        || j        j        | j        | j        |¦  «        }t%          | j        || j        j        || j        ¦  «        }||fS r‚  )r:   r  r   rt  rž  r„  rx  r…  r;   r  r
  r�  ry  r  rz   rŽ   rx   r˜   r’   r�   )rV   r:   r†  rí   s       r@   rl  zIntegerArrayIndexer.loop_head  sf  € Ø”,ˆàŒ×Ò�8 D¤L°!Ñ4Ô4°d´nÑEÔEÐEØ�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ.Ô.Ð.Ø—L’L ¤Ñ0Ô0ˆ	Ø�_Š_Ø×Ò  i°´Ñ?Ô?Øð ñ 
ô 
ð 	(ð 	(ð �NŠN˜4œ;Ñ'Ô'Ð'ð		(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ *ØŒL˜' 4¤:Ô#3°T´ZÀÄØñ
ô 
ˆõ " $¤,°Ø"&¤*Ô"2°E¸4¼9ñFô Fˆà�iÐÐr‡  c                 ó  — | j         }t          j        ||                     | j        ¦  «        ¦  «        }|                     || j        ¦  «         |                     | j        ¦  «         |                     | j	        ¦  «         d S r?  )
r:   r
   r  r;   rž  r  r„  rx  r…  ry  r‰  s      r@   rn  zIntegerArrayIndexer.loop_tail  sv   € Ø”,ˆÝÔ,¨WØ-4¯\ª\¸$¼.Ñ-IÔ-IñKô Kˆ
à�Š�j $¤.Ñ1Ô1Ð1Ø�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ,Ô,Ð,Ð,Ð,rB   Nr‹  r�   rB   r@   rš  rš  ä  s‡   € € € € € ðð ð?ð ?ð ?ð3ð 3ð 3ðð ð ð ð  ð  ð,ð ,ð ,ð ð  ð  ð*-ð -ð -ð -ð -rB   rš  c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚBooleanArrayIndexerz>
    Compute indices from an array of boolean predicates.
    c                 óÞ   — || _         || _        || _        || _        |j        dk    sJ ‚| j                              t          j        ¦  «        | _        t          | j        d¦  «        | _
        d S ©NrD   r   )rz   r:   rŽ   r˜   rm   r¹   r   r‹   rt  r   ró   )rV   rz   r:   rŽ   r˜   s        r@   ru  zBooleanArrayIndexer.__init__&  s]   € ØˆŒØˆŒØˆŒ
ØˆŒØŒz˜QŠˆˆˆØ”|×2Ò2µ5´:Ñ>Ô>ˆŒÝ˜Tœ\¨1Ñ-Ô-ˆŒ	ˆ	ˆ	rB   c                 óz  — | j         }t          j        || j        j        ¦  «        d         | _        t          j        || j        ¦  «        | _        t          j        || j        ¦  «        | _	        | 
                    ¦   «         | _        | 
                    ¦   «         | _        | 
                    ¦   «         | _        d S rá   )r:   r
   rÀ   r˜   rb   r�   rT   rt  rž  rÁ   rw  rx  Úbb_tailry  rz  s     r@   rb  zBooleanArrayIndexer.prepare/  s�   € Ø”,ˆÝÔ(¨°$´+Ô2CÑDÔDÀQÔGˆŒ	Ý Ô,¨W°d´lÑCÔCˆŒÝÔ(¨°$´,Ñ?Ô?ˆŒ
Ø×2Ò2Ñ4Ô4ˆŒØ×1Ò1Ñ3Ô3ˆŒØ×0Ò0Ñ2Ô2ˆŒˆˆrB   c           	      óê  — | j         }t          j        || j        ¦  «        }t          j        || j        ¦  «        5 }|                     |¦  «        }t          | j        || j	        j
        | j	        | j        |j        ¦  «        }|                     ||                     ||j        ¦  «        ¦  «        }|                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   |                     |¦  «        S r?  )r:   r
   rì   ró   Ú	for_ranger�   r;   r  rz   rŽ   rx   r˜   rí   r–  Úzextr6   r  )rV   r:   rÁ   ÚloopÚcÚpreds         r@   re  zBooleanArrayIndexer.get_size8  s  € Ø”,ˆÝÔ)¨'°4´9Ñ=Ô=ˆåÔ˜w¨¬	Ñ2Ô2ð 	$°dØ—’˜UÑ#Ô#ˆAÝ,Ø”˜g t¤zÔ'7Ø”
˜DœK¨¬ñô ˆDð —’˜A˜wŸ|š|¨D°!´&Ñ9Ô9Ñ:Ô:ˆAØ�MŠM˜!˜UÑ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð �|Š|˜EÑ"Ô"Ð"s   ¼BCÃCÃCc                 ó,   — |                       ¦   «         fS r?  ©re  ra  s    r@   rh  zBooleanArrayIndexer.get_shapeG  ó   € Ø—’‘”Ð!Ð!rB   c                 ó:   — |                       d¦  «        | j        fS rá   r  ra  s    r@   rj  z$BooleanArrayIndexer.get_index_boundsJ  s   € ð —’˜Q‘” ¤Ð+Ð+rB   c                 ó°  — | j         }| j                              | j        | j        ¦  «         | j                              | j        | j        ¦  «         |                     | j        ¦  «         |                     | j        ¦  «         |                     | j        ¦  «        }|                     | j        ¦  «        }| 	                    | 
                    d|| j        ¦  «        d¬¦  «        5  |                     | j        ¦  «         d d d ¦  «         n# 1 swxY w Y   t          | j        || j        j        | j        | j        |¦  «        }| 	                    |                     |¦  «        ¦  «        5  |                     | j        ¦  «         d d d ¦  «         n# 1 swxY w Y   t)          j        ||¦  «        }|                     || j        ¦  «         ||fS )Nrƒ  FrV  )r:   r  ró   rž  rÁ   r„  rx  r…  r;   r  r
  r�   ry  r  rz   rŽ   rx   r˜   Únot_rª  r
   r  )rV   r:   r†  Ú	cur_countr°  Ú
next_counts         r@   rl  zBooleanArrayIndexer.loop_headO  s  € Ø”,ˆàŒ×Ò˜4œ9 d¤nÑ5Ô5Ð5ØŒ×Ò˜4œ9 d¤jÑ1Ô1Ð1Ø�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ.Ô.Ð.Ø—L’L ¤Ñ0Ô0ˆ	Ø—L’L ¤Ñ,Ô,ˆ	Ø�_Š_˜W×0Ò0°°yÀ$Ä)ÑLÔLØ$)ð ñ +ô +ð 	(ð 	(à�NŠN˜4œ;Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ )ØŒL˜' 4¤:Ô#3°T´ZÀÄØñ
ô 
ˆð �_Š_˜WŸ\š\¨$Ñ/Ô/Ñ0Ô0ð 	)ð 	)Ø�NŠN˜4œ<Ñ(Ô(Ð(ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)õ Ô,¨W°iÑ@Ô@ˆ
Ø�Š�j $¤*Ñ-Ô-Ð-Ø˜)Ð#Ð#s$   Ã+DÄDÄDÅ2FÆFÆ Fc                 ót  — | j         }|                     | j        ¦  «         |                     | j        ¦  «         t	          j        ||                     | j        ¦  «        ¦  «        }|                     || j        ¦  «         |                     | j	        ¦  «         |                     | j
        ¦  «         d S r?  )r:   r„  rª  r…  r
   r  r;   rž  r  rx  ry  r‰  s      r@   rn  zBooleanArrayIndexer.loop_tailg  s    € Ø”,ˆØ�Š�t”|Ñ$Ô$Ð$Ø×Ò ¤Ñ-Ô-Ð-ÝÔ,¨WØ-4¯\ª\¸$¼.Ñ-IÔ-IñKô Kˆ
à�Š�j $¤.Ñ1Ô1Ð1Ø�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ,Ô,Ð,Ð,Ð,rB   Nr‹  r�   rB   r@   r¦  r¦  !  s‡   € € € € € ðð ð.ð .ð .ð3ð 3ð 3ð#ð #ð #ð"ð "ð "ð,ð ,ð ,ð
$ð $ð $ð0-ð -ð -ð -ð -rB   r¦  c                   ó<   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
ÚSliceIndexerz(
    Compute indices along a slice.
    c                 óî   — || _         || _        || _        || _        || _        || _        || _        | j                              t          j	        ¦  «        | _
        t          | j
        d¦  «        | _        d S rá   )rz   r:   r×   rý   rs  rŽ   r0  r¹   r   r‹   rt  r   ró   )rV   rz   r:   r×   rý   rs  rŽ   r0  s           r@   ru  zSliceIndexer.__init__w  sc   € ØˆŒØˆŒØˆŒ
ØˆŒØˆŒØˆŒ
ØˆŒ
Ø”|×2Ò2µ5´:Ñ>Ô>ˆŒÝ˜Tœ\¨1Ñ-Ô-ˆŒ	ˆ	ˆ	rB   c                 ó  — | j         }|                     | j        j        | j        ¦  «        | _        t          j        | j        || j	        | j
        ¦  «         t          j        || j
        | j        ¦  «         t          j        || j
        j        ¦  «        | _        t          j        || j        ¦  «        | _        t          j        || j        ¦  «        | _        |                     ¦   «         | _        |                     ¦   «         | _        d S r?  )r:   rP  rý   rb   rs  Údim_sizer+   r!  rz   rŽ   r0  r"  r
   Ú
is_neg_intÚstepÚis_step_negativerT   rt  rí   rÁ   rw  rx  ry  rz  s     r@   rb  zSliceIndexer.prepare‚  sÒ   € Ø”,ˆà×-Ò-¨d¬h¬n¸d¼hÑGÔGˆŒÝÔ# D¤L°'¸4¼:Ø$(¤Jñ	0ô 	0ð 	0åÔ˜' 4¤:¨t¬}Ñ=Ô=Ð=Ý 'Ô 2°7¸D¼J¼OÑ LÔ LˆÔåÔ(¨°$´,Ñ?Ô?ˆŒ
ÝÔ(¨°$´,Ñ?Ô?ˆŒ
Ø×2Ò2Ñ4Ô4ˆŒØ×0Ò0Ñ2Ô2ˆŒˆˆrB   c                 ó@   — t          j        | j        | j        ¦  «        S r?  )r+   r$  r:   r0  ra  s    r@   re  zSliceIndexer.get_size�  s   € ÝÔ'¨¬°d´jÑAÔAÐArB   c                 ó,   — |                       ¦   «         fS r?  r²  ra  s    r@   rh  zSliceIndexer.get_shape“  r³  rB   c                 óN   — t          j        | j        | j        ¦  «        \  }}||fS r?  )r+   Úget_slice_boundsr:   r0  )rV   ÚlowerÚuppers      r@   rj  zSliceIndexer.get_index_bounds–  s&   € ÝÔ/°´¸d¼jÑIÔI‰ˆˆuØ�eˆ|ÐrB   c           	      óÌ  — | j         }| j                              | j        j        | j        ¦  «         | j                              | j        | j        ¦  «         |                     | j        ¦  «         | 	                    | j        ¦  «         | 
                    | j        ¦  «        }| 
                    | j        ¦  «        }|                     | j        |                     d|| j        j        ¦  «        |                     d|| j        j        ¦  «        ¦  «        }|                     |d¬¦  «        5  |                     | j        ¦  «         d d d ¦  «         n# 1 swxY w Y   ||fS )Nz<=rƒ  FrV  )r:   r  r0  r#  rí   ró   rÁ   r„  rx  r…  r;   ÚselectrÁ  r
  Ústopr  ry  )rV   r:   r†  r·  Úis_finisheds        r@   rl  zSliceIndexer.loop_headš  sz  € Ø”,ˆàŒ×Ò˜4œ:Ô+¨T¬ZÑ8Ô8Ð8ØŒ×Ò˜4œ9 d¤jÑ1Ô1Ð1Ø�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ.Ô.Ð.Ø—L’L ¤Ñ,Ô,ˆ	Ø—L’L ¤Ñ,Ô,ˆ	Ø—n’n TÔ%:Ø%,×%8Ò%8¸¸yØ9=¼¼ñ&Jô &Jà%,×%8Ò%8¸¸yØ9=¼¼ñ&Jô &JñKô Kˆð
 �_Š_˜[°ˆ_Ñ7Ô7ð 	(ð 	(Ø�NŠN˜4œ;Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(à˜)Ð#Ð#s   Ä0EÅEÅEc                 ó¸  — | j         }|                     |                     | j        ¦  «        | j        j        dg¬¦  «        }|                     || j        ¦  «         t          j        ||                     | j	        ¦  «        ¦  «        }|                     || j	        ¦  «         | 
                    | j        ¦  «         |                     | j        ¦  «         d S )Nr¯   r°   )r:   r–  r;   rí   r0  rÀ  r  r
   r  rÁ   r„  rx  r…  ry  )rV   r:   rŠ  r¸  s       r@   rn  zSliceIndexer.loop_tail¬  s¸   € Ø”,ˆØ—[’[ §¢¨d¬jÑ!9Ô!9¸4¼:¼?Ø(- wð !ñ 0ô 0ˆ
à�Š�j $¤*Ñ-Ô-Ð-ÝÔ,¨W°g·l²lÀ4Ä:Ñ6NÔ6NÑOÔOˆ
Ø�Š�j $¤*Ñ-Ô-Ð-Ø�Š�t”}Ñ%Ô%Ð%Ø×Ò ¤Ñ,Ô,Ð,Ð,Ð,rB   Nr‹  r�   rB   r@   r»  r»  r  sŠ   € € € € € ðð ð	.ð 	.ð 	.ð3ð 3ð 3ðBð Bð Bð"ð "ð "ðð ð ð$ð $ð $ð$-ð -ð -ð -ð -rB   r»  c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚFancyIndexerz4
    Perform fancy indexing on the given array.
    c           
      ó0  — || _         || _        || _        t          j        ||j        |j        ¦  «        | _        t          j        ||j        |j        ¦  «        | _        | j          	                    t          j        ¦  «        | _        g | _        g }t          d„ |D ¦   «         ¦  «        }d}	d}
t          ||¦  «        D �]9\  }}|t          j        u rb|j        t          |¦  «        z
  dz   |z   }t#          |¦  «        D ]4}t%          |||||	¦  «        }|                     |¦  «         |	dz  }	|
dz  }
Œ5Œvt)          |t          j        ¦  «        rC|                     |||¦  «        }t/          |||||	||¦  «        }|                     |¦  «         �n\t)          |t          j        ¦  «        rEt3          ||||| j        |	         ¦  «        }t5          |||¦  «        }|                     |¦  «         nýt)          |t          j        ¦  «        r¢ t9          |¦  «        |||¦  «        }t)          |j        t          j        ¦  «        rt=          ||||| j        |	         ¦  «        }n4t)          |j        t          j        ¦  «        rtA          ||||¦  «        }nJ ‚|                     |¦  «         nAtC          |¦  «        r | j                             |
¦  «         |	dz  }	ntE          d|›�¦  «        ‚|	dz  }	|
dz  }
�Œ;|	|j        k    sJ |	|j        f¦   «         ‚|	|j        k     r8t%          |||||	¦  «        }|                     |¦  «         |	dz  }	|	|j        k     °8t          |¦  «        |j        k    sJ t          |¦  «        |j        f¦   «         ‚|| _#        d S )Nc                 ó0   — g | ]}t          |¦  «        ¯|‘ŒS r�   r  r  s     r@   rŸ   z)FancyIndexer.__init__.<locals>.<listcomp>Æ  s%   € ÐJÐJÐJ 3½ÀSÑ9IÔ9IÐJ˜3ÐJÐJÐJrB   r   rD   r  )$rz   r:   r×   r
   rÀ   rb   rm   rþ   r¬   r¹   r   r‹   rt  Únewaxesr    r¡   r  r5   rq  rf   r”   r   rê   r»  r–   r’   r�  r•   ru   rx   rš  ÚBooleanr¦  r   ÚAssertionErrorÚindexers)rV   rz   r:   r×   rý   r¢   r£   rÔ  r,  r-  Únew_axr.  rŽ   r/  rj   Úindexerr0  r‘   r˜   s                      r@   ru  zFancyIndexer.__init__¼  sª  € ØˆŒØˆŒØˆŒ
ÝÔ*¨7°C´I¸u¼zÑJÔJˆŒÝÔ+¨G°S´[À%Ä*ÑMÔMˆŒØ”|×2Ò2µ5´:Ñ>Ô>ˆŒØˆŒàˆÝÐJÐJ¨+ÐJÑJÔJÑKÔKˆàˆØˆÝ" 7¨KÑ8Ô8ð (	ñ (	‰OˆH�eØ�œÐ&Ð&à!œJ­¨W©¬Ñ5¸Ñ9¸KÑG�	Ý˜yÑ)Ô)ð  ð  �AÝ+¨G°W¸eÀSÈ"ÑMÔM�GØ—O’O GÑ,Ô,Ð,Ø˜!‘G�BØ˜a‘K�F�FØõ ˜%¥¤Ñ1Ô1ð MØ×+Ò+¨G°U¸HÑEÔE�Ý& w°¸ÀÀRØ',¨eñ5ô 5�à—’ Ñ(Ô(Ð(Ñ(Ý˜E¥5¤=Ñ1Ô1ð MÝ'¨°¸%ÀØ(,¬°B¬ñ9ô 9�å(¨°'¸3Ñ?Ô?�Ø—’ Ñ(Ô(Ð(Ð(Ý˜E¥5¤;Ñ/Ô/ð MØ*� EÑ*Ô*¨7°G¸XÑFÔF�Ý˜eœk­5¬=Ñ9Ô9ð Ý1°'¸7Ø27¸Ø26´+¸b´/ñCô C�G�Gõ   ¤­U¬]Ñ;Ô;ð Ý1°'¸7Ø27¸ñAô A�G�Gð �HØ—’ Ñ(Ô(Ð(Ð(Ý˜UÑ#Ô#ð MØ”×#Ò# FÑ+Ô+Ð+Ø�a‘��å$�nÀEÀEÐ%KÑLÔLÐLØ�!‰GˆBØ�a‰KˆF‰Fð �U”ZÒÐÐ " e¤jÐ!1ÑÔÐØ�5”:ŠoˆoÝ# G¨W°e¸SÀ"ÑEÔEˆGØ�OŠO˜GÑ$Ô$Ð$Ø�!‰GˆBð �5”:Šoˆoõ
 �8‰}Œ} ¤
Ò*Ð*Ð*­S°©]¬]¸E¼JÐ,GÑ*Ô*Ð*Ø ˆŒˆˆrB   c                 ó  — | j         D ]}|                     ¦   «          Œ| j                             t          j        d¦  «        }d„ | j         D ¦   «         }| j        D ]}|                     ||f¦  «         Œt          |d¦  «        | _	        d S )NrD   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r�   )rh  ©rž   rj   s     r@   rŸ   z(FancyIndexer.prepare.<locals>.<listcomp>  s    € Ð:Ð:Ð: q�Q—[’[‘]”]Ð:Ð:Ð:rB   r�   )
rÔ  rb  rz   r¿   r   r‹   rÑ  ÚinsertÚsumÚindexers_shape)rV   rj   r(  Ú	res_shapes       r@   rb  zFancyIndexer.prepareþ  sš   € Ø”ð 	ð 	ˆAØ�IŠI‰KŒKˆKˆKàŒl×'Ò'­¬
°AÑ6Ô6ˆð ;Ð:¨D¬MÐ:Ñ:Ô:ˆ	ð ”ð 	(ð 	(ˆAØ×Ò˜Q  Ñ'Ô'Ð'Ð'õ
 " )¨RÑ0Ô0ˆÔÐÐrB   c                 ó   — | j         S )z?
        Get the resulting data shape as Python tuple.
        )rÜ  ra  s    r@   rh  zFancyIndexer.get_shape  s   € ð Ô"Ð"rB   c           	      ót  — t          |¦  «        | j        j        k    sJ ‚| j        }t          j        }|                      d¦  «        }|                      d¦  «        }|}|}t          | j        | j	        |¦  «        D ]õ\  }	}
}| 
                    ||                     d|
|¦  «        ¦  «        }|	                     ¦   «         \  }}|                     ||¦  «        }|                     ||                     ||¦  «        ¦  «        }|                     d||¦  «        }|                     ||                     |||¦  «        ¦  «        }|                     ||                     |||¦  «        ¦  «        }Œö|                     ||¦  «        }|                     |||¦  «        }|                     |||¦  «        }||fS )zÊ
        Get a half-open [lower, upper) range of byte offsets spanned by
        the indexer with the given strides and itemsize.  The indexer is
        guaranteed to not go past those bounds.
        r   rD   ú==r	  )r    r×   rm   r:   r
   Ú	false_bitrt  r¡   rÔ  rÜ  Úor_Úicmp_unsignedrj  rÂ   Úsubr
  r–  rÉ  )rV   r¬   r­   r:   Úis_emptyró   r(  rÆ  rÇ  rÖ  rb   ÚstrideÚlower_indexÚupper_indexÚlower_offsetÚupper_offsetÚis_downwardss                    r@   Úget_offset_boundszFancyIndexer.get_offset_bounds  sº  € õ �7‰|Œ|˜tœzœÒ.Ð.Ð.Ð.Ø”,ˆÝÔ$ˆØ�|Š|˜A‰ŒˆØ�lŠl˜1‰oŒoˆØˆØˆÝ&)¨$¬-¸Ô9LØ*1ñ'3ô '3ð 	>ð 	>Ñ"ˆG�U˜Fà—{’{ 8Ø#*×#8Ò#8¸¸uÀdÑ#KÔ#KñMô MˆHð (/×'?Ò'?Ñ'AÔ'AÑ$ˆK˜Ø"Ÿ;š; v¨{Ñ;Ô;ˆLØ"Ÿ;š; v¨w¯{ª{¸;ÈÑ/LÔ/LÑMÔMˆLà"×.Ò.¨s°F¸DÑAÔAˆLØ—K’K Ø '§¢¨|Ø/;Ø/;ñ!=ô !=ñ>ô >ˆEð —K’K Ø '§¢¨|Ø/;Ø/;ñ!=ô !=ñ>ô >ˆEˆEð
 —’˜E 8Ñ,Ô,ˆà—’˜x¨¨uÑ5Ô5ˆØ—’˜x¨¨uÑ5Ô5ˆØ�eˆ|ÐrB   c                 ó@   — t          d„ | j        D ¦   «         Ž \  }}||fS )Nc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r?  )rl  rÙ  s     r@   rB  z+FancyIndexer.begin_loops.<locals>.<genexpr>>  s*   è è € ÐEÐE°! §¢¡¤ÐEÐEÐEÐEÐEÐErB   )r¡   rÔ  )rV   r£   Úcountss      r@   Úbegin_loopszFancyIndexer.begin_loops=  s+   € ÝÐEÐE°t´}ÐEÑEÔEÐF‰ˆ�Ø˜ˆÐrB   c                 ó\   — t          | j        ¦  «        D ]}|                     ¦   «          Œd S r?  )ÚreversedrÔ  rn  )rV   rj   s     r@   Ú	end_loopszFancyIndexer.end_loopsA  s4   € Ý˜$œ-Ñ(Ô(ð 	ð 	ˆAØ�KŠK‰MŒMˆMˆMð	ð 	rB   N)
rn   ro   rp   ro  ru  rb  rh  rì  rð  ró  r�   rB   r@   rÎ  rÎ  ·  s}   € € € € € ðð ð@!ð @!ð @!ðD1ð 1ð 1ð&#ð #ð #ð$ð $ð $ðLð ð ðð ð ð ð rB   rÎ  c                 óz  — t          j        ||j        ¦  «        }t          j        ||j        ¦  «        }	|j        }
t          | |||||¦  «        }|                     ¦   «          |j        }|                     ¦   «         }t          | |||¦  «        }|j        }t          j
        ||                      t          j        d¦  «        ¦  «        }|                     ¦   «         \  }}t          j        | ||
||	|j        |d| j        ¬¦	  «	        }t%          | |||¦  «        }|                     |¦  «        }|                     ||g¦  «        }t+          | ||||¦  «         t          j        ||¦  «        }|                     ||¦  «         |                     ¦   «          t3          | |||                     ¦   «         ¦  «        S )Nr   Fr  )r
   rÀ   rb   r¬   r—   rÎ  rb  rë   rh  Ú_empty_nd_implrì   r¿   r   r‹   rð  Úget_item_pointer2Úlayoutr8  rƒ   r;   Úgepr‡   r  r  ró  r   rñ   )rz   r:   rX   ré   r×   rý   r¢   r£   rþ   r¬   r—   rÖ  Úout_tyÚ
out_shapesrö   Úout_dataÚout_idxÚ_rh   r†   ÚcurÚnext_idxs                         r@   rD  rD  F  s±  € õ Ô! '¨3¬9Ñ5Ô5€FÝÔ" 7¨C¬KÑ8Ô8€GØŒ8€Då˜7 G¨U°CØ&¨ñ1ô 1€Gà‡O‚OÑÔÐð Œ_€FØ×"Ò"Ñ$Ô$€Jå
˜ '¨6°:Ñ
>Ô
>€CØŒx€HÝÔ'¨Ø(/×(<Ò(<½U¼ZÈÑ(KÔ(KñMô M€Gð ×$Ò$Ñ&Ô&�J€GˆQõ Ô
# G¨W°d¸FÀGØ$)¤L°'ÀeØ07Ô0JðLñ Lô L€Cõ �G˜W e¨SÑ
1Ô
1€Cð �,Š,�wÑ
Ô
€CØ
�+Š+�h  Ñ
&Ô
&€CÝˆw˜ ¨¨cÑ2Ô2Ð2ÝÔ& w°Ñ4Ô4€HØ‡M‚M�(˜GÑ$Ô$Ð$à×ÒÑÔÐå˜G W¨f°c·m²m±o´oÑFÔFÐFrB   c           
      ó*  — |j         \  }}|\  }} t          |¦  «        | ||¦  «        }|j        dk    rHt          | |||¦  «        \  }}t	          | ||j        |||f|f¦  «        }t          | ||j        |¦  «        S t          | ||||||f|f¦  «        S )z3
    Advanced or basic indexing with an array.
    r   )ré   ru   rm   rš   r9  rë   r   rD  r;  s	            r@   Úfancy_getitem_arrayr  q  sº   € ð
 ”8�L€Eˆ5Ø�H€CˆØ
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€CØ„z�Q‚€å$ W¨g°u¸cÑBÔB‰
ˆˆsÝ$ W¨g°s´Ø%*¨C°%°¸C¸6ñCô Cˆå  ¨'°3´?ÀCÑHÔHÐHõ ˜W g¨s°DØ" C¨%¨°C°6ñ;ô ;ð 	;rB   c           	      óø  — |j         }|                     d¦  «        }|                     d¦  «        }|j        dv r|}	|                     ||j        ¦  «        }
�n|}	|}
t          |j        ¦  «        D ]¥}|                     ||         |                     ||         |¦  «        ¦  «        }|                     d||¦  «        }| 	                    || 
                    |
|¦  «        |
¦  «        }
| 	                    ||	| 
                    |	|¦  «        ¦  «        }	Œ¦| 
                    |
|¦  «        }
|                     d|j        |¦  «        }| 	                    |||
¦  «        }
| 	                    |||	¦  «        }	|	|
fS )zï
    Compute a half-open range [lower, upper) of byte offsets from the
    array's data pointer, that bound the in-memory extent of the array.

    This mimics offset_bounds_from_strides() from
    numpy/core/src/private/mem_overlap.c
    r   rD   ÚCFrƒ  rà  )r­   r6   r÷  rÂ   r²   r5   rm   rä  r
  rÉ  r–  )rz   r:   ÚarrtyÚarrrþ   r¬   r­   ró   r(  rÆ  rÇ  rj   Úmax_axis_offsetÚ
is_upwardsrå  s                  r@   Úoffset_bounds_from_stridesr  …  s~  € ð Œ|€HØ�=Š=˜ÑÔ€DØ
�)Š)�A‰,Œ,€CØ„|�tÐÐð ˆØ—’˜H c¤jÑ1Ô1ˆ‰ð ˆØˆÝ�u”zÑ"Ô"ð 	Oð 	OˆAð &Ÿkšk¨'°!¬*Ø*1¯+ª+°f¸Q´iÀÑ*EÔ*EñGô GˆOà ×,Ò,¨T°?ÀDÑIÔIˆJà—N’N :Ø#*§;¢;¨u°oÑ#FÔ#FÈñOô OˆEà—N’N :Ø#(¨'¯+ª+°e¸_Ñ*MÔ*MñOô OˆEˆEð —’˜E 8Ñ,Ô,ˆà×&Ò& t¨S¬Z¸Ñ>Ô>ˆØ—’˜x¨¨uÑ5Ô5ˆØ—’˜x¨¨uÑ5Ô5ˆà�%ˆ<ÐrB   c                 ó˜   — |                      ||j        ¦  «        }|                     ||¦  «        }|                     ||¦  «        }||fS )z…
    Given [lower, upper) byte offsets and a base data pointer,
    compute the memory pointer bounds as pointer-sized integers.
    )Úptrtointr6   r–  )rz   r:   rÆ  rÇ  r—   Údata_ptr_as_intr#  Úends           r@   Úcompute_memory_extentsr  ¯  sK   € ð
 ×&Ò& t¨U¬ZÑ8Ô8€OØ�KŠK˜¨Ñ/Ô/€EØ
�+Š+�o uÑ
-Ô
-€CØ�#ˆ:ÐrB   c                 óV   — t          | |||||¦  «        \  }}t          | ||||¦  «        S )zr
    Compute a half-open range [start, end) of pointer-sized integers
    which fully contain the array data.
    )r  r  )	rz   r:   r  r  rþ   r¬   r—   rÆ  rÇ  s	            r@   Úget_array_memory_extentsr  º  s:   € õ .¨g°wÀÀsØ.4°gñ?ô ?�L€Eˆ5å! '¨7°E¸5À$ÑGÔGÐGrB   c                 ó†   — |                      |                     d||¦  «        |                     d||¦  «        ¦  «        }|S )z[
    Whether two memory extents [a_start, a_end) and [b_start, b_end)
    may overlap.
    r	  )Úand_rã  )rz   r:   Úa_startÚa_endÚb_startÚb_endÚmay_overlaps          r@   Úextents_may_overlapr  Å  sI   € ð —,’,Ø×Ò˜c 7¨EÑ2Ô2Ø×Ò˜c 7¨EÑ2Ô2ñô €Kð ÐrB   c                 ó2  ‡ ‡‡‡‡‡‡‡‡‡‡‡‡— ‰j         ŠdŠt          j        ‰‰¦  «        Š‰Šd Š‰                     ‰d¬¦  «        5  ‰                     |j        |j        ¦  «        }‰ j                             ‰|¦  «        }	|	j         Š‰ 	                    |	‰¦  «        }	‰ 
                    |	‰¦  «         ‰                      t          j        ¦  «        }
t          j        ‰‰|
¦  «        5 }t          j        ‰ ‰‰‰‰‰j        |¦  «        }t          j        ‰ ‰|	‰‰‰|¦  «        }‰ 
                    ‰                     |¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   ˆˆ ˆˆˆˆˆˆˆˆˆˆfd„}ˆˆ ˆˆˆfd„}||fS )Nr¦   FrV  c                 ó4  •— t          j        ‰‰
¦  «        }‰                     ‰d¬¦  «        5 \  }}|5  ‰                     t          j        ‰‰‰                     ‰¦  «        ‰‰	‰| d¬¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   |5  ‰                     t          j        ‰‰‰‰‰‰j        | d¬¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          ‰‰‰‰                     |¦  «        ¦  «        S )NFrV  ©r  )r
   rT   Úif_elser  rö  r;   r÷  rƒ   )Úsource_indicesÚsrc_ptrÚif_copyÚ	otherwiser:   rz   Ú	copy_dataÚcopy_layoutÚcopy_shapesÚcopy_stridesÚptrtyÚsrc_dataÚ
src_shapesÚsrc_stridesÚsrctyÚuse_copys       €€€€€€€€€€€€r@   Úsrc_getitemz&maybe_copy_source.<locals>.src_getitemñ  s÷  ø€ ÝÔ% g¨uÑ5Ô5ˆØ�_Š_˜X¨eˆ_Ñ4Ô4ð 	Ñ8L¸À)Øð ð Ø—’ÝÔ-¨g°wØ.5¯lªl¸9Ñ.EÔ.EØ.9¸<Ø.9¸>Ø9>ð	@ñ @ô @ð
 ñô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð Ø—’ÝÔ-¨g°wÀØ.8¸+Ø.3¬l¸NØ9>ð@ñ @ô @ð ñô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ  ˜ '¨5°'·,²,¸wÑ2GÔ2GÑHÔHÐHsY   ®C*´ABÁ8C*ÂB	ÂC*ÂB	ÂC*Â6CÃC*ÃC	ÃC*ÃC	ÃC*Ã*C.Ã1C.c                  óô   •— ‰                      ‰d¬¦  «        5  ‰                     ‰¦  «        } ‰                     | ‰¦  «        } ‰j                             ‰| ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NFrV  )r  r;   Úbitcastrï   Úfree)r—   r:   rz   r   r)  Ú	voidptrtys    €€€€€r@   Úsrc_cleanupz&maybe_copy_source.<locals>.src_cleanup  s¹   ø€ à�_Š_˜X¨eˆ_Ñ4Ô4ð 	,ð 	,Ø—<’< 	Ñ*Ô*ˆDØ—?’? 4¨Ñ3Ô3ˆDØŒK×Ò˜W dÑ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	,ð 	,s   ™AA-Á-A1Á4A1)r6   r
   rì   r  rÂ   r­   r²   rï   Úallocater,  r  r¹   r   r‹   Ú	loop_neströ  r÷  r;   )rz   r:   r)  r(  Úsrcr&  r'  r%  Ú	allocsizer—   rÎ   r£   r  Údest_ptrr*  r/  r   r!  r"  r#  r$  r.  s   ```` ```        @@@@@@r@   Úmaybe_copy_sourcer5  Ò  s†  øøøøøøøøøøøøø€ àŒM€Eà€KÝÔ)¨'°8Ñ<Ô<€IØ€KØ€Là	�Š˜¨%ˆÑ	0Ô	0ð ;ð ;ð —K’K ¤¨c¬jÑ9Ô9ˆ	ØŒ{×#Ò# G¨YÑ7Ô7ˆØ”Iˆ	Ø�Š˜t UÑ+Ô+ˆØ�Š�d˜IÑ&Ô&Ð&ð ×'Ò'­¬
Ñ3Ô3ˆåÔ˜w¨
°FÑ;Ô;ð 	;¸wÝÔ/°¸À(Ø0:¸KØ05´¸gñGô GˆGõ Ô0°¸'À4Ø1<¸lØ1<¸gñGô GˆHð �MŠM˜'Ÿ,š, wÑ/Ô/°Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð,Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið Ið(,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ˜Ð#Ð#s8   ÁB$E1Ã+A#EÅE1ÅE	ÅE1Å!E	Å"E1Å1E5Å8E5c                 ó  ‡‡
— |                       t          j        d¦  «        }|                       t          j        d¦  «        Š
t          |¦  «        t          |¦  «        k    r2t          |¦  «        t          |¦  «        z
  }‰
g|z  |z   }|g|z  |z   }nõt          |¦  «        t          |¦  «        k     rÕt          |¦  «        t          |¦  «        z
  }ˆˆ
fd„|d|…         D ¦   «         }t	          j        ‰j        |t          j        ¦  «        }‰ 	                    ‰ 
                    |¦  «        d¬¦  «        5  d}	| j                             ‰t          |	f¦  «         ddd¦  «         n# 1 swxY w Y   ||d…         }||d…         }||fS )ae  
    Preprocess dimension for broadcasting.
    Returns (shapes, strides) such that the ndim match *target_shape*.
    When expanding to higher ndim, the returning shapes and strides are
    prepended with ones and zeros, respectively.
    When truncating to lower ndim, the shapes are checked (in runtime).
    All extra dimension must have size of 1.
    r   rD   c                 ó>   •— g | ]}‰                      d |‰¦  «        ‘ŒS ©rà  )rã  )rž   r1  r:   r(  s     €€r@   rŸ   z(_bc_adjust_dimension.<locals>.<listcomp>%  s;   ø€ ð 2ð 2ð 2Øð ×+Ò+¨D°"°cÑ:Ô:ð 2ð 2ð 2rB   NFrV  z,cannot broadcast source array for assignment)r¿   r   r�   r    Ú	functoolsÚreducer  r
   Útrue_bitr  r¶  rX  rY  r¸   )rz   r:   rþ   r¬   Útarget_shaperó   Únd_diffÚ
dim_is_oneÚacceptedrÍ   r(  s    `        @r@   Ú_bc_adjust_dimensionr@    sã  øø€ ð ×Ò¥¤¨QÑ/Ô/€DØ
×
Ò
�uœ{¨AÑ
.Ô
.€Cõ ˆ<ÑÔ�3˜v™;œ;Ò&Ð&Ý�lÑ#Ô#¥c¨&¡k¤kÑ1ˆà�˜‘ 6Ñ)ˆØ�&˜7Ñ" WÑ,ˆˆå	ˆ\Ñ	Ô	�S ™[œ[Ò	(Ð	(å�f‘+”+¥ LÑ 1Ô 1Ñ1ˆð2ð 2ð 2ð 2ð 2Ø & x¨ xÔ 0ð2ñ 2ô 2ˆ
åÔ# G¤L°*Ý$+Ô$4ñ6ô 6ˆð �_Š_˜WŸ\š\¨(Ñ3Ô3¸Eˆ_ÑBÔBð 	Kð 	KØ@ˆCØÔ×-Ò-¨gµzÀCÀ6ÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð ˜˜˜Ô!ˆØ˜'˜(˜(Ô#ˆà�7ˆ?Ðs   Ä:%E+Å+E/Å2E/c                 óš  ‡‡
‡— g }g }|                       t          j        d¦  «        Š|                       t          j        d¦  «        Š
ˆfd„t          ||¦  «        D ¦   «         }ˆˆ
fd„|D ¦   «         }ˆfd„t          ||¦  «        D ¦   «         }	ˆfd„t          |	||¦  «        D ¦   «         }ˆˆfd„t          |	|¦  «        D ¦   «         }||fS )zü
    Broadcast shapes and strides to target_shape given that their ndim already
    matches.  For each location where the shape is 1 and does not match the
    dim for target, it is set to the value at the target and the stride is
    set to zero.
    r   rD   c                 óD   •— g | ]\  }}‰                      d ||¦  «        ‘ŒS )rU  ©r
  )rž   ÚtarÚoldr:   s      €r@   rŸ   z,_bc_adjust_shape_strides.<locals>.<listcomp>@  s?   ø€ ð ;ð ;ð ;Ù�C˜ð ×#Ò# D¨#¨sÑ3Ô3ð ;ð ;ð ;rB   c                 ó>   •— g | ]}‰                      d |‰¦  «        ‘ŒS r8  rC  )rž   rE  r:   r(  s     €€r@   rŸ   z,_bc_adjust_shape_strides.<locals>.<listcomp>B  s+   ø€ ÐHÐHÐH¸#�'×%Ò% d¨C°Ñ5Ô5ÐHÐHÐHrB   c                 óB   •— g | ]\  }}‰                      ||¦  «        ‘ŒS r�   )r  )rž   ÚxÚyr:   s      €r@   rŸ   z,_bc_adjust_shape_strides.<locals>.<listcomp>C  s+   ø€ ÐFÐFÐF¡D A qˆW�\Š\˜!˜QÑÔÐFÐFÐFrB   c                 óF   •— g | ]\  }}}‰                      |||¦  «        ‘ŒS r�   ©rÉ  )rž   ÚprD  rE  r:   s       €r@   rŸ   z,_bc_adjust_shape_strides.<locals>.<listcomp>D  sE   ø€ ð Fð Fð FÙ �Q˜˜Sð —’  3¨Ñ,Ô,ð Fð Fð FrB   c                 óD   •— g | ]\  }}‰                      |‰|¦  «        ‘ŒS r�   rK  )rž   rL  rE  r:   ró   s      €€r@   rŸ   z,_bc_adjust_shape_strides.<locals>.<listcomp>F  s=   ø€ ð 5ð 5ð 5Ù�a˜ð —.’.  D¨#Ñ.Ô.ð 5ð 5ð 5rB   )r¿   r   r�   r¡   )rz   r:   rþ   r¬   r<  Ú	bc_shapesÚ
bc_stridesÚmismatchÚ
src_is_oneÚpredsr(  ró   s    `        @@r@   Ú_bc_adjust_shape_stridesrS  4  s-  øøø€ ð €IØ€JØ×Ò¥¤¨QÑ/Ô/€DØ
×
Ò
�uœ{¨AÑ
.Ô
.€Cð;ð ;ð ;ð ;Ý # L°&Ñ 9Ô 9ð;ñ ;ô ;€HàHÐHÐHÐHÐHÀÐHÑHÔH€JØFÐFÐFÐF­C°¸*Ñ,EÔ,EÐFÑFÔF€EðFð Fð Fð FÝ$'¨¨|¸VÑ$DÔ$DðFñ Fô F€Ið5ð 5ð 5ð 5ð 5Ý # E¨7Ñ 3Ô 3ð5ñ 5ô 5€Jà�jÐ Ð rB   c           	      óä  — t          j        ||j        ¦  «        }t          j        ||j        ¦  «        }t	          | ||||¦  «        \  }}t          | ||||¦  «        \  }}|                     t          |¦  «        d¬¦  «        } t          |¦  «        | |¦  «        }t          ||j
        t          j        ||¦  «        t          j        ||¦  «        |j        |j        |j        ¬¦  «         ||fS )zX
    Broadcast the given array to the target_shape.
    Returns (array_type, array)
    ÚA©rm   r÷  r5  )r
   rÀ   rb   r¬   r@  rS  Úcopyr    ru   rÕ   r—   rg   r­   r«   r®   )	rz   r:   Úarrtyper  r<  rþ   r¬   Únew_arrtypeÚnew_arrs	            r@   Ú_broadcast_to_shaper[  K  sú   € õ Ô! '¨3¬9Ñ5Ô5€FÝÔ" 7¨C¬KÑ8Ô8€Gå*¨7°G¸VÀWØ+7ñ9ô 9�O€FˆGå.¨w¸ÀØ/6¸ñFô F�O€FˆGà—,’,¥C¨Ñ$5Ô$5¸c�,ÑBÔB€Kà%�j˜Ñ%Ô% g¨wÑ7Ô7€GÝ�7ØœÝ Ô+¨G°VÑ<Ô<Ý"Ô-¨g°wÑ?Ô?ØœLØœ;Øœ*ð&ñ &ô &ð &ð ˜ÐÐrB   c                 ób   — |                      |j        dd¬¦  «        } |||¦  «        }d„ }||fS )NrU  T)rm   r÷  Úreadonlyc                 óš  — |\  }}|j         d         } t          |¦  «        | ||¦  «        }t          j        ||¦  «        }t	          | ||||¦  «        \  }}t          |dt          |                      |j         	                    d¦  «        ¦  «        d ¦  «        ¦  «         | 
                    ¦   «         }	t          | ||j        |	¦  «        S )Nr   r®   )ré   ru   r
   rÀ   r[  rÆ   r   r¹   r³   rº   rñ   r   rë   )
rz   r:   rX   ré   r2  Úshape_r(  rý  Údestrõ   s
             r@   Úcodegenz$_numpy_broadcast_to.<locals>.codegenj  sË   € Ø‰ˆˆVØ”˜”ˆà�j˜ÑÔ ¨°#Ñ6Ô6ˆÝÔ% g¨vÑ6Ô6ˆÝ% g¨w¸¸sÀFÑLÔL‰ˆˆ4õ 	��h¥Ø×&Ò& t¤×'?Ò'?ÀÑ'IÔ'IÑJÔJØñ!ô !ñ 	ô 	ð 	ð �nŠnÑÔˆÝ  ¨'°3´?ÀCÑHÔHÐHrB   )rW  rÁ   )Ú	typingctxrÇ   rb   ÚretrX   ra  s         r@   Ú_numpy_broadcast_tord  e  sJ   € à
�*Š*˜%œ+¨c¸Dˆ*Ñ
AÔ
A€CØ
ˆ#ˆe�UÑ
Ô
€CðIð Ið Ið �ˆ<ÐrB   c                 óR   — |                      d¬¦  «        } ||¦  «        }d„ }||fS )NT©r]  c                 óô   — |\  }|j         d         } t          |¦  «        | ||¦  «        }t          j        |j        j        ¦  «        |_        |                     ¦   «         }t          | ||j        |¦  «        S rá   )	ré   ru   r
   Úget_null_valuer®   r6   rñ   r   rë   )rz   r:   rX   ré   r2  r(  r`  rõ   s           r@   ra  z#get_readonly_array.<locals>.codegen‚  sk   € Ø‰ˆØ”˜”ˆà �z˜%Ñ Ô  ¨'°3Ñ7Ô7ˆåÔ,¨T¬[Ô-=Ñ>Ô>ˆŒØ�nŠnÑÔˆÝ  ¨'°3´?ÀCÑHÔHÐHrB   )rW  )rb  r  rc  rX   ra  s        r@   Úget_readonly_arrayri  |  sB   € ð �(Š(˜Dˆ(Ñ
!Ô
!€CØ
ˆ#ˆc‰(Œ(€CðIð Ið Ið �ˆ<ÐrB   c                 óD  — | j         }t          |¦  «        }t          |¦  «        }||k    rt          d¦  «        ‚|D ]}|dk     rt          d¦  «        ‚Œd}||z
  }||k     r>||         }||         }	||	k    s|dk    r|dz  }|dz  }nt          d¦  «        ‚||k     °<d S d S )NzDinput operand has more dimensions than allowed by the axis remappingr   z4all elements of broadcast shape must be non-negativerD   z=operands could not be broadcast together with remapped shapes)rb   r    r¸   )
rÇ   Ú
dest_shapeÚ	src_shapeÚsrc_ndimÚ	dest_ndimr�   Ú	src_indexÚ
dest_indexÚsrc_dimÚdest_dims
             r@   Ú_can_broadcastrs  Ž  sþ   € à”€IÝ�9‰~Œ~€HÝ�J‘”€IØ�)ÒÐÝð 1ñ 2ô 2ð 	2àð -ð -ˆØ�!Š8ˆ8Ýð ,ñ -ô -ð -ð ð
 €IØ˜XÑ%€JØ
�hÒ
Ð
Ø˜IÔ&ˆØ˜jÔ)ˆð �hÒÐ '¨Q¢, ,Ø˜‰NˆIØ˜!‰OˆJˆJåð 4ñ 5ô 5ð 5ð �hÒ
Ð
Ð
Ð
Ð
Ð
rB   c                 ój   — t          j        | ¦  «        } t          | |¦  «         t          | |¦  «        S r?  )ÚnpÚasarrayrs  rd  ©rÇ   rb   s     r@   Ú_default_broadcast_to_implrx  ®  s1   € ÝŒJ�uÑÔ€EÝ�5˜%Ñ Ô Ð Ý˜u eÑ,Ô,Ð,rB   c                 ó  — t          | ¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        rd„ }|S t          |t          j        ¦  «        r<t          |j        t          j        ¦  «        sd}t          j        |¦  «        ‚t          S t          |t          j	        ¦  «        rE|j
        dk    r:t          d„ |D ¦   «         ¦  «        sd|› d�}t          j        |¦  «        ‚t          S t          |t          j	        ¦  «        r\|j
        dk    rQt          | t          j        ¦  «        o
| j        dk    }t          | ¦  «        s|rd„ }|S d	}t          j        |¦  «        ‚d
|z  }t          j        |¦  «        ‚)Nz-The first argument "array" must be array-likec                 ó.   — t          j        | |f¦  «        S r?  )ru  Úbroadcast_torw  s     r@   rã   z numpy_broadcast_to.<locals>.impl»  s   € Ý”? 5¨5¨(Ñ3Ô3Ð3rB   z7The second argument "shape" must be a tuple of integersr   c                 óB   — g | ]}t          |t          j        ¦  «        ‘ŒS r�   )r”   r   ÚIntegerLiteral)rž   Útyps     r@   rŸ   z&numpy_broadcast_to.<locals>.<listcomp>Ç  s%   € ÐKÐKÐK¸c•J˜s¥EÔ$8Ñ9Ô9ÐKÐKÐKrB   ú"z," object cannot be interpreted as an integerc                 óH   — t          j        | ¦  «        } t          | ¦  «        S r?  )ru  rv  ri  rw  s     r@   rã   z numpy_broadcast_to.<locals>.implÏ  s!   € õ œ
 5Ñ)Ô)�Ý)¨%Ñ0Ô0Ð0rB   z/Cannot broadcast a non-scalar to a scalar arrayz:The argument "shape" must be a tuple or an integer. Got %s)r   r	   rä   r”   r   r–   ÚUniTuplerx   rx  ÚTuplerÁ   Úallr•   rm   r   )rÇ   rb   rã   rÍ   Úis_scalar_arrays        r@   Únumpy_broadcast_tor…  ´  s¢  € å˜EÑ"Ô"ð 2ÝÔ ð "1ñ 2ô 2ð 	2õ �%�œÑ'Ô'ð "&ð	4ð 	4ð 	4àˆå	�E�5œ>Ñ	*Ô	*ð &Ý˜%œ+¥u¤}Ñ5Ô5ð 	*ØKˆCÝÔ$ SÑ)Ô)Ð)Ý)Ð)å	�E�5œ;Ñ	'Ô	'ð &¨E¬K¸!ªO¨OåÐKÐKÀUÐKÑKÔKÑLÔLð 	*ØI�eÐIÐIÐIˆCÝÔ$ SÑ)Ô)Ð)Ý)Ð)Ý	�E�5œ;Ñ	'Ô	'ð &¨E¬K¸1Ò,<Ð,<Ý$ U­E¬KÑ8Ô8ÐL¸U¼ZÈ1º_ˆÝ˜%Ñ Ô ð 	* Oð 	*ð1ð 1ð 1ð
 ˆKð DˆCÝÔ$ SÑ)Ô)Ð)ðØñ ˆåÔ  Ñ%Ô%Ð%rB   c                 ó  — t          t          |¦  «        ¦  «        D ]h}|t          |¦  «        z
  |z   }||         }|dk     rt          d¦  «        ‚|dk    rŒ;| |         dk    r|| |<   ŒM| |         |k    rt          d¦  «        ‚Œid S )Nr   ú#negative dimensions are not allowedrD   z=shape mismatch: objects cannot be broadcast to a single shape)r5   r    r¸   )ÚrÚmrb   rj   rÓ   Útmps         r@   Únumpy_broadcast_shapes_listr‹  ß  s«   € å•3�u‘:”:ÑÔð 3ð 3ˆØ•�E‘
”
‰N˜QÑˆØ�AŒhˆØ�Š7ˆ7ÝÐBÑCÔCÐCØ�!Š8ˆ8ØØˆQŒ4�1Š9ˆ9ØˆAˆa‰DˆDØˆqŒT�SŠ[ˆ[Ýð 2ñ 3ô 3ð 3ð ð3ð 3rB   c                  ó|  ‡‡	— t          | ¦  «        D ]¬\  }}t          |t          j        ¦  «        }t          |t          j        ¦  «        ot          |j        t          j        ¦  «        }t          |t          j        ¦  «        ot          |j        ¦  «        dk    }|s |s|sd|› d|› �}t          j	        |¦  «        ‚Œ­dŠ| D ]d}t          |t          j        ¦  «        rt          ‰d¦  «        ŠŒ-t          |t          j        ¦  «        rt          ‰t          |¦  «        ¦  «        ŠŒe‰dk    rd„ S d‰z  Š	ˆˆ	fd„}|S )Nr   z	Argument z* must be either an int or tuple[int]. Got rD   c                  ó   — dS r”  r�   ©ré   s    r@   ú<lambda>z+ol_numpy_broadcast_shapes.<locals>.<lambda>  s   € ˜R€ rB   ©rD   c                  óJ  •— dg‰z  }‰}t          | ¦  «        D ]c}t          |t          ¦  «        r%t          |¦  «        dk    rt	          |‰|¦  «         Œ<t          |t
          ¦  «        rt	          |‰|f¦  «         Œdt          |¦  «        D ]\  }}t          |||¦  «        }Œ|S r¨  )r   r”   r»   r    r‹  r½   Ú	enumerater,   )ré   rˆ  rF  Úargr�   Úelemr‰  Útup_inits         €€r@   rã   z'ol_numpy_broadcast_shapes.<locals>.impl
  s·   ø€ à��a‘ˆAØˆCÝ% dÑ+Ô+ð >ð >�Ý˜c¥5Ñ)Ô)ð >­c°#©h¬h¸ªl¨lÝ/°°1°cÑ:Ô:Ð:Ð:Ý ¥SÑ)Ô)ð >Ý/°°1°s°fÑ=Ô=Ð=øÝ& q™\œ\ð 4ð 4‘	��TÝ# C¨¨dÑ3Ô3��ØˆJrB   )r’  r”   r   r–   r�  rx   r‚  r    r	   rä   ÚmaxrI  )
ré   r�   r“  Úis_intÚis_int_tupleÚis_empty_tuplerÍ   rã   r‰  r•  s
           @@r@   Úol_numpy_broadcast_shapesrš  ð  sh  øø€ õ ˜d‘O”Oð *ð *‰ˆˆSÝ˜C¥¤Ñ/Ô/ˆÝ! #¥u¤~Ñ6Ô6ð 1Ý�s”y¥%¤-Ñ0Ô0ð 	å# C­¬Ñ5Ô5ÐM½#¸c¼i¹.¼.ÈAÒ:MˆØð 	*˜,ð 	*¨.ð 	*ð ˜sð  ð  Øð ð  ˆCåÔ$ SÑ)Ô)Ð)øð 	
€AØð !ð !ˆÝ�c�5œ=Ñ)Ô)ð 	!Ý�A�q‘	”	ˆAˆAÝ˜�Uœ_Ñ-Ô-ð 	!Ý�A•s˜3‘x”xÑ Ô ˆAøàˆA‚v€vØÐÐà˜!‘8ˆð	ð 	ð 	ð 	ð 	ð 	ð ˆrB   c                  óŒ  ‡‡— t          | ¦  «        D ],\  }}t          |¦  «        st          j        d|› d�¦  «        ‚Œ-d }d }| D ]T}t	          |t
          j        t
          j        f¦  «        r|j        }n|}|€|}Œ7||k    rt          j        d| › �¦  «        ‚ŒUdŠt          | ¦  «        D ]�\  }}t	          |t
          j	        ¦  «        rt          ‰|j        ¦  «        ŠŒ5t	          |t
          j        t
          j        t
          j        f¦  «        rt          ‰d¦  «        ŠŒwt          j        d|› �¦  «        ‚d‰z  Šˆˆfd„}|S )	Nz
Argument "z" must be array-likezTMismatch of argument types. Numba cannot broadcast arrays with different types. Got r   rD   zUnhandled type ©r   c                  óz  •— dg‰z  }t          | ¦  «        D ]*}t          |‰t          j        |¦  «        j        ¦  «         Œ+‰}t          ‰¦  «        D ]}t          ||||         ¦  «        }Œg }t          | ¦  «        D ]<}|                     t          j        t          j        |¦  «        |¦  «        ¦  «         Œ=|S r’  )	r   r‹  ru  rv  rb   r5   r,   rf   r{  )ré   rb   rÇ   rF  rj   Úoutsr‰  r•  s         €€r@   rã   z$numpy_broadcast_arrays.<locals>.impl<  sÌ   ø€ ð
 ��a‘ˆÝ# DÑ)Ô)ð 	Kð 	KˆEÝ'¨¨qµ"´*¸UÑ2CÔ2CÔ2IÑJÔJÐJÐJàˆå�q‘”ð 	2ð 	2ˆAÝ  Q¨¨a¬Ñ1Ô1ˆCˆCð ˆÝ# DÑ)Ô)ð 	Að 	AˆEØ�KŠK�œ­¬
°5Ñ(9Ô(9¸3Ñ?Ô?Ñ@Ô@Ð@Ð@ØˆrB   )r’  r   r	   rä   r”   r   r•   rI  rx   ÚArrayCompatibler–  rm   ÚNumberrÒ  )ré   r�   r“  Úunified_dtypeÚdtrã   r‰  r•  s         @@r@   Únumpy_broadcast_arraysr£    s¥  øø€ õ ˜d‘O”Oð 6ð 6‰ˆˆSÝ Ñ$Ô$ð 	6ÝÔ$ð &5°#ð &5ð &5ð &5ñ 6ô 6ð 6ð	6ð €MØ	€BØð 4ð 4ˆÝ�c�EœK­¬Ð9Ñ:Ô:ð 	Ø”ˆBˆBàˆBàÐ ØˆMˆMØ˜bÒ Ð ÝÔ$ð &3à,0ð&3ð &3ñ 4ô 4ð 4ð !ð 	
€AÝ˜d‘O”Oð >ð >‰ˆˆSÝ�c�5Ô0Ñ1Ô1ð 	>Ý�A�s”xÑ Ô ˆAˆAÝ˜�eœl­E¬M½5¼?ÐKÑLÔLð 	>Ý�A�q‘	”	ˆAˆAåÔ$Ð%<°sÐ%<Ð%<Ñ=Ô=Ð=à�a‰x€Hðð ð ð ð ð ð( €KrB   c                 ó	  ‡ ‡‡'‡(‡)— |j         \  }}Š)|\  }}Š' t          |¦  «        ‰ ‰|¦  «        }t          j        ‰|j        ¦  «        }	t          j        ‰|j        ¦  «        }
|j        }t          ‰ ‰||||¦  «        }|                     ¦   «          t          ‰)t          j        ¦  «        �rÃ‰)j        Š(|                     ¦   «         } t          ‰)¦  «        ‰ ‰‰'¦  «        Š't          ‰ ‰‰)‰'|¦  «        \  Š)Š't          j        ‰‰'j        ¦  «        }t          j        ‰‰'j        ¦  «        }‰'j        }t          j        }t!          |¦  «        t!          |¦  «        k    sJ ‚t#          ||¦  «        D ]0\  }}‰                     |‰                     d||¦  «        ¦  «        }Œ1‰                     |d¬¦  «        5  d}‰ j                             ‰t.          |f¦  «         ddd¦  «         n# 1 swxY w Y   t1          ‰ ‰‰)‰'|||¦  «        \  }}|                     |
|j        ¦  «        \  }}t7          ‰ ‰|||¦  «        \  }}t9          ‰ ‰||||¦  «        }t;          ‰ ‰|‰)‰'|||¦  «        \  }}�nt          ‰)t          j        ¦  «        rí‰)j        Š(|                     ¦   «         }t!          |¦  «        dk    sJ ‚‰                      t           tA          t          j!        ‰)¦  «        ¦  «        } |‰‰'f¦  «        }‰                     d|d         |¦  «        }‰                     |d¬¦  «        5  d}‰ j                             ‰t.          |f¦  «         ddd¦  «         n# 1 swxY w Y   ˆˆ ˆ'ˆ(ˆ)fd„}d	„ }n
‰)Š(ˆ'fd
„}d„ }‰  "                    t          j#        d¦  «        } | $                    ¦   «         \  }!}"tK          |"¦  «        }"|j&        D ]}#|" '                    |#| ¦  «         Œd„ |"D ¦   «         }$ ||$¦  «        }%‰  (                    ‰|%‰(|j        ¦  «        }%t          j)        ‰ ‰||	|
|j*        |!d‰ j+        ¬¦	  «	        }&tY          ‰ ‰||%|&¦  «         | -                    ¦   «           |¦   «          ‰  .                    ¦   «         S )zÇ
    Implement slice assignment for arrays.  This implementation works for
    basic as well as fancy indexing, since there's no functional difference
    between the two for indexed assignment.
    rU  FrV  z0cannot assign slice from input of different sizeNrD   r   c                 óš   •— | \  }‰                      t          j        t          ‰‰t          j        ¦  «        ¦  «        } |‰‰|f¦  «        S r?  )rN   ÚoperatorÚgetitemr"   r   r‹   )r  r�   Úgetitem_implr:   rz   r2  Ú	src_dtyper(  s      €€€€€r@   r*  z#fancy_setslice.<locals>.src_getitemž  sN   ø€ Ø!‰DˆCØ"×/Ò/ÝÔ Ý˜) U­E¬JÑ7Ô7ñô ˆLð  �< ¨#¨s¨Ñ4Ô4Ð4rB   c                  ó   — d S r?  r�   r�   rB   r@   r/  z#fancy_setslice.<locals>.src_cleanup¦  ó   € ØˆDrB   c                 ó   •— ‰S r?  r�   )r  r2  s    €r@   r*  z#fancy_setslice.<locals>.src_getitem®  s   ø€ ØˆJrB   c                  ó   — d S r?  r�   r�   rB   r@   r/  z#fancy_setslice.<locals>.src_cleanup±  r«  rB   c                 ó   — g | ]}|®|‘ŒS r?  r�   )rž   r¯  s     r@   rŸ   z"fancy_setslice.<locals>.<listcomp>Å  s   € Ð9Ð9Ð9˜A¨1¨=�a¨=¨=¨=rB   r  )/ré   ru   r
   rÀ   rb   r¬   r—   rÎ  rb  r”   r   rû   rx   rh  r[  rá  r    r¡   râ  r
  r  rX  rY  r¸   r  rì  r­   r  r  r5  ÚSequencerN   r"   r‹   r¿   r�   rð  r¼   rÑ  rÚ  rŠ   rö  r÷  r8  r‡   ró  r\  )*rz   r:   rX   ré   r¢   r£   r×   rý  rý   Údest_shapesÚdest_stridesÚ	dest_datarÖ  Úindex_shaper&  r'  r%  Úshape_errorÚurÔ   rÍ   Ú	src_startÚsrc_endÚ
dest_lowerÚ
dest_upperÚ
dest_startÚdest_endr)  r*  r/  Úlen_implÚseq_lenró   Údest_indicesrï  rj   r  r†   r4  r2  r©  r(  s*   ``                                     @@@r@   rK  rK  S  sÂ  øøøøø€ ð ”h�O€Eˆ1ˆeØ�K€CˆˆCà
�*�UÑ
Ô
˜G W¨cÑ
2Ô
2€CÝÔ& w°´	Ñ:Ô:€KÝÔ'¨°´Ñ=Ô=€LØ”€Iå˜7 G¨U°CØ&¨ñ1ô 1€Gà‡O‚OÑÔÐå�%�œÑ&Ô&ñ Mà”Kˆ	Ø×'Ò'Ñ)Ô)ˆØ�j˜ÑÔ ¨°#Ñ6Ô6ˆå(¨°'¸5À#Ø)4ñ6ô 6‰
ˆˆsåÔ)¨'°3´9Ñ=Ô=ˆ
ÝÔ*¨7°C´KÑ@Ô@ˆØ”8ˆõ Ô'ˆÝ�;ÑÔ¥3 z¡?¤?Ò2Ð2Ð2Ð2å˜
 KÑ0Ô0ð 	Gð 	G‰DˆAˆqØ!Ÿ+š+ kØ&-×&9Ò&9¸$ÀÀ1Ñ&EÔ&EñGô GˆKˆKð �_Š_˜[°ˆ_Ñ7Ô7ð 	Kð 	KØDˆCØÔ×-Ò-¨gµzÀCÀ6ÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kõ
 6°g¸wÈØ69¸:Ø6AÀ8ñMô MÑˆ	�7ð ")×!:Ò!:¸<Ø;>¼<ñ"Iô "IÑˆ
�Jå5°g¸wØ6@À*Ø6?ñ Aô  AÑˆ
�Hõ ' w°¸ÀGØ'1°8ñ=ô =ˆõ $5°W¸gÀxØ5:¸CÀØ5@À(ñ$Lô $LÑ ˆ�[‘[õ 
�E�5œ>Ñ	*Ô	*ð #Ø”Kˆ	ð ×'Ò'Ñ)Ô)ˆÝ�;ÑÔ 1Ò$Ð$Ð$Ð$Ø×'Ò'­­Yµu´zÀ5Ñ-IÔ-IÑJÔJˆØ�(˜7 S FÑ+Ô+ˆà×)Ò)¨$°¸A´ÀÑHÔHˆà�_Š_˜[°ˆ_Ñ7Ô7ð 	Kð 	KØDˆCØÔ×-Ò-¨gµzÀCÀ6ÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð	ð 	ð 	ð 	ð ˆ	ð	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð ×Ò¥¤¨QÑ/Ô/€Dà"×.Ò.Ñ0Ô0Ñ€L�&õ �&‰\Œ\€Fð
 Œ_ð ð ˆØ�Š�a˜ÑÔÐÐà9Ð9 Ð9Ñ9Ô9€Nà
ˆ+�nÑ
%Ô
%€Cð �,Š,�w  Y°´Ñ
<Ô
<€Cõ Ô(¨°'¸9Ø)4°lØ).¬°|Ø49Ø5<Ô5Oð	Qñ Qô Q€Hõ
 ˆw˜ ¨¨XÑ6Ô6Ð6à×ÒÑÔÐà€K�M„M€Mà×"Ò"Ñ$Ô$Ð$s$   Æ;%G,Ç,G0Ç3G0Ì0%M!Í!M%Í(M%c                 ó~  ‡ ‡— |j         d         }|j         dd …         }|d         }|dd …         }ˆˆ fd„t          ||¦  «        D ¦   «         }t          j        ‰||d         j        ¦  «        }t          j        t
          j        t          |¦  «        ¬¦  «        }	t          j
        |j        ||	¦  «        }
||f}|
|fS )Nr   rD   c                 óZ   •— g | ]'\  }}‰                      ‰||t          j        ¦  «        ‘Œ(S r�   ©rŠ   r   r‹   )rž   rA  r†   r:   rz   s      €€r@   rŸ   z#vararg_to_tuple.<locals>.<listcomp>æ  sA   ø€ ð .ð .ð .Ù��Cð �LŠL˜ # r­5¬:Ñ6Ô6ð .ð .ð .rB   ©rx   rÁ   )ré   r¡   r
   rg   r6   r   r�  r‹   r    r   r"   rë   )rz   r:   rX   ré   r×   Údimtysrý   ri   rb   ÚshapetyÚnew_sigÚnew_argss   ``          r@   Úvararg_to_tuplerÇ  ß  sÍ   øø€ ØŒH�QŒK€EØŒX�a�b�bŒ\€Fà
ˆqŒ'€CØ���Œ8€Dð.ð .ð .ð .ð .Ý˜v tÑ,Ô,ð.ñ .ô .€Dõ Ô˜w¨¨d°1¬g¬lÑ;Ô;€EåŒn¥5¤:µS¸±Y´YÐ?Ñ?Ô?€GÝÔ˜sœ°°wÑ?Ô?€GØ�Eˆz€Hà�HÐÐrB   zarray.transposec                 óH   — t          | ||j        d         |d         ¦  «        S rá   )Úarray_Tré   ©rz   r:   rX   ré   s       r@   Úarray_transposerË  ò  s    € å�7˜G S¤X¨a¤[°$°q´'Ñ:Ô:Ð:rB   c                 ó*  — t          | ¦  «        t          t          | ¦  «        ¦  «        k    rt          d¦  «        ‚t          |¦  «        }| D ]*}||k    st          |¦  «        |k    rt          d¦  «        ‚Œ+||          |d d …<   ||          |d d …<   d S )Nzrepeated axis in transposez2axis is out of bounds for array of given dimension)r    rµ   r¸   Úabs)rÝ   rb   r¬   rs  rH  s        r@   Úpermute_arraysrÎ  ÷  s£   € Ý
ˆ4�y„y•C�˜D™	œ	‘N”NÒ"Ð"ÝÐ5Ñ6Ô6Ð6Ý
ˆe‰*Œ*€CØð 0ð 0ˆØ�Š8ˆ8•s˜1‘v”v ’|�|Ýð /ñ 0ô 0ð 0ð $ð �TŒ{€Eˆ!ˆ!ˆ!�HØ˜”€GˆAˆAˆA�J€J€JrB   c           
      ó  ‡ ‡‡‡— |j         d         } t          |¦  «        ‰ ‰|d         ¦  «        }|j         d         |d         }}|j        |j        }	}‰                      t
          j        ¦  «        }
t          j        |
|¦  «        Š||j	        |j
        g}ˆˆfd„|D ¦   «         }t          ||¦  «        D ]\  }}‰                     ||¦  «         Œt          j        |	dd¬¦  «        Š‰                      t
          j        ‰                      |
¦  «        ¦  «        }ˆˆ ˆfd„|D ¦   «         }t          ||¦  «        D ]`\  }}t!          |‰                     ||
                     ¦   «         ¦  «        ‰                      t
          j        |¦  «        g|g|d ¬¦  «         Œa‰                      ‰t(          t+          j        t
          j        ‰‰‰¦  «        d„ |D ¦   «         ¦  «          t          |j        ¦  «        ‰ ‰¦  «        }t!          ||j        ‰                     |d         ¦  «        ‰                     |d	         ¦  «        |j        |j        |j        ¬
¦  «         |                     ¦   «         }t?          ‰ ‰|j        |¦  «        S )Nr   rD   c                 ó:   •— g | ]}t          j        ‰‰¦  «        ‘ŒS r�   ©r
   rT   )rž   rý  r:   Úll_ary_sizes     €€r@   rŸ   z)array_transpose_tuple.<locals>.<listcomp>  s&   ø€ ÐGÐGÐG¸Q�wÔ" 7¨KÑ8Ô8ÐGÐGÐGrB   r¦   ©rx   rm   r÷  c                 óB   •— g | ]} t          ‰¦  «        ‰‰¦  «        ‘ŒS r�   ©ru   )rž   rý  r:   rz   Ú	np_ary_tys     €€€r@   rŸ   z)array_transpose_tuple.<locals>.<listcomp>  s.   ø€ ÐEÐEÐE¸1Ð$�z˜)Ñ$Ô$ W¨gÑ6Ô6ÐEÐEÐErB   ©r—   rb   r¬   r­   r«   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r�   ©rñ   ©rž   Úas     r@   rŸ   z)array_transpose_tuple.<locals>.<listcomp>.  s    € Ð=Ð=Ð=°˜aŸkšk™mœmÐ=Ð=Ð=rB   é   r5  ) ré   ru   rÁ   rx   r¹   r   r‹   r   Ú	ArrayTyperb   r¬   r¡   r  r•   r¿   ry   rÕ   r,  Ú
as_pointerÚcompile_internalrÎ  r   r"   Úvoidrë   r—   r;   r­   r«   r®   rñ   r   )rz   r:   rX   ré   r×   rý   ÚaxistyrÝ   Únum_axisrx   rt  ÚarysÚll_arysr2  ÚdstÚnp_itemsizeÚnp_arysÚnp_aryÚll_aryrc  rõ   rÒ  rÖ  s   ``                   @@r@   Úarray_transpose_tuplerê    sœ  øøøø€ àŒH�QŒK€EØ
�*�UÑ
Ô
˜G W¨d°1¬gÑ
6Ô
6€Cà”8˜A”;  Q¤ˆD€FØ”l F¤Lˆe€Hà×$Ò$¥U¤ZÑ0Ô0€GÝ”,˜w¨Ñ1Ô1€Kð �#”)˜Sœ[Ð)€DØGÐGÐGÐGÐGÀ$ÐGÑGÔG€Gõ ˜˜gÑ&Ô&ð  ð  ‰ˆˆSØ�Š�c˜3ÑÔÐÐå” %¨a¸Ð<Ñ<Ô<€IØ×&Ò&¥u¤zØ'.×'=Ò'=¸gÑ'FÔ'FñHô H€Kð FÐEÐEÐEÐEÐEÀÐEÑEÔE€Gõ ˜g wÑ/Ô/ð %ð %‰ˆ�Ý�vØ#ŸOšO¨F°G×4FÒ4FÑ4HÔ4HÑIÔIØ%×2Ò2µ5´:¸xÑHÔHÐIØ +˜}Ø +Ø#ð	%ñ 	%ô 	%ð 	%ð 	%ð ×Ò˜W¥nÝ#Ô-­e¬jØ.7¸ÀIñOô Oà=Ð=°WÐ=Ñ=Ô=ñ?ô ?ð ?ð &�*�S”_Ñ
%Ô
% g¨wÑ
7Ô
7€CÝ�3ØœØ Ÿš g¨a¤jÑ1Ô1Ø"Ÿ<š<¨°¬
Ñ3Ô3ØœLØœ;Øœ*ð&ñ &ô &ð &ð �-Š-‰/Œ/€CÝ˜W g¨s¬ÀÑDÔDÐDrB   c                 óP   — t          | |||¦  «        \  }}t          | |||¦  «        S r?  )rÇ  rê  ©rz   r:   rX   ré   rÅ  rÆ  s         r@   Úarray_transpose_varargrí  =  s.   € å'¨°¸#¸tÑDÔDÑ€GˆXÝ  ¨'°7¸HÑEÔEÐErB   c                 óx   — t          | t          j        ¦  «        rt          j        d¦  «        ‚|€dd„}ndd„}|S )Nz#np.transpose does not accept tuplesc                 ó*   — |                       ¦   «         S r?  ©Ú	transpose©rÛ  Úaxess     r@   Únp_transpose_implz*numpy_transpose.<locals>.np_transpose_implI  s   € Ø—;’;‘=”=Ð rB   c                 ó,   — |                       |¦  «        S r?  rð  rò  s     r@   rô  z*numpy_transpose.<locals>.np_transpose_implL  s   € Ø—;’;˜tÑ$Ô$Ð$rB   r?  )r”   r   rI  r	   ÚUnsupportedError)rÛ  ró  rô  s      r@   Únumpy_transposer÷  C  sc   € å�!•U”_Ñ%Ô%ð MÝÔ%Ð&KÑLÔLÐLà€|ð	!ð 	!ð 	!ð 	!ð 	!ð	%ð 	%ð 	%ð 	%ð ÐrB   ÚTc                 ó  — |j         dk    r|}né t          |¦  «        | ||¦  «        } t          |¦  «        | |¦  «        }t          j        ||j        |j         ¦  «        }t          j        ||j        |j         ¦  «        }t          ||j        t          j        ||d d d…         ¦  «        t          j        ||d d d…         ¦  «        |j	        |j
        |j        ¬¦  «         |                     ¦   «         }t          | |||¦  «        S )NrD   éÿÿÿÿr5  )rm   ru   r
   rÀ   rb   r¬   rÕ   r—   rg   r­   r«   r®   rñ   r   )	rz   r:   r~  r  rõ   rý   rc  rþ   r¬   s	            r@   rÉ  rÉ  R  sø   € à
„x�1‚}€}Øˆˆà�j˜‰oŒo˜g w°Ñ6Ô6ˆØ�j˜‰oŒo˜g wÑ/Ô/ˆÝÔ% g¨s¬y¸#¼(ÑCÔCˆÝÔ& w°´¸S¼XÑFÔFˆÝ�sØœHÝ$Ô/°¸ÀÀÀ"À¼ÑFÔFÝ&Ô1°'¸7À4À4ÀRÀ4¼=ÑIÔIØ #¤Ø"œ{Ø!œjð	*ñ 	*ô 	*ð 	*ð �mŠm‰oŒoˆÝ˜W g¨s°CÑ8Ô8Ð8rB   é2   c                 ó0  — t          | t          j        ¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        st          j        d¦  «        ‚t          |t
          t          j        f¦  «        st          j        d¦  «        ‚dd„}|S )Nz+The first argument "start" must be a numberz+The second argument "stop" must be a numberz+The third argument "num" must be an integerrû  c                 óX   — t          j        | ||¦  «        }t          j        d|¦  «        S )Ng      $@)ru  ÚlinspaceÚpower)r#  rÊ  ÚnumrI  s       r@   rã   znumpy_logspace.<locals>.implo  s'   € ÝŒK˜˜t SÑ)Ô)ˆÝŒx˜˜aÑ Ô Ð rB   ©rû  )r”   r   r   r	   rä   r½   r–   )r#  rÊ  r   rã   s       r@   Únumpy_logspacer  f  s—   € å�e�Uœ\Ñ*Ô*ð PÝÔ Ð!NÑOÔOÐOÝ�d�EœLÑ)Ô)ð PÝÔ Ð!NÑOÔOÐOÝ�c�C¥¤Ð/Ñ0Ô0ð PÝÔ Ð!NÑOÔOÐOð!ð !ð !ð !ð €KrB   c                 óü  ‡— t          | t          j        ¦  «        sd}t          j        |¦  «        ‚t          |t          j        ¦  «        sd}t          j        |¦  «        ‚t          |t
          t          j        f¦  «        sd}t          j        |¦  «        ‚t          d„ | |fD ¦   «         ¦  «        rDt          t          j
        t          | ¦  «        t          |¦  «        d ¦  «        ¦  «        Šdˆfd„	}ndd„}|S )	Nz%The argument "start" must be a numberz$The argument "stop" must be a numberú%The argument "num" must be an integerc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r?  ©r”   r   ÚComplex©rž   r“  s     r@   rB  z"numpy_geomspace.<locals>.<genexpr>„  ó.   è è € Ð
CÐ
C¨c�:�c�5œ=Ñ)Ô)Ð
CÐ
CÐ
CÐ
CÐ
CÐ
CrB   rû  c                 óæ  •— | dk    s|dk    rt          d¦  «        ‚ ‰	| ¦  «        }  ‰	|¦  «        }| j        dk    |j        dk    z  }t          j        | ¦  «        dk    t          j        |¦  «        dk    z  }d}|r| j        } |j        }d}|r	|  } | }| }t          j        | ¦  «        }t          j        |¦  «        }t          j        |||¦  «        }|dk    r| |d<   |dk    r||d<   ||z  S )Nr   ú&Geometric sequence cannot include zerorú  rD   y              ð?)r¸   Úrealru  ÚsignÚimagÚlog10Úlogspace)
r#  rÊ  r   Úboth_imaginaryÚboth_negativeÚout_signÚlogstartÚlogstopr  Úresult_dtypes
            €r@   rã   znumpy_geomspace.<locals>.implˆ  s  ø€ Ø˜Šzˆz˜T QšY˜YÝ Ð!IÑJÔJÐJØ �L Ñ'Ô'ˆEØ�< Ñ%Ô%ˆDØ#œj¨Ašo°$´)¸q².ÑAˆNÝœW U™^œ^¨rÒ1µb´g¸d±m´mÀrÒ6IÑJˆMØˆHØð Øœ
�Ø”y�Ø�Øð %Ø˜�Ø�u�Ø$˜9�Ý”x ‘”ˆHÝ”h˜t‘n”nˆGÝ”[ ¨7°CÑ8Ô8ˆFð �QŠwˆwØ!��q‘	Ø˜’7�7Ø!%�F˜2‘JØ˜fÑ$Ð$rB   c                 óf  — | dk    s|dk    rt          d¦  «        ‚t          j        | ¦  «        dk    t          j        |¦  «        dk    z  }d}|r	|  } | }| }t          j        | ¦  «        }t          j        |¦  «        }t          j        |||¦  «        }|dk    r| |d<   |dk    r||d<   ||z  S )Nr   r  rú  rD   )r¸   ru  r  r  r  )r#  rÊ  r   r  r  r  r  r  s           r@   rã   znumpy_geomspace.<locals>.impl¥  sÆ   € Ø˜Šzˆz˜T QšY˜YÝ Ð!IÑJÔJÐJÝœW U™^œ^¨rÒ1µb´g¸d±m´mÀrÒ6IÑJˆMØˆHØð %Ø˜�Ø�u�Ø$˜9�Ý”x ‘”ˆHÝ”h˜t‘n”nˆGÝ”[ ¨7°CÑ8Ô8ˆFð �QŠwˆwØ!��q‘	Ø˜’7�7Ø!%�F˜2‘JØ˜fÑ$Ð$rB   r  )r”   r   r   r	   rä   r½   r–   rC  r   ru  Úresult_typer   )r#  rÊ  r   rÍ   rã   r  s        @r@   Únumpy_geomspacer  v  s  ø€ å�e�Uœ\Ñ*Ô*ð &Ø5ˆÝÔ  Ñ%Ô%Ð%å�d�EœLÑ)Ô)ð &Ø4ˆÝÔ  Ñ%Ô%Ð%å�c�C¥¤Ð/Ñ0Ô0ð &Ø5ˆÝÔ  Ñ%Ô%Ð%å
Ð
CÐ
C°e¸T°]Ð
CÑ
CÔ
CÑCÔCð 4%Ý!¥"¤.µ¸%±´Ý19¸$±´Àñ#Gô #Gñ Hô Hˆð	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð:	%ð 	%ð 	%ð 	%ð* €KrB   rD   c                 ó  — t          |t          t          j        f¦  «        st	          j        d¦  «        ‚t          | t          j        ¦  «        st	          j        d¦  «        ‚| j        dk     rt	          j        d¦  «        ‚dd„}|S )Nz*The second argument "k" must be an integerz'The first argument "m" must be an arrayrÜ  úInput must be >= 2-d.rD   c                 óJ  — |dz  }|dk    r
| d d …         S |dk    r(t          j        t          j        | ¦  «        dd¦  «        S |dk    r&t          j        t          j        | ¦  «        ¦  «        S |dk    r(t          j        t          j        | dd¦  «        ¦  «        S t          ‚)Né   r   rD   rÜ  é   )ru  ÚswapaxesÚfliplrÚflipudrÓ  )r‰  rÓ   s     r@   rã   znumpy_rot90.<locals>.implÈ  s”   € Ø�‰EˆØ�Š6ˆ6Ø�Q�Q�Q”4ˆKØ�!ŠVˆVÝ”;�rœy¨™|œ|¨Q°Ñ2Ô2Ð2Ø�!ŠVˆVÝ”9�RœY q™\œ\Ñ*Ô*Ð*Ø�!ŠVˆVÝ”9�Rœ[¨¨A¨qÑ1Ô1Ñ2Ô2Ð2å Ð rB   r�  )	r”   r½   r   r–   r	   rä   r•   rm   ÚNumbaValueError)r‰  rÓ   rã   s      r@   Únumpy_rot90r#  ½  s�   € õ �a�#�uœ}Ð-Ñ.Ô.ð OÝÔ Ð!MÑNÔNÐNÝ�a�œÑ%Ô%ð LÝÔ Ð!JÑKÔKÐKà„v�‚z€zÝÔ$Ð%<Ñ=Ô=Ð=ð!ð !ð !ð !ð €KrB   c                 ó°  — |                       t          j        ¦  «        }|                     ¦   «         }|                       t          j        ¦  «        }	t          j        |	||||||||	g¦  «        }
t          j        |j	        |
d¦  «        } ||j
        ¦  «        }t          j        ||                     d¦  «        dd¦  «        }t          j        ||                     d¦  «        dd¦  «        } ||¦  «        }t          j        ||dd¦  «        }t          j        ||dd¦  «        } |	d¦  «        }|                     ||||||||j        |g¦  «        }|S )a  
    Call into Numba_attempt_nocopy_reshape() for the given array type
    and instance, and the specified new shape.

    Return value is non-zero if successful, and the array pointed to
    by *newstrides* will be filled up with the computed results.
    Únumba_attempt_nocopy_reshaperb   r   r¬   )r¹   r   r‹   rÞ  Úintcr   ÚFunctionTyper
   Úget_or_insert_functionr7   rm   re   rd   Úcallr­   )rz   r:   r×   rý   ÚnewndÚnewshapeÚ
newstridesrt  Úll_intp_starÚll_intcÚfntyÚfnÚndrb   r¬   Ú
is_f_orderrõ   s                    r@   Ú_attempt_nocopy_reshaper3  Ø  sd  € ð ×$Ò$¥U¤ZÑ0Ô0€GØ×%Ò%Ñ'Ô'€LØ×$Ò$¥U¤ZÑ0Ô0€GÝŒ?˜7à�˜|à�˜|à�ð%ñ ô €Dõ 
Ô	'¨¬¸Ø(Fñ
Hô 
H€Bð 
ˆ�”Ñ	Ô	€BÝÔ  ¨#×*>Ò*>¸wÑ*GÔ*GÈÈAÑNÔN€EÝÔ" 7¨C×,@Ò,@ÀÑ,KÔ,KØ#$ añ)ô )€GàˆG�E‰NŒN€EÝÔ# G¨X°q¸!Ñ<Ô<€HÝÔ% g¨z¸1¸aÑ@Ô@€JØ�˜‘”€JØ
�,Š,�r˜B  wØ! 8¨ZØœL¨*ð6ñ 7ô 7€Cð €JrB   c                 ó(  — d}d}t          |¦  «        D ]\  }}|dk     r|dz  }|}Œ||z  }Œ|dk    r| |k    rt          d¦  «        ‚d S |dk    r5|dk    r	d}| dk    }n| |z  }| |z  dk    }|st          d¦  «        ‚|||<   d S t          d¦  «        ‚)Nr   rD   z)total size of new array must be unchangedzmultiple negative shape values)r’  r¸   )	Úorigsizerb   Únum_neg_valueÚ
known_sizer-  r§   Úneg_axÚinferredÚoks	            r@   Únormalize_reshape_valuer;  ü  sî   € Ø€MØ€JÝ˜5Ñ!Ô!ð ð ‰ˆˆAØˆqŠ5ˆ5Ø˜QÑˆMØˆFˆFà˜!‰OˆJˆJà˜ÒÐØ�zÒ!Ð!ÝÐHÑIÔIÐIð "Ð!ð 
˜!Ò	Ð	à˜Š?ˆ?ØˆHØ˜Q’ˆBˆBà :Ñ-ˆHØ˜JÑ&¨!Ò+ˆBØð 	JÝÐHÑIÔIÐIØ ˆˆf‰ˆˆõ Ð9Ñ:Ô:Ð:rB   zarray.reshapec           	      ó,  — |j         d         }|j        }|j         d         }|d         }|                      t          j        ¦  «        }t          j        ||j        ¦  «        }	 t          |¦  «        | ||d         ¦  «        }
t          j
        ||	¦  «        }|                     ||¦  «         t          j        |j        dd¬¦  «        } t          |¦  «        | |¦  «        }|                      t          j        |                      |¦  «        ¦  «        }t!          ||                     ||                     ¦   «         ¦  «        |                      t          j        |j        ¦  «        g|g|d ¬¦  «         |
j        }|                      |t*          t-          j        t          j        t          j        |¦  «        ||                     ¦   «         g¦  «         |j        }t          j
        ||	¦  «        }t7          | |||
|||¦  «        }|                     d||                     d¦  «        ¦  «        }|                     |¦  «        5  d}| j                              |tB          |f¦  «         d d d ¦  «         n# 1 swxY w Y    t          |¦  «        | |¦  «        }t!          ||
j"        | #                    |¦  «        | #                    |¦  «        |
j$        |
j%        |
j&        ¬¦  «         |                     ¦   «         }tO          | ||j        |¦  «        S )	Nr   rD   r¦   rÓ  r×  rà  zincompatible shape for arrayr5  )(ré   rë   r¹   r   r‹   r   rÝ  rÁ   ru   r
   rT   r  r•   rx   r¿   ry   rÕ   r,  rÞ  r²   rß  r;  r   r"   rà  r�   rñ   r3  rã  r6   r  rX  rY  rO   r—   r;   r­   r«   r®   r   )rz   r:   rX   ré   r×   ÚrettyrÄ  rb   rt  Úll_shaperý   r+  Úshape_ary_tyÚ	shape_aryÚshape_itemsizer�   r*  r,  r:  ÚfailrÍ   rc  rõ   s                          r@   Úarray_reshaperC    s+  € àŒH�QŒK€EØŒO€EàŒh�qŒk€GØ�ŒG€Eà×$Ò$¥U¤ZÑ0Ô0€GÝŒ|˜G W¤]Ñ3Ô3€Hà
�*�UÑ
Ô
˜G W¨d°1¬gÑ
6Ô
6€Cõ Ô" 7¨HÑ5Ô5€HØ‡M‚M�%˜Ñ"Ô"Ð"õ ”; W¤]¸À3ÐGÑGÔG€LØ(•
˜<Ñ(Ô(¨°'Ñ:Ô:€IØ×)Ò)­%¬*Ø*1×*@Ò*@ÀÑ*IÔ*IñKô K€Nå�9ØŸš¨°'×2DÒ2DÑ2FÔ2FÑGÔGØ!×.Ò.­u¬z¸7¼=ÑIÔIÐJØ*Ð+Ø*Øð!ñ !ô !ð !ð Œ:€Dð ×Ò˜WÕ&=Ý#Ô-­e¬jÝ.3¬k¸<ñIô Ià" I×$7Ò$7Ñ$9Ô$9Ð:ñ<ô <ð <ð ŒM€EÝÔ$ W¨hÑ7Ô7€Jå	  ¨'°5¸#¸uØ!)¨:ñ
7ô 
7€Bà× Ò   r¨2¯7ª7°1©:¬:Ñ6Ô6€Dà	�Š˜Ñ	Ô	ð Pð PØ,ˆØÔ×)Ò)¨'Õ3FÈÈÑOÔOÐOðPð Pð Pñ Pô Pð Pð Pð Pð Pð Pð Pøøøð Pð Pð Pð Pð �*�UÑ
Ô
˜G WÑ
-Ô
-€CÝ�3ØœØ Ÿš hÑ/Ô/Ø"Ÿ<š<¨
Ñ3Ô3ØœLØœ;Øœ*ð&ñ &ô &ð &ð �-Š-‰/Œ/€CÝ˜W g¨s¬ÀÑDÔDÐDs   É%I7É7I;É>I;c                 óP   — t          | |||¦  «        \  }}t          | |||¦  «        S r?  )rÇ  rC  rì  s         r@   Úarray_reshape_varargrE  [  s.   € å'¨°¸#¸tÑDÔDÑ€GˆXÝ˜ '¨7°HÑ=Ô=Ð=rB   c                 ó   — d„ }|S )Nc                 ó,   — |                       |¦  «        S r?  )Úreshape)rÛ  r+  s     r@   Únp_reshape_implz#np_reshape.<locals>.np_reshape_implc  s   € Ø�yŠy˜Ñ"Ô"Ð"rB   r�   )rÛ  r+  rI  s      r@   Ú
np_reshaperJ  a  s   € ð#ð #ð #àÐrB   c                 ó(  — t          | ¦  «        sd}t          j        |¦  «        ‚t          |t          j        ¦  «        rt          |j        t          j        ¦  «        s0t          |t          j        ¦  «        sd}t          j        |¦  «        ‚d„ }|S )Nú#The argument "a" must be array-likezBThe argument "new_shape" must be an integer or a tuple of integersc                 ó8  — t          j        | ¦  «        } t          j        | ¦  «        } t          |t          ¦  «        r6d}t          j        |¦  «        D ]}||z  }|dk     rd}t          |¦  «        ‚Œn|dk     rd}t          |¦  «        ‚|}| j        dk    r,t          j        |¦  «                             | j	        ¦  «        S | | j        z   }| }t          |dz
  ¦  «        D ]}t          j        || f¦  «        }Œ|d |…         }t          j        ||¦  «        S )NrD   r   z0All elements of `new_shape` must be non-negative)ru  rv  Úravelr”   r»   r¸   r�   ÚzerosÚastyperx   r5   ÚconcatenaterH  )	rÛ  Ú	new_shapeÚnew_sizeÚ
dim_lengthrÍ   Úmsg2Úrepeatsrõ   rj   s	            r@   rã   znumpy_resize.<locals>.implx  s-  € ÝŒJ�q‰MŒMˆÝŒH�Q‰KŒKˆå�i¥Ñ'Ô'ð 	!ØˆHÝ œj¨Ñ3Ô3ð *ð *�
Ø˜JÑ&�Ø ’>�>ØL�CÝ$ S™/œ/Ð)ð "ð*ð ˜1Š}ˆ}ØI�Ý  Ñ&Ô&Ð&Ø ˆHàŒ6�QŠ;ˆ;Ý”8˜IÑ&Ô&×-Ò-¨a¬gÑ6Ô6Ð6à�I ¤Ñ'Ð(ˆØˆÝ�w ‘{Ñ#Ô#ð 	+ð 	+ˆAÝ”. # q Ñ*Ô*ˆCˆCØ�)�8�)ŒnˆåŒz˜#˜yÑ)Ô)Ð)rB   )r   r	   rä   r”   r   r�  rx   r–   )rÛ  rR  rÍ   rã   s       r@   Únumpy_resizerW  h  s˜   € õ ˜AÑÔð &Ø3ˆÝÔ  Ñ%Ô%Ð%å˜	¥5¤>Ñ2Ô2ð &å˜	œ­¬Ñ7Ô7ð&õ �y¥%¤-Ñ0Ô0ð	&ð
%ˆåÔ  Ñ%Ô%Ð%ð*ð *ð *ð8 €KrB   c                 ó  — t          | ¦  «        st          j        d¦  «        ‚t          |¦  «        st          j        d¦  «        ‚t          |¦  «        rdd„}n2t	          |t
          j        ¦  «        st          j        d¦  «        ‚dd„}|S )Nz+The first argument "arr" must be array-likez/The second argument "values" must be array-likec                 óÆ   — t          j        t          j        | ¦  «        ¦  «        } t          j        t          j        |¦  «        ¦  «        }t          j        | |f¦  «        S r?  )ru  rN  rv  rQ  ©r  ÚvaluesrÝ   s      r@   rã   znp_append.<locals>.impl¢  sF   € Ý”(�2œ: c™?œ?Ñ+Ô+ˆCÝ”X�bœj¨Ñ0Ô0Ñ1Ô1ˆFÝ”> 3¨ -Ñ0Ô0Ð0rB   z,The third argument "axis" must be an integerc                 ó2   — t          j        | |f|¬¦  «        S ©N©rÝ   ©ru  rQ  rZ  s      r@   rã   znp_append.<locals>.impl¬  s   € Ý”> 3¨ -°dÐ;Ñ;Ô;Ð;rB   r?  )r   r	   rä   r   r”   r   r–   )r  r[  rÝ   rã   s       r@   Ú	np_appendr`  —  sÅ   € õ ˜CÑ Ô ð PÝÔ Ð!NÑOÔOÐOå˜FÑ#Ô#ð /ÝÔ ð ".ñ /ô /ð 	/õ �4ÑÔð <ð	1ð 	1ð 	1ð 	1ð 	1õ ˜$¥¤Ñ.Ô.ð 	0ÝÔ$ð &/ñ 0ô 0ð 0ð	<ð 	<ð 	<ð 	<à€KrB   zarray.ravelc                 ó¦   — d„ }d„ }|j         d         j        dk    r|}n|}|                      ||||¦  «        }t          | ||j        |¦  «        }|S )Nc                 ó6   — |                       | j        ¦  «        S )zNo copy version)rH  r�   ©rý   s    r@   Ú
imp_nocopyzarray_ravel.<locals>.imp_nocopy´  s   € à�{Š{˜3œ8Ñ$Ô$Ð$rB   c                 ó*   — |                       ¦   «         S )zCopy version)Úflattenrc  s    r@   Úimp_copyzarray_ravel.<locals>.imp_copy¸  s   € à�{Š{‰}Œ}ÐrB   r   r¦   )ré   r÷  rß  r   rë   )rz   r:   rX   ré   rd  rg  Úimprõ   s           r@   Úarray_ravelri  ±  sw   € ð%ð %ð %ðð ð ð
 „x�„{Ô˜SÒ Ð Øˆˆð ˆà
×
"Ò
" 7¨C°°dÑ
;Ô
;€CÝ
˜7 G¨S¬_¸cÑ
BÔ
B€CØ€JrB   c                 ó8   — d„ }|                       ||||¦  «        S )Nc                 ó*   — |                       ¦   «         S r?  )rN  ©rÛ  s    r@   Únp_ravel_implznp_ravel.<locals>.np_ravel_implÊ  s   € Ø�wŠw‰yŒyÐrB   )rß  )rz   r:   rX   ré   rm  s        r@   Únp_ravelrn  È  s-   € ðð ð ð ×#Ò# G¨]¸CÀÑFÔFÐFrB   zarray.flattenc                 ój   — d„ }|                       ||||¦  «        }t          | ||j        |¦  «        }|S )Nc                 óZ   — |                       ¦   «                              | j        ¦  «        S r?  )rW  rH  r�   rc  s    r@   rh  zarray_flatten.<locals>.impÓ  s    € Ø�xŠx‰zŒz×!Ò! #¤(Ñ+Ô+Ð+rB   )rß  r   rë   )rz   r:   rX   ré   rh  rõ   s         r@   Úarray_flattenrq  Ð  sF   € ð,ð ,ð ,ð ×
"Ò
" 7¨C°°dÑ
;Ô
;€CÝ
˜7 G¨S¬_¸cÑ
BÔ
B€CØ€JrB   c                 ó  — |€t          j        | ¦  «        n|}t          j        | ||¦  «        \  }}}t          j        |j        ¦  «        D ];}||         }	||         }
||         }t          t          |	|
¦  «        |¦  «        ||<   Œ<|S r?  )ru  Ú
empty_likeÚbroadcast_arraysÚndindexrb   Úminr–  )rÛ  Úa_minÚa_maxrö   rc  Úa_bÚa_min_bÚa_max_brí   Úval_aÚ	val_a_minÚ	val_a_maxs               r@   Ú_np_clip_implr  Û  s‘   € ð "˜k�"Œ-˜Ñ
Ô
Ð
¨s€CÝÔ/°°5¸%Ñ@Ô@Ñ€Cˆ�'Ý”˜CœIÑ&Ô&ð ;ð ;ˆØ�E”
ˆØ˜E”Nˆ	Ø˜E”Nˆ	Ý�˜U IÑ.Ô.°	Ñ:Ô:ˆˆE‰
ˆ
à€JrB   c                 ó°   — t          j        | j        ¦  «        D ];}| |         }||         }|rt          ||¦  «        ||<   Œ(t	          ||¦  «        ||<   Œ<|S r?  )ru  ru  rb   rv  r–  )rÛ  ÚbÚuse_minrö   rí   r|  Úval_bs          r@   Ú_np_clip_impl_noner„  é  sf   € å”˜AœGÑ$Ô$ð +ð +ˆØ�%”ˆØ�%”ˆØð 	+Ý˜U EÑ*Ô*ˆC�‰JˆJå˜U EÑ*Ô*ˆC�‰JˆJØ€JrB   c                 ó6  — t          | ¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        s#t          |¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        s#t          |¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        s%t          |¦  «        sd}t          j        |¦  «        ‚|d u pt          |t          j        ¦  «        }|d u pt          |t          j        ¦  «        }|r|rdd„}|S t          |t          j        ¦  «        }t          |t          j        ¦  «        }	|r|	rdd„}
|
S |r|	s|rdd„}|S dd„}|S |s|	r|rdd	„}|S dd
„}|S |rdd„}|S |rdd„}|S dd„}|S )NrL  z6The argument "a_min" must be a number or an array-likez6The argument "a_max" must be a number or an array-likez5The argument "out" must be an array if it is providedc                 ó    — t          d¦  «        ‚)Nz&array_clip: must set either max or minrâ   ©rÛ  rw  rx  rö   s       r@   Ú
np_clip_nnznp_clip.<locals>.np_clip_nn	  s   € ÝÐEÑFÔFÐFrB   c                 óÀ   — |€t          j        | ¦  «        n|}t          j        | j        ¦  «        D ]+}| |         }t	          t          ||¦  «        |¦  «        ||<   Œ,|S r?  )ru  rs  ru  rb   rv  r–  ©rÛ  rw  rx  rö   rc  rí   r|  s          r@   Ú
np_clip_ssznp_clip.<locals>.np_clip_ss	  sd   € ð '* k•"”- Ñ"Ô"Ð"°sˆCÝœ A¤GÑ,Ô,ð ;ð ;�Ø˜%œ�Ý ¥ U¨EÑ!2Ô!2°EÑ:Ô:��E‘
�
àˆJrB   c                 ó¤   — |€t          j        | ¦  «        n|}t          j        | j        ¦  «        D ]}| |         }t	          ||¦  «        ||<   Œ|S r?  )ru  rs  ru  rb   r–  rŠ  s          r@   Ú
np_clip_snznp_clip.<locals>.np_clip_sn%	  óZ   € ð +.¨+•b”m AÑ&Ô&Ð&¸3�ÝœZ¨¬Ñ0Ô0ð 3ð 3�EØ˜eœH�EÝ!$ U¨EÑ!2Ô!2�C˜‘J�Jà�
rB   c                 óP   — t          j        | |¦  «        }t          | |||¦  «        S r?  ©ru  Ú	full_liker  )rÛ  rw  rx  rö   Ú
a_min_fulls        r@   Ú
np_clip_saznp_clip.<locals>.np_clip_sa2	  s)   € õ
  œ\¨!¨UÑ3Ô3�
Ý$ Q¨
°E¸3Ñ?Ô?Ð?rB   c                 ó¤   — |€t          j        | ¦  «        n|}t          j        | j        ¦  «        D ]}| |         }t	          ||¦  «        ||<   Œ|S r?  )ru  rs  ru  rb   rv  rŠ  s          r@   Ú
np_clip_nsznp_clip.<locals>.np_clip_ns=	  rŽ  rB   c                 óP   — t          j        | |¦  «        }t          | |||¦  «        S r?  r�  )rÛ  rw  rx  rö   Ú
a_max_fulls        r@   Ú
np_clip_asznp_clip.<locals>.np_clip_asJ	  s)   € õ
  œ\¨!¨UÑ3Ô3�
Ý$ Q¨¨z¸3Ñ?Ô?Ð?rB   c                 ó†   — |€t          j        | ¦  «        n|}t          j        | |¦  «        \  }}t          ||d|¦  «        S )NT©ru  rs  rt  r„  )rÛ  rw  rx  rö   rc  ry  r{  s          r@   Ú
np_clip_naznp_clip.<locals>.np_clip_naV	  sD   € à*-¨+•b”m AÑ&Ô&Ð&¸3�Ý!Ô2°1°eÑ<Ô<‘��WÝ)¨#¨w¸¸cÑBÔBÐBrB   c                 ó†   — |€t          j        | ¦  «        n|}t          j        | |¦  «        \  }}t          ||d|¦  «        S )NFrš  )rÛ  rw  rx  rö   rc  ry  rz  s          r@   Ú
np_clip_anznp_clip.<locals>.np_clip_an^	  sD   € à*-¨+•b”m AÑ&Ô&Ð&¸3�Ý!Ô2°1°eÑ<Ô<‘��WÝ)¨#¨w¸¸sÑCÔCÐCrB   c                 ó&   — t          | |||¦  «        S r?  )r  r‡  s       r@   Ú
np_clip_aaznp_clip.<locals>.np_clip_aaf	  s   € õ % Q¨¨u°cÑ:Ô:Ð:rB   r?  )	r   r	   rä   r”   r   ÚNoneTyper•   r   r   )rÛ  rw  rx  rö   rÍ   Úa_min_is_noneÚa_max_is_nonerˆ  Úa_min_is_scalarÚa_max_is_scalarr‹  r�  r“  r•  r˜  r›  r�  rŸ  s                     r@   Únp_clipr¥  õ  s¨  € å˜AÑÔð HÝÔ Ð!FÑGÔGÐGå�u�eœnÑ-Ô-ð 6Ý  Ñ'Ô'ð6åÔ ð #4ñ 6ô 6ð 	6õ �u�eœnÑ-Ô-ð 5Ý  Ñ'Ô'ð5åÔ ð "4ñ 5ô 5ð 	5õ �s�EœKÑ(Ô(ð &­K¸Ñ,<Ô,<ð &ØEˆÝÔ  Ñ%Ô%Ð%ð ˜T�MÐF¥Z°µu´~Ñ%FÔ%F€MØ˜T�MÐF¥Z°µu´~Ñ%FÔ%F€Màð ˜ð ð	Gð 	Gð 	Gð 	Gð Ðå  ­¬Ñ5Ô5€OÝ  ­¬Ñ5Ô5€Oàð V˜?ð Vð		ð 		ð 		ð 		ð ÐØ	ð I ð IØð 	ð	ð 	ð 	ð 	ð Ðð@ð @ð @ð @ð ÐØð 1 ð 1Øð 	ð	ð 	ð 	ð 	ð Ðð@ð @ð @ð @ð Ðð ð 	ðCð Cð Cð Cð ÐØð 	ðDð Dð Dð Dð Ðð;ð ;ð ;ð ;ð ÐrB   Úclipc                 ó   — dd„}|S )Nc                 ó0   — t          j        | |||¦  «        S r?  )ru  r¦  r‡  s       r@   rã   zarray_clip.<locals>.implq	  s   € ÝŒw�q˜% ¨Ñ,Ô,Ð,rB   ©NNNr�   )rÛ  rw  rx  rö   rã   s        r@   Ú
array_cliprª  o	  s   € ð-ð -ð -ð -à€KrB   c           	      ó„  ‡‡‡‡— |j         |j         k    sJ ‚|j        |j        k    sJ ‚t          |j        ¦  «        }t          d¦  «        Št          d¦  «        Št          d¦  «        Št          j        Šˆˆˆˆfd„}|                      t          j        t          | |¦  «        ¦  «        }|                      t          j        t          | |¦  «        ¦  «        }|                      t          j        |j         ¦  «        }	t          j	        || 
                    d¦  «        dd¦  «        }
t          j	        || 
                    d¦  «        dd¦  «        }t          j        t          j        dd¬	¦  «        }|                      |¦  «        }t          j        ||                      t          j        |j         ¦  «        g¦  «        }|                      |                      t          j        ¦  «        ¦  «        }|                      t          j        |¦  «        }t          j        ||g¦  «        } || |¦  «        }t!          ||
|||d
¬¦  «          || |¦  «        }t!          |||||d
¬¦  «         |                     ¦   «         }|                     ¦   «         }|	|||||                      t          j        |¦  «        g}t%          t          j        t          j        ||t          j        t          j        t          j        ¦  «        }|                      ||||¦  «        }t+          ||¦  «         t-          | ||j        |¦  «        }|S )a  
    Attempt to fix up *ary* for switching from *oldty* to *newty*.

    See Numpy's array_descr_set()
    (np/core/src/multiarray/getset.c).
    Attempt to fix the array's shape and strides for a new dtype.
    False is returned on failure, True on success.
    rU  r¦   ÚFc                 ód  •— |‰	k    r/|d         |k    r ‰‰
¦  «        }n|d         |k    r ‰‰¦  «        }||k    r|‰	k    s| dk    rdS |‰
k    r| dz
  }nd}||k     r&||z  dk    rdS ||z  }||xx         |z  cc<   |||<   n+||k    r$||         |z  }||z  dk    rdS ||z  ||<   |||<   n	 dS )Nrú  r   FrD   Tr�   )r1  ri   r¬   Úold_itemsizeÚnew_itemsizer÷  rj   ÚnewdimÚ
bytelengthÚ
any_layoutÚc_layoutÚf_layoutÚint8s            €€€€r@   rh  z_change_dtype.<locals>.imp‰	  s'  ø€ ð �ZÒÐà�rŒ{˜lÒ*Ð*à˜˜h™œ��à˜”˜|Ò+Ð+à˜˜h™œ�à˜<Ò'Ð'¨V°zÒ-AÐ-AÀRÈ1ÂWÀWØ�5à�XÒÐØ�Q‘ˆAˆAàˆAà˜,Ò&Ð&ð ˜|Ñ+°Ò1Ð1Ø�uà! \Ñ1ˆFØ�ˆGˆGŒG�vÑˆGˆG‰GØ%ˆG�A‰JˆJà˜LÒ(Ð(ð ˜aœ <Ñ/ˆJØ˜\Ñ)¨aÒ/Ð/Ø�uà  LÑ0ˆD�‰GØ%ˆG�A‰JˆJð
 àˆtrB   rb   r   r¬   rD   rÓ  Nr×  )rm   r÷  Úordr   rµ  r¿   r‹   r|   r
   re   rd   r•   ru   rg   ry   rw   rÕ   rñ   r"   Úbooleanrß  rØ   r   rë   )rz   r:   ÚoldtyÚnewtyrý   Ú
new_layoutrh  r®  r¯  r1  Ú
shape_dataÚstrides_dataÚshape_strides_array_typeÚaryclsÚshape_constantÚsizeof_intpÚstrides_constantr@  Ústrides_aryrb   r¬   ré   rX   rõ   r²  r³  r´  rµ  s                           @@@@r@   Ú_change_dtyperÃ  v	  s@  øøøø€ ð Œ:˜œÒ#Ð#Ð#Ð#ØŒ<˜5œ<Ò'Ð'Ð'Ð'å�U”\Ñ"Ô"€JÝ�S‘”€JÝ�3‰xŒx€HÝ�3‰xŒx€HåŒ:€Dð.ð .ð .ð .ð .ð .ð .ð .ð` ×'Ò'­¬
Ý(4°W¸eÑ(DÔ(DñFô F€Là×'Ò'­¬
Ý(4°W¸eÑ(DÔ(DñFô F€Lð 
×	Ò	�eœj¨%¬*Ñ	5Ô	5€BÝÔ% g¨s×/CÒ/CÀGÑ/LÔ/LØ&'¨ñ,ô ,€JåÔ'¨Ø(+×(<Ò(<¸YÑ(GÔ(GÈÈAñOô O€Lõ  %œ{µ´À!ÈCÐPÑPÔPÐØ×ÒÐ 8Ñ9Ô9€FåÔ'¨Ø)0×)=Ò)=½e¼jØ>C¼jñ*Jô *Jð )KñLô L€Nð ×(Ò(¨×)>Ò)>½u¼zÑ)JÔ)JÑKÔK€KØ×&Ò&¥u¤z°;Ñ?Ô?€KÝÔ)¨'°K°=ÑAÔAÐà��w Ñ(Ô(€Iå�9Ø"Ø'Ø+Ø'Øð!ñ !ô !ð !ð �&˜ 'Ñ*Ô*€KÝ�;Ø$Ø'Ø+Ø'Øð!ñ !ô !ð !ð ×ÒÑ!Ô!€EØ×#Ò#Ñ%Ô%€GØ��w ¨lØ× Ò ¥¤¨ZÑ8Ô8ð:€Dõ •E”MÝ”JØ,Ø,Ý”JÝ”JÝ”Jñô €Cð ×
"Ò
" 7¨C°°dÑ
;Ô
;€CÝ�e˜SÑ!Ô!Ð!Ý
˜G W¨c¬o¸sÑ
CÔ
C€CØ€JrB   c                 óR   — t          | ¦  «        st          j        d¦  «        ‚d„ }|S )Nz+The argument to np.shape must be array-likec                 ó4   — t          j        | ¦  «        j        S r?  )ru  rv  rb   rl  s    r@   rã   znp_shape.<locals>.implù	  s   € ÝŒz˜!‰}Œ}Ô"Ð"rB   ©r   r	   rä   ©rÛ  rã   s     r@   Únp_shaperÈ  ô	  s9   € å˜AÑÔð PÝÔ Ð!NÑOÔOÐOð#ð #ð #à€KrB   c                 ó   — d„ }|S )Nc                 óò   ‡— t          j        |                      ¦   «         ¦  «        Št          ‰d d…         ¦  «        }ˆfd„t	          ‰dd …         ¦  «        D ¦   «         }t          j        ||z   ¦  «        S )NrD   c                 ó2   •— g | ]\  }}‰|         |k    ¯|‘ŒS r�   r�   )rž   rj   rH  r�  s      €r@   rŸ   z5np_unique.<locals>.np_unique_impl.<locals>.<listcomp>
  s&   ø€ Ð<Ð<Ð<‘d�a˜°!°A´$¸!²)°)�°)°)°)rB   )ru  ÚsortrN  r¼   r’  rÇ   )ÚarÚheadÚtailr�  s      @r@   Únp_unique_implz!np_unique.<locals>.np_unique_impl
  sj   ø€ ÝŒG�B—H’H‘J”JÑÔˆÝ�A�b�q�b”E‰{Œ{ˆØ<Ð<Ð<Ð<�i¨¨!¨"¨"¬Ñ.Ô.Ð<Ñ<Ô<ˆÝŒx˜˜t™Ñ$Ô$Ð$rB   r�   )rÍ  rÐ  s     r@   Ú	np_uniquerÑ   
  s   € ð%ð %ð %ð
 ÐrB   c                 ó’  — d„ }t          | t          j        t          j        t          j        t          j        t          j        f¦  «        r|t          |t          j        ¦  «        rt          S t          |t          j        t          j        f¦  «        r!t          |j	        t          j        ¦  «        r|S t          j        d¦  «        ‚d S )Nc                 óN  — t          j        |t           j        ¬¦  «        }|j        d         dk    rt	          | |d         ¦  «        S t          j        |dk     ¦  «        rt          d¦  «        ‚t          j        | ¦  «        }|                     ¦   «         }|j        d         }|j        |j        k    rt          d¦  «        ‚t          j        t          j	        |¦  «        |j
        ¬¦  «        }d}t          |¦  «        D ]#}||         |||||         z   …<   |||         z  }Œ$|S )N©rx   r   rD   r‡  z(operands could not be broadcast together)ru  rv  Úint64rb   Únp_repeat_impl_repeats_scalerrC  r¸   rN  ÚemptyrÛ  rx   r5   )	rÛ  rV  Úrepeats_arrayÚasaÚaravelÚnÚ	to_returnÚposrj   s	            r@   Ú!np_repeat_impl_repeats_array_likez4np_repeat.<locals>.np_repeat_impl_repeats_array_like
  s  € åœ
 7µ"´(Ð;Ñ;Ô;ˆàÔ˜qÔ! QÒ&Ð&Ý0°°MÀ!Ô4DÑEÔEÐEÝŒ6�- !Ò#Ñ$Ô$ð 	DÝÐBÑCÔCÐCÝŒj˜‰mŒmˆØ—’‘”ˆØŒL˜ŒOˆØŒ<˜=Ô.Ò.Ð.ÝØ:ñ<ô <ð <å”H�RœV MÑ2Ô2¸#¼)ÐDÑDÔDˆ	ØˆÝ�q‘”ð 	$ð 	$ˆAØ6<¸Q´iˆI�c˜C -°Ô"2Ñ2Ð2Ñ3Ø�= Ô#Ñ#ˆCˆCØÐrB   zIThe repeats argument must be an integer or an array-like of integer dtype)r”   r   r•   ÚListrI  r   rÒ  r–   rÖ  rx   r	   rä   )rÛ  rV  rÞ  s      r@   Ú	np_repeatrà  

  s»   € ð
ð ð õ, �!•e”kÝ”jÝ”oÝ”lÝ”mð	ñ ô ð 1õ �g�uœ}Ñ-Ô-ð 	9Ý0Ð0Ý˜¥%¤+­u¬zÐ!:Ñ;Ô;ð 	9Ý˜'œ-­¬Ñ7Ô7ð 9Ø8Ð8åÔ ð0ñ1ô 1ð 	1ð1ð 1rB   c                 óœ  — |dk     rt          d¦  «        ‚t          j        | ¦  «        }|                     ¦   «         }|j        d         }|dk    rt          j        d|j        ¬¦  «        S |dk    rt          j        |¦  «        S t          j        ||z  |j        ¬¦  «        }t          |¦  «        D ]}||         |||z  |dz   |z  …<   Œ|S )Nr   r‡  rÔ  rD   )	r¸   ru  rv  rN  rb   r×  rx   rW  r5   )rÛ  rV  rÙ  rÚ  rÛ  rÜ  rj   s          r@   rÖ  rÖ  7
  sÐ   € à�‚{€{ÝÐ>Ñ?Ô?Ð?Ý
Œ*�Q‰-Œ-€CØ�YŠY‰[Œ[€FØŒ�QŒ€AØ�!‚|€|ÝŒx˜ ¤Ð+Ñ+Ô+Ð+Ø	�AŠˆÝŒw�v‰ŒÐå”H˜Q ™[°´	Ð:Ñ:Ô:ˆ	Ý�q‘”ð 	Cð 	CˆAØ9?À¼ˆI�a˜'‘k Q¨¡U¨gÑ$5Ð5Ñ6Ð6ØÐrB   Úrepeatc                 ó   — d„ }|S )Nc                 ó,   — t          j        | |¦  «        S r?  )ru  râ  )rÛ  rV  s     r@   Úarray_repeat_implz'array_repeat.<locals>.array_repeat_implK
  s   € ÝŒy˜˜GÑ$Ô$Ð$rB   r�   )rÛ  rV  rå  s      r@   Úarray_repeatræ  I
  s   € ð%ð %ð %ð ÐrB   c                 ó8   — t          j        |¦  «        }d„ }||fS )z"Computes the itemsize of the dtypec                 ó¼   — |                       |j        d         j        ¦  «        }|                       |j        ¦  «        } ||                      |¦  «        ¦  «        S rá   )rw   ré   rx   rë   ry   )Úcgctxr:   rX   Úllargsr{   Úllintps         r@   ra  z%_intrin_get_itemsize.<locals>.codegenV
  sQ   € Ø×"Ò" 3¤8¨A¤;Ô#4Ñ5Ô5ˆØ×$Ò$ S¤_Ñ5Ô5ˆØˆv�e×*Ò*¨4Ñ0Ô0Ñ1Ô1Ð1rB   )r   r‹   )Útyctxrx   rX   ra  s       r@   Ú_intrin_get_itemsizerí  Q
  s.   € õ Œ*�UÑ
Ô
€Cð2ð 2ð 2ð �ˆ<ÐrB   c                 ó   — d S r?  r�   )rÛ  rx   s     r@   Ú_compatible_viewrï  ]
  ó   € Ø€DrB   Úgeneric)Útargetc                 ó   — d„ }|S )zDDetermines if the array and dtype are compatible for forming a view.c                 óà  — t          |¦  «        }|| j        k    rÑ| j        dk    rd}t          |¦  «        ‚	 | j        dz
  }| j        |         dk    }| j        dk    }| j        |         | j        k    }|r|r|rd}t          |¦  «        ‚|| j        k     r'|dk    s| j        |z  dk    rd}	t          |	¦  «        ‚d S | j        |         | j        z  }
|
|z  dk    rd}t          |¦  «        ‚d S d S )Nr   zOChanging the dtype of a 0d array is only supported if the itemsize is unchangedrD   zJTo change to a dtype of a different size, the last axis must be contiguouszZWhen changing to a smaller dtype, its size must be a divisor of the size of original dtypezuWhen changing to a larger dtype, its size must be a divisor of the total size in bytes of the last axis of the array.)rí  r­   rm   r¸   rb   r�   r¬   )rÛ  rx   Ú
dtype_sizeÚmsg1rÝ   Úp1Úp2Úp3rU  Úmsg3r°  Úmsg4s               r@   rã   z ol_compatible_view.<locals>.implg
  s8  € Ý)¨%Ñ0Ô0ˆ
Ø˜œÒ#Ð#àŒv˜Š{ˆ{ð7�å  Ñ&Ô&Ð&ð ð ”6˜A‘:ˆDØ”˜” !Ò#ˆBØ”˜1’ˆBØ”˜4” A¤JÒ.ˆBØð '�rð '˜bð 'ð2�å  Ñ&Ô&Ð&à˜AœJÒ&Ð&Ø ’?�? a¤j°:Ñ&=ÀÒ&BÐ&BðI�Då$ TÑ*Ô*Ð*ð 'CÐ&Bð
 œ œ¨¬Ñ3�Ø˜JÑ&¨!Ò+Ð+ð1�Dõ % TÑ*Ô*Ð*ðA $Ð#ð8 ,Ð+rB   r�   ©rÛ  rx   rã   s      r@   Úol_compatible_viewrý  a
  s   € ð"+ð "+ð "+ðF €KrB   z
array.viewc                 óÜ  — |j         d         }|j        } t          |¦  «        | ||d         ¦  «        } t          |¦  «        | |¦  «        }t          |j        j        ¦  «        }t          |¦  «        D ]Q}	t          ||	¦  «        }
|	dk    r(|j        j	        }| 
                    |
|¦  «        |_        Œ@t          ||	|
¦  «         ŒRt          dk    rb| j        }|                     t          ¦  «        }|                     |g |j         ¢R i ¦  «        }|                      ||¦  «        } |||¦  «         t%          | ||||¦  «        }|                     d|t)          |j	        d¦  «        ¦  «        }|                     |¦  «        5  d}| j                             |t0          |f¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }t5          | ||j        |¦  «        S )Nr   r—   )rD   é   rà  z"new type not compatible with array)ré   rë   ru   rµ   r³   r¶   ÚsortedÚgetattrr—   r6   r,  rÆ   r   Útyping_contextÚresolve_value_typerï  Úget_call_typerN   rÃ  rã  r   r  rX  rY  r¸   rñ   r   )rz   r:   rX   ré   r×   r=  rý   rc  ÚfieldsrÓ   r†   r$  rì  r/  Ú_compatible_view_sigrã   r:  rB  rÍ   rõ   s                       r@   Ú
array_viewr  �
  s&  € àŒH�QŒK€EØŒO€Eà
�*�UÑ
Ô
˜G W¨d°1¬gÑ
6Ô
6€CØ
�*�UÑ
Ô
˜G WÑ
-Ô
-€Cå�”Ô'Ñ(Ô(€FÝ�F‰^Œ^ð !ð !ˆÝ�c˜1‰oŒoˆØ�Š;ˆ;Ø”H”MˆEØ—’ s¨EÑ2Ô2ˆCŒHˆHå�C˜˜CÑ Ô Ð Ð å˜ÒÐð Ô&ˆØ×'Ò'Õ(8Ñ9Ô9ˆØ#×1Ò1°%¸¸3¼8¸¸ÀrÑJÔJÐØ×#Ò# DÐ*>Ñ?Ô?ˆØˆˆW�dÑÔÐå	�w ¨°°sÑ	;Ô	;€BØ× Ò   r­8°B´G¸QÑ+?Ô+?Ñ@Ô@€Dà	�Š˜Ñ	Ô	ð Gð GØ2ˆØÔ×)Ò)¨'µ:À¸vÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð �-Š-‰/Œ/€CÝ˜W g¨s¬ÀÑDÔDÐDs   Æ%F8Æ8F<Æ?F<rx   c                 óN   — |                       ¦   «         }t          | |||¦  «        S r?  )r\  r    ©rz   r:   r~  r  rõ   s        r@   Úarray_dtyper
  ¸
  s'   € à
×
!Ò
!Ñ
#Ô
#€CÝ˜g w°°SÑ9Ô9Ð9rB   rb   c                 ól   — t          |¦  «        } || ||¦  «        }|j        }t          | |||¦  «        S r?  )ru   rb   r    ©rz   r:   r~  r  r‚   rÇ   rõ   s          r@   Úarray_shaper  ¾
  s=   € õ ˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EØ
Œ+€CÝ˜g w°°SÑ9Ô9Ð9rB   r¬   c                 ól   — t          |¦  «        } || ||¦  «        }|j        }t          | |||¦  «        S r?  )ru   r¬   r    r  s          r@   Úarray_stridesr  Ç
  s=   € õ ˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EØ
Œ-€CÝ˜g w°°SÑ9Ô9Ð9rB   rm   c                 óp   — |                       t          j        |j        ¦  «        }t	          | |||¦  «        S r?  )r¿   r   r‹   rm   r    r	  s        r@   Ú
array_ndimr  Ð
  s1   € ð ×
Ò
�uœz¨3¬8Ñ
4Ô
4€CÝ˜g w°°SÑ9Ô9Ð9rB   r�   c                 ól   — t          |¦  «        } || ||¦  «        }|j        }t          | |||¦  «        S r?  )ru   r²   r    r  s          r@   Ú
array_sizer  ×
  s;   € å˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EØ
Œ,€CÝ˜g w°°SÑ9Ô9Ð9rB   r­   c                 ól   — t          |¦  «        } || ||¦  «        }|j        }t          | |||¦  «        S r?  )ru   r­   r    r  s          r@   Úarray_itemsizer  ß
  s=   € õ ˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EØ
Œ.€CÝ˜g w°°SÑ9Ô9Ð9rB   Únbytesc                 óž   — t          |¦  «        } || ||¦  «        }|                     |j        |j        ¦  «        }t	          | |||¦  «        S )z"
    nbytes = size * itemsize
    )ru   rÂ   r²   r­   r    r  s          r@   Úarray_nbytesr  è
  sM   € õ ˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EØ
�+Š+�e”l E¤NÑ
3Ô
3€CÝ˜g w°°SÑ9Ô9Ð9rB   Ú
contiguousc                 óp   — |                       t          j        |j        ¦  «        }t	          | |||¦  «        S r?  )r¿   r   r·  Ú	is_contigr    r	  s        r@   Úarray_contiguousr  ô
  s/   € à
×
Ò
�uœ}¨c¬mÑ
<Ô
<€CÝ˜g w°°SÑ9Ô9Ð9rB   Úc_contiguousc                 óp   — |                       t          j        |j        ¦  «        }t	          | |||¦  «        S r?  )r¿   r   r·  Úis_c_contigr    r	  s        r@   Úarray_c_contiguousr   ú
  ó/   € à
×
Ò
�uœ}¨c¬oÑ
>Ô
>€CÝ˜g w°°SÑ9Ô9Ð9rB   Úf_contiguousc                 óp   — |                       t          j        |j        ¦  «        }t	          | |||¦  «        S r?  )r¿   r   r·  Úis_f_contigr    r	  s        r@   Úarray_f_contiguousr%     r!  rB   r]  c                 ór   — |                       t          j        |j         ¦  «        }t	          | |||¦  «        S r?  )r¿   r   r·  Úmutabler    r	  s        r@   Úarray_readonlyr(    s1   € à
×
Ò
�uœ}°#´+¨oÑ
>Ô
>€CÝ˜g w°°SÑ9Ô9Ð9rB   Úctypesc                 ó
  — t          |¦  «        } || ||¦  «        }t          j        |¦  «        }|                      ||¦  «        }|j        |_        |j        |_        |                     ¦   «         }t          | |||¦  «        S r?  )ru   r   ÚArrayCTypesrê   r—   r«   rñ   r   )	rz   r:   r~  r  r‚   rÇ   ÚactÚctinforõ   s	            r@   Úarray_ctypesr.    s|   € å˜‰oŒo€GØˆG�G˜W eÑ,Ô,€Eå
Ô
˜CÑ
 Ô
 €CØ× Ò  ¨#Ñ.Ô.€FØ”*€F„KØ”]€F„NØ
×
Ò
Ñ
Ô
€CÝ˜W g¨s°CÑ8Ô8Ð8rB   r—   c                 óÊ   — |                       |||¬¦  «        }|j        }|                     ||                      t          j        ¦  «        ¦  «        }t          | |||¦  «        S ©Nr  )rê   r—   r
  r¹   r   r‹   r    )rz   r:   r~  r  r-  rõ   s         r@   Úarray_ctypes_datar1    s\   € à× Ò  ¨#°UÐ Ñ;Ô;€FØ
Œ+€Cà
×
Ò
˜3 × 6Ò 6µu´zÑ BÔ BÑ
CÔ
C€CÝ˜g w°°SÑ9Ô9Ð9rB   c                 ó¶   — |                       |||¬¦  «        }|j        }|                     ||                      |¦  «        ¦  «        }t	          | |||¦  «        S r0  )rê   r—   r,  r¹   r    )rz   r:   ÚfromtyÚtotyr†   r-  rõ   s          r@   Úarray_ctypes_to_pointerr5  $  sZ   € ð × Ò  ¨&¸Ð Ñ<Ô<€FØ
Œ+€CØ
�/Š/˜#˜w×5Ò5°dÑ;Ô;Ñ
<Ô
<€CÝ˜g w°°cÑ:Ô:Ð:rB   c                 ó´  —  t          |¦  «        |||¬¦  «        }t          j        t          j        |j        ¦  «        }|                     |                     |j        ¦  «        ¦  «        }t          t          j	        ||t          j        ¦  «        }|j
        |j        |                     t          j        |¦  «        g}|                     || ||¦  «        }	|	S )a)  Helper to invoke the contiguous checker function on an array

    Args
    ----
    checker :
        ``numba.numpy_supports.is_contiguous``, or
        ``numba.numpy_supports.is_fortran``.
    context : target context
    builder : llvm ir builder
    aryty : numba type
    ary : llvm value
    r  )ru   r   r�  r‹   rm   ry   r¹   rx   r"   Úbool_rb   r¬   r¿   rß  )
Úcheckerrz   r:   r×   rý   Útup_intpr­   Ú	check_sigÚ
check_argsr  s
             r@   Ú_call_contiguous_checkr<  -  sº   € ð �*�UÑ
Ô
˜G W°CÐ
8Ñ
8Ô
8€CÝŒ~�eœj¨%¬*Ñ5Ô5€HØ×%Ò% g×&<Ò&<¸U¼[Ñ&IÔ&IÑJÔJ€HÝ�%œ+ x°½5¼:ÑFÔF€IØ”)˜Sœ[Ø×&Ò&¥u¤z°8Ñ<Ô<ð>€Jà×(Ò(¨°'¸9Ø)3ñ5ô 5€IàÐrB   r±   c                 óä   — |                       |t          j        |¦  «        ¦  «        }||_        |                     ¦   «         }| j                             |||¦  «         t          | |||¦  «        S r?  )rê   r   Ú
ArrayFlagsr®   rñ   rï   rð   r   )rz   r:   r~  r  Úflagsobjrõ   s         r@   Úarray_flagsr@  G  sh   € à×"Ò" 7­EÔ,<¸SÑ,AÔ,AÑBÔB€HØ€H„OØ
×
Ò
Ñ
Ô
€CØ„K×Ò�w  UÑ+Ô+Ð+Ý˜G W¨c°3Ñ7Ô7Ð7rB   c                 ó  — |j         j        dk    r;|                      |||¬¦  «        }t          t          | ||j         |j        ¦  «        }n0|j         j        dk    }|                      t          j        |¦  «        }t          | |||¦  «        S )Nr¦   r  )
r_   r÷  rê   r<  r   r®   r¿   r   r·  r    )rz   r:   r~  r  r?  rõ   r†   s          r@   Úarray_flags_c_contiguousrB  P  sŒ   € ð „~Ô Ò#Ð#à×&Ò& w°¸5Ð&ÑAÔAˆÝ$¥]°G¸WØ%(¤^°X´_ñFô Fˆˆð ŒnÔ# sÒ*ˆØ×"Ò"¥5¤=°#Ñ6Ô6ˆÝ˜g w°°SÑ9Ô9Ð9rB   c                 óH  — |j         j        dk    r;|                      |||¬¦  «        }t          t          | ||j         |j        ¦  «        }nF|j         j        }|j         j        dk    r|dk    n|dv }|                      t          j	        |¦  «        }t          | |||¦  «        S )Nr¬  r  rD   r  )r_   r÷  rê   r<  r   r®   rm   r¿   r   r·  r    )rz   r:   r~  r  r?  rõ   r÷  r†   s           r@   Úarray_flags_f_contiguousrD  ^  s¥   € à
„~Ô Ò#Ð#à×&Ò& w°¸5Ð&ÑAÔAˆÝ$¥Z°¸'Ø%(¤^°X´_ñFô Fˆˆð ”Ô&ˆØ"œ~Ô2°QÒ6Ð6ˆf˜Šmˆm¸FÀd¸NˆØ×"Ò"¥5¤=°#Ñ6Ô6ˆÝ˜g w°°SÑ9Ô9Ð9rB   r  c                 óò   — |j         t          j        v rt          | |||d¬¦  «        S |j         t          j        v rt          | |||¦  «        S t          d                     t          j         ¦  «        ¦  «        ‚)Nr  ©Úattrzunsupported .real for {})	rx   r   Úcomplex_domainÚarray_complex_attrÚnumber_domainr   rO   rÄ   r6   )rz   r:   r~  r  s       r@   Úarray_real_partrK  o  sn   € à
„y•EÔ(Ð(Ð(Ý! '¨7°C¸ÀVÐLÑLÔLÐLØ	Œ•eÔ)Ð	)Ð	)å  ¨'°3¸Ñ>Ô>Ð>å!Ð"<×"CÒ"CÅDÄJÑ"OÔ"OÑPÔPÐPrB   r  c                 ó,  — |j         t          j        v rt          | |||d¬¦  «        S |j         t          j        v r¯t          |                     d¬¦  «        |¦  «        }t          | |||g¦  «        \  }}t          | |||¦  «        }t          j
        ||j        |                     |j        |j        ¦  «        d¦  «         t          | ||j        |                     ¦   «         ¦  «        S t%          d                     t(          j         ¦  «        ¦  «        ‚)Nr  rF  Trf  r   zunsupported .imag for {})rx   r   rH  rI  rJ  r"   rW  Ú_parse_empty_like_argsrõ  r
   Úmemsetr—   rÂ   r­   r²   r   rë   rñ   rO   rÄ   r6   )rz   r:   r~  r  rX   rX  rþ   rý   s           r@   Úarray_imag_partrO  z  s  € à
„y•EÔ(Ð(Ð(Ý! '¨7°C¸ÀVÐLÑLÔLÐLØ	Œ•eÔ)Ð	)Ð	)å˜Ÿš¨$˜Ñ/Ô/°Ñ5Ô5ˆÝ0°¸'À3ÈÈÑPÔP‰ˆ�Ý˜W g¨w¸Ñ?Ô?ˆÝŒ�w ¤¨'¯+ª+°c´lØ69´jñ+Bô +BØCDñ	Fô 	Fð 	Få ¨°#´/Ø #§¢¡¤ñ1ô 1ð 	1õ "Ð"<×"CÒ"CÅDÄJÑ"OÔ"OÑPÔPÐPrB   c                 ó2  — |dvs|j         t          j        vr"t          d                     |¦  «        ¦  «        ‚t          |¦  «        } || ||¦  «        }|j         j        }|                      |                      |¦  «        ¦  «        }|j	         
                    |¦  «        }	|                      |¦  «                             ¦   «         }
|                     |j        |
¦  «        }|dk    r2|                     | t!          j        d¦  «        d¦  «        g¦  «        }|                     |d¬¦  «        } t          |¦  «        | |¦  «        }t'          ||	¬¦  «        }t)          j        |||¦  «         t-          | |||                     ¦   «         ¦  «        S )	a¼  
    Given a complex array, it's memory layout is:

        R C R C R C
        ^   ^   ^

    (`R` indicates a float for the real part;
     `C` indicates a float for the imaginary part;
     the `^` indicates the start of each element)

    To get the real part, we can simply change the dtype and itemsize to that
    of the underlying float type.  The new layout is:

        R x R x R x
        ^   ^   ^

    (`x` indicates unused)

    A load operation will use the dtype to determine the number of bytes to
    load.

    To get the imaginary part, we shift the pointer by 1 float offset and
    change the dtype and itemsize.  The new layout is:

        x C x C x C
          ^   ^   ^
    )r  r  zcannot get attribute `{}`r  é    rD   rU  ©rx   r÷  )r—   r­   )rx   r   rH  rO   rÄ   ru   Úunderlying_floatry   rw   r­   r6   r¹   rÞ  r,  r—   rø  r   ÚIntTyperW  r¾   r
   Úcopy_structr   rñ   )rz   r:   r~  r  rG  r‚   rÇ   ÚfltyÚsizeof_fltyr­   Ú
llfltptrtyr   Úresulttyr  Úrepls                  r@   rI  rI  ‹  s|  € ð8 Ð#Ð#Ð# s¤y½Ô8LÐ'LÐ'LÝ!Ð"=×"DÒ"DÀTÑ"JÔ"JÑKÔKÐKå˜‰oŒo€GØˆG�G˜W eÑ,Ô,€Eð Œ9Ô%€DØ×(Ò(¨×)>Ò)>¸tÑ)DÔ)DÑEÔE€KØŒ~×"Ò" ;Ñ/Ô/€Hð ×'Ò'¨Ñ-Ô-×8Ò8Ñ:Ô:€JØ�oŠo˜eœj¨*Ñ5Ô5€Gð ˆv‚~€~Ø—+’+˜g¨­¬
°2©¬°qÑ(9Ô(9Ð':Ñ;Ô;ˆð �xŠx˜d¨3ˆxÑ/Ô/€HØ!�Z˜Ñ!Ô! '¨7Ñ3Ô3€FÝ�W xÐ0Ñ0Ô0€DÝÔ˜  tÑ,Ô,Ð,Ý˜W g¨x¸×9IÒ9IÑ9KÔ9KÑLÔLÐLrB   ÚconjÚ	conjugatec                 ó   — d„ }|S )Nc                 ó*   — t          j        | ¦  «        S r?  )ru  r[  ©r  s    r@   rã   zarray_conj.<locals>.implÅ  s   € ÝŒw�s‰|Œ|ÐrB   r�   ©r  rã   s     r@   Ú
array_conjra  Â  s   € ðð ð à€KrB   c                 ó*   — |                       ¦   «         S r?  )r\  )rz   r:   ÚdtypetyÚdtypevals       r@   Ú
dtype_typere  Í  s   € à×"Ò"Ñ$Ô$Ð$rB   r6   ÚkindÚstatic_getitemc                 óÐ   — |j         }t          |t          j        ¦  «        r0 |                      |¦  «        d¦  «        }t          | |||¦  «        S d}t          j        |¦  «        ‚)zåThis handles the "static_getitem" when a Numba type is subscripted e.g:
    var = typed.List.empty_list(float64[::1, :])
    It only allows this on simple numerical types. Compound types, like
    records, are not supported.
    NzlUnreachable; the definition of __getitem__ on the numba.types.abstract.Type metaclass should prevent access.)rë   r”   r   r•   r¹   r    r	   ÚLoweringError)rz   r:   rX   ré   r=  rõ   rÍ   s          r@   Ústatic_getitem_number_clazzrj  Ú  sk   € ð ŒO€EÝ�%�œÑ%Ô%ð 
(ð ,ˆg×$Ò$ UÑ+Ô+¨DÑ1Ô1ˆÝ! '¨7°E¸3Ñ?Ô?Ð?ðLˆåÔ" 3Ñ'Ô'Ð'rB   c           
      ó  ‡ — t          |¦  «        } |‰ ||¦  «        }|j        }t          |t          j        ¦  «        st          d|›d|›d�¦  «        ‚|                     |¦  «        }|                     |¦  «        }	t          |t          j        ¦  «        r+| 	                    |j        |j
        |j
        z   d¬¦  «        }
n| 	                    |d¬¦  «        }
t          |
¦  «        } |‰ |¦  «        }‰                      t          j        |	¦  «        }t          j        ||j        ||j        j        ¬¦  «        }t          |t          j        ¦  «        ršt          j        ||j        |j
        ¦  «        }|ˆ fd„|j        D ¦   «         z  }t          j        ||j        |j
        ¦  «        }|ˆ fd	„|j        D ¦   «         z  }‰                      ‰                      |j        ¦  «        ¦  «        }n6|j        }|j        }‰                      ‰                      |¦  «        ¦  «        }t-          ||||‰                      t          j        |¦  «        |j        |j        ¬
¦  «         |                     ¦   «         }t5          ‰ ||
|¦  «        S )zq
    Generic getattr() implementation for record arrays: fetch the given
    record member, i.e. a subarray.
    z
attribute z of z not definedrU  rÓ  rR  )rë   c                 óP   •— g | ]"}‰                      t          j        |¦  «        ‘Œ#S r�   ©r¿   r   r‹   ©rž   rj   rz   s     €r@   rŸ   z(array_record_getattr.<locals>.<listcomp>  s+   ø€ ÐKÐKÐK¸!�'×&Ò&¥u¤z°1Ñ5Ô5ÐKÐKÐKrB   c                 óP   •— g | ]"}‰                      t          j        |¦  «        ‘Œ#S r�   rm  rn  s     €r@   rŸ   z(array_record_getattr.<locals>.<listcomp>  s+   ø€ ÐOÐOÐO¸A�G×(Ò(­¬°QÑ7Ô7ÐOÐOÐOrB   r5  )ru   rx   r”   r   ÚRecordrO   Útypeofrÿ   ÚNestedArrayrW  rm   r¿   r‹   r
   rú   r—   r6   rÀ   rb   r¬   ry   rw   rÕ   r«   r®   rñ   r   )rz   r:   r~  r  rG  r‚   rÇ   Úrectyperx   rÿ   ÚrestyÚrarytyÚraryÚconstoffsetÚ
newdataptrrb   r¬   Údatasizerõ   s   `                  r@   Úarray_record_getattrrz  ò  s‚  ø€ õ ˜‰oŒo€GØˆG�G˜W eÑ,Ô,€EàŒi€GÝ�g�uœ|Ñ,Ô,ð 1Ý!Ð!Ø%) T T¨3¨3¨3ð#0ñ 1ô 1ð 	1à�NŠN˜4Ñ Ô €EØ�^Š^˜DÑ!Ô!€Få�%�Ô*Ñ+Ô+ð 2Ø—’Ø”+ C¤H¨u¬zÑ$9À#ð ñ Gô Gˆˆð —’˜u¨S�Ñ1Ô1ˆå˜ÑÔ€Fàˆ6�'˜7Ñ#Ô#€Dà×&Ò&¥u¤z°6Ñ:Ô:€KåÔ$Ø�”˜[°t´y´~ðñ ô €Jõ �%�Ô*Ñ+Ô+ð HåÔ$ W¨e¬k¸3¼8ÑDÔDˆØÐKÐKÐKÐK¸u¼{ÐKÑKÔKÑKˆåÔ& w°´¸s¼xÑHÔHˆØÐOÐOÐOÐOÀÄÐOÑOÔOÑOˆà×)Ò)¨'×*?Ò*?ÀÄÑ*LÔ*LÑMÔMˆˆð ”ˆØ”-ˆØ×)Ò)¨'×*?Ò*?ÀÑ*FÔ*FÑGÔGˆÝ�4Ø"ØØ"Ø#×0Ò0µ´¸XÑFÔFØ œ=Øœ,ð(ñ (ô (ð (ð �.Š.Ñ
Ô
€CÝ˜W g¨u°cÑ:Ô:Ð:rB   c                 ó’   — |d         }t          |t          ¦  «        st          ‚t          | ||j        d         |d         |¦  «        S r¨  )r”   ÚstrrO   rz  ré   )rz   r:   rX   ré   rí   s        r@   Úarray_record_getitemr}  *  sC   € à�ŒG€EÝ�e�SÑ!Ô!ð "å!Ð!Ý ¨°#´(¸1´+¸tÀA¼wÈÑNÔNÐNrB   c           
      ód  ‡ — ‰                       ||¦  «         |                     |¦  «        }|                     |¦  «        }t          |t          j        ¦  «        r÷t          |¦  «        } |‰ |¦  «        }|j        }	ˆ fd„|j        D ¦   «         }
ˆ fd„|j	        D ¦   «         }t          j        |||‰                      |	¦  «        ¦  «        }t          ||t          j        ||
¦  «        t          j        ||¦  «        ‰                      t          j        |j        ¦  «        dd¬¦  «         |                     ¦   «         }t'          ‰ |||¦  «        S t          j        |||‰                      |¦  «        ¦  «        }|j        rdnd}‰                      ||||¦  «        }t'          ‰ |||¦  «        S )zT
    Generic getattr() implementation for records: get the given record member.
    c                 óP   •— g | ]"}‰                      t          j        |¦  «        ‘Œ#S r�   rm  ©rž   r§   rz   s     €r@   rŸ   z"record_getattr.<locals>.<listcomp>B  s7   ø€ ð "ð "ð "¸A�G×(Ò(­¬°QÑ7Ô7ð "ð "ð "rB   c                 óP   •— g | ]"}‰                      t          j        |¦  «        ‘Œ#S r�   rm  r€  s     €r@   rŸ   z"record_getattr.<locals>.<listcomp>D  s7   ø€ ð &ð &ð &¸a�g×*Ò*­5¬:°qÑ9Ô9ð &ð &ð &rB   Nr5  rD   )Úsentry_record_alignmentrÿ   rq  r”   r   rr  ru   rx   rb   r¬   r
   Úget_record_memberrw   rÕ   rg   r¿   r‹   r�   rñ   r   r€   r�   )rz   r:   r~  r  rG  rÿ   Úelemtyr×   rý   rx   r+  r,  Únewdatarõ   Údptrr   s   `               r@   Úrecord_getattrr‡  3  sÝ  ø€ ð
 ×#Ò# C¨Ñ.Ô.Ð.Ø�ZŠZ˜ÑÔ€FØ�ZŠZ˜ÑÔ€Få�&�%Ô+Ñ,Ô,ð =õ ˜6Ñ"Ô"ˆØˆe�G˜WÑ%Ô%ˆØ”ˆð"ð "ð "ð "Ø”Lð"ñ "ô "ˆð&ð &ð &ð &Ø”nð&ñ &ô &ˆ
åÔ+¨G°U¸FØ,3×,AÒ,AÀ%Ñ,HÔ,HñJô JˆåØØÝÔ$ W¨hÑ7Ô7ÝÔ& w°
Ñ;Ô;Ø×)Ò)­%¬*°f´kÑBÔBØØð	
ñ 	
ô 	
ð 	
ð �mŠm‰oŒoˆÝ  ¨'°3¸Ñ<Ô<Ð<åÔ(¨°%¸Ø)0×)>Ò)>¸vÑ)FÔ)FñHô HˆàœÐ*��¨ˆØ×"Ò" 7¨F°D¸%Ñ@Ô@ˆÝ  ¨'°3¸Ñ<Ô<Ð<rB   c           	      óº  — |j         \  }}|\  }}|                      ||¦  «         |                     |¦  «        }	|                     |¦  «        }
t	          |
t
          j        ¦  «        rŠ t          j        |¦  «        | ||d         ¬¦  «        }|j	        }t          j
        |||	|j        j        ¦  «        }t          j        ||||                      t
          j        |
j        ¦  «        ¦  «         dS t          j
        |||	|                      |
¦  «        ¦  «        }|                      ||||
¦  «        }|j        rdnd}|                      ||
|||¬¦  «         dS )zT
    Generic setattr() implementation for records: set the given record member.
    rD   r  Nr~   )ré   r‚  rÿ   rq  r”   r   rr  r
   rt   r—   rƒ  r6   ÚpointeeÚmemcpyr¿   r‹   r²   rw   rŠ   r€   r…   )rz   r:   rX   ré   rG  r~  rL  rò  r†   rÿ   r„  Ú
val_structr2  r`  r†  r   s                   r@   Úrecord_setattrrŒ  [  su  € ð
 ”�J€CˆØ�K€FˆCà×#Ò# C¨Ñ.Ô.Ð.Ø�ZŠZ˜ÑÔ€FØ�ZŠZ˜ÑÔ€Få�&�%Ô+Ñ,Ô,ð Dà7•WÔ0°Ñ7Ô7¸ÀØ>BÀ1¼gðGñ Gô Gˆ
àŒoˆÝÔ(¨°&¸&Ø),¬Ô)9ñ;ô ;ˆåŒ�w  cØ×+Ò+­E¬J¸¼ÑFÔFñ	Hô 	Hð 	Hð 	Hð 	Hõ Ô(¨°&¸&Ø)0×)>Ò)>¸vÑ)FÔ)FñHô Hˆà�lŠl˜7 C¨°Ñ7Ô7ˆØœÐ*��¨ˆØ×Ò˜7 F¨C°¸UÐÑCÔCÐCÐCÐCrB   c                 óœ   — |                       |j        d         |d         ¦  «        } || ||j        d         |d         |d         ¦  «        S )ú3
    Record.__getitem__ redirects to getattr()
    r   rD   )Úget_getattrré   )rz   r:   rX   ré   rã   s        r@   Úrecord_static_getitem_strr�  y  sI   € ð
 ×Ò˜sœx¨œ{¨D°¬GÑ4Ô4€DØˆ4�˜ #¤(¨1¤+¨t°A¬w¸¸Q¼Ñ@Ô@Ð@rB   c                 ó4  — |j         d         j        }t          |j         d         j        ¦  «        }|                      |j        ||         ¦  «        }|                      |j         d         |¦  «        } || ||j         d         |d         ||         ¦  «        S )rŽ  rD   r   )ré   rå   r¼   r  Úinsert_const_stringr7   r�  )rz   r:   rX   ré   r�   r  Úll_fieldrã   s           r@   Úrecord_static_getitem_intr”  ‚  s„   € ð
 Œ(�1Œ+Ô
#€CÝ�#”(˜1”+Ô$Ñ%Ô%€FØ×*Ò*¨7¬>¸6À#¼;ÑGÔG€HØ×Ò˜sœx¨œ{¨HÑ5Ô5€DØˆ4�˜ #¤(¨1¤+¨t°A¬w¸¸s¼ÑDÔDÐDrB   Ústatic_setitemc                 ó    — |j         \  }}}|\  }}}	t          |j        ||¦  «        }
|                      ||
¦  «        }|€J ‚ ||||	f¦  «        S )ú3
    Record.__setitem__ redirects to setattr()
    )ré   r"   rë   Úget_setattr)rz   r:   rX   ré   Úrectyrý  rL  Úrecr�   r†   Úgetattr_sigrã   s               r@   Úrecord_static_setitem_strrœ  Ž  sf   € ð
 ”h�O€Eˆ1ˆeØ�M€CˆˆcÝ˜CœO¨U°EÑ:Ô:€KØ×Ò˜s KÑ0Ô0€DØÐÐÐØˆ4�˜#˜s˜Ñ$Ô$Ð$rB   c                 óê   — |j         \  }}}|\  }}}	t          |j        ||¦  «        }
t          |j         d         j        ¦  «        }|                      ||         |
¦  «        }|€J ‚ ||||	f¦  «        S )r—  r   )ré   r"   rë   r¼   r  r˜  )rz   r:   rX   ré   r™  rý  rL  rš  r�   r†   r›  r  rã   s                r@   Úrecord_static_setitem_intrž  ›  s€   € ð
 ”h�O€Eˆ1ˆeØ�M€CˆˆcÝ˜CœO¨U°EÑ:Ô:€KÝ�#”(˜1”+Ô$Ñ%Ô%€FØ×Ò˜v cœ{¨KÑ8Ô8€DØÐÐÐØˆ4�˜#˜s˜Ñ$Ô$Ð$rB   c                 ó0   — |                       |||¦  «        S )zB
    Create a constant array (mechanism is target-dependent).
    )Úmake_constant_array)rz   r:   rA  Úpyvals       r@   Úconstant_arrayr¢  ­  s   € ð
 ×&Ò& w°°EÑ:Ô:Ð:rB   c                 óØ   — t          j        t          j        d¦  «        |j        ¦  «        } |t	          |                     ¦   «         ¦  «        ¦  «        }t          j        ||¦  «        S )zG
    Create a record constant as a stack-allocated array of bytes.
    é   )r   rÝ  rT  r  Ú	bytearrayÚtostringr
   rì   )rz   r:   rA  r¡  Últyr†   s         r@   Úconstant_recordr¨  µ  sS   € õ
 Œ,•r”z !‘}”} e¤lÑ
3Ô
3€CØ
ˆ#�i˜ŸšÑ(Ô(Ñ)Ô)Ñ
*Ô
*€CÝÔ$ W¨cÑ2Ô2Ð2rB   c                 óŠ   — t          j        t          |¦  «        t           j        ¬¦  «        }|                      |||¦  «        S )zM
    Create a constant array from bytes (mechanism is target-dependent).
    rÔ  )ru  rÇ   r¥  Úuint8r   )rz   r:   rA  r¡  Úbufs        r@   Úconstant_bytesr¬  ¿  s:   € õ
 Œ(•9˜UÑ#Ô#­2¬8Ð
4Ñ
4Ô
4€CØ×&Ò& w°°CÑ8Ô8Ð8rB   c                 óp   — |j         \  }}||k    rt          j        S d„ }|                      ||||¦  «        S )Nc                 óv   — | j         |j         k    o)| j        |j        k    o| j        j        |j        j        k    S r?  )rb   r¬   r)  r—   ©rÛ  r�  s     r@   Úarray_is_implzarray_is.<locals>.array_is_implÑ  s9   € Ø”˜1œ7Ò"ð /Ø”	˜QœYÒ&ð/à”” ¤¤Ò.ð	0rB   )ré   r
   rá  rß  )rz   r:   rX   ré   ÚatyÚbtyr°  s          r@   Úarray_isr³  Ë  sJ   € àŒx�H€CˆØ
ˆc‚z€zÝÔ Ð ð0ð 0ð 0ð
 ×#Ò# G¨]¸CÀÑFÔFÐFrB   Ú__hash__c                 ó   — d„ S )Nc                 ó   — d S r?  r�   r_  s    r@   r�  zol_array_hash.<locals>.<lambda>Þ  s   € �t€ rB   r�   r_  s    r@   Úol_array_hashr·  Ü  s   € àÐÐrB   c                 ó"   — t          | d¦  «        S )zq
    Return the Structure representation of the given *flatiterty* (an
    instance of types.NumpyFlatType).
    Úflat©Ú_make_flattening_iter_cls)Ú
flatitertys    r@   Úmake_array_flat_clsr½  ä  s   € õ
 % Z°Ñ8Ô8Ð8rB   c                 ó"   — t          | d¦  «        S )zv
    Return the Structure representation of the given *nditerty* (an
    instance of types.NumpyNdEnumerateType).
    Úndenumeraterº  ©Únditertys    r@   Úmake_array_ndenumerate_clsrÂ  ì  s   € õ
 % X¨}Ñ=Ô=Ð=rB   c                 óT  — |                       t          j        d¦  «        }|                     d¦  «        }	|� |                     t
          j        |¦  «         t          t          |¦  «        ¦  «        D ]ç}
t          j	        |||
¦  «        }t          j
        ||                     |¦  «        ¦  «        }||
         }|                     d||¦  «        }t          j        ||¦  «        5  |                     ||¦  «         |� ||
¦  «         |                     |	¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ||¦  «         |� ||
¦  «         Œè|� |                     t
          j        |¦  «         |                     |	¦  «         |                     |	¦  «         d S )Nr   Úend_incrementr	  )r¿   r   r‹   rw  r  r
   Ú
false_byterò  r5   re   r  r;   r
  Ú	if_likelyr„  Ú	true_byter…  )rz   r:   rm   rb   r£   Úend_flagÚloop_continueÚ
loop_breakró   Úbbendrs  Úidxptrr�   rÁ   Ú	in_boundss                  r@   Ú_increment_indicesrÎ  ô  sÏ  € à×Ò¥¤
¨AÑ.Ô.€Dà×&Ò& Ñ7Ô7€EàÐØ�Š•gÔ(¨(Ñ3Ô3Ð3å�˜d™œÑ$Ô$ð ð ˆÝÔ% g¨w¸Ñ<Ô<ˆÝÔ% g¨w¯|ª|¸FÑ/CÔ/CÑDÔDˆà�c”
ˆØ×'Ò'¨¨S°%Ñ8Ô8ˆ	ÝÔ˜w¨	Ñ2Ô2ð 	"ð 	"à�MŠM˜#˜vÑ&Ô&Ð&ØÐ(Ø�˜cÑ"Ô"Ð"Ø�NŠN˜5Ñ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	�Š�d˜FÑ#Ô#Ð#ØÐ!ØˆJ�s‰OŒOˆOøàÐØ�Š•gÔ'¨Ñ2Ô2Ð2Ø‡N‚N�5ÑÔÐà×Ò˜EÑ"Ô"Ð"Ð"Ð"s   Ã(9D-Ä-D1	Ä4D1	c                 óx   — t          j        ||j        |j        ¦  «        }t	          | ||j        |||¦  «         d S r?  )r
   rÀ   rb   rm   rÎ  )rz   r:   r  r  r£   rÈ  rb   s          r@   Ú_increment_indices_arrayrÐ    s:   € åÔ  ¨#¬)°U´ZÑ@Ô@€EÝ�w ¨¬°U¸GÀXÑNÔNÐNÐNÐNrB   c                 ó€  ‡ ‡‡‡‡‡‡‡	‡
‡— ‰ j         Š
‰ j        Št          ‰ j        ¦  «        Š	‰ j        r‰
ndŠ G d„ dt
          ¦  «        } G d„ d|¦  «        Š G ˆ fd„d|¦  «        Š G d„ d	|¦  «        Š G d
„ d|¦  «        Š G d„ d|¦  «        Š G ˆˆˆˆˆˆˆ	ˆ
ˆ ˆf
d„dt          j        ‰ ¦  «        ¦  «        }|S )zq
    Return the Structure representation of the given *nditerty* (an
    instance of types.NumpyNdIterType).
    rD   c                   óP   — e Zd ZdZd„ Zd„ Zej        d„ ¦   «         Zd„ Z	d„ Z
d„ ZdS )	ú$make_nditer_cls.<locals>.BaseSubIterzF
        Base class for sub-iterators of a nditer() instance.
        c                 óR   — || _         || _        || _        || _        ||z
  | _        d S r?  )ÚnditerÚmember_nameÚ	start_dimÚend_dimrm   )rV   rÕ  rÖ  r×  rØ  s        r@   ru  z-make_nditer_cls.<locals>.BaseSubIter.__init__*  s/   € Ø ˆDŒKØ*ˆDÔØ&ˆDŒNØ"ˆDŒLØ )Ñ+ˆDŒIˆIˆIrB   c                 ó<   — t          | j        | j        |¦  «         d S r?  )rÆ   rÕ  rÖ  )rV   rh   s     r@   Úset_member_ptrz3make_nditer_cls.<locals>.BaseSubIter.set_member_ptr1  s   € Ý�D”K Ô!1°3Ñ7Ô7Ð7Ð7Ð7rB   c                 ó6   — t          | j        | j        ¦  «        S r?  )r  rÕ  rÖ  ra  s    r@   Ú
member_ptrz/make_nditer_cls.<locals>.BaseSubIter.member_ptr4  s   € å˜4œ;¨Ô(8Ñ9Ô9Ð9rB   c                 ó   — d S r?  r�   )rV   rz   r:   s      r@   Úinit_specificz2make_nditer_cls.<locals>.BaseSubIter.init_specific8  r«  rB   c                 ó   — d S r?  r�   ©rV   rz   r:   Úlogical_dims       r@   rÉ  z2make_nditer_cls.<locals>.BaseSubIter.loop_continue;  r«  rB   c                 ó   — d S r?  r�   rà  s       r@   rÊ  z/make_nditer_cls.<locals>.BaseSubIter.loop_break>  r«  rB   N)rn   ro   rp   ro  ru  rÚ  r9  Úcached_propertyrÜ  rÞ  rÉ  rÊ  r�   rB   r@   ÚBaseSubIterrÓ  %  sˆ   € € € € € ð	ð 	ð	,ð 	,ð 	,ð	8ð 	8ð 	8ð 
Ô	"ð	:ð 	:ñ 
#Ô	"ð	:ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	rB   rä  c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ú$make_nditer_cls.<locals>.FlatSubIterzŸ
        Sub-iterator walking a contiguous array in physical order, with
        support for broadcasting (the index is reset on the outer dimension).
        c                 ó–   — |                      t          j        d¦  «        }|                      t	          j        ||¦  «        ¦  «         d S rá   )r¿   r   r‹   rÚ  r
   rì   )rV   rz   r:   ró   s       r@   rÞ  z2make_nditer_cls.<locals>.FlatSubIter.init_specificG  s@   € Ø×'Ò'­¬
°AÑ6Ô6ˆDØ×Ò¥Ô 9¸'À4Ñ HÔ HÑIÔIÐIÐIÐIrB   c                 ón   — |                      | j        ¦  «        }|                     |j        |g¦  «        S r?  )r;   rÜ  rø  r—   )rV   rz   r:   r£   r  r  rí   s          r@   Úcompute_pointerz4make_nditer_cls.<locals>.FlatSubIter.compute_pointerK  s-   € Ø—L’L ¤Ñ1Ô1ˆEØ—;’;˜sœx¨%¨Ñ1Ô1Ð1rB   c                 óº   — || j         dz
  k    rL|                     | j        ¦  «        }t          j        ||¦  «        }|                     || j        ¦  «         d S d S r’  )rm   r;   rÜ  r
   r  r  )rV   rz   r:   rá  rí   s        r@   rÉ  z2make_nditer_cls.<locals>.FlatSubIter.loop_continueO  s\   € Ø˜dœi¨!™mÒ+Ð+àŸš T¤_Ñ5Ô5�ÝÔ/°¸Ñ?Ô?�Ø—’˜e T¤_Ñ5Ô5Ð5Ð5Ð5ð	 ,Ð+rB   c                 ó@  — |dk    r=|                      t          j        d¦  «        }|                     || j        ¦  «         d S || j        dz
  k    rL|                     | j        ¦  «        }t          j        ||¦  «        }|                     || j        ¦  «         d S d S ©Nr   rD   )	r¿   r   r‹   r  rÜ  rm   r;   r
   r  )rV   rz   r:   rá  ró   rí   s         r@   rÊ  z/make_nditer_cls.<locals>.FlatSubIter.loop_breakV  sš   € Ø˜aÒÐà×+Ò+­E¬J¸Ñ:Ô:�Ø—’˜d D¤OÑ4Ô4Ð4Ð4Ð4Ø ¤	¨A¡Ò-Ð-àŸš T¤_Ñ5Ô5�ÝÔ/°¸Ñ?Ô?�Ø—’˜e T¤_Ñ5Ô5Ð5Ð5Ð5ð	 .Ð-rB   N)rn   ro   rp   ro  rÞ  ré  rÉ  rÊ  r�   rB   r@   ÚFlatSubIterræ  A  s]   € € € € € ð	ð 	ð
	Jð 	Jð 	Jð	2ð 	2ð 	2ð	6ð 	6ð 	6ð		6ð 		6ð 		6ð 		6ð 		6rB   rí  c                   ó$   •— e Zd ZdZˆ fd„Zd„ ZdS )ú+make_nditer_cls.<locals>.TrivialFlatSubIterzx
        Sub-iterator walking a contiguous array in physical order,
        *without* support for broadcasting.
        c                 ó   •— ‰j         rJ ‚d S r?  )Úneed_shaped_indexing)rV   rz   r:   rÁ  s      €r@   rÞ  z9make_nditer_cls.<locals>.TrivialFlatSubIter.init_specificg  s   ø€ ØÔ4Ð4Ð4Ð4Ð4Ð4rB   c                 óŒ   — t          |¦  «        dk    sJ t          |¦  «        ¦   «         ‚|                     |j        |¦  «        S r’  )r    rø  r—   ©rV   rz   r:   r£   r  r  s         r@   ré  z;make_nditer_cls.<locals>.TrivialFlatSubIter.compute_pointerj  s=   € Ý�w‘<”< 1Ò$Ð$Ð$¥c¨'¡l¤lÑ$Ô$Ð$Ø—;’;˜sœx¨Ñ1Ô1Ð1rB   N)rn   ro   rp   ro  rÞ  ré  rÀ  s   €r@   ÚTrivialFlatSubIterrï  a  sG   ø€ € € € € ð	ð 	ð
	5ð 	5ð 	5ð 	5ð 	5ð	2ð 	2ð 	2ð 	2ð 	2rB   rô  c                   ó   — e Zd ZdZd„ ZdS )ú'make_nditer_cls.<locals>.IndexedSubIterzA
        Sub-iterator walking an array in logical order.
        c                 ój   — t          |¦  «        | j        k    sJ ‚t          j        |||||d¬¦  «        S ©NFr  )r    rm   r
   r'  ró  s         r@   ré  z7make_nditer_cls.<locals>.IndexedSubIter.compute_pointers  sF   € Ý�w‘<”< 4¤9Ò,Ð,Ð,Ð,ÝÔ+¨G°W¸eÀSØ,3ÀðGñ Gô Gð GrB   N©rn   ro   rp   ro  ré  r�   rB   r@   ÚIndexedSubIterrö  n  s2   € € € € € ð	ð 	ð	Gð 	Gð 	Gð 	Gð 	GrB   rú  c                   ó   — e Zd ZdZd„ ZdS )ú'make_nditer_cls.<locals>.ZeroDimSubIterz5
        Sub-iterator "walking" a 0-d array.
        c                 ó   — |j         S r?  )r—   ró  s         r@   ré  z7make_nditer_cls.<locals>.ZeroDimSubIter.compute_pointer}  s	   € Ø”8ˆOrB   Nrù  r�   rB   r@   ÚZeroDimSubIterrü  x  s-   € € € € € ð	ð 	ð	ð 	ð 	ð 	ð 	rB   rþ  c                   ó   — e Zd ZdZd„ ZdS )ú&make_nditer_cls.<locals>.ScalarSubIterz8
        Sub-iterator "walking" a scalar value.
        c                 ó   — |S r?  r�   ró  s         r@   ré  z6make_nditer_cls.<locals>.ScalarSubIter.compute_pointer…  s   € ØˆJrB   Nrù  r�   rB   r@   ÚScalarSubIterr   €  s-   € € € € € ð	ð 	ð	ð 	ð 	ð 	ð 	rB   r  c                   ó„   •
— e Zd ZdZej        ˆ ˆˆˆˆˆfd„¦   «         Zˆˆˆˆ	fd„Zˆfd„Zd„ Z	d„ Z
ˆˆˆˆ	fd„Zd„ Zd	„ Zd
S )úmake_nditer_cls.<locals>.NdIterz½
        .nditer() implementation.

        Note: 'F' layout means the shape is iterated in reverse logical order,
        so indices and shapes arrays have to be reversed as well.
        c           	      óÊ   •— g }‰j         r‰n‰‰‰‰dœ}t          ‰j        ¦  «        D ]:\  }}|\  }}}}d|z  }	||         }
|                      |
| |	||¦  «        ¦  «         Œ;|S )N)r¹  ÚindexedÚ0dÚscalarzindex%d)rñ  r’  rÔ  rf   )rV   ÚlÚ	factoriesrj   rä  rf  r×  rØ  rý  rÖ  Úfactoryrí  rú  r  rô  rþ  rÁ  s              €€€€€€r@   Úsubitersz(make_nditer_cls.<locals>.NdIter.subiters�  s›   ø€ àˆAØ08Ô0Mð "1  Ø0Ø$2Ø-Ø#0ð	ð ˆIõ $ HÔ$5Ñ6Ô6ð Ið I‘��3Ø.1Ñ+��i ¨!Ø'¨!™m�Ø# Dœ/�Ø—’˜˜  {°I¸wÑGÔGÑHÔHÐHÐHØˆHrB   c                 ó¼  •— |                      t          j        d¦  «        }|                     |t          j        |¦  «        |¦  «        | _        t          |¦  «        D ]P\  }}t          |t          j        ¦  «        s1d|z  }t          j
        |||         ¦  «        }	t          | ||	¦  «         ŒQ|                      ||||¦  «        }t          j        t          j        ‰¦  «        }
d}d}t          |¦  «        D ]F\  }}t          |t          j        ¦  «        r'|j        ‰k    r||         j        }||         j        } n@ŒG‰dk    sJ ‚|                     ||
d¦  «        }|                      t          j        d¦  «        }d„ }t#          ||¦  «        D ]†\  }}t          |t          j        ¦  «        rg|j        dk    r\t%          t          j        t          j        t          j        |j        ¦  «        |
¦  «        }|                     ||||j        |f¦  «         Œ‡t          j        ||¦  «        }‰dk    r|ddd…         }|                     d	||¦  «        }|                     |t          j        t          j        ¦  «        }‰j        s|f}t7          |¦  «        ‰k    sJ ‚t          j        ||j        ‰¬
¦  «        }t=          ‰¦  «        D ].}t          j        |||¦  «        }|                      ||¦  «         Œ/|| _!        t          j"        |||j        ¦  «        | _        t          j
        ||¦  «        | _#        | j$        D ]}| %                    ||¦  «         ŒdS )zY
            Initialize the nditer() instance for the specific array inputs.
            r   úscalar%dNr�   rD   c                 ó°   — t          | ¦  «        }t          |¦  «        D ]6}| |         |t          |¦  «        |z
  |z            k    rt          d¦  «        ‚Œ7d S )Nz2nditer(): operands could not be broadcast together)r    r5   r¸   )rb   Ú
main_shaperÛ  rj   s       r@   Úcheck_shapezBmake_nditer_cls.<locals>.NdIter.init_specific.<locals>.check_shapeÃ  sm   € Ý˜‘J”J�Ý˜q™œð ?ð ?�AØ˜Q”x :­c°*©o¬oÀÑ.AÀAÑ.EÔ#FÒFÐFÝ(ð *>ñ ?ô ?ð ?ð Gð?ð ?rB   r¬  rú  rà  r|  )&r¿   r   r‹   Ú
make_tupler‚  Úarraysr’  r”   r•   r
   rì   rÆ   Ú_arrays_or_scalarsr�  rm   rb   r²   r¡   r"   Únonerß  rÀ   r
  rÉ  rÇ  rÅ  rñ  r    rT   r6   r5   re   r  r£   rg   Ú	exhaustedr  rÞ  )rV   rz   r:   Úarrtysr  ró   rj   rA  rÖ  ÚslotÚmain_shape_tyr  Úmain_nitemsr  r  r  rX   rþ   Úshape_is_emptyr  r£   rs  rÌ  Úsubiterr÷  rm   rÁ  Únshapess                           €€€€r@   rÞ  z-make_nditer_cls.<locals>.NdIter.init_specific   sr  ø€ ð ×'Ò'­¬
°AÑ6Ô6ˆDð "×,Ò,¨Wµe´kÀ&Ñ6IÔ6IØ-3ñ5ô 5ˆDŒKõ # 6Ñ*Ô*ð 5ð 5‘��2Ý! "¥e¤kÑ2Ô2ð 5Ø",¨q¡.�Kå"Ô4°W¸fÀQ¼iÑHÔH�DÝ˜D +¨tÑ4Ô4Ð4øà×,Ò,¨W°g¸vÀvÑNÔNˆFõ "œN­5¬:°tÑ<Ô<ˆMØˆJØˆKÝ% fÑ-Ô-ð 	Bð 	B‘��5Ý˜e¥U¤[Ñ1Ô1ð °e´jÀDÒ6HÐ6HØ!'¨¤¤�JØ"(¨¤)Ô"2�KØ�Eøð ˜q’y�y�y�yØ$×/Ò/°¸ÈÑKÔK�
Ø%×2Ò2µ5´:¸qÑAÔA�ð?ð ?ð ?õ " &¨&Ñ1Ô1ð Kð K‘
��sÝ˜e¥U¤[Ñ1Ô1ð K°e´jÀ1²n°nÝ#¥E¤JÝ$)¤Nµ5´:¸u¼zÑ$JÔ$JØ$1ñ3ô 3�Cð ×,Ò,¨W°kØ-0°3´9¸jÐ2IñKô Kð Køõ Ô)¨'°:Ñ>Ô>ˆFØ˜Š}ˆ}Ø   " œ�ð %×0Ò0°°{ÀDÑIÔIˆNØŸš ~µwÔ7HÝ'.Ô'9ñ;ô ;ˆIð Ô0ð (ð &˜�Ý�v‘;”; 'Ò)Ð)Ð)Ð)åÔ)¨'°4´9À7ÐKÑKÔKˆGÝ˜W‘~”~ð ,ð ,�Ý Ô-¨g°wÀÑDÔD�Ø—’˜d FÑ+Ô+Ð+Ð+à"ˆDŒLÝ Ô+¨G°V¸T¼YÑGÔGˆDŒJÝ$Ô6°wÀ	ÑJÔJˆDŒNð  œ=ð 8ð 8�Ø×%Ò% g¨wÑ7Ô7Ð7Ð7ð8ð 8rB   c                 ó&  •— |                      d¦  «        }t          j        ||                     | j        ¦  «        ¦  «        }t          j        ||¦  «        5  |                     d¦  «         |                     |¦  «         ddd¦  «         n# 1 swxY w Y   ‰j        }t          j	        || j        ¦  «        }|  
                    ||||¦  «        }| j        }|                     d¦  «         |                      |||||¦  «        }	d„ |	D ¦   «         }	t          |	¦  «        dk    r|                     |	d         ¦  «         n/|                     |                     |‰j        |	¦  «        ¦  «         t          j	        || j        ¦  «        }
t%          ||t          |
¦  «        |
|| j        t'          j        | j        ||¦  «        t'          j        | j        ||¦  «        ¦  «         |                     |¦  «         |                     |¦  «         dS )zJ
            Compute next iteration of the nditer() instance.
            r  FNTc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r�   rÙ  ©rž   rÔ   s     r@   rŸ   zEmake_nditer_cls.<locals>.NdIter.iternext_specific.<locals>.<listcomp>  s    € Ð2Ð2Ð2 q�Q—[’[‘]”]Ð2Ð2Ð2rB   rD   r   )rw  r
   Úas_bool_bitr;   r  Úif_unlikelyr  r„  r  rÀ   r  r£   Ú_make_viewsr    r  r  r  rb   rÎ  r9  ÚpartialÚ_loop_continueÚ_loop_breakr…  )rV   rz   r:   r  rË  r  r  r  r£   Úviewsrb   rÁ  s              €r@   Úiternext_specificz1make_nditer_cls.<locals>.NdIter.iternext_specificï  sM  ø€ ð ×.Ò.¨uÑ5Ô5ˆEõ  Ô+¨GØ,3¯LªL¸¼Ñ,HÔ,HñJô JˆIåÔ$ W¨iÑ8Ô8ð &ð &Ø× Ò  Ñ'Ô'Ð'Ø—’˜uÑ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð ”_ˆFÝÔ)¨'°4´;Ñ?Ô?ˆFØ×,Ò,¨W°g¸vÀvÑNÔNˆFØ”lˆGð ×Ò˜TÑ"Ô"Ð"Ø×$Ò$ W¨g°wÀÈÑOÔOˆEØ2Ð2¨EÐ2Ñ2Ô2ˆEÝ�5‰zŒz˜QŠˆØ—’˜e AœhÑ'Ô'Ð'Ð'à—’˜g×0Ò0°¸(Ô:MØ16ñ8ô 8ñ 9ô 9ð 9õ Ô(¨°$´*Ñ=Ô=ˆEÝ˜w¨µ°U±´¸UØ&¨¬Ý(Ô0°Ô1DØ18Ø18ñ :ô  :õ  )Ô0°Ô1AØ18Ø18ñ :ô  :ñ!ô !ð !ð �NŠN˜5Ñ!Ô!Ð!Ø×#Ò# EÑ*Ô*Ð*Ð*Ð*s   Á+BÂBÂBc                 óŒ   — | j         D ];}|j        |cxk    r|j        k     r"n Œ|                     ||||j        z
  ¦  «         Œ<d S r?  )r  r×  rØ  rÉ  ©rV   rz   r:   rs  rä  s        r@   r%  z.make_nditer_cls.<locals>.NdIter._loop_continue  sg   € Ø”}ð Mð M�Ø”= CÐ5Ð5Ò5Ð5¨#¬+Ò5Ð5Ð5Ð5Ð5Ø×%Ò% g¨w¸¸c¼mÑ8KÑLÔLÐLøðMð MrB   c                 óŒ   — | j         D ];}|j        |cxk    r|j        k     r"n Œ|                     ||||j        z
  ¦  «         Œ<d S r?  )r  r×  rØ  rÊ  r*  s        r@   r&  z+make_nditer_cls.<locals>.NdIter._loop_break  se   € Ø”}ð Jð J�Ø”= CÐ5Ð5Ò5Ð5¨#¬+Ò5Ð5Ð5Ð5Ð5Ø—N’N 7¨G°S¸3¼=Ñ5HÑIÔIÐIøðJð JrB   c                 ó  •‡‡— dg‰z  }‰j         }| j        }‰j        }	t          |	t          j        ¦  «        rt          |	¦  «        }	n|	g}	ˆˆfd„t          ‰¦  «        D ¦   «         Št          ||¦  «        D ]p\  }
}|
\  }}}}‰|j	        |j
        …         }‰dk    r|ddd…         }|D ]<}||         �J ‚|                      |‰||	|         ||         ||         |¦  «        ||<   Œ=Œqt          d„ |D ¦   «         ¦  «        sJ ‚|S )z:
            Compute the views to be yielded.
            Nc           	      ób   •— g | ]+}‰                      t          j        ‰‰|¦  «        ¦  «        ‘Œ,S r�   ©r;   r
   re   )rž   rj   r:   r£   s     €€r@   rŸ   z?make_nditer_cls.<locals>.NdIter._make_views.<locals>.<listcomp>/  sD   ø€ ð 0ð 0ð 0Øð —|’|¥GÔ$8¸À'È1Ñ$MÔ$MÑNÔNð 0ð 0ð 0rB   r¬  rú  c              3   ó   K  — | ]}|V — Œd S r?  r�   r   s     r@   rB  z>make_nditer_cls.<locals>.NdIter._make_views.<locals>.<genexpr><  s"   è è € Ð(Ð(˜Q�qÐ(Ð(Ð(Ð(Ð(Ð(rB   )rÔ  r  r  r”   r   rI  r¼   r5   r¡   r×  rØ  Ú
_make_viewrƒ  )rV   rz   r:   r£   r  r  r'  rÔ  r  Úrettysrä  r  rý  Úarray_indicesÚsub_indicesrj   r÷  ÚnarraysrÁ  r  s     ``            €€€€r@   r#  z+make_nditer_cls.<locals>.NdIter._make_views#  si  øøø€ ð �F˜WÑ$ˆEØÔ(ˆHØ”}ˆHØÔ(ˆFÝ˜&¥%¤/Ñ2Ô2ð "Ý˜f™œ��à ˜�ð0ð 0ð 0ð 0ð 0Ý % g¡¤ð0ñ 0ô 0ˆGõ !$ H¨hÑ 7Ô 7ð 	Nð 	N‘��WØ),Ñ&��1�a˜Ø% gÔ&7¸¼Ð&GÔH�Ø˜S’=�=Ø"-¨d¨d°¨dÔ"3�KØ&ð Nð N�AØ  œ8Ð+Ð+Ð+Ø#Ÿš¨w¸ÀØ/5°a¬yØ/5°a¬y¸&À¼)ÀWñ Nô  N�E˜!‘H�HðNõ
 Ð(Ð( %Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(ØˆLrB   c                 óÞ  — t          |t          j        ¦  «        r|j        dk    sJ ‚|                     |||||¦  «        } |                     |¦  «        ||¦  «        }	t          ||¦  «        }
|                     |t          j        t          j	        d¦  «        d¦  «        }|                     |t          j        t          j	        d¦  «        d¦  «        }t          |	||||
d¬¦  «         |	S )zD
            Compute a 0d view for a given input array.
            r   r�   N)r«   )r”   r   r•   rm   ré  ru   r|   r  r�  r‹   rÕ   )rV   rz   r:   r£   r=  r  r  r  rh   Úviewr­   rb   r¬   s                r@   r0  z*make_nditer_cls.<locals>.NdIter._make_view?  sã   € õ
 ˜e¥U¤[Ñ1Ô1ÐE°e´jÀA²o°o°o°oà×)Ò)¨'°7¸GÀUÈCÑPÔPˆCØ,�7×%Ò% eÑ,Ô,¨W°gÑ>Ô>ˆDå# G¨UÑ3Ô3ˆHØ×&Ò& wµ´½u¼zÈ1Ñ0MÔ0MØ')ñ+ô +ˆEà×(Ò(¨µ%´.ÅÄÈQÑ2OÔ2OØ)+ñ-ô -ˆGõ ˜4  e¨W°hÈÐMÑMÔMÐMØˆKrB   c                 ó@  — g }t          t          ||¦  «        ¦  «        D ]}\  }\  }}t          |t          j        ¦  «        r5|                      |                     |¦  «        |||¬¦  «        ¦  «         ŒW|                     t          | d|z  ¦  «        ¦  «         Œ~|S )Nr  r  )r’  r¡   r”   r   r•   rf   ru   r  )	rV   rz   r:   r  r  r	  rj   r  r  s	            r@   r  z2make_nditer_cls.<locals>.NdIter._arrays_or_scalarsS  s¼   € ð ˆAÝ#,­S°¸Ñ-@Ô-@Ñ#AÔ#Að <ð <‘�‘<�E˜3Ý˜e¥U¤[Ñ1Ô1ð <Ø—H’HÐ6˜W×/Ò/°Ñ6Ô6°wØ7>Ø=@ðBñ Bô Bñ Cô Cð Cð Cð —H’H�W T¨:¸©>Ñ:Ô:Ñ;Ô;Ð;Ð;ØˆHrB   N)rn   ro   rp   ro  r9  rã  r  rÞ  r(  r%  r&  r#  r0  r  )
rí  rú  r  rô  rþ  r÷  r4  rm   rÁ  r  s
   €€€€€€€€€€r@   ÚNdIterr  ˆ  s  ø€ € € € € ð	ð 	ð 
Ô	"ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ñ 
#Ô	"ð	ðM	8ð M	8ð M	8ð M	8ð M	8ð M	8ð M	8ð M	8ð^(	+ð (	+ð (	+ð (	+ð (	+ðT	Mð 	Mð 	Mð
	Jð 	Jð 	Jð
	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð8	ð 	ð 	ð(	ð 	ð 	ð 	ð 	rB   r8  )rm   r÷  r    r  rñ  Úobjectr
   rt   )rÁ  rä  r8  rí  rú  r  rô  rþ  r÷  r4  rm   r  s   `  @@@@@@@@@r@   Úmake_nditer_clsr:    sÒ  øøøøøøøøøø€ ð
 Œ=€DØŒ_€FÝ�(”/Ñ"Ô"€GØÔ3Ð:ˆdˆd¸€Gðð ð ð ð •fñ ô ð ð86ð 6ð 6ð 6ð 6�kñ 6ô 6ð 6ð@2ð 2ð 2ð 2ð 2ð 2ð 2˜[ñ 2ô 2ð 2ðGð Gð Gð Gð G˜ñ Gô Gð Gðð ð ð ð ˜ñ ô ð ðð ð ð ð ˜ñ ô ð ðVð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð Vð V•Ô,¨XÑ6Ô6ñ Vô Vð Vðp €MrB   c                 óZ   ‡— | j         Š G ˆfd„dt          j        | ¦  «        ¦  «        }|S )zr
    Return the Structure representation of the given *nditerty* (an
    instance of types.NumpyNdIndexType).
    c                   ó(   •— e Zd ZdZˆ fd„Zˆ fd„ZdS )ú%make_ndindex_cls.<locals>.NdIndexIterz,
        .ndindex() implementation.
        c                 óª  •— |                      t          j        d¦  «        }t          j        ||j        |                      t          j        ‰¦  «        ¬¦  «        }t          j        |t          j        ¦  «        }t          ‰¦  «        D ]š}t          j	        |||¦  «        }| 
                    ||¦  «         ||         }	|                     d|	|¦  «        }
t          j        ||
¦  «        5  | 
                    t          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   Œ›|| _        || _        t          j        |||j        ¦  «        | _        d S ©Nr   r|  rà  )r¿   r   r‹   r
   rT   r6   rì   rÅ  r5   re   r  rã  r"  rÇ  r£   r  rg   rb   )rV   rz   r:   rþ   ró   r£   r  rs  rÌ  r¾  Údim_is_emptyrm   s              €r@   rÞ  z3make_ndindex_cls.<locals>.NdIndexIter.init_specifico  s‹  ø€ Ø×'Ò'­¬
°AÑ6Ô6ˆDÝÔ)¨'°4´9Ø/6×/CÒ/CÅEÄJØDHñ0Jô 0JðKñ Kô KˆGõ  Ô1°'½7Ô;MÑNÔNˆIå˜T‘{”{ð 	@ð 	@�Ý Ô-¨g°wÀÑDÔD�Ø—’˜d FÑ+Ô+Ð+ð " #œ;�Ø&×4Ò4°T¸8ÀTÑJÔJ�ÝÔ(¨°,Ñ?Ô?ð @ð @Ø—M’M¥'Ô"3°YÑ?Ô?Ð?ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @øð #ˆDŒLØ&ˆDŒNÝ Ô+¨G°V¸T¼YÑGÔGˆDŒJˆJˆJs   Ã,!DÄD	Ä D	c                 ó,  •‡ ‡— |                      t          j        d¦  «        }‰                     d¦  «        }t	          j        ‰‰                     ‰ j        ¦  «        ¦  «        }t	          j        ‰|¦  «        5  | 	                    d¦  «         ‰ 
                    |¦  «         d d d ¦  «         n# 1 swxY w Y   ˆˆ fd„t          ‰
¦  «        D ¦   «         }|D ]}t          ‰|¦  «         Œ|                     t	          j        ‰||j        ¦  «        ¦  «         | 	                    d¦  «         t	          j        ‰‰ j        ‰
¦  «        }	t%          |‰‰
|	‰ j        ‰ j        ¦  «         ‰ 
                    |¦  «         ‰                     |¦  «         d S )Nr   r  Fc           	      ól   •— g | ]0}‰                      t          j        ‰‰j        |¦  «        ¦  «        ‘Œ1S r�   )r;   r
   re   r£   )rž   rs  r:   rV   s     €€r@   rŸ   zKmake_ndindex_cls.<locals>.NdIndexIter.iternext_specific.<locals>.<listcomp>�  sR   ø€ ð /ð /ð /ð ð —|’|¥GÔ$8¸Ø9=¼Ø9<ñ%>ô %>ñ ?ô ?ð /ð /ð /rB   T)r¿   r   r‹   rw  r
   r!  r;   r  r"  r  r„  r5   rF   r  rg   r6   rÀ   rb   rÎ  r£   r…  )rV   rz   r:   r  ró   rË  r  r£   r;   rb   rm   s   ` `       €r@   r(  z7make_ndindex_cls.<locals>.NdIndexIter.iternext_specific…  sÛ  øøø€ Ø×'Ò'­¬
°AÑ6Ô6ˆDà×.Ò.¨uÑ5Ô5ˆEåÔ+¨GØ,3¯LªL¸¼Ñ,HÔ,HñJô JˆIåÔ$ W¨iÑ8Ô8ð &ð &Ø× Ò  Ñ'Ô'Ð'Ø—’˜uÑ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð/ð /ð /ð /ð /õ #(¨¡+¤+ð/ñ /ô /ˆGð  ð -ð -�Ý˜g tÑ,Ô,Ð,Ð,à�MŠM�'Ô,¨W°g¸t¼yÑIÔIÑJÔJÐJØ×Ò˜TÑ"Ô"Ð"åÔ(¨°$´*¸dÑCÔCˆEÝ˜w¨°°uØ#œ|¨T¬^ñ=ô =ð =ð �NŠN˜5Ñ!Ô!Ð!Ø×#Ò# EÑ*Ô*Ð*Ð*Ð*s   Á;+B2Â2B6Â9B6N)rn   ro   rp   ro  rÞ  r(  ©rm   s   €r@   ÚNdIndexIterr=  j  sV   ø€ € € € € ð	ð 	ð	Hð 	Hð 	Hð 	Hð 	Hð,	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+rB   rD  )rm   r
   rt   )rÁ  rD  rm   s     @r@   Úmake_ndindex_clsrE  c  sT   ø€ ð
 Œ=€Dð5+ð 5+ð 5+ð 5+ð 5+ð 5+ð 5+•gÔ1°(Ñ;Ô;ñ 5+ô 5+ð 5+ðn ÐrB   c                 óÄ   ‡— ‰dv sJ ‚| j         }|j        dk    r$ G ˆfd„dt          j        | ¦  «        ¦  «        }|S  G ˆfd„dt          j        | ¦  «        ¦  «        }|S )N)r¹  r¿  r¦   c                   ó4   •— e Zd ZdZˆ fd„Zˆ fd„Zd„ Zd„ ZdS )ú6_make_flattening_iter_cls.<locals>.CContiguousFlatIterzZ
            .flat() / .ndenumerate() implementation for C-contiguous arrays.
            c                 ó¶  •— |                      t          j        d¦  «        }t          j        ||¦  «        | _        |j        | _        ‰	dk    r‹t          j        ||j	        |                      t          j        |j
        ¦  «        ¬¦  «        }t          |j
        ¦  «        D ].}t          j        |||¦  «        }|                     ||¦  «         Œ/|| _        d S d S )Nr   r¿  r|  )r¿   r   r‹   r
   rì   rí   r­   ræ  rT   r6   rm   r5   re   r  r£   )
rV   rz   r:   r  r  ró   r£   rs  rÌ  rf  s
            €r@   rÞ  zD_make_flattening_iter_cls.<locals>.CContiguousFlatIter.init_specific¯  sÕ   ø€ Ø×+Ò+­E¬J¸Ñ:Ô:�Ý$Ô6°wÀÑEÔE�”
ð "œl�”à˜=Ò(Ð(å%Ô1Ø ¤Ø$×1Ò1µ%´*¸e¼jÑIÔIðKñ Kô K�Gõ  % U¤ZÑ0Ô0ð 4ð 4˜Ý!(Ô!5°g¸wÈÑ!LÔ!L˜ØŸš d¨FÑ3Ô3Ð3Ð3à#*�D”L�L�Lð )Ð(rB   c                 óî  •‡‡— |j         }|j        }‰                     | j        ¦  «        }‰                     d||¦  «        }	|                     |	¦  «         t          j        ‰|	¦  «        5  ‰                     |j	        |g¦  «        }
t          |‰||
¦  «        }‰dk    r|                     |¦  «         nu| j        Šˆˆfd„t          |¦  «        D ¦   «         }t          j        ‰|¦  «        }|                     t          j        ‰||g¦  «        ¦  «         t!          |‰||‰¦  «         t          j        ‰|¦  «        }‰                     || j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr	  r¹  c           	      ób   •— g | ]+}‰                      t          j        ‰‰|¦  «        ¦  «        ‘Œ,S r�   r.  ©rž   rs  r:   r£   s     €€r@   rŸ   z\_make_flattening_iter_cls.<locals>.CContiguousFlatIter.iternext_specific.<locals>.<listcomp>Ø  sT   ø€ ð #;ð #;ð #;ð (+ð $+§<¢<µÔ0DÀWØELØEHñ1Jô 1Jñ $Kô $Kð #;ð #;ð #;rB   )rm   r²   r;   rí   r
  r  r
   rÆ  rø  r—   rƒ   r  r£   r5   rg   Úmake_anonymous_structrÐ  r  r  )rV   rz   r:   r  r  r  rm   r²   rí   r  rh   r  ÚidxvalsÚidxtupler£   rf  s     `           @€r@   r(  zH_make_flattening_iter_cls.<locals>.CContiguousFlatIter.iternext_specificÈ  sà  øøø€ Ø”z�Øœ�àŸš T¤ZÑ0Ô0�Ø"×.Ò.¨s°E¸6ÑBÔB�Ø× Ò  Ñ*Ô*Ð*åÔ& w°Ñ9Ô9ð 5ð 5Ø!Ÿ+š+ c¤h°°Ñ8Ô8�CÝ% g¨w¸¸sÑCÔC�EØ˜v’~�~ØŸš eÑ,Ô,Ð,Ð,ð #'¤,˜ð#;ð #;ð #;ð #;ð #;õ /4°D©k¬kð#;ñ #;ô #;˜õ $+Ô#5°g¸wÑ#GÔ#G˜ØŸšÝ#Ô9¸'Ø;CÀUÐ:KñMô MñNô Nð Nõ 1°¸'À5Ø14°gñ?ô ?ð ?õ $Ô3°G¸UÑCÔC�EØ—M’M %¨¬Ñ4Ô4Ð4ð)5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s   Á-C0E*Å*E.Å1E.c                 ó^   — |                      |j        |g¦  «        }t          ||||¦  «        S r?  )rø  r—   rƒ   ©rV   rz   r:   r  r  rí   rh   s          r@   r§  z>_make_flattening_iter_cls.<locals>.CContiguousFlatIter.getitemæ  s-   € Ø—k’k #¤(¨U¨GÑ4Ô4�Ý  ¨'°5¸#Ñ>Ô>Ð>rB   c                 ód   — |                      |j        |g¦  «        }t          |||||¦  «         d S r?  )rø  r—   r‡   ©rV   rz   r:   r  r  rí   r  rh   s           r@   Úsetitemz>_make_flattening_iter_cls.<locals>.CContiguousFlatIter.setitemê  s5   € Ø—k’k #¤(¨U¨GÑ4Ô4�Ý˜7 G¨U°E¸3Ñ?Ô?Ð?Ð?Ð?rB   N)rn   ro   rp   ro  rÞ  r(  r§  rT  ©rf  s   €r@   ÚCContiguousFlatIterrH  ª  st   ø€ € € € € ðð ð+ð +ð +ð +ð +ð25ð 5ð 5ð 5ð 5ð<?ð ?ð ?ð@ð @ð @ð @ð @rB   rV  c                   ó6   •— e Zd ZdZd„ Zˆ fd„Zd„ Zd„ Zd„ ZdS )ú+_make_flattening_iter_cls.<locals>.FlatIterzÛ
            Generic .flat() / .ndenumerate() implementation for
            non-contiguous arrays.
            It keeps track of pointers along each dimension in order to
            minimize computations.
            c                 ó¨  — |                      t          j        d¦  «        }|j        }|j        }t          j        ||j        |¦  «        }t          j        ||j	        |                      t          j        |j        ¦  «        ¬¦  «        }	t          j        ||j	        |                      t          j        |j        ¦  «        ¬¦  «        }
t          j
        |t
          j        ¦  «        }t          |¦  «        D ]Æ}t          j        ||	|¦  «        }t          j        ||
|¦  «        }|                     ||¦  «         |                     ||¦  «         ||         }|                     d||¦  «        }t          j        ||¦  «        5  |                     t
          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒÇ|	| _        |
| _        || _        d S r?  )r¿   r   r‹   r—   rm   r
   rÀ   rb   rT   r6   rì   rÅ  r5   re   r  rã  r"  rÇ  r£   Úpointersr  )rV   rz   r:   r  r  ró   r—   rm   rþ   r£   rZ  r  rs  rÌ  Úptrptrr¾  r@  s                    r@   rÞ  z9_make_flattening_iter_cls.<locals>.FlatIter.init_specificù  s  € Ø×+Ò+­E¬J¸Ñ:Ô:�Ø”x�Ø”z�Ý Ô-¨g°s´yÀ$ÑGÔG�å!Ô-Ø˜TœY¨W×-AÒ-AÅ%Ä*ØBGÄ*ñ.Nô .NðOñ Oô O�õ #Ô.Ø˜TœY¨W×-AÒ-AÅ%Ä*ØBGÄ*ñ.Nô .NðOñ Oô O�õ $Ô5°gÝ6=Ô6HñJô J�	õ ! ™;œ;ð Dð D�CÝ$Ô1°'¸7ÀCÑHÔH�FÝ$Ô1°'¸8ÀSÑIÔI�FØ—M’M $¨Ñ/Ô/Ð/Ø—M’M $¨Ñ/Ô/Ð/ð  & cœ{�HØ#*×#8Ò#8¸¸xÈÑ#NÔ#N�LÝ Ô,¨W°lÑCÔCð Dð DØŸš¥gÔ&7¸ÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Døð  '�”Ø (�”Ø!*�”��s   Æ!F1Æ1F5	Æ8F5	c                 ód  •‡‡— |j         }t          j        ‰|j        |¦  «        }t          j        ‰|j        |¦  «        }| j        Š| j        }	|                     t          j	        d¦  «        }
‰ 
                    d¦  «        }t          j        ‰‰                     | j        ¦  «        ¦  «        }t          j        ‰|¦  «        5  |                     d¦  «         ‰                     |¦  «         d d d ¦  «         n# 1 swxY w Y   |                     d¦  «         t          j        ‰|	|dz
  ¦  «        }‰                     |¦  «        }t%          |‰||¦  «        }‰dk    r|                     |¦  «         n[ˆˆfd„t)          |¦  «        D ¦   «         }t          j        ‰|¦  «        }|                     t          j        ‰||g¦  «        ¦  «         t/          t)          |¦  «        ¦  «        D �]o}t          j        ‰‰|¦  «        }t          j        ‰‰                     |¦  «        ¦  «        }||         }||         }‰                     d||¦  «        }t          j        ‰|¦  «        5  ‰                     ||¦  «         t          j        ‰|	|¦  «        }‰                     |¦  «        }t          j        ‰||¦  «        }‰                     ||¦  «         t)          |dz   |¦  «        D ].}t          j        ‰|	|¦  «        }‰                     ||¦  «         Œ/‰                     |¦  «         d d d ¦  «         n# 1 swxY w Y   ‰                     |
|¦  «         �Œq‰                     t          j        | j        ¦  «         ‰                     |¦  «         ‰                     |¦  «         d S )	Nr   r  FTrD   r¹  c           	      ób   •— g | ]+}‰                      t          j        ‰‰|¦  «        ¦  «        ‘Œ,S r�   r.  rL  s     €€r@   rŸ   zQ_make_flattening_iter_cls.<locals>.FlatIter.iternext_specific.<locals>.<listcomp>5  sT   ø€ ð 7ð 7ð 7ð $'ð  'Ÿ|š|­GÔ,@ÀØAHØADñ-Fô -Fñ  Gô  Gð 7ð 7ð 7rB   r	  )rm   r
   rÀ   rb   r¬   r£   rZ  r¿   r   r‹   rw  r!  r;   r  r"  r  r„  re   rƒ   r  r5   rg   rM  rò  r  r
  rÆ  r  rú   rÇ  r…  )rV   rz   r:   r  r  r  rm   rþ   r¬   rZ  ró   rË  Úis_exhaustedÚlast_ptrrh   r  rN  rO  rs  rÌ  r�   rÁ   ræ  rÍ  r[  Ú	inner_dimr£   rf  s     `                       @€r@   r(  z=_make_flattening_iter_cls.<locals>.FlatIter.iternext_specific  s%  øøø€ Ø”z�Ý Ô-¨g°s´yÀ$ÑGÔG�Ý!Ô.¨w¸¼ÀTÑJÔJ�Øœ,�Øœ=�à×+Ò+­E¬J¸Ñ:Ô:�à×2Ò2°5Ñ9Ô9�õ  'Ô2Ø˜WŸ\š\¨$¬.Ñ9Ô9ñ ;ô  ;�åÔ(¨°,Ñ?Ô?ð *ð *Ø×$Ò$ UÑ+Ô+Ð+Ø—N’N 5Ñ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð × Ò  Ñ&Ô&Ð&õ #Ô/°¸À4È!Á8ÑLÔL�Ø—l’l 8Ñ,Ô,�Ý! '¨7°E¸3Ñ?Ô?�Ø˜6’>�>Ø—M’M %Ñ(Ô(Ð(Ð(ð7ð 7ð 7ð 7ð 7õ +0°©+¬+ð7ñ 7ô 7�Gõ  'Ô1°'¸7ÑCÔC�HØ—M’MÝÔ5°gØ7?ÀÐ6GñIô IñJô Jð Jõ $¥E¨$¡K¤KÑ0Ô0ð 0ñ 0�CÝ$Ô1°'¸7ÀCÑHÔH�FÝ!Ô1°'Ø29·,²,¸vÑ2FÔ2FñHô H�Cð # 3œK�EØ$ Sœ\�FØ '× 3Ò 3°C¸¸eÑ DÔ D�IÝ Ô*¨7°IÑ>Ô>ð .ð .àŸš c¨6Ñ2Ô2Ð2Ý!(Ô!5°g¸xÈÑ!MÔ!M˜Ø%Ÿlšl¨6Ñ2Ô2˜Ý%Ô1°'¸3ÀÑGÔG˜ØŸš c¨6Ñ2Ô2Ð2å).¨s°Q©w¸Ñ)=Ô)=ð 7ð 7˜IÝ%,Ô%9¸'Ø:BØ:Cñ&Eô &E˜Fð $ŸMšM¨#¨vÑ6Ô6Ð6Ð6ØŸš uÑ-Ô-Ð-ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .ð —M’M $¨Ñ/Ô/Ð/Ñ/ð —’�gÔ/°´Ñ@Ô@Ð@Ø—’˜uÑ%Ô%Ð%à×'Ò'¨Ñ.Ô.Ð.Ð.Ð.s%   Ã+C=Ã=DÄDÉ-CL>Ì>M	ÍM	c           	      óÌ  — |j         }t          j        ||j        |¬¦  «        }t          j        ||j        |¬¦  «        }g }	t          t          |¦  «        ¦  «        D ]M}
|	                     |                     |||
         ¦  «        ¦  «         | 	                    |||
         ¦  «        }ŒN|	 
                    ¦   «          t          j        |||j        |||j        |	¦  «        }|S )Nrù   )rm   r
   rÀ   rb   r¬   rò  r5   rf   ÚuremÚudivÚreverserö  r—   r÷  )rV   rz   r:   r  r  rí   rm   rþ   r¬   r£   rs  rh   s               r@   Ú_ptr_for_indexz:_make_flattening_iter_cls.<locals>.FlatIter._ptr_for_index_  sÙ   € Ø”z�Ý Ô-¨g°s´yÈÐMÑMÔM�Ý!Ô.¨w¸¼È4ÐPÑPÔP�ð �Ý#¥E¨$¡K¤KÑ0Ô0ð =ð =�CØ—N’N 7§<¢<°°v¸c´{Ñ#CÔ#CÑDÔDÐDØ#ŸLšL¨°°s´Ñ<Ô<�E�EØ—’Ñ!Ô!Ð!åÔ/°¸À#Ä(Ø06¸ÀÄØ07ñ9ô 9�ð �
rB   c                 óX   — |                       |||||¦  «        }t          ||||¦  «        S r?  )re  rƒ   rQ  s          r@   r§  z3_make_flattening_iter_cls.<locals>.FlatIter.getitemp  s1   € Ø×)Ò)¨'°7¸EÀ3ÈÑNÔN�Ý  ¨'°5¸#Ñ>Ô>Ð>rB   c                 ó^   — |                       |||||¦  «        }t          |||||¦  «         d S r?  )re  r‡   rS  s           r@   rT  z3_make_flattening_iter_cls.<locals>.FlatIter.setitemt  s9   € Ø×)Ò)¨'°7¸EÀ3ÈÑNÔN�Ý˜7 G¨U°E¸3Ñ?Ô?Ð?Ð?Ð?rB   N)	rn   ro   rp   ro  rÞ  r(  re  r§  rT  rU  s   €r@   ÚFlatIterrX  ñ  s€   ø€ € € € € ðð ð+ð +ð +ðBC/ð C/ð C/ð C/ð C/ðJð ð ð"?ð ?ð ?ð@ð @ð @ð @ð @rB   rh  )r_   r÷  r
   rt   )r¼  rf  r_   rV  rh  s    `   r@   r»  r»  ¤  sâ   ø€ ØÐ*Ð*Ð*Ð*Ð*àÔ&€JàÔ˜CÒÐðB	@ð B	@ð B	@ð B	@ð B	@ð B	@ð B	@¥'Ô"=¸jÑ"IÔ"Iñ B	@ô B	@ð B	@ðH #Ð"ðE	@ð E	@ð E	@ð E	@ð E	@ð E	@ð E	@•wÔ2°:Ñ>Ô>ñ E	@ô E	@ð E	@ðN ˆrB   r¹  c                 óv  — t          t          j        |¦  «        ¦  «        } || |¦  «        }||_        |                      |¦  «        } || ||                     d¦  «        ¬¦  «        }|                     | |||¦  «         |                     ¦   «         }t          | |t          j        |¦  «        |¦  «        S ©NrÇ   )rW   )	r½  r   ÚNumpyFlatTyperÇ   ru   rd   rÞ  rñ   r   )rz   r:   r  r  ÚflatiterclsÚflatiterÚarrclsrõ   s           r@   Úmake_array_flatiterro  {  s³   € å%¥eÔ&9¸%Ñ&@Ô&@ÑAÔA€KØˆ{˜7 GÑ,Ô,€Hà€H„Nà×Ò Ñ&Ô&€FØ
ˆ&�˜' x×'@Ò'@ÀÑ'IÔ'IÐ
JÑ
JÔ
J€Cà×Ò˜7 G¨U°CÑ8Ô8Ð8à
×
Ò
Ñ
Ô
€CÝ˜W g­uÔ/BÀ5Ñ/IÔ/IÈ3ÑOÔOÐOrB   c                 óê   — |j         \  }|\  }t          |¦  «        } || ||¬¦  «        }|j        }|                      |¦  «        }	 |	| ||j        ¬¦  «        }
|                     | |||
|¦  «         d S r0  )ré   r½  r_   ru   rÇ   r(  )rz   r:   rX   ré   r  r¼  rm  rl  r  rn  r  s              r@   Úiternext_numpy_flatiterrq  ‹  sŒ   € ð ”8�L€ZØ�J€Xå% jÑ1Ô1€KØˆ{˜7 G°8Ð<Ñ<Ô<€HàÔ!€EØ×Ò Ñ&Ô&€FØ
ˆ&�˜'¨¬Ð
8Ñ
8Ô
8€Cà×Ò˜w¨°¸¸VÑDÔDÐDÐDÐDrB   c                 ó  — |j         d         }|\  }}t          |¦  «        } || ||¬¦  «        }|j        }|                      |¦  «        }	 |	| ||j        ¬¦  «        }
|                     | |||
|¦  «        }t          | ||j        |¦  «        S ©Nr   r  )ré   r½  r_   ru   rÇ   r§  r   rë   )rz   r:   rX   ré   r¼  rm  rí   rl  r  rn  r  rõ   s               r@   Úiternext_numpy_getitemrt  ›  s�   € à”˜!”€JØ�O€Hˆeå% jÑ1Ô1€KØˆ{˜7 G°8Ð<Ñ<Ô<€HàÔ!€EØ×Ò Ñ&Ô&€FØ
ˆ&�˜'¨¬Ð
8Ñ
8Ô
8€Cà
×
Ò
˜7 G¨U°C¸Ñ
?Ô
?€CÝ˜W g¨s¬ÀÑDÔDÐDrB   c                 ó  — |j         d         }|\  }}}t          |¦  «        } || ||¬¦  «        }|j        }	|                      |	¦  «        }
 |
| ||j        ¬¦  «        }|                     | ||	|||¦  «         |                      ¦   «         S rs  )ré   r½  r_   ru   rÇ   rT  r\  )rz   r:   rX   ré   r¼  rm  rí   r  rl  r  rn  r  s               r@   Úiternext_numpy_getitem_anyrv  «  s¡   € ð ”˜!”€JØ!Ñ€Hˆe�Uå% jÑ1Ô1€KØˆ{˜7 G°8Ð<Ñ<Ô<€HàÔ!€EØ×Ò Ñ&Ô&€FØ
ˆ&�˜'¨¬Ð
8Ñ
8Ô
8€Cà×Ò�W˜g u¨c°5¸%Ñ@Ô@Ð@Ø×"Ò"Ñ$Ô$Ð$rB   c                 óÊ   — |j         d         }t          |¦  «        } || ||d         ¬¦  «        }|                      |j        ¦  «        } || ||j        ¬¦  «        }|j        S rs  )ré   r½  ru   r_   rÇ   r²   )	rz   r:   rX   ré   r¼  rl  rm  rn  r  s	            r@   Úiternext_numpy_getitem_flatrx  ¼  sj   € à”˜!”€JÝ% jÑ1Ô1€KØˆ{˜7 G°4¸´7Ð;Ñ;Ô;€Hà×Ò 
Ô 5Ñ6Ô6€FØ
ˆ&�˜'¨¬Ð
8Ñ
8Ô
8€CØŒ:ÐrB   c                 óv  — |j         \  }|\  }t          t          j        |¦  «        ¦  «        } || |¦  «        }||_        |                      |¦  «        } || ||                     d¦  «        ¬¦  «        }|                     | |||¦  «         |                     ¦   «         }	t          | ||j
        |	¦  «        S rj  )ré   rÂ  r   ÚNumpyNdEnumerateTyperÇ   ru   rd   rÞ  rñ   r   rë   )
rz   r:   rX   ré   r  r  Ú	nditerclsrÕ  rn  rõ   s
             r@   Úmake_array_ndenumerater|  Ç  sº   € àŒX�F€EØ�D€CÝ*­5Ô+EÀeÑ+LÔ+LÑMÔM€IØˆY�w Ñ(Ô(€Fà€F„Là×Ò Ñ&Ô&€FØ
ˆ&�˜' v×'>Ò'>¸wÑ'GÔ'GÐ
HÑ
HÔ
H€Cà
×Ò˜ '¨5°#Ñ6Ô6Ð6à
×
Ò
Ñ
Ô
€CÝ˜W g¨s¬ÀÑDÔDÐDrB   c                 óê   — |j         \  }|\  }t          |¦  «        } || ||¬¦  «        }|j        }|                      |¦  «        }	 |	| ||j        ¬¦  «        }
|                     | |||
|¦  «         d S r0  )ré   rÂ  r_   ru   rÇ   r(  )rz   r:   rX   ré   r  rÁ  rÕ  r{  r  rn  r  s              r@   Úiternext_numpy_nditerr~  Ù  sŒ   € ð ”�J€XØ�H€Vå*¨8Ñ4Ô4€IØˆY�w ¨vÐ6Ñ6Ô6€FàÔ€EØ×Ò Ñ&Ô&€FØ
ˆ&�˜'¨¬Ð
6Ñ
6Ô
6€Cà
×Ò˜W g¨u°c¸6ÑBÔBÐBÐBÐBrB   c                 óB  ‡ ‡— ˆˆ fd„t          |j        |¦  «        D ¦   «         }t          t          j        t          |¦  «        ¦  «        ¦  «        } |‰ ‰¦  «        }|                     ‰ ‰|¦  «         |                     ¦   «         }t          ‰ ‰|j	        |¦  «        S )zndindex(*shape)c                 óZ   •— g | ]'\  }}‰                      ‰||t          j        ¦  «        ‘Œ(S r�   rÁ  )rž   Úargtyr“  r:   rz   s      €€r@   rŸ   z&make_array_ndindex.<locals>.<listcomp>í  sA   ø€ ð 4ð 4ð 4Ù�˜ð �\Š\˜' 3¨­u¬zÑ:Ô:ð 4ð 4ð 4rB   )
r¡   ré   rE  r   ÚNumpyNdIndexTyper    rÞ  rñ   r   rë   )rz   r:   rX   ré   rb   r{  rÕ  rõ   s   ``      r@   Úmake_array_ndindexrƒ  é  s­   øø€ ð4ð 4ð 4ð 4ð 4Ý" 3¤8¨TÑ2Ô2ð4ñ 4ô 4€Eõ !¥Ô!7½¸E¹
¼
Ñ!CÔ!CÑDÔD€IØˆY�w Ñ(Ô(€FØ
×Ò˜ '¨5Ñ1Ô1Ð1à
×
Ò
Ñ
Ô
€CÝ˜W g¨s¬ÀÑDÔDÐDrB   c                 óª  ‡ ‡‡
— |j         j        }|dk    rA|j        d         j        Š
|d         }t	          j        ‰||¦  «        }ˆˆ ˆ
fd„|D ¦   «         }ng }t          t          j        t          |¦  «        ¦  «        ¦  «        } |‰ ‰¦  «        }| 
                    ‰ ‰|¦  «         |                     ¦   «         }	t          ‰ ‰|j         |	¦  «        S )zndindex(shape)r   c                 óT   •— g | ]$}‰                      ‰|‰t          j        ¦  «        ‘Œ%S r�   rÁ  )rž   r�   r:   rz   rŽ   s     €€€r@   rŸ   z,make_array_ndindex_tuple.<locals>.<listcomp>  s=   ø€ ð #ð #ð #Øð —’˜g s¨Eµ5´:Ñ>Ô>ð #ð #ð #rB   )rë   rm   ré   rx   r
   rÀ   rE  r   r‚  r    rÞ  rñ   r   )rz   r:   rX   ré   rm   rF  rb   r{  rÕ  rõ   rŽ   s   ``        @r@   Úmake_array_ndindex_tupler†  ø  sî   øøø€ ð Œ?Ô€DØˆa‚x€xØ”˜”Ô!ˆØ�1ŒgˆåÔ$ W¨c°4Ñ8Ô8ˆð#ð #ð #ð #ð #ð #Ø!ð#ñ #ô #ˆˆð ˆå ¥Ô!7½¸E¹
¼
Ñ!CÔ!CÑDÔD€IØˆY�w Ñ(Ô(€FØ
×Ò˜ '¨5Ñ1Ô1Ð1à
×
Ò
Ñ
Ô
€CÝ˜W g¨s¬ÀÑDÔDÐDrB   c                 óˆ   — |j         \  }|\  }t          |¦  «        } || ||¬¦  «        }|                     | ||¦  «         d S r0  )ré   rE  r(  )rz   r:   rX   ré   r  rÁ  rÕ  r{  s           r@   Úiternext_numpy_ndindexrˆ    sU   € ð ”�J€XØ�H€Vå  Ñ*Ô*€IØˆY�w ¨vÐ6Ñ6Ô6€Fà
×Ò˜W g¨vÑ6Ô6Ð6Ð6Ð6rB   c                 ó`  — |j         }|j        }t          |j        d         t          j        ¦  «        rt          j        ||d         ¦  «        }n	|d         g} t          |¦  «        | |¦  «        }| 	                    | |||¦  «         | 
                    ¦   «         }t          | |||¦  «        S )z
    nditer(...)
    r   )rë   r  r”   ré   r   rI  r
   rÀ   r:  rÞ  rñ   r   )	rz   r:   rX   ré   rÁ  r  r  rÕ  rõ   s	            r@   Úmake_array_nditerrŠ    s§   € ð
 Œ€HØŒ_€Få�#”(˜1”+�uœÑ/Ô/ð ÝÔ% g¨t°A¬wÑ7Ô7ˆˆà�q”'�ˆà&�_˜XÑ&Ô& w°Ñ8Ô8€FØ
×Ò˜ '¨6°6Ñ:Ô:Ð:à
×
Ò
Ñ
Ô
€CÝ˜W g¨x¸Ñ=Ô=Ð=rB   c                 ó„   — |j         \  }|\  } t          |¦  «        | ||¬¦  «        }|                     | ||¦  «         d S r0  )ré   r:  r(  )rz   r:   rX   ré   r  rÁ  rÕ  s          r@   Úiternext_numpy_nditer2rŒ  /  sP   € ð ”�J€XØ�H€Và&�_˜XÑ&Ô& w°¸vÐFÑFÔF€FØ
×Ò˜W g¨vÑ6Ô6Ð6Ð6Ð6rB   c                 óH  — t          |¦  «        } || |¦  «        }|                      |j        ¦  «        }|                      t          j        t          | |¦  «        ¦  «        }|                      t          j        d¦  «        }t          t          j	        d¦  «        d¦  «        }	|D ]X}
| 
                    ||
¦  «        }|                     |d¦  «        }|                     |	|                     |d¦  «        ¦  «        }	ŒY|j        dk    rd}nõ|j        dk    ri|g}t          |dd…         ¦  «        D ]1}|                     |                     |d         |¦  «        ¦  «         Œ2t%          t          |¦  «        ¦  «        }n�|j        dk    rO|g}|dd…         D ]1}|                     |                     |d         |¦  «        ¦  «         Œ2t%          |¦  «        }n't'          d                     |j        ¦  «        ¦  «        ‚| 
                    ||¦  «        }|                     |d¦  «        }|                     |	|                     |d¦  «        ¦  «        }	|                     |	d	¬
¦  «        5  | j                             |t0          d¦  «         ddd¦  «         n# 1 swxY w Y   |j        }|                      |¦  «        }|                      t          j        |¦  «        }|                      ¦   «         ||f}t	          j        t          j        ¦  «        }t	          j        t?          |¦  «        ¦  «        }tA          ||t          j        t          j        ¦  «        }|  !                    |tD          ||¦  «        }| j#         $                    ||¦  «        }|  %                    t          j        ¦  «        }tM          j'        |||¬¦  «        }tM          j'        |||¬¦  «        }tQ          || )                    || *                    ¦   «         ¦  «        ||||¬¦  «         |S )a	  Utility function used for allocating a new array during LLVM code
    generation (lowering).  Given a target context, builder, array
    type, and a tuple or list of lowered dimension sizes, returns a
    LLVM value pointing at a Numba runtime allocated array.
    rD   r   r�   r¦   Nrú  r¬  z3Don't know how to allocate array with layout '{0}'.FrV  )z[array is too big; `arr.size * arr.dtype.itemsize` is larger than the maximum possible size.)rA  r×  )+ru   rw   rx   r¿   r   r‹   r|   r   r   rT  Úsmul_with_overflowrP  râ  rm   r÷  rò  rf   rÂ   r»   rO   rÄ   r  rX  rY  r¸   Úget_preferred_array_alignmentÚuint32r\  ÚMemInfoPointerÚvoidptrÚTypeRefr6   r"   rß  Ú_call_allocatorrï   Úmeminfo_datar¹   r
   rg   rÕ   r,  rÞ  )rz   r:   rX  rþ   r¾  rý   Údatatyper­   ÚarrlenÚoverflowr§   Úarrlen_multr¬   Údimension_sizeÚallocsize_multr3  rx   Ú	align_valr   ré   ÚmipÚarytypeclassÚargtypesr«   r—   rÎ   Úshape_arrayÚstrides_arrays                               r@   rõ  rõ  <  s%  € õ ˜Ñ Ô €FØ
ˆ&�˜'Ñ
"Ô
"€Cà×$Ò$ W¤]Ñ3Ô3€HØ×#Ò#¥E¤Jµ¸WÀgÑ0NÔ0NÑOÔO€Hð ×!Ò!¥%¤*¨aÑ0Ô0€FÝ�œ
 1™œ qÑ)Ô)€HØð 
ð 
ˆØ×0Ò0°¸Ñ;Ô;ˆØ×&Ò& {°AÑ6Ô6ˆØ—;’;Ø�g×+Ò+¨K¸Ñ;Ô;ñ
ô 
ˆˆð „|�qÒÐØˆˆØ	Œ˜3Ò	Ð	Ø�*ˆÝ& v¨a¨b¨b¤zÑ2Ô2ð 	Eð 	EˆNØ�NŠN˜7Ÿ;š; w¨r¤{°NÑCÔCÑDÔDÐDÐDÝ� Ñ)Ô)Ñ*Ô*ˆˆØ	Œ˜3Ò	Ð	Ø�*ˆØ$ S b Sœkð 	Eð 	EˆNØ�NŠN˜7Ÿ;š; w¨r¤{°NÑCÔCÑDÔDÐDÐDÝ˜‘.”.ˆˆå!ØA×HÒHØ”ñ ô  ñ!ô !ð 	!ð
 ×/Ò/°¸ÑAÔA€NØ×%Ò% n°aÑ8Ô8€IØ�{Š{˜8 W×%:Ò%:¸>È1Ñ%MÔ%MÑNÔN€Hà	�Š˜¨%ˆÑ	0Ô	0ð 
ð 
ð 	Ô×)Ò)Ø•Zð-ñ	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð ŒM€EØ×5Ò5°eÑ<Ô<€IØ× Ò ¥¤¨yÑ9Ô9€EØ×#Ò#Ñ%Ô% y°%Ð8€Då
Ô
�uœ}Ñ
-Ô
-€CÝ”=¥ g¡¤Ñ/Ô/€LÝ˜˜l­E¬J½¼ÑEÔE€Hà×&Ò& wµÀÈ4ÑPÔP€GØŒ;×#Ò# G¨WÑ5Ô5€Dà×#Ò#¥E¤JÑ/Ô/€FÝÔ$ W¨f¸Ð@Ñ@Ô@€KÝÔ& w°¸FÐCÑCÔC€Må�3ØŸš¨¨h×.AÒ.AÑ.CÔ.CÑDÔDØ$Ø(Ø$Ø"ð$ñ $ô $ð $ð €Js   É1"JÊJ#Ê&J#Ú	_allocatec                 ó   — d„ }|S )zTImplements a Numba-only default target (cpu) classmethod on the array
    type.
    c                 ó"   — t          ||¦  «        S r?  )Úintrin_alloc)Úclsr3  r   s      r@   rã   z _ol_array_allocate.<locals>.impl�  s   € Ý˜I uÑ-Ô-Ð-rB   r�   )r¦  r3  r   rã   s       r@   Ú_ol_array_allocater§  ‹  s   € ð
.ð .ð .à€KrB   c                 ó.   — |                       ||¦  «        S )z9Trampoline to call the intrinsic used for allocation
    )r¢  )rX  r�   r   s      r@   r”  r”  •  s   € ð ×Ò˜T 5Ñ)Ô)Ð)rB   c                 ón   — d„ }t          j        t           j        ¦  «        }t          |||¦  «        }||fS )z3Intrinsic to call into the allocator for Array
    c                 óH   — |\  }}| j                              |||¦  «        }|S r?  )rï   Úmeminfo_alloc_aligned)rz   r:   r"   ré   r3  r   r«   s          r@   ra  zintrin_alloc.<locals>.codegenŸ  s*   € Ø!Ñˆ�EØ”+×3Ò3°G¸YÈÑNÔNˆØˆrB   )r   r‘  r’  r"   )rb  r3  r   ra  r�  rX   s         r@   r¥  r¥  ›  s@   € ðð ð õ
 Ô
�uœ}Ñ
-Ô
-€CÝ
�C˜ EÑ
*Ô
*€CØ�ˆ<ÐrB   c           	      ó–  — d„ }t          |t          j        ¦  «        r&d}|                      |||t          j        ¦  «        g}n:t          |t          j        ¦  «        sJ ‚|j        }t          j        |||¬¦  «        }g }|D ](}| 	                     || ||j
        |¦  «        ¦  «         Œ)|                      |t          j        d¦  «        }	t          |¦  «        D ]m}
|                     d||
         |	¦  «        }t          j        ||¦  «        5  | j                             |t"          d¦  «         ddd¦  «         n# 1 swxY w Y   Œn|S )z;
    Parse the shape argument to an array constructor.
    c                 ó  — |                       t          j        ¦  «        }|j        }t	          j        |¦  «        }t          |d|dz
  z  dz
  ¦  «        }|j        |k     r|                     ||¦  «        }n–|j        |k    r‹|                     d||¦  «        }	| 	                    |	d¬¦  «        5  | j
                             |t          d¦  «         ddd¦  «         n# 1 swxY w Y   |j        |k    r|                     ||¦  «        }n|}|S )z0Cast src to intp only if value can be maintainedrD   ú>FrV  )z#Cannot safely convert value to intpN)r¹   r   r‹   rE   r   rT  r   Úsextr
  r  rX  rY  r¸   Útrunc)
rz   r:   Úsrc_tr2  rÎ   Ú
intp_widthÚintp_irÚmaxvalrõ   Ú	is_largers
             r@   Úsafecast_intpz#_parse_shape.<locals>.safecast_intp­  sL  € à×'Ò'­¬
Ñ3Ô3ˆØ”\ˆ
Ý”*˜ZÑ(Ô(ˆÝ˜' Q¨*°q©.Ñ%8¸AÑ$=Ñ?Ô?ˆØŒ;˜Ò#Ð#Ø—,’,˜s GÑ,Ô,ˆCˆCØŒ[˜JÒ&Ð&Ø×+Ò+¨C°°fÑ=Ô=ˆIØ—’ °5�Ñ9Ô9ð ð ØÔ!×1Ò1Ø�ZØ<ñô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 Œ{˜ZÒ'Ð'Ø—m’m C¨Ñ1Ô1��à�Øˆ
s   Â/"CÃC!Ã$C!rD   rù   r   r	  )znegative dimensions not allowedN)r”   r   r–   rŠ   r‹   rI  rÁ   r
   rÀ   rf   r6   Úget_constant_genericr5   r
  r"  rX  rY  r¸   )rz   r:   rA  r†   r¶  rm   Úpassed_shapesrþ   r§   ró   rs  Úis_negs               r@   Ú_parse_shaperº  ©  sš  € ðð ð õ* �"•e”mÑ$Ô$ð GØˆØ Ÿš g¨s°B½¼
ÑCÔCÐDˆˆå˜"�eœoÑ.Ô.Ð.Ð.Ð.ØŒxˆÝÔ,¨W°cÀÐFÑFÔFˆà€FØð Bð BˆØ�Š�m�m G¨W°a´f¸aÑ@Ô@ÑAÔAÐAÐAà×'Ò'¨µ´¸QÑ?Ô?€DÝ�T‰{Œ{ð ð ˆØ×$Ò$ S¨&°¬+°tÑ<Ô<ˆÝÔ  ¨&Ñ1Ô1ð 	ð 	ØÔ×-Ò-Ø�Ð%Iñô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øð
 €Ms   Ä"D=Ä=E	ÅE	c                 ób   — |j         d         }|d         }|j        }|t          | |||¦  «        fS )zL
    Parse the arguments of a np.empty(), np.zeros() or np.ones() call.
    r   )ré   rë   rº  )rz   r:   rX   ré   ÚarrshapetypeÚarrshaperX  s          r@   Ú_parse_empty_argsr¾  Ù  s8   € ð ”8˜A”;€LØ�AŒw€HØŒo€GØ•L ¨'°<ÀÑJÔJÐJÐJrB   c                 óø   — |j         d         }t          |t          j        ¦  «        rK t	          |¦  «        | ||d         ¬¦  «        }t          j        ||j        |j        ¬¦  «        }|j	        |fS |j	        dfS )z_
    Parse the arguments of a np.empty_like(), np.zeros_like() or
    np.ones_like() call.
    r   r  rù   r�   )
ré   r”   r   r•   ru   r
   rÀ   rb   rm   rë   )rz   r:   rX   ré   Úarytyperý   rþ   s          r@   rM  rM  ã  sz   € ð
 Œh�qŒk€GÝ�'�5œ;Ñ'Ô'ð #Ø!�j˜Ñ!Ô! '¨7¸$¸q¼'ÐBÑBÔBˆÝÔ% g¨s¬yÀÄÐMÑMÔMˆØŒ Ð&Ð&àŒ Ð"Ð"rB   c                 ón   — t          |t          j        ¦  «        rd| › d�}t          j        |¦  «        ‚d S )NzIf np.z0 dtype is a string it must be a string constant.)r”   r   ÚUnicodeTyper	   rä   )Úfnamerx   rÍ   s      r@   Ú_check_const_str_dtyperÄ  ñ  sB   € Ý�%�Ô*Ñ+Ô+ð &ØN�uÐNÐNÐNˆÝÔ  Ñ%Ô%Ð%ð&ð &rB   c                 ó8   — |j         } ||||¦  «        }d„ }||fS )Nc                 óx   — t          | |||¦  «        \  }}t          | |||¦  «        }|                     ¦   «         S r?  )r¾  rõ  rñ   ©ré  r:   rX   rê  rX  rþ   rý   s          r@   ra  znumpy_empty_nd.<locals>.codegenü  s:   € Ý+¨E°7¸CÀÑHÔH‰ˆ�Ý˜U G¨W°fÑ=Ô=ˆØ�}Š}‰ŒÐrB   ©Úinstance_type)rì  Úty_shapeÚty_dtypeÚty_retty_refÚty_rettyrX   ra  s          r@   Únumpy_empty_ndrÎ  ÷  s8   € àÔ)€HØ
ˆ(�8˜X |Ñ
4Ô
4€Cðð ð ð �ˆ<ÐrB   c                 ó†  ‡— t          d|¦  «         |t          u s7t          |t          j        ¦  «        r|j        t          u st          |¦  «        rt          j        }nt          |¦  «        }t          | ¦  «        }|�'|�%t          j
        ||d¬¦  «        Št          fˆfd„	}|S d| › d|› d�}t          j        |¦  «        ‚)Nr×  r¦   rÓ  c                 ó&   •— t          | |‰¦  «        S r?  )rÎ  )rb   rx   r=  s     €r@   rã   zol_np_empty.<locals>.impl  s   ø€ Ý! %¨°Ñ6Ô6Ð6rB   z.Cannot parse input types to function np.empty(ú, ú))rÄ  Úfloatr”   r   ÚFunctionÚ
typing_keyr   ÚdoubleÚty_parse_dtypeÚty_parse_shaper•   r	   rä   )rb   rx   Únb_dtyperm   rã   rÍ   r=  s         @r@   Úol_np_emptyrÚ    sâ   ø€ å˜7 EÑ*Ô*Ð*Ø•ˆˆÝ	�E�5œ>Ñ	*Ô	*ð 	Ø/4Ô/?Å5Ð/HÐ/HÝ˜ÑÔð 0Iå”<ˆˆå! %Ñ(Ô(ˆå˜%Ñ Ô €DØÐ Ð 0Ý” (°¸cÐBÑBÔBˆå#ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7àˆàP¸uÐPÐPÈÐPÐPÐPˆÝÔ  Ñ%Ô%Ð%rB   c                 ó8   — |j         } ||||¦  «        }d„ }||fS )Nc                 óx   — t          | |||¦  «        \  }}t          | |||¦  «        }|                     ¦   «         S r?  )rM  rõ  rñ   rÇ  s          r@   ra  z$numpy_empty_like_nd.<locals>.codegen  s:   € Ý0°¸ÀÀfÑMÔM‰ˆ�Ý˜U G¨W°fÑ=Ô=ˆØ�}Š}‰ŒÐrB   rÈ  )rì  Úty_prototyperË  rÌ  rÍ  rX   ra  s          r@   Únumpy_empty_like_ndrÞ    s8   € àÔ)€HØ
ˆ(�< ¨<Ñ
8Ô
8€Cðð ð ð �ˆ<ÐrB   c                 ó´  ‡— t          d|¦  «         t          |¦  «        st          |¦  «        }n$t          | t          j        ¦  «        r| j        }n| }|�^t          | t          j        ¦  «        r-| j        dk    r| j        nd}|                      ||d¬¦  «        Šn4t	          j        |dd¦  «        Šnd| › d|› d	�}t          j
        |¦  «        ‚dˆfd
„	}|S )Nrs  rU  r¦   F)rx   r÷  r]  r   z3Cannot parse input types to function np.empty_like(rÑ  rÒ  c                 ó&   •— t          | |‰¦  «        S r?  )rÞ  )r  rx   r=  s     €r@   rã   zol_np_empty_like.<locals>.impl9  s   ø€ Ý" 3¨¨uÑ5Ô5Ð5rB   r?  )rÄ  r   r×  r”   r   r•   rx   r÷  rW  r	   rä   )r  rx   rÙ  r÷  rÍ   rã   r=  s         @r@   Úol_np_empty_likerá  %  s  ø€ å˜<¨Ñ/Ô/Ð/Ý�uÑÔð Ý! %Ñ(Ô(ˆˆÝ	�C�œÑ	%Ô	%ð Ø”9ˆˆàˆØÐÝ�c�5œ;Ñ'Ô'ð 	2Ø#&¤:°Ò#4Ð#4�S”Z�Z¸#ˆFØ—H’H 8°FÀU�HÑKÔKˆEˆEå”K ¨!¨SÑ1Ô1ˆEˆEð0Ø #ð0ð 0Ø',ð0ð 0ð 0ˆåÔ  Ñ%Ô%Ð%ð6ð 6ð 6ð 6ð 6ð 6à€KrB   c                 ó8   — t          j        |¦  «        }d„ }||fS )Nc                 óÐ   —  t          |j        d         ¦  «        | ||d         ¦  «        }t          j        ||j        |                     |j        |j        ¦  «        d¦  «         d S rá   )ru   ré   r
   rN  r—   rÂ   r­   r²   )ré  r:   rX   rê  rý   s        r@   ra  z(_zero_fill_array_method.<locals>.codegenB  sb   € Ø%�j˜œ !œÑ%Ô% e¨W°f¸Q´iÑ@Ô@ˆÝŒ�w ¤¨'¯+ª+°c´lÀCÄJÑ*OÔ*OØñ	ô 	ð 	ð 	ð 	rB   )r   r  )rì  rV   rX   ra  s       r@   Ú_zero_fill_array_methodrä  >  s,   € å
Œ*�TÑ
Ô
€Cðð ð ð �ˆ<ÐrB   Ú
_zero_fillc                 ó   — d„ }|S )z?Adds a `._zero_fill` method to zero fill an array using memset.c                 ó$   — t          | ¦  «         d S r?  )rä  ra  s    r@   rã   z ol_array_zero_fill.<locals>.implL  s   € Ý Ñ%Ô%Ð%Ð%Ð%rB   r�   )rV   rã   s     r@   Úol_array_zero_fillrè  I  s   € ð&ð &ð &à€KrB   c                 ó:   — t          d|¦  «         t          fd„}|S )NrO  c                 óZ   — t          j        | |¬¦  «        }|                     ¦   «          |S ©NrÔ  )ru  r×  rå  )rb   rx   r  s      r@   rã   zol_np_zeros.<locals>.implU  s+   € ÝŒh�u EÐ*Ñ*Ô*ˆØ�ŠÑÔÐØˆ
rB   )rÄ  rÓ  ©rb   rx   rã   s      r@   Úol_np_zerosrí  Q  s0   € å˜7 EÑ*Ô*Ð*åð ð ð ð ð €KrB   c                 ó.   — t          d|¦  «         dd„}|S )NÚ
zeros_likec                 óZ   — t          j        | |¬¦  «        }|                     ¦   «          |S rë  )ru  rs  rå  )rÛ  rx   r  s      r@   rã   zol_np_zeros_like.<locals>.impla  s+   € ÝŒm˜A UÐ+Ñ+Ô+ˆØ�ŠÑÔÐØˆ
rB   r?  ©rÄ  rü  s      r@   Úol_np_zeros_likerò  \  s-   € å˜<¨Ñ/Ô/Ð/ðð ð ð ð €KrB   c                 ó.   — t          d|¦  «         dd„}|S )NÚ	ones_likec                 óˆ   — t          j        | |¬¦  «        }|j        }t          t	          |¦  «        ¦  «        D ]}d||<   Œ|S ©NrÔ  rD   ©ru  rs  r¹  r5   r    )rÛ  rx   r  Úarr_flatr�   s        r@   rã   zol_np_ones_like.<locals>.implm  sJ   € ÝŒm˜A UÐ+Ñ+Ô+ˆØ”8ˆÝ�˜X™œÑ'Ô'ð 	ð 	ˆCØˆH�S‰MˆMØˆ
rB   r?  rñ  rü  s      r@   Úol_np_ones_likerù  h  s-   € å˜;¨Ñ.Ô.Ð.ðð ð ð ð €KrB   c                 óv   ‡— t          d|¦  «         t          |¦  «        st          |¦  «        Šn|Šdˆfd„	}|S )NÚfullc                 óˆ   •— t          j        | ‰¦  «        }|j        }t          t	          |¦  «        ¦  «        D ]}|||<   Œ|S r?  ©ru  r×  r¹  r5   r    )rb   Ú
fill_valuerx   r  rø  r�   rÙ  s         €r@   rû  zimpl_np_full.<locals>.full~  sH   ø€ ÝŒh�u˜hÑ'Ô'ˆØ”8ˆÝ�˜X™œÑ'Ô'ð 	'ð 	'ˆCØ&ˆH�S‰MˆMØˆ
rB   r?  )rÄ  r   r×  )rb   rþ  rx   rû  rÙ  s       @r@   Úimpl_np_fullrÿ  v  s\   ø€ å˜6 5Ñ)Ô)Ð)Ý�uÑÔð Ý! %Ñ(Ô(ˆˆàˆðð ð ð ð ð ð €KrB   c                 ó.   — t          d|¦  «         dd„}|S )Nr‘  c                 ó†   — t          j        | |¦  «        }|j        }t          t	          |¦  «        ¦  «        D ]}|||<   Œ|S r?  r÷  )rÛ  rþ  rx   r  rø  r�   s         r@   r‘  z$impl_np_full_like.<locals>.full_like‹  sG   € ÝŒm˜A˜uÑ%Ô%ˆØ”8ˆÝ�˜X™œÑ'Ô'ð 	'ð 	'ˆCØ&ˆH�S‰MˆMØˆ
rB   r?  rñ  )rÛ  rþ  rx   r‘  s       r@   Úimpl_np_full_liker  ‡  s.   € å˜;¨Ñ.Ô.Ð.ðð ð ð ð ÐrB   c                 ó.   — t          d|¦  «         dd„}|S )NÚonesc                 óˆ   — t          j        | |¬¦  «        }|j        }t          t	          |¦  «        ¦  «        D ]}d||<   Œ|S rö  rý  )rb   rx   r  rø  r�   s        r@   rã   zol_np_ones.<locals>.impl›  sJ   € ÝŒh�u EÐ*Ñ*Ô*ˆØ”8ˆÝ�˜X™œÑ'Ô'ð 	ð 	ˆCØˆH�S‰MˆMØˆ
rB   r?  rñ  rì  s      r@   Ú
ol_np_onesr  •  s/   € õ ˜6 5Ñ)Ô)Ð)ðð ð ð ð €KrB   c                 óŠ   ‡— t          d|¦  «         t          |¦  «        st          |¦  «        Šnt          j        Šdˆfd„	}|S )NÚidentityc                 óh   •— t          j        | | f‰¦  «        }t          | ¦  «        D ]	}d|||f<   Œ
|S r’  )ru  rO  r5   )rÛ  rx   r  rj   rÙ  s       €r@   r  z"impl_np_identity.<locals>.identity¬  sA   ø€ ÝŒh˜˜1�v˜xÑ(Ô(ˆÝ�q‘”ð 	ð 	ˆAØˆC��1�‰IˆIØˆ
rB   r?  )rÄ  r   r×  r   rÖ  )rÛ  rx   r  rÙ  s      @r@   Úimpl_np_identityr
  ¤  s^   ø€ å˜: uÑ-Ô-Ð-Ý�uÑÔð  Ý! %Ñ(Ô(ˆˆå”<ˆðð ð ð ð ð ð
 €OrB   c                 ó   — d S r?  r�   ©ÚNÚMs     r@   Ú_eye_none_handlerr  ´  rð  rB   c                 óH   — t          |t          j        ¦  «        rd„ }nd„ }|S )Nc                 ó   — | S r?  r�   r  s     r@   rã   z$_eye_none_handler_impl.<locals>.impl»  ó   € ØˆHrB   c                 ó   — |S r?  r�   r  s     r@   rã   z$_eye_none_handler_impl.<locals>.impl¾  r  rB   ©r”   r   r   )r  r  rã   s      r@   Ú_eye_none_handler_implr  ¸  s>   € å�!•U”^Ñ$Ô$ð ð	ð 	ð 	ð 	ð	ð 	ð 	à€KrB   c                 óB  ‡— |�t          |t          j        ¦  «        rt          j        t
          ¦  «        ŠnYt          |t          j        t          j        f¦  «        rt          t          |d|¦  «        ¦  «        Šnt          j        |¦  «        Šd dt
          fˆfd„	}|S )Nrx   r   c                 ó   •— t          | |¦  «        }t          j        | |f‰¦  «        }|dk    r0t          | ||z
  ¦  «        }t	          |¦  «        D ]}d||||z   f<   Œn/t          | |z   |¦  «        }t	          |¦  «        D ]}d|||z
  |f<   Œ|S rì  )r  ru  rO  rv  r5   )	r  r  rÓ   rx   Ú_Mr  Údrj   r¢  s	           €r@   rã   znumpy_eye.<locals>.implÎ  s®   ø€ Ý˜q !Ñ$Ô$ˆÝŒh˜˜2�w Ñ#Ô#ˆØ�Š6ˆ6Ý�A�r˜A‘v‘”ˆAÝ˜1‘X”Xð "ð "�Ø !��A�q˜1‘u�H‘�ð"õ �A˜‘E˜2‘”ˆAÝ˜1‘X”Xð "ð "�Ø !��A˜‘E˜1�H‘�Øˆ
rB   )
r”   r   r   ru  rx   rÓ  Ú	DTypeSpecr   r   r  )r  r  rÓ   rx   rã   r¢  s        @r@   Ú	numpy_eyer  Ã  s˜   ø€ ð €}�
 5­%¬.Ñ9Ô9€}ÝŒX•e‰_Œ_ˆˆÝ	�E�EœO­U¬\Ð:Ñ	;Ô	;ð å•g˜e W¨eÑ4Ô4Ñ5Ô5ˆˆåŒX�e‰_Œ_ˆà˜!¥5ð ð ð ð ð ð ð €KrB   c                 óÆ   — t          | ¦  «        st          j        d¦  «        ‚t          | t          j        ¦  «        r#| j        dvrt          j        d¦  «        ‚dd„}|S d S )Nú#The argument "v" must be array-like)rD   rÜ  zInput must be 1- or 2-d.r   c                 ó~  — | j         dk    rŽ| j        }|d         t          |¦  «        z   }t          j        ||f| j        ¦  «        }|dk    r&t          ||z
  ¦  «        D ]}| |         ||||z   f<   Œn%t          ||z   ¦  «        D ]}| |         |||z
  |f<   Œ|S | j        \  }}|dk     r||z   }|dk    r||z
  }t          t          ||¦  «        d¦  «        }t          j	        || j        ¦  «        }|dk    r#t          |¦  «        D ]}| |||z   f         ||<   Œn"t          |¦  «        D ]}| ||z
  |f         ||<   Œ|S r¨  )
rm   rb   rÍ  ru  rO  rx   r5   r–  rv  r×  )rÔ   rÓ   r§   rÛ  rc  rj   ÚrowsÚcolss           r@   Ú	diag_implzimpl_np_diag.<locals>.diag_implæ  sy  € ØŒv˜Š{ˆ{Ø”G�Ø�a”D�3˜q™6œ6‘M�Ý”h  1˜v q¤wÑ/Ô/�Ø˜’6�6Ý" 1 q¡5™\œ\ð -ð -˜Ø()¨!¬˜˜A˜q 1™u˜H™˜ð-õ # 1 q¡5™\œ\ð -ð -˜Ø()¨!¬˜˜A ™E 1˜H™˜Ø�
àœW‘
��dØ�q’5�5Ø !™8�DØ�q’5�5Ø !™8�DÝ�˜D $™œ¨Ñ+Ô+�Ý”h˜q !¤'Ñ*Ô*�Ø˜’6�6Ý" 1™XœXð -ð -˜Ø!" 1 a¨!¡e 8¤˜˜A™˜ð-õ # 1™XœXð -ð -˜Ø!" 1 q¡5¨! 8¤˜˜A™˜Ø�
rB   rœ  )r   r	   rä   r”   r   r•   rm   ÚNumbaTypeError)rÔ   rÓ   r!  s      r@   Úimpl_np_diagr#  Ý  s~   € å˜AÑÔð HÝÔ Ð!FÑGÔGÐGå�!•U”[Ñ!Ô!ð ØŒ6˜ÐÐÝÔ'Ð(BÑCÔCÐCð	ð 	ð 	ð 	ð6 Ðð?ð rB   c                 óÆ   — t          | ¦  «        sd}t          j        |¦  «        ‚t          |t          t
          j        f¦  «        sd}t          j        |¦  «        ‚dd„}|S )Nr  z#The argument "k" must be an integerr   c                 ót  — t          j        | ¦  «        } |                      ¦   «         } t          | ¦  «        }t	          |¦  «        }||z   }t          j        ||f| j        ¦  «        }t          j        d| ¦  «        }t          j        d|¦  «        }t          |¦  «        D ]}| |         |||z   ||z   f<   Œ|S rá   )	ru  rv  rN  r    rÍ  rO  rx   Úmaximumr5   )	rÔ   rÓ   r§   Úabs_krÛ  rõ   rj   ÚjÚts	            r@   rã   znumpy_diagflat.<locals>.impl  s­   € ÝŒJ�q‰MŒMˆØ�GŠG‰IŒIˆÝ�‰FŒFˆÝ�A‘”ˆØ�‰IˆÝŒh˜˜1�v˜qœwÑ'Ô'ˆÝŒJ�q˜1˜"ÑÔˆÝŒJ�q˜!ÑÔˆÝ�q‘”ð 	%ð 	%ˆAØ ! !¤ˆC��A‘�q˜1‘u�ÑÐØˆ
rB   rœ  )r   r	   rä   r”   r½   r   r–   )rÔ   rÓ   rÍ   rã   s       r@   Únumpy_diagflatr*    sr   € å˜AÑÔð &Ø3ˆÝÔ  Ñ%Ô%Ð%å�a�#�uœ}Ð-Ñ.Ô.ð &Ø3ˆÝÔ  Ñ%Ô%Ð%ðð ð ð ð €KrB   Útakec                 ób  ‡— t          | t          j        ¦  «        rt          |t          j        ¦  «        rd„ }|S t	          d„ | |fD ¦   «         ¦  «        r|j        dk    Šˆfd„}|S t          | t          j        ¦  «        r+t          |t          j        t          j        f¦  «        rd„ }|S d S d S )Nc                 óˆ   — || j         dz
  k    s|| j          k     rt          d¦  «        ‚|                      ¦   «         |         S )NrD   úIndex out of bounds)r�   Ú
IndexErrorrN  )rÛ  r£   s     r@   Ú	take_implznumpy_take.<locals>.take_impl#  sC   € Ø˜!œ& 1™*Ò%Ð%¨°A´F°7Ò):Ð):Ý Ð!6Ñ7Ô7Ð7Ø—7’7‘9”9˜WÔ%Ð%rB   c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r?  r@  r  s     r@   rB  znumpy_take.<locals>.<genexpr>)  s.   è è € Ð
@Ð
@¨C�:�c�5œ;Ñ'Ô'Ð
@Ð
@Ð
@Ð
@Ð
@Ð
@rB   r¬  c                 óz  •— t          j        |j        | j        ¬¦  «        }‰r|                     ¦   «         }n|}t          j        |¦  «        }d}|                      ¦   «         }|D ];}|| j        dz
  k    s|| j         k     rt          d¦  «        ‚||         ||<   |dz   }Œ<|                     |j	        ¦  «        S ©NrÔ  r   rD   r.  )
ru  r×  r�   rx   rW  rÕ  rN  r/  rH  rb   )	rÛ  r£   rc  ÚwalkerÚitrj   r¹  rH  ÚF_orders	           €r@   r0  znumpy_take.<locals>.take_impl,  s¿   ø€ Ý”(˜7œ<¨q¬wÐ7Ñ7Ô7ˆCØð !Ø Ÿš™œ��à �Ý”˜6Ñ"Ô"ˆBØˆAØ—7’7‘9”9ˆDØð ð �Ø˜œ ™
Ò#Ð# q¨A¬F¨7¢{ {Ý$Ð%:Ñ;Ô;Ð;Ø˜aœ��A‘Ø˜‘E��Ø—;’;˜wœ}Ñ-Ô-Ð-rB   c                 ón  — t          j        |¦  «        }t          j        |j        | j        ¬¦  «        }t          j        |¦  «        }d}|                      ¦   «         }|D ];}|| j        dz
  k    s|| j         k     rt          d¦  «        ‚||         ||<   |dz   }Œ<|                     |j	        ¦  «        S r3  )
ru  rÇ   r×  r�   rx   rÕ  rN  r/  rH  rb   )rÛ  r£   Úconvertrc  r5  rj   r¹  rH  s           r@   r0  znumpy_take.<locals>.take_impl?  s±   € Ý”h˜wÑ'Ô'ˆGÝ”(˜7œ<¨q¬wÐ7Ñ7Ô7ˆCÝ”˜7Ñ#Ô#ˆBØˆAØ—7’7‘9”9ˆDØð ð �Ø˜œ ™
Ò#Ð# q¨A¬F¨7¢{ {Ý$Ð%:Ñ;Ô;Ð;Ø˜aœ��A‘Ø˜‘E��Ø—;’;˜wœ}Ñ-Ô-Ð-rB   )r”   r   r•   r–   rƒ  r÷  rß  rI  )rÛ  r£   r0  r6  s      @r@   Ú
numpy_taker9    sí   ø€ õ �!•U”[Ñ!Ô!ð ¥j°½%¼-Ñ&HÔ&Hð ð	&ð 	&ð 	&ð Ðå
Ð
@Ð
@°A°w°<Ð
@Ñ
@Ô
@Ñ@Ô@ð Ø”. CÒ'ˆð	.ð 	.ð 	.ð 	.ð 	.ð Ðå�!•U”[Ñ!Ô!ð Ý�w¥¤­U¬_Ð =Ñ>Ô>ðð	.ð 	.ð 	.ð Ððð ð ð rB   c                  ób  — d„ | D ¦   «         }t          d„ |D ¦   «         ¦  «        rt          j        }n|t          d„ |D ¦   «         ¦  «        rt          j        }nVt	          t          ddt          j        t          ¦  «        j        z  z  ¦  «        }d„ |D ¦   «         }t          ||gz   ¦  «        }|S )Nc                 óF   — g | ]}t          |t          j        ¦  «        °|‘ŒS r�   r  rÚ  s     r@   rŸ   z!_arange_dtype.<locals>.<listcomp>O  s)   € ÐCÐCÐC�A¥Z°µ5´>Ñ%BÔ%BÐCˆaÐCÐCÐCrB   c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r?  r  rÚ  s     r@   rB  z _arange_dtype.<locals>.<genexpr>Q  s.   è è € Ð
8Ð
8¨A�:�a�œÑ'Ô'Ð
8Ð
8Ð
8Ð
8Ð
8Ð
8rB   c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r?  )r”   r   ÚFloatrÚ  s     r@   rB  z _arange_dtype.<locals>.<genexpr>S  s.   è è € Ð8Ð8¨A�Z˜�5œ;Ñ'Ô'Ð8Ð8Ð8Ð8Ð8Ð8rB   zint%sr¤  c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r�   )r   Ú	unliteral©rž   rH  s     r@   rŸ   z!_arange_dtype.<locals>.<listcomp>b  s"   € Ð?Ð?Ð?°1�EœO¨AÑ.Ô.Ð?Ð?Ð?rB   )
rC  r   Ú
complex128r´   r  ru  rx   r½   r­   r–  )ré   Úboundsrx   ÚNPY_TYÚunliteral_boundss        r@   Ú_arange_dtyperF  N  s½   € ØCÐC˜ÐCÑCÔC€Få
Ð
8Ð
8°Ð
8Ñ
8Ô
8Ñ8Ô8ð 2ÝÔ ˆˆÝ	Ð8Ð8°Ð8Ñ8Ô8Ñ	8Ô	8ð 2Ý”ˆˆõ � ¨1­r¬x½©}¬}Ô/EÑ+EÑ FÑGÔGˆð @Ð?¸Ð?Ñ?Ô?ÐÝÐ$¨ yÑ0Ñ1Ô1ˆà€LrB   c                 ó^  ‡‡‡‡‡	— t          |t          j        ¦  «        r|j        }t          |t          j        ¦  «        r|j        }t          |t          j        ¦  «        r|j        }|€t          j        }|€t          j        }|€t          j        }t          | t          j        ¦  «        rrt          |t          j        t          j        f¦  «        rLt          |t          j        t          j        f¦  «        r&t          |t          j        t          j        f¦  «        sd S t          |t          j        ¦  «        rt          | ||¦  «        Šn|j	        Št          d„ | ||fD ¦   «         ¦  «        Š	t          | dd ¦  «        Št          |dd ¦  «        Št          |dd ¦  «        Šdˆˆˆˆˆ	fd„	}|S )Nc                 óB   — g | ]}t          |t          j        ¦  «        ‘ŒS r�   r  rA  s     r@   rŸ   znp_arange.<locals>.<listcomp>„  s4   € ð 5ð 5ð 5Øõ " !¥U¤]Ñ3Ô3ð 5ð 5ð 5rB   rå   c                 óî  •— ‰�‰n| }‰�‰n|}‰�‰n|}|�|nd}|€d|}	}n||}	}|dk    rt          d¦  «        ‚|	|z
  |z  }
t          t          j        |
j        ¦  «        ¦  «        }‰du rEt          t          j        |
j        ¦  «        ¦  «        }t          t          ||¦  «        d¦  «        }nt          |d¦  «        }t          j	        |‰¦  «        }|}t          |¦  «        D ]}|||z  z   ||<   Œ|S )NrD   r   zMaximum allowed size exceededT)r¸   r½   ÚmathÚceilr  r  r–  rv  ru  r×  r5   )r#  rÊ  rÀ  rx   Ú	lit_startÚlit_stopÚlit_stepÚ_stepÚ_startÚ_stopÚnitems_cÚnitems_rÚnitems_ir²   r  r†   rj   Ústart_valueÚ
step_valueÚ
stop_valueÚ
true_dtypeÚuse_complexs                    €€€€€r@   rã   znp_arange.<locals>.impl‹  s(  ø€ à#.Ð#:�K�KÀˆ	Ø!+Ð!7�:�:¸TˆØ!+Ð!7�:�:¸Tˆà$Ð0��°aˆØÐØ˜y�EˆFˆFà% x�EˆFà�AŠ:ˆ:ÝÐ<Ñ=Ô=Ð=à˜F‘N eÑ+ˆÝ•t”y ¤Ñ/Ô/Ñ0Ô0ˆð ˜$ÐÐÝ�4œ9 X¤]Ñ3Ô3Ñ4Ô4ˆHÝ�˜X xÑ0Ô0°!Ñ4Ô4ˆFˆFå˜ 1Ñ%Ô%ˆFÝŒh�v˜zÑ*Ô*ˆØˆÝ�v‘”ð 	'ð 	'ˆAØ˜A ™IÑ&ˆC�‰FˆFØˆ
rB   r©  )r”   r   ÚOptionalr6   r  r   r   r  rF  rx   rC  r  )
r#  rÊ  rÀ  rx   rã   rU  rV  rW  rX  rY  s
        @@@@@r@   Ú	np_aranger[  h  s¸  øøøøø€ å�$�œÑ'Ô'ð ØŒyˆÝ�$�œÑ'Ô'ð ØŒyˆÝ�%�œÑ(Ô(ð Ø”
ˆà€|ÝŒzˆØ€|ÝŒzˆØ€}Ý”
ˆå�u�eœlÑ+Ô+ð Ý�t�eœn­e¬lÐ;Ñ<Ô<ðå�t�eœn­e¬lÐ;Ñ<Ô<ðõ ˜5¥5¤>µ5´?Ð"CÑDÔDðð
 	ˆå�%�œÑ(Ô(ð !Ý" 5¨$°Ñ5Ô5ˆ
ˆ
à”[ˆ
åð 5ð 5Ø!&¨¨dÐ 3ð5ñ 5ô 5ñ 6ô 6€Kõ ˜% °$Ñ7Ô7€KÝ˜˜°Ñ5Ô5€JÝ˜˜°Ñ5Ô5€Jðð ð ð ð ð ð ð ð ð ð< €KrB   c                 ó$  ‡— t          d„ | |fD ¦   «         ¦  «        sd S t          |t          t          j        f¦  «        sd}t          j        |¦  «        ‚t          d„ | |fD ¦   «         ¦  «        rt          j        Šnt          j	        Šdˆfd„	}|S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r?  )r”   r   r   r  s     r@   rB  z!numpy_linspace.<locals>.<genexpr>®  s.   è è € ÐFÐF°�z˜#�uœ|Ñ,Ô,ÐFÐFÐFÐFÐFÐFrB   r  c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r?  r  r  s     r@   rB  z!numpy_linspace.<locals>.<genexpr>µ  r	  rB   rû  c                 óþ   •— t          j        |‰¦  «        }| dz  } |dz  }|dk    r|S |dz
  }|dk    r9|| z
  }t          j        ||¦  «        }t          d|¦  «        D ]}| ||z  z   ||<   Œn| |d<   |dk    r||d<   |S )Ng      ð?r   rD   rú  )ru  r×  Údivider5   )	r#  rÊ  r   r  ÚdivÚdeltarÀ  rj   rx   s	           €r@   rþ  z numpy_linspace.<locals>.linspace»  s´   ø€ ÝŒh�s˜EÑ"Ô"ˆð ˜‘ˆØ�c‰zˆØ�!Š8ˆ8ØˆJØ�A‰gˆØ�Š7ˆ7Ø˜5‘LˆEÝ”9˜U CÑ(Ô(ˆDÝ˜1˜c‘]”]ð ,ð ,�Ø ! d¡(Ñ+��A‘�ð,ð ˆC�‰FØ�Š7ˆ7ØˆC�‰GØˆ
rB   r  )
rƒ  r”   r½   r   r–   r	   rä   rC  rB  r´   )r#  rÊ  r   rÍ   rþ  rx   s        @r@   Únumpy_linspacerc  ¬  s³   ø€ åÐFÐF¸À¸ÐFÑFÔFÑFÔFð Øˆå�c�C¥¤Ð/Ñ0Ô0ð &Ø5ˆÝÔ  Ñ%Ô%Ð%å
Ð
CÐ
C°e¸T°]Ð
CÑ
CÔ
CÑCÔCð ÝÔ ˆˆå”ˆðð ð ð ð ð ð, €OrB   c           
      ó‚  — |j         d         } t          |¦  «        | ||d         ¬¦  «        }t          j        ||j        ¦  «        }|j        }t          | |||¦  «        }|j        }	|j        }
|j        dv sJ ‚|j        |j        k    r%t          j	        ||
|	|j
        |j        d¬¦  «         nèt          j        ||j        ¦  «        }t          j        ||j        ¦  «        }|                      t          j        ¦  «        }t          j        |||¦  «        5 }t          j        | ||	|||j        |¦  «        }t          j        | ||
|||j        |¦  «        }|                     |                     |¦  «        |¦  «         ddd¦  «         n# 1 swxY w Y   t)          | ||j        |                     ¦   «         ¦  «        S )z
    Array copy.
    r   r  r  rD   r~   N)ré   ru   r
   rÀ   rb   rë   rõ  r—   r÷  Ú
raw_memcpyr²   r­   r¬   r¹   r   r‹   r1  rö  r  r;   r   rñ   )rz   r:   rX   ré   rÀ  rý   rþ   Úrettyperc  r%  r²  r'  r±  rÎ   r£   r  r4  s                    r@   Ú_array_copyrg  Ô  sõ  € ð Œh�qŒk€GØ
�*�WÑ
Ô
˜g w°d¸1´gÐ
>Ñ
>Ô
>€CÝÔ! '¨3¬9Ñ5Ô5€FàŒo€GÝ
˜ '¨7°FÑ
;Ô
;€CàŒx€HØ”€IàŒ>˜TÐ!Ð!Ð!Ð!Ø„~˜œÒ'Ð'åÔ˜7 I¨x¸¼Øœ<¨qð	2ñ 	2ô 	2ð 	2ð 	2õ Ô*¨7°C´KÑ@Ô@ˆÝÔ+¨G°S´[ÑAÔAˆØ×'Ò'­¬
Ñ3Ô3ˆåÔ˜w¨°Ñ7Ô7ð 	;¸7ÝÔ/°¸À(Ø06¸Ø07´ÀñIô IˆGõ Ô0°¸'À9Ø17¸Ø18´ÀñJô JˆHð �MŠM˜'Ÿ,š, wÑ/Ô/°Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;õ ˜G W¨c¬o¸s¿}º}¹¼ÑOÔOÐOs   ÄA(FÆFÆFc                 ó®   — t          |t          j        ¦  «        sJ ‚|j        dk    rdnd}|                     |d¬¦  «        } ||¦  «        }|t
          fS )Nr¬  r¦   F)r÷  r]  )r”   r   r•   r÷  rW  rg  )rb  rÛ  r÷  rc  rX   s        r@   Ú_array_copy_intrinsicri  ù  sZ   € å�a�œÑ%Ô%Ð%Ð%Ð%Ø”H ’O�OˆSˆS¨€FØ
�&Š&˜¨ˆ&Ñ
/Ô
/€CØ
ˆ#ˆa‰&Œ&€CØ•ÐÐrB   z
array.copyc                 ó&   — t          | |||¦  «        S r?  )rg  rÊ  s       r@   Ú
array_copyrk    s   € å�w ¨¨dÑ3Ô3Ð3rB   c                 ó@   — t          | t          j        ¦  «        rd„ }|S )Nc                 ó    — t          | ¦  «        S r?  )ri  rl  s    r@   Ú
numpy_copyz#impl_numpy_copy.<locals>.numpy_copy
  s   € Ý(¨Ñ+Ô+Ð+rB   r@  )rÛ  rn  s     r@   Úimpl_numpy_copyro    s+   € å�!•U”[Ñ!Ô!ð ,ð	,ð 	,ð 	,àÐrB   c           	      óR  — |j         }|j        d         }|j        |k    s
J d¦   «         ‚|j        dk    �r|j        dk    sJ ‚ t	          |¦  «        | ||d         ¬¦  «        } t	          |¦  «        | |¦  «        }|                      |t          j        t          j        d¦  «        d¦  «        }	|  	                    |t          j        t          j        d¦  «        |j
        f¦  «        }
t          ||j        |	|
|j
        |j        |j        ¦  «         t          | |||                     ¦   «         ¦  «        S |j        |j        k    s|j        dk    r!|j        dv rt          | |||d         ¦  «        S |j        dk    �r|dv sJ ‚|dk    rt"          nt$          }t'          || |||d         ¦  «        }|                     |¦  «        5 \  }}|5  t          | |||d         ¦  «        }|j        }d	d	d	¦  «         n# 1 swxY w Y   |5  t-          | |||¦  «        }|j        }d	d	d	¦  «         n# 1 swxY w Y   d	d	d	¦  «         n# 1 swxY w Y   |                     |j        ¦  «        }|                     ||¦  «         |                     ||¦  «         |S t-          | |||¦  «        S )
zd
    Common logic for layout conversion function;
    e.g. ascontiguousarray and asfortranarray
    r   z return-type has incorrect layoutrD   r  r�  r  rU  r¦   N)rë   ré   r÷  rm   ru   r·  r   r�  r‹   r  r­   rÕ   r—   r«   r®   r   rñ   r   r   r<  r  Úblockrg  Úphir6   Úadd_incoming)rz   r:   rX   ré   Úoutput_layoutr=  r×   rý   rc  rb   r¬   Ú
check_funcr  ÚthenÚorelseÚout_thenÚthen_blkÚ
out_orelseÚ
orelse_blkÚret_phis                       r@   Ú_as_layout_arrayr}    sx  € ð
 ŒO€EØŒH�QŒK€EØŒ<˜=Ò(Ð(Ð(Ð*LÑ(Ô(Ð(à„z�Q‚�àŒz˜QŠˆˆˆØ�j˜ÑÔ ¨¸¸Q¼Ð@Ñ@Ô@ˆØ�j˜ÑÔ ¨Ñ1Ô1ˆà×,Ò,Ø•U”^¥E¤J°Ñ2Ô2°Dñ
ô 
ˆð ×$Ò$ WÝ%*¤^µE´JÀÑ%BÔ%BØ&)¤l _ñ6ô 6ˆõ 	�s˜CœH e¨W°c´lØ”{ C¤Jñ	0ô 	0ð 	0å  ¨'°5¸#¿-º-¹/¼/ÑJÔJÐJà
Œ,˜%œ,Ò
&Ð
&Ø”
˜a’� E¤L°DÐ$8Ð$8å  ¨'°5¸$¸q¼'ÑBÔBÐBð Œ<˜3ÒÑð ! DÐ(Ð(Ð(Ð(Ø*7¸3Ò*>Ð*>�˜ÅJˆJÝ.¨zØ/6Ø/6Ø/4Ø/3°A¬wñ	8ô 8ˆIð
 —’ Ñ+Ô+ð 	/©~°°fàð -ð -Ý0°¸'À5Ø15°a´ñ :ô  :�Hà&œ}�Hð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð
 ð /ð /Ý!,¨W°g¸sÀDÑ!IÔ!I�JØ!(¤�Jð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð —k’k (¤-Ñ0Ô0ˆGØ× Ò  ¨8Ñ4Ô4Ð4Ø× Ò  ¨ZÑ8Ô8Ð8ØˆNõ ˜w¨°°dÑ;Ô;Ð;sZ   ÇIÇ G:Ç.IÇ:G>	Ç>IÈG>	ÈIÈH-È!IÈ-H1	È1IÈ4H1	È5IÉIÉIc                 óä   ‡— t          ‰t          j        ¦  «        st          j        ‰¦  «        ‚|                     ‰j        t          |j        d¦  «        ¬¦  «        } ||‰¦  «        }|ˆfd„fS )NrD   )r÷  rm   c                 ó6   •— t          | |||‰j        ¬¦  «        S )N)rt  )r}  rå   )r¯  r�  r§   rÛ  rt  s       €r@   r�  z,_as_layout_array_intrinsic.<locals>.<lambda>X  s%   ø€ Õ#3Ø	ˆ1ˆa� -Ô"=ð$?ñ $?ô $?€ rB   )	r”   r   r#   r	   ÚRequireLiteralValuerW  rå   r–  rm   )rb  rÛ  rt  rc  rX   s     `  r@   Ú_as_layout_array_intrinsicr�  P  s}   ø€ å�m¥UÔ%8Ñ9Ô9ð 8ÝÔ(¨Ñ7Ô7Ð7à
�&Š&˜Ô3½#¸a¼fÀa¹.¼.ˆ&Ñ
IÔ
I€CØ
ˆ#ˆa�Ñ
Ô
€Càð ?ð ?ð ?ð ?ð ?ð ?rB   c                 óÚ   — t          | ¦  «        st          j        d¦  «        ‚t          | t          j        t          j        f¦  «        rd„ }nt          | t          j        ¦  «        rd„ }|S )NrL  c                 óN   — t          j        t          j        | ¦  «        ¦  «        S r?  )ru  ÚascontiguousarrayrÇ   rl  s    r@   rã   z%array_ascontiguousarray.<locals>.implb  s   € ÝÔ'­¬°©¬Ñ4Ô4Ð4rB   c                 ó"   — t          | d¦  «        S ©Nr¦   ©r�  rl  s    r@   rã   z%array_ascontiguousarray.<locals>.imple  ó   € Ý-¨a°Ñ5Ô5Ð5rB   ©r   r	   rä   r”   r   r   rÒ  r•   rÇ  s     r@   Úarray_ascontiguousarrayrŠ  \  s|   € å˜AÑÔð HÝÔ Ð!FÑGÔGÐGå�!•e”l¥E¤MÐ3Ñ4Ô4ð 6ð	5ð 	5ð 	5ð 	5å	�A•u”{Ñ	#Ô	#ð 6ð	6ð 	6ð 	6à€KrB   c                 óà   — t          | ¦  «        st          j        d¦  «        ‚t          | t          j        t          j        f¦  «        rd„ }|S t          | t          j        ¦  «        rd„ }|S d S )NrL  c                 óN   — t          j        t          j        | ¦  «        ¦  «        S r?  )ru  ÚasfortranarrayrÇ   rl  s    r@   rã   z"array_asfortranarray.<locals>.implp  s   € ÝÔ$¥R¤X¨a¡[¤[Ñ1Ô1Ð1rB   c                 ó"   — t          | d¦  «        S )Nr¬  r‡  rl  s    r@   rã   z"array_asfortranarray.<locals>.implt  rˆ  rB   r‰  rÇ  s     r@   Úarray_asfortranarrayr�  j  s†   € å˜AÑÔð HÝÔ Ð!FÑGÔGÐGå�!•e”l¥E¤MÐ3Ñ4Ô4ð ð	2ð 	2ð 	2àˆÝ	�A•u”{Ñ	#Ô	#ð ð	6ð 	6ð 	6àˆðð rB   zarray.astypec           
      ó>  — |j         d         } t          |¦  «        | ||d         ¬¦  «        }t          j        ||j        ¦  «        }|j        }t          | |||¦  «        }|j        }	|j        }
t          j        ||j        ¦  «        }t          j        ||j        ¦  «        }|  	                    t          j        ¦  «        }t          j        |||¦  «        5 }t          j        | ||	|||j        |¦  «        }t          j        | ||
|||j        |¦  «        }t          | |||¦  «        }|                      |||j        |j        ¦  «        }t%          | ||||¦  «         d d d ¦  «         n# 1 swxY w Y   t'          | ||j        |                     ¦   «         ¦  «        S rs  )ré   ru   r
   rÀ   rb   rë   rõ  r—   r¬   r¹   r   r‹   r1  rö  r÷  rƒ   rŠ   rx   r‡   r   rñ   )rz   r:   rX   ré   rÀ  rý   rþ   rf  rc  r%  r²  r'  r±  rÎ   r£   r  r4  Úitems                     r@   Úarray_astyper’  y  sÅ  € ð Œh�qŒk€GØ
�*�WÑ
Ô
˜g w°d¸1´gÐ
>Ñ
>Ô
>€CÝÔ! '¨3¬9Ñ5Ô5€FàŒo€GÝ
˜ '¨7°FÑ
;Ô
;€CàŒx€HØ”€IåÔ& w°´Ñ<Ô<€KÝÔ'¨°´Ñ=Ô=€LØ×#Ò#¥E¤JÑ/Ô/€Få	Ô	˜7 F¨FÑ	3Ô	3ð 	>°wÝÔ+¨G°W¸hØ,2°KØ,3¬N¸GñEô Eˆõ Ô,¨W°g¸yØ-3°\Ø-4¬^¸WñFô Fˆõ ˜ '¨7°GÑ<Ô<ˆØ�|Š|˜G T¨7¬=¸'¼-ÑHÔHˆÝ�7˜G W¨d°HÑ=Ô=Ð=ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>õ ˜G W¨c¬o¸s¿}º}¹¼ÑOÔOÐOs   ÃBE+Å+E/Å2E/c                 ó8   — |j         } ||||¦  «        }d„ }||fS )Nc           	      óØ  — |j         d         }|j        } t          |¦  «        | ||d         ¬¦  «        }t          |¦  «        } || |¦  «        }|j        }	t	          | |¦  «        }
t          |j        j        |
¦  «        }|                     |j	        |j        ¦  «        }| 
                    ||¦  «        }t          j        ||¦  «        }|                     |d¬¦  «        5  d}| j                             |t           |f¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ||                     ||¦  «        g¦  «        }t          j        ||g¦  «        }|                     |j        |                      |	                     d¦  «        ¦  «        ¦  «        }t/          ||||||j        |j        ¬¦  «         |                     ¦   «         }t7          | ||j        |¦  «        S )Nr   r  FrV  z.buffer size must be a multiple of element sizer—   r5  )ré   rë   ru   r³   r|   r   r­   r6   rÂ   r²   Úsremr
   Úis_not_nullr  rX  rY  r¸   rg   Úsdivr,  r—   r¹   rº   rÕ   r«   r®   rñ   r   )rz   r:   rX   ré   Úbuftyr×   r«  Ú
out_ary_tyÚout_aryÚout_datamodelr­   Úll_itemsizer  ÚremÚis_incompatiblerÍ   rb   r¬   r—   rõ   s                       r@   ra  znp_frombuffer.<locals>.codegen�  s$  € Ø”˜”ˆØ”ˆà�j˜ÑÔ ¨¸¸Q¼Ð@Ñ@Ô@ˆÝ Ñ&Ô&ˆ
Ø�*˜W gÑ.Ô.ˆØÔ*ˆå ¨Ñ/Ô/ˆÝ˜sœ|Ô0°(Ñ;Ô;ˆØ—’˜SœZ¨¬Ñ6Ô6ˆð �lŠl˜6 ;Ñ/Ô/ˆÝ!Ô-¨g°sÑ;Ô;ˆØ�_Š_˜_°Uˆ_Ñ;Ô;ð 	Kð 	KØBˆCØÔ×-Ò-¨gµzÀCÀ6ÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kõ Ô" 7¨W¯\ª\¸&À+Ñ-NÔ-NÐ,OÑPÔPˆÝÔ$ W¨{¨mÑ<Ô<ˆØ�ŠØŒH�g×,Ò,¨]×-CÒ-CÀFÑ-KÔ-KÑLÔLñ
ô 
ˆõ 	�wØ Ø"Ø&Ø +Ø"œ{Ø!œjð	+ñ 	+ô 	+ð 	+ð ×ÒÑ!Ô!ˆÝ  ¨'°3´?ÀCÑHÔHÐHs   Ã$%DÄDÄDrÈ  )rb  Úbufferrx   r=  rA  rX   ra  s          r@   Únp_frombufferr   ˜  s<   € à	Ô	€BØ
ˆ"ˆV�U˜EÑ
"Ô
"€Cð#Ið #Ið #IðH �ˆ<ÐrB   c                 óð  ‡— t          d|¦  «         t          | t          j        ¦  «        r| j        dk    rd| › �}t          j        |¦  «        ‚|t          u s7t          |t          j        ¦  «        r|j	        t          u st          |¦  «        rt          j        }nt          |¦  «        }|�t          j        |dd| j         ¬¦  «        Šnd| › d|› d�}t          j        |¦  «        ‚t          fˆfd	„	}|S )
NÚ
frombufferr¦   z+Argument "buffer" must be buffer-like. Got rD   )rx   rm   r÷  r]  z3Cannot parse input types to function np.frombuffer(rÑ  rÒ  c                 ó&   •— t          | |‰¦  «        S r?  )r   )rŸ  rx   r=  s     €r@   rã   z impl_np_frombuffer.<locals>.implÛ  s   ø€ Ý˜V U¨EÑ2Ô2Ð2rB   )rÄ  r”   r   rû   r÷  r	   rä   rÓ  rÔ  rÕ  r   rÖ  r×  r•   r'  )rŸ  rx   rÍ   rÙ  rã   r=  s        @r@   Úimpl_np_frombufferr¤  Ä  s,  ø€ å˜<¨Ñ/Ô/Ð/å�f�eœlÑ+Ô+ð &¨v¬}ÀÒ/CÐ/CØD¸FÐDÐDˆÝÔ  Ñ%Ô%Ð%à•ˆˆÝ	�E�5œ>Ñ	*Ô	*ð 	Ø/4Ô/?Å5Ð/HÐ/HÝ˜ÑÔð 0Iå”<ˆˆå! %Ñ(Ô(ˆàÐÝ” (°¸3Ø)/¬Ð%7ð9ñ 9ô 9ˆˆð3Ø &ð3ð 3Ø*/ð3ð 3ð 3ˆåÔ  Ñ%Ô%Ð%å ð 3ð 3ð 3ð 3ð 3ð 3à€KrB   c                 óº   ‡— t          |¦  «        rt          dd ¦  «        Šdˆfd„	}|S t          |t          j        ¦  «        rt          d|¦  «        Šdˆfd„	}|S d S )Nr¦   c                 ó   •—  ‰| |¦  «        S r?  r�   ©rh   rb   rx   Úintrinsic_cfarrays      €r@   rã   zimpl_carray.<locals>.implå  ó   ø€ Ø$Ð$ S¨%Ñ0Ô0Ð0rB   c                 ó   •—  ‰| |¦  «        S r?  r�   r§  s      €r@   rã   zimpl_carray.<locals>.implë  r©  rB   r?  ©r   Úget_cfarray_intrinsicr”   r   r  ©rh   rb   rx   rã   r¨  s       @r@   Úimpl_carrayr®  à  ó—   ø€ å�5ÑÔð Ý1°#°tÑ<Ô<Ðð	1ð 	1ð 	1ð 	1ð 	1ð 	1àˆÝ	�E�5œ?Ñ	+Ô	+ð Ý1°#°uÑ=Ô=Ðð	1ð 	1ð 	1ð 	1ð 	1ð 	1àˆðð rB   c                 óº   ‡— t          |¦  «        rt          dd ¦  «        Šdˆfd„	}|S t          |t          j        ¦  «        rt          d|¦  «        Šdˆfd„	}|S d S )Nr¬  c                 ó   •—  ‰| |¦  «        S r?  r�   r§  s      €r@   rã   zimpl_farray.<locals>.implõ  r©  rB   c                 ó   •—  ‰| |¦  «        S r?  r�   r§  s      €r@   rã   zimpl_farray.<locals>.implû  r©  rB   r?  r«  r­  s       @r@   Úimpl_farrayr³  ð  r¯  rB   c                 ó0   ‡ ‡— t           ˆˆ fd„¦   «         }|S )Nc                 óP  •— |t           j        u rd }n<t          |t           j        ¦  «        r|j        }nd|› d�}t          j        |¦  «        ‚‰	€|€d}t          j        |¦  «        ‚|}nat          ‰	t           j        ¦  «        r-‰	j        }|�#||k    rd|› d|› d�}t          j        |¦  «        ‚nd‰	› d�}t          j        |¦  «        ‚t          |¦  «        }|€d|› d�}t          j        |¦  «        ‚t          j	        ||‰
¦  «        }t          |||¦  «        }|t          fS )Nz pointer argument expected, got 'ú'z*explicit dtype required for void* argumentzmismatching dtype 'z' for pointer type 'zinvalid dtype spec 'zinvalid shape ')r   r’  r”   ÚCPointerrx   r	   r"  r  rØ  r•   r"   Ú
np_cfarray)rb  rh   rb   Ú	ptr_dtyperÍ   rx   rm   r=  rX   Údtype_r÷  s            €€r@   r¨  z0get_cfarray_intrinsic.<locals>.intrinsic_cfarray  sT  ø€ à•%”-ÐÐØˆIˆIÝ˜�Uœ^Ñ,Ô,ð 	-Øœ	ˆIˆIà;°SÐ;Ð;Ð;ˆCÝÔ'¨Ñ,Ô,Ð,àˆ>ØÐ ØB�ÝÔ+¨CÑ0Ô0Ð0ØˆEˆEÝ˜¥¤Ñ0Ô0ð 	-Ø”LˆEØÐ$¨°)Ò);Ð);ØM¨EÐMÐMÀsÐMÐMÐM�ÝÔ+¨CÑ0Ô0Ð0øà2¨Ð2Ð2Ð2ˆCÝÔ'¨Ñ,Ô,Ð,å˜eÑ$Ô$ˆØˆ<Ø, EÐ,Ð,Ð,ˆCÝÔ'¨Ñ,Ô,Ð,å”˜E 4¨Ñ0Ô0ˆÝ˜˜s EÑ*Ô*ˆØ•JˆÐrB   ©r'   )r÷  rº  r¨  s   `` r@   r¬  r¬     s4   øø€ Ýðð ð ð ð ñ „Yðð> ÐrB   c                 óª  ‡ ‡— |j         dd…         \  }}|dd…         \  }}|j        }|j        dv sJ ‚ t          |¦  «        ‰ ‰¦  «        }	t	          ‰ |¦  «        }
t          j        |
¦  «        }t          |t          j	        ¦  «        rt          j
        ‰|¦  «        }n|f}|f}ˆˆ fd„t          ||¦  «        D ¦   «         }|}g }|j        dk    r1|D ]-}|                     |¦  «         ‰                     ||¦  «        }Œ.nQt          |¦  «        D ]-}|                     |¦  «         ‰                     ||¦  «        }Œ.|                     ¦   «          ‰                     |‰                      |j        ¦  «                             ¦   «         ¦  «        }t)          |	||||d¬¦  «         |	                     ¦   «         }t-          ‰ ‰|j        |¦  «        S )zR
    numba.numpy_support.carray(...) and
    numba.numpy_support.farray(...).
    NrÜ  r  c                 óZ   •— g | ]'\  }}‰                      ‰||t          j        ¦  «        ‘Œ(S r�   rÁ  )rž   r3  r  r:   rz   s      €€r@   rŸ   znp_cfarray.<locals>.<listcomp>9  sA   ø€ ð 9ð 9ð 9Ù�&˜%ð �lŠl˜7 E¨6µ5´:Ñ>Ô>ð 9ð 9ð 9rB   r¬  r×  )ré   rë   r÷  ru   r|   r
   rÎ   r”   r   rI  rÀ   r¡   rf   rÂ   rò  rd  r,  rw   rx   rÞ  rÕ   rñ   r   )rz   r:   rX   ré   r$  rÄ  rh   rb   r×   rš  r­   rœ  rþ   Úoffr¬   r§   r—   rõ   s   ``                r@   r¸  r¸  $  s  øø€ ð
 ”X˜b˜q˜b”\�N€Eˆ7Ø�b�q�b”�J€CˆàŒO€EØŒ<˜4ÐÐÐÐà�j˜ÑÔ ¨Ñ1Ô1€Gå˜G UÑ+Ô+€HÝ”. Ñ*Ô*€Kå�'�5œ?Ñ+Ô+ð ÝÔ% g¨uÑ5Ô5ˆˆà�*ˆØ�ˆð9ð 9ð 9ð 9ð 9Ý#& w°Ñ#7Ô#7ð9ñ 9ô 9€Fð €CØ€GØ„|�sÒÐØð 	&ð 	&ˆAØ�NŠN˜3ÑÔÐØ—+’+˜c 1Ñ%Ô%ˆCˆCð	&õ ˜&Ñ!Ô!ð 	&ð 	&ˆAØ�NŠN˜3ÑÔÐØ—+’+˜c 1Ñ%Ô%ˆCˆCØ�ŠÑÔÐà�?Š?˜3Ø"×0Ò0°´Ñ=Ô=×HÒHÑJÔJñLô L€Dõ �7ØØØ"Ø'àðñ ô ð ð ×
Ò
Ñ
Ô
€CÝ˜G W¨c¬o¸sÑCÔCÐCrB   c                 óH  — t          |t          j        ¦  «        r-|                      t          j        t          |¦  «        ¦  «        S t          |t          j        ¦  «        r@|                      t
          t          t          j        |¦  «        ¦  «        } |||f¦  «        S J ‚r?  )	r”   r   rI  r¿   r‹   r    r¯  rN   r"   )rz   r:   ÚseqtyÚseqr¼  s        r@   Ú_get_seq_sizerÂ  X  s‚   € Ý�%�œÑ)Ô)ð Ø×#Ò#¥E¤Jµ°E±
´
Ñ;Ô;Ð;Ý	�E�5œ>Ñ	*Ô	*ð Ø×'Ò'­­Yµu´zÀ5Ñ-JÔ-JÑKÔKˆØˆx˜ # Ñ(Ô(Ð(àˆrB   c                 óš   ‡ ‡‡— |j         Š‰                      t          j        t	          ‰|t
          j        ¦  «        ¦  «        Šˆ ˆˆfd„}|S )zK
    Return a getitem() implementation that doesn't incref its result.
    c                 óf   •—  ‰| |¦  «        }‰j         r‰j                             | ‰|¦  «         |S r?  )rî   rï   Údecref)r:   ré   rc  rz   r¨  r=  s      €€€r@   Úwrapz$_get_borrowing_getitem.<locals>.wrapj  s>   ø€ Øˆl˜7 DÑ)Ô)ˆØÔð 	4ØŒK×Ò˜w¨¨sÑ3Ô3Ð3Øˆ
rB   )rx   rN   r¦  r§  r"   r   r‹   )rz   rÀ  rÆ  r¨  r=  s   `  @@r@   Ú_get_borrowing_getitemrÇ  b  se   øøø€ ð ŒK€EØ×'Ò'­Ô(8Ý(1°%¸ÅÄ
Ñ(KÔ(KñMô M€Lðð ð ð ð ð ð ð €KrB   c           	      ó6  ‡ ‡‡— ‰                       t          j        ¦  «        }t          |d¦  «        Šˆˆ ˆfd„}g }||}	}t	          |¦  «        D ]<}
|
dk    r |||	¦  «        \  }}	|                     t          ‰ ‰||	¦  «        ¦  «         Œ=t          |¦  «        S )zF
    Compute the likely shape of a nested sequence (possibly 0d).
    r   c                 óè   •— t          | t          j        ¦  «        r3t          | ¦  «        dk    rdS | d         ‰                     |d¦  «        fS t          ‰| ¦  «        }| j         |‰|‰f¦  «        fS )Nr   ©NN)r”   r   rI  r    rP  rÇ  rx   )rÀ  rÁ  r¨  r:   rz   ró   s      €€€r@   Úget_first_itemz.compute_sequence_shape.<locals>.get_first_itemz  sw   ø€ Ý�e�Uœ_Ñ-Ô-ð 	CÝ�5‰zŒz˜QŠˆØ!�zà˜Q”x ×!6Ò!6°s¸AÑ!>Ô!>Ð>Ð>å1°'¸5ÑAÔAˆLØ”;  ¨W°s¸D°kÑ BÔ BÐBÐBrB   )r¹   r   r‹   r   r5   rf   rÂ  r»   )rz   r:   rm   rÀ  rÁ  rÎ   rË  rþ   ÚinnertyÚinnerrj   ró   s   ``         @r@   Úcompute_sequence_shaperÎ  s  sÉ   øøø€ ð ×#Ò#¥E¤JÑ/Ô/€FÝ�F˜AÑÔ€DðCð Cð Cð Cð Cð Cð Cð €FØ˜CˆU€Gå�4‰[Œ[ð Gð GˆØˆqŠ5ˆ5Ø+˜^¨G°UÑ;Ô;‰NˆG�UØ�Š•m G¨W°g¸uÑEÔEÑFÔFÐFÐFå�‰=Œ=ÐrB   c                 óD   ‡ ‡‡‡— ˆˆ fd„Šˆˆˆˆ fd„Š ‰|||¦  «         dS )z?
    Check the nested sequence matches the given *shapes*.
    c                  óJ   •— ‰j                              ‰ t          d¦  «         d S )N)zincompatible sequence shape)rX  rY  r¸   )r:   rz   s   €€r@   Ú_failz#check_sequence_shape.<locals>._fail–  s4   ø€ ØÔ×)Ò)¨'µ:Ø*Jñ	Lô 	Lð 	Lð 	Lð 	LrB   c                 ó.  •— t          |¦  «        dk    rd S t          ‰‰| |¦  «        }|d         }‰                     d||¦  «        }‰                     |d¬¦  «        5   ‰¦   «          d d d ¦  «         n# 1 swxY w Y   t          |¦  «        dk    rd S t	          | t
          j        ¦  «        rot          ‰| ¦  «        }t          j	        ‰|¦  «        5 }| j
        } |‰||j        f¦  «        }	 ‰||	|dd …         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S t	          | t
          j        ¦  «        rTt          t          | ¦  «        ¦  «        D ]5}
| |
         }‰                     ||
¦  «        }	 ‰||	|dd …         ¦  «         Œ6d S J | ¦   «         ‚)Nr   rU  FrV  rD   )r    rÂ  r
  r  r”   r   r¯  rÇ  r
   r¬  rx   rí   rI  r5   rP  )rÀ  rÁ  rþ   r�   ÚexpectedrP  r¨  r®  rÌ  rÍ  rj   rÑ  r:   Úcheck_seq_sizerz   s              €€€€r@   rÔ  z,check_sequence_shape.<locals>.check_seq_sizeš  s3  ø€ Ýˆv‰;Œ;˜!ÒÐØˆFå˜W g¨u°cÑ:Ô:ˆØ˜!”9ˆØ×&Ò& t¨T°8Ñ<Ô<ˆØ�_Š_˜X¨eˆ_Ñ4Ô4ð 	ð 	ØˆE‰GŒGˆGð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ˆv‰;Œ;˜!ÒÐØˆFå�e�Uœ^Ñ,Ô,ð 	Ý1°'¸5ÑAÔAˆLÝÔ" 7¨DÑ1Ô1ð ;°TØœ+�Ø$˜ W¨s°D´JÐ.?Ñ@Ô@�Ø�˜w¨¨v°a°b°b¬zÑ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;õ
 ˜�uœÑ/Ô/ð 	Ý�3˜u™:œ:Ñ&Ô&ð ;ð ;�Ø œ(�Ø×-Ò-¨c°1Ñ5Ô5�Ø�˜w¨¨v°a°b°b¬zÑ:Ô:Ð:Ð:ð;ð ;ð �e‰OŒOˆOs$   ÁA6Á6A:Á=A:Ã0DÄDÄDNr�   )rz   r:   rÀ  rÁ  rþ   rÑ  rÔ  s   ``   @@r@   Úcheck_sequence_shaperÕ  ‘  sn   øøøø€ ð
Lð Lð Lð Lð Lð Lðð ð ð ð ð ð ð ð: €N�5˜#˜vÑ&Ô&Ð&Ð&Ð&rB   c                 óV   ‡ ‡‡‡‡‡‡‡	— ˆˆˆ ˆˆˆfd„Š	ˆˆ	ˆˆ fd„Š ‰||‰d¦  «         dS )zl
    Assign a nested sequence contents to an array.  The shape must match
    the sequence's structure.
    c           
      óª   •— t          j        ‰‰‰‰‰	‰j        | d¬¦  «        }‰                     ‰||‰j        ¦  «        }t          ‰‰‰||¦  «         d S rø  )r
   rö  r÷  rŠ   rx   r‡   )
r£   rL  r†   rh   r  r:   rz   r—   rþ   r¬   s
       €€€€€€r@   Úassign_itemz-assign_sequence_to_array.<locals>.assign_itemÁ  se   ø€ ÝÔ'¨°¸$ÀÈØ(-¬°gÈ%ðQñ Qô Qˆà�lŠl˜7 C¨°´Ñ<Ô<ˆÝ�7˜G U¨C°Ñ5Ô5Ð5Ð5Ð5rB   c                 ó  •— t          |¦  «        dk    r7t          | t          j        t          j        f¦  «        rJ ‚ ‰|| |¦  «         d S |d         }t          | t          j        ¦  «        ryt          ‰| ¦  «        }t          j        ‰|¦  «        5 }| j        } |‰||j	        f¦  «        } ‰|||dd …         ||j	        fz   ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S t          | t          j        ¦  «        ryt          t          | ¦  «        ¦  «        D ]Z}	| |	         }‰                     ||	¦  «        }‰                     t          j        |	¦  «        }
 ‰|||dd …         ||
fz   ¦  «         Œ[d S J | ¦   «         ‚rì  )r    r”   r   r¯  rI  rÇ  r
   r¬  rx   rí   r5   rP  r¿   r‹   )rÀ  rÁ  rþ   r£   r�   r¨  r®  rÌ  rÍ  rj   rí   ÚassignrØ  r:   rz   s              €€€€r@   rÚ  z(assign_sequence_to_array.<locals>.assignÇ  sð  ø€ Ýˆv‰;Œ;˜!ÒÐÝ! %­%¬.½%¼/Ð)JÑKÔKÐKÐKÐKØˆK˜ ¨Ñ,Ô,Ð,ØˆFà�aŒyˆå�e�Uœ^Ñ,Ô,ð 	Ý1°'¸5ÑAÔAˆLÝÔ" 7¨DÑ1Ô1ð L°TØœ+�Ø$˜ W¨s°D´JÐ.?Ñ@Ô@�Ø��w  v¨a¨b¨b¤z°7¸d¼j¸]Ñ3JÑKÔKÐKðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lð Lð Lõ
 ˜�uœÑ/Ô/ð 	Ý�3˜u™:œ:Ñ&Ô&ð Gð G�Ø œ(�Ø×-Ò-¨c°1Ñ5Ô5�Ø×,Ò,­U¬Z¸Ñ;Ô;�Ø��w  v¨a¨b¨b¤z°7¸e¸XÑ3EÑFÔFÐFÐFð	Gð Gð �e‰OŒOˆOs   Â:CÃCÃ!Cr�   Nr�   )
rz   r:   r—   rþ   r¬   r  rÀ  rÁ  rÚ  rØ  s
   ``````  @@r@   Úassign_sequence_to_arrayrÛ  º  s‚   øøøøøøøø€ ð6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6ðð ð ð ð ð ð ð ð2 €Fˆ5�#�v˜rÑ"Ô"Ð"Ð"Ð"rB   c                 óž   — t          | |¦  «        \  }}t          |¦  «        r|}nt          |¦  «        }|€d S t          j        ||d¦  «        S r†  )r1   r   r×  r   r•   )rb  r9  rx   rm   Ú	seq_dtypes        r@   Únp_array_typerrÞ  ã  sW   € Ý,¨Y¸Ñ?Ô?�O€Dˆ)Ý�5ÑÔð Øˆˆå˜uÑ%Ô%ˆØˆ=ØˆFÝŒ;�u˜d CÑ(Ô(Ð(rB   c                 ój   — t          d|¦  «         t          | ||¦  «        } |||¦  «        }d„ }||fS )NrÇ   c           
      ót  — |j         }|j        }|j        d         }|d         }t          | ||||¦  «        }t	          |¦  «        |k    sJ ‚t          | ||||¦  «         t          | |||¦  «        }	t          | ||	j        ||	j	        |||¦  «         t          | ||j         |	                     ¦   «         ¦  «        S rá   )rë   rm   ré   rÎ  r    rÕ  rõ  rÛ  r—   r¬   r   rñ   )
rz   r:   rX   ré   r  rm   rÀ  rÁ  rþ   r  s
             r@   ra  znp_array.<locals>.codegenô  sÊ   € Ø”ˆØŒzˆØ”˜”ˆØ�1Œgˆå'¨°¸$ÀÀsÑKÔKˆÝ�6‰{Œ{˜dÒ"Ð"Ð"Ð"å˜W g¨u°c¸6ÑBÔBÐBÝ˜W g¨u°fÑ=Ô=ˆÝ  ¨'°3´8¸VØ!$¤¨e°U¸Cñ	Aô 	Að 	Aõ   ¨°#´/Ø #§¢¡¤ñ1ô 1ð 	1rB   )rÄ  rÞ  )rb  Úobjrx   rc  rX   ra  s         r@   Únp_arrayrâ  î  sM   € å˜7 EÑ*Ô*Ð*Ý
˜ C¨Ñ
/Ô
/€CØ
ˆ#ˆc�5‰/Œ/€Cð1ð 1ð 1ð" �ˆ<ÐrB   c                 óÜ   — t          d|¦  «         t          | ¦  «        st          j        d¦  «        ‚t	          |¦  «        s%t          |¦  «        €d}t          j        |¦  «        ‚dd„}|S )NrÇ   z(The argument "object" must be array-likez:The argument "dtype" must be a data-type if it is providedc                 ó"   — t          | |¦  «        S r?  )râ  )r9  rx   s     r@   rã   zimpl_np_array.<locals>.impl  s   € Ý˜ Ñ&Ô&Ð&rB   r?  )rÄ  r   r	   rä   r   r×  )r9  rx   rÍ   rã   s       r@   Úimpl_np_arrayrå    sˆ   € å˜7 EÑ*Ô*Ð*Ý˜FÑ#Ô#ð 2ÝÔ ð "1ñ 2ô 2ð 	2å�uÑÔð &¥.°Ñ"7Ô"7Ð"?ØJˆÝÔ  Ñ%Ô%Ð%ð'ð 'ð 'ð 'à€KrB   c                 ó
  — |                      d¦  «        }|                      |¦  «        }|                     d||¦  «        }|                     ||                     ||¦  «        |¦  «        }|                     |                     d||¦  «        |                     d||¦  «        ¦  «        }|                     |d¬¦  «        5  d|z  }	| j                             |t          |	f¦  «         d d d ¦  «         n# 1 swxY w Y   |S )Nr   r	  rƒ  FrV  z%s(): axis out of bounds)	r6   r
  rÉ  r–  râ  r  rX  rY  r/  )
rz   r:   rÛ   rm   rÝ   ró   Úll_ndimÚis_neg_axisÚaxis_out_of_boundsrÍ   s
             r@   Ú_normalize_axisrê    sI  € Ø�9Š9�Q‰<Œ<€DØ�iŠi˜‰oŒo€Gð ×%Ò% c¨4°Ñ6Ô6€KØ�>Š>˜+ w§{¢{°4¸Ñ'AÔ'AÀ4ÑHÔH€Dð !ŸšØ×Ò˜C  tÑ,Ô,Ø×Ò˜D $¨Ñ0Ô0ñ2ô 2Ðð 
�ŠÐ+°EˆÑ	:Ô	:ð Gð GØ(¨9Ñ4ˆØÔ×)Ò)¨'µ:À¸vÑFÔFÐFðGð Gð Gñ Gô Gð Gð Gð Gð Gð Gð Gøøøð Gð Gð Gð Gð €Ks   Ã(C8Ã8C<Ã?C<c           
      ó¤  — t          |¦  «        |dz
  k    sJ ‚t          j        t          j        |¦  «        }t          j        ||¦  «        }t          j        d¦  «        }t          |dz
  ¦  «        D ]‹}t          j        |¦  «        }	|                     d|	|¦  «        }
||         }|                     |
| 	                    |	|¦  «        |	¦  «        }| 
                    |t          j        ||d|¦  «        ¦  «         ŒŒ| 
                    |t          j        ||d|¦  «        ¦  «         t          j        ||                     |¦  «        ¦  «        S )z’
    Compute shape with the new axis inserted
    e.g. given original shape (2, 3, 4) and axis=2,
    the returned new shape is (2, 3, 1, 4).
    rD   rƒ  r   ©r    r   rÝ  r
   rÎ   rT   r5   r
  rÉ  r–  r  re   rÀ   r;   )rz   r:   Ú
orig_shaperm   rÝ   Úll_shtyrþ   r(  rs  Úll_dimÚ
after_axisr1  r�   s                r@   Ú_insert_axis_in_shaperñ  *  s8  € õ ˆz‰?Œ?˜d Q™hÒ&Ð&Ð&Ð&åŒl�7œ>¨4Ñ0Ô0€GÝÔ  ¨'Ñ2Ô2€Få
Œ.˜Ñ
Ô
€Cõ �T˜A‘X‰Œð Ið IˆÝ” Ñ$Ô$ˆØ×(Ò(¨¨v°tÑ<Ô<ˆ
Ø˜Œ_ˆØ�nŠn˜ZØ$Ÿ[š[¨°Ñ5Ô5Ø#ñ%ô %ˆð 	�Š�b�'Ô.¨w¸ÀÀ3ÑGÔGÑHÔHÐHÐHð ‡M‚M�#•wÔ+¨G°V¸QÀÑEÔEÑFÔFÐFåÔ ¨¯ª°fÑ)=Ô)=Ñ>Ô>Ð>rB   c           
      óÈ  — t          |¦  «        |dz
  k    sJ ‚t          j        t          j        |¦  «        }t          j        ||¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          |dz
  ¦  «        D ]‰}	t          j        |	¦  «        }
|                     d|
|¦  «        }|                     || 	                    |
|¦  «        |
¦  «        }| 
                    ||	         t          j        ||d|¦  «        ¦  «         ŒŠ| 
                    |t          j        ||d|¦  «        ¦  «         t          j        ||                     |¦  «        ¦  «        S )zD
    Same as _insert_axis_in_shape(), but with a strides array.
    rD   r   rƒ  rì  )rz   r:   Úorig_stridesrm   rÝ   rî  r¬   r(  ró   rs  rï  rð  r�   s                r@   Ú_insert_axis_in_stridesrô  G  sR  € õ ˆ|ÑÔ  q¡Ò(Ð(Ð(Ð(åŒl�7œ>¨4Ñ0Ô0€GÝÔ! '¨7Ñ3Ô3€Gå
Œ.˜Ñ
Ô
€CÝŒ>˜!ÑÔ€Dõ �T˜A‘X‰Œð Fð FˆÝ” Ñ$Ô$ˆØ×(Ò(¨¨v°tÑ<Ô<ˆ
Ø�nŠn˜ZØ$Ÿ[š[¨°Ñ5Ô5Ø#ñ%ô %ˆð 	�Š�l 3Ô'ÝÔ*¨7°G¸QÀÑDÔDñ	Fô 	Fð 	Fð 	Fð
 ‡M‚M�$�Ô,¨W°g¸qÀ$ÑGÔGÑHÔHÐHåÔ ¨¯ª°gÑ)>Ô)>Ñ?Ô?Ð?rB   c           	      óÜ  — |j         }|j        }|j        d         } t          |¦  «        | ||d         ¬¦  «        } t          |¦  «        | |¦  «        }	t	          j        ||j        ¦  «        }
t	          j        ||j        ¦  «        }t          | ||
||¦  «        }t          | ||||¦  «        }t          |	|j        |||j        |j        |j        ¬¦  «         |	                     ¦   «         S )z/
    np.expand_dims() with the given axis.
    r   r  r5  )rë   rm   ré   ru   r
   rÀ   rb   r¬   rñ  rô  rÕ   r—   r­   r«   r®   rñ   )rz   r:   rX   ré   rÝ   r=  rm   r  r  rc  rþ   r¬   Ú
new_shapesÚnew_stridess                 r@   Úexpand_dimsrø  d  sí   € ð ŒO€EØŒ:€DØŒH�QŒK€Eà
�*�UÑ
Ô
˜G W°D¸´GÐ
<Ñ
<Ô
<€CØ
�*�UÑ
Ô
˜G WÑ
-Ô
-€CåÔ! '¨3¬9Ñ5Ô5€FÝÔ" 7¨C¬KÑ8Ô8€Gå& w°¸ÀÀtÑLÔL€JÝ)¨'°7¸GÀTÈ4ÑPÔP€Kå�3ØœØ#Ø&ØœLØœ;Øœ*ð&ñ &ô &ð &ð �=Š=‰?Œ?ÐrB   c                 óŽ   — |j         dk    r|j        nd}|                     |j         dz   |¬¦  «        } |||¦  «        }d„ }||fS )NrD   rU  rV  c                 óö   — |                       ||d         |j        d         t          j        ¦  «        }t	          | |d|j        j        |¦  «        }t          | ||||¦  «        }t          | ||j        |¦  «        S )NrD   znp.expand_dims)	rŠ   ré   r   r‹   rê  rë   rm   rø  r   )rz   r:   rX   ré   rÝ   rc  s         r@   ra  znp_expand_dims.<locals>.codegen†  sr   € Ø�|Š|˜G T¨!¤W¨c¬h°q¬k½5¼:ÑFÔFˆÝ˜w¨Ð1AØ"œÔ3°Tñ;ô ;ˆõ ˜' 7¨C°°tÑ<Ô<ˆÝ  ¨'°3´?ÀCÑHÔHÐHrB   )rm   r÷  rW  )rb  rÛ  rÝ   r÷  rc  rX   ra  s          r@   Únp_expand_dimsrû  €  s_   € àœ 1š˜ˆQŒXˆX¨#€FØ
�&Š&�a”f˜q‘j¨ˆ&Ñ
0Ô
0€CØ
ˆ#ˆa�‰,Œ,€CðIð Ið Ið �ˆ<ÐrB   c                 óØ   — t          | t          j        ¦  «        sd| › �}t          j        |¦  «        ‚t          |t          j        ¦  «        sd|› �}t          j        |¦  «        ‚d„ }|S )Nz)First argument "a" must be an array. Got z(Argument "axis" must be an integer. Got c                 ó"   — t          | |¦  «        S r?  )rû  )rÛ  rÝ   s     r@   rã   z!impl_np_expand_dims.<locals>.impl›  s   € Ý˜a Ñ&Ô&Ð&rB   )r”   r   r•   r	   rä   r–   )rÛ  rÝ   rÍ   rã   s       r@   Úimpl_np_expand_dimsrþ  ‘  sz   € å�a�œÑ%Ô%ð &Ø=¸!Ð=Ð=ˆÝÔ  Ñ%Ô%Ð%å�d�EœMÑ*Ô*ð &Ø?¸Ð?Ð?ˆÝÔ  Ñ%Ô%Ð%ð'ð 'ð 'à€KrB   c                 ó8   ‡ ‡‡— t           ˆˆ fd„¦   «         Šˆfd„S )Nc                 óð   •‡‡— |Šˆfd„|D ¦   «         Šˆˆˆˆfd„}t          t          ‰¦  «        dk    rt          j        ‰¦  «        n‰d         t          j                             |¦  «        ¦  «        |fS )Nc                 ób   •— g | ]+}|                      t          |j        ‰¦  «        ¬ ¦  «        ‘Œ,S )rC  )rW  r–  rm   )rž   r“  Úminimums     €r@   rŸ   z-_atleast_nd.<locals>.impl.<locals>.<listcomp>¤  s3   ø€ ÐHÐHÐH¸C�#—(’(¥ C¤H¨gÑ 6Ô 6�(Ñ7Ô7ÐHÐHÐHrB   c                 ó<  •‡ ‡‡— t          ‰
‰	¦  «        Št          j        ‰|d         ¦  «        }ˆˆ ˆfd„t          |‰‰¦  «        D ¦   «         }t	          |¦  «        dk    r‰                      ‰|j        |¦  «        }n|d         }t          ‰ ‰|j        |¦  «        S )Nr   c           	      ó6   •— g | ]\  }}} ‰‰‰|||¦  «        ‘ŒS r�   r�   )rž   r  r  r=  r:   rz   Ú	transforms       €€€r@   rŸ   z>_atleast_nd.<locals>.impl.<locals>.codegen.<locals>.<listcomp>ª  sG   ø€ ð Hð Hð HÙ)˜˜U Eð �I˜g w°°U¸EÑBÔBð Hð Hð HrB   rD   )Ú_atleast_nd_transformr
   rÀ   r¡   r    r  rë   r   )rz   r:   rX   ré   ÚarrsÚretsrc  r  r  ró  r  r1  s   ``     @€€€€r@   ra  z*_atleast_nd.<locals>.impl.<locals>.codegen¦  s½   øøøø€ Ý-¨g°tÑ<Ô<ˆIÝÔ'¨°°a´Ñ9Ô9ˆDðHð Hð Hð Hð Hð HÝ-0°°v¸vÑ-FÔ-FðHñ Hô HˆDõ �4‰yŒy˜1Š}ˆ}Ø×(Ò(¨°#´/À4ÑHÔH��à˜1”g�Ý$ W¨g°s´ÈÑLÔLÐLrB   rD   r   )r"   r    r   r‚  ÚStarArgTupleÚ
from_types)Útypingcontextré   ra  r  r1  ró  r  s      @@€€r@   rã   z_atleast_nd.<locals>.impl¡  s¨   øøø€ àˆØHÐHÐHÐHÀ4ÐHÑHÔHˆð	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Mð 	Mõ µ°F±´¸a²°�œ VÑ,Ô,Ð,ÀVÈAÄYÝÔ+×6Ò6°tÑ<Ô<ñ>ô >Ø?FðGð 	GrB   c                  ó   •—  ‰| Ž S r?  r�   )ré   rã   s    €r@   r�  z_atleast_nd.<locals>.<lambda>¶  s   ø€ ˜˜˜t˜€ rB   r»  )r  ró  rã   s   ``@r@   Ú_atleast_ndr     sD   øøø€ ÝðGð Gð Gð Gð Gñ „YðGð( %Ð$Ð$Ð$Ð$rB   c                 ó@   ‡ ‡— ‰ t          ‰¦  «        k    sJ ‚ˆˆ fd„}|S )z`
    Return a callback successively inserting 1-sized dimensions at the
    following axes.
    c           	      ó  •— t          ‰
¦  «        D ]s}|dz   }|j        |k     rat          j        ‰	|         ¦  «        }|                     |j        dz   ¬¦  «        }t          | |t          j        ||¦  «        |f|¦  «        }|}Œt|S )NrD   rC  )r5   rm   r
   rÎ   rW  rø  r   r"   )rz   r:   r  r  r=  rj   rm   rÝ   Únewarrtyró  Úmin_ndims            €€r@   r  z(_atleast_nd_transform.<locals>.transformÀ  s‘   ø€ Ý�x‘”ð 	!ð 	!ˆAØ�q‘5ˆDØŒz˜DÒ Ð Ý”~ d¨1¤gÑ.Ô.�Ø Ÿ:š:¨5¬:¸©>˜:Ñ:Ô:�Ý! '¨7Ý"(Ô"2°8¸UÑ"CÔ"CÀcÀVØ"&ñ(ô (�ð !�øàˆ
rB   )r    )r  ró  r  s   `` r@   r  r  ¹  sC   øø€ ð
 •s˜4‘y”yÒ Ð Ð Ð ðð ð ð ð ð ð ÐrB   c                  óZ   — t          d„ | D ¦   «         ¦  «        rt          ddg¦  «        S d S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r?  r@  r  s     r@   rB  z np_atleast_1d.<locals>.<genexpr>Ò  ó.   è è € Ð
8Ð
8¨C�:�c�5œ;Ñ'Ô'Ð
8Ð
8Ð
8Ð
8Ð
8Ð
8rB   rD   r   ©rƒ  r  rŽ  s    r@   Únp_atleast_1dr  Ð  s=   € å
Ð
8Ð
8°4Ð
8Ñ
8Ô
8Ñ8Ô8ð #Ý˜1˜q˜cÑ"Ô"Ð"ð#ð #rB   c                  ó\   — t          d„ | D ¦   «         ¦  «        rt          dddg¦  «        S d S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r?  r@  r  s     r@   rB  z np_atleast_2d.<locals>.<genexpr>Ø  r  rB   rÜ  r   r  rŽ  s    r@   Únp_atleast_2dr  Ö  s?   € å
Ð
8Ð
8°4Ð
8Ñ
8Ô
8Ñ8Ô8ð &Ý˜1˜q !˜fÑ%Ô%Ð%ð&ð &rB   c                  ó\   — t          d„ | D ¦   «         ¦  «        rt          dg d¢¦  «        S d S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r?  r@  r  s     r@   rB  z np_atleast_3d.<locals>.<genexpr>Þ  r  rB   r  )r   r   rÜ  r  rŽ  s    r@   Únp_atleast_3dr  Ü  s?   € å
Ð
8Ð
8°4Ð
8Ñ
8Ô
8Ñ8Ô8ð )Ý˜1˜i˜i˜iÑ(Ô(Ð(ð)ð )rB   c	                 óˆ  — t          |¦  «        t          |¦  «        cxk    r't          |¦  «        cxk    rt          |¦  «        k    sn J ‚t          j        d¦  «        }	t          | |||¦  «        }
t          j        ||
j        ¦  «        }g }|D ]ª}|	}t          t          ||¦  «        ¦  «        D ]s\  }\  }}|                     d| 	                    |¦  «        |¦  «        }| 
                    ||¦  «        }|                     ||                     ||¦  «        |¦  «        }Œt|                     |¦  «         Œ«|
j        }t          |||||¦  «        D ]ë\  }}}}}|j        }t          j        ||t          j        |j        ¬¦  «        }|5 }t          j        | |||||j        |¦  «        }t%          | |||¦  «        }|                      |||j        |j        ¦  «        }t          j        | |||||j        |¦  «        }t+          | ||||¦  «         ddd¦  «         n# 1 swxY w Y   t          j        |||¦  «        }Œì|
S )z2
    Concatenate arrays along the given axis.
    r   rà  )ÚorderN)r    r
   rÎ   rõ  rÀ   r¬   r’  r¡   r
  r6   rÂ   rÉ  r–  rf   r—   r1  r÷  rö  rƒ   rŠ   rx   r‡   rú   )rz   r:   rÝ   r  r  Ú
arr_shapesÚarr_stridesr=  Ú
ret_shapesró   rc  Úret_stridesÚcopy_offsetsÚarr_shrÿ   rs  r�   ræ  Úis_axisÚaddendÚret_datar  r  Úarr_stÚarr_datar1  r£   r  r†   r4  s                                 r@   Ú_do_concatenater*  â  sº  € õ ˆv‰;Œ;�#˜d™)œ)ÐJÐJÒJÐJ¥s¨:¡¤ÐJÐJÒJÐJ½#¸kÑ:JÔ:JÒJÐJÐJÐJÐJÐJåŒ>˜!ÑÔ€Dõ ˜ '¨5°*Ñ
=Ô
=€CÝÔ& w°´Ñ<Ô<€Kð €Làð 	$ð 	$ˆàˆÝ#,­S°¸Ñ-EÔ-EÑ#FÔ#Fð 	,ð 	,ÑˆC‘�$˜Ø×)Ò)¨$°·	²	¸#±´ÀÑEÔEˆGØ—[’[  vÑ.Ô.ˆFØ—^’^ GØ$+§K¢K°¸Ñ$?Ô$?Ø$*ñ,ô ,ˆFˆFð 	×Ò˜FÑ#Ô#Ð#Ð#ð Œx€Hå.1°&¸$À
Ø2=¸|ñ/Mô /Mð Bð BÑ*ˆˆs�F˜F Fà”8ˆõ Ô% g¨vµw´~Ø,1¬Lð:ñ :ô :ˆ	ð ð 		?˜'ÝÔ/°¸À(Ø06¸Ø05´¸gñGô GˆGõ ˜G W¨e°WÑ=Ô=ˆCØ—,’,˜w¨¨U¬[¸%¼+ÑFÔFˆCÝÔ0°¸'À8Ø1;¸[Ø16´¸wñHô HˆHõ �w ¨°°XÑ>Ô>Ð>ð		?ð 		?ð 		?ñ 		?ô 		?ð 		?ð 		?ð 		?ð 		?ð 		?ð 		?øøøð 		?ð 		?ð 		?ð 		?õ Ô& w°¸&ÑAÔAˆˆà€Js   ÆBH È H$	È'H$	c                 óÀ  ‡ ‡‡— |j         }ˆˆ fd„t          ||¦  «        D ¦   «         }t          ‰ ‰d||¦  «        }ˆfd„|D ¦   «         }ˆfd„|D ¦   «         }ˆfd„|d         D ¦   «         }	t          |¦  «        D �]›Š‰                     d|                     ‰¦  «        |¦  «        }
|	‰         }‰                     |¦  «        }ˆfd„|d	d …         D ¦   «         }‰                     |
¦  «        5 \  }}|5  t          j	        ‰j
        ||gz   ¦  «        }‰                     ||¦  «         d d d ¦  «         n# 1 swxY w Y   |5  t          j        }|D ]-}‰                     |‰                     d||¦  «        ¦  «        }Œ.‰                     ‰                     |¦  «        d
¬¦  «        5  ‰ j                             ‰t&          d‰z  f¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   �Œ�ˆfd„|	D ¦   «         }	t)          ‰ ‰|||||||	¦	  «	        }t+          ‰ ‰||                     ¦   «         ¦  «        S )Nc                 óL   •— g | ] \  }} t          |¦  «        ‰‰|¬ ¦  «        ‘Œ!S ©r  rÕ  ©rž   r±  rÛ  r:   rz   s      €€r@   rŸ   z#_np_concatenate.<locals>.<listcomp>"  óD   ø€ ð -ð -ð -Ù��Qð �J�s‰OŒO˜G W°AÐ6Ñ6Ô6ð -ð -ð -rB   únp.concatenatec                 óD   •— g | ]}t          j        ‰|j        ¦  «        ‘ŒS r�   )r
   rÀ   rb   ©rž   r  r:   s     €r@   rŸ   z#_np_concatenate.<locals>.<listcomp>(  s(   ø€ ÐKÐKÐK¸s•'Ô& w°´	Ñ:Ô:ÐKÐKÐKrB   c                 óD   •— g | ]}t          j        ‰|j        ¦  «        ‘ŒS r�   ©r
   rÀ   r¬   r2  s     €r@   rŸ   z#_np_concatenate.<locals>.<listcomp>)  s(   ø€ ÐNÐNÐNÀ#•7Ô'¨°´Ñ=Ô=ÐNÐNÐNrB   c                 ó:   •— g | ]}t          j        ‰|¦  «        ‘ŒS r�   )r
   rì   ©rž   r1  r:   s     €r@   rŸ   z#_np_concatenate.<locals>.<listcomp>.  s6   ø€ ð +ð +ð +Øõ Ô+¨G°RÑ8Ô8ð +ð +ð +rB   r   rà  c                 ó    •— g | ]
}|‰         ‘ŒS r�   r�   )rž   r1  rs  s     €r@   rŸ   z#_np_concatenate.<locals>.<listcomp>5  s   ø€ Ð9Ð9Ð9 B˜˜3œÐ9Ð9Ð9rB   rD   FrV  z<np.concatenate(): input sizes over dimension %d do not matchc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r�   )r;   r6  s     €r@   rŸ   z#_np_concatenate.<locals>.<listcomp>I  s%   ø€ Ð8Ð8Ð8 r�'—,’,˜rÑ"Ô"Ð8Ð8Ð8rB   )rm   r¡   rê  r5   r
  r6   r;   r  r9  r:  r–  r  r
   r;  r  r  r¶  rX  rY  r¸   r*  r   rñ   )rz   r:   r  r  r=  rÝ   rm   r  r   r!  r%  Úret_shape_ptrÚret_shÚother_shapesÚon_axisÚon_other_dimr1  Úis_okrc  rs  s   ``                 @r@   Ú_np_concatenater?    sÔ  øøø€ ØŒ:€Dð-ð -ð -ð -ð -Ý˜f dÑ+Ô+ð-ñ -ô -€Dõ ˜7 GÐ-=¸tÀTÑJÔJ€Dð LÐKÐKÐKÀdÐKÑKÔK€JØNÐNÐNÐNÈÐNÑNÔN€Kð
+ð +ð +ð +Ø& qœMð+ñ +ô +€Jõ �T‰{Œ{ð >ñ >ˆØ×%Ò% d¨D¯IªI°c©N¬N¸DÑAÔAˆØ" 3œˆØ—’˜mÑ,Ô,ˆØ9Ð9Ð9Ð9¨*°Q°R°R¬.Ð9Ñ9Ô9ˆà�_Š_˜WÑ%Ô%ð 	>Ñ)@¨'°<Øð 1ð 1ÝÔ%Ø”KØ  F 8Ñ+ñ-ô -�ð —’˜b -Ñ0Ô0Ð0ð	1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð ð 	>ð 	>ÝÔ(�Ø&ð Pð P�BØ#ŸLšL¨Ø)0×)<Ò)<¸TÀ2ÀvÑ)NÔ)NñPô P�E�Eà—_’_ W§\¢\°%Ñ%8Ô%8À�_ÑGÔGð >ð >ØÔ%×5Ò5Ø¥ð5Ø7:ñ;ð =ñ>ô >ð >ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ùð$ 9Ð8Ð8Ð8¨ZÐ8Ñ8Ô8€Jå
˜' 7¨DØ  $¨
°KØ ñ-ô -€Cõ ˜G W¨e°S·]²]±_´_ÑEÔEÐEs   Ã/H
Ã55D6Ä*H
Ä6D:Ä:H
Ä=D:Ä>H
ÅA'G3Æ*&G	ÇG3ÇG Ç G3Ç#G Ç$G3Ç'H
Ç3G7Ç7H
Ç:G7Ç;H
È
H	ÈH	c                 ó¶	  ‡ ‡‡— |j         }t          j        d¦  «        }t          j        d¦  «        }t          j        t          |¦  «        ¦  «        }	ˆˆ fd„t	          ||¦  «        D ¦   «         }t          ‰ ‰d||¦  «        }t          j        ‰|d         j        ¦  «        }
|dd …         D ]Ê}t          j        }t	          t          j        ‰|j        ¦  «        |
¦  «        D ]“\  }}‰ 	                    |‰ 
                    d||¦  «        ¦  «        }‰                     ‰                     |¦  «        d¬¦  «        5  ‰ j                             ‰t          d¦  «         d d d ¦  «         n# 1 swxY w Y   Œ”ŒËˆfd	„|D ¦   «         }t!          j        t          j        |¦  «        Št          j        ‰‰¦  «        }t          j        ‰‰¦  «        }t'          |dz
  ¦  «        D ]¶}t          j        |¦  «        }‰ 
                    d
||¦  «        }|
|         }‰                     |‰                     ||¦  «        |¦  «        }‰                     |t          j        ‰|d|¦  «        ¦  «         ‰                     |t          j        ‰|d|¦  «        ¦  «         Œ·‰                     |t          j        ‰|d|¦  «        ¦  «         ‰                     |	t          j        ‰|d|¦  «        ¦  «         t          j        ‰‰                     |¦  «        ¦  «        }|gt          |¦  «        z  }t          j        ‰‰                     |¦  «        ¦  «        }ˆˆfd„t'          t          |¦  «        ¦  «        D ¦   «         }t'          |dz
  ¦  «        D ]´}t          j        |¦  «        }‰ 
                    d
||¦  «        }‰                     |‰                     ||¦  «        |¦  «        }t'          t          |¦  «        ¦  «        D ]?}‰                     ||         |         t          j        ‰||         d|¦  «        ¦  «         Œ@Œµt'          t          |¦  «        ¦  «        D ]3}‰                     |t          j        ‰||         d|¦  «        ¦  «         Œ4ˆfd„|D ¦   «         }t3          ‰ ‰|||||||¦	  «	        }t5          ‰ ‰||                     ¦   «         ¦  «        S )Nr   rD   c                 óL   •— g | ] \  }} t          |¦  «        ‰‰|¬ ¦  «        ‘Œ!S r-  rÕ  r.  s      €€r@   rŸ   z_np_stack.<locals>.<listcomp>X  r/  rB   únp.stackrà  FrV  )z5np.stack(): all input arrays must have the same shapec                 óD   •— g | ]}t          j        ‰|j        ¦  «        ‘ŒS r�   r4  r2  s     €r@   rŸ   z_np_stack.<locals>.<listcomp>j  s(   ø€ ÐOÐOÐOÀ3•GÔ(¨°#´+Ñ>Ô>ÐOÐOÐOrB   rƒ  c                 ó:   •— g | ]}t          j        ‰‰¦  «        ‘ŒS r�   rÑ  )rž   rj   r:   rî  s     €€r@   rŸ   z_np_stack.<locals>.<listcomp>‹  s6   ø€ ð 0ð 0ð 0Øõ Ô(¨°'Ñ:Ô:ð 0ð 0ð 0rB   c                 ó`   •— g | ]*}t          j        ‰‰                     |¦  «        ¦  «        ‘Œ+S r�   )r
   rÀ   r;   )rž   r2  r:   s     €r@   rŸ   z_np_stack.<locals>.<listcomp>   sB   ø€ ð .ð .ð .Øõ Ô)¨'°7·<²<ÀÑ3CÔ3CÑDÔDð .ð .ð .rB   )rm   r
   rÎ   r    r¡   rê  rÀ   rb   r;  r  r
  r  r¶  rX  rY  r¸   r   rÝ  rT   r5   rÉ  r–  r  re   r;   r*  r   rñ   )rz   r:   r  r  r=  rÝ   rm   ró   r(  Ú
ll_narraysrí  r  r>  r1  Úorig_shró  Úinput_shapesr!  rs  rï  rð  r�   Úinput_stridesrj   rc  rî  s   ``                       @r@   Ú	_np_stackrJ  Q  sh  øøø€ ØŒ:€DåŒ>˜!ÑÔ€DÝ
Œ.˜Ñ
Ô
€CÝ”¥ D¡	¤	Ñ*Ô*€Jð-ð -ð -ð -ð -Ý˜f dÑ+Ô+ð-ñ -ô -€Dõ ˜7 G¨Z¸¸tÑDÔD€Dõ Ô% g¨t°A¬w¬}Ñ=Ô=€Jà�A�B�BŒxð Pð PˆÝÔ ˆÝ�wÔ3°G¸S¼YÑGÔGØ)ñ+ô +ð 	Pð 	P‰KˆB�à—L’L ¨×(;Ò(;¸DÀ"ÀgÑ(NÔ(NÑOÔOˆEØ—’ §¢¨eÑ!4Ô!4¸U�ÑCÔCð Pð PØÔ!×1Ò1Ø�ZØNñPô Pð PðPð Pð Pñ Pô Pð Pð Pð Pð Pð Pð Pøøøð Pð Pð Pð Pøð	Pð PÐOÐOÐOÈ$ÐOÑOÔO€Lõ
 Œl�7œ>¨4Ñ0Ô0€GåÔ& w°Ñ8Ô8€LÝÔ$ W¨gÑ6Ô6€Jõ �T˜A‘X‰Œð Mð MˆÝ” Ñ$Ô$ˆØ×(Ò(¨¨v°tÑ<Ô<ˆ
Ø˜Œ_ˆØ�nŠn˜ZØ$Ÿ[š[¨°Ñ5Ô5Ø#ñ%ô %ˆð 	�Š�b�'Ô.¨w¸ÀaÈÑMÔMÑNÔNÐNØ�Š�b�'Ô.¨w¸
ÀAÀsÑKÔKÑLÔLÐLÐLð ‡M‚M�#•wÔ+¨G°\À1ÀdÑKÔKÑLÔLÐLØ‡M‚M�*�gÔ2°7Ø3=Ø34Ø37ñ9ô 9ñ :ô :ð :õ
 Ô'¨°·²¸lÑ1KÔ1KÑLÔL€LØ �>¥C¨¡I¤IÑ-€LÝÔ% g¨w¯|ª|¸JÑ/GÔ/GÑHÔH€Jð0ð 0ð 0ð 0ð 0Ý#¥C¨¡I¤IÑ.Ô.ð0ñ 0ô 0€Mõ �T˜A‘X‰Œð 	5ð 	5ˆÝ” Ñ$Ô$ˆØ×(Ò(¨¨v°tÑ<Ô<ˆ
Ø�nŠn˜ZØ$Ÿ[š[¨°Ñ5Ô5Ø#ñ%ô %ˆõ •s˜4‘y”yÑ!Ô!ð 	5ð 	5ˆAØ�MŠM˜, qœ/¨#Ô.Ý!Ô.¨w¸ÀaÔ8HÈ!Ø/2ñ4ô 4ñ5ô 5ð 5ð 5ð	5õ •3�t‘9”9ÑÔð 8ð 8ˆØ�Š�d�GÔ0°¸-ÈÔ:JÈAØ15ñ7ô 7ñ 	8ô 	8ð 	8ð 	8ð.ð .ð .ð .Ø,ð.ñ .ô .€Mõ ˜' 7¨DØ  $¨°mØ ñ-ô -€Cõ ˜G W¨e°S·]²]±_´_ÑEÔEÐEs   Ä>"E,Å,E0Å3E0c                 óÚ   — |�t          |t          j        ¦  «        sd S t          | d|¦  «        \  }}|dk    rt	          d¦  «        ‚t          |¦  «        }t          j        |||¦  «        S )Nr0  r   z.zero-dimensional arrays cannot be concatenated)r”   r   r–   r2   Ú	TypeErrorr3   r•   )rb  r  rÝ   rx   rm   r÷  s         r@   Únp_concatenate_typerrM  ª  sw   € ØÐ¥
¨4µ´Ñ ?Ô ?Ðð 	ˆõ & iØ&6¸ñ@ô @�K€Eˆ4àˆq‚y€yÝÐHÑIÔIÐIå)¨&Ñ1Ô1€FåŒ;�u˜d FÑ+Ô+Ð+rB   c                 ó‚   — t          | ||¦  «        }t          |t          j        ¦  «        sJ ‚ |||¦  «        }d„ }||fS )Nc           
      óü   — |                       ||d         |j        d         t          j        ¦  «        }t	          | |t          |j        d         ¦  «        t          j        ||d         ¦  «        |j        |¦  «        S r¨  )	rŠ   ré   r   r‹   r?  r¼   r
   rÀ   rë   ©rz   r:   rX   ré   rÝ   s        r@   ra  znp_concatenate.<locals>.codegenÁ  sh   € Ø�|Š|˜G T¨!¤W¨c¬h°q¬k½5¼:ÑFÔFˆÝ˜w¨Ý# C¤H¨Q¤KÑ0Ô0Ý&Ô3°G¸TÀ!¼WÑEÔEØ"œØ#ñ	%ô %ð 	%rB   )rM  r”   r   r•   )rb  r  rÝ   rc  rX   ra  s         r@   Únp_concatenaterQ  »  sW   € å
˜y¨&°$Ñ
7Ô
7€CÝ�c�5œ;Ñ'Ô'Ð'Ð'Ð'Ø
ˆ#ˆf�dÑ
Ô
€Cð%ð %ð %ð �ˆ<ÐrB   c                 óF   — t          | t          j        ¦  «        rdd„}|S d S )Nr   c                 ó"   — t          | |¦  «        S r?  )rQ  ©r  rÝ   s     r@   rã   z!impl_np_concatenate.<locals>.implÏ  s   € Ý! &¨$Ñ/Ô/Ð/rB   rœ  ©r”   r   rI  ©r  rÝ   rã   s      r@   Úimpl_np_concatenaterW  Ì  s9   € å�&�%œ/Ñ*Ô*ð ð	0ð 	0ð 	0ð 	0àˆðð rB   c                 óZ   — |D ]'}|j         dk     s|j         dk    rt          d¦  «        ‚Œ(dS )NrD   rÜ  z7np.column_stack() is only defined on 1-d and 2-d arrays)rm   rL  )rz   rÛ   r  rÛ  s       r@   Ú_column_stack_dimsrY  Ô  sI   € àð 2ð 2ˆØŒ6�AŠ:ˆ:˜œ !š˜Ýð 1ñ 2ô 2ð 2ð $ð ˆ1rB   c                 ó¦   — t          | d|t          ¬¦  «        \  }}t          |¦  «        }t          j        |||¦  «        } ||¦  «        }d„ }||fS )Nznp.column_stack)Údim_chooserc                 ój  — t          |j        d         ¦  «        }t          j        ||d         ¦  «        }g }g }|                      t
          j        d¦  «        }t          ||¦  «        D ]±\  }	}
|	j        dk    r+| 	                    |	¦  «         | 	                    |
¦  «         Œ;|	j        dk    sJ ‚|	 
                    d¬¦  «        }t          j        ||	¦  «        }t          | |||
f|¦  «        }| 	                    |¦  «         | 	                    |¦  «         Œ²t          | ||||j        |¦  «        S )Nr   rD   rÜ  rC  )r¼   ré   r
   rÀ   r¿   r   r‹   r¡   rm   rf   rW  r   r"   rø  r?  rë   )rz   r:   rX   ré   Úorig_arrtysÚ	orig_arrsr  r  rÝ   r  r  r¹  Ú
expand_sigÚnewarrs                 r@   ra  z np_column_stack.<locals>.codegenæ  s0  € Ý˜3œ8 Aœ;Ñ'Ô'ˆÝÔ(¨°$°q´'Ñ:Ô:ˆ	àˆØˆà×#Ò#¥E¤J°Ñ2Ô2ˆå˜k¨9Ñ5Ô5ð 	$ð 	$‰JˆE�3ØŒz˜QŠˆØ—’˜eÑ$Ô$Ð$Ø—’˜CÑ Ô Ð Ð ð ”z Q’���ØŸ
š
¨˜
Ñ*Ô*�Ý#Ô-¨e°UÑ;Ô;�
Ý$ W¨g°zÀCÀ6È4ÑPÔP�à—’˜eÑ$Ô$Ð$Ø—’˜FÑ#Ô#Ð#Ð#å˜w¨°¸Ø"œ°ñ6ô 6ð 	6rB   )r2   rY  r3   r   r•   )rb  rF  rx   rm   r÷  rc  rX   ra  s           r@   Únp_column_stackra  Ý  sq   € å% iØ&7¸Ý2DðFñ Fô F�K€Eˆ4õ *¨#Ñ.Ô.€FÝ
Œ+�e˜T 6Ñ
*Ô
*€CØ
ˆ#ˆc‰(Œ(€Cð6ð 6ð 6ð4 �ˆ<ÐrB   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 ó    — t          | ¦  «        S r?  )ra  ©rF  s    r@   rã   zimpl_column_stack.<locals>.impl  s   € Ý" 3Ñ'Ô'Ð'rB   rU  ©rF  rã   s     r@   Úimpl_column_stackrf    s4   € å�#•u”Ñ'Ô'ð ð	(ð 	(ð 	(àˆðð rB   c           
      ó–   — t          | |t          |j        d         ¦  «        t          j        ||d         ¦  «        |j        |¦  «        S )z/
    np.stack() with the given axis value.
    r   )rJ  r¼   ré   r
   rÀ   rë   rP  s        r@   Ú_np_stack_commonrh    sG   € õ �W˜gÝ˜#œ( 1œ+Ñ&Ô&ÝÔ)¨'°4¸´7Ñ;Ô;Ø”_Øñ	ô ð rB   c                 ó¼   — t          | d|¦  «        \  }}t          d„ |D ¦   «         ¦  «        rdnd}t          j        ||dz   |¦  «        } |||¦  «        }d„ }||fS )NrB  c              3   ó,   K  — | ]}|j         d k    V — ŒdS )r¬  N)r÷  rÚ  s     r@   rB  z"np_stack_common.<locals>.<genexpr>  s(   è è € Ð8Ð8¨A˜œ CšÐ8Ð8Ð8Ð8Ð8Ð8rB   r¬  r¦   rD   c                 óŽ   — |                       ||d         |j        d         t          j        ¦  «        }t	          | ||||¦  «        S r’  )rŠ   ré   r   r‹   rh  rP  s        r@   ra  z np_stack_common.<locals>.codegen  s;   € Ø�|Š|˜G T¨!¤W¨c¬h°q¬k½5¼:ÑFÔFˆÝ ¨°#°t¸TÑBÔBÐBrB   )r2   rƒ  r   r•   )	rb  r  rÝ   rx   rm   r÷  rc  rX   ra  s	            r@   Únp_stack_commonrl    s‰   € õ & iØ&0°&ñ:ô :�K€Eˆ4åÐ8Ð8°Ð8Ñ8Ô8Ñ8Ô8ÐAˆSˆS¸c€FÝ
Œ+�e˜T A™X vÑ
.Ô
.€CØ
ˆ#ˆf�dÑ
Ô
€CðCð Cð Cð �ˆ<ÐrB   c                 óF   — t          | t          j        ¦  «        rdd„}|S d S )Nr   c                 ó"   — t          | |¦  «        S r?  )rl  rT  s     r@   rã   zimpl_np_stack.<locals>.impl)  s   € Ý" 6¨4Ñ0Ô0Ð0rB   rœ  rU  rV  s      r@   Úimpl_np_stackro  &  s9   € å�&�%œ/Ñ*Ô*ð ð	1ð 	1ð 	1ð 	1àˆðð rB   c                 ó˜   — t          | ||¦  «        \  }}t          ||¦  «        }t          |¦  «        }t          j        |||¦  «        }|S r?  )r2   r–  r3   r   r•   )rb  rÛ   r  Úndim_minrx   rm   r÷  rc  s           r@   ÚNdStack_typerrr  .  sK   € å% i°¸FÑCÔC�K€Eˆ4Ýˆt�XÑÔ€DÝ)¨&Ñ1Ô1€FÝ
Œ+�e˜T 6Ñ
*Ô
*€CØ€JrB   c                 óJ   — t          | d|d¦  «        } ||¦  «        }d„ }||fS )Nz	np.hstackrD   c                 óø   ‡— |j         d         }|d         j        }|dk    r3|                      t          j        d¦  «        Št          | |||‰¦  «        S |dk    rdndŠˆfd„}|                      ||||¦  «        S )Nr   rD   c                 ó0   •— t          j        | ‰¬¦  «        S r]  r_  rT  s    €r@   Únp_hstack_implz3_np_hstack.<locals>.codegen.<locals>.np_hstack_implJ  s   ø€ Ý”~ f°4Ð8Ñ8Ô8Ð8rB   ©ré   rm   r¿   r   r‹   rh  rß  )rz   r:   rX   ré   rE  rm   rv  rÝ   s          @r@   ra  z_np_hstack.<locals>.codegen<  s—   ø€ Ø”˜”ˆØ�QŒxŒ}ˆà�1Š9ˆ9à×'Ò'­¬
°AÑ6Ô6ˆDÝ# G¨W°c¸4ÀÑFÔFÐFð
  š	˜	�1�1 qˆDð9ð 9ð 9ð 9ð 9ð ×+Ò+¨G°^ÀSÈ$ÑOÔOÐOrB   ©rr  ©rb  rF  rc  rX   ra  s        r@   Ú
_np_hstackrz  7  s@   € å
˜	 ;°°QÑ
7Ô
7€CØ
ˆ#ˆc‰(Œ(€CðPð Pð Pð& �ˆ<ÐrB   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 ó    — t          | ¦  «        S r?  )rz  rd  s    r@   rã   zimpl_np_hstack.<locals>.implU  ó   € Ý˜c‘?”?Ð"rB   rU  re  s     r@   Úimpl_np_hstackr~  R  ó4   € å�#•u”Ñ'Ô'ð ð	#ð 	#ð 	#àˆðð rB   c                 óJ   — t          | d|d¦  «        } ||¦  «        }d„ }||fS )Nz	np.vstackrÜ  c                 óò   — |j         d         }|d         j        }|dk    rd„ }n<|dk    r3|                      t          j        d¦  «        }t          | ||||¦  «        S d„ }|                      ||||¦  «        S )Nr   c                 óP   — t          j        t          j        | ¦  «        d¦  «        S r’  )ru  rø  Úhstack©r  s    r@   Únp_vstack_implz3_np_vstack.<locals>.codegen.<locals>.np_vstack_impld  s   € Ý”~¥b¤i°Ñ&7Ô&7¸Ñ;Ô;Ð;rB   rD   c                 ó.   — t          j        | d¬¦  «        S )Nr   r^  r_  r„  s    r@   r…  z3_np_vstack.<locals>.codegen.<locals>.np_vstack_implm  ó   € Ý”~ f°1Ð5Ñ5Ô5Ð5rB   rw  )rz   r:   rX   ré   rE  rm   r…  rÝ   s           r@   ra  z_np_vstack.<locals>.codegen_  s˜   € Ø”˜”ˆØ�QŒxŒ}ˆà�1Š9ˆ9ð<ð <ð <ð <ð �QŠYˆYà×'Ò'­¬
°AÑ6Ô6ˆDÝ# G¨W°c¸4ÀÑFÔFÐFð6ð 6ð 6ð ×'Ò'¨°ÀÀdÑKÔKÐKrB   rx  ry  s        r@   Ú
_np_vstackrˆ  Z  s@   € å
˜	 ;°°QÑ
7Ô
7€CØ
ˆ#ˆc‰(Œ(€CðLð Lð Lð& �ˆ<ÐrB   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 ó    — t          | ¦  «        S r?  )rˆ  rd  s    r@   rã   zimpl_np_vstack.<locals>.implx  r}  rB   rU  re  s     r@   Úimpl_np_vstackr‹  u  r  rB   c                 óJ   — t          | d|d¦  «        } ||¦  «        }d„ }||fS )Nz	np.dstackr  c                 óœ  — |j         d         }|j        }|d         j        }|dk    rd„ }|                      ||||¦  «        S |dk    r±|                      t
          j        d¦  «        }|                     |j        dz
  ¬¦  «        }	t          j	        |	g|j         ¢R Ž }
t          | ||
||¦  «        }|                      t
          j        d¦  «        }t          j	        ||	¦  «        }t          | |||f|¦  «        S |dk    r3|                      t
          j        d¦  «        }t          | ||||¦  «        S d„ }|                      ||||¦  «        S )Nr   c                 óT   — t          j        | ¦  «                             ddd¦  «        S )NrD   rú  )ru  rƒ  rH  r„  s    r@   r…  z3_np_dstack.<locals>.codegen.<locals>.np_vstack_implˆ  s$   € Ý”y Ñ(Ô(×0Ò0°°A°rÑ:Ô:Ð:rB   rD   rC  rÜ  c                 ó.   — t          j        | d¬¦  «        S )NrÜ  r^  r_  r„  s    r@   r…  z3_np_dstack.<locals>.codegen.<locals>.np_vstack_implŸ  r‡  rB   )ré   rë   rm   rß  r¿   r   r‹   rW  r   r"   rh  rø  )rz   r:   rX   ré   rE  r=  rm   r…  rÝ   Ústack_rettyÚ	stack_sigÚ	stack_retr_  s                r@   ra  z_np_dstack.<locals>.codegen‚  sd  € Ø”˜”ˆØ”ˆØ�QŒxŒ}ˆà�1Š9ˆ9ð;ð ;ð ;ð ×+Ò+¨G°^ÀSÈ$ÑOÔOÐOà�QŠYˆYà×'Ò'­¬
°AÑ6Ô6ˆDØŸ*š*¨%¬*°q©.˜*Ñ9Ô9ˆKÝÔ(¨Ð@°s´xÐ@Ð@Ð@ˆIÝ(¨°'¸9ÀdØ)-ñ/ô /ˆIð ×'Ò'­¬
°AÑ6Ô6ˆDÝÔ)¨%°Ñ=Ô=ˆJÝ˜w¨°¸i¸\È4ÑPÔPÐPà�QŠYˆYà×'Ò'­¬
°AÑ6Ô6ˆDÝ# G¨W°c¸4ÀÑFÔFÐFð6ð 6ð 6ð ×+Ò+¨G°^ÀSÈ$ÑOÔOÐOrB   rx  ry  s        r@   Ú
_np_dstackr“  }  sA   € å
˜	 ;°°QÑ
7Ô
7€CØ
ˆ#ˆc‰(Œ(€Cð Pð  Pð  PðD �ˆ<ÐrB   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 ó    — t          | ¦  «        S r?  )r“  rd  s    r@   rã   zimpl_np_dstack.<locals>.implª  r}  rB   rU  re  s     r@   Úimpl_np_dstackr–  §  r  rB   Úfillc                 ó   — d„ }|S )Nc                 ó   — || d d …<   d S r?  r�   )r  r†   s     r@   Ú	fill_implzarr_fill.<locals>.fill_impl²  s   € ØˆˆAˆAˆA‰ØˆtrB   r�   )r  r†   rš  s      r@   Úarr_fillr›  ¯  s   € ðð ð ð ÐrB   Údotc                 ó   — d„ }|S )Nc                 ó,   — t          j        | |¦  «        S r?  )ru  rœ  )r  Úothers     r@   Údot_implzarray_dot.<locals>.dot_impl»  s   € ÝŒv�c˜5Ñ!Ô!Ð!rB   r�   )r  rŸ  r   s      r@   Ú	array_dotr¡  ¹  s   € ð"ð "ð "ð €OrB   c                 óX   — t          | ¦  «        st          j        d| z  ¦  «        ‚d„ }|S )NzCannot np.fliplr on %s typec                 ó~   — t          j        | ¦  «        }|j        dk     rt          d¦  «        ‚|d d …d d d…df         S )NrÜ  r  rú  .©ru  rv  rm   r¸   ©r‰  rU  s     r@   rã   znp_flip_lr.<locals>.implÇ  sF   € ÝŒJ�q‰MŒMˆð Œ6�AŠ:ˆ:ÝÐ4Ñ5Ô5Ð5Ø����T�T�r�T˜3�ÔÐrB   rÆ  ©r‰  rã   s     r@   Ú
np_flip_lrr§  Á  sB   € õ ˜AÑÔð DÝÔ Ð!>ÀÑ!BÑCÔCÐCð ð  ð  ð €KrB   c                 óX   — t          | ¦  «        st          j        d| z  ¦  «        ‚d„ }|S )NzCannot np.flipud on %s typec                 óx   — t          j        | ¦  «        }|j        dk     rt          d¦  «        ‚|d d d…df         S )NrD   zInput must be >= 1-d.rú  .r¤  r¥  s     r@   rã   znp_flip_ud.<locals>.implØ  s?   € ÝŒJ�q‰MŒMˆð Œ6�AŠ:ˆ:ÝÐ4Ñ5Ô5Ð5Ø���2��s�Œ|ÐrB   rÆ  r¦  s     r@   Ú
np_flip_udrª  Ò  sB   € õ ˜AÑÔð DÝÔ Ð!>ÀÑ!BÑCÔCÐCðð ð ð €KrB   c                 óô   ‡‡— t          |t          j        ¦  «        st          j        |¦  «        ‚t          |j        ¦  «        Št          j        t          j        ‰¬¦  «        Š ‰|¦  «        }ˆˆfd„}||fS )zY Creates a tuple of slices for np.flip indexing like
    `(slice(None, None, -1),) * sz` rÂ  c                 ó   •— d„ }t           j        ‰g}t          j        ‰g|¢R Ž }|                      t           j        ¦  «        }|                      ‰¦  «        } |‰¦  «        |g}	|                      ||||	¦  «        }
|
S )Nc           
      ón   — |}t          | ¦  «        D ]"}t          ||t          d d d¦  «        ¦  «        }Œ#|S )Nrú  )r5   r,   r0  )ÚlengthÚempty_tuplerö   rj   s       r@   rã   z6_build_flip_slice_tuple.<locals>.codegen.<locals>.implî  sB   € ØˆCÝ˜6‘]”]ð Cð C�Ý# C¨­E°$¸¸bÑ,AÔ,AÑBÔB��ØˆJrB   )r   r‹   r   r"   r¹   Úget_constant_undefrß  )rz   r:   r"   ré   rã   Úinner_argtypesÚ	inner_sigÚll_idx_typer¯  Ú
inner_argsrõ   r�   Ú
tuple_types              €€r@   ra  z(_build_flip_slice_tuple.<locals>.codegení  s’   ø€ ð	ð 	ð 	õ  œ* jÐ1ˆÝÔ$ ZÐA°.ÐAÐAÐAˆ	Ø×,Ò,­U¬ZÑ8Ô8ˆà×0Ò0°Ñ<Ô<ˆØ!�k $Ñ'Ô'¨Ð5ˆ
à×&Ò& w°°iÀÑLÔLˆØˆ
rB   )	r”   r   r}  r	   r€  r½   rå   r�  Úslice3_type)rì  ÚszrX   ra  r�   rµ  s       @@r@   Ú_build_flip_slice_tupler¸  ã  sŠ   øø€ õ �b�%Ô.Ñ/Ô/ð -ÝÔ(¨Ñ,Ô,Ð,ÝˆrÔÑ Ô €DÝ”¥eÔ&7¸tÐDÑDÔD€JØ
ˆ*�R‰.Œ.€Cðð ð ð ð ð ð" �ˆ<ÐrB   c                 ón   — t          | t          j        ¦  «        st          j        d| z  ¦  «        ‚d„ }|S )NzCannot np.flip on %s typec                 ó:   — t          | j        ¦  «        }| |         S r?  )r¸  rm   )r‰  Úsls     r@   rã   znp_flip.<locals>.impl  s   € Ý$ Q¤VÑ,Ô,ˆØ�ŒuˆrB   )r”   r   r•   r	   rä   r¦  s     r@   Únp_flipr¼    sF   € õ �a�œÑ%Ô%ð BÝÔ Ð!<¸qÑ!@ÑAÔAÐAðð ð ð €KrB   c                 ó¼  — t          | t          j        t          j        t          j        f¦  «        rdd„}|S t          |t          j        ¦  «        rdd„}|S t          |t          j        ¦  «        r*t          |j        j        t          j        ¦  «        rdd„}|S t          |t          j	        ¦  «        r$t          d„ |j        D ¦   «         ¦  «        rdd„}|S d S d S )Nr   c                 óT   — t          j        t          j        | ¦  «        ||¬¦  «        S r]  )ru  Úarray_splitrv  ©rý   Úindices_or_sectionsrÝ   s      r@   rã   znp_array_split.<locals>.impl  s,   € Ý”>Ý”
˜3‘”Ø#Øðñ ô ð rB   c                 óà   — t          | j        |         |¦  «        \  }}t          j        t          j        |dz   g|z  |g||z
  dz
  z  z   ¦  «        ¦  «        }t          j        | ||¬¦  «        S )NrD   r^  )Údivmodrb   ru  ÚcumsumrÇ   r¿  )rý   rÁ  rÝ   r	  r�  r£   s         r@   rã   znp_array_split.<locals>.impl  s{   € Ý˜CœI dœOÐ-@ÑAÔA‰FˆAˆsÝ”i¥¤Ø�Q‘�˜#‘Ø�Ð*¨SÑ0°1Ñ4Ñ5ñ6ñ!ô !ñ ô ˆGõ ”> # w°TÐ:Ñ:Ô:Ð:rB   c                 óV  — t          | j        ¦  «        }t          dd| j        |¦  «        }g }d}|D ]>}t          ||t	          ||¦  «        ¦  «        }|                     | |         ¦  «         |}Œ?|                     | t          ||t	          |d ¦  «        ¦  «                 ¦  «         |S ©Nznp.splitrÝ   r   )r-   rm   rÞ   r,   r0  rf   ©rý   rÁ  rÝ   Ú	slice_tuprö   Úprevrþ  r�   s           r@   rã   znp_array_split.<locals>.impl-  s©   € Ý.¨s¬xÑ8Ô8ˆIÝ! *¨f°c´hÀÑEÔEˆDØˆCØˆDØ*ð ð �Ý# I¨tµU¸4ÀÑ5EÔ5EÑFÔF�Ø—
’
˜3˜sœ8Ñ$Ô$Ð$Ø��Ø�JŠJ�s�=¨°D½%ÀÀTÑ:JÔ:JÑKÔKÔLÑMÔMÐMØˆJrB   c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r?  ©r”   r   r–   )rž   r)  s     r@   rB  z!np_array_split.<locals>.<genexpr>=  s.   è è € ÐPÐP°•
˜1�eœmÑ,Ô,ÐPÐPÐPÐPÐPÐPrB   c                 óp  — t          | j        ¦  «        }t          dd| j        |¦  «        }g }d}t          |¦  «        D ]>}t	          ||t          ||¦  «        ¦  «        }|                     | |         ¦  «         |}Œ?|                     | t	          ||t          |d ¦  «        ¦  «                 ¦  «         |S rÆ  )r-   rm   rÞ   r   r,   r0  rf   rÇ  s           r@   rã   znp_array_split.<locals>.impl?  s²   € Ý.¨s¬xÑ8Ô8ˆIÝ! *¨f°c´hÀÑEÔEˆDØˆCØˆDÝ%Ð&9Ñ:Ô:ð ð �Ý# I¨tµU¸4ÀÑ5EÔ5EÑFÔF�Ø—
’
˜3˜sœ8Ñ$Ô$Ð$Ø��Ø�JŠJ�s�=¨°D½%ÀÀTÑ:JÔ:JÑKÔKÔLÑMÔMÐMØˆJrB   rœ  )r”   r   r�  ÚListTyperß  r–   ÚIterableTypeÚiterator_typer  r‚  rƒ  ©rý   rÁ  rÝ   rã   s       r@   Únp_array_splitrÑ    s(  € å�#�œ­¬½¼
ÐCÑDÔDð ð	ð 	ð 	ð 	ð ˆåÐ%¥u¤}Ñ5Ô5ð 0ð	;ð 	;ð 	;ð 	;ð ˆõ 	Ð&­Ô(:Ñ;Ô;ð%åØÔ-Ô8ÝŒMñ
ô 
ð%ð
	ð 
	ð 
	ð 
	ð ˆõ 	Ð&­¬Ñ4Ô4ðåÐPÐPÐ6IÔ6OÐPÑPÔPÑPÔPðð
	ð 
	ð 
	ð 
	ð ˆð!ð ð ð rB   c                 óÔ   — t          | t          j        t          j        t          j        f¦  «        rdd„}|S t          |t          j        ¦  «        rdd„}|S t          | ||¬¦  «        S )Nr   c                 óT   — t          j        t          j        | ¦  «        ||¬¦  «        S r]  )ru  Úsplitrv  rÀ  s      r@   rã   znp_split.<locals>.implS  s"   € Ý”8�BœJ s™OœOÐ-@ÀtÐLÑLÔLÐLrB   c                 ó–   — t          | j        |         |¦  «        \  }}|dk    rt          d¦  «        ‚t          j        | ||¬¦  «        S )Nr   z0array split does not result in an equal divisionr^  )rÃ  rb   r¸   ru  r¿  )rý   rÁ  rÝ   rý  r�  s        r@   rã   znp_split.<locals>.implY  s]   € Ý˜CœI dœOÐ-@ÑAÔA‰FˆAˆsØ�aŠxˆxÝ ØFñô ð õ ”>ØÐ(¨tðñ ô ð rB   r^  rœ  )r”   r   r�  rÍ  rß  r–   rÑ  rÐ  s       r@   Únp_splitrÖ  N  s‹   € õ �#�œ­¬½¼
ÐCÑDÔDð ð	Mð 	Mð 	Mð 	Mð ˆåÐ%¥u¤}Ñ5Ô5ð Cð	ð 	ð 	ð 	ð ˆõ ˜cÐ#6¸TÐBÑBÔBÐBrB   c                 ó  — t          | t          j        ¦  «        sd}t          j        |¦  «        ‚t          |t          j        t          j        t          j        t          j        f¦  «        sd}t          j        |¦  «        ‚d„ }|S )Nú#The argument "ary" must be an arrayú:The argument "indices_or_sections" must be int or 1d-arrayc                 ód   — | j         dk     rt          d¦  «        ‚t          j        | |d¬¦  «        S )NrÜ  z3vsplit only works on arrays of 2 or more dimensionsr   r^  ©rm   r¸   ru  rÔ  ©rý   rÁ  s     r@   rã   znumpy_vsplit.<locals>.implt  s?   € ØŒ8�aŠ<ˆ<Ýð ?ñ Aô Að AåŒx˜Ð0°qÐ9Ñ9Ô9Ð9rB   ©r”   r   r•   r	   rä   r–   rß  r�  ©rý   rÁ  rÍ   rã   s       r@   Únumpy_vsplitrß  i  ó†   € å�c�5œ;Ñ'Ô'ð &Ø3ˆÝÔ  Ñ%Ô%Ð%åÐ)­E¬M½5¼;Ý,1¬J½¼ð,Hñ Iô Ið &àKˆÝÔ  Ñ%Ô%Ð%ð:ð :ð :ð €KrB   c                 ó  — t          | t          j        ¦  «        sd}t          j        |¦  «        ‚t          |t          j        t          j        t          j        t          j        f¦  «        sd}t          j        |¦  «        ‚d„ }|S )NrØ  rÙ  c                 ó¨   — | j         dk    rt          d¦  «        ‚| j         dk    rt          j        | |d¬¦  «        S t          j        | |d¬¦  «        S )Nr   z3hsplit only works on arrays of 1 or more dimensionsrD   r^  rÛ  rÜ  s     r@   rã   znumpy_hsplit.<locals>.implˆ  sb   € ØŒ8�qŠ=ˆ=Ýð ?ñ Aô Að AàŒ8�aŠ<ˆ<Ý”8˜CÐ!4¸1Ð=Ñ=Ô=Ð=ÝŒx˜Ð0°qÐ9Ñ9Ô9Ð9rB   rÝ  rÞ  s       r@   Únumpy_hsplitrã  }  s†   € å�c�5œ;Ñ'Ô'ð &Ø3ˆÝÔ  Ñ%Ô%Ð%åÐ)­E¬M½5¼;Ý,1¬J½¼ð,Hñ Iô Ið &àKˆÝÔ  Ñ%Ô%Ð%ð:ð :ð :ð €KrB   c                 ó  — t          | t          j        ¦  «        sd}t          j        |¦  «        ‚t          |t          j        t          j        t          j        t          j        f¦  «        sd}t          j        |¦  «        ‚d„ }|S )NrØ  rÙ  c                 ód   — | j         dk     rt          d¦  «        ‚t          j        | |d¬¦  «        S )Nr  z3dsplit only works on arrays of 3 or more dimensionsrÜ  r^  rÛ  rÜ  s     r@   rã   znumpy_dsplit.<locals>.implž  s<   € ØŒ8�aŠ<ˆ<Ýð *ñ +ô +ð +åŒx˜Ð0°qÐ9Ñ9Ô9Ð9rB   rÝ  rÞ  s       r@   Únumpy_dsplitræ  “  rà  rB   c                 ó`   — | |k     p(t          j        |¦  «        ot          j        | ¦  «         S r?  )ru  Úisnanr¯  s     r@   Ú	lt_floatsré  ­  s*   € ð
 ˆqŠ5Ð5•R”X˜a‘[”[Ð4­¬°!©¬ _Ð5rB   Fc                 ó  — | ||f}	 t           |         S # t          $ ri | dk    r(t          j        |rt          nd|d¬¦  «        }|j        }n,| dk    r&t          j        |rt          nd|¬¦  «        }|j        }|t           |<   |cY S w xY w)z6
    Get a sort implementation of the given kind.
    r)   NT)ÚltÚ
is_argsortÚis_np_arrayr*   )rë  rì  )	Ú_sortsÚKeyErrorr)   Úmake_jit_quicksortré  Úrun_quicksortr*   Úmake_jit_mergesortÚrun_mergesort)rf  Úis_floatrì  ÚkeyrÌ  Úfuncs         r@   Úget_sort_funcr÷  µ  sÇ   € ð �˜*Ð
$€CðÝ�cŒ{ÐøÝð ð ð Ø�;ÒÐÝÔ/Ø (Ð2•9�9¨dØ%Ø ð"ñ "ô "ˆDð Ô%ˆDˆDØ�[Ò Ð ÝÔ/Ø (Ð2•9�9¨dØ%ð'ñ 'ô 'ˆDð Ô%ˆDØ�ˆs‰Øˆˆˆðøøøs   ‡ ”A0BÂBz
array.sortc                 ó´   ‡— |j         d         }t          dt          |j        t          j        ¦  «        ¬¦  «        Šˆfd„}|                      ||||¦  «        S )Nr   r)   )rf  rô  c                 ó   •—  ‰| ¦  «         d S r?  r�   ©r  Ú	sort_funcs    €r@   Úarray_sort_implz#array_sort.<locals>.array_sort_implÒ  s   ø€ àˆ	�#‰ŒˆˆˆrB   )ré   r÷  r”   rx   r   r>  rß  )rz   r:   rX   ré   rÀ  rü  rû  s         @r@   Ú
array_sortrý  Ì  sm   ø€ àŒh�qŒk€GÝ ;Ý'1°'´-ÅÄÑ'MÔ'MðOñ Oô O€Iðð ð ð ð ð ×#Ò# G¨_¸cÀ4ÑHÔHÐHrB   c                 óR   — t          | ¦  «        st          j        d¦  «        ‚d„ }|S )NzArgument "a" must be array-likec                 óV   — |                       ¦   «         }|                     ¦   «          |S r?  )rW  rÌ  )rÛ  rõ   s     r@   Únp_sort_implz"impl_np_sort.<locals>.np_sort_implß  s!   € Ø�fŠf‰hŒhˆØ�Š‰
Œ
ˆ
Øˆ
rB   rÆ  )rÛ  r   s     r@   Úimpl_np_sortr  Ù  sC   € å˜AÑÔð 2ÝÔ ð "1ñ 2ô 2ð 	2ðð ð ð ÐrB   zarray.argsortc                 ó  ‡	— |j         \  }}t          |j        t          |j        t
          j        ¦  «        d¬¦  «        Š	ˆ	fd„}|                     |j         d d…         ¬¦  «        }|d d…         }|                      ||||¦  «        S )NT)rf  rô  rì  c                 ó   •—  ‰| ¦  «        S r?  r�   rú  s    €r@   Úarray_argsort_implz)array_argsort.<locals>.array_argsort_implî  s   ø€ Øˆy˜‰~Œ~ÐrB   rD   rŽ  )	ré   r÷  rå   r”   rx   r   r>  Úreplacerß  )
rz   r:   rX   ré   rÀ  rf  r  ÚinnersigÚ	innerargsrû  s
            @r@   Úarray_argsortr  æ  s¤   ø€ ð ”H�M€GˆTÝ 4Ô#5Ý'1°'´-ÅÄÑ'MÔ'MØ)-ð/ñ /ô /€Iðð ð ð ð ð �{Š{ ¤¨¨!¨¤ˆ{Ñ-Ô-€HØ�R�a�R”€IØ×#Ò# GÐ-?Ø$,¨iñ9ô 9ð 9rB   c                 ó@   — |j         |j         k    s|j        dk    sJ ‚|S )NrU  )r'  r÷  )rz   r:   r3  r4  r†   s        r@   Úarray_to_arrayr
  ú  s*   € ð Œ>˜Tœ\Ò)Ð)¨T¬[¸CÒ-?Ð-?Ð-?Ð-?Ø€JrB   c                 óˆ   — d„ }t          ||¦  «        }|                      ||||g¦  «        }t          | ||j        |¦  «        S )Nc                 ó,   — |                       d¦  «        S rá   )r+  rl  s    r@   rã   zarray0d_to_scalar.<locals>.impl	  s   € à�vŠv�a‰yŒyÐrB   )r"   rß  r    rë   ©rz   r:   r3  r4  r†   rã   rX   rõ   s           r@   Úarray0d_to_scalarr    sS   € ðð ð õ �D˜&Ñ
!Ô
!€CØ
×
"Ò
" 7¨D°#¸°uÑ
=Ô
=€CÝ˜g w°´ÀÑEÔEÐErB   c                 óˆ   — d„ }t          ||¦  «        }|                      ||||g¦  «        }t          | ||j        |¦  «        S )Nc                 ó,   — t          | d         ¦  «        S r”  )r|  rl  s    r@   rã   z array_to_unichrseq.<locals>.impl  s   € Ý�1�R”5‰zŒzÐrB   )r"   rß  r   rë   r  s           r@   Úarray_to_unichrseqr    sS   € ðð ð õ �D˜&Ñ
!Ô
!€CØ
×
"Ò
" 7¨D°#¸°uÑ
=Ô
=€CÝ˜W g¨s¬ÀÑDÔDÐDrB   c                 ó   — t           ‚)zR
    An intrinsic returning a derived array with the given shape and strides.
    rÚ   )rÛ  rb   r¬   s      r@   Úreshape_uncheckedr    s
   € õ ÐrB   c                 ó   ‡— d„ Šˆfd„}|S )Nc                 óh   — t          | t          j        ¦  «        ot          d„ | D ¦   «         ¦  «        S )Nc              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S r?  rË  r   s     r@   rB  z>type_reshape_unchecked.<locals>.check_shape.<locals>.<genexpr>*  s.   è è € Ð@Ð@°Q•J˜q¥%¤-Ñ0Ô0Ð@Ð@Ð@Ð@Ð@Ð@rB   )r”   r   rI  rƒ  ©rb   s    r@   r  z+type_reshape_unchecked.<locals>.check_shape(  s7   € Ý˜5¥%¤/Ñ2Ô2ð AÝÐ@Ð@¸%Ð@Ñ@Ô@Ñ@Ô@ð	BrB   c                 óø   •— t          | t          j        ¦  «        sd S  ‰|¦  «        r ‰|¦  «        sd S t          |¦  «        t          |¦  «        k    rd S |                      t          |¦  «        d¬¦  «        S )NrU  rV  )r”   r   r•   r    rW  )rÛ  rb   r¬   r  s      €r@   Útyperz%type_reshape_unchecked.<locals>.typer,  s|   ø€ Ý˜!�Uœ[Ñ)Ô)ð 	ØˆFØˆ{˜5Ñ!Ô!ð 	¨¨°WÑ)=Ô)=ð 	ØˆFÝˆu‰:Œ:�˜W™œÒ%Ð%ØˆFØ�vŠv�3˜u™:œ:¨cˆvÑ2Ô2Ð2rB   r�   )rz   r  r  s     @r@   Útype_reshape_uncheckedr  &  s5   ø€ ðBð Bð Bð3ð 3ð 3ð 3ð 3ð €LrB   c                 óœ  — |j         d         }|j        } t          |¦  «        | ||d         ¦  «        } t          |¦  «        | |¦  «        }t          j        ||d         ¦  «        }t          j        ||d         ¦  «        }	t          ||j        ||	|j        |j        ¬¦  «         | 	                    ¦   «         }
t          | |||
¦  «        S )Nr   rD   rÜ  r×  )ré   rë   ru   r
   rÀ   rÕ   r—   r­   r«   rñ   r   )rz   r:   rX   ré   r×   r=  rý   rö   rb   r¬   rõ   s              r@   Úimpl_shape_uncheckedr  8  sÉ   € àŒH�QŒK€EØŒO€Eà
�*�UÑ
Ô
˜G W¨d°1¬gÑ
6Ô
6€CØ
�*�UÑ
Ô
˜G WÑ
-Ô
-€CÝÔ  ¨$¨q¬'Ñ2Ô2€EÝÔ" 7¨D°¬GÑ4Ô4€Gå�3ØœØØ"ØœLØœ;ðñ ô ð ð �-Š-‰/Œ/€CÝ˜W g¨u°cÑ:Ô:Ð:rB   c                 óØ   ‡‡— |d t           j        fv rt          d„ ¦   «         Šnt          d„ ¦   «         Š|d t           j        fv rt          d¦  «        ‚t          d„ ¦   «         Šdˆˆfd„	}|S )Nc                 ó   — | j         S r?  r  ©rH  rb   s     r@   rh  zas_strided.<locals>.get_shapeQ  s	   € à”7ˆNrB   c                 ó   — |S r?  r�   r  s     r@   rh  zas_strided.<locals>.get_shapeU  s   € àˆLrB   z*as_strided() strides argument is mandatoryc                 ó   — |S r?  r�   )rH  r¬   s     r@   Úget_strideszas_strided.<locals>.get_strides`  s   € àˆNrB   c                 óR   •— t          |  ‰| |¦  «         ‰| |¦  «        ¦  «        } | S r?  )r  )rH  rb   r¬   rh  r"  s      €€r@   Úas_strided_implz#as_strided.<locals>.as_strided_impld  s1   ø€ Ý˜a  ¨1¨eÑ!4Ô!4°k°kÀ!ÀWÑ6MÔ6MÑNÔNˆØˆrB   rÊ  )r   r  r$   rO   )rH  rb   r¬   r$  rh  r"  s       @@r@   Ú
as_stridedr%  N  s»   øø€ à�•u”zÐ"Ð"Ð"Ý	ð	ð 	ñ 
Ô	ð	ð 	õ 
ð	ð 	ñ 
Ô	ð	ð �4�œÐ$Ð$Ð$õ
 "Ð"NÑOÔOÐOå	ð	ð 	ñ 
Ô	ð	ðð ð ð ð ð ð ð ÐrB   c                 óØ  ‡‡‡‡— t          |t          j        ¦  «        rYt          t	          | j        dz   ¦  «        ¦  «        Št          t	          | j        dz   ¦  «        ¦  «        Št          d„ ¦   «         ŠnÀt          |t          j        ¦  «        r’t          |j        t          j        ¦  «        rst          t	          | j        t          |¦  «        z   ¦  «        ¦  «        Št          t	          | j        t          |¦  «        z   ¦  «        ¦  «        Št          d„ ¦   «         Šnt          j        d¦  «        ‚t          |¦  «        rt          d„ ¦   «         Šn‰t          |t          j        ¦  «        rt          d„ ¦   «         Šn^t          |t          j        ¦  «        r0t          |j        t          j        ¦  «        rt          d„ ¦   «         Šnt          j        d¦  «        ‚d
ˆˆˆˆfd	„	}|S )NrD   c                 ó   — | fS r?  r�   ©Úwindow_shapes    r@   Úget_window_shapez-sliding_window_view.<locals>.get_window_shapeu  s
   € à �?Ð"rB   c                 ó   — | S r?  r�   r(  s    r@   r*  z-sliding_window_view.<locals>.get_window_shape~  s   € àÐrB   z4window_shape must be an integer or tuple of integersc                 ó:   — t          t          |¦  «        ¦  «        S r?  )r¼   r5   ©r)  rÝ   rm   s      r@   Úget_axisz%sliding_window_view.<locals>.get_axis‰  s   € å�˜d™œÑ$Ô$Ð$rB   c                 ó(   — t          dd||¦  «        gS )NÚsliding_window_viewrÝ   ©rÞ   r-  s      r@   r.  z%sliding_window_view.<locals>.get_axisŽ  s    € õ Ð4°f¸dÀDÑIÔIðð rB   c                 ó    ‡— ˆfd„|D ¦   «         S )Nc                 ó4   •— g | ]}t          d d‰|¦  «        ‘ŒS )r0  rÝ   r1  )rž   rÛ  rm   s     €r@   rŸ   z9sliding_window_view.<locals>.get_axis.<locals>.<listcomp>˜  s8   ø€ ð #ð #ð #Øõ #Ð#8¸&À$ÈÑJÔJð #ð #ð #rB   r�   r-  s     `r@   r.  z%sliding_window_view.<locals>.get_axis–  s.   ø€ ð#ð #ð #ð #Ø!ð#ñ #ô #ð #rB   z2axis must be None, an integer or tuple of integersc                 ó¤  •—  ‰|¦  «        } ‰
||| j         ¦  «        }t          |¦  «        t          |¦  «        k    rt          d¦  «        ‚‰}‰}t          | j         ¦  «        D ]:}t	          ||| j        |         ¦  «        }t	          ||| j        |         ¦  «        }Œ;| j         }t          ||¦  «        D ]†\  }}|dk     rt          d¦  «        ‚||         |k     rt          d¦  «        ‚||         |z
  dz   }t	          |||¦  «        }t	          |||¦  «        }t	          ||| j        |         ¦  «        }|dz  }Œ‡t          | ||¦  «        }	|	S )Nz2Must provide matching length window_shape and axisr   z-`window_shape` cannot contain negative valuesz4window_shape cannot be larger than input array shaperD   )	rm   r    r¸   r5   r,   rb   r¬   r¡   r  )rH  r)  rÝ   Ú	out_shapeÚout_stridesrj   r-  rs  Útrimmedr6  r.  r*  Úshape_bufferÚstride_buffers             €€€€r@   Úsliding_window_view_implz5sliding_window_view.<locals>.sliding_window_view_impl   s†  ø€ Ø'Ð'¨Ñ5Ô5ˆØˆx˜ d¨A¬FÑ3Ô3ˆÝˆ|ÑÔ¥ D¡	¤	Ò)Ð)ÝØDñô ð ð
 !ˆ	Ø#ˆÝ�q”v‘”ð 	Fð 	FˆAÝ% i°°A´G¸A´JÑ?Ô?ˆIÝ'¨°Q¸¼	À!¼ÑEÔEˆKˆKð ŒFˆÝ˜4 Ñ.Ô.ð 	ð 	‰GˆB�Ø�QŠwˆwÝ ØCñô ð ð ˜Œ}˜sÒ"Ð"Ý ØJñô ð ð   ”m cÑ)¨AÑ-ˆGÝ% i°°WÑ=Ô=ˆIÝ% i°°CÑ8Ô8ˆIÝ'¨°Q¸¼	À"¼ÑFÔFˆKØ�‰FˆAˆAõ !  I¨{Ñ;Ô;ˆØˆrB   r?  )r”   r   r–   r»   r5   rm   r$   r�  rx   r    r	   rä   r   )rH  r)  rÝ   r:  r.  r*  r8  r9  s       @@@@r@   r0  r0  k  s   øøøø€ õ �,¥¤Ñ.Ô.ð 
Ý�U 1¤6¨A¡:Ñ.Ô.Ñ/Ô/ˆÝ�e A¤F¨Q¡JÑ/Ô/Ñ0Ô0ˆå	ð	#ð 	#ñ 
Ô	ð	#ð 	#õ �\¥5¤>Ñ
2Ô
2ð 
Ý�|Ô)­5¬=Ñ9Ô9ð
å�U 1¤6­C°Ñ,=Ô,=Ñ#=Ñ>Ô>Ñ?Ô?ˆÝ�e A¤F­S°Ñ->Ô->Ñ$>Ñ?Ô?Ñ@Ô@ˆå	ð	 ð 	 ñ 
Ô	ð	 ð 	 õ Ô ØBñ
ô 
ð 	
õ
 �4ÑÔð 
Ý	ð	%ð 	%ñ 
Ô	ð	%ð 	%õ 
�D�%œ-Ñ	(Ô	(ð 
Ý	ð	ð 	ñ 
Ô	ð	ð 	õ
 �T�5œ>Ñ
*Ô
*ð 

Ý�t”z¥5¤=Ñ1Ô1ð

å	ð	#ð 	#ñ 
Ô	ð	#ð 	#õ
 Ô Ø@ñ
ô 
ð 	
ð%ð %ð %ð %ð %ð %ð %ð %ð %ðN $Ð#rB   c                 óD   — t          | t          j        ¦  «        rd„ }|S d S )Nc                 ó˜   — | j         dk    rdS | j         dk    r"t          |                      d¦  «        ¦  «        S d}t          |¦  «        ‚)Nr   FrD   z[The truth value of an array with more than one element is ambiguous. Use a.any() or a.all())r�   rJ  r+  r¸   )r  rÍ   s     r@   rã   zol_bool.<locals>.implÍ  sH   € ØŒx˜1Š}ˆ}Ø�uØ”˜Q’�Ý˜CŸHšH Q™KœKÑ(Ô(Ð(ð>�å  ‘o”oÐ%rB   r@  r`  s     r@   Úol_boolr=  Ê  s6   € å�#•u”{Ñ#Ô#ð 
ð	&ð 	&ð 	&ð ˆð
ð 
rB   c                 óŒ  ‡‡— t          |t          t          j        f¦  «        st	          j        d¦  «        ‚t          |t          t          j        f¦  «        st	          j        d¦  «        ‚t          | t          j        ¦  «        st	          j        d¦  «        ‚| j        Št          t          ‰¦  «        ¦  «        Šˆˆfd„}|S )Nz.The second argument "axis1" must be an integerz-The third argument "axis2" must be an integerz'The first argument "a" must be an arrayc                 óæ   •— t          dd‰|¦  «        }t          dd‰|¦  «        }|dk     r|‰z  }|dk     r|‰z  }t          ‰||¦  «        }t          |||¦  «        }t          j        | |¦  «        S )Nznp.swapaxesÚaxis1Úaxis2r   )rÞ   r,   ru  rñ  )rÛ  r@  rA  Ú
axes_tupleÚ	axes_listrm   s       €€r@   rã   znumpy_swapaxes.<locals>.implè  sƒ   ø€ Ý˜}¨g°t¸UÑCÔCˆÝ˜}¨g°t¸UÑCÔCˆð �1Š9ˆ9Ø�T‰MˆEØ�1Š9ˆ9Ø�T‰MˆEå" 9¨e°UÑ;Ô;ˆ
Ý" :¨u°eÑ<Ô<ˆ
ÝŒ|˜A˜zÑ*Ô*Ð*rB   )
r”   r½   r   r–   r	   rä   r•   rm   r»   r5   )rÛ  r@  rA  rã   rC  rm   s       @@r@   Únumpy_swapaxesrD  Ù  sÒ   øø€ å�e�c¥5¤=Ð1Ñ2Ô2ð ,ÝÔ ð "+ñ ,ô ,ð 	,å�e�c¥5¤=Ð1Ñ2Ô2ð ,ÝÔ ð "+ñ ,ô ,ð 	,å�a�œÑ%Ô%ð LÝÔ Ð!JÑKÔKÐKð Œ6€DÝ•e˜D‘k”kÑ"Ô"€Ið+ð +ð +ð +ð +ð +ð €KrB   c                 ó~  — t          dd| j        |¦  «        }t          | j        ¦  «        }d||<   t	          t          ||j        ¦  «        ¦  «        D ]B\  }\  }}	|dk    r|	}
n |	dk    r|}
n||	k    rt          d¦  «        ‚|}
t          |||
¦  «        }ŒCt          ||| j        |         ¦  «        }t          j	        | |¦  «        } t          j	        ||¦  «        }|}t          |¦  «        dk    r;t          t          |¦  «        ¦  «        D ]}t          ||| j        |         ¦  «        }Œ|}t          |¦  «        dk    rAt          t          |¦  «        ¦  «        D ]$}t          ||| j        |dz   |z            ¦  «        }Œ%|j        |         }t          j        ||fz   |z   | j        ¦  «        }t          d d d ¦  «        f}t          j        |¦  «        D ]f}t          j        |¦  «        D ]O}| ||z   |z            }|||z   |z            }|||z   |z            }t          |¦  «        D ]}|||                  ||<   ŒŒPŒg|S )Nznp.take_along_axisrÝ   rD   z*`arr` and `indices` dimensions don't matchr   )rÞ   rm   r¼   rb   r’  r¡   r¸   r,   ru  r{  r    r5   r×  rx   r0  ru  )r  r£   rÝ   ÚNi_origÚNk_origÚindices_broadcast_shapeÚ	arr_shaperj   Úd1Úd2Únew_valÚarr_broadcast_shapeÚNiÚNkÚJrö   Únp_s_ÚiiÚkkÚa_1dÚ
indices_1dÚout_1dr(  s                          r@   Ú_take_along_axis_implrW  ù  sy  € õ Ð.°¸¼À$ÑGÔG€Dõ �S”Y‘”€IØ€Iˆd�OÝ ¥ Y°´Ñ!>Ô!>Ñ?Ô?ð 
ð 
‰ˆ‰8ˆB�Ø�Š7ˆ7ØˆGˆGØ�1ŠWˆWØˆGˆGà�RŠxˆxÝ Ø@ñô ð ð ˆGÝ"/Ø# Q¨ñ#
ô #
ÐÐõ (Ø  s¤y°¤ñô Ðõ Œ/˜#Ð2Ñ
3Ô
3€CÝŒo˜gÐ'>Ñ?Ô?€Gà	€BÝ
ˆ7�|„|�aÒÐÝ•s˜2‘w”w‘”ð 	4ð 	4ˆAÝ˜r 1 c¤i°¤lÑ3Ô3ˆBˆBØ	€BÝ
ˆ7�|„|�aÒÐÝ•s˜2‘w”w‘”ð 	?ð 	?ˆAÝ˜r 1 c¤i°°q±¸1±Ô&=Ñ>Ô>ˆBˆBàŒ�dÔ€AÝ
Œ(�2˜˜‘9˜r‘> 3¤9Ñ
-Ô
-€Cå�4˜˜tÑ$Ô$Ð&€EåŒj˜‰nŒnð 0ð 0ˆÝ”*˜R‘.”.ð 	0ð 	0ˆBØ�r˜E‘z B‘Ô'ˆDØ   e¡¨b¡Ô1ˆJØ˜˜e™ b™Ô)ˆFÝ˜1‘X”Xð 0ð 0�Ø  ¨A¤Ô/��q‘	�	ð0ð		0ð €JrB   c                 óŠ  ‡‡‡— t          | t          j        ¦  «        st          j        d¦  «        ‚t          |t          j        ¦  «        st          j        d¦  «        ‚t          |j        t          j        ¦  «        st          j        d¦  «        ‚t          |¦  «        rd}n| j        }||j        k    rt          j        d¦  «        ‚t          t          |j        ¦  «        ¦  «        Št          |¦  «        rˆfd„}nÂt          |d¦  «         t          |t          j        ¦  «        st          j        d¦  «        ‚|j        }|d	k     r
| j        |z   }|d	k     s|| j        k    rt          j        d
¦  «        ‚t          t          |¦  «        ¦  «        Št          t          |dz   | j        ¦  «        ¦  «        Šˆˆˆfd„}|S )Nz)The first argument "arr" must be an arrayz.The second argument "indices" must be an arrayz'The indices array must contain integersrD   z;`indices` and `arr` must have the same number of dimensionsc                 óP   •— t          |                      ¦   «         |ddd‰¦  «        S )Nr   r�   )rW  rf  )r  r£   rÝ   rH  s      €r@   Útake_along_axis_implz1arr_take_along_axis.<locals>.take_along_axis_implJ  s-   ø€ Ý(¨¯ª©¬¸ÀÀBÈØ)@ñBô Bð BrB   rÝ   zaxis must be a literal valuer   zaxis is out of boundsc                 ó,   •— t          | ||‰‰‰¦  «        S r?  )rW  )r  r£   rÝ   rN  rO  rH  s      €€€r@   rZ  z1arr_take_along_axis.<locals>.take_along_axis_impl[  s%   ø€ Ý(¨¨g°t¸RÀØ)@ñBô Bð BrB   )r”   r   r•   r	   rä   rx   r–   r   rm   r»   r5   r   r}  r"  rå   )r  r£   rÝ   Úarr_ndimrZ  rN  rO  rH  s        @@@r@   Úarr_take_along_axisr]  5  sò  øøø€ å�c�5œ;Ñ'Ô'ð NÝÔ Ð!LÑMÔMÐMÝ�g�uœ{Ñ+Ô+ð >ÝÔ Ø<ñ>ô >ð 	>å�g”m¥U¤]Ñ3Ô3ð LÝÔ Ð!JÑKÔKÐKÝ�4ÑÔð Øˆˆà”8ˆØ�7”<ÒÐåÔ ØIñ
ô 
ð 	
õ $¥E¨'¬,Ñ$7Ô$7Ñ8Ô8ÐÝ�4ÑÔð Bð	Bð 	Bð 	Bð 	Bð 	Bð 	Bõ 	˜˜vÑ&Ô&Ð&Ý˜$¥Ô 4Ñ5Ô5ð 	IÝÔ(Ð)GÑHÔHÐHØÔ!ˆØ�!Š8ˆ8Ø”8˜d‘?ˆDà�!Š8ˆ8�t˜sœxÒ'Ð'ÝÔ(Ð)@ÑAÔAÐAå•5˜‘;”;ÑÔˆÝ•5˜ ™ 3¤8Ñ,Ô,Ñ-Ô-ˆð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð  ÐrB   Tç        c                 ób  — t          | t          j        ¦  «        rqt          | t          j        ¦  «        rdd„}nõt          | t          j        ¦  «        rdd„}nÖt          | t          j        ¦  «        rdd„}n·t          j        d¦  «        ‚t          | ¦  «        r€t          | j	        t          j        ¦  «        rdd„}npt          | j	        t          j        ¦  «        rdd„}nLt          | j	        t          j        ¦  «        rdd	„}n(t          j        d¦  «        ‚t          j        d
¦  «        ‚|S )NTr^  c                 ó   — | S r?  r�   ©rH  rW  Únans      r@   rã   znan_to_num_impl.<locals>.implf  ó   € Ø�rB   c                 ó  — t          j        | ¦  «        r|S t          j        | ¦  «        r&t          j        t	          | ¦  «        ¦  «        j        S t          j        | ¦  «        r&t          j        t	          | ¦  «        ¦  «        j        S | S r?  )ru  rè  ÚisneginfÚfinfor6   rv  Úisposinfr–  ra  s      r@   rã   znan_to_num_impl.<locals>.implj  sn   € Ý”8˜A‘;”;ð 1Ø�JÝ”[ ‘^”^ð 1Ýœ8¥D¨¡G¤GÑ,Ô,Ô0Ð0Ý”[ ‘^”^ð 1Ýœ8¥D¨¡G¤GÑ,Ô,Ô0Ð0Ø�rB   c                 óŽ   — t          j        | j        |¬¦  «        }t          j        | j        |¬¦  «        }t	          ||¦  «        S )N)rb  )ru  Ú
nan_to_numr  r  Úcomplex)rH  rW  rb  rˆ  r¯  s        r@   rã   znan_to_num_impl.<locals>.impls  s<   € Ý”M !¤&¨cÐ2Ñ2Ô2�Ý”M !¤&¨cÐ2Ñ2Ô2�Ý˜q !‘}”}Ð$rB   z4Only Integer, Float, and Complex values are acceptedc                 ó   — | S r?  r�   ra  s      r@   rã   znan_to_num_impl.<locals>.impl  rc  rB   c                 óÐ  — t          j        | j        ¦  «        j        }t          j        | j        ¦  «        j        }t          j        | ¦  «        }|rt          j        |¦  «        n|}|j        }t          |j	        ¦  «        D ]a}t          j
        ||         ¦  «        r|||<   Œ"t          j        ||         ¦  «        r|||<   ŒBt          j        ||         ¦  «        r|||<   Œb|S r?  )ru  rf  rx   rv  r–  rv  rW  r¹  r5   r�   rè  re  rg  )	rH  rW  rb  Úmin_infÚmax_infÚx_ÚoutputÚoutput_flatrj   s	            r@   rã   znan_to_num_impl.<locals>.impl‚  sÔ   € Ýœ( 1¤7Ñ+Ô+Ô/�Ýœ( 1¤7Ñ+Ô+Ô/�å”Z ‘]”]�Ø(,Ð4�œ ™œ˜°"�à$œk�Ý˜vœ{Ñ+Ô+ð 1ð 1�AÝ”x ¨A¤Ñ/Ô/ð 1Ø),˜ A™˜Ýœ [°¤^Ñ4Ô4ð 1Ø)0˜ A™˜Ýœ [°¤^Ñ4Ô4ð 1Ø)0˜ A™øØ�rB   c                 óÎ   — t          j        | ¦  «        }|rt          j        |¦  «        n|}t          j        |j        d|¬¦  «         t          j        |j        d|¬¦  «         |S )NF)rW  rb  )ru  rv  rW  ri  r  r  )rH  rW  rb  ro  rp  s        r@   rã   znan_to_num_impl.<locals>.impl“  s\   € Ý”Z ‘]”]�Ø(,Ð4�œ ™œ˜°"�å”˜fœk°¸3Ð?Ñ?Ô?Ð?Ý”˜fœk°¸3Ð?Ñ?Ô?Ð?Ø�rB   z4The first argument must be a scalar or an array-like©Tr^  )
r”   r   r   r–   r>  r  r	   rä   r   rx   )rH  rW  rb  rã   s       r@   Únan_to_num_implrt  a  s—  € å�!•U”\Ñ"Ô"ð =/Ý�a�œÑ'Ô'ð 	ðð ð ð ð õ ˜�5œ;Ñ'Ô'ð 	ðð ð ð ð õ ˜�5œ=Ñ)Ô)ð 	ð%ð %ð %ð %ð %õ
 Ô$ØFñô ð õ 
˜!Ñ	Ô	ð $/Ý�a”g�uœ}Ñ-Ô-ð  	ðð ð ð ð å˜œ¥¤Ñ-Ô-ð 	ðð ð ð ð õ  ˜œ¥¤Ñ/Ô/ð 	ðð ð ð ð õ Ô$ØFñô ð õ Ô ð ".ñ /ô /ð 	/à€KrB   r?  r  r�  r©  rœ  )FrÊ  rs  (¨  ro  r9  rJ  r¦  Úllvmliter   Úllvmlite.irr   Únumpyru  Únumbar   r   Ú
numba.corer   r   r	   r
   r   Únumba.np.numpy_supportr   r   r   r   r   r   r   r   r   r   r   Únumba.core.imputilsr   r   r   r   r   r   r   r   r   r    r!   Únumba.core.typingr"   Únumba.core.typesr#   Únumba.core.extendingr$   r%   r&   r'   r(   Ú
numba.miscr)   r*   Únumba.cpythonr+   Únumba.cpython.unsafe.tupler,   r-   r.   Únumba.core.typing.npydeclr/   r×  r0   rØ  r1   r2   r3   rA   rF   ru   r|   rƒ   r‡   r’   rš   r¤   rÕ   rØ   rÞ   ræ   rû   r÷   r  ÚArrayIteratorÚBORROWEDr  r3  rü   r9  r§  r–   r   r<  rI  rG  rT  ÚAnyrN  r    rS  r•   rZ  r]  r9  r_  rq  r�  rš  r¦  r»  rÎ  rD  r  r  r  r  r  r5  r@  rS  r[  rd  ri  rs  rx  r{  r…  r‹  Úbroadcast_shapesrš  rt  r£  rK  rÇ  rË  rÎ  rê  ÚVarArgrí  rñ  r÷  rÉ  r  r  Ú	geomspacer  Úrot90r#  r3  r;  rC  rE  rH  rJ  ÚresizerW  rf   r`  ri  rN  rn  rq  r  r„  r¦  r¥  rª  rÃ  rb   rÈ  ÚuniquerÑ  râ  rà  rÖ  ræ  rí  rï  rý  r  r  r
  Ú
MemoryViewr  r  r  r  r  r  r  r   r%  r(  r.  r+  r1  r·  r’  r5  r<  r@  r>  rB  rD  rK  rO  rI  ra  re  ÚDTypeÚNumberClassrj  rz  r}  rp  r‡  rŒ  r�  r}  r”  rœ  rž  r¢  r¨  ÚBytesr¬  Úis_r³  r·  r½  rÂ  rÎ  rÐ  r:  rE  r»  ro  rk  rq  rt  rv  rx  r¿  r|  rz  r~  ru  rƒ  r†  r‚  rˆ  rÕ  rŠ  ÚNumpyNdIterTyperŒ  rõ  r§  r”  r¥  rº  r¾  rM  rÄ  rÎ  r×  rÓ  rÚ  rÞ  rs  rá  rä  rè  rO  rí  rï  rò  rô  rù  rû  rÿ  r‘  r  r  r  r  r
  r  r  Úeyer  Údiagr#  Údiagflatr*  r+  r9  rF  Úaranger[  rþ  rc  rg  ri  rk  rW  ro  r}  r�  r„  rŠ  r�  r�  r’  r   r¢  r¤  r®  r³  r¬  r¸  rÂ  rÇ  rÎ  rÕ  rÛ  rÞ  râ  rÇ   rå  rê  rñ  rô  rø  rû  rþ  r  r  Ú
atleast_1dr  Ú
atleast_2dr  Ú
atleast_3dr  r*  r?  rJ  rM  rQ  rQ  rW  rY  ra  Úcolumn_stackrf  rh  rl  Ústackro  rr  rz  rƒ  r~  rˆ  Úvstackr‹  r“  Údstackr–  r›  r¡  r   r§  r!  rª  r¸  Úflipr¼  r¿  rÑ  rÔ  rÖ  Úvsplitrß  Úhsplitrã  Údsplitræ  rî  ré  r÷  rý  rÌ  r  Úargsortr  r
  ÚUnicodeCharSeqr>  r  rÒ  ÚNPTimedeltaÚ
NPDatetimer  r  r  Útype_callabler  r  ÚlibÚstride_tricksr%  r0  rJ  r=  r  rD  rW  Útake_along_axisr]  ri  rt  r�   rB   r@   ú<module>r©     s(  ððð ð
 Ð Ð Ð Ø €€€Ø €€€à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @ðFð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð Fð PÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ Oð*ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð (Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *ðAð Að Að Að Að Að Að Að Að Að Að Að Að Aà +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ø !Ð !Ð !Ð !Ð !Ð !Ø LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ 5Ð 5Ð 5Ð 5Ð 5Ð 5ðEð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð#ð #ð #ð6ð 6ð 6ð9ð 9ð 9ðx(ð (ð (ð-ð -ð -ðMð Mð Mð	ð 	ð 	ð
ð 
ð 
ð
 ð 
 ð 
 ð ñBð Bð Bð BðJHð Hð Hð& ð  ð  ð
 
€ˆ.ÑÔðð ñ Ôðð, €ˆy˜%œ,Ñ'Ô'ðð ñ (Ô'ðð.;ð ;ð ;ð* €ˆz˜5Ô.Ñ/Ô/Ø€ˆwÔÑ Ô ð-ð -ñ !Ô ñ 0Ô/ð-ð6  $ñA4ð A4ð A4ð A4ðHð ð ð ;ð ;ð ;ð* €ˆxÔ ¤¨u¬}Ñ=Ô=Ø€ˆxÔ ¤¨u¬Ñ?Ô?ðEð Eñ @Ô?ñ >Ô=ðEð €ˆxÔ ¤¨u¬Ñ?Ô?ðEð Eñ @Ô?ðEð0 €ˆxÔ ¤¨u¬y¸%¼)ÑDÔDð%6ð %6ñ EÔDð%6ðP €ˆs�E”LÑ!Ô!ðFð Fñ "Ô!ðFð €ˆ|˜Uœ[Ñ)Ô)ð8ð 8ñ *Ô)ð8ð €ˆ ¤¨U¬YÑ7Ô7ð%ð %ñ 8Ô7ð%ð(/"ð /"ð /"ð /"ð /"ˆfñ /"ô /"ð /"ðd/-ð /-ð /-ð /-ð /-�Gñ /-ô /-ð /-ðdð ð ð ð �Wñ ô ð ð>:-ð :-ð :-ð :-ð :-˜'ñ :-ô :-ð :-ðzN-ð N-ð N-ð N-ð N-˜'ñ N-ô N-ð N-ðbB-ð B-ð B-ð B-ð B-�7ñ B-ô B-ð B-ðJLð Lð Lð Lð L�6ñ Lô Lð Lð^(Gð (Gð (GðV €ˆxÔ ¤¨u¬{Ñ;Ô;ð;ð ;ñ <Ô;ð;ð&'ð 'ð 'ðTð ð ðHð Hð Hð
ð 
ð 
ð:$ð :$ð :$ðz"ð "ð "ðJ!ð !ð !ð. ð  ð  ð4 ðð ñ „ðð, ðð ñ „ðð" ð5ð 5ñ Ôð5ð>-ð -ð -ð 
€ˆ"Œ/ÑÔð'&ð '&ñ Ôð'&ðT ð3ð 3ñ Ôð3ð  
€ˆ"Ô
ÑÔð%ð %ñ Ôð%ðP 
€ˆ"Ô
ÑÔð6ð 6ñ Ôð6ðrF%ð F%ð F%ðXð ð ð& €Ð  %¤+Ñ.Ô.ð;ð ;ñ /Ô.ð;ð
ð 
ð 
ð €Ð  %¤+¨u¬Ñ?Ô?ð3Eð 3Eñ @Ô?ð3Eðl €Ð  %¤+¨|¨u¬|¸E¼IÑ/FÔ/FÑGÔGðFð Fñ HÔGðFð
 
€ˆ"Œ,ÑÔñð ð ñ Ôðð €ˆuŒ{˜CÑ Ô ð9ð 9ñ !Ô ð9ð& 
€ˆ"Œ+ÑÔñð ð ñ Ôðð 
€ˆ"Œ,ÑÔñCð Cð Cñ ÔðCðL 
€ˆ"Œ(ÑÔñð ð ñ Ôðð4!ð !ð !ðH;ð ;ð ;ð< €ˆ ¤¨U¬_Ñ=Ô=ð=Eð =Eñ >Ô=ð=Eð@ €ˆ ¤¨\¨U¬\¸%¼)Ñ-DÔ-DÑEÔEð>ð >ñ FÔEð>ð
 
€ˆ"Œ*ÑÔðð ñ Ôðð 
€ˆ"Œ)ÑÔð+ð +ñ Ôð+ð\ 
€ˆ"Œ)ÑÔñð ð ñ Ôðð2 €ˆ}˜eœkÑ*Ô*ðð ñ +Ô*ðð, €ˆrŒx˜œÑ%Ô%ðGð Gñ &Ô%ðGð €ˆ ¤Ñ,Ô,ðð ñ -Ô,ðð ð
ð 
ñ Ôð
ð ðð ñ Ôðð 
€ˆ"Œ'ÑÔñvð vð vñ Ôðvðr €�”˜fÑ%Ô%ñð ð ñ &Ô%ðð{ð {ð {ð| 
€ˆ"Œ(ÑÔðð ñ Ôðð 
€ˆ"Œ)ÑÔðð ñ Ôðð 
€ˆ"Œ)ÑÔð)1ð )1ñ Ôð)1ðX ðð ñ Ôðð" €Ô˜5œ;¨Ñ1Ô1ðð ñ 2Ô1ðð ðð ñ „ðð	ð 	ð 	ð 
€Ð
 9Ð-Ñ-Ô-ð(ð (ñ .Ô-ð(ðV €ˆ|˜Uœ[¨%¬/Ñ:Ô:ð$Eð $Eñ ;Ô:ð$EðT €ˆuŒ{˜GÑ$Ô$ð:ð :ñ %Ô$ð:ð
 €ˆuŒ{˜GÑ$Ô$Ø€ˆuÔ Ñ)Ô)ð:ð :ñ *Ô)ñ %Ô$ð:ð €ˆuŒ{˜IÑ&Ô&Ø€ˆuÔ Ñ+Ô+ð:ð :ñ ,Ô+ñ 'Ô&ð:ð €ˆuŒ{˜FÑ#Ô#Ø€ˆuÔ Ñ(Ô(ð:ð :ñ )Ô(ñ $Ô#ð:ð
 €ˆuŒ{˜FÑ#Ô#ð:ð :ñ $Ô#ð:ð €ˆuŒ{˜JÑ'Ô'Ø€ˆuÔ Ñ,Ô,ð:ð :ñ -Ô,ñ (Ô'ð:ð €ˆuŒ{˜HÑ%Ô%Ø€ˆuÔ Ñ*Ô*ð:ð :ñ +Ô*ñ &Ô%ð:ð €ˆuÔ Ñ.Ô.ð:ð :ñ /Ô.ð:ð
 €ˆuÔ Ñ0Ô0ð:ð :ñ 1Ô0ð:ð
 €ˆuÔ Ñ0Ô0ð:ð :ñ 1Ô0ð:ð
 €ˆuÔ Ñ,Ô,ð:ð :ñ -Ô,ð:ð €ˆuŒ{˜HÑ%Ô%ð	9ð 	9ñ &Ô%ð	9ð €ˆuÔ  &Ñ)Ô)ð:ð :ñ *Ô)ð:ð €ˆEÔ˜uœ~Ñ.Ô.Ø€ˆEÔ˜uœ}Ñ-Ô-ð;ð ;ñ .Ô-ñ /Ô.ð;ðð ð ð4 €ˆuŒ{˜GÑ$Ô$ð8ð 8ñ %Ô$ð8ð €ˆuÔ Ñ.Ô.Ø€ˆuÔ Ñ0Ô0ð	:ð 	:ñ 1Ô0ñ /Ô.ð	:ð €ˆuÔ Ñ0Ô0ð
:ð 
:ñ 1Ô0ð
:ð  €ˆuŒ{˜FÑ#Ô#ðQð Qñ $Ô#ðQð €ˆuŒ{˜FÑ#Ô#ðQð Qñ $Ô#ðQð 4Mð 4Mð 4Mðn €�”˜fÑ%Ô%Ø€�”˜kÑ*Ô*ðð ñ +Ô*ñ &Ô%ðð%ð %ð %ð
 #€€ˆeŒk˜6Ñ "Ô " :Ñ .Ô .Ð .Ø "€€ˆeŒk˜6Ñ "Ô " :Ñ .Ô .Ð .ð €Ð Ô!2°E´IÑ>Ô>ð(ð (ñ ?Ô>ð(ð. Ð�u”{Ñ#Ô#ð4;ð 4;ñ $Ô#ð4;ðn €Ð ¤¨eÔ.AÑBÔBðOð Oñ CÔBðOð Ð�u”|Ñ$Ô$ð$=ð $=ñ %Ô$ð$=ðN Ð�u”|Ñ$Ô$ðDð Dñ %Ô$ðDð: €Ð ¤¨uÔ/BÑCÔCðAð Añ DÔCðAð €Ð ¤¨uÔ/CÑDÔDðEð Eñ EÔDðEð €Ð ¤¨uÔ/BÀEÄIÑNÔNð	%ð 	%ñ OÔNð	%ð €Ð ¤¨uÔ/CÀUÄYÑOÔOð
%ð 
%ñ PÔOð
%ð" €�”ÑÔð;ð ;ñ Ôð;ð €�”ÑÔð3ð 3ñ Ôð3ð €�”ÑÔð9ð 9ñ Ôð9ð €ˆxŒ|˜Uœ[¨%¬+Ñ6Ô6ð
Gð 
Gñ 7Ô6ð
Gð  Ð�E”K Ñ,Ô,ðð ñ -Ô,ðð9ð 9ð 9ð>ð >ð >ð IMØ6:ñ#ð #ð #ð #ðD '+ñOð Oð Oð OðEð Eð EðP
>ð >ð >ðBTð Tð Tðn €ˆuŒ{˜FÑ#Ô#ðPð Pñ $Ô#ðPð €ˆz˜5Ô.Ñ/Ô/Ø€ˆwÔÑ Ô ðEð Eñ !Ô ñ 0Ô/ðEð €ˆxÔ Ô!4°e´mÑDÔDðEð Eñ EÔDðEð €ˆxÔ Ô!4°e´mØŒyñô ð%ð %ñô ð%ð €ˆs�EÔ'Ñ(Ô(ðð ñ )Ô(ðð €ˆrŒ~˜uœ{Ñ+Ô+ðEð Eñ ,Ô+ðEð" €ˆz˜5Ô5Ñ6Ô6Ø€ˆwÔÑ Ô ðCð Cñ !Ô ñ 7Ô6ðCð €ˆx˜˜œ e¤mÑ4Ô4Ñ5Ô5Ø€ˆrŒz˜<˜5œ<¨¬Ñ6Ô6Ñ7Ô7ð
Eð 
Eñ 8Ô7ñ 6Ô5ð
Eð €ˆx˜œÑ)Ô)Ø€ˆrŒz˜5œ?Ñ+Ô+ðEð Eñ ,Ô+ñ *Ô)ðEð* €ˆz˜5Ô1Ñ2Ô2Ø€ˆwÔÑ Ô ð7ð 7ñ !Ô ñ 3Ô2ð7ð €ˆrŒy˜%œ)Ñ$Ô$ð>ð >ñ %Ô$ð>ð& €ˆz˜5Õ0Ñ1Ô1Ø€ˆwÔÑ Ô ð7ð 7ñ !Ô ñ 2Ô1ñ7ðLð Lñ Lð^ Ð�e”k ;Ñ/Ô/ðð ñ 0Ô/ñð*ð *ñ *ð ð
ð 
ñ „ñ
ð-ð -ñ -ð`Kð Kñ Kð#ð #ñ #ð&ð &ñ &ð ðð ñ „ñð 
€ˆ"�(ÑÔÙ"ð &ð &ð &ñ Ôñ&ð* ðð ñ „ñð 
€ˆ"�-ÑÔñð ð ñ Ôñð0 ðð ñ „ñð €�”˜lÑ+Ô+ðð ñ ,Ô+ñð 
€ˆ"�(ÑÔÙ"ð ð ð ñ Ôñð 
€ˆ"�-ÑÔñð ð ñ Ôñð 
€ˆ"�,ÑÔñ
ð 
ð 
ñ Ôñ
ð 
€ˆ"�'ÑÔñð ð ñ Ôñð  
€ˆ"�,ÑÔñ
ð 
ð 
ñ Ôñ
ð 
€ˆ"�'ÑÔñð ð ñ Ôñð 
€ˆ"�+ÑÔñð ð ñ Ôñð	ð 	ñ 	ð €ÔÑ%Ñ&Ô&ðð ñ 'Ô&ñð €Ô�B•FÑÔØ˜1¡Eð ð ð ñ Ôñð2 
€ˆ"�'ÑÔñ#ð #ð #ñ Ôñ#ðL 
€ˆ"�+ÑÔñð ð ñ Ôñð2 
€ˆ"�'ÑÔØ€�”˜fÑ%Ô%ð+ð +ñ &Ô%ñ Ôñ+ð\ð ñ ð4 
€ˆ"�)ÑÔñ@ð @ð @ñ Ôñ@ðF 
€ˆ"�+ÑÔñ$ð $ð $ñ Ôñ$ðN"Pð "Pñ "PðJ ðð ñ „ñð €ˆ|˜Uœ[Ñ)Ô)ð4ð 4ñ *Ô)ñ4ð 
€ˆ"�'ÑÔðð ñ Ôñð><ð ><ñ ><ðB ð?ð ?ñ „ñ?ð 
€ˆ"Õ
ÑÔð
ð 
ñ  Ôñ
ð 
€ˆ"Õ
ÑÔðð ñ Ôñð €ˆ~˜uœ{¨E¬OÑ<Ô<Ø€ˆ~˜uœ{¨EÔ,?Ñ@Ô@ðPð Pñ AÔ@ñ =Ô<ñPð: ð(ð (ñ „ñ(ðV 
€ˆ"�-ÑÔÙ%*ð ð ð ñ Ôñð6 
€ˆ&ÑÔñð ð ñ Ôñð 
€ˆ&ÑÔñð ð ñ Ôñð!ð !ñ !ðH1Dð 1Dñ 1Dñhð ñ ñð ñ ñ"ð ñ ñ<&'ð &'ñ &'ñR&#ð &#ñ &#ñR)ð )ñ )ð ñð ñ „ñð2 
€ˆ"�(ÑÔññ ð ñ Ôññð ñ ñ&?ð ?ñ ?ñ:@ð @ñ @ñ:ð ñ ð8 ñð ñ „ñð  
€ˆ"�.ÑÔñð ñ Ôññ%ð %ñ %ñ2ð ñ ð. 
€ˆ"�-ÑÔñ#ð #ñ Ôñ#ð
 
€ˆ"�-ÑÔñ&ð &ñ Ôñ&ð
 
€ˆ"�-ÑÔñ)ð )ñ Ôñ)ñ
:ð :ñ :ñz/Fð /Fñ /FñdVFð VFñ VFñr,ð ,ñ ,ð" ñð ñ „ñð  
€ˆ"�.ÑÔññ ð ñ Ôññð ñ ð ñ"ð "ñ „ñ"ðJ 
€ˆ"�/ÑÔñð ñ Ôññð ñ ð ñð ñ „ñð 
€ˆ"�(ÑÔññ ð ñ Ôññð ñ ð ñð ñ „ñð4 
€ˆ"�)ÑÔñð ñ Ôñð ñð ñ „ñð4 
€ˆ"�)ÑÔñð ñ Ôñð ñ&ð &ñ „ñ&ðR 
€ˆ"�)ÑÔñð ñ Ôñð €Ô˜5œ;©Ñ/Ô/ñð ñ 0Ô/ñð €Ô˜5œ;©Ñ.Ô.ñð ñ /Ô.ñð 
€ˆ"�)ÑÔñð ñ Ôñð  
€ˆ"�)ÑÔñð ñ Ôñð  ñð ñ „ñð: 
€ˆ"�'ÑÔñ
ð 
ñ Ôñ
ð 
€ˆ"�.ÑÔñ;ñ ;ð ;ñ Ôñ;ð| 
€ˆ"�(ÑÔñCñ Cð Cñ ÔñCð4 
€ˆ"�)ÑÔñð ñ Ôñð& 
€ˆ"�)ÑÔñð ñ Ôñð* 
€ˆ"�)ÑÔñð ñ Ôñð, 
�ñ6ð 6ñ 6ññ ð ñ ð. €‰|˜Uœ[Ñ)Ô)ñ	Ið 	Iñ *Ô)ñ	Ið 
€ˆ"�'ÑÔñ	ð 	ñ Ôñ	ð €‰ ¤¨UÔ-@ÑAÔAØ€ˆr�z˜5œ;¨Ô(;Ñ<Ô<ñ9ð 9ñ =Ô<ñ BÔAñ9ð$ €ˆEŒK˜œÑ%Ô%ñð ñ &Ô%ñð €ˆEŒK˜Õ-Ñ.Ô.Ø€ˆEŒK˜�Ñ%Ô%Ø€ˆEŒK˜œÑ'Ô'Ø€ˆEŒK˜�Ñ'Ô'Ø€ˆEŒK˜�Ñ'Ô'Ø€ˆEŒK˜Õ*Ñ+Ô+Ø€ˆEŒK˜Õ)Ñ*Ô*ñFð Fñ +Ô*ñ ,Ô+ñ (Ô'ñ (Ô'ñ (Ô'ñ &Ô%ñ /Ô.ñFð €ˆEŒK˜Õ-Ñ.Ô.ñEð Eñ /Ô.ñEñð ñ ð €ÕÑ*Ñ+Ô+ñð ñ ,Ô+ñð" €Ñ  %¤+¨u¬ÀÄÑPÔPñ;ð ;ñ QÔPñ;ð* €Ô�B•FÕ(Õ3Ñ4Ô4ññ ð ñ 5Ô4ñð8 €Ô�B•FÕ(Õ<Ñ=Ô=ñ[$ñ [$ð [$ñ >Ô=ñ[$ð| 
€‰$�„ñð ñ „ñð 
€ˆ"�+ÑÔñð ñ Ôñð> ñ8ð 8ñ Ôñ8ðv 
€ˆ"Õ
ÑÔñ( ð ( ñ Ôñ( ðV 
€ˆ"�-ÑÔñ?ñ ?ð ?ñ Ôñ?ð ?ð ?rB   