
    XhTB                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZ dej                  v sJ d dlZd dlmZ d dlZd dlZd dlmZmZ d dlmZ ed   Zd	Zd
j3                  ej4                  e      Z G d de      Z e       Zddde_        d Z  e e!d d      Z"d Z#d Z$d fdZ%d Z&d Z'd Z(d dfdefdZ)dde#fdde$fdd e%d       fd!d e&d"d      fd#d$ e'd%      fd&d$ e'd'      fd(d e&d)d      fd*d+e(fd,d- e%d.d/       fd0d1 e%d2      fd3d4 e)d5d6      fd7d8 e)d9      fd:d; e)d<      fd=d- e)d>e"      fgZ*d? Z+d@e,fdAZ-dB Z.dCe/fdDZ0dEe/fdFZ1 e/       dfd@e,dEe/dGe/fdHZ2dI Z3dJ Z4dK Z5dL Z6dM Z7dN Z8y)O    N)	find_spec)AnyUnionTupleDictLiteralpydevd)pydevd_runpy)logsockets)apifilemodulecodepidz2<filename> | -m <module> | -c <code> | --pid <pid>a  debugpy {0}
See https://aka.ms/debugpy for documentation.

Usage: debugpy --listen | --connect
               [<host>:]<port>
               [--wait-for-client]
               [--configure-<name> <value>]...
               [--log-to <path>] [--log-to-stderr]
               [--parent-session-pid <pid>]]
               [--adapter-access-token <token>]
               {1}
               [<arg>]...
c                       e Zd ZU dZeed   df   ed<   dZeee	e
f   df   ed<   dZdZdZee	df   ed<   dZeedf   ed<   dZdZi Zee	ef   ed<   dZee
df   ed	<   y)
OptionsN)connectlistenmodeaddressFtargettarget_kindconfigparent_session_pid)__name__
__module____qualname__r   r   r   __annotations__r   r   strintlog_tolog_to_stderrr   r   
TargetKindwait_for_clientadapter_access_tokenr   r   r   r        F/var/www/html/myenv/lib/python3.12/site-packages/debugpy/server/cli.pyr   r   0   s    6:D%+,d2
3:,0GU5c?D()0FM#FE#t)#+/Kz4'(/OFDcN+/c4i(/r)   r   noneT)qt
subProcessc                       fd}|S )Nc                      |       }|k  rt        dj                              |k\  rt        dj                              |S )Nzmust be >= {0}zmust be < {0})
ValueErrorformat)snparserstartstops     r*   parsezin_range.<locals>.parseB   sV    1IU-44U;<<T	_33D9::r)   r(   )r4   r5   r6   r7   s   ``` r*   in_ranger8   A   s     Lr)   c                 l    t        t        t        j                         t        j                  d       y )Nr   r   )printHELPsysstderrexitswitchits     r*   print_help_and_exitrC   P   s    	$SZZ HHQKr)   c                 `    t        t        j                         t        j                  d       y Nr   )r;   debugpy__version__r=   r?   r@   s     r*   print_version_and_exitrH   U   s    	'

HHQKr)   c                     | S Nr(   xs    r*   <lambda>rM   Z   s    q r)   c                       fd}|S )Nc                 J     t        |            }t        t        |       y rJ   )nextsetattroptions)argrB   valuer4   varnames      r*   dozset_arg.<locals>.do[   s    tBx %(r)   r(   )rU   r4   rV   s   `` r*   set_argrW   Z   s    ) Ir)   c                       fd}|S )Nc                 (    t        t               y rJ   )rQ   rR   )rS   rB   rT   rU   s     r*   rV   zset_const.<locals>.doc   s    %(r)   r(   )rU   rT   rV   s   `` r*   	set_constrZ   b   s    ) Ir)   c                       fd}|S )Nc                 |   t         j                  t        d      t        |      }|j	                  d      \  }}}|j                  d      }|st        j                         }|}	 t        |      }d|cxk  rdk  st        d       t        d      t         _
        ||ft         _        y # t        $ r d}Y Hw xY w)Nz---listen and --connect are mutually exclusive:z[]r   i   zinvalid port number)rR   r   r0   rP   
