+
    BiFe                        ^ RI t^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHt RtRP!                  ]]P"                  ! 4       4      t]R,           t]P&                  '       d   ^ RIt]P*                  ! R]4      tRt]P.                  R8X  do   ]	P0                  ! 4       P2                  ^8  dN   ]R,           t ]P5                  ]	P6                  ! 4       4       ]! R	]: R
]	P6                  ! 4       : R24       RtMFME]P&                  '       g4   ]	P2                  R=9  d#    RP=                  ]	P6                  ! 4       4        Rt R> F0  t! ]PD                  ! ]PF                  ! ]!4      4      ]!8w  d   ]$h ]!t  M	  ]PJ                  ! 4       t&Rt'R? F$  t ]P=                  ]	P6                  ! 4       4       K&  	  ] '       d   ]] ,           t)MRt)]);'       g    ]t*R t+Rs,R t-R t.Rs/R t0R t1Rs2R t3R t4Rs5R t6R t7]Pp                  RR/R l4       t9Rs:R t;R t<R t=R t>]	P2                  P                  R 4      '       d   R@R! lt@R" tAR# tBR$ tCR% tDM]P|                  tA]P                  tBR& tCR' tDR( tER) tF]Pp                  RAR* l4       tG]Pp                  R@R+ l4       tH]Pp                  RBR, l4       tIR- tJ]Pp                  R. 4       tKR/ tL ! R0 R14      tMR2 tN]O! ]R34      '       d   ]Pp                  R4 4       tPM]Pp                  R5 4       tP ! R6 R7]P                  P                  4      tS ]P                  '       d"   ^ RIUtU]UP                  ! R8R9R:7      tW^tX^tY^tZ^t[M]\h ]Pp                  R; 4       t]R#   ] d     EL<i ; i  ] d-    ]RP=                  ]	P6                  ! 4       R4      ,           t ELri ; i  ]$ d     EK}  i ; i  ] db     ]P=                  ]	P6                  ! 4       ]	PP                  ! 4       4       M  ] d      EK}  i ; i]PF                  ! ]4      ],           t'  EKw  i ; i  ]^]\3 d    R< t] R# i ; i)C    N)supportz@testz	{}_{}_tmpu   -àòɘŁğNFDntu   -共Ł♡ͣzWARNING: The filename z, CAN be encoded by the filesystem encoding (z.). Unicode filename tests may not be effective   s   -surrogateescape c                     \        \        R4      p  V P                  4       V P                  4        \	        \        4       #   T P                  4        \	        \        4       i ; i)zT
Create an invalid file descriptor by opening and closing a file and return
its fd.
wb)openTESTFNfilenocloseunlinkfiles    -/usr/lib/python3.14/test/support/os_helper.pymake_bad_fdr      sB    
 D{{}

v 	

vs   A !A"c                     \         e   \         # \        P                  P                  \        4      p V R,           p \        P
                  ! W4       Rp\        P                  ! V4       Vs V#   \        \        \        3 d	    Rp Ts T# i ; i)Ncan_symlinkTF)
_can_symlinkospathabspathr   symlinkremoveOSErrorNotImplementedErrorAttributeError)srcsymlink_pathcans      r   r   r      s     ''//&
!C&L 


3% 			,LJ (.9  LJs   A. .BBc                f    \        4       pRpV'       d   V # \        P                  ! V4      ! V 4      # )z8Skip decorator for tests that require functional symlinkz*Requires functional symlink implementation)r   unittestskiptestokmsgs   &  r   skip_unless_symlinkr)      s)    	B
6C438==-d33    c                  x    \         f.   \        \        R4      ;'       d    \        P                  '       * s \         # )Nlink)_can_hardlinkhasattrr   r   
is_android r*   r   can_hardlinkr1      s-      F+FFG4F4F0Fr*   c                 f    \        4       pR pV'       d   V # \        P                  ! V4      ! V 4      # )zrequires hardlink support)r1   r#   r$   r%   s   &  r   skip_unless_hardlinkr3      s)    	B
%C438==-d33r*   c                  2   ^ RI p \        e   \        # \        \        R4      '       g   RpVsV# ^ RIpV P                  4       pV P                  VR7      w  rE \        \        R4      ;_uu_ 4       p \        P                  ! VRR4       \        P                  ! VRR	4       \        P                  ! VP                  4       RR4       VP                  4       p\        P                  ! R
V4      pVRJ ;'       g    \        VP                  ^4      4      ^'8  pRRR4       \#        \        4       \#        V4       \%        V4       XsV#   \          d    Rp L@i ; i  + '       g   i     LL; i  \#        \        4       \#        T4       \%        T4       i ; i)r   NsetxattrFdirr
   s	   user.testr*   s   trusted.foos   42z2.6.(\d{1,2}))tempfile
