package com.google.common.io; import com.google.common.base.Ascii; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.hash.Funnels; import com.google.common.hash.HashCode; import com.google.common.hash.HashFunction; import com.google.common.hash.Hasher; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.Reader; import java.nio.charset.Charset; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; @ElementTypesAreNonnullByDefault /* loaded from: classes3.dex */ public abstract class ByteSource { public abstract InputStream openStream() throws IOException; public CharSource asCharSource(Charset charset) { return new AsCharSource(charset); } public InputStream openBufferedStream() throws IOException { InputStream openStream = openStream(); if (openStream instanceof BufferedInputStream) { return (BufferedInputStream) openStream; } return new BufferedInputStream(openStream); } public ByteSource slice(long j, long j2) { return new SlicedByteSource(j, j2); } public boolean isEmpty() throws IOException { Optional sizeIfKnown = sizeIfKnown(); if (sizeIfKnown.isPresent()) { return sizeIfKnown.get().longValue() == 0; } Closer create = Closer.create(); try { return ((InputStream) create.register(openStream())).read() == -1; } catch (Throwable th) { try { throw create.rethrow(th); } finally { create.close(); } } } public Optional sizeIfKnown() { return Optional.absent(); } public long size() throws IOException { Optional sizeIfKnown = sizeIfKnown(); if (sizeIfKnown.isPresent()) { return sizeIfKnown.get().longValue(); } Closer create = Closer.create(); try { return countBySkipping((InputStream) create.register(openStream())); } catch (IOException unused) { create.close(); try { return ByteStreams.exhaust((InputStream) Closer.create().register(openStream())); } finally { } } finally { } } private long countBySkipping(InputStream inputStream) throws IOException { long j = 0; while (true) { long skipUpTo = ByteStreams.skipUpTo(inputStream, 2147483647L); if (skipUpTo <= 0) { return j; } j += skipUpTo; } } public long copyTo(OutputStream outputStream) throws IOException { Preconditions.checkNotNull(outputStream); try { return ByteStreams.copy((InputStream) Closer.create().register(openStream()), outputStream); } finally { } } public long copyTo(ByteSink byteSink) throws IOException { Preconditions.checkNotNull(byteSink); Closer create = Closer.create(); try { return ByteStreams.copy((InputStream) create.register(openStream()), (OutputStream) create.register(byteSink.openStream())); } finally { } } public byte[] read() throws IOException { byte[] byteArray; Closer create = Closer.create(); try { InputStream inputStream = (InputStream) create.register(openStream()); Optional sizeIfKnown = sizeIfKnown(); if (sizeIfKnown.isPresent()) { byteArray = ByteStreams.toByteArray(inputStream, sizeIfKnown.get().longValue()); } else { byteArray = ByteStreams.toByteArray(inputStream); } return byteArray; } catch (Throwable th) { try { throw create.rethrow(th); } finally { create.close(); } } } public T read(ByteProcessor byteProcessor) throws IOException { Preconditions.checkNotNull(byteProcessor); try { return (T) ByteStreams.readBytes((InputStream) Closer.create().register(openStream()), byteProcessor); } finally { } } public HashCode hash(HashFunction hashFunction) throws IOException { Hasher newHasher = hashFunction.newHasher(); copyTo(Funnels.asOutputStream(newHasher)); return newHasher.hash(); } public boolean contentEquals(ByteSource byteSource) throws IOException { int read; Preconditions.checkNotNull(byteSource); byte[] createBuffer = ByteStreams.createBuffer(); byte[] createBuffer2 = ByteStreams.createBuffer(); Closer create = Closer.create(); try { InputStream inputStream = (InputStream) create.register(openStream()); InputStream inputStream2 = (InputStream) create.register(byteSource.openStream()); do { read = ByteStreams.read(inputStream, createBuffer, 0, createBuffer.length); if (read == ByteStreams.read(inputStream2, createBuffer2, 0, createBuffer2.length) && Arrays.equals(createBuffer, createBuffer2)) { } return false; } while (read == createBuffer.length); create.close(); return true; } finally { } } public static ByteSource concat(Iterable iterable) { return new ConcatenatedByteSource(iterable); } public static ByteSource concat(Iterator it) { return concat(ImmutableList.copyOf(it)); } public static ByteSource concat(ByteSource... byteSourceArr) { return concat(ImmutableList.copyOf(byteSourceArr)); } public static ByteSource wrap(byte[] bArr) { return new ByteArrayByteSource(bArr); } public static ByteSource empty() { return EmptyByteSource.INSTANCE; } /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes3.dex */ public class AsCharSource extends CharSource { final Charset charset; AsCharSource(Charset charset) { this.charset = (Charset) Preconditions.checkNotNull(charset); } @Override // com.google.common.io.CharSource public ByteSource asByteSource(Charset charset) { return charset.equals(this.charset) ? ByteSource.this : super.asByteSource(charset); } @Override // com.google.common.io.CharSource public Reader openStream() throws IOException { return new InputStreamReader(ByteSource.this.openStream(), this.charset); } @Override // com.google.common.io.CharSource public String read() throws IOException { return new String(ByteSource.this.read(), this.charset); } public String toString() { String obj = ByteSource.this.toString(); String valueOf = String.valueOf(this.charset); return new StringBuilder(String.valueOf(obj).length() + 15 + String.valueOf(valueOf).length()).append(obj).append(".asCharSource(").append(valueOf).append(")").toString(); } } /* JADX INFO: Access modifiers changed from: private */ /* loaded from: classes3.dex */ public final class SlicedByteSource extends ByteSource { final long length; final long offset; SlicedByteSource(long j, long j2) { Preconditions.checkArgument(j >= 0, "offset (%s) may not be negative", j); Preconditions.checkArgument(j2 >= 0, "length (%s) may not be negative", j2); this.offset = j; this.length = j2; } @Override // com.google.common.io.ByteSource public InputStream openStream() throws IOException { return sliceStream(ByteSource.this.openStream()); } @Override // com.google.common.io.ByteSource public InputStream openBufferedStream() throws IOException { return sliceStream(ByteSource.this.openBufferedStream()); } private InputStream sliceStream(InputStream inputStream) throws IOException { long j = this.offset; if (j > 0) { try { if (ByteStreams.skipUpTo(inputStream, j) < this.offset) { inputStream.close(); return new ByteArrayInputStream(new byte[0]); } } finally { } } return ByteStreams.limit(inputStream, this.length); } @Override // com.google.common.io.ByteSource public ByteSource slice(long j, long j2) { Preconditions.checkArgument(j >= 0, "offset (%s) may not be negative", j); Preconditions.checkArgument(j2 >= 0, "length (%s) may not be negative", j2); long j3 = this.length - j; if (j3 <= 0) { return ByteSource.empty(); } return ByteSource.this.slice(this.offset + j, Math.min(j2, j3)); } @Override // com.google.common.io.ByteSource public boolean isEmpty() throws IOException { return this.length == 0 || super.isEmpty(); } @Override // com.google.common.io.ByteSource public Optional sizeIfKnown() { Optional sizeIfKnown = ByteSource.this.sizeIfKnown(); if (sizeIfKnown.isPresent()) { long longValue = sizeIfKnown.get().longValue(); return Optional.of(Long.valueOf(Math.min(this.length, longValue - Math.min(this.offset, longValue)))); } return Optional.absent(); } public String toString() { String obj = ByteSource.this.toString(); long j = this.offset; return new StringBuilder(String.valueOf(obj).length() + 50).append(obj).append(".slice(").append(j).append(", ").append(this.length).append(")").toString(); } } /* loaded from: classes3.dex */ private static class ByteArrayByteSource extends ByteSource { final byte[] bytes; final int length; final int offset; @Override // com.google.common.io.ByteSource public boolean isEmpty() { return this.length == 0; } @Override // com.google.common.io.ByteSource public long size() { return this.length; } ByteArrayByteSource(byte[] bArr) { this(bArr, 0, bArr.length); } ByteArrayByteSource(byte[] bArr, int i, int i2) { this.bytes = bArr; this.offset = i; this.length = i2; } @Override // com.google.common.io.ByteSource public InputStream openStream() { return new ByteArrayInputStream(this.bytes, this.offset, this.length); } @Override // com.google.common.io.ByteSource public InputStream openBufferedStream() throws IOException { return openStream(); } @Override // com.google.common.io.ByteSource public Optional sizeIfKnown() { return Optional.of(Long.valueOf(this.length)); } @Override // com.google.common.io.ByteSource public byte[] read() { byte[] bArr = this.bytes; int i = this.offset; return Arrays.copyOfRange(bArr, i, this.length + i); } @Override // com.google.common.io.ByteSource @ParametricNullness public T read(ByteProcessor byteProcessor) throws IOException { byteProcessor.processBytes(this.bytes, this.offset, this.length); return byteProcessor.getResult(); } @Override // com.google.common.io.ByteSource public long copyTo(OutputStream outputStream) throws IOException { outputStream.write(this.bytes, this.offset, this.length); return this.length; } @Override // com.google.common.io.ByteSource public HashCode hash(HashFunction hashFunction) throws IOException { return hashFunction.hashBytes(this.bytes, this.offset, this.length); } @Override // com.google.common.io.ByteSource public ByteSource slice(long j, long j2) { Preconditions.checkArgument(j >= 0, "offset (%s) may not be negative", j); Preconditions.checkArgument(j2 >= 0, "length (%s) may not be negative", j2); long min = Math.min(j, this.length); return new ByteArrayByteSource(this.bytes, this.offset + ((int) min), (int) Math.min(j2, this.length - min)); } public String toString() { String truncate = Ascii.truncate(BaseEncoding.base16().encode(this.bytes, this.offset, this.length), 30, "..."); return new StringBuilder(String.valueOf(truncate).length() + 17).append("ByteSource.wrap(").append(truncate).append(")").toString(); } } /* JADX INFO: Access modifiers changed from: private */ /* loaded from: classes3.dex */ public static final class EmptyByteSource extends ByteArrayByteSource { static final EmptyByteSource INSTANCE = new EmptyByteSource(); @Override // com.google.common.io.ByteSource.ByteArrayByteSource public String toString() { return "ByteSource.empty()"; } EmptyByteSource() { super(new byte[0]); } @Override // com.google.common.io.ByteSource public CharSource asCharSource(Charset charset) { Preconditions.checkNotNull(charset); return CharSource.empty(); } @Override // com.google.common.io.ByteSource.ByteArrayByteSource, com.google.common.io.ByteSource public byte[] read() { return this.bytes; } } /* JADX INFO: Access modifiers changed from: private */ /* loaded from: classes3.dex */ public static final class ConcatenatedByteSource extends ByteSource { final Iterable sources; ConcatenatedByteSource(Iterable iterable) { this.sources = (Iterable) Preconditions.checkNotNull(iterable); } @Override // com.google.common.io.ByteSource public InputStream openStream() throws IOException { return new MultiInputStream(this.sources.iterator()); } @Override // com.google.common.io.ByteSource public boolean isEmpty() throws IOException { Iterator it = this.sources.iterator(); while (it.hasNext()) { if (!it.next().isEmpty()) { return false; } } return true; } @Override // com.google.common.io.ByteSource public Optional sizeIfKnown() { Iterable iterable = this.sources; if (!(iterable instanceof Collection)) { return Optional.absent(); } Iterator it = iterable.iterator(); long j = 0; while (it.hasNext()) { Optional sizeIfKnown = it.next().sizeIfKnown(); if (!sizeIfKnown.isPresent()) { return Optional.absent(); } j += sizeIfKnown.get().longValue(); if (j < 0) { return Optional.of(Long.MAX_VALUE); } } return Optional.of(Long.valueOf(j)); } @Override // com.google.common.io.ByteSource public long size() throws IOException { Iterator it = this.sources.iterator(); long j = 0; while (it.hasNext()) { j += it.next().size(); if (j < 0) { return Long.MAX_VALUE; } } return j; } public String toString() { String valueOf = String.valueOf(this.sources); return new StringBuilder(String.valueOf(valueOf).length() + 19).append("ByteSource.concat(").append(valueOf).append(")").toString(); } } }