rpartitionstripr   get_default_localhostr"   	Exceptionr   )rS   rB   rT   hostsepportr   s         r*   rV   zset_address.<locals>.doj   s    ??&LMM R**3/c4zz$002DD	t9D T!E!233 "233,  	D	s   'B- -B;:B;r(   )r   rV   s   ` r*   set_addressrf   i   s    '* Ir)   c                    d}| j                  |      sJ | t        |      d  }t        |      }|t        j                  vrt        dj                  |            t        t        j                  |         }	 |t        u rddd|j                            }n ||      }|t        j                  |<   y # t        $ r& t        dj                  ||j                              w xY w)Nz--configure-zunknown property {0!r}TF)truefalsez{0!r} must be a {1})
startswithlenrP   rR   r   r0   r1   typeboollowerrb   r   )rS   rB   prefixnamerT   expected_types         r*   
set_configrr      s    F>>&!!!s6{}DHE7>>!188>??-.MUD !E25;;=AE!%(E !GNN4  U.55dM<R<RSTTUs   8'B3 3/C"c                     | S rJ   r(   rK   s    r*   rM   rM      s    1 r)   Fkindc                       fd}|S )Nc                    t         _         r| n
t        |            }t        |t              r0	 |j                  t        j                               }|t         _        y |t         _        y # t        $ rT 	 |j                  d      }n3# t        $ r' dd l	}|j                  |j                  d            }Y nw xY wY |t         _        y w xY w)Nutf-8r   F)rR   r   rP   
isinstancebytesdecoder=   getfilesystemencodingUnicodeDecodeErrorlocalegetpreferredencodingr   )rS   rB   r   r}   rt   r4   
positionals       r*   rV   zset_target.<locals>.do   s    "ztBx8fe$Os'@'@'BC   & OO#]]73F) O!#]]6+F+Fu+MNFO
  Os5   #A. .	C8B
	C
-B:7C9B::C
Cr(   )rt   r4   r   rV   s   ``` r*   
set_targetr      s     $ Ir)   z-(\?|h|-help)z-(V|-version)z--log-toz<path>r#   z--log-to-stderrr$   z--listenz	<address>r   z	--connectr   z--wait-for-clientr&   z--configure-.+z<value>z--parent-session-pidz<pid>r   c                      | rt        |       S d S rJ   )r"   rK   s    r*   rM   rM      s    fg\_`a\b mq r)   z--adapter-access-tokenz<token>r'    z
<filename>r   )r   z-mz<module>r   -cz<code>r   z--pidr   c               #      K   t        t        j                        dk\  rFt        j                  d   } t        j                  d= |  t        t        j                        dk\  rEy y w)N      )rk   r=   argv)rT   s    r*   consume_argvr      sE     
chh-1
HHQK chh-1
s   A!A&$A&argsc              #   ~   K   | t         j                  u rt               E d {    y | r| d   }| d= | | ry y 7 wrE   )r=   r   r   )r   rT   s     r*   consume_argsr      s?     sxx>!!GEQK  	"s    =;==c                  @   t               } t        |        t        |        t        j                  t        j                  dk(  rt        dt        z         t        j                  t        d      t        j                  t        j                  dk7  rt        d      t        j                  t        j                  dk7  rt        d      t        j                  dk(  rt        j                  rt        d      t        j                  J t        j                  J y )	Nr   zmissing target: z(either --listen or --connect is requiredr   z)--adapter-access-token requires --connectz'--parent-session-pid requires --connectr   z(--pid does not support --wait-for-client)setparse_args_from_command_lineparse_args_from_environmentrR   r   r0   TARGETr   r'   r   r   r&   r   seens    r*   
parse_argsr      s     5D &% ~~2!5+f455||CDD##/GLLI4MDEE!!-',,)2KBCCe#(?(?CDD***??&&&r)   r   c                 8    t        t        j                  |        y rJ   )parse_args_helperr=   r   r   s    r*   r   r      s    chh%r)   seenFromCommandLinec                     t         j                  j                  d      }|sy |j                         }t	               }t        || |d       y )NDEBUGPY_EXTRA_ARGVT)osenvirongetsplitr   r   )r   r   argsListseenFromEnvironments       r*   r   r      s>    ::>>./Dzz|H%h 35H$Or)   r   c                 |   t        |       }	 	 t        |      }|}|j                  d      sd}t        D ]$  \  }}}	t        j                  d|z   dz   |      s$ n t        d|z         |s||v rt        d|z         |r||v rt        d|z         |r||v r|r|j                  |       n|j                  |       	  |	||       |st        j                  y # t        $ r Y y w xY w# t        $ r  |J t        dj                  ||            t        $ r!}
t        d	j                  |||
            d }
