+
    Bi{              	       t   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt	H
t
Ht ^ RIHt ^ RIHt ] P                   P#                  ]4      t]P(                  t] P                   P+                  ]RR4      t ! R R]	4      t ! R	 R
]
4      t ! R R]4      t ! R R]P4                  4      tRRR]R]RR/R lt]R8X  Ed   ^ RIt]P>                  ! RR7      t ] PC                  RR]"RRR7       ] PC                  RRRRR R!R"7       ] PC                  R#R$R%R&R'R(R"7       ] PC                  R)R*]#R+R,R-7       ] PC                  R.R/]#R0R17       ] PC                  R2R3]#R+R4R-7       ] PI                  4       t%]%PL                  ]n&        ]%PN                  '       d   ]t(M]t(] PR                  ! 4       ](n*        ]PV                  ! ]PX                  PZ                  4      t.].P_                  ]4       ]%P`                  '       d   ].Pc                  ]%P`                  4       ]%Pd                  '       d   ].Pg                  ]%Pd                  4       ]%Ph                  '       d   ].Pk                  ]%Ph                  4       ]! R5]%Pl                  3](].4      t7]%PL                  '       d   ]8! R6Ps                  ]%4      4       ]7Pu                  R74       R# R# )8    N)
HTTPServerSimpleHTTPRequestHandlerBaseHTTPRequestHandler)support)socket_helpercertdatazkeycert.pemc                   2   a  ] tR t^t o R tR tR tRtV tR# )HTTPSServerc                @    \         P                  ! WV4       W0n        R # N)_HTTPServer__init__context)selfserver_addresshandler_classr   s   &&&&'/usr/lib/python3.14/test/ssl_servers.pyr   HTTPSServer.__init__   s    T=A    c                p    R V P                   P                  : RV P                  : RV P                  : R2# )< :>)	__class____name__server_nameserver_portr   s   &r   __str__HTTPSServer.__str__   s+    ((!!!!# 	$r   c                    V P                   P                  4       w  rV P                  P                  VR R7      pW23#   \         dC   p\
        P                  '       d'   \        P                  P                  RT,          4       h Rp?ii ; i)T)server_sidezGot an error:
%s
N)
socketacceptr   wrap_socketOSErrorr   verbosesysstderrwrite)r   sockaddrsslconnes   &    r   get_requestHTTPSServer.get_request!   st    	++-JDll..t.FG }  	

  !6!:;		s   9> B	=BB)r   N)	r   
__module____qualname____firstlineno__r   r    r0   __static_attributes____classdictcell____classdict__s   @r   r
   r
      s     $
 
r   r
   c                   L   a  ] tR t^-t o Rt]t]P                  t	R t
R tRtV tR# )RootedHTTPRequestHandlerzTestHTTPS/1.0c                   \         P                  P                  V4      ^,          p\        P                  P                  \         P                  P                  V4      4      pVP                  R4      p\        RV4      pV P                  pV Fd  p\        P                  P                  V4      w  rC\        P                  P                  V4      w  rS\        P                  P                  W4      pKf  	  V# )zTranslate a /-separated PATH to the local filename syntax.

Components that mean special things to the local file system
(e.g. drive or directory names) are ignored.  (XXX They should
probably be diagnosed.)

/N)urllibparseurlparseospathnormpathunquotesplitfilterroot
splitdrivejoin)r   rA   wordsworddriveheads   &&    r   translate_path'RootedHTTPRequestHandler.translate_path7   s     ||$$T*1-ww 4 4T :;

3tU#yyD'',,T2KEt,JD77<<+D  r   c           	     4   \         P                  '       d   \        P                  P	                  R V P
                  P                  V P
                  P                  V P                  P                  4       V P                  4       W,          3,          4       R# R# )z server (%s:%d %s):
   [%s] %s
N)r   r(   r)   stdoutr+   serverr   r   requestcipherlog_date_time_stringr   formatargss   &&*r   log_message$RootedHTTPRequestHandler.log_messageK   sj    ???JJ@"kk88"kk55"ll113"779$k	++ , r    N)r   r2   r3   r4   server_versionhererF   r   LOOPBACK_TIMEOUTtimeoutrM   rX   r5   r6   r7   s   @r   r:   r:   -   s+     
 %ND&&G(, ,r   r:   c                   >   a  ] tR t^Vt o RtRtRR ltR tR tRt	V t
