@ file : Jvm Name (" Reference Validator ") Ċ Ċ package Ġcom . jak ew h art on . sdk search . reference . validator Ċ Ċ import Ġcom . github . aj alt . cli kt . core . Cli kt Command Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments . argument Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments . multiple Ċ import Ġcom . jak ew h art on . sdk search . api . dac . D ac Component Ċ import Ġcom . jak ew h art on . sdk search . reference . Android Reference Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġkotlin . time . Duration Ċ import Ġkotlin . time . minutes Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request . Builder Ċ Ċ fun Ġmain ( var arg Ġargs : ĠString ) Ġ{ ĊĠ ĠValidation Command (). main ( args . toList ()) Ċ } Ċ Ċ private Ġclass ĠValidation Command Ġ: ĠCli kt Command () Ġ{ ĊĠ Ġval Ġpackages Ġby Ġargument (" PACKAGE ", Ġhelp Ġ= Ġ" package Ġprefixes Ġto Ġvalidate Ġ( default : Ġall )") ĊĠĠĠĠĠ Ġ. multiple () ĊĊĠ Ġoverride Ġfun Ġrun () Ġ= Ġrun Blocking Ġ{ ĊĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠ Ġ. read Timeout ( 1 . minutes ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġservice Ġ= ĠD ac Component . create ( client ) ĊĠĠĠĠĠĠĠ Ġ. documentation Service () ĊĊĠĠĠ Ġval Ġf qc ns Ġ= Ġservice . list () ĊĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . className Ġ== Ġ" R " Ġ|| Ġit . className . startsWith (" R .") Ġ} ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġitem Ġ-> Ġpackages . any Ġ{ Ġitem . packageName . startsWith ( it ) Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġ. sorted With ( compare By ({ Ġit . packageName Ġ}, Ġ{ Ġit . className Ġ})) ĊĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠ Ġvar Ġpad Ġ= Ġ 0 ĊĠĠĠ Ġfun Ġlog Status ( message : ĠString ) Ġ{ ĊĠĠĠĠĠ Ġprint ("\ r $ message ". pad End ( pad )) ĊĠĠĠĠĠ Ġpad Ġ= Ġmessage . length Ġ+ Ġ 1 Ġ// ĠAccount Ġfor Ġ\ r ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġlog Print ( message : ĠString ) Ġ{ ĊĠĠĠĠĠ Ġprintln ("\ r $ message ". pad End ( pad )) ĊĠĠĠĠĠ Ġpad Ġ= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠ Ġwhile Ġ( index Ġ< Ġf qc ns . size ) Ġ{ ĊĠĠĠĠĠ Ġval Ġpercentage Ġ= Ġ( index . toFloat () Ġ/ Ġf qc ns . size Ġ* Ġ 1 0 0 0 ). toInt () Ġ/ Ġ 1 0 . 0 ĊĠĠĠĠĠ Ġval Ġchecking Ġ= Ġ" Checking Ġ${ index Ġ+ Ġ 1 } Ġof Ġ${ f qc ns . size } Ġ($ percentage %) âĢ¦ " ĊĠĠĠĠĠ Ġlog Status ( checking ) ĊĊĠĠĠĠĠ Ġval Ġfq cn Ġ= Ġf qc ns [ index ] ĊĠĠĠĠĠ Ġval Ġurl Ġ= ĠAndroid Reference . source Url ( fq cn . packageName , Ġfq cn . className ) ĊĠĠĠĠĠ Ġif Ġ( url Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠBuilder (). head (). url ( url ). build () ĊĠĠĠĠĠĠĠ Ġclient . new Call ( request ). await (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġit . code ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== Ġ 4 2 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Status ("$ checking ĠRate Ġlimited ! ĠCool ing Ġoff âĢ¦ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 2 . minutes ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ-= Ġ 1 Ġ// ĠTry Ġthis Ġindex Ġagain . ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! it . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Print ("$ code Ġ$ fq cn Ġ$ url ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġindex ++ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlog Print (" Checked Ġ$ index Ġreferences !") ĊĊĠĠĠ Ġ// ĠSh ut Ġdown ĠOk HttpClient Ġresources Ġso Ġthat Ġthe ĠJVM Ġcan Ġexit Ġclean ly . ĊĠĠĠ Ġclient . dispatcher . executor Service . shutdown () ĊĠĠĠ Ġclient . connection Pool . ev ict All () ĊĠ Ġ} Ċ } Ċ Ċ // ĠTODO Ġhttps :// github . com / Kotlin / kotlin x . coroutines / issues / 1 4 0 2 Ċ private Ġsuspend Ġfun Ġdelay ( duration : ĠDuration ) Ġ{ ĊĠ Ġkotlinx . coroutines . delay ( duration . to Long Milliseconds ()) Ċ } Ċ Ċ // ĠTODO Ġhttps :// github . com / square / okhttp / issues / 5 3 2 2 Ċ private Ġfun ĠOk HttpClient . Builder . read Timeout ( duration : ĠDuration ) Ġ= Ġapply Ġ{ ĊĠ Ġread Timeout ( duration . to Long Milliseconds (), ĠTimeUnit . MILLISECONDS ) Ċ } Ċ