ó
    x[h®  ã                   ó  • % S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
JrJrJrJr  S SKJr  S SKJr  \R(                  " \5      rSr\\S'   Sr\\S	'   \R4                  S
\R6                  S\R8                  S0r\\\\4      \S'    " S S\5      r \ " S\RB                  5      r"\\S'   \ " S \RF                  5      r$\\S'   \"q%\RL                  " 5       r'S\\\
S4   SS4S jr(S r)S r*S r+\ RX                  S 5       r-g)é    N)ÚStringIO)ÚCallableÚDictÚFinalÚ
NamedTupleÚUnion)Úversion)Úlog_utilz#Cloud-init {} received {}, exiting
ÚSIG_MESSAGEé   ÚBACK_FRAME_TRACE_DEPTHz/Cloud-init %(version)s received SIGINT, exitingz0Cloud-init %(version)s received SIGTERM, exitingz0Cloud-init %(version)s received SIGABRT, exitingÚSIGNALSc                   ó*   • \ rS rSr% \\S'   \\S'   Srg)ÚExitBehavioré    Ú	exit_codeÚ	log_level© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚintÚ__annotations__Ú__static_attributes__r   ó    Ú:/usr/lib/python3/dist-packages/cloudinit/signal_handler.pyr   r       s   ‡ ØƒNØ†Nr   r   é   ÚSIGNAL_EXIT_BEHAVIOR_CRASHÚSIGNAL_EXIT_BEHAVIOR_QUIETÚsigÚreturnc                 ó®  • [        U 5      (       a7  [        U [        R                  5      (       d  [        R                  SU 5        ggU [        R                  :X  a  [        R                  S5        gU c  [        R                  S5        gU [        R                  :X  a  [        R                  SU 5        g[        R                  S[        U 5      U 5        g)z+inspect_handler() logs signal handler statez.Signal state [%s] - previously custom handler.z,Signal state [SIG_IGN] - previously ignored.Nz;Signal state [None] - previously not installed from Python.zISignal state [%s] - default way of handling signal was previously in use.zSignal state [%s(%s)] - unknown)ÚcallableÚ
isinstanceÚtypesÚBuiltinFunctionTypeÚLOGÚinfoÚsignalÚSIG_IGNÚSIG_DFLÚwarningÚtype)r!   s    r   Úinspect_handlerr/   +   s–   € ä�‡}�}ô ˜#œu×8Ñ8×9Ñ9Ü�H‰HÐEÀsÕKð :à	”—‘Ó	Ü�‰Ð?Õ@Ø	‰Ü�‰ÐNÕOØ	”—‘Ó	Ü�‰ð!àõ	
ô 	�‰Ð5´t¸C³yÀ#ÕFr   c                 ó`  • X:”  d  U (       d  g [         R                  " U 5      nSUS-  -  nUR                  U< SUR                  < S35        UR                  U< SUR                  < S35        UR                  U< SUR
                  < S35        [        U R                  US-   X#5        g )NÚ é   z
Filename: Ú
z
Function: zLine number: r   )ÚinspectÚgetframeinfoÚwriteÚfilenameÚfunctionÚlinenoÚ_pprint_frameÚf_back)ÚframeÚdepthÚ	max_depthÚcontentsÚ
frame_infoÚprefixs         r   r:   r:   B   s„   € ØÓ¦ØÜ×%Ò% eÓ,€JØ�E˜A‘IÑ€FØ‡N�N«°×1DÔ1DÐEÔFØ‡N�N«°×1DÔ1DÐEÔFØ‡N�N«F°J×4EÔ4EÐFÔGÜ�%—,‘, ¨¡	¨9Õ?r   c                 óš  • [        U [        R                  5      (       a  U R                  OU n[	        [
        R                  [        R                  " 5       U5      5      n[        US[        U5        [        R                  " UR                  5       [        [        R                   S9  ["        R$                  " [        R&                  5        g )Nr   )Úlogr   )r%   r*   ÚSignalsÚnamer   r   ÚformatÚvrÚversion_stringr:   r   r
   Ú	multi_logÚgetvaluer(   Ú_SIGNAL_EXIT_BEHAVIORr   ÚsysÚexitr   )Úsignumr<   rE   r?   s       r   Ú_handle_exitrO   M   s†   € ä$ V¬V¯^©^×<Ñ<ˆ6�;Š;À&€DÜœ×*Ñ*¬2×+<Ò+<Ó+>ÀÓEÓF€HÜ�%˜Ô2°HÔ=Ü×ÒØ×ÑÓ¤Ô0E×0OÑ0Oòô ‡H‚HÔ"×,Ñ,Õ-r   c                  ó¬   • Sn [         R                  5        H'  n[        [        R                  " U[        5      5        M)     U [        [         5      -  n U $ )zattach cloud-init's handlersr   )r   Úkeysr/   r*   rO   Úlen)Úsigs_attachedrN   s     r   Úattach_handlersrT   X   s>   € à€MÜ—,‘,–.ˆÜœŸš f¬lÓ;Ö<ñ !à”Sœ“\Ñ!€MØÐr   c               #   ól   #   • [            [        qSv •  [        qSSS5        g! , (       d  f       g= f7f)a  suspend_crash() allows signals to be received without exiting 1

This allow signal handling without a crash where it is expected. The
call stack is still printed if signal is received during this context, but
the return code is 0 and no traceback is printed.

Threadsafe.
N)Ú_SUSPEND_WRITE_LOCKr    rK   r   r   r   r   Úsuspend_crashrW   a   s$   é € ö 
Ü :ÐÛÜ :Ð÷ 
×	Ö	üs   ‚4‰#š	4£
1­4).Ú
contextlibr4   Úloggingr*   rL   Ú	threadingr&   Úior   Útypingr   r   r   r   r   Ú	cloudinitr	   rG   Úcloudinit.logr
   Ú	getLoggerr   r(   r   r   r   ÚSIGINTÚSIGTERMÚSIGABRTr   r   Ústrr   ÚERRORr   ÚINFOr    rK   ÚRLockrV   r/   r:   rO   rT   ÚcontextmanagerrW   r   r   r   Ú<module>rh      s"  ðô Û Û Û Û 
Û Û Ý ß ;Õ ;å #Ý "à×Ò˜Ó!€à;€ˆUÓ ;Ø !Ð ˜Ó !à
‡M�MÐDØ
‡N�NÐFØ
‡N�NÐFð"€ˆˆt�C˜�H‰~Ñ	ó ô�:ô ñ
 %1°°G·M±MÓ$BÐ ˜EÓ BÙ$0°°G·L±LÓ$AÐ ˜EÓ AØ2Ð Ø—o’oÓ'Ð ðG˜˜s H¨dÐ2Ñ3ð G¸ô Gò.@ò.òð ×Ññ;ó ñ;r   