§
    nÈjÕ,  ã                   óR  — d dl Zd dlmc mZ d dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ ej         d„ ¦   «         Z!d„ Z"ej#         $                    dddg¦  «        d„ ¦   «         Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+dS )é    N)Ú
TestClient)ÚDeviceCredentialStore)ÚCodexAdapter)ÚProject)Ú	PiAdapter)ÚProjectRegistry)ÚPiSessionRegistry)ÚSpeechPreferences)ÚTargetStore)Ú
FakeDevicec           	   #   ó`  ‡ ‡K  — ‰ dz  }|                      t          j        t          ddd¬¦  «        ¦  «        ¦  «         t	          ¦   «         }t          ‰ dz  ¦  «        }|                     t          ddt          ‰ ¦  «        ¬	¦  «        ¦  «          G ˆ fd
„d¦  «        }t          || |¦   «         ¬¦  «        }t          t          |¦  «        i t          ‰ dz  ¦  «        ||d|i¬¦  «                             ¦   «         D ]!\  }}|                     t          ||¦  «         Œ"|                     t          j        dd ¦  «         |                     t          j        dt!          ‰ dz  ¦  «        ¦  «         t#          t          j        ¦  «        5 Š‰                     d¦  «        5 }	t)          |	¦  «        }
‰                     dddi¬¦  «        }g }|j        }d}||k    }|}|r$|                     ¦   «         d         }d}||k    }|}|�s@t/          j        d|fd||f¦  «        dt3          j        ¦   «         v st/          j        |¦  «        rt/          j        |¦  «        ndt/          j        |¦  «        t/          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r`t/          j        d|fd ||f¦  «        t/          j        |¦  «        t/          j        |¦  «        d!œz  }d"d#|iz  }|                     |¦  «         t/          j        |d$¦  «        i z  }d%d&|iz  }t?          t/          j         |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}|
 !                    d'd(¬)¦  «         ˆˆ fd*„}‰|
||fV — d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )+Núcredentials.jsonúdownlink-testútest-device-onlyútest-pi-only©Ú	device_idÚdevice_tokenÚpi_tokenúprojects.jsonÚpÚTest©ÚidÚnameÚpathc                   ó$   •— e Zd Zg Zˆ fd„Zd„ ZdS )údownlink.<locals>.RPCc              “   ó  •K  — |dk    r#t          ddt          ‰¦  «        ddd¬¦  «        gS d}||k    }|s—t          j        d	|fd
||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x}}| j
                             |d         ¦  «         t          ddd¬¦  «        S )NÚlistÚsr   ÚIDLEú2026-10-03T00:00:00ZT©Ú
session_idr   ÚcwdÚstateÚ
updated_atÚliveÚinput©ú==©z%(py0)s == %(py3)sÚmethod©Úpy0Úpy3úassert %(py5)sÚpy5ÚtextF©Úacceptedr%   Úresumed)ÚdictÚstrÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚinputsÚappend©Úselfr.   ÚparamsÚ@py_assert2Ú@py_assert1Ú@py_format4Ú@py_format6Útmp_paths          €úb/home/lighthouse/esp32-dev/.cache/main-promotion-test-20261009/server/tests/test_agent_downlink.pyÚcallzdownlink.<locals>.RPC.call   s8  øè è € Ø˜ÒÐÝ¨°&½cÀ(¹m¼mÐSYØ(>ÀTðKñ Kô Kð Lð Là$Ð$�6˜WÒ$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$�6˜WÐ$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�6Ñ$Ô$Ð$Õ$Ô$�6Ñ$Ô$Ð$Ð$Õ$Ô$˜WÑ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$ØŒK×Ò˜v fœ~Ñ.Ô.Ð.Ý °#¸uÐEÑEÔEÐEó    c              “   ó
   K  — d S ©N© ©rE   s    rL   Úclosezdownlink.<locals>.RPC.close$   ó
   è è € € € rN   N)Ú__name__Ú
__module__Ú__qualname__rB   rM   rS   ©rK   s   €rL   ÚRPCr      s?   ø€ € € € € Øˆð	Fð 	Fð 	Fð 	Fð 	Fð 	$Ð#Ð#Ð#Ð#rN   rY   ©Úrpcútargets.jsonÚpi©Úcredential_storeÚdevicesÚtarget_storeÚpi_sessionsÚproject_registryÚadaptersÚproviderÚpreferencesúspeech.jsonú
/device/wsú/devices/downlink-test/targetÚtargetúpi:s©ÚjsonéÈ   ú
agent:pi:sr+   ©z3%(py4)s
{%(py4)s = %(py2)s.status_code
} == %(py7)sÚresponse©Úpy2Úpy4Úpy7ú%(py9)sÚpy9)z%(py12)s == %(py15)s©Úpy12Úpy15ú%(py17)sÚpy17r   úassert %(py20)sÚpy20Úagent_stater!   ©r%   c                 ó"  •— ‰                      dddit          d| ddt          ‰	¦  «        dœddi|¥¤Ž¬	¦  «        }|j        }d
}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}|                     ¦   «         S )Nú/integrations/pi/eventsúx-device-lab-pi-tokenr   r!   r   ©Úeventr%   r   r&   Úturn_idÚt©Úheadersrm   rn   r+   ©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)srq   ©r0   rs   r3   úassert %(py7)sru   rQ   ©Úpostr8   r9   Ústatus_coder:   r;   r<   r=   r>   r?   r@   rA   rm   )
ÚkindÚextrarq   rH   Ú@py_assert4Ú@py_assert3rJ   Ú@py_format8ÚclientrK   s
           €€rL   rŽ   zdownlink.<locals>.post2   sG  ø€ Ø—{’{Ð#<ÐG^Ð_mÐFnÝÐq °¸6ÅsÈ8Á}Ä}ÐqÐqÐYbÐcfÐXpÐjoÐXpÐqÐqð #ñ sô sˆHàÔ'Ð.¨3Ð.Ð'¨3Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð'¨3Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.�8Ñ.Ô.Ð.Õ.Ô.�8Ñ.Ô.Ð.Ð.Õ.Ô.Ð'Ñ.Ô.Õ.Ô.¨3Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ø—=’=‘?”?Ð"rN   )"Ú
write_textrm   Údumpsr8   r	   r   Úaddr   r9   r   r   r   ÚitemsÚsetattrÚgatewayÚspeechesr
   r   ÚappÚwebsocket_connectr   rŽ   r�   r:   r;   r<   r=   r>   r?   rC   Ú_format_boolopr@   rA   Úwait)rK   ÚmonkeypatchÚcredentialsÚregistryÚprojectsrY   ÚadapterÚkeyÚvalueÚwsÚdevicerq   rH   r“   Ú@py_assert6Ú@py_assert5Ú@py_assert0Ú@py_assert11Ú@py_assert14Ú@py_assert13r”   Ú@py_format10Ú@py_format16Ú@py_format18Ú@py_format19Ú@py_format21rŽ   r•   s   `                          @rL   Údownlinkrµ      sØ  øøè è € àÐ-Ñ-€KØ×Ò�4œ:¥d°_ÐSeÐp~Ð&Ñ&Ô&ñ  Aô  Añ  Bô  Bð  BÝ Ñ"Ô"€HÝ˜x¨Ñ7Ñ8Ô8€HØ‡L‚L•˜C fµ3°x±=´=ÐAÑAÔAÑBÔBÐBð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ñ 	$ô 	$ð 	$õ ˜ (°°±´Ð6Ñ6Ô6€GÝÕ,AÀ+Ñ,NÔ,NÐXZÝ(3°H¸^Ñ4KÑ(LÔ(LÐZbØ,4ÀÀg¸ðPñ Pô PçPUÒPUÑPWÔPWð1ð 1‰
ˆˆUð 	×Ò�G S¨%Ñ0Ô0Ð0Ð0Ø×Ò�Ô(¨*°dÑ;Ô;Ð;Ø×Ò�Ô(¨-Õ9JÈ8ÐTaÑKaÑ9bÔ9bÑcÔcÐcÝ	•G”KÑ	 Ô	 ð 
, F¨F×,DÒ,DÀ\Ñ,RÔ,Rð 
,ÐVXÝ˜B‘”ˆØ—;’;Ð>ÀhÈvÐEV�;ÑWÔWˆØXÐXˆxÔ#ÐX sÐXÐ# sÒ*ÐXÐXÐXÐXÐX¨x¯}ª}©¬¸xÔ/HÐXÈLÐXÐ/HÈLÒ/XÐXÐXÐXÐXÑXÕXÔXÐXÐXÐXÐXÐ# sÐXÑXÔXÐXÕXÔXÑXÔXÐXÐXÕXÔXˆxÑXÔXÐXÕXÔXˆxÑXÔXÐXÐXÕXÔXÐ#ÑXÔXÕXÔX sÑXÔXÐXÐXÑXÐXÐXÐXÐXÐXÑXÐXÐX×XÒXÐXÑXÔXÐXÐXÐXÕXÔXÐXÐXÐXÐXÐ/HÈLÐXÑXÔXÕXÔXÐ/HÑXÔXÕXÔXÈLÑXÔXÐXÐXÑXÐXÐXÐXÐXÐXÑXÐXÐX×XÒXÐXÑXÔXÐXÕXÔXÐXÐXÑXÔXÐXÑXÐXÐXÐXÐXÐXÑXÐXÕXÕXÔXÐXÑXÔXÑXÔXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXÐXØ�Š�M¨cˆÑ2Ô2Ð2ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð
 �f˜d GÐ+Ð+Ð+Ð+ð
,ð 
,ð 
,ñ 
,ô 
,ð 
,ð 
,ð 
,ð 
,ð 
,ð 
,øøøð 
,ð 
,ð 
,ð 
,ð 
,ð 
,ð 
,ñ 
,ô 
,ð 
,ð 
,ð 
,ð 
,ð 
,ð 
,ð 
,øøøð 
,ð 
,ð 
,ð 
,ð 
,ð 
,s7   ÆN#Æ%GNÍ?N#ÎN	ÎN#ÎN	ÎN#Î#N'Î*N'c           
      óœ  — | \  }}}}|                      dddi¬¦  «        }g }|j        }d}||k    }	|	}
