Ë
    T^(h8C  ã                   ó®  — d Z ddlmZmZmZmZ ddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZ dZ G d„ dej.                  «      Z G d„ dej.                  «      Z G d„ dej.                  «      Z G d„ dej.                  «      Z G d„ dej.                  «      Z G d„ de«      ZdZdZ ede«       G d„ de«      «       Z ddgZ!y)zrPyTorch UperNet model. Based on OpenMMLab's implementation, found in https://github.com/open-mmlab/mmsegmentation.é    )ÚListÚOptionalÚTupleÚUnionN)Únn)ÚCrossEntropyLossé   )ÚSemanticSegmenterOutput)ÚPreTrainedModel)Úadd_start_docstringsÚ%add_start_docstrings_to_model_forwardÚreplace_return_docstrings)Úload_backboneé   )ÚUperNetConfigr   c                   ó¾   ‡ — e Zd ZdZ	 	 	 ddededeeeeef   f   deeeeef   ef   dedeeeeef   f   dd	fˆ fd
„Z	de
j                  de
j                  fd„Zˆ xZS )ÚUperNetConvModulezã
    A convolutional block that bundles conv/norm/activation layers. This block simplifies the usage of convolution
    layers, which are commonly used with a norm layer (e.g., BatchNorm) and activation layer (e.g., ReLU).
    Úin_channelsÚout_channelsÚkernel_sizeÚpaddingÚbiasÚdilationÚreturnNc                 óÈ   •— t         ‰| �  «        t        j                  ||||||¬«      | _        t        j
                  |«      | _        t        j                  «       | _        y )N)r   r   r   r   r   r   )	ÚsuperÚ__init__r   ÚConv2dÚconvÚBatchNorm2dÚ
batch_normÚReLUÚ
activation)Úselfr   r   r   r   r   r   Ú	__class__s          €új/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/transformers/models/upernet/modeling_upernet.pyr   zUperNetConvModule.__init__(   sQ   ø€ ô 	‰ÑÔÜ—I‘IØ#Ø%Ø#ØØØô
ˆŒ	ô Ÿ.™.¨Ó6ˆŒÜŸ'™'›)ˆ�ó    Úinputc                 ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S ©N)r   r!   r#   )r$   r(   Úoutputs      r&   ÚforwardzUperNetConvModule.forward=   s1   € Ø—‘˜5Ó!ˆØ—‘ Ó(ˆØ—‘ Ó(ˆàˆr'   )r   Fr   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr   r   ÚstrÚboolr   ÚtorchÚTensorr,   Ú__classcell__©r%   s   @r&   r   r   "   s¯   ø„ ñð 56ØØ01ñ$àð$ð ð$ð ˜3  c¨3 h¡Ð/Ñ0ð	$ð
 �s˜E # s (™O¨SÐ0Ñ1ð$ð ð$ð ˜˜U 3¨ 8™_Ð,Ñ-ð$ð 
õ$ð*˜UŸ\™\ð ¨e¯l©l÷ r'   r   c                   óh   ‡ — e Zd Zdedededdfˆ fd„Zdej                  dej                  fd„Zˆ xZS )	ÚUperNetPyramidPoolingBlockÚ
pool_scaler   Úchannelsr   Nc                 óâ   •— t         ‰| �  «        t        j                  |«      t	        ||d¬«      g| _        t        | j
                  «      D ]   \  }}| j                  t        |«      |«       Œ" y )Nr   ©r   )	r   r   r   ÚAdaptiveAvgPool2dr   ÚlayersÚ	enumerateÚ
