+
    –°³jH  ã                   ó\  a € R/ t.0 t R t^ RIHt ^ RIHt ^ RIHtHt ^RI	H
t
HtHtHtHtHtHtHtHt ]],          ]]R3,          ,          R,          t] ^ k  ! R R4      tR	 R
 lt ! R R]4      t]],          t] ^k ]]R3,          ],          R,          t] ^k ]],          ]]R3,          ,          R,          t] ^k R R ltR R ltR R ltR0R R llt R0R R llt!R R lt"R1R R llt#R R lt$R R lt%R R  lt&R! R" lt'R# R$ lt(R% R& lt)R' R( lt*R) R* lt+R+ R, lt,R- R. lt-R# )2z®
Definition of CuTe Layouts and functions to manipulate them which works with the order
of lexicographic instead of co-lexicographic as implemented in the original layout.py
)Úchain)Ú	TypeAlias)ÚSelfÚTypeIs)	Úcrd2idxÚflattenÚhas_noneÚIntTupleÚis_intÚis_tupleÚproductÚslice_Úsuffix_product.Nc                   ó   € ] tR t^=tRtR# )Ú
LayoutBase© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Úa/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributed/_pycute/layout.pyr   r   =   s   † Ûr   r   c                ó>   € V ^8„  d   QhR\         R\        R,          /# )é   ÚxÚreturnÚLayout)Úobjectr   )Úformats   "r   Ú__annotate__r    A   s   € ÷ %ñ %”ð %œF 8Õ,ñ %r   c                 ó"   € \        V \        4      # ©N)Ú
isinstancer   )r   s   &r   Ú	is_layoutr$   A   s   € Ü�aœÓ$Ð$r   c                   óÆ   a € ] tR t^Et o RV 3R lR lltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR ltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltRtV tR# )r   Nc                ó8   <€ V ^8„  d   QhRS[ RS[ R,          RR/# )r   Ú_shapeÚ_strideNr   )r	   )r   Ú__classdict__s   "€r   r    ÚLayout.__annotate__F   s&   ø€ ÷ "ñ "™xð "±(¸Tµ/ð "ÈTñ "r   c                ó^   € Wn         Vf   \        V P                   4      V n        R # W n        R # r"   )Úshaper   Ústride)Úselfr'   r(   s   &&&r   Ú__init__ÚLayout.__init__F   s!   € ØŒ
ØŠ?Ü(¨¯©Ó4ˆDŽKà!ŽKr   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   Úotherr   )r   Úbool)r   r)   s   "€r   r    r*   N   s   ø€ ÷ Iñ I™Fð I¡tñ Ir   c                ó¦   € \        V\        4      '       g   R # V P                  VP                  8H  ;'       d    V P                  VP                  8H  # )F)r#   r   r,   r-   )r.   r2   s   &&r   Ú__eq__ÚLayout.__eq__N   s:   € Ü˜%¤×(Ò(ÙØ�z‰z˜UŸ[™[Ñ(×HÐH¨T¯[©[¸E¿L¹LÑ-HÐHr   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   ©Úint)r   r)   s   "€r   r    r*   T   s   ø€ ÷ ñ ™ñ r   c                óf   € \        V P                  4      '       d   \        V P                  4      # ^# ©é   )r   r,   Úlen©r.   s   &r   Ú__len__ÚLayout.__len__T   s"   € Ü�D—J‘J×ÒÜ�t—z‘z“?Ð"ár   c                ó6   <€ V ^8„  d   QhRS[ RS[S[,          /# )r   Úargsr   )ÚCoordinateTyper   r:   )r   r)   s   "€r   r    r*   [   s   ø€ ÷ >ñ >™nð >±¹µñ >r   c                óÜ  € \        V4      '       d…   \        V4      ^8X  dC   \        \        V^ ,          V P                  4      \        V^ ,          V P
                  4      4      # \        \        WP                  4      \        WP
                  4      4      # \        V4      ^8X  d)   \        V^ ,          V P                  V P
                  4      # \        WP                  V P
                  4      # )zð
