+
    jHàjþ  ã                  óÐ   € R t ^ RIHt ^ RIt^ RIt^ RIt^ RItR]! 0 Rm4      R]! R04      R]! R04      R]! R	04      R
]! R04      R]! R04      /t]! RR04      t	 ! R R4      t
R# )zIPrivate local bootstrap grants; never put these credentials in discovery.)ÚannotationsNÚinteractiveznative-httpz
http:ownerznative-profile-createzprofiles:createznative-profile-registryzprofiles:registryÚexposureztransport:delegatezworker-adoptionzworker:adoptÚprofileÚhostc                  ób   € ] tR t^t^tRtR R ltRR/R R lltR R	 ltR
 R lt	R R lt
RtR# )ÚTicketStorei   c               ó    € V ^8„  d   QhRRRR/# )é   Úinstance_idÚstrÚprofile_idszfrozenset[str]© )Úformats   "Ú>/home/ubuntu/.hermes/hermes-agent/gateway/runtime_bootstrap.pyÚ__annotate__ÚTicketStore.__annotate__   s   € ÷ &ñ & Cð &°nñ &ó    c                	óª   € V'       d	   V'       g   \        R 4      hWn        \        V4      V n        / V n        \
        P                  ! 4       V n        R# )z/bootstrap requires instance and served profilesN)Ú
ValueErrorr   Ú	frozensetr   Ú_entriesÚ	threadingÚLockÚ_lock)Úselfr   r   s   &&&r   Ú__init__ÚTicketStore.__init__   s;   € ß§+ÜÐNÓOÐOØ&ÔÜ$ [Ó1ˆÔØ79ˆŒÜ—^’^Ó%ˆŽ
r   Úscoper   c               ó   € V ^8„  d   QhRR/# )r
   Úreturnr   r   )r   s   "r   r   r   %   s   € ÷ ñ Èñ r   c               ó$  € WP                   9  g-   V\        9  g"   V'       d   V\        9  g   VR8X  d   VR8w  d   \        R4      hV P                  ;_uu_ 4        \
        P                  ! 4       pV P                  P                  4        UUu/ uF  w  rgV^ ,          V8”  g   K  WgbK  	  uppV n        \        V P                  4      V P                  8¼  d   \        R4      h\        P                  ! ^ 4      pWPP                  ,           RV P                  RVRVRVR	\        V,          R
V/3V P                  \        P                   ! VP#                  4       4      P%                  4       &   VuuRRR4       # u uppi   + '       g   i     R# ; i)z¥``scope='host'`` lets an interactive connection select every profile this process
serves (the Desktop's one shared socket); the default binds exactly ``profile_id``.r   r   úbootstrap binding rejectedzbootstrap capacity exhaustedr   Ú
profile_idÚsubjectÚpurposeÚcapabilitiesr   N)r   Ú_PURPOSE_CAPABILITIESÚ_SCOPESÚPermissionErrorr   ÚtimeÚ	monotonicr   ÚitemsÚlenÚMAX_ENTRIESÚsecretsÚtoken_urlsafeÚTTL_SECONDSr   ÚhashlibÚsha256ÚencodeÚ	hexdigest)	r   r#   r$   r%   r   ÚnowÚkÚvÚtickets	   &$$$$    r   ÚmintÚTicketStore.mint%   s7  € ð ×.Ñ.Ô.°'ÔAVÔ2V×^eØ¤Ô'¨E°V¬OÀÈ=Ô@XÜ!Ð">Ó?Ð?Ø�Z�Z‹ZÜ—.’.Ó"ˆCØ.2¯m©m×.AÑ.AÔ.CÔRÑ.C¡d aÀqÈÅtÈcÁzœT˜QšTÑ.CÒRˆDŒMÜ�4—=‘=Ó! T×%5Ñ%5Ô5Ü%Ð&DÓEÐEÜ×*Ò*¨2Ó.ˆFà×&Ñ&Õ&Ø × 0Ñ 0°,À
ÈIÐW^Ø˜G ^Ô5JÈ7Õ5SÐU\Ð^cðeðJfˆD�M‰Mœ'Ÿ.š.¨¯©«Ó9×CÑCÓEÑFð ÷ ŠZùãR÷ �ZˆZús%   Á3E>ÂE8
Â&E8
Â,CE>Å8E>Å>F	c               ó   € V ^8„  d   QhRR/# )r
   r    Údictr   )r   s   "r   r   r   7   s   € ÷ ñ ¸ñ r   c               ó¬  € \        V\        4      '       d   \        V4      R8”  d   \        R4      h\        P
                  ! VP                  4       4      P                  4       pV P                  ;_uu_ 4        V P                  P                  V4      pVf   \        R4      hVw  rgV\        P                  ! 4       8:  d   V P                  V \        R4      hVf   VR,          V P                  9   MVR,          V8H  pV'       d   VR,          V8w  d   \        R4      hV P                  V \        V4      uuRRR4       #   + '       g   i     R# ; i)z§``profile_id=None`` accepts a ticket minted for ANY served profile; the returned grant's
