/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 8 - 2 0 2 1 ĠPre bid . org , ĠInc . Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . pre bid . mobile . rendering test app . utils Ċ Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġorg . pre bid . mobile . rendering . models . nt v . Native Ad Configuration Ċ import Ġorg . pre bid . mobile . rendering . models . nt v . Native Event Tracker Ċ import Ġorg . pre bid . mobile . rendering . models . open rt b . bid Requests . Ext Ċ import Ġorg . pre bid . mobile . rendering . models . open rt b . bid Requests . assets .* Ċ Ċ object ĠNative Configuration Store Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġstored Configuration : ĠNative Ad Configuration ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Throws ( JSONException :: class ) ĊĠĠĠ Ġfun Ġcreate Native Config From ( native Json String : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnative JsonObject Ġ= ĠJSONObject ( native Json String ) ĊĠĠĠĠĠĠĠ Ġval Ġnative Ad Configuration Ġ= ĠNative Ad Configuration () ĊĠĠĠĠĠĠĠ Ġif Ġ( native JsonObject . has (" context ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Ad Configuration . context Type Ġ= ĠgetContext ( native JsonObject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( native JsonObject . has (" context subtype ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Ad Configuration . context SubType Ġ= ĠgetContext SubType ( native JsonObject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( native JsonObject . has (" pl cmt type ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Ad Configuration . placement Type Ġ= Ġget Placement Type ( native JsonObject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( native JsonObject . has (" seq ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Ad Configuration . set Seq ( native JsonObject . getInt (" seq ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( native JsonObject . has (" privacy ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Ad Configuration . privacy Ġ= Ġnative JsonObject . getInt (" privacy ") Ġ== Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( native JsonObject . has (" assets ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextract Assets ( native Ad Configuration , Ġnative JsonObject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( native JsonObject . has (" event track ers ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextract Event Track ers ( native Ad Configuration , Ġnative JsonObject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( native JsonObject . has (" ext ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġext Ġ= ĠExt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġext . put ( native JsonObject . getJSONObject (" ext ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Ad Configuration . ext Ġ= Ġext ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstored Configuration Ġ= Ġnative Ad Configuration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Stored Native Config () Ġ= Ġstored Configuration ĊĊĠĠĠ Ġprivate Ġfun Ġextract Assets ( native Ad Configuration : ĠNative Ad Configuration , ĠjsonObject : ĠJSONObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġassets JsonArray Ġ= ĠjsonObject . get JSONArray (" assets ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġassets JsonArray . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġasset JsonObject Ġ= Ġassets JsonArray . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Ad Configuration . add Asset ( get Native Asset ( asset JsonObject )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetContext ( native JsonObject : ĠJSONObject ): ĠNative Ad Configuration . Context Type Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext List Ġ= ĠNative Ad Configuration . Context Type . values () ĊĠĠĠĠĠĠĠ Ġval Ġcontext Int Ġ= Ġnative JsonObject . getInt (" context ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcontext List . find Ġ{ Ġit . id Ġ== Ġcontext Int Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠNative Ad Configuration . Context Type . CUSTOM . apply Ġ{ Ġid Ġ= Ġcontext Int Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetContext SubType ( native JsonObject : ĠJSONObject ): ĠNative Ad Configuration . Context SubType Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Sub TypeList Ġ= ĠNative Ad Configuration . Context SubType . values () ĊĠĠĠĠĠĠĠ Ġval Ġcontext SubType Int Ġ= Ġnative JsonObject . getInt (" context subtype ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcontext Sub TypeList . find Ġ{ Ġit . id Ġ== Ġcontext SubType Int Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠNative Ad Configuration . Context SubType . CUSTOM . apply Ġ{ Ġid Ġ= Ġcontext SubType Int Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Placement Type ( native JsonObject : ĠJSONObject ): ĠNative Ad Configuration . Placement Type Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplacement TypeList Ġ= ĠNative Ad Configuration . Placement Type . values () ĊĠĠĠĠĠĠĠ Ġval Ġplacement Type Int Ġ= Ġnative JsonObject . getInt (" pl cmt type ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġplacement TypeList . find Ġ{ Ġit . id Ġ== Ġplacement Type Int Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠNative Ad Configuration . Placement Type . CUSTOM . apply Ġ{ Ġid Ġ= Ġplacement Type Int Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Native Asset ( asset Json : ĠJSONObject ): ĠNative Asset ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnative Asset : ĠNative Asset ? Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Json . has (" title ") Ġ-> Ġget Native Title ( asset Json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Json . has (" img ") Ġ-> Ġget Native Image ( asset Json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Json . has (" video ") Ġ-> Ġget Native Video ( asset Json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Json . has (" data ") Ġ-> Ġget Native Data ( asset Json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( asset Json . has (" required ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Asset ?. isRequired Ġ= Ġasset Json . getInt (" required ") Ġ== Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( asset Json . has (" ext ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Asset ?. asset Ext ?. put ( asset Json . getJSONObject (" ext ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnative Asset ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Native Title ( asset Json : ĠJSONObject ): ĠNative Asset Title Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Title Ġ= ĠNative Asset Title () ĊĠĠĠĠĠĠĠ Ġval Ġtitle Json Ġ= Ġasset Json . getJSONObject (" title ") ĊĠĠĠĠĠĠĠ Ġif Ġ( title Json . has (" len ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Title . len Ġ= Ġtitle Json . getInt (" len ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( title Json . has (" ext ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Title . title Ext . put ( title Json . getJSONObject (" ext ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġasset Title ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Native Video ( asset Json : ĠJSONObject ): ĠNative Asset Video Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Video Ġ= ĠNative Asset Video () ĊĠĠĠĠĠĠĠ Ġval Ġvideo Json Ġ= Ġasset Json . getJSONObject (" video ") ĊĠĠĠĠĠĠĠ Ġif Ġ( video Json . has (" mime s ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmime s JsonArray Ġ= Ġvideo Json . get JSONArray (" mime s ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmime s Array Ġ= ĠarrayOf Null s < String >( mime s JsonArray . length ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġmime s Array . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmime s Array [ i ] Ġ= Ġmime s JsonArray . getString ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Video . mime s Ġ= Ġmime s Array ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( video Json . has (" mind uration ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Video . min Duration Ġ= Ġvideo Json . getInt (" mind uration ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( video Json . has (" max duration ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Video . max Duration Ġ= Ġvideo Json . getInt (" max duration ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( video Json . has (" protocols ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprotocols JsonArray Ġ= Ġvideo Json . get JSONArray (" protocols ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprotocols Array Ġ= ĠarrayOf Null s < Int >( protocols JsonArray . length ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġprotocols Array . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprotocols Array [ i ] Ġ= Ġprotocols JsonArray . getInt ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Video . protocols Ġ= Ġprotocols Array ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( video Json . has (" ext ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Video . video Ext . put ( video Json . getJSONObject (" ext ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġasset Video ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Native Image ( asset Json : ĠJSONObject ): ĠNative Asset Image Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Image Ġ= ĠNative Asset Image () ĊĠĠĠĠĠĠĠ Ġval Ġimage Json Ġ= Ġasset Json . getJSONObject (" img ") ĊĠĠĠĠĠĠĠ Ġif Ġ( image Json . has (" type ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage TypeList Ġ= ĠNative Asset Image . ImageType . values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Type Int Ġ= Ġimage Json . getInt (" type ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Image . type Ġ= Ġimage TypeList . find Ġ{ Ġit . id Ġ== Ġimage Type Int Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠNative Asset Image . ImageType . CUSTOM . apply Ġ{ Ġid Ġ= Ġimage Type Int Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( image Json . has (" w ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Image . w Ġ= Ġimage Json . getInt (" w ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( image Json . has (" w min ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Image . w Min Ġ= Ġimage Json . getInt (" w min ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( image Json . has (" h ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Image . h Ġ= Ġimage Json . getInt (" h ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( image Json . has (" h min ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Image . h Min Ġ= Ġimage Json . getInt (" h min ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( image Json . has (" mime s ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmime s JsonArray Ġ= Ġimage Json . get JSONArray (" mime s ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmime s Array Ġ= ĠarrayOf Null s < String >( mime s JsonArray . length ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġmime s Array . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmime s Array [ i ] Ġ= Ġmime s JsonArray . getString ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Image . mime s Ġ= Ġmime s Array ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( image Json . has (" ext ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Image . image Ext . put ( image Json . getJSONObject (" ext ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġasset Image ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Native Data ( asset Json : ĠJSONObject ): ĠNative Asset Data Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Data Ġ= ĠNative Asset Data () ĊĠĠĠĠĠĠĠ Ġval Ġdata Json Ġ= Ġasset Json . getJSONObject (" data ") ĊĠĠĠĠĠĠĠ Ġif Ġ( data Json . has (" type ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdataType List Ġ= ĠNative Asset Data . DataType . values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdataType Int Ġ= Ġdata Json . getInt (" type ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Data . type Ġ= ĠdataType List . find Ġ{ Ġit . id Ġ== ĠdataType Int Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠNative Asset Data . DataType . CUSTOM . apply Ġ{ Ġid Ġ= ĠdataType Int Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( data Json . has (" len ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Data . len Ġ= Ġdata Json . getInt (" len ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( data Json . has (" ext ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġasset Data . data Ext . put ( data Json . getJSONObject (" ext ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġasset Data ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġextract Event Track ers ( native Ad Configuration : ĠNative Ad Configuration , ĠjsonObject : ĠJSONObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrack ers JsonArray Ġ= ĠjsonObject . get JSONArray (" event track ers ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtrack ers JsonArray . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtracker JsonObject Ġ= Ġtrack ers JsonArray . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnative Ad Configuration . add Tracker ( getEvent Tracker ( tracker JsonObject )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Event Tracker ( tracker JsonObject : ĠJSONObject ): ĠNative Event Tracker Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠeventType : ĠNative Event Tracker . EventType ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġmethods : ĠArrayList < Native Event Tracker . Event Tracking Method >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( tracker JsonObject . has (" type ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠeventType Ġ= Ġget EventType ( tracker JsonObject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( tracker JsonObject . has (" methods ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethods Ġ= Ġget Event Tracking Methods ( tracker JsonObject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġevent Tracker Ġ= ĠNative Event Tracker ( eventType , Ġmethods ) ĊĠĠĠĠĠĠĠ Ġif Ġ( tracker JsonObject . has (" ext ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġext Ġ= ĠExt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġext . put ( tracker JsonObject . getJSONObject (" ext ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Tracker . ext Ġ= Ġext ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġevent Tracker ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget EventType ( tracker JsonObject : ĠJSONObject ): ĠNative Event Tracker . EventType Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠeventType List Ġ= ĠNative Event Tracker . EventType . values () ĊĠĠĠĠĠĠĠ Ġval ĠeventType Int Ġ= Ġtracker JsonObject . getInt (" type ") ĊĊĠĠĠĠĠĠĠ Ġreturn ĠeventType List . find Ġ{ Ġit . id Ġ== ĠeventType Int Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠNative Event Tracker . EventType . CUSTOM . apply Ġ{ Ġid Ġ= ĠeventType Int Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Event Tracking Methods ( tracker JsonObject : ĠJSONObject ): ĠArrayList < Native Event Tracker . Event Tracking Method > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmethods JsonArray Ġ= Ġtracker JsonObject . get JSONArray (" methods ") ĊĠĠĠĠĠĠĠ Ġval Ġmethods List Ġ= ĠArrayList < Native Event Tracker . Event Tracking Method >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġmethods JsonArray . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod TypeList Ġ= ĠNative Event Tracker . Event Tracking Method . values () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtracking Method Int Ġ= Ġmethods JsonArray . getInt ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġmethod TypeList . find Ġ{ Ġit . id Ġ== Ġtracking Method Int Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠNative Event Tracker . Event Tracking Method . CUSTOM . apply Ġ{ Ġid Ġ= Ġtracking Method Int Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethods List . add ( method ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmethods List ĊĠĠĠ Ġ} Ċ }