CrackMe.apk
Download file
package com.google.android.exoplayer2.source.hls.playlist;
import android.net.Uri;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.drm.DrmInitData;
import com.google.android.exoplayer2.offline.StreamKey;
import com.google.android.exoplayer2.util.MimeTypes;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class HlsMultivariantPlaylist extends HlsPlaylist {
public static final HlsMultivariantPlaylist EMPTY = new HlsMultivariantPlaylist("", Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), (Format) null, Collections.emptyList(), false, Collections.emptyMap(), Collections.emptyList());
public static final int GROUP_INDEX_AUDIO = 1;
public static final int GROUP_INDEX_SUBTITLE = 2;
public static final int GROUP_INDEX_VARIANT = 0;
public final List<Rendition> audios;
public final List<Rendition> closedCaptions;
public final List<Uri> mediaPlaylistUrls;
public final Format muxedAudioFormat;
public final List<Format> muxedCaptionFormats;
public final List<DrmInitData> sessionKeyDrmInitData;
public final List<Rendition> subtitles;
public final Map<String, String> variableDefinitions;
public final List<Variant> variants;
public final List<Rendition> videos;
public static final class Variant {
public final String audioGroupId;
public final String captionGroupId;
public final Format format;
public final String subtitleGroupId;
public final Uri url;
public final String videoGroupId;
public Variant(Uri uri, Format format2, String str, String str2, String str3, String str4) {
this.url = uri;
this.format = format2;
this.videoGroupId = str;
this.audioGroupId = str2;
this.subtitleGroupId = str3;
this.captionGroupId = str4;
}
public static Variant createMediaPlaylistVariantUrl(Uri uri) {
return new Variant(uri, new Format.Builder().setId(SessionDescription.SUPPORTED_SDP_VERSION).setContainerMimeType(MimeTypes.APPLICATION_M3U8).build(), (String) null, (String) null, (String) null, (String) null);
}
public Variant copyWithFormat(Format format2) {
return new Variant(this.url, format2, this.videoGroupId, this.audioGroupId, this.subtitleGroupId, this.captionGroupId);
}
}
public static final class Rendition {
public final Format format;
public final String groupId;
public final String name;
public final Uri url;
public Rendition(Uri uri, Format format2, String str, String str2) {
this.url = uri;
this.format = format2;
this.groupId = str;
this.name = str2;
}
}
public HlsMultivariantPlaylist(String str, List<String> list, List<Variant> list2, List<Rendition> list3, List<Rendition> list4, List<Rendition> list5, List<Rendition> list6, Format format, List<Format> list7, boolean z, Map<String, String> map, List<DrmInitData> list8) {
super(str, list, z);
this.mediaPlaylistUrls = Collections.unmodifiableList(getMediaPlaylistUrls(list2, list3, list4, list5, list6));
this.variants = Collections.unmodifiableList(list2);
this.videos = Collections.unmodifiableList(list3);
this.audios = Collections.unmodifiableList(list4);
this.subtitles = Collections.unmodifiableList(list5);
this.closedCaptions = Collections.unmodifiableList(list6);
this.muxedAudioFormat = format;
this.muxedCaptionFormats = list7 != null ? Collections.unmodifiableList(list7) : null;
this.variableDefinitions = Collections.unmodifiableMap(map);
this.sessionKeyDrmInitData = Collections.unmodifiableList(list8);
}
public HlsMultivariantPlaylist copy(List<StreamKey> list) {
return new HlsMultivariantPlaylist(this.baseUri, this.tags, copyStreams(this.variants, 0, list), Collections.emptyList(), copyStreams(this.audios, 1, list), copyStreams(this.subtitles, 2, list), Collections.emptyList(), this.muxedAudioFormat, this.muxedCaptionFormats, this.hasIndependentSegments, this.variableDefinitions, this.sessionKeyDrmInitData);
}
public static HlsMultivariantPlaylist createSingleVariantMultivariantPlaylist(String str) {
return new HlsMultivariantPlaylist("", Collections.emptyList(), Collections.singletonList(Variant.createMediaPlaylistVariantUrl(Uri.parse(str))), Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), Collections.emptyList(), (Format) null, (List<Format>) null, false, Collections.emptyMap(), Collections.emptyList());
}
private static List<Uri> getMediaPlaylistUrls(List<Variant> list, List<Rendition> list2, List<Rendition> list3, List<Rendition> list4, List<Rendition> list5) {
ArrayList arrayList = new ArrayList();
for (int i = 0; i < list.size(); i++) {
Uri uri = list.get(i).url;
if (!arrayList.contains(uri)) {
arrayList.add(uri);
}
}
addMediaPlaylistUrls(list2, arrayList);
addMediaPlaylistUrls(list3, arrayList);
addMediaPlaylistUrls(list4, arrayList);
addMediaPlaylistUrls(list5, arrayList);
return arrayList;
}
private static void addMediaPlaylistUrls(List<Rendition> list, List<Uri> list2) {
for (int i = 0; i < list.size(); i++) {
Uri uri = list.get(i).url;
if (uri != null && !list2.contains(uri)) {
list2.add(uri);
}
}
}
private static <T> List<T> copyStreams(List<T> list, int i, List<StreamKey> list2) {
ArrayList arrayList = new ArrayList(list2.size());
for (int i2 = 0; i2 < list.size(); i2++) {
T t = list.get(i2);
int i3 = 0;
while (true) {
if (i3 >= list2.size()) {
break;
}
StreamKey streamKey = list2.get(i3);
if (streamKey.groupIndex == i && streamKey.streamIndex == i2) {
arrayList.add(t);
break;
}
i3++;
}
}
return arrayList;
}
}
Download file