+
    4Ssi l  ã                   óÎ  € ^ 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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 ^ RIHtHtHt ^ RIt^ RIt^ RI H!t!H"t" ^ RI#H$t$ ^ RI%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t- ]! RRR].RRR7      ]! RRR].RRR7      ]! RRRRRR7      ]! R R!R"R#7      ]! R$R%]/! ]P`                  ! 4       4      R&7      ]! R'R(R)R"R*R+7      ]! R,R-R.R"R*R+7      ]! R/R0R1R2R3R47      .t1]! R5R6RR7RR7      ]! R8R9RR:RR7      .t2R;t3 ! R< R=]4      t4R> t5R? t6R@ t7 ! RA RB]44      t8 ! RC RD]94      t: ! RE RF]44      t; ! RG RH]44      t< ! RI RJ]4      t=R# )Ké    N)Údefaultdict)Údsdb)Únttime2unix)ÚCommandÚSuperCommandÚCommandErrorÚOption)ÚSamDB)Ú	dot_graph)Údistance_matrixÚCOLOUR_SETS)Úfull_matrix)Úis_colour_wanted)Ú
SCOPE_BASEÚSCOPE_SUBTREEÚLdbError)ÚKCCÚldif_import_export)ÚKCCError)Úget_partition_mapsÚget_partitionÚget_own_cursorÚget_utdvÚget_utdv_edgesÚget_utdv_distancesÚget_utdv_max_distanceÚget_kcc_and_dsasz-Hz--URLz%LDB URL for database or target serverÚURLÚH)ÚhelpÚtypeÚmetavarÚdestz-oz--outputzwrite here (default stdout)ÚFILE)r    r!   r"   Údefaultz
--distancez&Distance matrix graph output (default)ÚformatÚdistanceÚstore_const)r    r#   ÚconstÚactionz--utf8zUse utf-8 Unicode charactersÚ
store_true)r    r*   z--color-schemez,use this colour scheme (implies --color=yes))r    Úchoicesz-Sz--shorten-namesz don't print long common suffixesF)r    r*   r%   z-rz--talk-to-remotezquery other DCs' databasesz--no-keyzomit the explanatory keyÚstore_falseTÚkey)r    r*   r%   r#   z--dotzGraphviz dot outputÚdotz--xdotzattempt to call Graphviz xdotÚxdotÚ__temp__c                   ó¬   a € ] tR t^Rt o RtRtR]P                  R]P                  R]P                  /t
]],           tRtR tRR ltR	 tR
 tR tRtV tR# )ÚGraphCommandz Base class for graphing commandsz%prog [options]Ú	sambaoptsÚversionoptsÚcredoptsc                óf   € VP                  4       pVP                  VR R7      p\        WVR7      pV# )T©Úfallback_machine)ÚurlÚcredentialsÚlp)Úget_loadparmÚget_credentialsr
   )Úselfr   r4   r6   r<   ÚcredsÚsamdbs   &&&&   Ú8/usr/lib/python3/dist-packages/samba/netcmd/visualize.pyÚget_dbÚGraphCommand.get_db^   s6   € Ø×#Ñ#Ó%ˆØ×(Ñ(¨¸dÐ(ÓCˆÜ˜!°2Ô6ˆØˆó    Nc                ó4  € Ve   VR8X  d   \        WP                  R7       R# V\        J d>   \        P                  ! RVR7      w  rB\        VR4      p\        P                  ! V4       M\        VR4      pVP                  V4       VP                  4        V# )aW  Decide whether we're dealing with a filename, a tempfile, or
stdout, and write accordingly.

:param s: the string to write
:param fn: a destination
:param suffix: suffix, if destination is a tempfile

If fn is None or "-", write to stdout.
If fn is visualize.TEMP_FILE, write to a temporary file
Otherwise fn should be a filename to write to.
NÚ-©Úfileúsamba-tool-visualise)ÚprefixÚsuffixÚw)	ÚprintÚoutfÚ	TEMP_FILEÚtempfileÚmkstempÚopenÚosÚcloseÚwrite)r?   ÚsÚfnrL   ÚfdÚfs   &&&&  rB   rV   ÚGraphCommand.writed   sw   € ð Š:˜˜sœä�!Ÿ)™)Õ$Ùà”‹?Ü×%Ò%Ð-CØ-3ô5‰FˆBä�R˜“ˆAÜ�HŠH�R�Lä�R˜“ˆAà	�‰�Œ
Ø	�‰Œ	Øˆ	rE   c                óŠ   € V'       g2   V'       d(   VP                  4       P                  R4      '       d   R# R# VR8X  d   R# V# )z5Heuristics to work out what output format was wanted.ú.dotr/   r'   r0   )ÚlowerÚendswith)r?   r&   Úoutputs   &&&rB   Úcalc_output_formatÚGraphCommand.calc_output_format�   s4   € çç˜&Ÿ,™,›.×1Ñ1°&×9Ò9Ùá!à�VÔÙàˆrE   c                óø   € Vf   V P                  V\        4      pMV P                  W4      p\        P                  P	                  RR4      p\
        P                  ! WC.4       \        P                  ! V4       R # )NÚSAMBA_TOOL_XDOT_PATHz/usr/bin/xdot)rV   rP   rT   ÚenvironÚgetÚ