``profile_id`` then selects the authority. A named profile must match exactly.é   zinvalid bootstrap ticketNzexpired bootstrap ticketr#   r%   r"   )Ú
isinstancer   r-   r)   r2   r3   r4   r5   r   r   Úgetr*   r+   r   r=   )	r   r9   r#   r%   ÚkeyÚentryÚexpiresÚgrantÚserveds	   &&$$     r   ÚredeemÚTicketStore.redeem7   s  € ô ˜&¤#×&Ò&¬#¨f«+¸Ô*;Ü!Ð"<Ó=Ð=Ü�nŠn˜VŸ]™]›_Ó-×7Ñ7Ó9ˆØ�Z�Z‹ZØ—M‘M×%Ñ% cÓ*ˆEØŠ}Ü%Ð&@ÓAÐAØ"‰NˆGØœ$Ÿ.š.Ó*Ô*Ø—M‘M #Ð&Ü%Ð&@ÓAÐAØ@JÒ@R�U˜<Õ(¨D×,<Ñ,<Ò<ÐX]Ð^jÕXkÐoyÑXyˆFß˜U 9Õ-°Ô8Ü%Ð&BÓCÐCØ—‘˜cÐ"Ü˜“;÷ �Z�Z‹Zús   Á8BEÄ0EÅE	c               ó   € V ^8„  d   QhRR/# )r
   r    Úboolr   )r   s   "r   r   r   K   s   € ÷ Tñ T˜Tñ Tr   c                óh  a€ V P                   ;_uu_ 4        \        P                  ! 4       o\        ;QJ d7    V3R lV P                  P                  4        4       F  '       g   K   RM,	  RM(! V3R lV P                  P                  4        4       4      uuRRR4       #   + '       g   i     R# ; i)zUAn unexpired ticket was minted and not yet redeemed: a client is attaching right now.c              3  ó2   <"  € T F  w  rVS8„  x € K  	  R # 5i©Nr   )Ú.0rD   Ú_grantr6   s   &  €r   Ú	<genexpr>Ú*TicketStore.outstanding.<locals>.<genexpr>O   s   øé € ÐSÑ<R©¨�w –}Ó<Rùs   ƒTFN)r   r*   r+   Úanyr   Úvalues)r   r6   s   &@r   ÚoutstandingÚTicketStore.outstandingK   s\   ø€ à�Z�Z‹ZÜ—.’.Ó"ˆCß“3ÔS¸D¿M¹M×<PÑ<PÔ<RÓS—3—3’3ÔS¸D¿M¹M×<PÑ<PÔ<RÓSÓS÷ �Z�Z‹Zús   –AB Á&/B Â B1	c               ó   € V ^8„  d   QhRR/# )r
   r    ÚNoner   )r   s   "r   r   r   Q   s   € ÷ "ñ "˜ñ "r   c                	óœ   € V P                   ;_uu_ 4        V P                  P                  4        R R R 4       R #   + '       g   i     R # ; irM   )r   r   Úclear)r   s   &r   ÚrevokeÚTicketStore.revokeQ   s'   € Ø�Z�Z‹ZØ�M‰M×ÑÔ!÷ �Z�ZŠZús	   •:ºA	)r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r1   r.   r   r:   rG   rT   rZ   Ú__static_attributes__r   r   r   r   r      s2   † Ø€KØ€Kõ&ð¸)÷ õ$õ(T÷"ñ "r   r   >   úsession:readúsession:createúsession:submitúsession:approveúsession:controlúsession:respond)Ú__doc__Ú
__future__r   r2   r/   r   r*   r   r'   r(   r   r   r   r   Ú<module>ri      s’   ðÙ OÝ "ã Û Û Û ð ‘9ò Wó Xà‘9˜l˜^Ó,à™YÐ(9Ð':Ó;ð ™yÐ*=Ð)>Ó?Ø‘	Ð/Ð0Ó1Ø‘y .Ð!1Ó2ðÐ ñ �Y Ð'Ó
(€÷:"ó :"r   