+
    âCëi#ƒ  ã                   ó  € ^ RI t ^ RIt^ RIHtHt ^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt ^ RIHt ^ RIt ^ RIt^ RIHt ^ RIHt  ^ RIHt ^ RIHt ^ RIt^ RIt^ RIt^RIHt ^ R	IH t H!t!H"t" ^ R
I#H$t$ ^ RI%H&t& ^ RI'H(t(  ! R R])4      t*]+R8X  d1   ]*! 4       t,]-! ],P]                  4       4       ],P_                  ^ 4       R# R#   ] d    ]P                  t L©i ; i  ] d    ^ RIt L±i ; i  ] d
    ^ RIHt  L±i ; i)é    N)Úmd5Úsha256)Ú	maketrans)ÚNamedTemporaryFile)Úescape)ÚConfigParser)Úgettext)ÚAptAuth)ÚSourcesListÚSourceEntryÚDeb822SourceEntry)ÚInvalidShortcutException)Úshortcut_handler)ÚGioc                   ó²  a € ] tR t^Dt o RtRt]! ]! ^4      4      w  tt	t
]R]	R]
R/tR<R ltR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R  t%R! t&R" t'R# t(R$ t)R% t*R& t+R' t,R( t-R) t.R* t/R+ t0R, t1R- t2R. t3R/ t4R0 t5R1 t6R2 t7R=R3 lt8R=R4 lt9R>R5 lt:R6 t;R7 t<R8 t=R9 t>]?R?R: l4       t@R;tAV tBR# )@ÚSoftwarePropertiesz /usr/share/app-install/channels/z$/etc/update-manager/release-upgradesÚnormalÚltsÚneverNc                ób  € VR,           V n         W0n        VR8w  d!   \        P                  P	                  RV4       VR8X  d   RpW n        Wn        \        VR7      V n        \        P                  P                  4       V n
        . V n        RV n        V P                  4        V P                  4        V P!                  4        . V n        \$        P&                  ! 4       V n        \+        VR7      V n        \.        P0                  ! 4       V n        \4        P6                  ! V P8                  4       R# )	z‰Provides the core functionality to configure the used software
repositories, the corresponding authentication keys and
update automation z/etc/popularity-contest.confÚ/ÚDirNz/usr/share/software-properties/)Údeb822F)Úrootdir)Ú
popconfiler   Úapt_pkgÚconfigÚsetÚoptionsÚdatadirr   ÚsourceslistÚ
aptsourcesÚdistroÚ
get_distroÚseen_serverÚmodified_sourceslistÚreload_sourceslistÚbackup_sourceslistÚbackup_apt_confÚcustom_mirrorsÚqueueÚQueueÚmyqueuer
   Úapt_keyr   ÚCancellableÚcancellableÚatexitÚregisterÚwait_for_threads)Úselfr    r   r   r   s   &&&&&ÚG/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.pyÚ__init__ÚSoftwareProperties.__init__W   sè   € ð Ð<Õ<€D„Oà„LØ�#„~Ü‡n�n×Ñ˜ Ô(ð �$„Ø1€gØ„LØ„Lä"¨&Ô1€DÔÜ×#Ñ#×.Ñ.Ó0€D„Kà€DÔØ %€DÔà×ÑÔØ×ÑÔà×ÑÔð €DÔô —;’;“=€D„Lô  7Ô+€D„Lä—’Ó(€DÔä
‡O‚O�D×)Ñ)Ö*ó    c                ó¾   € \         P                  ! 4        FC  pVP                  \         P                  ! 4       P                  8w  g   K3  VP	                  4        KE  	  R# )z8wait for all running threads (PPA key fetchers) to exit N)Ú	threadingÚ	enumerateÚidentÚcurrent_threadÚjoin)r4   Úts   & r5   r3   Ú#SoftwareProperties.wait_for_threads€   s9   € ä× Ò Ö"ˆØ	
�‰”I×,Ò,Ó.×4Ñ4Ö	4Ø	�‰Žó #r8   c                óâ   € / V n         \        P                  P                  4        FE  p\        P
                  P                  \        P                  V,          4      pW P                   V&   KG  	  R# )z$Backup all apt configuration optionsN)Úapt_conf_backupÚsoftwarepropertiesÚCONF_MAPÚkeysr   r   Úfind_i)r4   ÚoptionÚvalues   &  r5   r)   Ú"SoftwareProperties.backup_apt_conf†   sQ   € à€DÔÜ$×-Ñ-×2Ñ2Ö4ˆÜ—‘×%Ñ%Ô&8×&AÑ&AÀ&Õ&IÓJˆØ',×Ñ˜VÓ$ó 5r8   c                ó  € V P                   P                  4        FR  p\        P                  P	                  \
        P                  V,          \        V P                   V,          4      4       KT  	  V P                  4        R# )z$Restore the stored apt configurationN)	rB   rE   r   r   r   rC   rD   ÚstrÚwrite_config)r4   rG   s   & r5   Úrestore_apt_confÚ#SoftwareProperties.restore_apt_conf�   s\   € à×&Ñ&×+Ñ+Ö-ˆÜ�‰×ÑÔ-×6Ñ6°vÕ>Ü˜t×3Ñ3°FÕ;Ó<ö	>ñ .ð 	×ÑÖr8   c                óf  € \         P                  P                  \        P                  R,          4      ^ 8”  Edu   \         P                  P                  \        P                  R,          4      ^8X  d6   \
        P                  P                  R4      '       d   \        P                  # \         P                  P                  \        P                  R,          4      ^8X  dJ   \         P                  P                  \        P                  R,          4      ^ 8X  d   \        P                  # \         P                  P                  \        P                  R,          4      ^ 8X  dJ   \         P                  P                  \        P                  R,          4      ^ 8X  d   \        P                  # R# \         P                  P                  \        P                  R,          4      ^ 8X  dJ   \         P                  P                  \        P                  R,          4      ^ 8X  d   \        P                  # R# )z·Parse the apt cron configuration. Try to fit a predefined use case
and return it. Special case: if the user made a custom
configurtation, that we cannot represent it will return None Ú
autoupdateÚ
unattendedz/usr/bin/unattended-upgradeÚautodownloadN)r   r   rF   rC   rD   ÚosÚpathÚexistsÚUPDATE_INST_SECÚUPDATE_DOWNLOADÚUPDATE_NOTIFYÚUPDATE_MANUAL©r4   s   &r5   Úget_update_automation_levelÚ.SoftwareProperties.get_update_automation_level”   sj  € ô ‡~�~×ÑÔ/×8Ñ8¸ÕFÓGÈ!ÕKä�>‰>× Ñ Ô!3×!<Ñ!<¸\Õ!JÓKÈqÔPÜ�w‰w�~‰~Ð;×<Ò<Ü%×5Ñ5Ð5Ü�^‰^×"Ñ"Ô#5×#>Ñ#>¸~Õ#NÓOÐSTÔTÜ�^‰^×"Ñ"Ô#5×#>Ñ#>¸|Õ#LÓMÐQRÔRÜ%×5Ñ5Ð5Ü�^‰^×"Ñ"Ô#5×#>Ñ#>¸|Õ#LÓMÐQRÔRÜ�^‰^×"Ñ"Ô#5×#>Ñ#>¸~Õ#NÓOÐSTÔTÜ%×3Ñ3Ð3áÜ	�‰×	Ñ	Ô1×:Ñ:¸<ÕHÓ	IÈQÔ	NÜ	�‰×	Ñ	Ô1×:Ñ:¸>ÕJÓ	KÈqÔ	PÜ!×/Ñ/Ð/ár8   c                ó
  € V\         P                  8X  d   \        P                  P	                  \         P
                  R,          \        ^4      4       \        P                  P	                  \         P
                  R,          \        ^4      4       EMßV\         P                  8X  d   \        P                  P	                  \         P
                  R,          \        ^4      4       \        P                  P	                  \         P
                  R,          \        ^ 4      4       EMLV\         P                  8X  d~   \        P                  P	                  \         P
                  R,          \        ^ 4      4       \        P                  P	                  \         P
                  R,          \        ^ 4      4       Mº\        P                  P	                  \         P
                  R,          \        ^ 4      4       \        P                  P	                  \         P
                  R,          \        ^ 4      4       \        P                  P	                  \         P
                  R,          \        ^ 4      4       V P                  4        R# )z×Set the apt periodic configurtation to the selected