subprocessÚcallÚremove)r?   rW   r`   rX   r0   s   &&&  rB   Ú	call_xdotÚGraphCommand.call_xdot�   sS   € ØŠ>Ø—‘˜AœyÓ)‰Bà—‘˜AÓ&ˆBÜ�z‰z�~‰~Ð4°oÓFˆÜ�Š˜˜
Ô#Ü
�	Š	�"ŽrE   c                óÆ   € Ve   V# VR9   d   V P                   p\        W P                  R7      pV'       g   R# R\        P                  P                  RR4      9   d   R# R# )	z–Heuristics to work out the colour scheme for distance matrices.
Returning None means no colour, otherwise it should be a colour
from graph.COLOUR_SETSN)ÚhintÚ256colorÚTERMÚ zxterm-256color-heatmapÚansi)rG   N)rO   r   Úrequested_colourrT   re   rf   )r?   Úcolor_schemer`   Úwant_colours   &&& rB   Úcalc_distance_color_schemeÚ'GraphCommand.calc_distance_color_scheme˜   sV   € ð Ò#àÐà�[Ô Ø—Y‘YˆFä& v×4IÑ4IÔJˆßÙð
 œŸ™Ÿ™¨°Ó3Ô3Ù+ÙrE   © )Nr]   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚsynopsisÚoptionsÚSambaOptionsÚVersionOptionsÚCredentialsOptionsÚtakes_optiongroupsÚCOMMON_OPTIONSÚDOT_OPTIONSÚtakes_optionsÚ
takes_argsrC   rV   ra   rj   ru   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @rB   r3   r3   R   se   ø‡ € Ù*à €Hà�W×)Ñ)Ø�w×-Ñ-Ø�G×.Ñ.ðÐð
 # [Õ0€MØ€Jòôò:ò÷ð rE   r3   c                óf   € \         P                  ! RV 4      pV'       d   VP                  ^4      # V # )zBHelper function for sorting and grouping DNs by site, if
possible.z$CN=Servers,CN=\s*([^,]+)\s*,CN=Sites)ÚreÚsearchÚgroup)ÚdnÚms   & rB   Úget_dnstr_siter‘   ¯   s+   € ô 	�	Š	Ð9¸2Ó>€AßØ�w‰w�q‹zÐà€IrE   c                ó&   € \        V ^ ,          4      # )zXHelper function for sorting and grouping lists of (DN, ...) tuples
by site, if possible.)r‘   )Úts   &rB   Úget_dnstrlist_siter”   ¹   s   € ô ˜!˜A�$ÓÐrE   c                óâ   € ^ RI Hp \        V 4      p\        V\        4      '       d   VP	                  R4      p\        V! V4      P                  4       R,          ^R7      R,          pRV,          # )zMGenerate a randomish but consistent darkish colour based on the
given object.)Úmd5Úutf8:Né   N)Úbasei z#%06x)Úhashlibr–   ÚstrÚ
isinstanceÚencodeÚintÚ	hexdigest)Úxr–   Útmp_strÚcs   &   rB   Úcolour_hashr£   ¿   sX   € õ Ü�!‹f€GÜ�'œ3×ÒØ—.‘. Ó(ˆÜ‰C�‹L×"Ñ"Ó$ RÕ(¨rÔ2°XÕ=€AØ�Q�;ÐrE   c                   ód   a € ] tR t^Êt o Rt]],           ]! RRRRR7      .,           tR	R lt	Rt
V tR# )
Úcmd_repszrepsFrom/repsTo from every DSAú-pú--partitionúrestrict to this partitionN©r    r%   c                ó"  € VP                  4       pVP                  VR R7      p\        WV4      w  ppVP                  p\	        VP
                  V
4      p
\        R 4      p/ pV EF¤  p\        VR R7      pV'       d–   VP
                  P                  V\        R.R7      p\        V^ ,          R,          ^ ,          4      p\        RV: RV: R2\        P                  R	7        VP                  R