~
ww xY w)
N-r   z^(z)$zunrecognized switch z"duplicate switch on command line: z#duplicate switch from environment: z{0}: missing {1}zinvalid {0} {1}: {2})r   rP   StopIterationrj   switchesrematchr0   addr1   rb   rR   r   )r   r   r   isFromEnvironmentiteratorrS   rA   patternplaceholderactionexcs              r*   r   r     s}    D!H
	x.C   %F,4 	>(G[&xxw-v6	> 3f<== !V/B%BAFJKK6-@#@BVKLL6-@#@ !#''/#''/	V3! !W^^%?Y   		>  	M***/66v{KLL 	V3::6;PSTUU	Vs)   C >	C* 	C'&C'*0D;D66D;c                 
   | t         j                  d<   t        j                  dt         j                         t	        j
                  t        j                         t        j                  j                  dd      dk7  rt        j                  dk(  r4t        j                  $t	        j                  t        j                         nt        j                  dk(  rSt        j                  Ct	        j                  t        j                  t        j                  t        j                          n"t#        t%        t        j                              t        j&                  rt	        j&                          dt        j                  d<   y )	Nr   zsys.argv after patching: {0!r}DEBUGPY_RUNNINGri   rh   r   r   )access_tokenr   )r=   r   r   debugrF   	configurerR   r   r   r   r   r   r   r   r   r'   r   AssertionErrorreprr&   )argv_0s    r*   start_debuggingr   <  s     CHHQKII.9gnn%	zz~~'1V;<<8#(CNN7??+\\Y&7??+FOOGOO':V:Vkr  lF  lF  G gll!344""##%$*BJJ !r)   c                     t         j                  } t        |        | _t        j                  j                  |       r@t        j                  j                  |       }t        j                  j                  d|       nt        j                  d|        t        j                  d       t        j                  d|        t        j                  | d       y )Nr   zNot a file: {0!r}Pre-launch environment:zRunning file {0!r}__main__)run_name)rR   r   r   r   pathisfiledirnamer=   insertr   r   describe_environmentinforunpyrun_path)r   dirs     r*   run_filer   T  s    ^^FF bggnnV4ggoof%3		%v.67HH!6*	NN6J/r)   c                     t         j                  j                  dt        d             t         j                  d   } 	 t
        j                  d nt        t
        j                        }||j                  } t        |        t        j                  d       t        j                  dt
        j                         	 t        j                   } |t
        j                  d       y # t        $ r t        j                  d       Y w xY w# t"        $ r= t        j$                  d       t        j&                  t
        j                  d	       Y y w xY w)
Nr   r   z*Error determining module path for sys.argvr   zRunning module {0!r}T)
alter_argvzArunpy._run_module_as_main is missing, falling back to run_module.)	alter_sys)r=   r   r   r!   r   rR   r   r   originrb   r   swallow_exceptionr   r   r   r   _run_module_as_mainAttributeErrorwarning
run_module)r   specrun_module_as_mains      r*   r   r   i  s     HHOOAs2w XXa[FL~~-t9W^^3L[[F F67HH#W^^4<"66
 	7>>d;%  LJKL  9WX489s$   9C% <D	 %DD	AEEc                     t         j                  t        j                  j	                  dt        d             t        t         j                  t        d      t        d            } t        t        d             t        j                  d       t        j                  dt         j                         t        | i        y t        j                  d       y )	Nr   r   z<string>execr   r   zRunning code:

{0}zNo target to run.)rR   r   r=   r   r   r!   compiler   r   r   r   evalerror)r   s    r*   run_coder     s    ~~!3r7#w~~s:FDD	"  !:;'8T2		%&r)   c                     t         j                  } t        j                  d|        d }t        j
                  j                  t        j                  j                        }t        j
                  j                  |      sJ  ||      }t         j                  t         j                  t         j                  t         j                  t         j                  d} |t!        j"                  |            }d}|j%                  dd      j%                  dd      j'                  ||      }t        j                  d	|j%                  d