add_moduler2   )r$   r:   r   r;   ÚiÚlayerr%   s         €r&   r   z#UperNetPyramidPoolingBlock.__init__F   sa   ø€ Ü‰ÑÔä× Ñ  Ó,Ü˜k¨8ÀÔCð
ˆŒô " $§+¡+Ó.ò 	+‰HˆAˆuØ�O‰OœC ›F EÕ*ñ	+r'   r(   c                 ó<   — |}| j                   D ]
  } ||«      }Œ |S r*   )r?   )r$   r(   Úhidden_staterC   s       r&   r,   z"UperNetPyramidPoolingBlock.forwardO   s*   € ØˆØ—[‘[ò 	/ˆEÙ  Ó.‰Lð	/àÐr'   )	r-   r.   r/   r1   r   r4   r5   r,   r6   r7   s   @r&   r9   r9   E   s?   ø„ ð+ 3ð +°Sð +ÀCð +ÈDõ +ð˜UŸ\™\ð ¨e¯l©l÷ r'   r9   c            
       ó€   ‡ — e Zd ZdZdeedf   dedededdf
ˆ fd	„Zd
ej                  de
ej                     fd„Zˆ xZS )ÚUperNetPyramidPoolingModulea}  
    Pyramid Pooling Module (PPM) used in PSPNet.

    Args:
        pool_scales (`Tuple[int]`):
            Pooling scales used in Pooling Pyramid Module.
        in_channels (`int`):
            Input channels.
        channels (`int`):
            Channels after modules, before conv_seg.
        align_corners (`bool`):
            align_corners argument of F.interpolate.
    Úpool_scales.r   r;   Úalign_cornersr   Nc                 ó  •— t         ‰| �  «        || _        || _        || _        || _        g | _        t        |«      D ]I  \  }}t        |||¬«      }| j                  j                  |«       | j                  t        |«      |«       ŒK y )N)r:   r   r;   )r   r   rH   rI   r   r;   Úblocksr@   r9   ÚappendrA   r2   )	r$   rH   r   r;   rI   rB   r:   Úblockr%   s	           €r&   r   z$UperNetPyramidPoolingModule.__init__e   s€   ø€ Ü‰ÑÔØ&ˆÔØ*ˆÔØ&ˆÔØ ˆŒØˆŒÜ& {Ó3ò 	+‰MˆAˆzÜ.¸*ÐR]ÐhpÔqˆEØ�K‰K×Ñ˜uÔ%Ø�O‰OœC ›F EÕ*ñ	+r'   Úxc                 óÚ   — g }| j                   D ]Y  } ||«      }t        j                  j                  ||j	                  «       dd  d| j
                  ¬«      }|j                  |«       Œ[ |S )Né   Úbilinear©ÚsizeÚmoderI   )rK   r   Ú
functionalÚinterpolaterS   rI   rL   )r$   rN   Úppm_outsÚppmÚppm_outÚupsampled_ppm_outs         r&   r,   z#UperNetPyramidPoolingModule.forwardq   sn   € ØˆØ—;‘;ò 	/ˆCÙ˜!“fˆGÜ "§¡× 9Ñ 9Ø˜aŸf™f›h q r˜l°È4×K]ÑK]ð !:ó !Ðð �O‰OÐ-Õ.ð	/ð ˆr'   )r-   r.   r/   r0   r   r1   r3   r   r4   r5   r   r,   r6   r7   s   @r&   rG   rG   V   s[   ø„ ñð
+ E¨#¨s¨(¡Oð 
+À#ð 
+ÐQTð 
+Ðeið 
+Ðnrõ 
+ð˜Ÿ™ð ¨$¨u¯|©|Ñ*<÷ r'   rG   c                   ól   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zdej                  dej                  fd„Z
ˆ xZS )	ÚUperNetHeadz‘
    Unified Perceptual Parsing for Scene Understanding. This head is the implementation of
    [UPerNet](https://arxiv.org/abs/1807.10221).
    c                 óö  •— t         ‰| �  «        || _        |j                  | _        || _        |j
                  | _        d| _        t        j                  | j                  |j                  d¬«      | _        t        | j                  | j                  d   | j                  | j                  ¬«      | _        t        | j                  d   t        | j                  «      | j                  z  z   | j                  dd¬«      | _        t        j"                  «       | _        t        j"                  «       | _        | j                  d d D ]s  }t        || j                  d¬«      }t        | j                  | j                  dd¬«      }| j$                  j)                  |«       | j&                  j)                  |«       Œu t        t        | j                  «      | j                  z  | j                  dd¬«      | _        y )NFr   r=   éÿÿÿÿ)rI   r	   ©r   r   )r   r   ÚconfigrH   r   Úhidden_sizer;   rI   r   r   Ú
