package Ġde . r ki . cor on aw arn app . qrcode . handler Ċ Ċ import Ġandroidx . annotation . String Res Ċ import Ġdagger . Re usable Ċ import Ġde . r ki . cor on aw arn app . R Ċ import Ġde . r ki . cor on aw arn app . presence tracing . check ins . qrcode . Check In Qr Code Ċ import Ġde . r ki . cor on aw arn app . presence tracing . check ins . qrcode . Verified Trace Location Ċ import Ġde . r ki . cor on aw arn app . presence tracing . check ins . qrcode . trace Location Ċ import Ġjavax . inject . Inject Ċ Ċ @ Re usable Ċ class ĠCheck In Qr Code Handler Ġ@ Inject Ġconstructor () Ġ{ ĊĊĠĠĠ Ġfun Ġhandle Qr Code ( qrcode : ĠCheck In Qr Code ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpayload Ġ= Ġqr code . qr Code Payload ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= Ġpayload . trace Location () ĊĠĠĠĠĠĠĠ Ġval Ġlocation Data Ġ= Ġpayload . location Data ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . description . isEmpty () Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . description . length Ġ> ĠDESCRIPTION _ MAX _ LENGTH Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . description . lines (). size Ġ> Ġ 1 Ġ-> ĠResult . Invalid . Description ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . address . isEmpty () Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . address . length Ġ> ĠADDRESS _ MAX _ LENGTH Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . address . lines (). size Ġ> Ġ 1 Ġ-> ĠResult . Invalid . Address ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġboth Ġare Ġ 0 Ġdo Ġnothing Ġelse Ġcheck Ġstart Ġis Ġsmaller Ġthan Ġend Ġor Ġreturn Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ!( location Data . start Timestamp Ġ== Ġ 0 L Ġ&& Ġlocation Data . end Timestamp Ġ== Ġ 0 L ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Data . start Timestamp Ġ> Ġlocation Data . end Timestamp Ġ-> ĠResult . Invalid . Start EndTime ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . crypto graphic Seed . size Ġ!= ĠCR YPTO _ SEED _ LENGTH Ġ-> ĠResult . Invalid . Crypto graphic Seed ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠResult . Valid ( Verified Trace Location ( payload )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠValid ( val Ġverified Trace Location : ĠVerified Trace Location ) Ġ: ĠResult () ĊĊĠĠĠĠĠĠĠ Ġsealed Ġclass ĠInvalid (@ String Res Ġval Ġerror Text Res : ĠInt ) Ġ: ĠResult () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠDescription Ġ: ĠInvalid ( R . string . trace _ location _ check ins _ qr _ code _ invalid _ description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠAddress Ġ: ĠInvalid ( R . string . trace _ location _ check ins _ qr _ code _ invalid _ address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠStart EndTime Ġ: ĠInvalid ( R . string . trace _ location _ check ins _ qr _ code _ invalid _ times ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠCrypto graphic Seed Ġ: ĠInvalid ( R . string . trace _ location _ check ins _ qr _ code _ invalid _ crypto graphic _ seed ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCR YPTO _ SEED _ LENGTH Ġ= Ġ 1 6 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDESCRIPTION _ MAX _ LENGTH Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠADDRESS _ MAX _ LENGTH Ġ= Ġ 1 0 0 ĊĠĠĠ Ġ} Ċ } Ċ