package Ġcom . tek food s . features . location Ċ Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context . ACTIVITY _ SERVICE Ċ import Ġandroid . location . Address Ċ import Ġandroid . location . Geo coder Ċ import Ġandroid . location . Location Ċ import Ġcom . tek food s . app . Pref Ċ import Ġcom . google . android . gms . maps . model . LatLng Ċ import Ġjava . io . IOException Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġr idd hi Ġon Ġ 7 / 1 1 / 1 7 . Ċ Ġ*/ Ċ open Ġclass ĠLocation Wizard Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar ĠNE AR BY _ RADIUS Ġ= ĠPref . gps Accuracy . toInt () Ġ// Ġunit Ġas Ġmeters ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Distance ( lat 1 : ĠDouble , Ġlng 1 : ĠDouble , Ġlat 2 : ĠDouble , Ġlng 2 : ĠDouble ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġearth Radius Ġ= Ġ 6 3 7 1 . 7 5 Ġ// Ġ( Ġ 3 9 5 8 . 7 5 Ġm iles Ġor Ġ 6 3 7 1 . 0 Ġk ilo meters ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Lat Ġ= ĠMath . to Radians ( lat 2 Ġ- Ġlat 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Lng Ġ= ĠMath . to Radians ( lng 2 Ġ- Ġlng 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsind Lat Ġ= ĠMath . sin ( d Lat Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsind Lng Ġ= ĠMath . sin ( d Lng Ġ/ Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠMath . pow ( s ind Lat , Ġ 2 . 0 ) Ġ+ Ġ( Math . pow ( s ind Lng , Ġ 2 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠMath . cos ( Math . to Radians ( lat 1 )) Ġ* ĠMath . cos ( Math . to Radians ( lat 2 ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġ 2 Ġ* ĠMath . atan 2 ( Math . sqrt ( a ), ĠMath . sqrt ( 1 Ġ- Ġa )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġround ( earth Radius Ġ* Ġc , Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġround ( value : ĠDouble , Ġplaces : ĠInt ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalue Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( places Ġ< Ġ 0 ) Ġthrow ĠIllegalArgumentException () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfactor Ġ= ĠMath . pow ( 1 0 . 0 , Ġplaces . toDouble ()). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue Ġ* Ġfactor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp Ġ= ĠMath . round ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtmp . toDouble () Ġ/ Ġfactor ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġis Service Running ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġcontext . getSystem Service ( ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmanager . get Running Services ( Integer . MAX _ VALUE ). any Ġ{ Ġ" com . field track ings ystem . features . location . Location F uz ed Service " Ġ== Ġit . service . className Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Location Name ( mContext : ĠContext , Ġlatitude : ĠDouble , Ġlongitude : ĠDouble ): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlocation Ġ= Ġ" Unknown " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeo coder : ĠGeo coder Ġ= ĠGeo coder ( mContext , ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddresses : ĠList < Address > Ġ= Ġgeo coder . get From Location ( latitude , Ġlongitude , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġaddresses [ 0 ]. getAddress Line ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlocation ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Ad ress From Lat lng ( mContext : ĠContext , Ġlat : ĠDouble ?, Ġlng : ĠDouble ?): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlocation Ġ= Ġ" Unknown " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeo coder : ĠGeo coder Ġ= ĠGeo coder ( mContext , ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddresses : ĠList < Address > Ġ= Ġgeo coder . get From Location ( lat !! , Ġlng !! , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġaddresses [ 0 ]. getAddress Line ( 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . contains (" http ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġaddresses [ 0 ]. locality Ġ+ Ġ" Ġ" Ġ+ Ġaddresses [ 0 ]. admin Area Ġ+ Ġ" Ġ" Ġ+ Ġaddresses [ 0 ]. country Name Ġ+ Ġ" Ġ" Ġ+ Ġaddresses [ 0 ]. postal Code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlocation ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget New Location Name ( mContext : ĠContext , Ġlatitude : ĠDouble , Ġlongitude : ĠDouble ): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlocation Ġ= Ġ" Unknown " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeo coder Ġ= ĠGeo coder ( mContext , ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġaddresses : ĠList < Address >? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddresses Ġ= Ġgeo coder . get From Location ( latitude , Ġlongitude , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( addresses Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġaddresses ?. get ( 0 )?. getAddress Line ( 0 ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlocation ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Postal Code ( mContext : ĠContext , Ġlatitude : ĠDouble , Ġlongitude : ĠDouble ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpostal code Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeo coder Ġ= ĠGeo coder ( mContext , ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddresses : ĠList < Address > Ġ= Ġgeo coder . get From Location ( latitude , Ġlongitude , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpostal code Ġ= Ġaddresses [ 0 ]. postal Code ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpostal code ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetState ( mContext : ĠContext , Ġlatitude : ĠDouble , Ġlongitude : ĠDouble ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpostal code Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeo coder Ġ= ĠGeo coder ( mContext , ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddresses : ĠList < Address > Ġ= Ġgeo coder . get From Location ( latitude , Ġlongitude , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpostal code Ġ= Ġaddresses [ 0 ]. admin Area ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpostal code ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget City ( mContext : ĠContext , Ġlatitude : ĠDouble , Ġlongitude : ĠDouble ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpostal code Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeo coder Ġ= ĠGeo coder ( mContext , ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddresses : ĠList < Address > Ġ= Ġgeo coder . get From Location ( latitude , Ġlongitude , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpostal code Ġ= Ġaddresses [ 0 ]. locality ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpostal code ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Country ( mContext : ĠContext , Ġlatitude : ĠDouble , Ġlongitude : ĠDouble ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpostal code Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgeo coder Ġ= ĠGeo coder ( mContext , ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddresses : ĠList < Address > Ġ= Ġgeo coder . get From Location ( latitude , Ġlongitude , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpostal code Ġ= Ġaddresses [ 0 ]. country Name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpostal code ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Address From Location ( mContext : ĠContext , Ġlocation : ĠLocation ): ĠAddress Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgeo coder Ġ= ĠGeo coder ( mContext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġaddress Ġ= ĠAddress ( Locale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġaddr Ġ= Ġgeo coder . get From Location ( location . latitude , Ġlocation . longitude , Ġ 1 ) Ġas ĠList < *> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( addr . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Ġ= Ġaddr [ 0 ] Ġas ĠAddress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaddress ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Location From Address ( context : ĠContext , Ġstr Address : ĠString ): ĠLat Lng ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcod er Ġ= ĠGeo coder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġaddress : ĠList < Address > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġp 1 : ĠLat Lng ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠMay Ġthrow Ġan ĠIOException ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Ġ= Ġcod er . get From Location Name ( str Address , Ġ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( address Ġ== Ġnull Ġ|| Ġaddress . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlocation Ġ= Ġaddress . get ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . latitude ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation . longitude ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp 1 Ġ= ĠLat Lng ( location . latitude , Ġlocation . longitude ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġp 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget TimeStamp (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġts Long Ġ= ĠSystem . currentTimeMillis () Ġ/ Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġts Long . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Formatted Time 2 4 Hours ( is 2 4 Hour : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf : ĠSimpleDateFormat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is 2 4 Hour ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdf Ġ= ĠSimpleDateFormat (" hh : mm ", ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdf Ġ= ĠSimpleDateFormat (" hh : mm \ n aa ", ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdf . format ( Date ()). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Hour (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf Ġ= ĠSimpleDateFormat (" hh ", ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdf . format ( Date ()). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Minute (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf Ġ= ĠSimpleDateFormat (" mm ", ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdf . format ( Date ()). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Mer idi em (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdf Ġ= ĠSimpleDateFormat (" aa ", ĠLocale . EN GL ISH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdf . format ( Date ()). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġlocation Auth entic ity ( previous Timestamp : ĠString , Ġnext TimeStamp : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Th resh ĠHold Ġspeed Ġ 6 0 ĠK m / h ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMath . abs ( System . currentTimeMillis () Ġ- ĠPref . prev TimeStamp ) Ġ/ Ġ 1 0 0 0 Ġ// seconds ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ }