Ë
    ªÞjø7  ã                  ó$  — d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZmZ ddlmZmZ ddlmZ ddlmZmZ dZd	Zeez   Z ej2                  d
«      Z ej2                  d«      Z ej2                  d«      ZdZ G d„ de«      Zddœd&d„Z d'd„Z! ed¬«       G d„ d«      «       Z" ed¬«       G d„ d«      «       Z# ed¬«       G d„ d«      «       Z$ G d„ de«      Z%d(d„Z& G d„ d e%«      Z'd)d!„Z(d*d"„Z)d+d#„Z* G d$„ d%e%«      Z+y),u  Austauschbare Prozess-AusfÃ¼hrung fÃ¼r den Codex-Adapter.

IsolatedRunner ist die Schnittstelle. Default ist MockRunner (kein Prozess).
SubprocessRunner ist der echte Runner:
- feste Argumentliste, nie Shell (shell=False), Platzhalter nur {workdir}
- Umgebung NUR aus der ausdrÃ¼cklichen Allowlist (env=, nie geerbt)
- eigenes Arbeitsverzeichnis je Lauf unter workspace_root (0700), danach gelÃ¶scht
- Laufzeitlimit, Ausgabelimit WÃ„HREND des Laufs, eigene Prozessgruppe,
  die bei Timeout/Limit/Ende vollstÃ¤ndig per SIGKILL beendet wird
- Speicher-/CPU-Grenzen per prlimit-PrÃ¤fix (optional, konfigurierbar)
- strukturierte Fehlercodes

Die eigentliche Isolation (systemd-run/bwrap/Container) kommt Ã¼ber ein
konfigurierbares Wrapper-PrÃ¤fix im Befehls-Template (codex_adapter.py).
é    )ÚannotationsN)ÚABCÚabstractmethod)Ú	dataclassÚfield)ÚPath)ÚCallableÚOptional)zdanger-full-accessz(dangerously-bypass-approvals-and-sandbox)z--yoloz^[A-Z_][A-Z0-9_]*$z°(TOKEN|SECRET|PASSWORD|PASSWD|API_KEY|APIKEY|PRIVATE_KEY|CREDENTIAL|SESSION_KEY|^LD_|^PYTHON|^BASH_ENV$|^ENV$|^SUPABASE|^ARIA_SUPABASE|^TELEGRAM|^ANTHROPIC|^OPENAI_API|^CLAUDE)z[^A-Za-z0-9._-]é€   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚUnsafeCommandErrorc                ó2   •— t         ‰| �  |«       || _        y ©N)ÚsuperÚ__init__Úcode)Úselfr   Ú	__class__s     €ú//home/aria/aria-v3/python/aria_router/runner.pyr   zUnsafeCommandError.__init__2   s   ø€ Ü‰Ñ˜ÔØˆ�	ó    )r   Ústr)Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__)r   s   @r   r   r   1   s   ø„ ÷ñ r   r   F)Úallow_bypass_sandboxc               ó€  — t        | t        t        f«      r| rt        | «      t        kD  rt        d«      ‚|rt        nt        }| D ]I  }t        |t        «      r|rd|v rt        d«      ‚|j                  «       }|D ]  }||v sŒt        d«      ‚ ŒK t        j                  j                  | d   «      st        d«      ‚y)aF  Weist verbotene Sandbox-Flags und unsaubere Argumente hart ab.

    allow_bypass_sandbox=True erlaubt NUR die Sandbox-Bypass-Tokens (nicht --yolo);
    das darf ausschliesslich der caged tools-Runner setzen, nachdem er den Kaefig
    vor dem Codex-Aufruf strukturell geprueft hat (validate_command_template require_cage).
    ÚINVALID_COMMANDú ÚFORBIDDEN_SANDBOX_FLAGr   ÚCOMMAND_NOT_ABSOLUTEN)Ú
