Idle Egg Factory v2.1.5版本的 MD5 值为:7d2ba6677008ca521af0101bb927d72a
以下内容为反编译后的 l.java 源代码,内容仅作参考
package com.safedk.android.analytics.brandsafety.creatives.discoveries;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import com.mbridge.msdk.foundation.entity.CampaignUnit;
import com.safedk.android.analytics.brandsafety.BrandSafetyUtils;
import com.safedk.android.analytics.brandsafety.creatives.AdNetworkConfiguration;
import com.safedk.android.analytics.brandsafety.creatives.AdNetworkDiscovery;
import com.safedk.android.analytics.brandsafety.creatives.CreativeInfoManager;
import com.safedk.android.analytics.brandsafety.creatives.discoveries.c;
import com.safedk.android.analytics.brandsafety.creatives.infos.CreativeInfo;
import com.safedk.android.analytics.brandsafety.creatives.infos.VungleCreativeInfo;
import com.safedk.android.analytics.events.BrandSafetyEvent;
import com.safedk.android.utils.Logger;
import com.safedk.android.utils.PersistentConcurrentHashMap;
import com.safedk.android.utils.j;
import java.io.File;
import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class l extends d {
private static final String A = "MAIN_VIDEO";
private static final String B = "postBundle";
private static final String C = "templateURL";
private static final String D = "template_type";
private static final String E = "expiry";
private static final String F = "com.applovin.mediation.adapters.VungleMediationAdapter";
private static final String G = "adType";
private static final String H = "banner";
private static final String I = "placements";
private static final String J = "reference_id";
private static final String K = "is_incentivized";
private static final String L = "tpat";
private static final String M = "templateSettings";
private static final String N = "normal_replacements";
private static final String O = "clickUrl";
private static final String P = "ad_market_id";
private static final String Q = "CTA_BUTTON_URL";
private static final String R = "EC_CTA_URL";
private static final String S = "https://privacy.vungle.com/";
private static PersistentConcurrentHashMap<String, VungleCreativeInfo> T = null;
private static PersistentConcurrentHashMap<Integer, VungleCreativeInfo> U = null;
private static PersistentConcurrentHashMap<String, VungleCreativeInfo> V = null;
private static PersistentConcurrentHashMap<String, Boolean> W = null;
private static final long X = 259200000;
public static final String b = "MAIN_VIDEO.mp4";
public static final String c = "ad_markup";
public static final String k = "com.vungle.warren.BuildConfig";
public static final String l = "VERSION_NAME";
public static final String m = "(function(){var sdkId=\"{{SDK_ID}}\";var address=\"{{ADDRESS}}\";var log=function(message){try{window.webkit.messageHandlers.safedkDebug.postMessage(message)}catch(error){}};var addObservers=function(){try{var dialogboxElement=document.getElementById(\"DIALOGBOX\");if(dialogboxElement&&dialogboxElement.style&&dialogboxElement.style.visibility){var element_style_visibility=dialogboxElement.style.visibility;if(element_style_visibility==\"visible\"){window.webkit.messageHandlers.safedkNoSampling.postMessage(sdkId,address,window.outerHeight,window.outerWidth)}else{if(dialogboxElement.safedkPrivacyDialogObserver!=true){dialogboxElement.safedkPrivacyDialogObserver=true;try{var MutationObserver=window.WebKitMutationObserver||window.MutationObserver;var observer=new MutationObserver(function(mutations){mutations.forEach(function(mutation){switch(mutation.type){case\"attributes\":if(getComputedStyle(mutation.target).visibility==\"visible\"){window.webkit.messageHandlers.safedkNoSampling.postMessage(sdkId,address,window.outerHeight,window.outerWidth)}break}})});var config={attributes:true,attributeOldValue:true,attributeFilter:[\"style\"]};observer.observe(dialogboxElement,config)}catch(error){window.webkit.messageHandlers.safedkNoSamplingExc.postMessage(\"address = \"+address+\" \"+error.message+\"\\n\"+error.stack)}}}}else{var privacyPageElement=document.getElementById(\"privacy-page\");if(privacyPageElement){var privacyPageParentElement=privacyPageElement.parentElement;if(privacyPageParentElement){var computedStyle=getComputedStyle(privacyPageParentElement);if(computedStyle){var displayState=computedStyle.display;if(displayState!=\"none\"){window.webkit.messageHandlers.safedkNoSampling.postMessage(sdkId,address,window.outerHeight,window.outerWidth)}else{if(privacyPageParentElement.safedkPrivacyDialogObserver!=true){privacyPageParentElement.safedkPrivacyDialogObserver=true;try{var MutationObserver=window.WebKitMutationObserver||window.MutationObserver;var observer=new MutationObserver(function(mutations){mutations.forEach(function(mutation){switch(mutation.type){case\"attributes\":if(mutation.target.style.display!=\"none\"){window.webkit.messageHandlers.safedkNoSampling.postMessage(sdkId,address,window.outerHeight,window.outerWidth)}break}})});var config={attributes:true,attributeOldValue:true,attributeFilter:[\"style\"]};observer.observe(privacyPageParentElement,config)}catch(error){window.webkit.messageHandlers.safedkNoSamplingExc.postMessage(\"address = \"+address+\" \"+error.message+\"\\n\"+error.stack)}}}}}}}}catch(error){log(\"caught exception with error = \"+error);window.webkit.messageHandlers.safedkNoSamplingExc.postMessage(\"address = \"+address+\" \"+error.message+\"\\n\"+error.stack)}};var monitorNotifications=function(){try{var divIds=[\"ad-notification-modal\",\"gdpr-notification-view\"];for(var divId of divIds){var element=document.getElementById(divId);if(element){var className=element.className;if(element.className.endsWith(\"show\")){log(\"element.className = \"+element.className);window.webkit.messageHandlers.safedkNoSampling.postMessage(sdkId,address,window.outerHeight,window.outerWidth)}else{if(element.safedkVisibilityObserver!=true){element.safedkVisibilityObserver=true;try{var MutationObserver=window.WebKitMutationObserver||window.MutationObserver;var observer=new MutationObserver(function(mutations){mutations.forEach(function(mutation){if(mutation.type==\"attributes\"){if(mutation.target.className.endsWith(\"show\")){window.webkit.messageHandlers.safedkNoSampling.postMessage(sdkId,address,window.outerHeight,window.outerWidth)}}})});var config={attributes:true,attributeOldValue:true,attributeFilter:[\"class\"]};observer.observe(element,config)}catch(error){window.webkit.messageHandlers.safedkNoSamplingExc.postMessage(\"address = \"+address+\" \"+error.message+\"\\n\"+error.stack)}}}}}}catch(error){log(\"caught exception with error = \"+error);window.webkit.messageHandlers.safedkNoSamplingExc.postMessage(\"address = \"+address+\" \"+error.message+\"\\n\"+error.stack)}};addObservers();monitorNotifications();try{var MutationObserver=window.WebKitMutationObserver||window.MutationObserver;var observer=new MutationObserver(function(mutations){mutations.forEach(function(mutation){for(var i=0;i<mutation.addedNodes.length;i++){var node=mutation.addedNodes[i];if(node&&node.nodeName!=\"#text\"){addObservers();monitorNotifications()}}})});var config={childList:true,subtree:true};observer.observe(document,config)}catch(error){window.webkit.messageHandlers.safedkNoSamplingExc.postMessage(\"address = \"+address+\" \"+error.message+\"\\n\"+error.stack)}})();\n";
private static final String n = "VungleDiscovery";
private static final String o = "id";
private static final String p = "campaign";
private static final String q = "callToActionDest";
private static final String r = "callToActionUrl";
private static final String s = "info";
private static final String t = "impression auctioned but unsold";
private static final String u = "url";
private static final String v = "showCloseIncentivized";
private static final int w = 9999;
private static final String x = "placement_reference_id";
private static final String y = "templateSettings";
private static final String z = "cacheable_replacements";
public l() {
super(com.safedk.android.utils.f.d, n, true);
try {
T = new PersistentConcurrentHashMap<>("VungleDiscoverycreativeToIdMap");
Logger.d(n, "CI to ID map loaded, key set: " + T.keySet());
U = new PersistentConcurrentHashMap<>("VungleDiscoverymediaPlayerIdToCreativeInfo");
Logger.d(n, "media player to CI loaded, key set: " + U.keySet());
V = new PersistentConcurrentHashMap<>("VungleDiscoveryadToIdMap");
Logger.d(n, "ad to ID map loaded, key set: " + V.keySet());
W = new PersistentConcurrentHashMap<>("VungleDiscoveryplacementData");
Logger.d(n, "placement data loaded, key set: " + W.keySet());
} catch (InvalidParameterException e) {
Logger.e(n, "Error initializing VungleDiscovery, caching will not be available", e);
}
this.d.b(AdNetworkConfiguration.SUPPORTS_JAVASCRIPT_BASED_VIDEO_STATE_DETECTION, true);
this.d.b(AdNetworkConfiguration.SUPPORTS_JAVASCRIPT_BASED_PRIVACY_BUTTON_CLICK_DETECTION, true);
this.d.b(AdNetworkConfiguration.JS_PRIVACY_BUTTON_CLICK_DETECTION_SCRIPT, m);
this.d.a(AdNetworkConfiguration.SDK_SPECIFIC_CACHED_CI_MAX_AGE, X);
}
@Override
protected List<CreativeInfo> b(String str, String str2, Map<String, List<String>> map, c.a aVar) throws JSONException {
CreativeInfo a2;
j.b(n, "generate info started, url: " + str + ", buffer: " + str2 + ", maxParams: " + aVar);
JSONObject jSONObject = new JSONObject(str2);
ArrayList arrayList = new ArrayList();
if (str.contains("api.vungle.com/config")) {
j.b(n, "Config request intercepted: " + str2);
m(str2);
return null;
}
if (jSONObject.has("id")) {
CreativeInfo a3 = a(jSONObject, (String) null);
arrayList.add(a3);
T.put(a3.B(), (VungleCreativeInfo) a3);
Logger.d(n, "ci to ID map key added " + a3.B() + ", key set: " + T.keySet().toString());
} else if (jSONObject.has(CampaignUnit.JSON_KEY_ADS)) {
JSONArray jSONArray = jSONObject.getJSONArray(CampaignUnit.JSON_KEY_ADS);
int i = 0;
while (true) {
int i2 = i;
if (i2 >= jSONArray.length()) {
break;
}
JSONObject jSONObject2 = jSONArray.getJSONObject(i2);
JSONObject jSONObject3 = jSONObject2.getJSONObject(c);
String string = jSONObject2.getString(x);
if (a(jSONObject2) && (a2 = a(jSONObject3, string)) != null) {
arrayList.add(a2);
T.put(a2.B(), (VungleCreativeInfo) a2);
Logger.d(n, "ci to ID map key added " + a2.B() + ", key set: " + T.keySet().toString());
}
i = i2 + 1;
}
}
return arrayList;
}
private void m(String str) throws JSONException {
j.b(n, "process placements started, buffer = " + str);
JSONObject jSONObject = new JSONObject(str);
if (jSONObject.has(I)) {
JSONArray jSONArray = jSONObject.getJSONArray(I);
for (int i = 0; i < jSONArray.length() - 1; i++) {
JSONObject jSONObject2 = jSONArray.getJSONObject(i);
if (jSONObject2.has(J) && jSONObject2.has(K)) {
W.put(jSONObject2.getString(J), Boolean.valueOf(jSONObject2.getBoolean(K)));
Logger.d(n, "process placements added " + jSONObject2.getString(J) + " : " + jSONObject2.getBoolean(K));
} else {
Logger.d(n, "process placements placement does not contains ref_id/is_incentivized data : " + jSONObject2);
}
}
return;
}
Logger.d(n, "process placements no placements array");
}
@Override
public String b(String str, String str2) {
String n2 = n(str);
if (n2 == null) {
return null;
}
Logger.d(n, "get ad ID from resource returned ad ID: " + n2);
return n2;
}
@Override
public int c(String str) {
if (str != null) {
return str.hashCode();
}
return 0;
}
@Override
public void a(Object obj, Object obj2) {
try {
Logger.d(n, "handle media player set data source call, media player: " + obj + ", video file: " + obj2);
Uri uri = (Uri) obj2;
Logger.d(n, "handle media player set data source call, uri: " + uri.toString());
VungleCreativeInfo a2 = a(new File(uri.getPath()));
if (a2 != null && !U.containsKey(Integer.valueOf(System.identityHashCode(obj)))) {
Logger.d(n, "handle media player set data source call, adding CI to map");
U.put(Integer.valueOf(System.identityHashCode(obj)), a2);
}
} catch (Exception e) {
Logger.e(n, "exception when trying to add mediaPlayer id and VungleCreativeInfo " + e.getMessage());
}
}
@Override
public String b(Object obj) {
try {
Logger.d(n, "get CI after media player start call, media player: " + obj);
VungleCreativeInfo remove = U.remove(Integer.valueOf(System.identityHashCode(obj)));
if (remove != null) {
if (T.remove(remove.B()) == null) {
Logger.d(n, "Cannot find " + remove.B() + " in creative to ID map");
} else {
Logger.d(n, "creative to ID map key '" + remove.B() + "'removed, key set: " + T.keySet().toString());
}
Logger.d(n, "get CI after media player start call - returning " + remove.z() + " as ad ID");
return remove.z();
}
Logger.d(n, "get CI after media player start call - cannot find creative in media player ID to CI map");
return null;
} catch (Exception e) {
Logger.e(n, "exception when trying to remove from media player ID to CI map" + e.getMessage());
return null;
}
}
@Override
protected String a(String str, CreativeInfo creativeInfo) {
return null;
}
@Override
protected boolean g(String str) {
Logger.d(n, "should follow get url: " + str);
if (str.toLowerCase().endsWith(b.toLowerCase())) {
Logger.d(n, "should follow get url - returning true for url: " + str);
return true;
}
if (str.equals(S)) {
Logger.d(n, "Vungle privacy policy url invoked");
CreativeInfoManager.b(com.safedk.android.utils.f.d, (String) null);
}
String n2 = n(str);
if (n2 != null && n2.length() > 0) {
if (V.containsKey(n2)) {
Logger.d(n, "ad to ID map contains creative ID: " + n2 + ", returning true");
return true;
}
Logger.d(n, "ad to ID map does not contains creative ID: " + n2);
}
return false;
}
@Override
protected boolean b(String str, Bundle bundle) {
boolean z2 = str.contains("adx.ads.vungle.com/api/v5/ads") || str.contains("api.vungle.com/api/v4/requestAd") || str.contains("api.vungle.com/api/v5/ads") || str.contains("api.vungle.com/config");
if (z2) {
Logger.d(n, "should follow input stream, url: " + str);
}
return z2;
}
private CreativeInfo a(JSONObject jSONObject, String str) throws JSONException {
JSONObject jSONObject2;
JSONObject jSONObject3;
String adFormatType;
JSONObject optJSONObject;
JSONObject jSONObject4;
try {
j.b(n, "get CI from Json object: " + jSONObject);
String string = jSONObject.getString("id");
Logger.d(n, "ad ID: " + string);
if (string.equals("") && jSONObject.has("info") && jSONObject.getString("info").equals(t)) {
Logger.d(n, "No fill, exiting");
return null;
}
if (!jSONObject.has("templateSettings") || (jSONObject4 = jSONObject.getJSONObject("templateSettings")) == null || !jSONObject4.has(N)) {
jSONObject2 = null;
} else {
jSONObject2 = jSONObject4.getJSONObject(N);
}
if (!jSONObject.has(L)) {
jSONObject3 = null;
} else {
jSONObject3 = jSONObject.getJSONObject(L);
}
String str2 = null;
if (jSONObject2 != null && jSONObject2.has("CTA_BUTTON_URL")) {
str2 = jSONObject2.optString("CTA_BUTTON_URL", null);
}
if (str2 == null && jSONObject2 != null && jSONObject2.has(R)) {
str2 = jSONObject2.optString(R, null);
}
if (str2 == null && jSONObject.has(r)) {
str2 = jSONObject.getString(r);
}
if (str2 == null && jSONObject3 != null && jSONObject3.has(O)) {
str2 = jSONObject3.optString(O, null);
}
HashMap<String, String> b2 = b(jSONObject, string);
if (str2 == null && b2.containsKey("clickUrl_0")) {
String str3 = b2.get("clickUrl_0");
b2.remove("clickUrl_0");
str2 = str3;
}
String string2 = jSONObject.getString("campaign");
if (string2 == null || (string2 != null && string2.equals("null"))) {
Logger.d(n, "Campaign is null, exiting");
return null;
}
Logger.d(n, "Campaign: " + string2);
String str4 = string2.split("\\|")[1];
String str5 = null;
String string3 = jSONObject.getString("url");
if (jSONObject.has(B)) {
str5 = jSONObject.getString(B);
Logger.d(n, "zip files bundle identified " + str5 + " in " + B);
} else if (jSONObject.has(C)) {
str5 = jSONObject.getString(C);
Logger.d(n, "zip files bundle identified " + str5 + " in " + C);
} else {
Logger.d(n, "zip files bundle not present in prefetch data.");
}
if (TextUtils.isEmpty(string3) && (optJSONObject = jSONObject.optJSONObject("templateSettings")) != null) {
JSONObject jSONObject5 = optJSONObject.getJSONObject(z);
if (jSONObject5.has(A)) {
string3 = jSONObject5.getJSONObject(A).getString("url");
}
}
long currentTimeMillis = System.currentTimeMillis() + this.d.e(AdNetworkConfiguration.SDK_SPECIFIC_CACHED_CI_MAX_AGE);
Logger.d(n, "expiration initial value (now + 1 week) = " + currentTimeMillis);
if (jSONObject.has(E)) {
currentTimeMillis = jSONObject.getLong(E) * 1000;
Logger.d(n, "expiration override , new values is " + currentTimeMillis);
}
BrandSafetyUtils.AdType adType = BrandSafetyUtils.AdType.INTERSTITIAL;
String optString = jSONObject.optString(D, null);
if (optString != null && optString.equals(H)) {
adType = BrandSafetyUtils.AdType.BANNER;
}
if (adType == BrandSafetyUtils.AdType.INTERSTITIAL) {
if (W.containsKey(str)) {
if (W.get(str).booleanValue()) {
adFormatType = BrandSafetyEvent.AdFormatType.REWARD.toString();
} else {
adFormatType = BrandSafetyEvent.AdFormatType.INTER.toString();
}
Logger.d(n, "process placements placement " + str + " is " + adFormatType);
} else {
Logger.d(n, "process placements data does not contain the placement " + str + ", will try to determine based on REWARDED_VALUE");
adFormatType = jSONObject.optInt(v) == w ? BrandSafetyEvent.AdFormatType.REWARD.toString() : BrandSafetyEvent.AdFormatType.INTER.toString();
}
} else {
adFormatType = BrandSafetyEvent.AdFormatType.BANNER.toString();
}
ArrayList<String> f = j.f(jSONObject.toString());
Logger.d(n, "get CI from Json object - id: " + string);
Logger.d(n, "get CI from Json object - click url: " + str2);
Logger.d(n, "get CI from Json object - creative id: " + str4);
Logger.d(n, "get CI from Json object - video url: " + string3);
Logger.d(n, new StringBuilder().append("postBundle = ").append(str5).toString() != null ? str5 : "");
String string4 = jSONObject.getString(G);
Logger.d(n, "get CI from Json object - ad type: " + string4);
VungleCreativeInfo vungleCreativeInfo = new VungleCreativeInfo(adType, string, str4, str2, string3, adFormatType, str, this.h, currentTimeMillis, string4);
vungleCreativeInfo.b((List<String>) f);
V.put(string, vungleCreativeInfo);
if (string3 != null) {
vungleCreativeInfo.b(Arrays.asList(string3));
}
if (str5 != null) {
Logger.d(n, "adding zip files bundle " + str5 + " to prefetch resources");
vungleCreativeInfo.c(Arrays.asList(str5));
}
if (b2.size() > 0) {
for (String str6 : b2.values()) {
if (vungleCreativeInfo.r(str6)) {
Logger.d(n, "adding url to CI dsp domains: " + str6);
vungleCreativeInfo.s(str6);
}
}
}
if (vungleCreativeInfo.w() == null && jSONObject.has(q)) {
a(jSONObject.getString(q), vungleCreativeInfo);
}
if (vungleCreativeInfo.w() == null && jSONObject.has(r)) {
a(jSONObject.getString(r), vungleCreativeInfo);
}
if (vungleCreativeInfo.w() == null && jSONObject.has("ad_market_id")) {
a(jSONObject.getString("ad_market_id"), vungleCreativeInfo);
}
if (vungleCreativeInfo.w() == null && jSONObject2 != null && jSONObject2.has("CTA_BUTTON_URL")) {
a(jSONObject2.getString("CTA_BUTTON_URL"), vungleCreativeInfo);
}
if (vungleCreativeInfo.w() == null && jSONObject2 != null && jSONObject2.has(R)) {
a(jSONObject2.getString(R), vungleCreativeInfo);
}
if (vungleCreativeInfo.w() == null && jSONObject3 != null && jSONObject3.has(O)) {
a(jSONObject3.getString(O), vungleCreativeInfo);
return vungleCreativeInfo;
}
return vungleCreativeInfo;
} catch (Throwable th) {
Logger.e(n, "get CI from Json object exception: " + th.getMessage(), th);
return null;
}
}
private void a(String str, VungleCreativeInfo vungleCreativeInfo) {
if (str != null && j.t(str)) {
vungleCreativeInfo.n(str);
Logger.d(n, "app package name will be updated to " + str);
} else {
Logger.d(n, "app package name value is " + str + ", not valid, skipping");
}
}
private HashMap<String, String> b(JSONObject jSONObject, String str) {
HashMap<String, String> hashMap = new HashMap<>();
try {
if (jSONObject.has(L)) {
JSONObject jSONObject2 = jSONObject.getJSONObject(L);
Iterator<String> keys = jSONObject2.keys();
while (keys.hasNext()) {
String obj = keys.next().toString();
if (jSONObject2.get(obj) instanceof JSONArray) {
JSONArray jSONArray = jSONObject2.getJSONArray(obj);
Logger.d(n, "iterating over key '" + obj + "' , content: " + jSONArray.toString());
if (jSONArray.length() > 0) {
for (int i = 0; i < jSONArray.length(); i++) {
if (!hashMap.values().contains(jSONArray.getString(i))) {
hashMap.put(obj + "_" + i, jSONArray.getString(i));
Logger.d(n, "collecting additional url: " + jSONArray.getString(i));
} else {
Logger.d(n, "url already in map. skipping: " + jSONArray.getString(i));
}
}
}
} else {
Logger.d(n, "key '" + obj + "' is not a JSONArray, skipping");
}
}
} else {
Logger.d(n, "tpat key does not exist, exiting");
}
} catch (JSONException e) {
Logger.e(n, "Error collecting urls under tpat key", e);
}
return hashMap;
}
private VungleCreativeInfo a(File file) {
if (file == null) {
Logger.d(n, "get ad ID by video file - file is null");
return null;
}
String n2 = n(file.getAbsolutePath());
Logger.d(n, "get ad ID by video file - creative to ID map iteration, looking for '" + n2 + "', key set: " + T.keySet().toString());
if (T != null && n2 != null) {
VungleCreativeInfo remove = T.remove(n2);
if (remove != null) {
Logger.d(n, "get ad ID by video file - CI MATCH! creative found: " + n2);
return remove;
}
Iterator<String> it = T.keySet().iterator();
while (it.hasNext()) {
VungleCreativeInfo vungleCreativeInfo = T.get(it.next());
if (vungleCreativeInfo.B().equals(n2)) {
Logger.d(n, "get ad ID by video file - CI MATCH! creative found: " + n2);
return vungleCreativeInfo;
}
}
}
Logger.d(n, "get ad ID by video file - creative not found");
return null;
}
private String n(String str) {
if (str.split("/").length > 1) {
String str2 = str.split("/")[str.split("/").length - 2];
Logger.d(n, "ad ID to be searched: " + str2);
return str2;
}
Logger.d(n, "file path is not according to the expected pattern: " + str + ", cannot extract CreativeId");
return null;
}
private boolean a(JSONObject jSONObject) throws JSONException {
JSONObject jSONObject2 = (JSONObject) jSONObject.get(c);
if (!jSONObject2.has(D)) {
return true;
}
String string = jSONObject2.getString(D);
return string == null || !string.toLowerCase().equals("mrec");
}
@Override
public Set<String> c() {
return new HashSet();
}
@Override
public String f() {
return F;
}
@Override
public AdNetworkDiscovery.WebViewResourceMatchingMethod b() {
return AdNetworkDiscovery.WebViewResourceMatchingMethod.WEBVIEW_LOOKUP;
}
@Override
public void i() {
Logger.d(n, "clear old CIs started");
super.i();
com.safedk.android.utils.e.a(T, "VungleDiscovery:creativeToIdMap");
com.safedk.android.utils.e.a(U, "VungleDiscovery:mediaPlayerIdToCreativeInfo");
com.safedk.android.utils.e.a(V, "VungleDiscovery:adToIdMap");
}
}