_can_xattrr.   r   platformmkdtempmkstempr   r   r5   r   releaserematchintgroupr   r   rmdir)	r8   r!   r:   tmp_dirtmp_fptmp_namefpkernel_versionms	            r   	can_xattrrI      sI   2z"". JJ- 	""$#+++8	fd##r  KKc:KK.%@KK		\3?%-%5%5%7N!1>BAt)<<s1771:"'<C $ 6N8'NJJ   C  $# 6N8'NsC   E/ 0E2B&E	E/ 	EEEEE,	'E/ /'Fc                f    \        4       pRpV'       d   V # \        P                  ! V4      ! V 4      # )zDSkip decorator for tests that require functional extended attributesz(no non-broken extended attribute support)rI   r#   r$   r%   s   &  r   skip_unless_xattrrK      s)    	B
4C438==-d33r*   c                     \         e   \         # \        \        R4      '       g	   Rs \         #  \        \        R4      ;_uu_ 4       p  \        P
                  ! \        R4       \        P                  ! \        4      P                  p\        P
                  ! \        R4       \        P                  ! \        4      P                  p\        P                  ! V4      \        P                  ! V4      8g  pR R R 4       \        \        4       Xs V#   \         d   pRp R p?L-R p?ii ; i  + '       g   i     L=; i  \        \        4       i ; i)NchmodFr
   im  i  )
_can_chmodr.   r   r   r   rM   statst_modeS_IMODEr   r   )fmode1mode2r!   es        r   	can_chmodrV     s    2w
&$1A'//'// ll5)T\\%-@@   	vJJ     	vsN   D; D(A>D-D(3D; D%D D( D%%D((D8	3D; ;Ec                f    \        4       pRpV'       d   V # \        P                  ! V4      ! V 4      # )zXSkip tests that require working os.chmod()

WASI SDK 15.0 cannot change file mode bits.
zrequires working os.chmod())rV   r#   r$   r%   s   &  r   skip_unless_working_chmodrX      s+    
 
B
'C438==-d33r*   quietFc             #    "   \         P                  ! V 4      p Rx   \         P                  ! WP                  4       R#   \         dF   pT'       g   h \
        P                  ! RT : RTP                   RT 2\        ^R7        Rp?R# Rp?ii ; i   \         P                  ! YP                  4       i   \         dE   pT'       g   h \
        P                  ! RT : RTP                   RT 2\        ^R7        Rp?i Rp?ii ; i; i5i)a:  Context manager that restores the mode (permissions) of *path* on exit.

Arguments:

  path: Path of the file to restore the mode of.

  quiet: if False (the default), the context manager raises an exception
    on error.  Otherwise, it issues only a warning and keeps the current
    working directory the same.

Nz.tests may fail, unable to restore the mode of z to z: )
stacklevel)r   rO   rM   rP   r   warningswarnRuntimeWarning)r   rY   
saved_modeexcs   &$  r   	save_modera   *  s      J
8	8HHT--. 	8MMJ!HD););(<BseE(Q8 8	8	8HHT--. 	8MMJ!HD););(<BseE(Q8 8	8sh   DB  A DB:BDBDD	 B76D	7D:D<D	DD		Dc            	         \        4       '       g   R s\        e   \        #  \        \        R4      ;_uu_ 4       p \        P
                  ! \        R4        \        \        R4      ;_uu_ 4         RRR4       RsRRR4        \        P
                  ! \        R4       \        \        4       \        #   + '       g   i     LK; i  \         d    R s L[i ; i  + '       g   i     Lg; i  \         d     L[i ; i   \        P
                  ! \        R4       M  \         d     Mi ; i\        \        4       i ; i)FNr
      Ti  )rV   _can_dac_overrider   r   r   rM   r   r   )rR   s    r   can_dac_overridere   K  s     ;;!$  &$1HHVU#)&$'' (
 %)!  	HHVU# 	v (' *$)!*    			HHVU# 		vs   C> CC/B4	1C9C;C> C- 4C?CCCCCC*	%C> -C;:C;>D= DD=D*'D=)D**D=c                 p    \        4       '       * pR pV'       d   V # \        P                  ! V4      ! V 4      # )z"incompatible with CAP_DAC_OVERRIDEre   r#   r$   r%   s   &  r   skip_if_dac_overriderh   g  s-    	B