update automation level. To synchronize the cache update and the
actual upgrading function, the upgrade function, e.g. unattended,
will run every day, if enabled. rQ   rR   rP   N)
rC   rV   r   r   r   rD   rK   rW   rX   Úset_modified_config)r4   Ústates   &&r5   Úset_update_automation_levelÚ.SoftwareProperties.set_update_automation_level«   s�  € ð
 Ô"×2Ñ2Ô2Ü�‰×ÑÔ-×6Ñ6°|ÕDÄcÈ!ÃfÔMÜ�‰×ÑÔ-×6Ñ6°~ÕFÌÈAËÖOØ	Ô$×4Ñ4Ô	4Ü�‰×ÑÔ-×6Ñ6°~ÕFÌÈAËÔOÜ�‰×ÑÔ-×6Ñ6°|ÕDÄcÈ!ÃfÖMØ	Ô$×2Ñ2Ô	2Ü�‰×ÑÔ-×6Ñ6°~ÕFÌÈAËÔOÜ�‰×ÑÔ-×6Ñ6°|ÕDÄcÈ!ÃfÕMä�‰×ÑÔ-×6Ñ6°|ÕDÄcÈ!ÃfÔMÜ�‰×ÑÔ-×6Ñ6°|ÕDÄcÈ!ÃfÔMÜ�‰×ÑÔ-×6Ñ6°~ÕFÌÈAËÔOØ×ÑÖr8   c                ó  € V\         P                  P                  \        P                  R,          4      8X  gQ   \         P                  P                  \        P                  R,          \        V4      4       V P                  4        R# R# )z8Set the interval in which we check for available updatesrP   N)r   r   rF   rC   rD   r   rK   r^   )r4   Údayss   &&r5   Úset_update_intervalÚ&SoftwareProperties.set_update_interval¿   s]   € ð ”W—^‘^×*Ñ*Ô+=×+FÑ+FÀ|Õ+TÓUÔUÜ
�.‰.×
Ñ
Ô/×8Ñ8¸ÕFÌÈDË	Ô
RØ
×
"Ñ
"Ö
$ñ Vr8   c                ój   € \         P                  P                  \        P                  R,          4      # )z2Returns the interval of the apt periodic cron job rP   )r   r   rF   rC   rD   rZ   s   &r5   Úget_update_intervalÚ&SoftwareProperties.get_update_intervalÆ   s#   € ä�>‰>× Ñ Ô!3×!<Ñ!<¸\Õ!JÓKÐKr8   c                ó¤  € \         P                  P                  V P                  4      '       g   V P                  # \        4       pVP                  V P                  4       VP                  RR4      '       dN   VP                  RR4      P                  4       pV P                  P                  4        F  w  r4WB8X  g   K  Vu # 	  V P                  # )zm
return the release upgrade policy:
 RELEASE_UPGRADES_NORMAL,
 RELEASE_UPGRADES_LTS,
 RELEASE_UPGRADES_NEVER
