/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠPer ol _ Not sf ss sf Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE Ċ Ġ*/ Ċ Ċ package Ġcom . per ol . asd pl . pix ive z . activity ĊĊ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . ActionBar Drawer Toggle Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . Gravity Compat Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġcom . mike pen z . material drawer . Account Header Ċ import Ġcom . mike pen z . material drawer . Account Header Builder Ċ import Ġcom . mike pen z . material drawer . Drawer Ċ import Ġcom . mike pen z . material drawer . Drawer Builder Ċ import Ġcom . mike pen z . material drawer . model . Primary Drawer Item Ċ import Ġcom . mike pen z . material drawer . model . Profile Drawer Item Ċ import Ġcom . mike pen z . material drawer . model . Profile Setting Drawer Item Ċ import Ġcom . mike pen z . material drawer . model . interfaces . ID raw er Item Ċ import Ġcom . mike pen z . material drawer . model . interfaces . I Profile Ċ import Ġcom . mike pen z . material drawer . util . Abstract Drawer Image Loader Ċ import Ġcom . mike pen z . material drawer . util . Drawer Image Loader Ċ import Ġcom . per ol . asd pl . pix ive z . R Ċ import Ġcom . per ol . asd pl . pix ive z . adapters . Hello M ViewPager Adapter Ċ import Ġcom . per ol . asd pl . pix ive z . databinding . Activity Hello MB ind ing Ċ import Ġcom . per ol . asd pl . pix ive z . networks . SharedPreferences Services Ċ import Ġcom . per ol . asd pl . pix ive z . objects . Theme Util Ċ import Ġcom . per ol . asd pl . pix ive z . objects . Toast y Ċ import Ġcom . per ol . asd pl . pix ive z . repository . AppData Repository Ċ import Ġcom . per ol . asd pl . pix ive z . services . G lide App Ċ import Ġcom . per ol . asd pl . pix ive z . services . Works Ċ import Ġcom . per ol . asd pl . pix ive z . sql . User Entity Ċ import Ġcom . per ol . asd pl . pix ive z . view model . Hello M ViewModel Ċ import Ġkotlinx . android . synt hetic . main . app _ bar _ hello _ m .* Ċ import Ġkotlinx . android . synt hetic . main . content _ hello _ m .* Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġjava . io . File ĊĊ Ċ class ĠHello MA ct ivity Ġ: ĠR ink Activity (), ĠDraw er . On Drawer Navigation Listener , ĠAccount Header . On Account Header Listener Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== Ġ 7 8 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecreate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Profile Changed ( view : ĠView ?, Ġprofile : ĠI Profile <* >, Ġcurrent : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( profile . identifier ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 0 0 L Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠAccount Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences Services . setInt (" user num ", Ġprofile . identifier . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrecreate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Navigation ClickListener ( clicked View : ĠView ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġactivity Hello MB ind ing : ĠActivity Hello MB ind ing ? Ġ= Ġnull ĊĠĠĠ Ġlateinit Ġvar Ġshared Preferences Services : ĠSharedPreferences Services ĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < String >, Ġgrant Results : ĠInt Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 0 0 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġgrant Results . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġre _ request Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( grant Results [ i ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre _ request Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( re _ request ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" æľª èİ·å¾Ĺ æİĪæĿĥ ï¼Į è¯· èĩª è¡Į åĪ° ç³»ç»Ł è®¾ç½® è¿Ľè¡Į æİĪæĿĥ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġexit Time Ġ= Ġ 0 L ĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( drawer . is Drawer Open ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(( System . currentTimeMillis () Ġ- Ġexit Time ) Ġ> Ġ 2 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , ĠgetString ( R . string . again _ to _ exit ), ĠToast . LENGTH _ SHORT ). show (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit Time Ġ= ĠSystem . currentTimeMillis (); ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġheader : ĠAccount Header ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdrawer : ĠDraw er ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġall User Ġ= ĠArrayList < User Entity >() ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall User Ġ= ĠArrayList < User Entity >( AppData Repository . getAll User ()) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( all User . isEmpty () Ġ|| Ġall User [ 0 ]. username Ġ== Ġ" old user ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this @ Hello MA ct ivity , ĠLogin Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshared Preferences Services Ġ= ĠSharedPreferences Services . getInstance () ĊĠĠĠĠĠĠĠ ĠTheme Util . theme Init ( this ) ĊĠĠĠĠĠĠĠ Ġactivity Hello MB ind ing Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . app _ bar _ hello _ m ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Show Title Enabled ( false ) ĊĠĠĠĠĠĠĠ ĠDraw er Image Loader . init ( object Ġ: ĠAbstract Drawer Image Loader () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset ( imageView : ĠImageView , Ġuri : ĠUri , Ġplaceholder : ĠDrawable , Ġtag : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" https ://" Ġ+ Ġuri . host Ġ+ Ġuri . path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide App . with ( imageView ). load ( url ). error ( R . drawable . ai ). optional Center Crop (). into ( imageView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġtyped Value Ġ= ĠTyped Value (); ĊĠĠĠĠĠĠĠ Ġtheme . resolve Attribute ( R . attr . color Primary Dark , Ġtyped Value , Ġtrue ); ĊĠĠĠĠĠĠĠ Ġheader Ġ= ĠAccount Header Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Activity ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with On Account Header Listener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġheader . header Background View . set BackgroundColor ( typed Value . data ) ĊĠĠĠĠĠĠĠ Ġdrawer Ġ= ĠDraw er Builder (). with Activity ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Account Header ( header ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Drawer Items ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Identifier ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Name ( R . string . my page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Selectable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon ( Context Compat . get Drawable ( this , ĠR . drawable . ic _ action _ my _ white )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon Tint ing Enabled ( true ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Identifier ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Name ( R . string . search source ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Selectable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon ( Context Compat . get Drawable ( this , ĠR . drawable . ic _ action _ logo )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon Tint ing Enabled ( true ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Identifier ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Name ( R . string . clean cat che ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Selectable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon ( Context Compat . get Drawable ( this , ĠR . drawable . ic _ action _ l aj it ong )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon Tint ing Enabled ( true ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Identifier ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Name ( R . string . history record ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Selectable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon ( Context Compat . get Drawable ( this , ĠR . drawable . ic _ action _ sh ij ian )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon Tint ing Enabled ( true ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Identifier ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Name ( R . string . theme colo ful ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Selectable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon ( Context Compat . get Drawable ( this , ĠR . drawable . ic _ action _ theme )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon Tint ing Enabled ( true ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Identifier ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Name ( R . string . app setting ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Selectable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon ( Context Compat . get Drawable ( this , ĠR . drawable . ic _ action _ share _ setting )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon Tint ing Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Sticky Drawer Items ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPrimary Drawer Item () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon ( Context Compat . get Drawable ( this , ĠR . drawable . ic _ action _ download )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Name ( R . string . download _ progress ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Selectable ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon Tint ing Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Identifier ( 8 8 8 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with SelectedItem (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Trans luc ent StatusBar ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Toolbar ( toolbar ). build () ĊĠĠĠĠĠĠĠ Ġval Ġtoggle Ġ= ĠAction Bar Drawer Toggle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġdrawer . drawer Layout , Ġtoolbar , ĠR . string . navigation _ drawer _ open , ĠR . string . navigation _ drawer _ close ) ĊĠĠĠĠĠĠĠ Ġtoggle . set Home As Up Indicator ( R . drawable . ic _ action _ logo ) Ċ // ĠĠĠĠĠĠĠ Ġtoggle . is Drawer Indicator Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtoggle . set Toolbar Navigation ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer . drawer Layout . open Drawer ( Gravity Compat . START ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdrawer . drawer Layout . add Drawer Listener ( toggle ) ĊĠĠĠĠĠĠĠ Ġdrawer . on Drawer Navigation Listener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġdrawer . on Drawer ItemClickListener Ġ= Ġobject Ġ: ĠDraw er . On Drawer ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠView ?, Ġposition : ĠInt , Ġdrawer Item : ĠID raw er Item < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" position ", Ġposition . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Hello MA ct ivity , ĠUser MA ct ivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" data ", ĠApp Data Repository . getUser (). userid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( application Context , ĠS auc en ao Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear n () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠHistory MA ct ivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠTheme Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġ 7 8 9 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoption Ġ= Ġif Ġ( AppCompat Delegate . getDefault Night Mode () Ġ== ĠAppCompat Delegate . MODE _ N IGHT _ YES ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . MODE _ N IGHT _ NO Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . MODE _ N IGHT _ YES Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( option ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( application Context , ĠSetting Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( drawer Item . identifier Ġ== Ġ 8 8 8 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this @ Hello MA ct ivity , ĠProgress Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtoggle . sync State () ĊĠĠĠĠĠĠĠ Ġval Ġpermission List Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġpermission List . add ( Manifest . permission . WRITE _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠ Ġpermission List . add ( Manifest . permission . READ _ EXTERNAL _ STORAGE ) ĊĠĠĠĠĠĠĠ Ġcheck And Request Permissions ( permission List ) ĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠĠĠĠĠ Ġview pager _ hello m . currentItem Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ). getString (" first page ", Ġ" 0 ") ?. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 Ċ // AppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ YES ) ĊĠĠĠĠĠĠĠ ĠWorks . check Update ( this ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġcheck And Request Permissions ( permission List : ĠArrayList < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList ( permission List ) ĊĠĠĠĠĠĠĠ Ġval Ġit Ġ= Ġlist . iterator () ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( it . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpermission Ġ= Ġit . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Permission Ġ= ĠContext Compat . check Self Permission ( this , Ġpermission ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Permission Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( list . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpermissions Ġ= Ġlist . to Typed Array () ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , Ġpermissions , Ġ 3 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġview pager _ hello m . adapter Ġ= ĠHello M ViewPager Adapter ( support FragmentManager ) ĊĠĠĠĠĠĠĠ Ġtab layout _ hello m . setup With ViewPager ( view pager _ hello m ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtab item Ġ= Ġtab layout _ hello m . get Tab At ( i ) !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( i ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab item . icon Ġ= ĠContext Compat . get Drawable ( this , ĠR . drawable . ic _ action _ home _ white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab item . icon Ġ= ĠContext Compat . get Drawable ( this , ĠR . drawable . ic _ action _ ranking _ white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab item . icon Ġ= ĠContext Compat . get Drawable ( this , ĠR . drawable . ic _ action _ my _ white ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview model Ġ= ĠViewModel Providers . of ( this ). get ( Hello M ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġview model . user Bean . observe ( this , Ġandroidx . lifecycle . Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Bean ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġview model . first () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġuser Bean ( it : ĠList < User Entity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprofile Setting Drawer Item Ġ= ĠProfile Setting Drawer Item () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Name ( R . string . setting ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Identifier (- 1 0 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon ( Context Compat . get Drawable ( this , ĠR . drawable . ic _ action _ share _ setting )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon Tint ed ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader . add Profile ( profile Setting Drawer Item , Ġheader . profiles ?. size Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" profile :", Ġshared Preferences Services . getInt (" user num "). to Long (). toString ()) ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġit . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . add Profile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Drawer Item () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Name ( it [ i ]. username ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Icon ( it [ i ]. user image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Email ( it [ i ]. user email ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Identifier ( i . to Long ()), Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader . setActive Profile ( shared Preferences Services . getInt (" user num "). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . error ( this , Ġresources . getString ( R . string . conflict )). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . hello _ m , Ġmenu ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( shared Preferences Services . getBoolean (" is none ")) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmenu Item Ġ= Ġnav _ view . menu . find Item ( R . id . nav _ regist ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item . isVisible Ġ= Ġtrue Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ settings Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠSearch R Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġclear n () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnormal Dialog Ġ= ĠMaterial AlertDialog Builder ( this ) ĊĠĠĠĠĠĠĠ Ġnormal Dialog . setMessage (" è¿Ļ å°Ĩ æ¸ħ çĲĨ åħ¨éĥ¨ çļĦ ç¼ĵåŃĺ ") ĊĠĠĠĠĠĠĠ Ġnormal Dialog . set Positive Button (" ç¡®å®ļ " ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide App . get ( application Context ). clear Disk Cache () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Dir ( application Context . cacheDir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Environment . get External Storage State () Ġ== ĠEnvironment . MEDIA _ MOUNT ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Dir ( application Context . external Cache Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnormal Dialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Dir ( dir : ĠFile ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dir Ġ!= Ġnull Ġ&& Ġdir . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchildren Ġ= Ġdir . list () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġchildren !!. indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġdelete Dir ( File ( dir , Ġchildren [ i ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdir !!. delete () ĊĠĠĠ Ġ} Ċ Ċ }