.C438==-d33r*   c                 f    \        4       pR pV'       d   V # \        P                  ! V4      ! V 4      # )zrequires CAP_DAC_OVERRIDErg   r%   s   &  r   skip_unless_dac_overriderj   m  s*    		B
%C438==-d33r*   c                 N     \        V 4       R #   \        \        3 d     R # i ; iN)_unlinkFileNotFoundErrorNotADirectoryErrorfilenames   &r   r   r   s  s'    12 s    $$winc                    V ! V4       V'       d   TpM-\         P                  P                  V4      w  r4T;'       g    R pRpVR8  dT   \         P                  ! V4      pV'       d   V'       g    R# XV9   g   R# \        P
                  ! V4       V^,          pKZ  \        P                  ! \        4      P                  RVR^R7       R# ).gMbP?g      ?Nz+tests may fail, delete still pending for %sT)
stack_infor[   )
r   r   splitlistdirtimesleeplogging	getLogger__name__warning)funcpathnamewaitalldirnamenametimeoutLs   &&&    r   _waitforr   {  s    XGGGMM(3MGnnG m 

7#A AA '+aiJJwqLG(#++9	 	, 	
r*   c                 :    \        \        P                  V 4       R # rl   )r   r   r   rp   s   &r   rm   rm     s    H%r*   c                 :    \        \        P                  V 4       R # rl   )r   r   rB   r   s   &r   _rmdirr     s    7#r*   c                 `   aa ^ RI Ho VV3R lo\        SV RR7       \        V3R lV 4       R# )r   
_force_runc                   < S! V \         P                  V 4       F  p\         P                  P                  W4      p \         P                  ! V4      P
                  p\        P                  ! V4      '       d)   \        SVRR7       S! V\         P                  V4       K  S! V\         P                  V4       K  	  R#   \         d0   p\        R T: RT: 2\        P                  R7       ^ p Rp?LRp?ii ; i)zsupport.rmtree(): os.lstat(z) failed with r   NTr   )r   rw   r   joinlstatrP   r   printsys
__stderr__rO   S_ISDIRr   rB   r   )r   r   fullnamemoder`   r   _rmtree_inners   &    r   r   _rmtree.<locals>._rmtree_inner  s    "4T:77<<388H-55D <<%%]HdCx8<xH= ;  %s,"~~/ D	s    B??C9
%C44C9Tr   c                 4   < S! V \         P                  V 4      # rl   )r   rB   )pr   s   &r   <lambda>_rmtree.<locals>.<lambda>  s    :a15r*   N)test.supportr   r   )r   r   r   s   &@@r   _rmtreer     s$    +	> 	d35t<r*   c                      ^ RI pVP                  ! \        V 4      ^,          4      pVP                  P                  P                  W\        V4      4      pV'       d   VRV #  V #   \         d     T # i ; i)r   N)ctypescreate_unicode_bufferlenwindllkernel32GetLongPathNameWImportError)r   r   bufferlengths   &   r   	_longpathr     s|    
	'
 11#d)a-@F]]++<<T=@[JFgv&   	 	s   A' 'A65A6c                    a ^ RI p VP                  V 4       R#   \         d     Mi ; iT3R loS! T 4       \        P                  ! T 4       R# )r   Nc                   < ^ RI Hp V! V \        P                  V 4       F  p\        P                  P                  W4      p \        P                  ! V4      P                  p\        P                  ! V4      '       d#   S! V4       V! V \        P                  V4       K  V! V \        P                  V4       K  	  R#   \         d    ^ p Lki ; i)r   r   N)r   r   r   rw   r   r   r   rP   r   rO   r   rB   r   )r   r   r   r   r   r   s   &    r   r   r     s    /"4T:77<<388H-55D <<%%!(+tRXXx8tRYY9 ;  Ds    B??CC)shutilrmtreer   r   rB   )r   r   r   s   & @r   r   r     sF    	MM$ 			: 	d
s    ((c                     V # rl   r0   r   s   &r   r   r         r*   c                 B     \        V 4       R #   \         d     R # i ; irl   )r   rn   r   s   &r   rB   rB     s     w     c                 B     \        V 4       R #   \         d     R # i ; irl   )r   rn   r   s   &r   r   r     s      r   c           
   #  f  "   ^ RI pRpV f3   VP                  4       p Rp\        P                  P	                  V 4      p M \        P
                  ! V 4       RpV'       d   \        P                  ! 4       p V x  V'       d*   X\        P                  ! 4       8X  d   \        V 4       R# R# R#   \         dC   pT'       g   h \        P                  ! \        4      P                  RT TTR^R7        Rp?LRp?ii ; i  T'       d(   X\        P                  ! 4       8X  d   \        T 4       i i i ; i5i)a  Return a context manager that creates a temporary directory.

Arguments:

  path: the directory to create temporarily.  If omitted or None,
    defaults to creating a temporary directory using tempfile.mkdtemp.

  quiet: if False (the default), the context manager raises an exception
    on error.  Otherwise, if the path is specified and cannot be
    created, only a warning is issued.

NFTz;tests may fail, unable to create temporary directory %r: %sexc_inforu   r[   )r8   r;   r   r   realpathmkdirr   rz   r{   r|   r}   getpidr   )r   rY   r8   dir_createdr`   pids   &&    r   temp_dirr     s      K|!ww%	HHTNK iik
 3"))+-4L .;%  
	h'//M 0  
	$ 3"))+-4L .;sM   =D1 B- D1 D16C= :3D1-C:88C50D15C::D1=1D..D1c           
   #    "   \         P                  ! 4       p \         P                  ! \         P                  P	                  V 4      4        \         P                  ! 4       x  \         P                  ! V4       R#   \
         dC   pT'       g   h \        P                  ! \        4      P                  RT TTR^R7        Rp?LxRp?ii ; i  \         P                  ! T4       i ; i5i)aO  Return a context manager that changes the current working directory.

Arguments:

  path: the directory to use as the temporary current working directory.

  quiet: if False (the default), the context manager raises an exception
    on error.  Otherwise, it issues only a warning and keeps the current
    working directory the same.

zHtests may fail, unable to change the current working directory to %r: %sTr   N)
r   getcwdchdirr   r   r   rz   r{   r|   r}   )r   rY   	saved_dirr`   s   &&  r   
change_cwdr   $  s      		I

!!$'(iik
  
(#++ 	, 	
 	

 	s@   C'3A< C $C'<C	8C?C'C		C'C$$C'c           	   #     "   \        WR7      ;_uu_ 4       p\        W!R7      ;_uu_ 4       pVx  RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i5i)a  
Context manager that temporarily creates and changes the CWD.

The function temporarily changes the current working directory
after creating a temporary directory in the current directory with
name *name*.  If *name* is None, the temporary directory is
created using tempfile.mkdtemp.

If *quiet* is False (default) and it is not possible to
create or change the CWD, an error is raised.  If *quiet* is True,
only a warning is raised and the original CWD is used.

)r   rY   )rY   N)r   r   )r   rY   	temp_pathcwd_dirs   &&  r   temp_cwdr   F  sE      
t	)	)Y	//7M 0 
*	)// 
*	)	)s1   A*AA	A
A*AAA'	!	A*c                    \         P                  ! V \         P                  \         P                  ,          \         P                  ,          4      p\         P
                  ! V4       R# )z>Create an empty file. If the file already exists, truncate it.N)r   r   O_WRONLYO_CREATO_TRUNCr   )rq   fds   & r   create_empty_filer   Z  s3    	2;;3bjj@	ABHHRLr*   c              #  n  "   \         P                  P                  V 4      '       g   Q h\         P                  p\	        \         R4      '       d   V\         P
                  ,          p\         P                  ! W4      p Vx  \         P                  ! V4       R#   \         P                  ! T4       i ; i5i)z&Open a file descriptor to a directory.O_DIRECTORYN)r   r   isdirO_RDONLYr.   r   r   r   )r   flagsdir_fds   &  r   open_dir_fdr   `  st      77==KKEr=!!WWT!F
