§
    Þ˜ºh0E  ã                   óZ  — d Z ddlZddlZddlmZ ddlmZmZmZ erddl	m
Z
  G d„ dej        ¦  «        Zd	eee                  d
eee                  deee                  fd„Zd	eee                  d
eeee         ee         f                  dee         fd„Zd	eee                  d
eeee         ee         f                  dee         deee         ee         f         fd„Z G d„ d¦  «        Z G d„ d¦  «        Zd„ Zdededee         deeedf                  dee         f
d„ZdS )zACollection of utils to be used by backbones and their components.é    N)ÚIterable)ÚTYPE_CHECKINGÚOptionalÚUnioné   )ÚPretrainedConfigc                   ó   — e Zd ZdZdZdS )ÚBackboneTypeÚtimmÚtransformersN)Ú__name__Ú
__module__Ú__qualname__ÚTIMMÚTRANSFORMERS© ó    úi/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/transformers/utils/backbone_utils.pyr
   r
      s   € € € € € Ø€DØ!€L€L€Lr   r
   Úout_featuresÚout_indicesÚstage_namesc                 óà  ‡ ‡— ‰€t          d¦  «        ‚‰ �Ít          ‰ t          f¦  «        st          dt          ‰ ¦  «        › �¦  «        ‚t	          ˆfd„‰ D ¦   «         ¦  «        rt          d‰› d‰ › �¦  «        ‚t          ‰ ¦  «        t          t          ‰ ¦  «        ¦  «        k    rt          d‰ › �¦  «        ‚‰ ˆ fd„‰D ¦   «         x}k    rt          d	|› d‰ › �¦  «        ‚|��0t          |t          ¦  «        st          d
t          |¦  «        › �¦  «        ‚t          ˆfd„|D ¦   «         ¦  «        }t	          ˆfd„|D ¦   «         ¦  «        rt          d‰› d|› �¦  «        ‚t          |¦  «        t          t          |¦  «        ¦  «        k    r%d|› �}|||k    rd|› d�ndz  }t          |¦  «        ‚|t          t          |¦  «        ¦  «        k    r?d„ t          t          ||¦  «        d„ ¬¦  «        D ¦   «         }t          d|› d|› �¦  «        ‚‰ �R|�Rt          ‰ ¦  «        t          |¦  «        k    rt          d¦  «        ‚‰ ˆfd„|D ¦   «         k    rt          d¦  «        ‚dS dS dS )zW
    Verify that out_indices and out_features are valid for the given stage_names.
    Nz2Stage_names must be set for transformers backbonesz out_features must be a list got c              3   ó    •K  — | ]}|‰vV — Œ	d S ©Nr   )Ú.0Úfeatr   s     €r   ú	<genexpr>z2verify_out_features_out_indices.<locals>.<genexpr>,   s(   øè è € Ð@Ð@¨4ˆt˜;Ð&Ð@Ð@Ð@Ð@Ð@Ð@r   z.out_features must be a subset of stage_names: z got z2out_features must not contain any duplicates, got c                 ó   •— g | ]}|‰v ¯|‘Œ	S r   r   )r   r   r   s     €r   ú
<listcomp>z3verify_out_features_out_indices.<locals>.<listcomp>0   s$   ø€ Ð,bÐ,bÐ,b°dÈTÐUaÐMaÐMa¨TÐMaÐMaÐMar   z@out_features must be in the same order as stage_names, expected z out_indices must be a list, got c              3   óL   •K  — | ]}|d k     r|t          ‰¦  «        z  n|V — ŒdS )r   N©Úlen©r   Úidxr   s     €r   r   z2verify_out_features_out_indices.<locals>.<genexpr>9   s>   øè è € Ð cÐ cÐPS¸3Àº7¸7 ¥s¨;Ñ'7Ô'7Ñ!7Ð!7ÈÐ cÐ cÐ cÐ cÐ cÐ cr   c              3   óX   •K  — | ]$}|t          t          ‰¦  «        ¦  «        v¯ |V — Œ%d S r   )Úranger"   r#   s     €r   r   z2verify_out_features_out_indices.<locals>.<genexpr>:   s=   øè è € ÐUÐU�s°#½UÅ3À{ÑCSÔCSÑ=TÔ=TÐ2TÐ2TˆsÐ2TÐ2TÐ2TÐ2TÐUÐUr   z2out_indices must be valid indices for stage_names z, got z1out_indices must not contain any duplicates, got z(equivalent to z))Ú c                 ó   — g | ]\  }}|‘ŒS r   r   )r   Ú_r$   s      r   r   z3verify_out_features_out_indices.<locals>.<listcomp>A   s   € ÐpÐpÐp¡v q¨#˜sÐpÐpÐpr   c                 ó   — | d         S )Nr   r   )Úxs    r   ú<lambda>z1verify_out_features_out_indices.<locals>.<lambda>A   s   € ÐjkÐlmÔjn€ r   )Úkeyz?out_indices must be in the same order as stage_names, expected zHout_features and out_indices should have the same length if both are setc                 ó    •— g | ]
}‰|         ‘ŒS r   r   r#   s     €r   r   z3verify_out_features_out_indices.<locals>.<listcomp>I   s   ø€ ÐDÐDÐD°˜K¨Ô,ÐDÐDÐDr   zQout_features and out_indices should correspond to the same stages if both are set)
Ú
ValueErrorÚ
isinstanceÚlistÚtypeÚanyr"   ÚsetÚtupleÚsortedÚzip)r   r   r   Úsorted_featsÚpositive_indicesÚmsgÚsorted_negatives   ` `    r   Úverify_out_features_out_indicesr<       s  øø€ ð ÐÝÐMÑNÔNÐNàÐÝ˜,­¨Ñ0Ô0ð 	VÝÐTÅÀ\Ñ@RÔ@RÐTÐTÑUÔUÐUÝÐ@Ð@Ð@Ð@°<Ð@Ñ@Ô@Ñ@Ô@ð 	pÝÐnÈkÐnÐnÐ`lÐnÐnÑoÔoÐoÝˆ|ÑÔ¥¥C¨Ñ$5Ô$5Ñ 6Ô 6Ò6Ð6ÝÐ`ÐR^Ð`Ð`ÑaÔaÐaØÐ,bÐ,bÐ,bÐ,b¸kÐ,bÑ,bÔ,bÐb˜LÒcÐcÝØtÐS_ÐtÐtÐfrÐtÐtñô ð ð ÑÝ˜+¥tÑ,Ô,ð 	UÝÐSÅÀ[Ñ@QÔ@QÐSÐSÑTÔTÐTå Ð cÐ cÐ cÐ cÐWbÐ cÑ cÔ cÑcÔcÐÝÐUÐUÐUÐUÐ.ÐUÑUÔUÑUÔUð 	tÝÐrÐR]ÐrÐrÐepÐrÐrÑsÔsÐsÝÐÑ Ô ¥C­Ð,<Ñ(=Ô(=Ñ$>Ô$>Ò>Ð>ØSÀkÐSÐSˆCØÐ=MÐQ\Ò=\Ð=\Ð9Ð%5Ð9Ð9Ð9Ð9ÐbdÑdˆCÝ˜S‘/”/Ð!Ø�u¥VÐ,<Ñ%=Ô%=Ñ>Ô>Ò>Ð>ØpÐpµ½Ð<LÈkÑ8ZÔ8ZÐ`nÐ`nÐ1oÑ1oÔ1oÐpÑpÔpˆOÝØuÐRaÐuÐuÐhsÐuÐuñô ð ð Ð KÐ$;Ýˆ|ÑÔ¥ KÑ 0Ô 0Ò0Ð0ÝÐgÑhÔhÐhØÐDÐDÐDÐD¸ÐDÑDÔDÒDÐDÝÐpÑqÔqÐqð	  ÐÐ$;Ð$;ð EÐDr   c                 ó˜   ‡— |€| €t          ‰¦  «        dz
  g}‰d         g} n%|€| �ˆfd„| D ¦   «         }n| €|�ˆfd„|D ¦   «         } | |fS )a‡  
    Finds the corresponding `out_features` and `out_indices` for the given `stage_names`.

    The logic is as follows:
        - `out_features` not set, `out_indices` set: `out_features` is set to the `out_features` corresponding to the
        `out_indices`.
        - `out_indices` not set, `out_features` set: `out_indices` is set to the `out_indices` corresponding to the
        `out_features`.
        - `out_indices` and `out_features` not set: `out_indices` and `out_features` are set to the last stage.
        - `out_indices` and `out_features` set: input `out_indices` and `out_features` are returned.

    Args:
        out_features (`list[str]`): The names of the features for the backbone to output.
        out_indices (`list[int]` or `tuple[int]`): The indices of the features for the backbone to output.
        stage_names (`list[str]`): The names of the stages of the backbone.
    Né   éÿÿÿÿc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   )Úindex)r   Úlayerr   s     €r   r   z9_align_output_features_output_indices.<locals>.<listcomp>f   s'   ø€ ÐJÐJÐJ°E�{×(Ò(¨Ñ/Ô/ÐJÐJÐJr   c                 ó    •— g | ]
}‰|         ‘ŒS r   r   r#   s     €r   r   z9_align_output_features_output_indices.<locals>.<listcomp>h   s   ø€ Ð@Ð@Ð@¨S˜ CÔ(Ð@Ð@Ð@r   r!   ©r   r   r   s     `r   Ú%_align_output_features_output_indicesrE   M   sˆ   ø€ ð* Ð˜|Ð3Ý˜;Ñ'Ô'¨!Ñ+Ð,ˆØ# BœÐ(ˆˆØ	Ð	 Ð!9ØJÐJÐJÐJ¸\ÐJÑJÔJˆˆØ	Ð	 +Ð"9Ø@Ð@Ð@Ð@°KÐ@Ñ@Ô@ˆØ˜Ð$Ð$r   Úreturnc                 ó¢   — |�t          |¦  «        nd}t          | ||¬¦  «         t          | ||¬¦  «        \  }}t          |||¬¦  «         ||fS )a`  
    Get the `out_features` and `out_indices` so that they are aligned.

    The logic is as follows:
        - `out_features` not set, `out_indices` set: `out_features` is set to the `out_features` corresponding to the
        `out_indices`.
        - `out_indices` not set, `out_features` set: `out_indices` is set to the `out_indices` corresponding to the
        `out_features`.
        - `out_indices` and `out_features` not set: `out_indices` and `out_features` are set to the last stage.
        - `out_indices` and `out_features` set: they are verified to be aligned.

    Args:
        out_features (`list[str]`): The names of the features for the backbone to output.
        out_indices (`list[int]` or `tuple[int]`): The indices of the features for the backbone to output.
        stage_names (`list[str]`): The names of the stages of the backbone.
    NrD   )r1   r<   rE   )r   r   r   Úoutput_featuresÚoutput_indicess        r   Ú*get_aligned_output_features_output_indicesrJ   l   st   € ð* (3Ð'>•$�{Ñ#Ô#Ð#ÀD€Kå#°È;ÐdoÐpÑpÔpÐpÝ&KØ!¨{Èð'ñ 'ô 'Ñ#€O�^õ $°ÈnÐjuÐvÑvÔvÐvØ˜NÐ*Ð*r   c                   ó~  ‡ — e Zd ZU dZee         ed<   dZeed<   dd„Z	dd„Z
dd„Zed	„ ¦   «         Zej        d
ee         fd„¦   «         Zed„ ¦   «         Zej        deee         ee         f         fd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Z	 	 	 ddee         dee         dee         fd„Zˆ fd„Zˆ xZS )ÚBackboneMixinNÚbackbone_typeTÚhas_attentionsrF   c                 óŠ  — t          | dd¦  «        €t          d¦  «        ‚d„ | j        j        j        D ¦   «         | _        d„ | j        j        j        D ¦   «         | _        t          | j        j        j        ¦  «        }| j        j         	                    ¦   «         }t          ||| j        ¬¦  «         ||c| _        | _        dS )zo
        Initialize the backbone model from timm The backbone must already be loaded to self._backbone
        Ú	_backboneNz=self._backbone must be set before calling _init_timm_backbonec                 ó   — g | ]
}|d          ‘ŒS )Úmoduler   ©r   Ústages     r   r   z5BackboneMixin._init_timm_backbone.<locals>.<listcomp>�   s   € ÐZÐZÐZ°˜E (œOÐZÐZÐZr   c                 ó   — g | ]
}|d          ‘ŒS )Únum_chsr   rS   s     r   r   z5BackboneMixin._init_timm_backbone.<locals>.<listcomp>ž   s   € Ð\Ð\Ð\°%˜U 9Ô-Ð\Ð\Ð\r   rD   )Úgetattrr/   rP   Úfeature_infoÚinfor   Únum_featuresr1   r   Úmodule_namer<   Ú_out_featuresÚ_out_indices)ÚselfÚconfigr   r   s       r   Ú_init_timm_backbonez!BackboneMixin._init_timm_backbone“   sÎ   € õ �4˜ dÑ+Ô+Ð3ÝÐ\Ñ]Ô]Ð]ð
 [ÐZ¸¼Ô9TÔ9YÐZÑZÔZˆÔØ\Ð\¸4¼>Ô;VÔ;[Ð\Ñ\Ô\ˆÔõ ˜4œ>Ô6ÔBÑCÔCˆØ”~Ô2×>Ò>Ñ@Ô@ˆõ 	(Ø%°;ÈDÔL\ð	
ñ 	
ô 	
ð 	
ð 1=¸kÐ-ˆÔ˜DÔ-Ð-Ð-r   c                 óÄ   — t          |d¦  «        }t          |dd ¦  «        }t          |dd ¦  «        }|| _        t          |||¬¦  «        \  | _        | _        d | _        d S )Nr   r   r   rD   )rW   r   rJ   r\   r]   rZ   )r^   r_   r   r   r   s        r   Ú_init_transformers_backbonez)BackboneMixin._init_transformers_backbone«   sq   € Ý˜f mÑ4Ô4ˆÝ˜v ~°tÑ<Ô<ˆÝ˜f m°TÑ:Ô:ˆà&ˆÔÝ0ZØ%°;ÈKð1
ñ 1
ô 1
Ñ-ˆÔ˜DÔ-ð !ˆÔÐÐr   c                 ód  — || _         t          |dd¦  «        | _        | j        rt          j        nt          j        | _        | j        t          j        k    r|                      |¦  «         dS | j        t          j        k    r|                      |¦  «         dS t          d| j        › d�¦  «        ‚)z¬
        Method to initialize the backbone. This method is called by the constructor of the base class after the
        pretrained model weights have been loaded.
        Úuse_timm_backboneFzbackbone_type z not supported.N)
