+
    =l jQ   ã                   ó~  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RI	H
t
HtHtHtHtHtHtHtHtHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHt ]P>                  ! 4       t R
t! ! R R]PD                  4      t#R t$R R lt%RR lt&R t'R t(RR lt)R t*R t+R t,R R lt-R R lt.R t/R R R llt0R t1R# )!é    N©Úwraps)ÚOptional)
ÚactionsÚapiÚdaemonÚentitlementsÚevent_loggerÚ
exceptionsÚlockÚmessagesÚstatusÚutil)ÚCVE_OR_USN_REGEX)Ú_is_attached)ÚAptProxyScopeÚsetup_apt_proxy©ÚUAConfig)Úmachine_tokenz[Kc                   óV   a € ] tR t^!t o V 3R lR ltV 3R lR ltV 3R lR ltRtV tR# )	ÚCLIEnableDisableProgressc                ó    <€ V ^8„  d   QhRS[ /# )é   Ú
assume_yes©Úbool)ÚformatÚ__classdict__s   "€Ú7/usr/lib/python3/dist-packages/uaclient/cli/cli_util.pyÚ__annotate__Ú%CLIEnableDisableProgress.__annotate__"   s   ø€ ÷ %ñ %¡dñ %ó    c               ó*   € V'       * V n         Wn        R # ©N)Úis_interactiver   )Úselfr   s   &$r    Ú__init__Ú!CLIEnableDisableProgress.__init__"   s   € Ø",œnˆÔØ$Žr#   c          	      óR   <€ V ^8„  d   QhRS[ RS[ RS[S[,          RS[S[,          /# )r   Útotal_stepsÚ
done_stepsÚprevious_step_messageÚcurrent_step_message)Úintr   Ústr)r   r   s   "€r    r!   r"   &   s=   ø€ ÷ 	(ñ 	(ñ ð	(ñ ð		(ñ
  (©�}ð	(ñ '¡s�mñ	(r#   c               ó(   € Ve   \        V4       R # R # r%   )Úprint)r'   r+   r,   r-   r.   s   &$$$$r    ÚprogressÚ!CLIEnableDisableProgress.progress&   s   € ð  Ò+ÜÐ&Ö'ñ ,r#   c                ó    <€ V ^8„  d   QhRS[ /# )r   Úevent)r0   )r   r   s   "€r    r!   r"   1   s   ø€ ÷ 5ñ 5™sñ 5r#   c                ó¶   € VR 8X  d   \        V4       R# VR8X  d>   \        P                  ! W P                  4      '       g   \        P
                  ! 4       hR# R# )ÚinfoÚmessage_operationN)r2   r   Úhandle_message_operationsr   r   ÚPromptDeniedError)r'   r6   Úpayloads   &&&r    Ú	_on_eventÚ"CLIEnableDisableProgress._on_event1   sH   € Ø�FŒ?Ü�'ŽNØÐ)Ô)Ü×1Ò1°'¿?¹?×KÒKÜ ×2Ò2Ó4Ð4ñ Lñ *r#   )r   r&   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r(   r3   r=   Ú__static_attributes__Ú__classdictcell__)r   s   @r    r   r   !   s#   ø‡ € ÷%ð %÷	(ð 	(÷5ö 5r#   r   c                  ó   € R # r%   © )ÚargsÚkwargss   *,r    Ú_null_printrI   9   s   € Ùr#   c                ó$   € V ^8„  d   QhR\         /# )r   Újson_outputr   )r   s   "r    r!   r!   =   s   € ÷ ñ ¼ñ r#   c                 ó*   € V '       d   \         # \        # r%   )rI   r2   )rK   s   &r    Ú&create_interactive_only_print_functionrM   =   s   € ßÜÐäˆr#   c                ó   a € V 3R lpV# )z1Decorator asserting exclusive access to lock filec                 ó4   <a € \        S 4      V V3R  l4       pV# )c                 ó–   <€ \         P                  ! S^R7      ;_uu_ 4        S! VRV /VB pRRR4       V#   + '       g   i     X# ; i)é   )Úlock_holderÚ
sleep_timeÚcfgN)r   Ú	RetryLock)rT   rG   rH   ÚretvalÚfrR   s   $*, €€r    Únew_fÚ0assert_lock_file.<locals>.wrapper.<locals>.new_fH   sB   ø€ ä—’¨KÀA×FÖFÙ˜DÐ4 cÐ4¨VÑ4�÷ GàˆM÷ GÖFàˆMús	   ¢7·A	r   )rW   rX   rR   s   f €r    ÚwrapperÚ!assert_lock_file.<locals>.wrapperG   s    ù€ Ü	ˆq‹õ	ó 
ð	ð
 ˆr#   rF   )rR   rZ   s   f r    Úassert_lock_filer\   D   s   ø€ õð €Nr#   c                ó0   a € \        S 4      V 3R l4       pV# )zDecorator asserting root userc                  ót   <€ \         P                  ! 4       '       g   \        P                  ! 4       hS! V / VB # r%   )r   Úwe_are_currently_rootr   ÚNonRootUserError)rG   rH   rW   s   *,€r    rX   Úassert_root.<locals>.new_fV   s1   ø€ ä×)Ò)×+Ò+Ü×-Ò-Ó/Ð/á�dÐ%˜fÑ%Ð%r#   r   ©rW   rX   s   f r    Úassert_rootrc   S   s"   ø€ ô ˆ1ƒXô&ó ð&ð €Lr#   c                ó0   a € \        S 4      V 3R l4       pV# )z>Decorator to verify if correct params are used for json formatc                 ó´   <€ V '       g   S! V .VO5/ VB # V P                   R 8X  d(   V P                  '       g   \        P                  ! 4       hS! V .VO5/ VB # )Újson)r   r   r   ÚCLIJSONFormatRequireAssumeYes)Úcmd_argsrG   rH   rW   s   &*,€r    rX   Ú&verify_json_format_args.<locals>.new_fc   sV   ø€ çÙ�XÐ/ Ò/¨Ñ/Ð/à�?‰?˜fÔ$¨X×-@×-@Ð-@Ü×:Ò:Ó<Ð<á�XÐ/ Ò/¨Ñ/Ð/r#   r   rb   s   f r    Úverify_json_format_argsrj   `   s"   ø€ ô ˆ1ƒXô0ó ð0ð €Lr#   c                ó   a € V 3R lpV# )z‡Decorator asserting attached config.
:param msg_function: Optional function to generate a custom message
if raising an UnattachedError
c                 ó4   <a € \        S 4      V V3R  l4       pV# )c                 óÔ   <€ \        V4      P                  '       gC   S'       d&   \        V R R4      p\        V RR4      pS! W4VR7       M\        P                  ! 4       hS! V 3RV/VB # )ÚcommandÚ Úservice)rn   Úservice_namesrT   rT   )r   Úis_attachedÚgetattrr   ÚUnattachedError)rG   rT   rH   rn   rq   rW   Úraise_custom_error_functions   &&,  €€r    rX   Ú/assert_attached.<locals>.wrapper.<locals>.new_fw   sf   ø€ ä Ó$×0×0Ð0ß.Ü% d¨I°rÓ:�GÜ$+¨D°)¸RÓ$@�MÙ/Ø 'È#öô %×4Ò4Ó6Ð6Ù�TÑ-˜sÐ- fÑ-Ð-r#   r   )rW   rX   ru   s   f €r    rZ   Ú assert_attached.<locals>.wrapperv   s    ù€ Ü	ˆq‹õ
	.ó 
ð
	.ð ˆr#   rF   )ru   rZ   s   f r    Úassert_attachedrx   p   s   ø€ õð  €Nr#   c                ó0   a € \        S 4      V 3R l4       pV# )z&Decorator asserting unattached config.c                 óÜ   <€ \        V4      P                  '       dG   \        P                  ! 4       p\        P
                  ! VP                  P                  R R4      R7      hS! V 3RV/VB # )Únamero   )Úaccount_namerT   )r   rr   r   Úget_machine_token_filer   ÚAlreadyAttachedErrorÚaccountÚget)rG   rT   rH   Úmachine_token_filerW   s   &&, €r    rX   Ú"assert_not_attached.<locals>.new_fŒ   sc   ø€ ä˜Ó×(×(Ð(Ü!.×!EÒ!EÓ!GÐÜ×1Ò1Ø/×7Ñ7×;Ñ;¸FÀBÓGôð ñ �Ñ)˜3Ð) &Ñ)Ð)r#   r   rb   s   f r    Úassert_not_attachedrƒ   ‰   s"   ø€ ô ˆ1ƒXô*ó ð*ð €Lr#   c                 ó   a € V 3R  lpV# )c                 ó4   <a € \        S 4      VV 3R  l4       pV# )c                 ó¦   <€ \        V R R4      p\        P                  ! \        V4      '       g   \        P
                  ! VSR7      hS! V 3RV/VB # )Úsecurity_issuero   )ÚissueÚcmdrT   )rs   ÚreÚmatchr   r   ÚInvalidSecurityIssueIdFormat)rG   rT   rH   r‡   r‰   rW   s   &&, €€r    rX   Ú@assert_vulnerability_issue_valid.<locals>.wrapper.<locals>.new_fš   sT   ø€ ä$ TÐ+;¸RÓ@ˆNÜ—8’8Ô,¨n×=Ò=Ü ×=Ò=Ø(Øôð ñ
 �TÑ-˜sÐ- fÑ-Ð-r#   r   )rW   rX   r‰   s   f €r    rZ   Ú1assert_vulnerability_issue_valid.<locals>.wrapper™   s    ù€ Ü	ˆq‹õ	.ó 
ð	.ð ˆr#   rF   )r‰   rZ   s   f r    Ú assert_vulnerability_issue_validr�   ˜   s   ø€ õð €Nr#   c                ót  € \         P                  ! WR7      w  ppV'       dA   V'       d9   \        P                  ! RP	                  V4      V RP	                  V4      RR7      hV'       d(   \        P
                  ! RP	                  V4      V R7      h\        P                  ! V RP	                  V4      RR7      h)z›Raises a custom error for enable/disable commands when unattached.

Takes into consideration if the services exist or not, and notify the user
accordingly.)ÚnamesrT   z, ro   )Úvalid_serviceÚ	operationÚinvalid_serviceÚservice_msg)r’   r“   )r“   r”   r•   )r	   Úget_valid_entitlement_namesr   ÚUnattachedMixedServicesErrorÚjoinÚUnattachedValidServicesErrorÚUnattachedInvalidServicesError)rn   rq   rT   Úentitlements_foundÚentitlements_not_founds   &&&  r    Ú&_raise_enable_disable_unattached_errorr�   ª   s¥   € ô 	×0Ò0°}ÔNñØØç×4Ü×5Ò5ØŸ)™)Ð$6Ó7ØØ ŸI™IÐ&<Ó=Øô	
ð 	
÷ 
Ü×5Ò5ØŸ)™)Ð$6Ó7À7ô
ð 	
ô ×7Ò7ØØ ŸI™IÐ&<Ó=Øô
ð 	
r#   c                ó(   € V ^8„  d   QhR\         RR/# )r   rT   ÚreturnNr   )r   s   "r    r!   r!   Æ   s   € ÷ ñ œð  dñ r#   c                 ó4  € \         P                  ! V 4      pVP                  pV'       d5   \        P	                  \
        P                  P                  VR 7      4       M#\        P	                  \
        P                  4       \        P                  ! 4        \        P                  ! V 4       \        P                  ! V 4      w  r4\        P                  ! V4      p\        P	                  \        P                   ! V4      4       \        P#                  4        R# ))Úcontract_nameN)r   r}   r¡   r6   r8   r   ÚATTACH_SUCCESS_TMPLr   ÚATTACH_SUCCESS_NO_CONTRACT_NAMEr   ÚstopÚcleanupr   r   Úformat_tabularr   Úhandle_unicode_charactersÚprocess_events)rT   r�   r¡   Ústatus_dictÚ_retÚoutputs   &     r    Úpost_cli_attachr¬   Æ   s±   € Ü&×=Ò=¸cÓBÐØ&×4Ñ4€MçÜ�
