
    -hh                        S SK rS SKrS SKrS SKrS SKJr  S SK	J
r
  S SKJr   S SKJr  / SQr\R(                  r\R,                  r\R0                  r\R4                  r\R8                  r\R<                  r\R>                  r\R@                  r \RB                  r!\RD                  r" \RF                  r#Sr$\RK                  S5        \RN                  r( \RR                  r*\RV                  r+C S S
KJ,r-  Sq/Sq0S r1S r2S r3S r4S r5S r6\r7S r) " S S5      r8\8r9 " S S5      r: " S S5      r; " S S\;5      r< " S S5      r= " S S5      r> " S S \?5      r@\" S!5      R                  rBS" rC\)" 5       qD0 rE0 rF\
" 5       rG " S# S$5      rH S S%KJIqJJKrL  [        rQS, rR " S- S.\H5      rS " S/ S0\H5      rT\-" 5       rU " S1 S25      rV " S3 S4\H5      rWS5 rXS6 rYS7 rZS8 r[S9 r\S: r]/ r^S	q_S; r`S S<KJara  \T" 5       qbS= rS> rcS? rd\e" \S@5      (       a  \R                  " \dSA9  gg! \ a
    S SKJr   GNf = f! \& a    S	r$ GNtf = f! \& a    Sr* GNjf = f! \ a
    S SK.J-r-   GNif = f! \ a    S S&KMJNrO  S S'KJPrP  \P" S(S)5      rKS* rLS+ qJ Nf = f)B    N)	monotonic)WeakSet)count)deque)	get_identactive_count	Conditioncurrent_thread	enumeratemain_threadTIMEOUT_MAXEventLockRLock	SemaphoreBoundedSemaphoreThreadBarrierBrokenBarrierErrorTimerThreadError
setprofilesettracelocal
stack_size
excepthookExceptHookArgsgettrace
getprofilesetprofile_all_threadssettrace_all_threadsTget_native_idF)_local)r   c                     U q g N_profile_hookfuncs    2/opt/python-3.13.8/usr/lib/python3.13/threading.pyr   r   H   s	     M    c                 F    [        U 5        [        R                  " U 5        g r%   )r   _sys_setprofileallthreadsr(   s    r*   r    r    Q   s     tt$r+   c                      [         $ r%   r&    r+   r*   r   r   [   s    r+   c                     U q g r%   _trace_hookr(   s    r*   r   r   _   s	     Kr+   c                 F    [        U 5        [        R                  " U 5        g r%   )r   r-   _settraceallthreadsr(   s    r*   r!   r!   h   s     TNT"r+   c                      [         $ r%   r2   r0   r+   r*   r   r   r   s    r+   c                      U (       d  U(       a  [         R                  " S[        SS9  [        c  [	        U 0 UD6$ [        U 0 UD6$ )NzDPassing arguments to RLock is deprecated and will be removed in 3.15   
stacklevel)warningswarnDeprecationWarning_CRLock_PyRLock)argskwargss     r*   r   r   z   sE     vR	

 (((D#F##r+   c                   X    \ rS rSrS rS rS rSS jr\rS r	S r
S rS	 rS
 rS rSrg)_RLock   c                 >    [        5       U l        S U l        SU l        g Nr   )_allocate_lock_block_owner_countselfs    r*   __init___RLock.__init__   s    $&r+   c                 B   U R                   n [        U   R                  nSU R                  R                  5       (       a  SOSU R                  R                  U R                  R                  UU R                  [        [        U 5      5      4-  $ ! [         a     N|f = f)Nz)<%s %s.%s object owner=%r count=%d at %s>lockedunlocked)rI   _activenameKeyErrorrH   rP   	__class__
__module____qualname__rJ   hexid)rL   owners     r*   __repr___RLock.__repr__   s    	EN''E ;**,,H*NN%%NN''KK4M>
 
 	
  		s   B 
BBc                 T    U R                   R                  5         S U l        SU l        g rF   )rH   _at_fork_reinitrI   rJ   rK   s    r*   r^   _RLock._at_fork_reinit   s     ##%r+   c                     [        5       nU R                  U:X  a  U =R                  S-  sl        gU R                  R	                  X5      nU(       a  X0l        SU l        U$ N   )r   rI   rJ   rH   acquire)rL   blockingtimeoutmercs        r*   rc   _RLock.acquire   sP    4 [;;"KK1K[[  3KDK	r+   c                     U R                   [        5       :w  a  [        S5      eU R                  S-
  =U l        nU(       d"  S U l         U R                  R                  5         g g )Ncannot release un-acquired lockrb   )rI   r   RuntimeErrorrJ   rH   release)rL   r   s     r*   rl   _RLock.release   sQ      ;;)+%@AA"kkAo-eDKKK! r+   c                 $    U R                  5         g r%   rl   rL   tvtbs       r*   __exit___RLock.__exit__       r+   c                 V    U R                   R                  5         Uu  U l        U l        g r%   )rH   rc   rJ   rI   )rL   states     r*   _acquire_restore_RLock._acquire_restore   s     #( T[r+   c                     U R                   S:X  a  [        S5      eU R                   nSU l         U R                  nS U l        U R                  R	                  5         X4$ )Nr   rj   )rJ   rk   rI   rH   rl   )rL   r   rZ   s      r*   _release_save_RLock._release_save   sR    ;;!@AA~r+   c                 0    U R                   [        5       :H  $ r%   )rI   r   rK   s    r*   	_is_owned_RLock._is_owned   s    {{ik))r+   c                 L    U R                   [        5       :w  a  gU R                  $ rF   )rI   r   rJ   rK   s    r*   _recursion_count_RLock._recursion_count  s    ;;)+%{{r+   )rH   rJ   rI   N)T)__name__rV   rW   __firstlineno__rM   r[   r^   rc   	__enter__rl   rt   ry   r|   r   r   __static_attributes__r0   r+   r*   rC   rC      s<    


"H I".
)*
r+   rC   c                   r    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rSS jrSS jrSS jrS rS rSrg)r	   i  Nc                 X   Uc
  [        5       nXl        UR                  U l        UR                  U l        [	        US5      (       a  UR
                  U l        [	        US5      (       a  UR                  U l        [	        US5      (       a  UR                  U l        [        5       U l	        g )Nr|   ry   r   )
r   _lockrc   rl   hasattrr|   ry   r   _deque_waiters)rL   locks     r*   rM   Condition.__init__  s    <7D
|||| 4))!%!3!3D4+,,$($9$9D!4%%!^^DNr+   c                 l    U R                   R                  5         U R                  R                  5         g r%   )r   r^   r   clearrK   s    r*   r^   Condition._at_fork_reinit+  s"    

""$r+   c                 6    U R                   R                  5       $ r%   )r   r   rK   s    r*   r   Condition.__enter__/  s    zz##%%r+   c                 4    U R                   R                  " U6 $ r%   )r   rt   )rL   r@   s     r*   rt   Condition.__exit__2  s    zz""D))r+   c                 J    SU R                   [        U R                  5      4-  $ )Nz<Condition(%s, %d)>)r   lenr   rK   s    r*   r[   Condition.__repr__5  s    $

C4F'GGGr+   c                 8    U R                   R                  5         g r%   )r   rl   rK   s    r*   r|   Condition._release_save8      

r+   c                 8    U R                   R                  5         g r%   )r   rc   )rL   xs     r*   ry   Condition._acquire_restore;  r   r+   c                 z    U R                   R                  S5      (       a  U R                   R                  5         gg)NFT)r   rc   rl   rK   s    r*   r   Condition._is_owned>  s/     ::e$$JJ r+   c                 t   U R                  5       (       d  [        S5      e[        5       nUR                  5         U R                  R                  U5        U R                  5       nSn Uc  UR                  5         SnO*US:  a  UR                  SU5      nOUR                  S5      nUU R                  U5        U(       d   U R                  R                  U5        $ $ ! [         a     $ f = f! U R                  U5        U(       d-   U R                  R                  U5        f ! [         a     f f = ff = f)Nzcannot wait on un-acquired lockFTr   )
r   rk   rG   rc   r   appendr|   ry   remove
ValueError)rL   re   waitersaved_stategotits        r*   waitCondition.waitG  s   . ~~@AA!V$((*	 Q;"NN49E"NN51E!!+.MM((0  " 	 !!+.MM((0!  sC   )AC0 C  
C-,C-0D7
D&%D7&
D30D72D33D7c                     S nUnU" 5       nU(       dK  Ub'  Uc  [        5       U-   nOU[        5       -
  nUS::  a   U$ U R                  U5        U" 5       nU(       d  MK  U$ rF   )_timer   )rL   	predicatere   endtimewaittimeresults         r*   wait_forCondition.wait_forw  so     #?#g0G&0H1}  IIh[F & r+   c                 4   U R                  5       (       d  [        S5      eU R                  nU(       aE  US:  a>  US   n UR                  5         US-  n UR	                  U5        U(       a	  US:  a  M<  g g g g ! [         a     N1f = f! [
         a     N/f = f)Nz!cannot notify on un-acquired lockr   rb   )r   rk   r   rl   r   r   )rL   nwaitersr   s       r*   notifyCondition.notify  s     ~~BCC--!a%QZF	  Qv& !a%g%g   
   s$    A: B
 :
BB

BBc                 L    U R                  [        U R                  5      5        g r%   )r   r   r   rK   s    r*   
notify_allCondition.notify_all  s     	C&'r+   c                 X    SS K nUR                  " S[        SS9  U R                  5         g )Nr   z3notifyAll() is deprecated, use notify_all() insteadr8   r9   )r;   r<   r=   r   rL   r;   s     r*   	notifyAllCondition.notifyAll  s%     	K(Q	8r+   )ry   r   r   r|   r   rc   rl   r%   rb   )r   rV   rW   r   rM   r^   r   rt   r[   r|   ry   r   r   r   r   r   r   r   r0   r+   r*   r	   r	     sE    !$&*H.`.<(	r+   r	   c                   B    \ rS rSrS	S jrS rS
S jr\rS	S jrS r	Sr
g)r   i  c                 b    US:  a  [        S5      e[        [        5       5      U l        Xl        g )Nr   z$semaphore initial value must be >= 0)r   r	   r   _cond_value)rL   values     r*   rM   Semaphore.__init__  s(    19CDDtv&
r+   c           	          U R                   nSUR                   SUR                   S[        U 5      S SU R                   S3	$ )N<. at #x: value=>)rU   rV   rW   rY   r   rL   clss     r*   r[   Semaphore.__repr__  sK    nnCNN#1S%5%5$6d2d8B- H++a) 	*r+   Nc                    U(       d  Ub  [        S5      eSnS nU R                     U R                  S:X  a]  U(       d  OlUb%  Uc  [        5       U-   nOU[        5       -
  nUS::  a  ODU R                  R	                  U5        U R                  S:X  a  M]  U =R                  S-  sl        SnS S S 5        U$ ! , (       d  f       U$ = f)Nz.can't specify timeout for non-blocking acquireFr   rb   T)r   r   r   r   r   )rL   rd   re   rg   r   s        r*   rc   Semaphore.acquire  s    0 G/MNNZZ++"&"''G"3")EG"3"a<!