r_   rW   rd   r
   r   r   rM   r`   rb   r/   )r^   r_   s     r   Ú_init_backbonezBackboneMixin._init_backbone·   s®   € ð
 ˆŒå!(¨Ð1DÀeÑ!LÔ!LˆÔØ26Ô2HÐg�\Ô.Ð.ÍlÔNgˆÔàÔ¥Ô!2Ò2Ð2Ø×$Ò$ VÑ,Ô,Ð,Ð,Ð,ØÔ¥<Ô#<Ò<Ð<Ø×,Ò,¨VÑ4Ô4Ð4Ð4Ð4åÐQ¨dÔ.@ÐQÐQÐQÑRÔRÐRr   c                 ó   — | j         S r   ©r\   ©r^   s    r   r   zBackboneMixin.out_featuresÈ   ó   € àÔ!Ð!r   r   c                 óN   — t          |d| j        ¬¦  «        \  | _        | _        dS ©z€
        Set the out_features attribute. This will also update the out_indices attribute to match the new out_features.
        NrD   ©rJ   r   r\   r]   ©r^   r   s     r   r   zBackboneMixin.out_featuresÌ   ó4   € õ
 1[Ø%°4ÀTÔEUð1
ñ 1
ô 1
Ñ-ˆÔ˜DÔ-Ð-Ð-r   c                 ó   — | j         S r   ©r]   rh   s    r   r   zBackboneMixin.out_indicesÕ   ó   € àÔ Ð r   r   c                 óN   — t          d|| j        ¬¦  «        \  | _        | _        dS ©z
        Set the out_indices attribute. This will also update the out_features attribute to match the new out_indices.
        NrD   rl   ©r^   r   s     r   r   zBackboneMixin.out_indicesÙ   ó4   € õ
 1[Ø¨;ÀDÔDTð1
ñ 1
ô 1
Ñ-ˆÔ˜DÔ-Ð-Ð-r   c                 óD   ‡ — ˆ fd„t          ‰ j        ¦  «        D ¦   «         S )Nc                 ó2   •— i | ]\  }}|‰j         |         “ŒS r   )rZ   )r   ÚirT   r^   s      €r   ú
<dictcomp>z6BackboneMixin.out_feature_channels.<locals>.<dictcomp>æ   s'   ø€ ÐXÐXÐX±°°5��tÔ(¨Ô+ÐXÐXÐXr   )Ú	enumerater   rh   s   `r   Úout_feature_channelsz"BackboneMixin.out_feature_channelsâ   s+   ø€ ð YÐXÐXÐX½IÀdÔFVÑ<WÔ<WÐXÑXÔXÐXr   c                 ó*   ‡ — ˆ fd„‰ j         D ¦   «         S )Nc                 ó*   •— g | ]}‰j         |         ‘ŒS r   )r{   )r   Únamer^   s     €r   r   z*BackboneMixin.channels.<locals>.<listcomp>ê   s!   ø€ ÐNÐNÐN°D�Ô)¨$Ô/ÐNÐNÐNr   )r   rh   s   `r   ÚchannelszBackboneMixin.channelsè   s    ø€ àNÐNÐNÐN¸DÔ<MÐNÑNÔNÐNr   c                 ó  ‡— | j         s|                     dd ¦  «         | j        t          j        k    rKt          t          j        | j        ¦  «        j	        ¦  «        Šˆfd„| 
                    ¦   «         D ¦   «         } | |i |¤ŽS )NÚoutput_attentionsc                 ó$   •— i | ]\  }}|‰v ¯	||“ŒS r   r   )r   ÚkÚvÚ	signatures      €r   ry   z>BackboneMixin.forward_with_filtered_kwargs.<locals>.<dictcomp>ñ   s$   ø€ ÐHÐHÐH™t˜q !¸¸i¸¸�a˜¸¸¸r   )rN   ÚpoprM   r
   r   ÚdictÚinspectr…   ÚforwardÚ
