package Ġdev . in mo . tg bot api . utils Ċ Ċ import Ġkotlinx . serialization .* Ċ import Ġkotlinx . serialization . descriptors .* Ċ import Ġkotlinx . serialization . encoding . Decoder Ċ import Ġkotlinx . serialization . encoding . Encoder Ċ Ċ @ Serializable ( MimeType Serializer :: class ) Ċ expect Ġclass ĠMime Type Ġ{ ĊĠĠĠ Ġval Ġraw : ĠString Ċ } Ċ Ċ private Ġval Ġmime s Cache Ġ= Ġmutable Map Of < String , ĠMime Type >() Ċ Ċ fun ĠString . as MimeType () Ġ= Ġbuild MimeType ( this ) Ċ Ċ internal Ġexpect Ġfun Ġcreate MimeType ( raw : ĠString ): ĠMime Type Ċ fun Ġbuild MimeType ( raw : ĠString ): ĠMime Type Ġ= Ġmime s Cache . get Or Put ( raw ) Ġ{ ĊĠĠĠ Ġcreate MimeType ( raw ) Ċ } Ċ Ċ @ Risk Feature Ċ object ĠMime Type Serializer Ġ: ĠK Serializer < MimeType > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġdescriptor : ĠSerial Descriptor Ġ= ĠPrimitive Serial Descriptor (" mime Type ", ĠPrimitive Kind . STRING ) ĊĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( decoder : ĠDecoder ): ĠMime Type Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠmimeType Ġ= Ġdecoder . decode String () ĊĠĠĠĠĠĠĠ Ġreturn Ġmime s Cache . get Or Put ( mime Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate MimeType ( mime Type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġserialize ( encoder : ĠEncoder , Ġvalue : ĠMime Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġencoder . encode String ( value . raw ) ĊĠĠĠ Ġ} Ċ } Ċ