|	r|j        }|j        }dg}||k    }|}
|
�s‘t	          j        d|	fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        d	œz  }d
d|iz  }| 
                    |¦  «         |	r±t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }| 
                    |¦  «         t	          j        |d¦  «        i z  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}
x}x}x}	x}x}x}x}} |d¦  «         |                     dd¬¦  «        d         }
d}|
|k    }|slt	          j        d|fd|
|f¦  «        t	          j	        |
¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}
x}} |dd¬ ¦  «         |                     dd!¬¦  «        }|d         }
d}|
|k    }|slt	          j        d|fd|
|f¦  «        t	          j	        |
¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}
x}}g }|d"         }d}	||	k    }|}
|r|d#         }d$}||k    }|}
|
�st	          j        d|fd%||	f¦  «        t	          j	        |¦  «        t	          j	        |	¦  «        d&œz  }d'd(|iz  }| 
                    |¦  «         |r`t	          j        d|fd)||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        d*œz  }d+d,|iz  }| 
                    |¦  «         t	          j        |d¦  «        i z  }d-d.|iz  } t          t	          j        | ¦  «        ¦  «        ‚d x}
x}x}x}x}	x}x}}|j         }d/}d0d1i}	 |||	¬¦  «        }!|!j        }"d2}|"|k    }#|#söt	          j        d|#fd3|"|f¦  «        d4t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd4t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |	¦  «        t	          j	        |!¦  «        t	          j	        |"¦  «        t	          j	        |¦  «        d5œz  }$d6d7|$iz  }%t          t	          j        |%¦  «        ¦  «        ‚d x}x}x}	x}!x}"x}#}|                     dd!¬¦  «        d         }
|d         }|
|k    }|slt	          j        d|fd|
|f¦  «        t	          j	        |
¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}
x}}d S )8Nz/api/agents/pi/sessions/s/inputr4   u   å“ˆå–½å“ˆå–½rl   éÊ   r+   rp   rq   rr   rv   rw   )zM%(py15)s
{%(py15)s = %(py13)s
{%(py13)s = %(py11)s.rpc
}.inputs
} == %(py18)sr¥   )Úpy11Úpy13rz   Úpy18z%(py20)sr~   r   zassert %(py23)sÚpy23Úagent_startr   ÚRUNNING©r'   Ú
final_textÚ ©z%(py1)s == %(py4)s©Úpy1rt   úassert %(py6)sÚpy6Ú	agent_endu!   ä½ å¥½ï¼�æœ‰ä»€ä¹ˆå�¯ä»¥å¸®ä½ ï¼Ÿ©r¿   ÚDONEÚrecent_textÚnotificationÚdone©z%(py3)s == %(py6)s©r1   rÅ   ú%(py8)sÚpy8©z%(py11)s == %(py14)s©r¸   Úpy14ú%(py16)sÚpy16úassert %(py19)sÚpy19ri   rj   ro   rn   ©z|%(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.post
}(%(py4)s, json=%(py6)s)
}.status_code
} == %(py13)sr•   ©r0   rs   rt   rÅ   rÏ   Úpy10r¹   úassert %(py15)srz   )rŽ   r�   r[   rB   r:   r;   r<   r=   r>   r?   rC   rŸ   r@   rA   r    )&rµ   r•   r©   rŽ   r¥   rq   rH   r“   rª   r«   r¬   Ú@py_assert12r®   Ú@py_assert17Ú@py_assert16r”   r°   r³   r´   Ú@py_format22Ú@py_format24rG   Ú@py_format5Ú@py_format7Úendr’   Ú@py_assert10r¯   Ú@py_format9Ú@py_format15Ú@py_format17r²   Ú@py_format20Ú@py_assert7Ú@py_assert9r­   Ú@py_format14r±   s&                                         rL   Ú*test_direct_answer_without_message_updatesrë   :   sê  € Ø$,Ñ!€FˆF�D˜'Ø�{Š{Ð<ÀFÈ>ÐCZˆ{Ñ[Ô[€HØQÐQˆ8ÔÐQ 3ÐQÐ 3Ò&ÐQÐQÐQÐQÐQ¨7¬;ÐQ¨;Ô+=ÐQÀ.ÐAQÐQÐ+=ÐAQÒ+QÐQÐQÐQÐQÑQÕQÔQÐQÐQÐQÐQÐ 3ÐQÑQÔQÐQÕQÔQÑQÔQÐQÐQÕQÔQˆ8ÑQÔQÐQÕQÔQˆ8ÑQÔQÐQÐQÕQÔQÐÑQÔQÕQÔQ 3ÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÐQ×QÒQÐQÑQÔQÐQÐQÐQÕQÔQÐQÐQÐQÐQÐ+=ÐAQÐQÑQÔQÐQÕQÔQÑQÔQÐQÐQÕQÔQ¨7ÑQÔQÐQÕQÔQ¨7ÑQÔQÐQÐQÕQÔQ¨;ÑQÔQÕQÔQÐ+=ÑQÔQÕQÔQÐAQÑQÔQÐQÐQÑQÐQÐQÐQÐQÐQÑQÐQÐQ×QÒQÐQÑQÔQÐQÕQÔQÐQÐQÑQÔQÐQÑQÐQÐQÐQÐQÐQÑQÐQÕQÕQÔQÐQÑQÔQÑQÔQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQÐQØ€DˆÑÔÐØ�;Š;�}¨Iˆ;Ñ6Ô6°|ÔDÐJÈÐJÐDÈÒJÐJÐJÐJÕJÔJÐJÐJÐJÐJÐDÈÐJÑJÔJÕJÔJÐDÑJÔJÕJÔJÈÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJØ€DˆÐ!DÐEÑEÔEÐEØ
�+Š+�m¨6ˆ+Ñ
2Ô
2€CØˆ|ÔÐCÐ CÐCÐÐ CÒCÐCÐCÐCÕCÔCÐCÐCÐCÐCÐÐ CÐCÑCÔCÕCÔCÐÑCÔCÕCÔCÐ CÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCØEÐEˆ3ˆ}ÔÐE ÐEÐ Ò#ÐEÐEÐEÐEÐE¨¨NÔ(;ÐE¸vÐEÐ(;¸vÒ(EÐEÐEÐEÐEÑEÕEÔEÐEÐEÐEÐEÐ ÐEÑEÔEÕEÔEÐÑEÔEÕEÔE ÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÐE×EÒEÐEÑEÔEÐEÐEÐEÕEÔEÐEÐEÐEÐEÐ(;¸vÐEÑEÔEÕEÔEÐ(;ÑEÔEÕEÔE¸vÑEÔEÐEÐEÑEÐEÐEÐEÐEÐEÑEÐEÐE×EÒEÐEÑEÔEÐEÕEÔEÐEÐEÑEÔEÐEÑEÐEÐEÐEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEàŒ;ÐhÐ6Ðh¸hÀ|Ð=TÐhˆ;ˆ;Ð6Ð=TÐUÑUÔUÐhÐUÔaÐhÐehÐhÐaÐehÒhÐhÐhÐhÕhÔhÐhÐhÐhÐhÐaÐehÐhÑhÔhÐhÕhÔhÑhÔhÐhÐhÕhÔhˆ6ÑhÔhÐhÕhÔhˆ6ÑhÔhÐhÐhÕhÔhˆ;ÑhÔhÕhÔhÐ6ÑhÔhÕhÔhÐ=TÑhÔhÕhÔhÐUÑhÔhÕhÔhÐaÑhÔhÕhÔhÐehÑhÔhÐhÐhÑhÐhÐhÐhÐhÐhÑhÐhÕhÕhÔhÐhÑhÔhÑhÔhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhØ�;Š;�}¨Fˆ;Ñ3Ô3°LÔAÐVÀSÈÔEVÐVÐAÐEVÒVÐVÐVÐVÕVÔVÐVÐVÐVÐVÐAÐEVÐVÑVÔVÕVÔVÐAÑVÔVÕVÔVÐEVÑVÔVÐVÐVÑVÐVÐVÐVÐVÐVÑVÐVÕVÕVÔVÐVÑVÔVÑVÔVÐVÐVÐVÐVÐVÐVÐVÐVÐVrN   ÚfailedFTc                 ó
  — | \  }}}} |d¦  «         |                      dd¬¦  «          |dddd¬	¦  «         |                      d
¦  «        d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t	          t          j        |	¦  «        ¦  «        ‚d x}x}} |ddd¬¦  «         |                      d
¦  «        d         }d}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t	          t          j        |	¦  «        ¦  «        ‚d x}x}}|rdnd}
 |d||
¬¦  «         |                      d|rdnd¬¦  «        }|d         }||
k    }|s—t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }dd|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}}|d         }|rd nd!}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t	          t          j        |	¦  «        ¦  «        ‚d x}x}}g }d"}|d#         }||v }|}|rd}|d#         }||v }|}|�st          j        d$|fd%||f¦  «        t          j        |¦  «        t          j        |¦  «        d&œz  }	d'd(|	iz  }| 	                    |¦  «         |r`t          j        d$|fd)||f¦  «        t          j        |¦  «        t          j        |¦  «        d*œz  }d+d,|iz  }| 	                    |¦  «         t          j
        |d-¦  «        i z  }d.d/|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}} |ddd0¬¦  «         |                      d