parametersÚitems)r^   ÚargsÚkwargsr…   s      @r   Úforward_with_filtered_kwargsz*BackboneMixin.forward_with_filtered_kwargsì   s‡   ø€ ØÔ"ð 	2Ø�JŠJÐ*¨DÑ1Ô1Ð1ØÔ¥Ô!2Ò2Ð2Ý�WÔ.¨t¬|Ñ<Ô<ÔGÑHÔHˆIØHÐHÐHÐH v§|¢|¡~¤~ÐHÑHÔHˆFØˆt�TÐ$˜VÐ$Ð$Ð$r   Úoutput_hidden_statesr�   Úreturn_dictc                 ó    — t          d¦  «        ‚)Nz7This method should be implemented by the derived class.)ÚNotImplementedError)r^   Úpixel_valuesr�   r�   r�   s        r   r‰   zBackboneMixin.forwardô   s   € õ "Ð"[Ñ\Ô\Ð\r   c                 ó¨   •— t          ¦   «                              ¦   «         }|                     d¦  «        |d<   |                     d¦  «        |d<   |S ©z¿
        Serializes this instance to a Python dictionary. Override the default `to_dict()` from `PretrainedConfig` to
        include the `out_features` and `out_indices` attributes.
        r\   r   r]   r   ©ÚsuperÚto_dictr†   ©r^   ÚoutputÚ	__class__s     €r   r˜   zBackboneMixin.to_dictý   óI   ø€ õ
 ‘”—’Ñ"Ô"ˆØ!'§¢¨OÑ!<Ô!<ˆˆ~ÑØ &§
