package Ġcom . me h me tt as . family track . ui . main Ċ Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġcom . google . android . gms . maps . Google Map Ċ import Ġcom . google . android . gms . maps . On Map Ready Callback Ċ import Ġcom . google . android . gms . maps . Support Map Fragment Ċ import Ġcom . me h me tt as . family track . R Ċ import Ġcom . me h me tt as . family track . ui . base . Base Activity Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ import Ġcom . google . android . gms . maps . model .* Ċ import Ġcom . me h me tt as . family track . data . remote . model . Marker Data Ċ import Ġcom . me h me tt as . family track . ui . main . Family Adapter . Family Adapter Ċ import Ġcom . me h me tt as . family track . utils . Dialog Utils Ċ import Ġcom . me h me tt as . family track . utils . extensions . create Marker Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġcom . google . android . gms . maps . model . Marker Ċ import Ġcom . google . common . reflect . Type Token Ċ import Ġcom . google . firebase . firestore . Document Reference Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . me h me tt as . family track . data . remote . model . family . Family Ċ import Ġcom . me h me tt as . family track . data . remote . model . family . Member Ċ import Ġcom . me h me tt as . family track . utils . Pref Utils Ċ import Ġcom . me h me tt as . family track . utils . extensions . zoom To All Markers Ċ import Ġcom . google . gson .* Ċ import Ġcom . me h me tt as . family track . data . remote . model . location . Member Location Ċ import Ġcom . me h me tt as . family track . utils . App Constants . FAMIL IES Ċ import Ġcom . me h me tt as . family track . utils . App Constants . FAMILY _ ID Ċ import Ġcom . me h me tt as . family track . utils . App Constants . FAMILY _ MEMBER S Ċ import Ġcom . me h me tt as . family track . utils . App Constants . LOCATION Ċ import Ġcom . me h me tt as . family track . utils . App Constants . MEMBER _ ID Ċ import Ġcom . me h me tt as . family track . utils . service . Location Monitoring Service Ċ Ċ class ĠMainActivity Ġ: ĠBase Activity (), ĠI Main Navigator , ĠOn Map Ready Callback , ĊĠĠĠ ĠFamily Adapter . Family Adapter Listener Ġ{ ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby ĠviewModel < Main ViewModel >() ĊĊĠĠĠ Ġprivate Ġvar Ġmarkers : ArrayList < Marker > Ġ= Ġarray ListOf () ĊĠĠĠ Ġprivate Ġvar Ġinv ited Id : String ?= Ġnull ĊĠĠĠ Ġvar Ġmember For Movement : Member ?= null ĊĊĠĠĠ Ġprivate Ġval Ġfamily Members Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFamily Adapter ( array ListOf (), this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġlayout Id : ĠInt ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . layout . activity _ main ĊĊĠĠĠ Ġoverride Ġfun Ġinit Navigator () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . set Navigator ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion ViewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġretrieve All Members From Pref () ĊĠĠĠĠĠĠĠ Ġrv Member List . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġrv Member List . adapter Ġ= Ġfamily Members Adapter ĊĠĠĠĠĠĠĠ Ġlisten For Other Members () ĊĠĠĠĠĠĠĠ Ġinit Map () ĊĊĠĠĠĠĠĠĠ Ġval Ġcollection Reference Ġ= Ġdb . collection ( FAMILY _ MEMBER S ) ĊĠĠĠĠĠĠĠ ĠviewModel . retrieve Family Members ( collection Reference , Ġfamily . family _ id !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġretrieve All Members From Pref () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠPref Utils . get Family () ĊĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson Builder (). create () ĊĠĠĠĠĠĠĠ Ġval Ġshow Type Ġ= Ġobject Ġ: ĠType Token < ArrayList < Member >>() Ġ{} . type ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= ĠJson Parser () ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġparser . parse ( data [ 2 ]. toString ()) ĊĠĠĠĠĠĠĠ Ġval Ġparsed Element Ġ= Ġelement . getAs JsonArray () ĊĠĠĠĠĠĠĠ Ġall Members Ġ= Ġgson . fromJson ( parsed Element , Ġshow Type ) Ġas ĠArrayList < Member > ĊĊĠĠĠĠĠĠĠ ĠLocation Monitoring Service . all Members Ġ= Ġall Members ĊĠĠĠĠĠĠĠ ĠsetData ( all Members ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdb Ġ= ĠFirebase Fire store . getInstance () ĊĊĠĠĠĠĠĠĠ Ġvar Ġall Members : ArrayList < Member > Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠ Ġvar Ġmap : Google Map ?= null ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġcompanion ViewModel : ĠMain ViewModel ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠPref Utils . get Family () ĊĠĠĠĠĠĠĠ Ġval Ġfamily Ġ= Ġdata [ 0 ] Ġas ĠFamily ĊĠĠĠĠĠĠĠ Ġval Ġmember Ġ= Ġdata [ 1 ] Ġas ĠMember ĊĊĠĠĠĠĠĠĠ Ġfun Ġsend Current Member Location ( location : Member Location ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Reference Ġ= Ġdb . collection ( FAMILY _ MEMBER S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( MEMBER _ ID + Ġmember . member _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collection ( LOCATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( MEMBER _ ID + Ġmember . member _ id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion ViewModel . setCurrent User Location ( location , document Reference ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, 3 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġlisten For Other Members () ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument References Ġ= Ġarray ListOf < Document Reference >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Members . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it . member _ id != Ġmember . member _ id Ġ&& Ġit . member _ id ! ="" Ġ&& Ġit != null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdocument References . add ( db . collection ( FAMILY _ MEMBER S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( MEMBER _ ID + it . member _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collection ( LOCATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( MEMBER _ ID + it . member _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion ViewModel . listen For Family Members ( document References ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Map () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġspin _ kit . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġval Ġmap Fragment Ġ= Ġsupport FragmentManager . find Fragment ById ( R . id . map Main ) Ġas ĠSupport Map Fragment ĊĠĠĠĠĠĠĠ Ġmap Fragment . getMap Async ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġoverride Ġfun Ġon Map Ready ( google Map : ĠGoogle Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Ġ= Ġgoogle Map ĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Map . set Map Style ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap Style Options . load Raw Resource Style ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , R . raw . style _ json ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠResources . NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġall Members . remove If Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . member _ id Ġ== Ġmember . member _ id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġall Members . remove At ( all Members . size - 1 ) ĊĊĠĠĠĠĠĠĠ Ġif ( all Members . size == 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkers . add ( create Marker ( this , google Map , 0 . 0 , 0 . 0 , R . drawable . ic _ sample _ member )) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( x Ġin Ġ 0 Ġ.. Ġall Members ?. size !! - 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarkers . add ( create Marker ( this , google Map , 0 . 0 , 0 . 0 , R . drawable . ic _ sample _ member )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgoogle Map . setOn Map Loaded Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspin _ kit . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetData ( members : ArrayList < Member >) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfamily Members Adapter . addData ( members ) ĊĠĠĠĠĠĠĠ Ġmembers . add ( Member (" "," ","" )) ĊĠĠĠĠĠĠĠ Ġfamily Members Adapter . addData ( members ) ĊĠĠĠĠĠĠĠ Ġ// init Map () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn Get Info . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Family Info Popup () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Invitation Dialog (){ ĊĠĠĠĠĠĠĠ ĠDialog Utils . show Invitation Dialog ( this , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject : Dialog Utils . Dialog Invitation Listener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsend Invitation ( member ID : String ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinv ited Id Ġ= Ġmember ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Reference Ġ= Ġdb . collection ( FAMILY _ MEMBER S ). document ( MEMBER _ ID + member ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . is Member Exist ( doc Reference ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Family Info Popup () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġfamily Id Ġ= Ġfamily . family _ id ĊĠĠĠĠĠĠĠ Ġvar Ġmember Id Ġ= Ġmember . member _ id ĊĠĠĠĠĠĠĠ Ġvar Ġmember Count Ġ= Ġfamily . family _ member _ count . toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠDialog Utils . Dialog Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfamily Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmember Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmember Count , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . img _ family _ two , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠDialog Utils . show AlertDialog ( this , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject : ĠDialog Utils . Dialog Alert Listener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Positive Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Negative Click () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlisten Locations Success ( member Locations : ArrayList < Member Location >) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠ Ġif ( member Locations . size == 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkers [ 0 ]. position Ġ= ĠLat Lng ( member Locations [ 0 ]. lat , member Locations [ 0 ]. lng ) ĊĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlimit Ġ= Ġmember Locations . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( markers . size != member Locations . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlimit Ġ= Ġmember Locations . size - 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġlimit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmarkers [ i ]. position Ġ= ĠLat Lng ( member Locations [ i ]. lat , member Locations [ i ]. lng ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlisten For Other Members () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( map != null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzoom To All Markers ( map !! , markers ) ĊĠĠĠĠĠĠĠ Ġ}, 3 0 0 0 ) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmember Exist () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdoc Reference Ġ= Ġdb . collection ( FAMILY _ MEMBER S ). document ( MEMBER _ ID + inv ited Id ) ĊĠĠĠĠĠĠĠ ĠviewModel . retrieve Member ( doc Reference ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmember Move Success ( items : ArrayList < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif (!( items [ 0 ] Ġas ĠBoolean )) Ġ// Ġis Ġcallback Ġfor Ġto Ġgive Ġnotice Ġfor Ġ" member Ġhas Ġretrieved " ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmember For Movement Ġ= Ġitems [ 1 ] Ġas ĠMember ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc New Family Reference Ġ= Ġdb . collection ( FAMILY _ MEMBER S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( MEMBER _ ID + member For Movement ?. member _ id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmember For Movement ?. family _ id Ġ= Ġfamily . family _ id ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . move Member To New Family ( member For Movement !! , doc New Family Reference ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ// Ġis Ġcallback Ġfor Ġrepresenting Ġthat Ġmember Ġhas Ġbeen Ġmoved Ġ/ Ġinv ited Ġto Ġa Ġnew Ġfamily ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Members . add ( member For Movement !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfamily Members Adapter . addData ( all Members ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdate Family Reference Ġ= Ġdb . collection ( FAMIL IES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( FAMILY _ ID + Ġfamily . family _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfamily . family _ member _ count Ġ= Ġall Members . size ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . write On Family ( family , update Family Reference ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkers . add ( create Marker ( this , Ġmap !! , 0 . 0 , 0 . 0 , R . drawable . ic _ sample _ member )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlisten For Other Members () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmembers Retrie ved ( members : ĠArrayList < Member >) Ġ{ ĊĠĠĠĠĠĠĠ Ġall Members Ġ= Ġmembers ĊĠĠĠĠĠĠĠ ĠPref Utils . create Family ( Gson (). toJson ( family ), Gson (). toJson ( member ), Gson (). toJson ( all Members )) ĊĠĠĠĠĠĠĠ Ġfamily Members Adapter . addData ( all Members ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Family Member Selected ( item : ĠMember ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon New Family Member Selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Invitation Dialog () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUser Location Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUser Location Failure () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmember Move Failure () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite On Family Success () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwrite On Family Failure () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmembers Not Retrie ved () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmember NotExist () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlisten Location Failures () Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠ Ġ} Ċ } Ċ