ÚDEFAULTÚPrompt)rS   rT   rU   ÚRELEASE_UPGRADES_CONFÚRELEASE_UPGRADES_NORMALr   ÚreadÚ
has_optionÚgetÚlowerÚrelease_upgrades_policy_mapÚitems)r4   ÚparserÚtypeÚkÚvs   &    r5   Úget_release_upgrades_policyÚ.SoftwareProperties.get_release_upgrades_policyÊ   s¡   € ô �7‰7�>‰>˜$×4Ñ4×5Ò5Ø×)Ñ)Ð)Ü‹^€FØ
‡K�K�×*Ñ*Ô+Ø×Ñ˜ 8×,Ò,Ø�Z‰Z˜	 (Ó+×1Ñ1Ó3€dØ×2Ñ2×8Ñ8Ö:‰$ˆ!ØŽ9ØŠ(ñ ;ð ×'Ñ'Ð'r8   c           
     óÔ  € \         P                  P                  V P                  4      '       gS   \	        V P                  R4      ;_uu_ 4       pVP                  RV P                  V,          ,          4       RRR4       R# \	        V P                  R4      ;_uu_ 4       p\        RR7      ;_uu_ 4       pV F{  pVP                  4       pVP                  4       P                  R4      '       d,   VP                  R	V P                  V,          ,          4       Kc  VP                  VR
,           4       K}  	  VP                  4        \        P                  ! V P                  VP                  4       \        P                  ! VP                  V P                  4       RRR4       RRR4       R#   + '       g   i     R# ; i  + '       g   i     L.; i  + '       g   i     R# ; i)zk
set the release upgrade policy:
 RELEASE_UPGRADES_NORMAL,
 RELEASE_UPGRADES_LTS,
 RELEASE_UPGRADES_NEVER
 Úwz[DEFAULT]
Prompt=%s
NTÚrzw+)ÚmodeÚpromptz
Prompt=%s
Ú
)rS   rT   rU   rl   ÚopenÚwriterr   r   Ústriprq   Ú
startswithÚflushÚshutilÚcopymodeÚnameÚcopy)r4   ÚiÚfÚoutÚlines   &&   r5   Úset_release_upgrades_policyÚ.SoftwareProperties.set_release_upgrades_policyÝ   s:  € ô �7‰7�>‰>˜$×4Ñ4×5Ò5Ü�×*Ñ*¨3×/Ô/°1Ø	�‰Ð(¨$×*JÑ*JÈ1Õ*MÕMÔN÷ 0áÜ	ˆd×(Ñ(¨×	-Ô	-°Ô4FÈD×4QÕ4QÐUXÛˆ$Ø�z‰z‹|ˆØ�:‰:‹<×"Ñ" 8×,Ò,Ø
�)‰)�M D×$DÑ$DÀQÕ$GÕGÖ
Hà
�)‰)�D˜•IÖ
ñ ð 
‡i�i„kÜ‡o‚o�d×0Ñ0°#·(±(Ô;Ü‡k‚k�#—(‘(˜D×6Ñ6Ô7÷ 5R×	-ñ ÷ 0Ö/áúß4Q×4Qú×	-Ö	-ñ ús1   Á*F/Â GÂ5C(G	ÆGÆ/G 	ÇGÇGÇG'	c                óÒ  € \         P                  P                  V P                  4      '       d“   \	        V P                  4      ;_uu_ 4       pVP                  4       P                  R4      pRRR4       X FG  p VP                  R4      w  rEVR8X  d*   VP                  R4      P                  4       R8X  d    R# KG  KI  	  R#   + '       g   i     L_; i  \         d     Kn  i ; i)	zªWill return True if the user wants to participate in the popularity
contest. Otherwise it will return False. Special case: if no
popcon is installed it will return False r   NÚ=ÚPARTICIPATEÚ"ÚyesTF)
rS   rT   rU   r   r€   rn   Úsplitr‚   rq   Ú
ValueError)r4   rŠ   ÚlinesrŒ   ÚkeyrH   s   &     r5   Úget_popcon_participationÚ+SoftwareProperties.get_popcon_participationõ   s±   € ô 
‡w�w‡~�~�d—o‘o×&Ò&Ü�$—/‘/×"Ô" aØ—&‘&“(—.‘. Ó&ˆ%÷ #ãˆDðØ"Ÿj™j¨›o‘�Ø˜-Ô'¨E¯K©K¸Ó,<×,BÑ,BÓ,DÈÔ,MÚñ -NÑ'ñ ñ ÷ #×"ûô ô Úðús   Á CÁ;>CÃC	ÃC&Ã%C&c           
     ó\  € VR8X  d   RpMRp\         P                  P                  V P                  4      '       dW   \	        V P                  R4      ;_uu_ 4       pV Uu. uF"  p\
        P                  ! RRV,          V4      NK$  	  ppRRR4       M£\        4       p\	        RR	4      ;_uu_ 4       pVP                  VP                  R
4      4       RRR4       VP                  4       p. pVP                  RV,          4       VP                  R\        V4      ,          4       VP                  R4       \	        V P                  R4      ;_uu_ 4       pVP                  X4       RRR4       R# u upi   + '       g   i     LO; i  + '       g   i     L¾; i  + '       g   i     R# ; i)z>Enable or disable the participation in the popularity contest Tr“   Únor|   z^(PARTICIPATE=)(".+?")z\1"%s"Nz/dev/urandomÚrbi   zMY_HOSTID="%s"
zPARTICIPATE="%s"
zUSE_HTTP="yes"
r{   )rS   rT   rU   r   r€   ÚreÚsubr   Úupdatern   Ú	hexdigestÚappendrK   Ú
writelines)	r4   Ú
is_helpfulrH   r   rŒ   r–   ÚmrŠ   Úids	   &&       r5   Úset_popcon_pariticipationÚ,SoftwareProperties.set_popcon_pariticipation  s;  € à�TÔØ‰àˆÜ	‡w�w‡~�~�d—o‘o×&Ò&ô �$—/‘/ 3×'Ô'¨:á!+ó-Ù!+˜ô —V’VÐ5°yÀ5Õ7HÈ$ÖOÙ!+ð ð -÷ (Ð'ô
 ‹EˆÜ�. $×'Ô'¨1Ø�H‰H�Q—V‘V˜D“\Ô"÷ (à�[‰[‹]ˆØˆØ�‰Ð)¨BÕ.Ô/Ø�‰Ð+¬c°%«jÕ8Ô9Ø�‰Ð)Ô*Ü	ˆd�o‰o˜s×	#Ô	# qØ	�‰�UÔ÷ 
$Ñ	#ùò-÷ (×'ú÷ (×'ú÷ 
$×	#Ð	#ús6   ÁE4Á(E/ÂE4Â0!FÅFÅ/E4Å4F	ÆF	ÆF+	c                ód  € \        V P                  P                  4      ^8  d   RV P                  n        R# RV P                  n        / p. pVP	                  V P                  P
                  4       VP	                  V P                  P                  4       V Fk  pVP                  V9   d7   VP                   F$  pWP                  ,          P                  V4       K&  	  KJ  \        VP                  4      WP                  &   Km  	  \        V P                  P                  4      ^ 8”  d-   V P                  P                  WP                  P                  &   V P                  P                   F¾  pVP                  V9  g™   VP                  V9   g   K'  \        \        WP                  ,          4      \        VP                  4      ,          4      ^ 8X  d   Kl  \        \        VP                  4      V P                  P                  ,          4      ^ 8X  d   K¬  RV P                  n         R# 	  R# )z£Return True if all distro componets are also available as
source code. Otherwise return Flase. Special case: If the
configuration cannot be represented return NoneFTN)Úlenr#   Úsource_code_sourcesÚget_source_codeÚextendÚmain_sourcesÚchild_sourcesÚtemplateÚcompsÚaddr   Úcdrom_sourcesÚcdrom_compsÚsource_templateÚenabled_comps)r4   Ú	templatesÚsourcesÚsourceÚcomps   &    r5   Úget_source_code_stateÚ(SoftwareProperties.get_source_code_state  sƒ  € ô
 ˆ4�;‰;×*Ñ*Ó+¨aÔ/ð ',ˆ�‰Ô#Ùð '+ˆ�‰Ô#ð ˆ	ØˆØ�‰�t—{‘{×/Ñ/Ô0Ø�‰�t—{‘{×0Ñ0Ô1ÛˆFØ�‰ )Ô+Ø"ŸLœL�DØŸo™oÕ.×2Ñ2°4Ö8ó )ô .1°·±Ó->�	Ÿ/™/Ó*ñ ô ˆt�{‰{×(Ñ(Ó)¨AÔ-Ø59·[±[×5LÑ5LˆI—k‘k×1Ñ1Ñ2Ø—k‘k×5Ô5ˆFØ�‰ iÔ/Ø—‘ 9Ö,Ü”S˜§?¡?Õ3Ó4´s¸6¿<¹<Ó7HÕHÓIÈQÖNÜœ˜VŸ\™\Ó*¨T¯[©[×-FÑ-FÕFÓGÈ1ÖLØ.3�—‘Ô+Úñ 6ñ r8   c                ó�  € RVP                   3RVP                  3RVP                  '       * 3RVP                  '       * 33 F  w  r#\	        RV: RV: 24       K  	  VP
                  '       dM   RVP
                  P                  3RVP
                  P                  33 F  w  r#\	        RV: RV: 24       K  	  \	        R4       R	# )
z4Print the data of a source entry to the command linezURI:zComps:zEnabled:zValid:Ú z	MatchURI:zBaseURI:r   N)Úurir°   ÚdisabledÚinvalidÚprintr¯   Ú	match_uriÚbase_uri)r4   r¸   ÚlabelrH   s   &&  r5   Úprint_source_entryÚ%SoftwareProperties.print_source_entryE  sª   € à" F§J¡JÐ/Ø$ f§l¡lÐ3Ø&¨F¯O©OÔ(;Ð<Ø$¨&¯.©.Ô&8Ð9ó;‰ˆõ 	›%¢Ð'Ö(ñ	;ð
 ‡‡€Ø +¨V¯_©_×-FÑ-FÐGØ *¨F¯O©O×,DÑ,DÐEóG‰NˆUå›e¢UÐ+Ö,ñGô 