isinstanceÚtupleÚlistÚlenÚMAX_ARGSr   ÚALWAYS_FORBIDDEN_TOKENSÚFORBIDDEN_ARG_TOKENSr   ÚlowerÚosÚpathÚisabs)Úargvr   Ú	forbiddenÚargÚloweredÚtokens         r   Úassert_safe_argvr2   7   s¼   € ô �dœU¤D˜MÔ*±$¼#¸d»)ÄhÒ:NÜ Ð!2Ó3Ð3Ù+?Õ'ÔEY€IØò CˆÜ˜#œsÔ#©3°&¸C±-Ü$Ð%6Ó7Ð7Ø—)‘)“+ˆØò 	CˆEØ˜ÒÜ(Ð)AÓBÐBñ	Cð	Cô �7‰7�=‰=˜˜a™Ô!Ü Ð!7Ó8Ð8ð "r   c                óX  — t        | t        «      st        d«      ‚i }| j                  «       D ]y  \  }}t        |t        «      rt
        j                  |«      st        d«      ‚t        j                  |«      rt        d«      ‚t        |t        «      rd|v rt        d«      ‚|||<   Œ{ |S )NÚINVALID_ENVÚFORBIDDEN_ENVr   )	r"   Údictr   Úitemsr   Ú	_ENV_NAMEÚmatchÚ_FORBIDDEN_ENVÚsearch)ÚenvÚcleanÚnameÚvalues       r   Úvalidate_envr@   L   s™   € Ü�cœ4Ô Ü  Ó/Ð/Ø€EØ—y‘y“{ò ‰ˆˆeÜ˜$¤Ô$¬I¯O©O¸DÔ,AÜ$ ]Ó3Ð3Ü× Ñ  Ô&Ü$ _Ó5Ð5Ü˜%¤Ô%¨°5©Ü$ ]Ó3Ð3ØˆˆdŠðð €Lr   T)Úfrozenc                  óT   — e Zd ZU dZded<   dZded<   dZded<   dZded<   d„ Zd	d„Z	y)
ÚResourceLimitsNúOptional[int]Úaddress_space_bytesÚcpu_secondsÚmax_file_bytesÚmax_open_filesc                ó²   — | j                   | j                  | j                  | j                  fD ]&  }|€Œt	        |«      t
        us|dk  sŒt        d«      ‚ y )Nr   ÚINVALID_RESOURCE_LIMIT)rE   rF   rG   rH   ÚtypeÚintÚ
