package Ġorg . me ch d ancer . data flow . util Ċ Ċ import Ġorg . me ch d ancer . data flow . core . int ef aces . I Block Ċ import Ġorg . me ch d ancer . data flow . core . int ef aces . IS ource Ċ import Ġorg . me ch d ancer . data flow . core . int ef aces . IT arget Ċ import Ġorg . me ch d ancer . data flow . core . internal . view Ċ Ċ /** Ċ Ġ* Ġ æĮī æłĳ çĬ¶ åĽ¾ æĺ¾ç¤º ä»İ æºĲ åĩº åıĳ çļĦ æĭ ĵ æī ĳ Ċ Ġ*/ Ċ fun ĠI Block . tree View (): ĠString Ġ{ ĊĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠ Ġtree View ( builder , Ġmutable ListOf (), Ġ 1 ) ĊĠĠĠ Ġreturn Ġbuilder . toString () Ċ } Ċ Ċ /** Ċ Ġ* Ġ éĢĴ å½Ĵ æŀĦéĢł æłĳ Ċ Ġ* Ċ Ġ* Ġ@ param Ġbuilder Ġ åŃĹç¬¦ä¸² æŀĦéĢł åĻ¨ Ċ Ġ* Ġ@ param Ġalready Ġ å·²ç»ı åľ¨ æłĳ ä¸ŃçļĦ èĬĤçĤ¹ ï¼Ī è¯ĨåĪ« çİ¯ ï¼ī Ċ Ġ* Ġ@ param Ġindent Ġ ç¼© è¿Ľ éķ¿åº¦ åĴĮ æł¼å¼ı Ċ Ġ*/ Ċ private Ġfun ĠI Block . tree View ( ĊĠĠĠ Ġbuilder : ĠStringBuilder , ĊĠĠĠ Ġalready : ĠMutable List < I Block >, ĊĠĠĠ Ġindent : ĠLong Ċ ) Ġ{ ĊĠĠĠ Ġ// æĺ¾ç¤º èĩªå·± ĊĠĠĠ Ġbuilder . append ( view ()) ĊĠĠĠ Ġ// åĪ¤æĸŃ çİ¯ è·¯ ĊĠĠĠ Ġif Ġ( this Ġin Ġalready ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . append ("[ Loop !!! ]\ n ") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġalready . add ( this ) ĊĠĠĠ Ġbuilder . append ("\ n ") ĊĠĠĠ Ġ// åĪ¤æĸŃ åŃĲ æłĳ ĊĠĠĠ Ġval Ġbranch Ġ= Ġ( this Ġas ? ĠI Source <* >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . targets ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take Unless ( Set <* >:: isEmpty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĠĠĠ Ġ// çĶ» åĽ¾ åĩ½æķ° ĊĠĠĠ Ġval Ġformat Ġ= Ġ{ Ġblock : ĠI Target <* >, Ġlast : ĠBoolean Ġ-> ĊĠĠĠĠĠĠĠ Ġ// çĶ» ç¼© è¿Ľ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Boolean >() ĊĠĠĠĠĠĠĠ Ġvar Ġcopy Ġ= Ġindent ĊĠĠĠĠĠĠĠ Ġwhile Ġ( copy Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( copy Ġ% Ġ 2 Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcopy Ġ/= Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlist . reverse () ĊĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ Ġbuilder . append ( if Ġ( it ) Ġ" ĠâĶĤ Ġ" Ġelse Ġ" ĠĠ Ġ") Ġ} ĊĠĠĠĠĠĠĠ Ġ// çĶ» åŃĲ æłĳ ĊĠĠĠĠĠĠĠ Ġif Ġ(! last ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (" ĠâĶľ âĶĢ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock . tree View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalready , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ* Ġindent Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (" ĠâĶĶ âĶĢ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock . tree View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalready , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ* Ġindent Ġ+ Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// çĶ» åĽ¾ ĊĠĠĠ Ġbranch . drop Last ( 1 ). forEach Ġ{ Ġformat ( it , Ġfalse ) Ġ} ĊĠĠĠ Ġformat ( branch . last (), Ġtrue ) Ċ } Ċ