package Ġdata Ċ Ċ type alias ĠAuthors State Ġ= ĠMap < Int , ĠAuthor > Ċ Ċ type alias ĠBooks State Ġ= ĠMap < Int , ĠBook > Ċ Ċ type alias ĠGen res State Ġ= ĠMap < Int , ĠGen re > Ċ Ċ type alias ĠF av s State Ġ= ĠArray < Int > Ċ Ċ type alias ĠRe views State Ġ= ĠMap < Int , ĠReview > Ċ Ċ class ĠState Ġ( ĊĠĠĠ Ġval Ġbooks : ĠBooks State , ĊĠĠĠ Ġval Ġauthors : ĠAuthors State , ĊĠĠĠ Ġval Ġgen res : ĠGen res State , ĊĠĠĠ Ġval Ġreviews : ĠRe views State , ĊĠĠĠ Ġval Ġfav s : ĠF av s State Ġ= ĠarrayOf ( 3 ) Ċ ) Ċ Ċ fun Ġ< T > ĠMap < Int , ĠT >. new Id () Ġ= ĊĠĠĠ Ġ( this . max By Ġ{ Ġit . key Ġ} ?. key Ġ?: Ġ 0 ) Ġ+ Ġ 1 Ċ Ċ fun ĠinitialState () Ġ= ĊĠĠĠ ĠState ( ĊĠĠĠĠĠĠĠ Ġbook List (). map Indexed Ġ{ Ġindex , Ġbook Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġto Ġbook ĊĠĠĠĠĠĠĠ Ġ}. toMap (), ĊĠĠĠĠĠĠĠ Ġauthor List (). map Indexed Ġ{ Ġindex , Ġauthor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġto Ġauthor ĊĠĠĠĠĠĠĠ Ġ}. toMap (), ĊĠĠĠĠĠĠĠ Ġgenre List (). map Indexed Ġ{ Ġindex , Ġgenre Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġto Ġgenre ĊĠĠĠĠĠĠĠ Ġ}. toMap (), ĊĠĠĠĠĠĠĠ Ġreview List (). map Indexed Ġ{ Ġindex , Ġreview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġto Ġreview ĊĠĠĠĠĠĠĠ Ġ}. toMap () ĊĠĠĠ Ġ)