+
    œ°³jSe  ã                   ó&  € ^ RI Ht ^ RIHt ^ RIHtHtHt ^ RIt	^RI
Ht ^RIHt ^RIHt ^RIHtHtHtHtHtHt ^R	IHt ^R
IHt ^RIHt ^RIHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t( ^RI)H*t*H+t+ ^RI,H-t-H.t.H/t/H0t0H1t1 ^RI2H3t3H4t4H5t5H6t6 ]0! 4       '       d   ^RIH7t7 ].! 4       '       d   ^ RI8t8]/! 4       '       d   ^ RI9H:t; ^RIH<t<H=t= MRt<Rt=]1P|                  ! ]?4      t@]6! RR7       ! R R]4      4       tA]6! RR7       ! R R]4      4       tB]AtCR# )é    )ÚIterable)Ú	lru_cache)ÚAnyÚOptionalÚUnionN)ÚBatchFeature)ÚBaseImageProcessor)Úcenter_crop)Úconvert_to_rgbÚdivide_to_patchesÚget_resize_output_image_sizeÚget_size_with_aspect_ratioÚgroup_images_by_shapeÚreorder_images)Ú	normalize)Úrescale)Úresize)ÚChannelDimensionÚ
ImageInputÚ	ImageTypeÚSizeDictÚget_image_sizeÚ#get_image_size_for_max_height_widthÚget_image_typeÚget_max_height_widthÚinfer_channel_dimension_formatÚis_valid_imageÚload_image_as_tensor)ÚImagesKwargsÚUnpack)Ú
TensorTypeÚis_torch_availableÚis_torchvision_availableÚis_vision_availableÚlogging)Úis_rocm_platformÚis_torchdynamo_compilingÚis_torchvision_greater_or_equalÚrequires)ÚPILImageResampling)Ú
functional)Úpil_torch_interpolation_mappingÚtorch_pil_interpolation_mapping)Úbackendsc                   ól  a a€ ] tR t^Ut oRtV3R lV 3R llt]V3R lR l4       tV3R lR ltR V3R lR	 llt	V3R
 lR lt