num_labelsÚ
classifierrG   Úpsp_modulesr   ÚlenÚ
bottleneckÚ
ModuleListÚlateral_convsÚ	fpn_convsrL   Úfpn_bottleneck)r$   r`   r   Úl_convÚfpn_convr%   s        €r&   r   zUperNetHead.__init__‚   s•  ø€ Ü‰ÑÔàˆŒØ!×-Ñ-ˆÔØ&ˆÔØ×*Ñ*ˆŒØ"ˆÔÜŸ)™) D§M¡M°6×3DÑ3DÐRSÔTˆŒô 7Ø×ÑØ×Ñ˜RÑ Ø�M‰MØ×,Ñ,ô	
ˆÔô ,Ø×Ñ˜RÑ ¤3 t×'7Ñ'7Ó#8¸4¿=¹=Ñ#HÑHØ�M‰MØØô	
ˆŒô  Ÿ]™]›_ˆÔÜŸ™›ˆŒØ×+Ñ+¨C¨RÐ0ò 	,ˆKÜ& {°D·M±MÈqÔQˆFÜ(¨¯©¸¿¹ÐSTÐ^_Ô`ˆHØ×Ñ×%Ñ% fÔ-Ø�N‰N×!Ñ! (Õ+ð		,ô 0Ü�× Ñ Ó! D§M¡MÑ1Ø�M‰MØØô	
ˆÕr'   c                 ó:   — | j                  | j                  «       y r*   ©ÚapplyÚ_init_weights©r$   s    r&   Úinit_weightszUperNetHead.init_weights©   ó   € Ø�
‰
�4×%Ñ%Õ&r'   c                 ó  — t        |t        j                  «      rm|j                  j                  j                  d| j                  j                  ¬«       |j                  �%|j                  j                  j                  «        y y y ©Ng        )ÚmeanÚstd©
Ú
isinstancer   r   ÚweightÚdataÚnormal_r`   Úinitializer_ranger   Úzero_©r$   Úmodules     r&   rp   zUperNetHead._init_weights¬   óa   € Ü�fœbŸi™iÔ(Ø�M‰M×Ñ×&Ñ&¨C°T·[±[×5RÑ5RÐ&ÔSØ�{‰{Ð&Ø—‘× Ñ ×&Ñ&Õ(ð 'ð )r'   c                 ó¦   — |d   }|g}|j                  | j                  |«      «       t        j                  |d¬«      }| j	                  |«      }|S )Nr^   r   ©Údim)Úextendrd   r4   Úcatrf   )r$   ÚinputsrN   Úpsp_outsr+   s        r&   Úpsp_forwardzUperNetHead.psp_forward²   sL   € Ø�2‰JˆØ�3ˆØ�‰˜×(Ñ(¨Ó+Ô,Ü—9‘9˜X¨1Ô-ˆØ—‘ Ó*ˆàˆr'   Úencoder_hidden_statesr   c                 óP  — t        | j                  «      D ��cg c]  \  }} |||   «      ‘Œ }}}|j                  | j                  |«      «       t	        |«      }t        |dz
  dd«      D ]V  }||dz
     j                  dd  }||dz
     t        j                  j                  ||   |d| j                  ¬«      z   ||dz
  <   ŒX t        |dz
  «      D �cg c]  } | j                  |   ||   «      ‘Œ }}|j                  |d   «       t        |dz
  dd«      D ]E  }t        j                  j                  ||   |d   j                  dd  d| j                  ¬«      ||<   ŒG t        j                  |d¬«      }| j                  |«      }| j                  |«      }|S c c}}w c c}w )Nr   r   r^   rP   rQ   rR   rƒ   )r@   rh   rL   r‰   re   ÚrangeÚshaper   rU   rV   rI   ri   r4   r†   rj   rc   )	r$   rŠ   rB   Úlateral_convÚlateralsÚused_backbone_levelsÚ
prev_shapeÚfpn_outsr+   s	            r&   r,   zUperNetHead.forward»   s¸  € äR[Ð\`×\nÑ\nÓRo×p¹¸qÀ,‘LÐ!6°qÑ!9Õ:ÐpˆÑpà�‰˜×(Ñ(Ð)>Ó?Ô@ô  # 8›}ÐÜÐ+¨aÑ/°°BÓ7ò 	ˆAØ! ! a¡%™×.Ñ.¨q¨rÐ2ˆJØ& q¨1¡u™o´·±×0IÑ0IØ˜‘ *°:ÈT×M_ÑM_ð 1Jó 1ñ ˆH�Q˜‘UŠOð	ô =BÐBVÐYZÑBZÓ<[Ö\°qÐ%�D—N‘N 1Ñ% h¨q¡kÕ2Ð\ˆÐ\à�‰˜ ™Ô%äÐ+¨aÑ/°°BÓ7ò 	ˆAÜŸ-™-×3Ñ3Ø˜‘ (¨1¡+×"3Ñ"3°A°BÐ"7¸jÐX\×XjÑXjð 4ó ˆH�QŠKð	ô —9‘9˜X¨1Ô-ˆØ×$Ñ$ XÓ.ˆØ—‘ Ó(ˆàˆùó3 qùò ]s   ™FÃF#)r-   r.   r/   r0   r   rr   rp   r‰   r4   r5   r,   r6   r7   s   @r&   r\   r\   |   s8   ø„ ñô
%
òN'ò)òð¨U¯\©\ð ¸e¿l¹l÷ r'   r\   c                   ó�   ‡ — e Zd ZdZ	 ddededeeeeef   f   ddfˆ fd„Zd„ Zd	„ Z	d
e
j                  de
j                  fd„Zˆ xZS )ÚUperNetFCNHeada¼  
    Fully Convolution Networks for Semantic Segmentation. This head is the implementation of
    [FCNNet](https://arxiv.org/abs/1411.4038>).

    Args:
        config:
            Configuration.
        in_channels (int):
            Number of input channels.
        kernel_size (int):
            The kernel size for convs in the head. Default: 3.
        dilation (int):
            The dilation rate for convs in the head. Default: 1.
    Úin_indexr   r   r   Nc           
      óJ  •— t         ‰| �  «        || _        |j                  | _        |j
                  | _        |j                  | _        |j                  | _
        || _        |dz  |z  }g }|j                  t        | j                  | j                  |||¬«      «       t        | j                  dz
  «      D ]5  }|j                  t        | j                  | j                  |||¬«      «       Œ7 | j                  dk(  rt        j                   «       | _        nt        j$                  |Ž | _        | j                  r8t        | j                  | j                  z   | j                  ||dz  ¬«      | _        t        j(                  | j                  |j*                  d¬«      | _        y )NrP   )r   r   r   r   r   r_   r=   )r   r   r`   Úauxiliary_in_channelsr   Úauxiliary_channelsr;   Úauxiliary_num_convsÚ	num_convsÚauxiliary_concat_inputÚconcat_inputr•   rL   r   rŒ   r   ÚIdentityÚconvsÚ
SequentialÚconv_catr   rb   rc   )	r$   r`   r•   r   r   Úconv_paddingrž   rB   r%   s	           €r&   r   zUperNetFCNHead.__init__é   s_  ø€ ô 	‰ÑÔàˆŒØ!×7Ñ7ˆÔØ×1Ñ1ˆŒØ×3Ñ3ˆŒØ"×9Ñ9ˆÔØ ˆŒà# qÑ(¨HÑ4ˆØˆØ�‰ÜØ× Ñ  $§-¡-¸[ÐR^Ðiqôô	
ô
 �t—~‘~¨Ñ)Ó*ò 	ˆAØ�L‰LÜ!Ø—M‘M 4§=¡=¸kÐS_Ðjrôõð	ð �>‰>˜QÒÜŸ™›ˆD�JäŸ™¨Ð.ˆDŒJØ×ÒÜ-Ø× Ñ  4§=¡=Ñ0°$·-±-È[ÐbmÐqrÑbrôˆDŒMô Ÿ)™) D§M¡M°6×3DÑ3DÐRSÔTˆ�r'   c                 ó:   — | j                  | j                  «       y r*   rn   rq   s    r&   rr   zUperNetFCNHead.init_weights  rs   r'   c                 ó  — t        |t        j                  «      rm|j                  j                  j                  d| j                  j                  ¬«       |j                  �%|j                  j                  j                  «        y y y ru   rx   r   s     r&   rp   zUperNetFCNHead._init_weights  r�   r'   rŠ   c                 óÐ   — || j                      }| j                  |«      }| j                  r(| j                  t	        j
                  ||gd¬«      «      }| j                  |«      }|S )Nr   rƒ   )r•   rž   rœ   r    r4   r†   rc   )r$   rŠ   Úhidden_statesr+   s       r&   r,   zUperNetFCNHead.forward  sX   € à-¨d¯m©mÑ<ˆØ—‘˜MÓ*ˆØ×ÒØ—]‘]¤5§9¡9¨m¸VÐ-DÈ!Ô#LÓMˆFØ—‘ Ó(ˆØˆr'   )rP   r	   r   )r-   r.   r/   r0   r1   r   r   r   rr   rp   r4   r5   r,   r6   r7   s   @r&   r”   r”   Ù   sv   ø„ ñð  hiñ"UØ #ð"UØ69ð"UØINÈsÐTYÐZ]Ð_bÐZbÑTcÐOcÑIdð"Uà	õ"UòH'ò)ð¨U¯\©\ð ¸e¿l¹l÷ r'   r”   c                   ó(   — e Zd ZdZeZdZg Zd„ Zd„ Z	y)ÚUperNetPreTrainedModelz†
    An abstract class to handle weights initialization and a simple interface for downloading and loading pretrained
    models.
    Úpixel_valuesc                 óÜ   — t        |t        «      r\|j                  j                  «        |j                  j                  «        |j
                  �|j
                  j                  «        y y y r*   )ry   r§   Úbackbonerr   Údecode_headÚauxiliary_headr   s     r&   rp   z$UperNetPreTrainedModel._init_weights*  sW   € Ü�fÔ4Ô5Ø�O‰O×(Ñ(Ô*Ø×Ñ×+Ñ+Ô-Ø×$Ñ$Ð0Ø×%Ñ%×2Ñ2Õ4ð 1ð 6r'   c                 óº   — | j                   j                  «        | j                  j                  «        | j                  �| j                  j                  «        yy)zInitialize the weightsN)rª   rr   r«   r¬   rq   s    r&   rr   z#UperNetPreTrainedModel.init_weights1  sG   € à�‰×"Ñ"Ô$Ø×Ñ×%Ñ%Ô'Ø×ÑÐ*Ø×Ñ×,Ñ,Õ.ð +r'   N)
r-   r.   r/   r0   r   Úconfig_classÚmain_input_nameÚ_no_split_modulesrp   rr   © r'   r&   r§   r§      s#   „ ñð
 !€LØ$€OØÐò5ó/r'   r§   aI  
    Parameters:
    This model is a PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) sub-class. Use
    it as a regular PyTorch Module and refer to the PyTorch documentation for all matter related to general usage and
    behavior.
        config ([`UperNetConfig`]): Model configuration class with all the parameters of the model.
            Initializing with a config file does not load the weights associated with the model, only the
            configuration. Check out the [`~PreTrainedModel.from_pretrained`] method to load the model weights.
ax  
    Args:
        pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`):
            Pixel values. Padding will be ignored by default should you provide it. Pixel values can be obtained using
            [`AutoImageProcessor`]. See [`SegformerImageProcessor.__call__`] for details.
        output_attentions (`bool`, *optional*):
            Whether or not to return the attentions tensors of all attention layers in case the backbone has them. See
            `attentions` under returned tensors for more detail.
        output_hidden_states (`bool`, *optional*):
            Whether or not to return the hidden states of all layers of the backbone. See `hidden_states` under
            returned tensors for more detail.
        return_dict (`bool`, *optional*):
            Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple.
