package Ġio . horizontal systems . bank wallet Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . security . keystore . Key Per manently Invalid ated Exception Ċ import Ġandroid . security . keystore . User Not Authenticated Exception Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġio . horizontal systems . bank wallet . core . App Ċ import Ġio . horizontal systems . bank wallet . core . security . Encryption Manager Ċ import Ġio . horizontal systems . bank wallet . lib . AlertDialog Fragment Ċ import Ġjava . util .* Ċ Ċ abstract Ġclass ĠBase Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġfailure Runnable : ĠRunnable ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġaction Runnable : ĠRunnable ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsuccess Runnable : ĠRunnable ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlight Mode Ġ= ĠApp . localStorage . is Light Mode On ĊĠĠĠĠĠĠĠ Ġset Theme ( if Ġ( light Mode ) ĠR . style . Light Mode App Theme Ġelse ĠR . style . Dark Mode App Theme ) ĊĊĠĠĠĠĠĠĠ Ġ// window . set Flags ( WindowManager . LayoutParams . FLAG _ SECURE , ĠWindow Manager . LayoutParams . FLAG _ SECURE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠAUTH ENT ICATE _ FOR _ ENCRYPT ION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Runnable ?. run () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Runnable ?. run () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Runnable ?. run () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Runnable ?. run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Runnable Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Runnable Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Runnable Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsafe Execute With Ke yst ore ( action : ĠRunnable , ĠonSuccess : ĠRunnable ? Ġ= Ġnull , Ġon Failure : ĠRunnable ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction . run () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess ?. run () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUser Not Authenticated Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Runnable Ġ= Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Runnable Ġ= ĠonSuccess ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailure Runnable Ġ= Ġon Failure ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEncryption Manager . show Authentication Screen ( this , ĠAUTH ENT ICATE _ FOR _ ENCRYPT ION ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠKey Per manently Invalid ated Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEncryption Manager . show Keys Invalid ated Alert ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure ?. run () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġattach Base Context ( new Base : ĠContext ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġnew Base ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . attach Base Context ( update Base Context Locale ( it )) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġsuper . attach Base Context ( new Base ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetContentView ( layout Res ID : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set ContentView ( layout Res ID ) ĊĠĠĠĠĠĠĠ Ġif Ġ( App . app Config Provider . test Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Test Label () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġhide Soft Keyboard () Ġ{ ĊĠĠĠĠĠĠĠ Ġget System Service ( Input Method Manager :: class . java )?. hide Soft Input From Window ( current Focus ?. window Token , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġset Transparent StatusBar () Ġ{ ĊĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠColor . TRANSP ARENT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Custom Keyboard Alert () Ġ{ ĊĠĠĠĠĠĠĠ ĠAlertDialog Fragment . newInstance ( R . string . Alert _ Title Warning , ĠR . string . Alert _ Custom Keyboard Is Used , ĠR . string . Alert _ Ok , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠAlertDialog Fragment . Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Button Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ ime Manager Ġ= ĠApp . instance . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ime Manager . show Input Method Picker () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ( 1 Ġ* Ġ 7 5 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). show ( support FragmentManager , Ġ" custom _ keyboard _ alert ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Test Label () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= ĠfindViewById < ViewGroup >( android . R . id . content ) ĊĠĠĠĠĠĠĠ Ġval Ġtest Label Tv Ġ= ĠTextView ( this ) ĊĠĠĠĠĠĠĠ Ġtest Label Tv . text Ġ= Ġ" Test " ĊĠĠĠĠĠĠĠ Ġtest Label Tv . set Padding ( 5 , Ġ 3 , Ġ 5 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġtest Label Tv . include Font Padding Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtest Label Tv . set BackgroundColor ( Color . RED ) ĊĠĠĠĠĠĠĠ Ġtest Label Tv . setTextColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠ Ġtest Label Tv . text Size Ġ= Ġ 1 2 f ĊĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= ĠFrame Layout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFrame Layout . LayoutParams . WRAP _ CONTENT , ĠFrame Layout . LayoutParams . WRAP _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġlayout Params . gravity Ġ= ĠGr avity . CENTER _ HORIZONTAL ĊĠĠĠĠĠĠĠ Ġtest Label Tv . layout Params Ġ= Ġlayout Params ĊĠĠĠĠĠĠĠ Ġroot View . addView ( test Label Tv ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Base Context Locale ( context : ĠContext ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlanguage Ġ= ĠApp . language Manager . current Language ĊĠĠĠĠĠĠĠ ĠLocale . setDefault ( language ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Resources Locale ( context , Ġlanguage ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġupdate Resources Locale Legacy ( context , Ġlanguage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Target Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġprivate Ġfun Ġupdate Resources Locale ( context : ĠContext , Ġlocale : ĠLocale ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration : ĠConfiguration Ġ= Ġcontext . resources . configuration ĊĠĠĠĠĠĠĠ Ġconfiguration . set Locale ( locale ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . create Configuration Context ( configuration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ SuppressWarnings (" deprecation ") ĊĠĠĠ Ġprivate Ġfun Ġupdate Resources Locale Legacy ( context : ĠContext , Ġlocale : ĠLocale ): ĠContext Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresources : ĠResources Ġ= Ġcontext . resources ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration : ĠConfiguration Ġ= Ġresources . configuration ĊĠĠĠĠĠĠĠ Ġconfiguration . locale Ġ= Ġlocale ĊĠĠĠĠĠĠĠ Ġresources . update Configuration ( configuration , Ġresources . display Metrics ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠAUTH ENT ICATE _ FOR _ ENCRYPT ION Ġ= Ġ 2 3 ĊĠĠĠ Ġ} Ċ Ċ } Ċ