( ++" q   	 Z 	s   A,B5B55
Cc                     US:  a  [        S5      eU R                     U =R                  U-  sl        U R                  R                  U5        S S S 5        g ! , (       d  f       g = f)Nrb   n must be one or more)r   r   r   r   rL   r   s     r*   rl   Semaphore.release  sH     q5455ZZKK1KJJa  ZZs   1A
A&c                 $    U R                  5         g r%   ro   rp   s       r*   rt   Semaphore.__exit__  rv   r+   )r   r   r   )TN)r   rV   rW   r   rM   r[   rc   r   rl   rt   r   r0   r+   r*   r   r     s#    *
+Z I!r+   r   c                   <   ^  \ rS rSrSU 4S jjrS rSS jrSrU =r$ )r   i  c                 0   > [         TU ]  U5        Xl        g r%   )superrM   _initial_value)rL   r   rU   s     r*   rM   BoundedSemaphore.__init__)  s    #r+   c                     U R                   nSUR                   SUR                   S[        U 5      S SU R                   SU R
                   S3$ )Nr   r   r   r   r   /r   )rU   rV   rW   rY   r   r   r   s     r*   r[   BoundedSemaphore.__repr__-  sY    nnCNN#1S%5%5$6d2d8B- H++a(;(;'<A? 	@r+   c                 "   US:  a  [        S5      eU R                     U R                  U-   U R                  :  a  [        S5      eU =R                  U-  sl        U R                  R	                  U5        S S S 5        g ! , (       d  f       g = f)Nrb   r   z!Semaphore released too many times)r   r   r   r   r   r   s     r*   rl   BoundedSemaphore.release2  sj     q5455ZZ{{Q!4!44 !DEEKK1KJJa 	 ZZs   AB  
B)r   r   )	r   rV   rW   r   rM   r[   rl   r   __classcell__)rU   s   @r*   r   r     s    "$@
! !r+   r   c                   H    \ rS rSrS rS rS rS rS rS r	S r
SS
 jrSrg	)r   iE  c                 B    [        [        5       5      U l        SU l        g NF)r	   r   r   _flagrK   s    r*   rM   Event.__init__P  s    tv&

r+   c           	          U R                   nU R                  (       a  SOSnSUR                   SUR                   S[	        U 5      S SU S3	$ )	Nsetunsetr   r   r   r   z: r   )rU   r   rV   rW   rY   )rL   r   statuss      r*   r[   Event.__repr__T  sL    nn**'3>>"!C$4$4#5T"T(2bPQRRr+   c                 8    U R                   R                  5         g r%   )r   r^   rK   s    r*   r^   Event._at_fork_reinitY  s    

""$r+   c                     U R                   $ r%   )r   rK   s    r*   is_setEvent.is_set]  s    zzr+   c                 V    SS K nUR                  " S[        SS9  U R                  5       $ )Nr   z+isSet() is deprecated, use is_set() insteadr8   r9   )r;   r<   r=   r   r   s     r*   isSetEvent.isSeta  s'     	C(Q	8{{}r+   c                     U R                      SU l        U R                   R                  5         S S S 5        g ! , (       d  f       g = fNT)r   r   r   rK   s    r*   r   	Event.setl  s,     ZZDJJJ!!# ZZs	   "8
Ac                 ^    U R                      SU l        S S S 5        g ! , (       d  f       g = fr   r   r   rK   s    r*   r   Event.clearw  s     ZZDJ ZZs   
,Nc                     U R                      U R                  nU(       d  U R                   R                  U5      nUsS S S 5        $ ! , (       d  f       g = fr%   )r   r   r   )rL   re   signaleds      r*   r   
Event.wait  s6     ZZzzH::??73	 ZZs   0A
Ar   r%   )r   rV   rW   r   rM   r[   r^   r   r   r   r   r   r   r0   r+   r*   r   r   E  s+    S
%		$r+   r   c                       \ rS rSrSS jrS rSS jrS rS rS r	S	 r
S
 rS rS r\S 5       r\S 5       r\S 5       rSrg)r   i  Nc                     US:  a  [        S5      e[        [        5       5      U l        X l        X0l        Xl        SU l        SU l        g )Nrb   zparties must be >= 1r   )	r   r	   r   r   _action_timeout_parties_staterJ   )rL   partiesactionre   s       r*   rM   Barrier.__init__  sB     Q;344tv&