V,          VV4       TP!                  YT4       M&VP                  WV4       VP!                  WVVR7       \#        VP%                  4       4      pVV8w  d¢   \        R\        P                  R	7       VV,
           F%  p\        RV,          \        P                  R	7       K'  	  \        RV,          \        P                  R	7       VV,
           F%  p\        RV,          \        P                  R	7       K'  	  V EF  pV	R8X  d
   VV8X  d   K  V	R8X  d
   VV8w  d   K$  VP'                  RV,           4      pVP)                  V4       VV\        VP*                  4      &   VP-                  4       w  pp VP/                  4        F4  w  p!p"V
e
   V!V
8X  g   K  VV!,          R,          P1                  VV"34       K6  	  V P/                  4        F4  w  p!p"V
e
   V!V
8X  g   K  VV!,          R,          P1                  VV"34       K6  	  EK  	  EK§  	  RR. R. /RR. R. //p#\3        VP
                  4      w  p$p%VP/                  4        FÕ  w  p&p!V#P/                  4        F»  w  p'p(V!V',           F¨  w  pp"V%P5                  V&V&4      p)V"P6                   F8  p*V(R,          P1                  VV\        V*P8                  4      ,          V)34       K:  	  V"P:                   F8  p*V(R,          P1                  V\        V*P8                  4      ,          VV)34       K:  	  Kª  	  K½  	  K×  	  V P=                  WÒ4      R8X  dß   V P?                  VV4      pRRRR/p+V#P/                  4        F°  w  p'p(V(P/                  4        F–  w  p,p-\        \@        4      p.V- F!  w  p/p0p!V.V!,          P1                  V/V034       K#  	  V.P/                  4        FF  w  p!p1\C        RV1VVVV\D        R7      p2RV+V,,          V!,          : RV2: 2p2V PG                  V2V4       KH  	  K˜  	  K²  	  R# . p3. p4. p5\#        4       p6/ p7\#        4       p8V#P/                  4        Fë  w  p'p9V9P/                  4        FÑ  w  p,p-V- FÅ  w  p/p0p!V7PI                  V!\K        V!V,34      4      p:V'R8X  d   RMRp;V,R8X  d   RMR p<V6PM                  V/4       V6PM                  V04       V5P1                  V/V034       V3P1                  V:4       R!V;: R"V<: 2p=V4P1                  V=4       V8PM                  V!R#V,PO                  4       ,           V:V=34       KÇ  	  KÓ  	  Kí  	  . p>V'       d]   \Q        V84       F+  w  p!p,p:p;V>P1                  R$R%V:: R&V;: 2V!: R'V,: 234       K-  	  V>P1                  R*4       V>P1                  R+4       \S        V6V5R V3V4VV>R(7      p2VR)8X  d   V PU                  V2V4       R# V PG                  V2V4       R#   \         d1   p\        RT: RT: R2\        P                  R	7        Rp?EK¤  Rp?ii ; i),Tr8   c                  ó    € \        \        4      # )N)r   Úlistrw   rE   rB   Ú<lambda>Úcmd_reps.run.<locals>.<lambda>ã   s	   € ¤k´$Ô&7rE   )ÚreadonlyÚdNSHostName©ÚscopeÚattrszAttempting to contact ldap://ú (Ú)rH   ú	ldap://%súCould not contact ldap://N)Úforced_local_dsazfound extra DSAs:z   %sz(missing DSAs (known locally, not by %s):Úothersr?   úCN=NTDS Settings,ÚcurrentÚneededÚtoÚfromr'   zRepsFrom objects for %szRepsTo objects for %s)r—   ÚcolourÚshorten_namesÚgenerate_keyÚgrouping_functionÚ
