import Ġkotlinx . serialization . Serial Name Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . Transient Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . modules . Serial izers Module Ċ Ċ @ Serializable Ċ private Ġdata Ġclass ĠDeserial ized Configuration Properties ( ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ: ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġauth : ĠAuth Properties , ĊĠĠĠĠĠĠĠ Ġval Ġpolling Interval Ms : ĠLong , ĊĠĠĠĠĠĠĠ Ġval Ġraz er : ĠR azer Properties , ĊĠĠĠĠĠĠĠ Ġval Ġbuild Jobs : ĠList < Build Job Properties >, ĊĠĠĠĠĠĠĠ Ġval Ġeffects : ĠList < Effect >) Ċ Ċ @ Serializable Ċ data Ġclass ĠAuth Properties ( ĊĠĠĠĠĠĠĠ Ġval Ġusername : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġpassword : ĠString ) Ċ Ċ @ Serializable Ċ data Ġclass ĠR azer Properties ( ĊĠĠĠĠĠĠĠ Ġval Ġbackground Effect : ĠString ) Ċ Ċ @ Serializable Ċ private Ġdata Ġclass ĠBuild Job Properties ( ĊĠĠĠĠĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġjob : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġbranch : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġkey Column : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġkey Row : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġbuild InProgress Effect : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġbuild Successful Effect : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġbuild Failed Effect : ĠString Ċ ) Ċ Ċ @ Serializable Ċ abstract Ġclass ĠEffect (@ Transient Ġopen Ġval Ġid : ĠString Ġ= Ġ"") Ċ Ċ @ Serial Name (" STATIC ") Ċ @ Serializable Ċ data Ġclass ĠStatic Effect ( override Ġval Ġid : ĠString , Ġval Ġrgb Hex : ĠString ) Ġ: ĠEffect ( id ) Ċ Ċ @ Serial Name (" BL INK ") Ċ @ Serializable Ċ data Ġclass ĠB link Effect ( override Ġval Ġid : ĠString , Ġval Ġrgb On Hex : ĠString , Ġval Ġrgb Off Hex : ĠString ) Ġ: ĠEffect ( id ) Ċ Ċ class ĠConfiguration Loader Ġ{ ĊĠĠĠ Ġfun Ġload Configuration Properties () Ġ: ĠConfiguration Properties Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Properties Json Ġ= Ġload Configuration Properties Json () ĊĠĠĠĠĠĠĠ Ġval Ġdeserialized Configuration Properties Ġ= Ġdeserialize Configuration Properties ( configuration Properties Json ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmap Deserial ized Configuration Properties ( de serialized Configuration Properties ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġdeserialize Configuration Properties ( configuration Properties Json Ġ: ĠString ) Ġ: ĠDeserial ized Configuration Properties Ġ{ ĊĠĠĠ Ġval Ġeffect Module Ġ= ĠSerial izers Module Ġ{ ĊĠĠĠĠĠĠĠ Ġpol ymorphic ( Effect :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStatic Effect :: class Ġwith ĠStatic Effect . serializer () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB link Effect :: class Ġwith ĠB link Effect . serializer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠJson ( context Ġ= Ġeffect Module ). parse ( Deserial ized Configuration Properties . serializer (), Ġconfiguration Properties Json ) Ċ } Ċ Ċ private Ġfun Ġmap Deserial ized Configuration Properties ( input Properties : ĠDeserial ized Configuration Properties ) Ġ: ĠConfiguration Properties Ġ{ ĊĠĠĠ Ġval Ġeffects Ġ Ġ= Ġinput Properties . effects . map Ġ{ Ġit . id Ġto Ġit Ġ}. toMap () ĊĊĠĠĠ Ġfun Ġget Effect ( effect Id : ĠString ) Ġ: ĠEffect Ġ= Ġeffects [ effect Id ] Ġ?: Ġthrow ĠIllegalArgumentException (" Unknown Ġeffect Ġ$ effect Id ") ĊĊĠĠĠ Ġval Ġjob Configuration Ġ= Ġinput Properties . build Jobs . map Ġ{ Ġit . id Ġto ĊĠĠĠĠĠĠĠ ĠJob Configuration Properties ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . job , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . branch , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . key Row , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . key Column , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Effect ( it . build InProgress Effect ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Effect ( it . build Successful Effect ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Effect ( it . build Failed Effect ) ĊĠĠĠ Ġ) }. toMap () ĊĊĠĠĠ Ġval Ġbackground Effect Ġ= Ġget Effect ( input Properties . raz er . background Effect ) Ġas ? ĠStatic Effect ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalArgumentException (" Only Ġstatic Ġbackground Ġeffects Ġare Ġsupported Ġat Ġthe Ġmoment .") ĊĊĠĠĠ Ġval Ġraz er Configuration Ġ= ĠR azer Configuration Properties ( background Effect ) ĊĊĠĠĠ Ġreturn ĠConfiguration Properties ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Properties . url , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Properties . auth , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Properties . polling Interval Ms , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraz er Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjob Configuration ) Ċ } Ċ Ċ data Ġclass ĠConfiguration Properties Ġ( ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ: ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġauth : ĠAuth Properties , ĊĠĠĠĠĠĠĠ Ġval Ġpolling Interval Ms : ĠLong , ĊĠĠĠĠĠĠĠ Ġval Ġraz er : ĠR azer Configuration Properties , ĊĠĠĠĠĠĠĠ Ġval Ġjobs Ġ: ĠMap < Int , ĠJob Configuration Properties > Ċ ) Ċ Ċ data Ġclass ĠR azer Configuration Properties ( ĊĠĠĠĠĠĠĠ Ġval Ġbackground Effect : ĠStatic Effect ) Ċ Ċ data Ġclass ĠJob Configuration Properties ( ĊĠĠĠĠĠĠĠ Ġval Ġjob : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġbranch : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġkey Row : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġkey Column : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġbuild InProgress Effect : ĠEffect , ĊĠĠĠĠĠĠĠ Ġval Ġbuild Successful Effect : ĠEffect , ĊĠĠĠĠĠĠĠ Ġval Ġbuild Failed Effect : ĠEffect ) Ċ