¦  «          |d1¦  «         |                      d|d2         ¬¦  «        d         }||
k    }|s—t          j        d|fd||
f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        |
¦  «        rt          j        |
¦  «        nddœz  }dd|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}}d S )3Nr¼   r   r½   r¾   ÚactivityÚtoolzRunning
sleep 3Úbash)Úactivity_typerî   Ú	tool_nameÚagent_activityr+   rÁ   rÂ   rÄ   rÅ   r4   u   æ­£åœ¨æ£€æŸ¥ã€‚©rñ   rî   u!   ä¾�èµ–ä¸�å�¯ç”¨ï¼Œå°šæœªå®Œæˆ�ã€‚u   æ£€æŸ¥å®Œæˆ�ï¼Œç»“æžœæ­£å¸¸ã€‚rÆ   )rì   r¿   ÚFAILEDrÈ   r¿   )z%(py1)s == %(py3)sÚfinal)rÃ   r1   r2   r3   rÊ   rì   rË   zsleep 3rÉ   )Úin)z%(py3)s in %(py6)srÍ   rÎ   rÏ   )z%(py11)s in %(py14)srÑ   rÓ   rÔ   r   rÕ   rÖ   zCompleted
bashÚsession_info_changedr'   )r    r:   r;   r?   r@   rA   r<   r=   r>   rC   rŸ   )rµ   rì   Ú_r©   rŽ   r¬   r“   rG   rà   rá   rö   râ   rI   rJ   rH   r«   r’   rã   r¯   rÛ   rä   rå   ræ   r²   rç   s                            rL   Ú.test_tool_run_and_terminal_result_are_separaterú   I   su  € à!Ñ€A€vˆt�QØ€DˆÑÔÐ˜Ÿš ]¸)˜ÑDÔDÐDØ€Dˆ 6Ð4FÐRXÐYÑYÔYÐYØ�;Š;Ð'Ñ(Ô(¨Ô4ÐJÐ8JÐJÐ4Ð8JÒJÐJÐJÐJÕJÔJÐJÐJÐJÐJÐ4Ð8JÐJÑJÔJÕJÔJÐ4ÑJÔJÕJÔJÐ8JÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJØ€Dˆ 6Ð4EÐFÑFÔFÐFØ�;Š;Ð'Ñ(Ô(¨Ô4ÐIÐ8IÐIÐ4Ð8IÒIÐIÐIÐIÕIÔIÐIÐIÐIÐIÐ4Ð8IÐIÑIÔIÕIÔIÐ4ÑIÔIÕIÔIÐ8IÑIÔIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIØ39Ð_Ð/Ð/Ð?_€EØ€Dˆ˜V°Ð6Ñ6Ô6Ð6Ø
�+Š+�m°vÐ+I¨8¨8À6ˆ+Ñ
JÔ
J€CØˆ|ÔÐ%Ð Ò%Ð%Ð%Ð%Õ%Ô%Ð%Ð%Ð%Ð%Ð Ð%Ñ%Ô%Õ%Ô%ÐÑ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô% Ñ%Ô%Ð%Õ%Ô% Ñ%Ô%Ð%Ð%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Øˆ~ÔÐB¨vÐ#A 8 8¸6ÐBÐÐ#AÒBÐBÐBÐBÕBÔBÐBÐBÐBÐBÐÐ#AÐBÑBÔBÕBÔBÐÑBÔBÕBÔBÐ#AÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBØVÐVˆ9ÐV˜˜MÔ*ÐVˆ9Ð*Ð*ÐVÐVÐVÐVÐVÐ/@ÐVÀCÈÔDVÐVÐ/@ÐDVÐ/VÐVÐVÐVÐVÑVÕVÔVÐVÐVÐVÐVˆ9Ð*ÐVÑVÔVÕVÔVˆ9ÑVÔVÕVÔVÐ*ÑVÔVÐVÐVÑVÐVÐVÐVÐVÐVÑVÐVÐV×VÒVÐVÑVÔVÐVÐVÐVÕVÔVÐVÐVÐVÐVÐ/@ÐDVÐVÑVÔVÕVÔVÐ/@ÑVÔVÕVÔVÐDVÑVÔVÐVÐVÑVÐVÐVÐVÐVÐVÑVÐVÐV×VÒVÐVÑVÔVÐVÕVÔVÐVÐVÑVÔVÐVÑVÐVÐVÐVÐVÐVÑVÐVÕVÕVÔVÐVÑVÔVÑVÔVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVÐVà€Dˆ 6Ð4EÐFÑFÔFÐFØ
‡K‚KÐ Ñ!Ô!Ð!Ø€DÐ	Ñ Ô Ð Ø�;Š;�}¨C°¬Lˆ;Ñ9Ô9¸,ÔGÐPÐGÈ5ÒPÐPÐPÐPÕPÔPÐPÐPÐPÐPÐGÈ5ÐPÑPÔPÕPÔPÐGÑPÔPÐPÕPÔPÑPÔPÐPÐPÕPÔPÈ5ÑPÔPÐPÕPÔPÈ5ÑPÔPÐPÐPÐPÐPÑPÐPÐPÐPÐPÐPÑPÐPÕPÕPÔPÐPÑPÔPÑPÔPÐPÐPÐPÐPÐPÐPÐPrN   c           
      ó  — | \  }}}} |d¦  «         |                      dd¬¦  «         dddz  z   } |d|¬	¦  «         |                      dd
