+
    }ir                     6   ^ RI t ^ RIHtHt ^ RIHt ^ RIHtHtH	t	H
t
 ^ RIHtHtHt ^ RIHt ]! R4      t]! RRR	7      t] ! R
 R]4      4       tRR R lltR R ltRR R lltR R ltRR R llt]R8X  d   ^ RIHt ]! 4       t]! ]! ]4      4       R# R# )    N)asdict	dataclass)	randrange)AnyDictOptionalTuple)FingerprintFingerprintGeneratorScreenFingerprint)	load_yamlzbrowserforge.ymlfirefox)browserosc                   4   a  ] tR t^t o RtRtV 3R ltRtV tR# )ExtendedScreenz?
An extended version of Browserforge's ScreenFingerprint class
Nc                6   < V ^8  d   Qh/ S[ S[,          ;R&   # )   screenY)r   int)format__classdict__s   "g/Users/ahmad/.openclaw/workspace/my-crawler/.venv/lib/python3.14/site-packages/camoufox/fingerprints.py__annotate__ExtendedScreen.__annotate__   s      c]!      )	__name__
__module____qualname____firstlineno____doc__r   __annotate_func____static_attributes____classdictcell__)r   s   @r   r   r      s      "G  r   r   c          
          V ^8  d   QhR\         \        \        3,          R\         \        \        3,          R\         \        \        3,          R\        \        ,          RR/# )r   camoufox_data	cast_enumbf_dict
ff_versionreturnN)r   strr   r   )r   s   "r   r   r      sV     ' 'S>'CH~' #s(^' 	'
 
'r   c                   VP                  4        F  w  rEV'       g   K  VP                  V4      pV'       g   K*  \        V\        4      '       d   \	        WWS4       KN  VP                  R4      '       d    \        V\        4      '       d
   V^ 8  d   ^ pV'       d2   \        V\        4      '       d   \        P                  ! RV R2V4      pWPV&   K  	  R# )z@
Casts Browserforge fingerprints to Camoufox config properties.
zscreen.z(?<!\d)(1[0-9]{2})(\.0)(?!\d)z\2N)
itemsget
isinstancedict_cast_to_properties
startswithr   r,   resub)r'   r(   r)   r*   keydatatype_keys   &&&&   r   r2   r2      s     ]]_	==%dD!!Jy))js.C.CqD*T3//66:
|2<NPTUD"&h% %r   c                V    V ^8  d   QhR\         \        \        3,          R\        RR/# )r   r'   	fp_screenr+   N)r   r,   r   r   )r   s   "r   r   r   ;   s0     @ @4S> @>O @TX @r   c                *   RV 9   d   R# VP                   pV'       g   ^ V R&   ^ V R&   R# V\        R^34      9   d   W R&   R# VP                  VP                  ,
          pV^ 8X  d   ^ V R&   R# V^ 8  d   \	        ^ V4      V R&   R# \	        V^ 4      V R&   R# )zL
Helper method to set window.screenY based on Browserforge's screenX value.
zwindow.screenYNzwindow.screenXi)screenXrangeavailHeightouterHeightr   )r'   r:   r<   r   s   &&  r   handle_screenXYr@   ;   s    
 =(G*+&'*+&' %R. *1&' ##i&;&;;G!|*+&'	1*3Aw*?&'*3GQ*?&'r   c                t    V ^8  d   QhR\         R\        \        ,          R\        \        \        3,          /# )r   fingerprintr*   r+   )r
   r   r,   r   r   )r   s   "r   r   r   X   s2      ; HSM UYZ]_bZbUc r   c                l    / p\        V\        \        V 4      VR7       \        W P                  4       V# )z;
Converts a Browserforge fingerprint to a Camoufox config.
)r(   r)   r*   )r2   BROWSERFORGE_DATAr   r@   screen)rB   r*   r'   s   && r   from_browserforgerF   X   s8     %'M#{#	 M#5#56r   c                @    V ^8  d   QhR\         R\        R\        RR/# )r   fpouter_widthouter_heightr+   N)r
   r   )r   s   "r   r   r   h   s)     " "; "S " "PT "r   c                ,   \        R/ \        V P                  4      B V n        V P                  pV;P                  VP                  V,
          ^,          ,          un        VP
                  V,
          ^,          Vn        VP                  '       d3   \        WP                  ,
          VP                  ,           ^ 4      Vn        VP                  '       d3   \        W#P                  ,
          VP                  ,           ^ 4      Vn
        Wn	        W#n        R# )zN
Helper method to set a custom outer window size, and center it in the screen
Nr   )r   r   rE   r<   widthheightr   
innerWidthmax
outerWidthinnerHeightr?   )rH   rI   rJ   scs   &&& r   handle_window_sizerS   h   s    
 3		!23BI	B JJ288k)a//J))l*q0BJ 
}}}K--7"--GK	~~~\NN:R^^KQO  M!Nr   c                h    V ^8  d   QhR\         \        \        \        3,          ,          R\        /# )r   windowr+   )r   r	   r   r
   )r   s   "r   r   r      s(     + +%S/!: +P[ +r   c                    V '       d&   \         P                  ! R/ VB p\        V.V O5!   V# \         P                  ! R/ VB # )z4
Generates a Firefox fingerprint with Browserforge.
r   )FP_GENERATORgeneraterS   )rU   configrB   s   &, r   generate_fingerprintrZ      sA     "++5f5;00  *6**r   __main__)pprint)linuxmacoswindows)N)r4   dataclassesr   r   randomr   typingr   r   r   r	   browserforge.fingerprintsr
   r   r   camoufox.pkgmanr   rD   rW   r   r2   r@   rF   rS   rZ   r   r\   rH   r   r   r   <module>re      s    	 )  - -  & 01 #I:WX "& " "'<@: ".+ z		B
R !	 r   