ó
    Eñi“Ø ã            !       ó°v  • % S SK r S SKrS SKrS SKrS SKrS SKJrJr  S SKJ	r	  S SK
Jr  S SK JrJr  S SKJrJr  S SKJrJrJrJr  S SKrS SKrS SKJr  S SKJr  S SKJs  Jr   S SKJ!r!J"r"J#r#  S S	K$J%r%  S S
K&J'r'  S SKJ(r(J)r)J*r*J+r+J,r,  S SK-J.r.J/r/J0r0J1r1  S SK2J3r4  S SK5J6r6  \Rn                  Rp                  r8/ r9\:\;   \<S'   \Rz                  R|                  R~                  r? " S S\5      r@  GS£S\S\R‚                  S\BS\B4S jjrC\" \C\R‚                  Rˆ                  SS9rE\" \C\R‚                  Rˆ                  S9rF\" \C\R‚                  Rˆ                  SS9rG\" \C\R‚                  R�                  S9rIS\#S\JS\#4S jrK\%" \?R˜                  5      \1" S 5      \FS!\#S"\#4S# j5       5       5       rL\%" \?Rš                  5      \1" S 5      \FS!\#S"\#4S$ j5       5       5       rM\%" \?Rœ                  5      \1" S 5      \FS!\#S\#S%\OS&\O4S' j5       5       5       rN\%" \?R                   5      \1" S 5      \FS(\#S)\OS*\OS+\OS,\BS-\#4S. j5       5       5       rP\%" \?R¢                  R¤                  /5      S/ 5       rS\%" \?R¢                  RF                  /5      S0\#4S1 j5       rT\%" \?Rª                  5      \1" 5       \FS2\#S\#4S3 j5       5       5       rU\%" \?R¬                  5      \1" S 5      \FS(\#S2\#4S4 j5       5       5       rV\%" \?R®                  5      \1" S 5      S(\#S2\#S5\OS6\O4S7 j5       5       rW\%" \?R°                  5      \1" 5       \FS2\#S\#4S8 j5       5       5       rX\%" \?R²                  5      \1" 5       \FS(\#S2\#S\#4S9 j5       5       5       rY\%" \?R´                  5      \1" S 5      S(\#S2\#S&\O4S: j5       5       rZ\%" \?R¶                  5      \1" S 5      \FS(\#S2\#S;\OS<\B4S= j5       5       5       r[\%" \?R¸                  5      \1" S 5      \FGS¤S>\#S2\#S?\;4S@ jj5       5       5       r\\%" \?Rº                  5      \FS(\#SA\#4SB j5       5       r]\%" \?R¼                  5      \1" 5       \FS2\#S\#4SC j5       5       5       r^\%" \?R¾                  5      \1" S 5      \FS(\#S2\#S\#4SD j5       5       5       r_\%" \?RÀ                  5      S2\#SE\#S\#4SF j5       r`\%" \?RÂ                  5      S(\#S2\#SE\#S\b\#\#4   4SG j5       ra\%" \?RÆ                  5      \1" 5       \FS(\#S2\#SH\#SI\OSJ\OSK\BS<\BS\#4SL j5       5       5       rc\%" \?RÈ                  5      \1" S 5      \FS(\#S2\#SM\#S\#4SN j5       5       5       rd\%" \?RÊ                  5      \1" 5       S2\#SO\#S\#4SP j5       5       reSQ\#SR\J4SS jrfST\RÎ                  4SU jrh\%" \?RÒ                  5      \1" 5       \F\@RÔ                  RÖ                  4S2\#SV\#SR\JS\#4SW jj5       5       5       ri\%" \?RØ                  5      \1" S 5      \FS(\#SA\#SV\#SR\J4SX j5       5       5       rl\%" \?RÚ                  5      GS¥SY j5       rn\%" \?RÞ                  5      \1" 5       \F\@RÔ                  RÖ                  SZ4S2\#SV\#SR\JS%\O4S[ jj5       5       5       ro\%" \?Rà                  Râ                  5      \FS(\#S2\#SV\#SR\JS%\O4
S\ j5       5       rp\%" \?Rà                  Rä                  5      \FS(\#S2\#SV\#SR\JS%\OS \#4S] j5       5       rs\%" \?Rè                  Râ                  5      \FS(\#S2\#SV\#SR\JS^\O4
S_ j5       5       rt\%" \?Rè                  Rê                  5      \FS(\#S2\#SV\#SR\JS^\OS \#4S` j5       5       rvS(\#S2\#SV\#SE\\#   SR\JSa\JSb\#S\#4Sc jrw\%" \?Rð                  5      \1" S 5      \FS(\#S2\#S\JS\#4Sd j5       5       5       rx\%" \?Rò                  5      \1" S 5      S(\#S2\#SV\#SE\\#   SR\JSa\JSb\#S\#4Se j5       5       ry\%" \?Rô                  5      \1" S 5      S(\#S2\#SV\#SE\\#   SR\JSa\JSb\#S\#4Sf j5       5       rz\%" \?Rö                  5      \1" 5       \FS\@RÔ                  RÖ                  4S2\#SV\#SE\\#   SR\JS\#4
Sg jj5       5       5       r{\%" \?Rø                  5      \1" S 5      \FS\@RÔ                  RÖ                  4S(\#S2\#SV\#SE\\#   SR\JS\#4Sh jj5       5       5       r|\%" \?Rú                  5      \1" 5       \F\@RÔ                  RÖ                  4SA\#SV\#SR\JS\#4Si jj5       5       5       r}\%" \?Rü                  5      \1" S 5      \F\@RÔ                  RÖ                  4S(\#S2\#SV\#SR\JS\#4
Sj jj5       5       5       r~\%" \?Rþ                  5      \1" 5       GS¦SA\#SO\#Sk\O4Sl jj5       5       r\%" \?GR                   5      \1" 5       Sm\#Sn\#S\#4So j5       5       r€\%" \?GR                  5      \1" 5       S(\#Sp\:\J   S\JSq\JSr\JSs\J4St j5       5       r�\%" \?GR                  RF                  5          GS§S2\#S\JSq\\J   Sr\\J   Ss\J4
Sv jj5       rƒS\#S\JSq\\J   Sr\\J   S\b\J\J4   4
Sw jr„\%" \?GR
                  5      \1" 5           GS§SA\#Sx\#S\JSq\\J   Sr\\J   Ss\J4Sy jj5       5       r…\%" \?GR                  5      \1" 5       S(\#Sp\:\J   S\JSz\J4S{ j5       5       r†\%" \?GR                  5      \1" 5       S(\#Sp\:\J   S|\JS}\JS~\J4
S j5       5       r‡S(\#S \#S€\RÎ                  4S� jrˆ\%" \?GR                  5      \1" S 5      \ES(\#S‚\#S\JS€\RÎ                  4Sƒ j5       5       5       r‰\%" \?GR                  5      \1" 5       \ES(\#S‚\#S\JS€\RÎ                  4S„ j5       5       5       rŠS… r‹\%" \?GR                  5      \1" 5       SA\#S†\:\J   S‡\:\J   Sˆ\:\J   S‰\:\J   S\#4SŠ j5       5       rŒ\%" \?GR                  5      \1" 5       \FSA\#S‹\:\J   S†\:\J   S‡\:\J   Sˆ\:\J   S‰\:\J   S\#4SŒ j5       5       5       r�\%" \?GR                  5      \1" 5       S(\#S�\#S*\O4SŽ j5       5       rŽ\%" \?GR                  5      \1" 5       S>\#S�\:\J   S�\JS‘\JSs\JS\#4S’ j5       5       r�\%" \?GR                   Râ                  5      \F GS¥S(\#S2\#S“\\O   S\#4S” jj5       5       r�\%" \?GR"                  5      \?GR"                  Râ                  GR%                  \8GR&                  5      \?GR"                  Râ                  GR%                  \8GR(                  5      SA\#Sk\OS•\\B   4S– j5       5       5       r‘\%" \?GR*                  5      \1" S—S˜5      SA\#Sk\OS•\\B   4S™ j5       5       r•\%" \?GR,                  5      \1" 5       S\#S\JSš\B4S› j5       5       r–\%" \?GR.                  5      \1" SSœ9S\#S\JSš\B4S� j5       5       r—\%" \?GR0                  5      \1" 5          GS¨SE\#Sž\#SŸ\JS \BS¡\BS\#4S¢ jj5       5       r˜\%" \?GR2                  5      \1" 5       S(\#Sž\#S£\JSŸ\JS \B4
S¤ j5       5       r™S\:\J   4S¥ jršS¦\:\#   S\JS§\JS\:\#   4S¨ jr›S¦\:\#   4S© jrœS¦\:\#   S\J4Sª jr�S¦\:\#   S\JS§\J4S« jrž\%" \?GR>                  Râ                  \?GR>                  Rê                  /5       GS¥S¦\:\#   S\JS§\JS¬\\#   S\#4
S­ jj5       rŸ\%" \?GR@                  Râ                  \?GR@                  Rê                  /5        GS©S2\#S®\:\J   S\JS¬\\:\#      S\\:\#      4
S¯ jj5       r \%" \?GRB                  RF                  5      GSªSA\#S°\JS\JS\b\#S±4   4S² jj5       r¡\%" \?GRD                  Râ                  5       GSªSA\#S®\:\J   S\JS\b\#S±4   4S³ jj5       r¢\%" \?GRF                  RF                  5      GSªS2\#S°\JS\JS\b\#S±4   4S´ jj5       r£\?GRH                  GRJ                  GR%                  \8GR&                  5       GSªS2\#Sµ\#S\JS\b\#S±4   4S¶ jj5       r¦\%" \?GRN                  5      \1" SSœ9\FGS«S2\#S·\#S¸\#S%\JS)\J4
S¹ jj5       5       5       r§\%" \?GRP                  5      \1" 5       \F   GS¬S2\#S·\#S¸\#S%\JS)\JSº\B4S» jj5       5       5       r¨\%" \?GRR                  5      \1" SSœ9\FGS«S2\#S·\#S¼\#S%\JS)\J4
S½ jj5       5       5       r©\%" \?GRT                  Râ                  5      \FS(\#SA\#S¾\#S¿\#SÀ\\#   SÁ\JSÂ\JSÃ\JSÄ\JSÅ\:\B   S\b\\#   \\#   \\#   4   4SÆ j5       5       rª\%" \?GRT                  Rê                  5      S(\#SA\#S¾\#S¿\#SÀ\\#   SÁ\JSÂ\JSÃ\JSÄ\JSÅ\:\B   S—\RF                  S˜\RF                  SÇ\RF                  S\b\\#   \\#   \\#   4   4SÈ j5       r«S\\#   S\\#   4SÉ jr¬\%" \?GRZ                  Râ                  5      SÊ\#SA\#SË\:\J   S¾\#S¿\#SE\\#   SÌ\\#   SÅ\:\B   S\b\\#   \\#   \\#   4   4SÍ j5       r­\%" \?GRZ                  Rê                  5      SÊ\#SA\#SË\:\J   S¾\#S¿\#SE\\#   SÌ\\#   SÅ\:\B   S—\RF                  S˜\RF                  SÇ\RF                  S\b\\#   \\#   \\#   4   4SÎ j5       r®\%" \?GR^                  Râ                  5      SA\#SË\:\J   SE\\#   S“\\O   S\b\#\#4   4
SÏ j5       r¯\%" \?GR`                  Râ                  5      SÊ\#SA\#SË\:\J   S¿\#SE\\#   SÅ\:\B   S\b\\#   \\#   4   4SÐ j5       r°SA\#SE\\#   SÌ\\#   SÑ\\#   SÒ\\#   SK\BSÓ\OS“\OSÔ\BS\b\#\#\#\\#   \\#   4   4SÕ jr±\%" \?GRd                  5      \1" S¬SÖS×5      SA\#SE\\#   SÌ\\#   SÑ\\#   SÒ\\#   SK\BSÓ\OS“\OS\b\#\#\#4   4SØ j5       5       r²\?GRd                  Râ                  GR%                  \8GR(                  5      \?GRd                  Râ                  GR%                  \8GR&                  5      SA\#SE\\#   SÌ\\#   SÑ\\#   SÒ\\#   SK\BSÓ\OS“\OS\b\#\#\#4   4SÙ j5       5       r³\?GRh                  Râ                  GR%                  \8GR&                  5      GSªS\:\#   4SÚ jj5       rµ\%" \?GRl                  Râ                  5      SA\#SE\\#   SÌ\\#   SÑ\#SÒ\#SÓ\OS“\OS\b\#\#\#4   4SÛ j5       r¶\%" \?GRn                  Râ                  5      SA\#SE\\#   SÌ\\#   SÑ\#SÒ\#SK\BSÓ\OS“\OS\b\#\#\#4   4SÜ j5       r·\%" \?GRn                  GRp                  5      SA\#SE\\#   SÌ\\#   SK\BSÓ\OS“\OS\b\#\#\#4   4SÝ j5       r¹\%" \?GRt                  Râ                  5      SA\#SE\\#   SÌ\\#   SÑ\#SÒ\#SK\BSÓ\OS“\OS\b\#\#\#\#\#4   4SÞ j5       rºSA\#SE\\#   SÌ\\#   SÑ\#SÒ\#S“\OSK\BS\#4Sß jr»\%" \?GRx                  Râ                  5      SA\#SE\\#   SÌ\\#   SÑ\#SÒ\#SÓ\OS“\OS\b\#\#\#\#4   4Sà j5       r¼\%" \?GRz                  Râ                  5      SA\#SE\\#   SÌ\\#   SÑ\#SÒ\#SÓ\OS“\OS\b\#\#\#\#\#\#4   4Sá j5       r½\%" \?GR|                  Râ                  5      SA\#SE\\#   SÌ\\#   SÑ\#SÒ\#SÓ\OS“\OS\b\#\#\#\#4   4Sâ j5       r¾\%" \?GR~                  5      \1" S—S˜5      \FGS¥Sã j5       5       5       rÀ\%" \?GR‚                  5      \1" 5       SSSSSSSä.S\\#\)4   ST\\RÎ                     Så\\GR„                     Sæ\BSç\BSè\\GR†                     4Sé jj5       5       rÁ\%" \?GRˆ                  \?GRŠ                  \?GRŒ                  /5      \1" 5       Sê 5       5       rÇ\?GR�                  Râ                  GR%                  \8GR(                  5      \%" \?GR�                  5      \1" S—S˜SÇSë5      SA\#SE\#SÌ\\#   SÑ\\#   SÒ\\#   SK\BSì\OSí\O4Sî j5       5       5       rÈSï rÉ\%" \?GR”                  Râ                  5      SÊ\#SA\#SE\\#   SÑ\\#   SÒ\\#   SÖ\\#   S×\\#   S•\BS“\OSÅ\:\B   Sð\#S\b\#\\#   \\#   4   4Sñ j5       rÊ\%" \?GR–                  Râ                  5      SÊ\#SA\#SE\\#   SÑ\\#   SÒ\\#   SÖ\\#   S×\\#   S•\BS“\OSÅ\:\B   S\b\#\\#   \\#   4   4Sò j5       rË\%" \?GR–                  Rê                  5      SÊ\#SA\#SE\\#   SÑ\\#   SÒ\\#   SÖ\\#   S×\\#   S•\BS“\OSÅ\:\B   S—\RF                  S˜\RF                  SÇ\RF                  S\b\#\\#   \\#   4   4Só j5       rÌ\%" \?GRš                  5      \1" S—S˜SÇ5      SA\#S(\#SE\#SÑ\\#   SÒ\\#   SÖ\\#   Sô\\#   Sí\O4Sõ j5       5       rÍ\%" \?GRœ                  5      \1" S—S˜SÇ5      SA\#S(\#SE\#SÑ\\#   SÒ\\#   SÖ\\#   Sô\\#   Sí\OSö\#4S÷ j5       5       rÎ\%" \?GRž                  5      \1" 5       \FSA\#S‹\b\J\J4   4Sø j5       5       5       rÐS2\+Sž\+S‹\:\J   S\J4Sù jrÑ\%" \?GR¤                  5      \1" 5       S2\+Sž\+S‹\:\J   4Sú j5       5       rÒ\%" \?GR¦                  5      \1" 5       SA\+Sž\+S‹\:\J   S‰\:\J   Sˆ\:\J   4
Sû j5       5       rÓ\%" \?GR¨                  5      SuSü.S\+S\JSz\+Sý\+S)\)4
Sþ jj5       rÔ\%" \?GRª                  5      \1" 5       SuSü.S\+S\JSz\+Sý\+S)\)4
Sÿ jj5       5       rÕSuSü.S\+S\JSz\+Sý\+GS \BS)\)4GS jjrÖ\%" \?GR®                  Râ                  5      \?GR®                  Râ                  GR%                  \8GR&                  5      GS­GS j5       5       r×\%" \?GR°                  5      S\+S\JSz\+Sý\+4GS j5       rØ\%" \?GR²                  5      \1" 5       S\+S\JSz\+Sý\+4GS j5       5       rÙS\+S\JSz\+Sý\+GS \B4
GS jrÚ\%" \?GR¶                  5      \1" S‚SM5      \FS2\#S\b\#\#4   4GS j5       5       5       rÛ\%" \?GR¸                  5      \1" 5          GS®S\#GS\\B\J\O4   GS\\B\J\O4   GS	\\GRº                     4GS
 jj5       5       rÜ\%" \?GR¼                  5      GS¯GS j5       rÞGS rßGS rà\%" \?GRÂ                  GRÄ                  5      \%" \?GRÆ                  GRÄ                  5      \%" \?GRÈ                  GRÄ                  5      \?GRÂ                  GRÄ                  GR%                  \8GR&                  5      \?GRÂ                  GRÄ                  GR%                  \8GR(                  5      \?GRÆ                  GRÄ                  GR%                  \8GR&                  5      \?GRÆ                  GRÄ                  GR%                  \8GR(                  5      \?GRÈ                  GRÄ                  GR%                  \8GR&                  5      \?GRÈ                  GRÄ                  GR%                  \8GR(                  5      SA\#S‹\\:\J      GS\\:\O      S\#4GS j5       5       5       5       5       5       5       5       5       rå\%" \?GRÌ                  GRÄ                  5      \%" \?GRÎ                  GRÄ                  5      \%" \?GRÐ                  GRÄ                  5      \?GRÌ                  GRÄ                  GR%                  \8GR&                  5      \?GRÌ                  GRÄ                  GR%                  \8GR(                  5      \?GRÎ                  GRÄ                  GR%                  \8GR&                  5      \?GRÎ                  GRÄ                  GR%                  \8GR(                  5      \?GRÐ                  GRÄ                  GR%                  \8GR&                  5      \?GRÐ                  GRÄ                  GR%                  \8GR(                  5      SA\#S‹\\:\J      GS\\:\O      S\#4GS j5       5       5       5       5       5       5       5       5       réGS°GS jrê\%" \?GRÂ                  Râ                  \?GRÂ                  Rê                  /5      \?GRÂ                  Râ                  GR%                  \8GR&                  5      \?GRÂ                  Râ                  GR%                  \8GR(                  5      \1" SSGS9 GS¥SA\#S‹\:\J   GS\\O   S\#4GS jj5       5       5       5       rá\%" \?GRÌ                  Râ                  \?GRÌ                  Rê                  /5      \?GRÌ                  Râ                  GR%                  \8GR&                  5      \?GRÌ                  Râ                  GR%                  \8GR(                  5      \1" SSGS9 GS¥SA\#S‹\:\J   GS\\O   S\#4GS jj5       5       5       5       rë\%" \?GRÆ                  Râ                  \?GRÆ                  Rê                  /5      \?GRÆ                  Râ                  GR%                  \8GR&                  5      \?GRÆ                  Râ                  GR%                  \8GR(                  5      \1" SSGS9  GS±SA\#S‹\:\J   GS\\O   GS\\O   S\#4
GS jj5       5       5       5       rã\%" \?GRÎ                  Râ                  \?GRÎ                  Rê                  /5      \?GRÎ                  Râ                  GR%                  \8GR&                  5      \?GRÎ                  Râ                  GR%                  \8GR(                  5      \1" SSGS9  GS±SA\#S‹\:\J   GS\\O   GS\\O   S\#4
GS jj5       5       5       5       rç\%" \?GRÈ                  Râ                  \?GRÈ                  Rê                  /5      \?GRÈ                  Râ                  GR%                  \8GR&                  5      \?GRÈ                  Râ                  GR%                  \8GR(                  5      \1" SSGS9   GS²SA\#S‹\:\J   GS\\O   GS\\O   GS\\O   S\#4GS jj5       5       5       5       rä\%" \?GRÐ                  Râ                  \?GRÐ                  Rê                  /5      \?GRÐ                  Râ                  GR%                  \8GR&                  5      \?GRÐ                  Râ                  GR%                  \8GR(                  5      \1" SSGS9   GS²SA\#S‹\:\J   GS\\O   GS\\O   GS\\O   S\#4GS jj5       5       5       5       rè\F GS°SA\#S‹\:\J   GS\:\\O      GS\BS\#4
GS jj5       rìGS ríGS  rîGS! rïGS" rð GS°GS# jrñGS$ ròGS% róGS°GS& jrôGS°GS' jrõGS( rö\%" \?GRî                  GRð                  5      \?GRî                  GRð                  GR%                  \8GR&                  5      \?GRî                  GRð                  GR%                  \8GR(                  5      GS) 5       5       5       rù\%" \?GRô                  GRð                  5      \?GRô                  GRð                  GR%                  \8GR&                  5      \?GRô                  GRð                  GR%                  \8GR(                  5      GS* 5       5       5       rû\%" \?GRô                  GRø                  5      \?GRô                  GRø                  GR%                  \8GR&                  5      \?GRô                  GRø                  GR%                  \8GR(                  5      GS+ 5       5       5       rý\%" \?GRî                  GRø                  5      \?GRî                  GRø                  GR%                  \8GR&                  5      \?GRî                  GRø                  GR%                  \8GR(                  5      GS, 5       5       5       rþGS- rÿGS°GS. jGr GS°GS/ jGrGS0 Gr\%" \?GR                  GRð                  5      \?GR                  GRð                  GR%                  \8GR&                  5      \?GR                  GRð                  GR%                  \8GR(                  5      GS1 5       5       5       Gr\%" \?GR                  GRø                  5      \?GR                  GRø                  GR%                  \8GR&                  5      \?GR                  GRø                  GR%                  \8GR(                  5      GS2 5       5       5       GrGS3 GrGS4 Gr\%" \?GR                  GRø                  5      \?GR                  GRø                  GR%                  \8GR&                  5      \?GR                  GRø                  GR%                  \8GR(                  5      GS5 5       5       5       Gr	\%" \?GR                  GRð                  5      \?GR                  GRð                  GR%                  \8GR&                  5      \?GR                  GRð                  GR%                  \8GR(                  5      GS6 5       5       5       Gr
\%" \?GR                  GRÄ                  5      \?GR                  GRÄ                  GR%                  \8GR&                  5      \?GR                  GRÄ                  GR%                  \8GR(                  5      GS7 5       5       5       Gr\%" \?GR                  GRÄ                  5      \?GR                  GRÄ                  GR%                  \8GR&                  5      \?GR                  GRÄ                  GR%                  \8GR(                  5      GS8 5       5       5       Gr\%" \?GR                  GRÄ                  5      \%" \?GR                   GRÄ                  5      \?GR"                  GRÄ                  GR%                  \8GR&                  5      \?GR"                  GRÄ                  GR%                  \8GR(                  5      \?GR                  GRÄ                  GR%                  \8GR&                  5      \?GR                  GRÄ                  GR%                  \8GR(                  5      \?GR                   GRÄ                  GR%                  \8GR&                  5      \?GR                   GRÄ                  GR%                  \8GR(                  5      GS9 5       5       5       5       5       5       5       5       Gr\%" \?GR"                  Râ                  \?GR"                  Rê                  /5      \1" 5        GS¥SA\#S‹\:\J   GS:\BGS\\O   S\#4
GS; jj5       5       Gr\%" \?GR                  Râ                  \?GR                  Rê                  /5      \?GR                  Râ                  GR%                  \8GR(                  5      \1" 5         GS±SA\#S‹\:\J   GS:\BGS\\O   GS\\O   S\#4GS< jj5       5       5       Gr\%" \?GR                   Râ                  \?GR                   Rê                  /5      \1" 5          GS²SA\#S‹\:\J   GS:\BGS\\O   GS\\O   GS\\O   S\#4GS= jj5       5       GrGS¥GS> jGrGS? GrSx\\#   GS@\\#   GSA\#S\#4GSB jGrGS@\,S\#4GSC jGr\FSA\#S‹\:\J   GS:\BGS\:\\O      S\#4
GSD j5       Gr\%" \?GR0                  Râ                  5      GSE\#GSF\#S\B4GSG j5       Gr\%" \?GR2                  \?GR4                  /5      \1" 5       GSH 5       5       Gr\%" \?GR6                  /5      GSI 5       Gr\%" \?GR8                  /5      GS°GSJ j5       Gr\%" \?GR:                  /5      GSK 5       Gr\%" \?GR<                  /5      GSL 5       GrS2\#SV\#SE\\#   SR\JSa\JS\b\#\#4   4GSM jGr\%" \?GR@                  5      \1" S‚Sb5      S2\#SV\#SE\\#   SR\JSa\JS\b\#\#4   4GSN j5       5       Gr \%" \?GRB                  5      \1" S‚Sb5      S2\#SV\#SE\\#   SR\JSa\JS\b\#\#4   4GSO j5       5       Gr!S\#GSP\OS\#4GSQ jGr"S\#GSP\OS\#4GSR jGr#GSS\#S\,4GST jGr$GSU\,GSV\#S\#4GSW jGr%GSV\\#   S\#4GSX jGr&GSY\JGS:\BST\RÎ                  Så\GR„                  4GSZ jGr'GS[\#GS\\JGS]\JGS:\B4GS^ jGr(GS[\#GS_\JGS\\JGS]\JGS:\B4
GS` jGr)GS[\#S‘\:\J   GS:\B4GSa jGr*GS[\#S‘\:\J   GS:\B4GSb jGr+\%" \?GRX                  5      \1" 5       \FGS[\#S‘\:\J   GS:\B4GSc j5       5       5       Gr,    GS³GSE\#GSd\#GSe\JGSf\JGS:\BGSg\BS\#4GSh jjGr-\%" \?GR\                  5      \1" 5       \F   GS´GSE\#GSd\#GSe\JGSf\JGS:\BS\#4GSi jj5       5       5       Gr.\%" \?GR^                  5      \1" SSœ9\FGSj 5       5       5       Gr/\%" \?GR`                  5      \1" 5       SS\@RÔ                  RÖ                  4GSk j5       5       Gr0GSl\RF                  GSm\RF                  GSn\BS\B4GSo jGr1\?GRd                  Râ                  GR%                  \8GR&                  5      \?GRd                  Rê                  GR%                  \8GR&                  5      \1" SGSp9SGSq.GSr j5       5       5       Gr2\%" \?GRf                  Râ                  \?GRf                  Rê                  /5      \?GRf                  Râ                  GR%                  \8GR(                  5      \1" 5       \F  GS±SA\#S‹\b\J\J4   GS:\BGSs\\O   GSt\\O   S\#4GSu jj5       5       5       5       Gr4\%" \?GRf                  GRÄ                  5      \?GRf                  GRÄ                  GR%                  \8GR&                  5      \?GRf                  GRÄ                  GR%                  \8GR(                  5      \1" 5       \F GS¥GSE\#S‹\\b\J\J4      GS:\BGS\\b\O\O4      S\#4
GSv jj5       5       5       5       5       Gr5\%" \?GRl                  5      \%" \?GRn                  5      \%" \?GRp                  5      \F\1" 5       GSE\#Sˆ\b\JS±4   S\#4GSw j5       5       5       5       5       Gr9\%" \?GRt                  5      \%" \?GRv                  5      \%" \?GRx                  5      \F\1" 5       GSE\#Sˆ\b\JS±4   S\#4GSx j5       5       5       5       5       Gr=GSE\#Sˆ\b\JS±4   GSy\\J\J\J/\#4   S\#4GSz jGr>\%" \?GR~                  5      \%" \?GR€                  5      \%" \?GR‚                  5      \1" S 5      GS{ 5       5       5       5       GrB\%" \?GR†                  5      \1" GS|GS}5      SSGS~.GS j5       5       GrC\%" \?GRˆ                  5      \1" 5       GSµSGS€.GS� jj5       5       GrD\%" \?GRŠ                  Râ                  \?GRŠ                  Rê                  /5      \1" 5       S\GRŒ                  SSGS‚.Sr\)ST\\RÎ                     GSƒ\GRŽ                  Så\\GR„                     Sæ\B4
GS„ jj5       5       GrH\%" \?GRŠ                  GR’                  /5      S\GRŒ                  SSGS‚.Sq\)Sr\)ST\\RÎ                     GSƒ\GRŽ                  Så\\GR„                     Sæ\B4GS… jj5       GrJ\%" \'5      GS† 5       GrK\%" \?GR˜                  5      \?GR˜                  Râ                  GR%                  \8GR(                  5      \1" 5       SuSuS\@RÔ                  RÖ                  4SA\#SV\#Sk\)GS‡\)SE\\#   SR\JS\#4GSˆ jj5       5       5       GrL\%" \?GRš                  5      \?GRš                  Râ                  GR%                  \8GR(                  5      \1" S‚GS‰5      SA\#SV\#SR\JS\b\#\#4   4GSŠ j5       5       5       GrM\%" \?GRœ                  Râ                  5        GS¶SSGS‹.GSŒ\#GS�\#S0\#GSŽ\OGS�\BGS�\\#   S*\\O   S\b\#\#4   4GS‘ jjj5       GrOGS’ GrP\%" \?GR¢                  /5      \1" SSœ9\FGS«GS“ j5       5       5       GrQ\%" \?GR¤                  5      \1" 5       GS” 5       5       GrR\%" \?GR¦                  5      GS• 5       GrS\%" \?GR¨                  Râ                  \?GR¨                  Rê                  /5      SSGS–.S2\#ST\\RÎ                     S¬\\#   S\#4GS— jj5       GrU\%" \?GR¬                  Râ                  \?GR¬                  GR®                  /5      GS¥S2\#S\\J   4GS˜ jj5       GrX\%" \R|                  R~                  GR²                  5      GSªGS™ j5       GrY\%" \?GR´                  5      \1" 5       SSGSš.GS› j5       5       GrZ\%" \?GR¶                  Râ                  5      SGSœ.S2\RF                  GS	\\GRº                     S\RF                  4GS� jj5       Gr[SGSž.GSŸ jGr\SSGSš.GS  jGr]\%" \?GR¼                  5      \1" 5       GS¡ 5       5       Gr^\%" \?GR¾                  5      GS¥GS¢ j5       Gr_G\P" \?GRÀ                  \?GRÂ                  5        G\P" \?GRÄ                  \?GRN                  5        G\P" \?GRÆ                  \?GRR                  5        G\P" \?GRÈ                  \?GR¢                  5        G\P" \?GRÊ                  \?R¢                  5        G\P" \?GRÌ                  \?GRÎ                  5        G\P" \?GRÐ                  \?R°                  5        G\P" \?GRÒ                  \?GRÔ                  5        G\P" \?GRÖ                  \?Rª                  5        G\P" \?GRØ                  \?GRÚ                  5        G\P" \?GRÜ                  \?GRÞ                  5        G\P" \?GRà                  \?GRâ                  5        G\P" \?GRä                  \?GRæ                  5        G\P" \?GRè                  \?GRê                  5        G\P" \?GRì                  \?GRî                  5        G\P" \?GRð                  \?GRò                  5        G\P" \?GRô                  \?RÊ                  5        G\P" \?GRö                  \?GRø                  5        G\P" \?GRú                  \?GRü                  5        G\P" \?GRþ                  \?GR                   5        G\P" \?GR                  \?GR                  5        G\P" \?GR                  \?GR                  5        G\P" \?GR
                  \?GR                  5        G\P" \?GR                  \?GR                  5        G\P" \?GR                  \?GR                  5        G\P" \?GR                  \?R¼                  5        g(·  é    N)ÚCallableÚIterable)Únullcontext)ÚEnum)ÚpartialÚreduce)ÚchainÚproduct)ÚAnyÚcastÚOptionalÚUnion)Ú	sym_floatÚsym_intÚTensor©Úregister_decomposition)Ú	out_dtype)ÚIntLikeÚ
NumberTypeÚsuggest_memory_formatÚ
TensorLikeÚTensorSequenceType)Ú_maybe_convert_to_dtypeÚ_maybe_resize_outÚ_safe_copy_outÚout_wrapper)Ú_pytree)Útree_mapÚ__all__c                   ó    • \ rS rSrSrSrSrSrg)Ú	Reductioné1   r   é   é   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚNONEÚMEANÚSUMÚ__static_attributes__r&   ó    ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_decomp/decompositions.pyr"   r"   1   s   † Ø€DØ€DØ
ƒCr/   r"   FÚfÚtype_promotionÚcompute_dtype_onlyÚinclude_non_tensor_argsc                 óR   ^ ^^^• [         R                  " T 5      UU UU4S j5       nU$ )Nc                  ó„  >^^	• T(       a   [         [        R                  R                  4O[         4n[        R
                  " U 0 UD6 Vs/ s H  n[        X25      (       d  M  UPM     nn[        R                  " UST06u  mm	U4S jnU	4S jnT" [        XP5      0 [        XQ5      D6nT
(       a  U$ [        Xg5      $ s  snf )NÚtype_promotion_kindc                 óT   >• [        U [        5      (       a  U R                  T5      $ U $ ©N©Ú
isinstancer   Úto)ÚxÚcomputation_dtypes    €r0   Úincrease_precÚ0type_casts.<locals>.inner.<locals>.increase_precO   s%   ø€ Ü˜!œV×$Ñ$Ø—t‘tÐ-Ó.Ð.à�r/   c                 óT   >• [        U [        5      (       a  U R                  T5      $ U $ r9   r:   )r=   Úresult_dtypes    €r0   Údecrease_precÚ0type_casts.<locals>.inner.<locals>.decrease_precU   s$   ø€ Ü˜!œV×$Ñ$Ø—t‘t˜LÓ)Ð)à�r/   )
r   ÚtorchÚtypesÚ_NumberÚpytreeÚarg_tree_leavesr;   ÚutilsÚelementwise_dtypesr   )ÚargsÚkwargsÚallowed_typesr=   Ú	flat_argsr?   rC   Úrr>   rB   r3   r1   r4   r2   s           @@€€€€r0   ÚinnerÚtype_casts.<locals>.inner@   s½   ú€ ö .EŒV”U—[‘[×(Ñ(Ñ)Ì6È)ð 	ô
 ×+Ò+¨TÐ<°VÒ<ó
â<�Ü˜!×+÷ Ù<ð 	ð 
ô
 +0×*BÒ*BØð+
Ø,:ñ+
Ñ'Ð˜<õ
	õ	ñ Œx˜Ó,ÐP´¸Ó0OÑPˆÞØˆHä˜MÓ-Ð-ùò5
s   Á
B=Á"B=)Ú	functoolsÚwraps)r1   r2   r3   r4   rQ   s   ```` r0   Ú
type_castsrU   :   s(   û€ ô ‡_‚_�QÓ÷.ó ð.ð@ €Lr/   T)r2   r3   )r2   )r2   r4   r=   ÚdimÚreturnc                 ól   • [        XR                  5       -
  5       H  nU R                  S5      n M     U $ ©Néÿÿÿÿ)ÚrangerV   Ú	unsqueeze)r=   rV   Ú_s      r0   Ú_unsqueeze_to_dimr^   w   s+   € Ü�3Ÿ™›‘=Ö!ˆØ�K‰K˜‹OŠñ "à€Hr/   Ú
grad_inputÚout_gradÚyc                 ó2   • U SX-  -
  R                  5       -  $ ©Nr$   ©Úconj_physical©r`   ra   s     r0   Útanh_backwardrg   }   s   € ð �q˜1™5‘y×/Ñ/Ó1Ñ1Ð1r/   c                 ó2   • XSU-
  -  R                  5       -  $ rc   rd   rf   s     r0   Úsigmoid_backwardri   „   s   € ð ˜A ™E‘{×1Ñ1Ó3Ñ3Ð3r/   ÚbetaÚ	thresholdc                 óp   • X-  R                  5       n[        R                  " X-  U:„  X U-  US-   -  5      $ ©Nç      ð?)ÚexprE   Úwhere)r`   r=   rj   rk   Úzs        r0   Úsoftplus_backwardrr   ‹   s7   € ð 
‰�‰Ó€AÜ�;Š;˜™ IÑ-¨xÀA¹ÈÈSÉÑ9QÓRÐRr/   Úgrad_outputÚalphaÚscaleÚinput_scaleÚ	is_resultÚself_or_resultc                 óÞ   • X-  nUnUnU(       a$  [         R                  " US:*  X-  XV-   -  X-  5      $ [         R                  " US:*  X-  U-  [         R                  " XX-  5      -  X-  5      $ ©Nr   )rE   rp   ro   )	rs   rt   ru   rv   rw   rx   ÚnegcoefÚposcoefÚ
negiptcoefs	            r0   Úelu_backwardr~   “   s‚   € ð ‰m€GØ€GØ€JÞÜ�{Š{Ø˜aÑØÑ$¨Ñ(@ÑAØÑ!ó
ð 	
ô �{Š{Ø˜aÑØÑ$ wÑ.´·²¸>Ñ;VÓ1WÑWØÑ!ó
ð 	
r/   c                 ó.   • [         R                  " X5      $ r9   )rE   Ú	full_like©ÚselfÚvalues     r0   Úfill_scalarr„   ¯   s   € ä�?Š?˜4Ó'Ð'r/   rƒ   c                 óˆ   ^• [         R                  " TR                  5       S:H  U4S j5        [        R	                  U T5      $ )Nr   c                  ó,   >• ST R                  5        S3$ )Nz@fill only supports 0-dimension value tensor but got tensor with z dimensions©rV   )rƒ   s   €r0   Ú<lambda>Úfill_tensor.<locals>.<lambda>¸   s   ø€ ÐRÐSX×S\ÑS\ÓS^ÐR_Ð_jÑkr/   )rE   Ú_checkrV   ÚatenÚcopyr�   s    `r0   Úfill_tensorr�   ´   s3   ø€ ä	‡L‚LØ�	‰	‹�qÑÜkôô �9‰9�T˜5Ó!Ð!r/   r‚   c                 ó^   • [         R                  " [         R                  " U S-   SS9SS9S-  $ ©Né   r   ©Úminé   ©Úmax©rE   Úclamp©r‚   s    r0   Úhardsigmoidr™   ½   s)   € ô �;Š;”u—{’{ 4¨!¡8°Ñ3¸Ñ;¸aÑ?Ð?r/   c                 óJ   • [         R                  " US:„  US:  -  U S-  S5      $ )Ng      Àg      @gUUUUUUÅ?ç        ©rE   rp   ©rs   r‚   s     r0   Úhardsigmoid_backwardrž   Ä   s0   € ô �;Š;Ø	�‰˜ ™Ñ$Ø�yÑ!Øóð r/   Úmin_valÚmax_valc                 ó@   • [         R                  " X:*  X:¬  -  SU 5      $ )Nr›   rœ   )rs   r‚   rŸ   r    s       r0   Úhardtanh_backwardr¢   Ï   s    € ô
 �;Š;˜™¨D©OÑ<¸cÀ;ÓOÐOr/   c                 ód   • U [         R                  " [         R                  " U S-   SS9SS9-  S-  $ r�   r–   r˜   s    r0   Ú	hardswishr¤   ×   s.   € ð ”%—+’+œeŸkšk¨$°©(¸Ñ:ÀÑBÑBÀQÑFÐFr/   c           
      óz   • [         R                  " US:*  S[         R                  " US:  XS-  S-   -  U 5      5      $ )Néýÿÿÿr›   r�   ç      à?rœ   r�   s     r0   Úhardswish_backwardr¨   Þ   s?   € ô �;Š;Ø�‰
ØÜ�Š�D˜1‘H˜k°Q©h¸#Ñ-=Ñ>ÀÓLóð r/   c                 ó6   • [         R                  " X:*  SU 5      $ rz   rœ   )rs   r‚   rk   s      r0   Úthreshold_backwardrª   é   s   € ô �;Š;�tÑ(¨!¨[Ó9Ð9r/   Únegative_slopeÚself_is_resultc                 ó<   • [         R                  " US:„  X U-  5      $ rz   rœ   )rs   r‚   r«   r¬   s       r0   Úleaky_relu_backwardr®   ï   s   € ô �;Š;�t˜a‘x ¸NÑ.JÓKÐKr/   ÚgradÚapproximatec                 ó€  • SnSnSnUS:X  ab  X5-  S-  nSnX-  nX�-  n	XaXy-  -   -  n
[         R                  " U
5      nSU-  nSU-   nSU-  nSX»-  -
  nUSSU-  U-  -   -  nXÏ-  U-  nXU-   -  $ UnXT-  S-  nSS[         R                  " UU-  5      -   -  nU[         R                  " X-  S	-  5      -  nU UUU-  -   -  $ )
NgÍ;fž ö?gÍ;fž æ?gm›BP×ò?Útanhr§   g÷Hmâä¦?r$   r�   g      à¿)rE   r²   Úerfro   )r¯   r‚   r°   ÚM_SQRT2Ú	M_SQRT1_2Ú
M_2_SQRTPIÚkBetaÚkKappaÚx_sqÚx_cuberQ   Ú
tanh_innerÚleftÚrightÚleft_derivativeÚtanh_derivativeÚinner_derivativeÚright_derivativeÚkAlphaÚcdfÚpdfs                        r0   Úgelu_backwardrÅ   ø   s  € ð %€GØ&€IØ'€JØ�fÓØÑ$ sÑ*ˆØˆØ‰{ˆØ‘ˆØ ¡Ñ/Ñ0ˆÜ—Z’Z Ó&ˆ
à�T‰zˆØ�J‘ˆà ™+ˆà˜jÑ5Ñ5ˆØ  A¨¨F©
°TÑ(9Ñ$9Ñ:ÐØÑ1Ð4DÑDÐàÐ)9Ñ9Ñ:Ð:àˆØÑ&¨Ñ,ˆØ�QœŸš 4¨&¡=Ó1Ñ1Ñ2ˆØ”e—i’i ¡¨dÑ 2Ó3Ñ3ˆØ�s˜T C™ZÑ'Ñ(Ð(r/   Úinputc                 ó¨   • [         R                  " [        R                  " U5      5      n[         R                  " U5      nX-  SX"-  -
  -  nXU-   -  $ rc   )rE   r²   ÚFÚsoftplusÚsigmoid)rs   rÆ   Úinput_tanh_softplusÚinput_sigmoidÚouts        r0   Úmish_backwardrÎ     sN   € ô  Ÿ*š*¤Q§Z¢Z°Ó%6Ó7ÐÜ—M’M %Ó(€MØ
Ñ
 1Ð':Ñ'PÑ#PÑ
Q€CØ°Ñ3Ñ4Ð4r/   c                 ó4   • U [         R                  " U 5      -  $ r9   )rE   rÊ   r˜   s    r0   ÚsilurÐ   "  s   € ð ”%—-’- Ó%Ñ%Ð%r/   c                 ó\   • SS[         R                  " U* 5      -   -  nX-  SUSU-
  -  -   -  $ rc   )rE   ro   )rs   r‚   rÊ   s      r0   Úsilu_backwardrÒ   )  s:   € ð �1”u—y’y $ Ó'Ñ'Ñ(€GØÑ  A¨°°G±Ñ(<Ñ$<Ñ=Ð=r/   Úweightc                 ó<   • [         R                  " U S:„  XU -  5      $ rz   rœ   )r‚   rÓ   s     r0   Ú_prelu_kernelrÕ   1  s   € ä�;Š;�t˜a‘x °¡}Ó5Ð5r/   c                 ó|   • [         R                  " US:„  XU -  5      n[         R                  " US:„  SX-  5      nX44$ )Nr   r›   rœ   )rs   r‚   rÓ   Ú
input_gradÚweight_grads        r0   Ú_prelu_kernel_backwardrÙ   6  s?   € ô —’˜T A™X {¸[Ñ4HÓI€JÜ—+’+˜d Q™h¨¨TÑ-?Ó@€KØÐ$Ð$r/   ÚnoiseÚlowerÚupperÚtrainingc                 ó|   • U(       a  XC-
  S:”  a  U R                  U5      $ X4-   S-  n[        R                  XXv5      $ )Ng�íµ ÷Æ°>r%   )Úmulr‹   r®   )rs   r‚   rÚ   rÛ   rÜ   rÝ   r¬   r«   s           r0   Úrrelu_with_noise_backwardrà   A  sC   € ö �E‘M DÓ(Ø�‰˜uÓ%Ð%à™-¨1Ñ,ˆÜ×'Ñ'Ø˜~ó
ð 	
r/   Úbufferc                 óà   • US:  n[         R                  " USS5      n[         R                  " USS5      n[         R                  " [         R                  " U5      * 5      nXXVSU-   -  -  -
  -  $ )Nr   r$   rZ   )rE   rp   ro   Úabs)rs   r‚   rá   Úin_negativeÚ	max_derivÚsignrq   s          r0   Úlog_sigmoid_backwardrç   V  sc   € ð ˜‘(€KÜ—’˜K¨¨AÓ.€IÜ�;Š;�{ A rÓ*€DÜ�	Š	”5—9’9˜T“?Ð"Ó#€AØ d°1°q±5©kÑ&:Ñ:Ñ;Ð;r/   Úotherc                 ó"  • [         R                  " U R                  5      (       d%  [         R                  " U R                  5      (       a  [        R
                  OU R                  nU R                  SSUS9nU [        R                  " X15      -  $ )Nr&   ç       @©Údtype)rJ   Úis_integer_dtyperì   Úis_boolean_dtyperE   Úfloat32Únew_fullÚpow)r‚   rè   Ú	two_dtypeÚ
two_tensors       r0   Úldexprô   c  sl   € ô
 ×!Ò! $§*¡*×-Ñ-´×1GÒ1GÈÏ
É
×1SÑ1Sô 	�Šà�Z‰Zð ð
 —‘˜r 3¨i�Ð8€JØ”%—)’)˜JÓ.Ñ.Ð.r/   ÚlossÚ	reductionc                 óÖ   • U[         R                  R                  :X  a  [        R                  " U 5      $ U[         R
                  R                  :X  a  [        R                  " U 5      $ U $ r9   )r"   r,   rƒ   rE   Úmeanr-   Úsum)rõ   rö   s     r0   Úapply_loss_reductionrú   o  sH   € Ø”I—N‘N×(Ñ(Ó(Ü�zŠz˜$ÓÐØ	”i—m‘m×)Ñ)Ó	)Ü�yŠy˜‹Ðàˆr/   rì   c                 óÜ   • U [         R                  :X  a  [         R                  $ U [         R                  :X  a  [         R                  $ U [         R
                  :X  a  [         R                  $ g r9   )rE   Ú	complex32Úfloat16Ú	complex64rï   Ú
complex128Úfloat64rë   s    r0   Úto_real_dtyper  x  sK   € Ø”—‘ÓÜ�}‰}ÐØ	”%—/‘/Ó	!Ü�}‰}ÐØ	”%×"Ñ"Ó	"Ü�}‰}Ðð 
#r/   Útargetc                 ó&   • X-
  S-  n[        X25      $ )Nr%   )rú   )r‚   r  rö   rõ   s       r0   Úmse_lossr  ‡  s   € ð ‰M˜aÑ€DÜ Ó0Ð0r/   c                 ó|   • U[         R                  R                  :X  a  SUR                  5       -  OSnXAU-
  -  U -  $ )Nrê   )r"   r,   rƒ   Únumel)rs   rÆ   r  rö   Únorms        r0   Úmse_loss_backwardr  ‘  s9   € ð #,¬y¯~©~×/CÑ/CÓ"Cˆ3�—‘“ÒÈ€DØ˜6‘>Ñ" [Ñ0Ð0r/   c                 óä   • [         R                  " XUS9nU R                  [        S5      5      n[         R                  " XASS9n[         R
                  " U5      n[         R                  " XVU5      $ )N)rV   rì   z-infT©rV   Úkeepdim)rE   ÚsoftmaxÚeqÚfloatÚallÚ
zeros_likerp   )r‚   rV   rì   rÍ   ÚmaskedÚmasked_rowsÚzeross          r0   Úsafe_softmaxr  ›  sU   € ä
�-Š-˜¨UÑ
3€CØ�W‰W”U˜6“]Ó#€FÜ—)’)˜F°TÑ:€KÜ×Ò˜SÓ!€EÜ�;Š;�{¨3Ó/Ð/r/   rn   c                 óŽ   • X-
  R                  5       n[        R                  " XC:  SUS-  -  U-  USU-  -
  5      n[        XB5      $ )Nr§   r%   )rã   rE   rp   rú   )r‚   r  rö   rj   rõ   s        r0   Úsmooth_l1_lossr  ¤  sI   € ð ‰M×ÑÓ €Dä�;Š;�t‘{ C¨$°©'¡M°DÑ$8¸$ÀÀtÁÑ:KÓL€DÜ Ó0Ð0r/   c                 ó  • U[         R                  R                  :X  a  SUR                  5       -  OSnX-
  n[        R
                  " U5      nXP-  n[        R                  " Xt:  X†-  U-  U[        R                  " U5      -  5      $ rm   )r"   r,   rƒ   r  rE   rã   rp   ræ   )	rs   r‚   r  rö   rj   r  r=   Úabs_xÚ	norm_grads	            r0   Úsmooth_l1_loss_backwardr  ³  ss   € ð
 "+¬i¯n©n×.BÑ.BÓ!Bˆ3�—‘“ÒÈ€DØ‰€AÜ�IŠI�a‹L€EØÑ"€IÜ�;Š;Ø‰Ø‰˜ÑØ”E—J’J˜q“MÑ!óð r/   c                 óZ   • [        XX#U5      n[        XVR                  5        [        XeSS9$ ©NT©Ú	copy_fromÚcopy_toÚexact_dtype)r  r   Úshaper   )rs   r‚   r  rö   rj   r_   Úresults          r0   Úsmooth_l1_loss_backward_outr#  Ã  s+   € ô % [¸È4ÓP€FÜ�j§,¡,Ô/Ü FÈDÑQÐQr/   Údeltac           
      óø   • U[         R                  R                  :X  a  SUR                  5       -  OSnX-
  n[        R
                  " Xd* :  U* U -  U-  [        R
                  " Xd:„  XP-  U-  XV-  U -  5      5      $ rm   )r"   r,   rƒ   r  rE   rp   )rs   r‚   r  rö   r$  r  r=   s          r0   Úhuber_loss_backwardr&  Ò  sv   € ð
 "+¬i¯n©n×.BÑ.BÓ!Bˆ3�—‘“ÒÈ€DØ‰€AÜ�;Š;Ø	ˆF‰
Ø	ˆ�Ñ˜eÑ#Ü�Š�A‘I˜tÑ1°EÑ9¸4¹8ÀkÑ;QÓRóð r/   c                 óZ   • [        XX#U5      n[        XVR                  5        [        XeSS9$ r  )r&  r   r!  r   )rs   r‚   r  rö   r$  r_   r"  s          r0   Úhuber_loss_backward_outr(  á  s+   € ô ! °FÀuÓM€FÜ�j§,¡,Ô/Ü FÈDÑQÐQr/   Úignore_indexÚtotal_weightc                 óŒ  • UR                  5       S:  a  SOSnU[        R                  R                  :X  a  X-  n UR	                  U5      n[
        R                  " X%:g  US5      n[
        R                  " U5      n	[
        R                  " X—US5      n	U	R                  5       U R                  5       s=:”  a  S:”  a  O  OU R	                  U5      n UbO  [        UR                  5       5       V
s/ s H  n
SPM     nn
UR                  S   X·'   UR                  U5      nX-  n [
        R                  " X%:g  U S5      n X�-  $ s  sn
f )Nr%   r   r$   g      ð¿)rV   r"   r,   rƒ   r\   rE   rp   r  Úscatterr[   r!  Úreshape)rs   r‚   r  rÓ   rö   r)  r*  Úchannel_dimÚsafe_targetr_   r]   Ú	new_shapes               r0   Ú_nll_loss_backwardr1  ð  s  € ð —x‘x“z A“~‘!¨1€KØ”I—N‘N×(Ñ(Ó(Ø!Ñ0ˆà×Ñ˜kÓ*€FÜ—+’+˜fÑ4°f¸aÓ@€KÜ×!Ò! $Ó'€JÜ—’˜z¸ÀTÓJ€Jà‡~�~Ó˜+Ÿ/™/Ó+Õ/¨aÖ/Ø!×+Ñ+¨KÓ8ˆàÑÜ % d§h¡h£jÔ 1Ó2Ò 1˜1“QÑ 1ˆ	Ð2Ø!'§¡¨a¡ˆ	ÑØ—‘ 	Ó*ˆØ!Ñ*ˆä—+’+˜fÑ4°kÀ1ÓE€KàÑ#Ð#ùò 3s   Ã/Ec                 ó°  • UR                  5       S::  a  [        S5      e[        R                  " UR                  5       U5      nUR	                  U5      nUS-  S:w  a  [        SU SU 35      eUS-  nUR                  USU5      nUR                  X5U5      n[        R                  " U5      nSU-
  U-  U-  U -  n	X€-  n[        R                  " X‰/US9$ )Nr   z*glu does not support 0-dimensional tensorsr%   z.Halving dimension must be even, but dimension z	 is size rn   r‡   )	rV   ÚAssertionErrorrJ   Úcanonicalize_dimÚsizeÚnarrowrE   rÊ   Úcat)
rs   r‚   rV   Úwrap_dimÚnInÚ	inputSizeÚ	firstHalfÚ
secondHalfÚgradInputFirstHalfÚgradInputSecondHalfs
             r0   Úglu_backwardr?    sæ   € ð ‡x�xƒz�QƒÜÐIÓJÐJÜ×%Ò% d§h¡h£j°#Ó6€HØ
�)‰)�HÓ
€CØ
ˆQ�w�!ƒ|ÜØ<¸X¸JÀiÐPSÈuÐUó
ð 	
ð �q‘€IØ—‘˜H a¨Ó3€IØ—‘˜X°)Ó<€JÜŸš zÓ2Ðà	Ð!Ñ	!Ð%7Ñ7¸)ÑCÀkÑQð ð ,Ñ9ÐÜ�9Š9Ð(Ð>ÀHÑMÐMr/   c           	      óˆ  • SUR                  5       s=::  a  S::  d  O  [        SUR                  5        S35      eUR                  5       S:”  a  [        SUR                  5        S35      eUR                  5       S:H  =(       a    UR                  5       S:H  nU(       dF  UR                  S   UR                  S   :X  d&  [        SUR                   SUR                   S	35      eUR                  5       S:w  a*  [        S
UR                   SUR                  5        S35      eUb,  UR                  5       UR                  S   :w  a  [        S5      eU[        R
                  R                  :X  a…  UR                  5       S:X  aq  U R                  5       S:X  a   U R                  S   UR                  S   :X  d<  [        SUR                  S    SU R                  5        SU R                  S    35      eO@U R                  5       S::  a  U R                  5       S:X  d  [        SU R                   35      e[        XX#XEU5      $ )Nr   r%   ú%input tensor should be 1D or 2D, got ÚDr$   úA0D or 1D target tensor expected, multi-target not supported, got úsize mismatch (got input: ú
, target: Ú)ú:expected total_weight to be a single element tensor, got: z (z
 elements)rZ   z<weight tensor should be defined either for all or no classesz7Expected a tensor of dimension 1 and tensor.size[0] == z but got: dimension z and tensor.size[0] == z7Expected a single element grad_output tensor, but got: )rV   r3  r!  r  r"   r+   rƒ   r1  )rs   r‚   r  rÓ   rö   r)  r*  Úno_batch_dims           r0   Únll_loss_backwardrI  '  s+  € ð �—‘“Õ ˜qÕ ÜÐDÀTÇXÁXÃZÀLÐPQÐRÓSÐSØ‡z�zƒ|�aÓÜØOÐPV×PZÑPZÓP\È~Ð]^Ð_ó
ð 	
ð —8‘8“: ‘?×8 v§z¡z£|°qÑ'8€LÞ˜TŸZ™Z¨™]¨f¯l©l¸1©oÓ=ÜØ(¨¯©¨°J¸v¿|¹|¸nÈAÐNó
ð 	
ð ×ÑÓ˜qÓ ÜØHØ×!Ñ!Ð" " \×%7Ñ%7Ó%9Ð$:¸*ðFó
ð 	
ð
 Ñ˜fŸl™l›n°·
±
¸2±Ó>ÜØJó
ð 	
ð ”I—N‘N×(Ñ(Ó(¨T¯X©X«Z¸1«_Ø—‘Ó! QÓ&¨;×+<Ñ+<¸QÑ+?À4Ç:Á:ÈaÁ=Ó+PÜ ØIÈ$Ï*É*ÐUVÉ-Èð Y"Ø"-§/¡/Ó"3Ð!4Ð4KÈK×L]ÑL]Ð^_ÑL`ÐKaðcóð ð ,Qð —‘Ó! QÓ&¨;×+<Ñ+<Ó+>À!Ó+CÜ ØIÈ+×J[ÑJ[ÐI\Ð]óð ô Ø˜6¨9ÀLóð r/   c           	      ód  • UR                  5       S:w  a  [        SUR                  5        35      eUR                  5       S:w  a  [        SUR                  5        35      eUR                  S   UR                  S   :X  a@  UR                  S   UR                  S   :X  a   UR                  S   UR                  S   :X  d%  [        SUR                   S	UR                   35      eUR                  5       S:w  a*  [        S
UR                   SUR                  5        S35      e[	        XX#XEU5      $ )Né   zSonly batches of spatial inputs supported (4D tensors), but got input of dimension: r�   zUonly batches of spatial targets supported (3D tensors) but got targets of dimension: r   r%   r$   rD  rE  rG  z ( z, elements))rV   r3  r!  r  r1  )rs   r‚   r  rÓ   rö   r)  r*  s          r0   Únll_loss2d_backwardrL  Z  s5  € ð ‡x�xƒz�QƒÜØaÐbf×bjÑbjÓblÐamÐnó
ð 	
ð ‡z�zƒ|�qÓÜØcÐdj×dnÑdnÓdpÐcqÐró
ð 	
ð
 	�
‰
�1‰˜Ÿ™ a™Ó(Ø�J‰J�q‰M˜VŸ\™\¨!™_Ó,Ø�J‰J�q‰M˜VŸ\™\¨!™_Ó,äØ(¨¯©¨°J¸v¿|¹|¸nÐMó
ð 	
ð ×ÑÓ˜qÓ ÜðØ ×&Ñ&Ð' s¨<×+=Ñ+=Ó+?Ð*@ÀðMó
ð 	
ô
 Ø˜6¨9ÀLóð r/   c           	      ó(  • US-
  [         R                  " [         R                  " U * 5      U R                  SS5      5      -  U[         R                  " [         R                  " U 5      U R                  SS5      5      -  -
  nUb  XB-  n[        XC5      $ )Nr$   r&   iœÿÿÿ)rE   ÚmaximumÚlog1prð   Úlogrú   )r‚   r  rÓ   rö   rõ   s        r0   Úbinary_cross_entropyrQ  ƒ  s~   € ð �Q‰Jœ%Ÿ-š-Ü�Š�T�EÓ˜DŸM™M¨"¨dÓ3óñ à”—’œuŸyšy¨›°·±¸bÀ$Ó0GÓHÑHñI€Dð ÑØ‰}ˆÜ Ó0Ð0r/   c                 ó¾   • SnXU-
  -  [         R                  " USU-
  -  US9-  nUb  Xc-  nU[        R                  R                  :X  a  XaR                  5       -  nU$ )Ngê-�™—q=r$   r‘   )rE   r—   r"   r,   rƒ   r  )rs   r‚   r  rÓ   rö   ÚEPSILONr"  s          r0   Úbinary_cross_entropy_backwardrT  ™  sa   € ð €GØ 6™MÑ*¬U¯[ª[¸ÀÀTÁÑ9JÐPWÑ-XÑX€FØÑØ‘ˆØ”I—N‘N×(Ñ(Ó(ØŸ*™*›,Ñ&ˆØ€Mr/   c                 ót   • [         R                  " [         R                  " U * U-  5      5      n[        X25      $ r9   )rE   rO  ro   rú   )rÆ   r  rö   rõ   s       r0   Úsoft_margin_lossrV  ¬  s,   € ô �;Š;”u—y’y % ¨&¡Ó1Ó2€DÜ Ó0Ð0r/   c                 ó¦   • X -  [         R                  " X!-  5      S-
  -  nU[        R                  R                  :X  a  XAR                  5       -  nU$ rc   )rE   rÊ   r"   r,   rƒ   r  )rs   r‚   r  rö   r_   s        r0   Úsoft_margin_loss_backwardrX  ¸  sG   € ð Ñ%¬¯ª°v±}Ó)EÈÑ)IÑJ€JØ”I—N‘N×(Ñ(Ó(Ø§*¡*£,Ñ.ˆ
ØÐr/   Úpc                 ó.   • [         R                  X-
  US9$ )N)rY  )r‹   r  )rÆ   rè   rY  s      r0   Údistr[  Ç  s   € ô �9‰9�U‘] aˆ9Ð(Ð(r/   Úx1Úx2c                 ó  • U R                  S5      R                  SS5      n[        R                  " U[        R                  S9nUR                  S5      R                  SS5      n[        R                  " U[        R                  S9n[        R
                  " U R                  S5      X#/S5      n[        R
                  " XU/S5      nUR                  UR                  5      nUR                  S5      R                  5       $ )Nr%   rZ   T©Úmemory_formatéþÿÿÿr   )rñ   rù   rE   Ú	ones_likeÚcontiguous_formatr7  rß   ÚmatmulÚmTÚ	clamp_minÚsqrt)	r\  r]  Úx1_normÚx1_padÚx2_normÚx2_padÚx1_Úx2_r"  s	            r0   Ú_euclidean_distrn  Í  s¾   € ð �f‰f�Q‹i�m‰m˜B Ó%€GÜ�_Š_˜W´E×4KÑ4KÑL€FØ�f‰f�Q‹i�m‰m˜B Ó%€GÜ�_Š_˜W´E×4KÑ4KÑL€FÜ
�)Š)�R—V‘V˜B“Z Ð1°2Ó
6€CÜ
�)Š)�R Ð)¨2Ó
.€CØ�Z‰Z˜Ÿ™Ó€FØ×Ñ˜AÓ×#Ñ#Ó%Ð%r/   Úinput_sizesÚstartÚendÚstepc                 óT   • U R                  U5      n[        R                  " X`X#XE5      $ r9   )Ú	new_zerosrE   Úslice_scatter)rs   ro  rV   rp  rq  rr  r_   s          r0   Úslice_backwardrv  Ú  s)   € ð ×&Ñ& {Ó3€JÜ×Ò˜z¸ÀCÓNÐNr/   r$   c                 óè  • SSK Jn  U R                  5       nUS:X  a  [        S5      e[        R
                  " U R                  5       U5      n[        U R                  5       5      n[        U R                  5       5      nUS::  a  [        S5      eUb  UOSn	Ub  UO[        R                  n
U	S:  a  X—U   -  n	U
S:  a  X§U   -  n
U	S:  a  Sn	OX—U   :”  a  Xq   n	U" U
[        R                  :H  5      (       a  Xq   n
OX©:  a  U	n
OX§U   :”  a  Xq   n
U R                  5       X˜U   -  -   nX©-
  nXÄ-   S-
  U-  Xq'   X�==   U-  ss'   U R                  (       a  [        S5      eU R                  XxU5      $ )Nr   ©Ústatically_known_truez,slice() cannot be applied to a 0-dim tensor.zslice step must be positiver$   z<Slice decomposition for quantized tensors aren't implemented)Ú%torch.fx.experimental.symbolic_shapesry  rV   ÚRuntimeErrorrJ   r4  Úlistr5  ÚstrideÚsysÚmaxsizeÚstorage_offsetÚis_quantizedÚNotImplementedErrorÚ
as_strided)r‚   rV   rp  rq  rr  ry  ÚndimÚsizesÚstridesÚ	start_valÚend_valr€  Úlens                r0   Úslice_forwardrŠ  è  sr  € õ Là�8‰8‹:€DØˆqƒyÜÐIÓJÐJÜ
×
 Ò
  §¡£¨SÓ
1€CÜ�—‘“Ó€EÜ�4—;‘;“=Ó!€GàˆqƒyÜÐ8Ó9Ð9àÑ*‘°€IØ‘_‰c¬#¯+©+€Gà�1ƒ}Ø˜3‘ZÑˆ	à�ƒ{Ø˜‘:Ñˆà�1ƒ}Ø‰	Ø	˜3‘ZÓ	Ø‘Jˆ	á˜W¬¯©Ñ3×4Ñ4Ø‘*‰Ø	Ó	Ø‰Ø	˜‘:Ó	Ø‘*ˆà×(Ñ(Ó*¨YÀ¹Ñ-EÑE€NØ
Ñ
€CØ‘*˜q‘. TÑ)€E�JØƒL�DÑƒLà××Ü!ØJó
ð 	
ð �‰˜u¨~Ó>Ð>r/   c                 ón   ^• U R                   U   mS[        4U4S jjnU" USTS5      nU" X2TT5      nX#4$ )zb
Normalize start and end such that both are in the range
[0, x.get_size()[dim]] and start <= end.
rW   c                 óN   >• U c  U$ U S:  a  U T-   n [        [        X5      U5      $ rz   ©r’   r•   )ÚvalrÛ   rÜ   ÚdefaultÚdim_sizes       €r0   Ú
clamp_wrapÚ(_normalize_start_end.<locals>.clamp_wrap(  s.   ø€ Ø‰;ØˆNØ�‹7Ø˜‘.ˆCÜ”3�s“? EÓ*Ð*r/   r   )r!  Úint)r=   rV   rp  rq  r‘  r�  s        @r0   Ú_normalize_start_endr”    sF   ø€ ð �w‰w�s‰|€Hð+´#÷ +ñ �u˜a ¨1Ó-€EÙ
�S ¨8Ó
4€CØˆ:Ðr/   Úsrcc           	      óh  • [         R                  " U R                  U5      nU R                  U   n[	        XX45      u  p4[        U R                  5      nXC-
  US-
  -   U-  Xr'   UR                  U5      nUS:X  a  XF:X  a  US:X  a  UR                  5       $ S /U R                  5       -  n[        R                  " X`R                  S9n	X“-
  U-  X‚'   [        R                  " X`R                  [        R                  S9n
US:w  a  [        R                  " X©U:¬  5      n
XF:w  a  [        R                  " X©U:  5      n
US:w  a  [        R                  " X©U-
  U-  S:H  5      n
S/U R                  5       -  nSX²'   U
R                  U5      n
[         R#                  U
[         R%                  XUS5      U 5      $ )Nr$   r   ©Údevice©r˜  rì   rZ   )rJ   r4  r„  r!  r”  r|  ÚexpandÚclonerV   rE   Úaranger˜  ÚonesÚboolÚlogical_andÚviewr‹   rp   Ú_unsafe_masked_index)rÆ   r•  rV   rp  rq  rr  r�  Úsrc_sizeÚindicesÚidxÚmaskÚ
mask_shapes               r0   ru  ru  6  sr  € ô ×
 Ò
  §¡¨SÓ
1€CØ�{‰{˜3Ñ€HÜ% e°%Ó=�J€Eä�E—K‘KÓ €HØ‘[ D¨1¡HÑ-°$Ñ6€H�MØ
�*‰*�XÓ
€Cà�ƒz�c“o¨$°!«)Ø�y‰y‹{Ðà'+ f¨u¯y©y«{Ñ&:€GÜ
�,Š,�x¯©Ñ
5€CØ‘K DÑ(€G�Lä�:Š:�h§|¡|¼5¿:¹:ÑF€DØ�ƒzÜ× Ò  ¨e¡|Ó4ˆà
ƒÜ× Ò  ¨S¡yÓ1ˆàˆqƒyÜ× Ò  ¨e©°tÑ';¸qÑ'@ÓAˆà��u—y‘y“{Ñ"€JØ€J�OØ�9‰9�ZÓ €DÜ�:‰:�dœD×5Ñ5°cÀÈ!ÓLÈeÓTÐTr/   Úindexc                 óR   • U R                  U5      n[        R                  " X@X#5      $ r9   )rt  rE   Úselect_scatter)rs   ro  rV   r§  r_   s        r0   Úselect_backwardrª  _  s'   € ð ×&Ñ& {Ó3€JÜ×Ò 
¸ÓDÐDr/   ÚoffsetÚdim1Údim2c                 óT   • U R                  U5      n[        R                  " XPX#U5      $ r9   )rt  rE   Údiagonal_scatter)rs   ro  r«  r¬  r­  r_   s         r0   Údiagonal_backwardr°  f  s)   € ð
 ×&Ñ& {Ó3€JÜ×!Ò! *¸6ÈÓNÐNr/   Úinput_dtypec                 óH   • U R                   U:w  a  UR                  U5      nU$ r9   )rì   r<   )rs   r_   r±  s      r0   Ú_cast_grad_to_input_dtyper³  o  s&   € ð ×Ñ˜KÓ'Ø—]‘] ;Ó/ˆ
ØÐr/   Úoutputc                 ór   • X-  nXA[         R                  " XBSS9-  -
  n[        XU5      R                  5       $ ©NTr
  )rE   rù   r³  Ú
contiguous)rs   r´  rV   r±  Únew_grad_outputr_   s         r0   Ú_softmax_backward_datar¹  w  sC   € ð "Ñ*€OØ ¬E¯IªIØ¨$ñ-ñ $ñ €Jô % [¸kÓJ×UÑUÓWÐWr/   c                 óx   • U [         R                  " U5      [         R                  " XSS9-  -
  n[        XU5      $ r¶  )rE   ro   rù   r³  )rs   r´  rV   r±  r_   s        r0   Ú_log_softmax_backward_datar»  ‰  s=   € ð œuŸyšy¨Ó0´5·9²9Ø dñ4ñ  ñ €Jô % [¸kÓJÐJr/   c                 óÜ   • XS-  -   X!S-
  -  -
  n[        [        R                  [        R                  US9nU" SXd5      R	                  S5      nU" SX-  U5      R	                  S5      n	X‰-   $ )z/Utility function to implement im2col and col2imr%   r$   ©rì   r˜  r   rZ   )r   rE   rœ  Úint64r\   )
Úinput_dÚkernel_dÚ
dilation_dÚ	padding_dÚstride_dr˜  Úblocks_dÚ	arange_kwÚblocks_d_indicesÚkernel_grids
             r0   Ú _im2col_col2im_indices_along_dimrÈ  •  su   € ð  Q™Ñ&¨À!±|Ñ)DÑD€HäœŸ™¬E¯K©KÀÑG€Iñ !  HÓ7×AÑAÀ!ÓDÐñ ˜A˜xÑ4°jÓA×KÑKÈBÓO€Kð Ñ)Ð)r/   Úkernel_sizeÚdilationÚpaddingr}  c           
      ó
  ^^^^^^• [         R                  " [        T5      S:H  S 5        [         R                  " [        T5      S:H  S 5        [         R                  " [        T5      S:H  S 5        [         R                  " [        T5      S:H  S 5        SS jnU" TS5        U" TS5        U" TS	S
S9  U" TS5        U R                  m[        T5      n[         R                  " US;   =(       a    [	        S TSS   5       5      U4S j5        [        S [        TSS  TTTT5       5       5      m[         R                  " [	        S T 5       5      UUUUUU4S j5        US:H  nU(       d  U R                  S5      n U R                  u  p‰p«Tu  pÍTu  pïTu  nnTu  nn[        U
UUXìU R                  5      n[        UUUXýU R                  5      n[        R                  " XXþU45      nUR                  S5      R                  S5      nUS S 2S S 2UU4   nUR                  SSSSSS5      nUR                  S5      nUR                  S5      nUR                  X‰U-  U-  UU-  5      nU(       d  UR                  S5      nU$ )Nr%   c                  ó   • g)Nz"im2col(): only 2D kernel supportedr&   r&   r/   r0   rˆ   Úim2col.<locals>.<lambda>±  s   € Ð0Tr/   c                  ó   • g)Nz$im2col(): only 2D dilation supportedr&   r&   r/   r0   rˆ   rÎ  ²  s   € Ð-Sr/   c                  ó   • g)Nz#im2col(): only 2D padding supportedr&   r&   r/   r0   rˆ   rÎ  ³  s   € Ð,Qr/   c                  ó   • g)Nz"im2col(): only 2D stride supportedr&   r&   r/   r0   rˆ   rÎ  ´  s   € Ð+Or/   c                 ó–   ^ ^• U(       a  [        S T  5       5      O[        S T  5       5      n[        R                  " UU U4S j5        g )Nc              3   ó*   #   • U  H	  oS :„  v •  M     g7f©r   Nr&   ©Ú.0rY  s     r0   Ú	<genexpr>Ú1im2col.<locals>.check_positive.<locals>.<genexpr>·  ó   é € Ð(¢%˜Q�q–5¢%ùó   ‚c              3   ó*   #   • U  H	  oS :¬  v •  M     g7frÔ  r&   rÕ  s     r0   r×  rØ  ·  ó   é € Ð;RÊEÀqÀ¾FÊEùrÚ  c                  ó   >• T ST  3$ ©Nz& should be greater than zero, but got r&   ©ÚparamÚ
param_names   €€r0   rˆ   Ú0im2col.<locals>.check_positive.<locals>.<lambda>¹  ó   ø€ ˜Z˜LÐ(NÈuÈgÑVr/   ©r  rE   rŠ   ©rà  rá  ÚstrictÚconds   ``  r0   Úcheck_positiveÚim2col.<locals>.check_positive¶  ó4   ù€ Þ,2ŒsÑ(¡%Ó(Ô(¼Ñ;RÉEÓ;RÓ8RˆÜ�ŠØÕVõ	
r/   rÉ  rÊ  rË  F©ræ  r}  ©r�   rK  c              3   ó*   #   • U  H	  oS :g  v •  M     g7frÔ  r&   ©rÖ  Úds     r0   r×  Úim2col.<locals>.<genexpr>Ä  ó   é € Ð:ªz¨! AžvªzùrÚ  r¦   c                  ó    >• S[        T 5       3$ )NzmExpected 3D or 4D (batch mode) tensor for input with possible 0 batch size and non-zero dimensions, but got: ©Útuple©r!  s   €r0   rˆ   rÎ  Å  ó   ø€ ð -Ü-2°5«\¨Nñ<r/   c              3   ó\   #   • U  H"  u  pp4nS USU-  -   X4S -
  -  -
  S -
  U-  -   v •  M$     g7f)r$   r%   Nr&   )rÖ  rÍ   ÚpadÚdilÚkerÚsts         r0   r×  rð  È  sD   é € ð ò'
Ñ"ˆC�c ð 	
ˆS�1�s‘7‰]˜S¨!¡G™_Ñ,¨qÑ0°RÑ7Ö7ò'
ùs   ‚*,ra  c              3   ó*   #   • U  H	  oS :„  v •  M     g7frÔ  r&   )rÖ  Úcs     r0   r×  rð  Ï  s   é € Ð'š;�a�ŽEš;ùrÚ  c                  óF   >• S[        TSS  5       ST ST  ST ST ST S3$ )	Nz!Given an input with spatial size ra  ú, kernel_size=ú, dilation=ú
, padding=ú	, stride=z9, the calculated shape of the array of sliding blocks is z*, but its components must be at least one.ró  )rÊ  rÉ  Úoutput_sizerË  r!  r}  s   €€€€€€r0   rˆ   rÎ  Ð  sJ   ø€ Ð3´E¸%ÀÀ¸*Ó4EÐ3Fð GØ"�m ;¨x¨jð 9Ø�)˜9 V Hð -àˆ]ÐDñ	Fr/   rK  r   rZ   r$   r�   é   ©T)rE   rŠ   r‰  r!  r  rô  Úzipr\   rÈ  r˜  rÈ   rø  Úpermuter5  r-  Úsqueeze)rÆ   rÉ  rÊ  rË  r}  rè  r„  Úbatched_inputÚ	batch_dimr.  Úinput_hÚinput_wÚstride_hÚstride_wÚ	padding_hÚ	padding_wÚ
dilation_hÚ
dilation_wÚkernel_hÚkernel_wÚblocks_row_indicesÚblocks_col_indicesÚpadded_inputr´  Únum_blocks_rowÚnum_blocks_colr  r!  s    ````                     @@r0   Úim2colr  ¨  sl  ý€ ô 
‡L‚L”�[Ó! QÑ&Ñ(TÔUÜ	‡L‚L”�X“ !Ñ#Ñ%SÔTÜ	‡L‚L”�W“ Ñ"Ñ$QÔRÜ	‡L‚L”�V“ Ñ!Ñ#OÔPô
ñ �; Ô.Ù�8˜ZÔ(Ù�8˜Y¨uÒ5Ù�6˜8Ô$à�K‰K€EÜˆu‹:€DÜ	‡L‚LØ�‰×:œ3Ñ:¨u°R°S©zÓ:Ó:ô	<ôô
 ñ ä&)Ø�"�#ˆJ˜ ¨;¸ô'
óó €Kô 
‡L‚LÜÑ'™;Ó'Ó'÷	Fñ 	Fôð ˜A‘I€MÞØ—‘ Ó"ˆà/4¯{©{Ñ,€I˜GàÑ€HØ"Ñ€IØ%Ñ€J�
Ø$Ñ€Hˆhä9Ø�˜: y¸E¿L¹LóÐô :Ø�˜: y¸E¿L¹LóÐô —5’5˜¨IÀ)Ð LÓM€Là+×5Ñ5°bÓ9×CÑCÀBÓGÐØš!šQÐ 2Ð4FÐFÑG€FØ�^‰^˜A˜q ! Q¨¨1Ó-€FØ'×,Ñ,¨QÓ/€NØ'×,Ñ,¨QÓ/€NØ�^‰^Ø Ñ)¨HÑ4°nÀ~Ñ6Uó€Fö Ø—‘ Ó"ˆØ€Mr/   r  c                 óæ  ^^^^^^!^"• [         R                  " [        T5      S:H  S 5        [         R                  " [        T5      S:H  S 5        [         R                  " [        T5      S:H  S 5        [         R                  " [        T5      S:H  S 5        [         R                  " [        T5      S:H  S 5        SS jnU" TS	5        U" TS
5        U" TSSS9  U" TS5        U" TS5        U R                  m"[        T"5      n[         R                  " US;   =(       a    [	        S T"SS   5       5      U"4S j5        TS   TS   -  n[         R                  " T"S   U-  S:H  UU"4S j5        [        TTTTT5       V	V
VVVs/ s H   u  pšp¼nSU	SU
-  -   X¼S-
  -  -
  S-
  U-  -   PM"     nnnn
n	nUS   US   -  m![         R                  " T"S   T!:H  U!UUUUU"U4S j5        [         R                  " T!S:„  U!UUUUU"U4S j5        US:H  nU(       d  U R                  S5      n U R                  m"Tu  nnTu  nnTu  nnTu  nnTu  nnU R                  T"S   T"S   U-  /T-   U-   5      n U R                  SSSSSS5      n [        UUUUUU R                  5      n[        US5      n[        UUUUUU R                  5      n[        TT5       VVs/ s H  u  nnUSU-  -   PM     nnnU R                  T"S   T"S   [        T5      -  /U-   5      nS S UU4n [        R                  UU U SS9n[         R"                  " UU* U* U* U* 45      nU(       d  UR%                  S5      nU$ s  snnnn
n	f s  snnf )Nr%   c                  ó   • g)Nzonly 2D output_size supportedr&   r&   r/   r0   rˆ   Úcol2im.<locals>.<lambda>  s   € Ð0Or/   c                  ó   • g)Nzonly 2D kernel supportedr&   r&   r/   r0   rˆ   r    s   € Ð0Jr/   c                  ó   • g)Nzonly 2D dilation supportedr&   r&   r/   r0   rˆ   r    s   € Ð-Ir/   c                  ó   • g)Nzonly 2D padding supportedr&   r&   r/   r0   rˆ   r    s   € Ð,Gr/   c                  ó   • g)Nzonly 2D stride supportedr&   r&   r/   r0   rˆ   r  	  s   € Ð+Er/   Tc                 ó–   ^ ^• U(       a  [        S T  5       5      O[        S T  5       5      n[        R                  " UU U4S j5        g )Nc              3   ó*   #   • U  H	  oS :„  v •  M     g7frÔ  r&   rÕ  s     r0   r×  Ú1col2im.<locals>.check_positive.<locals>.<genexpr>  rÙ  rÚ  c              3   ó*   #   • U  H	  oS :¬  v •  M     g7frÔ  r&   rÕ  s     r0   r×  r$    rÜ  rÚ  c                  ó   >• T ST  3$ rÞ  r&   rß  s   €€r0   rˆ   Ú0col2im.<locals>.check_positive.<locals>.<lambda>  rã  r/   rä  rå  s   ``  r0   rè  Úcol2im.<locals>.check_positive  rê  r/   rÉ  rÊ  rË  Frë  r}  r  )r%   r�   c              3   ó*   #   • U  H	  oS :g  v •  M     g7frÔ  r&   rî  s     r0   r×  Úcol2im.<locals>.<genexpr>  rñ  rÚ  ra  c                  ó    >• S[        T 5       3$ )NzmExpected 2D or 3D (batch mode) tensor for input with possible 0 batch size and non-zero dimensions, but got: ró  rõ  s   €r0   rˆ   r    rö  r/   r   r$   c                  ó   >• STS    ST  3$ )Nz|Expected size of input's first non-batch dimension to be divisible by the product of kernel_size, but got input.shape[-2] = ra  z and kernel_size=r&   )rÉ  r!  s   €€r0   rˆ   r  !  s!   ø€ ð =Ø=BÀ2¹Y¸Kð HØ"�mñ%r/   rZ   c                  ó:   >• ST ST ST ST ST ST  STS    S	3$ ©
NzGiven output_size=rÿ  r   r  r  z , expected input.size(-1) to be ú	 but got rZ   Ú.r&   ©ÚLrÊ  rÉ  r  rË  r!  r}  s   €€€€€€€r0   rˆ   r  .  óD   ø€ Ð$ [ M°À¸}ð MØ�:˜Z¨ y°	¸&¸ð B)Ø)*¨¨9°U¸2±Y°K¸qñBr/   c                  ó:   >• ST ST ST ST ST ST  STS    S	3$ r.  r&   r1  s   €€€€€€€r0   rˆ   r  4  r3  r/   r�   rK  r  ©Ú
accumulater  )rE   rŠ   r‰  r!  r  r  r\   r-  r  rÈ  r˜  r^   rt  Úprodr‹   Ú_unsafe_index_putrÈ   rø  r  )#rÆ   r  rÉ  rÊ  rË  r}  rè  r„  Úprod_kernel_sizerÍ   rø  rù  rú  rû  Úcolr	  Úout_hÚout_wr  r  r  r  r  r  r  r  Úindices_rowÚindices_colÚorY  Úoutput_padded_sizer´  r¤  r2  r!  s#    `````                           @@r0   Úcol2imrA  ú  s�  þ€ ô 
‡L‚L”�[Ó! QÑ&Ñ(OÔPÜ	‡L‚L”�[Ó! QÑ&Ñ(JÔKÜ	‡L‚L”�X“ !Ñ#Ñ%IÔJÜ	‡L‚L”�W“ Ñ"Ñ$GÔHÜ	‡L‚L”�V“ Ñ!Ñ#EÔFô
ñ �; Ô.Ù�8˜ZÔ(Ù�7˜I¨eÒ4Ù�6˜8Ô$Ù�; Ô.à�K‰K€EÜˆu‹:€DÜ	‡L‚LØ�‰×:œ3Ñ:¨u°R°S©zÓ:Ó:ô	<ôð
 # 1‘~¨°A©Ñ6ÐÜ	‡L‚LØˆb‰	Ð$Ñ$¨Ñ)õ	%ôô '*Ø˜ (¨K¸ô'
÷ò'
Ñ"ˆC�c ð 	
ˆS�1�s‘7‰]˜S¨!¡G™_Ñ,¨qÑ0°RÑ7Ô7ñ'
ð ô ð 	ˆA‰��Q‘‰€AÜ	‡L‚LØˆb‰	�Q‰÷	Bò 	Bôô 
‡L‚LØ	ˆA‰÷	Bò 	Bôð ˜A‘I€MÞØ—‘ Ó"ˆà�K‰K€Eà�L€Eˆ5ØÑ€HˆhØ"Ñ€IˆyØ%Ñ€J�
Ø$Ñ€Hˆhð �M‰M˜5 ™8 U¨1¡XÐ1AÑ%AÐBÀ[ÑPÐSVÑVÓW€EØ�M‰M˜!˜Q  1 a¨Ó+€Eä2Øˆx˜ Y°¸%¿,¹,ó€Kô $ K°Ó3€KÜ2Øˆx˜ Y°¸%¿,¹,ó€Kô 14°KÀÔ0IÔJÒ0I©¨¨1˜!˜a !™eœ)Ñ0IÐÑJØ�_‰_Ø	ˆq‰�5˜‘8œt KÓ0Ñ0Ð1Ð4FÑFó€Fð ��{ KÐ
0€CÜ×#Ñ# F¨C°À4Ð#ÐH€FÜ�UŠU�6˜Y˜J¨¨
°Y°JÀÀ
ÐKÓL€FæØ—‘ Ó"ˆØ€MùökùóV Ks   Æ'M$ËM-r¥  c                 ót   • XR                  U 5      U-  -  R                  [        R                  " U 5      S9nU$ ©Nr_  )Útype_asr›  rJ   r   )rs   r¥  ru   rP   s       r0   Únative_dropout_backwardrE  ]  s@   € ð 
Ÿ™ [Ó1°EÑ9Ñ	:×AÑAÜ×1Ò1°+Ó>ð 	Bð 	€Að €Hr/   Ú
input_sizeÚ	dimensionr5  c                 óö  • [        U5      S:X  a  [        R                  " U S5      $ [        R                  " [        U5      U5      n[        R
                  " X   U R                  [        R                  S9nUR                  SX45      R                  5       nU R                  SUS-   5      R                  XUS-   5      n U R                  U5      nSU-  U4-   n[        R                  XxU SS9R                  5       $ )Nr   r™  rZ   r$   r9   Tr5  )r‰  rE   Úsqueeze_copyrJ   r4  rœ  r˜  Úint32ÚunfoldÚflattenÚmovedimrt  r‹   r8  r·  )	r¯   rF  rG  r5  rr  rV   r¤  r_   r§  s	            r0   Úunfold_backwardrN  l  sÒ   € ô
 ˆ:ƒ˜!ÓÜ×!Ò! $¨Ó*Ð*Ü
×
 Ò
 ¤ Z£°)Ó
<€CÜ
�,Š,�z‘¨t¯{©{Ä%Ç+Á+Ñ
N€CØ
�*‰*�Q˜Ó
#×
+Ñ
+Ó
-€CØ�<‰<˜˜C !™GÓ$×,Ñ,¨S¸±'Ó:€Dð —‘ 
Ó+€JØ�c‰M˜S˜FÑ"€EÜ×!Ñ! *°TÀdÐ!ÐK×VÑVÓXÐXr/   Úepsc           
      ó0  • Ub@  UnSU-
  n[         R                  " [         R                  " X:¬  X:*  5      XSU-
  -  -  S5      $ [         R                  " [         R                  " US:¬  US:*  5      XSU-
  -  -  UR                  S[	        S5      5      5      $ )Nrn   r›   r&   Únan)rE   rp   rŸ  rð   r  )rs   r‚   rO  ÚloÚhis        r0   Úlogit_backwardrT    sš   € ð
 �ØˆØ�2‰XˆÜ�{Š{Ü×Ò˜d™j¨$©*Ó5Ø 3¨¡:Ñ.Ñ/Øó
ð 	
ô �{Š{Ü×Ò˜d c™k¨4°3©;Ó7Ø 3¨¡:Ñ.Ñ/Ø�M‰M˜"œe E›lÓ+ó
ð 	
r/   Útrainc                 ón   • U(       a  US:w  a  [         R                  XU5      S   $ U R                  5       $ rz   )r‹   Únative_dropoutr›  )rÆ   rY  rU  s      r0   ÚdropoutrX  ”  s1   € ö ��a“Ü×"Ñ" 5¨UÓ3°AÑ6Ð6à�{‰{‹}Ðr/   Úout0Úout1c                 ó”  • U(       a�  US:w  a—  US:X  a9  [         R                  " U 5      [         R                  " U [         R                  S94$ U R                  R                  (       d  [        S5      e[         R                  " U 5      U:„  nX0-  [        SSU-
  -  5      -  nXC4$ U [         R                  " U [         R                  S94$ )Nr   r$   rë   z?result type Float can't be cast to the desired output type Longrn   )	rE   r  rž  rì   Úis_floating_pointr{  Ú	rand_liker  rb  )rÆ   rY  rU  Ú	bool_maskÚress        r0   rW  rW  ž  sª   € ö ��a“Ø�‹6Ü×$Ò$ UÓ+¬U×-=Ò-=¸eÌ5Ï:É:Ñ-VÐWÐWØ�{‰{×,×,ÜØQóð ô —O’O EÓ*¨QÑ.ˆ	ØÑ¤%¨¨s°Q©w©Ó"8Ñ8ˆØÐÐà”u—’ u´E·J±JÑ?Ð@Ð@r/   Úhalf_to_floatc                 óR  • SSK Jn  U R                  5       n U(       a7  U R                  [        R
                  :w  a  [        SU R                   S35      e[        R                  " U [        R                  R                  S9u  pEU R                  U5      n U" U R                  5       S:H  5      (       a  [        R                  " U 5      nO-[        R                  " XSS9n[        R                  " X-
  5      nU[        R                  " XaSS9-  nU(       d  UR                  U5      nU$ ©Nr   ©Úguard_or_falsez%half_to_float is True but x.dtype is z, expected torch.half©r7   T)r  )rz  rd  r·  rì   rE   Úhalfr3  rJ   rK   ÚELEMENTWISE_TYPE_PROMOTION_KINDÚDEFAULTr<   r  ro   Úamaxrù   )	r=   rV   r`  rd  r>   rB   ÚunnormalizedÚx_maxr"  s	            r0   Ú_softmaxrl  ¯  së   € õ Eð 	
�‰‹€AÞØ�7‰7”e—j‘jÓ Ü Ø7¸¿¹°yÐ@UÐVóð ô ',×&>Ò&>Ø	œu×DÑD×LÑLñ'Ñ#Ðð 	
�‰ÐÓ€AÙ�a—g‘g“i 1‘n×%Ñ%Ü—y’y “|‰ä—
’
˜1¨4Ñ0ˆÜ—y’y ¡Ó+ˆØœEŸIšI lÀÑFÑF€FÞØ—‘˜<Ó(ˆØ€Mr/   )r   c                 óV  • SSK Jn  U R                  5       n U(       a7  U R                  [        R
                  :w  a  [        SU R                   S35      e[        R                  " U [        R                  R                  S9u  pEU R                  U5      n U" U R                  5       S:H  5      (       a  U nO[        R                  " XSS9nX-
  n[        R                  " [        R                  " [        R                   " U5      USS95      nXh-
  n	U(       d  U	R                  U5      n	U	$ rb  )rz  rd  r·  rì   rE   rf  r3  rJ   rK   rg  rh  r<   r  ri  rP  rù   ro   )
r=   rV   r`  rd  r>   rB   Úshiftedrk  Úshifted_logsumexpr"  s
             r0   Ú_log_softmaxrp  Ë  sò   € õ Eð 	
�‰‹€AÞØ�7‰7”e—j‘jÓ Ü Ø7¸¿¹°yÐ@UÐVóð ô ',×&>Ò&>Ø	œu×DÑD×LÑLñ'Ñ#Ðð 	
�‰ÐÓ€AÙ�a—g‘g“i 1‘n×%Ñ%Ø‰ä—
’
˜1¨4Ñ0ˆØ‘)ˆÜŸ	š	¤%§)¢)¬E¯IªI°gÓ,>ÀÈTÑ"RÓSÐØÑ(€FÞØ—‘˜<Ó(ˆØ€Mr/   r£  Úpadding_idxÚscale_grad_by_freqÚsparsec                 óö   • U R                  5       S:w  a  [        SU R                  5        S35      eUR                  S::  a5  U R                  SU5      nUR                  S:X  a  UR	                  S5      nU$ X   $ )Nr%   z'weight' must be 2-D, got z-Dr$   r   )rV   r3  r„  Úindex_selectr  )rÓ   r£  rq  rr  rs  rÍ   s         r0   Ú	embeddingrv  è  sq   € ð ‡z�zƒ|�qÓÜÐ9¸&¿*¹*»,¸ÀrÐJÓKÐKà‡|�|�qÓà×!Ñ! ! WÓ-ˆØ�<‰<˜1ÓØ—+‘+˜a“.ˆCØˆ
à‰Ðr/   Únum_weightsc                 ód  • [         R                  " U [         R                  R                  S9u  pVU R	                  U5      n [        U[        R                  5      nU(       aU  UR                  U45      n[        R                  " U5      n[        R                  Xq/USS9nXq   n	X	R                  S5      -  n [        X:H  U R                  5      n
U R                  U
S5      nU R                  U4U R                   UR                  S  -   5      n[        R                  XÁ/USS9R	                  U5      $ )Nre  Tr5  rZ   r   )rJ   rK   rg  rh  r<   r   rE   Úlongrt  rb  r‹   r8  r\   r^   r„  Úmasked_fillr!  )rs   r£  rw  rq  rr  r>   rB   Úcountsr�  Úgrad_weights_scaler¥  r¯   Úgrad_weights                r0   Úembedding_dense_backwardr~  þ  s  € ô ',×&>Ò&>Ø¬×)NÑ)N×)VÑ)Vñ'Ñ#Ðð —.‘.Ð!2Ó3€KÜ% g¬u¯z©zÓ:€GÞØ×"Ñ" K >Ó2ˆÜ�Š˜wÓ'ˆÜ×'Ñ'¨°	¸4ÈDÐ'ÐQˆØ#™_ÐØ!×$@Ñ$@ÀÓ$DÑDˆä˜WÑ3°[×5EÑ5EÓF€DØ×"Ñ" 4¨Ó+€DØ×'Ñ'Ø	ˆ˜×*Ñ*¨7¯<©<¨>Ð:Ñ:ó€Kô ×!Ñ! +¨y¸$È4Ð!ÐP×SÑSØóð r/   c                 ó$   • SnU  H  nX-  nM	     U$ rc   r&   )r=   rP   Úis      r0   r7  r7    s   € Ø	€AÛˆØ	‰Šñ à€Hr/   ÚtensorsÚ
num_chunksc                 óZ  • / nU  H¢  nUR                  5       nXQ   U-   S-
  U-  U-  nXeU   :w  a9  S/S-  UR                  U-
  S-
  -  SXeU   -
  /-   n[        R                  XGS5      nUS U [        R
                  " US/5      -   nUR                  UR                  U5      5        M¤     U$ )Nr$   r   r%   rZ   )r5  r„  r‹   Úconstant_pad_ndrE   ÚSizeÚappendr-  )	r�  rV   r‚  Úpadded_tensorsÚtensorÚtensor_sizeÚpad_along_dimrø  Ú	view_sizes	            r0   Ú
_pad_chunkrŒ  $  sÍ   € ð
 €NÛˆØ—k‘k“mˆØ$Ñ)¨JÑ6¸Ñ:¸zÑIÈJÑVˆØ¨Ñ,Ó,à�#˜‘'˜VŸ[™[¨3Ñ.°Ñ2Ñ3ØØ¨CÑ 0Ñ0ð7ñ ˆCô ×)Ñ)¨&°qÓ9ˆFØ  Ð%¬¯
ª
°JÀÐ3CÓ(DÑDˆ	Ø×Ñ˜fŸn™n¨YÓ7Ö8ñ ð Ðr/   c                 óX   • U S   R                   nU  H  nUR                   U:w  d  M    g   g)Nr   FT©r„  )r�  r„  rˆ  s      r0   Úhave_same_ndimsr�  9  s-   € Ø�1‰:�?‰?€DÛˆØ�;‰;˜$ÕÙñ ð r/   c                 óš   • U S   R                  5       S U nU  H/  n[        R                  " UR                  5       S U U:H  S 5        M1     g )Nr   c                  ó   • g)NzG_chunk_cat expects same sizes of 0,...,dim-1 dimensions for all tensorsr&   r&   r/   r0   rˆ   Ú+leading_dimension_matches.<locals>.<lambda>F  s   € Ð]r/   )r5  rE   rŠ   )r�  rV   Úleading_dim_sizesrˆ  s       r0   Úleading_dimension_matchesr”  A  sI   € Ø ™
Ÿ™Ó)¨$¨3Ð/ÐÛˆÜ�ŠØ�K‰K‹M˜$˜3ÐÐ#4Ñ4Ù]ö	
ò r/   c                 óÐ  • [         R                  " US:¬  S 5        [         R                  " [        U 5      S:„  S 5        U S   R                  nU S   R                  nU  Hv  n[         R                  " UR                  5       S:„  S 5        [         R                  " UR                  U:H  S 5        [         R                  " UR                  U:H  S 5        Mx     [        U 5      (       a)  [        R                  " U S   R                  5       U5      nOH[         R                  " US:¬  S 5        U  H'  n[         R                  " XR                  :  S	 5        M)     [        X5        U$ )
Nr$   c                  ó   • g)Nz&_chunk_cat expects positive num_chunksr&   r&   r/   r0   rˆ   Ú._preprocess_chunk_cat_inputs.<locals>.<lambda>O  s   € Ð*Rr/   r   c                  ó   • g)Nz0_chunk_cat expects a non-empty input tensor listr&   r&   r/   r0   rˆ   r—  Q  s   € Ð"Tr/   c                  ó   • g)Nz#_chunk_cat expects non-empty tensorr&   r&   r/   r0   rˆ   r—  V  s   € Ð1Vr/   c                  ó   • g)Nz8_chunk_cat expects all input tensors with the same dtyper&   r&   r/   r0   rˆ   r—  Y  ó   € ÐNr/   c                  ó   • g)Nz8_chunk_cat expects all inputs tensors on the same devicer&   r&   r/   r0   rˆ   r—  ]  r›  r/   c                  ó   • g)NzK_chunk_cat expects non-negative dim when input tensors have different ndimsr&   r&   r/   r0   rˆ   r—  d  s   € Ðar/   c                  ó   • g)Nz3_chunk_cat expects dim < ndim for all input tensorsr&   r&   r/   r0   rˆ   r—  i  ó   € ÐMr/   )rE   rŠ   r‰  rì   r˜  r  r�  rJ   r4  rV   r„  r”  )r�  rV   r‚  Úexpected_dtypeÚexpected_devicerˆ  s         r0   Ú_preprocess_chunk_cat_inputsr¢  J  s"  € ô
 
‡L‚L�˜q‘Ñ"RÔSÜ	‡L‚LÜˆG‹�qÑÑTôð ˜Q‘Z×%Ñ%€NØ˜a‘j×'Ñ'€OÛˆÜ�Š�V—\‘\“^ aÑ'Ñ)VÔWÜ�ŠØ�L‰L˜NÑ*ÙNô	
ô 	�ŠØ�M‰M˜_Ñ,ÙNö	
ñ ô �w×ÑÜ×$Ò$ W¨Q¡Z§^¡^Ó%5°sÓ;‰ä�ŠØ�1‰HÙaô	
ó ˆFÜ�LŠLØ—k‘kÑ!ÙMöñ ô
 ˜gÔ+Ø€Jr/   rÍ   c                 óž   • [        XU5      n[        XU5      nUc  [        R                  " XAS-   5      $ [        R                  " XAS-   US9  U$ )Nr$   )rÍ   )r¢  rŒ  rE   r7  )r�  rV   r‚  rÍ   r‡  s        r0   Ú
_chunk_catr¤  o  sK   € ô ' w°ZÓ
@€CÜ ¨jÓ9€NØ
�{Ü�yŠy˜¨q©Ó1Ð1ä�	Š	�.¨¡'¨sÒ3Øˆ
r/   Úsplit_sizesc                 óü   • [         R                  XUS9nUc-  U Vs/ s H  oUR                  [        R                  S9PM!     sn$ [        X45       H$  u  pg[        XgR                  5        [        XvSS9  M&     g s  snf )Nr‡   r_  Tr  )	r‹   Úsplit_with_sizesr›  rE   rc  r  r   r!  r   )r‚   r¥  rV   rÍ   ÚsplitsÚsr´  Úsplits           r0   Úsplit_with_sizes_copyr«  €  st   € ô ×"Ñ" 4¸#Ð"Ð>€FØ
�{ÙHNÓOÊÀ1—‘¤e×&=Ñ&=�Ó>ÉÑOÐOä  Ö-‰MˆFÜ˜f§k¡kÔ2Ü UÈÔMñ .ð ùò Ps   œ&A9Ú
split_size.c                 óB   • [         R                  R                  XU5      $ r9   )r‹   rª  r   )rÆ   r¬  rV   s      r0   Úunsafe_splitr®  “  s   € ä�:‰:×Ñ˜U°Ó4Ð4r/   c                 óB   • [         R                  R                  XU5      $ r9   )r‹   r§  r�  )rÆ   r¥  rV   s      r0   Úunsafe_split_with_sizesr°  ˜  s   € ô × Ñ ×(Ñ(¨¸SÓAÐAr/   c                 ó0  • U R                   nX2   nUS:X  a&  US:w  a  [        SU S35      eU R                  5       4$ XA-   S-
  U-  nSSKJn  U" U5      n[        U5       Vs/ s H  oqPM     nnXU-  U-
  -
  US'   [        R                  " XU5      $ s  snf )Nr   z split_size is 0 but dim_size is z, expected 0r$   )Ú	guard_intrZ   )r!  r3  Údetachrz  r²  r[   rE   rª  )	r‚   r¬  rV   ro  r�  Úchunksr²  r€  r¥  s	            r0   rª  rª  Ÿ  s±   € à—*‘*€KØÑ€HØ�QƒØ�q‹=Ü Ø2°8°*¸LÐIóð ð —‘“ÐÐØÑ# aÑ'¨JÑ6€Fõ @á�vÓ€FÜ',¨V¤}Ó5¢} !’:¡}€KÐ5Ø °Ñ$7¸(Ñ$BÑC€K��OÜ�;Š;�t¨#Ó.Ð.ùò 6s   Á"BÚtensor_indices_or_sectionsc                 óD  ^	• UR                   R                  S:w  a  [        SUR                    35      eUR                  [        R
                  :w  a  [        SUR                   35      eUR                  5       m	[        R                  " T	S:H  =(       d    T	S:H  U	4S j5        T	S:X  aW  UR                  5       n[        U[        5      (       d!  [        S[        U5      R                   35      eU R                  X25      $ [        n[        R                  R                  5       =n(       a  UR                   =n(       a  UR"                  nU" 5          U Vs/ s H  owR                  5       PM     nnS S S 5        U R                  WU5      $ s  snf ! , (       d  f       N%= f)NÚcpuz/tensor_indices_or_sections must be on CPU, got z.tensor_indices_or_sections must be int64, got r$   r   c                  ó   >• ST  S3$ )Nz{tensor_split expected tensor_indices_or_sections to be a zero-dimensional or one-dimensional tensor, but got a tensor with z dimsr&   )Ú	split_dims   €r0   rˆ   ÚAtensor_split_tensor_indices_or_sections_py_impl.<locals>.<lambda>Ç  s   ø€ ð <Ø<E¸;ÀeñMr/   z%Expected sections to be IntLike, got )r˜  Útyper3  rì   rE   r¾  rV   rŠ   Úitemr;   r   r'   Útensor_splitr   Ú_guardsÚdetect_fake_modeÚ	shape_envÚignore_fresh_unbacked_symbols)
r‚   rµ  rV   ÚsectionsÚctxÚ	fake_moderÀ  r€  r£  r¹  s
            @r0   Ú/tensor_split_tensor_indices_or_sections_py_implrÅ  ´  sx  ø€ ð "×(Ñ(×-Ñ-°Ó6ÜØ=Ð>X×>_Ñ>_Ð=`Ðaó
ð 	
ð "×'Ñ'¬5¯;©;Ó6ÜØ<Ð=W×=]Ñ=]Ð<^Ð_ó
ð 	
ð +×.Ñ.Ó0€IÜ	‡L‚LØ�Q‰×(˜) q™.ô	Môð
 �Aƒ~Ø-×2Ñ2Ó4ˆÜ˜(¤G×,Ñ,Ü Ø7¼¸X»×8OÑ8OÐ7PÐQóð ð × Ñ  Ó/Ð/äˆÜŸ™×7Ñ7Ó9Ð9ˆIÕ9Ø"×,Ñ,Ð,ˆIÕ,à×9Ñ9ˆCñ
 �UÙ)CÓDÒ)C A—v‘v–xÑ)CˆGÐD÷ ð × Ñ  ¨#Ó.Ð.ùò E÷ �Uús   ÅFÅFÅ0FÆFÆ
FÚmat1Úmat2c                 óÒ   • U R                  5       (       d+  U R                  5       (       d  [        U5      n[        U5      nU[        R                  " X5      -  nUS:X  a  U$ XSU -  -   $ rz   )r\  Ú
is_complexr“  rE   Úmm)r‚   rÆ  rÇ  rj   rt   rÍ   s         r0   ÚaddmmrË  ê  s_   € ð ×!Ñ!×#Ñ#¨D¯O©O×,=Ñ,=Ü�4‹yˆÜ�E“
ˆØ
”%—(’(˜4Ó&Ñ
&€CØˆqƒyØˆ
ð ˜‘ÑÐr/   Úuse_geluc                 óÈ   • [        XX#U5      nU(       a:  U R                  (       a  [        R                  USS9$ [        R                  U5      $ [        R	                  U5      $ )Nr²   )r°   )rË  Úis_cudar‹   ÚgeluÚrelu)r‚   rÆ  rÇ  rj   rt   rÌ  rÍ   s          r0   Ú_addmm_activationrÑ  þ  sK   € ô �˜D¨Ó
.€CÞØ�<�<Ü—9‘9˜S¨f�9Ð5Ð5ä—9‘9˜S“>Ð!Ü�9‰9�S‹>Ðr/   Úvecc                 ó  • U R                  5       (       d+  U R                  5       (       d  [        U5      n[        U5      nU[        R                  " X5      -  nUS:X  a  U$ UR                  5       S:X  a  X0-  $ XSU -  -   $ rz   )r\  rÉ  r“  rE   Úmvr  )r‚   rÆ  rÒ  rj   rt   rÍ   s         r0   ÚaddmvrÕ    ss   € ð ×!Ñ!×#Ñ#¨D¯O©O×,=Ñ,=Ü�4‹yˆÜ�E“
ˆØ
”%—(’(˜4Ó%Ñ
%€CØˆqƒyØˆ
Ø
‡y�yƒ{�aÓØ‰{ÐØ˜‘ÑÐr/   rø   ÚrstdÚgammaÚNÚCÚHxWÚgroupÚoutput_maskc
           	      ó\  ^^^^^^• [         R                  " XTUSS9  [         R                  " XSS9  [         R                  " TUSS9  [        R                  " UR                  5       TT-  T-  :H  UUU4S j5        [        R                  " TR                  TT4:H  UUU4S j5        [        R                  " TS L =(       d    TR                  5       T:H  UU4S j5        TT-  n
[        R                  " TU
T-  :H  UU4S j5        [        R                  " X5      R                  TTT5      R                  S/S9nU R                  TTT5      R                  S/S9nS nS nS nU	S	   (       Ga/  S
TU
-  -  nTbÄ  [        R                  " UTR                  S	5      5      R                  TTU
5      R                  S5      n[        R                  " UTR                  S	5      5      R                  TTU
5      R                  S5      n[        R                  " UR                  S5      TR                  STU
5      5      nOŠUR                  TTU
5      R                  S5      nUR                  TTU
5      R                  S5      n[        R                  " UR                  S5      [        R                  " STU
4UR                  S95      nUT-  U-
  U-  U-  U-  U-  nU* T-  UU-  U-  -
  nUR                  S5      n[        US5      n[        US5      n[        R                  " U R                  TTU
T5      U5      [        R                  " UR                  TTU
T5      U5      -   U-   nUR                  UR                  5      R                  UR                   5      nU	S   (       ah  UR                  TTU
5      UR                  TTU
5      TR                  S5      -  -
  UR                  S5      -  R                  S	/S9R                  T5      nU	S   (       a  UR                  S	/S9nXÞU4$ )NF)Úallow_cpu_scalar_tensorsc                  ó   >• STT -  T-   S3$ )NzExpect input to have z	 elementsr&   )rÙ  rÚ  rØ  s   €€€r0   rˆ   Ú,native_group_norm_backward.<locals>.<lambda>6  s   ø€ Ð'¨¨A©°© }°IÑ>r/   c                  ó.   >• ST  ST STR                    3$ )NzExpect mean to have shape (ú, z
, but got rõ  )rØ  rÛ  rø   s   €€€r0   rˆ   rà  :  s   ø€ Ð-¨a¨S°°5°'¸ÀDÇJÁJÀ<ÑPr/   c                  ó>   >• ST  STb  TR                  5        3$ S 3$ )NzExpect gamma to have z elements but got rZ   )r  )rÙ  r×  s   €€r0   rˆ   rà  >  s)   ø€ Ð'¨ sÐ*<ÈeÑN_¸U¿[¹[»]Ð<hÑiÐegÐ<hÑir/   c                  ó   >• ST  ST 3$ )NzExpect number of channels z, to be evenly-divisible by number of groups r&   )rÙ  rÛ  s   €€r0   rˆ   rà  D  s   ø€ Ð,¨Q¨CÐ/[Ð\aÐ[bÑcr/   r%   r‡   r   rn   rZ   r$   r—  rK  )rJ   Úcheck_same_deviceÚcheck_same_shaperE   rŠ   r  r!  rß   r   rù   r\   r-  r�  r˜  r^   r<   rì   )rs   rÆ   rø   rÖ  r×  rØ  rÙ  rÚ  rÛ  rÜ  ÚcpgÚdsÚdbÚd_inputÚd_gammaÚd_biasr©  Úds_valÚdb_valÚc1Úc2Úc3s     ` `````             r0   Únative_group_norm_backwardrò  !  s´  ý€ ô 
×ÒØ˜D $Àòô 
×Ò˜5ÈÒNÜ	×Ò˜4 ÀÒFÜ	‡L‚LØ�‰‹˜˜Q™ ™Ñ$Þ>ôô 
‡L‚LØ�
‰
�q˜%�jÑ ÞPôô 
‡L‚LØ�ˆ×+˜Ÿ™›¨!Ñ+Ýiôð
 ˆu‰*€CÜ	‡L‚LØ	ˆS�5‰[ÑÝcôô 
�Š�;Ó	&×	+Ñ	+¨A¨q°#Ó	6×	:Ñ	:À¸sÐ	:Ð	C€BØ	×	Ñ	˜!˜Q Ó	$×	(Ñ	(¨a¨SÐ	(Ð	1€Bà $€GØ $€GØ#€FØ�1‡~€~Ø�3˜‘9ÑˆØÑÜ—Y’Y˜r 5§?¡?°1Ó#5Ó6×>Ñ>¸qÀ%ÈÓM×QÑQÐRSÓTˆFÜ—Y’Y˜r 5§?¡?°1Ó#5Ó6×>Ñ>¸qÀ%ÈÓM×QÑQÐRSÓTˆFÜ—’Ø—‘˜rÓ"Ø—‘˜a ¨Ó,ó‰Bð
 —Z‘Z  5¨#Ó.×2Ñ2°1Ó5ˆFØ—Z‘Z  5¨#Ó.×2Ñ2°1Ó5ˆFÜ—’Ø—‘˜rÓ"Ü—
’
˜A˜u c˜?°4·;±;Ñ?óˆBð �t‰m˜fÑ$¨Ñ,¨tÑ3°dÑ:¸QÑ>ˆØˆS�4‰Z˜& 4™-¨!Ñ+Ñ+ˆà�\‰\˜"ÓˆÜ˜r 1Ó%ˆÜ˜r 1Ó%ˆä�IŠI�k×)Ñ)¨!¨U°C¸Ó=¸rÓBÜ�iŠi˜Ÿ™ a¨°°SÓ9¸2Ó>ñ?àñð 	ð
 —/‘/ %§+¡+Ó.×1Ñ1°%·+±+Ó>ˆØ�1‡~ð —‘˜˜E 3Ó'¨"¯'©'°!°U¸CÓ*@À4Ç>Á>ÐRTÓCUÑ*UÑUØ—.‘. Ó$ñ%÷ ‰S�a�SˆSˆ\ß‰W�Q‹Zð 	ð �1‡~Ø—‘˜Q˜C��ˆà˜fÐ%Ð%r/   Úout2c
                óª   • [        XX#XEXgX‰5
      nX«U4n[        U5       H0  u  nnUc  M  [        Xï   UR                  5        [	        UXï   SS9  M2     U$ r  )rò  Ú	enumerater   r!  r   )rs   rÆ   rø   rÖ  r×  rØ  rÙ  rÚ  rÛ  rÜ  rY  rZ  ró  r"  r_   r€  rP   s                    r0   Únative_group_norm_backward_outrö  z  sc   € ô" (Ø˜D¨°!¸%ó€Fð ˜dÐ#€JÜ˜&Ö!‰ˆˆ1Ø‹=Ü˜j™m¨Q¯W©WÔ5Ü Q°
±È4ÔPñ "ð
 Ðr/   c                 ó.   • U b  U R                  U5      $ U $ r9   ©r<   )r=   rì   s     r0   Ú_maybe_castrù  —  s   € Ø�}Ø�t‰t�E‹{ÐØ€Hr/   Úgrad_outÚnormalized_shapeÚbiasc                 óâ  ^"• UR                   nUR                  5       n	[        R                  " UR                  5      m"U"4S jXXV4 5       u  p«pÍU
c  [        S5      eU	[        U5      -
  nXŽS  nUS U n/ n/ n[        U	5       H-  nUU:¼  a  UR                  U5        M  UR                  U5        M/     [        U5      n[        U5      nSSK
Jn  U" US:H  5      (       d  U" US:H  5      (       a[  US   (       a  UR                  U5      OS US   (       a  UR                  XŽS  5      OS US   (       a  UR                  XŽS  5      4$ S 4$ [        X;R                  5       5      n[        XKR                  5       5      nUc  [        S5      eX³-
  U-  nUb  X¬-  nOU
nUU-  n[        R                  " UUS5      n[        R                   " UU5      n[        R                  " UUS5      n[        R                   " UU5      nUU-
  U-
  nS nS n S n!US   (       a  UU-  U-  nUS   (       a3  Ub0  [        U5      S:”  a  [        R                  " U
U-  US	5      n OU
U-  n US   (       a;  Ub8  [        U5      S:”  a  [        R                  " U
US	5      n!OU
R#                  5       n![%        UUR                  5      [%        U Ub  UR                  OS 5      [%        U!Ub  UR                  5      4$ S 5      4$ )
Nc              3   ój   >#   • U  H(  nUb  UR                  T[        R                  S9OUv •  M*     g 7frC  )r<   rE   rc  ©rÖ  r=   r>   s     €r0   r×  Ú-native_layer_norm_backward.<locals>.<genexpr>¬  s?   øé € ð 9ò 1ˆAð ‰=ð 	
�‰Ð¬e×.EÑ.EˆÑFàô	ò 1ùs   ƒ03ú grad_out_cast should not be Noner   rx  r$   r%   zinput_cast should not be NoneTF)r!  rV   rJ   Úget_computation_dtyperì   r3  r‰  r[   r†  r7  rz  ry  rt  r^   rE   rù   rß   r›  rù  )#rú  rÆ   rû  rø   rÖ  rÓ   rü  rÜ  Úinput_shapeÚ
input_ndimÚgrad_out_castÚ
input_castÚweight_castÚ	bias_castÚaxisÚ
inner_dimsÚ
outer_dimsÚinner_dim_indicesÚouter_dim_indicesr€  rØ  ÚMry  Úx_hatÚ
grad_x_hatÚaÚbrï  rð  rñ  rQ   rê  Úd_weightrì  r>   s#                                     @r0   Únative_layer_norm_backwardr  ž  sú  ø€ ð —+‘+€KØ—‘“€JÜ×3Ò3°E·K±KÓ@Ðô9ð  6Ñ0ó	9Ñ5€M˜{ð ÑÜÐ?Ó@Ð@àœÐ,Ó-Ñ-€DØ˜UÐ#€JØ˜U˜dÐ#€JØ#%ÐØ#%ÐÜ�:ÖˆØ�‹9Ø×$Ñ$ QÖ'à×$Ñ$ QÖ'ñ	 ô 	ˆZÓ€AÜˆZÓ€AÝKá˜Q !™V×$Ñ$Ñ(=¸aÀ1¹f×(EÑ(Eà,7¸¯NˆE�O‰O˜KÔ(ÀØ3>¸q·>ˆE�O‰O˜K¨Ð.Ô/ÀtØ3>¸q·>ˆE�O‰O˜K¨Ð.Ó/ð
ð 	
ð HLð
ð 	
ô
 ˜T§>¡>Ó#3Ó4€DÜ˜T§>¡>Ó#3Ó4€DØÑÜÐ<Ó=Ð=ØÑ $Ñ&€EØÑØ"Ñ0‰
à"ˆ
Ø�Q‰€AÜ�	Š	�*Ð/°Ó6€AÜ	�Š�:˜uÓ	%€BÜ	�Š�2Ð(¨$Ó	/€BÜ	�Š�5˜"Ó	€Bà�‰E�B‰J€EØ $€GØ!%€HØ#€FØ�1‡~Ø˜!‘8˜uÑ$ˆà�1‡~˜+Ñ1ÜÐ Ó! AÓ%Ü—y’y °Ñ!6Ð8IÈ5ÓQ‰Hà$ uÑ,ˆHà�1‡~˜)Ñ/ÜÐ Ó! AÓ%Ü—Y’Y˜}Ð.?ÀÓG‰Fà"×(Ñ(Ó*ˆFô 	�G˜UŸ[™[Ó)Ü�H¨fÑ.@˜fŸlšlÀdÓKÜ�F¨$Ñ*:˜DŸJ™JÓEðð ð AEÓEðð r/   c          
      ó¦   • [        XX#XEXg5      nX‰U
4n[        U5       H/  u  pÞUc  M
  [        XÍ   UR                  5        [	        XìU   SS9  M1     U$ r  )r  rõ  r   r!  r   )rú  rÆ   rû  rø   rÖ  rÓ   rü  rÜ  rY  rZ  ró  r"  r_   r€  rP   s                  r0   Únative_layer_norm_backward_outr  ô  s`   € ô (ØÐ)°¸tó€Fð ˜dÐ#€JÜ˜&Ö!‰ˆØ‹=Ü˜j™m¨Q¯W©WÔ5Ü Q¸1±È4ÔPñ "ð
 Ðr/   c           	      ó`  • / n[        [        U5      5       H(  nUR                  U R                  5       U-
  S-
  5        M*     [        R
                  " U R                  5      nU R                  U5      nUc‚  U[        R                  [        R                  4;   a/  [        R                  " [        R                  5      R                  nO1[        R                  " [        R                  5      R                  nOUn[        R                  " [        R                  R                   R"                  R%                  [        R&                  " US5      R)                  USS9U5      5      n	UR+                  U	5      n
Ub  U
R+                  U5      n
U R,                  =(       d    US L=(       a    UR,                  n[        R.                  " U 5      nU[        R0                  [        R2                  4;   nU(       d'  U(       d   U
R5                  5       n
U	R5                  5       n	U
R7                  U 5      nXé4$ )Nr$   r%   Tr
  )r[   r‰  r†  rV   rJ   r  rì   r<   rE   rï   rþ   ÚfinforO  r   ÚrsqrtÚopsr‹   ÚaddÚScalarrñ   rø   rß   Ú	is_nestedr   Úchannels_lastÚchannels_last_3dr·  rD  )rÆ   rû  rÓ   rO  Údims_to_reducer€  r>   Úupcasted_inputÚeps_valÚrqrst_inputÚupcasted_resultr  r`  Úis_channels_lastr"  s                  r0   Ú_fused_rms_normr&    s¸  € ð !#€NÜ”3Ð'Ó(Ö)ˆØ×Ñ˜eŸi™i›k¨A™o°Ñ1Ö2ñ *ô ×3Ò3°E·K±KÓ@ÐØ—X‘XÐ/Ó0€Nð �{Ø¤§¡´·±Ð @Ó@Ü—k’k¤%§-¡-Ó0×4Ñ4‰Gä—k’k¤%§-¡-Ó0×4Ñ4‰Gàˆä—+’+ô 	�	‰	�‰×Ñ×!Ñ!Ü�IŠI�n aÓ(×-Ñ-°.È$Ð-ÐOÐQXó	
ó€Kð %×(Ñ(¨Ó5€OàÑØ)×-Ñ-¨fÓ5ˆð —‘×L F°$Ð$6×$K¸6×;KÑ;K€IÜ×/Ò/°Ó6€MØ$Ü×ÑÜ×Ñð)ñ Ðö
 Ö-Ø)×4Ñ4Ó6ˆØ!×,Ñ,Ó.ˆð ×$Ñ$ UÓ+€FàÐÐr/   c                 óx  • UR                   nUR                  5       n[        R                  " UR                  5      nU R                  U[        R                  S9n	UR                  U[        R                  S9n
Ub  UR                  U[        R                  S9OS nU	c  [        S5      eU[        U5      -
  nXlS  nUS U n/ n/ n[        U5       H-  nUU:¼  a  UR                  U5        M  UR                  U5        M/     [        U5      n[        U5      nSSKJn  U" US:H  5      (       d  U" US:H  5      (       a=  US   (       a  UR                  U5      OS US   (       a  UR                  XlS  5      4$ S 4$ [!        X:R                  5       5      nUb  X›-  nOU	nS nS nX£-  nUS   (       a'  [        R"                  " UU-  USS9nUUU-  U-  -
  U-  nUS   (       a0  Ub-  U	U-  n[        U5      S:”  a  [        R"                  " UUSS9nOUn[%        UUR                  5      [%        UUR                  5      4$ )	Nr_  r  r   rc  r$   Tr
  F)r!  rV   rJ   r  rì   r<   rE   rc  r3  r‰  r[   r†  r7  rz  rd  rt  r^   rù   rù  )rú  rÆ   rû  rÖ  rÓ   rÜ  r  r  r>   r  r  r  r	  r
  r  r  r  r€  rØ  r  rd  r  rê  r  r  Úsum_valÚd_weight_full_shapes                              r0   Ú_fused_rms_norm_backwardr*  F  sX  € ð —+‘+€KØ—‘“€JÜ×3Ò3°E·K±KÓ@Ðà—K‘KØ¬×)@Ñ)@ð  ð €Mð —‘Ð+¼5×;RÑ;R�ÐS€Jð Ñð 	�	‰	Ð#´5×3JÑ3Jˆ	ÑKàð ð
 ÑÜÐ?Ó@Ð@àœÐ,Ó-Ñ-€DØ˜UÐ#€JØ˜U˜dÐ#€JØ#%ÐØ#%ÐÜ�:ÖˆØ�‹9Ø×$Ñ$ QÖ'à×$Ñ$ QÖ'ñ	 ô 	ˆZÓ€AÜˆZÓ€AÝDá�a˜1‘f×Ñ¡°°Q±×!7Ñ!7à,7¸¯NˆE�O‰O˜KÔ(ÀØ3>¸q·>ˆE�O‰O˜K¨Ð.Ó/ð
ð 	
àGKð
ð 	
ô
 ˜T§>¡>Ó#3Ó4€DØÑØ"Ñ0‰
à"ˆ
à $€GØ!%€HàÑ€Eà�1‡~Ü—)’)˜E JÑ.Ð4EÈtÑTˆØ ¨¡¨gÑ 5Ñ5¸Ñ=ˆà�1‡~˜+Ñ1Ø+¨eÑ3ÐÜÐ Ó! AÓ%Ü—y’yØ#Ð):ÀEñ‰Hð +ˆHô 	�G˜UŸ[™[Ó)Ü�H˜eŸk™kÓ*ðð r/   Úrunning_meanÚrunning_varÚmomentumÚ
functionalc	                 ó@  • S/[        [        SU R                  5       5      5      -   n	[        R                  " U R
                  5      n
UnUnU(       Ga'  [        R                  " U R
                  5      n
U R                  U
S9n[        R                  " XÙSSS9u  pï[        R                  " Xç-   5      nX-
  U-  n[        R                  " Xù5      n[        R                  " UU	5      nUb&  UU-  SU-
  U-  -   nU(       d  UR                  U5        Ubg  U R                  5       U R                  S   -  n[        R                  " Xé5      nUUUS-
  -  -  nUU-  SU-
  U-  -   nU(       d  UR                  U5        OÓUb  Uc  [        S5      eUR                  U
SS9nUnUR                  U
SS9nUnUnS[        R                  " XG-   5      -  nU R                   R"                  S	:w  a  UnUnO"U R%                  S
5      nU R%                  S
5      n['        XðR                  5       S-
  5      n['        UU R                  5       S-
  5      nX-
  U-  nUb1  UR)                  5       n['        XR                  5       S-
  5      nUU-  nUb1  UR)                  5       n['        X R                  5       S-
  5      nUU-   nU R                   R"                  S	:X  a2  UR                  U R
                  S9nUR                  U R
                  S9nUR                  U R
                  S9UUUU4$ )Nr   r%   rë   T)rV   Ú
correctionr  r$   z:running_mean and running_var must not be None in eval mode)rì   rŒ   r·  ©r   )r|  r[   rV   rJ   r  rì   r<   rE   Úvar_meanr  r  Úcopy_r  r!  r3  rg  r˜  r»  rt  r^   rL  )rÆ   rÓ   rü  r+  r,  rÝ   r-  rO  r.  Úreduction_dimsr>   Únew_running_meanÚnew_running_varÚ	input_accÚ
biased_varrø   rÖ  r´  Ú	save_meanÚ	save_rstdÚnÚsqueezed_varÚunbiased_varÚinvstds                           r0   Únative_batch_norm_helperr?  ’  sñ  € ð �Sœ4¤ a¨¯©«Ó 5Ó6Ñ6€NÜ×3Ò3°E·K±KÓ@ÐØ#ÐØ!€OßÜ!×7Ò7¸¿¹ÓDÐØ—H‘HÐ#4�HÐ5ˆ	Ü Ÿ>š>Ø°aÀñ
Ñˆ
ô �{Š{˜:Ñ+Ó,ˆà‘, $Ñ&ˆä—M’M $Ó7ˆ	Ü—M’M $¨Ó7ˆ	ØÑ#Ø'¨)Ñ3°q¸8±|À|Ñ6SÑSÐÞØ×"Ñ"Ð#3Ô4ØÑ"Ø—‘“ §¡¨A¡Ñ.ˆAô !Ÿ=š=¨ÓDˆLØ'¨1°°A±©;Ñ7ˆLØ&¨Ñ5¸¸X¹ÈÑ8TÑTˆOÞØ×!Ñ! /Ô2øàÑ ;Ñ#6Ü ØLóð ð $—‘Ð->ÀT�ÐJˆØ'ÐØ!—n‘nÐ+<À4�nÐHˆØ%ˆØˆØ”e—j’j Ñ!2Ó3Ñ4ˆà�<‰<×Ñ Ó%Ø$ˆIØ‰IàŸ™¨Ó-ˆIØŸ™¨Ó-ˆIÜ  §y¡y£{°Q¡Ó7ˆÜ" 6¨5¯9©9«;¸©?Ó;ˆØ‘, &Ñ(ˆàÑØ—‘Ó!ˆÜ" 6¯9©9«;¸©?Ó;ˆØ˜&‘ˆàÑØ�|‰|‹~ˆÜ  §y¡y£{°Q¡Ó7ˆØ˜$‘ˆà‡|�|×Ñ˜EÓ!Ø—L‘L u§{¡{�LÐ3ˆ	Ø—L‘L u§{¡{�LÐ3ˆ	à�	‰	˜Ÿ™ˆ	Ð$ØØØØðð r/   r9  Úsave_invstdc                 ó2   • [        XX#XEXgS5	      u  p‰n
  nX‰U
4$ ©NF©r?  ©rÆ   rÓ   rü  r+  r,  rÝ   r-  rO  r´  r9  r:  r]   s               r0   Únative_batch_normrE  ç  s1   € ô *BØ�t¨;À(ÐQVó*Ñ&€F�y ! Qð ˜iÐ'Ð'r/   c           
      óâ   • Uc  Uc  [         R                  XX%Xg5      $ Uc  [        S5      eUc  [        S5      eU(       a  [         R                  XX#XEXg5      $ [         R                  XX#XFU5      $ )Nz`running_mean is None, but running_var is provided. They should both be None or both be provided.z`running_var is None, but running_mean is provided. They should both be None or both be provided.)r‹   Ú_native_batch_norm_legitr{  Ú$_native_batch_norm_legit_no_training)rÆ   rÓ   rü  r+  r,  rÝ   r-  rO  s           r0   Únative_batch_norm_decompositionrI    sœ   € ð Ñ Ñ 3Ü×,Ñ,Ø˜4¨8ó
ð 	
ð ÑÜð<ó
ð 	
ð ÑÜð<ó
ð 	
ö ä×,Ñ,Ø˜4¨{Àhó
ð 	
ô ×8Ñ8Ø˜4¨{Àcó
ð 	
r/   c                 ó|  • U R                  U5      nX1-   S-
  U-  nUS:X  ac  US:X  a]  [        U5       Vs/ s H  oTPM     nnXDU-  U-
  -
  XaS-
  '   [        R                  R                  R
                  R                  XU5      $ [        R                  R                  R                  R                  XU5      $ s  snf ©Nr$   r   )	r5  r[   rE   r  r‹   r°  r�  r®  r   )rˆ  r´  rV   r�  r¬  r]   r¥  s          r0   Úunsafe_chunk_py_implrL  (  s¨   € à�{‰{˜3Ó€HØÑ# aÑ'¨FÑ2€Jà�Qƒ˜8 q›=Ü+0°¬=Ó9ª= a’z©=ˆÐ9Ø",¸VÑ0CÀhÑ0NÑ"Oˆ˜Q‘JÑÜ�y‰y�~‰~×5Ñ5×=Ñ=¸fÐSVÓWÐWÜ�9‰9�>‰>×&Ñ&×-Ñ-¨fÀ#ÓFÐFùò :s   µB9c           
      óN   • [         R                  R                  U UUUUSUU5      $ rB  )r‹   rG  r�  )rÆ   rÓ   rü  r+  r,  r-  rO  s          r0   rH  rH  4  s5   € ô ×(Ñ(×0Ñ0ØØØØØØØØó	ð 	r/   c                 ó2   • [        XX#XEXgS5	      u  p‰n
  nX‰U
4$ rB  rC  rD  s               r0   rG  rG  J  s1   € ô *BØ�t¨;À(ÐQVó*Ñ&€F�y ! Qð ˜iÐ'Ð'r/   c                 ó6   • [        XUS S X4US5	      u  pgn  n	XgU4$ rB  rC  )
rÆ   rÓ   rü  rÝ   r-  rO  r´  r9  r:  r]   s
             r0   Ú!_native_batch_norm_legit_no_statsrP  [  s4   € ô *BØ�t˜T 4¨¸SÀ%ó*Ñ&€F�y ! Qð ˜iÐ'Ð'r/   c                 ón   • [        XX#XEXgS5	      u  nn	n
nnUc  [        S5      eUc  [        S5      eX‰X«U4$ )NTú#new_running_mean should not be Noneú"new_running_var should not be None)r?  r3  )rÆ   rÓ   rü  r+  r,  rÝ   r-  rO  r´  r9  r:  r5  r6  s                r0   Ú#_native_batch_norm_legit_functionalrT  j  s_   € ô" 	!Ø�t¨;À(ÐQUó	ñØØØØØð ÑÜÐBÓCÐCØÑÜÐAÓBÐBØ˜i¸?ÐJÐJr/   c           	      óL  • [         R                  R                  XX#USU5      nSnU[         R                  R                  R                  :X  a  [         R                  R                  X5      n[         R                  " U[         R                  U R                  U R                  S9$ )a‘  
Return a reserve tensor for batch norm, used only by cudnn to pass forward state to the
backward pass. This is needed for `_batch_norm_with_update` and `_batch_norm_no_update`,
which support a variety of backends including cudnn. We create this tensor here to get
the correct shape in the traced graph if we detect that will call the cudnn kernel,
and rely on DCE to avoid materializing this tensor.
Tr   )rì   Úlayoutr˜  )
rE   Ú_CÚ_select_batch_norm_backendÚ_BatchNormBackendÚCudnnÚ(_get_cudnn_batch_norm_reserve_space_sizeÚemptyÚuint8rV  r˜  )	rÆ   rÓ   rü  r+  r,  rO  rÝ   ÚbackendÚreserve_sizes	            r0   Ú_get_batch_norm_reserve_tensorr`  …  s�   € ô  �h‰h×1Ñ1Ø�t¨;¸¸có€Gð €LØ”%—(‘(×,Ñ,×2Ñ2Ó2Ü—x‘x×HÑHØó
ˆô �;Š;ØœEŸK™K°·±ÀUÇ\Á\ñð r/   c                 óR   • [        U UUUUSUUS5	      u  pxn	  n
[        XX#XFSS9nXxX›4$ )NTF©rÝ   ©r?  r`  ©rÆ   rÓ   rü  r+  r,  r-  rO  r´  r9  r:  r]   Úreserves               r0   Ú_batch_norm_with_updaterf  ¢  sU   € ô *BØØØØØØØØØó
*Ñ&€F�y ! Qô -Ø�t¨;Àdñ€Gð ˜iÐ0Ð0r/   c                 óˆ   • [        XX#USXVS5	      u  nnn	n
n[        XX#XFSS9nU
c  [        S5      eUc  [        S5      eXxXœX«4$ )NTrb  rR  rS  )r?  r`  r3  )rÆ   rÓ   rü  r+  r,  r-  rO  r´  r9  r:  Únew_rmÚnew_rvre  s                r0   Ú"_batch_norm_with_update_functionalrj  ½  ss   € ô  	!Ø�t¨;¸¸hÈTó	ñØØØØØô -Ø�t¨;Àdñ€Gð �~ÜÐBÓCÐCØ�~ÜÐAÓBÐBØ˜y°6ÐBÐBr/   c                 óR   • [        U UUUUSUUS5	      u  pxn	  n
[        XX#XFSS9nXxX›4$ )NFrb  rc  rd  s               r0   Ú_batch_norm_no_updaterl  Ú  sU   € ô *BØØØØØØØØØó
*Ñ&€F�y ! Qô -Ø�t¨;Àeñ€Gð ˜iÐ0Ð0r/   c                 óÆ   • Ub  [        SU 35      e[        R                  " U 5      U:  R                  [        R                  S9nUR                  U 5      U -  SU-  -  nXC4$ )Nz=generator must be None for _fused_dropout decomposition, got rë   rn   )r3  rE   r]  r<   r]  rD  )rÆ   rY  Ú	generatorr¥  r_  s        r0   Ú_fused_dropout_decompositionro  õ  sl   € ð ÑÜØKÈIÈ;ÐWó
ð 	
ô �OŠO˜EÓ" QÑ&×*Ñ*´·±Ð*Ð=€DØ
�,‰,�uÓ
 Ñ
%¨¨q©Ñ
1€CØˆ;Ðr/   )rì   rV  r˜  Ú
pin_memoryÚnon_blockingr`  r˜  rp  rq  r`  c                ó^  • U(       a"  U[         R                  :w  a  [        SU 35      eU(       a  [        S5      e[        U [         R                  [
        [        [        [        45      (       d!  [        S[        U 5      R                   35      eUc7  Uc4  Uc1  [        U [         R                  5      (       a  U R                  5       $ U $ Sn[        U [         R                  5      (       a  U nO[         R                  " U 5      nUbc  X8R                  :w  aT  Ub1  UR                  S:X  a!  [         R                  R                  X�5      nSn[         R                  R!                  XƒU5      nUb(  U(       d!  [         R                  R                  X�5      nSnUb  [         R                  " X†S9$ U$ )Nz*layout must be None or torch.strided, got z:pin_memory=True is not supported in _to_copy decompositionz x must be Tensor or scalar, got Fr·  Tr_  )rE   Ústridedr3  r;   r   r“  r  rž  Úcomplexr»  r'   r›  Úscalar_tensorr˜  Ú_primsÚconvert_element_typeÚ
device_put)	r=   rì   rV  r˜  rp  rq  r`  Údtype_convertedÚx_tensors	            r0   Ú_to_copyr{  	  sY  € ö �&œEŸM™MÓ)ÜÐIÈ&ÈÐRÓSÐSÞÜØHó
ð 	
ô �aœ%Ÿ,™,¬¬U´D¼'ÐB×CÑCÜÐ?ÄÀQÃ×@PÑ@PÐ?QÐRÓSÐSØ�~˜%™-¨MÑ,AÜ�aœŸ™×&Ñ&Ø—7‘7“9ÐàˆHØ€Oä�!”U—\‘\×"Ñ"Ø‰ä×&Ò& qÓ)ˆàÑ˜f¯©Ó7àÑ §¡°Ó!5Ü—|‘|×8Ñ8¸ÓIˆHØ"ˆOÜ—<‘<×*Ñ*¨8¸\ÓJˆàÑ¦Ü—<‘<×4Ñ4°XÓEˆØˆàÑ Ü�{Š{˜8ÑAÐAØ€Or/   c                 ó,   • [         R                  U 5      $ r9   )r‹   Úalias)r=   s    r0   Únop_decompositionr~  5	  s   € ô �:‰:�a‹=Ðr/   Úout3Úexponential_average_factorÚepsilonc           
      ó  • [         R                  U UUUUUUU5      u  p‰n
U(       a   X‰X R                  S[        R                  S94$ UUR                  S5      UR                  S5      U R                  S[        R                  S94$ )Nr1  rë   )r‹   rE  rt  rE   r]  )rÆ   rÓ   rü  r+  r,  rÝ   r€  r�  r  r  rý  s              r0   Úcudnn_batch_normrƒ  =	  sŽ   € ô ×$Ñ$ØØØØØØØ"Øó	�G€Aˆ!ö Ø�aŸ™¨´U·[±[˜ÐAÐBÐBà	Ø×Ñ˜ÓØ×Ñ˜ÓØ�‰˜¤E§K¡KˆÐ0ð	ð r/   c                 ó¨   • [        U5       HB  u  p#US:X  d  M  X R                  :  a  U R                  U   U:X  a  M1  U R                  U5      n MD     U $ rc   )rõ  r„  r!  r\   )r=   Úbroadcast_maskr	  r¥  s       r0   Ú_broadcast_batch_norm_backwardr†  _	  sF   € Ü Ö/‰
ˆØ�1�9˜d§V¡V›m°·±¸±ÀÕ0EØ—‘˜DÓ!ŠAñ 0ð €Hr/   re  c                 ó*   • [        U UUUUUUUUU	5
      $ r9   )Únative_batch_norm_backward)rú  rÆ   rÓ   r+  r,  r9  r@  rU  rO  rÜ  re  s              r0   Úbatch_norm_backwardr‰  f	  s/   € ô &ØØØØØØØØØØóð r/   c
                 ó`  ^&• UR                   n
Ub  UR                   nOU
n[        R                  " UR                   5      m&U&4S jU UUUUUU4 5       u  nnnnnnnUR                  nUR	                  5       nUS:  a  [        SU 35      eSn[        [        U5      5      UU   -  nUnUnU(       a  Ub  Uc  [        S5      eO,Ub  Uc  [        S5      eUn[        R                  " UU-   5      nS/U-  nUU   UU'   / n[        U5       H  nUU:w  d  M  UR                  U5        M     [        UU5      nSU-  n[        R                  " UU5      n[        R                  " XÍU-
  -  U5      n[        UU-  U5      n[        [        R                  " UU-  UU-  5      U5      n Uc  [        UU5      S-  n!O[        UU-  U5      n!U(       a  UU-
  U -  n"UU"-
  U-
  U!-  n#OUU!-  n#U	S   (       a  UU-  n$OS n$U	S   (       a  Un%OS n%U#R                  U
5      [!        U$U5      [!        U%U5      4$ )Nc              3   óP   >#   • U  H  nUb  UR                  T5      OUv •  M     g 7fr9   rø  rÿ  s     €r0   r×  Ú-native_batch_norm_backward.<locals>.<genexpr>�	  s/   øé € ð 	ò
ˆAð $%¡=ˆ�‰ÐÔ°aÔ7ò
ùs   ƒ#&r%   z*rank of the input must be at least 2, got r$   z1mean and invstd must not be None in training modezDrunning_mean_cast and running_var_cast must not be None in eval modern   )rì   rJ   r  r!  rV   r3  r7  r|  rE   r  r[   r†  r†  rù   rß   r<   rù  )'rú  rÆ   rÓ   r+  r,  r9  r@  rU  rO  rÜ  r±  Úweight_dtyper  r  r  Úrunning_mean_castÚrunning_var_castÚsave_mean_castÚsave_invstd_castr  Ú
input_rankr	  Únum_featuresrø   r>  r…  Úreduction_axesr€  r  Úgrad_output_sumÚdot_pÚ	grad_meanÚ
proj_scaleÚ
grad_scaleÚprojr_   r}  Ú	grad_biasr>   s'                                         @r0   rˆ  rˆ  ‚	  sŽ  ø€ ð —+‘+€KØÑØ—|‘|‰à"ˆÜ×3Ò3°E·K±KÓ@Ðô	ð ØØØØØØñ
ó	ñØØØØØØØð —+‘+€KØ—‘“€JØ�Aƒ~ÜÐIÈ*ÈÐVÓWÐWà€DÜœ˜[Ó)Ó*¨[¸Ñ->Ñ>€LØ€DØ€FÞØ‰<˜6™>Ü Ð!TÓUÐUð *ð Ñ$Ð(8Ñ(@Ü ØVóð ð !ˆÜ—’Ð-°Ñ3Ó4ˆà!"  jÑ 0€NØ& tÑ,€N�4Ñà "€NÜ�:ÖˆØ��9Ø×!Ñ! !Ö$ñ ô *¨$°Ó?€DØ�Ñ€DÜ—i’i ¨~Ó>€OÜ�IŠI�m°DÑ'8Ñ9¸>ÓJ€Eä.¨ÀÑ/EÀ~ÓV€IÜ/Ü�	Š	�%˜$‘, ¨¡Ó0Øó€Jð
 ÑÜ3°F¸NÓKÈcÑQ‰
ä3Ø�[Ñ  .ó
ˆ
ö Ø˜TÑ! ZÑ/ˆØ$ tÑ+¨yÑ8¸JÑF‰
à" ZÑ/ˆ
à�1‡~Ø˜f‘n‰àˆà�1‡~Ø#‰	àˆ	ð 	�‰�kÓ"Ü�K Ó.Ü�I˜|Ó,ðð r/   c
                ó´   • [        U UUUUUUUUU	5
      nX«U4n[        U5       H0  u  nnUc  M  [        Xï   UR                  5        [	        UXï   SS9  M2     U$ r  )rˆ  rõ  r   r!  r   )rú  rÆ   rÓ   r+  r,  r9  r@  rU  rO  rÜ  rY  rZ  ró  r"  r_   r€  rP   s                    r0   Únative_batch_norm_backward_outr�  ð	  sv   € ô" (ØØØØØØØØØØó€Fð ˜dÐ#€JÜ˜&Ö!‰ˆˆ1Ø‹=Ü˜j™m¨Q¯W©WÔ5Ü Q°
±È4ÔPñ "ð
 Ðr/   Úsave_varc                 óB   • [         R                  UU UUUUUSU/ SQ5
      $ ©NT)TTT©r‹   rˆ  )rÆ   rs   rÓ   r+  r,  r9  rž  r�  s           r0   Úmiopen_batch_norm_backwardr¢  
  s5   € ô ×*Ñ*ØØØØØØØØØÚóð r/   ÚreserveSpacec	                 óB   • [         R                  UU UUUUUSU/ SQ5
      $ r   r¡  )	rÆ   rs   rÓ   r+  r,  r9  rž  r�  r£  s	            r0   Úcudnn_batch_norm_backwardr¥  0
  s5   € ô ×*Ñ*ØØØØØØØØØÚóð r/   c                 óÐ  ^^^^^• U R                   mU R                  m[        T5      m[        R                  " TS;   U4S j5        U R                  SS   H!  n[        R                  " US:g  U4S j5        M#     TS   US   -  S:X  aw  TS   US   -  S:X  ah  [        S [        TSS  U5       5       5      n[        S [        TSS  X5       5       5      n[        R                  R                  R                  XU5      $ S	 mS
 mUUU4S jnU" TS   US   5      u  pgp‰U" TS   US   5      u  p«pÍU S[        US5      U
4   nU	(       d  U(       d  [        R                  " USS9$ S nU" XçX‰SS9u  pçU" XëXÍSS9u  pëS n[        [        UR                  S   5      [        UR                  S   5      5       H$  u  nnUc  USUS S 2U4   nM  UUSUS S 2U4   -   nM&     UX{-  -  $ )Nrì  c                  ó   >• ST  3$ )Nz9adaptive_avg_pool2d(): Expected 3D or 4D tensor, but got r&   rŽ  s   €r0   rˆ   Ú%adaptive_avg_pool2d.<locals>.<lambda>U
  s   ø€ ÐKÈDÈ6ÑRr/   ra  r   c                  ó"   >• S[        T 5       S3$ )Nzjadaptive_avg_pool2d(): Expected input to have non-zero size for non-batch dimensions, but input has shape r0  ró  rõ  s   €r0   rˆ   r¨  Z
  s   ø€ ð 9Ü9>¸u»¸ÀañIr/   rZ   c              3   ó.   #   • U  H  u  pX-  v •  M     g 7fr9   r&   )rÖ  r€  r?  s      r0   r×  Ú&adaptive_avg_pool2d.<locals>.<genexpr>`
  s   é € ÐGÒ*F¡$ !�q–vÒ*Fùó   ‚c              3   ó<   #   • U  H  u  po1US -
  U-  -
  v •  M     g7f©r$   Nr&   )rÖ  r€  r?  r©  s       r0   r×  r«  a
  s"   é € ð 
Ú+O¡  a��Q‘˜!‘ŽOÒ+Oùs   ‚c                 ó2   • [         R                  " X-  USS9$ )NÚtrunc©Úrounding_mode©rE   Údiv©r  r  rý  s      r0   Ústart_indexÚ(adaptive_avg_pool2d.<locals>.start_indexf
  s   € Ü�yŠy˜™ °Ñ9Ð9r/   c                 óF   • [         R                  " U S-   U-  U-   S-
  USS9$ )Nr$   r°  r±  r³  rµ  s      r0   Ú	end_indexÚ&adaptive_avg_pool2d.<locals>.end_indexi
  s&   € Ü�yŠy˜!˜a™% 1™ q™¨1Ñ,¨a¸wÑGÐGr/   c                 ó   >• [         R                  " UT[         R                  S9nT" X!U 5      nX-  S-   nX-  nUS:H  =(       d    X-  S:H  (       + nU(       a  US-  nOUS:X  a  US-  n[         R                  " UT[         R                  S9nUR                  S5      U-   nU(       aQ  [         R                  " U S-
  UR
                  UR                  S9n	[         R                  " X‰5      nT" X!U 5      n
X£-
  nOUnX‹Xv4$ )Nr™  r$   r   rZ   r½  )rE   rœ  r¾  r\   ru  rì   r˜  Úminimum)Úin_sizeÚout_sizeÚorangeÚi0Ú	maxlengthÚin_size_modÚadaptiveÚ	range_maxr¤  ÚmaxvalÚi1Úlengthr˜  r¹  r¶  s               €€€r0   Úcompute_idxÚ(adaptive_avg_pool2d.<locals>.compute_idxl
  sù   ø€ Ü—’˜h¨v¼U¿[¹[ÑIˆÙ˜¨7Ó3ˆð Ñ'¨!Ñ+ˆ	ØÑ(ˆà# qÑ(×G¨HÑ,BÀaÑ,GÔHˆÞØ˜‰N‰IØ˜AÓØ˜‰NˆIä—L’L °6ÄÇÁÑMˆ	Ø�l‰l˜2Ó Ñ*ˆÞô ×(Ò(Ø˜!‘ 3§9¡9°S·Z±ZñˆFô —-’- Ó,ˆCñ ˜6¨WÓ5ˆBØ‘W‰FàˆFØ˜IÐ/Ð/r/   .rK  )r¦   rZ   r‡   c                 óð   • [        U[        5      (       a  X4$ US:¼  a  [        SU 35      eX!R                  S5      :¬  nUS:X  a  [	        US5      n[
        R                  " XS5      n [	        X* 5      nX4$ )Nr   z)dim should be negative when masking, got rZ   ra  rK  r›   )r;   r   r3  r\   r^   rE   rz  )ÚvalsrÇ  rÄ  rÃ  rV   r¥  s         r0   Ú
maybe_maskÚ'adaptive_avg_pool2d.<locals>.maybe_mask”
  s�   € Ü�fœg×&Ñ&Ø�<Ðð �a‹xÜ$Ð'PÐQTÐPUÐ%VÓWÐWà× 0Ñ 0°Ó 4Ñ4ˆDØ�b‹yÜ(¨¨qÓ1�Ü×$Ò$ T°Ó5ˆDä& v¨tÓ4ˆFØ�<Ðr/   )rÃ  rV   r¦   )r˜  r!  r‰  rE   rŠ   rô  r  Únnr.  Ú
avg_pool2dr^   rø   r
   r[   )rÆ   r  rï  r}  ÚkernelrÈ  ÚidxhÚlength_hÚrange_max_hÚ
adaptive_hÚidxwÚlength_wÚrange_max_wÚ
adaptive_wrË  rÌ  Úretr€  Újr˜  r¹  r„  r!  r¶  s                      @@@@@r0   Úadaptive_avg_pool2drÛ  K
  s  ü€ ð
 �\‰\€FØ�K‰K€EÜˆu‹:€DÜ	‡L‚LØ�‰ÜRôð �[‰[˜˜ÓˆÜ�ŠØ�‰FôIö	
ñ ð ˆR�y�;˜r‘?Ñ" aÓ'¨E°"©I¸ÀB¹Ñ,GÈ1Ó,LÜÑG¬#¨e°B°C¨j¸+Ô*FÓGÓGˆÜñ 
Ü+.¨u°R°S¨z¸;Ô+Oó
ó 
ˆô �x‰x×"Ñ"×-Ñ-¨e¸VÓDÐDò:òH÷0ñ@ /:¸%À¹)À[ÐQSÁ_Ó.UÑ+€D�KÙ.9¸%À¹)À[ÐQSÁ_Ó.UÑ+€D�Kà�Ô'¨¨aÓ0°$Ð6Ñ7€DæžjÜ�zŠz˜$ HÑ-Ð-ò ñ   Ø˜¸bñ�N€Dñ  Ø˜¸bñ�N€Dð
 €CÜœ˜dŸj™j¨™nÓ-¬u°T·Z±ZÀ±^Ó/DÖE‰ˆˆ1Ø‰;Ø�s˜Ašq !�|Ñ$ŠCà˜˜S !¢Q¨˜\Ñ*Ñ*ŠCñ	 Fð
 �(Ñ%Ñ&Ð&r/   c                 óÜ  • [         R                  " SU S35        [        U R                  S U*  5      [        U5      -   n[	        S U 5       5      (       a  U R                  U5      $ [        [        R                  U R                  S U*  5      n[        [        R                  U5      nS/U R                  -  nU R                  S U*  US U* & U[        R                  XPR                  S9R                  U5      U-  -   R                  S5      nU R                  U5      n	[        R                  U	R                  S5      U/U R                  S5      SS9R                  U	R                  5      $ )	NÚmax_unpoolingÚd_forward_outc              3   ó*   #   • U  H	  oS :H  v •  M     g7frÔ  r&   )rÖ  r©  s     r0   r×  Ú _max_unpoolnd.<locals>.<genexpr>À
  s   é € Ð
(š<�a�Ž6š<ùrÚ  r$   r—  rZ   Fr5  )rJ   Úalert_not_deterministicr|  r!  Úanyrt  r   Úoperatorrß   r„  r‹   rœ  r˜  r   r-  r8  )
r‚   r£  r  rV   Úoutput_shapeÚncÚhwÚindices_nc_shapeÚindices_flatr´  s
             r0   Ú_max_unpoolndré  µ
  s>  € ô 
×!Ò! M°#°°mÐ"DÔEÜ˜Ÿ
™
 5 S DÐ)Ó*¬T°+Ó->Ñ>€LÜ
Ñ
(™<Ó
(×(Ñ(Ø�~‰~˜lÓ+Ð+Ü	”—‘˜dŸj™j¨¨3¨$Ð/Ó	0€BÜ	”—‘˜kÓ	*€BØ�s˜TŸY™Y‘ÐØ"Ÿj™j¨¨3¨$Ð/Ð�U�s�dÐà”$—+‘+˜b¯©�+Ð5×:Ñ:Ð;KÓLÈrÑQÑQß�gˆbƒkð ð �^‰^˜LÓ)€FÜ×!Ñ!Ø�‰�rÓ˜\˜N¨D¯L©L¸Ó,<Èð "ð ç
�dˆ6�<‰<Óðr/   c                 ó,  ^ ^^^• [         R                  " TR                  [         R                  :H  U4S j5        [         R                  " [	        T5      S:H  U4S j5        [         R                  " T R
                  S;   U 4S j5        [         R                  " T R                  TR                  :H  UU 4S j5        [        ST R
                  5       H1  m[         R                  " T R                  T5      S:„  UU 4S	 j5        M3     [        T TTS5      $ )
Nc                  ó"   >• ST R                    3$ )Nz2elements in indices should be type int64 but got: rë   )r£  s   €r0   rˆ   Úmax_unpool2d.<locals>.<lambda>Ù
  s   ø€ ÐDÀWÇ]Á]ÀOÑTr/   r%   c                  ó"   >• S[        T 5       S3$ )NzMThere should be exactly two elements (height, width) in output_size, but got ú
 elements.©r‰  ©r  s   €r0   rˆ   rì  Ý
  ó   ø€ ðÜ˜;Ó'Ð(¨
ñ4r/   rì  c                  ó$   >• ST R                    S3$ )NzLInput to max_unpooling2d should be a 3d or 4d Tensor, but got a tensor with ú dimensions.rŽ  r˜   s   €r0   rˆ   rì  å
  s   ø€ ð%Ø%)§Y¡Y K¨|ñ=r/   c                  ó<   >• STR                    ST R                    3$ ©NzBExpected shape of indices to be same as that of the input tensor (z%) but got indices tensor with shape: rõ  )r£  r‚   s   €€r0   rˆ   rì  ì
  s'   ø€ ØPÐQU×Q[ÑQ[ÐP\ð ]2Ø29·-±-°ñBr/   r$   r   c                  ó*   >• STR                    ST  S3$ )NzZmax_unpooling2d(): Expected input to have non-zero size for non-batch dimensions, but got ú with dimension ú being empty.rõ  )r€  r‚   s   €€r0   rˆ   rì  õ
  s    ø€ ðàŸ:™:˜,Ð&6°q°c¸ñHr/   )
rE   rŠ   rì   r¾  r‰  r„  r!  r[   r5  ré  )r‚   r£  r  r€  s   ```@r0   Úmax_unpool2drù  Ð
  sÑ   û€ ô 
‡L‚LØ�‰œŸ™Ñ$ÜTôô 
‡L‚LÜˆKÓ˜AÑô	
ôô 
‡L‚LØ�	‰	�VÑô	
ôô 
‡L‚LØ�
‰
�g—m‘mÑ#õ	
ôô �1�d—i‘iÖ ˆÜ�ŠØ�I‰I�a‹L˜1Ñõö	
ñ !ô ˜˜w¨°QÓ7Ð7r/   c                 óD  ^ ^^^^^• [         R                  " TR                  [         R                  :H  S 5        [         R                  " T R                  S;   U 4S j5        [         R                  " [        T5      S:H  U4S j5        [         R                  " [        T5      S:H  U4S j5        [         R                  " [        T5      S:H  U4S j5        [         R                  " T R                  TR                  :H  UU 4S j5        [        S	T R                  5       H1  m[         R                  " T R                  T5      S
:„  UU 4S j5        M3     [         R                  " TS
   S
:„  =(       a    TS	   S
:„  =(       a    TS   S
:„  U4S j5        [        T TTS5      $ )Nc                  ó   • g)Nz(elements in indices should be type int64r&   r&   r/   r0   rˆ   Úmax_unpool3d.<locals>.<lambda>	  s   € Ð.Xr/   ©rK  r  c                  ó$   >• ST R                    S3$ )NzLInput to max_unpooling3d should be a 4d or 5d Tensor, but got a tensor with ró  rŽ  ©rÆ   s   €r0   rˆ   rü    s   ø€ Ð^Ð_d×_iÑ_iÐ^jÐjvÑwr/   r�   c                  ó"   >• S[        T 5       S3$ )NzVThere should be exactly three elements (depth, height, width) in output_size, but got rî  rï  rð  s   €r0   rˆ   rü    rñ  r/   c                  ó"   >• S[        T 5       S3$ )NzRThere should be exactly three elements (depth, height, width) in stride, but got: rî  rï  ©r}  s   €r0   rˆ   rü    s   ø€ ÐdÔehÐioÓepÐdqÐq{Ñ|r/   c                  ó"   >• S[        T 5       S3$ )NzSThere should be exactly three elements (depth, height, width) in padding, but got: rî  rï  )rË  s   €r0   rˆ   rü    s   ø€ ÐeÔfiÐjqÓfrÐesÐs}Ñ~r/   c                  ó<   >• STR                    ST R                    3$ rõ  rõ  )r£  rÆ   s   €€r0   rˆ   rü     s'   ø€ ØPÐQV×Q\ÑQ\ÐP]ð ^2Ø29·-±-°ñBr/   r$   r   c                  ó*   >• STR                    ST  S3$ )NzZmax_unpooling3d(): Expected input to have non-zero size for non-batch dimensions, but got r÷  rø  rõ  )r€  rÆ   s   €€r0   rˆ   rü  )  s    ø€ ðà Ÿ;™;˜-Ð'7¸°s¸-ñIr/   r%   c                  ó   >• ST  3$ )Nz5strides should be greater than zero, but got stride: r&   r  s   €r0   rˆ   rü  2  s   ø€ ÐGÈÀxÑPr/   )
rE   rŠ   rì   r¾  r„  r‰  r!  r[   r5  ré  )rÆ   r£  r  r}  rË  r€  s   `````@r0   Úmax_unpool3dr  ÿ
  s?  ý€ ô 
‡L‚LØ�‰œŸ™Ñ$Ñ&Xôô 
‡L‚LØ�
‰
�fÑÜwôô 
‡L‚LÜˆKÓ˜AÑô	
ôô 
‡L‚LÜˆF‹�qÑÜ|ôô 
‡L‚LÜˆG‹˜ÑÜ~ôô 
‡L‚LØ�‰�w—}‘}Ñ$õ	
ôô �1�e—j‘jÖ!ˆÜ�ŠØ�J‰J�q‹M˜AÑõö	
ñ "ô 
‡L‚LØˆq‰	�A‰×9˜& ™) a™-×9¨F°1©I¸©MÜPôô
 ˜ ¨°aÓ8Ð8r/   )rt   rˆ  c          	      ó   • [        XX#SUS9$ )NT©Úinplacert   ©Ú
_index_add©r=   rV   r§  rˆ  rt   s        r0   Ú
index_add_r  8  s   € ô �a˜e°TÀÑGÐGr/   c          	      ó   • [        XX#SUS9$ )NFr	  r  r  s        r0   Ú	index_addr  D  s   € ô �a˜e°UÀ%ÑHÐHr/   r
  c                óx  ^^^^^^• [         R                  " U R                  T5      m[        R                  " TR                  S:*  U4S j5        TR                  S:X  a  TR                  S5      OSmUR                  S:”  a  UR                  T5      OSm[        R                  " TT:H  UUU4S j5        TS:w  an  [         R                  " U R                  5      m[        R                  " T[        L =(       d     [         R                  " [        T5      T5      UU4S j5        UT-  nU R                  S:H  nU(       a  U R                  S5      OU nST-  T4-   nU(       a  [        R                  O[        R                  n	U	" XxUSS9n
U(       a  U $ U(       a  U
R                  S5      $ U
R!                  5       $ )	Nr$   c                  ó$   >• ST R                    S3$ ©Nz(Index should have dimension 1 or 0 (got rF  rŽ  ©r§  s   €r0   rˆ   Ú_index_add.<locals>.<lambda>]  ó   ø€ Ð:¸5¿:¹:¸,ÀaÑHr/   r   c                  ó   >• ST ST ST < 3$ )NzNumber of indices (z') should be equal to tensor.size(dim) (z), for dim=r&   )rV   Ú
index_sizer‰  s   €€€r0   rˆ   r  c  s   ø€ Ð% j \Ð1XÐYdÐXeÐeqÐmpÑlrÑsr/   c                  ó(   >• S[        T 5       ST S3$ )Nzalpha argument of type z cannot be safely cast to type Ú!)r»  )rt   Úpython_types   €€r0   rˆ   r  j  s   ø€ Ð-¬d°5«k¨]Ð:YÐZeÐYfÐfgÑhr/   r9   Tr5  )rJ   Úcanonicalize_dimsr„  rE   rŠ   r5  Údtype_to_typerì   rž  Úis_weakly_lesser_typer»  r\   r‹   Ú
index_put_Ú	index_putr  r·  )r=   rV   r§  rˆ  r
  rt   Úzero_dimr\  r¤  r   rÍ   r  r  r‰  s    ``  `     @@@r0   r  r  Q  sK  ý€ ô ×
!Ò
! !§&¡&¨#Ó
.€CÜ	‡L‚LØ�
‰
�a‰ÜHôð #(§*¡*°£/�—‘˜A”°q€JØ&,§k¡k°A£o�&—+‘+˜cÔ"¸1€KÜ	‡L‚LØ�zÑ!Þsôð �ƒzÜ×)Ò)¨!¯'©'Ó2ˆÜ�ŠØœ4Ð÷ EÜ×*Ò*¬4°«;¸ÓDÝhô	
ð
 ˜%‘ˆà�v‰v˜‰{€HÞ#ˆ�‰�QŒ¨€BØ
�C‰-˜5˜(Ñ
"€CÞ#*”—’´·±€IÙ
�B˜V°Ñ
5€CÞØˆæ!)ˆs�{‰{˜1‹~Ð?¨s¯~©~Ó/?Ð?r/   c           
      ó
  • [         R                  " [        U 5      S:„  S 5        [        U 5      nU S   R                  5       nUSS  n[	        S U  5       5      nU(       a  X64nOXc4nXu-   nU S   R                  Xr5      nS[        U5      -  n	[        U5       Hf  n
X
   n[        R                  X¹SXkR                  S5      -
  4-   U5      nU(       a  [        R                  XŒSU
S9nMQ  [        R                  XŒSU
S9nMh     U$ )Nr   c                  ó   • g)Nz#received an empty list of sequencesr&   r&   r/   r0   rˆ   Úpad_sequence.<locals>.<lambda>|  s   € Ð-Rr/   r$   c              3   óB   #   • U  H  oR                  S 5      v •  M     g7frÔ  ©r5  )rÖ  r=   s     r0   r×  Úpad_sequence.<locals>.<genexpr>€  s   é € Ð/¢Y —&‘&˜—)�)¢Yùs   ‚)r   r   ©rV   r§  )
rE   rŠ   r‰  r5  r•   rð   r[   r‹   r„  r©  )Ú	sequencesÚbatch_firstÚpadding_valueÚsequences_sizeÚmax_sizeÚtrailing_dimsÚmax_lenÚout_dimsrÍ   Údim_paddingsr€  ÚcurrseqÚrows                r0   Úpad_sequencer4  y  s
  € ô 
‡L‚L”�Y“ !Ñ#Ñ%RÔSÜ˜“^€NØ˜‰|× Ñ Ó"€HØ˜Q˜R�L€MÜÑ/¡YÓ/Ó/€GÞØ"Ð,‰àÐ,ˆØÑ'€HØ
�A‰,×
Ñ
 Ó
8€CØœC Ó.Ñ.€LÜ�>Ö"ˆØ‘,ˆÜ×"Ñ"Ø Q¨·,±,¸q³/Ñ(AÐ$BÑBÀMó
ˆö Ü×%Ñ% c°A¸QÐ%Ð?ŠCä×%Ñ% c°A¸QÐ%Ð?ŠCñ #ð €Jr/   c                 ó   • [        XX#SS9$ )NT©r
  ©Ú_index_copy©r=   rV   r§  rˆ  s       r0   Úindex_copy_r:  ”  s   € ä�q˜u°dÑ;Ð;r/   c                 ó   • [        XX#SS9$ )NFr6  r7  r9  s       r0   Ú
index_copyr<  ™  s   € ô �q˜u°eÑ<Ð<r/   c                ó  ^• [         R                  " U R                  U5      n[        R                  " TR                  S:*  U4S j5        U R                  S:H  nU(       a  U R                  S5      OU nTR                  S:X  a  TR                  S5      OTmSU-  T4-   nU(       a  [        R                  O[        R                  nU" XgU5      n	U(       a  U $ U(       a  U	R                  S5      $ U	R                  5       $ )Nr$   c                  ó$   >• ST R                    S3$ r  rŽ  r  s   €r0   rˆ   Ú_index_copy.<locals>.<lambda>¥  r  r/   r   r9   )rJ   r  r„  rE   rŠ   r\   r‹   r  r   r  r·  )
r=   rV   r§  rˆ  r
  r!  r\  r¤  r   rÍ   s
     `       r0   r8  r8  Ÿ  sÀ   ø€ ô ×
!Ò
! !§&¡&¨#Ó
.€CÜ	‡L‚LØ�
‰
�a‰ÜHôð
 �v‰v˜‰{€HÞ#ˆ�‰�QŒ¨€BØ"'§*¡*°£/ˆE�O‰O˜AÔ°u€EØ
�C‰-˜5˜(Ñ
"€CÞ#*”—’´·±€IÙ
�B˜VÓ
$€CÞØˆæ!)ˆs�{‰{˜1‹~Ð?¨s¯~©~Ó/?Ð?r/   c                 óF  • [         R                  " U R                  S5      U 5      n[         R                  " [         R                  " U 5      * 5      nU R
                  (       d  U R                  (       a  U R                  S5      nOUnU[         R                  " U5      -
  U4$ )Nr&   r1  )rE   r¼  rt  ro   rã   rÎ  Úis_xpurO  )r‚   r’   rq   rá   s       r0   Úlog_sigmoid_forwardrB  µ  sn   € ô �-Š-˜Ÿ™ rÓ*¨DÓ
1€CÜ�	Š	”5—9’9˜T“?Ð"Ó#€AØ‡|‡|�t—{—{Ø—‘ Ó%‰àˆØ”—’˜Q“Ñ Ð'Ð'r/   ÚlowÚhighrn  c           
      ó²   • [         R                  " U R                  U R                  5       [	        U5      [	        U5      U R
                  U R                  US9$ )N)r}  rC  rD  rì   r˜  rn  )ÚprimsÚ_uniform_helperr!  r}  r   rì   r˜  )r=   rC  rD  rn  s       r0   ÚuniformrH  Â  sF   € ô × Ò Ø	�‰Ø�x‰x‹zÜ�c‹NÜ�t‹_Ø�g‰gØ�x‰xØñð r/   c                 ó8   • U R                  [        XX#5      5      $ r9   )r3  rH  )r‚   rC  rD  rn  s       r0   Úuniform_rJ  Õ  s   € à�:‰:”g˜d¨Ó9Ó:Ð:r/   c                 ó2  • [        U 5      S-
  nUb@  [        R                  " US L S 5        [        R                  " [        U5      U:H  S 5        U$ Ub«  [        R                  " US L S 5        [        R                  " [        U5      U:H  S 5        / n[        U5       HZ  u  pE[	        U5      U:X  a$  UR                  XS-      [	        U5      -  5        M8  UR                  [        XS-      U-  5      5        M\     U$ [        R                  " SS 5        g )Nr%   c                  ó   • g©Nz9Must specify exactly one of output_size and scale_factorsr&   r&   r/   r0   rˆ   Ú.upsample_compute_output_size.<locals>.<lambda>à  ó   € ÐOr/   c                  ó   • g©NÚ r&   r&   r/   r0   rˆ   rN  â  s   € ÀRr/   c                  ó   • grM  r&   r&   r/   r0   rˆ   rN  è  rO  r/   c                  ó   • grQ  r&   r&   r/   r0   rˆ   rN  ê  s   € Àrr/   Fc                  ó   • grM  r&   r&   r/   r0   rˆ   rN  ó  s   € ÐRr/   )r‰  rE   rŠ   rõ  r“  r†  r   )rF  r  Úscale_factorsÚspatial_dimensionsr€  r©  s         r0   Úupsample_compute_output_sizerX  Û  sÿ   € Ü˜Z›¨1Ñ,ÐØÑÜ�ŠØ˜TÐ!ÙOô	
ô 	�Š”S˜Ó%Ð);Ñ;¹ZÔHØÐØÑ ä�ŠØ˜4ÐÙOô	
ô 	�Š”S˜Ó'Ð+=Ñ=¹zÔJØˆÜ˜mÖ,‰DˆAÜ�1‹v˜‹{Ø×"Ñ" :°!©eÑ#4´s¸1³vÑ#=Ö>à×"Ñ"¤7¨:¸!±eÑ+<¸qÑ+@Ó#AÖBñ	 -ð
 ÐÜ	‡L‚LØÑRõr/   c                 ó   • U c  g X   $ r9   r&   )Úscalesr¤  s     r0   Úget_scale_valuer[  ÷  s   € Ø�~ØØ‰;Ðr/   rV  c                 ó~   • [        U R                  5       X5      nU(       a  UOS /[        U5      -  n[        XU5      $ r9   ©rX  r5  r‰  Ú_upsample_nearest©rÆ   r  rV  ÚosizerZ  s        r0   Ú_upsample_nearest_vecra  ý  s<   € ô )¨¯©«°{ÓR€Eæ&‰¨T¨F´S¸³ZÑ,?ð ô ˜U¨6Ó2Ð2r/   c                 ó|   • [        U R                  5       X5      nU(       a  UOS /[        U5      -  n[        XUSS9$ ©NT©Úexactr]  r_  s        r0   Ú_upsample_nearest_exact_vecrf    s>   € ô )¨¯©«°{ÓR€Eæ&‰¨T¨F´S¸³ZÑ,?ð ô ˜U¨6¸Ñ>Ð>r/   c                 óÔ  • / n[        U5      nU(       a  SOSn[        U5       HÀ  nX   nU R                  U* U-      n	X'   b  X'   S:”  a	  X™X'   -  -  OX˜-  n
[        R                  " U[        R
                  U R                  S9nX¶-   U
-  R                  [        R                  5      n[        US-
  U-
  5       H  nUR                  S5      nM     UR                  U5        MÂ     U$ )Nr§   r›   r   r½  r$   rZ   )r‰  r[   r!  rE   rœ  rï   r˜  r<   r¾  r\   r†  )rÆ   r  rZ  re  r£  Únum_spatial_dimsr«  rï  r`  Úisizeru   Úoutput_indicesÚinput_indicesr]   s                 r0   Ú!_compute_upsample_nearest_indicesrl  '  sí   € ð €GÜ˜;Ó'ÐÞ‰S˜s€FäÐ#Ö$ˆð ‘ˆØ—‘Ð-Ð-°Ñ1Ñ2ˆð
 ‰yÑ$¨©°Q«ð ˜V™YÑ&Ò'à‘ð 	ô Ÿš e´5·=±=ÈÏÉÑVˆØ(Ñ1°UÑ:×>Ñ>¼u¿{¹{ÓKˆÜÐ'¨!Ñ+¨aÑ/Ö0ˆAØ)×3Ñ3°BÓ7ŠMñ 1à�‰�}Ö%ñ7 %ð8 €Nr/   )Úpreserve_memory_formatr   rZ  c                 ó   • [        XU/5      $ r9   ©r^  ©rÆ   r  rZ  s      r0   Úupsample_nearest1drq  M  s   € ô ˜U°&°Ó:Ð:r/   c                 ó   • [        XU/SS9$ rc  ro  rp  s      r0   Úupsample_nearest_exact1drs  Y  s   € ô ˜U°&°ÀÑFÐFr/   Úscales_hÚscales_wc                 ó   • [        XX#/5      $ r9   ro  ©rÆ   r  rt  ru  s       r0   Úupsample_nearest2drx  g  s   € ô ˜U°(Ð1EÓFÐFr/   c                 ó   • [        XX#/SS9$ rc  ro  rw  s       r0   Ú_upsample_nearest_exact2drz  t  s   € ô ˜U°(Ð1EÈTÑRÐRr/   Úscales_dc                 ó   • [        XX#U/5      $ r9   ro  ©rÆ   r  r{  rt  ru  s        r0   Úupsample_nearest3dr~  ƒ  s   € ô ˜U°(ÀhÐ1OÓPÐPr/   c                 ó   • [        XX#U/SS9$ rc  ro  r}  s        r0   Ú_upsample_nearest_exact3dr€  ‘  s   € ô Ø˜X°Ð:À$ñð r/   re  c                 ó:  • [        XX#S9nS S /U-   n[        R                  X5      nUR                  S:X  ad  [        R
                  " U 5      nU R                  S   nU R                  R                  S:X  a  US:  a  [        R                  nUR                  US9nU$ )Nrd  rK  r$   Úcudar_  )rl  r‹   Ú_unsafe_indexr„  rJ   r   r!  r˜  r»  rE   rc  r·  )	rÆ   r  rZ  re  Úspatial_indicesr£  r"  r`  Ú
n_channelss	            r0   r^  r^  £  s™   € ô 8Ø˜Fñ€Oð �Tˆl˜_Ñ,€GÜ×Ñ Ó/€Fà‡{�{�aÓä×3Ò3°EÓ:ˆð —[‘[ ‘^ˆ
Ø�<‰<×Ñ Ó&¨:¸«>Ü!×3Ñ3ˆMà×"Ñ"°Ð"Ð?ˆØ€Mr/   c           	      ó  • U(       a
  U(       a  SnOU(       a  SnOU(       a  SnOSn[        U 5      U-  S:w  a  [        S[        U 5       SU 35      e[        S[        U 5      U5       Vs/ s H  n[        XXC-    5      PM     sn$ s  snf )Nr  rK  r�   r%   r   zlen(params)=z  is not divisible by group_size=)r‰  r3  r[   rô  )ÚparamsÚ
has_biasesÚhas_projectionsÚ
group_sizer€  s        r0   Úgather_paramsr‹  ¾  s‘   € Þ–oØ‰
Þ	Ø‰
Þ	Ø‰
àˆ
ä
ˆ6ƒ{�ZÑ 1Ó$ÜØœ3˜v›;˜-Ð'GÈ
À|ÐTó
ð 	
ô 49¸¼CÀ»KÈÔ3TóÚ3T¨aŒˆf˜™Ð(Ö)Ñ3Tñð ùò s   Á,Bc                 óx   • U(       a%  U SU-     USU-     pTU SU-  S-      USU-  S-      pvOX   X   pTSu  pgXEXg4$ )Nr%   r$   ©NNr&   )r‡  Úhiddensr€  ÚbidirectionalÚ
cur_paramsÚ
cur_hiddenÚbidir_paramsÚbidir_hiddens           r0   Úparams_hiddensr”  Ñ  s[   € ÞØ!'¨¨A©¡°¸¸A¹±�JØ%+¨A°©E°A©IÑ%6¸ÀÀAÁÈÁ	Ñ8J‘là!'¡¨G©J�JØ%/Ñ"ˆà <Ð=Ð=r/   c                 óž   • X::  a  [        SU SU S35      eUR                  U R                  SX!U-
  5      5        U R                  SSU5      $ )Núlast_batch_size (z) must be > batch_size (rF  r   )r3  r†  r6  )r‘  Úlast_batch_sizeÚ
batch_sizerŽ  s       r0   Úupdate_hidden_for_packedr™  Ü  s_   € ØÓ$ÜØ Ð0Ð0HÈÈÐTUÐVó
ð 	
ð ‡N�N�:×$Ñ$ Q¨
ÀjÑ4PÓQÔRØ×Ñ˜Q  :Ó.Ð.r/   c           	      ó”   • X:X  a  U $ X:¼  a  [        SU SU S35      e[        R                  " U UR                  SXU-
  5      45      $ )Nr–  z) must be < batch_size (rF  r   )r3  rE   Úconcatr6  )r‘  r—  r˜  Ú
inp_hiddens       r0   Ú update_hidden_for_packed_reverser�  å  sh   € ð Ó$ØÐØÓ$ÜØ Ð0Ð0HÈÈÐTUÐVó
ð 	
ô �<Š<àØ×Ñ˜a ¸Ñ2NÓOð	
óð r/   c           	      ó   • US   nUS   nU(       a  US   OS n	U(       a  US   OS n
/ n/ nU(       a  US   OUS   nUR                  SSU5      n[        R                  " U [        U5      5      nU(       a  US S S2   nU HX  n U R                  S   nUU:X  a  O"U(       a  [        XíUU5      nO[        XíUU5      nU" XXyXŠ5      nUnUR                  U5        MZ     U(       a  UR                  5         O!UR                  U5        UR                  5         [        R                  " US5      nU(       d  [        R                  " US5      OUnUU4$ )Nr   r$   r%   r�   rZ   )
r6  rE   rª  r|  r!  r�  r™  r†  Úreverser7  )ÚinpÚhiddenr‡  rˆ  Ú	hidden_fnÚbatch_sizesrŸ  Ú	ih_weightÚ	hh_weightÚih_biasÚhh_biasÚstep_outputrŽ  r—  r‘  Ú	split_inpr€  rÍ   Ú
hidden_outs                      r0   Úone_layer_rnn_datar«  ö  sC  € ð �q‘	€IØ�q‘	€IÞ%ˆf�QŠi¨4€GÞ%ˆf�QŠi¨4€Gà€KØ"$€Gæ)0�k "’o°kÀ!±n€OØ—‘˜q ! _Ó5€JÜ—’˜C¤ kÓ!2Ó3€IÞØ™d ˜d‘Oˆ	ÛˆØ�I‰I�a‰Lˆà˜aÓØæÜ9Ø¨Q°ó‰Jô 2Ø¨Q°óˆJñ ˜s°	ÀIÓWˆ
ØˆØ×Ñ˜:Ö&ñ# ö& Ø×ÑÕà�‰�zÔ"Ø�‰Ôä
�)Š)�K Ó
#€CÞ.5”—’˜7 AÔ&¸:€JØ�
ˆ?Ðr/   c                 ó   ^ • U 4S jnU$ )Nc                 óD   >• T" [         R                  " XU5      U -   5      $ r9   ©rÈ   Úlinear©r€  r‘  r¤  r¦  r¥  r§  Únonlinearitys         €r0   rQ   Úrnn_cell.<locals>.inner%  s   ø€ ÙœAŸHšH Z¸GÓDÀqÑHÓIÐIr/   r&   ©r±  rQ   s   ` r0   Úrnn_cellr´  $  s   ø€ õJð €Lr/   c                 ó   ^ • U 4S jnU$ )Nc                 ór   >• [         R                  " XU5      n T" [         R                  " XU5      U -   5      $ r9   r®  r°  s         €r0   rQ   Úrnn_cell_data.<locals>.inner,  s.   ø€ Ü�HŠH�Q 7Ó+ˆÙœAŸHšH Z¸GÓDÀqÑHÓIÐIr/   r&   r³  s   ` r0   Úrnn_cell_datar¸  +  s   ø€ õJð €Lr/   c           	      óž  • US   nUS   nU(       a  US   OS nU(       a  US   OS n	[         R                  " XU5      n
U(       a  U
R                  S5      OU
n
UR                  S5      n/ nU
 H  nU" XÛXhXy5      nUR	                  U5        M      U(       a  UR                  5         [        R                  " US5      nXëR                  S5      4$ )Nr   r$   r%   r�   )	rÈ   r¯  Úflipr\   r†  rŸ  rE   r7  r  )r   r¡  r‡  rˆ  r¢  rŸ  r¤  r¥  r¦  r§  Úprecomputed_inputr‘  r¨  r€  rÍ   s                  r0   Úone_layer_rnnr¼  3  sÆ   € Ø�q‘	€IØ�q‘	€IÞ%ˆf�QŠi¨4€GÞ%ˆf�QŠi¨4€GäŸš °Ó9ÐÞ5<Ð)×.Ñ.¨qÔ1ÐBSÐØ×!Ñ! !Ó$€JØ€KÛˆÙ˜q¨iÀ)ÓUˆ
Ø×Ñ˜:Ö&ñ ö Ø×ÑÔä
�)Š)�K Ó
#€Cà×"Ñ" 1Ó%Ð%Ð%r/   c                 óž  • US   nUS   nU(       a  US   nUS   nOH[         R                  " UR                  5       5      n[         R                  " UR                  5       5      nUS   R                  S5      n	US   R                  S5      n
/ nSnU	R                  S5      nSnSnSnSnU R	                  5       n U	R	                  5       n	U
R	                  5       n
[         R
                  R                  R                  R                  U UUUUU	U
UUUUUUUUU5      nUS   US   US   nnnUUR                  S5      UR                  S5      44$ )Nr   r$   r%   r�   F)
rE   r  r5  r\   r·  r  r‹   Úmkldnn_rnn_layerr�  r  )r   r¡  r‡  rˆ  rŸ  Úw0Úw1Úw2Úw3ÚhxÚcxr£  ÚmodeÚhidden_sizeÚ
num_layersr�  r*  rU  Úoutputsra   ÚhyÚcys                         r0   Úmkldnn_one_layer_lstmrË  I  sS  € Ø	�‰€BØ	�‰€BÞØ�A‰YˆØ�A‰Y‰ä�[Š[˜Ÿ™›Ó#ˆÜ�[Š[˜Ÿ™›Ó#ˆà	�‰×	Ñ	˜QÓ	€BØ	�‰×	Ñ	˜QÓ	€Bà€KØ€DØ—'‘'˜!“*€KØ€Jð €MØ€Kà€Eð �.‰.Ó
€CØ	�‰‹€BØ	�‰‹€BÜ�i‰i�n‰n×-Ñ-×5Ñ5ØØ
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØó!€Gð$ ˜‘
˜G A™J¨°©
ˆ2€r€AØˆr�z‰z˜!‹}˜bŸj™j¨›mÐ,Ð,Ð,r/   c
           	      ó(  • U(       a  U R                  SS5      OU n / n
[        U5       HÉ  n[        X!X·5      u  pÍpïU(       a
  XKS-
  :  a  UOSnU	" XXÃ5      u  nnU
R                  U5        U(       a  U	" XXãSS9u  nnU
R                  U5        U(       a+  [        R
                  " UW/UR                  5       S-
  5      n OUn US:w  d  M¡  U(       d  Mª  X´S-
  :  d  M´  [        R                  " XSS9n MË     U(       a  U R                  SS5      OU n X
4$ )Nr   r$   r›   T)rŸ  )rU  )Ú	transposer[   r”  r†  rE   r7  rV   rX  )rÆ   r¡  r‡  rˆ  rÇ  rX  rU  r�  r*  Úlayer_fnÚfinal_hiddensr€  r�  r‘  r’  r“  Úfwd_inpÚ
fwd_hiddenÚbwd_inpÚ
bwd_hiddens                       r0   Ú_rnn_helperrÔ  {  s  € ö &1ˆE�O‰O˜A˜qÔ!°e€EØ€Mä�:ÖˆÜ=KØ˜Aó>
Ñ:ˆ
 ö $¨
¸±UÓ(:‘'ÀˆÙ& u¸*ÓQÑˆ�Ø×Ñ˜ZÔ(æÙ"*Ø \Àtñ#ÑˆG�Zð × Ñ  Ô,æÜ—I’I˜w¨Ð0°'·+±+³-À!Ñ2CÓD‰EàˆEà�a�<ŸE˜E a°q©.Õ&8Ü—M’M %¸Ñ=ŠEñ) ö, &1ˆE�O‰O˜A˜qÔ!°e€EØÐÐr/   c	                 óà   • UR                  S5      n	[        X#S5      n[        U U	UUUUUUU[        [        [        [        R                  5      S95
      u  p«U
[        R                  " US5      4$ ©Nr   F©r¢  )	Úunbindr‹  rÔ  r   r¼  r´  rE   r²   Ústack©rÆ   rÃ  r‡  rˆ  rÇ  rX  rU  r�  r*  r¡  rÍ   rÏ  s               r0   Úrnn_tanh_inputrÛ  ¤  óp   € ð �Y‰Y�q‹\€FÜ˜6¨uÓ5€FÜ$ØØØØØØØØØÜ”¬´%·*±*Ó)=Ñ>óÑ€Cð ”—’˜M¨1Ó-Ð-Ð-r/   c	                 óà   • UR                  S5      n	[        X#S5      n[        U U	UUUUUUU[        [        [        [        R                  5      S95
      u  p«U
[        R                  " US5      4$ rÖ  )	rØ  r‹  rÔ  r   r¼  r´  rE   rÐ  rÙ  rÚ  s               r0   Úrnn_relu_inputrÞ  Ã  rÜ  r/   c	                 óâ   • UR                  S5      n	[        X4S5      n[        U U	UUUUUUS[        [        U[        [        R                  5      S95
      u  p«U
[        R                  " US5      4$ ©Nr   F©r£  r¢  )	rØ  r‹  rÔ  r   r«  r¸  rE   rÐ  rÙ  ©Údatar£  rÃ  r‡  rˆ  rÇ  rX  rU  r�  r¡  rÍ   rÏ  s               r0   Úrnn_relu_datarä  â  ów   € ð �Y‰Y�q‹\€FÜ˜6¨uÓ5€FÜ$ØØØØØØØØØÜÜØ#Ü#¤E§J¡JÓ/ñ	
óÑ€Cð  ”—’˜M¨1Ó-Ð-Ð-r/   c	                 óâ   • UR                  S5      n	[        X4S5      n[        U U	UUUUUUS[        [        U[        [        R                  5      S95
      u  p«U
[        R                  " US5      4$ rà  )	rØ  r‹  rÔ  r   r«  r¸  rE   r²   rÙ  râ  s               r0   Úrnn_tanh_datarç    rå  r/   c                 óf  • [         R                  " XU5      U -   nUR                  SU5      nUS   R                  5       n	US   R                  5       n
US   R	                  5       nUS   R                  5       nX¢-  X›-  -   nXÍR	                  5       -  nUc  UO[         R                  " XåS 5      nXí4$ )NrK  r   r$   r%   r�   ©rÈ   r¯  ÚchunkrÊ   r²   )r   rÃ  rÄ  r¥  r§  Ú	hr_weightÚ	chunk_dimÚgatesÚchunked_gatesÚin_gateÚforget_gateÚ	cell_gateÚout_gaterÊ  rÉ  s                  r0   Ú	lstm_cellró  (  s¯   € Ü�HŠH�R GÓ,¨sÑ2€EØ—K‘K  9Ó-€MØ˜AÑ×&Ñ&Ó(€GØ Ñ"×*Ñ*Ó,€KØ˜aÑ ×%Ñ%Ó'€IØ˜QÑ×'Ñ'Ó)€HØ	Ñ	˜WÑ0Ñ	1€BØ	—G‘G“IÑ	€BØÑ ‰¤a§h¢h¨r¸dÓ&C€Bàˆ6€Mr/   c                 óJ  • US   nUS   nU(       a  US   OS nU(       a  US   OS n[        U5      S:X  a  US   O[        U5      S:X  a  US   OS n	US   R                  S5      n
US   R                  S5      n[        R                  " XU5      nU(       a  UR	                  S5      OUn/ nU H"  n [        X
X¶X‰SS9u  p«UR                  U
5        M$     U(       a  UR                  5         [        R                  " US5      nXêR                  S5      UR                  S5      44$ )Nr   r$   r%   r�   r  rK  ©rì  )r‰  r\   rÈ   r¯  rº  ró  r†  rŸ  rE   r7  r  )r   r¡  r‡  rˆ  rŸ  r¤  r¥  r¦  r§  rë  rÃ  rÄ  r»  r¨  rÍ   s                  r0   Úone_layer_lstmrö  6  s  € Ø�q‘	€IØ�q‘	€IÞ%ˆf�QŠi¨4€GÞ%ˆf�QŠi¨4€Gä˜“[ AÓ%ˆˆqŠ	¼¸F»ÀqÓ8H¨6°!ª9Èdð ð 
�‰×	Ñ	˜QÓ	€BØ	�‰×	Ñ	˜QÓ	€BäŸš °Ó9ÐÞ5<Ð)×.Ñ.¨qÔ1ÐBSÐØ€KÛ ˆÜ˜3 B°7ÐQRÑS‰ˆØ×Ñ˜2Öñ !ö Ø×ÑÔä
�)Š)�K Ó
#€Cà—‘˜A“ §
¡
¨1£Ð.Ð.Ð.r/   c                 óè  • US   nUS   nU(       a  US   OS nU(       a  US   OS n	[        U5      S:X  a  US   O[        U5      S:X  a  US   OS n
/ n/ nU(       a  US   OUS   n[        R                  " U [        U5      5      nU(       a  US S S2   nUS   nUS   nUR	                  SSU5      UR	                  SSU5      nnU GH  n U R
                  S   n[        R                  " XU5      n UU:  aa  UR                  UR	                  SUUU-
  5      UR	                  SUUU-
  5      45        UR	                  SSU5      UR	                  SSU5      nnUU:”  aZ  [        R                  " UUR	                  SUUU-
  5      4S5      n[        R                  " UUR	                  SUUU-
  5      4S5      n[        U UUXyU
SS9u  nnUnUR                  U5        GM     U(       a  UR                  5         UU4nO\UR                  UU45        UR                  5         [        U6 u  nn[        R                  " US5      [        R                  " US5      4n[        R                  " US5      nUU4$ )	Nr   r$   r%   r�   r  rK  rZ   rõ  )r‰  rE   rª  r|  r6  r!  rÈ   r¯  r†  r›  ró  rŸ  r  r7  )r   r¡  r‡  rˆ  r£  rŸ  r¤  r¥  r¦  r§  rë  r¨  rŽ  r—  r©  Úorig_hxÚorig_cxrÃ  rÄ  r€  rª  Úhidden0Úhidden1rÍ   s                           r0   Úone_layer_lstm_datarü  Q  sp  € Ø�q‘	€IØ�q‘	€IÞ%ˆf�QŠi¨4€GÞ%ˆf�QŠi¨4€Gä˜“[ AÓ%ˆˆqŠ	¼¸F»ÀqÓ8H¨6°!ª9Èdð ð €KØ€Gæ)0�k "’o°kÀ!±n€OÜ—’˜C¤ kÓ!2Ó3€IÞØ™d ˜d‘Oˆ	à�Q‰i€GØ�Q‰i€Gà�‰�q˜!˜_Ó-Ø�‰�q˜!˜_Ó-ð 	€Bô
 ˆØ�I‰I�a‰LˆÜ�hŠh�s wÓ/ˆð ˆÓØ�N‰Nà—I‘I˜a  O°aÑ$7Ó8Ø—I‘I˜a  O°aÑ$7Ó8ðôð —Y‘Y˜q ! QÓ'¨¯©°1°a¸Ó);�ˆBð ˆÓÜ—’Ø�W—^‘^ A ¸¸OÑ8KÓLÐMÈqóˆBô —’Ø�W—^‘^ A ¸¸OÑ8KÓLÐMÈqóˆBô ˜3  B¨	¸IÐQRÑS‰ˆˆBØˆØ×Ñ˜2×ñ3 ö6 Ø×ÑÔØ˜"�X‰
à�‰˜˜B�xÔ Ø�‰ÔÜ ˜=Ñˆ�Ü—Y’Y˜w¨Ó*¬E¯IªI°g¸qÓ,AÐAˆ
ä
�)Š)�K Ó
#€CØ�
ˆ?Ðr/   c                 ó<   • S nU" XU5      (       a  [         $ [        $ )aþ  Check whether we could use decompose lstm with mkldnn_rnn_layer.
All the below conditions need to be met:
    * ``torch._C._get_mkldnn_enabled()`` returns ``True``.
    * All the input args are on CPU.
    * The dtypes of args are either torch.float or torch.bfloat16.
    * Inference.
    * ``has_projections`` returns ``False``.

Args:
    * input: the input sequence to LSTM
    * hx: a tuple of the input hidden state and cell state ``(h_0, c_0)`` to LSTM
    * params: the weight and bias tensors of LSTM
c                 ó„  • [         R                  R                  5       (       d  gU /[        U5      -   [        [        R
                  " U5      5      -   nU Vs1 s H  oDR                  iM     nn[        U5      S:w  a  gUR                  5       nU[         R                  " S5      :w  a  gU Vs1 s H  oDR                  iM     nnU H)  nU[         R                  [         R                  4;  d  M)    g   U R                  (       a  gUS   R                  S5      US   R                  S5      :g  n	U	(       a  ggs  snf s  snf )NFr$   r·  r   r%   T)rE   rW  Ú_get_mkldnn_enabledr|  r	   Úfrom_iterabler˜  r‰  Úpoprì   r  Úbfloat16Úrequires_gradr5  )
rÆ   rÃ  r‡  r�  ÚtÚdevicesr˜  Údtypesrì   r‰  s
             r0   Ú
use_mkldnnÚ2select_one_layer_lstm_function.<locals>.use_mkldnn   sü   € Ü�x‰x×+Ñ+×-Ñ-Øà�'œD ›HÑ$¤t¬E×,?Ò,?ÀÓ,GÓ'HÑHˆÙ%,Ó-¢W —8”8¡WˆÐ-Üˆw‹<˜1ÓØà—‘“ˆØ”U—\’\ %Ó(Ó(Øá#*Ó+¢7˜a—'”'¡7ˆÐ+ÛˆEØœUŸ[™[¬%¯.©.Ð9Õ9Ùñ ð ××Øà˜Q™%Ÿ*™* Q›-¨2¨a©5¯:©:°a«=Ñ8ˆÞØàùò) .ùò ,s   ÁD8Â.D=)rË  rö  )rÆ   rÃ  r‡  r  s       r0   Úselect_one_layer_lstm_functionr	  ‘  s"   € òñ: �%˜V×$Ñ$Ü$Ð$äÐr/   c	                 óº  • [        U5      S:w  a  [        S[        U5       35      e[        X#US   R                  S5      US   R                  S5      :g  5      n[	        [        US   US   5      5      n	[        XU5      n
[        U U	UUUUUUUU
5
      u  p¼[	        [        U6 5      nU[        R                  " US   S5      [        R                  " US   S5      4$ )Nr%   ú$lstm expects two hidden states, got r   r$   )
r‰  r3  r‹  r5  r|  r  r	  rÔ  rE   rÙ  )rÆ   rÃ  r‡  rˆ  rÇ  rX  rU  r�  r*  r¡  rÎ  rÍ   rÏ  s                r0   Ú	lstm_implr  Ã  sÞ   € ô ˆ2ƒw�!ƒ|ÜÐCÄCÈÃGÀ9ÐMÓNÐNÜ˜6¨r°!©u¯z©z¸!«}ÀÀ1ÁÇ
Á
È1ÃÑ/MÓN€FÜ”#�b˜‘e˜R ™UÓ#Ó$€FÜ-¨e¸Ó@€HÜ$ØØØØØØØØØØóÑ€Cô œ˜mÐ,Ó-€MØ”—’˜M¨!Ñ,¨aÓ0´%·+²+¸mÈAÑ>NÐPQÓ2RÐRÐRr/   c	                 óº  • [        U5      S:w  a  [        S[        U5       35      e[        X4US   R                  S5      US   R                  S5      :g  5      n[	        [        US   US   5      5      n	[        U U	UUUUUUS[        [        US95
      u  p«[	        [        U6 5      nU
[        R                  " US   S5      [        R                  " US   S5      4$ )Nr%   r  r   r$   F)r£  )r‰  r3  r‹  r5  r|  r  rÔ  r   rü  rE   rÙ  râ  s               r0   Úlstm_data_implr  æ  sÚ   € ô ˆ2ƒw�!ƒ|ÜÐCÄCÈÃGÀ9ÐMÓNÐNÜ˜6¨r°!©u¯z©z¸!«}ÀÀ1ÁÇ
Á
È1ÃÑ/MÓN€FÜ”#�b˜‘e˜R ™UÓ#Ó$€FÜ$ØØØØØØØØØÜÔ#°Ñ=óÑ€Cô œ˜mÐ,Ó-€MØ”—’˜M¨!Ñ,¨aÓ0´%·+²+¸mÈAÑ>NÐPQÓ2RÐRÐRr/   c                 ó$  • U R                  SS5      n[        R                  " XU5      R                  SS5      nUS   US   -   R                  5       nUS   US   -   R                  5       n	US   US   U-  -   R	                  5       n
X-
  U	-  U
-   $ )Nr�   r$   r%   r   )rê  rÈ   r¯  rÊ   r²   ©r   r‘  r¤  r¦  r¥  r§  Úchunked_igatesÚchunked_hgatesÚ
reset_gateÚ
input_gateÚnew_gates              r0   Úgru_cellr    s�   € Ø—Y‘Y˜q !“_€NÜ—X’X˜j°WÓ=×CÑCÀAÀqÓI€NØ  Ñ# n°QÑ&7Ñ7×@Ñ@ÓB€JØ  Ñ# n°QÑ&7Ñ7×@Ñ@ÓB€JØ˜qÑ! ^°AÑ%6¸Ñ%CÑD×JÑJÓL€HØÑ! ZÑ/°(Ñ:Ð:r/   c                 óN  • [         R                  " XU5      R                  SS5      n[         R                  " XU5      R                  SS5      nUS   US   -   R                  5       nUS   US   -   R                  5       n	US   US   U-  -   R	                  5       n
X-
  U	-  U
-   $ )Nr�   r$   r   r%   ré  r  s              r0   Úgru_cell_datar    s«   € Ü—X’X˜c¨gÓ6×<Ñ<¸QÀÓB€NÜ—X’X˜j°WÓ=×CÑCÀAÀqÓI€NØ  Ñ# n°QÑ&7Ñ7×@Ñ@ÓB€JØ  Ñ# n°QÑ&7Ñ7×@Ñ@ÓB€JØ˜qÑ! ^°AÑ%6¸Ñ%CÑD×JÑJÓL€HØÑ! ZÑ/°(Ñ:Ð:r/   c	                 ó¸   • [        X4S5      n[        U UR                  S5      UUUUUUS[        [        U[
        S95
      u  pšU	[        R                  " U
S5      4$ )NFr   rá  )r‹  rÔ  rØ  r   r«  r  rE   rÙ  )rã  r£  rÃ  r‡  rˆ  rÇ  rX  rU  r�  rÍ   rÏ  s              r0   Úgru_impl_datar    se   € ô ˜6¨uÓ5€FÜ$ØØ
�	‰	�!‹ØØØØØØØÜÔ"°Ä}ÑUóÑ€Cð ”—’˜M¨1Ó-Ð-Ð-r/   c	                 ó¶   • [        X#S5      n[        U UR                  S5      UUUUUUU[        [        [
        S95
      u  pšU	[        R                  " U
S5      4$ )NFr   r×  )r‹  rÔ  rØ  r   r¼  r  rE   rÙ  )rÆ   rÃ  r‡  rˆ  rÇ  rX  rU  r�  r*  rÍ   rÏ  s              r0   Úgru_implr  8  sb   € ô ˜6¨uÓ5€FÜ$ØØ
�	‰	�!‹ØØØØØØØÜ”¬Ñ2óÑ€Cð ”—’˜M¨1Ó-Ð-Ð-r/   c                 ó¼   • [        U R                  5       X5      n[        US5      n[        US5      n[        R                  R
                  R                  XX%U5      $ ©Nr   r$   )rX  r5  r[  rE   r  r‹   Ú_upsample_bilinear2d_aa©rÆ   r  Úalign_cornersrV  r`  Úscale_hÚscale_ws          r0   Úupsample_bilinear2d_aa_vecr$  V  sP   € ô )¨¯©«°{ÓR€EÜ˜m¨QÓ/€GÜ˜m¨QÓ/€GÜ�9‰9�>‰>×1Ñ1Ø�m¨góð r/   c                 ó¼   • [        U R                  5       X5      n[        US5      n[        US5      n[        R                  R
                  R                  XX%U5      $ r  )rX  r5  r[  rE   r  r‹   Ú_upsample_bicubic2d_aar   s          r0   Úupsample_bicubic2d_aa_vecr'  b  sP   € ô )¨¯©«°{ÓR€EÜ˜m¨QÓ/€GÜ˜m¨QÓ/€GÜ�9‰9�>‰>×0Ñ0Ø�m¨góð r/   c                 ó~   • [        U R                  5       X5      nU(       a  UOS /[        U5      -  n[        XX%5      $ r9   )rX  r5  r‰  Ú_upsample_linear)rÆ   r  r!  rV  r`  rZ  s         r0   Ú_upsample_linear_vecr*  n  s7   € ô )¨¯©«°{ÓR€EÞ+‰]°$°¼#¸e»*Ñ1D€FÜ˜E¨-Ó@Ð@r/   r!  c                 ó   • [        XX#/5      $ r9   ©r)  )rÆ   r  r!  ru  s       r0   Úupsample_linear1dr-  |  s   € ô ˜E°¸zÓJÐJr/   c                 ó   • [        XX#U/5      $ r9   r,  )rÆ   r  r!  rt  ru  s        r0   Úupsample_bilinear2dr/  ‡  s   € ô ˜E°È(Ð?SÓTÐTr/   c                 ó   • [        XX#XE/5      $ r9   r,  )rÆ   r  r!  r{  rt  ru  s         r0   Úupsample_trilinear3dr1  –  s   € ô Ø˜M°hÐ+Ióð r/   c                 óZ   • U(       a  US:”  a  U S-
  US-
  -  $ S$ Ub  US:”  a  SU-  $ X-  $ )Nr$   rn   r   r&   )r½  r¾  r!  ru   s       r0   Ú_compute_scaler3  §  s@   € ÞØ5=À³\�˜#‘ (¨S¡.Ñ1ÐHÀqÐHà#Ñ/°E¸A³Iˆs�U‰{ÐUÀ7ÑCUÐUr/   c                 ó,   • U(       a  X-  $ XS-   -  S-
  $ ©Nr§   r&   )ru   Ú	dst_indexr!  s      r0   Ú_compute_source_indexr7  ®  s    € ÞØÑ Ð à C™Ñ(¨3Ñ.Ð.r/   ÚweightsÚweights_precisionc                 ó¼   • [        S [        X5       5       5      SUS-
  -  -   nX2-	  n[        R                  " USS5      R	                  [        R
                  5      $ )Nc              3   ó¤   #   • U  HF  u  pUR                  [        R                  5      UR                  [        R                  5      -  v •  MH     g 7fr9   )r<   rE   rJ  )rÖ  r©  rý  s      r0   r×  Ú%_sum_tensors_uint8.<locals>.<genexpr>¸  s5   é € ð Ú:K±$°!ˆ�‰ŒU�[‰[Ó˜AŸD™D¤§¡Ó-Ö-Ò:Kùs   ‚AAr$   r   éÿ   )Ú_sum_tensorsr  rE   r—   r<   r]  )r•  r8  r9  r´  s       r0   Ú_sum_tensors_uint8r?  µ  s_   € ô ñ Ü:=¸cÔ:Kóó à	
Ð  1Ñ$Ñ	%ñ'€Fð Ñ(€FÜ�;Š;�v˜q #Ó&×)Ñ)¬%¯+©+Ó6Ð6r/   c                 óÔ   • [         R                  " U 5      R                  5       nSn[         R                  " X!R                  S9nSUSUS-   -  -  -   nUS:¬  nX%R                  5       -
  $ )Né   r—  r§   r$   i €  )rE   rÙ  r•   rœ  r˜  rù   )r8  Ú
max_weightÚmax_weight_precisionÚ
precisionsÚvaluesr¥  s         r0   Ú_compute_weight_precisionrF  ¿  se   € Ü—’˜WÓ%×)Ñ)Ó+€JØÐÜ—’Ð2×;LÑ;LÑM€JØ�:  z°A¡~Ñ!6Ñ7Ñ7€FØ�gÑ€DØ§(¡(£*Ñ,Ð,r/   c                 óp  ^ ^^• T R                   S   nT R                   SS  n[        U5      n[        R                  " T [        R                  R
                  S9u  nmUUU 4S jn[        [        XQU5      5       V	V
VVs/ s H  u  n	u  p«nU" X«X6S-
  U	-
  5      PM     nnn
n	n[        [        U6 5      u  pÞn/ n[        SS//U-  6  Hh  nS S /[        U5       Vs/ s H  nUU   S:X  a  UU   OUU   PM     sn-   n[        R                  T U5      n[        UT5      nUR                  U5        Mj     [        [        U5      5       Hs  n	XÙ   Xé   -
  R!                  SS5      R#                  T5      n[        US S S2   USS S2   5       VVs/ s H#  u  nnU[$        R&                  " UU-
  U5      -   PM%     nnnMu     [        U5      S:w  a  [)        S[        U5       35      eUS   n[        R*                  " T 5      nT R,                  R.                  S	:X  a  US
:  a  [$        R0                  n[3        U[$        R4                  5      (       d!  [)        S[/        U5      R6                   35      eUR9                  US9nT R;                  5       (       d  UR=                  5       nU$ s  snnn
n	f s  snf s  snnf )Nr$   r%   re  c                 ó`  >• [        XT	U5      n[        R                  " UTR                  S9R	                  T
S9n[        XET	5      R                  SS9nUR                  " UR                  S   /S/U-  Q76 nUR	                  [        R                  5      nUS-   R                  U S-
  S9nXgU4$ )Nr—  rë   r›   r‘   r   r$   r”   )
r3  rE   rœ  r˜  r<   r7  r—   r-  r!  r¾  )Úinp_sizer¾  rZ  ÚnsqueezeÚscale_factorr€  Úx_f32r=   Úxp1r!  rì   rÆ   s            €€€r0   Ú
get_valuesÚ$_upsample_linear.<locals>.get_valuesÙ  s¦   ø€ ä% h¸-ÈÓPˆô �LŠL˜¨%¯,©,Ñ7×:Ñ:ÀÐ:ÐGˆä% l°}ÓE×KÑKÐPSÐKÐTˆØ—’˜eŸk™k¨!™nÐ@°¨s°hÑ/?Ò@ˆØ�H‰H”U—[‘[Ó!ˆØ�1‰u�m‰m ¨1¡ˆmÐ-ˆØ˜ˆ}Ðr/   r   r›   rn   z+Expected vs to have exactly 1 element, got r‚  é   z$Expected result to be a Tensor, got r_  )r!  r‰  rJ   rK   rg  ÚINT_TO_FLOATrõ  r  r|  r
   r[   r‹   rƒ  r   r†  Úreversedr—   r<   rE   rß   r3  r   r˜  r»  rc  r;   r   r'   r·  r\  Úround)rÆ   r  r!  rZ  r…  Ú	inp_sizesÚn_dimsr]   rN  r€  rI  r¾  rE  Úxs_f32ÚxsÚxp1sÚvsr  Úkr¤  ÚvÚxscaleÚv1Úv2r"  r`  rì   s   ` `                       @r0   r)  r)  È  s¦  ú€ ð —‘˜Q‘€JØ—‘˜A˜B�€IÜ�‹^€Fä×'Ò'ØÜ!×AÑA×NÑNñ�H€A€u÷
ô 09Ü�	¨Ó/ô0
öò0
Ñ+ˆAÑ+� Fñ 	�8 v¸©z¸A©~Ö>ñ0
ð ó ô œC ˜LÓ)Ñ€F�à	€BÜ˜˜1�v�h Ñ'Ó(ˆØ�TˆlÄuÈVÄ}ÓUÂ}À! q¨¡t¨q£y˜b še°d¸1±gÒ=Á}ÑUÑUˆÜ×Ñ˜u cÓ*ˆÜ# A uÓ-ˆØ
�	‰	�!Žñ	 )ô ”e˜F“mÖ$ˆØ‘)˜b™eÑ#×*Ñ*¨3°Ó4×7Ñ7¸Ó>ˆô ˜b¡ 1 ™g r¨!¨$¨Q¨$¡xÔ0ô
ò 1‘��Bð ”—’˜2 ™7 FÓ+Ô+Ù0ð 	ñ 
‰ñ %ô ˆ2ƒw�!ƒ|ÜÐJÌ3ÈrË7È)ÐTÓUÐUØ�‰U€Fô ×/Ò/°Ó6€Mð ‡|�|×Ñ˜FÓ" z°B£Ü×/Ñ/ˆä�fœeŸl™l×+Ñ+ÜØ2´4¸³<×3HÑ3HÐ2IÐJó
ð 	
ð ×Ñ¨]ÐÐ;€Fà×"Ñ"×$Ñ$Ø—‘“ˆà€MùõYùò Vùó
s   Á?J%
ÃJ-Æ*J2r  r  c                 ó4   • U R                   UR                   :H  $ r9   rõ  )r  r  s     r0   Úis_same_sizer`    s   € à�7‰7�a—g‘gÑÐr/   c                 ó,   • [         R                  X5      $ r9   )r‹   r   )r=   r!  rL   s      r0   Ú_reshape_aliasrb    s   € ô �9‰9�QÓÐr/   c                 ó,   • [         R                  X5      $ r9   )r‹   r§  )r=   r£  s     r0   rƒ  rƒ  !  s   € ä�:‰:�aÓ!Ð!r/   c                 ó.   • [         R                  XX#5      $ r9   )r‹   r   )r=   r£  rƒ   r6  s       r0   r8  r8  &  s   € ä�>‰>˜! eÓ8Ð8r/   c                 ó¤  • U HK  nUc  M  [         R                  " UR                  [         R                  [         R                  4;   S 5        MM     [         R                  " UR                  [         R
                  :H  S 5        SSKJn  U" U R                  5       S:H  5      (       a;  [         R                  R                  X5      nU R                  UR                  U5      $ [        [        U5      5       H0  nX'   nUc  M  UR                  SU R!                  U5      S-
  S9X''   M2     ["        R%                  X5      R'                  U) U5      $ )Nc                  ó   • g©Nz3tensors used as indices must be long or int tensorsr&   r&   r/   r0   rˆ   Ú&_unsafe_masked_index.<locals>.<lambda>1  rŸ  r/   c                  ó   • g©Nz*tensors used as masks must be bool tensorsr&   r&   r/   r0   rˆ   rh  6  ó   € Ð<r/   r   rc  r$   r�  )rE   rŠ   rì   ry  r“  rž  rz  rd  r  Ú_meta_registrationsÚmeta_index_Tensorrð   r!  r[   r‰  r—   r5  r‹   rƒ  rz  )r=   r¥  r£  Úfillr§  rd  Úmeta_resultr€  s           r0   r¡  r¡  +  s  € ãˆØÓÜ�LŠLØ—‘¤§
¡
¬E¯I©IÐ6Ñ6ÙMöñ ô 
‡L‚LØ�
‰
”e—j‘jÑ Ù<ôõ
 Eá�a—g‘g“i 1‘n×%Ñ%Ü×/Ñ/×AÑAÀ!ÓMˆØ�z‰z˜+×+Ñ+¨TÓ2Ð2ä”3�w“<Ö ˆØ‘
ˆØÓØŸ™¨°·±°q³	¸A±˜Ð>ˆG‹Jñ !ô
 ×Ñ˜aÓ)×5Ñ5°t°e¸TÓBÐBr/   c                 óR  • U HK  nUc  M  [         R                  " UR                  [         R                  [         R                  4;   S 5        MM     [         R                  " UR                  [         R
                  :H  S 5        U R                  5       S:X  a  U R                  5       $ [        [        U5      5       H@  nX%   nUc  M  UR                  U R                  U5      * U R                  U5      S-
  S9X%'   MB     UR                  U) S5      n[        R                  XUSS9$ )Nc                  ó   • grg  r&   r&   r/   r0   rˆ   Ú5_unsafe_masked_index_put_accumulate.<locals>.<lambda>M  rŸ  r/   c                  ó   • grj  r&   r&   r/   r0   rˆ   rr  R  rk  r/   r   r$   r�  Tr5  )rE   rŠ   rì   ry  r“  rž  r  r›  r[   r‰  r—   r5  rz  r‹   r8  )r=   r¥  r£  rE  r§  r€  Úmasked_values          r0   Ú#_unsafe_masked_index_put_accumulateru  G  sî   € ãˆØÓÜ�LŠLØ—‘¤§
¡
¬E¯I©IÐ6Ñ6ÙMöñ ô 
‡L‚LØ�
‰
”e—j‘jÑ Ù<ôð
 	‡w�wƒy�Aƒ~Ø�w‰w‹yÐä”3�w“<Ö ˆØ‘
ˆØÓØŸ™¨!¯&©&°«)¨¸¿¹À»ÀQ¹˜ÐGˆG‹Jñ !ð
 ×%Ñ% t e¨QÓ/€LÜ×!Ñ! !¨lÀtÐ!ÐLÐLr/   c                 óÚ  • U R                  5       nSnUS:  a  SnUb5  US:”  a)  S/U-  nUR                  S   Xv'   UR                  U5      nOUnX-  n [        R                  " X:g  US5      n	U	R                  U5      n
[        R                  " XU
5      R                  U5      * n[        R                  " X:g  US5      nU[        R                  R                  :X  a  US:”  a  U R                  SS5      nX¼4$ Ubl  WR                  U R                  5      n[        R                  " X†U
5      R                  U5      n[        R                  " X:g  US5      nUR                  5       nO!X:g  R                  5       R                  U 5      nU[        R                  R                  :X  a  UR                  5       nX¼4$ U[        R                   R                  :X  a  UR                  5       U-  nX¼4$ )Nr$   r%   r   r&   r›   )rV   r!  r   rE   rp   r\   Úgatherr  r"   r+   rƒ   rð   rš  rù   r<   r-   r,   )r‚   r  rÓ   rö   r)  rU  r.  r!  Úwr/  Úsafe_target_r"  r*  Úwsums                 r0   Ú_nll_loss_forwardr{  a  sº  € ð �X‰X‹Z€FØ€KØ�ƒzØˆàÑØ�A‹:àðàñˆEð "(§¡¨a¡ˆEÑØ—‘˜EÓ"‰AàˆAØ‰xˆÜ—+’+˜fÑ4°f¸aÓ@€KØ×(Ñ(¨Ó5€Lô �lŠl˜4¨lÓ;×CÑCÀKÓPÐP€Fä�[Š[˜Ñ/°¸Ó;€Fà”I—N‘N×(Ñ(Ó(¨V°a«ZØ—}‘} R¨Ó-ˆØÐ#Ð#àÑà�H‰H�T—Z‘ZÓ ˆÜ�|Š|˜A¨LÓ9×AÑAÀ+ÓNˆÜ�{Š{˜6Ñ1°4¸Ó;ˆØ—x‘x“z‰àÑ.×3Ñ3Ó5×8Ñ8¸Ó>ˆà”I—M‘M×'Ñ'Ó'Ø—‘“ˆð ÐÐð 
”i—n‘n×*Ñ*Ó	*Ø—‘“ Ñ,ˆàÐÐr/   c                 ó¦  • U R                  5       S:”  a  U R                  5       S::  d  [        SU R                  5        S35      eUR                  5       S:”  a  [        SUR                  5        S35      eU R                  5       S:H  =(       a    UR                  5       S:H  nU(       dF  U R                  S   UR                  S   :X  d&  [        SU R                   SUR                   S	35      eU R                  S
   nUbC  UR                  5       S:X  a  UR                  5       U:X  d  [        SU SUR                   35      e[	        XX#U5      $ )Nr   r%   rA  rB  r$   rC  rD  rE  rF  rZ   z/weight tensor should be defined either for all z7 classes or no classes but got weight tensor of shape: )rV   r3  r!  r  r{  )r‚   r  rÓ   rö   r)  rH  Ú	n_classess          r0   Únll_loss_forwardr~  —  s5  € ð �H‰H‹J˜‹N˜tŸx™x›z¨Q›ÜÐDÀTÇXÁXÃZÀLÐPQÐRÓSÐSØ‡z�zƒ|�aÓÜØOÐPV×PZÑPZÓP\È~Ð]^Ð_ó
ð 	
ð —8‘8“: ‘?×8 v§z¡z£|°qÑ'8€LÞ˜TŸZ™Z¨™]¨f¯l©l¸1©oÓ=ÜØ(¨¯©¨°J¸v¿|¹|¸nÈAÐNó
ð 	
ð —
‘
˜2‘€IàÑ 6§:¡:£<°1Ó#4¸¿¹»È9Ó9TÜØ=¸i¸[ð I/Ø/5¯|©|¨nð>ó
ð 	
ô
 ˜T¨6¸lÓKÐKr/   c                 ó   • [        XX#U5      $ r9   )r{  )r‚   r  rÓ   rö   r)  s        r0   Únll_loss2d_forwardr€  ¸  s   € ô ˜T¨6¸lÓKÐKr/   ÚAc                 ó0   • US-   U -  US-   -
  U -  U -  S-   $ )Nr%   r�   r$   r&   ©r=   r�  s     r0   Ú_upsample_cubic_convolution1r„  Æ  s(   € Ø�‰U�a‰K˜1˜q™5Ñ! QÑ&¨Ñ*¨QÑ.Ð.r/   c                 ó:   • X-  SU-  -
  U -  SU-  -   U -  SU-  -
  $ )Nr  é   rK  r&   rƒ  s     r0   Ú_upsample_cubic_convolution2r‡  Ê  s.   € Ø‰U�Q˜‘U‰]˜aÑ ! a¡%Ñ'¨1Ñ,¨q°1©uÑ4Ð4r/   r  c                 ó¸  • SnU R                   [        R                   " S5      :X  a  [        R                  " U SU -
  /SS9n[        R                  " U S-   SU -
  /SS9n[        X15      n[	        X!5      n[        R
                  " USS9u  pg[        R
                  " USS9u  p‰XhX—4$ [        U S-   U5      [	        X5      [	        SU -
  U5      [        SU -
  U5      4$ )Ng      è¿r·  rn   r   r‡   rê   )r˜  rE   rÙ  r‡  r„  rØ  )
r  r�  Útt1Útt2Úw03Úw12r¿  rÂ  rÀ  rÁ  s
             r0   Ú _upsample_get_cubic_coefficientsr�  Î  sÑ   € Ø€Aà‡x�x”5—<’< Ó&Ó&Ü�kŠk˜1˜c A™g˜,¨AÑ.ˆÜ�kŠk˜1˜s™7 C¨!¡GÐ,°!Ñ4ˆÜ*¨3Ó2ˆÜ*¨3Ó2ˆÜ—’˜c qÑ)‰ˆÜ—’˜c qÑ)‰ˆØ�rˆ~Ðô )¨¨S©°!Ó4Ü(¨Ó.Ü(¨¨q©°!Ó4Ü(¨¨q©°!Ó4ð	
ð 	
r/   ÚcoeffsÚtsc                 óN   • [        U5      n[        S [        X5       5       5      $ )Nc              3   ó.   #   • U  H  u  pX-  v •  M     g 7fr9   r&   ©rÖ  rï  rð  s      r0   r×  Ú+_upsample_cubic_interp1d.<locals>.<genexpr>ä  s   é € ÐEÒ0D¡H R˜žÒ0Dùr¬  )r�  r>  r  )rŽ  r�  Úcoeffs2s      r0   Ú_upsample_cubic_interp1dr•  â  s"   € Ü.¨rÓ2€GÜÑE´°FÔ0DÓEÓEÐEr/   c                 ó6   • [        [        R                  U 5      $ r9   )r   rE   r  )r�  s    r0   r>  r>  è  s   € Ü”%—)‘)˜RÓ Ð r/   Ú	num_stepsc                 óˆ   • U S::  a  [         R                  " SX2S9$ U(       d  U S-
  U -  OSn[         R                  " U* X@X2S9$ )Nr$   r   r™  )Ústepsr˜  rì   )rE   rˆ  Úlinspace)r—  r!  rì   r˜  r  s        r0   Ú_linspace_from_neg_oner›  ì  sC   € ð �Aƒ~Ü�|Š|˜A fÑ:Ð:æ-:ˆ)�a‰-˜9Ò	$À€AÜ�>Š>˜1˜"˜a¸ÑMÐMr/   ÚthetaÚhrx  c                 óÚ  • U R                   nU R                  n[        X#XE5      R                  SUS5      n[        XXE5      R                  USS5      n[        R
                  " SXES9n[        R                  R                  R                  USSSS9n[        R                  R                  R                  USSSS9n[        R                  R                  R                  US	SSS9nXg-   U-   $ )
Nr$   )r$   r$   r$   r½  )r   r%   Úconstantr   ©rø  rÅ  rƒ   ©r$   r$   )r%   r   ©	rì   r˜  r›  r   rE   r�  rÎ  r.  rø  )	rœ  r�  rx  r!  rì   r˜  Úgrid_xÚgrid_yÚgrid_ones	            r0   Ú_make_base_grid_4dr¦  ö  sÙ   € Ø�K‰K€EØ�\‰\€Fô $ A°eÓD×IÑIÈ!ÈQÐPQÓR€FÜ# A°eÓD×IÑIÈ!ÈQÐPQÓR€FÜ�zŠz˜)¨5Ñ@€Hô �X‰X× Ñ ×$Ñ$ V°¸jÐPQÐ$ÐR€FÜ�X‰X× Ñ ×$Ñ$ V°¸jÐPQÐ$ÐR€FÜ�x‰x×"Ñ"×&Ñ& x°VÀ*ÐTUÐ&ÐV€HØ‰?˜XÑ%Ð%r/   rï  c                 ót  • U R                   nU R                  n[        X4XV5      R                  SSUS5      n[        X$XV5      R                  SUSS5      n[        XXV5      R                  USSS5      n	[        R
                  " SXVS9n
[        R                  R                  R                  USSSS9n[        R                  R                  R                  USSSS9n[        R                  R                  R                  U	S	SSS9n	[        R                  R                  R                  U
S
SSS9n
Xx-   U	-   U
-   $ )Nr$   )r$   r$   r$   r$   r½  )r   r�   rŸ  r   r   )r$   r%   )r%   r$   )r�   r   r¢  )rœ  rï  r�  rx  r!  rì   r˜  r£  r¤  Úgrid_zr¥  s              r0   Ú_make_base_grid_5dr©    s%  € Ø�K‰K€EØ�\‰\€Fä# A°eÓD×IÑIÈ!ÈQÐPQÐSTÓU€FÜ# A°eÓD×IÑIÈ!ÈQÐPQÐSTÓU€FÜ# A°eÓD×IÑIÈ!ÈQÐPQÐSTÓU€FÜ�zŠz˜,¨eÑC€Hô �X‰X× Ñ ×$Ñ$ V°¸jÐPQÐ$ÐR€FÜ�X‰X× Ñ ×$Ñ$ V°¸jÐPQÐ$ÐR€FÜ�X‰X× Ñ ×$Ñ$ V°¸jÐPQÐ$ÐR€FÜ�x‰x×"Ñ"×&Ñ& x°VÀ*ÐTUÐ&ÐV€HØ‰?˜VÑ# hÑ.Ð.r/   c                 óÂ   • Uu  p4pV[        XXbS9nUR                  SSS5      U R                  R                  S5      -  R	                  S5      nUR                  X5US5      $ )N©r!  rZ   r�   r$   ra  r%   )r¦  r   re  r\   rù   )	rœ  r5  r!  r;  r]   r�  rx  Ú	base_gridÚgrids	            r0   Ú_affine_grid_generator_4dr®    s]   € Ø�J€Aˆ!Ü" 5¨QÑL€Ið �N‰N˜2˜q !Ó$ u§x¡x×'9Ñ'9¸!Ó'<Ñ<×AÑAÀ"ÓE€DØ�9‰9�Q˜1˜aÓ Ð r/   c                 óÆ   • Uu  p4pVn[        XXgUS9nUR                  SSS5      U R                  R                  S5      -  R	                  S5      n	U	R                  X5XgS5      $ )Nr«  rZ   rK  r$   ra  r�   )r©  r   re  r\   rù   )
rœ  r5  r!  r;  r]   rï  r�  rx  r¬  r­  s
             r0   Ú_affine_grid_generator_5dr°  "  sa   € Ø�M€Aˆ!�Ü" 5¨QÀÑO€Ið �N‰N˜2˜q !Ó$ u§x¡x×'9Ñ'9¸!Ó'<Ñ<×AÑAÀ"ÓE€DØ�9‰9�Q˜1 Ó#Ð#r/   c                 ó�   • [         R                  " [        U5      S;   S 5        [        U5      S:X  a
  [        XUS9$ [	        XUS9$ )Nrý  c                  ó   • g)NzCaffine_grid_generator needs 4d (spatial) or 5d (volumetric) inputs.r&   r&   r/   r0   rˆ   Ú'affine_grid_generator.<locals>.<lambda>2  s   € ÐUr/   rK  r«  )rE   rŠ   r‰  r®  r°  )rœ  r5  r!  s      r0   Úaffine_grid_generatorr´  ,  sF   € ô 
‡L‚LÜˆD‹	�VÑÙUôô ˆ4ƒy�Aƒ~Ü(¨ÀMÑRÐRä(¨ÀMÑRÐRr/   r­  Úinterpolation_modeÚpadding_modeÚ_expand_gridc           	      ó  ^ ^^^^^^^^^^ ^!^"^#^$^%^&^'^(^)^*^+^,^-• [         R                  " TS;   U4S j5        [         R                  " TS;   U4S j5        S[        S[        S[        4U4S jjm-S[        S[        S	[        S[        4S
 jm+S[        S[        S[        4UUU+4S jjm S[        S[        S[        4U U-4S jjnT R                  u  mmm$m%UR                  u  nm)m*nUS:w  a  [        SU 35      eT(       a(  UR                  TST)T*U5      R                  TTT)T*S5      nS[        S[        S[        4U$U%4S jjm&[         R                  " TT R                  S9R                  TSSS5      m[         R                  " TT R                  S9R                  STSS5      mS[        S[        S[        S[        4UUUU&U)U*4S jjmS[        S[        S[        4UUU U4S jjm"US   n	US   n
TS:X  a‘  U" U	T%5      nU" U
T$5      nUR                  5       UR                  5       sm'm(T'S-   T(píT'T(S-   nnUUnnUU-
  UU-
  -  nX¿-
  UU-
  -  nXÛ-
  XÎ-
  -  nUT'-
  UT(-
  -  n[        U"4S jT'T(U4XÞU4UUU4UUU44 5       5      $ TS:X  a<  U" U	T%5      nU" U
T$5      nUR                  5       nUR                  5       nT"" UUS5      $ T-" U	T%5      nT-" U
T$5      nUR                  5       m'UR                  5       m(UT'-
  m,UT(-
  nT(       d"  T,R                  S5      m,UR                  S5      nS[        S[        S[        4U U"U$U%4S jjm#S[        S[        4U#U'U(U,4S jjm![        U!4S  j[!        S!5       5       5      n[#        UU5      $ )"N)r   r$   r%   c                  ó   >• ST  3$ )NzInvalid interpolation mode r&   )rµ  s   €r0   rˆ   Ú"_grid_sampler_2d.<locals>.<lambda>K  s   ø€ Ð-Ð.@Ð-AÑBr/   c                  ó   >• ST  3$ )NzInvalid padding mode r&   )r¶  s   €r0   rˆ   rº  N  s   ø€ Ð-BÀ<À.Ñ+Qr/   Úcoordsr5  rW   c                 óJ   >• T(       a  US-  S-
  OUS-  nUS-  S-
  nX-  U-   $ r5  r&   )r¼  r5  rß   Úofsr!  s       €r0   ÚunnormalizeÚ%_grid_sampler_2d.<locals>.unnormalizeQ  s6   ø€ ö %2ˆt�c‰z˜CÒ¸¸s¹
ˆØ�S‰j˜3ÑˆØ‰|˜cÑ!Ð!r/   Ú	twice_lowÚ
twice_highc                 óD  • X:X  a  [         R                  " U 5      $ US-  nX!-
  S-  nX-
  R                  5       n[         R                  " XT5      nXT-  R	                  5       R                  [         R                  S9n[         R                  " US-  S:H  Xc-   XC-   U-
  5      $ )Nr%   rë   r$   r   )rE   r  rã   ÚfmodÚfloorr<   Úint8rp   )r¼  rÁ  rÂ  Ú
coords_minÚcoords_spanÚcoords2ÚextraÚflipss           r0   Úreflect_coordinatesÚ-_grid_sampler_2d.<locals>.reflect_coordinates\  sœ   € ØÓ"Ü×#Ò# FÓ+Ð+Ø ‘]ˆ
Ø!Ñ-°Ñ2ˆØÑ&×+Ñ+Ó-ˆÜ—
’
˜7Ó0ˆØÑ&×-Ñ-Ó/×2Ñ2¼¿¹Ð2ÐDˆÜ�{Š{Ø�A‰I˜‰N˜EÑ.°Ñ0HÈ5Ñ0Pó
ð 	
r/   c                 óÜ   >• TS:X  a  U $ TS:X  a  [         R                  " U SUS-
  5      $ T(       a  T" U SSUS-
  -  5      nOT" U SSU-  S-
  5      n[         R                  " USUS-
  5      $ )Nr   r$   r%   rZ   r–   )r¼  r5  Úcoords_reflectedr!  r¶  rÌ  s      €€€r0   Úcompute_coordinatesÚ-_grid_sampler_2d.<locals>.compute_coordinatesh  sx   ø€ Ø˜1ÓØˆMØ˜QÓÜ—;’;˜v q¨$°©(Ó3Ð3æÙ#6°v¸qÀ!ÀtÈaÁxÁ.Ó#QÑ á#6°v¸rÀ1ÀtÁ8ÈaÁ<Ó#PÐ Ü—;’;Ð/°°D¸1±HÓ=Ð=r/   c                 ó$   >• T" X5      nT" X!5      $ r9   r&   )r¼  r5  Ú	coords_unrÐ  r¿  s      €€r0   Úcompute_source_indexÚ._grid_sampler_2d.<locals>.compute_source_indext  s   ø€ Ù Ó-ˆ	Ù" 9Ó3Ð3r/   r%   z4grid last dimension must be 2 (for x,y coords), got r$   rW  Úysc                 óž   >• [         R                  " SU :*  [         R                  " U T:  [         R                  " SU:*  UT:  5      5      5      $ rz   ©rE   rŸ  )rW  rÖ  ÚiHÚiWs     €€r0   Úin_bounds_condÚ(_grid_sampler_2d.<locals>.in_bounds_cond‡  sF   ø€ Ü× Ò Ø�‰G”U×&Ò& r¨B¡w´×0AÒ0AÀ!ÀrÁ'È2ÐPRÉ7Ó0SÓTó
ð 	
r/   r—  Úwsc                 óÒ   >^^• T" X5      mT(       a  TOSm[        UUUU	U
4S jU R                  [        R                  S9UR                  [        R                  S9U4 5       5      $ )Nr$   c              3   óx   >#   • U  H/  n[         R                  " TUS 5      R                  TTTT5      v •  M1     g7frÔ  )rE   rp   r   )rÖ  r  rØ  rý  rç  ÚoHÚoWs     €€€€€r0   r×  Ú1_grid_sampler_2d.<locals>.clip.<locals>.<genexpr>–  s9   øé € ð 
âM�ô �KŠK˜˜a Ó#×(Ñ(¨¨A¨r°2×6Ð6ÚMùs   ƒ7:rë   )rô  r<   rE   r¾  )rW  rÖ  rÝ  rý  rç  rÙ  rØ  r·  rÛ  rà  rá  s      @@€€€€€€r0   ÚclipÚ_grid_sampler_2d.<locals>.clip�  s\   ú€ Ù˜bÓ%ˆö
 ‰A 1ˆÜ÷ 
ð 
à—e‘e¤%§+¡+�eÐ.°·±¼E¿K¹K°Ð0HÈ"ÑMó
ó 
ð 	
r/   ÚixÚiyc                 ó2   >• T	" XU5      u  p4nTTTXC4   U-  $ r9   r&   )
rå  ræ  rx  Úidx_xÚidx_yÚw_ÚC_idxÚN_idxr  rã  s
         €€€€r0   Úget_summandÚ%_grid_sampler_2d.<locals>.get_summand›  s*   ø€ á ¨›?Ñˆ�bØ�˜˜uÐ+Ñ,¨rÑ1Ð1r/   ).r   ).r$   r   c              3   ó<   >#   • U  H  u  pnT" XU5      v •  M     g 7fr9   r&   )rÖ  rå  ræ  rx  rí  s       €r0   r×  Ú#_grid_sampler_2d.<locals>.<genexpr>±  s*   øé € ð 
ò ‘�˜ñ ˜ ×"Ð"ò ùs   ƒc                 ó:   >• T" U T5      nT" UT5      nT" X#S5      $ rc   r&   )rå  ræ  r=   ra   rÐ  rí  rÙ  rÚ  s       €€€€r0   Úget_value_boundedÚ+_grid_sampler_2d.<locals>.get_value_boundedÐ  s(   ø€ Ù# B¨Ó+ˆAÙ# B¨Ó+ˆAÙ˜q QÓ'Ð'r/   r¾  c                 ó‚   >• TU S-
  -   nT" TS-
  U5      T" TU5      T" TS-   U5      T" TS-   U5      4n[        UT5      $ )Nr$   r%   )r•  )r¾  Úiy_ofsÚcsrò  Úix_nwÚiy_nwÚtxs      €€€€r0   Ú	get_coeffÚ#_grid_sampler_2d.<locals>.get_coeffÕ  s[   ø€ Ø˜c A™gÑ&ˆFá! %¨!¡)¨VÓ4Ù! %¨Ó0Ù! %¨!¡)¨VÓ4Ù! %¨!¡)¨VÓ4ð	ˆBô ,¨B°Ó3Ð3r/   c              3   ó4   >#   • U  H  nT" U5      v •  M     g 7fr9   r&   )rÖ  r¾  rú  s     €r0   r×  rð  ß  s   øé € Ð:²¨#‘y —~�~²ùó   ƒrK  )rE   rŠ   r   r“  r!  r3  r   rš  rœ  r˜  r   rÅ  r>  rS  r\   rô  r[   r•  ).r  r­  rµ  r¶  r!  r·  rÔ  r]   Útwor=   ra   rå  ræ  Úix_neÚiy_neÚix_swÚiy_swÚix_seÚiy_seÚw_nwÚw_neÚw_swÚw_seÚ
ix_nearestÚ
iy_nearestÚtyrŽ  rÙ  rë  rØ  rì  rã  rÐ  rú  rí  rò  rÙ  rÚ  rÛ  r÷  rø  rà  rá  rÌ  rù  r¿  s.   ` ````                     @@@@@@@@@@@@@@@@@@@r0   Ú_grid_sampler_2dr  :  sÄ  ÿÿÿ€ ô 
‡L‚LØ˜iÑ'ÜBôô 
‡L‚LØ˜	Ñ!Ô#Qôð"œFð "¬#ð "´&÷ "ð

¤Fð 

´sð 

Ìð 

ÔPVô 

ð
>¤Fð 
>´#ð 
>¼&÷ 
>ñ 
>ð4¤Vð 4´3ð 4¼6÷ 4ð 4ð —7‘7�L€A€qˆ"ˆbØ—Z‘Z�N€A€rˆ2ˆsØ
ˆaƒxÜØBÀ3À%ÐHó
ð 	
ö ð �y‰y˜˜A˜r 2 sÓ+×2Ñ2°1°a¸¸RÀÓCˆð
œ6ð 
¤vð 
´&÷ 
ð 
ô
 �LŠL˜ 1§8¡8Ñ,×1Ñ1°!°Q¸¸1Ó=€EÜ�LŠL˜ 1§8¡8Ñ,×1Ñ1°!°Q¸¸1Ó=€Eð

”ð 

œVð 

¬ð 

Ô4F÷ 

ô 

ð2œð 2¤Fð 2´&÷ 2ò 2ð
 	ˆV‰€AØˆV‰€Aà˜QÓÙ! ! RÓ(ˆÙ! ! RÓ(ˆà—x‘x“z 2§8¡8£:ˆˆˆuØ˜q‘y %ˆuØ˜e a™iˆuˆØ˜eˆuˆà˜‘
˜u r™zÑ*ˆØ‘
˜u r™zÑ*ˆØ‘
˜r™zÑ*ˆØ�U‘
˜r E™zÑ*ˆäô 
ð ˜˜tÐ$Ø˜tÐ$Ø˜˜tÐ$Ø˜˜tÐ$ñ	 ó
ó 
ð 	
ð 
˜qÓ	 Ù! ! RÓ(ˆÙ! ! RÓ(ˆà—X‘X“Zˆ
Ø—X‘X“Zˆ
á˜: z°1Ó5Ð5á˜˜BÓˆÙ˜˜BÓˆà—‘“
ˆØ—‘“
ˆà�%‰ZˆØ�%‰ZˆæØ—‘˜a“ˆBØ—‘˜a“ˆBð	(¤&ð 	(¬fð 	(¼÷ 	(ò 	(ð
	4œ3ð 	4¤6÷ 	4ò 	4ô Ô:´°q´Ó:Ó:ˆÜ'¨°Ó3Ð3r/   c                 ó   • [        U UUUUS9$ )N)r­  rµ  r¶  r!  )r  )r  r­  rµ  r¶  r!  s        r0   Úgrid_sampler_2dr  ã  s    € ô Ø	ØØ-Ø!Ø#ñð r/   c                 ó2  ^ ^• [         R                  " T R                  5       S:H  =(       a    TR                  5       S:H  U U4S j5        [         R                  " T R                  S5      TR                  S5      :H  U U4S j5        T T-  R	                  SS9$ )Nr%   r$   c                  óL   >• ST R                  5        STR                  5        3$ )Nzmatrix @ vector expected, got râ  r‡   ©r‚   rÒ  s   €€r0   rˆ   Úmv.<locals>.<lambda>ü  s   ø€ Ð0°·±³°¸B¸s¿w¹w»y¸kÑJr/   r   c                  óv   >• ST R                  S5       ST R                  S5       STR                  S5       S3$ )Nzsize mismatch, got input (r   r=   r$   z), vec (rF  r&  r  s   €€r0   rˆ   r     s:   ø€ Ð,¨T¯Y©Y°q«\¨N¸!¸D¿I¹IÀa»L¸>ÈÐRU×RZÑRZÐ[\ÓR]ÐQ^Ð^_Ñ`r/   r‡   )rE   rŠ   rV   r5  rù   r  s   ``r0   rÔ  rÔ  ö  ss   ù€ ô 
‡L‚LØ�‰‹
�a‰×*˜CŸG™G›I¨™NÝJôô 
‡L‚LØ�	‰	�!‹˜Ÿ™ ›Ñ#Ý`ôð �3‰J×Ñ ÐÐ"Ð"r/   c                 óÆ   • Ub.  US-
  U-  S-   nSU-
  U -  U[         R                  " U 5      -  -
  nOSU-
  U -  [         R                  " U 5      -
  nUb  Xb-  n[        Xd5      $ rc   )rÈ   Ú
logsigmoidrú   )r‚   r  rÓ   Ú
pos_weightrö   Ú
log_weightrõ   s          r0   Ú binary_cross_entropy_with_logitsr    sr   € ð
 ÑØ  1‘n¨Ñ.°Ñ2ˆ
Ø�F‘
˜dÑ" j´1·<²<ÀÓ3EÑ&EÑF‰à�F‘
˜dÑ"¤Q§\¢\°$Ó%7Ñ7ˆàÑØ‰}ˆä Ó0Ð0r/   Útensor1Útensor2Úis_outc                 ó   ^	• U R                   UR                   :¼  a  X4OX4u  p4SSKJm	  UR                   S:¼  a  UR                   S::  d  gUR                  (       a  U(       d  gU R                   S:X  a  gT	" UR	                  5       S:H  5      (       a  gUR
                  nUR                  5       nS/n[        USS  5       H  nUR                  X‡S   -  5        M     [        U	4S	 j[        U[        [        U5      5      U5       5       5      $ )
Nr   rc  r�   r%   FTr$   rZ   c              3   ób   >#   • U  H$  u  pnT" US :H  5      =(       d
    T" X:H  5      v •  M&     g7fr®  r&   )rÖ  r¼   r½   r5  rd  s       €r0   r×  Úshould_fold.<locals>.<genexpr>.  s9   øé € ð ò"
ÑˆD˜ñ 	�t˜q‘yÓ!×B¡^°D±MÓ%BÔBò"
ùs   ƒ,/)r„  rz  rd  r  r  r!  r}  rR  r†  r  r  r|  )
r  r  r  Út1Út2Út1_shapeÚ	t1_strideÚexpected_strider5  rd  s
            @r0   Úshould_foldr$    së   ø€ ð $+§<¡<°7·<±<Ó#?ˆgÑÀgÐEW�F€BåDà�G‰G�q‹L˜RŸW™W¨›\ØØ	××¦ØØ‡|�|�qÓØÙ�b—h‘h“j A‘o×&Ñ&Øà�x‰x€HØ—	‘	“€Ið �c€OÜ˜ ! "˜Ö&ˆØ×Ñ˜t°bÑ&9Ñ9Ö:ñ 'äô ä!$Ø”tœH _Ó5Ó6¸ô"
óó ð r/   )Úpass_is_out)r  c                ó<
  • SSK JnJn  U R                  5       nUR                  5       nUS:X  d  US:X  a  [	        SU SU 35      eUS:X  a  US:X  a  [
        R                  " X5      $ US:X  a  US:X  a  [
        R                  " X5      $ US:X  aG  US:X  aA  [
        R                  " [
        R                  " [
        R                  " U S5      U5      S5      $ US:X  a  US:X  a  [
        R                  " X5      $ [        XU5      (       GaV  Xe:„  nU(       a  UR                  OU nU(       d  UOUS:X  a  U R                  5       OU n	UR                  n
[        U
S S 5      n[!        ["        R$                  U5      nU	R                  5       S:H  nU(       a  UR'                  U	R                  S   5        UR)                  XÊS   5      nU(       a\  [
        R*                  R,                  R/                  UR                  U	5      U5      nU(       a  UR                  R1                  5       $ U$ [
        R*                  R,                  R/                  UR                  U	5      U5      $ US:¼  Ga�  US:¼  Ga–  US:”  a  U R3                  S5      OSnU R3                  S5      nU R                  S S nUS:”  a  UR3                  S5      OUR3                  S5      nUS:”  a  UR3                  S5      OSn/ n[5        US-
  5       H#  nUR'                  UR3                  U5      5        M%     US	:X  a™  US	:X  a“  U" US   US   :g  5      (       a}  U" US   S:H  5      (       a,  U R6                  (       a  [9        U R                  S5      U5      $ U" US   S:H  5      (       a+  UR6                  (       a  [9        XR                  S5      5      $ [        [
        R:                  " UU5      5      nUUU/-   n[=        U5      nU R?                  U5      R)                  UUU5      nUS:H  nU(       a7  UU/-   nUR?                  U5      R)                  UU5      R                  S5      nO)UUU/-   nUR?                  U5      R)                  UUU5      nUnUS:”  a  UR'                  U5        US:”  a  UR'                  U5        U(       a/  URA                  U5      R                  S5      RC                  U5      $ URA                  U5      RC                  U5      $ [
        RD                  " S
S 5        g )Nr   )rd  Úguard_or_truez9matmul does not support 0-dimensional tensors, got dims: z and r$   r%   rZ   ra  r�   Fc                  ó   • g)Nz/both arguments to matmul need to be at least 1Dr&   r&   r/   r0   rˆ   Úmatmul.<locals>.<lambda>²  s   € Ð$Ur/   )#rz  rd  r'  rV   r3  rE   ÚdotrÔ  r  rÊ  r\   r$  re  r  r!  r|  r   rã  rß   r†  r-  r  r‹   Ú_unsafe_viewr·  r5  r[   r  rd  Úbroadcast_shapesr7  rš  Úbmmr   rŠ   )r  r  r  rd  r'  Údim_tensor1Údim_tensor2rÍ  r  r   Úsizes_1rä  Úfolded_dim1Út2_is_matrixÚ	t1_foldedr´  r;  Úm1Úbatch_tensor1Úm2rY  Úbatch_tensor2r€  Úexpand_batch_portionÚtensor1_expand_sizeÚexpand_batch_productÚtensor1_expandedÚ
vector_rhsÚtensor2_expand_sizeÚtensor2_expandeds                                 r0   rd  rd  6  sƒ  € ÷ Tà—+‘+“-€KØ—+‘+“-€KØ�aÓ˜;¨!Ó+ÜØGÈÀ}ÐTYÐZeÐYfÐgó
ð 	
ð �aÓ˜K¨1Ó,Ü�yŠy˜Ó*Ð*Ø	˜Ó	˜k¨QÓ.Ü�xŠx˜Ó)Ð)Ø	˜Ó	˜k¨QÓ.Ü�}Š}œUŸXšX¤e§o¢o°g¸qÓ&AÀ7ÓKÈQÓOÐOØ	˜Ó	˜k¨QÓ.Ü�xŠx˜Ó)Ð)Ü	�W v×	.Ò	.ð  Ñ-ˆ	Þ$ˆW�ZŠZ¨'ˆæ$‰G¸+ÈÓ:J¨7¯9©9¬;ÐPWð 	ð —(‘(ˆÜ˜G C R˜LÓ)ˆÜœXŸ\™\¨<Ó8ˆð —v‘v“x 1‘}ˆÞØ×Ñ §¡¨¡Ô,ð —J‘J˜{°B©KÓ8ˆ	Þô —Y‘Y—^‘^×0Ñ0°·±¸bÓ1AÀ<ÓPˆFÞ-6�6—9‘9×'Ñ'Ó)ÐB¸FÐBä—9‘9—>‘>×.Ñ.¨y¯|©|¸BÓ/?ÀÓNÐNà	˜Ô	˜k¨QÔ.ð !,¨a£ˆG�L‰L˜Ô°QˆØ�\‰\˜"ÓˆØŸ™ c rÐ*ˆØ!,¨q£ˆW�\‰\˜"Ô°g·l±lÀ2Ó6FˆØ +¨a£ˆG�L‰L˜Ô°Qˆà#%ˆä�{ Q‘Ö'ˆAØ× Ñ  §¡¨a£Ö1ñ (ð ˜1ÓØ˜qÓ Ù˜m¨AÑ.°-ÀÑ2BÑB×CÑCá˜m¨AÑ.°!Ñ3×4Ñ4¸×9N×9NÜ˜gŸo™o¨aÓ0°'Ó:Ð:Ù˜m¨AÑ.°!Ñ3×4Ñ4¸×9N×9NÜ˜g§¡°qÓ'9Ó:Ð:ô  $Ü×"Ò" =°-Ó@ó 
Ðð 3°a¸°WÑ<Ðä#Ð$8Ó9Ðð #Ÿ>™>Ð*=Ó>×FÑFØ  ! Ró
Ðð ! AÑ%ˆ
ÞØ"6¸"¸Ñ"=Ðà—‘Ð2Ó3ß‘Ð-¨rÓ2ß‘˜1“ñ ð #7¸"¸a¸Ñ"@ÐØ&Ÿ~™~Ð.AÓB×JÑJØ$ b¨!ó Ðð ,ˆØ˜‹?Ø×Ñ Ô"à˜‹?Ø×Ñ Ô"æØ#×'Ñ'Ð(8Ó9×AÑAÀ"ÓE×JÑJÈ<ÓXÐXà#×'Ñ'Ð(8Ó9×>Ñ>¸|ÓLÐLä�Š�UÑUÕVr/   r"  r#  c                 ó\  ^ ^^^^^^^• T R                   u    nmm[        TUS   X#5      n[        TUS   X$5      n[        R                  " T [        R                  R
                  S9u  pX[        R                  " US   T R                  S9R                  US9n	[        R                  " US   T R                  S9R                  US9n
[        XzU5      n[        XiU5      nUR                  S5      nUR                  5       nUR                  5       nXÎ-
  R                  SS5      nX½-
  R                  SS5      nUR                  [        R                  5      nUR                  [        R                  5      nUS-
  XîS-   US	-   4nUS-
  XÝS-   US	-   4m[        U5      m[        U5      nS
u  mnT R                   [        R"                  :X  aµ  [%        T5      m[%        U5      nT Vs/ s HB  nUST-  -  [        R&                  " U5      S-  -   R                  [        R(                  5      PMD     snmU Vs/ s HB  nUSU-  -  [        R&                  " U5      S-  -   R                  [        R(                  5      PMD     nnUUU 4S jmU UUUU4S jm[+        U4S jU 5       5      nT R                   [        R"                  :X  a  Uc  [-        S5      e[/        UUU5      nO[1        S [3        UU5       5       5      n[        R4                  " T 5      nUR7                  US9nU$ s  snf s  snf )Nr   r$   re  r—  rë   rZ   r›   rn   r%   r�  r§   c                 ó¦   >• [         R                  " U STS-
  5      n[         R                  " USTS-
  5      n[        R                  TS S X#/5      nU$ r  )rE   r—   r‹   rƒ  )rÖ  rW  Úy_idxÚx_idxr[  Úin_hÚin_wrÆ   s        €€€r0   Úload_boundedÚ0upsample_bicubic2d_default.<locals>.load_boundedò  sM   ø€ Ü—’˜B  4¨!¡8Ó,ˆÜ—’˜B  4¨!¡8Ó,ˆÜ×Ñ˜u t¨T°5Ð&@ÓAˆØˆr/   c                 óÜ   >^ • [        UU 4S jT 5       5      nTR                  [        R                  :X  a  Tc  [	        S5      e[        UTT5      $ [        S [        UT5       5       5      $ )Nc              3   ó6   >#   • U  H  nT" TU5      v •  M     g 7fr9   r&   )rÖ  Úx_ofsrE  ra   s     €€r0   r×  ÚCupsample_bicubic2d_default.<locals>.get_x_interp.<locals>.<genexpr>ù  s   øé € ÐBº'°‘l 1 e×,Ð,º'ùs   ƒz4weights_precision_x must not be None for uint8 inputc              3   ó.   #   • U  H  u  pX-  v •  M     g 7fr9   r&   r’  s      r0   r×  rJ     s   é € ÐJÒ4I©¨˜BžGÒ4Iùr¬  )rô  rì   rE   r]  r3  r?  r>  r  )ra   Úsrc_xrÆ   Úixs_ofsrE  Úweights_precision_xÚ	weights_xs   ` €€€€€r0   Úget_x_interpÚ0upsample_bicubic2d_default.<locals>.get_x_interpø  sc   ù€ ÜÕB¹'ÓBÓBˆØ�;‰;œ%Ÿ+™+Ó%Ø"Ñ*Ü$ØJóð ô & e¨YÐ8KÓLÐLÜÑJ´C¸¸yÔ4IÓJÓJÐJr/   c              3   ó4   >#   • U  H  nT" U5      v •  M     g 7fr9   r&   )rÖ  Úy_ofsrP  s     €r0   r×  Ú-upsample_bicubic2d_default.<locals>.<genexpr>  s   øé € Ð;²7¨%‘,˜u×%Ð%²7ùrý  z4weights_precision_y must not be None for uint8 inputc              3   ó.   #   • U  H  u  pX-  v •  M     g 7fr9   r&   r’  s      r0   r×  rT    s   é € ÐLÒ6K©(¨2˜bžgÒ6Kùr¬  r_  )r!  r3  rJ   rK   rg  rQ  rE   rœ  r˜  r<   r7  r\   rÅ  r—   r¾  r�  rì   r]  rF  ræ   Úint16rô  r3  r?  r>  r  r   r·  )rÆ   r  r!  r"  r#  r]   Úh_scale_factorÚw_scale_factorrì   r€  rÚ  Úx_floatÚy_floatr=   ra   Úyscaler\  Úiys_ofsÚ	weights_yÚweights_precision_yrx  Úsrc_yr"  r`  rP  rC  rD  rM  rE  rN  rO  s   `                       @@@@@@@r0   Úupsample_bicubic2d_defaultr`  µ  sé  ÿ€ ð —{‘{Ñ€A€qˆ$�ô $ D¨+°a©.¸-ÓQ€NÜ# D¨+°a©.¸-ÓQ€Nä×'Ò'Ø¤5×#HÑ#H×#UÑ#Uñ�H€Aô 	�Š�[ ‘^¨E¯L©LÑ9×<Ñ<À5Ð<ÐI€AÜ�Š�[ ‘^¨E¯L©LÑ9×<Ñ<À5Ð<ÐI€Aä# N°}ÓE€GÜ# N°}ÓE€GØ×Ñ Ó#€Gà�‰‹€AØ�‰‹€Að ‰k× Ñ   cÓ*€FØ‰k× Ñ   cÓ*€FØ	�‰ŒU�[‰[Ó€AØ	�‰ŒU�[‰[Ó€Aà�1‰u�a˜Q™  A¡Ð&€GØ�1‰u�a˜Q™  A¡Ð&€Gä0°Ó8€IÜ0°Ó8€Ià/9Ñ,ÐÐ,Ø‡{�{”e—k‘kÓ!Ü7¸	ÓBÐÜ7¸	ÓBÐñ ó
â�ð �!Ð*Ñ*Ñ+¬e¯jªj¸«m¸cÑ.AÑA×EÑEÄeÇkÁkÖRÙñ
ˆ	ñ ó
â�ð �!Ð*Ñ*Ñ+¬e¯jªj¸«m¸cÑ.AÑA×EÑEÄeÇkÁkÖRÙð 	ð 
÷
÷Kñ Kô Ô;±7Ó;Ó;€EØ‡{�{”e—k‘kÓ!ØÑ&Ü Ð!WÓXÐXÜ# E¨9Ð6IÓJ‰äÑL´c¸%ÀÔ6KÓLÓLˆô ×/Ò/°Ó6€MØ×Ñ¨]ÐÐ;€FØ€MùòI
ùò
s   Ç%A	L$È5A	L)c                 ó@  • [         R                  " [        U5      [        U5      -   S:H  S 5        UcR  Uc  [        S5      e[	        [
        [        [        4   [        S [        U R                  SS  U5       5       5      5      nU(       a  UOSu  pE[        XX$U5      $ )Nr$   c                  ó   • g)Nz:Must specify exactly one of output_size and scale_factors.r&   r&   r/   r0   rˆ   Ú(upsample_bicubic2d_vec.<locals>.<lambda>  s   € ÐLr/   z7scale_factors must not be None when output_size is Nonec              3   óT   #   • U  H  u  p[        [        U5      U-  5      v •  M      g 7fr9   )r   r   )rÖ  rx  ru   s      r0   r×  Ú)upsample_bicubic2d_vec.<locals>.<genexpr>&  s*   é € ð â ?‘H�Aô œ	 !› uÑ,×-Ð-Ú ?ùs   ‚&(r%   r�  )
rE   rŠ   rž  r3  r   rô  r“  r  r!  r`  )r  r  r!  rV  r"  r#  s         r0   Úupsample_bicubic2d_vecrf    s¢   € ô 
‡L‚LÜˆ[ÓœD Ó/Ñ/°1Ñ4ÙLôð ÑØÑ Ü ØIóð ô Ü”#”s�(‰OÜñ ä # A§G¡G¨A¨B K°Ô ?óó ó
ˆö )6‘}¸<Ñ€GÜ% a°mÈgÓVÐVr/   c                 ó*   ^ • U 4S jn[        T UU5      $ )Nc                 óž   >• [         R                  " U * X-   TR                  S9nUS-
  US-
  UR                  5       -
  R                  5       -
  $ )Nr—  r$   )rE   rœ  r˜  rã   ©r¼   Úmiddler½   Údim_idxr  s       €r0   r¤  Ú_reflection_pad.<locals>.idx5  sD   ø€ Ü—,’, ˜u f¡n¸Q¿X¹XÑFˆØ˜‰z˜V a™Z¨'¯+©+«-Ñ7×<Ñ<Ó>Ñ>Ð>r/   ©Ú_reflection_or_replication_pad©r  rË  r¤  s   `  r0   Ú_reflection_padrp  /  s    ø€ õ?ô *Ø	ØØóð r/   c                 ó*   ^ • U 4S jn[        T UU5      $ )Nc                 ó€   >• [         R                  " U * X-   TR                  S9n[         R                  " USUS-
  5      $ )Nr—  r   r$   )rE   rœ  r˜  r—   ri  s       €r0   r¤  Ú_replication_pad.<locals>.idxF  s4   ø€ Ü—,’, ˜u f¡n¸Q¿X¹XÑFˆÜ�{Š{˜7 A v°¡zÓ2Ð2r/   rm  ro  s   `  r0   Ú_replication_padrt  @  s    ø€ õ3ô *Ø	ØØóð r/   Úidx_fnc                 ór  ^• [        U5      S-  m[        R                  " U R                  5       TS-   TS-   4;   U4S j5        U R                  T* S  nU R                  5       T-
  n[        T5       Vs/ s H  oQSTS-
  U-
  -     PM     nn[        T5       Vs/ s H  oQSTS-
  U-
  -  S-      PM     nnU n[        T5       HA  nS /UR                  5       -  n	U" Xe   X5   Xu   5      X•U-   '   [        R                  X‰5      nMC     [        R                  " U5      n
UR                  U
S9nU$ s  snf s  snf )Nr%   r$   c                  ó(   >• ST  ST S-    ST S-    S3$ )NÚreflection_padzd requires r$   zD or r%   zD inputr&   r‡   s   €r0   rˆ   Ú0_reflection_or_replication_pad.<locals>.<lambda>Y  s"   ø€ �.   [°°q±°	¸¸sÀQ¹w¸iÀwÑOr/   r_  )r‰  rE   rŠ   rV   r!  r[   r‹   rƒ  rJ   r   r·  )r  rË  ru  Ú	inp_shapeÚnc_dimr€  Úpadding_leftÚpadding_rightr"  r¤  r`  rV   s              @r0   rn  rn  Q  s7  ø€ ô
 ˆg‹,˜!Ñ
€CÜ	‡L‚LØ	�‰‹�C˜!‘G˜S 1™WÐ%Ñ%ÜOôð —‘˜˜˜�€IØ�U‰U‹W�s‰]€Fä8=¸c¼
ÓCº
°1˜A  q¡¨1¡Ñ-Ô.¹
€LÐCÜ=BÀ3¼ZÓHºZ¸˜Q #¨¡'¨A¡+Ñ.°Ñ2Ô3¹Z€MÐHà€FÜ�3ŽZˆØ˜ &§*¡*£,Ñ.ˆÙ  ¡°)±,ÀÑ@PÓQˆ�‰J‰Ü×#Ñ# FÓ0Šñ ô ×/Ò/°Ó7€MØ×Ñ¨]ÐÐ;€FØ€Mùò DùÚHs   Á4D/ÂD4c           
      ó2  ^ ^^^• [        U5      S-  mUR                  T* S   Vs/ s H  o3S-
  PM	     nn[        T5       Vs/ s H  oRSTS-
  U-
  -     PM     nn[        T5       Vs/ s H  oRSTS-
  U-
  -  S-      PM     nn/ n[        UR                  5       Ha  nS/UR                  -  n	SX•'   UR	                  [
        R                  " UR                  U   UR                  S9R                  U	5      5        Mc     US T*  mUT* S  n
S m[        T5       Vs/ s H  oZU   Xe   -   PM     nn[        T5       Vs/ s H  oVU   X¥   -
  PM     nn[        T5       Vs/ s H  nSXE   -  Xe   -   X¥   -
  PM     nn[        T5       Vs/ s H  o[U   SXE   Xe   -   Xu   -   4PM     nn[        R                  " [        R                  [        T5       Vs/ s H  nT" Xå   5      PM     sn5      n[        R                  T UTU-   S5      nUUU U4S jn[        R                  " [        T5       Vs/ s H  n/ S	QPM	     sn6  H£  nU[!        S/T-  5      :X  a  M  / n/ n[        T5       Hn  nUU   S:X  a	  Xµ   nXå   nO7UU   S:X  a  XÅ   nX¥   SXe   4nO UU   S:X  a  XÕ   nX¥   XE   Xu   -
  XE   S-
  4nUR	                  W5        UR	                  W5        Mp     U" UUU5      nM¥     U$ s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )
Nr%   r$   rZ   r—  c                 óB   • U u  pn[         R                  " X:¬  X:*  5      $ r9   rØ  )Úindex_ranger€  ÚlbÚubs       r0   Úindex_range_conditionÚ7_reflection_pad_backward.<locals>.index_range_condition‚  s"   € Ø‰	ˆˆrÜ× Ò  ¡¨!©'Ó2Ð2r/   r   r›   c           	      óJ  >• [        T	5       H4  nX#   S   X#   S   :  n[        U[        5      (       d  M)  U(       d  M2  U s  $    [        R                  " [
        R                  U Vs/ s H  nT" U5      PM     sn5      n[
        R                  T
UTU-   S5      nX-   $ s  snf )Nr%   r$   r›   )r[   r;   rž  rS   r   r‹   rŸ  r¡  )r¯   rÍ   Úindex_rangesr€  Úupper_less_than_lowerr€  rç  Úgr  rV   rs   rƒ  s           €€€€r0   r6  Ú,_reflection_pad_backward.<locals>.accumulatež  s¡   ø€ ô �s–ˆAØ$0¡O°AÑ$6¸¹ÈÑ9KÑ$KÐ!ÜÐ/´×6Ó6×;PÐ;PØ’ñ ô
 ×ÒÜ×ÑÙCOÓPÂ<°KÑ" ;Ö/Á<ÑPó
ˆô ×%Ñ% k°4¸¸S¹À#ÓFˆØ‰xˆùò Qs   Á(B 
)rZ   r   r$   )r‰  r!  r[   r„  r†  rE   rœ  r˜  r   rS   r   r‹   rŸ  r¡  Ú	itertoolsr
   rô  )rs   r=   rË  r�  Údhwr€  r|  r}  r£  Ú
view_shapeÚxyzÚcenterÚleft_reflectÚright_reflectÚrange_crç  r¯   r6  r]   ÚareaÚoutsr†  rÍ   r€  r  rV   rƒ  s   `                       @@@r0   Ú_reflection_pad_backwardr”  m  s1  û€ ô
 ˆg‹,˜!Ñ
€CàŸ'™' 3 $ %™.Ó
)š.�QˆqŒ5™.€CÐ
)ä8=¸c¼
ÓCº
°1˜A  q¡¨1¡Ñ-Ô.¹
€LÐCÜ=BÀ3¼ZÓHºZ¸˜Q #¨¡'¨A¡+Ñ.°Ñ2Ô3¹Z€MÐHà€GÜ�1—6‘6Ž]ˆØ�S˜1Ÿ6™6‘\ˆ
Øˆ
‰Ø�‰”u—|’| A§G¡G¨A¡J°q·x±xÑ@×EÑEÀjÓQÖRñ ð
 	��#�ˆ€AØ
�3�$�%ˆ.€Cò3ô 16°c´
Ó;²
¨1�!‰f�|‘Ô&±
€FÐ;Ü6;¸C´jÓA²j° ‘O c¡fÔ,±j€LÐAÜDIÈ#ÄJÓOÂJ¸q�Q˜™‘Z ,¡/Ñ1°C±FÔ:ÁJ€MÐOô
 NSÐSVÌZóÚMWÈ�‰�A�s‘v ¡Ñ/°-Ñ2BÑBÓCÉZð ð ô ×ÒÜ×ÑÄeÈCÄjÓQÂjÀÑ0°±Ö<ÁjÑQó€Dô ×$Ñ$ [°$¸¸F¹
ÀCÓH€D÷ð ô ×!Ò!¼¸c¼
Ó#Cº
°1¥J¹
Ñ#CÓDˆØ”5˜!˜˜s™Ó#Ó#áàˆØˆä�s–ˆAØ�A‰w˜!‹|Ø‘i�Ø%™j‘Ø�a‘˜B“Ø"‘o�Ø"™v q¨,©/Ð:‘Ø�a‘˜A“Ø#Ñ&�Ø"™v s¡v°Ñ0@Ñ'@À#Á&È1Á*ÐM�à�K‰K˜ÔØ×Ñ Ö,ñ ñ ˜$  lÓ3Šñ- Eð0 €Kùòc *ùâCùÚHùò2 <ùÚAùÚOùòùò Rùò& $Ds5   ¥K,ÁK1Á(K6ÄK;Ä>L Å LÆ
L
ÇL
È1Lr’   r•   r
  c                ó\   • [         R                  " XUS9n[         R                  " XUS9nX44$ )Nr
  )rE   Úaminri  )r‚   rV   r  r–  ri  s        r0   Úaminmaxr—  È  s,   € ô �:Š:�d¨WÑ5€Dä�:Š:�d¨WÑ5€DØˆ:Ðr/   rë   c                ó€   • [         R                  [        R                  " [        R                  " U 5      SU 5      XUS9$ )Nr   rë   )r‹   rù   rE   rp   Úisnan)r‚   rV   r  rì   s       r0   Únansumrš  Ò  s0   € ô �8‰8”E—K’K¤§¢¨DÓ 1°1°dÓ;¸SÐQVˆ8ÐWÐWr/   ©rì   rV  r˜  rp  rV  c          
      óD   • [         R                  R                  SU SXX4S9$ )Nr   r$   r›  ©r‹   rœ  Ú
start_step)rq  rì   rV  r˜  rp  s        r0   Úarange_defaultrŸ  Ø  s+   € ô �;‰;×!Ñ!Ø	ˆ3�˜°fð "ð ð r/   c          
      óB   • [         R                  R                  XSX#XES9$ )Nr$   r›  r�  )rp  rq  rì   rV  r˜  rp  s         r0   Úarange_startr¡  ç  s)   € ô �;‰;×!Ñ!Ø�A˜U¸&ð "ð ð r/   c                  ó   • SSK Jn  U" U 0 UD6$ )Nr   )Úout_dtype_dense)Ú!torch._higher_order_ops.out_dtyper£  )rL   rM   r£  s      r0   Úout_dtype_decompr¥  ö  s   € åAá˜DÐ+ FÑ+Ð+r/   Úmarginc                 óª  ^ ^^^	^
• [         R                  " T 5      m [         R                  " T5      mT R                  S   m
T R                  S   m	[         R                  " US:H  =(       d    US:H  S 5        [         R                  " T R
                  S:H  =(       a    T	S:g  U 4S j5        [         R                  " TR
                  S:H  =(       a    TR                  5       T
:H  U
U4S j5        TbY  [         R                  " T5      m[         R                  " TR
                  S:H  =(       a    TR                  5       T	:H  U	U4S j5        TR                  S5      m[         R                  " T STS9nX6-
  T -   nUR                  S5      nUS:X  a  UOXw-  nTb  UTT   -  n[         R                  " T	T R                  S	9n[         R                  " UT:g  US5      nU[        R                  R                  :X  a  UR!                  5       $ U[        R"                  R                  :X  a   UR%                  5       UR                  S   -  $ UR!                  SS
9$ )Nr   r$   r%   c                  ó   • g)Nz only p == 1 and p == 2 supportedr&   r&   r/   r0   rˆ   Ú#multi_margin_loss.<locals>.<lambda>  s   € Ð+Mr/   c                  ó"   >• ST R                    3$ ©NzMExpected non-empty vector or matrix with optional 0-dim batch size, but got: rõ  rÿ  s   €r0   rˆ   r©    s   ø€ Ð_Ð`e×`kÑ`kÐ_lÑmr/   c                  ó(   >• ST  STR                    3$ )Nz#inconsistent target size, expected r/  rõ  )Únframer  s   €€r0   rˆ   r©    s   ø€ Ð5°f°X¸YÀvÇ|Á|ÀnÑUr/   c                  ó(   >• ST  STR                    3$ )Nz#inconsistent weight size, expected r/  rõ  )rV   rÓ   s   €€r0   rˆ   r©    s   ø€ Ð9¸#¸¸iÈÏÉÀ~ÑVr/   r(  r—  r‡   )rE   Ú
atleast_2dÚ
atleast_1dr!  rŠ   r„  r  r\   rw  rf  rœ  r˜  rp   r"   r,   rƒ   rø   r-   rù   )rÆ   r  rY  r¦  rÓ   rö   Úurq   r¤  rV   r­  s   ``  `    @@r0   Úmulti_margin_lossr²  ý  sÐ  ü€ ô ×Ò˜UÓ#€EÜ×Ò˜fÓ%€FØ�[‰[˜‰^€FØ
�+‰+�a‰.€CÜ	‡L‚L��a‘×!˜1 ™6Ñ#MÔNÜ	‡L‚LØ�
‰
�a‰×$˜C 1™HÜmôô 
‡L‚LØ�‰�qÑ×5˜VŸ\™\›^¨vÑ5ÝUôð ÑÜ×!Ò! &Ó)ˆÜ�ŠØ�K‰K˜1Ñ×6 §¡£°3Ñ!6ÝVô	
ð ×Ñ˜aÓ €FÜ�Š�U ¨Ñ0€AØ‰
�UÑ€AØ	�‰�A‹€AØ�!‹V‰˜™€AØÑØ��v‘ÑˆÜ
�,Š,�s 5§<¡<Ñ
0€CÜ�Š�C˜6‘M 1 aÓ(€AØ”I—N‘N×(Ñ(Ó(Ø�v‰v‹xˆØ	”i—m‘m×)Ñ)Ó	)Ø�u‰u‹w˜Ÿ™ ™Ñ#Ð#à�v‰v˜!ˆvˆ}Ðr/   Ú	is_targetc                 óÔ  ^^• U R                   mUR                   m[        R                  " U 5      n [        R                  " U5      nU R                   S   n[        R                  " [	        T5      S:*  =(       a    US:g  U4S j5        [        R                  " [	        T5      S:*  =(       a    TT:H  UU4S j5        [        R
                  " X1R                  S9nUS:H  n[        R                  " [        R                  " XTU5      SSS	9nXF:  n[        R                  " XqS5      n[        R                  " U SUS
9n	[        R                  " XqS5      n
[        R                  " XJR                  SS9:H  SS9nSU	R                  R                  SS9-
  U -   nUR                  S5      nXÃ-  n[        R                  " USU5      nU[        R                  R                   :X  a  UR#                  SS9R%                  5       nO>U[        R&                  R                   :X  a  UR#                  5       nOUR#                  SS9nUR)                  U R*                  5      R-                  T5      nXË4$ )Nr$   r%   r   c                  ó   >• ST  3$ r«  r&   )Úorig_input_shapes   €r0   rˆ   Ú0multilabel_margin_loss_forward.<locals>.<lambda>;  s   ø€ Ð_Ð`pÐ_qÑrr/   c                  ó   >• ST ST  3$ )Nzinconsistent target size: z for input of size: r&   )r¶  Úorig_target_shapes   €€r0   rˆ   r·  ?  s   ø€ Ð,Ð->Ð,?Ð?SÐTdÐSeÑfr/   r—  rZ   Tr
  r(  r‡   rn   )r   rZ   )r!  rE   r¯  rŠ   r‰  rœ  r˜  r–  rp   rw  râ  r\   ÚTrf  r"   r,   rƒ   rù   rø   r-   r<   rì   r-  )rÆ   r  rö   rV   r¤  Úis_endÚend_idxÚtarget_maskÚtidx0r±  Útidx1r³  rq   r¶  r¹  s                @@r0   Úmultilabel_margin_loss_forwardrÀ  ,  sê  ù€ ð —{‘{ÐØŸ™ÐÜ×Ò˜UÓ#€EÜ×Ò˜fÓ%€FØ
�+‰+�a‰.€CÜ	‡L‚LÜÐÓ Ñ"×/ s¨a¡xÜrôô 
‡L‚LÜÐÓ !Ñ#×MÐ(9Ð=MÑ(MÝfôô
 �,Š,�s§=¡=Ñ
1€CØ�r‰\€FÜ�jŠjœŸš V°#Ó6¸BÈÑM€Gà‘-€Kä�KŠK˜¨QÓ/€EÜ�Š�U ¨%Ñ0€Aä�KŠK˜¨RÓ0€EÜ—	’	˜#§¡°R Ð!8Ñ8¸aÑ@€Iàˆa�c‰c�m‰m ˆmÐ#Ñ# eÑ+€AØ	�‰�A‹€AØ	‰€Aä�Š�I˜q !Ó$€Aà”I—N‘N×(Ñ(Ó(Ø�E‰E�gˆEÐ×#Ñ#Ó%‰Ø	”i—m‘m×)Ñ)Ó	)Ø�E‰E‹G‰à�E‰E�gˆEÐˆà—‘˜UŸ[™[Ó)×1Ñ1Ð2CÓD€IØˆ<Ðr/   )Ú	attn_maskru   ÚqueryÚkeyÚ	dropout_pÚ	is_causalrÁ  c                ó6  ^ ^^^• [         R                  " [         R                  " T 5      U 4S j5        [         R                  " T R                  5       S:H  =(       a-    TR                  5       S:H  =(       a    TR                  5       S:H  UU U4S j5        [         R                  " TS:H  U4S j5        [         R                  " T R                  S   TR                  S   :H  =(       a    TR                  S   TR                  S   :H  S 5        [
        R                  R                  T TTUTUS UT R                  S5      TR                  S5      :g  S	9	u  pxUR                  S
SSS5      R                  [         R                  S9R                  SS
SS5      nXx4$ )Nc                  ó"   >• ST R                    3$ )Nz-query must be FP32, FP64, BF16, FP16 but got rë   )rÂ  s   €r0   rˆ   Ú<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>x  s   ø€ Ð?ÀÇÁ¸}ÑMr/   rK  c                  ón   >• STR                  5        ST R                  5        STR                  5        3$ )Nz,q, k, v must be a 4 dimensional tensor, got râ  r‡   )rÃ  rÂ  rƒ   s   €€€r0   rˆ   rÈ  |  s1   ø€ Ð>¸u¿y¹y»{¸mÈ2ÈcÏgÉgËiÈ[ÐXZÐ[`×[dÑ[dÓ[fÐZgÑhr/   r›   c                  ó   >• ST  3$ )Nz&dropout probability must be zero, got r&   )rÄ  s   €r0   rˆ   rÈ    s   ø€ Ð$JÈ9È+Ñ"Vr/   r�   c                  ó   • g)Nz&q, k, v should have the same head sizer&   r&   r/   r0   rˆ   rÈ  ƒ  s   € Ð8r/   r$   )rÁ  rÄ  rÅ  Údropout_maskru   Ú
enable_gqar%   r   r_  )rE   rŠ   r\  rV   r!  r‹   Ú"_scaled_dot_product_attention_mathr�  r5  r  r·  rc  )	rÂ  rÃ  rƒ   rÄ  rÅ  rÁ  ru   r´  Úattns	   ````     r0   Ú*scaled_dot_product_flash_attention_for_cpurÐ  k  sR  û€ ô 
‡L‚LÜ×Ò Ó&ÜMôô 
‡L‚LØ�	‰	‹�qÑ×@˜SŸW™W›Y¨!™^×@°·	±	³¸qÑ0@Þhôô 
‡L‚LØ�SÑÔVôô 
‡L‚LØ�‰�A‰˜%Ÿ+™+ a™.Ñ(×K¨S¯Y©Y°q©\¸U¿[¹[È¹^Ñ-KÙ8ôô
 ×:Ñ:×BÑBØØØØØØØØØ—:‘:˜a“= C§H¡H¨Q£KÑ/ð Cð 
�L€FðF 	�‰�q˜!˜Q Ó"ß	‰¤%×"9Ñ"9ˆÐ	:ß	‰��A�q˜!Ó	ð ð
 ˆ<Ðr/   c                 ó0   ^• [        U 5      U4S j5       nU$ )Nc                  ó<   >• T" U 0 UD6nU S   R                  U5      $ rz   )r3  )rL   rM   rÍ   Úoutplace_ops      €r0   Ú
inplace_opÚ$register_inplace.<locals>.inplace_op±  s%   ø€ á˜4Ð* 6Ñ*ˆØ�A‰w�}‰}˜SÓ!Ð!r/   r   )Úaten_oprÓ  rÔ  s    ` r0   Úregister_inplacer×  °  s"   ø€ Ü˜GÓ$ô"ó %ð"ð Ðr/   c                 ój  • U R                  5       (       d+  U R                  5       (       d  [        U5      n[        U5      n[        R                  " X5      n[        U[        R                  5      (       a  US:w  a  XT-  nUS:X  a  U$ [        U[        R                  5      (       a  US:w  a  X-  n X-   $ rK  )r\  rÉ  r“  rE   r-  r;   ÚnumbersÚNumber)r‚   Úbatch1Úbatch2rj   rt   r"  s         r0   ÚbaddbmmrÝ  ¹  s�   € ð ×!Ñ!×#Ñ#¨D¯O©O×,=Ñ,=Ü�4‹yˆÜ�E“
ˆÜ�YŠY�vÓ&€FÜ�eœWŸ^™^×,Ñ,°¸³
Ø‘ˆØˆqƒyØˆÜ�dœGŸN™N×+Ñ+¨t°q«yØ‰{ˆØ‰=Ðr/   c                 ó,   • [         R                  " XSS9$ )NrÅ  r±  r³  )r‚   rè   s     r0   Úfloor_dividerß  Ê  s   € ô �9Š9�T°Ñ8Ð8r/   c                 ób   • [         R                  " [        R                  U R                  S5      $ rc   )rS   r   rã  rß   r!  )r  s    r0   Ú	sym_numelrá  Ð  s   € ä×ÒœHŸL™L¨!¯'©'°1Ó5Ð5r/   ©rì   rÍ   c                ó„   • Uc  [         R                  R                  U / US9$ [         R                  R                  U / XS9$ )Nrë   râ  )r‹   rù   Údim_IntListÚIntList_out)r‚   rì   rÍ   s      r0   Úsum_defaultræ  Õ  sA   € ð �{Ü�x‰x×#Ñ# D¨"°EÐ#Ð:Ð:ä�x‰x×#Ñ# D¨"°EÐ#ÐCÐCr/   c           	      ó
  • [        U [        R                  5      (       d  U $ Uc@  [        R                  R                  U [        [        U R                  5       5      5      5      $ [        R                  R                  X/5      $ r9   )	r;   rE   r   r‹   r  Údimsr|  r[   rV   )r‚   rV   s     r0   Úsqueeze_defaultré  â  s]   € ô �dœEŸL™L×)Ñ)Øˆà
�{Ü�|‰|× Ñ  ¤t¬E°$·(±(³*Ó,=Ó'>Ó?Ð?ä�|‰|× Ñ   uÓ-Ð-r/   c                 ó.  ^• [        U4S j[        [        U R                  5      5       5       5      nUR                  [
        R                  :X  a  [
        R                  OS nU R                  SUSUS9nXUR                  UR                  5      -  -  U4$ )Nc              3   ó6   >#   • U  H  oT:w  d  M
  Uv •  M     g 7fr9   r&   )rÖ  r€  rV   s     €r0   r×  Ú)_weight_norm_interface.<locals>.<genexpr>ñ  s   øé € Ð@Ò 3˜1¸C±x—Q‘QÒ 3ùs   ƒ	�	r%   T)r  rì   )
rô  r[   r‰  r!  rì   rE   r  r  r  r<   )r[  rˆ  rV   Úkeep_dimÚ
norm_dtyper  s     `   r0   Ú_weight_norm_interfacerï  î  sr   ø€ ô Ô@¤¤c¨!¯'©'£lÔ 3Ó@Ó@€Hà !§¡¬5¯>©>Ó 9”—’¸t€JØ�6‰6�!�X t°:ˆ6Ð>€DØ�D—G‘G˜AŸG™GÓ$Ñ$Ñ% tÐ+Ð+r/   ©Úassume_uniqueÚinvertc                ó¦  • [        U [        R                  5      (       d  [        R                  " XR                  S9n [        U[        R                  5      (       d3  U(       a  [        R
                  " X5      $ [        R                  " X5      $ UR                  5       S[        U R                  5       S5      -  :  a
  [        XUS9$ [        XX#S9$ )Nr—  g      $@g�Âõ(\�Â?©rò  rð  )r;   rE   r   ru  r˜  Úner  r  rñ   Úisin_defaultÚisin_sorting)ÚelementsÚtest_elementsrñ  rò  s       r0   Úisinrú  ø  s    € ô �h¤§¡×-Ñ-Ü×&Ò& x×8LÑ8LÑMˆÜ�m¤U§\¡\×2Ñ2ÞÜ—8’8˜HÓ4Ð4ä—8’8˜HÓ4Ð4à×ÑÓ˜t¤c¨(¯.©.Ó*:¸EÓ&BÑBÓBÜ˜H¸FÑCÐCäØ°=ñ
ð 	
r/   )rn  c                ó:  • Uc=  [         R                  " U R                  5       [         R                  U R                  S9nO=[         R                  " U R                  5       U[         R                  U R                  S9nX :  R                  U R                  5      nU$ )Nr½  )rn  rì   r˜  )rE   Úrandr5  rï   r˜  r<   rì   )r‚   rn  Úraw_prY  s       r0   Ú	bernoullirþ    so   € ð ÑÜ—
’
˜4Ÿ9™9›;¬e¯m©mÀDÇKÁKÑP‰ä—
’
Ø�I‰I‹KØÜ—-‘-Ø—;‘;ñ	
ˆð 
‰×Ñ˜$Ÿ*™*Ó%€AØ€Hr/   rô  c                óŒ  • U R                  5       S:X  a#  [        R                  " U [        R                  S9$ UR                  S:X  a  X:H  nU(       a  U) $ U$ U R
                  SUR                  -  -   nU R                  U5      n[        [        SUR                  * S-
  S5      5      nXQ:H  R                  US9nU(       a  U) $ U$ )Nr   rë   )r$   rZ   r$   r‡   )
r  rE   Ú
empty_likerž  r„  r!  r   rô  r[   râ  )rø  rù  rò  r_  Úexpanded_elem_shaper=   rV   s          r0   rö  rö    s¼   € Ø‡~�~Ó˜1ÓÜ×Ò ´·
±
Ñ;Ð;Ø×Ñ˜QÓØÑ'ˆÞ�ˆtÐ& 3Ð&Ø"Ÿ.™.¨4°-×2DÑ2DÑ+DÑDÐØ�‰Ð)Ó*€AÜ
”�b˜=×-Ñ-Ð-°Ñ1°2Ó6Ó
7€CØÑ×
"Ñ
" sÐ
"Ð
+€CÞˆCˆ4Ð"˜sÐ"r/   c                óî  • U R                  5       nUR                  5       nU(       a¾  [        R                  " XE/5      n[        R                  " USS9u  pxUSS  US S :H  n	[        R                  " U	SS/S5      n	U(       a  U	R                  5       n	[        R                  " U	5      n
U
R                  SX‰5      n
U
SU R                  5        R                  U R                  5      $ [        R                  " U5      u  p¼[        R                  " X´5      n[        R                  " XÛR                  5       :  US5      nX¾   U:H  nU(       a  UR                  5       OUnUR                  U R                  5      $ )NT)Ústabler$   rZ   r   F)rL  rE   r7  Úsortr„  Úlogical_notr   r<  r  r-  r!  Úsearchsortedrp   )rø  rù  rñ  rò  Úelements_flatÚtest_elements_flatÚall_elementsÚsorted_elementsÚsorted_orderÚduplicate_maskr¥  Úsorted_test_elementsr]   r¤  Útest_idxÚcmps                   r0   r÷  r÷  ,  s>  € Ø×$Ñ$Ó&€MØ&×.Ñ.Ó0ÐÞô —y’y -Ð!DÓEˆÜ(-¯
ª
°<ÈÑ(MÑ%ˆà(¨¨Ð,°ÀÀÐ0DÑDˆÜ×.Ò.¨~ÀÀ1¸vÀuÓMˆæØ+×7Ñ7Ó9ˆNä×Ò Ó/ˆØ�‰˜q ,Ó?ˆà�A˜Ÿ™Ó(Ð)×1Ñ1°(·.±.ÓAÐAä"'§*¢*Ð-?Ó"@ÑÐÜ× Ò Ð!5ÓEˆÜ—;’;˜s×%?Ñ%?Ó%AÑAÀ3ÈÓJˆØ"Ñ,°Ñ=ˆÞ#)ˆc�o‰oÔ¨sˆØ�{‰{˜8Ÿ>™>Ó*Ð*r/   c                 ó,   • U R                  S5      nX!   $ rY   )r-  )r‚   r§  Ú	flatteneds      r0   Útaker  I  s   € ð —‘˜RÓ €IØÑÐr/   c                 ó¢   • Uc  [         R                  nU[         R                  :X  a  [        U5      n[        R                  XR                  US9$ rC  )rE   rc  Úpreserve_formatr   r‹   Úresizer!  )r‚   rè   r`  s      r0   Ú	resize_asr  P  sB   € àÑÜ×/Ñ/ˆØœ×-Ñ-Ó-Ü-¨eÓ4ˆÜ�;‰;�tŸ[™[¸ˆ;ÐFÐFr/   )FF)Únoner9   )r%   )r   NNr$   )rZ   FFrÔ  r1  r¡  )r$   r$   F)Fr›   )r›   rn   N)r   r$   N)Fr�  )NNN)r   r   FT)r   r   FrB  )r›   F(Œ  rS   rŠ  rÙ  rã  r~  Úcollections.abcr   r   Ú
contextlibr   Úenumr   r   r   r	   r
   Útypingr   r   r   r   rE   Útorch._meta_registrationsÚtorch._primsrv  rF  Útorch._prims_commonÚ_prims_commonrJ   Útorch.nn.functionalrÎ  r.  rÈ   r   r   r   Útorch._decompr   r¤  r   r   r   r   r   r   Útorch._prims_common.wrappersr   r   r   r   Útorch.utilsr   rH   Útorch.utils._pytreer   rW  ÚDispatchKeyr    r|  ÚstrÚ__annotations__Ú_opsr  r‹   r"   rg  rž  rU   rh  Úcompute_only_pw_cast_for_opmathÚpw_cast_for_opmathÚ"pw_cast_for_opmath_non_tensor_argsrQ  Úpw_cast_for_int_to_realr“  r^   rg   ri   rr   r  r~   rn  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  Ú_safe_softmaxr  r  r  r�  r_   r#  r&  rÍ   r(  r1  r?  rI  rL  rQ  rT  rV  rX  r[  rn  rv  ÚslicerŠ  r”  ru  rª  r°  r³  r¹  r»  rÈ  r  rA  rE  rN  rT  rX  Úpy_implÚCompositeImplicitAutogradÚAutogradrW  rl  rp  rv  r~  r7  rŒ  r�  r”  r¢  r¤  r«  r®  r°  rª  r½  rµ  rÅ  rË  rÑ  rÕ  rò  rö  rù  r  r  r&  r*  r?  rE  rI  Úunsafe_chunkrL  rH  rG  Úno_statsrP  rT  r`  rf  rj  rl  Ú_fused_dropoutro  r{  r˜  r`  r³  ÚliftÚ
lift_freshr~  rƒ  r†  r‰  rˆ  r�  r¢  r¥  Ú_adaptive_avg_pool2drÛ  ré  rù  r  r  r  r  r4  r:  r<  r8  rB  rH  Ú	GeneratorrJ  rX  r[  rq  rÒ  rx  r~  ra  Ú_upsample_nearest_exact1drz  r€  rf  rl  rs  r^  r‹  r”  r™  r�  r«  r´  r¸  r¼  rË  rÔ  Úrnn_tanhrÆ   rÛ  Úrnn_relurÞ  rã  rä  rç  ró  rö  rü  r	  Úlstmr  r  r  r  Úgrur  r  r  r$  r&  r'  r/  r1  r-  r*  r3  r7  r?  rF  r)  r`  rb  r+  rƒ  r8  r¡  ru  r{  r~  r€  r„  r‡  r�  r•  r>  r›  r¦  r©  r®  r°  r´  r  r  rÔ  r  r$  rd  Úupsample_bicubic2dr`  rf  Úreflection_pad1dÚreflection_pad2dÚreflection_pad3drp  Úreplication_pad1dÚreplication_pad2dÚreplication_pad3drt  rn  Úreflection_pad1d_backwardÚreflection_pad2d_backwardÚreflection_pad3d_backwardr”  r—  rš  rœ  rs  rV  rŸ  rp  r¡  r¥  r²  rÀ  Ú+_scaled_dot_product_flash_attention_for_cpurÐ  r×  rÝ  rß  rá  rù   ræ  r  rV   ré  rï  rú  rþ  rö  r÷  r  r  Úaddbmm_ÚaddbmmÚaddmm_Úaddmv_Úbaddbmm_Úfill_Úgelu_rÏ  Ú
hardswish_Ú	hardtanh_ÚhardtanhÚhardsigmoid_Ú__iand__Ú__and__Ú__ilshift__Ú
__lshift__r  r   Úindex_reduce_Úindex_reduceÚ__ior__Ú__or__Ú__irshift__Ú
__rshift__Ú__ixor__Ú__xor__Úldexp_Úleaky_relu_Ú
leaky_reluÚlogit_ÚlogitÚrelu_rÐ  Úrenorm_ÚrenormÚround_rS  Úscatter_r,  Úscatter_add_Úscatter_addÚscatter_reduce_Úscatter_reduceÚsilu_r&   r/   r0   Ú<module>ro     s•N  ðô Û Û Û Û 
ß .Ý "Ý ß %ß $ß -Ó -ã Û  Ý Ý #ß Ð ß ,Ñ ,Ý 0Ý 7÷õ ÷ó õ *Ý (ð �h‰h×"Ñ"€ð €ˆˆc‰Ó à‡z�z‡~�~×Ñ€ô�ô ð  %Ø$)ò	'Øð'à×9Ñ9ð'ð ð'ð "õ	'ñT #*ØØ×8Ñ8×@Ñ@Øñ#Ð ñ
 Ø˜u×DÑD×LÑLñÐ ñ &-ØØ×8Ñ8×@Ñ@Ø ñ&Ð "ñ
 "Ø˜u×DÑD×QÑQñÐ ð˜ð  cð ¨fô ñ ˜×*Ñ*Ó+Ùˆ\ÓØð2˜Fð 2 vó 2ó ó ó ,ð2ñ ˜×-Ñ-Ó.Ùˆ\ÓØð4˜vð 4¨&ó 4ó ó ó /ð4ñ ˜×.Ñ.Ó/Ùˆ\ÓØðS ð S¨6ð S¸ð SÈ5ó Só ó ó 0ðSñ
 ˜×)Ñ)Ó*Ùˆ\ÓØð
Øð
àð
ð ð
ð ð	
ð
 ð
ð ó
ó ó ó +ð
ñ2 ˜Ÿ™×)Ñ)Ð*Ó+ñ(ó ,ð(ñ ˜Ÿ™×)Ñ)Ð*Ó+ð"˜Vó "ó ,ð"ñ ˜×(Ñ(Ó)ÙƒØð@�fð @ ó @ó ó ó *ð@ñ ˜×1Ñ1Ó2Ùˆ\ÓØð fð °Fó ó ó ó 3ðñ ˜×.Ñ.Ó/Ùˆ\ÓðPØðPØ%ðPØ05ðPØ@EóPó ó 0ðPñ ˜Ÿ™Ó'ÙƒØðG�Fð G˜vó Gó ó ó (ðGñ ˜×/Ñ/Ó0ÙƒØð Fð °&ð ¸Vó ó ó ó 1ðñ ˜×/Ñ/Ó0Ùˆ\Óð: Fð :°&ð :ÀUó :ó ó 1ð:ñ ˜×0Ñ0Ó1Ùˆ\ÓØðLØðLØ%ðLØ7<ðLØNRóLó ó ó 2ðLñ ˜×*Ñ*Ó+Ùˆ\ÓØò)˜ð ) fð )¸3ô )ó ó ó ,ð)ñ< ˜×*Ñ*Ó+Øð5˜vð 5¨fó 5ó ó ,ð5ñ ˜Ÿ	™	Ó"ÙƒØð&ˆvð &˜&ó &ó ó ó #ð&ñ ˜×*Ñ*Ó+Ùˆ\ÓØð>˜vð >¨Vð >¸ó >ó ó ó ,ð>ñ
 ˜×*Ñ*Ó+ð6˜ð 6¨ð 6°6ó 6ó ,ð6ñ ˜×3Ñ3Ó4ð%Øð%à
ð%ð ð%ð ˆ6�6ˆ>Ñó	%ó 5ð%ñ ˜×6Ñ6Ó7ÙƒØð
Øð
à
ð
ð ð
ð ð	
ð
 ð
ð ð
ð ð
ð ó
ó ó ó 8ð
ñ$ ˜×1Ñ1Ó2Ùˆ\ÓØð< fð <°Fð <ÀFð <Èvó <ó ó ó 3ð<ñ ˜Ÿ
™
Ó#Ùƒð/�ð /˜vð /¨&ó /ó ó $ð/ð˜vð °#ô ð˜Ÿ™ô ñ ˜Ÿ™Ó&ÙƒØà3<·>±>×3GÑ3Gñ1Ø
ð1Ø ð1Ø-0ð1àô1ó ó ó 'ð1ñ ˜×.Ñ.Ó/Ùˆ\ÓØð1Øð1Ø &ð1Ø06ð1ØCFó1ó ó ó 0ð1ñ ˜×*Ñ*Ó+ô0ó ,ð0ñ ˜×+Ñ+Ó,ÙƒØð —^‘^×)Ñ)Øñ		1Ø
ð	1àð	1ð ð	1ð ô		1ó ó ó -ð	1ñ ˜×4Ñ4×<Ñ<Ó=ØðØðØ%ðØ/5ðØBEðØMRóó ó >ðñ ˜×4Ñ4×?Ñ?Ó@Øð
RØð
Rà
ð
Rð ð
Rð ð	
Rð
 ð
Rð ó
Ró ó Að
Rñ ˜×0Ñ0×8Ñ8Ó9Øð	Øð	Ø%ð	Ø/5ð	ØBEð	ØNSó	ó ó :ð	ñ ˜×0Ñ0×4Ñ4Ó5Øð
RØð
Rà
ð
Rð ð
Rð ð	
Rð
 ð
Rð ó
Ró ó 6ð
Rð$Øð$à
ð$ð ð$ð �VÑð	$ð
 ð$ð ð$ð ð$ð ô$ñ@ ˜×)Ñ)Ó*Ùˆ\ÓØðN˜fð N¨Fð N¸ð NÀó Nó ó ó +ðNñ( ˜×.Ñ.Ó/Ùˆ\Óð.Øð.à
ð.ð ð.ð �VÑð	.ð
 ð.ð ð.ð ð.ð ó.ó ó 0ð.ñb ˜×0Ñ0Ó1Ùˆ\Óð$Øð$à
ð$ð ð$ð �VÑð	$ð
 ð$ð ð$ð ð$ð ó$ó ó 2ð$ñN ˜×1Ñ1Ó2ÙƒØð  $Ø—^‘^×)Ñ)ñ	1Ø
ð1àð1ð �VÑð1ð ð	1ð
 ô1ó ó ó 3ð1ñ& ˜×:Ñ:Ó;Ùˆ\ÓØð
  $Ø—^‘^×)Ñ)ñØðà
ðð ðð �VÑð	ð
 ðð ôó ó ó <ðñ  ˜×-Ñ-Ó.ÙƒØð —^‘^×)Ñ)ñ1Øð1àð1ð ð1ð ô	1ó ó ó /ð1ñ ˜×6Ñ6Ó7Ùˆ\ÓØð
 —^‘^×)Ñ)ñ		Øð	à
ð	ð ð	ð ð		ð
 ô	ó ó ó 8ð	ñ ˜Ÿ	™	Ó"Ùƒò)�ð )˜vð )¨%ô )ó ó #ð)ñ ˜×,Ò,Ó-Ùƒð&˜ð & Fð &¨vó &ó ó .ð&ñ ˜×+Ò+Ó,Ùƒð	OØð	Oà�c‘ð	Oð 
ð	Oð ð		Oð
 
ð	Oð ó	Oó ó -ð	Oñ ˜Ÿ
š
×)Ñ)Ó*ð ØØØò3?à
ð3?ð 
ð3?ð �C‰=ð	3?ð
 
�#‰ð3?ð ô3?ó +ð3?ðlØðØðØ (¨¡ðØ4<¸S±Mðà
ˆ3�ˆ8�_ôñ. ˜×*Ò*Ó+Ùƒð ØØØò$UØð$Uà	ð$Uð 
ð$Uð �C‰=ð	$Uð
 
�#‰ð$Uð ô$Uó ó ,ð$UñN ˜×,Ò,Ó-ÙƒðE ð E°d¸3±ið EÀcð EÐRUó Eó ó .ðEñ
 ˜×.Ò.Ó/ÙƒðOØðOØ&*¨3¡iðOØ9<ðOØDGðOØORóOó ó 0ðOðØðØ%+ðØ:?¿+¹+ôñ ˜×3Ò3Ó4Ùˆ\ÓØ ðXØðXØ!'ðXØ.1ðXØ@EÇÁóXó !ó ó 5ðXñ ˜×7Ò7Ó8ÙƒØ ðKØðKØ!'ðKØ.1ðKØ@EÇÁóKó !ó ó 9ðKò*ñ& ˜ŸšÓ$ÙƒðMØðMà�c‘ðMð �3‰iðMð �#‰Yð	Mð
 �‰IðMð óMó ó %ðMñ` ˜ŸšÓ$ÙƒØð]Øð]à�c‘ð]ð �c‘ð]ð �3‰ið	]ð
 �#‰Yð]ð �‰Ið]ð ó]ó ó ó %ð]ñ@ ˜×4Ò4Ó5Ùƒð
¨ð 
°vð 
Àeó 
ó ó 6ð
ñ ˜×,Ò,Ó-ÙƒðYØ
ðYØ" 3™iðYØ47ðYØ?BðYØJMðYàóYó ó .ðYñ" ˜×+Ò+×3Ñ3Ó4Øà>Bò
Øð
Ø%ð
Ø,4°U©Oð
àô
ó ó 5ð
ñ& ˜ŸšÓ%Ø‡‚×Ñ×Ò˜k×CÒCÓDØ‡‚×Ñ×Ò˜k×2Ò2Ó3ð�6ð ˜eð ¨H°T©Nó ó 4ó Eó &ðñ ˜×+Ò+Ó,ÙˆV�VÓðA˜&ð A Uð A°8¸D±>ó Aó ó -ðAñ ˜ŸšÓ&Ùƒð�ð ˜Sð °ó ó ó 'ðñ4 ˜×)Ò)Ó*Ù˜Ñð�Fð  ð °Tó ó ó +ðñ6 ˜ŸšÓ'Ùƒð Ø$ØòØðàðð ðð ð	ð
 ðð ôó ó (ðñ( ˜×5Ò5Ó6ÙƒðØðàðð ðð ð	ð
 óó ó 7ðð:ˆD�‰Iô ðØ�&‰\ðà	ðð ðð 
ˆ&�\ô	ð*˜T &™\ô ð
 t¨F¡|ð 
¸#ô 
ð"Ø�&‰\ð"à	ð"ð ô"ñJ ˜Ÿš×0Ñ0°$·/²/×2EÑ2EÐFÓGð
 !ò	Ø�&‰\ðà	ðð ðð 
�&Ñ	ð	ð
 ôó Hðñ  Ø	×Ò×'Ñ'¨×)CÒ)C×)GÑ)GÐHóð Ø"&ò	Ø
ðà�c‘ðð 
ðð 
�$�v‘,Ñ	ð	ð
 ˆd�6‰lÑôóðñ  ˜×)Ò)×0Ñ0Ó1ò5˜ð 5¨Cð 5°cð 5À%ÈÐPSÈÑBTô 5ó 2ð5ñ ˜×4Ò4×<Ñ<Ó=à67òBØðBØ $ S¡	ðBØ03ðBà
ˆ6�3ˆ;ÑôBó >ðBñ ˜Ÿ
š
×)Ñ)Ó*ò/�ð / Cð /¨cð /¸%ÀÈÀÑ:Lô /ó +ð/ð( ×Ò×-Ò-×5Ò5Ø×)Ò)óð ò//Ø
ð//à &ð//ð 
ð//ð ˆ6�3ˆ;Ñô	//óð//ñf ˜Ÿ
š
Ó#Ù˜ÑØò�ð ˜fð ¨Fð ¸#ð È#ô ó ó ó $ðñ" ˜×.Ò.Ó/ÙƒØð
 ØØòØ
ðà
ðð ðð ð	ð
 ðð ôó ó ó 0ðñ" ˜Ÿ
š
Ó#Ù˜ÑØò	�ð 	˜fð 	¨6ð 	¸ð 	Èô 	ó ó ó $ð	ñ ˜×7Ò7×?Ñ?Ó@ØðS&ØðS&àðS&ð ðS&ð ð	S&ð
 �FÑðS&ð ðS&ð ðS&ð 
ðS&ð ðS&ð �d‘ðS&ð ˆ8�FÑ˜X fÑ-¨x¸Ñ/?Ð?Ñ@óS&ó ó AðS&ñn ˜×7Ò7×;Ñ;Ó<ðØðàðð ðð ð	ð
 �FÑðð ðð ðð 
ðð ðð �d‘ðð �,‰,ðð �,‰,ðð �,‰,ðð ˆ8�FÑ˜X fÑ-¨x¸Ñ/?Ð?Ñ@óó =ðð8�8˜FÑ#ð ¨x¸Ñ/?ô ñ ˜×7Ò7×?Ñ?Ó@ðQØðQàðQð ˜3‘iðQð ð	Qð
 ðQð �VÑðQð �6Ñ
ðQð �d‘ðQð ˆ8�FÑ˜X fÑ-¨x¸Ñ/?Ð?Ñ@óQó AðQñj ˜×7Ò7×;Ñ;Ó<ðØðàðð ˜3‘iðð ð	ð
 ðð �VÑðð �6Ñ
ðð �d‘ðð �,‰,ðð �,‰,ðð �,‰,ðð ˆ8�FÑ˜X fÑ-¨x¸Ñ/?Ð?Ñ@óó =ðñ4 ˜×,Ò,×4Ñ4Ó5ð3Øð3à˜3‘ið3ð �VÑð3ð 
�%‰ð	3ð
 ˆ6�6ˆ>Ñó3ó 6ð3ñl ˜×5Ò5×=Ñ=Ó>ðHØðHàðHð ˜3‘iðHð ð	Hð
 �VÑðHð �d‘ðHð ˆ8�FÑ˜X fÑ-Ð-Ñ.óHó ?ðHðVRØðRà�VÑðRð �6Ñ
ðRð ˜6Ñ"ð	Rð
 ˜&Ñ!ðRð ðRð ðRð 
ðRð ðRð ˆ6�6˜6 8¨FÑ#3°X¸fÑ5EÐEÑFôRñj ˜×.Ò.Ó/ÙˆU�K Ó/ð(Øð(à�VÑð(ð �6Ñ
ð(ð ˜6Ñ"ð	(ð
 ˜&Ñ!ð(ð ð(ð ð(ð 
ð(ð ˆ6�6˜6Ð!Ñ"ó(ó 0ó 0ð(ð4 ×Ò×Ñ×'Ò'¨×(<Ò(<Ó=Ø×Ò×Ñ×'Ò'¨×(MÒ(MÓNð 
Øð 
à�VÑð 
ð �6Ñ
ð 
ð ˜6Ñ"ð	 
ð
 ˜&Ñ!ð 
ð ð 
ð ð 
ð 
ð 
ð ˆ6�6˜6Ð!Ñ"ó 
ó Oó >ð 
ðF ×Ò×Ñ×"Ò" ;×#HÒ#HÓIòG°4¸±<ô Gó JðGñ ˜×AÒA×IÑIÓJðØðà�VÑðð �6Ñ
ðð ð	ð
 ðð ðð 
ðð ˆ6�6˜6Ð!Ñ"óó Kðñ* ˜×5Ò5×=Ñ=Ó>ð(Øð(à�VÑð(ð �6Ñ
ð(ð ð	(ð
 ð(ð ð(ð ð(ð 
ð(ð ˆ6�6˜6Ð!Ñ"ó(ó ?ð(ñ  ˜×5Ò5×>Ò>Ó?ð(Øð(à�VÑð(ð �6Ñ
ð(ð ð	(ð
 ð(ð 
ð(ð ˆ6�6˜6Ð!Ñ"ó(ó @ð(ñ ˜×@Ò@×HÑHÓIðKØðKà�VÑðKð �6Ñ
ðKð ð	Kð
 ðKð ðKð ðKð 
ðKð ˆ6�6˜6 6¨6Ð1Ñ2óKó JðKð4Øðà�VÑðð �6Ñ
ðð ð	ð
 ðð 
ðð ðð ôñ: ˜×4Ò4×<Ñ<Ó=ð1Øð1à�VÑð1ð �6Ñ
ð1ð ð	1ð
 ð1ð ð1ð 
ð1ð ˆ6�6˜6 6Ð)Ñ*ó1ó >ð1ñ4 ˜×?Ò?×GÑGÓHðCØðCà�VÑðCð �6Ñ
ðCð ð	Cð
 ðCð ðCð 
ðCð ˆ6�6˜6 6¨6°6Ð9Ñ:óCó IðCñ8 ˜×2Ò2×:Ñ:Ó;ð1Øð1à�VÑð1ð �6Ñ
ð1ð ð	1ð
 ð1ð ð1ð 
ð1ð ˆ6�6˜6 6Ð)Ñ*ó1ó <ð1ñ4 ˜×+Ò+Ó,ÙˆV�VÓØôó ó ó -ðñ ˜ŸšÓ&Ùƒð $(ØØ%)ØØØ37ò+ØˆV�ZÐÑ ð+ð �E—K‘KÑ ð+ð
 �U—\’\Ñ"ð+ð ð+ð ð+ð ˜E×/Ò/Ñ0ô+ó ó 'ð+ñb ˜Ÿš d§i¢i°·²ÐAÓBÙƒñó ó Cðð ×Ò×Ñ×&Ò& {×';Ò';Ó<Ù˜×-Ò-Ó.ÙˆV�V˜V VÓ,ðØðàðð �6Ñ
ðð ˜6Ñ"ð	ð
 ˜&Ñ!ðð ðð !&ðð óó -ó /ó =ðò>ñ ˜×0Ò0×8Ñ8Ó9ðØðàðð �VÑðð ˜6Ñ"ð	ð
 ˜&Ñ!ðð ˜Ñðð ˜&Ñ!ðð ðð 
ðð �d‘ðð ðð ˆ6�8˜FÑ# X¨fÑ%5Ð5Ñ6óó :ðñ6 ˜×7Ò7×?Ñ?Ó@ðiØðiàðið �VÑðið ˜6Ñ"ð	ið
 ˜&Ñ!ðið ˜Ñðið ˜&Ñ!ðið ðið 
ðið �d‘ðið ˆ6�8˜FÑ# X¨fÑ%5Ð5Ñ6óió AðiñZ ˜×7Ò7×;Ñ;Ó<ð"Øð"àð"ð �VÑð"ð ˜6Ñ"ð	"ð
 ˜&Ñ!ð"ð ˜Ñð"ð ˜&Ñ!ð"ð ð"ð 
ð"ð �d‘ð"ð �,‰,ð"ð �,‰,ð"ð �,‰,ð"ð ˆ6�8˜FÑ# X¨fÑ%5Ð5Ñ6ó"ó =ð"ñJ ˜×7Ò7Ó8ÙˆV�V˜VÓ$ðØðàðð ðð ˜6Ñ"ð	ð
 ˜&Ñ!ðð ˜Ñðð �vÑðð óó %ó 9ðñ0 ˜×6Ò6Ó7ÙˆV�V˜VÓ$ðØðàðð ðð ˜6Ñ"ð	ð
 ˜&Ñ!ðð ˜Ñðð �vÑðð ðð óó %ó 8ðñ2 ˜×1Ò1Ó2ÙƒØðd'˜vð d'°E¸#¸s¸(±Oó d'ó ó ó 3ðd'ðNØ
ðØ)ðØ8<¸S¹	ðØHKôñ6 ˜×)Ò)Ó*Ùƒð*8Ø
ð*8àð*8ð �c‘ó*8ó ó +ð*8ñZ ˜×)Ò)Ó*Ùƒð49Øð49àð49ð �c‘ð49ð �‰Ið	49ð
 �#‰Yó49ó ó +ð49ñn ˜ŸšÓ(ð òHØðHà	ðHð ðHð ð	Hð ôHó )ðHñ ˜ŸšÓ'Ùƒð òIØðIà	ðIð ðIð ð	Ið ôIó ó (ðIð$ ò%@Øð%@à	ð%@ð ð%@ð ñ	%@ð ð%@ð ö%@ñP ˜×)Ò)×1Ñ1Ó2Ø×Ò×Ñ×"Ò" ;×#HÒ#HÓIõó Jó 3ðñ2 ˜×(Ò(Ó)ð<�:ð < Cð <°
ð <ÀJô <ó *ð<ñ ˜ŸšÓ(Ùƒð=�*ð = 3ð =¨zð =À:ô =ó ó )ð=ð@Øð@Øð@Ø$.ð@Ø8Bñ@ØPTõ@ñ, ˜×0Ò0Ó1ÙˆX�xÓ Øð(˜fð (¨¨v°v¨~Ñ)>ô (ó ó !ó 2ð(ñ ˜ŸšÓ%Ùƒð $'Ø$'Ø+/ò	Øñà	ˆt�S˜%ÐÑ	 ñð ��c˜5Ð Ñ
!ñð ˜ŸšÑ(õ	ó ó &ðñ" ˜ŸšÓ&õ;ó 'ð;ó
ó8ñ ˜×/Ò/×3Ò3Ó4Ù˜×/Ò/×3Ò3Ó4Ù˜×/Ò/×3Ò3Ó4Ø×Ò×Ò×$Ò$ [×%JÒ%JÓKØ×Ò×Ò×$Ò$ [×%9Ò%9Ó:Ø×Ò×Ò×$Ò$ [×%JÒ%JÓKØ×Ò×Ò×$Ò$ [×%9Ò%9Ó:Ø×Ò×Ò×$Ò$ [×%JÒ%JÓKØ×Ò×Ò×$Ò$ [×%9Ò%9Ó:ð	3Øð	3à˜$˜s™)Ñ$ñ	3ð ˜D ™KÑ(ð	3ð ô		3ó ;ó Ló ;ó Ló ;ó Ló 5ó 5ó 5ð	3ñ ˜×6Ò6×:Ò:Ó;Ù˜×6Ò6×:Ò:Ó;Ù˜×6Ò6×:Ò:Ó;Ø×Ò×#Ò#×+Ò+¨K×,QÒ,QÓRØ×Ò×#Ò#×+Ò+¨K×,@Ò,@ÓAØ×Ò×#Ò#×+Ò+¨K×,QÒ,QÓRØ×Ò×#Ò#×+Ò+¨K×,@Ò,@ÓAØ×Ò×#Ò#×+Ò+¨K×,QÒ,QÓRØ×Ò×#Ò#×+Ò+¨K×,@Ò,@ÓAð	?Øð	?à˜$˜s™)Ñ$ñ	?ð ˜D ™KÑ(ð	?ð ô		?ó Bó Só Bó Só Bó Só <ó <ó <ð	?ö#ñL ˜×0Ò0×8Ñ8¸$×:QÒ:Q×:UÑ:UÐVÓWØ×Ò× Ñ ×(Ò(¨×)NÒ)NÓOØ×Ò× Ñ ×(Ò(¨×)=Ò)=Ó>Ù D°dÒ;ð #ò;Øð;à�c‘ñ;ð �U‰Oð;ð õ	;ó <ó ?ó Pó Xð;ñ Ø	×#Ò#×+Ñ+¨T×-KÒ-K×-OÑ-OÐPóð ×Ò×'Ñ'×/Ò/°×0UÒ0UÓVØ×Ò×'Ñ'×/Ò/°×0DÒ0DÓEÙ D°dÒ;ð #òGØðGà�c‘ñGð �U‰OðGð õ	Gó <ó Fó WóðGñ ˜×0Ò0×8Ñ8¸$×:QÒ:Q×:UÑ:UÐVÓWØ×Ò× Ñ ×(Ò(¨×)NÒ)NÓOØ×Ò× Ñ ×(Ò(¨×)=Ò)=Ó>Ù D°dÒ;ð !%Ø $ò	GØðGà�c‘ñGð �u‰oñGð �u‰oð	Gð
 õGó <ó ?ó Pó XðGñ Ø	×#Ò#×+Ñ+¨T×-KÒ-K×-OÑ-OÐPóð ×Ò×'Ñ'×/Ò/°×0UÒ0UÓVØ×Ò×'Ñ'×/Ò/°×0DÒ0DÓEÙ D°dÒ;ð !%Ø $ò	SØðSà�c‘ñSð �u‰oñSð �u‰oð	Sð
 õSó <ó Fó WóðSñ ˜×0Ò0×8Ñ8¸$×:QÒ:Q×:UÑ:UÐVÓWØ×Ò× Ñ ×(Ò(¨×)NÒ)NÓOØ×Ò× Ñ ×(Ò(¨×)=Ò)=Ó>Ù D°dÒ;ð !%Ø $Ø $òQØðQà�c‘ñQð �u‰oñQð �u‰oñ	Qð
 �u‰oðQð õQó <ó ?ó Pó XðQñ Ø	×#Ò#×+Ñ+¨T×-KÒ-K×-OÑ-OÐPóð ×Ò×'Ñ'×/Ò/°×0UÒ0UÓVØ×Ò×'Ñ'×/Ò/°×0DÒ0DÓEÙ D°dÒ;ð !%Ø $Ø $ò	Øð	à�c‘ñ	ð �u‰oñ	ð �u‰oñ		ð
 �u‰oð	ð õ	ó <ó Fó Wóð	ð ð
 ò	Øðà�c‘ñð �˜%‘Ñ!ñð ð	ð
 õó ðó4ó&>ó/óð$ FKö+ó\óö&ö,/-ód& ñR ˜Ÿš×+Ò+Ó,Ø‡‚×Ò×Ò˜[×BÒBÓCØ‡‚×Ò×Ò˜[×1Ò1Ó2ò.ó 3ó Dó -ð.ñ8 ˜Ÿš×+Ò+Ó,Ø‡‚×Ò×Ò˜[×BÒBÓCØ‡‚×Ò×Ò˜[×1Ò1Ó2ò.ó 3ó Dó -ð.ñ8 ˜Ÿš×*Ò*Ó+Ø‡‚×Ò×Ò˜K×AÒAÓBØ‡‚×Ò×Ò˜K×0Ò0Ó1ò.ó 2ó Có ,ð.ñ@ ˜Ÿš×*Ò*Ó+Ø‡‚×Ò×Ò˜K×AÒAÓBØ‡‚×Ò×Ò˜K×0Ò0Ó1ò.ó 2ó Có ,ð.ó@÷/÷6=ô@/ñd ˜Ÿ	š	ŸšÓ(Ø‡‚‡‚×Ò˜×>Ò>Ó?Ø‡‚‡‚×Ò˜×-Ò-Ó.òSó /ó @ó )ñSñ@ ˜Ÿ	š	ŸšÓ'Ø‡‚‡‚×Ò˜×=Ò=Ó>Ø‡‚‡‚×Ò˜×,Ò,Ó-òSó .ó ?ó (ñSô>;ô;ñ ˜ŸšŸšÓ&Ø‡‚‡‚×Ò�{×<Ò<Ó=Ø‡‚‡‚×Ò�{×+Ò+Ó,ò.ó -ó >ó 'ñ.ñ6 ˜ŸšŸšÓ'Ø‡‚‡‚×Ò˜×=Ò=Ó>Ø‡‚‡‚×Ò˜×,Ò,Ó-ò.ó .ó ?ó (ñ.ñ6 ˜×4Ò4×8Ò8Ó9Ø×Ò×!Ò!×)Ò)¨+×*OÒ*OÓPØ×Ò×!Ò!×)Ò)¨+×*>Ò*>Ó?òó @ó Qó :ññ ˜×3Ò3×7Ò7Ó8Ø×Ò× Ò ×(Ò(¨×)NÒ)NÓOØ×Ò× Ò ×(Ò(¨×)=Ò)=Ó>òó ?ó Pó 9ññ ˜×0Ò0×4Ò4Ó5Ù˜×1Ò1×5Ò5Ó6Ø×Ò×Ò×#Ò# K×$IÒ$IÓJØ×Ò×Ò×#Ò# K×$8Ò$8Ó9Ø×Ò×Ò×%Ò% k×&KÒ&KÓLØ×Ò×Ò×%Ò% k×&:Ò&:Ó;Ø×Ò×Ò×&Ò& {×'LÒ'LÓMØ×Ò×Ò×&Ò& {×';Ò';Ó<òAó =ó Nó <ó Mó :ó Kó 7ó 6ñAñ ˜×/Ò/×7Ñ7¸×9OÒ9O×9SÑ9SÐTÓUÙƒð
 !%ò	KØðKà�c‘ñKð ñKð �u‰oð	Kð
 õKó ó VñKñ Ø	×Ò×%Ñ% t×'?Ò'?×'CÑ'CÐDóð ×Ò×!Ñ!×)Ò)¨+×*>Ò*>Ó?Ùƒð
 !%Ø $òUØðUà�c‘ñUð ñUð �u‰oñ	Uð
 �u‰oðUð õUó ó @óñ
Uñ Ø	×Ò×&Ñ&¨×(AÒ(A×(EÑ(EÐFóñ ƒð
 !%Ø $Ø $ò
Øð
à�c‘ñ
ð ñ
ð �u‰oñ	
ð
 �u‰oñ
ð �u‰oð
ð õ
ó óñ
÷Vô/ð7Ø	�&Ñ	ñ7Ø$,¨VÑ$4ñ7ØIOð7àö7ñ-Ð'9ð -¸fö -ð ðIØðIà�c‘ñIð ñIð �˜%‘Ñ!ð	Ið
 ôIó ñIñZ ˜×)Ò)×1Ñ1Ó2ñ�Fñ ˜vð ¨$ô ó 3ññ ˜×,Ò,¨d×.?Ò.?Ð@ÓAÙƒòó ó Bññ ˜×+Ò+Ð,Ó-ò"ó .ñ"ñ ˜×/Ò/Ð0Ó1õ9ó 2ñ9ñ ˜×2Ò2Ð3Ó4òCó 5ñCñ6 ˜×AÒAÐBÓCòMó DñMð23 Ø
ð3 àð3 ð �VÑð3 ð ð	3 ð
 ð3 ð ˆ6�6ˆ>Ñö3 ñl ˜×-Ò-Ó.ÙˆX�~Ó&ðLØ
ðLàðLð �VÑðLð ð	Lð
 ðLð ˆ6�6ˆ>ÑôLó 'ó /ñLñ> ˜×/Ò/Ó0ÙˆX�~Ó&ðLØ
ðLàðLð �VÑðLð ð	Lð
 ðLð ˆ6�6ˆ>ÑôLó 'ó 1ñLð/ Fñ /¨uð /¸ö /ð5 Fñ 5¨uð 5¸ö 5ñ
¨ð 
Ð3Eö 
ñ(FÐ%7ñ F¸Vð FÈö Fñ!�X˜fÑ%ð !¨&ö !ñNØñNØ#'ðNØ05·±ðNØEJÇ\Â\öNñ&˜fñ &¨ñ &°ñ &ÀTö &ñ"/˜fñ /¨ñ /°ñ /¸ñ /ÈTö /ñ"! Vð !°4¸±9ñ !ÈTö !ñ$ Vð $°4¸±9ñ $ÈTö $ñ ˜×2Ò2Ó3ÙƒØñS ð S¨t°C©yñ SÈô Só ó ó 4ñSð  ØØØóf4Øñf4à
ñf4ð ñf4ð ñ	f4ð
 ñf4ð ðf4ð ÷f4ñR ˜×,Ò,Ó-ÙƒØð  ØØóØñà
ñð ñð ñ	ð
 ðð õó ó ó .ññ  ˜ŸšÓ Ù˜ÑØò	#ó ó ó !ñ	#ñ ˜×=Ò=Ó>Ùƒà¨$¸)¿.¹.×:NÑ:Nô1ó ó ?ñ1ñ˜Ÿ™ñ °·±ñ Àdð Ètö ð@ ‡‚×Ñ×Ò˜[×BÒBÓCØ‡‚‡�×Ò˜×>Ò>Ó?Ù˜ÒØ',ö yWó ó @ó DñyWñx ˜×0Ò0×8Ñ8¸$×:QÒ:Q×:UÑ:UÐVÓWØ×Ò× Ñ ×(Ò(¨×)=Ò)=Ó>ÙƒØð
  $Ø#òTØðTà�s˜C�x‘ñTð ñTð �e‰_ñ	Tð
 �e‰_ðTð õTó ó ó ?ó XñTñn ˜×/Ò/×3Ò3Ó4Ø×Ò×Ò×$Ò$ [×%JÒ%JÓKØ×Ò×Ò×$Ò$ [×%9Ò%9Ó:ÙƒØð
 48ó	WØðWà˜%  S ™/Ñ*ñWð ñWð ˜E %¨ ,Ñ/Ñ0ð	Wð
 õWó ó ó ;ó Ló 5ñ
Wñ4 ˜×-Ò-Ó.Ù˜×-Ò-Ó.Ù˜×-Ò-Ó.ØÙƒñ	�vð 	¨¨c°3¨h©ð 	¸Fô 	ó ó ó /ó /ó /ñ
	ñ ˜×.Ò.Ó/Ù˜×.Ò.Ó/Ù˜×.Ò.Ó/ØÙƒñ	˜ð 	¨¨s°C¨x©ð 	¸Vô 	ó ó ó 0ó 0ó 0ñ
	ñØðà�3˜�8‰_ñð �c˜3 �_ fÐ,Ñ-ðð ö	ñ8 ˜×6Ò6Ó7Ù˜×6Ò6Ó7Ù˜×6Ò6Ó7Ùˆ\ÓòTó ó 8ó 8ó 8ñTñn ˜ŸšÓ%Ù‰U‘EÓØ uö ó ó &ññ ˜ŸšÓ$ÙƒñX°4÷ Xó ó %ñXñ ˜Ÿš×,Ñ,¨d¯kªk¯o©oÐ>Ó?Ùƒð $(Ø Ÿ=š=Ø%)Øó
Ø	ð
ð �E—K‘KÑ ñ
ð �LŠLð	
ð
 �U—\’\Ñ"ð
ð õ
ó ó @ñ
ñ ˜Ÿš×*Ò*Ð+Ó,ð
 $(Ø Ÿ=š=Ø%)ØóØðà	ðð �E—K‘KÑ ñ	ð
 �LŠLðð �U—\’\Ñ"ðð õó -ññ ˜	Ó"ò,ó #ñ,ñ ˜×.Ò.Ó/Ø×Ò×Ñ×'Ò'¨×(<Ò(<Ó=Ùƒð ØØ#Ø—^‘^×)Ñ)ñ)Øð)àð)ð ñ)ð ð	)ð
 �VÑð)ð ð)ð õ)ó ó >ó 0ñ)ñX ˜×;Ò;Ó<Ø×$Ò$×,Ñ,×4Ò4°[×5IÒ5IÓJÙˆX‘{Ó#ð-Øð-àð-ð ð-ð ˆ6�6ˆ>Ñô	-ó $ó Kó =ñ-ñx ˜×HÒH×PÑPÓQð
 ØñAð #'Ø!ôAØñAà	ðAð ñAð ñ	Að
 ñAð ˜ÑðAð �E‰?ðAð ˆ6�6ˆ>ÑöAó RñAôHñ ˜Ÿš˜Ó'Ù˜ÑØõó ó ó (ññ ˜×)Ò)Ó*Ùƒò9ó ó +ñ9ñ ˜ŸšÓ'ò6ó (ñ6ñ ˜Ÿš×)Ñ)¨4¯8ª8¯<©<Ð8Ó9ð $(Ø ó		DØ
ð	Dð �E—K‘KÑ ð	Dð 
�&Ñ	ð		Dð
 õ	Dó :ñ	Dñ ˜Ÿš×-Ñ-¨t¯|ª|×/?Ò/?Ð@ÓAò.˜&ð . x°¡}õ .ó Bñ.ñ ˜Ÿ	™	Ÿ™×=Ò=Ó>õ,ó ?ñ,ñ ˜Ÿ	š	Ó"ÙƒØ38Àö 
ó ó #ñ
ñ$ ˜Ÿš×.Ñ.Ó/ð ,0óØ
�,‰,ñð ˜ŸšÑ(ðð ‡\�\õ	ó 0ñð$ 5:÷ 
#ð 
#ð <AÈ÷ +ð +ñ: ˜Ÿ	š	Ó"Ùƒòó ó #ññ
 ˜ŸšÓ'õGó (ñGò �—’˜tŸ{š{Ô +Ú �—’˜dŸjšjÔ )Ú �—’˜dŸjšjÔ )Ú �—’ §¢Ô -Ú �—’˜TŸY™YÔ 'Ú �—’˜TŸYšYÔ 'Ú �—’ $§.¡.Ô 1Ú �—’ §¢Ô /Ú �×"Ò" D×$4Ñ$4Ô 5Ú �—’ §¢Ô -Ú �×!Ò! 4§?¢?Ô 3Ú �—’ $§.¢.Ô 1Ú �×#Ò# T×%6Ò%6Ô 7Ú �—’˜tŸ{š{Ô +Ú �×!Ò! 4§?¢?Ô 3Ú �—’ §¢Ô -Ú �—’˜dŸj™jÔ )Ú �×!Ò! 4§?¢?Ô 3Ú �—’˜dŸjšjÔ )Ú �—’˜TŸYšYÔ 'Ú �—’˜tŸ{š{Ô +Ú �—’˜dŸjšjÔ )Ú �—’ §¢Ô -Ú �×"Ò" D×$4Ò$4Ô 5Ú �×%Ò% t×':Ò':Ô ;Ú �—’˜TŸY™YÕ 'r/   