ˆ$†Kr8   c                óŠ   € \        R4       V P                   F  p\        VP                  4       4       K  	  \        R4       R# )zPrint the complete sources.listzSTART SOURCES.LIST:zEND SOURCES.LIST
N)rÁ   r!   rK   ©r4   r¸   s   & r5   Úmassive_debug_outputÚ'SoftwareProperties.massive_debug_outputR  s2   € ä	Ð
Ô Ø×"Ô"ˆÜˆf�j‰j‹lÖñ #ä	Ð
Ör8   c                ó|   € WP                   n        V P                   P                  V4      pV P                  4        V# )z change the main download server )r#   Údefault_serverÚchange_serverÚset_modified_sourceslist)r4   ÚserverÚress   && r5   Úchange_main_download_serverÚ.SoftwareProperties.change_main_download_serverY  s1   € à!'‡K�KÔØ
�+‰+×
#Ñ
# FÓ
+€CØ×!Ñ!Ô#Ø€Jr8   c                ó\   € V P                   P                  V4       V P                  4        R# )z Enable a component of the distroN)r#   Úenable_componentrÎ   ©r4   r¹   s   &&r5   rÔ   Ú#SoftwareProperties.enable_component`  s    € à‡K�K× Ñ  Ô&Ø×!Ñ!Ö#r8   c                ó\   € V P                   P                  V4       V P                  4        R# )z!Disable a component of the distroN)r#   Údisable_componentrÎ   rÕ   s   &&r5   rØ   Ú$SoftwareProperties.disable_componente  s    € à‡K�K×!Ñ! $Ô'Ø×!Ñ!Ö#r8   c                ó~   € V P                   P                  P                   F  pVP                  V8X  g   K  Vu # 	  R # ©N)r#   r´   Úchildrenr‡   )r4   r‡   r¯   s   && r5   Ú_find_template_from_stringÚ-SoftwareProperties._find_template_from_stringj  s-   € Ø—K‘K×/Ñ/×8Ô8ˆØ	�‰˜$Ö	ØŠó 9r8   c                ó   € \        V\        4      '       d   V P                  V4      pV P                  P                   F1  pVP
                  V8X  g   K  V P                  P                  V4       K3  	  V P                  P                   F1  pVP
                  V8X  g   K  V P                  P                  V4       K3  	  V P                  4        R# )ú7Enable a child repo of the distribution main repositoryN)
Ú
isinstancerK   rÝ   r#   r®   r¯   r!   Úremoverª   rÎ   )r4   r¯   r¸   s   && r5   Údisable_child_sourceÚ'SoftwareProperties.disable_child_sourceo  s—   € ä�(œC× Ò Ø×0Ñ0°Ó:€hà—+‘+×+Ô+ˆØ�?‰?˜hÖ&Ø×Ñ×#Ñ# FÖ+ñ ,ð —+‘+×1Ô1ˆØ�?‰?˜hÖ&Ø×Ñ×#Ñ# FÖ+ñ 2ð 	×!Ñ!Ö#r8   c                ó(  € \        V\        4      '       d   V P                  V4      pVP                  R8X  d   V P                  P
                  pMVP                  pV P                  P                  W!P                  R7       V P                  4        R# )rà   N)r¾   Údist)	rá   rK   rÝ   rÃ   r#   rÌ   Ú
add_sourcer‡   rÎ   )r4   r¯   Ú	child_uris   && r5   Úenable_child_sourceÚ&SoftwareProperties.enable_child_source|  sn   € ä�(œC× Ò Ø×0Ñ0°Ó:€hð ×Ñ˜DÔ Ø—K‘K×.Ñ.‰	à×%Ñ%ˆ	Ø‡K�K×Ñ˜y¯}©}ÐÔ=Ø×!Ñ!Ö#r8   c                ó.  € . pVP                  V P                  P                  4       VP                  V P                  P                  4       V P                  P                   F  pV P
                  P                  V4       K   	  V P                  4        R# )z%Remove all distro source code sourcesN)r¬   r#   r­   r®   rª   r!   râ   rÎ   ©r4   r·   r¸   s   &  r5   Údisable_source_code_sourcesÚ.SoftwareProperties.disable_source_code_sourcesŠ  sg   € à€GØ‡N�N�4—;‘;×+Ñ+Ô,Ø‡N�N�4—;‘;×,Ñ,Ô-à—+‘+×1Ô1ˆØ×Ñ×Ñ Ö'ñ 2à×!Ñ!Ö#r8   c                óv  € . pVP                  V P                  P                  4       VP                  V P                  P                  4       V P                  P                   F  pV P
                  P                  V4       K   	  V Fn  pV P
                  P                  RVP                  VP                  VP                  RV P
                  P                  V4      ^,           VP                  VR7       Kp  	  V P                  P                   F–  pV P
                  P                  RV P                  P                  P                  V P                  P                  P                   VP                  RV P
                  P                  V4      ^,           VP                  VR7       K˜  	  V P#                  4        R# )z0Enable source code source for all distro sourcesúdeb-srczAdded by software-properties)ÚparentN)r¬   r#   r­   r®   rª   r!   râ   r±   r¾   ræ   r°   ÚindexÚfiler²   r´   rÃ   r‡   rÎ   rì   s   &  r5   Úenable_source_code_sourcesÚ-SoftwareProperties.enable_source_code_sources”  sQ  € à€GØ‡N�N�4—;‘;×+Ñ+Ô,Ø‡N�N�4—;‘;×,Ñ,Ô-ð —+‘+×1Ô1ˆØ×Ñ×Ñ Ö'ñ 2ó ˆØ×Ñ×Ñ˜YØ#ŸZ™ZØ#Ÿ[™[Ø#Ÿ\™\Ø;Ø!×-Ñ-×3Ñ3°FÓ;¸AÕ=Ø#Ÿ[™[Ø$*ð 	ö 	,ñ ð —+‘+×+Ô+ˆØ×Ñ×Ñ˜YØ!Ÿ[™[×8Ñ8×AÑAØ!Ÿ[™[×8Ñ8×=Ñ=Ø#Ÿ\™\Ø;Ø!×-Ñ-×3Ñ3°FÓ;¸AÕ=Ø#Ÿ[™[Ø$*ð 	ö 	,ñ ,ð 	×!Ñ!Ö#r8   c                ó€  € . V n         V P                  P                   Fœ  p\        V\        4      '       d#   \	        VP
                  VP                  R7      pMF\        V\        4      '       d#   \        VP
                  VP                  R7      pM\        RV 24      hV P                   P                  V4       Kž  	  R# )z+Store a backup of the source.list in memory©rŒ   ró   ©Úsectionró   úUnknown source: N)
