package com.google.android.m4b.maps.b;

import android.os.SystemClock;
import com.google.android.m4b.maps.a.b;
import com.google.android.m4b.maps.a.b.a;
import com.google.android.m4b.maps.a.s;
import java.io.EOFException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public final class c
  implements b
{
  private final Map<String, a> a = new LinkedHashMap(16, 0.75F, true);
  private long b = 0L;
  private final File c;
  private final int d;

  public c(File paramFile, int paramInt)
  {
    this.c = paramFile;
    this.d = 20971520;
  }

  static int a(InputStream paramInputStream)
  {
    return 0x0 | e(paramInputStream) << 0 | e(paramInputStream) << 8 | e(paramInputStream) << 16 | e(paramInputStream) << 24;
  }

  static void a(OutputStream paramOutputStream, int paramInt)
  {
    paramOutputStream.write(0xFF & paramInt >> 0);
    paramOutputStream.write(0xFF & paramInt >> 8);
    paramOutputStream.write(0xFF & paramInt >> 16);
    paramOutputStream.write(0xFF & paramInt >> 24);
  }

  static void a(OutputStream paramOutputStream, long paramLong)
  {
    paramOutputStream.write((byte)(int)(paramLong >>> 0));
    paramOutputStream.write((byte)(int)(paramLong >>> 8));
    paramOutputStream.write((byte)(int)(paramLong >>> 16));
    paramOutputStream.write((byte)(int)(paramLong >>> 24));
    paramOutputStream.write((byte)(int)(paramLong >>> 32));
    paramOutputStream.write((byte)(int)(paramLong >>> 40));
    paramOutputStream.write((byte)(int)(paramLong >>> 48));
    paramOutputStream.write((byte)(int)(paramLong >>> 56));
  }

  static void a(OutputStream paramOutputStream, String paramString)
  {
    byte[] arrayOfByte = paramString.getBytes("UTF-8");
    a(paramOutputStream, arrayOfByte.length);
    paramOutputStream.write(arrayOfByte, 0, arrayOfByte.length);
  }

  private void a(String paramString, a parama)
  {
    if (!this.a.containsKey(paramString));
    a locala;
    for (this.b += parama.a; ; this.b += parama.a - locala.a)
    {
      this.a.put(paramString, parama);
      return;
      locala = (a)this.a.get(paramString);
    }
  }

  private static byte[] a(InputStream paramInputStream, int paramInt)
  {
    byte[] arrayOfByte = new byte[paramInt];
    int i = 0;
    while (i < paramInt)
    {
      int j = paramInputStream.read(arrayOfByte, i, paramInt - i);
      if (j == -1)
        break;
      i += j;
    }
    if (i != paramInt)
      throw new IOException("Expected " + paramInt + " bytes, read " + i + " bytes");
    return arrayOfByte;
  }

  static long b(InputStream paramInputStream)
  {
    return 0L | (0xFF & e(paramInputStream)) << 0 | (0xFF & e(paramInputStream)) << 8 | (0xFF & e(paramInputStream)) << 16 | (0xFF & e(paramInputStream)) << 24 | (0xFF & e(paramInputStream)) << 32 | (0xFF & e(paramInputStream)) << 40 | (0xFF & e(paramInputStream)) << 48 | (0xFF & e(paramInputStream)) << 56;
  }

  private void b(String paramString)
  {
    try
    {
      boolean bool = d(paramString).delete();
      a locala = (a)this.a.get(paramString);
      if (locala != null)
      {
        this.b -= locala.a;
        this.a.remove(paramString);
      }
      if (!bool)
      {
        Object[] arrayOfObject = new Object[2];
        arrayOfObject[0] = paramString;
        arrayOfObject[1] = c(paramString);
        s.b("Could not delete cache entry for key=%s, filename=%s", arrayOfObject);
      }
      return;
    }
    finally
    {
    }
  }

  static String c(InputStream paramInputStream)
  {
    return new String(a(paramInputStream, (int)b(paramInputStream)), "UTF-8");
  }

  private static String c(String paramString)
  {
    int i = paramString.length() / 2;
    String str = String.valueOf(paramString.substring(0, i).hashCode());
    return str + String.valueOf(paramString.substring(i).hashCode());
  }

  private File d(String paramString)
  {
    return new File(this.c, c(paramString));
  }

  static Map<String, String> d(InputStream paramInputStream)
  {
    int i = a(paramInputStream);
    if (i == 0);
    for (Object localObject = Collections.emptyMap(); ; localObject = new HashMap(i))
      for (int j = 0; j < i; j++)
        ((Map)localObject).put(c(paramInputStream).intern(), c(paramInputStream).intern());
    return localObject;
  }

  private static int e(InputStream paramInputStream)
  {
    int i = paramInputStream.read();
    if (i == -1)
      throw new EOFException();
    return i;
  }

  // ERROR //
  public final b.a a(String paramString)
  {
    // Byte code:
    //   0: aload_0
    //   1: monitorenter
    //   2: aload_0
    //   3: getfield 28	com/google/android/m4b/maps/b/c:a	Ljava/util/Map;
    //   6: aload_1
    //   7: invokeinterface 80 2 0
    //   12: checkcast 70	com/google/android/m4b/maps/b/c$a
    //   15: astore_3
    //   16: aload_3
    //   17: ifnonnull +11 -> 28
    //   20: aconst_null
    //   21: astore 10
    //   23: aload_0
    //   24: monitorexit
    //   25: aload 10
    //   27: areturn
    //   28: aload_0
    //   29: aload_1
    //   30: invokespecial 118	com/google/android/m4b/maps/b/c:d	(Ljava/lang/String;)Ljava/io/File;
    //   33: astore 4
    //   35: new 192	com/google/android/m4b/maps/b/c$b
    //   38: dup
    //   39: new 194	java/io/FileInputStream
    //   42: dup
    //   43: aload 4
    //   45: invokespecial 197	java/io/FileInputStream:<init>	(Ljava/io/File;)V
    //   48: iconst_0
    //   49: invokespecial 200	com/google/android/m4b/maps/b/c$b:<init>	(Ljava/io/InputStream;B)V
    //   52: astore 5
    //   54: aload 5
    //   56: invokestatic 203	com/google/android/m4b/maps/b/c$a:a	(Ljava/io/InputStream;)Lcom/google/android/m4b/maps/b/c$a;
    //   59: pop
    //   60: aload 5
    //   62: aload 4
    //   64: invokevirtual 206	java/io/File:length	()J
    //   67: aload 5
    //   69: invokestatic 209	com/google/android/m4b/maps/b/c$b:a	(Lcom/google/android/m4b/maps/b/c$b;)I
    //   72: i2l
    //   73: lsub
    //   74: l2i
    //   75: invokestatic 142	com/google/android/m4b/maps/b/c:a	(Ljava/io/InputStream;I)[B
    //   78: astore 14
    //   80: new 211	com/google/android/m4b/maps/a/b$a
    //   83: dup
    //   84: invokespecial 212	com/google/android/m4b/maps/a/b$a:<init>	()V
    //   87: astore 15
    //   89: aload 15
    //   91: aload 14
    //   93: putfield 215	com/google/android/m4b/maps/a/b$a:a	[B
    //   96: aload 15
    //   98: aload_3
    //   99: getfield 218	com/google/android/m4b/maps/b/c$a:c	Ljava/lang/String;
    //   102: putfield 220	com/google/android/m4b/maps/a/b$a:b	Ljava/lang/String;
    //   105: aload 15
    //   107: aload_3
    //   108: getfield 222	com/google/android/m4b/maps/b/c$a:d	J
    //   111: putfield 224	com/google/android/m4b/maps/a/b$a:c	J
    //   114: aload 15
    //   116: aload_3
    //   117: getfield 226	com/google/android/m4b/maps/b/c$a:e	J
    //   120: putfield 227	com/google/android/m4b/maps/a/b$a:d	J
    //   123: aload 15
    //   125: aload_3
    //   126: getfield 230	com/google/android/m4b/maps/b/c$a:f	J
    //   129: putfield 231	com/google/android/m4b/maps/a/b$a:e	J
    //   132: aload 15
    //   134: aload_3
    //   135: getfield 234	com/google/android/m4b/maps/b/c$a:g	Ljava/util/Map;
    //   138: putfield 236	com/google/android/m4b/maps/a/b$a:f	Ljava/util/Map;
    //   141: aload 5
    //   143: invokevirtual 239	com/google/android/m4b/maps/b/c$b:close	()V
    //   146: aload 15
    //   148: astore 10
    //   150: goto -127 -> 23
    //   153: astore 16
    //   155: aconst_null
    //   156: astore 10
    //   158: goto -135 -> 23
    //   161: astore 6
    //   163: aconst_null
    //   164: astore 7
    //   166: iconst_2
    //   167: anewarray 4	java/lang/Object
    //   170: astore 11
    //   172: aload 11
    //   174: iconst_0
    //   175: aload 4
    //   177: invokevirtual 242	java/io/File:getAbsolutePath	()Ljava/lang/String;
    //   180: aastore
    //   181: aload 11
    //   183: iconst_1
    //   184: aload 6
    //   186: invokevirtual 243	java/io/IOException:toString	()Ljava/lang/String;
    //   189: aastore
    //   190: ldc 245
    //   192: aload 11
    //   194: invokestatic 137	com/google/android/m4b/maps/a/s:b	(Ljava/lang/String;[Ljava/lang/Object;)V
    //   197: aload_0
    //   198: aload_1
    //   199: invokespecial 247	com/google/android/m4b/maps/b/c:b	(Ljava/lang/String;)V
    //   202: aload 7
    //   204: ifnull +8 -> 212
    //   207: aload 7
    //   209: invokevirtual 239	com/google/android/m4b/maps/b/c$b:close	()V
    //   212: aconst_null
    //   213: astore 10
    //   215: goto -192 -> 23
    //   218: astore 12
    //   220: aconst_null
    //   221: astore 10
    //   223: goto -200 -> 23
    //   226: astore 8
    //   228: aconst_null
    //   229: astore 5
    //   231: aload 5
    //   233: ifnull +8 -> 241
    //   236: aload 5
    //   238: invokevirtual 239	com/google/android/m4b/maps/b/c$b:close	()V
    //   241: aload 8
    //   243: athrow
    //   244: astore_2
    //   245: aload_0
    //   246: monitorexit
    //   247: aload_2
    //   248: athrow
    //   249: astore 9
    //   251: aconst_null
    //   252: astore 10
    //   254: goto -231 -> 23
    //   257: astore 8
    //   259: goto -28 -> 231
    //   262: astore 8
    //   264: aload 7
    //   266: astore 5
    //   268: goto -37 -> 231
    //   271: astore 6
    //   273: aload 5
    //   275: astore 7
    //   277: goto -111 -> 166
    //
    // Exception table:
    //   from	to	target	type
    //   141	146	153	java/io/IOException
    //   35	54	161	java/io/IOException
    //   207	212	218	java/io/IOException
    //   35	54	226	finally
    //   2	16	244	finally
    //   28	35	244	finally
    //   141	146	244	finally
    //   207	212	244	finally
    //   236	241	244	finally
    //   241	244	244	finally
    //   236	241	249	java/io/IOException
    //   54	141	257	finally
    //   166	202	262	finally
    //   54	141	271	java/io/IOException
  }

  // ERROR //
  public final void a()
  {
    // Byte code:
    //   0: aload_0
    //   1: monitorenter
    //   2: aload_0
    //   3: getfield 32	com/google/android/m4b/maps/b/c:c	Ljava/io/File;
    //   6: invokevirtual 250	java/io/File:exists	()Z
    //   9: ifne +40 -> 49
    //   12: aload_0
    //   13: getfield 32	com/google/android/m4b/maps/b/c:c	Ljava/io/File;
    //   16: invokevirtual 253	java/io/File:mkdirs	()Z
    //   19: ifne +27 -> 46
    //   22: iconst_1
    //   23: anewarray 4	java/lang/Object
    //   26: astore 17
    //   28: aload 17
    //   30: iconst_0
    //   31: aload_0
    //   32: getfield 32	com/google/android/m4b/maps/b/c:c	Ljava/io/File;
    //   35: invokevirtual 242	java/io/File:getAbsolutePath	()Ljava/lang/String;
    //   38: aastore
    //   39: ldc 255
    //   41: aload 17
    //   43: invokestatic 257	com/google/android/m4b/maps/a/s:c	(Ljava/lang/String;[Ljava/lang/Object;)V
    //   46: aload_0
    //   47: monitorexit
    //   48: return
    //   49: aload_0
    //   50: getfield 32	com/google/android/m4b/maps/b/c:c	Ljava/io/File;
    //   53: invokevirtual 261	java/io/File:listFiles	()[Ljava/io/File;
    //   56: astore_2
    //   57: aload_2
    //   58: ifnull -12 -> 46
    //   61: aload_2
    //   62: arraylength
    //   63: istore_3
    //   64: iconst_0
    //   65: istore 4
    //   67: iload 4
    //   69: iload_3
    //   70: if_icmpge -24 -> 46
    //   73: aload_2
    //   74: iload 4
    //   76: aaload
    //   77: astore 5
    //   79: aconst_null
    //   80: astore 6
    //   82: new 194	java/io/FileInputStream
    //   85: dup
    //   86: aload 5
    //   88: invokespecial 197	java/io/FileInputStream:<init>	(Ljava/io/File;)V
    //   91: astore 7
    //   93: aload 7
    //   95: invokestatic 203	com/google/android/m4b/maps/b/c$a:a	(Ljava/io/InputStream;)Lcom/google/android/m4b/maps/b/c$a;
    //   98: astore 14
    //   100: aload 14
    //   102: aload 5
    //   104: invokevirtual 206	java/io/File:length	()J
    //   107: putfield 72	com/google/android/m4b/maps/b/c$a:a	J
    //   110: aload_0
    //   111: aload 14
    //   113: getfield 262	com/google/android/m4b/maps/b/c$a:b	Ljava/lang/String;
    //   116: aload 14
    //   118: invokespecial 264	com/google/android/m4b/maps/b/c:a	(Ljava/lang/String;Lcom/google/android/m4b/maps/b/c$a;)V
    //   121: aload 7
    //   123: invokevirtual 265	java/io/FileInputStream:close	()V
    //   126: iinc 4 1
    //   129: goto -62 -> 67
    //   132: astore 16
    //   134: aconst_null
    //   135: astore 7
    //   137: aload 5
    //   139: ifnull +9 -> 148
    //   142: aload 5
    //   144: invokevirtual 124	java/io/File:delete	()Z
    //   147: pop
    //   148: aload 7
    //   150: ifnull -24 -> 126
    //   153: aload 7
    //   155: invokevirtual 265	java/io/FileInputStream:close	()V
    //   158: goto -32 -> 126
    //   161: astore 9
    //   163: goto -37 -> 126
    //   166: astore 11
    //   168: aload 6
    //   170: ifnull +8 -> 178
    //   173: aload 6
    //   175: invokevirtual 265	java/io/FileInputStream:close	()V
    //   178: aload 11
    //   180: athrow
    //   181: astore_1
    //   182: aload_0
    //   183: monitorexit
    //   184: aload_1
    //   185: athrow
    //   186: astore 15
    //   188: goto -62 -> 126
    //   191: astore 12
    //   193: goto -15 -> 178
    //   196: astore 10
    //   198: aload 7
    //   200: astore 6
    //   202: aload 10
    //   204: astore 11
    //   206: goto -38 -> 168
    //   209: astore 8
    //   211: goto -74 -> 137
    //
    // Exception table:
    //   from	to	target	type
    //   82	93	132	java/io/IOException
    //   153	158	161	java/io/IOException
    //   82	93	166	finally
    //   2	46	181	finally
    //   49	57	181	finally
    //   61	64	181	finally
    //   73	79	181	finally
    //   121	126	181	finally
    //   153	158	181	finally
    //   173	178	181	finally
    //   178	181	181	finally
    //   121	126	186	java/io/IOException
    //   173	178	191	java/io/IOException
    //   93	121	196	finally
    //   142	148	196	finally
    //   93	121	209	java/io/IOException
  }

  public final void a(String paramString, b.a parama)
  {
    int i = 0;
    long l1;
    long l2;
    try
    {
      int j = parama.a.length;
      if (this.b + j < this.d)
        break label273;
      if (s.a)
        s.a("Pruning old cache entries.", new Object[0]);
      l1 = this.b;
      l2 = SystemClock.elapsedRealtime();
      Iterator localIterator = this.a.entrySet().iterator();
      if (localIterator.hasNext())
      {
        a locala2 = (a)((Map.Entry)localIterator.next()).getValue();
        if (d(locala2.b).delete())
          this.b -= locala2.a;
        while (true)
        {
          localIterator.remove();
          k = i + 1;
          if ((float)(this.b + j) < 0.9F * this.d)
            break label217;
          i = k;
          break;
          Object[] arrayOfObject3 = new Object[2];
          arrayOfObject3[0] = locala2.b;
          arrayOfObject3[1] = c(locala2.b);
          s.b("Could not delete cache entry for key=%s, filename=%s", arrayOfObject3);
        }
      }
    }
    finally
    {
    }
    int k = i;
    label217: if (s.a)
    {
      Object[] arrayOfObject2 = new Object[3];
      arrayOfObject2[0] = Integer.valueOf(k);
      arrayOfObject2[1] = Long.valueOf(this.b - l1);
      arrayOfObject2[2] = Long.valueOf(SystemClock.elapsedRealtime() - l2);
      s.a("pruned %d files, %d bytes, %d ms", arrayOfObject2);
    }
    label273: File localFile = d(paramString);
    try
    {
      FileOutputStream localFileOutputStream = new FileOutputStream(localFile);
      a locala1 = new a(paramString, parama);
      locala1.a(localFileOutputStream);
      localFileOutputStream.write(parama.a);
      localFileOutputStream.close();
      a(paramString, locala1);
      return;
    }
    catch (IOException localIOException)
    {
      while (true)
        if (!localFile.delete())
        {
          Object[] arrayOfObject1 = new Object[1];
          arrayOfObject1[0] = localFile.getAbsolutePath();
          s.b("Could not clean up file %s", arrayOfObject1);
        }
    }
  }

  static final class a
  {
    public long a;
    public String b;
    public String c;
    public long d;
    public long e;
    public long f;
    public Map<String, String> g;

    private a()
    {
    }

    public a(String paramString, b.a parama)
    {
      this.b = paramString;
      this.a = parama.a.length;
      this.c = parama.b;
      this.d = parama.c;
      this.e = parama.d;
      this.f = parama.e;
      this.g = parama.f;
    }

    public static a a(InputStream paramInputStream)
    {
      a locala = new a();
      if (c.a(paramInputStream) != 538051844)
        throw new IOException();
      locala.b = c.c(paramInputStream);
      locala.c = c.c(paramInputStream);
      if (locala.c.equals(""))
        locala.c = null;
      locala.d = c.b(paramInputStream);
      locala.e = c.b(paramInputStream);
      locala.f = c.b(paramInputStream);
      locala.g = c.d(paramInputStream);
      return locala;
    }

    public final boolean a(OutputStream paramOutputStream)
    {
      while (true)
      {
        try
        {
          c.a(paramOutputStream, 538051844);
          c.a(paramOutputStream, this.b);
          if (this.c == null)
          {
            str = "";
            c.a(paramOutputStream, str);
            c.a(paramOutputStream, this.d);
            c.a(paramOutputStream, this.e);
            c.a(paramOutputStream, this.f);
            Map localMap = this.g;
            if (localMap == null)
              break;
            c.a(paramOutputStream, localMap.size());
            Iterator localIterator = localMap.entrySet().iterator();
            if (!localIterator.hasNext())
              break label179;
            Map.Entry localEntry = (Map.Entry)localIterator.next();
            c.a(paramOutputStream, (String)localEntry.getKey());
            c.a(paramOutputStream, (String)localEntry.getValue());
            continue;
          }
        }
        catch (IOException localIOException)
        {
          Object[] arrayOfObject = new Object[1];
          arrayOfObject[0] = localIOException.toString();
          s.b("%s", arrayOfObject);
          return false;
        }
        String str = this.c;
      }
      c.a(paramOutputStream, 0);
      label179: paramOutputStream.flush();
      return true;
    }
  }

  static final class b extends FilterInputStream
  {
    private int a = 0;

    private b(InputStream paramInputStream)
    {
      super();
    }

    public final int read()
    {
      int i = super.read();
      if (i != -1)
        this.a = (1 + this.a);
      return i;
    }

    public final int read(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
    {
      int i = super.read(paramArrayOfByte, paramInt1, paramInt2);
      if (i != -1)
        this.a = (i + this.a);
      return i;
    }
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.google.android.m4b.maps.b.c
 * JD-Core Version:    0.6.2
 */