ÚdottedÚsolidrS   Úemptyzstyle="z"; arrowhead=ÚrepsFzcolor="z"; Ú )ÚdirectedÚedge_colorsÚedge_stylesrÀ   Ú	key_itemsr0   )Fz style="dotted"; arrowhead="open"zrepsFromTo is needed)Fzstyle="solid"; arrowhead="open"zrepsFromTo currently exists)+r=   r>   r   Úunix_nowr   rA   r   r   r�   r   r›   rN   ÚsysÚstderrÚ
load_samdbr   ÚrunÚsetÚ	list_dsasÚget_dsaÚtranslate_ntdsconnÚdsa_guidÚget_rep_tablesÚitemsÚappendr   rf   Úrep_repsFromÚsource_dsa_obj_guidÚ
rep_repsTora   ru   r¬   r   r‘   rV   Ú
setdefaultr£   ÚaddÚtitleÚsortedr   rj   )?r?   r   r`   rÀ   r.   Útalk_to_remoter4   r6   r5   ÚmodeÚ	partitionrs   r—   r&   r0   r<   r@   Ú	local_kccÚdsasrÍ   Únc_repsÚguid_to_dnstrÚdsa_dnÚkccÚresÚdns_nameÚeÚdsas_from_hereÚdsaÚ	remote_dnÚ
remote_dsar¢   ÚnÚpartÚrepÚ	all_edgesÚshort_partitionsÚlong_partitionsÚpartnameÚstateÚ	edgelistsÚ
short_nameÚrÚheader_stringsÚ	directionrØ   Ú
part_edgesÚsrcr#   ÚedgesrW   Úedge_coloursrË   Ú	dot_edgesÚdot_verticesÚused_coloursÚkey_setÚedgelistr¿   Ú	linestyleÚarrowÚstylerÌ   s?   &&&&&&&&&&&&&&&                                                rB   rÑ   Úcmd_reps.runÒ   s¨  € ð ×#Ñ#Ó%ˆØ×(Ñ(¨¸dÐ(ÓCˆÜ*¨1°%Ó8‰ˆ	�4Ø×%Ñ%ˆä! )§/¡/°9Ó=ˆ	ô
 Ñ7Ó8ˆàˆô
 ˆFÜ�h¨Ô.ˆCßØ—o‘o×,Ñ,¨VÜ3=Ø4A°?ð -ó D�ô ˜s 1�v mÕ4°QÕ7Ó8�ÝÛ£ð)äŸ:™:õ'ðØ—N‘N ;°Õ#9¸2¸uÔEð —‘˜˜uÕ%à—‘˜q eÔ,Ø—‘˜˜u°v�Ô>ä  §¡£Ó1ˆNØ�~Ô%ÜÐ)´·
±
Õ;Ø*¨T×1Ð1�CÜ˜' C�-¬c¯j©j×9ñ 2äÐ@À6ÕIÜŸ:™:õ'à  >×1Ð1�CÜ˜' C�-¬c¯j©j×9ñ 2ô ,�	Ø˜8Ô#¨	°VÔ(;ÙØ˜V”^¨	°VÔ(;Ùà Ÿ[™[Ð)<¸yÕ)HÓI�
Ø×&Ñ& zÔ2Ø:C�œc *×"5Ñ"5Ó6Ñ7ð "×0Ñ0Ó2‘��1Ø!"§¡¦‘I�D˜#Ø Ò(¨D°IÖ,=Ø � iÕ0×7Ñ7¸À¸ÖFñ "+ð "#§¡¦‘I�D˜#Ø Ò(¨D°IÖ,=Ø � hÕ/×6Ñ6¸À°}ÖEô "+ô ,ñA ðf   b¨&°"Ð5Ø  r¨6°2Ð 6ð8ˆ	ô -?¸y¿¹Ó,OÑ)Ð˜/à%Ÿm™mžo‰NˆH�dØ$-§O¡OÖ$5Ñ ��yØ#'¨§; ;‘K�F˜CØ!0×!4Ñ!4°X¸xÓ!H�JØ ×-Ô-˜Ø! &Õ)×0Ñ0Ø#Ø*¬3¨q×/DÑ/DÓ+EÕFØ'ð)ö*ñ .ð
 !Ÿ^œ^˜Ø! $�×.Ñ.Ø*¬3¨q×/DÑ/DÓ+EÕFØ#Ø'ð)ö*ó ,ó $/ó %6ñ .ð$ ×"Ñ" 6Ó2°jÔ@Ø×:Ñ:¸<Ø;AóCˆLð Ð1ØÐ-ðˆNð %.§O¡OÖ$5Ñ ��yØ(1¯©Ö(9Ñ$�I˜uÜ!,¬TÓ!2�JÛ+0™˜˜T 4Ø" 4Õ(×/Ñ/°°d°Ö<ñ ,1à'1×'7Ñ'7Ö'9™˜˜eÜ+¨D°%Ø15Ø3?Ø:GØ9<Ü>LôN™ð +9¸Õ*CÀd×*JÐ*JÊAÐN˜ØŸ
™
 1 fÖ-ó (:ó	 ):ñ %6ñ àˆØˆØˆ	Ü“uˆØˆÜ“%ˆØ(Ÿ™Ö0‰OˆE�8Ø$,§N¡NÖ$4Ñ �	˜5Û',‘O�C˜˜tØ)×4Ñ4°dÜ5@À$ØBKðBMó 6NóO�Fð -2°XÔ,=¡À7�IØ&/°4Ô&7™F¸W�EØ ×$Ñ$ SÔ)Ø ×$Ñ$ TÔ*Ø×$Ñ$ c¨4 [Ô1Ø ×'Ñ'¨Õ/Û:CÂUÐK�EØ×&Ñ& uÔ-Ø—K‘K  v°	·±Ó0AÕ'AØ!'¨ð!0ö 1ó (-ó %5ñ  1ð" ˆ	ßÜ6<¸W¶oÑ2��i ¨Ø× Ñ ¡%Û6<ºiÐ"HÛ-1²9Ð"=ð"?ö @ñ 7Fð ×Ñð 6ô 7ð ×Ñð =ô >ô �l IØ#Ø".Ø"-Ø$1Ø )ô+ˆð �VÔØ�N‰N˜1˜fÖ%à�J‰J�q˜&Ö!øôI  ô ÝÃË!ÐLÜ"Ÿz™zõ+æûðús   Ã&[Û\Û$\	Ü	\rw   )NNFTFNNNr?   NNNNF)rx   ry   rz   r{   r|   rƒ   r„   r	   r…   rÑ   r‡   rˆ   r‰   s   @rB   r¥   r¥   Ê   s:   ø‡ € Ù$à" [Õ0Ùˆt�]Ð)EØô	ð4õ €M÷
h"ò h"rE   r¥   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚNTDSConni}  zTCollects observation counts for NTDS connections, so we know
whether all DSAs agree.c                óH   € ^ V n         RV n        RV n        Wn        W n        R# )r   FN)ÚobservationsÚsrc_attestsÚdest_attestsrÿ   r#   )r?   rÿ   r#   s   &&&rB   Ú__init__ÚNTDSConn.__init__€  s$   € ØˆÔØ ˆÔØ!ˆÔØŒØŽ	rE   c                ó˜   € V ;P                   ^,          un         WP                  8X  d   RV n        WP                  8X  d
   RV n        R# R# )é   TN)r  rÿ   r  r#   r  )r?   Úattesters   &&rB   ÚattestÚNTDSConn.attest‡  s<   € Ø×Ò˜QÕÕØ—x‘xÔØ#ˆDÔØ—y‘yÔ Ø $ˆDÖñ !rE   )r#   r  r  rÿ   r  N)	rx   ry   rz   r{   r|   r  r  r‡   rˆ   r‰   s   @rB   r  r  }  s   ø‡ € ñò÷%ð %rE   r  c                   óh   a € ] tR tRt o Rt]],           ]! RRRR7      .,           tR t	R
R lt
R	tV tR# )Úcmd_ntdsconni�  zDraw the NTDSConnection graphz--importldifz#graph from samba_kcc generated ldifNr©   c                ó®   € \         P                  ! R R7      p\        P                  P	                  VR4      pW@n        \        P                  ! WBV4      pV# )rJ   )rK   zimported.ldb)rQ   ÚmkdtemprT   ÚpathÚjoinÚ_tmp_fn_to_deleter   Úldif_to_samdb)r?   Úldifr<   ÚdrX   rA   s   &&&   rB   Úimport_ldif_dbÚcmd_ntdsconn.import_ldif_db–  sD   € Ü×ÒÐ$:Ô;ˆÜ�W‰W�\‰\˜!˜^Ó,ˆØ!#ÔÜ"×0Ò0°¸Ó>ˆØˆ	rE   c                ó„  € VP                  4       pVf   VP                  VRR7      pMR pV P                  WÎ4      p\        WV4      w  ppVP                  P                  R^4      ^,          p\        4       p. pV EFo  pV'       dw   VP                  P                  V\        R.R7      pV^ ,          R,          ^ ,          p V P                  RV,          VV4      pTP                  4       pTP!                  4       pMV P                  WV4      pRV,           pTpVP                  V\        R.R7      pV^ ,          R,          ^ ,          R8H  pTP#                  TV'       d   RMR34       VP                  V\$        RR.R.R7      pV F^  p\'        VP(                  4      pVVP+                  R4      ^,           R  pVP-                  \'        VR,          ^ ,          4      VV34       K`  	  EKr  	  V'       dZ   WP.                  8X  dJ   \0        P2                  ! V4       \0        P4                  ! \0        P6                  P9                  V4      4       / p V F;  w  p!p"p#V!V"3p$V$V 9   d   V V$,          pM\;        V$!  pVV V$&   VP=                  V#4       K=  	  \?        \A        V4      !  w  pp%V PC                  W²4      R8X  Ed1   V PE                  V	V4      p	\F        V	,          p&V&PI                  RR4      p'V&PI                  RR4      p(. p)RV%9   d   V)P-                  R4       V'       g   V PK                  4       p*RV,          p+EMR. p*. p,. p-. p.V PM                  4        F†  w  pp/V/PN                  '       d9   V*P-                  V4       V/PP                  '       g   V,P-                  V4       KN  KP  V/PP                  '       d   V-P-                  V4       Ku  V.P-                  V4       Kˆ  	  Rp+V.'       d3   V)P-                  R4       V. F  pV)P-                  RV,          4       K  	  V-'       d3   V)P-                  R4       V- F  pV)P-                  RV,          4       K  	  V,'       d3   V)P-                  R4       V, F  pV)P-                  RV,          4       K  	  \S        VV*V
V	VV\T        V%R7      p0RPW                  V)4      p)V)'       d   RV': R V(: RV): 2p)V PY                  RV+: R!V0: RV): 2V4       R # . p1. p2. p3. p4\[        V4      p5\A        V PM                  4       4       EF  w  p$pV1P-                  V$4       VP\                  V58X  g	   V'       g%   V2P-                  R"4       V3P-                  R4       KU  VPN                  '       dJ   V3P-                  R4       VPP                  '       d   V2P-                  R#4       K�  V2P-                  R$4       K°  VPP                  '       d%   V2P-                  R%4       V3P-                  R&4       Kæ  V2P-                  R%4       V3P-                  R'4       EK  	  . p6V'       dr   V6P-                  R.4       R/ F*  w  p7p8V7V29   g   K  V6P-                  R(R)V7,          V834       K,  	  R0 F*  w  p9p8V9V39   g   K  V6P-                  R(R*V9,          V834       K,  	  V'       d   R+p+M	RV,          p+\_        \A        V4      V1RV+V2V4V3VV6R,7	      p0VR-8X  d   V Pa                  V0V4       R # V PY                  V0V4       R #   \         d1   p\        RT: RT: R	2\        P                  R
7        R p?EK¾  R p?ii ; i)1NTr8   Ú,r°   r±   r¶   r·   r´   rµ   rH   rº   zmsDS-isRODCÚTRUEÚRODCrp   z(objectClass=nTDSConnection)Ú
fromServerzsearch_options:0:2)r²   Ú
expressionr³   Úcontrolsr'   ÚheaderÚresetz/No outbound connections are expected from RODCszNTDS Connections known to %sz-NTDS Connections known to each destination DCzTThe following connections are alleged by DCs other than the source and destination:
z  %s -> %s
zbThe following connections are alleged by DCs other than the destination but including the source:
zRThe following connections (included in the chart) are not known to the source DC:
)r—   r¿   rÀ   rÁ   rÂ   Úrow_commentsrÃ   ÚNOTESú

z#000000ú#0000ffú#cc00ffz#ff0000ústyle=dashedústyle=dottedFz
color="%s"zcolor="#ff0000; %s"zNTDS Connections)rÉ   rß   rÊ   Úedge_labelsrË   rÀ   rÌ   r0   )Fzcolor="#000000"zNTDS Connection))r0  zmissing from some DCs)r1  zmissing from source DC))r2  zunknown to destination)r3  z!unknown to source and destination)1r=   r>   r"  r   Úmy_dsa_dnstrÚsplitrÒ   rA   r�   r   rC   r   rN   rÎ   rÏ   Úget_dsServiceNameÚ	domain_dnrÞ   r   r›   r�   ÚindexrÙ   r  rT   ri   Úrmdirr  Údirnamer  r  Úziprà   ra   ru   r   rf   ÚkeysrØ   r  r  r   r”   r  rV   Úlenr  r   rj   ):r?   r   r`   rÀ   r.   rá   r4   r6   r5   rs   r—   r&   Ú
importldifr0   r<   r@   rä   rå   Úlocal_dsa_dnÚverticesÚattested_edgesrè   rê   rë   rA   rì   Úntds_dnr�   Úis_rodcÚmsgÚmsgdnÚdest_dnr   rÿ   r#   r  ÚkÚrodc_statusÚcoloursÚc_headerÚc_resetÚepilogÚgraph_edgesrß   Úsource_deniesÚdest_deniesÚ	both_denyÚconnrW   r  r  rË   r4  Ú	n_serversrÌ   r¿   Údescr	  s:   &&&&&&&&&&&&&&                                            rB   rÑ   Úcmd_ntdsconn.run�  s¥  € ð ×#Ñ#Ó%ˆØÒØ×,Ñ,¨RÀ$Ð,ÓG‰EàˆEØ×#Ñ# JÓ3ˆAä*¨1°%Ó8‰ˆ	�4Ø ×-Ñ-×3Ñ3°C¸Ó;¸AÕ>ˆÜ“5ˆØˆÜˆFßØ—o‘o×,Ñ,¨VÜ3=Ø4A°?ð -ó D�ð ˜q�6 -Õ0°Õ3�ðØ ŸK™K¨°hÕ(>À	Ø(0ó2�Eð  ×1Ñ1Ó3�Ø—_‘_Ó&‘àŸ™ A°(Ó;�Ø-°Õ6�Ø�à—,‘,˜wÜ%/Ø&3 _ð ó 6ˆCð ˜!•f˜]Õ+¨AÕ.°&Ñ8ˆGà�L‰L˜'¯W¡6¸"Ð=Ô>à—,‘,˜rÜ%2Ø*HØ&2 ^ð *>Ð(>ð ó !ˆCó �Ü˜CŸF™F›�Ø §¡¨CÓ 0°1Õ 4Ð 5Ð6�Ø×%Ñ%¤s¨3¨|Õ+<¸QÕ+?Ó'@Ø'.°ð'9ö :ô ñM ÷X ˜!×5Ñ5Ô5Ü�IŠI�aŒLÜ�HŠH”R—W‘W—_‘_ QÓ'Ô(ð ˆÛ#1ÑˆC��xØ�d�ˆAØ�EŒzØ˜!•H‘ä˜a‘L�Ø��a‘Ø�H‰H�XÖñ $2ô !$¤V¨HÓ%5Ñ 6Ñˆ�+à×"Ñ" 6Ó2°jÕ@Ø×:Ñ:¸<Ø;AóCˆLä! ,Õ/ˆGØ—{‘{ 8¨RÓ0ˆHØ—k‘k '¨2Ó.ˆGàˆFØ˜Ô$Ø—‘ÐOÔPç!ð $Ÿj™j›l�Ø6¸ÕE’ð !�Ø "�Ø �Ø�	Ø$Ÿ{™{ž}‘G�A�tØ×(×(Ð(Ø#×*Ñ*¨1Ô-Ø#×/×/Ð/Ø)×0Ñ0°Ö3ñ  0à×)×)Ð)Ø#×*Ñ*¨1Ö-à!×(Ñ(¨Ö+ñ  -ð H�çØ—M‘Mð #3ô 4ó '˜ØŸ™ n°qÕ&8Ö9ñ 'çØ—M‘Mð #<ô =ó )˜ØŸ™ n°qÕ&8Ö9ñ )ç Ø—M‘Mð #Fô Gó +˜ØŸ™ n°qÕ&8Ö9ñ +ô   ¨+Ø%)Ø'3Ø.;Ø-0Ü2DØ-8ô:ˆAð —W‘W˜V“_ˆFßˆvÛ.6Û.5Ú.4ð6�ð �JŠJ«5Û+,Ú+1ð3à4:ô<ñ àˆ	ØˆØˆØˆÜ˜“Iˆ	Ü˜5Ÿ;™;›=×)‰DˆAˆqØ×Ñ˜QÔØ�~‰~ Ô*·.Ø×#Ñ# IÔ.Ø×"Ñ" 2Ö&Ø——�Ø×"Ñ" 2Ô&Ø—=—=�=Ø ×'Ñ'¨	Ö2à ×'Ñ'¨	Ö2Ø——�Ø×#Ñ# IÔ.Ø×"Ñ" >Ö2à×#Ñ# IÔ.Ø×"Ñ" >×2ñ! *ð$ ˆ	ßØ×Ñð 1ô 2ó!H‘�˜à˜\Ö)Ø×$Ñ$ e¨\¸FÕ-BÀDÐ%IÖJñ!Hó
 G‘��tð ˜KÖ'Ø×$Ñ$ eØ&;¸eÕ&CØ&*ð&,ö -ñ	 G÷ Ø&‰Eà2°\ÕAˆEä”f˜XÓ&¨	Ø#Ø!Ø".Ø"-Ø"-Ø$1Ø )ô+ˆð �VÔØ�N‰N˜1˜fÖ%à�J‰J�q˜&Ö!øôE  ô ÝÃË!ÐLÜ"Ÿz™zõ+æûðús   Ã\Ü\?Ü$\:Ü:\?)r  )NNFTFNNNNNNNF)rx   ry   rz   r{   r|   rƒ   r„   r	   r…   r"  rÑ   r‡   rˆ   r‰   s   @rB   r  r  �  s=   ø‡ € Ù#Ø" [Õ0Ùˆ~Ð$IØô	ð4õ €Mò
