+
     °³jŠ/  ã                   ó$  € ^ RI t ^ RIHtHt ^ RIt^ RIt^ RIHtHt ^RIH	t	 ^RI
Ht ]P                  P                  R R l4       t]P                  P                  R R	 l4       tRR
 R llt ! R R]P"                  4      tR R ltR R ltR# )é    N)ÚAnyÚOptional)ÚnnÚTensor)Ú	ImageList)Úpaste_masks_in_imagec                ó0   € V ^8„  d   QhR\         R\         /# ©é   ÚimageÚreturn©r   )Úformats   "Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchvision/models/detection/transform.pyÚ__annotate__r      s   € ÷ 1ñ 1œ6ð 1¤fñ 1ó    c                 ó6   € ^ RI Hp VP                  V 4      RR # )r   )Ú	operatorsNéþÿÿÿ)Ú
torch.onnxr   Úshape_as_tensor)r   r   s   & r   Ú_get_shape_onnxr      s   € å$à×$Ñ$ UÓ+¨B¨CÐ0Ð0r   c                ó0   € V ^8„  d   QhR\         R\        /# )r   Úvr   )r   Úfloat)r   s   "r   r   r      s   € ÷ ñ ”vð ¤%ñ r   c                 ó   € V # ©N© )r   s   &r   Ú_fake_cast_onnxr      s	   € ð €Hr   c                ó*  € V ^8„  d   QhR\         R\        R\        R\        \        \        \         3,          ,          R\        \
        \        \        3,          ,          R\
        \         \        \        \        \         3,          ,          3,          /# )r   r   Úself_min_sizeÚself_max_sizeÚtargetÚ
fixed_sizer   )r   Úintr   ÚdictÚstrÚtuple)r   s   "r   r   r      sw   € ÷ :ñ :Üð:äð:ô ð:ô ”Tœ#œv˜+Õ&Õ'ð	:ô
 œœs¤C˜x�Õ)ð:ô Œ6”8œD¤¤f Õ-Õ.Ð.Õ/ñ:r   c           	      ó,  € \         P                  ! 4       '       d   \        V 4      pMW\        P                  P                  4       '       d%   \        P                  ! V P                  R	R 4      pMV P                  R	R pRpRpRpVe   V^,          V^ ,          .pEMH\        P                  P                  4       '       g   \         P                  ! 4       '       dÚ   \        P                  ! V4      P                  \        P                  R7      p	\        P                  ! V4      P                  \        P                  R7      p
\        V4      p\        V4      p\        P                  ! W¹,          WÊ,          4      p\         P                  ! 4       '       d   \        V4      pM?VP                  4       pM.\        V4      p	\        V4      p
\        W,          W*,          4      pRp\        P                  P                   P#                  V R,          VVRVRR7      ^ ,          p Vf   W3# RV9   dd   VR,          p\        P                  P                   P#                  VR
,          P                  4       WgVR7      R,          P%                  4       pWãR&   W3# )r   N)ÚdtypeTÚbilinearF)ÚsizeÚscale_factorÚmodeÚrecompute_scale_factorÚalign_cornersÚmasks)r,   r-   r/   r   )ºNNNN)r2   r   )ÚtorchvisionÚ_is_tracingr   ÚtorchÚjitÚis_scriptingÚtensorÚshapeÚminÚtoÚfloat32Úmaxr   r   Úitemr   Ú
functionalÚinterpolateÚbyte)r   r!   r"   r#   r$   Úim_shaper,   r-   r/   Úmin_sizeÚmax_sizeÚself_min_size_fÚself_max_size_fÚscaleÚmasks   &&&&&          r   Ú_resize_image_and_masksrI      s  € ô ×Ò× Ò Ü" 5Ó)‰Ü	�‰×	Ñ	×	!Ò	!Ü—<’< §¡¨B¨CÐ 0Ó1‰à—;‘;˜r˜sÐ#ˆà $€DØ$(€LØ-1ÐØÒØ˜1•˜z¨!�}Ð-Šä�9‰9×!Ñ!×#Ò#¤{×'>Ò'>×'@Ò'@Ü—y’y Ó*×-Ñ-´E·M±MÐ-ÓBˆHÜ—y’y Ó*×-Ñ-´E·M±MÐ-ÓBˆHÜ# MÓ2ˆOÜ# MÓ2ˆOÜ—I’I˜oÕ8¸/Õ:TÓUˆEä×&Ò&×(Ò(Ü.¨uÓ5‘à$Ÿz™z›|‘ô ˜8“}ˆHÜ˜8“}ˆHÜ˜}Õ7¸Õ9QÓRˆLà!%Ðä�H‰H×Ñ×+Ñ+Øˆd�ØØ!ØØ5Øð ,ó ð õ	€Eð ‚~Øˆ}Ðà�&ÔØ�g�ˆÜ�x‰x×"Ñ"×.Ñ.Ø��M×ÑÓ!¨Ð`vð /ó 
à
õç‘“ð 	ð ˆw‰Øˆ=Ðr   c                   ó*  a a€ ] tR t^Vt oRtRV3R lV 3R l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RV3R
 lR llt	]
