Ë ‚Ö¦i¡mãóZ— dZddlZddlZddlZddlZddlZddlmZddlm Zgd¢Z e ed«re jgd¢«e ed«r/e jgd ¢«e ed«re jd d g«e ed «r ejZn ejZGd „d«ZGd„de«ZGd„de«Ze ed«r Gd„d«ZGd„de«ZGd„d«ZGd„d«Ze ed«rGd„dee«ZGd„dee«ZGd„d ee«ZGd!„d"ee«Ze ed«rOGd#„d$e«ZGd%„d&e«ZGd'„d(ee«ZGd)„d*ee«Ze ed«rGd+„d ee«Z Gd,„d ee«Z!Gd-„d.«Z"Gd/„d0e"«Z#Gd1„d2e«Z$Gd3„d4e"«Z%y)5z0.4éN)ÚBufferedIOBase)Ú monotonic) Ú BaseServerÚ TCPServerÚ UDPServerÚThreadingUDPServerÚThreadingTCPServerÚBaseRequestHandlerÚStreamRequestHandlerÚDatagramRequestHandlerÚThreadingMixInÚfork)ÚForkingUDPServerÚForkingTCPServerÚ ForkingMixInÚAF_UNIX)ÚUnixStreamServerÚUnixDatagramServerÚThreadingUnixStreamServerÚThreadingUnixDatagramServerÚForkingUnixStreamServerÚForkingUnixDatagramServerÚ PollSelectorcóz—eZdZ dZd„Zd„Zdd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zy)rNcób— ||_||_tj«|_d|_y©NF)Úserver_addressÚRequestHandlerClassÚ threadingÚEventÚ_BaseServer__is_shut_downÚ_BaseServer__shutdown_request)Úselfrrs ú%/usr/lib64/python3.12/socketserver.pyÚ__init__zBaseServer.__init__Ës,€Ø=Ø,ˆÔØ#6ˆÔ Ü'Ÿo™oÓ/ˆÔØ"'ˆÕócó— y©N©©r#s r$Úserver_activatezBaseServer.server_activateÒó €ð ð r&cóú— |jj« t«5}|j|tj «|j sM|j|«}|j rn/|r|j«|j«|j sŒMddd«d|_|jj«y#1swYŒ+xYw#d|_|jj«wxYwr) r!ÚclearÚ_ServerSelectorÚregisterÚ selectorsÚ EVENT_READr"ÚselectÚ_handle_request_noblockÚservice_actionsÚset)r#Ú poll_intervalÚselectorÚreadys r$Ú serve_foreverzBaseServer.serve_foreverÚsЀð ð ×Ñ×!Ñ!Ô#ð &ô !Ô" hØ×!Ñ! $¬ ×(<Ñ(<Ô=à×1Ò1Ø$ŸO™O¨MÓ:�Eà×.Ò.ØÙØ×4Ñ4Ô6à×(Ñ(Ô*ð×1Ó1÷#ð',ˆDÔ #Ø × Ñ × #Ñ #Õ %÷#Ð"ûð',ˆDÔ #Ø × Ñ × #Ñ #Õ %ús#� C§A9C Â!Cà CÃCÃ#C:cóH— d|_|jj«y©NT)r"r!Úwaitr*s r$ÚshutdownzBaseServer.shutdown÷s#€ð ð #'ˆÔØ ×Ñ× Ñ Õ"r&có— yr(r)r*s r$r5zBaseServer.service_actionsr,r&cóØ— |jj«}|€ |j}n"|j�t||j«}|� t «|z}t «5}|j |tj« |j|«r|j«cddd«S|�+t «z }|dkr|j«cddd«SŒX#1swYyxYw)Nr) ÚsocketÚ gettimeoutÚtimeoutÚminÚtimer/r0r1r2r3r4Úhandle_timeout)r#rCÚdeadliner8s r$Úhandle_requestzBaseServer.handle_requestsÕ€ð ð —+‘+×(Ñ(Ó*ˆØ ˆ?Ø—l‘l‰GØ �\‰\Ð %ܘ' 4§<¡<Ó0ˆGØ Ð Ü“v Ñ'ˆHôÔ  (Ø × Ñ ˜d¤I×$8Ñ$8Ô 9àØ—?‘? 7Ô+Ø×7Ñ7Ó9÷ Ñ ðÐ*Ø"*¬T«VÑ"3˜Ø" Qš;Ø#'×#6Ñ#6Ó#8÷Ñ ð÷Ð úsÁ&AC Â2#C ÃC à C)cóB— |j«\}}|j||«r |j||«y|j |«y#t$rYywxYw#t$r&|j ||«|j |«Yy|j |«‚xYwr()Ú get_requestÚOSErrorÚverify_requestÚprocess_requestÚ ExceptionÚ handle_errorÚshutdown_request©r#ÚrequestÚclient_addresss r$r4z"BaseServer._handle_request_noblock1s©€ð ð  Ø&*×&6Ñ&6Ó&8Ñ #ˆG�^ð × Ñ ˜w¨Ô 7ð Ø×$Ñ$ W¨nÕ=ð × !Ñ ! 'Õ *øôò Ù ð ûô ò /Ø×!Ñ! '¨>Ô:Ø×%Ñ% gÖ.ð Ø×%Ñ% gÔ.Øús"ƒA©AÁ AÁAÁ,B Bcó— yr(r)r*s r$rFzBaseServer.handle_timeoutHs €ð ð r&có— yr<r)rQs r$rLzBaseServer.verify_requestOs €ð ð r&cóL— |j||«|j|«yr()Úfinish_requestrPrQs r$rMzBaseServer.process_requestWs'€ð ð ×јG ^Ô4Ø ×јgÕ&r&có— yr(r)r*s r$Ú server_closezBaseServer.server_close`r,r&có,— |j|||«yr()rrQs r$rWzBaseServer.finish_requesths€ØFØ × Ñ  ¨.¸$Õ?r&có(— |j|«yr(©Ú close_request©r#rRs r$rPzBaseServer.shutdown_requestls€ØAØ ×ј7Õ#r&có— yr(r)r^s r$r]zBaseServer.close_requestps€Ø7Ø r&cóÒ— tdtj¬«td|tj¬«ddl}|j «tdtj¬«y)Nz(----------------------------------------)Úfilez4Exception occurred during processing of request fromr)ÚprintÚsysÚstderrÚ tracebackÚ print_exc)r#rRrSres r$rOzBaseServer.handle_errortsH€ð ô ˆfœ3Ÿ:™:Õ&Ü ÐDØ ¤§¡õ -ãØ×ÑÔÜ ˆfœ3Ÿ:™:Ö&r&có—|Sr(r)r*s r$Ú __enter__zBaseServer.__enter__�s€Øˆ r&có$—|j«yr()rY)r#Úargss r$Ú__exit__zBaseServer.__exit__„s€Ø ×ÑÕr&)gà?)Ú__name__Ú __module__Ú __qualname__rCr%r+r:r>r5rHr4rFrLrMrYrWrPr]rOrhrkr)r&r$rr›se„ð*ðX€Gò(ò ó&ò:#ò ò&9ò:+ò. òò'ò ò@ò$ò ò 'òór&rcó|—eZdZ ejZej ZdZdZ dZ d d„Z d„Z d„Z d„Zd„Zd„Zd „Zd „Zy ) réFcó— tj|||«tj|j|j«|_|r" |j «|j «yy#|j«‚xYwr()rr%rAÚaddress_familyÚ socket_typeÚ server_bindr+rY)r#rrÚbind_and_activates r$r%zTCPServer.__init__Âst€Ø=Ü×јD .Ð2EÔFÜ—m‘m D×$7Ñ$7Ø$(×$4Ñ$4ó6ˆŒ á ð Ø× Ñ Ô"Ø×$Ñ$Õ&ð øð Ø×!Ñ!Ô#Øús Á A-Á-Bcó:— |jrIttd«r9|jjtjtj d«|j ruttd«re|jtjtjfvr9|jjtjtjd«|jj|j«|jj«|_ y)NÚ SO_REUSEADDRéÚ SO_REUSEPORT)Úallow_reuse_addressÚhasattrrAÚ setsockoptÚ SOL_SOCKETrwÚallow_reuse_portrrÚAF_INETÚAF_INET6ryÚbindrÚ getsocknamer*s r$rtzTCPServer.server_bindÏs»€ð ð × #Ò #¬´¸Ô(GØ �K‰K× "Ñ "¤6×#4Ñ#4´f×6IÑ6IÈ1Ô Mð × !Ò !¤g¬f°nÔ&EØ×#Ñ#¬¯©¼¿¹Ð'HÑHà �K‰K× "Ñ "¤6×#4Ñ#4´f×6IÑ6IÈ1Ô MØ � ‰ ×ј×,Ñ,Ô-Ø"Ÿk™k×5Ñ5Ó7ˆÕr&cóP— |jj|j«yr()rAÚlistenÚrequest_queue_sizer*s r$r+zTCPServer.server_activateás!€ð ð � ‰ ×ј4×2Ñ2Õ3r&có:— |jj«yr()rAÚcloser*s r$rYzTCPServer.server_closeés€ð ð � ‰ ×ÑÕr&có8— |jj«Sr()rAÚfilenor*s r$r‰zTCPServer.filenoñó€ð ð �{‰{×!Ñ!Ó#Ð#r&có8— |jj«Sr()rAÚacceptr*s r$rJzTCPServer.get_requestùrŠr&có†— |jtj«|j |«y#t$rYŒwxYwr()r>rAÚSHUT_WRrKr]r^s r$rPzTCPServer.shutdown_requestsB€ØAð ð × Ñ œVŸ^™^Ô ,ð ×ј7Õ#øôò Ù ð úsƒ4´ A¿Acó&— |j«yr()r‡r^s r$r]zTCPServer.close_request s€Ø7Ø� ‰ �r&N)T)rlrmrnrArrrÚ SOCK_STREAMrsr…rzr~r%rtr+rYr‰rJrPr]r)r&r$rrˆsX„ð,ð\—^‘^€Nà×$Ñ$€KàÐàÐàÐó ò8ò$4òò$ò$ò$ór&rcóJ—eZdZ dZdZej ZdZd„Z d„Z d„Z d„Z y)rFi cór—|jj|j«\}}||jf|fSr()rAÚrecvfromÚmax_packet_size)r#ÚdataÚ client_addrs r$rJzUDPServer.get_requests5€Ø ŸK™K×0Ñ0°×1EÑ1EÓFшˆkØ�d—k‘kÐ" KÐ/Ð/r&có—yr(r)r*s r$r+zUDPServer.server_activate ó€à r&có&—|j|«yr(r\r^s r$rPzUDPServer.shutdown_request$s€à ×ј7Õ#r&có—yr(r)r^s r$r]zUDPServer.close_request(r˜r&N) rlrmrnrzr~rAÚ SOCK_DGRAMrsr”rJr+rPr]r)r&r$rrs5„ààÐàÐà×#Ñ#€Kà€Oò0ò ò$ó r&rcóN‡—eZdZ dZdZdZdZddœd„Zd„Zd „Z d „Z ˆfd „Z ˆxZ S) ri,Né(TF©Úblockingcó²— |j€yt|j«|jk\rX tjdd«\}}|jj |«t|j«|jk\rŒX|jj«D]K} |rdntj}tj||«\}}|jj |«ŒMy#t $r|jj«YŒ±t$rYŒ˜wxYw#t $r|jj |«YŒ¨t$rYŒ²wxYw)Néÿÿÿÿr) Úactive_childrenÚlenÚ max_childrenÚosÚwaitpidÚdiscardÚChildProcessErrorr.rKÚcopyÚWNOHANG)r#rŸÚpidÚ_Úflagss r$Úcollect_childrenzForkingMixIn.collect_children6s+€Ø IØ×#Ñ#Ð+Øô�d×*Ñ*Ó+¨t×/@Ñ/@Ò@ðÜŸZ™Z¨¨AÓ.‘F�C˜Ø×(Ñ(×0Ñ0°Ô5ô�d×*Ñ*Ó+¨t×/@Ñ/@Ó@ð×+Ñ+×0Ñ0Ö2�ð Ù!)™A¬r¯z©z�EÜŸZ™Z¨¨UÓ3‘F�C˜ð×(Ñ(×0Ñ0°Õ5ñ 3øô)ò1à×(Ñ(×.Ñ.Ö0ÜòÙðûô)ò6à×(Ñ(×0Ñ0°Ö5ÜòÙðús0²4C2Â'AD%Ã2#D"ÄD"Ä!D"Ä%$EÅ EÅEcó&— |j«yr(©r®r*s r$rFzForkingMixIn.handle_timeoutYó€ð ð × !Ñ !Õ #r&có&— |j«yr(r°r*s r$r5zForkingMixIn.service_actions`r±r&có@— tj«}|rH|j€t«|_|jj |«|j |«yd} |j ||«d} |j|«tj|«y#t$r|j||«YŒEwxYw#tj|«wxYw# |j|«tj|«w#tj|«wxYwxYw)Nrxr) r¥rr¢r6Úaddr]rWrNrOrPÚ_exit)r#rRrSr«Ústatuss r$rMzForkingMixIn.process_requestgsê€Ø ?Ü—'‘'“)ˆCÙà×'Ñ'Ð/Ü+.«5�DÔ(Ø×$Ñ$×(Ñ(¨Ô-Ø×"Ñ" 7Ô+Øð�ð )Ø×'Ñ'¨°Ô@Ø�Fð)Ø×-Ñ-¨gÔ6䟙 Õ(øô !ò?Ø×%Ñ% g¨~Ö>ð?ûô Ÿ™ Õ(ûð)Ø×-Ñ-¨gÔ6䟙 Õ(øœŸ™ Õ(ýsHÁ#BÁ8CÂB=Â:CÂ<B=Â=CÃCÃDÃDÃ-DÄDÄDcóZ•—t‰|�«|j|j¬«y)Nrž)ÚsuperrYr®Úblock_on_close©r#Ú __class__s €r$rYzForkingMixIn.server_close€s%ø€Ü ‰GÑ Ô "Ø × !Ñ !¨4×+>Ñ+>Ð !Õ ?r&) rlrmrnrCr¢r¤r¹r®rFr5rMrYÚ __classcell__©r»s@r$rr-s>ø„ØCàˆØˆØˆ àˆà/4ô! òF $ò $ò )÷2 @ð @r&rcó2‡—eZdZ ˆfd„Zd„Zd„Zd„ZˆxZS)Ú_Threadscó^•—|j«|jryt‰|� |«yr()ÚreapÚdaemonr¸Úappend)r#Úthreadr»s €r$rÃz_Threads.append‰s"ø€Ø � ‰ Œ Ø �=Š=Ø Ü ‰‰�vÕr&có—g|ddc|dd}|Sr(r))r#Úresults r$Úpop_allz_Threads.pop_all�s€Ø˜d¡1˜gˆˆ‰Qˆ�؈ r&cóN—|j«D]}|j«Œyr()rÇÚjoin©r#rÄs r$rÉz _Threads.join“s€Ø—l‘l–nˆFØ �K‰K�Mñ%r&có—d„|D«|ddy)Nc3óBK—|]}|j«sŒ|–—Œy­wr()Úis_alive)Ú.0rÄs r$Ú z _Threads.reap..˜sèø€ÐB©˜f°·±Õ0A”6©ùs‚˜r)r*s r$rÁz _Threads.reap—s€ÙB©ÓBˆ‰Q‰r&)rlrmrnrÃrÇrÉrÁr¼r½s@r$r¿r¿…sø„ðôò òöCr&r¿có—eZdZ d„Zd„Zy)Ú _NoThreadscó—yr(r)rÊs r$rÃz_NoThreads.appendŸó€Ø r&có—yr(r)r*s r$rÉz_NoThreads.join¢rÓr&N)rlrmrnrÃrÉr)r&r$rÑrÑ›s„ðò ó r&rÑcóB‡—eZdZ dZdZe«Zd„Zd„Zˆfd„Z ˆxZ S)r FTcó¼— |j||«|j|«y#t$r|j||«YŒ/wxYw#|j|«wxYwr()rWrNrOrPrQs r$Úprocess_request_threadz%ThreadingMixIn.process_request_thread²s^€ð ð  +Ø × Ñ  ¨Ô 8ð × !Ñ ! 'Õ *øôò 7Ø × Ñ ˜g ~Ö 6ð 7ûð × !Ñ ! 'Õ *ús!ƒ'§AÁAÁAÁAÁAcó"— |jr#t|«jdt««t j |j ||f¬«}|j|_|jj|«|j«y)NÚ_threads)Útargetrj) r¹ÚvarsÚ setdefaultr¿rÚThreadr×Údaemon_threadsrÂrÙrÃÚstart)r#rRrSÚts r$rMzThreadingMixIn.process_request¿sl€Ø8Ø × Ò Ü �‹J× !Ñ ! *¬h«jÔ 9Ü × Ñ  d×&AÑ&AØ%,¨nÐ$=ô ?ˆà×&Ñ&ˆŒØ � ‰ ×јQÔØ �‰� r&cóV•—t‰|�«|jj«yr()r¸rYrÙrÉrºs €r$rYzThreadingMixIn.server_closeÉsø€Ü ‰ÑÔØ � ‰ ×ÑÕr&) rlrmrnrÞr¹rÑrÙr×rMrYr¼r½s@r$r r ¦s/ø„Ø>ð€Nà€Nñ‹|€Hò +ò÷ðr&r có —eZdZy)rN©rlrmrnr)r&r$rrÏó…r&rcó —eZdZy)rNrãr)r&r$rrÐrär&rcó —eZdZy)rNrãr)r&r$rrÒrär&rcó —eZdZy)r Nrãr)r&r$r r Órär&r có$—eZdZejZy)rN©rlrmrnrArrrr)r&r$rr×ó „ØŸ™‰r&rcó$—eZdZejZy)rNrér)r&r$rrÚrêr&rcó —eZdZy)rNrãr)r&r$rrÝrär&rcó —eZdZy)rNrãr)r&r$rrßrär&rcó —eZdZy)rNrãr)r&r$rrârär&có —eZdZy)rNrãr)r&r$rrärär&có&—eZdZ d„Zd„Zd„Zd„Zy)r cóº—||_||_||_|j« |j «|j «y#|j «wxYwr()rRrSÚserverÚsetupÚhandleÚfinish)r#rRrSròs r$r%zBaseRequestHandler.__init__øsB€ØˆŒ Ø,ˆÔ؈Œ Ø � ‰ Œ ð Ø �K‰KŒMà �K‰K�MøˆD�K‰K�Mús §AÁAcó—yr(r)r*s r$rózBaseRequestHandler.setuprÓr&có—yr(r)r*s r$rôzBaseRequestHandler.handlerÓr&có—yr(r)r*s r$rõzBaseRequestHandler.finishrÓr&N)rlrmrnr%rórôrõr)r&r$r r æs„ðò ò ò ó r&r có*—eZdZ dZdZdZdZd„Zd„Zy)r r¡rNFcó—|j|_|j�%|jj|j«|jr9|jj t jt jd«|jjd|j«|_ |jdk(rt|j«|_y|jjd|j«|_y)NTÚrbrÚwb)rRÚ connectionrCÚ settimeoutÚdisable_nagle_algorithmr|rAÚ IPPROTO_TCPÚ TCP_NODELAYÚmakefileÚrbufsizeÚrfileÚwbufsizeÚ _SocketWriterÚwfiler*s r$rózStreamRequestHandler.setup)s°€ØŸ,™,ˆŒØ �<‰<Ð #Ø �O‰O× &Ñ & t§|¡|Ô 4Ø × 'Ò 'Ø �O‰O× &Ñ &¤v×'9Ñ'9Ü'-×'9Ñ'9¸4ô Aà—_‘_×-Ñ-¨d°D·M±MÓBˆŒ Ø �=‰=˜AÒ Ü& t§¡Ó7ˆD�JàŸ™×1Ñ1°$¸¿ ¹ ÓFˆD�Jr&có—|jjs |jj«|jj «|j j «y#tj$rYŒJwxYwr()rÚclosedÚflushrAÚerrorr‡rr*s r$rõzStreamRequestHandler.finish6s`€Ø�z‰z× Ò ð Ø— ‘ × Ñ Ô"ð � ‰ ×ÑÔØ � ‰ ×ÑÕøô —<‘<ò ñð ús˜A'Á'A=Á<A=) rlrmrnrrrCrÿrórõr)r&r$r r s+„à>ð€HØ€Hð€Gð$Ðò Gó r&r có&—eZdZ d„Zd„Zd„Zd„Zy)rcó—||_yr()Ú_sock)r#Úsocks r$r%z_SocketWriter.__init__Fs €Øˆ� r&có—yr<r)r*s r$Úwritablez_SocketWriter.writableIs€Ør&có’—|jj|«t|«5}|jcddd«S#1swYyxYwr()rÚsendallÚ memoryviewÚnbytes)r#ÚbÚviews r$Úwritez_SocketWriter.writeLs.€Ø � ‰ ×ј1ÔÜ ˜Œ]˜dØ—;‘;÷�]Š]ús § =½Acó6—|jj«Sr()rr‰r*s r$r‰z_SocketWriter.filenoQs€Ø�z‰z× Ñ Ó"Ð"r&N)rlrmrnr%rrr‰r)r&r$rrAs„ðJòòòó #r&rcó—eZdZ d„Zd„Zy)r cóˆ—ddlm}|j\|_|_||j«|_|«|_y)Nr)ÚBytesIO)ÚiorrRÚpacketrArr)r#rs r$rózDatagramRequestHandler.setupXs0€ÝØ#'§<¡<Ñ ˆŒ �T”[Ù˜TŸ[™[Ó)ˆŒ Ù“Yˆ� r&có€—|jj|jj«|j«yr()rAÚsendtorÚgetvaluerSr*s r$rõzDatagramRequestHandler.finish^s)€Ø � ‰ ×ј4Ÿ:™:×.Ñ.Ó0°$×2EÑ2EÕFr&N)rlrmrnrórõr)r&r$r r Ts„à@òó Gr&r )&Ú __version__rAr1r¥rcrrrrErÚ__all__r{Úextendrr/ÚSelectSelectorrrrrÚlistr¿rÑr rrrr rrrrrrr r rr r)r&r$Úr'sÏððvðt€ óÛÛ Û ÛÝÝ"ò 7€ñ ˆ2ˆvÔØ ‡N�NÒJÔKÙ ˆ6�9ÔØ ‡N�Nò3ô4ñˆr�6ÔØ�‰Ð1Ð3NÐOÔPñ ˆ9�nÔ%Ø×,Ñ,�Oà×.Ñ.€O÷jñjôZE� ôEôP � ô ñ8 ˆ2ˆvÔ÷U@ñU@ôpCˆtôC÷, ñ ÷%ñ%ñP ˆ2ˆvÔÜ9˜<¨Ô9Ü9˜<¨Ô9ä9˜¨Ô9Ü9˜¨Ô9á ˆ6�9Ôô(˜9ô(ô(˜Yô(ôL NÐ4DÔKäO nÐ6HÔOáˆr�6ÔÜK lÐ4DÔKäO¨ Ð6HÔO÷# ñ# ô\+Ð-ô+ôZ#�Nô#ô& GÐ/õ Gr&