zMUperNet framework leveraging any vision backbone e.g. for ADE20k, CityScapes.c                   óè   ‡ — e Zd Zˆ fd„Z eej                  d«      «       eee	¬«      	 	 	 	 	 dde
ej                     de
e   de
e   de
ej                     de
e   d	eeef   fd
„«       «       Zˆ xZS )ÚUperNetForSemanticSegmentationc                 óì   •— t         ‰| �  |«       t        |«      | _        t	        || j                  j
                  ¬«      | _        |j                  rt        |«      nd | _	        | j                  «        y )N)r   )r   r   r   rª   r\   r;   r«   Úuse_auxiliary_headr”   r¬   Ú	post_init)r$   r`   r%   s     €r&   r   z'UperNetForSemanticSegmentation.__init__X  s[   ø€ Ü‰Ñ˜Ô ä% fÓ-ˆŒô ' v¸4¿=¹=×;QÑ;QÔRˆÔØ8>×8QÒ8Qœn¨VÔ4ÐW[ˆÔð 	�‰Õr'   zbatch_size, sequence_length)Úoutput_typer®   r¨   Úoutput_attentionsÚoutput_hidden_statesÚlabelsÚreturn_dictr   c                 óŽ  — |�$| j                   j                  dk(  rt        d«      ‚|�|n| j                   j                  }|�|n| j                   j                  }|�|n| j                   j
                  }| j                  j                  |||¬«      }|j                  }| j                  |«      }t        j                  j                  ||j                  dd dd¬«      }d}	| j                  �A| j                  |«      }	t        j                  j                  |	|j                  dd dd¬«      }	d}
|�Pt        | j                   j                   ¬	«      } |||«      }
|	�% ||	|«      }|
| j                   j"                  |z  z  }
|s|r
|f|dd z   }n	|f|dd z   }|
�|
f|z   S |S t%        |
||j&                  |j(                  ¬
«      S )aÚ  
        labels (`torch.LongTensor` of shape `(batch_size, height, width)`, *optional*):
            Ground truth semantic segmentation maps for computing the loss. Indices should be in `[0, ...,
            config.num_labels - 1]`. If `config.num_labels > 1`, a classification loss is computed (Cross-Entropy).

        Returns:

        Examples:
        ```python
        >>> from transformers import AutoImageProcessor, UperNetForSemanticSegmentation
        >>> from PIL import Image
        >>> from huggingface_hub import hf_hub_download

        >>> image_processor = AutoImageProcessor.from_pretrained("openmmlab/upernet-convnext-tiny")
        >>> model = UperNetForSemanticSegmentation.from_pretrained("openmmlab/upernet-convnext-tiny")

        >>> filepath = hf_hub_download(
        ...     repo_id="hf-internal-testing/fixtures_ade20k", filename="ADE_val_00000001.jpg", repo_type="dataset"
        ... )
        >>> image = Image.open(filepath).convert("RGB")

        >>> inputs = image_processor(images=image, return_tensors="pt")

        >>> outputs = model(**inputs)

        >>> logits = outputs.logits  # shape (batch_size, num_labels, height, width)
        >>> list(logits.shape)
        [1, 150, 512, 512]
        ```Nr   z/The number of labels should be greater than one)r¹   r¸   rP   rQ   FrR   )Úignore_index)ÚlossÚlogitsr¥   Ú
attentions)r`   rb   Ú
ValueErrorÚuse_return_dictr¹   r¸   rª   Úforward_with_filtered_kwargsÚfeature_mapsr«   r   rU   rV   r�   r¬   r   Úloss_ignore_indexÚauxiliary_loss_weightr
   r¥   rÀ   )r$   r¨   r¸   r¹   rº   r»   ÚoutputsÚfeaturesr¿   Úauxiliary_logitsr¾   Úloss_fctÚauxiliary_lossr+   s                 r&   r,   z&UperNetForSemanticSegmentation.forwardd  sô  € ðN Ð $§+¡+×"8Ñ"8¸AÒ"=ÜÐNÓOÐOà%0Ð%<‘kÀ$Ç+Á+×B]ÑB]ˆà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð 2CÐ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà—-‘-×<Ñ<ØÐ/CÐWhð =ó 
