package Ġcom . war de ll bag by . sens ord is abler . settings Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . hardware . Sensor Ċ import Ġcom . squareup . workflow 1 .* Ċ import Ġcom . squareup . workflow 1 . Workflow Action . Companion . no Action Ċ import Ġcom . war de ll bag by . sens ord is abler . R Ċ import Ġcom . war de ll bag by . sens ord is abler . billing . Billing Client Helper Ċ import Ġcom . war de ll bag by . sens ord is abler . billing . Billing Client Helper . Event . Error Ċ import Ġcom . war de ll bag by . sens ord is abler . billing . Billing Client Helper . Event . P urchases Updated Ċ import Ġcom . war de ll bag by . sens ord is abler . mod als . Dual Layer Ċ import Ġcom . war de ll bag by . sens ord is abler . settings . Output . Closed Ċ import Ġcom . war de ll bag by . sens ord is abler . settings . Pro Status .* Ċ import Ġcom . war de ll bag by . sens ord is abler . settings . Settings Row . Button Row Ċ import Ġcom . war de ll bag by . sens ord is abler . settings . Settings Row . Checkbox Row Ċ import Ġcom . war de ll bag by . sens ord is abler . settings . Settings Workflow . Props Ċ import Ġcom . war de ll bag by . sens ord is abler . settings . State .* Ċ import Ġcom . war de ll bag by . sens ord is abler . settings . filtering . settings . Filter Settings Workflow Ċ import Ġcom . war de ll bag by . sens ord is abler . settings . filtering . type . Filter Type Workflow Ċ import Ġcom . war de ll bag by . sens ord is abler . toolbar . Navigation Icon . BACK Ċ import Ġcom . war de ll bag by . sens ord is abler . toolbar . Toolbar Props Ċ import Ġcom . war de ll bag by . sens ord is abler . toolbar . Toolbar Rendering Ċ import Ġcom . war de ll bag by . sens ord is abler . toolbar . Toolbar Workflow Ċ import Ġcom . war de ll bag by . sens ord is abler . util .* Ċ import Ġdagger . h ilt . android . qual ifiers . ApplicationContext Ċ import Ġjavax . inject . Inject Ċ Ċ sealed Ġclass ĠState Ġ{ ĊĠ Ġabstract Ġval Ġpro Status : ĠPro Status ĊĊĠ Ġobject ĠLoading In App P urchases Ġ: ĠState () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġpro Status : ĠPro Status Ġ= ĠUNKNOWN ĊĠ Ġ} ĊĊĠ Ġdata Ġclass ĠEdit ing Settings ( ĊĠĠĠ Ġoverride Ġval Ġpro Status : ĠPro Status , ĊĠ Ġ) Ġ: ĠState () ĊĊĠ Ġdata Ġclass ĠAt tempting Purchase ( ĊĠĠĠ Ġoverride Ġval Ġpro Status : ĠPro Status , ĊĠĠĠ Ġval Ġsku : ĠString , ĊĠĠĠ Ġval Ġshould Consume : ĠBoolean ĊĠ Ġ) Ġ: ĠState () ĊĊĠ Ġdata Ġclass ĠCho osing Filter Type ( ĊĠĠĠ Ġoverride Ġval Ġpro Status : ĠPro Status ĊĠ Ġ) Ġ: ĠState () ĊĊĠ Ġdata Ġclass ĠChanging Filter Settings ( ĊĠĠĠ Ġoverride Ġval Ġpro Status : ĠPro Status ĊĠ Ġ) Ġ: ĠState () Ċ } Ċ Ċ sealed Ġclass ĠOutput Ġ{ ĊĠ Ġobject ĠClosed Ġ: ĠOutput () Ċ } Ċ Ċ enum Ġclass ĠPro Status Ġ{ ĊĠ ĠP UR CH ASE D , ĊĠ ĠNOT _ PUR CH ASE D , ĊĠ ĠUNKNOWN Ċ } Ċ Ċ data Ġclass ĠSettings Section ( ĊĠ Ġval Ġheader : ĠString , ĊĠ Ġval Ġrows : ĠList < Settings Row > Ċ ) Ċ Ċ sealed Ġclass ĠSettings Row Ġ{ ĊĠ Ġdata Ġclass ĠButton Row ( ĊĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠ Ġval Ġsubtitle : ĠString Ġ= Ġ"", ĊĠĠĠ Ġval ĠonClick : Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĠ Ġ) Ġ: ĠSettings Row () ĊĊĠ Ġdata Ġclass ĠCheckbox Row ( ĊĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠ Ġval Ġsubtitle : ĠString Ġ= Ġ"", ĊĠĠĠ Ġval Ġis Checked : ĠBoolean , ĊĠĠĠ Ġval Ġon Check Changed : Ġ( isChecked : ĠBoolean ) Ġ-> ĠUnit Ġ= Ġ{} ĊĠ Ġ) Ġ: ĠSettings Row () Ċ } Ċ Ċ class ĠSettings Workflow Ċ @ Inject Ġconstructor ( ĊĠ Ġprivate Ġval Ġfilter Type Workflow : ĠFilter Type Workflow , ĊĠ Ġprivate Ġval Ġfilter Settings Workflow : ĠFilter Settings Workflow , ĊĠ Ġprivate Ġval Ġbilling Client Helper : ĠBilling Client Helper , ĊĠ Ġ@ ApplicationContext Ġprivate Ġval Ġandroid Context : ĠContext Ċ ) Ġ: ĠStateful Workflow < Props , ĠState , ĠOutput , ĠDual Layer <* >>() Ġ{ ĊĠ Ġdata Ġclass ĠProps ( val Ġsensors : ĠList < Sensor >) ĊĊĠ Ġoverride Ġfun ĠinitialState ( ĊĠĠĠ Ġprops : ĠProps , ĊĠĠĠ Ġsnapshot : ĠSnapshot ? ĊĠ Ġ): ĠState Ġ= ĠLoading In App P urchases ĊĊĠ Ġoverride Ġfun Ġrender ( ĊĠĠĠ Ġrender Props : ĠProps , ĊĠĠĠ Ġrender State : ĠState , ĊĠĠĠ Ġcontext : ĠRender Context ĊĠ Ġ): ĠDual Layer < *> Ġ{ ĊĠĠĠ Ġcontext . running Worker ( billing Client Helper . as Worker ()) Ġ{ ĊĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠError Ġ-> Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠEdit ing Settings ( state . pro Status ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠP urchases Updated Ġ-> Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġis ĠEdit ing Settings Ġ|| Ġstate Ġis ĠAt tempting Purchase ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠLoading In App P urchases ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġno Action () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġtoolbar Ġ= Ġcontext . render Child ( ĊĠĠĠĠĠ ĠToolbar Workflow , ĊĠĠĠĠĠ Ġprops Ġ= ĠToolbar Props ( ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġandroid Context . resources . getString ( R . string . menu _ settings ), ĊĠĠĠĠĠĠĠ Ġnavigation Icon Ġ= ĠBACK , ĊĠĠĠĠĠĠĠ Ġon Navigation Icon Clicked Ġ= Ġcontext . event Handler Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġset Output ( Closed ) ĊĠĠĠĠĠĠĠ Ġ}), ĊĠĠĠ Ġ) ĊĠĠĠ Ġreturn Ġwhen Ġ( render State ) Ġ{ ĊĠĠĠĠĠ Ġis ĠLoading In App P urchases Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . running Worker ( billing Client Helper . getIn App P urchases ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Pro Ġ= Ġit . contains ( Constants . SK U _ TASK ER ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPro Util . set Pro Status ( android Context , Ġis Pro ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠEdit ing Settings ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpro Status Ġ= Ġif Ġ( is Pro ) ĠP UR CH ASE D Ġelse ĠNOT _ PUR CH ASE D , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDual Layer ( ĊĠĠĠĠĠĠĠĠĠ Ġbase Ġ= ĠSettings Screen ( toolbar Ġ= Ġtoolbar , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsections Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Ġ= Ġ{ Ġcontext . action Sink . send ( action Ġ{ Ġset Output ( Closed ) Ġ}) Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠ Ġmodal Ġ= ĠLoading Screen ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis ĠAt tempting Purchase Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . running Side Effect ( render State . sku ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġbilling Client Helper . attempt Purchase ( render State . sku ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDual Layer ( ĊĠĠĠĠĠĠĠĠĠ Ġbase Ġ= Ġsettings Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar Ġ= Ġtoolbar , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender State Ġ= Ġrender State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Ġ= Ġcontext . event Handler Ġ{ Ġset Output ( Closed ) Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠ Ġmodal Ġ= ĠLoading Screen ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis ĠCho osing Filter Type Ġ-> ĊĠĠĠĠĠĠĠ ĠDual Layer ( ĊĠĠĠĠĠĠĠĠĠ Ġbase Ġ= Ġsettings Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar Ġ= Ġtoolbar , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender State Ġ= Ġrender State ĊĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠ Ġmodal Ġ= Ġcontext . render Child ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Type Workflow , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprops Ġ= Ġandroid Context . get Filter Type () ĊĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context . set Filter Type ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠEdit ing Settings ( render State . pro Status ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġis ĠChanging Filter Settings Ġ-> ĠDual Layer ( ĊĠĠĠĠĠĠĠ Ġbase Ġ= Ġcontext . render Child ( ĊĠĠĠĠĠĠĠĠĠ Ġfilter Settings Workflow , ĊĠĠĠĠĠĠĠĠĠ Ġprops Ġ= ĠFilter Settings Workflow . Props ( render Props . sensors ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ Ġstate Ġ= ĠEdit ing Settings ( state . pro Status ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġis ĠEdit ing Settings Ġ-> Ġsettings Screen ( ĊĠĠĠĠĠĠĠ Ġtoolbar Ġ= Ġtoolbar , ĊĠĠĠĠĠĠĠ Ġrender State Ġ= Ġrender State , ĊĠĠĠĠĠĠĠ Ġon Purchase Pro Ġ= Ġcontext . event Handler Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠAt tempting Purchase ( state . pro Status , ĠConstants . SK U _ TASK ER , Ġshould Consume Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġon Free loading Changed Ġ= Ġcontext . event Handler Ġ{ Ġis Checked Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠPro Util . set Free load Status ( android Context , Ġis Checked ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġon Filter Type Clicked Ġ= Ġcontext . event Handler Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠCho osing Filter Type ( state . pro Status ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġon Filter Settings Clicked Ġ= Ġcontext . event Handler Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠChanging Filter Settings ( state . pro Status ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġon Don ation Ġ= Ġcontext . event Handler Ġ{ Ġsku Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠAt tempting Purchase ( state . pro Status , Ġsku , Ġshould Consume Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġon Back Ġ= Ġcontext . event Handler Ġ{ Ġset Output ( Closed ) Ġ} ĊĠĠĠĠĠ Ġ). let Ġ{ ĠDual Layer ( base Ġ= Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġsnapshot State ( state : ĠState ): ĠNothing ? Ġ= Ġnull ĊĊĠ Ġprivate Ġfun Ġsettings Screen ( ĊĠĠĠ Ġtoolbar : ĠToolbar Rendering , ĊĠĠĠ Ġrender State : ĠState , ĊĠĠĠ Ġon Purchase Pro : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġon Free loading Changed : Ġ( Boolean ) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġon Filter Type Clicked : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġon Filter Settings Clicked : Ġ() Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġon Don ation : Ġ( String ) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġon Back : Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĠ Ġ): ĠSettings Screen Ġ{ ĊĠĠĠ Ġreturn ĠSettings Screen ( ĊĠĠĠĠĠ Ġtoolbar Ġ= Ġtoolbar , ĊĠĠĠĠĠ Ġsections Ġ= ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠ ĠSettings Section ( ĊĠĠĠĠĠĠĠĠĠ Ġheader Ġ= Ġandroid Context . getString ( R . string . pro _ settings _ header ), ĊĠĠĠĠĠĠĠĠĠ Ġrows Ġ= ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrender State . pro Status Ġ== ĠP UR CH ASE D Ġ-> Ġandroid Context . getString ( R . string . th ank _ you _ for _ buy ing ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! billing Client Helper . is Available Ġ-> Ġandroid Context . getString ( R . string . cannot _ purchase _ pro ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġandroid Context . getString ( R . string . purchase _ pro _ version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġif Ġ(! billing Client Helper . is Available ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context . getString ( R . string . no _ google _ play ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġif Ġ( render State . pro Status Ġ== ĠP UR CH ASE D Ġ|| Ġ! billing Client Helper . is Available ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{} Ġ// ĠNo - op Ġif Ġwe 've Ġalready Ġpurch ased Ġpro ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Purchase Pro ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCheckbox Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġandroid Context . getString ( R . string . free load ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġandroid Context . getString ( R . string . free load _ description ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= ĠPro Util . is Free loaded ( android Context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Check Changed Ġ= Ġon Free loading Changed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). take Unless Ġ{ Ġrender State . pro Status Ġ== ĠP UR CH ASE D Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠSettings Section ( ĊĠĠĠĠĠĠĠĠĠ Ġheader Ġ= Ġandroid Context . getString ( R . string . filter _ settings _ header ), ĊĠĠĠĠĠĠĠĠĠ Ġrows Ġ= ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context . getString ( R . string . filter _ type ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context . getString ( R . string . filter _ type _ description ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġon Filter Type Clicked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context . getString ( R . string . filter _ settings ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġon Filter Settings Clicked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). take If Ġ{ Ġandroid Context . get Filter Type () Ġ!= ĠFilter Type . None Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). take If Ġ{ Ġrender State . pro Status Ġ== ĠP UR CH ASE D Ġ|| ĠPro Util . is Free loaded ( android Context ) Ġ}, ĊĠĠĠĠĠĠĠ ĠSettings Section ( ĊĠĠĠĠĠĠĠĠĠ Ġheader Ġ= Ġandroid Context . getString ( R . string . don ations _ header ), ĊĠĠĠĠĠĠĠĠĠ Ġrows Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context . getString ( R . string . don ate _ 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Don ation ( Constants . SK U _ D ON ATION _ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġandroid Context . getString ( R . string . don ate _ 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Don ation ( Constants . SK U _ D ON ATION _ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton Row ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġandroid Context . getString ( R . string . don ate _ 1 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Don ation ( Constants . SK U _ D ON ATION _ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}), ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). take If Ġ{ Ġbilling Client Helper . is Available Ġ} ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ Ġon Back Ġ= Ġon Back ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ }