package Ġme . index yz . strap . utils Ċ Ċ import Ġjava . io . FileReader Ċ import Ġjava . io . FileWriter Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ class ĠConfiguration () Ġ{ ĊĠĠĠ Ġprivate Ġval ĠCONFIG _ NAME Ġ= Ġ" config . properties " ĊĠĠĠ Ġprivate Ġvar Ġconfigs : ĠProperties ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . reload () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠConfiguration ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= ĠConfiguration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfield ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġget (): ĠConfiguration Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġreload () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠFileReader ( CONFIG _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠProperties () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties . load ( reader ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigs Ġ= Ġproperties ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . create Default () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= ĠFile Writer ( CONFIG _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . configs !!. store ( writer , Ġ" Str ap Ġbot Ġconfig Ġfile ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Default () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= ĠProperties () ĊĠĠĠĠĠĠĠ Ġproperties . setProperty (" bot Token ", Ġ"") ĊĠĠĠĠĠĠĠ Ġconfigs Ġ= Ġproperties ĊĊĠĠĠĠĠĠĠ Ġthis . save () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġget ( key : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenv s Ġ= ĠSystem . getProperties () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( envs . containsKey ( key . toUpperCase ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenv s . getProperty ( key . toUpperCase ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġconfigs !!. getProperty ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas ( key : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenv s Ġ= ĠSystem . getProperties () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( envs . containsKey ( key . toUpperCase ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġconfigs !!. containsKey ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġset ( key : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigs !!. setProperty ( key , Ġvalue ) ĊĠĠĠ Ġ} Ċ }