Map a logical coordinate to a linear index (Coord has no Underscore slice operators)
OR
Slice the layout and return the sublayout (Coord has an Underscore slice op)

Follow the same behavior of `Layout::operator(Coord const&)` in cute C++
)r   r>   r   r   r,   r-   r   )r.   rC   s   &*r   Ú__call__ÚLayout.__call__[   s�   € ô �D�>Š>Ü�4‹y˜AŒ~Üœf T¨!¥W¨d¯j©jÓ9¼6À$ÀqÅ'È4Ï;É;Ó;WÓXÐXäœf T¯:©:Ó6¼¸tÇ[Á[Ó8QÓRÐRä�4‹y˜AŒ~Ü˜t A�w¨¯
©
°D·K±KÓ@Ð@ä˜t§Z¡Z°·±Ó=Ð=r   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   Úir   )r:   r   )r   r)   s   "€r   r    r*   o   s   ø€ ÷ 3ñ 3™Sð 3¡Tñ 3r   c                óî   € \        V P                  4      '       d/   \        V P                  V,          V P                  V,          4      # V^ 8w  d   \        h\        V P                  V P                  4      # ©é    )r   r,   r   r-   ÚAssertionError)r.   rI   s   &&r   Ú__getitem__ÚLayout.__getitem__o   sP   € Ü�D—J‘J×ÒÜ˜$Ÿ*™* Q�-¨¯©°Q­Ó8Ð8à�AŒvÜ$Ð$Ü˜$Ÿ*™* d§k¡kÓ2Ð2r   c                ó    <€ V ^8„  d   QhRS[ /# r8   r9   )r   r)   s   "€r   r    r*   x   s   ø€ ÷ #ñ #‘cñ #r   c                ó,   € \        V P                  4      # r"   )r   r,   r?   s   &r   ÚsizeÚLayout.sizex   s   € Ü�t—z‘zÓ"Ð"r   c                ó    <€ V ^8„  d   QhRS[ /# r8   r9   )r   r)   s   "€r   r    r*   |   s   ø€ ÷ )ñ )™ñ )r   c                óJ   € V ! V P                  4       ^,
          4      ^,           # r<   )rR   r?   s   &r   ÚcosizeÚLayout.cosize|   s   € Ù�D—I‘I“K !•OÓ$ qÕ(Ð(r   c                ó    <€ V ^8„  d   QhRS[ /# r8   ©Ústr)r   r)   s   "€r   r    r*   €   s   ø€ ÷ -ñ -™ñ -r   c                ó8   € V P                    R V P                   2# )Ú:©r,   r-   r?   s   &r   Ú__str__ÚLayout.__str__€   s   € Ø—*‘*�˜Q˜tŸ{™{˜mÐ,Ð,r   c                ó    <€ V ^8„  d   QhRS[ /# r8   rY   )r   r)   s   "€r   r    r*   „   s   ø€ ÷ 5ñ 5™#ñ 5r   c                ó<   € R V P                    RV P                   R2# )zLayout(Ú,Ú)r]   r?   s   &r   Ú__repr__ÚLayout.__repr__„   s   € Ø˜Ÿ™˜ A d§k¡k ]°!Ð4Ð4r   r]   r"   )r   r   r   r   r/   r5   r@   rF   rN   rR   rV   r^   rd   r   Ú__classdictcell__)r)   s   @r   r   r   E   sa   ø‡ € ÷"ò "÷Ið I÷ð ÷>ð >÷(3ð 3÷#ð #÷)ð )÷-ð -÷5ö 5r   r   c                ó`   € V ^8„  d   QhR\         \        \         R3,          ,          R\         /# )r   Úlayouts.r   )r   Útuple)r   s   "r   r    r    �   s(   € ÷ !ñ !œ&¤5¬°¨Õ#5Õ5ð !¼&ñ !r   c                  óž   € \        V 4      ^8X  d"   \        V ^ ,          4      '       g
   V ^ ,          p \        R V  4       !  w  r\        W4      # )r=   c              3   óP   "  € T F  qP                   VP                  3x € K  	  R # 5ir"   r]   )Ú.0Úas   & r   Ú	<genexpr>Úmake_layout.<locals>.<genexpr>“   s   é € Ð?±w°!Ÿ7™7 A§H¡HÕ-³wùs   ‚$&)r>   r$   Úzipr   )rh   r,   r-   s   *  r   Úmake_layoutrq   �   sB   € Ü