¢
¨>Ñ :Ô :ˆˆ}ÑØˆr   )rF   N)NNN)r   r   r   rM   r   r
   Ú__annotations__rN   Úboolr`   rb   re   Úpropertyr   Úsetterr1   Ústrr   r   r5   Úintr{   r   rŽ   r‰   r˜   Ú__classcell__©r›   s   @r   rL   rL   Œ   sè  ø€ € € € € € Ø,0€M�8˜LÔ)Ð0Ð0Ñ0ð  €N�DÐÐÑðJð Jð Jð Jð0
!ð 
!ð 
!ð 
!ðSð Sð Sð Sð" ð"ð "ñ „Xð"ð Ôð
¨¨c¬ð 
ð 
ð 
ñ Ôð
ð ð!ð !ñ „Xð!ð Ôð
 u¨U°3¬Z¸¸c¼Ð-BÔ'Cð 
ð 
ð 
ñ Ôð
ð ðYð Yñ „XðYð
 ðOð Oñ „XðOð%ð %ð %ð 04Ø,0Ø&*ð]ð ]ð ' tœnð]ð $ Dœ>ð	]ð
 ˜d”^ð]ð ]ð ]ð ]ðð ð ð ð ð ð ð ð r   rL   c                   óÎ   ‡ — e Zd ZdZed„ ¦   «         Zej        dee         fd„¦   «         Zed„ ¦   «         Z	e	j        de
ee         ee         f         fd„¦   «         Z	ˆ fd„Zˆ xZS )	ÚBackboneConfigMixinzv
    A Mixin to support handling the `out_features` and `out_indices` attributes for the backbone configurations.
    c                 ó   — | j         S r   rg   rh   s    r   r   z BackboneConfigMixin.out_features  ri   r   r   c                 óN   — t          |d| j        ¬¦  «        \  | _        | _        dS rk   rl   rm   s     r   r   z BackboneConfigMixin.out_features  rn   r   c                 ó   — | j         S r   rp   rh   s    r   r   zBackboneConfigMixin.out_indices  rq   r   r   c                 óN   — t          d|| j        ¬¦  «        \  | _        | _        dS rs   rl   rt   s     r   r   zBackboneConfigMixin.out_indices  ru   r   c                 ó¨   •— t          ¦   «                              ¦   «         }|                     d¦  «        |d<   |                     d¦  «        |d<   |S r•   r–   r™   s     €r   r˜   zBackboneConfigMixin.to_dict'  rœ   r   )r   r   r   Ú__doc__rŸ   r   r    r1   r¡   r   r   r5   r¢   r˜   r£   r¤   s   @r   r¦   r¦     sä   ø€ € € € € ðð ð ð"ð "ñ „Xð"ð Ôð
¨¨c¬ð 
ð 
ð 
ñ Ôð
ð ð!ð !ñ „Xð!ð Ôð
 u¨U°3¬Z¸¸c¼Ð-BÔ'Cð 
ð 
ð 
ñ Ôð
ðð ð ð ð ð ð ð ð r   r¦   c                 óF  — ddl m}m} t          | dd¦  «        }t          | dd¦  «        }t          | dd¦  «        }t          | dd¦  «        }t          | dd¦  «        }|€i n|}|r|�t	          d	¦  «        ‚|�|�|�t	          d
¦  «        ‚|€|€|€ |j        dd| i|¤ŽS |r#|€t	          d¦  «        ‚ |j        |f||dœ|¤Ž}n[|r |€t	          d¦  «        ‚ |j        |fi |¤Ž}n9|€|€t	          d¦  «        ‚|€ |j        |fi |¤Ž}|                     |¬¦  «        }|S )a>  
    Loads the backbone model from a config object.

    If the config is from the backbone model itself, then we return a backbone model with randomly initialized
    weights.

    If the config is from the parent model of the backbone model itself, then we load the pretrained backbone weights
    if specified.
    r   )ÚAutoBackboneÚ
AutoConfigÚbackbone_configNrd   Úuse_pretrained_backboneÚbackboneÚbackbone_kwargsú?You can't specify both `backbone_kwargs` and `backbone_config`.z>Cannot specify both config.backbone_config and config.backboner_   z8config.backbone must be set if use_timm_backbone is True)rd   r±   z>config.backbone must be set if use_pretrained_backbone is Truez<Either config.backbone_config or config.backbone must be set)r_   r   )r   r®   r¯   rW   r/   Úfrom_configÚfrom_pretrained)	r_   r®   r¯   r°   rd   r±   Úbackbone_checkpointr³   r²   s	            r   Úload_backboner¸   2  sâ  € ð 6Ð5Ð5Ð5Ð5Ð5Ð5Ð5å˜fÐ&7¸Ñ>Ô>€OÝ Ð(;¸TÑBÔBÐÝ% fÐ.GÈÑNÔNÐÝ! &¨*°dÑ;Ô;ÐÝ˜fÐ&7¸Ñ>Ô>€OØ+Ð3�b�b¸€Oàð \˜?Ð6ÝÐZÑ[Ô[Ð[ð Ð"Ð':Ð'FÐKbÐKnÝÐYÑZÔZÐZð ÐÐ#4Ð#<ÐATÐA\Ø'ˆ|Ô'ÐIÐI¨vÐI¸ÐIÐIÐIð ð DØÐ&ÝÐWÑXÔXÐXð 0�<Ô/Øð
à/Ø$;ð
ð 
ð ð	
ð 
ˆˆð 
!ð 	DØÐ&ÝÐ]Ñ^Ô^Ð^Ø/�<Ô/Ð0CÐWÐWÀÐWÐWˆˆàÐ"Ð':Ð'BÝÐ[Ñ\Ô\Ð\ØÐ"Ø8˜jÔ8Ð9LÐ`Ð`ÐP_Ð`Ð`ˆOØ×+Ò+°?Ð+ÑCÔCˆØ€Or   rd   r±   r²   r°   r   r³   c                 ó„   — |�|�t          d¦  «        ‚|�| rt          d¦  «        ‚|�|r|�t          d¦  «        ‚dS dS dS )zR
    Verify that the config arguments to be passed to load_backbone are valid
    Nz8You can't specify both `backbone` and `backbone_config`.zAYou can't specify both `backbone_config` and `use_timm_backbone`.r´   )r/   )rd   r±   r²   r°   r³   s        r   Ú verify_backbone_config_argumentsrº   j  sl   € ð Ð" xÐ';ÝÐSÑTÔTÐTàÐ"Ð'8Ð"ÝÐ\Ñ]Ô]Ð]àÐ" Ð"¸?Ð;VÝÐZÑ[Ô[Ð[ð #Ð"Ð"Ð"Ð;VÐ;Vr   )r¬   Úenumrˆ   Úcollections.abcr   Útypingr   r   r   Úconfiguration_utilsr   ÚEnumr
   r¡   r¢   r<   r1   r5   rE   rJ   rL   r¦   r¸   rž   r‡   rº   r   r   r   ú<module>rÀ      s„  ðð HÐ Gà €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1ð ð 7Ø6Ð6Ð6Ð6Ð6Ð6ð"ð "ð "ð "ð "�4”9ñ "ô "ð "ð
*rØ˜8 Cœ=Ô)ð*rØ8@ÀÈ#ÄÔ8Oð*rØ^fÐgoÐpsÔgtÔ^uð*rð *rð *rð *rðZ%Ø˜4 œ9Ô%ð%à˜%  S¤	¨5°¬:Ð 5Ô6Ô7ð%ð �c”ð%ð %ð %ð %ð>+Ø˜4 œ9Ô%ð+à˜%  S¤	¨5°¬:Ð 5Ô6Ô7ð+ð �c”ð+ð ˆ4�Œ9�d˜3”iÐÔ ð	+ð +ð +ð +ð@yð yð yð yð yñ yô yð yðx'ð 'ð 'ð 'ð 'ñ 'ô 'ð 'ðT5ð 5ð 5ðp\Øð\à!ð\ð �sŒmð\ð ˜e DÐ*<Ð$<Ô=Ô>ð	\ð
 ˜d”^ð\ð \ð \ð \ð \ð \r   