¬¦  «        }d}|d         }|j        } |¦   «         }	t          |	¦  «        }
||
k     }d}|
|k    }|r|�st          j        d||fd||
|f¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |
¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}x}x}x}	x}
}g }d}|d         }||v}|}|rd}|d         }||v}|}|�st          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r`t          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}|d         }|j        }d } ||¦  «        }|ssd!t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d"œz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}} |dd#¬$¦  «         |                      dd¬¦  «        d         }d%}||k    }|slt          j        d&|fd'||f¦  «        t          j        |¦  «        t          j        |¦  «        d(œz  }d)d*|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}} |dd#d+¬,¦  «         |                      dd-¬¦  «        }g }|d         }d%}||k    }|}|r|d.         }d-}||k    }|}|�st          j        d&|fd/||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         |r`t          j        d&|fd0||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }|                     |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}d S )1Nr¼   r   r½   r¾   uH   ç»“æžœðŸ™‚ Authorization: Bearer private-credential
api_key=private-key
u
   ä¸­æ–‡ðŸ™‚i¸  rÆ   rÇ   rÈ   r   r¿   i   )ú<ú<=)zf%(py1)s < %(py12)s
{%(py12)s = %(py4)s(%(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.encode
}()
})
}zh%(py12)s
{%(py12)s = %(py4)s(%(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.encode
}()
})
} <= %(py14)sÚlen)rÃ   rt   rÅ   rÏ   rÙ   ry   rÒ   zassert %(py16)srÔ   zprivate-u   ï¿½©únot in)z%(py3)s not in %(py6)srÍ   rÎ   rÏ   )z%(py11)s not in %(py14)srÑ   rÓ   rÕ   rÖ   u
   ç»“æžœðŸ™‚zLassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.startswith
}(%(py5)s)
})rÃ   r1   r3   ru   Únext)r†   rÀ   r+   rÁ   rÂ   rÄ   rÅ   T)r†   rì   rõ   r'   rÌ   rÐ   )r    Úencoderþ   r:   r;   r?   r<   r=   r>   r@   rA   rC   rŸ   Ú
startswith)rµ   rù   r©   rŽ   rö   râ   r¬   r«   rè   ré   r­   rG   r¯   r“   rå   ræ   rH   r’   rã   rÛ   rá   rä   r²   rç   rª   r”   rà   s                              rL   Ú,test_final_bound_redaction_and_new_run_resetr  ^   sö  € Ø!Ñ€A€vˆt�QØ€DˆÑÔÐ˜Ÿš ]¸)˜ÑDÔDÐDØXÐ[gÐhlÑ[lÑl€EØ€Dˆ Ð'Ñ'Ô'Ð'Ø
�+Š+�m¨6ˆ+Ñ
2Ô
2€CØÐ6�3�|Ô$Ð6Ð$Ô+Ð6Ð+Ð+Ñ-Ô-Ð6�sÐ-Ñ.Ô.Ð6ˆ1Ð.Ò6Ð6°$Ð6Ð.°$Ò6Ð6Ð6Ð6Ð6Ñ6Õ6Ô6Ð6Ð6Ð6Ð6Ð6ˆ1Ð.°$Ð6Ñ6Ô6Õ6Ô6ˆ1Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�sÑ6Ô6Ð6Õ6Ô6�sÑ6Ô6Ð6Ð6Õ6Ô6Ð$Ñ6Ô6Õ6Ô6Ð+Ñ6Ô6Õ6Ô6Ð-Ñ6Ô6Õ6Ô6Ð.Ñ6Ô6Õ6Ô6°$Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ØTÐTˆ:ÐT˜S Ô.ÐTˆ:Ð.Ð.ÐTÐTÐTÐTÐT°8ÐTÀ3À|ÔCTÐT°8ÐCTÐ3TÐTÐTÐTÐTÑTÕTÔTÐTÐTÐTÐTˆ:Ð.ÐTÑTÔTÕTÔTˆ:ÑTÔTÕTÔTÐ.ÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÐT×TÒTÐTÑTÔTÐTÐTÐTÕTÔTÐTÐTÐTÐT°8ÐCTÐTÑTÔTÕTÔT°8ÑTÔTÕTÔTÐCTÑTÔTÐTÐTÑTÐTÐTÐTÐTÐTÑTÐTÐT×TÒTÐTÑTÔTÐTÕTÔTÐTÐTÑTÔTÐTÑTÐTÐTÐTÐTÐTÑTÐTÕTÕTÔTÐTÑTÔTÑTÔTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTÐTØˆ|ÔÐ5ÐÔ'Ð5¨Ð5Ð'Ð'¨Ñ5Ô5Ð5Ð5Ð5Ð5Õ5Ô5ÐÑ5Ô5Õ5Ô5Ð'Ñ5Ô5Õ5Ô5¨Ñ5Ô5Õ5Ô5Ð5Ñ5Ô5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ø€Dˆ Ð'Ñ'Ô'Ð'Ø�;Š;�}¨Iˆ;Ñ6Ô6°|ÔDÐJÈÐJÐDÈÒJÐJÐJÐJÕJÔJÐJÐJÐJÐJÐDÈÐJÑJÔJÕJÔJÐDÑJÔJÕJÔJÈÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJØ€Dˆ˜f¨TÐ2Ñ2Ô2Ð2Ø
�+Š+�m¨8ˆ+Ñ
4Ô
4€CØ?Ð?ˆ3ˆ|ÔÐ? Ð?Ð Ò"Ð?Ð?Ð?Ð?Ð? s¨7¤|Ð?°xÐ? |°xÒ'?Ð?Ð?Ð?Ð?Ñ?Õ?Ô?Ð?Ð?Ð?Ð?Ð Ð?Ñ?Ô?Õ?Ô?ÐÑ?Ô?Õ?Ô? Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Ð?×?Ò?Ð?Ñ?Ô?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð? |°xÐ?Ñ?Ô?Õ?Ô? |Ñ?Ô?Õ?Ô?°xÑ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Ð?×?Ò?Ð?Ñ?Ô?Ð?Õ?Ô?Ð?Ð?Ñ?Ô?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?rN   c           	      óú  — | \  }}}} |d¦  «         |                      dd¬¦  «          |dd¬¦  «         |                      dd¬¦  «        }|d	         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t	          t          j        |	¦  «        ¦  «        ‚d x}x}}|d         }t          j        }
|
j        }d} ||¦  «        }||k    }|sít          j        d|fd||f¦  «        t          j        |¦  «        dt          j
        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |
¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}x}x}
x}x}}d S )Nr¼   r   r½   r¾   rÆ   u	   å®Œæˆ�ã€‚rÇ   rÈ   rÊ   rË   r+   rÁ   rÂ   rÄ   rÅ   Útarget_generationr   ©zt%(py1)s == %(py11)s
{%(py11)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.target_store
}.generation
}(%(py9)s)
}r›   ©rÃ   r1   r3   ru   rw   r¸   úassert %(py13)sr¹   ©r    r:   r;   r?   r@   rA   r›   ra   Ú
generationr<   r=   r>   ©rµ   rù   r©   rŽ   râ   r¬   r“   rG   rà   rá   r’   rª   Ú@py_assert8rã   Ú@py_format12rê   s                   rL   Ú7test_terminal_state_carries_notification_and_generationr  n   sW  € Ø!Ñ€A€vˆt�QØ€DˆÑÔÐ˜Ÿš ]¸)˜ÑDÔDÐDØ€Dˆ Ð-Ñ-Ô-Ð-Ø
�+Š+�m¨6ˆ+Ñ
2Ô
2€Cð ˆ~ÔÐ( &Ð(Ð &Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð &Ð(Ñ(Ô(Õ(Ô(ÐÑ(Ô(Õ(Ô( &Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ØÐ"Ô#ÐW¥wÔ';ÐWÐ';Ô'FÐWÀÐWÐ'FÐ'FÀÑ'WÔ'WÐWÐ#Ð'WÒWÐWÐWÐWÕWÔWÐWÐWÐWÐWÐ#Ð'WÐWÑWÔWÕWÔWÐ#ÑWÔWÐWÕWÔWÑWÔWÐWÐWÕWÔW¥wÑWÔWÐWÕWÔW¥wÑWÔWÐWÐWÕWÔWÐ';ÑWÔWÕWÔWÐ'FÑWÔWÕWÔWÀÑWÔWÕWÔWÐ'WÑWÔWÐWÐWÑWÐWÐWÐWÐWÐWÑWÐWÕWÕWÔWÐWÑWÔWÑWÔWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWrN   c           	      óú  — | \  }}}} |d¦  «         |                      dd¬¦  «          |dd¬¦  «         |                      dd¬¦  «        }|d	         }d
}||k    }|slt          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t	          t          j        |	¦  «        ¦  «        ‚d x}x}}|d         }t          j        }
|
j        }d} ||¦  «        }||k    }|sít          j        d|fd||f¦  «        t          j        |¦  «        dt          j
        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |
¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t	          t          j        |¦  «        ¦  «        ‚d x}x}x}
x}x}}d S )Nr¼   r   r½   r¾   rÆ   T)rì   rõ   rÊ   rì   r+   rÁ   rÂ   rÄ   rÅ   r  r   r  r›   r  r	  r¹   r
  r  s                   rL   Ú>test_failed_terminal_state_carries_notification_and_generationr  y   sU  € Ø!Ñ€A€vˆt�QØ€DˆÑÔÐ˜Ÿš ]¸)˜ÑDÔDÐDØ€Dˆ˜TÐ"Ñ"Ô"Ð"Ø