Úsourceslist_backupr!   Úlistrá   r   rŒ   ró   r   Ú	TypeErrorr¡   )r4   r¸   Ú
source_bkps   &  r5   r(   Ú%SoftwareProperties.backup_sourceslist²  sŠ   € à €DÔØ×"Ñ"×'Ô'ˆÜ�fœk×*Ò*Ü$¨&¯+©+¸6¿;¹;ÔG‰JÜ˜Ô 1×2Ò2Ü*°6·;±;ÀVÇ[Á[ÔQ‰JäÐ.¨v¨hÐ7Ó8Ð8Ø×Ñ×&Ñ& zÖ2ó (r8   c                óˆ   € V P                  4        V P                  P                   F  p\        V4      V8X  g   K  Vu # 	  R # rÛ   )r'   r!   rü   rK   )r4   rŒ   r¸   s   && r5   Ú_find_source_from_stringÚ+SoftwareProperties._find_source_from_string¾  s<   € ð 	×ÑÔà×"Ñ"×'Ô'ˆÜ	ˆV‹˜Ö	ØŠñ (ñ r8   c                ó    € \        V\        4      '       d   V P                  V4      pVP                  '       * Vn        V P	                  4        R# )z&Enable or disable the selected channelN)rá   rK   r  r¿   rÎ   rÈ   s   &&r5   Útoggle_source_useÚ$SoftwareProperties.toggle_source_useÈ  s;   € ô �&œ#×ÒØ×,Ñ,¨VÓ4€fØ Ÿ/™/Ô)€F„OØ×!Ñ!Ö#r8   c                ó   € \        V P                  P                  4       Fª  w  r4\        V4      V8X  g   K  V P                  P                  V,          P                  p\        V\        4      '       d$   \        W%4      V P                  P                  V&   M"\        W%4      V P                  P                  V&   V P                  4         R # 	  R# ©TF)	r;   r!   rü   rK   ró   rá   r   r   rÎ   )r4   Ú	old_entryÚ	new_entryrò   Úentryró   s   &&&   r5   Úreplace_source_entryÚ'SoftwareProperties.replace_source_entryÐ  sŸ   € ä# D×$4Ñ$4×$9Ñ$9Ö:‰ˆÜ	ˆU‹�yÖ	 Ø×Ñ×$Ñ$ UÕ+×0Ñ0ˆÜ�eÔ.×/Ò/Ü+<¸YÓ+MˆD×Ñ×!Ñ! %Ò(ä+6°yÓ+GˆD×Ñ×!Ñ! %Ñ(Ø×%Ñ%Ô'Úñ ;ñ r8   c                óF   € V P                  4        V P                  4        R# )zFRevert all settings to the state when software-properties
was launchedN)rM   Úrevert_sourceslistrZ   s   &r5   ÚrevertÚSoftwareProperties.revertÝ  s   € ð 	×ÑÔØ×ÑÖr8   c                óÔ  € . V P                   n        V P                   F¦  p\        V\        4      '       d#   \	        VP
                  VP                  R7      pMF\        V\        4      '       d#   \        VP
                  VP                  R7      pM\        RV 24      hV P                   P                  P                  V4       K¨  	  V P                  4        V P                  4        R# )z6Restore the source list from the startup of the dialogr÷   rø   rú   N)r!   rü   rû   rá   r   rŒ   ró   r   rý   r¡   Úsave_sourceslistr'   )r4   r¸   Úsource_resets   &  r5   r  Ú%SoftwareProperties.revert_sourceslistä  sª   € à€D×ÑÔØ×)Ô)ˆÜ�fœk×*Ò*Ü&¨F¯K©K¸V¿[¹[ÔI‰LÜ˜Ô 1×2Ò2Ü,°V·[±[ÀvÇ{Á{ÔS‰LäÐ.¨v¨hÐ7Ó8Ð8Ø×Ñ×Ñ×$Ñ$ \Ö2ñ *ð 	×ÑÔØ×ÑÖr8   c                óÐ   € RV n         V P                  '       d-   V P                  P                  '       d   V P                  4        V P	                  4        V P                  4        R# )zCThe sources list was changed and now needs to be saved and reloadedTN)r&   r   Úmassive_debugrÉ   r  r'   rZ   s   &r5   rÎ   Ú+SoftwareProperties.set_modified_sourceslistò  sF   € à $€DÔØ‡|‡|€|˜Ÿ™×2×2Ð2Ø×!Ñ!Ô#Ø×ÑÔØ×ÑÖr8   c                ó&   € V P                  4        R# )z+Write the changed apt configuration to fileN)rL   rZ   s   &r5   r^   Ú&SoftwareProperties.set_modified_configú  s   € à×ÑÖr8   c                óN  € VP                   R8X  Edu   VP                  '       dõ   VP                  P                  RR4      P                  4       R,          \	        VP                  4      ^P8”  d   RMR,           pR\        V4      : RVP                  : 2p\	        VP                  4      ^8”  d$   VP                   F  pVR	V,          ,          pK  	  VP                  R9   d   VR	\        R
4      ,          ,          pVRVP                  ,          ,          pV# RVP                  : RVP                  : R2pVP                   F  pVR	V,          ,          pK  	  VP                  R9   d   VR	\        R
4      ,          ,          pV# RVP                   P                  ,          pVP                  R9   d   VR\        R4      ,          ,          pVP                  '       d   VR	VP                  ,          ,          pVP                   P                  R8X  d‘   VP                   F€  pVP                   P                  V4      '       dM   VP                   P                   F0  pVP                  V8X  g   K  VRVP                  ,          ,          pK2  	  Kp  VRV,          ,          pK‚  	  V# )z5Render a nice output to show the source in a treeviewNr   r½   :NéP   Nu   [â€¦]Ú z<b>z</b> z %sz(Source Code)z
%sz</b>z	<b>%s</b>z (%s)zSource CodeF)rð   zrpm-src)r¯   ÚcommentÚreplacer‚   r©   r   ræ   r°   ru   Ú_r¾   ÚdescriptionÚchildÚhas_componentÚ
componentsr‡   )r4   r¸   r  ÚcontentsÚcr¹   s   &&    r5   Úrender_sourceÚ SoftwareProperties.render_sourceþ  s  € à‡�˜$ÕØ�>�>ˆ>à—‘×&Ñ& t¨SÓ1×7Ñ7Ó9¸#Õ>Ü! &§.¡.Ó1°BÔ6‘7¸Bõ@ñ ô *0°®¸&¿+»+ÐFˆHä�6—<‘<Ó  1Ô$ØŸœ�AØ ¨¥	Õ)’Hñ &à�{‰{Ð4Ô4Ø˜E¤A oÓ$6Õ6Õ6�Ø˜ §¡Õ+Õ+ˆHð ˆð' ð *0¯¬°V·[´[ÐAˆHØ—\”\�Ø˜E A�IÕ%’ñ "à�{‰{Ð4Ô4Ø˜E¤A oÓ$6Õ6Õ6�Øˆð  §¡×!<Ñ!<Õ<ˆØ�;‰;Ð0Ô0Ø˜¤! MÓ"2Õ2Õ2ˆHØ�>�>ˆ>Ø�u˜vŸ~™~Õ-Õ-ˆHØ�?‰?× Ñ  EÔ)ØŸœ�Ø—?‘?×0Ñ0°×6Ò6ð $Ÿ_™_×7Ô7˜ØŸ6™6 Tž>Ø$¨°·±Õ(>Õ>šHó 8ð  ¨¥Õ-’Hñ %ð ˆr8   c                óº  € ^p^p^p^p\        RR4      pVP                  '       dA   ^ pVP                  P                  pVP                  P                  V P                  8X  d   ^ pM?VP
                  : RVP                  : RVP                  : 2pVP                  '       d   ^ pVP                  P                  R4      '       d   ^ pW#WEVP                  V4      3# )z&extract attributes to sort the sourcesÚ
0123456789Ú
9876543210r½   Úsrc)r   r¯   r   Údistributionr#   r¾   ræ   r°   r  ru   ÚfindÚ	translate)r4   r¸   Úcur_sysÚhas_templateÚhas_commentÚ	is_sourceÚrevert_numbersÚdescs   &&      r5   Úget_comparableÚ!SoftwareProperties.get_comparable(  s¶   € à€gØ€lØ€kØ€iÜ  ¨|Ó<€nØ	��ˆØˆØ�‰×*Ñ*ˆØ�?‰?×'Ñ'¨4¯;©;Ô6ØˆGøà%Ÿzœz¨6¯;¬;¸¿»ÐEˆ$Ø�^�^ˆ^ØˆkØ	�‰×	Ñ	˜%×	 Ò	 Øˆ)Ø [Ø�n‰n˜^Ó,ð.ð .r8   c                ó¦  € . pV P                   P                   F´  pVP                  '       d   K  W P                  P                  9  g   K3  W P                  P
                  9  g   KO  W P                  P                  9  g   Kk  W P                  P                  9  g   K‡  W P                  P                  9  g   K£  VP                  V4       K¶  	  V# )z>Return a list of sources that are not part of the distribution)
