package Ġio . github . caf eter i ag u ild . coffee comp ut ers . core Ċ Ċ import Ġcom . github . ad ri ant od t . t art ar . api . lexer . Source Ċ import Ġio . github . caf eter i ag u ild . coffee comp ut ers . core . bridge . Computer Screen LO bj Ċ import Ġio . github . caf eter i ag u ild . coffee comp ut ers . core . bridge . EventQueue LO bj Ċ import Ġio . github . caf eter i ag u ild . coffee comp ut ers . core . screen . Computer Screen Ċ import Ġio . github . caf eter i ag u ild . lin . lexer . lin Std Lexer Ċ import Ġio . github . caf eter i ag u ild . lin . parser . lin Std Parser Ċ import Ġio . github . caf eter i ag u ild . lin . rt . Lin Interpreter Ċ import Ġio . github . caf eter i ag u ild . lin . rt . exceptions . Lin IllegalArgumentException Ċ import Ġio . github . caf eter i ag u ild . lin . rt . lib . LO bj Ċ import Ġio . github . caf eter i ag u ild . lin . rt . lib . lang . L Boolean Ċ import Ġio . github . caf eter i ag u ild . lin . rt . lib . lang . L Char Ċ import Ġio . github . caf eter i ag u ild . lin . rt . lib . lang . L String Ċ import Ġio . github . caf eter i ag u ild . lin . rt . lib . lang . number . L Int Ċ import Ġio . github . caf eter i ag u ild . lin . rt . lib . lang . number . LL ong Ċ import Ġio . github . caf eter i ag u ild . lin . rt . lib . lang . number . L Number Ċ import Ġio . github . caf eter i ag u ild . lin . rt . lib . n ativ el ang . Lin Native Obj Ċ import Ġio . github . caf eter i ag u ild . lin . rt . scope . User Scope Ċ import Ġio . github . caf eter i ag u ild . lin . rt . utils . return ing Unit Ċ import Ġpw . aru . libs . event pipes . Event Pip es Ċ import Ġjava . io . Reader Ċ import Ġjava . util . concurrent .* Ċ import Ġjava . util . concurrent . atomic . Atomic Long Ċ import Ġkotlin . concurrent . thread Ċ import Ġkotlin . math . round To Long Ċ Ċ class ĠComputer ( val Ġscreen : ĠComputer Screen , Ġval Ġoutput Events : ĠComputer Events Ġ= ĠComputer Events . Ignore ) Ġ: ĠLin Native Obj () Ġ{ ĊĠĠĠ Ġval Ġscope Ġ= ĠUser Scope () ĊĠĠĠ Ġval Ġinternal Events Ġ= ĠEvent Pip es . new Pipe < Pair < String , ĠL Obj >>() ĊĊĠĠĠ Ġfun Ġsend Char Event ( char : ĠChar ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Events . publish (" char " Ġto ĠL Char ( char )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend KeyEvent ( i : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Events . publish (" key " Ġto ĠL Int ( i )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend KeyUp Event ( i : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Events . publish (" key _ up " Ġto ĠL Int ( i )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġexecutor : ĠScheduled ExecutorService Ġ= ĠExec utors . new Scheduled ThreadPool ( 0 ) ĊĠĠĠ Ġval Ġtimers Ġ= ĠConcurrent HashMap < LO bj , ĠFuture <* >>() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdeclare Function (" event Queue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠLin IllegalArgumentException ("' event Queue ' Ġtakes Ġno Ġarguments .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Queue LO bj ( this , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdeclare Function (" event Queue Raw ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠLin IllegalArgumentException ("' event Queue Raw ' Ġtakes Ġno Ġarguments .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Queue LO bj ( this , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtimer Count Ġ= ĠAtomic Long () ĊĠĠĠĠĠĠĠ Ġdeclare Function (" start Timer ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . size Ġ== Ġ 1 ) Ġthrow ĠLin IllegalArgumentException ("' start Timer ' Ġtakes Ġ 1 Ġargument .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimeout Ġ= Ġit . single () Ġas ? ĠL Number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠLin IllegalArgumentException ("' start Timer ' Ġtakes Ġa ĠNumber Ġas Ġargument .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmillis Ġ= Ġ( timeout . value . toDouble () Ġ* Ġ 1 0 0 0 ). round To Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= ĠL Long ( timer Count . get And Increment ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimers [ count ] Ġ= Ġexecutor . schedule ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Events . publish (" timer " Ġto Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimers . remove ( count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġmillis , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdeclare Function (" cancel Timer ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . size Ġ== Ġ 1 ) Ġthrow ĠLin IllegalArgumentException ("' cancel Timer ' Ġtakes Ġ 1 Ġargument .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġit . single () Ġas ? ĠL Number ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠLin IllegalArgumentException ("' cancel Timer ' Ġtakes Ġa ĠNumber Ġas Ġargument .") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL Boolean . of ( timers . remove ( id )?. cancel ( true ) Ġ== Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdeclare Function (" free ByName ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturning Unit Ġ{ Ġscope . properties . remove (( it . single () Ġas ĠL String ). value ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlazy Immutable Property (" screen ") Ġ{ ĠComputer Screen LO bj ( this ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġdeclare ToString Ġ{ Ġ" hw " Ġ} ĊĠĠĠĠĠĠĠ Ġscope [" hw "] Ġ= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart ( reader : ĠReader ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpr Ġ= Ġlin Std Parser . parse ( Source ( reader , Ġ" bios . lin ", Ġ""), Ġlin Std Lexer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLin Interpreter (). execute ( expr , Ġscope ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Events . on Finished ( this , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Events . on Finished ( this , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