ˆ7ƒ|�qÔ¤¨7°1­:×!6Ò!6Ø˜!•*ˆäÑ?±wÓ?Ñ@�M€EÜ�%Ó Ð r   c                ó0   € V ^8„  d   QhR\         R\        /# ©r   Úlayoutr   )ÚLayoutOrIntTupler:   )r   s   "r   r    r    ˜   s   € ÷ ñ Ô!ð ¤cñ r   c                 óZ   € \        V 4      '       d   V P                  4       # \        V 4      # r"   )r$   rR   r   ©rt   s   &r   rR   rR   ˜   s#   € Ü�×ÒØ�{‰{‹}ÐÜ�6‹?Ðr   c                ó0   € V ^8„  d   QhR\         R\        /# rs   )r   r:   )r   s   "r   r    r    Ÿ   s   € ÷ ñ ”6ð œcñ r   c                 ó"   € V P                  4       # r"   )rV   rw   s   &r   rV   rV   Ÿ   s   € Ø�=‰=‹?Ðr   c                ó<   € V ^8„  d   QhR\         R\        R\         /# ©r   rt   Úprofiler   ©r   ÚLayoutProfile)r   s   "r   r    r    ¤   s&   € ÷ 'Añ 'A”Vð 'A¤mð 'A¼vñ 'Ar   c                 ót  a a€ \        S4      '       dx   \        S 4      \        S4      8  d   \        h\        \	        V V3R  l\        \        S4      4       4       V 3R l\        \        S4      \        S 4      4       4       4      4      # ^.p^ .p\        \        \        S P                  4      4      \        \        S P                  4      4      4       Fy  w  rEV^8X  d   K  VR,          ^8X  d   WBR&   WSR&   K&  VR,          VR,          ,          V8X  d   VR,          V,          VR&   KW  VP                  V4       VP                  V4       K{  	  \        V4      ^8X  d   \        V^ ,          V^ ,          4      # VP                  4        VP                  4        \        \        V4      \        V4      4      # )c              3   óX   <"  € T F  p\        SV,          SV,          4      x € K!  	  R # 5ir"   )Úcoalesce©rl   rI   rt   r|   s   & €€r   rn   Úcoalesce.<locals>.<genexpr>«   s%   øé € ÐNÑ:M°Q”˜& �) W¨Q¥Z×0Ð0Ó:Mùó   ƒ'*c              3   ó6   <"  € T F  pSV,          x € K  	  R # 5ir"   r   ©rl   rI   rt   s   & €r   rn   rƒ   ¬   ó   øé € ÐEÑ$D˜q�˜—’Ó$Dùó   ƒéÿÿÿÿ)r   r>   rM   rq   r   Úrangerp   Úreversedr   r,   r-   Úappendr   Úreverseri   ©rt   r|   Úresult_shapeÚresult_strider,   r-   s   ff    r   r�   r�   ¤   sk  ù€ Ü�×ÒÜˆv‹;œ˜W›Ô%Ü Ð ÜäÝN¼%ÄÀGÃÔ:MÓNÜE¤E¬#¨g«,¼¸F»Ô$DÓEóó
ð 	
ð �3€LØ�C€Mô Ü”˜Ÿ™Ó&Ó'¬´'¸&¿-¹-Ó2HÓ)Iö‰ˆð �AŒ:Ùà˜"Õ Ô"Ø$˜ÑØ &˜"Óà˜"Õ ¨bÕ 1Õ1°VÔ;Ø+¨BÕ/°%Õ7ˆL˜Óð ×Ñ Ô&Ø× Ñ  Ö(ñ!ô$ ˆ<Ó˜AÔÜ�l 1•o }°QÕ'7Ó8Ð8à×ÑÔØ×ÑÔÜ”e˜LÓ)¬5°Ó+?Ó@Ð@r   c                ó<   € V ^8„  d   QhR\         R\        R\         /# r{   r}   )r   s   "r   r    r    Ï   s&   € ÷ Kñ K”6ð K¤Mð K¼Vñ Kr   c                 ó‚  a a€ \        S4      '       dx   \        S 4      \        S4      8  d   \        h\        \	        V V3R  l\        \        S4      4       4       V 3R l\        \        S4      \        S 4      4       4       4      4      # . p. p\        \        S P                  4      \        S P                  4      4       F9  w  rEV^8X  d   K  V^ 8X  d   K  VP                  V4       VP                  V4       K;  	  \        V4      ^ 8X  d   \        ^^ 4      # \        \        \        V4      \        V4      4      4      # )c              3   óX   <"  € T F  p\        SV,          SV,          4      x € K!  	  R # 5ir"   )Úfilterr‚   s   & €€r   rn   Úfilter.<locals>.<genexpr>Ö   s%   øé € ÐLÑ8K°1”˜˜q�	 7¨1¥:×.Ð.Ó8Kùr„   c              3   ó6   <"  € T F  pSV,          x € K  	  R # 5ir"   r   r†   s   & €r   rn   r•   ×   r‡   rˆ   )r   r>   rM   rq   r   rŠ   rp   r   r,   r-   rŒ   r   r�   ri   rŽ   s   ff    r   r”   r”   Ï   só   ù€ Ü�×ÒÜˆv‹;œ˜W›Ô%Ü Ð ÜäÝL¼¼cÀ'»lÔ8KÓLÜE¤E¬#¨g«,¼¸F»Ô$DÓEóó
ð 	
ð €LØ€MÜœW V§\¡\Ó2´G¸F¿M¹MÓ4JÖK‰ˆà˜–
˜f¨žkØ×Ñ Ô&Ø× Ñ  Ö(ñ	 Lô ˆ<Ó˜AÔÜ�a˜‹|Ðäœœu \Ó2´E¸-Ó4HÓIÓJÐJr   c                ó<   € V ^8„  d   QhR\         R\        R\         /# ©r   ÚlayoutAÚlayoutBr   ©r   ÚLayoutInput)r   s   "r   r    r    ë   s+   € ÷ @Eñ @Eœð @E¬+ð @E¼&ñ @Er   c                 ó   a a€ Sf   S # \        S4      '       d   \        S \        S4      4      # \        S4      '       dx   \	        S 4      \	        S4      8  d   \
        h\        \        V V3R l\        \	        S4      4       4       V 3R l\        \	        S4      \	        S 4      4       4       4      4      # \        SP                  4      '       d   \        V 3R lS 4       4      # SP                  ^ 8X  d   \        SP                  ^ 4      # . p. pSP                  pSP                  p\        S 4      p\        \        \        VP                  4      R,          4      \        \        VP                  4      R,          4      4       Fƒ  w  rxWu,          ^ 8X  g   WW,          ^ 8X  g   \
        h\        \!        ^Wu,          4      V4      p	V	^8w  d)   VP#                  V	4       VP#                  WX,          4       WI,          pV) V,          ) pK…  	  V^8w  g   \	        V4      ^ 8X  dD   VP#                  V4       VP#                  V\        VP                  4      ^ ,          ,          4       VP%                  4        VP%                  4        \	        V4      ^8X  d   \        V^ ,          V^ ,          4      # \        \'        V4      \'        V4      4      # )Nc              3   óX   <"  € T F  p\        SV,          SV,          4      x € K!  	  R # 5ir"   ©Úcomposition©rl   rI   r™   rš   s   & €€r   rn   Úcomposition.<locals>.<genexpr>ö   s%   øé € ÐRÑ>Q¸”˜W Q�Z¨°­×4Ð4Ó>Qùr„   c              3   ó6   <"  € T F  pSV,          x € K  	  R # 5ir"   r   ©rl   rI   r™   s   & €r   rn   r¢   ÷   ó   øé € ÐGÑ%F �˜—’Ó%Fùrˆ   c              3   ó<   <"  € T F  p\        SV4      x € K  	  R # 5ir"   rŸ   )rl   Ú	layoutB_ir™   s   & €r   rn   r¢   û   s   øé € ÐTÉG¸yœ; w°	×:Ð:ËGùs   ƒ:r=   NN)r
   r    r   r   r>   rM   rq   r   rŠ   r,   r-   r�   rp   r‹   r   ÚminÚmaxrŒ   r�   ri   )