s   A;B5>B B5B22B5c                T   ^ RI pVP                  V R7      ;_uu_ 4       pVP                  pVP                  4       pWC8X  d   VP	                  4       p \
        P                  P                  W44      uuRRR4       #   \         d     RRR4       R# i ; i  + '       g   i     R# ; i)zKDetects if the file system for the specified directory
is case-insensitive.Nr6   F)	r8   NamedTemporaryFiler   upperlowerr   r   samefilern   )	directoryr8   base	base_path	case_paths   &    r   fs_is_case_insensitiver   n  s     		$	$	$	3	3tII	OO%	!!)I	77##I9 
4	3 ! 	 
4	3	 
4	3	3s)   3BA<<BBBBB'	c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )FakePathi}  z0Simple implementation of the path protocol.
    c                    Wn         R # rl   r   )selfr   s   &&r   __init__FakePath.__init__  s    	r*   c                $    R V P                   : R2# )z
<FakePath >r   r   s   &r   __repr__FakePath.__repr__  s    DII=**r*   c                    \        V P                  \        4      '       gA   \        V P                  \        4      '       d-   \	        V P                  \        4      '       d   V P                  hV P                  # rl   )
isinstancer   BaseExceptiontype
issubclassr   s   &r   
__fspath__FakePath.__fspath__  sH    tyy-00tyy$''499m44))O99r*   r   N)
r|   
__module____qualname____firstlineno____doc__r   r   r   __static_attributes____classdictcell____classdict__s   @r   r   r   }  s     + r*   r   c                    \         P                  P                  R4      '       d   Rp M\        P                  '       d   Rp MRp V e*    \
        P                  ! V 4      p\        V4      ^,
          # Rp\        \
        R4      '       d    \
        P                  ! R4      pRp\         P                  R8X  dR    ^ RIpVP                   / pVP                  VP                  VP                   3 F  pVP                  V^ 4      W5&   K  	   ^ p\'        V4       F9  p \
        P(                  ! V4      p\
        P*                  ! V4       V^,          pK;  	  VeC   XP                  VP                  VP                   3 F  pVP                  WSV,          4       K  	  V#   \         d     EL8i ; i  \         d     ELi ; i  \"        \$        3 d     Li ; i  \         d,   p	T	P,                  \,        P.                  8w  d   h  Rp	?	K  Rp	?	ii ; i  TeD   XP                  TP                  TP                   3 F  pTP                  YST,          4       K  	  i i ; i)	z/Count the number of open file descriptors.
    z/proc/self/fdz/dev/fdNrc   sysconfSC_OPEN_MAXwin32)linuxandroidfreebsd