ValueError)r   r?   s     r   Ú__post_init__zResourceLimits.__post_init__b   sV   € Ø×.Ñ.°×0@Ñ0@À$×BUÑBUÐW[×WjÑWjÐkò 	;ˆEØÑ ¤d¨5£k¼Ñ&<ÀÈÃ
Ü Ð!9Ó:Ð:ñ	;r   c                ó’  — |g}| j                   �|j                  d| j                   › �«       | j                  �|j                  d| j                  › �«       | j                  �|j                  d| j                  › �«       | j                  �|j                  d| j                  › �«       t        |«      dk(  ryt        |«      dz   S )Nz--as=z--cpu=z--fsize=z	--nofile=é   © )z--)rE   ÚappendrF   rG   rH   r%   r#   )r   Úprlimit_pathÚargss      r   ÚprefixzResourceLimits.prefixg   s¾   € Øˆ~ˆØ×#Ñ#Ð/Ø�K‰K˜% × 8Ñ 8Ð9Ð:Ô;Ø×ÑÐ'Ø�K‰K˜& ×!1Ñ!1Ð 2Ð3Ô4Ø×ÑÐ*Ø�K‰K˜( 4×#6Ñ#6Ð"7Ð8Ô9Ø×ÑÐ*Ø�K‰K˜) D×$7Ñ$7Ð#8Ð9Ô:Üˆt‹9˜Š>ØÜ�T‹{˜WÑ$Ð$r   )rS   r   Úreturnútuple[str, ...])
r   r   r   rE   Ú__annotations__rF   rG   rH   rN   rU   rQ   r   r   rC   rC   [   s5   … à)-Ð˜Ó-Ø!%€K�Ó%Ø$(€N�MÓ(Ø$(€N�MÓ(ò;ô
%r   rC   c                  óv   — e Zd ZU ded<   ded<    ee¬«      Zded<   dZd	ed
<   dZded<   dZ	ded<   dZ
ded<   y)ÚRunSpecrW   r-   ÚbytesÚstdin)Údefault_factoryr6   r<   g      ^@ÚfloatÚtimeout_secondsi    rL   Úmax_output_bytesrQ   ztuple[tuple[str, bytes], ...]Úfilesi @  Úmax_stderr_tailN)r   r   r   rX   r   r6   r<   r_   r`   ra   rb   rQ   r   r   rZ   rZ   v   sF   … à
ÓØƒLÙ dÔ+€CˆÓ+Ø"€O�UÓ"Ø+Ð�cÓ+Ø+-€EÐ(Ó-Ø$€O�SÔ$r   rZ   c                  óz   — e Zd ZU ded<   dZded<   dZded<   dZded<   d	Zd
ed<   d	Zd
ed<   dZ	ded<   d	Z
d
ed<   y)Ú	RunResultÚboolÚokNzOptional[str]Ú
error_coderD   Ú	exit_codeÚsignalr   r[   ÚstdoutÚstderr_tailç        r^   Úduration_secondsÚartifact)r   r   r   rX   rg   rh   ri   rj   rk   rm   rn   rQ   r   r   rd   rd   �   sN   … àƒHØ $€J�Ó$Ø#€Iˆ}Ó#Ø €FˆMÓ Ø€FˆEÓØ€K�ÓØ!Ð�eÓ!Ø€HˆeÔr   rd   c                  ó   — e Zd Zedd„«       Zy)ÚIsolatedRunnerc                 ó   — y)u8   FÃ¼hrt spec aus und liefert ein strukturiertes Ergebnis.NrQ   )r   Úspecs     r   ÚrunzIsolatedRunner.runŽ   s   � r   N©rr   rZ   rV   rd   )r   r   r   r   rs   rQ   r   r   rp   rp   �   s   „ ØòGó ñGr   rp   c                ó”   ‡— dd l Šdddœddiddd	| d
œdœddddœdœg}dj                  ˆfd„|D «       «      dz   j                  d«      S )Nr   zthread.startedÚmock)rK   Ú	thread_idrK   zturn.startedzitem.completedÚitem_0Úagent_message)ÚidrK   Útext)rK   Úitemzturn.completed)Úinput_tokensÚoutput_tokens)rK   Úusageú
c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   )Údumps)Ú.0ÚlineÚjsons     €r   ú	<genexpr>z$mock_codex_events.<locals>.<genexpr>›   s   øè ø€ Ò9¨4�d—j‘j ×&Ñ9ùs   ƒzutf-8)r…   ÚjoinÚencode)r{   Úlinesr…   s     @r   Úmock_codex_eventsrŠ   “   sb   ø€ Ûà!°Ñ7Ø	�Ð Ø!°(ÀOÐ]aÑ+bÑcØ!¸QÐQRÑ,SÑTð	€Eð �I‰IÓ9°5Ô9Ó9¸DÑ@×HÑHÈÓQÐQr   c                  ó"   — e Zd ZdZddd„Zdd„Zy)Ú
MockRunneruC   Startet keinen Prozess. Default, solange echte AusfÃ¼hrung aus ist.Nc                ó    — g | _         || _        y r   )ÚcallsÚ
_responder)r   Ú	responders     r   r   zMockRunner.__init__¡   s   € Ø$&ˆŒ
Ø#ˆ�r   c                óN  — 	 t        |j                  «       t        |j                  «       | j                  j                  |«       | j                  �| j                  |«      S t        ddt        d«      ¬«      S # t        $ r }t        d|j                  «      cY d }~S d }~ww xY w)NFTr   ÚMOCK_CODEX_RESPONSE)rh   rj   )r2   r-   r@   r<   r   rd   r   rŽ   rR   r�   rŠ   )r   rr   Úexcs      r   rs   zMockRunner.run¥   s…   € ð	.Ü˜TŸY™YÔ'Ü˜Ÿ™Ô"ð 	�
‰
×Ñ˜$ÔØ�?‰?Ð&Ø—?‘? 4Ó(Ð(Ü˜¨Ô3DÐEZÓ3[Ô\Ð\øô "ò 	.Ü˜U C§H¡HÓ-Õ-ûð	.ús   ‚*A; Á;	B$ÂBÂB$ÂB$r   )r�   z(Optional[Callable[[RunSpec], RunResult]]rt   )r   r   r   Ú__doc__r   rs   rQ   r   r   rŒ   rŒ   ž   s   „ ÙMô$ô	]r   rŒ   c                ó¨   — t         j                  j                  | xs d«      xs d}t        j	                  d|«      d d j                  d«      xs dS )NÚ ÚfileÚ_éx   ú.)r*   r+   ÚbasenameÚ
_SAFE_FILEÚsubÚlstrip)r>   Úbases     r   Úsanitize_file_namer    ±   sG   € Ü�7‰7×Ñ˜DšJ BÓ'Ò1¨6€DÜ�>‰>˜#˜tÓ$ T cÐ*×1Ñ1°#Ó6Ò@¸&Ð@r   c                ó$   — | d›dt        |«      › �S )NÚ02dú-)r    )Úindexr>   s     r   Úattachment_file_namer¥   ¶   s   € Ø�Cˆ[˜Ô,¨TÓ2Ð3Ð4Ð4r   c                óx   — 	 t        j                  | t        j                  «       y # t        t
        f$ r Y y w xY wr   )r*   Úkillpgri   ÚSIGKILLÚProcessLookupErrorÚPermissionError)Úpids    r   Ú_kill_groupr¬   º   s0   € ðÜ
�	‰	�#”v—~‘~Õ&øÜ¤Ð0ò Ùðús   ‚$' §9¸9c                  ó4   — e Zd Zddddœ	 	 	 dd„Zd	d„Zd
d„Zy)ÚSubprocessRunnerNz/usr/bin/prlimitgš™™™™™É?)Úresource_limitsrS   Úexit_drain_secondsc               óN   — t        |«      | _        || _        || _        || _        y r   )r   Úworkspace_rootr¯   rS   r°   )r   r²   r¯   rS   r°   s        r   r   zSubprocessRunner.__init__Â   s'   € ä" >Ó2ˆÔØ.ˆÔØ(ˆÔØ"4ˆÕr   c                óì  ‡— t        j                  «       }	 t        |j                  «       t	        |j
                  «      }t        |j                  t        «      st        dd«      S | j                  j                  «       st        dd«      S 	 t        t        j                   d| j                  ¬«      «      Š	 |j$                  rø‰dz  }	 |j'                  d¬«       |j$                  D ]Ð  \  }}t        |t        «      s%t        dd	«      c t)        j*                  ‰d
¬«       S |t-        |«      z  }t/        j0                  |t.        j2                  t.        j4                  z  t.        j6                  z  t.        j8                  z  d«      }	t/        j:                  |	d«      5 }
|
j=                  |«       d d d «       ŒÒ 	 t?        ˆfd„|j                  D «       «      }| j@                  �(| j@                  jC                  | jD                  «      |z   }	 tG        jH                  |tF        jJ                  tF        jJ                  tF        jJ                  tM        ‰«      |dd
d
¬«	      }| jO                  |||«      t)        j*                  ‰d
¬«       S # t        $ r }t        d|j                  «      cY d }~S d }~ww xY w# t"        $ r t        dd«      cY S w xY w# 1 sw Y   �ŒóxY w# t"        $ r& t        dd	«      cY t)        j*                  ‰d
¬«       S w xY w# t"        $ r= t        ddt        j                  «       |z
  ¬«      cY t)        j*                  ‰d
¬«       S w xY w# t)        j*                  ‰d
¬«       w xY w)NFÚINVALID_STDINÚWORKSPACE_UNAVAILABLEzjob-)rU   ÚdirÚattachmentsiÀ  )ÚmodeÚINVALID_FILEST)Úignore_errorsi€  Úwbc              3  óT   •K  — | ]  }|j                  d t        ‰«      «      –— Œ! y­w)z	{workdir}N)Úreplacer   )rƒ   r/   Úworkdirs     €r   r†   z'SubprocessRunner.run.<locals>.<genexpr>æ   s    øè ø€ ÒUÀC˜Ÿ™ [´#°g³,×?ÑUùs   ƒ%()r\   rj   ÚstderrÚcwdr<   ÚshellÚ	close_fdsÚstart_new_sessionÚSTART_FAILED)rm   )(ÚtimeÚ	monotonicr2   r-   r@   r<   r   rd   r   r"   r\   r[   r²   Úis_dirr   ÚtempfileÚmkdtempÚOSErrorra   ÚmkdirÚshutilÚrmtreer    r*   ÚopenÚO_WRONLYÚO_CREATÚO_EXCLÚ
O_NOFOLLOWÚfdopenÚwriter#   r¯   rU   rS   Ú
subprocessÚPopenÚPIPEr   Ú
_supervise)r   rr   Ústartedr<   r“   Útargetr>   Údatar+   ÚfdÚhandler-   Úprocr¾   s                @r   rs   zSubprocessRunner.runÉ   sÎ  ø€ Ü—.‘.Ó"ˆð	.Ü˜TŸY™YÔ'Ü˜tŸx™xÓ(ˆCô ˜$Ÿ*™*¤eÔ,Ü˜U OÓ4Ð4Ø×"Ñ"×)Ñ)Ô+Ü˜UÐ$;Ó<Ð<ð	=Üœ8×+Ñ+°6¸t×?RÑ?RÔSÓTˆGð	7Ø�zŠzØ  =Ñ0�ð
=Ø—L‘L e�LÔ,Ø&*§j¡jò /™
˜˜dÜ)¨$´Ô6Ü#,¨U°OÓ#DÑDô& �M‰M˜'°Ö6ð%  &Ô(:¸4Ó(@Ñ@˜ÜŸW™W T¬2¯;©;¼¿¹Ñ+CÄbÇiÁiÑ+OÔRT×R_ÑR_Ñ+_ÐafÓg˜ÜŸY™Y r¨4Ó0ð /°FØ"ŸL™L¨Ô.÷/ð /ñ/ô ÓUÈ4Ï9É9ÔUÓUˆDØ×#Ñ#Ð/Ø×+Ñ+×2Ñ2°4×3DÑ3DÓEÈÑL�ðeÜ!×'Ñ'Ø¤
§¡¼
¿¹ÔPZ×P_ÑP_Ü˜G›¨#°UÀdÐ^bô�ð —?‘? 4¨¨wÓ7ä�M‰M˜'°Ö6øôI "ò 	.Ü˜U C§H¡HÓ-Õ-ûð	.ûô ò 	=Ü˜UÐ$;Ó<Ò<ð	=ú÷/ñ /ûäò =Ü$ U¨OÓ<Ñ<ô �M‰M˜'°Ö6ð=ûô ò eÜ  ¨ÌÏÉÓIYÐ\cÑIcÔdÑdô �M‰M˜'°Ö6ð	eûô �M‰M˜'°Ö6ús¥   —*J Â*J7 Â9M ÃAK Ä$A<K Æ KÆ2
K Æ<AM ÈAL É!M Ê	J4ÊJ/Ê)J4Ê/J4Ê7KËKËK	ËK ËLË4M ÌLÌM Ì,MÌ=M ÍMÍM ÍM3c           
     óF  — ||j                   z   }t        j                  «       }|j                  j	                  «       }|j                  |j                  j	                  «       t        j                  d«       |j                  |j                  j	                  «       t        j                  d«       t        |j                  «      }|r8t        j                  |d«       |j                  |t        j                  d«       n|j                  j                  «        t        «       }t        «       }	d}
d }d }	 |j                  «       �r·|�€´t!        j"                  «       }||k\  rd}�n—|€|j%                  «       �|}|�||z
  | j&                  kD  r�nm|j)                  t+        dt-        d||z
  «      «      ¬	«      D �],  \  }}|j.                  dk(  rN	 t        j0                  ||d d
 «      }||d  }|s,|j7                  |«       	 |j                  j                  «        Œdt        j8                  |j:                  d
«      }|s|j7                  |j:                  «       Œ¢|j.                  dk(  r:t=        |«      t=        |«      z   |j>                  kD  rd} nW|jA                  |«       Œë|
t=        |«      z  }
|	jA                  |«       |	d |jB                   …= |
|j>                  kD  s�Œ+d} n |j                  «       r|€�Œ´|€B|j%                  «       €2	 |jE                  t-        d|t!        j"                  «       z
  «      ¬	«       |j                  «        tK        |jL                  «       	 |jE                  d¬	«       |j                  |j                  |j                  fD ]  }	 |j                  «        Œ 	 t!        j"                  «       |z
  }|jP                  }tS        |tT        «      r|dk  r| nd }|�tW        d|||tY        |	«      |¬«      S |€tW        ddtY        |	«      |¬«      S |dk  rtW        dd||tY        |	«      |¬«      S |dkD  rtW        dd|tY        |	«      |¬«      S tW        ddtY        |«      tY        |	«      |¬«      S # t2        $ r Y �ŒØt4        $ r d}Y  �Œ¶w xY w# t4        $ r Y �Œ“w xY w# tF        jH                  $ r d}Y �ŒŠw xY w# tF        jH                  $ r Y �Œlw xY w# t4        tN        f$ r Y �Œ_w xY w# |j                  «        tK        |jL                  «       	 |jE                  d¬	«       n# tF        jH                  $ r Y nw xY w|j                  |j                  |j                  fD ](  }	 |j                  «        Œ# t4        tN        f$ r Y Œ&w xY w w xY w)NÚoutÚerrFÚinr   ÚTIMEOUTgš™™™™™©?rl   )Útimeouti   ÚSTDIN_FAILEDÚOUTPUT_LIMITé   )rh   ri   rk   rm   ÚNO_CLEAN_EXIT)rk   rm   ÚCRASHEDÚNONZERO_EXIT)rh   rk   rm   T)rh   rj   rk   rm   )-r_   Ú	selectorsÚDefaultSelectorr\   ÚfilenoÚregisterrj   Ú
EVENT_READr¿   Ú
memoryviewr*   Úset_blockingÚEVENT_WRITEÚcloseÚ	bytearrayÚget_maprÅ   rÆ   Úpollr°   ÚselectÚminÚmaxrÛ   rÔ   ÚBlockingIOErrorrÊ   Ú
unregisterÚreadrÜ   r%   r`   Úextendrb   ÚwaitrÕ   ÚTimeoutExpiredr¬   r«   rM   Ú
returncoder"   rL   rd   r[   )r   rÞ   rr   rÙ   ÚdeadlineÚselectorÚstdin_fdÚpendingrà   Úerr_tailÚ	err_totalÚerrorÚ	exited_atÚnowÚkeyr˜   ÚwrittenÚchunkÚstreamÚdurationr   Úsigs                         r   rØ   zSubprocessRunner._superviseô   s  € Ø˜T×1Ñ1Ñ1ˆÜ×,Ñ,Ó.ˆØ—:‘:×$Ñ$Ó&ˆØ×Ñ˜$Ÿ+™+×,Ñ,Ó.´	×0DÑ0DÀeÔLØ×Ñ˜$Ÿ+™+×,Ñ,Ó.´	×0DÑ0DÀeÔLÜ˜TŸZ™ZÓ(ˆÙÜ�O‰O˜H eÔ,Ø×Ñ˜h¬	×(=Ñ(=¸tÕDà�J‰J×ÑÔÜ‹kˆÜ“;ˆØˆ	Ø#ˆØ%)ˆ	ð?	Ø×"Ñ"Õ$¨©Ü—n‘nÓ&�Ø˜(’?Ø%�EÙØÐ$¨¯©«Ð)@Ø #�IØÐ(¨S°9©_¸t×?VÑ?VÒ-VÙØ&Ÿo™o´c¸$ÄÀCÈÐTWÉÓ@XÓ6Y˜oÓZó ""‘F�C˜Ø—x‘x 4Ò'ð	"Ü&(§h¡h¨x¸ÀÀ%¸Ó&I˜GØ&-¨g¨hÐ&7˜Gñ  'Ø$×/Ñ/°Ô9ð%Ø $§
¡
× 0Ñ 0Ô 2ð !ÜŸG™G C§F¡F¨EÓ2�EÙ Ø ×+Ñ+¨C¯F©FÔ3Ø Ø—x‘x 5Ò(Ü˜s›8¤c¨%£jÑ0°4×3HÑ3HÒHØ$2˜EÙ!ØŸ
™
 5Õ)à!¤S¨£ZÑ/˜	Ø Ÿ™¨Ô.Ø$Ð%; t×';Ñ';Ð&;Ð%;Ð<Ø$ t×'<Ñ'<Ô<Ø$2˜EÙ!ðE""ð ×"Ñ"Ô$¨ªðX ˆ} §¡£Ð!4ð&Ø—I‘I¤c¨#¨x¼$¿.¹.Ó:JÑ/JÓ&K�IÔLð �N‰NÔä˜Ÿ™Ô!ðØ—	‘	 !�	Ô$ð  Ÿ:™: t§{¡{°D·K±KÐ@ò �ðØ—L‘L•Nñô
 —>‘>Ó# gÑ-ˆØ�‰ˆÜ! $¬Ô,°¸²ˆt‰e¸tˆØÐÜ˜U E°TÀ#Ü).¨x«È8ôUð Uàˆ<Ü˜U OÄÀxÃÐckÔlÐlØ�!Š8Ü˜U I¸ÀcÜ).¨x«È8ôUð Uà�!Š8Ü˜U N¸dÜ).¨x«È8ôUð Uä˜¨´5¸³:Ì5ÐQYË?Ø*2ô4ð 	4øô  /ò %Ú$Ü&ò "ð %3˜EÛ!ð	"ûô $+ò %Ú $ð%ûô. "×0Ñ0ò &Ø%“Eð&ûô ×,Ñ,ò Úðûô
  ¤Ð,ò Úðûð �N‰NÔä˜Ÿ™Ô!ðØ—	‘	 !�	Õ$øÜ×,Ñ,ò ÙðúàŸ:™: t§{¡{°D·K±KÐ@ò �ðØ—L‘L•NøÜ¤Ð,ò Ùðúñúsø   Ä4BS> ÇRÇ-S> ÈR"ÈCS> Ë#S> Ë<S> Ì1R2 Í&S ÎS(Ò	RÒS> Ò
RÒS> ÒRÒS> Ò"	R/Ò+S> Ò.R/Ò/S> Ò2SÓS> Ó
SÓS> ÓS%Ó$S%Ó(S;Ó:S;Ó>&V Ô%T8Ô7V Ô8UÕV ÕUÕ)V Õ8V	ÖV Ö	V	ÖV ÖV	ÖV )r²   r   r¯   zOptional[ResourceLimits]rS   r   r°   r^   rt   )rÞ   zsubprocess.Popenrr   rZ   rÙ   r^   rV   rd   )r   r   r   r   rs   rØ   rQ   r   r   r®   r®   Á   s,   „ Ø\`Ø%7ÐUXñ5Ø"ð5ØMRó5ó)7ôV`4r   r®   )r   re   rV   ÚNone)rV   r6   )r{   r   rV   r[   )r>   r   rV   r   )r¤   rL   r>   r   rV   r   )r«   rL   rV   r  ),r”   Ú
__future__r   r*   Úrerë   rÌ   ri   rÕ   rÈ   rÅ   Úabcr   r   Údataclassesr   r   Úpathlibr   Útypingr	   r
   ÚBYPASS_SANDBOX_TOKENSr'   r(   Úcompiler8   r:   rœ   r&   rM   r   r2   r@   rC   rZ   rd   rp   rŠ   rŒ   r    r¥   r¬   r®   rQ   r   r   ú<module>r     sD  ðñõ #ã 	Û 	Û Û Û Û Û Û ß #ß (Ý ß %ð
Ð ð &Ð Ø,Ð/FÑFÐ ØˆB�J‰JÐ,Ó-€	Ø�—‘ðhó€ð ˆR�Z‰ZÐ*Ó+€
Ø€ô˜ô ð <Aõ 9ó*ñ �$Ô÷%ð %ó ð%ñ4 �$Ô÷%ð %ó ð%ñ �$Ô÷ð ó ðôG�Sô GóRô]�ô ]ó&Aó
5óôS4�~õ S4r   