�+Š+�m¨8ˆ+Ñ
4Ô
4€CØˆ~ÔÐ* (Ð*Ð (Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð (Ð*Ñ*Ô*Õ*Ô*ÐÑ*Ô*Õ*Ô* (Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÐ"Ô#ÐW¥wÔ';ÐWÐ';Ô'FÐWÀÐWÐ'FÐ'FÀÑ'WÔ'WÐWÐ#Ð'WÒWÐWÐWÐWÕWÔWÐWÐWÐWÐWÐ#Ð'WÐWÑWÔWÕWÔWÐ#ÑWÔWÐWÕWÔWÑWÔWÐWÐWÕWÔW¥wÑWÔWÐWÕWÔW¥wÑWÔWÐWÐWÕWÔWÐ';ÑWÔWÕWÔWÐ'FÑWÔWÕWÔWÀÑWÔWÕWÔWÐ'WÑWÔWÐWÐWÑWÐWÐWÐWÐWÐWÑWÐWÕWÕWÔWÐWÑWÔWÑWÔWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWrN   c                 ó"  ‡ ‡— ‰ dz  }|                      t          j        t          ddd¬¦  «        ¦  «        ¦  «         t	          ¦   «         }t          ‰ dz  ¦  «        }|                     t          ddt          ‰ ¦  «        ¬	¦  «        ¦  «          G ˆ fd
„d¦  «        }t          || |¦   «         ¬¦  «        }t          t          |¦  «        i t          ‰ dz  ¦  «        ||d|i¬¦  «                             ¦   «         D ]!\  }}|                     t          ||¦  «         Œ"|                     t          j        dd ¦  «         |                     t          j        dt!          ‰ dz  ¦  «        ¦  «         t#          t          j        ¦  «        5 Š‰                     d¦  «        5 }	t)          |	¦  «        }
ˆˆ fd„} |dd¦  «         ‰j        }d}ddi} |||¬¦  «        }|j        }d}||k    }|söt/          j        d|fd||f¦  «        dt3          j        ¦   «         v st/          j        ‰¦  «        rt/          j        ‰¦  «        ndt/          j        |¦  «        t/          j        |¦  «        t/          j        |¦  «        t/          j        |¦  «        t/          j        |¦  «        t/          j        |¦  «        dœz  }d d!|iz  }t;          t/          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}}|
                     d"d¬#¦  «          |dd$¦  «         |
                     d"d%¬&¦  «          |d'd¦  «         ‰j        }d}dd(i} |||¬¦  «        }|j        }d}||k    }|söt/          j        d|fd||f¦  «        dt3          j        ¦   «         v st/          j        ‰¦  «        rt/          j        ‰¦  «        ndt/          j        |¦  «        t/          j        |¦  «        t/          j        |¦  «        t/          j        |¦  «        t/          j        |¦  «        t/          j        |¦  «        dœz  }d d!|iz  }t;          t/          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}}|
                     d"d'¬#¦  «          |dd)d*¬+¦  «         tA          |
j!        j"        ¦  «        }‰                     d,d-d.d/œ¬¦  «         |
                     d0¦  «         d1„ |
j!        j"        |d …         D ¦   «         }| }|sed2d3d4t3          j        ¦   «         v st/          j        |¦  «        rt/          j        |¦  «        nd4iz  }t;          t/          j        |¦  «        ¦  «        ‚d }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )5Nr   r   r   r   r   r   r   r   r   c                   ó    •— e Zd Zˆ fd„Zd„ ZdS )úFtest_terminal_notification_never_reaches_switched_session.<locals>.RPCc              “   óÆ  •K  — |dk    rˆfd„dD ¦   «         S d}||k    }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}t          d| 	                    dd¦  «        d¬¦  «        S )Nr    c           
      óT   •— g | ]$}t          ||t          ‰¦  «        d dd¬¦  «        ‘Œ%S )r"   r#   Tr$   )r8   r9   )Ú.0r!   rK   s     €rL   ú
<listcomp>z_test_terminal_notification_never_reaches_switched_session.<locals>.RPC.call.<locals>.<listcomp>Œ   sT   ø€ ð að að aØOPõ ¨°µs¸8±}´}ÈFØ(>ÀTðKñ Kô Kð að að arN   )r!   Ús2r*   r+   r-   r.   r/   r2   r3   Tr%   r!   Fr5   )
r:   r;   r<   r=   r>   r?   r@   rA   r8   ÚgetrD   s          €rL   rM   zKtest_terminal_notification_never_reaches_switched_session.<locals>.RPC.callŠ   s+  øè è € Ø˜ÒÐðað að að aØT_ðañ aô að aà$Ð$�6˜WÒ$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$�6˜WÐ$Ñ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�6Ñ$Ô$Ð$Õ$Ô$�6Ñ$Ô$Ð$Ð$Õ$Ô$˜WÑ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ý °&·*²*¸\È3Ñ2OÔ2OÐY^Ð_Ñ_Ô_Ð_rN   c              “   ó
   K  — d S rP   rQ   rR   s    rL   rS   zLtest_terminal_notification_never_reaches_switched_session.<locals>.RPC.close�   rT   rN   N)rU   rV   rW   rM   rS   rX   s   €rL   rY   r  ‰   s:   ø€ € € € € ð	`ð 	`ð 	`ð 	`ð 	`ð 	$Ð#Ð#Ð#Ð#rN   rY   rZ   r\   r]   r^   re   rf   rg   rh   c                 ó"  •— ‰	                      dddit          d|| | t          ‰
¦  «        dœddi|¥¤Ž¬¦  «        }|j        }d}||k    }|sªt	          j        d	|fd
||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}|                     ¦   «         S )Nr‚   rƒ   r   r„   r†   r‡   rˆ   rn   r+   rŠ   rq   r‹   rŒ   ru   rQ   r�   )Úsessionr�   r‘   rq   rH   r’   r“   rJ   r”   r•   rK   s            €€rL   rŽ   zGtest_terminal_notification_never_reaches_switched_session.<locals>.post›   sH  ø€ Ø—{’{Ð#<ÐG^Ð_mÐFnÝÐv °¸wÍCÐPXÉMÌMÐvÐvÐ^gÐhkÐ]uÐotÐ]uÐvÐvð #ñ xô xˆHàÔ'Ð.¨3Ð.Ð'¨3Ò.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð'¨3Ð.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.�8Ñ.Ô.Ð.Õ.Ô.�8Ñ.Ô.Ð.Ð.Õ.Ô.Ð'Ñ.Ô.Õ.Ô.¨3Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ø—=’=‘?”?Ð"rN   r!   Úsession_startri   rj   rk   rl   rn   r+   r×   r•   rØ   rÚ   rz   r   r€   r¼   r½   r¾   r  zpi:s2rÆ   u   A å®Œæˆ�rÇ   ú/devices/downlink-test/messageÚbarrierÚtest©ÚtitleÚbodyÚdisplay_messagec                 ó*   — g | ]}|d          dk    ¯|‘ŒS )Útyper   rQ   ©r  Úrs     rL   r  zMtest_terminal_notification_never_reaches_switched_session.<locals>.<listcomp>­   s&   € ÐYÐYÐY�qÀÀ&Ä	È=Ò@XÐ@X�Ð@XÐ@XÐ@XrN   zassert not %(py0)sr0   Ústale)#r–   rm   r—   r8   r	   r   r˜   r   r9   r   r   r   r™   rš   r›   rœ   r
   r   r�   rž   r   rŽ   r�   r:   r;   r<   r=   r>   r?   r@   rA   r    rþ   ÚrecorderÚrecords)rK   r¡   r¢   r£   r¤   rY   r¥   r¦   r§   r¨   r©   rŽ   rH   r“   r«   rè   ré   rÛ   r­   rê   r±   Úbeforer*  Ú@py_format2r•   s   `                       @rL   Ú9test_terminal_notification_never_reaches_switched_sessionr/  ‚   sÕ  øø€ ØÐ-Ñ-€KØ×Ò�4œ:¥d°_ÐSeÐp~Ð&Ñ&Ô&ñ  Aô  Añ  Bô  Bð  BÝ Ñ"Ô"€HÝ˜x¨Ñ7Ñ8Ô8€HØ‡L‚L•˜C fµ3°x±=´=ÐAÑAÔAÑBÔBÐBð$ð $ð $ð $ð $ð $ð $ñ $ô $ð $õ ˜ (°°±´Ð6Ñ6Ô6€GÝÕ,AÀ+Ñ,NÔ,NÐXZÝ(3°H¸^Ñ4KÑ(LÔ(LÐZbØ,4ÀÀg¸ðPñ Pô PçPUÒPUÑPWÔPWð1ð 1‰
ˆˆUð 	×Ò�G S¨%Ñ0Ô0Ð0Ð0Ø×Ò�Ô(¨*°dÑ;Ô;Ð;Ø×Ò�Ô(¨-Õ9JÈ8ÐTaÑKaÑ9bÔ9bÑcÔcÐcÝ	•G”KÑ	 Ô	 ð  F¨F×,DÒ,DÀ\Ñ,RÔ,Rð ÐVXÝ˜B‘”ˆð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð
 	ˆˆS�/Ñ"Ô"Ð"ØŒ{ÐfÐ:ÐfÀ(È6ÐARÐfˆ{ˆ{Ð:ÐARÐSÑSÔSÐfÐSÔ_ÐfÐcfÐfÐ_ÐcfÒfÐfÐfÐfÕfÔfÐfÐfÐfÐfÐ_ÐcfÐfÑfÔfÐfÕfÔfÑfÔfÐfÐfÕfÔfˆvÑfÔfÐfÕfÔfˆvÑfÔfÐfÐfÕfÔfˆ{ÑfÔfÕfÔfÐ:ÑfÔfÕfÔfÐARÑfÔfÕfÔfÐSÑfÔfÕfÔfÐ_ÑfÔfÕfÔfÐcfÑfÔfÐfÐfÑfÐfÐfÐfÐfÐfÑfÐfÕfÕfÔfÐfÑfÔfÑfÔfÐfÐfÐfÐfÐfÐfÐfÐfÐfÐfÐfÐfÐfÐfÐfØ�Š�M¨cˆÑ2Ô2Ð2ØˆˆS�-Ñ Ô Ð  &§+¢+¨mÀ9 +Ñ"MÔ"MÐ"MàˆˆT�?Ñ#Ô#Ð#ØŒ{ÐgÐ:ÐgÀ(È7ÐASÐgˆ{ˆ{Ð:ÐASÐTÑTÔTÐgÐTÔ`ÐgÐdgÐgÐ`ÐdgÒgÐgÐgÐgÕgÔgÐgÐgÐgÐgÐ`ÐdgÐgÑgÔgÐgÕgÔgÑgÔgÐgÐgÕgÔgˆvÑgÔgÐgÕgÔgˆvÑgÔgÐgÐgÕgÔgˆ{ÑgÔgÕgÔgÐ:ÑgÔgÕgÔgÐASÑgÔgÕgÔgÐTÑgÔgÕgÔgÐ`ÑgÔgÕgÔgÐdgÑgÔgÐgÐgÑgÐgÐgÐgÐgÐgÑgÐgÕgÕgÔgÐgÑgÔgÑgÔgÐgÐgÐgÐgÐgÐgÐgÐgÐgÐgÐgÐgÐgÐgÐgØ�Š�M¨dˆÑ3Ô3Ð3àˆˆS�+¨*Ð5Ñ5Ô5Ð5Ý�V”_Ô,Ñ-Ô-ˆØ�ŠÐ4ÀIÐV\Ð;]Ð;]ˆÑ^Ô^Ð^Ø�ŠÐ%Ñ&Ô&Ð&ØYÐY˜FœOÔ3°F°G°GÔ<ÐYÑYÔYˆØˆyÐˆyÐÐÐÐÕÔÑÔÐÐÕÔ�5ÑÔÐÕÔ�5ÑÔÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐð+ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s7   ÆVÆ#N=U,Õ VÕ,U0	Õ0VÕ3U0	Õ4VÖVÖVc                 óÌ  — | \  }}}}|                      dddi¬¦  «         |                     d¦  «          |d¦  «          |ddd	¬
¦  «         |                      ddddœ¬¦  «         t          |j        j        ¦  «        }|                     d¦  «         d„ |j        j        |d …         D ¦   «         }t          |¦  «        }| }|s•ddt          j        ¦   «         v st          j	        t
          ¦  «        rt          j
        t
          ¦  «        ndt          j
        |¦  «        t          j
        |¦  «        dœz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}}d S )Nri   rj   Úserverrl   Útarget_stater¼   rî   r4   zmust stay on srô   r  r   r!  r"  r%  c              3   ó*   K  — | ]}|d          dv V — ŒdS )r'  )r   ró   NrQ   r(  s     rL   ú	<genexpr>z@test_unselected_session_never_pushes_activity.<locals>.<genexpr>º   s,   è è € ÐlÐlÀa�1�V”9Ð AÐAÐlÐlÐlÐlÐlÐlrN   z0assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úany)r0   rs   rt   )rŽ   r    rþ   r+  r,  r5  r<   r=   r:   r>   r?   r@   rA   )