r™   rš   r�   r�   Ú
rest_shapeÚrest_strideÚflat_AÚ
curr_shapeÚcurr_strideÚ	new_shapes
   ff        r   r    r    ë   s5  ù€ Ø‚ØˆÜ	��ŠÜ˜7¤F¨7£OÓ4Ð4Ü	�'×	Ò	Üˆw‹<œ#˜g›,Ô&Ü Ð ÜäÝR¼eÄCÈÃLÔ>QÓRÜG¤U¬3¨w«<¼¸W»Ô%FÓGóó
ð 	
ô 
�'—-‘-×	 Ò	 ÜÔTÉGÓTÓTÐTà‡~�~˜ÔÜ�g—m‘m QÓ'Ð'àˆØˆØ—]‘]ˆ
Ø—n‘nˆÜ˜'Ó"ˆô (+Ü”W˜VŸ\™\Ó*¨2Õ.Ó/´¼'À&Ç-Á-Ó:PÐQSÕ:TÓ1Uö(
Ñ#ˆJð Õ,°Ô1°[Õ5MÐQRÔ5RÜ$Ð$ÜœC  :Õ#<Ó=¸zÓJˆIà˜AŒ~Ø×#Ñ# IÔ.Ø×$Ñ$ [Õ%>Ô?à#Õ0ˆJà� 
Õ*ðŠKñ(
ð& ˜Œ?œc ,Ó/°1Ô4Ø×Ñ 
Ô+Ø× Ñ  ¬w°v·}±}Ó/EÀaÕ/HÕ!HÔIð 	×ÑÔØ×ÑÔäˆ|Ó Ô!Ü˜, q�/¨=¸Õ+;Ó<Ð<äœ% Ó-¬u°]Ó/CÓDÐDr   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r   rt   Úmax_idxr   )ru   r:   r   )r   s   "r   r    r    /  s'   € ÷ Gñ GÔ'ð G´#ð G¼fñ Gr   c                 ó¶  € \        V 4      '       d   \        \        V 4      4      # . p. p^p\        \	        \        V P                  4      \        V P                  4      4      4      pV Fq  w  rgV^ 8X  g   V^8X  d   K  WGV,          8*  p\        V4      \        J d   V'       g   \        hVP                  Wd,          4       VP                  V4       Wv,          pKs  	  VP                  W,           ^,
          V,          4       VP                  V4       VP                  4        VP                  4        \        \        \        V4      \        V4      4      4      # r<   )r
   Ú