‰
Ü×(Ñ(×/Ñ/¸mÐ/ÓLõ	
ô 	�
‰
”8×;Ñ;Ô<ä
‡K‚K„MÜ
‡N‚N�3ÔäŸš sÓ+Ñ€KÜ×"Ò" ;Ó/€FÜ	‡J�JŒt×-Ò-¨fÓ5Ô6Ü	×ÑÖr#   c          
      ób   € V ^8„  d   QhR\         R\        R\        R\        \        ,          RR/# )r   rT   ÚscopeÚset_keyÚ	set_valuerŸ   N)r   r   r0   r   )r   s   "r    r!   r!   Ú   s>   € ÷ ñ Ü	ðäðô ðô œ�}ð	ð
 
ñr#   c                óð   € V\         P                  8X  d   V P                  pV P                  pM-V\         P                  8X  d   V P
                  pV P                  pRV9   d   TpMTp\        XXVR7       R# )zK
Handles setting part the apt proxies - global and uaclient scoped proxies
Úhttps)Ú
http_proxyÚhttps_proxyÚproxy_scopeN)r   ÚGLOBALÚglobal_apt_http_proxyÚglobal_apt_https_proxyÚUACLIENTÚua_apt_http_proxyÚua_apt_https_proxyr   )rT   r®   r¯   r°   r³   r´   s   &&&&  r    Úconfigure_apt_proxyr¼   Ú   sm   € ð ”×$Ñ$Ô$Ø×.Ñ.ˆ
Ø×0Ñ0‰Ø	”-×(Ñ(Ô	(Ø×*Ñ*ˆ
Ø×,Ñ,ˆØ�'ÔØ‰àˆ
ÜØ¨;ÀE÷r#   c                 ó†  € \         P                  ! . RO4      pV P                  4       '       g“   \        P                  P                  RP                  V\        V4      \        4      4       \        P                  P                  4        \        P                  ! R4       \        P                  P                  R4       K¨  R# )Ú|z{}{}{}gš™™™™™¹?ÚN)r¾   Ú/Ú-Ú\)Ú	itertoolsÚcycleÚis_setÚsysÚstdoutÚwriter   ÚnextÚCLEAR_LINE_ANSI_CODEÚflushÚtimeÚsleep)Ústop_spinnerÚmsgÚspinners   && r    Úrun_spinnerrÑ   ò   s}   € Ü�oŠoÒ3Ó4€GØ×!Ñ!×#Ò#Ü�
‰
×ÑØ×Ñ˜c¤4¨£=Ô2FÓGô	
ô 	�
‰
×ÑÔÜ�
Š
�3ŒÜ�
‰
×Ñ˜Öñ $r#   c                ó:   € V ^8„  d   QhR\         \        ,          /# )r   rÏ   )r   r0   )r   s   "r    r!   r!   ý   s   € ÷ ñ ”hœs•mñ r#   c                 ó   a € V 3R  lpV# )c                 ó4   <a € \        S 4      V V3R  l4       pV# )c                óÒ  <€ \         P                  P                  4       '       g   S! V 3R V/VB # \        P                  ! 4       p\        P
                  ! \        VS3R7      pVP                  4        S! V 3R V/VB pVP                  4        VP                  4        \         P                  P                  R\        ,           4       \         P                  P                  4        V# )rT   )ÚtargetrG   Ú)rÆ   rÇ   ÚisattyÚ	threadingÚEventÚThreadrÑ   ÚstartÚsetr˜   rÈ   rÊ   rË   )rG   rT   rH   rÎ   Úspinner_threadrV   rW   rÏ   s   &$,   €€r    rX   Ú,with_spinner.<locals>.wrapper.<locals>.new_fÿ   s¸   ø€ ä—:‘:×$Ñ$×&Ò&Ù˜Ñ1 3Ð1¨&Ñ1Ð1ä$Ÿ?š?Ó,ˆLä&×-Ò-Ü"¨,¸Ð)<ôˆNð × Ñ Ô"á�tÑ/ Ð/¨Ñ/ˆFà×ÑÔØ×ÑÔ!ä�J‰J×Ñ˜TÔ$8Õ8Ô9Ü�J‰J×ÑÔàˆMr#   r   )rW   rX   rÏ   s   f €r    rZ   Úwith_spinner.<locals>.wrapperþ   s    ù€ Ü	ˆq‹õ	ó 
ð	ð* ˆr#   rF   )rÏ   rZ   s   f r    Úwith_spinnerrá   ý   s   ø€ õð2 €Nr#   c                 ó>  € V R 8X  dA   \         P                  P                  V ,           \         P                  P                  ,           # V R8X  dA   \         P                  P                  V ,           \         P                  P                  ,           # V R8X  dA   \         P                  P
                  V ,           \         P                  P                  ,           # V R8X  dA   \         P                  P                  V ,           \         P                  P                  ,           # V # )ÚlowÚmediumÚhighÚcritical)r   ÚTxtColorÚINFOBLUEÚENDCÚWARNINGYELLOWÚORANGEÚFAIL)Úprioritys   &r    Úcolorize_priorityrî     sË   € Ø�5ÔÜ× Ñ ×)Ñ)¨HÕ4´x×7HÑ7H×7MÑ7MÕMÐMØ	�XÔ	ä×Ñ×+Ñ+¨hÕ6¼×9JÑ9J×9OÑ9OÕOð	
ð 
�VÔ	Ü× Ñ ×'Ñ'¨(Õ2´X×5FÑ5F×5KÑ5KÕKÐKØ	�ZÔ	Ü× Ñ ×%Ñ%¨Õ0´8×3DÑ3D×3IÑ3IÕIÐIàˆr#   r%   )ro   )2rÃ   rŠ   rÆ   rÙ   rÌ   Ú	functoolsr   Útypingr   Úuaclientr   r   r   r	   r
   r   r   r   r   r   Ú'uaclient.api.u.pro.security.fix._commonr   Ú(uaclient.api.u.pro.status.is_attached.v1r   Úuaclient.aptr   r   Úuaclient.configr   Úuaclient.filesr   Úget_event_loggerr6   rÊ   ÚAbstractProgressr   rI   rM   r\   rc   rj   rx   rƒ   r�   r�   r¬   r¼   rÑ   rá   rî   rF   r#   r    Ú<module>rù      s©   ðÛ Û 	Û 
Û Û Ý Ý ÷÷ ÷ õ EÝ Aß 7Ý $Ý (à×%Ò%Ó'€ð  Ð ô5˜s×3Ñ3ô 5ò0	õôò
òô ò2òò$
õ8õ(ò0÷ô:r#   