P                  P                  RV3R lR l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V3R lR ltRtVtV ;t# )ÚGeneralizedRCNNTransformaL  
Performs input / target transformation before feeding the data to a GeneralizedRCNN
model.

The transformations it performs are:
    - input normalization (mean subtraction and std division)
    - input / target resizing to match min_size / max_size

It returns a ImageList for the inputs, and a List[Dict[Tensor]] for the targets
c                óŠ   <€ V ^8„  d   QhRS[ RS[ RS[S[,          RS[S[,          RS[ RS[S[S[ S[ 3,          ,          RS[/# )r   rC   rD   Ú
image_meanÚ	image_stdÚsize_divisibler$   Úkwargs)r%   Úlistr   r   r(   r   )r   Ú__classdict__s   "€r   r   Ú%GeneralizedRCNNTransform.__annotate__b   sf   ø€ ÷ >ñ >áð>ñ ð>ñ ™•Kð	>ñ
 ™•;ð>ñ ð>ñ ™U¡3© 8�_Õ-ð>ñ ñ>r   c                óØ   <€ \         SV `  4        \        V\        \        34      '       g   V3pWn        W n        W0n        W@n        WPn	        W`n
        VP                  R R4      V n        R# )Ú_skip_resizeFN)ÚsuperÚ__init__Ú
isinstancerQ   r(   rC   rD   rM   rN   rO   r$   ÚpoprU   )	ÚselfrC   rD   rM   rN   rO   r$   rP   Ú	__class__s	   &&&&&&&,€r   rW   Ú!GeneralizedRCNNTransform.__init__b   sZ   ø€ ô 	‰ÑÔÜ˜(¤T¬5 M×2Ò2Ø �{ˆHØ ŒØ ŒØ$ŒØ"ŒØ,ÔØ$ŒØ"ŸJ™J ~°uÓ=ˆÖr   c                ó¾   <€ V ^8„  d   QhRS[ S[,          RS[S[ S[S[S[3,          ,          ,          RS[S[S[S[ S[S[S[3,          ,          ,          3,          /# )r   ÚimagesÚtargetsr   )rQ   r   r   r&   r'   r(   r   )r   rR   s   "€r   r   rS   w   sY   ø€ ÷ '#ñ '#Ù™6•lð'#Ù-5±d¹4ÁÁVÀÕ;LÕ6MÕ-Nð'#á	‰y™(¡4©©S±&¨[Õ(9Õ#:Õ;Ð;Õ	<ñ'#r   c                ó  € V Uu. uF  q3NK  	  ppVe>   . pV F3  p/ pVP                  4        F	  w  rxW†V&   K  	  VP                  V4       K5  	  Tp\        \        V4      4       F~  p	W,          p
Ve	   W),          MR pV
P	                  4       ^8w  d   \        RV
P                   24      hV P                  V
4      p
V P                  W«4      w  r«W¡V	&   Vf   Kt  Vf   Kz  W²V	&   K€  	  V Uu. uF  q3P                  RR  NK  	  ppV P                  WP                  R7      p. pV FJ  p\        P                  ! \        V4      ^8H  RV 24       VP                  V^ ,          V^,          34       KL  	  \        W4      pWò3# u upi u upi )NzFimages is expected to be a list of 3d tensors of shape [C, H, W], got )rO   zMInput tensors expected to have in the last two elements H and W, instead got r   )ÚitemsÚappendÚrangeÚlenÚdimÚ
ValueErrorr9   Ú	normalizeÚresizeÚbatch_imagesrO   r5   Ú_assertr   )rZ   r^   r_   ÚimgÚtargets_copyÚtÚdataÚkr   Úir   Útarget_indexÚimage_sizesÚimage_sizes_listÚ
image_sizeÚ
image_lists   &&&             r   ÚforwardÚ GeneralizedRCNNTransform.forwardw   s“  € ñ "(Ó(¡˜#’#¡ˆÐ(ØÒð
 57ˆLÛ�Ø*,�ØŸG™GžI‘D�AØ˜“Gñ &à×#Ñ# DÖ)ñ	 ð
 #ˆGÜ”s˜6“{Ö#ˆAØ•IˆEØ)0Ò)<˜7ž:À$ˆLà�y‰y‹{˜aÔÜ Ð#iÐjo×juÑjuÐivÐ!wÓxÐxØ—N‘N 5Ó)ˆEØ"&§+¡+¨eÓ"BÑˆEØ�1‰IØÔ" |Ô'?Ø)˜“
ñ $ñ 28Ó8±¨#—y‘y  “~±ˆÐ8Ø×"Ñ" 6×:MÑ:MÐ"ÓNˆØ24ÐÛ%ˆJÜ�MŠMÜ�J“ 1Ñ$Ø_Ð`jÐ_kÐlôð ×#Ñ# Z°¥]°J¸qµMÐ$BÖCñ &ô ˜vÓ8ˆ
ØÐ"Ð"ùòI )ùò2 9s   …
FÃ,Fc                ó&   <€ V ^8„  d   QhRS[ RS[ /# r
   r   )r   rR   s   "€r   r   rS       s   ø€ ÷ 	Bñ 	B™vð 	B©&ñ 	Br   c                óP  € VP                  4       '       g   \        R VP                   R24      hVP                  VP                  r2\        P
                  ! V P                  W#R7      p\        P
                  ! V P                  W#R7      pWR,          ,
          VR,          ,          # )zOExpected input images to be of floating type (in range [0, 1]), but found type z instead©r*   Údevice)r2   NN)Úis_floating_pointÚ	TypeErrorr*   r{   r5   Ú	as_tensorrM   rN   )rZ   r   r*   r{   ÚmeanÚstds   &&    r   rg   Ú"GeneralizedRCNNTransform.normalize    s„   € Ø×&Ñ&×(Ò(Üð"Ø"'§+¡+ ¨hð8óð ð Ÿ™ U§\¡\ˆvÜ�Š˜tŸ™°eÔKˆÜ�oŠo˜dŸn™n°EÔIˆØ˜]Õ+Õ+¨s°=Õ/AÕAÐAr   c                ó6   <€ V ^8„  d   QhRS[ S[,          RS[/# )r   ro   r   ©rQ   r%   )r   rR   s   "€r   r   rS   «   s   ø€ ÷ ñ ™d¡3�ið ©Cñ r   c           
     ó°   € \        \        P                  ! ^4      P                  R\	        \        V4      4      4      P                  4       4      pW,          # )z|
Implements `random.choice` via torch ops, so it can be compiled with
TorchScript and we use PyTorch's RNG (not native RNG)
g        )r%   r5   ÚemptyÚuniform_r   rd   r>   )rZ   ro   Úindexs   && r   Útorch_choiceÚ%GeneralizedRCNNTransform.torch_choice«   s;   € ô
 ”E—K’K “N×+Ñ+¨C´´s¸1³v³Ó?×DÑDÓFÓGˆØ�xˆr   c                óŽ   <€ V ^8„  d   QhRS[ RS[S[S[S[ 3,          ,          RS[S[ S[S[S[S[ 3,          ,          3,          /# )r   r   r#   r   )r   r   r&   r'   r(   )r   rR   s   "€r   r   rS   ³   sO   ø€ ÷ ñ áðñ ™™c¡6˜kÕ*Õ+ðñ 
‰v‘x¡¡S©& [Õ 1Õ2Ð2Õ	3ñ	r   c                óØ  € VP                   RR w  r4V P                  '       d2   V P                  '       d   W3# V P                  V P                  4      pMV P                  R,          p\        WV P                  W P                  4      w  rVf   W3# VR,          p\        WcV3VP                   RR 4      pWbR&   RV9   d)   VR,          p\        WsV3VP                   RR 4      pWrR&   W3# )r   NÚboxesÚ	keypointsr   éÿÿÿÿ)
r9   ÚtrainingrU   rˆ   rC   rI   rD   r$   Úresize_boxesÚresize_keypoints)rZ   r   r#   ÚhÚwr,   Úbboxr�   s   &&&     r   rh   ÚGeneralizedRCNNTransform.resize³   sä   € ð
 �{‰{˜2˜3Ð‰ˆØ�=�=ˆ=Ø× × Ð Ø�}Ð$Ø×$Ñ$ T§]¡]Ó3‰Dà—=‘= Õ$ˆDÜ/°¸T¿]¹]ÈF×TcÑTcÓd‰ˆàŠ>Ø�=Ð à�g�ˆÜ˜D a &¨%¯+©+°b°cÐ*:Ó;ˆØˆw‰à˜&Ô Ø˜{Õ+ˆIÜ(¨¸°F¸E¿K¹KÈÈÐ<LÓMˆIØ"+�;ÑØˆ}Ðr   c                ó<   <€ V ^8„  d   QhRS[ S[,          RS[RS[/# ©r   r^   rO   r   ©rQ   r   r%   )r   rR   s   "€r   r   rS   Ñ   s'   ø€ ÷ (ñ (©©f­ð (Ásð (ÑTZñ (r   c                ó¬  € . p\        V^ ,          P                  4       4       F˜  p\        P                  ! \        P                  ! V Uu. uF  qUP
                  V,          NK  	  up4      P                  \        P                  4      4      P                  \        P                  4      pVP                  V4       Kš  	  Tp\        P                  ! V^,          P                  \        P                  4      V,          4      V,          P                  \        P                  4      V^&   \        P                  ! V^,          P                  \        P                  4      V,          4      V,          P                  \        P                  4      V^&   \        V4      p. pV F‘  p\        V\        VP
                  4      4       U	U
u. uF  w  ršWš,
          NK  	  pp	p
\        P                  P                  P                  V^ V^,          ^ V^,          ^ V^ ,          34      pVP                  V4       K“  	  \        P                  ! V4      # u upi u up
p	i )r   )rc   re   r5   r=   Ústackr9   r;   r<   Úint64rb   Úceilr(   Úzipr   r?   Úpad)rZ   r^   rO   rD   rp   rk   Ú
max_size_iÚstrideÚpadded_imgsÚs1Ús2ÚpaddingÚ
padded_imgs   &&&          r   Ú_onnx_batch_imagesÚ+GeneralizedRCNNTransform._onnx_batch_imagesÐ   s®  € àˆÜ�v˜a•y—}‘}“Ö'ˆAÜŸš¤5§;¢;ÉÓ/OÉÀ·	±	¸!·°ÉÑ/OÓ#P×#SÑ#SÔTY×TaÑTaÓ#bÓc×fÑfÔgl×grÑgrÓsˆJØ�O‰O˜JÖ'ñ (ð  ˆÜ—z’z 8¨A¥;§>¡>´%·-±-Ó#@ÀFÕ"JÓKÈfÕT×XÑXÔY^×YdÑYdÓeˆ�‰Ü—z’z 8¨A¥;§>¡>´%·-±-Ó#@ÀFÕ"JÓKÈfÕT×XÑXÔY^×YdÑYdÓeˆ�‰Ü˜“?ˆð
 ˆÛˆCÜ/2°8¼UÀ3Ç9Á9Ó=MÔ/NÔOÑ/N¡V R˜Ÿ˜Ñ/NˆGÑOÜŸ™×,Ñ,×0Ñ0°°q¸'À!½*ÀaÈÐQRÍÐUVÐX_Ð`aÕXbÐ6cÓdˆJØ×Ñ˜zÖ*ñ ô
 �{Š{˜;Ó'Ð'ùò! 0Pùó Ps   Á
IÇIc                óV   <€ V ^8„  d   QhRS[ S[ S[,          ,          RS[ S[,          /# )r   Úthe_listr   rƒ   )r   rR   s   "€r   r   rS   æ   s'   ø€ ÷ ñ ¡D©©c­¥Oð ¹¹S½	ñ r   c                óˆ   € V^ ,          pVR,           F+  p\        V4       F  w  rE\        W$,          V4      W$&   K  	  K-  	  V# )r   :é   NN)Ú	enumerater=   )rZ   r©   ÚmaxesÚsublistr‡   r>   s   &&    r   Úmax_by_axisÚ$GeneralizedRCNNTransform.max_by_axisæ   sC   € Ø˜•ˆØ —|�|ˆGÜ(¨Ö1‘�Ü" 5¥<°Ó6�“ó  2ñ $ð ˆr   c                ó<   <€ V ^8„  d   QhRS[ S[,          RS[RS[/# r—   r˜   )r   rR   s   "€r   r   rS   í   s&   ø€ ÷ ñ ¡4©¥<ð Áð Éfñ r   c                óR  € \         P                  ! 4       '       d   V P                  W4      # T P                  V Uu. uF  p\	        VP
                  4      NK  	  up4      p\        V4      p\	        V4      p\        \        P                  ! \        V^,          4      V,          4      V,          4      V^&   \        \        P                  ! \        V^,          4      V,          4      V,          4      V^&   \        V4      .V,           pV^ ,          P                  V^ 4      p\        VP
                  ^ ,          4       F_  pW,          pWxRVP
                  ^ ,          1RVP
                  ^,          1RVP
                  ^,          13,          P                  V4       Ka  	  V# u upi )r«   N)r3   r4   r¦   r¯   rQ   r9   r   r%   Úmathrœ   rd   Únew_fullrc   Úcopy_)	rZ   r^   rO   rk   rD   r    Úbatch_shapeÚbatched_imgsrp   s	   &&&      r   ri   Ú%GeneralizedRCNNTransform.batch_imagesí   sF  € Ü×"Ò"×$Ò$ð ×*Ñ*¨6ÓBÐBà×#Ñ#ÁÓ$GÁ¸¤T¨#¯)©)¦_ÁÑ$GÓHˆÜ�~Ó&ˆÜ˜“>ˆÜœ$Ÿ)š)¤E¨(°1­+Ó$6¸Õ$?Ó@À6ÕIÓJˆ�‰Üœ$Ÿ)š)¤E¨(°1­+Ó$6¸Õ$?Ó@À6ÕIÓJˆ�‰ä˜6“{�m hÕ.ˆØ˜a•y×)Ñ)¨+°qÓ9ˆÜ�|×)Ñ)¨!Õ,Ö-ˆAØ•)ˆCØ˜N˜cŸi™i¨�l˜N¨N¨c¯i©i¸­l¨N¸N¸c¿i¹iÈ½l¸NÐJÕK×QÑQÐRUÖVñ .ð Ðùò %Hs   ¼F$c                óÊ   <€ V ^8„  d   QhRS[ S[S[S[3,          ,          RS[ S[S[S[3,          ,          RS[ S[S[S[3,          ,          RS[ S[S[S[3,          ,          /# )r   ÚresultÚimage_shapesÚoriginal_image_sizesr   )rQ   r&   r'   r   r(   r%   )r   rR   s   "€r   r   rS     si   ø€ ÷ ñ á‘T™#™v˜+Õ&Õ'ðñ ™5¡¡c �?Õ+ðñ #¡5©©c¨¥?Õ3ð	ñ
 
‰d‘3™�;ÕÕ	 ñr   c                óR  € V P                   '       d   V# \        \        WV4      4       Fy  w  pw  rVpVR ,          p\        W†V4      pW�V,          R &   RV9   d!   VR,          p	\	        W˜V4      p	W‘V,          R&   RV9   g   KY  VR,          p
\        W¦V4      p
W¡V,          R&   K{  	  V# )rŒ   r1   r�   )r�   r¬   r�   r�   r   r‘   )rZ   rº   r»   r¼   rp   ÚpredÚim_sÚo_im_srŒ   r1   r�   s   &&&&       r   ÚpostprocessÚ$GeneralizedRCNNTransform.postprocess  s®   € ð �=�=ˆ=ØˆMÜ'0´°VÐK_Ó1`Ö'aÑ#ˆAÑ#�˜FØ˜•MˆEÜ  ¨fÓ5ˆEØ!&�1�I�gÑØ˜$ŒØ˜W��Ü,¨U¸6ÓB�Ø%*�q•	˜'Ñ"Ø˜dÖ"Ø  Õ-�	Ü,¨Y¸fÓE�	Ø)2�q•	˜+Ó&ñ (bð ˆr   c                ó    <€ V ^8„  d   QhRS[ /# )r   r   )r'   )r   rR   s   "€r   r   rS     s   ø€ ÷ ñ ™#ñ r   c                óâ   € V P                   P                   R 2pRpW RV P                   RV P                   R2,          pW RV P                   RV P
                   R2,          pVR,          pV# )	Ú(z
    zNormalize(mean=z, std=Ú)zResize(min_size=z, max_size=z, mode='bilinear')z
))r[   Ú__name__rM   rN   rC   rD   )rZ   Úformat_stringÚ_indents   &  r   Ú__repr__Ú!GeneralizedRCNNTransform.__repr__  sy   € ØŸ>™>×2Ñ2Ð3°1Ð5ˆØˆØ˜9 O°D·O±OÐ3DÀFÈ4Ï>É>ÐJZÐZ[Ð\Õ\ˆØ˜9Ð$4°T·]±]°OÀ;ÈtÏ}É}ÈoÐ]oÐpÕpˆØ˜ÕˆØÐr   )rU   r$   rM   rN   rD   rC   rO   )é    Nr   )rÌ   )rÇ   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rW   rv   rg   rˆ   rh   r5   r6   Úunusedr¦   r¯   ri   rÁ   rÊ   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)r[   rR   s   @@r   rK   rK   V   s�   ù‡ € ñ	÷>õ >÷*'#ò '#÷R	Bð 	B÷ð ÷ò ð: ‡Y�Y×Ñ÷(ñ (ó ð(÷*ð ÷ò ÷(ð ÷,÷ ð r   rK   c                ót   € V ^8„  d   QhR\         R\        \        ,          R\        \        ,          R\         /# )r   r�   Úoriginal_sizeÚnew_sizer   ©r   rQ   r%   )r   s   "r   r   r      s2   € ÷ ñ ¤ð ´t¼Cµyð ÌDÔQTÍIð ÔZ`ñ r   c                 ób  € \        W!4       UUu. uFl  w  r4\        P                  ! V\        P                  V P                  R 7      \        P                  ! V\        P                  V P                  R 7      ,          NKn  	  pppVw  rgV P                  4       p\        P                  P                  4       '       dD   VR,          V,          p	VR,          V,          p
\        P                  ! WšVR,          3^R7      pV# VR;;,          V,          uu&   VR;;,          V,          uu&   V# u uppi )rz   ©re   )r2   r2   r   )r2   r2   r«   )r2   r2   r   ).r   ).r«   )	r�   r5   r8   r<   r{   ÚcloneÚ_CÚ_get_tracing_staterš   )r�   rÖ   r×   ÚsÚs_origÚratiosÚratio_hÚratio_wÚresized_dataÚresized_data_0Úresized_data_1s   &&&        r   r‘   r‘      s  € ô ˜XÔ5ôñ 6‰IˆAô 	�Š�QœeŸm™m°I×4DÑ4DÔEÜ
�,Š,�v¤U§]¡]¸9×;KÑ;KÔ
L÷	Mð 	Má5ð ñ ð
 Ñ€GØ—?‘?Ó$€LÜ‡x�x×"Ñ"×$Ò$Ø% gÕ.°Õ8ˆØ% gÕ.°Õ8ˆÜ—{’{ NÀLÐQXÕDYÐ#ZÐ`aÔbˆð Ðð 	�V× Õ'ÓØ�V× Õ'ÓØÐùós   �A2D+c                ót   € V ^8„  d   QhR\         R\        \        ,          R\        \        ,          R\         /# )r   rŒ   rÖ   r×   r   rØ   )r   s   "r   r   r   2  s1   € ÷ 8ñ 8œð 8¬t´C­yð 8ÄDÌÅIð 8ÔRXñ 8r   c                 ó¸  € \        W!4       UUu. uFl  w  r4\        P                  ! V\        P                  V P                  R 7      \        P                  ! V\        P                  V P                  R 7      ,          NKn  	  pppVw  rgV P                  ^4      w  r‰r«W‡,          pW§,          p
W–,          p	W¶,          p\        P                  ! W‰W«3^R7      # u uppi )rz   rÚ   )r�   r5   r8   r<   r{   Úunbindrš   )rŒ   rÖ   r×   rÞ   rß   rà   Úratio_heightÚratio_widthÚxminÚyminÚxmaxÚymaxs   &&&         r   r�   r�   2  s½   € ô ˜XÔ5ôñ 6‰IˆAô 	�Š�QœeŸm™m°E·L±LÔAÜ
�,Š,�v¤U§]¡]¸5¿<¹<Ô
H÷	Ið 	Iá5ð ñ ð
 !'Ñ€LØ"Ÿ\™\¨!›_Ñ€D�àÕ€DØÕ€DØÕ€DØÕ€DÜ�;Š;˜ DÐ/°QÔ7Ð7ùós   �A2C)NN)r³   Útypingr   r   r5   r3   r   r   ru   r   Ú	roi_headsr   r6   rÑ   r   r   rI   ÚModulerK   r‘   r�   r   r   r   Ú<module>rò      sy   ðÛ ß  ã Û ß å !Ý +ð ‡�×Ñô1ó ð1ð ‡�×Ñôó ð÷
:ôzG˜rŸy™yô GõT÷$8r   