complementr   Úsortedrp   r   r-   r,   Útyper3   rM   rŒ   r�   r�   ri   )	rt   r±   r�   r�   Úcurrent_idxÚ	sorted_DSr-   r,   Úin_bounds	   &&       r   r³   r³   /  s  € Üˆf‡~‚~Üœ& ›.Ó)Ð)à€LØ€MØ€Kä”sœ7 6§=¡=Ó1´7¸6¿<¹<Ó3HÓIÓJ€IÛ"‰ˆØ�QŒ;˜% 1œ*Ùà¨&¥.Ñ0ˆä�‹NœdÓ"¯HÜ Ð à×Ñ˜FÕ1Ô2Ø×Ñ˜[Ô)Ø•nŠñ #ð ×Ñ˜Õ.°Õ2°{ÕBÔCØ×Ñ˜Ô%ð ×ÑÔØ×ÑÔä”Fœ5 Ó.´°mÓ0DÓEÓFÐFr   c                óL   € V ^8„  d   QhR\         R,          R\        R,          /# ©r   rt   Nr   ©ru   r   )r   s   "r   r    r    P  s(   € ÷ Gñ GÔ*¨TÕ1ð G´f¸tµmñ Gr   c           	      óþ  € V f   R # \        V 4      '       d   \        V 4      # . p. p^p\        V P                  4      p\        V P                  4      p\        \        WT\        V4      4      4      pV FA  w  rxp	V^8X  d   K  W78w  d    M.VP                  V4       VP                  V	4       W‡,          pKC  	  VP                  4        VP                  4        \        \        \        V4      \        V4      4      4      # r"   )r
   r   r   r,   r-   r´   rp   r   rŒ   r�   r�   ri   )