emscripten)r   r:   
startswithr   is_appler   rw   r   rn   r.   r   r   msvcrtCrtSetReportModeCRT_WARN	CRT_ERROR
CRT_ASSERTr   r   rangedupr   errnoEBADF)
fd_pathnamesMAXFD	old_modesr  report_typecountr   fd2rU   s
             r   fd_countr    s.    ||LMM!					JJw'E u:>! Er9	JJ}-E I
||w	D##
 I & & 0 0 & 1 1 3 *0)@)@AB*D	& 3M,B	 ffRj
 
    & & 0 0 & 1 1 3 ''{5KL 3
 La ! 		  		 , 		$  77ekk) *   & & 0 0 & 1 1 3 ''{5KL 3 !sm   	'F 
F- 8F? 	H G0#H F*)F*-F<;F<?GGH! HH HH A	Iumaskc              #     "   \         P                  ! V 4      p Rx  \         P                  ! V4       R#   \         P                  ! T4       i ; i5i)z8Context manager that temporarily sets the process umask.N)r   r  )r  oldmasks   & r   
temp_umaskr    s4      ((5/	HHWBHHWs   A6 AAAc              #     "   Rx  R# 5i)z"no-op on platforms without umask()Nr0   )r  s   &r   r  r    s
      	s   	c                   l   a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tRtV tR# )EnvironmentVarGuardi  z\Class to help protect the environment variable properly.

Can be used as a context manager.
c                >    \         P                  V n        / V n        R # rl   )r   environ_environ_changedr   s   &r   r   EnvironmentVarGuard.__init__  s    

r*   c                (    V P                   V,          # rl   )r  r   envvars   &&r   __getitem__EnvironmentVarGuard.__getitem__  s    }}V$$r*   c                    WP                   9  d)   V P                  P                  V4      V P                   V&   W P                  V&   R # rl   r  r  getr   r   values   &&&r   __setitem__EnvironmentVarGuard.__setitem__  s5    &$(MM$5$5f$=DMM&! %fr*   c                    WP                   9  d)   V P                  P                  V4      V P                   V&   WP                  9   d   V P                  V R # R # rl   r$  r  s   &&r   __delitem__EnvironmentVarGuard.__delitem__  sD    &$(MM$5$5f$=DMM&!]]"f% #r*   c                6    V P                   P                  4       # rl   )r  keysr   s   &r   r.  EnvironmentVarGuard.keys  s    }}!!##r*   c                ,    \        V P                  4      # rl   )iterr  r   s   &r   __iter__EnvironmentVarGuard.__iter__  s    DMM""r*   c                ,    \        V P                  4      # rl   )r   r  r   s   &r   __len__EnvironmentVarGuard.__len__  s    4==!!r*   c                    W V&   R # rl   r0   r&  s   &&&r   setEnvironmentVarGuard.set  s	    Vr*   c               "    V.VO F  pW K  	  R# )z(Unset one or more environment variables.Nr0   )r   r   envvarsevs   ""* r   unsetEnvironmentVarGuard.unset  s    $G$B %r*   c                    \        V 4      # rl   )dictr   s   &r   copyEnvironmentVarGuard.copy  s    Dzr*   c                    V # rl   r0   r   s   &r   	__enter__EnvironmentVarGuard.__enter__  r   r*   c                    V P                   P                  4        F8  w  r#Vf"   W P                  9   d   V P                  V K(  K*  W0P                  V&   K:  	  V P                  \        n        R # rl   )r  itemsr  r   r  )r   
ignore_exckvs   &*  r   __exit__EnvironmentVarGuard.__exit__  sV    mm))+FQy%a( & $%a  , ]]
r*   )r  r  N)r|   r   r   r   r   r   r!  r(  r+  r.  r2  r5  r8  r=  rA  rD  rK  r   r   r   s   @r   r  r    sK     
%&&$#"
# #r*   r  r   T)use_last_errorc              #    "   \        \        P                  4       FG  pV R2p\        P	                  VR^ 4      '       d   K'  \
        P                  ! 4       \        8X  g   KG   M	  \        P                  ! R4      h\        P                  \        W 4      '       g*   \
        P                  ! \
        P                  ! 4       4      h Vx  \        P                  \        \        ,          W 4      '       g*   \
        P                  ! \
        P                  ! 4       4      hR#   \        P                  \        \        ,          Y 4      '       g*   \
        P                  ! \
        P                  ! 4       4      hi ; i5i)z6Temporarily yield a substitute drive for a given path.:Nzno available logical drive)reversedstringascii_uppercaser   QueryDosDeviceWr   get_last_errorERROR_FILE_NOT_FOUNDr#   SkipTestDefineDosDeviceWDDD_NO_BROADCAST_SYSTEMWinErrorDDD_REMOVE_DEFINITIONDDD_EXACT_MATCH_ON_REMOVE)r   cdrives   &  r   subst_driver^  -  s     &001AcGE,,UD!<<))+/CC	 2 ##$@AA(('6 6//&"7"7"9::	?K,,),EE! ! oof&;&;&=>>!8,,),EE! ! oof&;&;&=>>!s,   <E:E:#A#E:D! AE:!AE77E:c                 .    \         P                  ! R 4      h)z#ctypes or kernel32 is not available)r#   rV  r   s   &r   r^  r^  *  s     EFFr*   >   wasir   )   æu   İu   Łu   φu   Кu   אu   ،u   تu   ก    u   €)s   wr   s   s   s   )F)NF)tempcwdF)_collections.abccollections
