package Ġme . g ul ya . bit ward en . presentation čĊč Ċ class ĠCard View ( čĊĠĠĠ Ġval Ġcard holder Name : ĠString ?, čĊĠĠĠ Ġval Ġbrand : ĠString ?, čĊĠĠĠ Ġval Ġnumber : ĠString ?, čĊĠĠĠ Ġval Ġexp Month : ĠString ?, čĊĠĠĠ Ġval Ġexp Year : ĠString ?, čĊĠĠĠ Ġval Ġcode : ĠString ?, č Ċ ) Ġ{ čĊčĊĠĠĠ Ġval Ġmasked Code : ĠString ? čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcode ?. let Ġ{ Ġ( 0 .. ( it . length )). join ToString Ġ{ Ġ" âĢ¢ " Ġ} Ġ} čĊčĊĠĠĠ Ġval Ġsub Title : ĠString ? Ġby Ġlazy Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġnumber Ġ= Ġnumber Ġ?: Ġ"" čĊĠĠĠĠĠĠĠ Ġval Ġis A mex Ġ= Ġnumber . length Ġ>= Ġ 5 Ġ&& Ġnumber . matches ("^ 3 [ 4 7 ] ". to Regex ()) čĊĠĠĠĠĠĠĠ Ġval Ġdigit Amount Ġ= Ġif Ġ( is A mex ) Ġ 5 Ġelse Ġ 4 čĊĠĠĠĠĠĠĠ Ġval Ġprepared Number Ġ= Ġnumber . take Last ( digit Amount ) čĊĠĠĠĠĠĠĠ Ġval Ġtitle And Number Ġ= čĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf NotNull ( brand , Ġprepared Number ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isNotBlank () Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString (", Ġ* ") čĊčĊĠĠĠĠĠĠĠ Ġtitle And Number čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġval Ġexpiration : ĠString ? čĊĠĠĠĠĠĠĠ Ġget () Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexp Month Ġ= Ġexp Month čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexp Year Ġ= Ġexp Year čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( exp Month Ġ!= Ġnull Ġ|| Ġexp Year Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexp Mo Ġ= Ġexp Month ?. pad Start ( 2 , Ġ' 0 ') Ġ?: Ġ"__ " čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexp Yr Ġ= Ġexp Year ?. let Ġ{ Ġformat Year ( exp Year ) Ġ} Ġ?: Ġ" ____ " čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ exp Mo Ġ/ Ġ$ exp Yr " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun Ġformat Year ( year : ĠString ): ĠString Ġ= čĊĠĠĠĠĠĠĠ Ġif Ġ( year . length Ġ== Ġ 2 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 $ year " čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġyear čĊĠĠĠĠĠĠĠ Ġ} č Ċ }