rt   r�   r�   r¶   Ú
flat_shapeÚflat_strideÚ
sorted_DSAr-   r,   Úrstrides
   &         r   Úright_inverserÁ   P  sÙ   € Ø‚~ÙÜ	��ŠÜ�f‹~Ðà€LØ€MØ€Kä˜Ÿ™Ó&€JÜ˜&Ÿ-™-Ó(€KÜœ˜K´^ÀJÓ5OÓPÓQ€JÛ",Ñˆ�wØ�AŒ:ÙØÔ Ùà×Ñ˜EÔ"Ø×Ñ˜WÔ%Ø•nŠñ #-ð ×ÑÔØ×ÑÔÜ”Fœ5 Ó.´°mÓ0DÓEÓFÐFr   c                óL   € V ^8„  d   QhR\         R,          R\        R,          /# rº   r»   )r   s   "r   r    r    m  s(   € ÷ Bñ BÔ)¨DÕ0ð B´V¸dµ]ñ Br   c                 ó‚   € V f   R # \        V 4      '       d   \        V 4      # \        \        \	        V 4      V 4      4      # r"   )r
   r   rÁ   rq   r³   rw   s   &r   Úleft_inverserÄ   m  s4   € Ø‚~ÙÜ	��ŠÜ�f‹~ÐÜœ¤Z°Ó%7¸Ó@ÓAÐAr   c                ó<   € V ^8„  d   QhR\         R\        R\         /# r˜   r›   )r   s   "r   r    r    w  s!   € ÷ ñ œFð ¬[ð ¼Vñ r   c                 óÀ  a a€ Sf   S # \        S4      '       d   \        S \        S4      4      # \        S4      '       dx   \	        S 4      \	        S4      8  d   \
        h\        \        V V3R l\        \	        S4      4       4       V 3R l\        \	        S4      \	        S 4      4       4       4      4      # \        S \        S\        S\        S 4      4      4      4      # )Nc              3   óX   <"  € T F  p\        SV,          SV,          4      x € K!  	  R # 5ir"   )Úlogical_divider¡   s   & €€r   rn   Ú!logical_divide.<locals>.<genexpr>‚  s*   øé € ð á0˜ô # 7¨1¥:¨w°q­z×:Ð:Û0ùr„   c              3   ó6   <"  € T F  pSV,          x € K  	  R # 5ir"   r   r¤   s   & €r   rn   rÉ   †  r¥   rˆ   )r
   rÈ   r   r   r>   rM   rq   r   rŠ   r    r³   rR   ©r™   rš   s   ffr   rÈ   rÈ   w  s´   ù€ Ø‚ØˆÜ	��ŠÜ˜g¤v¨g£Ó7Ð7Ü	�'×	Ò	Üˆw‹<œ#˜g›,Ô&Ü Ð Üäõä"¤3 w£<Ô0óô H¤U¬3¨w«<¼¸W»Ô%FÓGóó	
ð 		
ô ØÜ�GœZ¨´°g³Ó?Ó@óð r   c                ó<   € V ^8„  d   QhR\         R\        R\         /# r˜   r›   )r   s   "r   r    r    ’  s!   € ÷ ñ œVð ¬kð ¼fñ r   c                 óà  a a€ Sf   S # \        S4      '       d   \        S \        S4      4      # \        S4      '       dx   \	        S 4      \	        S4      8  d   \
        h\        \        V V3R l\        \	        S4      4       4       V 3R l\        \	        S4      \	        S 4      4       4       4      4      # \        S \        \        S \        S 4      \        S4      ,          4      S4      4      # )Nc              3   óX   <"  € T F  p\        SV,          SV,          4      x € K!  	  R # 5ir"   )Úlogical_productr¡   s   & €€r   rn   Ú"logical_product.<locals>.<genexpr>�  s*   øé € ð á0˜ô $ G¨A¥J°¸µ
×;Ð;Û0ùr„   c              3   ó6   <"  € T F  pSV,          x € K  	  R # 5ir"   r   r¤   s   & €r   rn   rÐ   ¡  r¥   rˆ   )r
   rÈ   r   r   r>   rM   rq   r   rŠ   r    r³   rR   rV   rË   s   ffr   rÏ   rÏ   ’  s½   ù€ Ø‚ØˆÜ	��ŠÜ˜g¤v¨g£Ó7Ð7Ü	�'×	Ò	Üˆw‹<œ#˜g›,Ô&Ü Ð Üäõä"¤3 w£<Ô0óô H¤U¬3¨w«<¼¸W»Ô%FÓGóó	
