package Ġar . com . fl or ius Ċ Ċ import Ġar . com . fl or ius . kon ci erge . Kon ci erge Ċ import Ġcom . fasterxml . jackson . databind . Serialization Feature Ċ import Ġcom . github . must ache java . Default Must ache Factory Ċ import Ġio . ktor . application .* Ċ import Ġio . ktor . features .* Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . http . content .* Ċ import Ġio . ktor . jackson .* Ċ import Ġio . ktor . must ache .* Ċ import Ġio . ktor . request .* Ċ import Ġio . ktor . response .* Ċ import Ġio . ktor . routing .* Ċ Ċ fun Ġmain ( args : ĠArray < String >): ĠUnit Ġ= Ġio . ktor . server . netty . Engine Main . main ( args ) Ċ Ċ @ Suppress (" unused ") Ċ fun ĠApplication . module () Ġ{ ĊĠĠĠ Ġinstall ( Must ache ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmust ache Factory Ġ= ĠDefault Must ache Factory (" templates / must ache ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinstall ( Content Neg otiation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġj ack son Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable ( Serialization Feature . IND ENT _ OUTPUT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġkon ci erge Ġ= ĠKon ci erge () ĊĊĠĠĠ Ġrouting Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("/") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġcall . parameters ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġexample Ġ= Ġparameters [" experiment "] Ġto Ġparameters [" context "] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( example . first Ġ=== Ġnull Ġ&& Ġexample . second Ġ=== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexample Ġ= Ġexperiments . random () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( experiment , Ġcontext ) Ġ= Ġexample ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Template ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" index . h bs ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" experiment " Ġto Ġexperiment , Ġ" context " Ġto Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpost ("/ api / eval ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġcall . receive < Eval Body >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexp Ġ= Ġkon ci erge . parse ( parameters . experiment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġkon ci erge . evaluate ( exp , Ġparameters . context ). to Matrix () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex . localized Message , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType Ġ= ĠContentType . Text . Plain , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠHttpStatusCode . BadRequest , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstatic ("/ static ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources (" static ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġexperiments : ĠList < Pair < String , ĠString >> Ġ= ĠlistOf ( ĊĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" EXP 0 0 1 ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ '$ '} children ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" part icip ating ": Ġ{ Ġ"${ '$ '} rand ": Ġ{ Ġ"${ '$ '} gt ": Ġ 0 . 5 Ġ} Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" control ": Ġ{ Ġ"${ '$ '} always ": Ġ Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ""" . trim Indent () Ġto Ġ""" ĊĠĠĠĠĠĠĠ Ġ{} ĊĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" EXP 0 0 1 ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ '$ '} children ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" part icip ating ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" version . number ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ '$ '} gt ": Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" control ": Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ""" . trim Indent () Ġto Ġ""" ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" version ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" number ": Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ""" . trim Indent () Ċ ) Ċ Ċ data Ġclass ĠEval Body ( val Ġcontext : ĠString , Ġval Ġexperiment : ĠString )