r+   c                    U R                   nU R                  (       a*  SUR                   SUR                   S[	        U 5      S S3$ SUR                   SUR                   S[	        U 5      S SU R
                   SU R                   S3$ )	Nr   r   r   r   z	: broken>z
: waiters=r   r   )rU   brokenrV   rW   rY   	n_waitingr  r   s     r*   r[   Barrier.__repr__  s    nn;;s~~&a(8(8'9bhr])TTCNN#1S%5%5$6d2d8B- H NN+1T\\N!= 	>r+   c                    Uc  U R                   nU R                     U R                  5         U R                  nU =R                  S-  sl         US-   U R                  :X  a  U R                  5         OU R                  U5        UU =R                  S-  sl        U R                  5         sS S S 5        $ ! U =R                  S-  sl        U R                  5         f = f! , (       d  f       g = fra   )r  r   _enterrJ   r  _release_wait_exit)rL   re   indexs      r*   r   Barrier.wait  s     ?mmGZZKKMKKEKK1K19-MMO JJw'q 

 Z q 

 Zs#   2C6B4%C4'CC
C,c                     U R                   S;   a,  U R                  R                  5         U R                   S;   a  M,  U R                   S:  a  [        eg )Nr   rb   r   )r  r   r   r   rK   s    r*   r  Barrier._enter  sB    kkW$JJOO kkW$ ;;?$$ r+   c                      U R                   (       a  U R                  5         SU l        U R                  R                  5         g !   U R	                  5         e = fra   )r  r  r   r   _breakrK   s    r*   r  Barrier._release  sA    		||DKJJ!!#	KKMs   AA Ac                    ^  T R                   R                  U 4S jU5      (       d  T R                  5         [        eT R                  S:  a  [        eg )Nc                  "   > T R                   S:g  $ rF   r  rK   s   r*   <lambda>Barrier._wait.<locals>.<lambda>  s    DKK1,<r+   r   )r   r   r  r   r  rL   re   s   ` r*   r  Barrier._wait  s@    zz""#<gFFKKM$$;;?$$ r+   c                     U R                   S:X  a3  U R                  S;   a"  SU l        U R                  R                  5         g g g )Nr   r  )rJ   r  r   r   rK   s    r*   r  Barrier._exit  s;    ;;!{{g%

%%' & r+   c                    U R                      U R                  S:  a0  U R                  S:X  a  SU l        OU R                  S:X  a  SU l        OSU l        U R                   R                  5         S S S 5        g ! , (       d  f       g = f)Nr   r   )r   rJ   r  r   rK   s    r*   resetBarrier.reset  s`     ZZ{{Q;;!#"$DK[[B& #%DKJJ!!# ZZs   A"A88
Bc                 p    U R                      U R                  5         S S S 5        g ! , (       d  f       g = fr%   )r   r  rK   s    r*   abortBarrier.abort!  s     ZZKKM ZZs   '
5c                 F    SU l         U R                  R                  5         g Nr#  )r  r   r   rK   s    r*   r  Barrier._break+  s     

r+   c                     U R                   $ r%   )r  rK   s    r*   r  Barrier.parties1  s     }}r+   c                 <    U R                   S:X  a  U R                  $ grF   )r  rJ   rK   s    r*   r
  Barrier.n_waiting6  s    
 ;;!;;r+   c                      U R                   S:H  $ r*  r  rK   s    r*   r	  Barrier.broken?  s     {{b  r+   )r  r   rJ   r  r  r  NNr%   )r   rV   rW   r   rM   r[   r   r  r  r  r  r$  r'  r  propertyr  r
  r	  r   r0   r+   r*   r   r     sp    $>< 
 ($(      ! !r+   r   c                       \ rS rSrSrg)r   iE  r0   N)r   rV   rW   r   r   r0   r+   r*   r   r   E  s    r+   r   rb   c                     U [        5       -  $ r%   )_counter)name_templates    r*   _newnamer8  K  s    8:%%r+   c                   4   \ rS rSrSr  SSS.S jjrSS jrS rS rS	 r	S
 r
