package Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . internal Ċ Ċ import Ġcom . ap ol log raph ql . apollo 3 . Concurrency Info Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . A pol lo Request Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . A pol lo Response Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . Custom Scalar Adapters Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . Mutation Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . Operation Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . Query Ċ import Ġcom . ap ol log raph ql . apollo 3 . api . Subscription Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . A pol lo Store Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . Cache Info Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . api . A pol lo Cache Headers Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . api . Cache Headers Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . cache Headers Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . cache Info Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . do Not Store Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . emit Cache Mis ses Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . fetch From Cache Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . optim istic Data Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . store Partial Responses Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . store Receive Date Ċ import Ġcom . ap ol log raph ql . apollo 3 . cache . normalized . writeTo Cache As ynchronously Ċ import Ġcom . ap ol log raph ql . apollo 3 . exception . A pol lo Exception Ċ import Ġcom . ap ol log raph ql . apollo 3 . exception . Cache Miss Exception Ċ import Ġcom . ap ol log raph ql . apollo 3 . exception . apollo ExceptionHandler Ċ import Ġcom . ap ol log raph ql . apollo 3 . interceptor . A pol lo Interceptor Ċ import Ġcom . ap ol log raph ql . apollo 3 . interceptor . A pol lo Interceptor Chain Ċ import Ġcom . ap ol log raph ql . apollo 3 . mpp . currentTimeMillis Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . catch Ċ import Ġkotlinx . coroutines . flow . emit All Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġkotlinx . coroutines . flow . flow On Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġkotlinx . coroutines . launch Ċ Ċ internal Ġclass ĠApollo Cache Interceptor ( ĊĠĠĠ Ġval Ġstore : ĠApollo Store , Ċ ) Ġ: ĠApollo Interceptor Ġ{ ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġ// ĠThe Ġstore Ġhas Ġa ĠMutable Shared Flow Ġthat Ġdoesn 't Ġlike Ġbeing Ġfrozen Ġwhen Ġusing Ġcor outines ĊĠĠĠ Ġ// ĠBut Ġis Ġok Ġto Ġfreeze Ġwhen Ġusing Ġcor outines - native - mt Ġ( see Ġhttps :// github . com / ap ol log raph ql / apollo - android / issues / 3 3 5 7 ) ĊĠĠĠ Ġ// Ġensure Never Frozen ( store ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġsuspend Ġfun Ġ< D Ġ: ĠOperation . Data > Ġmaybe Async ( request : ĠApollo Request < D >, Ġblock : Ġsuspend Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġif Ġ( request . writeTo Cache As ynchronously ) Ġ{ ĊĠĠĠĠĠ Ġval Ġscope Ġ= Ġrequest . executionContext [ Concurrency Info ] !!. coroutine Scope ĊĠĠĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġap ollo ExceptionHandler ( Exception (" An Ġexception Ġoccurred Ġwhile Ġwriting Ġto Ġthe Ġcache Ġasynchronously ", Ġe )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġblock () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* Ġ@ param Ġextra Keys Ġextra Ġkeys Ġto Ġpublish Ġin Ġcase Ġthere Ġis Ġoptim istic Ġdata ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġsuspend Ġfun Ġ< D Ġ: ĠOperation . Data > Ġmaybe WriteTo Cache ( ĊĠĠĠĠĠ Ġrequest : ĠApollo Request < D >, ĊĠĠĠĠĠ Ġresponse : ĠApollo Response < D >, ĊĠĠĠĠĠ Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , ĊĠĠĠĠĠ Ġextra Keys : ĠSet < String > Ġ= Ġempty Set (), ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġif Ġ( request . do Not Store ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( response . has Errors () Ġ&& Ġ! request . store Partial Responses ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġmaybe Async ( request ) Ġ{ ĊĠĠĠĠĠ Ġval Ġcache Keys Ġ= Ġif Ġ( response . data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcache Headers Ġ= Ġrequest . cache Headers Ġ+ Ġresponse . cache Headers ĊĠĠĠĠĠĠĠ Ġif Ġ( request . store Receive Date ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcache Headers Ġ+= Ġnow Date Cache Headers () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstore . write Operation ( request . operation , Ġresponse . data !! , Ġcustom Scalar Adapters , Ġcache Headers , Ġpublish Ġ= Ġfalse ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġempty Set () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġstore . publish ( cache Keys Ġ+ Ġextra Keys ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġ< D Ġ: ĠOperation . Data > Ġintercept ( request : ĠApollo Request < D >, Ġchain : ĠApollo Interceptor Chain ): ĠFlow < A pol lo Response < D >> Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( request . operation ) Ġ{ ĊĠĠĠĠĠ Ġis ĠSubscription Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThat 's Ġa Ġlot Ġof Ġunchecked Ġcast s Ġbut Ġshould Ġbe Ġalways Ġtrue ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġintercept Subscription ( request Ġas ĠApollo Request < Subscription . Data >, Ġchain ) Ġas ĠFlow < A pol lo Response < D >> ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis ĠMutation Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThat 's Ġa Ġlot Ġof Ġunchecked Ġcast s Ġbut Ġshould Ġbe Ġalways Ġtrue ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġintercept Mutation ( request Ġas ĠApollo Request < Mutation . Data >, Ġchain ) Ġas ĠFlow < A pol lo Response < D >> ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis ĠQuery Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThat 's Ġa Ġlot Ġof Ġunchecked Ġcast s Ġbut Ġshould Ġbe Ġalways Ġtrue ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġintercept Query ( request Ġas ĠApollo Request < Query . Data >, Ġchain ) Ġas ĠFlow < A pol lo Response < D >> ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unknown Ġoperation Ġ${ request . operation }") ĊĠĠĠ Ġ}. flow On ( request . executionContext [ Concurrency Info ] !!. dispatcher ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠSub scriptions Ġalways Ġgo Ġto Ġthe Ġnetwork ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġ< D Ġ: ĠSubscription . Data > Ġintercept Subscription ( ĊĠĠĠĠĠ Ġrequest : ĠApollo Request < D >, ĊĠĠĠĠĠ Ġchain : ĠApollo Interceptor Chain , ĊĠ Ġ): ĠFlow < A pol lo Response < D >> Ġ{ ĊĠĠĠ Ġval Ġcustom Scalar Adapters Ġ= Ġrequest . custom Scalar Adapters ĊĊĠĠĠ Ġreturn Ġchain . proceed ( request ). on Each Ġ{ ĊĠĠĠĠĠ Ġmaybe WriteTo Cache ( request , Ġit , Ġcustom Scalar Adapters ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġval Ġ< D Ġ: ĠOperation . Data > ĠApollo Request < D >. custom Scalar Adapters : ĠCustom Scalar Adapters ĊĠĠĠ Ġget () Ġ= Ġexecution Context [ Custom Scalar Adapters ] !! ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠMut ations Ġalways Ġgo Ġto Ġthe Ġnetwork Ġand Ġsupport Ġoptim istic Ġdata ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun Ġ< D Ġ: ĠMutation . Data > Ġintercept Mutation ( request : ĠApollo Request < D >, Ġchain : ĠApollo Interceptor Chain ): ĠFlow < A pol lo Response < D >> Ġ{ ĊĠĠĠ Ġval Ġcustom Scalar Adapters Ġ= Ġrequest . custom Scalar Adapters ĊĊĠĠĠ Ġreturn Ġflow Ġ{ ĊĠĠĠĠĠ Ġval Ġoptim istic Data Ġ= Ġrequest . optim istic Data ĊĠĠĠĠĠ Ġif Ġ( optim istic Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġstore . write Optim istic Updates ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Ġ= Ġrequest . operation , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Data Ġ= Ġoptim istic Data Ġas ĠD , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutation Id Ġ= Ġrequest . request Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Scalar Adapters Ġ= Ġcustom Scalar Adapters , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublish Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠ Ġ* ĠThis Ġdoesn 't Ġuse Ġ[ read From Network ] Ġso Ġthat Ġwe Ġcan Ġpublish Ġall Ġkeys Ġall Ġat Ġonce Ġafter Ġthe Ġkeys Ġhave Ġbeen Ġrolled Ġback ĊĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠ Ġvar Ġnetwork Exception : ĠApollo Exception ? Ġ= Ġnull ĊĠĠĠĠĠ Ġval Ġnetwork Responses : ĠFlow < A pol lo Response < D >> Ġ= Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠĠĠ Ġ. catch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠApollo Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Exception Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġvar Ġoptim istic Keys : ĠSet < String >? Ġ= Ġnull ĊĊĠĠĠĠĠ Ġvar Ġprevious Response : ĠApollo Response < D >? Ġ= Ġnull ĊĠĠĠĠĠ Ġnetwork Responses . collect Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( optim istic Data Ġ!= Ġnull Ġ&& Ġprevious Response Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġthrow ĠApollo Exception (" A pol lo : Ġoptim istic Ġupdates Ġcan Ġonly Ġbe Ġapplied Ġwith Ġone Ġnetwork Ġresponse ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprevious Response Ġ= Ġresponse ĊĠĠĠĠĠĠĠ Ġif Ġ( optim istic Keys Ġ== Ġnull ) Ġoptim istic Keys Ġ= Ġif Ġ( optim istic Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstore . rollback Optim istic Updates ( request . request Uuid , Ġpublish Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġempty Set () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmaybe WriteTo Cache ( request , Ġresponse , Ġcustom Scalar Adapters , Ġoptim istic Keys !! ) ĊĠĠĠĠĠĠĠ Ġemit ( response ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( network Exception Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( optim istic Keys Ġ== Ġnull ) Ġoptim istic Keys Ġ= Ġif Ġ( optim istic Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġstore . rollback Optim istic Updates ( request . request Uuid , Ġpublish Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġempty Set () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstore . publish ( optim istic Keys !! ) ĊĠĠĠĠĠĠĠ Ġthrow Ġnetwork Exception !! ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġ< D Ġ: ĠQuery . Data > Ġintercept Query ( request : ĠApollo Request < D >, Ġchain : ĠApollo Interceptor Chain ): ĠFlow < A pol lo Response < D >> Ġ{ ĊĠĠĠ Ġval Ġcustom Scalar Adapters Ġ= Ġrequest . custom Scalar Adapters ĊĠĠĠ Ġval Ġfetch From Cache Ġ= Ġrequest . fetch From Cache ĊĊĠĠĠ Ġreturn Ġflow Ġ{ ĊĠĠĠĠĠ Ġif Ġ( fetch From Cache ) Ġ{ ĊĠĠĠĠĠĠĠ Ġemit ( read From Cache ( request , Ġcustom Scalar Adapters )) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġemit All ( read From Network ( request , Ġchain , Ġcustom Scalar Adapters )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġsuspend Ġfun Ġ< D Ġ: ĠQuery . Data > Ġread From Cache ( ĊĠĠĠĠĠ Ġrequest : ĠApollo Request < D >, ĊĠĠĠĠĠ Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , ĊĠ Ġ): ĠApollo Response < D > Ġ{ ĊĠĠĠ Ġval Ġoperation Ġ= Ġrequest . operation ĊĠĠĠ Ġval Ġstart Millis Ġ= ĠcurrentTime Millis () ĊĊĠĠĠ Ġval Ġdata Ġ= Ġtry Ġ{ ĊĠĠĠĠĠ Ġstore . read Operation ( ĊĠĠĠĠĠĠĠĠĠ Ġoperation Ġ= Ġoperation , ĊĠĠĠĠĠĠĠĠĠ Ġcustom Scalar Adapters Ġ= Ġcustom Scalar Adapters , ĊĠĠĠĠĠĠĠĠĠ Ġcache Headers Ġ= Ġrequest . cache Headers ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠCache Miss Exception ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( request . emit Cache Mis ses ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠApollo Response . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Uuid Ġ= Ġrequest . request Uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Ġ= Ġoperation , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġ). add ExecutionContext ( request . executionContext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCache Info . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache Start Millis ( start Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache End Millis ( currentTimeMillis ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache Hit ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache Miss Exception ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Last ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn ĠApollo Response . Builder ( ĊĠĠĠĠĠĠĠ Ġrequest Uuid Ġ= Ġrequest . request Uuid , ĊĠĠĠĠĠĠĠ Ġoperation Ġ= Ġoperation , ĊĠĠĠĠĠĠĠ Ġdata Ġ= Ġdata , ĊĠĠĠ Ġ). add ExecutionContext ( request . executionContext ) ĊĠĠĠĠĠĠĠ Ġ. cache Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCache Info . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache Start Millis ( start Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache End Millis ( currentTimeMillis ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache Hit ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. is Last ( true ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠ Ġ} ĊĊĊĠ Ġprivate Ġsuspend Ġfun Ġ< D Ġ: ĠOperation . Data > Ġread From Network ( ĊĠĠĠĠĠ Ġrequest : ĠApollo Request < D >, ĊĠĠĠĠĠ Ġchain : ĠApollo Interceptor Chain , ĊĠĠĠĠĠ Ġcustom Scalar Adapters : ĠCustom Scalar Adapters , ĊĠ Ġ): ĠFlow < A pol lo Response < D >> Ġ{ ĊĠĠĠ Ġval Ġstart Millis Ġ= ĠcurrentTime Millis () ĊĠĠĠ Ġreturn Ġchain . proceed ( request ). on Each Ġ{ ĊĠĠĠĠĠ Ġmaybe WriteTo Cache ( request , Ġit , Ġcustom Scalar Adapters ) ĊĠĠĠ Ġ}. map Ġ{ Ġnetwork Response Ġ-> ĊĠĠĠĠĠ Ġnetwork Response . newBuilder () ĊĠĠĠĠĠĠĠĠĠ Ġ. cache Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCache Info . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. network Start Millis ( start Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. network End Millis ( currentTimeMillis ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġnow Date Cache Headers (): ĠCache Headers Ġ{ ĊĠĠĠĠĠ Ġreturn ĠCache Headers . Builder (). add Header ( A pol lo Cache Headers . DATE , Ġ( currentTimeMillis () Ġ/ 1 0 0 0 ). toString ()). build () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