÷]"ò ]"rE   r  c            	       ól   a € ] tR tRt o Rt]]! RRRRR7      ]! R^]R	R
7      .,           tRR lt	Rt
V tR# )Úcmd_uptodatenessi}  zvisualize uptodateness vectorsr¦   r§   r¨   Nr©   z--max-digitsz,display this many digits of out-of-date-ness)r%   r!   r    c                ó¬  € V'       g   \        R V P                  R7       R# VP                  4       pVP                  VRR7      p\	        VVV4      w  ppVP
                  V n        \        V P
                  V4      p\        V P
                  4      w  ppV P                  V	V4      p	VP                  4        Fš  w  ppVVR39  d   K  \        VVVVV4      p\        VV4      p\        V4      p\        V\        \        V4      4      4      pV^8  d   ^p^
V,          p\!        VV
V	VV\"        VVRRR7
      pV P%                  RV: R	V: 2V4       Kœ  	  R# )
z>this won't work without talking to the remote servers (use -r)rH   NTr8   ÚDCzout-of-date-ness)	r—   r¿   rÀ   rÁ   rÂ   Úcolour_scaleÚdigitsÚylabelÚxlabelrÃ   r/  )rN   rO   r=   r>   r   rA   r   r   ru   rØ   r   r   r   Úminr>  r›   r   r‘   rV   )r?   r   r`   rÀ   r.   rá   r4   r6   r5   rs   r—   r&   r?  r0   rã   Ú
max_digitsr<   r@   rä   rå   rõ   rö   Ú	part_nameÚpart_dnÚ
utdv_edgesÚ	distancesÚmax_distancer[  Úc_scalerW   s   &&&&&&&&&&&&&&&&              rB   rÑ   Úcmd_uptodateness.run‡  sQ  € ÷ Üð Ø#'§9¡9õ.áð ×#Ñ#Ó%ˆØ×(Ñ(¨¸dÐ(ÓCˆÜ*¨1¨b°%Ó8‰ˆ	�4Ø—_‘_ˆŒ
Ü! $§*¡*¨iÓ8ˆ	ä,>¸t¿z¹zÓ,JÑ)Ð˜/Ø×6Ñ6°|Ø7=ó?ˆð #3×"8Ñ"8Ö":ÑˆI�wØ ¨$ Ô/Ùä'¨	°4¸À"ÀeÓLˆJä*¨:°tÓ<ˆIä0°Ó;ˆLä˜¤S¬¨\Ó):Ó%;Ó<ˆFØ˜ŒzØ�Ø˜F•lˆGä˜IØ!%Ø#/Ø*7Ø),Ü.<Ø)0Ø#)Ø#'Ø#5ô	7ˆAð �JŠJ£y²!Ð4°fÖ=ó5 #;rE   )rA   )NNFTFNNNNFNNFNé   )rx   ry   rz   r{   r|   rƒ   r	   rž   r…   rÑ   r‡   rˆ   r‰   s   @rB   rW  rW  }  sE   ø‡ € Ù(à"Ùˆt�]Ð)EØô	áˆ~ q¨sØBô	Dð&õ €M÷1>ò 1>rE   rW  c                   ó°   € ] tR tRtRt/ t]! 4       P                  4        F0  w  tt	]P                  R4      '       g   K  ]	! 4       ]]R,          &   K2  	  RtR# )Úcmd_visualizei»  z:Produces graphical representations of Samba network state.Úcmd_:é   NNrw   N)rx   ry   rz   r{   r|   ÚsubcommandsÚglobalsrØ   rH  ÚvÚ
startswithr‡   rw   rE   rB   ri  ri  »  s@   † ÙDØ€Ká“	—‘Ö!‰ˆˆ1Ø�<‰<˜×ÔÙ!"£ˆK˜˜"�Óõ "rE   ri  )>rT   rÎ   Úcollectionsr   rg   rQ   Úsamba.getoptÚgetoptr~   Úsambar   r   Úsamba.netcmdr   r   r   r	   Úsamba.samdbr
   Úsamba.graphr   r   r   r   Úsamba.colourr   Úldbr   r   r   ÚtimerŒ   Ú	samba.kccr   r   Úsamba.kcc.kcc_utilsr   Úsamba.uptodatenessr   r   r   r   r   r   r   r   r›   r¬   r=  rƒ   r„   rP   r3   r‘   r”   r£   r¥   Úobjectr  r  rW  ri  rw   rE   rB   Ú<module>r~     s«  ðó( 
Û 
Ý #Û Û Ý Ý Ý ß DÓ DÝ Ý !ß 4Ý #Ý )ç 3Ñ 3Û Û 	ß -Ý (÷	÷ 	ó 	ñ ˆ4�ÐFØ˜U¨ô.á
ˆ4�Ð"?Ø˜V¨Tô3á
ˆ<ÐFØ 
°=ôBá
ˆ8Ð8Øô á
Ðð $;á˜×(Ò(Ó*Ó+ô-ñ ˆ4Ð"Ø2Ø¨ô/ñ ˆ4Ð#Ð*FØ¨ô/á
ˆ:Ð6Ø¨°Eô;ð#€ñ, ˆ7Ð.°XØ˜}ô.á
ˆ8Ð9ÀØ ô/ð€ð €	ôZ�7ô Zòzò òôp"ˆ|ô p"ôf%ˆvô %ô$k"�<ô k"ô\;>�|ô ;>ô|%�Lö %rE   