R# )	StatsRequestHandlerzKExample HTTP request handler which returns SSL statistics on GET
requests.
zStatsHTTPS/1.0c                   V P                   P                  P                  pVP                  pRVP	                  4       RVP                  4       RVP                  4       /p\        P                  ! V4      pVP                  R4      pV P                  ^4       V P                  RR4       V P                  R\        \        V4      4      4       V P                  4        V'       d   V P                  P!                  V4       R# R# )	zServe a GET request.session_cacherS   compressionzutf-8zContent-typeztext/plain; charset=utf-8zContent-LengthN)rfileraw_sockr   session_statsrS   rc   pprintpformatencodesend_responsesend_headerstrlenend_headerswfiler+   )r   	send_bodyr,   r   statsbodys   &&    r   do_GETStatsRequestHandler.do_GET]   s    zz~~##,,W224dkkm4++-
 ~~e${{7#3)DE)3s4y>:JJT" r   c                *    V P                  RR7       R# )zServe a HEAD request.F)rq   N)rt   r   s   &r   do_HEADStatsRequestHandler.do_HEADo   s    e$r   c                f    \         P                  '       d   \        P                  ! W.VO5!   R # R # r   )r   r(   r   log_requestrU   s   &&*r   rz   StatsRequestHandler.log_requests   s#    ???"..tCdC r   rZ   N)T)r   r2   r3   r4   __doc__r[   rt   rw   rz   r5   r6   r7   s   @r   r`   r`   V   s'      &N#$%D Dr   r`   c                   J   a  ] tR t^xt o ]R3R ltR tRR ltR tR t	Rt
V tR# )	HTTPSServerThreadNc                    R V n         \        V^ 3T;'       g    \        V4      V n        V P                  P                  V n        \        P                  P                  V 4       RV n	        R # )NT)
flagr
   r:   rQ   r   port	threadingThreadr   daemon)r   r   hostr   s   &&&&r   r   HTTPSServerThread.__init__z   sX    	!4)"/"K"K3K")+ KK++	!!$'r   c                T    R V P                   P                  : RV P                  : R2# )r   r   r   )r   r   rQ   r   s   &r   r    HTTPSServerThread.__str__   s     NN33T[[AAr   c                P    Wn         \        P                  P                  V 4       R # r   )r   r   r   start)r   r   s   &&r   r   HTTPSServerThread.start   s    	t$r   c                   V P                   '       d   V P                   P                  4         V P                  P                  R 4       V P                  P	                  4        R#   T P                  P	                  4        i ; i)g?N)r   setrQ   serve_foreverserver_closer   s   &r   runHTTPSServerThread.run   sP    999IIMMO	'KK%%d+KK$$&DKK$$&s   A% %Bc                :    V P                   P                  4        R # r   )rQ   shutdownr   s   &r   stopHTTPSServerThread.stop   s    r   )r   r   r   rQ   r   )r   r2   r3   r4   HOSTr   r    r   r   r   r5   r6   r7   s   @r   r~   r~   x   s)     %) B%' r   r~   r   certfiler   r   c                @  a Vf/   \         P                  ! \         P                  P                  4      pVP	                  V4       \        WV4      o\        P                  ! 4       pSP                  V4       VP                  4        V3R lpV P                  V4       S# )Nc                    < \         P                  '       d    \        P                  P	                  R 4       S P                  4        \         P                  '       d    \        P                  P	                  R4       S P                  4        R# )zstopping HTTPS server
zjoining HTTPS thread
N)r   r(   r)   rP   r+   r   rH   )rQ   s   r   cleanup"make_https_server.<locals>.cleanup   sM    ???JJ67???JJ56r   )sslcreate_default_contextPurposeCLIENT_AUTHload_cert_chainr~   r   Eventr   wait
addCleanup)caser   r   r   r   r   r   rQ   s   &$$$$  @r   make_https_serverr      su    ,,S[[-D-DEH%wm<F??D
LLIIK 	OOGMr   __main__zERun a test HTTPS server. By default, the current directory is served.)descriptionz-pz--portiQ  z(port to listen on (default: %(default)s))typedefaulthelpz-qz--quietr(   Tstore_falsezbe less verbose)destr   actionr   z-sz--statsuse_stats_handlerF
store_truezalways return stats pagez--curve-name
curve_namestorez&curve name for EC-based Diffie-Hellman)r   r   r   r   z	--cipherscipherszallowed cipher list)r   r   r   z--dhdh_filez!PEM file containing DH parameters z'Listening on https://localhost:{0.port}g?);r@   r)   r   rh   r   urllib.parser=   http.serverr   r   r   r   testr   test.supportr   rA   dirname__file__r\   r   rH   CERTFILEr
   r:   r`   r   r~   r   r   argparseArgumentParserparseradd_argumentintrm   
parse_argsrW   r(   r   r   getcwdrF   r   r   r   r   r   r   set_ecdh_curver   load_dh_paramsr   set_ciphersr   rQ   printrV   r   rZ   r   r   <module>r      s   	 
 
   6 6  &	wwx 77<<j-8+ 0&,7 &,RD0 DD	(( <t h /3* z$$CDF hS$G  I
ii,3D  F
i.A5+2L  N
\&E  G )#2  4
YS@  BDllGO+0YY[(()@)@AGH%t/|||t||,|||DLL)"dii-AF|||7>>tDE
M r   