R!V3R lR lltR"V3R lR llt]R"V3R lR ll4       tV3R lR ltV3R lR lt]! ^
R7      R#V3R lR ll4       tV3R lR ltV3R lR ltV3R lR ltRtVtV ;t# )$ÚTorchvisionBackendzATorchvision backend for GPU-accelerated batched image processing.c                ó0   <€ V ^8„  d   QhRS[ S[,          /# ©é   Úkwargs©r    r   )ÚformatÚ__classdict__s   "€Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/image_processing_backends.pyÚ__annotate__ÚTorchvisionBackend.__annotate__Y   ó   ø€ ÷ 'ñ '¡©Õ!5ñ 'ó    c                óL   <€ \         SV `  ! R/ VB  V P                  ! R/ VB  R # ©N© ©ÚsuperÚ__init__Ú_set_attributes©Úselfr4   Ú	__class__s   &,€r8   rB   ÚTorchvisionBackend.__init__Y   ó$   ø€ Ü‰ÒÑ"˜6Ò"Ø×ÒÑ&˜vÔ&r<   c                ó    <€ V ^8„  d   QhRS[ /# ©r3   Úreturn©Ústr)r6   r7   s   "€r8   r9   r:   ^   s   ø€ ÷ ñ ™ñ r<   c                ó   € R# )ú2
`str`: The backend used by this image processor.
Útorchvisionr?   ©rE   s   &r8   ÚbackendÚTorchvisionBackend.backend]   s   € ñ
 r<   c                óp   <€ V ^8„  d   QhRS[ S[S[ ,          ,          S[S[S[ ,          ,          ,          /# )r3   Úimage_url_or_urls)rM   Úlist)r6   r7   s   "€r8   r9   r:   d   s,   ø€ ÷ wñ w©c±D¹µI­oÁÁTÉ#ÅYÅÕ.Oñ wr<   c                ó  € \        V\        \        34      '       d!   V Uu. uF  q P                  V4      NK  	  up# \        V\        4      '       d   \        V4      # \        V4      '       d   V# \        R\        V4       24      hu upi )zÛ
Convert a single or a list of URLs / paths into `torch.Tensor` objects.

Already-valid image objects (tensors, numpy arrays, PIL Images) are passed through
unchanged so that callers who pre-load images are unaffected.
z=only a single or a list of entries is supported but got type=)	Ú
isinstancerV   ÚtupleÚfetch_imagesrM   r   r   Ú	TypeErrorÚtype)rE   rU   Úxs   && r8   rZ   ÚTorchvisionBackend.fetch_imagesd   sƒ   € ô Ð'¬$´¨×7Ò7Ù2CÓDÑ2C¨Q×%Ñ% aÖ(Ñ2CÑDÐDÜÐ)¬3×/Ò/Ü'Ð(9Ó:Ð:ÜÐ-×.Ò.Ø$Ð$äÐ[Ô\`ÐarÓ\sÐ[tÐuÓvÐvùò Es   ¡Bc                ó†   <€ V ^8„  d   QhRS[ RS[R,          RS[S[,          R,          RS[R,          RS[S[,          RR	/# )
r3   ÚimageÚdo_convert_rgbNÚinput_data_formatÚdeviceútorch.devicer4   rK   útorch.Tensor)r   ÚboolrM   r   r   r    r   )r6   r7   s   "€r8   r9   r:   t   s`   ø€ ÷ !ñ !áð!ñ ˜t�ð!ñ Ñ!1Õ1°DÕ8ð	!ñ
 ˜Õ(ð!ñ ™Õ&ð!ð 
ñ!r<   c                ó”  € \        V4      pV\        P                  \        P                  \        P                  39  d   \        RV 24      hV'       d   V P                  V4      pV\        P                  8X  d   \        P                  ! V4      pM9V\        P                  8X  d%   \        P                  ! V4      P                  4       pVP                  ^8X  d   VP                  ^ 4      pVf   \        V4      pV\        P                   8X  d"   VP#                  ^^ ^4      P                  4       pVe   VP%                  V4      pV# )z/Process a single image for torchvision backend.úUnsupported input image type )r   r   ÚPILÚTORCHÚNUMPYÚ
ValueErrorr   ÚtvFÚpil_to_tensorÚtorchÚ
from_numpyÚ
contiguousÚndimÚ	unsqueezer   r   ÚLASTÚpermuteÚto)rE   r`   ra   rb   rc   r4   Ú
image_types   &&&&&, r8   Úprocess_imageÚ TorchvisionBackend.process_imaget   sý   € ô $ EÓ*ˆ
ØœiŸm™m¬Y¯_©_¼i¿o¹oÐNÔNÜÐ<¸Z¸LÐIÓJÐJçØ×'Ñ'¨Ó.ˆEàœŸ™Ô&Ü×%Ò% eÓ,‰EØœ9Ÿ?™?Ô*Ü×$Ò$ UÓ+×6Ñ6Ó8ˆEà�:‰:˜Œ?Ø—O‘O AÓ&ˆEàÒ$Ü >¸uÓ EÐàÔ 0× 5Ñ 5Ô5Ø—M‘M ! Q¨Ó*×5Ñ5Ó7ˆEàÒØ—H‘H˜VÓ$ˆEàˆr<   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# ©r3   r`   rK   ©r   )r6   r7   s   "€r8   r9   r:   —   ó   ø€ ÷ %ñ %¡Jð %±:ñ %r<   c                ó   € \        V4      # ©zConvert an image to RGB format.©r   ©rE   r`   s   &&r8   r   Ú!TorchvisionBackend.convert_to_rgb—   ó   € ä˜eÓ$Ð$r<   c                ó²   <€ V ^8„  d   QhRS[ R,          RS[RS[R,          RS[R,          RS[RS[R,          R	S[R,          R
S[S[R,          R3,          /# )r3   Úimagesre   Úpad_sizeÚ
fill_valueNÚpadding_modeÚreturn_maskÚdisable_groupingÚ	is_nestedrK   )re   re   )rV   r   ÚintrM   rf   r   rY   )r6   r7   s   "€r8   r9   r:   ›   s€   ø€ ÷ 0 ñ 0 á�^Õ$ð0 ñ ð0 ñ ˜$•Jð	0 ñ
 ˜D•jð0 ñ ð0 ñ  �+ð0 ñ ˜$•;ð0 ñ 
‰uÐ3Õ4°nÐDÕ	Eñ0 r<   c                ó  € VeM   VP                   '       d   VP                  '       g   \        RV R24      hVP                   VP                  3pM\        V4      p\	        WVR7      w  rš/ p/ pV	P                  4        Fà  w  rÞVP                  RR pV^ ,          V^ ,          ,
          pV^,          V^,          ,
          pV^ 8  g   V^ 8  d   \        RV RV R24      hWò8w  d    ^ ^ VV3p\        P                  ! VVW4R7      pWëV&   V'       g   K•  \        P                  ! V\        P                  R7      R,          p^VR	RV^ ,          1RV^,          13&   VWÍ&   Kâ  	  \        WºVR
7      pV'       d   \        WÊVR
7      pVV3# V# )z5Pad images using Torchvision with batched operations.NúCPad size must contain 'height' and 'width' keys only. Got pad_size=Ú.)rŠ   r‹   zrPadding dimensions are negative. Please make sure that the `pad_size` is larger than the image size. Got pad_size=z, image_size=)Úfillrˆ   ©Údtype.)r‹   éþÿÿÿ).r   ºNNNr”   )ÚheightÚwidthrl   r   r   ÚitemsÚshaperm   Úpadro   Ú
zeros_likeÚint64r   )rE   r…   r†   r‡   rˆ   r‰   rŠ   r‹   r4   Úgrouped_imagesÚgrouped_images_indexÚprocessed_images_groupedÚprocessed_masks_groupedr˜   Ústacked_imagesÚ
image_sizeÚpadding_heightÚpadding_widthÚpaddingÚstacked_masksÚprocessed_imagesÚprocessed_maskss   &&&&&&&&,             r8   r™   ÚTorchvisionBackend.pad›   sž  € ð ÒØ—O—O�O¨¯¯¨Ü Ð#fÐgoÐfpÐpqÐ!rÓsÐsØ Ÿ™¨¯©Ð8‰Hä+¨FÓ3ˆHä/DØÀô0
Ñ,ˆð $&Ð Ø"$ÐØ%3×%9Ñ%9Ö%;Ñ!ˆEØ'×-Ñ-¨b¨cÐ2ˆJØ% a�[¨:°a­=Õ8ˆNØ$ Q�K¨*°Q­-Õ7ˆMØ Ô! ]°QÔ%6Ü ð0Ø08¨z¸ÀzÀlÐRSðUóð ð Ô%Ø˜a °Ð?�Ü!$§¢¨¸ÀzÔ!m�Ø.< UÑ+ç‰{Ü %× 0Ò 0°ÄuÇ{Á{Ô SÐT`Õ a�ØGH�˜c ? Z°¥] ?°O°jÀµm°OÐCÑDØ1>Ð'Ó.ñ# &<ô& *Ð*BÐdmÔnÐßÜ,Ð-DÐfoÔpˆOØ# _Ð4Ð4àÐr<   c          
      ó2   <€ V ^8„  d   QhRRRS[ RRRS[RR/# )r3   r`   re   ÚsizeÚresampleú7PILImageResampling | tvF.InterpolationMode | int | NoneÚ	antialiasrK   )r   rf   )r6   r7   s   "€r8   r9   r:   Í   sE   ø€ ÷ 5]ñ 5]àð5]ñ ð5]ð Lð	5]ñ
 ð5]ð 
ñ5]r<   c                óˆ  € Ve.   \        V\        \        34      '       d   \        V,          pMTpM\        P
                  P                  pV\        P
                  P                  8X  d\   \        R4      '       d   VP                  P                  R8w  d0   \        P                  R4       \        P
                  P                  pVP                  '       dF   VP                  '       d4   \!        VP#                  4       R
R VP                  VP                  4      pMÝVP                  '       d)   \%        VVP                  R\&        P(                  R7      pM£VP*                  '       dF   VP,                  '       d4   \/        VP#                  4       R
R VP*                  VP,                  4      pMLVP0                  '       d,   VP2                  '       d   VP0                  VP2                  3pM\5        RV R24      h\7        4       '       d#   \9        4       '       d   V P;                  WWd4      # \        P<                  ! WWdR	7      # )z"Resize an image using Torchvision.Nz0.27ÚcpuaC  LANCZOS resample requires torchvision >= 0.27 and processing on CPU; it is not supported on CUDA or for torchvision < 0.27. Falling back to BICUBIC which approximates LANCZOS. To match the original model exactly, upgrade torchvision and move the tensors to CPU before resizing, or use a PIL backend image processor instead.F©rª   Údefault_to_squarerb   újSize must contain 'height' and 'width' keys, or 'max_height' and 'max_width', or 'shortest_edge' key. Got r�   ©Úinterpolationr­   r“   )rX   r*   rŒ   r,   rm   ÚInterpolationModeÚBILINEARÚLANCZOSr(   rc   r\   ÚloggerÚwarning_onceÚBICUBICÚshortest_edgeÚlongest_edger   rª   r   r   ÚFIRSTÚ
max_heightÚ	max_widthr   r•   r–   rl   r'   r&   Ú_compile_friendly_resizer   )rE   r`   rª   r«   r­   r4   r´   Únew_sizes   &&&&&,  r8   r   ÚTorchvisionBackend.resizeÍ   sº  € ð ÒÜ˜(Ô%7¼Ð$=×>Ò>Ü ?ÀÕ I‘à (‘ä×1Ñ1×:Ñ:ˆMØœC×1Ñ1×9Ñ9Ô9Ü/°×7Ò7¸5¿<¹<×;LÑ;LÐPUÔ;Uä×ÑðCôô
  ×1Ñ1×9Ñ9ˆMà××Ð $×"3×"3Ð"3Ü1Ø—
‘
“˜R˜SÐ!Ø×"Ñ"Ø×!Ñ!ó‰Hð
 ××ÐÜ3ØØ×'Ñ'Ø"'Ü"2×"8Ñ"8ô	‰Hð �_�_ˆ_ §§ Ü:¸5¿:¹:»<ÈÈÐ;LÈdÏoÉoÐ_c×_mÑ_mÓn‰HØ�[�[ˆ[˜TŸZŸZ˜ZØŸ™ T§Z¡ZÐ0‰HäðØ�6˜ðóð ô $×%Ò%Ô*:×*<Ò*<Ø×0Ñ0°À-Ó[Ð[Ü�zŠz˜%¸Ô\Ð\r<   c          
      óX   <€ V ^8„  d   QhRRRS[ S[S[3,          RS[R,          RS[RR/# )r3   r`   re   rÁ   r´   ztvF.InterpolationModer­   rK   )rY   rŒ   r   rf   )r6   r7   s   "€r8   r9   r:     sI   ø€ ÷ ñ Øðá™™S˜•/ðñ  Ð 7Õ8ðñ ð	ð
 
ñr<   c                ó®  € V P                   \        P                  8X  dž   V P                  4       R,          p \        P
                  ! WW#R7      p V R,          p \        P                  ! V ^ÿ8„  ^ÿV 4      p \        P                  ! V ^ 8  ^ V 4      p V P                  4       P                  \        P                  4      p V # \        P
                  ! WW#R7      p V # )zOA wrapper around tvF.resize for torch.compile compatibility with uint8 tensors.é   r³   )	r’   ro   Úuint8Úfloatrm   r   ÚwhereÚroundrv   )r`   rÁ   r´   r­   s   &&&&r8   rÀ   Ú+TorchvisionBackend._compile_friendly_resize  s¡   € ð �;‰;œ%Ÿ+™+Ô%Ø—K‘K“M CÕ'ˆEÜ—J’J˜u¸mÔaˆEØ˜C•KˆEÜ—K’K ¨¡¨S°%Ó8ˆEÜ—K’K ¨¡	¨1¨eÓ4ˆEØ—K‘K“M×$Ñ$¤U§[¡[Ó1ˆEð ˆô —J’J˜u¸mÔaˆEØˆr<   c                ó(   <€ V ^8„  d   QhRRRS[ RR/# )r3   r`   re   ÚscalerK   )rÇ   )r6   r7   s   "€r8   r9   r:     s)   ø€ ÷ ñ àðñ ðð
 
ñr<   c                ó   € W,          # )z5Rescale an image by a scale factor using Torchvision.r?   ©rE   r`   rÌ   r4   s   &&&,r8   r   ÚTorchvisionBackend.rescale  s   € ð �}Ðr<   c                ón   <€ V ^8„  d   QhRRRS[ S[S[ ,          ,          RS[ S[S[ ,          ,          RR/# )r3   r`   re   ÚmeanÚstdrK   )rÇ   r   )r6   r7   s   "€r8   r9   r:      sE   ø€ ÷ /ñ /àð/ñ ‘h™u•oÕ%ð/ñ ‘X™e•_Õ$ð	/ð 
ñ/r<   c                ó0   € \         P                  ! WV4      # )z%Normalize an image using Torchvision.)rm   r   ©rE   r`   rÑ   rÒ   r4   s   &&&&,r8   r   ÚTorchvisionBackend.normalize   s   € ô �}Š}˜U¨#Ó.Ð.r<   )Úmaxsizec                óØ   <€ V ^8„  d   QhRS[ R,          RS[S[S[,          ,          R,          RS[S[S[,          ,          R,          RS[ R,          RS[R,          RS[R,          R	S[/# )
r3   Údo_normalizeNÚ
image_meanÚ	image_stdÚ
do_rescaleÚrescale_factorrc   rd   rK   )rf   rÇ   rV   r   rY   )r6   r7   s   "€r8   r9   r:   +  s~   ø€ ÷ 1ñ 1á˜T•kð1ñ ™D¡�KÕ'¨$Õ.ð1ñ ™4¡�;Õ&¨Õ-ð	1ñ
 ˜4•Kð1ñ  �ð1ñ ˜Õ(ð1ñ 
ñ1r<   c                óÂ   € V'       dU   V'       dM   \         P                  ! W&R 7      RV,          ,          p\         P                  ! W6R 7      RV,          ,          pRpW#V3# ))rc   g      ð?F)ro   Útensor)rE   rØ   rÙ   rÚ   rÛ   rÜ   rc   s   &&&&&&&r8   Ú!_fuse_mean_std_and_rescale_factorÚ4TorchvisionBackend._fuse_mean_std_and_rescale_factor*  sI   € ÷ Ÿ,äŸš jÔ@ÀCÈ.ÕDXÕYˆJÜŸš YÔ>À#ÈÕBVÕWˆIØˆJØ jÐ0Ð0r<   c                ó€   <€ V ^8„  d   QhRRRS[ RS[RS[ RS[S[S[,          ,          RS[S[S[,          ,          RR/# )	r3   r…   re   rÛ   rÜ   rØ   rÙ   rÚ   rK   )rf   rÇ   rV   )r6   r7   s   "€r8   r9   r:   ;  sc   ø€ ÷ ñ àðñ ðñ ð	ñ
 ðñ ™D¡�KÕ'ðñ ™4¡�;Õ&ðð 
ñr<   c           	     óô   € V P                  VVVVVVP                  R7      w  rVpV'       d3   V P                  VP                  \        P
                  R7      WV4      pV# V'       d   V P                  W4      pV# )zFRescale and normalize images using Torchvision (fused for efficiency).)rØ   rÙ   rÚ   rÛ   rÜ   rc   r‘   )rß   rc   r   rv   ro   Úfloat32r   )rE   r…   rÛ   rÜ   rØ   rÙ   rÚ   s   &&&&&&&r8   Úrescale_and_normalizeÚ(TorchvisionBackend.rescale_and_normalize;  sx   € ð -1×,RÑ,RØ%Ø!ØØ!Ø)Ø—=‘=ð -Só -
Ñ)ˆ
˜z÷ Ø—^‘^ F§I¡I´E·M±M IÓ$BÀJÓZˆFð ˆ÷ Ø—\‘\ &Ó9ˆFàˆr<   c                ó(   <€ V ^8„  d   QhRRRS[ RR/# )r3   r`   re   rª   rK   )r   )r6   r7   s   "€r8   r9   r:   T  s.   ø€ ÷ Mñ MàðMñ ðMð
 
ñMr<   c                ó¨  € VP                   e   VP                  f   \        RVP                  4        24      hVP                  RR w  rEVP                   VP                  rvWu8”  g   Wd8”  d    Wu8”  d   Wu,
          ^,          M^ Wd8”  d   Wd,
          ^,          M^ Wu8”  d   Wu,
          ^,           ^,          M^ Wd8”  d   Wd,
          ^,           ^,          M^ .p\
        P                  ! W^ R7      pVP                  RR w  rEWu8X  d	   Wd8X  d   V# \        WF,
          R,          4      p	\        WW,
          R,          4      p
\
        P                  ! WW¦V4      # )z'Center crop an image using Torchvision.Nú=The size dictionary must have keys 'height' and 'width'. Got )r�   g       @r“   )	r•   r–   rl   Úkeysr˜   rm   r™   rŒ   Úcrop)rE   r`   rª   r4   Úimage_heightÚimage_widthÚcrop_heightÚ
crop_widthÚpadding_ltrbÚcrop_topÚ	crop_lefts   &&&,       r8   r
   ÚTorchvisionBackend.center_cropT  s+  € ð �;‰;Ò $§*¡*Ò"4ÜÐ\Ð]a×]fÑ]fÓ]hÐ\iÐjÓkÐkØ$)§K¡K°°Ð$4Ñ!ˆØ"&§+¡+¨t¯z©z�ZàÔ# {Ô'Aà3=Ô3K�Õ)¨aÖ/ÐQRØ5@Ô5O�Õ+°Ö1ÐUVØ7AÔ7O�Õ)¨AÕ-°!Ö3ÐUVØ9DÔ9S�Õ+¨aÕ/°AÖ5ÐYZð	ˆLô —G’G˜E°aÔ8ˆEØ(-¯©°B°CÐ(8Ñ%ˆLØÔ(¨[Ô-HØ�ä˜Õ2°cÕ9Ó:ˆÜ˜Õ1°SÕ8Ó9ˆ	Ü�xŠx˜¨ÀÓLÐLr<   c                 ó*  <€ V ^8„  d   QhRS[ R,          RS[RS[RRRS[RS[R	S[R
S[RS[RS[S[ S[,          ,          R,          RS[S[ S[,          ,          R,          RS[R,          RS[R,          RS[R,          RS[S[,          R,          RS[/# )r3   r…   re   Ú	do_resizerª   r«   r¬   Údo_center_cropÚ	crop_sizerÛ   rÜ   rØ   rÙ   NrÚ   Údo_padr†   rŠ   Úreturn_tensorsrK   )rV   rf   r   rÇ   rM   r!   r   )r6   r7   s   "€r8   r9   r:   p  sõ   ø€ ÷ -añ -aá�^Õ$ð-añ ð-añ ð	-að
 Lð-añ ð-añ ð-añ ð-añ ð-añ ð-añ ™D¡�KÕ'¨$Õ.ð-añ ™4¡�;Õ&¨Õ-ð-añ �t•ð-añ ˜T•/ð-añ  �+ð-añ  ™jÕ(¨4Õ/ð!-añ$ 
ñ%-ar<   c           	     óÚ  € \        WR7      w  pp/ pVP                  4        F&  w  ppV'       d   V P                  VW4R7      pVVV&   K(  	  \        VV4      p\        VVR7      w  pp/ pVP                  4        F9  w  ppV'       d   V P	                  VV4      pV P                  VWxWšV4      pVVV&   K;  	  \        VV4      pV'       d   V P                  VWÞR7      p\        RV/VR7      # )z=Preprocess using Torchvision backend (fast, GPU-accelerated).)rŠ   ©r`   rª   r«   )r†   rŠ   Úpixel_values©ÚdataÚtensor_type)r   r—   r   r   r
   rä   r™   r   )rE   r…   rô   rª   r«   rõ   rö   rÛ   rÜ   rØ   rÙ   rÚ   r÷   r†   rŠ   rø   r4   rœ   r�   Úresized_images_groupedr˜   r    Úresized_imagesrž   r¦   s   &&&&&&&&&&&&&&&&,        r8   Ú_preprocessÚTorchvisionBackend._preprocessp  s  € ô* 0EÀVÔ/oÑ,ˆÐ,Ø!#ÐØ%3×%9Ñ%9Ö%;Ñ!ˆE�>ßØ!%§¡°>È Ó!`�Ø,:Ð" 5Ó)ñ &<ô (Ð(>Ð@TÓUˆô 0EÀ^ÐfvÔ/wÑ,ˆÐ,Ø#%Ð Ø%3×%9Ñ%9Ö%;Ñ!ˆE�>ßØ!%×!1Ñ!1°.À)Ó!L�à!×7Ñ7Ø 
¸LÐV_óˆNð /=Ð$ UÓ+ñ &<ô *Ð*BÐDXÓYÐçØ#Ÿx™xÐ(8À8˜xÓoÐä .Ð2BÐ!CÐQ_Ô`Ð`r<   r?   )NNN)Nr   ÚconstantFFF)NT)NNNNNN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rB   ÚpropertyrR   rZ   rx   r   r™   r   ÚstaticmethodrÀ   r   r   r   rß   rä   r
   r  Ú__static_attributes__Ú__classdictcell__Ú__classcell__©rF   r7   s   @@r8   r0   r0   U   sÒ   ù‡ € áK÷'ó 'ð ÷ó ð÷wð w÷ !ò !÷F%ð %÷0 ò 0 ÷d5]ò 5]ðn ÷ñ ó ð÷$ð ÷/ð /ñ �rÔ÷1ñ 1ó ð1÷ ð ÷2Mð M÷8-a÷ -að -ar<   r0   c                   ó  a a€ ] tR tRt oRtV3R lV 3R llt]V3R lR l4       tRV3R lR lltV3R	 lR
 lt	RV3R lR llt
RV3R lR lltV3R lR ltV3R lR ltV3R lR ltV3R lR ltV3R lV 3R lltRtVtV ;t# )Ú
PilBackendi   z9PIL/NumPy backend for portable CPU-only image processing.c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r2   r5   )r6   r7   s   "€r8   r9   ÚPilBackend.__annotate__¤  r;   r<   c                óL   <€ \         SV `  ! R/ VB  V P                  ! R/ VB  R # r>   r@   rD   s   &,€r8   rB   ÚPilBackend.__init__¤  rH   r<   c                ó    <€ V ^8„  d   QhRS[ /# rJ   rL   )r6   r7   s   "€r8   r9   r  ©  s   ø€ ÷ ñ ™ñ r<   c                ó   € R# )rO   Úpilr?   rQ   s   &r8   rR   ÚPilBackend.backend¨  s   € ñ
 r<   c          
      óˆ   <€ V ^8„  d   QhRS[ RS[R,          RS[S[,          R,          RS[S[,          RS[P                  /# )r3   r`   ra   Nrb   r4   rK   )r   rf   rM   r   r    r   ÚnpÚndarray)r6   r7   s   "€r8   r9   r  ¯  sU   ø€ ÷ "ñ "áð"ñ ˜t�ð"ñ Ñ!1Õ1°DÕ8ð	"ñ
 ™Õ&ð"ñ 
�‰ñ"r<   c                óÊ  € \        V4      pV\        P                  \        P                  \        P                  39  d   \        RV 24      hV'       d   V P                  V4      pV\        P                  8X  d?   \        P                  ! V4      pVP                  ^8¼  d   Vf   \        P                  MTpM%V\        P                  8X  d   VP                  4       pVP                  ^8X  d   \        P                  ! V^ R7      pVf   \        V4      pV\        P                  8X  d8   \        V\        P                   4      '       d   \        P"                  ! VR4      pV# )z'Process a single image for PIL backend.rh   )Úaxis)r3   r   é   )r   r   ri   rj   rk   rl   r   r  Úarrayrr   r   rt   ÚnumpyÚexpand_dimsr   rX   r  Ú	transpose)rE   r`   ra   rb   r4   rw   s   &&&&, r8   rx   ÚPilBackend.process_image¯  s  € ô $ EÓ*ˆ
ØœiŸm™m¬Y¯_©_¼i¿o¹oÐNÔNÜÐ<¸Z¸LÐIÓJÐJçØ×'Ñ'¨Ó.ˆEàœŸ™Ô&Ü—H’H˜U“OˆEà�z‰z˜QŒØ=NÒ=VÔ$4×$9Ò$9Ð\mÐ!øØœ9Ÿ?™?Ô*Ø—K‘K“MˆEà�:‰:˜Œ?Ü—N’N 5¨qÔ1ˆEàÒ$Ü >¸uÓ EÐàÔ 0× 5Ñ 5Ô5ä˜%¤§¡×,Ò,ÜŸš U¨IÓ6�àˆr<   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# r{   r|   )r6   r7   s   "€r8   r9   r  Ó  r}   r<   c                ó   € \        V4      # r   r€   r�   s   &&r8   r   ÚPilBackend.convert_to_rgbÓ  rƒ   r<   c                ó  <€ V ^8„  d   QhRS[ S[P                  ,          RS[RS[R,          RS[R,          RS[RS[S[ S[P                  ,          S[ S[P                  ,          3,          S[ S[P                  ,          ,          /# )r3   r…   r†   r‡   Nrˆ   r‰   rK   )rV   r  r  r   rŒ   rM   rf   rY   )r6   r7   s   "€r8   r9   r  ×  s‚   ø€ ÷ 1 ñ 1 á‘R—Z‘ZÕ ð1 ñ ð1 ñ ˜$•Jð	1 ñ
 ˜D•jð1 ñ ð1 ñ 
‰t‘B—J‘JÕ¡¡b§j¡jÕ!1Ð1Õ	2±T¹"¿*¹*Õ5EÕ	Eñ1 r<   c                óô  € VeL   VP                   '       d   VP                  '       g   \        RV R24      hVP                   VP                  r‡M\        V4      w  rx. p	. p
V EF  p\	        V\
        P                  R7      w  rÍW|,
          pW�,
          pV^ 8  g   V^ 8  d   \        RV RV RV RV R2	4      hWÇ8w  g   WØ8w  dE   R^ V3^ V33pVR	8X  d   \        P                  ! VVR	VR
7      pM\        P                  ! VVVR7      pV	P                  V4       V'       g   KÂ  \        P                  ! Wx3\        P                  R7      p^VRV1RV13&   V
P                  V4       EK  	  V'       d   Wš3# V	# )z)Pad images to specified size using NumPy.NrŽ   r�   ©Úchannel_dimzsPadding dimensions are negative. Please make sure that the `pad_size` is larger than the image size. Got pad_size=(z, z), image_size=(z).r  )ÚmodeÚconstant_values)r+  r‘   )r   r   )r•   r–   rl   r   r   r   r½   r  r™   ÚappendÚzerosr›   )rE   r…   r†   r‡   rˆ   r‰   r4   Útarget_heightÚtarget_widthr¦   r§   r`   r•   r–   r¢   r£   Ú	pad_widthÚmasks   &&&&&&,           r8   r™   ÚPilBackend.pad×  s…  € ð ÒØ—O—O�O¨¯¯¨Ü Ð#fÐgoÐfpÐpqÐ!rÓsÐsØ*2¯/©/¸8¿>¹>™<ä*>¸vÓ*FÑ'ˆMàÐØˆäˆEÜ*¨5Ô>N×>TÑ>TÔU‰MˆFØ*Õ3ˆNØ(Õ0ˆMà Ô! ]°QÔ%6Ü ð1Ø1>°¸rÀ,ÀÈÐ_eÐ^fÐfhÐinÐhoÐoqðsóð ð
 Ô&¨%Ô*?ð $ a¨Ð%8¸1¸mÐ:LÐM�	Ø :Ô-ÜŸFšF 5¨)¸*ÐV`Ôa‘EäŸFšF 5¨)¸,ÔG�Eà×#Ñ# EÔ*ç‰{Ü—x’x Ð =ÄRÇXÁXÔN�Ø()��W�f�W˜f˜u˜f�_Ñ%Ø×&Ñ& t×,ñ3 ÷6 Ø#Ð4Ð4ØÐr<   c          
      ól   <€ V ^8„  d   QhRS[ P                  RS[RRRS[R,          RS[ P                  /# )r3   r`   rª   r«   úPILImageResampling | NoneÚreducing_gapNrK   )r  r  r   rŒ   )r6   r7   s   "€r8   r9   r  
  sI   ø€ ÷ 1
ñ 1
á�z‰zð1
ñ ð1
ð .ð	1
ñ
 ˜D•jð1
ñ 
�‰ñ1
r<   c           	     óÆ  € VeN   \        V\        \        34      '       g2   \        e   V\        9   d   \        V,          pM\        P                  pVe   TM\        P                  pVP
                  '       dS   VP                  '       dA   \        V\        P                  R7      w  rg\        Wg3VP
                  VP                  4      pMêVP
                  '       d)   \        VVP
                  R\        P                  R7      pM°VP                  '       dS   VP                  '       dA   \        V\        P                  R7      w  rg\        Wg3VP                  VP                  4      pMLVP                  '       d,   VP                   '       d   VP                  VP                   3pM\#        RV R24      h\%        VVVV\        P                  \        P                  R7      # )z Resize an image using PIL/NumPy.r)  Fr°   r²   r�   )rª   r«   r6  Údata_formatrb   )rX   r*   rŒ   r-   r¶   r»   r¼   r   r   r½   r   r   r¾   r¿   r   r•   r–   rl   Ú	np_resize)	rE   r`   rª   r«   r6  r4   r•   r–   rÁ   s	   &&&&&,   r8   r   ÚPilBackend.resize
  s�  € ð Ò¬
°8Ô>PÔRUÐ=V×(WÒ(WÜ.Ò:¸xÔKjÔ?jÜ:¸8ÕD‘ä-×6Ñ6�Ø'Ò3‘8Ô9K×9TÑ9Tˆà××Ð $×"3×"3Ð"3Ü*¨5Ô>N×>TÑ>TÔU‰MˆFÜ1Ø�Ø×"Ñ"Ø×!Ñ!ó‰Hð
 ××ÐÜ3ØØ×'Ñ'Ø"'Ü"2×"8Ñ"8ô	‰Hð �_�_ˆ_ §§ Ü*¨5Ô>N×>TÑ>TÔU‰MˆFÜ:¸F¸?ÈDÏOÉOÐ]a×]kÑ]kÓl‰HØ�[�[ˆ[˜TŸZŸZ˜ZØŸ™ T§Z¡ZÐ0‰HäðØ�6˜ðóð ô
 ØØØØ%Ü(×.Ñ.Ü.×4Ñ4ô
ð 	
r<   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# )r3   r`   rÌ   rK   )r  r  rÇ   )r6   r7   s   "€r8   r9   r  =  s1   ø€ ÷ 
ñ 
á�z‰zð
ñ ð
ñ
 
�‰ñ
r<   c                óX   € \        VV\        P                  \        P                  R7      # )z/Rescale an image by a scale factor using NumPy.)rÌ   r8  rb   )Ú
np_rescaler   r½   rÎ   s   &&&,r8   r   ÚPilBackend.rescale=  s)   € ô ØØÜ(×.Ñ.Ü.×4Ñ4ô	
ð 	
r<   c                óš   <€ V ^8„  d   QhRS[ P                  RS[S[S[,          ,          RS[S[S[,          ,          RS[ P                  /# )r3   r`   rÑ   rÒ   rK   )r  r  rÇ   r   )r6   r7   s   "€r8   r9   r  K  sM   ø€ ÷ 
ñ 
á�z‰zð
ñ ‘h™u•oÕ%ð
ñ ‘X™e•_Õ$ð	
ñ 
�‰ñ
r<   c                óZ   € \        VVV\        P                  \        P                  R7      # )zNormalize an image using NumPy.)rÑ   rÒ   r8  rb   )Únp_normalizer   r½   rÔ   s   &&&&,r8   r   ÚPilBackend.normalizeK  s,   € ô ØØØÜ(×.Ñ.Ü.×4Ñ4ô
ð 	
r<   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# )r3   r`   rª   rK   )r  r  r   )r6   r7   s   "€r8   r9   r  [  s1   ø€ ÷ 
ñ 
á�z‰zð
ñ ð
ñ
 
�‰ñ
r<   c                óô   € VP                   e   VP                  f   \        RVP                  4        24      h\	        VVP                   VP                  3\
        P                  \
        P                  R7      # )z!Center crop an image using NumPy.rè   )rª   r8  rb   )r•   r–   rl   ré   Únp_center_cropr   r½   )rE   r`   rª   r4   s   &&&,r8   r
   ÚPilBackend.center_crop[  sg   € ð �;‰;Ò $§*¡*Ò"4ÜÐ\Ð]a×]fÑ]fÓ]hÐ\iÐjÓkÐkäØØ—+‘+˜tŸz™zÐ*Ü(×.Ñ.Ü.×4Ñ4ô	
ð 	
r<   c                ó,  <€ V ^8„  d   QhRS[ S[P                  ,          RS[RS[RRRS[RS[RS[R	S[R
S[RS[S[ S[,          ,          R,          RS[S[ S[,          ,          R,          RS[R,          RS[R,          RS[S[,          R,          RS[/# )r3   r…   rô   rª   r«   r5  rõ   rö   rÛ   rÜ   rØ   rÙ   NrÚ   r÷   r†   rø   rK   )	rV   r  r  rf   r   rÇ   rM   r!   r   )r6   r7   s   "€r8   r9   r  l  sé   ø€ ÷ "añ "aá‘R—Z‘ZÕ ð"añ ð"añ ð	"að
 .ð"añ ð"añ ð"añ ð"añ ð"añ ð"añ ™D¡�KÕ'¨$Õ.ð"añ ™4¡�;Õ&¨Õ-ð"añ �t•ð"añ ˜T•/ð"añ ™jÕ(¨4Õ/ð"añ" 
ñ#"ar<   c                ó`  € . pV F}  pV'       d   V P                  VW4R7      pV'       d   V P                  VV4      pV'       d   V P                  VV4      pV	'       d   V P                  VW«4      pVP	                  V4       K  	  V'       d   V P                  VVR7      p\        RV/VR7      # )z2Preprocess using PIL backend (portable, CPU-only).rú   )r†   rû   rü   )r   r
   r   r   r-  r™   r   )rE   r…   rô   rª   r«   rõ   rö   rÛ   rÜ   rØ   rÙ   rÚ   r÷   r†   rø   r4   r¦   r`   s   &&&&&&&&&&&&&&&,  r8   r  ÚPilBackend._preprocessl  sŸ   € ð& ÐÛˆEßØŸ™¨%°d˜ÓN�ßØ×(Ñ(¨°	Ó:�ßØŸ™ U¨NÓ;�ßØŸ™ u¨jÓD�Ø×#Ñ# EÖ*ñ ÷ Ø#Ÿx™xÐ(8À8˜xÓLÐä .Ð2BÐ!CÐQ_Ô`Ð`r<   c                ó6   <€ V ^8„  d   QhRS[ S[S[3,          /# rJ   )ÚdictrM   r   )r6   r7   s   "€r8   r9   r  �  s   ø€ ÷ ñ ™™c¡3˜h�ñ r<   c                ó�   <€ \         SV `  4       pVP                  R R4      P                  R4      '       d   VR ,          RR VR &   V# )Úimage_processor_typeÚ ÚPilNéýÿÿÿ)rA   Úto_dictÚgetÚendswith)rE   Úprocessor_dictrF   s   & €r8   rQ  ÚPilBackend.to_dict�  sN   ø€ Ü™™Ó*ˆà×ÑÐ4°bÓ9×BÑBÀ5×IÒIØ5CÐDZÕ5[Ð\_Ð]_Ð5`ˆNÐ1Ñ2ØÐr<   r?   )NN)Nr   r  F)r  r  r  r  r  rB   r	  rR   rx   r   r™   r   r   r   r
   r  rQ  r  r  r  r  s   @@r8   r  r     s‹   ù‡ € áC÷'ó 'ð ÷ó ð÷"ò "÷H%ð %÷1 ò 1 ÷f1
ò 1
÷f
ð 
÷
ð 
÷ 
ð 
÷""að "a÷H÷ ó r<   r  )ro   rP   )Úvision)DÚcollections.abcr   Ú	functoolsr   Útypingr   r   r   r   r  Úimage_processing_baser   Úimage_processing_utilsr	   Úimage_transformsr
   rE  r   r   r   r   r   r   r   rA  r   r=  r   r9  Úimage_utilsr   r   r   r   r   r   r   r   r   r   r   Úprocessing_utilsr   r    Úutilsr!   r"   r#   r$   r%   Úutils.import_utilsr&   r'   r(   r)   r*   ro   Útorchvision.transforms.v2r+   rm   r,   r-   Ú
get_loggerr  r¸   r0   r  ÚBaseImageProcessorFastr?   r<   r8   Ú<module>rd     s  ðõ %Ý ß 'Ñ 'ã å /Ý 6õ÷÷ õõõ÷÷ ÷ ñ ÷ 3÷õ ÷ vÓ uñ ×ÒÝ/á×ÒÛá×ÒÝ;ç]Ð]à&*Ð#Ø&*Ð#ð 
×	Ò	˜HÓ	%€ñ 
Ð+Ô,ôGaÐ+ó Gaó -ðGañT
 
�;ÔôtÐ#ó tó  ðtðp ,Ò r<   