Ë
    >I¼c–  ã                   óF   — d dl Z d dlZd dlZd dlZd dlZd„ Z G d„ d«      Zy)é    Nc                  óh   — t         j                  €t        «       t         _        t         j                  S )z'Return a singleton _Telemetry instance.)Ú
_TelemetryÚ
_telemetry© ó    ú7/usr/lib/python3/dist-packages/DistUpgrade/telemetry.pyÚgetr	      s$   € ä×ÑÐ$Ü *£Œ
ÔÜ× Ñ Ð r   c                   ó4   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)r   Nc                 ó¼  — i | _         i | _        | j                  «       | _        t	        j
                  g d¢t        j                  d¬«      j                  «       d   j                  «       | j                   d<   | j                  d«       d| _
        	 t        d«      5 }|j                  «       | j                   d	<   d d d «       y # 1 sw Y   y xY w# t        $ r Y y w xY w)
N)Úlsb_releasez-rz-sT)ÚstdoutÚuniversal_newlinesr   ÚFromÚstartz/var/log/upgrade/telemetryz/var/log/installer/media-infoÚInstallMedia)Ú_metricsÚ_stages_histÚ_get_current_uptimeÚ_start_timeÚ
subprocessÚPopenÚPIPEÚcommunicateÚstripÚ	add_stageÚ
_dest_pathÚopenÚreadlineÚFileNotFoundError)ÚselfÚfs     r   Ú__init__z_Telemetry.__init__)   s¾   € ØˆŒØˆÔØ×3Ñ3Ó5ˆÔÜ *× 0Ñ 0Ú'´
·±Ø#ô!%ç%0¡[£]°1ñ!6ç6;±e³gð 	�‰�fÑð 	�‰�wÔØ6ˆŒð	ÜÐ5Ó6ð =¸!Ø01·
±
³�—‘˜nÑ-÷=÷ =ñ =ûä ò 	Ùð	ús0   ÂC ÂCÂ:C ÃCÃC ÃC Ã	CÃCc                 ó(  — d}	 t        d«      5 }t        |j                  «       j                  «       d   «      }ddd«       |S # 1 sw Y   |S xY w# t        t
        t        f$ r,}t        j                  dt        |«      z   «       Y d}~|S d}~ww xY w)z6Get current uptime info. None if we couldn't fetch it.Nz/proc/uptimer   z)Exception while fetching current uptime: )
r   ÚfloatÚreadÚsplitr   ÚOSErrorÚ
ValueErrorÚloggingÚwarningÚstr)r    Úuptimer!   Úes       r   r   z_Telemetry._get_current_uptime8   s�   € àˆð	$Ü�nÓ%ð 4¨Ü˜qŸv™v›xŸ~™~Ó/°Ñ2Ó3�÷4ð
 ˆ÷4ð
 ˆûô "¤7¬JÐ7ò 	$Ü�O‰OÐGÜ ›Fñ#÷ $ð $àˆûð	$ús3   „A �+AºA ÁAÁ	A ÁA ÁBÁ%!BÂBc                 óŒ   — | j                  «       }| j                  �|€y|| j                  t        || j                  z
  «      <   y)z(Record installer stage with current timeN)r   r   r   Úint)r    Ú
stage_nameÚnows      r   r   z_Telemetry.add_stageC   sC   € à×&Ñ&Ó(ˆØ×ÑÐ# s {ØØ9Cˆ×Ñœ#˜c D×$4Ñ$4Ñ4Ó5Ò6r   c                 ó"   — || j                   d<   y)zRecord updater typeÚTypeN©r   )r    Úupdater_types     r   Úset_updater_typez_Telemetry.set_updater_typeJ   s   € à ,ˆ�‰�fÒr   c                 ó"   — || j                   d<   y)z*Record if the user had third party sourcesÚThirdPartySourcesNr4   )r    Úusings     r   Úset_using_third_party_sourcesz(_Telemetry.set_using_third_party_sourcesN   s   € à-2ˆ�‰Ð)Ò*r   c                 ó¸  — | j                   | j                  d<   t        j                  j	                  | j
                  «      }	 t        j                  j                  |«      st        j                  |«       t        | j
                  d«      5 }t        j                  | j                  |«       ddd«       t        j                  | j
                  t        j                  t        j                  z  t        j                  z  t        j                   z  «       y# 1 sw Y   ŒkxY w# t"        $ r+}t%        j&                  dt)        |«      z   «       Y d}~yd}~ww xY w)z<Close telemetry collection

        Save to destination fileÚStagesÚwNz(Exception while storing telemetry data: )r   r   ÚosÚpathÚdirnamer   ÚexistsÚmakedirsr   ÚjsonÚdumpÚchmodÚstatÚS_IRUSRÚS_IWUSRÚS_IRGRPÚS_IROTHr'   r)   r*   r+   )r    Ú
target_dirr!   r-   s       r   Údonez_Telemetry.doneR   sñ   € ð
 #'×"3Ñ"3ˆ�‰�hÑä—W‘W—_‘_ T§_¡_Ó5ˆ
ð
	$Ü—7‘7—>‘> *Ô-Ü—‘˜JÔ'Ü�d—o‘o sÓ+ð ,¨qÜ—	‘	˜$Ÿ-™-¨Ô+÷,ä�H‰H�T—_‘_Ü—\‘\¤D§L¡LÑ0Ü—\‘\ñ"Ü$(§L¡Lñ1õ2÷,ð ,ûô
 ò 	$Ü�O‰OÐFÜ ›Fñ#÷ $ñ $ûð	$ús2   ÁA
D% Â!DÂ/A)D% ÄD"ÄD% Ä%	EÄ.!EÅE)
Ú__name__Ú
__module__Ú__qualname__r   r"   r   r   r6   r:   rL   r   r   r   r   r   %   s&   „ à€Jòò	òDò-ò3ó$r   r   )r)   rC   r>   rF   r   r	   r   r   r   r   ú<module>rP      s%   ðó. Û Û 	Û Û ò!÷?$ò ?$r   