d             h dt)        |      z  rJ d       t        j
                  j+                  t        j
                  j                  t,        j                        d      }t        j
                  j                  |      sJ t.        j
                  j1                  |       	 dd l}t        j                  d|        |j5                  | |dt7        t	        j8                  dd                   t        j                  d|        y # t:        $ r t        j<                  d|        Y 8w xY w)Nz!Attaching to process with PID={0}c                 P    | #t        t        | j                  d                  S d S )Nrw   )list	bytearrayencode)r2   s    r*   rM   zattach_to_pid.<locals>.<lambda>  s"    Q]tIahhw&789 PT r)   )r   r   r&   r#   r'   a9  
import codecs;
import json;
import sys;

decode = lambda s: codecs.utf_8_decode(bytearray(s))[0] if s is not None else None;

script_dir = decode({script_dir});
setup = json.loads(decode({setup}));

sys.path.insert(0, script_dir);
import attach_pid_injected;
del sys.path[0];

attach_pid_injected.attach(setup);
r   
)
script_dirsetupzCode to be injected: 
{0};z;
>   r   r   "'zOInjected code should not contain any single quotes, double quotes, or newlines.pydevd_attach_to_processr   z,Injecting code into process with PID={0} ...T DEBUGPY_ATTACH_BY_PID_DEBUG_INFO0)connect_debugger_tracingshow_debug_infoz#Code injection into PID={0} failed:z&Code injection into PID={0} completed.)rR   r   r   r   r   r   r   rF   server__file__existsr   r   r&   r#   r'   jsondumpsreplacer1   r   joinr	   r=   appendadd_code_to_python_processrun_python_coder"   getenvrb   reraise_exception)r   r   r   r   python_codepydevd_attach_to_process_pathr   s          r*   attach_to_pidr     s   
..CHH0#6TF!8!89J77>>*%%%
#J ??"22.. ' < <E 4::e$%EK" 	D"%	r		:U	3 
 HH);+>+>sE+JK 	[!11YXY  %'GGLL
(*D%! 77>>7888HHOO12J)?E"22%)		*Lc RS	 	3 	
 HH5s;  JCSIJs   1AI I65I6c                  f   t        t        j                        } 	 t                t        j                  #t        j                  t        j                         t        j                  r#t        j                  t        j                         t        j                          t!        j"                  t        d      | t        j                         	 t        j$                  0t&        t(        t*        t,        dt        j$                     } |        y y # t        $ r`}t        t        t              t        d      z   t        |      z   t        j                         t        j                  d       Y d }~Nd }~ww xY w# t.        $ r,}t!        j0                  d|j2                  d       Y d }~y d }~ww xY w)	Nz
Error: r:   r   z=sys.argv before parsing: {0!r}
         after parsing:  {1!r}r   z%Debuggee exited via SystemExit: {0!r}r   )level)r   r=   r   r   rb   r;   r!   r<   r>   r?   rR   r#   rF   r$   r   ensure_loggingr   r   r   r   r   r   r   
SystemExitr   r   )original_argvr   runs      r*   mainr     s,   NM
 ~~!w~~&szz"HHOP
* $ $	
 !!#C E +%  c$i#k**SX5CJJG4  
3SXXW	
 	

s0   
D ?E; 	E8AE33E8;	F0"F++F0)9r   r   r   r=   importlib.utilr   typingr   r   r   r   r   modulesr	   _pydevd_bundler
   r   rF   debugpy.serverdebugpy.commonr   r   r   r%   r   r1   rG   r<   objectr   rR   r   r8   r"   r   rC   rH   rW   rZ   rf   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   r)   r*   <module>r     s<  
  	 	 
 $ 3 3
 3;;   1   ' 45
	= F $
0f 
0 )d3	 sAt

 ) 2!* *5% Z 8 4GH4JKGH4EFIot4TUK4IJK	4JKI>OQU4VW	J?G<PRq4rsG<R4ST JvRV4WX	
Jx4HI	Jv4FGJuc4JK+6t '2&s &PS P  #u	4
44 4n+00*<B' B<J!
r)   