package Ġeu . kan ade . t ach iy omi . extension . zh . jin m ant iant ang Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Rect Ċ import Ġandroidx . preference . EditText Preference Ċ import Ġandroidx . preference . Preference Screen Ċ import Ġeu . kan ade . t ach iy omi . lib . rate limit . Specific Host RateLimit Interceptor Ċ import Ġeu . kan ade . t ach iy omi . network . GET Ċ import Ġeu . kan ade . t ach iy omi . network . as Observable Success Ċ import Ġeu . kan ade . t ach iy omi . source . Configurable Source Ċ import Ġeu . kan ade . t ach iy omi . source . model . Filter Ċ import Ġeu . kan ade . t ach iy omi . source . model . Filter List Ċ import Ġeu . kan ade . t ach iy omi . source . model . M ang as Page Ċ import Ġeu . kan ade . t ach iy omi . source . model . Page Ċ import Ġeu . kan ade . t ach iy omi . source . model . S Chapter Ċ import Ġeu . kan ade . t ach iy omi . source . model . SM anga Ċ import Ġeu . kan ade . t ach iy omi . source . online . Parsed Http Source Ċ import Ġeu . kan ade . t ach iy omi . util . as J soup Ċ import Ġokhttp 3 . Http Url Ċ import Ġokhttp 3 . Http Url . Companion . to Http Url OrNull Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType OrNull Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . Response Ċ import Ġokhttp 3 . ResponseBody . Companion . to ResponseBody Ċ import Ġorg . js oup . nodes . Document Ċ import Ġorg . js oup . nodes . Element Ċ import Ġorg . js oup . select . Elements Ċ import Ġrx . Observable Ċ import Ġu y . ko hes ive . in jekt . In jekt Ċ import Ġu y . ko hes ive . in jekt . api . get Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . InputStream Ċ import Ġjava . math . BigInteger Ċ import Ġjava . security . Message Digest Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util . Locale Ċ import Ġkotlin . math . floor Ċ Ċ class ĠJ in m ant iant ang Ġ: ĠConfigur able Source , ĠParsed Http Source () Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġlang : ĠString Ġ= Ġ" zh " ĊĠĠĠ Ġoverride Ġval Ġname : ĠString Ġ= Ġ" ç¦ģ æ¼ « å¤© åł Ĥ " ĊĠĠĠ Ġoverride Ġval Ġsupports Latest : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġprivate Ġval Ġpreferences : ĠSharedPreferences Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠIn jekt . get < Application >(). get SharedPreferences (" source _$ id ", Ġ 0 x 0 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval ĠbaseUrl : ĠString Ġ= Ġ" http :// 1 2 7 . 0 . 0 . 1 : 8 8 9 9 /_ /" Ġ+ ĊĠĠĠĠĠĠĠ ĠS ITE _ ENTR IES _ ARRAY [ preferences . getString ( USE _ MIR ROR _ URL _ PRE F , Ġ" 0 ") !!. toInt ()] ĊĠĠĠ Ġprivate Ġval Ġbase Http Url : ĠHttp Url Ġ= ĠbaseUrl . to Http Url OrNull () !! ĊĊĠĠĠ Ġ// ĠAdd Ġrate Ġlimit Ġto Ġfix Ġm anga Ġthumbnail Ġload Ġfailure ĊĠĠĠ Ġprivate Ġval Ġmain Site RateLimit Interceptor Ġ= ĠSpecific Host RateLimit Interceptor ( base Http Url , Ġpreferences . getString ( MAIN SITE _ RATE LIMIT _ PRE F , Ġ" 1 ") !!. toInt (), Ġpreferences . getString ( MAIN SITE _ RATE LIMIT _ PERIOD , Ġ" 3 ") !!. to Long ()) ĊĊĠĠĠ Ġ// Ġ 2 2 0 9 8 0 ĊĠĠĠ Ġ// Ġ ç®Ĺæ³ķ Ġhtml é¡µéĿ¢ Ġ 1 8 0 0 Ġ è¡Į å·¦ åı³ ĊĠĠĠ Ġ// Ġ åĽ¾çīĩ å¼Ģå§ĭ åĪĨ åī² çļĦ ID ç¼ĸåı· ĊĠĠĠ Ġprivate Ġval Ġscr amble Id Ġ= Ġ 2 2 0 9 8 0 ĊĊĠĠĠ Ġ// Ġ å¤ĦçĲĨ URL è¯·æ±Ĥ ĊĠĠĠ Ġoverride Ġval Ġclient : ĠOk HttpClient Ġ= Ġnetwork . cloudflare Client ĊĠĠĠĠĠĠĠ Ġ. newBuilder () ĊĠĠĠĠĠĠĠ Ġ. add Network Interceptor ( main Site RateLimit Interceptor ) Ċ // ĠĠĠĠĠĠĠ Ġ. add Network Interceptor ( RateLimit Interceptor ( 1 , Ġ 3 )) ĊĠĠĠĠĠĠĠ Ġ. add Interceptor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ( chain ): ĠResponse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġchain . request (). url . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġchain . proceed ( chain . request ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! url . contains (" media / photos ", Ġignore Case Ġ= Ġtrue )) Ġreturn Ġresponse Ġ// Ġå¯¹ éĿŀ æ¼ « çĶ» åĽ¾çīĩ è¿ŀæİ¥ çĽ´æİ¥ æĶ¾ è¡Į ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url . substring ( url . indexOf (" photos /") Ġ+ Ġ 7 , Ġurl . lastIndexOf ("/ ")). toInt () Ġ< Ġscr amble Id ) Ġreturn Ġresponse Ġ// Ġå¯¹ åľ¨ æ¼ « çĶ» ç«ł èĬĤ ID ä¸º 2 2 0 9 8 0 ä¹ĭåīį çļĦ åĽ¾çīĩ æľª è¿Ľè¡Į åĽ¾çīĩ åĪĨ åī² , çĽ´æİ¥ æĶ¾ è¡Į Ċ // Ġ ç«ł èĬĤ ID : 2 2 0 9 8 0 ( åĮħåĲ« ) ä¹ĭåĲİ çļĦ æ¼ « çĶ» ( 2 0 2 0 . 1 0 . 2 7 ä¹ĭåĲİ ) åĽ¾çīĩ è¿Ľè¡Į äºĨ åĪĨ åī² get Rows åĢĴ åºı å¤ĦçĲĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaid Ġ= Ġurl . substring ( url . indexOf (" photos /") Ġ+ Ġ 7 , Ġurl . lastIndexOf ("/ ")). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg Index : ĠString Ġ= Ġurl . substring After Last ("/ "). substring Before (".") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġresponse . body !!. byte Stream (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecode Image ( it , Ġget Rows ( aid , Ġimg Index )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmedia Type Ġ= Ġ" image / av if , image / webp , image / ap ng , image /* ,* /* ". to MediaType OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Bytes Ġ= Ġres . to ResponseBody ( media Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse . newBuilder (). body ( output Bytes ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). build () ĊĊĠĠĠ Ġprivate Ġfun Ġget Rows ( aid : ĠInt , Ġimg Index : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġmd 5 ( input : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmd Ġ= ĠMessage Digest . getInstance (" MD 5 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBigInteger ( 1 , Ġmd . digest ( input . toByteArray ())). toString ( 1 6 ). pad Start ( 3 2 , Ġ' 0 ') ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( aid Ġ>= Ġ 2 6 8 8 5 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ* Ġ( md 5 ( aid . toString () Ġ+ Ġimg Index ). last (). toInt () Ġ% Ġ 1 0 ) Ġ+ Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġå¯¹ è¢« åĪĨ åī² çļĦ åĽ¾çīĩ è¿Ľè¡Į åĪĨ åī² , æİĴåºı å¤ĦçĲĨ ĊĠĠĠ Ġprivate Ġfun Ġdecode Image ( img : ĠInputStream , Ġrows : ĠInt ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġä½¿çĶ¨ bitmap è¿Ľè¡Į åĽ¾çīĩ å¤ĦçĲĨ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠBitmap Factory . decode Stream ( img ) ĊĠĠĠĠĠĠĠ Ġ// Ġæ ¼ « çĶ» é«ĺåº¦ Ġand Ġwidth ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġinput . height ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġinput . width ĊĠĠĠĠĠĠĠ Ġ// Ġ æľª éĻ¤ å°½ åĥı ç´ł ĊĠĠĠĠĠĠĠ Ġval Ġremainder Ġ= Ġ( height Ġ% Ġrows ) ĊĠĠĠĠĠĠĠ Ġ// ĠåĪĽå»º æĸ°çļĦ åĽ¾çīĩ å¯¹è±¡ ĊĠĠĠĠĠĠĠ Ġval Ġresult Bitmap Ġ= ĠBitmap . create Bitmap ( input . width , Ġinput . height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( result Bitmap ) ĊĠĠĠĠĠĠĠ Ġ// ĠåĪĨ åī² åĽ¾çīĩ ĊĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 Ġuntil Ġrows ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠåĪĨ åī² ç®Ĺæ³ķ ( è¯¦æĥħ è§ģ html æºĲçłģ é¡µ çļĦæĸ¹æ³ķ " function Ġscr amble _ image ( img )") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcopy H Ġ= Ġfloor ( height Ġ/ Ġrows . toDouble ()). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpy Ġ= Ġcopy H Ġ* Ġ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġheight Ġ- Ġ( copy H Ġ* Ġ( x Ġ+ Ġ 1 )) Ġ- Ġremainder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcopy H Ġ+= Ġremainder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpy Ġ+= Ġremainder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¦ģ è£ ģ åī ª çļĦ åĮºåŁŁ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcrop Ġ= ĠRect ( 0 , Ġy , Ġwidth , Ġy Ġ+ Ġcopy H ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è£ ģ åī ª åĲİ åºĶ æĶ¾ ç½® åĪ° æĸ° åĽ¾çīĩ å¯¹è±¡çļĦ åĮºåŁŁ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsp lic Ġ= ĠRect ( 0 , Ġpy , Ġwidth , Ġpy Ġ+ Ġcopy H ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( input , Ġcrop , Ġsp lic , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠåĪĽå»º è¾ĵåĩº æµģ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġresult Bitmap . compress ( Bitmap . Compress Format . JPEG , Ġ 1 0 0 , Ġoutput ) ĊĠĠĠĠĠĠĠ Ġreturn Ġoutput . toByteArray () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ çĤ¹åĩ» éĩı æİĴåºı ( äºº æ°Ķ ) ĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Request ( page : ĠInt ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ("$ baseUrl / albums ? o = mv & page =$ page ", Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Next Page Selector (): ĠString Ġ= Ġ" a . prev next " ĊĠĠĠ Ġoverride Ġfun Ġpopular M anga Selector (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase Selector Ġ= Ġ". list - col Ġ. well - sm " ĊĠĠĠĠĠĠĠ Ġval Ġremoved Gen res Ġ= Ġpreferences . getString (" BLOCK _ GEN RES _ LIST ", Ġ"") !!. substring Before ("// "). trim () ĊĠĠĠĠĠĠĠ Ġ// ĠExtra Ġselector Ġis Ġjquery - like Ġselector , Ġit Ġuses Ġregex Ġto Ġmatch Ġelement . text (). ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġstring Ġafter Ġæ¨ Ļ ç± ¤ Ġcontains Ġany Ġword Ġof Ġremoved Gen res , Ġthe Ġelement Ġwould Ġbe Ġignored . ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( removed Gen res Ġ!= Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Selector Ġ+ Ġ": not (: matches (( ? i ). * æ¨Ļ ç± ¤ : Ġ.* (${ removed Gen res . split (' Ġ'). join ToString ("| ") }). * )) " ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Selector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpopular M anga From Element ( element : ĠElement ): ĠSM anga Ġ= ĠSM anga . create (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġelement . select (" span . video - title "). text () ĊĠĠĠĠĠĠĠ Ġset Url Without Domain ( element . select (" a "). first (). attr (" href ")) ĊĠĠĠĠĠĠĠ Ġthumbnail _ url Ġ= Ġelement . select (" img "). attr (" data - original "). split (" ? ")[ 0 ] ĊĠĠĠĠĠĠĠ Ġauthor Ġ= Ġelement . select (" div . title - truncate "). select (" a "). first (). text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ æľĢæĸ° æİĴåºı ĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Request ( page : ĠInt ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ("$ baseUrl / albums ? o = mr & page =$ page ", Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Next Page Selector (): ĠString Ġ= Ġpopular M anga Next Page Selector () ĊĠĠĠ Ġoverride Ġfun Ġlatest Updates Selector (): ĠString Ġ= Ġpopular M anga Selector () ĊĠĠĠ Ġoverride Ġfun Ġlatest Updates From Element ( element : ĠElement ): ĠSM anga Ġ= Ġpopular M anga From Element ( element ) ĊĊĠĠĠ Ġ// ĠFor ĠJ in m ant iant ang Url Activity ĊĠĠĠ Ġprivate Ġfun Ġsearch M anga ById Request ( id : ĠString ) Ġ= ĠGET ("$ baseUrl / album /$ id ", Ġheaders ) ĊĊĠĠĠ Ġprivate Ġfun Ġsearch M anga ById Parse ( response : ĠResponse , Ġid : ĠString ): ĠM ang as Page Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġs M anga Ġ= Ġm anga Details Parse ( response ) ĊĠĠĠĠĠĠĠ Ġs M anga . url Ġ= Ġ"/ album /$ id /" ĊĠĠĠĠĠĠĠ Ġreturn ĠM ang as Page ( listOf ( s M anga ), Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Search M anga ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠFilter List ): ĠObservable < M ang as Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( query . startsWith ( PREFIX _ ID _ SEARCH )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġquery . remove Prefix ( PREFIX _ ID _ SEARCH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . new Call ( search M anga ById Request ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Observable Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġresponse Ġ-> Ġsearch M anga ById Parse ( response , Ġid ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . fetch Search M anga ( page , Ġquery , Ġfilters ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠæŁ¥è¯¢ ä¿¡æģ¯ ĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Request ( page : ĠInt , Ġquery : ĠString , Ġfilters : ĠFilter List ): ĠRequest Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġparams Ġ= Ġfilters . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠUri Part Filter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Uri Part () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ"" ĊĠĠĠĠĠĠĠ Ġ}. filter Ġ{ Ġit Ġ!= Ġ"" Ġ}. join ToString ("") ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġif Ġ( query Ġ!= Ġ"" Ġ&& Ġ! query . contains ("- ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ç¦ģ æ¼ « å¤© åł Ĥ çī¹ æľī æĲľç´¢ æĸ¹å¼ı : ĠA Ġ+ B Ġ--> ĠA Ġand ĠB , ĠA ĠB Ġ--> ĠA Ġor ĠB ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Query Ġ= Ġquery . replace ("+ ", Ġ"% 2 B "). replace (" Ġ", Ġ"+ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġremove Ġillegal Ġparam ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġparams . substring After (" ?") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( params . contains (" search _ query ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkeyword Ġ= Ġparams . substring Before ("& "). substring After (" =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Query Ġ= Ġ"$ new Query +% 2 B $ keyword " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġparams . substring After ("& ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ baseUrl / search / photos ? search _ query =$ new Query & page =$ page & $ params ". to Http Url OrNull ()?. newBuilder () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġif Ġ( params Ġ== Ġ"") Ġ"/ albums ?" Ġelse Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( query Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ baseUrl $ params & page =$ page ". to Http Url OrNull ()?. newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġåľ¨ æĲľç´¢ æłı çļĦ åħ³éĶ® è¯į åīį æ·»åĬł - åı· æĿ¥ å®ŀçİ° å¯¹ çŃ Ľ éĢī ç»ĵæŀľ çļĦ è¿ĩæ»¤ , Ġ åĥı Ġ"- Y AO I Ġ- æī ¶ ä»ĸ Ġ- æ¯ Ľ çµ ¨ çµ ¨ Ġ- ç į µ å¥ĩ ", Ġ æ³¨æĦı æŃ¤ æĹ¶ æĲľç´¢ åĬŁèĥ½ ä¸įåı¯ çĶ¨ . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremoved Gen res Ġ= Ġquery . split (" Ġ"). filter Ġ{ Ġit . startsWith ("- ") Ġ}. join ToString ("+ ") Ġ{ Ġit . remove Prefix ("- ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ baseUrl $ params & page =$ page & screen =$ removed Gen res ". to Http Url OrNull ()?. newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠGET ( url . toString (), Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Next Page Selector (): ĠString Ġ= Ġpopular M anga Next Page Selector () ĊĠĠĠ Ġoverride Ġfun Ġsearch M anga Selector (): ĠString Ġ= Ġpopular M anga Selector () ĊĠĠĠ Ġoverride Ġfun Ġsearch M anga From Element ( element : ĠElement ): ĠSM anga Ġ= Ġpopular M anga From Element ( element ) ĊĊĠĠĠ Ġ// Ġæ ¼ « çĶ» è¯¦æĥħ ĊĠĠĠ Ġ// Ġurl ç½ĳ åĿĢ Ġ, Ġtitle æłĩé¢ĺ Ġ, Ġartist èīº æľ¯ å®¶ Ġ, Ġauthor ä½ľèĢħ Ġ, Ġdescription æııè¿° Ġ, Ġgenre ç±»åŀĭ Ġ, Ġthumbnail _ url ç¼© åĽ¾ ç½ĳ åĿĢ Ġ, Ġinitialized æĺ¯åĲ¦ åĪĿå§ĭåĮĸ ĊĠĠĠ Ġ// Ġstatus çĬ¶æĢģ Ġ 0 æľª çŁ¥ , 1 è¿ŀ è½½ , 2 å®Į ç»ĵ , 3 é¢Ĩ åıĸ çīĮ çħ§ ĊĊĠĠĠ Ġoverride Ġfun Ġm anga Details Parse ( document : ĠDocument ): ĠSM anga Ġ= ĠSM anga . create (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġdocument . select (" div . panel - heading "). select (" div . pull - left "). first (). text () ĊĠĠĠĠĠĠĠ Ġ// Ġkeep Ġthumbnail _ url Ġsame Ġas Ġthe Ġone Ġin Ġpopular M anga From Element () ĊĠĠĠĠĠĠĠ Ġthumbnail _ url Ġ= Ġdocument . select (" img . lazy _ img . img - responsive "). attr (" src "). split (" ? ")[ 0 ]. replace (". jpg ", Ġ"_ 3 x 4 . jpg ") ĊĠĠĠĠĠĠĠ Ġauthor Ġ= Ġselect Author ( document ) ĊĠĠĠĠĠĠĠ Ġartist Ġ= Ġauthor ĊĠĠĠĠĠĠĠ Ġgenre Ġ= Ġselect Details Status And Genre ( document , Ġ 0 ). trim (). split (" Ġ"). join ToString (", Ġ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġthe Ġindex Ġpassed Ġby Ġthe Ġ" select Details Status And Genre ( document : ĠDocument , Ġindex : ĠInt )" Ġindex Ġis Ġ 1 , ĊĠĠĠĠĠĠĠ Ġ// Ġit Ġwill Ġdefinitely Ġreturn Ġa ĠString Ġtype Ġof Ġ 0 , Ġ 1 Ġor Ġ 2 . ĠThis Ġwarning Ġcan Ġbe Ġignored ĊĠĠĠĠĠĠĠ Ġstatus Ġ= Ġselect Details Status And Genre ( document , Ġ 1 ). trim (). toInt () ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdocument . select ("# intro - block Ġ. p - t - 5 . p - b - 5 "). text (). substring After (" æķ ĺ è¿° ï¼ļ "). trim () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠæŁ¥è¯¢ ä½ľèĢħ ä¿¡æģ¯ ĊĠĠĠ Ġprivate Ġfun Ġselect Author ( document : ĠDocument ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġdocument . select (" div . panel - body Ġdiv . tag - block ")[ 3 ] ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( element . select (" a "). size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" æľª çŁ¥ " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . select (" a "). text (). trim (). replace (" Ġ", Ġ", Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠæŁ¥è¯¢ æ¼ « çĶ» çĬ¶æĢģ åĴĮ ç±» åĪ« ä¿¡æģ¯ ĊĠĠĠ Ġprivate Ġfun Ġselect Details Status And Genre ( document : ĠDocument , Ġindex : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstatus Ġ= Ġ" 2 " ĊĠĠĠĠĠĠĠ Ġvar Ġgenre Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġif Ġ( document . select (" span [ ite mp rop = genre ] Ġa "). size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( index Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġelements : ĠElements Ġ= Ġdocument . select (" span [ ite mp rop = genre ]"). first (). select (" a ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin Ġelements ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġvote : ĠString Ġ= Ġvalue . select (" a "). text ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" éĢ£ è¼ ī ä¸Ń " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġ" 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenre Ġ= Ġ"$ genre $ vote Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( index Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenre ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġæ ¼ « çĶ» ç«ł èĬĤ ä¿¡æģ¯ ĊĠĠĠ Ġoverride Ġfun Ġchapter List Selector (): ĠString Ġ= Ġ" div [ id = episode - block ] Ġa [ href ^ =/ photo / ]" ĊĊĠĠĠ Ġoverride Ġfun Ġchapter From Element ( element : ĠElement ): ĠS Chapter Ġ= ĠS Chapter . create (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsdf Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠ Ġurl Ġ= Ġelement . select (" a "). attr (" href ") ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġelement . select (" a Ġli "). first (). own Text () ĊĠĠĠĠĠĠĠ Ġdate _ upload Ġ= Ġsdf . parse ( element . select (" a Ġli Ġspan . hidden - xs "). text (). trim ()) ?. time Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchapter List Parse ( response : ĠResponse ): ĠList < S Chapter > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġresponse . as J soup () ĊĠĠĠĠĠĠĠ Ġif Ġ( document . select (" div [ id = episode - block ] Ġa Ġli "). size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsingle Chapter Ġ= ĠS Chapter . create (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsdf Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" åįķ ç«ł èĬĤ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġdocument . select (" a [ class = col Ġbtn Ġbtn - primary Ġdropdown - toggle Ġreading ]"). attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate _ upload Ġ= Ġsdf . parse ( document . select (" div [ ite mp rop =' date Published ']"). attr (" content ")) ?. time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( single Chapter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdocument . select ( chapter List Selector ()). map Ġ{ Ġchapter From Element ( it ) Ġ}. reversed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġæ ¼ « çĶ» åĽ¾çīĩ ä¿¡æģ¯ ĊĠĠĠ Ġoverride Ġfun Ġpage List Parse ( document : ĠDocument ): ĠList < Page > Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġinternal Parse ( document : ĠDocument , Ġpages : ĠMutable List < Page >): ĠList < Page > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġdocument . select (" div [ style = text - align : center ; ][ id *= 0 ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġelements ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpages . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element . select (" div [ style = text - align : center ; ][ id *= 0 ] Ġimg "). attr (" src "). indexOf (" blank . jpg ") Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Page ( size , Ġ"", Ġelement . select (" div [ style = text - align : center ; ][ id *= 0 ] Ġimg "). attr (" data - original "). split ("\\ ? ")[ 0 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( Page ( size , Ġ"", Ġelement . select (" div [ style = text - align : center ; ][ id *= 0 ] Ġimg "). attr (" src "). split ("\\ ? ")[ 0 ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdocument . select (" a . prev next "). first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġinternal Parse ( client . new Call ( GET ( it . attr (" abs : href "), Ġheaders )). execute (). as J soup (), Ġpages ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġpages ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinternal Parse ( document , Ġmutable ListOf ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠimageUrl Parse ( document : ĠDocument ): ĠString Ġ= Ġthrow ĠException (" Not ĠUsed ") ĊĊĠĠĠ Ġ// ĠFilters ĊĠĠĠ Ġ// Ġ æĮīçħ§ ç±» åĪ« ä¿¡æģ¯ è¿Ľè¡Į æ£Ģ ç´¢ ĊĊĠĠĠ Ġoverride Ġfun Ġget Filter List () Ġ= ĠFilter List ( ĊĠĠĠĠĠĠĠ ĠCategory Group (), ĊĠĠĠĠĠĠĠ ĠSort Filter (), ĊĠĠĠĠĠĠĠ ĠTime Filter () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġclass ĠCategory Group Ġ: ĠUri Part Filter ( ĊĠĠĠĠĠĠĠ Ġ" æĮī ç±»åŀĭ ", ĊĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" åħ¨éĥ¨ ", Ġ"/ albums ? "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" åħ¶ä»ĸ ", Ġ"/ albums / another ? "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" åĲĮ äºº ", Ġ"/ albums / dou jin ? "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" éŁ © æ¼ « ", Ġ"/ albums / han man ? "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" ç¾İ æ¼ « ", Ġ"/ albums / me im an ? "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" çŁŃ ç¯ĩ ", Ġ"/ albums / short ? "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" åįķ æľ¬ ", Ġ"/ albums / single ? "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æ±ī åĮĸ ", Ġ"/ albums / dou jin / sub / chinese ? "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æĹ¥ è¯Ń ", Ġ"/ albums / dou jin / sub / j apanese ? "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æ±ī åĮĸ ", Ġ"/ albums / dou jin / sub / chinese ? "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" Co sp lay ", Ġ"/ albums / dou jin / sub / co sp lay ? "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" CG åĽ¾ éĽĨ ", Ġ"/ albums / dou jin / sub / CG ? "), ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" P ç«Ļ ", Ġ"/ search / photos ? search _ query = PIX IV & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" 3 D ", Ġ"/ search / photos ? search _ query = 3 D & "), ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" åī § æĥħ ", Ġ"/ search / photos ? search _ query = åĬ ĩ æĥħ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æł¡ åĽ Ń ", Ġ"/ search / photos ? search _ query = æł¡ åľ Ĵ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" çº ¯ çĪ± ", Ġ"/ search / photos ? search _ query = ç´ Ķ æĦ Ľ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" äºº å¦ » ", Ġ"/ search / photos ? search _ query = äºº å¦ » & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" å¸Ī çĶŁ ", Ġ"/ search / photos ? search _ query = å¸ « çĶŁ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" ä¹± ä¼ ¦ ", Ġ"/ search / photos ? search _ query = äº Ĥ åĢ « & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" è¿ĳ äº² ", Ġ"/ search / photos ? search _ query = è¿ĳ è¦ ª & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" çĻ¾ åĲĪ ", Ġ"/ search / photos ? search _ query = çĻ¾ åĲĪ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" çĶ· åĲĮ ", Ġ"/ search / photos ? search _ query = Y AO I & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æĢ§ è½¬ ", Ġ"/ search / photos ? search _ query = æĢ§ è½ ī & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" N TR ", Ġ"/ search / photos ? search _ query = N TR & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" ä¼ ª å¨ ĺ ", Ġ"/ search / photos ? search _ query = åģ ½ å¨ ĺ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" çĹ ´ å¥³ ", Ġ"/ search / photos ? search _ query = çĻ ¡ å¥³ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" åħ¨ å½ © ", Ġ"/ search / photos ? search _ query = åħ¨ å½ © & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" å¥³ æĢ§ åĲĳ ", Ġ"/ search / photos ? search _ query = å¥³ æĢ§ åĲĳ & "), ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" èĲ Ŀ èİ ī ", Ġ"/ search / photos ? search _ query = è ĺ ¿ èİ ī & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" å¾ ¡ å§ Ĳ ", Ġ"/ search / photos ? search _ query = å¾ ¡ å§ Ĳ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" çĨ Ł å¥³ ", Ġ"/ search / photos ? search _ query = çĨ Ł å¥³ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æŃ£ å¤ª ", Ġ"/ search / photos ? search _ query = æŃ£ å¤ª & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" å· ¨ ä¹ ³ ", Ġ"/ search / photos ? search _ query = å· ¨ ä¹ ³ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" è´ « ä¹ ³ ", Ġ"/ search / photos ? search _ query = è² § ä¹ ³ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" å¥³ çİĭ ", Ġ"/ search / photos ? search _ query = å¥³ çİĭ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æķĻ å¸Ī ", Ġ"/ search / photos ? search _ query = æķĻ å¸ « & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" å¥³ ä» Ĩ ", Ġ"/ search / photos ? search _ query = å¥³ åĥ ķ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æĬ¤ å£« ", Ġ"/ search / photos ? search _ query = èŃ · å£« & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æ³ ³ è£ Ŀ ", Ġ"/ search / photos ? search _ query = æ³ ³ è£ Ŀ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" çľ¼ éķľ ", Ġ"/ search / photos ? search _ query = çľ¼ é ı ¡ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" ä¸ Ŀ è¢ ľ ", Ġ"/ search / photos ? search _ query = çµ ² è¥ ª & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" è¿ŀ è£ ¤ è¢ ľ ", Ġ"/ search / photos ? search _ query = éĢ£ è¤ ² è¥ ª & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" åĪ¶ æľį ", Ġ"/ search / photos ? search _ query = åĪ¶ æľį & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" åħ Ķ å¥³ éĥ İ ", Ġ"/ search / photos ? search _ query = åħ Ķ å¥³ éĥ İ & "), ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" ç¾¤ äº¤ ", Ġ"/ search / photos ? search _ query = ç¾¤ äº¤ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" è¶³ äº¤ ", Ġ"/ search / photos ? search _ query = è¶³ äº¤ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" SM ", Ġ"/ search / photos ? search _ query = SM & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" èĤ Ľ äº¤ ", Ġ"/ search / photos ? search _ query = èĤ Ľ äº¤ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" éĺ¿ é»ĳ é¢ľ ", Ġ"/ search / photos ? search _ query = éĺ¿ é»ĳ é¡ ı & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" èį ¯ çī© ", Ġ"/ search / photos ? search _ query = èĹ ¥ çī© & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æī ¶ ä»ĸ ", Ġ"/ search / photos ? search _ query = æī ¶ ä»ĸ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" è°ĥ æķĻ ", Ġ"/ search / photos ? search _ query = èª¿ æķĻ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" éĩ İ å¤ĸ ", Ġ"/ search / photos ? search _ query = éĩ İ å¤ĸ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" éľ ² åĩº ", Ġ"/ search / photos ? search _ query = éľ ² åĩº & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" å Ĥ¬ çľ ł ", Ġ"/ search / photos ? search _ query = å Ĥ¬ çľ ł & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" èĩª æħ ° ", Ġ"/ search / photos ? search _ query = èĩª æħ ° & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" è§¦ æīĭ ", Ġ"/ search / photos ? search _ query = è§ ¸ æīĭ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" åħ ½ äº¤ ", Ġ"/ search / photos ? search _ query = ç į ¸ äº¤ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" äºļ äºº ", Ġ"/ search / photos ? search _ query = äº ŀ äºº & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" éŃ Ķ çī© ", Ġ"/ search / photos ? search _ query = éŃ Ķ çī© & "), ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" CG éĽĨ ", Ġ"/ search / photos ? search _ query = CG éĽĨ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" éĩį åı£ ", Ġ"/ search / photos ? search _ query = éĩį åı£ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" çĮ İ å¥ĩ ", Ġ"/ search / photos ? search _ query = ç į µ å¥ĩ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" éĿŀ H ", Ġ"/ search / photos ? search _ query = éĿŀ H & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" è¡ Ģ èħ ¥ ", Ġ"/ search / photos ? search _ query = è¡ Ģ èħ ¥ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æļ´ åĬĽ ", Ġ"/ search / photos ? search _ query = æļ´ åĬĽ & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" è¡ Ģ èħ ¥ æļ´ åĬĽ ", Ġ"/ search / photos ? search _ query = è¡ Ģ èħ ¥ æļ´ åĬĽ & ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġclass ĠSort Filter Ġ: ĠUri Part Filter ( ĊĠĠĠĠĠĠĠ Ġ" æİĴåºı ", ĊĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æľĢæĸ° ", Ġ" o = mr & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æľĢ å¤ļ æµıè§Ī ", Ġ" o = mv & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æľĢ å¤ļ çĪ± å¿ĥ ", Ġ" o = tf & "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æľĢ å¤ļ åĽ¾çīĩ ", Ġ" o = mp & ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġclass ĠTime Filter Ġ: ĠUri Part Filter ( ĊĠĠĠĠĠĠĠ Ġ" æĹ¶éĹ´ ", ĊĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" åħ¨éĥ¨ ", Ġ" t = a "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" ä»Ĭå¤© ", Ġ" t = t "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" è¿Ļ åĳ¨ ", Ġ" t = w "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" æľ¬ æľĪ ", Ġ" t = m ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* åĪĽå»º éĢīæĭ© è¿ĩæ»¤ åĻ¨ çļĦ ç±» ãĢĤ Ġä¸ĭ æĭī èıľåįķ ä¸ŃçļĦ æ¯ıä¸ª æĿ¡ çĽ® éĥ½ æľīä¸Ģä¸ª åĲįç§° åĴĮ ä¸Ģä¸ª æĺ¾ç¤º åĲįç§° ãĢĤ ĊĠĠĠĠ Ġ* å¦Ĥæŀľ éĢīæĭ© äºĨä¸Ģä¸ª æĿ¡ çĽ® ï¼Į å®ĥ å°Ĩ ä½ľä¸º æŁ¥è¯¢ åıĤæķ° éĻĦ åĬł åĪ° URI çļĦ æľ« å°¾ ãĢĤ ĊĠĠĠĠ Ġ* å¦Ĥæŀľ å°Ĩ first Is Unspecified è®¾ç½®ä¸º true ï¼Į åĪĻ å¦Ĥæŀľ éĢīæĭ© äºĨ ç¬¬ä¸Ģä¸ª æĿ¡ çĽ® ï¼Į åĪĻ URI ä¸įä¼ļ éĻĦ åĬł ä»»ä½ķ åĨħå®¹ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// Ġvals : Ġ< name , Ġdisplay > ĊĠĠĠ Ġprivate Ġopen Ġclass ĠUri Part Filter ( ĊĠĠĠĠĠĠĠ ĠdisplayName : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġvals : ĠArray < Pair < String , ĠString >>, ĊĠĠĠĠĠĠĠ ĠdefaultValue : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ ĠFilter . Select < String >( displayName , Ġvals . map Ġ{ Ġit . first Ġ}. to Typed Array (), ĠdefaultValue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Ġfun Ġto Uri Part () Ġ= Ġvals [ state ]. second ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup Preference Screen ( screen : ĠPreference Screen ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain Site RateLimit Preference Ġ= Ġandroidx . preference . List Preference ( screen . context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠMAIN SITE _ RATE LIMIT _ PRE F ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠMAIN SITE _ RATE LIMIT _ PRE F _ TITLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries Ġ= ĠP REF _ ENTR IES _ ARRAY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry Values Ġ= ĠP REF _ ENTR IES _ ARRAY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Ġ= ĠMAIN SITE _ RATE LIMIT _ PRE F _ SUM MARY ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DefaultValue (" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Preference ChangeListener Ġ{ Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsetting Ġ= Ġpreferences . edit (). putString ( MAIN SITE _ RATE LIMIT _ PRE F , ĠnewValue Ġas ĠString ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmain Site RateLimit Period Preference Ġ= Ġandroidx . preference . List Preference ( screen . context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠMAIN SITE _ RATE LIMIT _ PERIOD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠMAIN SITE _ RATE LIMIT _ PERIOD _ TITLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries Ġ= ĠPER IOD _ ENTR IES _ ARRAY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry Values Ġ= ĠPER IOD _ ENTR IES _ ARRAY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Ġ= ĠMAIN SITE _ RATE LIMIT _ PERIOD _ SUM MARY ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DefaultValue (" 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Preference ChangeListener Ġ{ Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsetting Ġ= Ġpreferences . edit (). putString ( MAIN SITE _ RATE LIMIT _ PERIOD , ĠnewValue Ġas ĠString ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmirror URL Preference Ġ= Ġandroidx . preference . List Preference ( screen . context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= ĠUSE _ MIR ROR _ URL _ PRE F ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠUSE _ MIR ROR _ URL _ PRE F _ TITLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries Ġ= ĠS ITE _ ENTR IES _ ARRAY _ DESCRIPTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry Values Ġ= ĠS ITE _ ENTR IES _ ARRAY _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsummary Ġ= ĠUSE _ MIR ROR _ URL _ PRE F _ SUM MARY ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DefaultValue (" 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Preference ChangeListener Ġ{ Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsetting Ġ= Ġpreferences . edit (). putString ( USE _ MIR ROR _ URL _ PRE F , ĠnewValue Ġas ĠString ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetting ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠEditText Preference ( screen . context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ" BLOCK _ GEN RES _ LIST " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠBLOCK _ PRE F _ TITLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DefaultValue ( BLOCK _ PRE F _ DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Title Ġ= ĠBLOCK _ PRE F _ DI AL O GT ITLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Preference ChangeListener Ġ{ Ġ_, ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . edit (). putString (" BLOCK _ GEN RES _ LIST ", ĠnewValue Ġas ĠString ). commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen . add Preference ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġscreen . add Preference ( main Site RateLimit Preference ) ĊĠĠĠĠĠĠĠ Ġscreen . add Preference ( main Site RateLimit Period Preference ) ĊĠĠĠĠĠĠĠ Ġscreen . add Preference ( mirror URL Preference ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ SITE Ġ= Ġ" 1 8 com ic . vip " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPREFIX _ ID _ SEARCH Ġ= Ġ" JM :" ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBLOCK _ PRE F _ TITLE Ġ= Ġ" å±ı èĶ ½ è¯į åĪĹè¡¨ " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBLOCK _ PRE F _ DEFAULT Ġ= Ġ"// Ġ ä¾ĭå¦Ĥ Ġ\" Y AO I Ġcos Ġ æī ¶ ä»ĸ Ġæ¯ Ľ çµ ¨ çµ ¨ Ġ ç į µ å¥ĩ Ġ éŁ © æ¼ « Ġ éŁ ĵ æ¼ « \", Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" åħ³éĶ® è¯į ä¹ĭéĹ´ çĶ¨ ç©º æł¼ åĪĨ ç¦» , Ġ å¤§å°ı åĨĻ ä¸į æķ ı æĦŁ , Ġ\" // \" åĲİçļĦ åŃĹç¬¦ ä¼ļ è¢« å¿½ çķ¥ " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠBLOCK _ PRE F _ DI AL O GT ITLE Ġ= Ġ" åħ³éĶ® è¯į åĪĹè¡¨ " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMAIN SITE _ RATE LIMIT _ PRE F Ġ= Ġ" main Site RateLimit Preference " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMAIN SITE _ RATE LIMIT _ PRE F _ TITLE Ġ= Ġ" åľ¨ éĻĲåĪ¶ æĹ¶éĹ´ åĨħ ï¼Ī ä¸ĭ ä¸ª è®¾ç½® é¡¹ ï¼ī åħģè®¸ çļĦ è¯·æ±Ĥ æķ°éĩı ãĢĤ " Ġ// Ġ ĠNumber Ġof Ġrequests Ġallowed Ġwithin Ġa Ġperiod Ġof Ġunits . ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMAIN SITE _ RATE LIMIT _ PRE F _ SUM MARY Ġ= Ġ" æŃ¤ åĢ¼ å½±åĵį æĽ´æĸ° ä¹¦ æŀ¶ æĹ¶ åıĳ èµ· è¿ŀæİ¥ è¯·æ±Ĥ çļĦ æķ°éĩı ãĢĤ è°ĥ ä½İ æŃ¤ åĢ¼ åı¯èĥ½ åĩı å°ı IP è¢« å±ı èĶ ½ çļĦ åĩł çİĩ ï¼Į ä½Ĩ åĬłè½½ éĢŁåº¦ ä¹Ł ä¼ļ åıĺ æħ¢ ãĢĤ éľĢè¦ģ éĩį åĲ¯ è½¯ä»¶ ä»¥ çĶŁ æķĪ ãĢĤ \ n å½ĵåīį åĢ¼ ï¼ļ % s " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMAIN SITE _ RATE LIMIT _ PERIOD Ġ= Ġ" main Site RateLimit Period Preference " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMAIN SITE _ RATE LIMIT _ PERIOD _ TITLE Ġ= Ġ" éĻĲåĪ¶ æĮģ ç»Ń æĹ¶éĹ´ ãĢĤ åįķä½į ç§Ĵ " Ġ// ĠThe Ġlimiting Ġduration . ĠDefaults Ġto Ġ 3 . ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMAIN SITE _ RATE LIMIT _ PERIOD _ SUM MARY Ġ= Ġ" æŃ¤ åĢ¼ å½±åĵį æĽ´æĸ° ä¹¦ æŀ¶ æĹ¶ è¯·æ±Ĥ çļĦ éĹ´ éļĶ æĹ¶éĹ´ ãĢĤ è°ĥ å¤§ æŃ¤ åĢ¼ åı¯èĥ½ åĩı å°ı IP è¢« å±ı èĶ ½ çļĦ åĩł çİĩ ï¼Į ä½Ĩ æĽ´æĸ° æĹ¶éĹ´ ä¹Ł ä¼ļ åıĺ æħ¢ ãĢĤ éľĢè¦ģ éĩį åĲ¯ è½¯ä»¶ ä»¥ çĶŁ æķĪ ãĢĤ \ n å½ĵåīį åĢ¼ ï¼ļ % s " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUSE _ MIR ROR _ URL _ PRE F Ġ= Ġ" use Mirror Website Preference " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUSE _ MIR ROR _ URL _ PRE F _ TITLE Ġ= Ġ" ä½¿çĶ¨ éķľ åĥı ç½ĳ åĿĢ " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUSE _ MIR ROR _ URL _ PRE F _ SUM MARY Ġ= Ġ" ä½¿çĶ¨ éķľ åĥı ç½ĳ åĿĢ ãĢĤ éľĢè¦ģ éĩį åĲ¯ è½¯ä»¶ ä»¥ çĶŁ æķĪ ãĢĤ " Ġ// Ġ" Use Ġmirror Ġurl . ĠDefaults Ġto Ġmain Ġsite " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠP REF _ ENTR IES _ ARRAY Ġ= Ġ( 1 .. 1 0 ). map Ġ{ Ġi Ġ-> Ġi . toString () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPER IOD _ ENTR IES _ ARRAY Ġ= Ġ( 1 .. 6 0 ). map Ġ{ Ġi Ġ-> Ġi . toString () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠS ITE _ ENTR IES _ ARRAY _ DESCRIPTION Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ä¸» ç«Ļ ", Ġ" æµ· å¤ĸ åĪĨ æµģ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ä¸ŃåĽ½ å¤§ éĻĨ æĢ» ç«Ļ ", Ġ" ä¸ŃåĽ½ å¤§ éĻĨ åĪĨ æµģ 1 ", Ġ" ä¸ŃåĽ½ å¤§ éĻĨ åĪĨ æµģ 2 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠS ITE _ ENTR IES _ ARRAY _ VALUE Ġ= Ġ( 0 .. 4 ). map Ġ{ Ġi Ġ-> Ġi . toString () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠ Ġ// ĠList Ġis Ġbased Ġon Ġhttps :// jm com ic 1 . one / ĊĠĠĠĠĠĠĠ Ġ// ĠPlease Ġalso Ġupdate ĠAndroid Manifest ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠS ITE _ ENTR IES _ ARRAY Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDEFAULT _ SITE , Ġ" 1 8 com ic . org ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" jm com ic 1 . cc ", Ġ" jm com ic 2 . cc ", Ġ" jm com ic 3 . cc " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