r!   rü   rÀ   r#   r­   r²   r®   Údisabled_sourcesrª   r¡   )r4   Úisv_sourcesr¸   s   &  r5   Úget_isv_sourcesÚ"SoftwareProperties.get_isv_sources=  sŒ   € à€KØ×"Ñ"×'Ô'ˆØ�~�~Š~ØŸ+™+×2Ñ2Ö2ØŸ+™+×3Ñ3Ö3ØŸ+™+×3Ñ3Ö3ØŸ+™+×6Ñ6Ö6ØŸ™×8Ñ8Ö8Ø×Ñ˜vÖ&ñ (ð Ðr8   c                ó.   € V P                   P                  # )z-Return the list of CDROM based distro sources)r#   r²   rZ   s   &r5   Úget_cdrom_sourcesÚ$SoftwareProperties.get_cdrom_sourcesJ  s   € à�;‰;×$Ñ$Ð$r8   c                óL   € VP                   V P                  P                  9   R3# )z Return a tuple: the first value describes if a component is enabled
in the Internet repositories. The second value describes if the
first value is inconsistent.F)r‡   r#   Údownload_compsrÕ   s   &&r5   Úget_comp_download_stateÚ*SoftwareProperties.get_comp_download_stateN  s"   € ð
 �I‰I˜Ÿ™×3Ñ3Ñ3°UÐ;Ð;r8   c                ó¸  € . pV P                   P                   F1  pVP                  V8X  g   K  VP                  VP                  4       K3  	  \        V4      ^ 8”  d7   \        V P                   P                  \        V4      ,          4      ^ 8X  d   R# \        V4      ^ 8”  d7   \        V P                   P                  \        V4      ,          4      ^ 8w  d   R# R# )z½Return a tuple: the first value describes if a component is enabled
in one of the child source that matcth the given template.
The second value describes if the first value is inconsistent.r  )FT)FF)r#   r®   r¯   r¬   r°   r©   rµ   r   )r4   r¯   r°   r!  s   &&  r5   Úget_comp_child_stateÚ'SoftwareProperties.get_comp_child_stateU  s§   € ð €EØ—‘×*Ô*ˆØ�>‰>˜XÖ%Ø�L‰L˜Ÿ™Ö%ñ +ô ˆ5ƒz�A„~ÜˆD�K‰K×%Ñ%¬¨E«
Õ2Ó3°qÔ8àÐÜ	ˆU‹�aŒÜˆD�K‰K×%Ñ%¬¨E«
Õ2Ó3°qÔ8ð Ðð Ðr8   c                ó²   € V P                   P                  4        . V n        V P                  P	                  V P                   4       V P                  4        R # rÛ   )r!   ÚrefreshÚsourceslist_visibler#   Úget_sourcesrº   rZ   s   &r5   r'   Ú%SoftwareProperties.reload_sourceslistj  s@   € Ø×Ñ×ÑÔØ€DÔØ‡K�K×Ñ˜D×,Ñ,Ô-Ø×ÑÖ r8   c                ó.  € V P                   R,           V P                   R,           V P                   R,           .pV F*  p\        P                  P                  V4      '       g   K*   M¬	  \	        R4       \        P                  P                  X4      p\        P                  P                  V4      '       g'   \        P                  ! V4      P                  RR7       \        V^ ,          R4      ;_uu_ 4       pVP                  R4       R	R	R	4       R
p\        P                  P                  V4      '       dr   \        P                  ! V4      \        P                  ,          pV\        P                  ,          '       g*   \	        RV,          4       \        P                  ! VR4       V EF'  p. p\        P                  P                  V4      '       g   K-  \        VR4      ;_uu_ 4       pVP!                  4       pR	R	R	4       \"        P$                  P'                  R4      p\        VR4      ;_uu_ 4       pV FK  p	VP)                  4        F#  p
V	P+                  RV
,          4      ^ 8¼  g   K"   K8  	  VP                  V	4       KM  	  VP)                  4        F,  pVP                  RV: RVP-                  V4      : R24       K.  	  R	R	R	4       EK*  	  R	#   + '       g   i     ELÙ; i  + '       g   i     Lø; i  + '       g   i     EKg  ; i)z+Write the current apt configuration to filez/etc/apt/apt.conf.d/10periodicz#/etc/apt/apt.conf.d/20auto-upgradesz+/etc/apt/apt.conf.d/15adept-periodic-updatezNo config found, creating oneT)Úparentsr{   r  Nz/etc/cron.daily/aptz file '%s' not executable, fixingií  r|   zAPT::PeriodiczAPT::Periodic::%szAPT::Periodic::z "z";
)r   rS   rT   ÚisfilerÁ   ÚdirnamerU   ÚpathlibÚPathÚmkdirr€   r�   ÚstatÚST_MODEÚS_IXUSRÚchmodÚ	readlinesr   r   Úsubtreerü   r-  rF   )r4   Ú	conffilesrŠ   rN  ÚacÚpermÚperiodicÚcontentÚcnfrŒ   r—   r‰   s   &           r5   rL   ÚSoftwareProperties.write_configp  s  € ð —‘Ð>Õ>Ø—‘ÐCÕCØ—‘ÐKÕKðM€Ió
 ˆÜ	�‰�‰˜×	Ô	Ùñ ô Ð+Ô,Ü—‘—‘ Ó"€gÜ�W‰W�^‰^˜G×$Ò$Ü�Š�WÓ×#Ñ#¨DÐ#Ô1Ü�	˜!•˜c×"Ô" aØ	�‰�Œ÷ #ð 
€BÜ	‡w�w‡~�~�b×ÒÜ�WŠW�R‹[œŸ™Õ&€dØ”T—\‘\×!Ô!ÜÐ0°2Õ5Ô6Ü
�Š��UÔô ˆà€gÜ	�‰�‰˜×	!Ô	!Ü�(˜C× Ô  AØ—K‘K“Mˆ'÷ !ä�n‰n×$Ñ$ _Ó5ˆô �(˜C× Ô  AÛˆdØ—x‘x–z�Ø—‘Ð.°#Õ6Ó7¸1Ö<Úñ "ð �g‰g�dŽmñ ð —8‘8–:ˆaØ�GŠG³Q¸¿
¹
À1¾ÐFÖGñ ÷ !Ò ó ÷ #×"Ð"ú÷  !× ú÷
 !× Ñ ús+   Ã9KÇ.K/È:3LÉ2ALËK,	Ë/K?ÌLc                óp   € V P                   P                  R4       V P                   P                  4        R# )zJBackup the existing sources.list files and write the current
configurationz.saveN)r!   ÚbackupÚsaverZ   s   &r5   r  Ú#SoftwareProperties.save_sourceslist¡  s*   € ð 	×Ñ×Ñ˜GÔ$Ø×Ñ×ÑÖr8   c           	     óX  € \        V4      p\        P                  P                  V P                  4      '       dÜ   \
        P
                  ! RV P                  ,          4       F°  p\        V4      ;_uu_ 4       pV F‹  pVP                  4       P                  R4      '       d   K*  V\        V4      8X  g   K<  \        P                  P                  \        P                  P                  V4      4      ^ ,          u uuRRR4       u # 	  RRR4       K²  	  R#   + '       g   i     KÇ  ; i)zg
