class ĠM orse Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġroot : ĠNode ? ĊĊĠĠĠ Ġprivate Ġvar Ġchar Map Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' a ' Ġto Ġ". -", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' b ' Ġto Ġ"- ...", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' c ' Ġto Ġ"- .- .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' d ' Ġto Ġ"- .. ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' e ' Ġto Ġ".", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' f ' Ġto Ġ".. - .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' g ' Ġto Ġ"-- .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' h ' Ġto Ġ" .... ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' i ' Ġto Ġ".. ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' j ' Ġto Ġ". --- ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' k ' Ġto Ġ"- .- ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' l ' Ġto Ġ". - .. ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' m ' Ġto Ġ"-- ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' n ' Ġto Ġ"- .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' o ' Ġto Ġ" --- ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' p ' Ġto Ġ". -- .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' q ' Ġto Ġ"-- .- ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' r ' Ġto Ġ". - .", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' s ' Ġto Ġ"... ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' t ' Ġto Ġ"-", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' u ' Ġto Ġ".. -", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' v ' Ġto Ġ"... -", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' w ' Ġto Ġ". -- ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' x ' Ġto Ġ"- .. -", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' y ' Ġto Ġ"- . -- ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' z ' Ġto Ġ"-- .." ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġroot Ġ= ĠNode (' Ġ') ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġchar Map . entries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( i . key , Ġi . value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd ( ch : ĠChar , Ġsignal : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠcurrentNode : ĠNode ? Ġ= Ġroot ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġsignal . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( signal [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'.' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( currentNode ?. dot Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentNode ?. dot Ġ= ĠNode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentNode Ġ= ĠcurrentNode ?. dot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'-' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( currentNode ?. dash Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentNode ?. dash Ġ= ĠNode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentNode Ġ= ĠcurrentNode ?. dash ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠcurrentNode ?. key Ġ= Ġch ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdecode ( signal : ĠString ): ĠList < Char ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent : ĠMutable List < Node ?> Ġ= Ġmutable ListOf ( root ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġsignal . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( signal [ i ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'.' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ= Ġcurrent . map Ġ{ Ġit ?. dot Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ'-' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ= Ġcurrent . map Ġ{ Ġit ?. dash Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ' ?' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew List Ġ= Ġcurrent . map Ġ{ Ġit ?. dot Ġ}. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew List . addAll ( current . map Ġ{ Ġit ?. dash Ġ}. to Mutable List ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ= Ġnew List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent . map NotNull Ġ{ Ġit ?. key Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠNode ( ĊĠĠĠĠĠĠĠ Ġvar Ġkey : ĠChar ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġdot : ĠNode ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġvar Ġdash : ĠNode ? Ġ= Ġnull )