S r\(       a  S rS rS rSS jr\S 5       r\R&                  S 5       r\S 5       r\(       a  \S 5       rS r\S 5       r\R&                  S 5       rS rS rS rS rSrg)r   iZ  FN)daemonc                B   Uc  0 nU(       a  [        U5      nO$[        S5      nUb   UR                  nUSU S3-  nX l        X0l        X@l        XPl        Ub(  U(       a  [        5       (       d  [        S5      eX`l
        O[        5       R                  U l
        S U l        [        (       a  S U l        [!        5       U l        [%        5       U l        SU l        [*        R,                  U l        [1        5       U l        [4        R7                  U 5        g ! [         a     Nf = f)Nz	Thread-%dz ()z4daemon threads are disabled in this (sub)interpreterT)strr8  r   AttributeError_target_name_args_kwargs_daemon_threads_allowedrk   	_daemonicr
   r:  _ident_HAVE_THREAD_NATIVE_ID
_native_id_ThreadHandle_handler   _started_initializedr-   stderr_stderr_make_invoke_excepthook_invoke_excepthook	_danglingadd)rL   grouptargetrS   r@   rA   r:  target_names           r*   rM   Thread.__init__e  s    0 >Ft9DK(D!"(//KbQ//D 

577"#YZZ#N+-44DN!!"DO$ {{"9";d/ & s   D 
DDc                     U R                   R                  5         Ub#  Xl        [        (       a  U R	                  5         g g g r%   )rJ  r^   rE  rF  _set_native_idrL   	new_idents     r*   _after_forkThread._after_fork  s9    %%' #K%%##% &
 r+   c                 N   SnU R                   R                  5       (       a  SnU R                  R                  5       (       a  SnU R                  (       a  US-  nU R
                  b  USU R
                  -  -  nSU R                  R                  < SU R                  < SU< S	3$ )
Ninitialstartedstoppedz daemonz %sr   (z, z)>)	rJ  r   rI  is_donerD  rE  rU   r   r@  )rL   r   s     r*   r[   Thread.__repr__  s    ==!!F<<!!F>>iF;;"edkk))F!%!8!8$**fMMr+   c                    U R                   (       d  [        S5      eU R                  R                  5       (       a  [        S5      e[           U [
        U '   S S S 5         [        U R                  U R                  U R                  S9  U R                  R                  5         g ! , (       d  f       NS= f! [         a)    [           [
        U 	 S S S 5        e ! , (       d  f       e = ff = f)Nzthread.__init__() not calledz threads can only be started once)handler:  )rK  rk   rJ  r   _active_limbo_lock_limbo_start_joinable_thread
_bootstraprI  r:  	Exceptionr   rK   s    r*   startThread.start  s       =>>==!!ABBF4L  	"4??4<<*.++7 	    	#4L $ $#	s0   
B$ )B5 $
B25C(C	C(
C$	 C(c                      U R                   b&  U R                   " U R                  0 U R                  D6  U ? U ?U ?g ! U ? U ?U ?f = fr%   )r?  rA  rB  rK   s    r*   run
Thread.run  sG    	7||'djj9DLL9 dj$,dj$,s	   3< Ac                 f     U R                  5         g !   U R                  (       a	  [        c   g e = fr%   )_bootstrap_innerrD  r-   rK   s    r*   rh  Thread._bootstrap  s+    	!!#	~~$,s    00c                 "    [        5       U l        g r%   )r   rE  rK   s    r*   
_set_identThread._set_ident  s    kr+   c                 "    [        5       U l        g r%   )r"   rG  rK   s    r*   rW  Thread._set_native_id   s    +oDOr+   c                 4    U R                  5         [        (       a  U R                  5         U R                  R	                  5         [
           U [        U R                  '   [        U 	 S S S 5        [        (       a  [        R                  " [        5        [        (       a  [        R                  " [        5         U R                  5         U R!                  5         g ! , (       d  f       Nz= f!   U R                  U 5         N7= f! U R!                  5         f = fr%   )rs  rF  rW  rJ  r   re  rR   rE  rf  r3   r-   r   r'   r   rm  rO  _deleterK   s    r*   rp  Thread._bootstrap_inner  s    	OO%%##%MM#'+$4L $ {k*}..
 LLN $#.''-LLNs7   AD C(AD ;C- 
C*&D -D D Dc                 b    [            [        [        5       	 S S S 5        g ! , (       d  f       g = fr%   )re  rR   r   rK   s    r*   rx  Thread._delete  s    	$  s    
.c                    U R                   (       d  [        S5      eU R                  R                  5       (       d  [        S5      eU [	        5       L a  [        S5      eUb  [        US5      nU R                  R                  U5        g )NThread.__init__() not calledz'cannot join thread before it is startedzcannot join current threadr   )rK  rk   rJ  r   r
   maxrI  joinr  s     r*   r  Thread.join"  st    0   =>>}}##%%HII>##;<< '1oG'"r+   c                     U R                   $ r%   )r@  rK   s    r*   rS   Thread.nameH  s     zzr+   c                 $    [        U5      U l        g r%   )r=  r@  )rL   rS   s     r*   rS   r  S  s     Y
r+   c                     U R                   $ r%   )rE  rK   s    r*   identThread.identX  s     {{r+   c                     U R                   $ r%   )rG  rK   s    r*   	native_idThread.native_ide  s     ??"r+   c                     U R                   R                  5       =(       a    U R                  R                  5       (       + $ r%   )rJ  r   rI  ra  rK   s    r*   is_aliveThread.is_alivep  s,     }}##%Ddll.B.B.D*DDr+   c                     U R                   $ r%   )rD  rK   s    r*   r:  Thread.daemon{  s     ~~r+   c                     U R                   (       d  [        S5      eU(       a  [        5       (       d  [        S5      eU R                  R	                  5       (       a  [        S5      eXl        g )Nr}  z/daemon threads are disabled in this interpreterz)cannot set daemon status of active thread)rK  rk   rC  rJ  r   rD  )rL   daemonics     r*   r:  r    sS      =>>355PQQ==!!JKK!r+   c                 N    SS K nUR                  " S[        SS9  U R                  $ )Nr   z:isDaemon() is deprecated, get the daemon attribute insteadr8   r9   r;   r<   r=   r:  r   s     r*   isDaemonThread.isDaemon  s%     	R(Q	8{{r+   c                 D    SS K nUR                  " S[        SS9  Xl        g )Nr   z;setDaemon() is deprecated, set the daemon attribute insteadr8   r9   r  )rL   r  r;   s      r*   	setDaemonThread.setDaemon  s      	S(Q	8r+   c                 N    SS K nUR                  " S[        SS9  U R                  $ )Nr   z7getName() is deprecated, get the name attribute insteadr8   r9   r;   r<   r=   rS   r   s     r*   getNameThread.getName  s%     	O(Q	8yyr+   c                 D    SS K nUR                  " S[        SS9  Xl        g )Nr   z7setName() is deprecated, set the name attribute insteadr8   r9   r  )rL   rS   r;   s      r*   setNameThread.setName  s      	O(Q	8	r+   )rA  rD  rI  rE  rK  rO  rB  r@  rG  rJ  rM  r?  r:  rS   )NNNr0   Nr%   )r   rV   rW   r   rK  rM   rZ  r[   rj  rm  rh  rs  rF  rW  rp  rx  r  r3  rS   setterr  r  r  r:  r  r  r  r  r   r0   r+   r*   r   r   Z  s     L59!%9159vN87"(" 	.,%$#L   
[[  	 	 		# 
	#	E   ]]" "				r+   r   )_excepthook_ExceptHookArgs)print_exception)
namedtupler   z'exc_type exc_value exc_traceback threadc                     [        U 6 $ r%   )r  )r@   s    r*   r   r     s    %%r+   c                   U R                   [        :X  a  g [        b"  [        R                  b  [        R                  nO)U R                  b  U R                  R
                  nUc  g Og U R                  b  U R                  R                  nO
[        5       n[        SU S3USS9  [        U R                   U R                  U R                  US9  UR                  5         g )NzException in thread :Tfileflush)r  )exc_type
SystemExitr-   rL  threadrM  rS   r   print_print_exception	exc_valueexc_tracebackr  )r@   rL  rS   s      r*   r   r     s     ==J& 7[[F[[$[[((F~   ;;";;##D;D$TF!,	'8J8J$	&r+   c                     ^^^^^ [         m[        R                   mTc  [        S5      eTc  [        S5      e[        R                  m[        m[        mUUUUU4S jn U $ )Nzthreading.excepthook is Nonezsys.excepthook is Nonec                 Z  >  [         nUc  Tn[        / T
" 5       QU P5      nU" U5        S ng ! [         al  nSUl        ATb  TR                  b  TR                  nOU R
                  nT" SUSS9  Tb  TR                   b  TR                   nOT	nU" T
" 5       6    S nANtS nAff = f! S nf = f)NTz"Exception in threading.excepthook:r  )r   r   ri  __suppress_context__rL  rM  )r  hookr@   excrL  sys_excepthooklocal_print	local_sysold_excepthookold_sys_excepthooksys_exc_infos         r*   invoke_excepthook2_make_invoke_excepthook.<locals>.invoke_excepthook  s    	D|%!";LN";F";<DJ* D)  	,'+C$$)9)9)E"))<#41 $)=)=)I!*!5!5!3LN+#	,( Ds'   '- 
B#A"BB& B##B& &B*)r   r-   rk   exc_infor  )r  r  r  r  r  r  s    @@@@@r*   rN  rN    s^    
  N9::!344==LKI @ r+   c                   *    \ rS rSrSS jrS rS rSrg)r   i(  Nc                     [         R                  U 5        Xl        X l        Ub  UO/ U l        Ub  UO0 U l        [        5       U l        g r%   )r   rM   intervalfunctionr@   rA   r   finished)rL   r  r  r@   rA   s        r*   rM   Timer.__init__1  s=       ,D"	 & 2fr+   c                 8    U R                   R                  5         g r%   )r  r   rK   s    r*   cancelTimer.cancel9  s    r+   c                    U R                   R                  U R                  5        U R                   R                  5       (       d&  U R                  " U R
                  0 U R                  D6  U R                   R                  5         g r%   )r  r   r  r   r  r@   rA   r   rK   s    r*   rm  	Timer.run=  sT    4==)}}##%%MM49944r+   )r@   r  r  r  rA   r2  )r   rV   rW   r   rM   r  rm  r   r0   r+   r*   r   r   (  s     r+   r   c                       \ rS rSrS rSrg)_MainThreadiF  c                 P   [         R                  U SSS9  U R                  R                  5         [	        5       U l        [        U R
                  5      U l        [        (       a  U R                  5         [           U [        U R
                  '   S S S 5        g ! , (       d  f       g = f)N
MainThreadFrS   r:  )r   rM   rJ  r   _get_main_thread_identrE  _make_thread_handlerI  rF  rW  re  rR   rK   s    r*   rM   _MainThread.__init__H  sm    <>,.*4;;7!!!#'GDKK   s   :B
B%)rI  rE  N)r   rV   rW   r   rM   r   r0   r+   r*   r  r  F  s    (r+   r  c                   (    \ rS rSrS r\\4S jrSrg)_DeleteDummyThreadOnDeliX  c                 H    Xl         UR                  U l        U [        l        g r%   )_dummy_threadr  _tident_thread_local_info_track_dummy_thread_ref)rL   dummy_threads     r*   rM    _DeleteDummyThreadOnDel.__init__]  s     )#)) 6:2r+   c                     U   UR                  U R                  5      U R                  L a  UR                  U R                  S 5        S S S 5        g ! , (       d  f       g = fr%   )getr  r  pop)rL   re  rR   s      r*   __del___DeleteDummyThreadOnDel.__del__h  s>    {{4<<(D,>,>>DLL$/  s   AA
A)r  r  N)	r   rV   rW   r   rM   re  rR   r  r   r0   r+   r*   r  r  X  s    
	: *<W 0r+   r  c                   4    \ rS rSrS rS rSS jrSS jrSrg)	_DummyThreadiu  c                    [         R                  U [        S5      [        5       S9  U R                  R                  5         U R                  5         [        U R                  5      U l	        [        (       a  U R                  5         [           U [        U R                  '   S S S 5        [        U 5        g ! , (       d  f       N= f)NzDummy-%dr  )r   rM   r8  rC  rJ  r   rs  r  rE  rI  rF  rW  re  rR   r  rK   s    r*   rM   _DummyThread.__init__w  s    8J#768 	 	:*4;;7!!!#'GDKK   %  s   B44
Cc                     U R                   R                  5       (       d   U R                  R                  5       (       a  g[	        S5      e)NTzthread is not alive)rI  ra  rJ  r   rk   rK   s    r*   r  _DummyThread.is_alive  s6    ||##%%$--*>*>*@*@011r+   Nc                     [        S5      e)Nzcannot join a dummy thread)rk   r  s     r*   r  _DummyThread.join  s    788r+   c                 b    Ub  [         U l        SU l        SU l        [        R                  XS9  g )Nr  FrY  )r  rU   r@  rD  r   rZ  rX  s     r*   rZ  _DummyThread._after_fork  s.     (DN%DJ"DN45r+   )rU   rD  rI  r@  r%   )	r   rV   rW   r   rM   r  r  rZ  r   r0   r+   r*   r  r  u  s    
&2
96r+   r  c                  Z     [         [        5          $ ! [         a    [        5       s $ f = fr%   )rR   r   rT   r  r0   r+   r*   r
   r
     s+    y{## ~s    **c                  J    SS K n U R                  " S[        SS9  [        5       $ )Nr   z;currentThread() is deprecated, use current_thread() insteadr8   r9   )r;   r<   r=   r
   r;   s    r*   currentThreadr    s$     MMO$4r+   c                      [            [        [        5      [        [        5      -   sS S S 5        $ ! , (       d  f       g = fr%   )re  r   rR   rf  r0   r+   r*   r   r     s#     
7|c&k) 
		s   0
>c                  J    SS K n U R                  " S[        SS9  [        5       $ )Nr   z7activeCount() is deprecated, use active_count() insteadr8   r9   )r;   r<   r=   r   r  s    r*   activeCountr    s#     MMK$4>r+   c                  x    [        [        R                  5       5      [        [        R                  5       5      -   $ r%   )listrR   valuesrf  r0   r+   r*   
_enumerater    s$     !D$999r+   c                      [            [        [        R                  5       5      [        [        R                  5       5      -   sS S S 5        $ ! , (       d  f       g = fr%   )re  r  rR   r  rf  r0   r+   r*   r   r     s2     
GNN$%V]]_(== 
		s   ;A
Ac                 l   ^ ^^ [         (       a  [        S5      e[        R                  UU U4S j5        g )Nz$can't register atexit after shutdownc                     > T" T 0 TD6$ r%   r0   )argr)   rA   s   r*   r  "_register_atexit.<locals>.<lambda>  s    dC&:6&:r+   )_SHUTTING_DOWNrk   _threading_atexitsr   )r)   r  rA   s   ```r*   _register_atexitr    s%     ~ABB:;r+   )r   c                     [         R                  R                  5       (       a  [        5       (       a  g Sq[        [        5       H
  n U " 5         M     [        5       (       a  [         R                  R                  5         [        5         g r   )	_main_threadrI  ra  _is_main_interpreterr  reversedr  	_set_done_thread_shutdown)atexit_calls    r*   	_shutdownr    sh     ##%%*>*@*@ N   23 4 &&( r+   c                      [         $ r%   )r  r0   r+   r*   r   r   	  s
     r+   c                     [        5       q0 n  [        [        5          nUq[           [        [        5       5      nUR                  [        5        U H6  nX1L a  [        5       nUR                  US9  X0U'   M&  UR                  5         M8     [        R                  5         [        R                  5         [        R                  U 5        S S S 5        g ! [         a    [        5       n Nf = f! , (       d  f       g = f)Nr  )r   re  rR   r   rT   r  r  r   r  updaterP  rZ  rf  r   )
new_activecurrentthreadsr  r  s        r*   rZ  rZ    s      J )+& L	 jl#y!F  !""U"3$*5! ""$  	z"' 
	    -	  
	s   C B"C,C)(C),
C:register_at_fork)after_in_child)gos_ossysr-   _threadr;   timer   r   _weakrefsetr   	itertoolsr   rJ   _collectionsr   r   ImportErrorcollections__all__start_joinable_threadrg  daemon_threads_allowedrC  allocate_lockrG   LockType	_LockTyper  r  r  rH  r   r  r   r"   rF  r   r>  errorr   r   r>   r   r#   r   _threading_localr'   r3   r   r    r   r   r!   r   r   rC   r?   r	   r   r   r   r   rk   r   __next__r6  r8  re  rR   rf  rP  r   r  r   r  r   	tracebackr  r  r  __excepthook__rN  r   r  r  r  r  r
   r  r   r  r  r   r  r  r  r   r  r   rZ  r   r  r0   r+   r*   <module>r#     s       #  %,,< !66 !88 &&	$$ 11 %%	 77 33 #))M!NN?# mmmmG !!
'' %# $&{ {z q qhT Tn*!y *!ZO Oz`! `!F	 	
 !9& W 
	I	
d dN+<\ 0jF <
(& 
( W 0 0:66 6@
	
*	:	>  <   }6*!Z 3"##4 $g1  ,++,H  #"#
  G  '&&'H$  (=& 13O&(sY   H 'H/ H> -I 
I  H,+H,/H;:H;>I
	I
II !JJ