rµ   r•   r©   rŽ   rù   r-  rH   r“   r«   rJ   s
             rL   Ú-test_unselected_session_never_pushes_activityr6  ±   s‡  € Ø&Ñ€FˆF�D˜!Ø
‡K‚KÐ/°xÀÐ6I€KÑJÔJÐJØ
‡K‚K�ÑÔÐØ€DˆÑÔÐØ€Dˆ 6Ð4DÐEÑEÔEÐEØ
‡K‚KÐ0À	ÐRXÐ7YÐ7Y€KÑZÔZÐZÝ�”Ô(Ñ)Ô)€FØ
‡K‚KÐ!Ñ"Ô"Ð"ØlÐlÈ6Ì?ÔKbÐciÐcjÐcjÔKkÐlÑlÔlÐl�sÐlÑlÔlÐlÐlÐlÐlÐlÐlÐlÐlÕlÔlÑlÔlÐlÐlÕlÔl�sÑlÔlÐlÕlÔl�sÑlÔlÐlÐlÕlÔlÐlÑlÔlÕlÔlÐlÑlÔlÐlÐlÑlÐlÕlÕlÔlÐlÑlÔlÑlÔlÐlÐlÐlÐlÐlÐlÐlÐlÐlrN   c                 óN   ‡ ‡— ˆˆ fd„}t          j         |¦   «         ¦  «         d S )Nc               “   ó¤  •K  — t          ‰dz  ¦  «        } |                      t          ddt          ‰¦  «        ¬¦  «        ¦  «         t	          | ¦  «        }ˆfd„}d„ }||_        ||_        ‰                     t          dd|i¦  «         | 	                    t          d	d
ddidœ¬¦  «        ¦  «        ƒ d {V —† | 	                    t          dd
dt          dddd¬¦  «        dœ¬¦  «        ¦  «        ƒ d {V —† | 	                    t          dd
dddœdœ¬¦  «        ¦  «        ƒ d {V —† t          j        d¦  «        ƒ d {V —†}g }|d         }d}||k    }|}	|r|d         }
d}|
|k    }|}	|	�st          j        d|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d d!|iz  }|                     |¦  «         |r`t          j        d|fd"|
|f¦  «        t          j        |
¦  «        t          j        |¦  «        d#œz  }d$d%|iz  }|                     |¦  «         t          j        |d&¦  «        i z  }d'd(|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}	x}x}x}x}x}
x}}g }|d)         }|j        }d*} ||¦  «        }|}	|rd+}|d)         }||v}|}	|	�s	d,t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d-œz  }|                     |¦  «         |r`t          j        d.|fd/||f¦  «        t          j        |¦  «        t          j        |¦  «        d0œz  }d1d2|iz  }|                     |¦  «         t          j        |d&¦  «        i z  }d3d4|iz  }t#          t          j        |¦  «        ¦  «        ‚d x}	x}x}x}x}x}x}x}}d S )5Nr   r   r   r   c              “   óš  •K  — d}| |k    }|s—t          j        d|fd| |f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}dt          d	t          ‰¦  «        d
ddi¬¦  «        iS )Nzthread/readr+   r-   r.   r/   r2   r3   Úthreadr!   r   r'  Úidle)r   r&   Ú	updatedAtÚstatus)
r:   r;   r<   r=   r>   r?   r@   rA   r8   r9   )r.   rF   rG   rH   rI   rJ   rK   s         €rL   rM   zHtest_codex_authoritative_final_is_preserved.<locals>.check.<locals>.callÂ   sò   øè è € Ø*Ð*�6˜]Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*�6˜]Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�6Ñ*Ô*Ð*Õ*Ô*�6Ñ*Ô*Ð*Ð*Õ*Ô*˜]Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ø�T S­c°(©m¬mÀqÐRXÐY_ÐQ`ÐaÑaÔaÐbÐbrN   c              “   ó
   K  — d S rP   rQ   )Úsids    rL   ÚobservezKtest_codex_authoritative_final_is_preserved.<locals>.check.<locals>.observeÅ   rT   rN   rd   Úcodexzturn/startedr!   r   r‡   )ÚthreadIdÚturn)r.   rF   zitem/completedrö   ÚagentMessageÚfinal_answeru    Codex ç»“æžœã€‚token=private-key)r   r'  Úphaser4   )rB  ÚturnIdÚitemzturn/completedÚ	completed)r   r=  zagent:codex:sr'   rÈ   Úagentr+   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   rÓ   rÔ   r   rÕ   rÖ   r¿   u   Codex ç»“æžœã€‚zprivate-keyzE%(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.startswith
}(%(py7)s)
})r1   r3   ru   rw   rÿ   )z%(py12)s not in %(py15)srx   r{   r|   r}   r~   )r   r˜   r   r9   r   rM   Úobserve_sessionrš   r›   r…   r8   Úagent_target_payloadr:   r;   r?   rC   rŸ   r@   rA   r  )r¤   r¥   rM   r@  ÚpayloadrH   rG   r«   r’   r¬   rã   r¯   rÛ   rá   rä   rå   ræ   r²   rç   rª   r  r­   r®   r°   r±   r³   r´   r¡   rK   s                              €€rL   Úcheckz:test_codex_authoritative_final_is_preserved.<locals>.check¾   s3  øè è € Ý" 8¨OÑ#;Ñ<Ô<ˆØ�Š•W ¨&µs¸8±}´}ÐEÑEÔEÑFÔFÐFÝ˜xÑ(Ô(ˆð	cð 	cð 	cð 	cð 	cð 	%Ð$Ð$ØˆŒØ")ˆÔØ×Ò�G Z°'¸'Ð1BÑCÔCÐCØ�mŠm�D¨È3ÐX\Ð]`ÐWaÐ?bÐ?bÐcÑcÔcÑdÔdÐdÐdÐdÐdÐdÐdÐdØ�mŠm�DÐ(8ÈSÐ[^Ý˜7¨¸~ÐTvÐwÑwÔwðByð Byð zñ zô zñ {ô {ð 	{ð 	{ð 	{ð 	{ð 	{ð 	{ð 	{à�mŠm�DÐ(8ÈSÐ_bÐmxÐYyÐYyÐAzÐAzÐ{Ñ{Ô{Ñ|Ô|Ð|Ð|Ð|Ð|Ð|Ð|Ð|ÝÔ4°_ÑEÔEÐEÐEÐEÐEÐEÐEˆØIÐIˆw�wÔÐI 6ÐIÐ 6Ò)ÐIÐIÐIÐIÐI¨g°gÔ.>ÐIÀ'ÐIÐ.>À'Ò.IÐIÐIÐIÐIÑIÕIÔIÐIÐIÐIÐIÐ 6ÐIÑIÔIÕIÔIÐÑIÔIÕIÔI 6ÑIÔIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÐI×IÒIÐIÑIÔIÐIÐIÐIÕIÔIÐIÐIÐIÐIÐ.>À'ÐIÑIÔIÕIÔIÐ.>ÑIÔIÕIÔIÀ'ÑIÔIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÐI×IÒIÐIÑIÔIÐIÕIÔIÐIÐIÑIÔIÐIÑIÐIÐIÐIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIØqÐqˆw�|Ô$ÐqÐ$Ô/ÐqÐ0AÐqÐ/Ð/Ð0AÑBÔBÐqÐBÐqÐBÐqÀ}ÐqÐ\cÐdpÔ\qÐqÀ}Ð\qÐGqÐqÐqÐqÐqÑqÐqÕqÔqÐ$ÑqÔqÕqÔqÐ/ÑqÔqÕqÔqÐ0AÑqÔqÕqÔqÐBÑqÔqÐqÐqÑqÐqÐq×qÒqÐqÑqÔqÐqÐBÐqÕqÔqÐqÐqÐqÐqÀ}Ð\qÐqÑqÔqÕqÔqÀ}ÑqÔqÕqÔqÐ\qÑqÔqÐqÐqÑqÐqÐqÐqÐqÐqÑqÐqÐq×qÒqÐqÑqÔqÐqÕqÔqÐqÐqÑqÔqÐqÑqÐqÐqÐqÐqÐqÑqÐqÕqÕqÔqÐqÑqÔqÑqÔqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqÐqrN   )ÚasyncioÚrun)rK   r¡   rN  s   `` rL   Ú+test_codex_authoritative_final_is_preservedrQ  ½   sF   øø€ ðrð rð rð rð rð rõ$ „K��‘”ÑÔÐÐÐrN   ),Úbuiltinsr<   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter:   rO  rm   ÚpytestÚfastapi.testclientr   Údevice_gateway.appr�   r›   Údevice_gateway.authr   Údevice_gateway.control.codexr   Údevice_gateway.control.modelsr   Údevice_gateway.control.pir   Údevice_gateway.control.projectsr   Údevice_gateway.integrations.pir	   Údevice_gateway.speechr
   Údevice_gateway.stater   Úfake_devicer   Úfixturerµ   rë   ÚmarkÚparametrizerú   r  r  r  r/  r6  rQ  rQ   rN   rL   ú<module>re     sÖ  ðØ  € € € € € € € € € € € € €€€€Ø €€€à €€€Ø )Ð )Ð )Ð )Ð )Ð )à $Ð $Ð $Ð $Ð $Ð $Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø /Ð /Ð /Ð /Ð /Ð /Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø <Ð <Ð <Ð <Ð <Ð <Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø "Ð "Ð "Ð "Ð "Ð "ð „ð#,ð #,ñ „ð#,ðLWð Wð Wð „×Ò˜ E¨4 =Ñ1Ô1ðQð Qñ 2Ô1ðQð(@ð @ð @ð Xð Xð XðXð Xð Xð,ð ,ð ,ð^	mð 	mð 	mðð ð ð ð rN   