ð 		
ô ØÜ”J˜w¬¨W«¼¸w»Õ(GÓHÈ'ÓRóð r   c                óH   € V ^8„  d   QhR\         R\        R\        R\        /# )r   Úsplitterr™   rš   r   )r   r   rœ   )r   s   "r   r    r    ¬  s0   € ÷ &ñ &Üð&äð&ô ð&ô ñ	&r   c                 ó  a aaa€ Sf   \        \        ^^ 4      S4      # \        S4      '       dÏ   \        S4      \        S4      8  d   \        h\        VVV 3R l\        \        S4      4       4       4      o\        \        V3R l\        \        S4      4       4       4      \        \        V3R l\        \        S4      4       4       V3R l\        \        S4      \        S4      4       4       4      4      4      # S ! SS4      # )Nc              3   óZ   <"  € T F   p\        SSV,          SV,          4      x € K"  	  R # 5ir"   )Ú
hier_unzip)rl   rI   r™   rš   rÓ   s   & €€€r   rn   Úhier_unzip.<locals>.<genexpr>·  s,   øé € ð 
á(�ô �x ¨¥¨W°Q­Z×8Ð8Û(ùs   ƒ(+c              3   óD   <"  € T F  pSV,          ^ ,          x € K  	  R# 5i)rL   Nr   ©rl   rI   Úsplits   & €r   rn   r×   ½  s   øé € ÐAÑ-@¨˜˜a� ŸšÓ-@ùó   ƒ c              3   óD   <"  € T F  pSV,          ^,          x € K  	  R# 5i)r=   Nr   rÙ   s   & €r   rn   r×   À  s   øé € Ð>Ñ*= Q�U˜1•X˜a—[’[Ó*=ùrÛ   c              3   ó6   <"  € T F  pSV,          x € K  	  R # 5ir"   r   r¤   s   & €r   rn   r×   Á  s   øé € ÐKÑ)J A�W˜Q—Z’ZÓ)Jùrˆ   )rq   r   r   r>   rM   rŠ   r   )rÓ   r™   rš   rÚ   s   fff@r   rÖ   rÖ   ¬  sË   û€ ð
 ‚Üœ6 ! Q›<¨Ó1Ð1Ü	�'×	Ò	Üˆw‹<œ#˜g›,Ô&Ü Ð äö 
äœ3˜w›<Ô(ó
ó 
ˆô
 ÜÔA¬U´3°w³<Ô-@ÓAÓAÜÜÜ>¬%´°G³Ô*=Ó>ÜK¬¬s°7«|¼SÀ»\Ô)JÓKóóó
ð 	
ñ �G˜WÓ%Ð%r   c                ó<   € V ^8„  d   QhR\         R\        R\         /# r˜   r›   )r   s   "r   r    r    Ë  s!   € ÷ 8ñ 8œ6ð 8¬Kð 8¼Fñ 8r   c                 ó"   € \        \        W4      # r"   )rÖ   rÈ   rË   s   &&r   Úzipped_dividerà   Ë  s   € Ü”n gÓ7Ð7r   c                ó<   € V ^8„  d   QhR\         R\        R\         /# r˜   r›   )r   s   "r   r    r    Ð  s&   € ÷ Tñ Tœ&ð T¬;ð T¼6ñ Tr   c           	      óÂ   € \        W4      p\        V^ ,          .\        \        V^,          4      4       Uu. uF  q2^,          V,          NK  	  up,           4      # u upi rK   )rà   rq   rŠ   r>   ©r™   rš   ÚresultrI   s   &&  r   Útiled_dividerå   Ð  sK   € Ü˜7Ó,€FÜ˜˜q�	�{¼EÄ#ÀfÈQÅiÃ.Ô<QÓ%RÑ<Q°q¨Q¥i°§l lÑ<QÑ%RÕRÓSÐSùÒ%Ró   ·A
c                ó<   € V ^8„  d   QhR\         R\        R\         /# r˜   r›   )r   s   "r   r    r    Ö  s!   € ÷ 9ñ 9œFð 9¬[ð 9¼Vñ 9r   c                 ó"   € \        \        W4      # r"   )rÖ   rÏ   rË   s   &&r   Úzipped_productré   Ö  s   € Ü”o wÓ8Ð8r   c                ó<   € V ^8„  d   QhR\         R\        R\         /# r˜   r›   )r   s   "r   r    r    Û  s&   € ÷ Tñ Tœ6ð T¬Kð T¼Fñ Tr   c           	      óÂ   € \        W4      p\        V^ ,          .\        \        V^,          4      4       Uu. uF  q2^,          V,          NK  	  up,           4      # u upi rK   )ré   rq   rŠ   r>   rã   s   &&  r   Útiled_productrì   Û  sK   € Ü˜GÓ-€FÜ˜˜q�	�{¼EÄ#ÀfÈQÅiÃ.Ô<QÓ%RÑ<Q°q¨Q¥i°§l lÑ<QÑ%RÕRÓSÐSùÒ%Rræ   c                óx   € V ^8„  d   QhR\         \        R3,          R\        R\         \        \        3,          /# )r   Úcrd.rt   r   )ri   r   r   r:   )r   s   "r   r    r    à  s3   € ÷ ñ œ%¤¨ Õ,ð ´fð ÄÄvÌsÀ{ÕASñ r   c                 ó¦   € \        \        WP                  4      \        WP                  4      4      \	        WP                  VP                  4      3# r"   )r   r   r,   r-   r   )rî   rt   s   &&r   Úslice_and_offsetrð   à  s:   € äŒv�cŸ<™<Ó(¬&°·m±mÓ*DÓEÜ�—\‘\ 6§=¡=Ó1ðð r   c                ó¸   € V ^8„  d   Qh/ ^ \         9   d
   \        ;R&   ^\         9   d
   \        ;R&   ^\         9   d
   \        ;R&   ^\         9   d
   \        ;R&   # )r   rD   ru   r~   rœ   )Ú__conditional_annotations__r   )r   s   "r   r    r    !   s_   € ÷ ñ ÷.ò ”	ñ ñ/÷P 0Ò /”)Ñ /ñQ÷R >Ò =ŒyÑ =ñS÷T GÒ FŒYÑ FòUr   r"   r<   )/rò   Ú__doc__Ú	itertoolsr   Útypingr   Útyping_extensionsr   r   Ú	int_tupler   r   r   r	   r
   r   r   r   r   r:   ri   r   rD   r   r$   r   ru   r~   rœ   rq   rR   rV   r�   r”   r    r³   rÁ   rÄ   rÈ   rÏ   rÖ   rà   rå   ré   rì   rð   r    )rò   s   @r   Ú<module>rø      s  øðöBõ
 Ý ß *÷
÷ 
õ 
ð ˆ(…N�U˜6 3˜;Õ'Õ'¨$Õ.ð ó ÷
	ñ 	õ%ô@5ˆZô @5ðH % xÕ/Ð Ó /Ø  ¨ Õ-°Õ6¸Õ=€Ó =Ø (Õ*¨U°6¸3°;Õ-?Õ?À$ÕF€Ó Fõ!õõ÷
'A÷VKõ8@E÷HGõBGõ:Bõõ6õ4&õ>8õ
Tõ9õ
T÷
r   