contextlibr  rz   r   r>   rO   rQ  r   rx   r#   r\   r&   r   TESTFN_ASCIIformatr   TESTFN_UNICODEr   unicodedata	normalizeTESTFN_UNENCODABLEr   getwindowsversionr:   encodegetfilesystemencodingr   UnicodeEncodeErrordecodeUnicodeDecodeErrorFS_NONASCII	characterfsdecodefsencodeUnicodeErrorr   SAVEDCWDTESTFN_UNDECODABLEgetfilesystemencodeerrorsTESTFN_NONASCIIr   r   r   r   r)   r-   r1   r3   r9   rI   rK   rN   rV   rX   contextmanagerra   rd   re   rh   rj   r   r   r   rm   r   r   r   rB   r   r   r   r   r   r   r   r   r  r.   r  abcMutableMappingr  
MS_WINDOWSr   WinDLLr   rU  rZ  r[  rX  r   r^  r   r0   r*   r   <module>r     s       	 	   
      !!,		<  ==
  **5.AN
  77d?
''1, *,MM	&%%c&?&?&AB ')B)B)DF G "& - 
			cll2HH
s0023 	  IB
 ;;r{{9-.); <
  W \ 99;  D"	C--/0%8 "[0OO		(	(L
 (4 4 
B4 
04 8U 8 8<  844 <<5!!#
J&$=* iiGXXF0 * *Z  B  & 
 
 $@F 2w   
9#+//88 9#x"?==DA  !$%!"# 	  ? ?C " 		  N)ooc779;LMNNf  F  	KK1135579! 		[[6=t 	^$ GGGs   	 N 1 N )O# O:Q #Q NN/OOOOP?0PP?PP?PP?>P?QQ