ˆð ×'Ñ'ˆà×!Ñ! (Ó+ˆÜ—‘×*Ñ*¨6¸×8JÑ8JÈ1È2Ð8NÐU_ÐotÐ*ÓuˆàÐØ×ÑÐ*Ø#×2Ñ2°8Ó<ÐÜ!Ÿ}™}×8Ñ8Ø  |×'9Ñ'9¸!¸"Ð'=ÀJÐ^cð  9ó  Ðð ˆØÐä'°T·[±[×5RÑ5RÔSˆHÙ˜F FÓ+ˆDØÐ+Ù!)Ð*:¸FÓ!C�Ø˜Ÿ™×9Ñ9¸NÑJÑJ�áÙ#Ø ˜ W¨Q¨R [Ñ0‘à ˜ W¨Q¨R [Ñ0�Ø)-Ð)9�T�G˜fÑ$ÐE¸vÐEä&ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r'   )NNNNN)r-   r.   r/   r   r   ÚUPERNET_INPUTS_DOCSTRINGÚformatr   r
   Ú_CONFIG_FOR_DOCr   r4   r5   r3   r   Útupler,   r6   r7   s   @r&   r³   r³   S  s½   ø„ ô

ñ +Ð+C×+JÑ+JÐKhÓ+iÓjÙÐ+BÐQ`Ôað 04Ø,0Ø/3Ø)-Ø&*ñR
à˜uŸ|™|Ñ,ðR
ð $ D™>ðR
ð ' t™nð	R
ð
 ˜Ÿ™Ñ&ðR
ð ˜d‘^ðR
ð 
ˆuÐ-Ð-Ñ	.òR
ó bó kôR
r'   r³   )"r0   Útypingr   r   r   r   r4   r   Útorch.nnr   Úmodeling_outputsr
   Úmodeling_utilsr   Úutilsr   r   r   Úutils.backbone_utilsr   Úconfiguration_upernetr   rÎ   ÚModuler   r9   rG   r\   r”   r§   ÚUPERNET_START_DOCSTRINGrÌ   r³   Ú__all__r±   r'   r&   ú<module>rÚ      sß   ðñ yç /Ó /ã Ý Ý %å 7Ý -ß kÑ kÝ 1Ý 0ð "€ô ˜Ÿ	™	ô  ôF §¡ô ô"# "§)¡)ô #ôLZ�"—)‘)ô ZôzD�R—Y‘Yô DôN/˜_ô /ð2Ð ðÐ ñ  ØWØóôa
Ð%;ó a
ó	ða
ðH ,Ð-EÐ
F�r'   