package Ġorg . ore g ano . ore g ano 3 Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Selection Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġcom . cha quo . python . Kw arg Ċ import Ġcom . cha quo . python . Py Exception Ċ import Ġcom . google . zx ing . integration . android . Intent Integr ator Ċ import Ġkotlinx . android . synt hetic . main . wallet _ new .* Ċ import Ġkotlinx . android . synt hetic . main . wallet _ new _ 2 .* Ċ import Ġkotlin . properties . Deleg ates . notNull ĊĊ Ċ val Ġlib Ke yst ore Ġby Ġlazy Ġ{ Ġlib Mod (" keystore ") Ġ} Ċ val Ġlib Wallet Ġby Ġlazy Ġ{ Ġlib Mod (" wallet ") Ġ} ĊĊ Ċ class ĠNew Wallet Dialog 1 Ġ: ĠAlertDialog Fragment () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Build Dialog ( builder : ĠAlertDialog . Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle ( R . string . New _ wallet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( R . layout . wallet _ new ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . next , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . cancel , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsp n Type . adapter Ġ= ĠMenu Adapter ( context !! , ĠR . menu . wallet _ type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ShowDialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog . get Button ( AlertDialog . BUTTON _ POSITIVE ). setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġet Name . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Wallet Name ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġconfirm Password ( dialog ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Dialog : ĠDialog Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" name ", Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" password ", Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwallet Type Ġ= Ġsp n Type . selected ItemId . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( wallet Type Ġin ĠlistOf ( R . id . menu Create Seed , ĠR . id . menu Restore Seed )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Dialog Ġ= ĠNew Wallet Seed Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseed Ġ= Ġif Ġ( wallet Type Ġ== ĠR . id . menu Create Seed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdaemon Model . commands . call Attr (" make _ seed "). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments . putString (" seed ", Ġseed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( wallet Type Ġ== ĠR . id . menu Import ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Dialog Ġ= ĠNew Wallet Import Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( wallet Type Ġ== ĠR . id . menu Import Master ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Dialog Ġ= ĠNew Wallet Import Master Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Unknown Ġitem : Ġ${ spn Type . selected Item }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Dialog ( this , Ġnext Dialog . apply Ġ{ Ġset Arguments ( arguments ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠToast Exception ) Ġ{ Ġe . show () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġvalidate Wallet Name ( name : ĠString ) Ġ{ ĊĠĠĠ Ġif Ġ( name . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( R . string . name _ is ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( name . contains ("/ ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( R . string . wallet _ names ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( name . toByteArray (). size Ġ> Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġfilesystem Ġlimit Ġis Ġprobably Ġ 2 5 5 , Ġbut Ġwe Ġneed Ġto Ġleave Ġroom Ġfor Ġthe Ġtemporary ĊĠĠĠĠĠĠĠ Ġ// Ġfilename Ġsuffix . ĊĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( R . string . wallet _ name _ is _ too ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( daemon Model . list Wallet s (). contains ( name )) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( R . string . a _ wallet _ with _ that _ name _ already _ exists _ please _ enter ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġconfirm Password ( dialog : ĠDialog ): ĠString Ġ{ ĊĠĠĠ Ġval Ġpassword Ġ= Ġdialog . et Password . text . toString () ĊĠĠĠ Ġif Ġ( password . isEmpty ()) Ġthrow ĠToast Exception ( R . string . Enter _ password , ĠToast . LENGTH _ SHORT ) ĊĠĠĠ Ġif Ġ( password Ġ!= Ġdialog . et Confirm Password . text . toString ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( R . string . wallet _ passwords ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġpassword Ċ } ĊĊ Ċ abstract Ġclass ĠNew Wallet Dialog 2 Ġ: ĠTask Launcher Dialog < String >() Ġ{ ĊĠĠĠ Ġvar Ġinput : ĠString Ġby Ġnot Null () ĊĊĠĠĠ Ġoverride Ġfun Ġon Build Dialog ( builder : ĠAlertDialog . Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle ( R . string . New _ wallet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setView ( R . layout . wallet _ new _ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( R . string . back , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pre Execute () Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Ġ= Ġet Input . text . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo In Background (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġarguments !!. getString (" name ") !! ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġarguments !!. getString (" password ") !! ĊĠĠĠĠĠĠĠ ĠonCreate Wallet ( name , Ġpassword ) ĊĠĠĠĠĠĠĠ Ġdaemon Model . load Wallet ( name , Ġpassword ) ĊĠĠĠĠĠĠĠ Ġreturn Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun ĠonCreate Wallet ( name : ĠString , Ġpassword : ĠString ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( target Fragment Ġas ĠNew Wallet Dialog 1 ). dismiss () ĊĠĠĠĠĠĠĠ Ġdaemon Model . commands . call Attr (" select _ wallet ", Ġresult ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ class ĠNew Wallet Seed Dialog Ġ: ĠNew Wallet Dialog 2 () Ġ{ ĊĠĠĠ Ġvar Ġpassphrase : ĠString Ġby Ġnot Null () ĊĠĠĠ Ġvar Ġb ip 3 9 : ĠBoolean Ġby Ġnot Null () ĊĠĠĠ Ġvar Ġder ivation : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon ShowDialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on ShowDialog () ĊĠĠĠĠĠĠĠ Ġsetup Seed Dialog ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( arguments !!. getString (" seed ") Ġ== Ġnull ) Ġ{ Ġ Ġ// ĠRestore Ġfrom Ġseed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb ip 3 9 Panel . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb ip 3 9 Listener Ġ= Ġ{ Ġet Der ivation . isEnabled Ġ= Ġsw B ip 3 9 . isChecked Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsw B ip 3 9 . setOn Checked ChangeListener Ġ{ Ġ_, Ġ_ Ġ-> Ġb ip 3 9 Listener () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb ip 3 9 Listener () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pre Execute () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pre Execute () ĊĠĠĠĠĠĠĠ Ġpassphrase Ġ= Ġet Pass phrase . text . toString () ĊĠĠĠĠĠĠĠ Ġb ip 3 9 Ġ= Ġsw B ip 3 9 . isChecked ĊĠĠĠĠĠĠĠ Ġif Ġ( bip 3 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġder ivation Ġ= Ġet Der ivation . text . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Wallet ( name : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( der ivation Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! lib Bitcoin . call Attr (" is _ bip 3 2 _ der ivation ", Ġder ivation ). to Boolean ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( R . string . Der ivation _ invalid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdaemon Model . commands . call Attr ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" create ", Ġname , Ġpassword , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK w arg (" seed ", Ġinput ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK w arg (" pass phrase ", Ġpassphrase ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK w arg (" bip 3 9 _ der ivation ", Ġder ivation )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠPy Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e . message !!. startsWith (" Invalid Seed ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( R . string . the _ seed _ you _ enter ed _ does _ not _ appear ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ class ĠNew Wallet Import Dialog Ġ: ĠNew Wallet Dialog 2 () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Build Dialog ( builder : ĠAlertDialog . Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Build Dialog ( builder ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Neutral Button ( R . string . qr _ code , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ShowDialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on ShowDialog () ĊĠĠĠĠĠĠĠ Ġtv Prompt . setText ( R . string . enter _ a _ list _ of _ bitcoin ) ĊĠĠĠĠĠĠĠ Ġdialog . get Button ( AlertDialog . BUTTON _ NE UT R AL ). setOnClickListener Ġ{ Ġscan QR ( this ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Wallet ( name : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfound Address Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġfound Priv key Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġfor Ġ( word Ġin Ġinput . split ( Regex ("\\ s + "))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( word . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCan Ġhappen Ġat Ġstart Ġor Ġend Ġof Ġlist . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( cls Address . call Attr (" is _ valid ", Ġword ). to Boolean ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Address Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( lib Bitcoin . call Attr (" is _ private _ key ", Ġword ). to Boolean ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Priv key Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( getString ( R . string . not _ a _ valid , Ġword )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( found Address ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( found Priv key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . cannot _ specify _ private _ keys _ and _ addresses _ in _ the _ same _ wallet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdaemon Model . commands . call Attr (" create ", Ġname , Ġpassword , ĠK w arg (" addresses ", Ġinput )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( found Priv key ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdaemon Model . commands . call Attr (" create ", Ġname , Ġpassword , ĠK w arg (" priv keys ", Ġinput )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( R . string . you _ appear _ to _ have _ enter ed _ no ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIntent Integr ator . parse Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult . contents Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġet Input . text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! text . isEmpty () Ġ&& Ġ! text . endsWith ("\ n ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . append ("\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext . append ( result . contents ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSelection . setSelection ( text , Ġtext . length ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ class ĠNew Wallet Import Master Dialog Ġ: ĠNew Wallet Dialog 2 () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Build Dialog ( builder : ĠAlertDialog . Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Build Dialog ( builder ) ĊĠĠĠĠĠĠĠ Ġbuilder . set Neutral Button ( R . string . qr _ code , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ShowDialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on ShowDialog () ĊĠĠĠĠĠĠĠ Ġtv Prompt . setText ( getString ( R . string . to _ create _ a _ watch ing ) Ġ+ Ġ" Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . to _ create _ a _ sp ending )) ĊĠĠĠĠĠĠĠ Ġdialog . get Button ( AlertDialog . BUTTON _ NE UT R AL ). setOnClickListener Ġ{ Ġscan QR ( this ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠIntent Integr ator . parse Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult . contents Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Input . setText ( result . contents ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Input . setSelection ( result . contents . length ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Wallet ( name : ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġinput . trim () ĊĠĠĠĠĠĠĠ Ġif Ġ( lib Ke yst ore . call Attr (" is _ bip 3 2 _ key ", Ġkey ). to Boolean ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdaemon Model . commands . call Attr (" create ", Ġname , Ġpassword , ĠK w arg (" master ", Ġkey )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠToast Exception ( R . string . please _ specify ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġsetup Seed Dialog ( fragment : ĠAlertDialog Fragment ) Ġ{ ĊĠĠĠ Ġwith Ġ( fragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġseed Ġ= Ġfragment . arguments !!. getString (" seed ") ĊĠĠĠĠĠĠĠ Ġif Ġ( seed Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠImport ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Prompt . setText ( R . string . please _ enter _ your _ seed _ phrase ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGenerate Ġor Ġdisplay ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Prompt . setText ( seed Ad vice ( seed )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Input . setText ( seed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġet Input . set Focus able ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpassphrase Ġ= Ġfragment . arguments !!. getString (" pass phrase ") ĊĠĠĠĠĠĠĠ Ġif Ġ( pass phrase Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠImport Ġor Ġgenerate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassphrase Panel . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Pass phrase Prompt . setText ( app . getString ( R . string . you _ may _ extend ) Ġ+ Ġ" Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp . getString ( R . string . if _ you _ are )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pass phrase . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassphrase Panel . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Pass phrase Prompt . setText ( R . string . pass phrase ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet Pass phrase . setText ( pass phrase ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet Pass phrase . set Focus able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġseed Ad vice ( seed : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġapp . getString ( R . string . please _ save , Ġseed . split (" Ġ"). size ) Ġ+ Ġ" Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġapp . getString ( R . string . this _ seed _ will ) Ġ+ Ġ" Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠ Ġapp . getString ( R . string . never _ dis close ) Ċ } Ċ