helper that checks if a given line is in the source list
return the channel name or None if not found
z	%s/*.listÚ#N)r   rS   rT   rU   ÚCHANNEL_PATHÚglobr€   r‚   rƒ   ÚsplitextÚbasename)r4   ÚsrclineÚsrcentryÚfilenamerŠ   rŒ   s   &&    r5   Ú_get_channel_from_lineÚ)SoftwareProperties._get_channel_from_line§  sÆ   € ô
 ˜7Ó#€HÜ	‡w�w‡~�~�d×'Ñ'×(Ò(Ü—i’i ¨d×.?Ñ.?Õ ?Ö@ˆ(Ü�(�^Œ^˜qÛˆdØ�z‰z‹|×&Ñ& s×+Ò+ÙØœ; tÓ,Ö,Ü—W‘W×%Ñ%¤b§g¡g×&6Ñ&6°xÓ&@ÓAÀ!ÕDÑD÷ Œ^Ù÷ ‰^ñ Añ ÷ �^ˆ^ús   Á8:DÂ7ADÄDÄD)c                óº   € VP                  4       P                  pV P                  V4      pV'       d(   V P                  : RV: R2pV P	                  V4       R# R# )zw
helper that adds the gpg key of the channel to the apt
keyring *if* the channel is in /usr/share/app-install/channels
r   z.keyTF)r   rŒ   rl  re  Úadd_key)r4   Úshortcutri  ÚchannelÚkeyps   &&   r5   Ú&check_and_add_key_for_channel_shortcutÚ9SoftwareProperties.check_and_add_key_for_channel_shortcut·  sM   € ð
 ×"Ñ"Ó$×)Ñ)€GØ×)Ñ)¨'Ó2€GßØ ×-Ô-«wÐ7€dØ
‡l�l�4ÔÙÙr8   c                ó   € R# )z(abstract interface to keep the UI alive N© rZ   s   &r5   Úupdate_interfaceÚ#SoftwareProperties.update_interfaceÄ  s   ‚ r8   c                ó  € VP                  R4      '       g   V# VP                  4       ^ ,          p VP                  R^4      ^,          pRV: RV P                  P                  : RV: 2pV#   \         d    Rp L3i ; i)z¹
short cut - this:
  apt-add-repository http://packages.medibuntu.org free non-free
same as
  apt-add-repository 'deb http://packages.medibuntu.org/ '$(lsb_release -cs)' free non-free'
Úhttpr½   Úmainzdeb )rƒ   r”   Ú
IndexErrorr#   Úcodename)r4   rŒ   ÚrepoÚareass   &&  r5   Úexpand_http_lineÚ#SoftwareProperties.expand_http_lineÇ  su   € ð �?‰?˜6×"Ò"Ø€kØ�:‰:‹<˜�?€DðØ—
‘
˜3˜qÓ! !Õ$ˆøó # D§K¡K×$8Ô$8º%ÐA€DØ€Køô ô ØŠðús   ²A/ Á/A?Á>A?c                ó|   €  \        VP                  4       4      pT P                  Y24      #   \         d     R# i ; i)z"
Add a source for the given line.
F)r   r‚   r   Úadd_source_from_shortcut)r4   rŒ   Úenable_source_coderp  s   &&& r5   Úadd_source_from_lineÚ'SoftwareProperties.add_source_from_lineØ  s>   € ðÜ# D§J¡J£LÓ1ˆð ×(Ñ(¨ÓFÐFøô $ô Úðús   ‚, ¬;º;c           
     óØ  € VP                  4       P                  pVP                  pV P                  V4      pV'       d   RMRpWSR,          ,           p\        W44      p\        Wd4      pVP                  '       g   VP                  '       d   R# V P                  V4      '       g   VP                  4        V P                  P                  VP                  VP                  VP                  VP                  VP                  VP                  VP                  R7       V P                  P                  VVP                  VP                  VP                  VP                  VP                  VP                  R7       V P!                  4        V P"                  '       dM   V P"                  P$                  '       d1   ^ RIp	V	P)                  4       p
V
P%                  VP                  R7       R# )	z‚
Add a source with the given shortcut and add the signing key if the
site is a known channel or the shortcut implementer adds it.
rð   z	# deb-src:é   NNF)r  ró   ÚarchitecturesN)Úsources_listT)r   rŒ   Úsourceparts_filer€  rÀ   rs  ro  r!   r±   ru   r¾   ræ   r°   r  ró   r‰  rÎ   r   rŸ   ÚaptÚCache)r4   rp  r„  Údeb_lineró   Údebsrc_entry_typeÚdebsrc_lineÚnew_deb_entryÚnew_debsrc_entryrŒ  Úcaches   &&&        r5   rƒ  Ú+SoftwareProperties.add_source_from_shortcutã  s�  € ð ×#Ñ#Ó%×*Ñ*€HØ×$Ñ$€DØ×$Ñ$ XÓ.€Hß%7™	¸[ÐØ#¨r¥lÕ2€KÜ Ó/€MÜ" ;Ó5ÐØ××ÐÐ 0× 8× 8Ð 8ÙØ×6Ñ6°x×@Ò@Ø×ÑÔØ×Ñ×Ñ˜×+Ñ+Ø&×*Ñ*Ø&×+Ñ+Ø&×,Ñ,Ø!.×!6Ñ!6Ø+×0Ñ0Ø'4×'BÑ'Bð ô Dð 	×Ñ×ÑÐ*Ø)×-Ñ-Ø)×.Ñ.Ø)×/Ñ/Ø!1×!9Ñ!9Ø.×3Ñ3Ø'7×'EÑ'Eð ô Gð 	×!Ñ!Ô#Ø‡|‡|€|˜Ÿ™×+×+Ð+ÛØ—	‘	“ˆØ�‰Ð"2×"7Ñ"7ˆÔ8Ùr8   c                ó¶  € V'       d£   \        V\        4      '       d&   V P                  V4      pV P                  VR4       R# Veb   V P                  VR4       \        P                  ! V4      pRVn        RVn        V P                  VR4       RVn        V P                  VR4       R# \        V\        4      '       d   V P                  V4      pVf   R# VP                  \        P                  P                  R4      8w  d—   VP                  P                  R4      '       d<   V P                  P                  P                  \        RVP                  R7      4       M:V P                  P                  P                  \!        RVP                  R7      4        V P                  P#                  V4       V P'                  4        R#   \$         d     Li ; i)	zRemove the given sourceTNFrð   zDir::Etc::sourcelistz.sourcesr  )ró   )rá   rK   r  Úremove_sourcerˆ   ru   r¿   ró   r   r   Ú	find_fileÚendswithr!   rü   r¡   r   r   râ   r•   rÎ   )r4   r¸   Úremove_source_codes   &&&r5   r–  Ú SoftwareProperties.remove_source	  sy  € çÜ	�FœC×	 Ò	 à×.Ñ.¨vÓ6ˆØ×Ñ˜6 4Ô(ñ ð ÒØ×Ñ˜6 5Ô)ô —’˜6Ó"ˆØˆŒØˆŒØ×Ñ˜6 5Ô)ØˆŒØ×Ñ˜6 5Ô)Ùô �&œ#×ÒØ×,Ñ,¨VÓ4€fØ‚~Ùð
 ‡{�{”g—n‘n×.Ñ.Ð/EÓFÔFØ	�‰×	Ñ	˜j×	)Ò	)Ø×Ñ×Ñ×$Ñ$Ô%6°rÀÇÁÔ%LÕMà×Ñ×Ñ×$Ñ$¤[°¸&¿+¹+Ô%FÔGðØ
×Ñ×Ñ˜fÔ%ð 	×!Ñ!Ö#øô ô ñ
 ðús   ÆG
 Ç
GÇGc                óœ   € \         P                  P                  V4      '       g   R#  V P                  P	                  V4      pV#     R# ; i)z7Add a gnupg key to the list of trusted software vendorsF)rS   rT   rU   r.   r±   )r4   rT   rÐ   s   && r5   ro  ÚSoftwareProperties.add_key4  s@   € ä�7‰7�>‰>˜$×ÒÙðØ�l‰l×Ñ˜tÓ$ˆØˆ
øðÚús   ©A ÁAc           	     óô  € \         P                  ! 4       ;_uu_ 4       pVP                  4       P                  R4      '       d?   VR,           \	        VP                  R4      4      P                  4       ,           R,           pMn\        V^ ,          4      R
9   d?   VR,           \	        VP                  R4      4      P                  4       ,           R,           pM\        RV 24        RRR4       R# \        VR	4      ;_uu_ 4       pVP                  V4       VP                  4        RRR4       V P                  XP                  4      uuRRR4       #   + '       g   i     L5; i  + '       g   i     R# ; i)z<Add a gnupg key from a utf-8 data string (e.g. copy-n-paste)z$-----BEGIN PGP PUBLIC KEY BLOCK-----r   zutf-8z.ascz.gpgzNot an OpenPGP certificate: NFr{   )é˜   é™   éÆ   )ÚtempfileÚTemporaryDirectoryr‚   rƒ   r   Úencoder    ÚordrÁ   r€   r�   r„   ro  r‡   )r4   ÚkeydataÚtmpdirÚtmpfileÚtmps   &&   r5   Úadd_key_from_dataÚ$SoftwareProperties.add_key_from_data>  s  € ä	×	$Ò	$×	&Ô	&¨&Ø�=‰=‹?×%Ñ%Ð&L×MÒMØ˜s•l¤V¨G¯N©N¸7Ó,CÓ%D×%NÑ%NÓ%PÕPÐSYÕY‰GÜ�˜•‹_Ð 2Ô2Ø˜s•l¤V¨G¯N©N¸7Ó,CÓ%D×%NÑ%NÓ%PÕPÐSYÕY‰GäÐ0°°	Ð:Ô;Ø÷ 
'Ñ	&ô �'˜3×Ô 3Ø�I‰I�gÔØ�I‰IŒK÷  ð �|‰|˜CŸH™HÓ%÷ 
'Ò	&÷  ×ú÷ 
'×	&Ð	&ús*   žCE&Ã0E&Ä"E	Ä&"E&ÅE#ÅE&Å&E7	c                óN   €  V P                   P                  V4       R#     R# ; i)z<Remove a gnupg key from the list of trusted software vendorsTF)r.   Úrm)r4   Úkeyids   &&r5   Ú
remove_keyÚSoftwareProperties.remove_keyM  s$   € ðØ�‰�‰˜ÔÙøðÚús   ‚ Ÿ$c                óN  € \        V\        P                  4      '       g   Q hVP                  pV'       d   VP                  pVP
                  pM?\        P                  ! V4      pVP                  V4      pVP                  pVP
                  pVP                  : RV: RV: R2# )z!Return the PackageKit package id Ú;)	rá   r   ÚPackageÚcurrent_verÚver_strÚarchÚDepCacheÚget_candidate_verr‡   )r4   Ú	apt_cacheÚpkgÚcur_verÚverrµ  ÚdepcacheÚ	candidates   &&&     r5   Úget_package_idÚ!SoftwareProperties.get_package_idU  s|   € ä�cœ7Ÿ?™?×+Ò+Ð+Ð+Ø�o‰o€GßØ�o‰oˆØ�|‰|‰ä×#Ò# IÓ.ˆØ×.Ñ.¨sÓ3ˆ	Ø×ÑˆØ�~‰~ˆØŸ(œ(£C«Ð.Ð.r8   c                óF  € \         P                  ! V 4      pVP                  V4      p. p VP                  P	                  R4       F>  pV F5  w  rxp	VP                  V4      R8w  g   K  VP                  W,          4       K7  	  K@  	  V#   \        \        3 d    . u # i ; i)zEGet the package dependencies, which can be filtered out by a pattern ÚDependséÿÿÿÿ)	r   r¶  r·  Údepends_list_strrp   r-  r¡   ÚKeyErrorrý   )
r¸  ÚpackageÚpatternr¼  r½  ÚdependenciesÚdep_listÚdep_nameÚdep_verÚdep_ops
   &&&       r5   Úget_dependenciesÚ#SoftwareProperties.get_dependenciesc  sž   € ô ×Ò 	Ó*€HØ×*Ñ*¨7Ó3€Ià€LðØ!×2Ñ2×6Ñ6°yÖAˆHÛ-5Ñ)� 6Ø—=‘= Ó)¨RÖ/Ø ×'Ñ'¨	Õ(;Ö<ó .6ñ Bð Ðøô ”iÐ ô ØŠ	ðús   «9B
 Á)B
 Â
B ÂB )rB   r.   r0   r*   r    r#   r&   r-   r   r   r   r%   r!   rû   rH  )NNr   F)F)TrÛ   )CÚ__name__Ú
__module__Ú__qualname__Ú__firstlineno__re  rl   rü   Úrangerm   ÚRELEASE_UPGRADES_LTSÚRELEASE_UPGRADES_NEVERrr   r6   r3   r)   rM   r[   r`   rd   rg   rx   r�   r˜   r¦   rº   rÅ   rÉ   rÑ   rÔ   rØ   rÝ   rã   ré   rí   rô   r(   r  r  r  r  r  rÎ   r^   r&  r5  r:  r=  rA  rD  r'   rL   r  rl  rs  rw  r€  r…  rƒ  r–  ro  r©  r®  r¾  ÚstaticmethodrÌ  Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r5   r   r   D   se  ø‡ € ð 2€,ð AÐñ ‰5�‹8ƒnñ	ØØØð ˜hØ˜eØ˜gð!Ðô'+òRò-òòò.ò(%òLò(ò&ò0ò ò2%òNò òò$ò
$ò
ò
$ò$ò$ò$ò<
3òò$òòòòòò(òT.ò*ò%ò<òò*!ò/Hòbòò ò0òô"	Gô$ôL)$òVò&òò/ð óó ör8   r   Ú__main__)0r   rˆ   Úhashlibr   r   r�   rS   rf  r…   r:   r1   r¡  rO  Ústringr   ÚImportErrorrK   rR  r+   r,   r   Úxml.sax.saxutilsr   Úconfigparserr   r	   r  r"   Úaptsources.distrorC   r
   Úaptsources.sourceslistr   r   r   Ú"softwareproperties.shortcuthandlerr   Úsoftwareproperties.shortcutsr   Úgi.repositoryr   Úobjectr   rÎ  ÚsprÁ   rx   r�   rv  r8   r5   Ú<module>ræ     só   ðó4 Û ß Û 	Û 	Û Û Û Û Û Û ðÝó ðÛõ (Ý #ð(Ý'õ !ã Û Û å ß PÑ PÝ GÝ 9å ôn˜ô nðb ˆzÔÙÓ€"Ùˆ×&Ñ&Ó(Ô)Ø× Ñ  Ö#ñ øð] ô Ø�m‰m‚)ðûð ô Ýðûð ô (ß'ð(ús4   ²C ½C% ÁC6 ÃC"Ã!C"Ã%C3Ã2C3Ã6DÄD