Skip to content

Conversation

lucas-zimerman
Copy link
Collaborator

@lucas-zimerman lucas-zimerman commented Oct 2, 2025

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

refresh

📜 Description

💡 Motivation and Context

💚 How did you test it?

📝 Checklist

  • I added tests to verify changes
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled
  • I updated the docs if needed.
  • I updated the wizard if needed.
  • All tests passing
  • No breaking changes

🔮 Next steps

Copy link
Contributor

github-actions bot commented Oct 2, 2025

Android (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 376.02 ms 371.70 ms -4.32 ms
Size 17.75 MiB 19.70 MiB 1.95 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
534ba8c 484.00 ms 499.93 ms 15.93 ms
6479fd5+dirty 412.95 ms 434.02 ms 21.07 ms
f70acbf+dirty 373.39 ms 382.81 ms 9.43 ms
a2bb688+dirty 409.65 ms 410.45 ms 0.80 ms
23080e5 384.85 ms 382.57 ms -2.28 ms
8d89cc9+dirty 537.83 ms 536.02 ms -1.81 ms
a0b15d6 423.06 ms 437.77 ms 14.71 ms
e2fa43d 451.68 ms 462.42 ms 10.74 ms
46da307 455.92 ms 443.79 ms -12.13 ms
d916aa3 425.37 ms 427.02 ms 1.65 ms

App size

Revision Plain With Sentry Diff
534ba8c 17.75 MiB 20.15 MiB 2.41 MiB
6479fd5+dirty 17.75 MiB 19.68 MiB 1.94 MiB
f70acbf+dirty 17.75 MiB 19.68 MiB 1.94 MiB
a2bb688+dirty 17.75 MiB 19.70 MiB 1.95 MiB
23080e5 17.75 MiB 19.68 MiB 1.94 MiB
8d89cc9+dirty 17.75 MiB 19.68 MiB 1.94 MiB
a0b15d6 17.75 MiB 20.15 MiB 2.41 MiB
e2fa43d 17.75 MiB 20.15 MiB 2.41 MiB
46da307 17.75 MiB 19.68 MiB 1.93 MiB
d916aa3 17.75 MiB 20.15 MiB 2.41 MiB

Previous results on branch: lz/replay-stub-check

Startup times

Revision Plain With Sentry Diff
26b64bd+dirty 385.24 ms 370.50 ms -14.74 ms
1dd4cb6+dirty 386.85 ms 401.14 ms 14.29 ms
1fc635a 386.06 ms 408.76 ms 22.70 ms

App size

Revision Plain With Sentry Diff
26b64bd+dirty 17.75 MiB 19.69 MiB 1.94 MiB
1dd4cb6+dirty 17.75 MiB 19.70 MiB 1.95 MiB
1fc635a 17.75 MiB 19.70 MiB 1.95 MiB

Copy link
Contributor

github-actions bot commented Oct 2, 2025

Android (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 367.48 ms 411.40 ms 43.92 ms
Size 7.15 MiB 8.43 MiB 1.28 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
e2fa43d+dirty 326.56 ms 372.88 ms 46.32 ms
3e0a5f9+dirty 379.92 ms 450.96 ms 71.04 ms
6479fd5+dirty 393.06 ms 434.04 ms 40.98 ms
f70acbf+dirty 520.12 ms 558.91 ms 38.79 ms
a2bb688+dirty 371.19 ms 389.18 ms 17.99 ms
8d89cc9+dirty 357.69 ms 415.79 ms 58.10 ms
8a4ce6f+dirty 401.11 ms 381.92 ms -19.19 ms
23080e5+dirty 347.29 ms 381.87 ms 34.58 ms
1bea095+dirty 416.54 ms 506.00 ms 89.46 ms
46da307+dirty 356.62 ms 415.02 ms 58.40 ms

App size

Revision Plain With Sentry Diff
e2fa43d+dirty 7.15 MiB 8.42 MiB 1.27 MiB
3e0a5f9+dirty 7.15 MiB 8.42 MiB 1.27 MiB
6479fd5+dirty 7.15 MiB 8.41 MiB 1.26 MiB
f70acbf+dirty 7.15 MiB 8.41 MiB 1.26 MiB
a2bb688+dirty 7.15 MiB 8.43 MiB 1.28 MiB
8d89cc9+dirty 7.15 MiB 8.41 MiB 1.26 MiB
8a4ce6f+dirty 7.15 MiB 8.41 MiB 1.26 MiB
23080e5+dirty 7.15 MiB 8.41 MiB 1.26 MiB
1bea095+dirty 7.15 MiB 8.43 MiB 1.28 MiB
46da307+dirty 7.15 MiB 8.41 MiB 1.26 MiB

Previous results on branch: lz/replay-stub-check

Startup times

Revision Plain With Sentry Diff
26b64bd+dirty 356.63 ms 413.25 ms 56.62 ms
1dd4cb6+dirty 538.17 ms 562.26 ms 24.09 ms
1fc635a+dirty 363.53 ms 393.92 ms 30.39 ms

App size

Revision Plain With Sentry Diff
26b64bd+dirty 7.15 MiB 8.42 MiB 1.26 MiB
1dd4cb6+dirty 7.15 MiB 8.43 MiB 1.28 MiB
1fc635a+dirty 7.15 MiB 8.43 MiB 1.28 MiB

Copy link
Contributor

github-actions bot commented Oct 2, 2025

iOS (legacy) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1215.06 ms 1214.96 ms -0.10 ms
Size 2.63 MiB 3.99 MiB 1.36 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
5ee3314+dirty 1215.18 ms 1207.64 ms -7.54 ms
21c9e75+dirty 1237.78 ms 1247.66 ms 9.88 ms
20daa0a+dirty 1233.12 ms 1233.35 ms 0.22 ms
8ece263+dirty 1217.29 ms 1213.35 ms -3.94 ms
8a4ce6f+dirty 1221.31 ms 1219.84 ms -1.47 ms
6a70a7e+dirty 1225.82 ms 1230.79 ms 4.98 ms
8d89cc9+dirty 1222.92 ms 1239.43 ms 16.51 ms
46bd012+dirty 1220.49 ms 1226.89 ms 6.40 ms
5526494+dirty 1224.73 ms 1229.08 ms 4.36 ms
bfe454a+dirty 1235.33 ms 1243.12 ms 7.79 ms

App size

Revision Plain With Sentry Diff
5ee3314+dirty 2.63 MiB 3.99 MiB 1.35 MiB
21c9e75+dirty 2.63 MiB 3.81 MiB 1.18 MiB
20daa0a+dirty 2.63 MiB 3.81 MiB 1.18 MiB
8ece263+dirty 2.63 MiB 3.91 MiB 1.28 MiB
8a4ce6f+dirty 2.63 MiB 3.96 MiB 1.33 MiB
6a70a7e+dirty 2.63 MiB 3.98 MiB 1.34 MiB
8d89cc9+dirty 2.63 MiB 3.96 MiB 1.33 MiB
46bd012+dirty 2.63 MiB 3.81 MiB 1.18 MiB
5526494+dirty 2.63 MiB 3.87 MiB 1.24 MiB
bfe454a+dirty 2.63 MiB 3.98 MiB 1.34 MiB

Previous results on branch: lz/replay-stub-check

Startup times

Revision Plain With Sentry Diff
26b64bd+dirty 1231.79 ms 1236.35 ms 4.56 ms
1dd4cb6+dirty 1210.90 ms 1224.42 ms 13.52 ms
1fc635a+dirty 1219.59 ms 1231.59 ms 12.00 ms

App size

Revision Plain With Sentry Diff
26b64bd+dirty 2.63 MiB 3.98 MiB 1.34 MiB
1dd4cb6+dirty 2.63 MiB 3.99 MiB 1.35 MiB
1fc635a+dirty 2.63 MiB 3.99 MiB 1.35 MiB

Copy link
Contributor

github-actions bot commented Oct 2, 2025

iOS (new) Performance metrics 🚀

  Plain With Sentry Diff
Startup time 1217.04 ms 1220.55 ms 3.51 ms
Size 3.19 MiB 4.56 MiB 1.37 MiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
5ee3314+dirty 1234.25 ms 1235.44 ms 1.19 ms
21c9e75+dirty 1206.20 ms 1223.54 ms 17.35 ms
20daa0a+dirty 1227.71 ms 1233.72 ms 6.01 ms
8ece263+dirty 1206.90 ms 1211.45 ms 4.55 ms
8a4ce6f+dirty 1232.80 ms 1223.80 ms -9.00 ms
6a70a7e+dirty 1231.40 ms 1239.49 ms 8.09 ms
8d89cc9+dirty 1232.35 ms 1228.53 ms -3.82 ms
46bd012+dirty 1231.78 ms 1212.30 ms -19.47 ms
5526494+dirty 1217.06 ms 1222.26 ms 5.20 ms
bfe454a+dirty 1231.82 ms 1239.98 ms 8.16 ms

App size

Revision Plain With Sentry Diff
5ee3314+dirty 3.19 MiB 4.55 MiB 1.37 MiB
21c9e75+dirty 3.19 MiB 4.38 MiB 1.19 MiB
20daa0a+dirty 3.19 MiB 4.38 MiB 1.19 MiB
8ece263+dirty 3.19 MiB 4.48 MiB 1.29 MiB
8a4ce6f+dirty 3.19 MiB 4.53 MiB 1.34 MiB
6a70a7e+dirty 3.19 MiB 4.54 MiB 1.36 MiB
8d89cc9+dirty 3.19 MiB 4.53 MiB 1.35 MiB
46bd012+dirty 3.19 MiB 4.38 MiB 1.19 MiB
5526494+dirty 3.19 MiB 4.44 MiB 1.25 MiB
bfe454a+dirty 3.19 MiB 4.54 MiB 1.36 MiB

Previous results on branch: lz/replay-stub-check

Startup times

Revision Plain With Sentry Diff
26b64bd+dirty 1228.94 ms 1244.28 ms 15.34 ms
1dd4cb6+dirty 1223.71 ms 1216.79 ms -6.92 ms
1fc635a+dirty 1218.21 ms 1229.39 ms 11.18 ms

App size

Revision Plain With Sentry Diff
26b64bd+dirty 3.19 MiB 4.54 MiB 1.36 MiB
1dd4cb6+dirty 3.19 MiB 4.55 MiB 1.37 MiB
1fc635a+dirty 3.19 MiB 4.55 MiB 1.37 MiB

@getsentry getsentry deleted a comment from github-actions bot Oct 2, 2025
@lucas-zimerman
Copy link
Collaborator Author

image

@lucas-zimerman
Copy link
Collaborator Author

image image image

@lucas-zimerman lucas-zimerman changed the title Ref: CI Check for Replay Stubs fix: CI Check for Replay Stubs Oct 9, 2025
Copy link
Contributor

github-actions bot commented Oct 9, 2025

Fails
🚫 Please consider adding a changelog entry for the next release.
Warnings
⚠️

🤖 Replay Stubs Check

🚨 Structural changes detected in replay-stubs.jar:

Modified: META-INF/MANIFEST.MF

--- /github/workspace/replay-stubs-old-src/META-INF/MANIFEST.MF	2025-10-10 16:31:50.182189698 +0000
+++ /github/workspace/replay-stubs-src/META-INF/MANIFEST.MF	2025-10-10 16:31:49.576190767 +0000
@@ -1,2 +1,13 @@
 Manifest-Version: 1.0
+Ant-Version: Apache Ant 1.9.7
+Created-By: 1.8.0_402-8u402-ga-2ubuntu1~20.04-b06 (Private Build)
+MIDlet-1: Hotpants,/icon32.png,hotpants.Midlet
+MIDlet-Permissions: javax.microedition.media.control.VideoControl.getS
+ napshot
+MIDlet-Vendor: Matthias Clausen
+MIDlet-Version: 2.0
+MIDlet-Name: Hotpants
+Nokia-MIDlet-On-Screen-Keypad: no
+MicroEdition-Configuration: CLDC-1.1
+MicroEdition-Profile: MIDP-2.0
 

Removed: io/sentry/android/replay/DefaultReplayBreadcrumbConverter.java

package io.sentry.android.replay;

import io.sentry.Breadcrumb;
import io.sentry.ReplayBreadcrumbConverter;
import io.sentry.rrweb.RRWebEvent;

public class DefaultReplayBreadcrumbConverter implements ReplayBreadcrumbConverter {
  public RRWebEvent convert(Breadcrumb breadcrumb) {
    return null;
  }
}

Added: a.java

import java.util.Hashtable;

public final class a {
  private static final a a = new a("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567");
  
  private String a;
  
  private char[] a;
  
  private int a;
  
  private int b;
  
  private Hashtable a;
  
  private a(String paramString) {
    this.a = (Hashtable)paramString;
    this.a = (Hashtable)this.a.toCharArray();
    this.a = this.a.length - 1;
    int i;
    this.b = (i = (i = (i = ((i = ((i = (i = ((i = this.a.length) & -i) - 1) - (i >> 1 & 0x55555555)) & 0x33333333) + (i >> 2 & 0x33333333)) >> 4) + i & 0xF0F0F0F) + (i >> 8)) + (i >> 16)) & 0x3F;
    this.a = new Hashtable();
    for (i = 0; i < this.a.length; i++)
      this.a.put(new Character(this.a[i]), new Integer(i)); 
  }
  
  public static byte[] a(String paramString) {
    // Byte code:
    //   0: getstatic a.a : La;
    //   3: aload_0
    //   4: astore_1
    //   5: astore_0
    //   6: aload_1
    //   7: dup
    //   8: astore_1
    //   9: invokevirtual length : ()I
    //   12: istore_2
    //   13: new java/lang/StringBuffer
    //   16: dup
    //   17: invokespecial <init> : ()V
    //   20: astore_3
    //   21: iconst_0
    //   22: istore #4
    //   24: iload #4
    //   26: iload_2
    //   27: if_icmpge -> 72
    //   30: aload_1
    //   31: iload #4
    //   33: invokevirtual charAt : (I)C
    //   36: istore #5
    //   38: ldc '-'
    //   40: iload #5
    //   42: invokevirtual indexOf : (I)I
    //   45: iconst_m1
    //   46: if_icmpne -> 66
    //   49: iload #5
    //   51: bipush #32
    //   53: if_icmpeq -> 66
    //   56: aload_3
    //   57: iload #5
    //   59: invokestatic toUpperCase : (C)C
    //   62: invokevirtual append : (C)Ljava/lang/StringBuffer;
    //   65: pop
    //   66: iinc #4, 1
    //   69: goto -> 24
    //   72: aload_3
    //   73: invokevirtual toString : ()Ljava/lang/String;
    //   76: invokevirtual trim : ()Ljava/lang/String;
    //   79: dup
    //   80: astore_1
    //   81: invokevirtual toUpperCase : ()Ljava/lang/String;
    //   84: dup
    //   85: astore_1
    //   86: invokevirtual length : ()I
    //   89: ifne -> 96
    //   92: iconst_0
    //   93: newarray byte
    //   95: areturn
    //   96: aload_1
    //   97: invokevirtual length : ()I
    //   100: dup
    //   101: istore_2
    //   102: aload_0
    //   103: getfield b : I
    //   106: imul
    //   107: bipush #8
    //   109: idiv
    //   110: dup
    //   111: istore_2
    //   112: newarray byte
    //   114: astore_2
    //   115: iconst_0
    //   116: istore_3
    //   117: iconst_0
    //   118: istore #4
    //   120: iconst_0
    //   121: istore #5
    //   123: iconst_0
    //   124: istore #6
    //   126: aload_1
    //   127: invokevirtual length : ()I
    //   130: istore #7
    //   132: iload #6
    //   134: iload #7
    //   136: if_icmpge -> 260
    //   139: new java/lang/Character
    //   142: dup
    //   143: aload_1
    //   144: iload #6
    //   146: invokevirtual charAt : (I)C
    //   149: invokespecial <init> : (C)V
    //   152: astore #8
    //   154: aload_0
    //   155: getfield a : Ljava/util/Hashtable;
    //   158: aload #8
    //   160: invokevirtual containsKey : (Ljava/lang/Object;)Z
    //   163: ifne -> 191
    //   166: new b
    //   169: dup
    //   170: new java/lang/StringBuffer
    //   173: dup
    //   174: ldc 'Illegal character: '
    //   176: invokespecial <init> : (Ljava/lang/String;)V
    //   179: aload #8
    //   181: invokevirtual append : (Ljava/lang/Object;)Ljava/lang/StringBuffer;
    //   184: invokevirtual toString : ()Ljava/lang/String;
    //   187: invokespecial <init> : (Ljava/lang/String;)V
    //   190: athrow
    //   191: iload_3
    //   192: aload_0
    //   193: getfield b : I
    //   196: ishl
    //   197: dup
    //   198: istore_3
    //   199: aload_0
    //   200: getfield a : Ljava/util/Hashtable;
    //   203: aload #8
    //   205: invokevirtual get : (Ljava/lang/Object;)Ljava/lang/Object;
    //   208: checkcast java/lang/Integer
    //   211: invokevirtual intValue : ()I
    //   214: aload_0
    //   215: getfield a : I
    //   218: iand
    //   219: ior
    //   220: istore_3
    //   221: iload #5
    //   223: aload_0
    //   224: getfield b : I
    //   227: iadd
    //   228: dup
    //   229: istore #5
    //   231: bipush #8
    //   233: if_icmplt -> 254
    //   236: aload_2
    //   237: iload #4
    //   239: iinc #4, 1
    //   242: iload_3
    //   243: iload #5
    //   245: bipush #8
    //   247: isub
    //   248: ishr
    //   249: i2b
    //   250: bastore
    //   251: iinc #5, -8
    //   254: iinc #6, 1
    //   257: goto -> 132
    //   260: aload_2
    //   261: areturn
  }
}

Added: aa.java

import java.util.Vector;

public class aa {
  private int a;
  
  private int b;
  
  private double a;
  
  private int c;
  
  public aa(int paramInt1, int paramInt2, double paramDouble) {
    this.a = paramInt1;
    this.b = paramInt2;
    this.a = paramDouble;
    this.c = 1;
  }
  
  static int[] a(ag paramag, int paramInt, double[] paramArrayOfdouble) {
    double d2;
    if (paramInt < 2)
      return null; 
    double d1 = paramArrayOfdouble[1];
    int n = paramag.c();
    int m = paramag.b();
    int k = 0;
    boolean bool2 = false;
    j j1;
    ac[] arrayOfAc = (j1 = j.a()).a();
    int[] arrayOfInt5 = h.a(j1.b(), j1.d(), j1.e(), j1.f());
    int[] arrayOfInt6 = h.a(new int[] { arrayOfAc[0].a(), arrayOfAc[0].b() }, arrayOfInt5, new int[] { arrayOfAc[1].a(), arrayOfAc[1].b() }, new int[] { arrayOfAc[2].a(), arrayOfAc[2].b() });
    int[] arrayOfInt7 = { arrayOfInt6[0] - arrayOfAc[0].a(), arrayOfInt6[1] - arrayOfAc[0].b() };
    int[] arrayOfInt3 = { arrayOfAc[0].a() + (int)(1.4D * arrayOfInt7[0]), arrayOfAc[0].b() + (int)(1.4D * arrayOfInt7[1]) };
    int[] arrayOfInt4 = { arrayOfInt3[0] + (int)(1.0D * arrayOfInt7[0]), arrayOfInt3[1] + (int)(1.0D * arrayOfInt7[1]) };
    Vector vector = h.a(arrayOfInt3[0], arrayOfInt3[1], arrayOfInt4[0], arrayOfInt4[1], 0, 0, m, n);
    Vector vector1 = new Vector();
    double d4;
    a(paramag, vector, vector1, (int)((d4 = d1 * 14.0D) + 0.5D));
    if (vector1.size() < 0)
      return null; 
    int[] arrayOfInt1 = vector.elementAt(0);
    int[] arrayOfInt2 = vector.elementAt(vector.size() - 1);
    int i = vector1.size();
    double d3 = Double.MAX_VALUE;
    boolean bool1 = false;
    int j = 0;
    for (byte b = 0; b < i; b++) {
      int i1 = arrayOfInt2[1];
      n = arrayOfInt2[0];
      m = arrayOfInt1[1];
      k = arrayOfInt1[0];
      aa aa1 = vector1.elementAt(b);
      aa aa2 = aa1;
      double[] arrayOfDouble2 = { (n - k), (i1 - m) };
      double[] arrayOfDouble1 = { (aa2.a - k), (aa2.b - m) };
      double d5;
      double d6;
      if ((d5 = h.a((d6 = h.a(arrayOfDouble2, arrayOfDouble1) / h.a(arrayOfDouble2, arrayOfDouble2)) * arrayOfDouble2[0] - arrayOfDouble1[0], d6 * arrayOfDouble2[1] - arrayOfDouble1[1])) <= d3) {
        d3 = d5;
        aa aa3;
        d2 = (aa3 = aa1).a;
        j = (aa3 = aa1).b;
      } 
    } 
    return new int[] { d2, j };
  }
  
  private static void a(ag paramag, Vector paramVector1, Vector paramVector2, int paramInt) {
    // Byte code:
    //   0: aload_0
    //   1: invokevirtual b : ()I
    //   4: istore #4
    //   6: aload_1
    //   7: invokevirtual size : ()I
    //   10: istore #5
    //   12: iconst_0
    //   13: istore #9
    //   15: iload #9
    //   17: iload #5
    //   19: if_icmpge -> 748
    //   22: aload_1
    //   23: iload #9
    //   25: invokevirtual elementAt : (I)Ljava/lang/Object;
    //   28: checkcast [I
    //   31: astore #6
    //   33: iconst_0
    //   34: aload #6
    //   36: iconst_0
    //   37: iaload
    //   38: iload_3
    //   39: isub
    //   40: if_icmpgt -> 52
    //   43: aload #6
    //   45: iconst_0
    //   46: iaload
    //   47: iload_3
    //   48: isub
    //   49: goto -> 53
    //   52: iconst_0
    //   53: istore #7
    //   55: aload #6
    //   57: iconst_0
    //   58: iaload
    //   59: iload_3
    //   60: iadd
    //   61: iload #4
    //   63: if_icmpge -> 75
    //   66: aload #6
    //   68: iconst_0
    //   69: iaload
    //   70: iload_3
    //   71: iadd
    //   72: goto -> 77
    //   75: iload #4
    //   77: istore #8
    //   79: aload_0
    //   80: aload_2
    //   81: iload #7
    //   83: iload #8
    //   85: aload #6
    //   87: iconst_1
    //   88: iaload
    //   89: iconst_0
    //   90: aload_0
    //   91: invokevirtual c : ()I
    //   94: istore #12
    //   96: istore #6
    //   98: istore #11
    //   100: istore #10
    //   102: istore #8
    //   104: astore #7
    //   106: astore #6
    //   108: iconst_0
    //   109: istore #13
    //   111: iload #8
    //   113: istore #14
    //   115: iconst_3
    //   116: newarray int
    //   118: astore #15
    //   120: iload #8
    //   122: istore #8
    //   124: iload #8
    //   126: iload #10
    //   128: if_icmpge -> 742
    //   131: aload #6
    //   133: iload #8
    //   135: iload #11
    //   137: invokevirtual a : (II)Z
    //   140: ifne -> 175
    //   143: iload #13
    //   145: iconst_1
    //   146: if_icmpne -> 152
    //   149: iinc #13, 1
    //   152: iload #13
    //   154: ifeq -> 163
    //   157: iload #13
    //   159: iconst_2
    //   160: if_icmpne -> 736
    //   163: aload #15
    //   165: iload #13
    //   167: dup2
    //   168: iaload
    //   169: iconst_1
    //   170: iadd
    //   171: iastore
    //   172: goto -> 736
    //   175: iload #13
    //   177: ifne -> 183
    //   180: iinc #13, 1
    //   183: iload #13
    //   185: iconst_1
    //   186: if_icmpne -> 198
    //   189: aload #15
    //   191: iload #13
    //   193: dup2
    //   194: iaload
    //   195: iconst_1
    //   196: iadd
    //   197: iastore
    //   198: iload #13
    //   200: iconst_2
    //   201: if_icmpne -> 736
    //   204: aload #15
    //   206: invokestatic a : ([I)Z
    //   209: ifeq -> 701
    //   212: aload #6
    //   214: aload #7
    //   216: iload #14
    //   218: iload #11
    //   220: iconst_0
    //   221: iload #12
    //   223: aload #15
    //   225: astore #21
    //   227: istore #20
    //   229: istore #19
    //   231: istore #18
    //   233: istore #17
    //   235: astore #16
    //   237: astore #13
    //   239: aload #21
    //   241: invokestatic a : ([I)I
    //   244: iconst_3
    //   245: idiv
    //   246: i2d
    //   247: dstore #28
    //   249: aload #13
    //   251: aload #21
    //   253: dload #28
    //   255: iload #17
    //   257: iload #18
    //   259: istore #23
    //   261: istore #24
    //   263: dstore #42
    //   265: astore #41
    //   267: astore #22
    //   269: iconst_0
    //   270: istore #25
    //   272: iconst_0
    //   273: istore #26
    //   275: iload #24
    //   277: iconst_1
    //   278: isub
    //   279: istore #27
    //   281: iload #27
    //   283: iflt -> 307
    //   286: aload #22
    //   288: iload #27
    //   290: iload #23
    //   292: invokevirtual a : (II)Z
    //   295: ifeq -> 307
    //   298: iinc #25, 1
    //   301: iinc #27, -1
    //   304: goto -> 281
    //   307: iload #25
    //   309: i2d
    //   310: dload #42
    //   312: dcmpg
    //   313: ifge -> 320
    //   316: iconst_0
    //   317: goto -> 375
    //   320: iload #24
    //   322: aload #41
    //   324: invokestatic a : ([I)I
    //   327: iadd
    //   328: istore #27
    //   330: iload #27
    //   332: aload #22
    //   334: invokevirtual b : ()I
    //   337: if_icmpge -> 361
    //   340: aload #22
    //   342: iload #27
    //   344: iload #23
    //   346: invokevirtual a : (II)Z
    //   349: ifeq -> 361
    //   352: iinc #26, 1
    //   355: iinc #27, 1
    //   358: goto -> 330
    //   361: iload #26
    //   363: i2d
    //   364: dload #42
    //   366: dcmpg
    //   367: ifge -> 374
    //   370: iconst_0
    //   371: goto -> 375
    //   374: iconst_1
    //   375: ifne -> 382
    //   378: iconst_0
    //   379: goto -> 700
    //   382: iconst_1
    //   383: istore #22
    //   385: iload #17
    //   387: aload #21
    //   389: invokestatic b : ([I)I
    //   392: iadd
    //   393: istore #23
    //   395: aload #13
    //   397: iload #23
    //   399: iload #18
    //   401: iload #19
    //   403: iload #20
    //   405: aload #21
    //   407: invokestatic a : (Lag;IIII[I)I
    //   410: istore #18
    //   412: iload #17
    //   414: aload #21
    //   416: iconst_0
    //   417: iaload
    //   418: iadd
    //   419: dup
    //   420: istore #17
    //   422: aload #21
    //   424: iconst_1
    //   425: iaload
    //   426: iadd
    //   427: istore #24
    //   429: iload #23
    //   431: iconst_1
    //   432: isub
    //   433: istore #25
    //   435: iload #23
    //   437: iconst_1
    //   438: iadd
    //   439: istore #26
    //   441: iload #18
    //   443: ldc -2147483648
    //   445: if_icmpne -> 553
    //   448: iload #25
    //   450: iload #17
    //   452: if_icmpgt -> 466
    //   455: iload #24
    //   457: iload #26
    //   459: if_icmpgt -> 466
    //   462: iconst_0
    //   463: goto -> 700
    //   466: iload #22
    //   468: ifeq -> 506
    //   471: iload #17
    //   473: iload #25
    //   475: if_icmpge -> 499
    //   478: aload #13
    //   480: iload #25
    //   482: iinc #25, -1
    //   485: iload #18
    //   487: iload #19
    //   489: iload #20
    //   491: aload #21
    //   493: invokestatic a : (Lag;IIII[I)I
    //   496: goto -> 501
    //   499: iload #18
    //   501: istore #18
    //   503: goto -> 538
    //   506: iload #26
    //   508: iload #24
    //   510: if_icmpge -> 534
    //   513: aload #13
    //   515: iload #26
    //   517: iinc #26, 1
    //   520: iload #18
    //   522: iload #19
    //   524: iload #20
    //   526: aload #21
    //   528: invokestatic a : (Lag;IIII[I)I
    //   531: goto -> 536
    //   534: iload #18
    //   536: istore #18
    //   538: iload #22
    //   540: ifne -> 547
    //   543: iconst_1
    //   544: goto -> 548
    //   547: iconst_0
    //   548: istore #22
    //   550: goto -> 441
    //   553: aload #16
    //   555: invokevirtual size : ()I
    //   558: istore #13
    //   560: iconst_0
    //   561: istore #19
    //   563: iload #19
    //   565: iload #13
    //   567: if_icmpge -> 681
    //   570: aload #16
    //   572: iload #19
    //   574: invokevirtual elementAt : (I)Ljava/lang/Object;
    //   577: checkcast aa
    //   580: dup
    //   581: astore #17
    //   583: dload #28
    //   585: iload #23
    //   587: iload #18
    //   589: istore #24
    //   591: istore #43
    //   593: dstore #41
    //   595: astore #22
    //   597: iload #43
    //   599: aload #22
    //   601: getfield a : I
    //   604: isub
    //   605: invokestatic abs : (I)I
    //   608: i2d
    //   609: dload #41
    //   611: dcmpg
    //   612: ifgt -> 653
    //   615: iload #24
    //   617: aload #22
    //   619: getfield b : I
    //   622: isub
    //   623: invokestatic abs : (I)I
    //   626: i2d
    //   627: dload #41
    //   629: dcmpg
    //   630: ifgt -> 653
    //   633: dload #41
    //   635: aload #22
    //   637: getfield a : D
    //   640: dsub
    //   641: invokestatic abs : (D)D
    //   644: dconst_1
    //   645: dcmpg
    //   646: ifgt -> 653
    //   649: iconst_1
    //   650: goto -> 654
    //   653: iconst_0
    //   654: ifeq -> 675
    //   657: aload #17
    //   659: dup
    //   660: astore #22
    //   662: dup
    //   663: getfield c : I
    //   666: iconst_1
    //   667: iadd
    //   668: putfield c : I
    //   671: iconst_1
    //   672: goto -> 700
    //   675: iinc #19, 1
    //   678: goto -> 563
    //   681: aload #16
    //   683: new aa
    //   686: dup
    //   687: iload #23
    //   689: iload #18
    //   691: dload #28
    //   693: invokespecial <init> : (IID)V
    //   696: invokevirtual addElement : (Ljava/lang/Object;)V
    //   699: iconst_1
    //   700: pop
    //   701: iconst_1
    //   702: istore #13
    //   704: aload #15
    //   706: iconst_0
    //   707: iaload
    //   708: aload #15
    //   710: iconst_1
    //   711: iaload
    //   712: iadd
    //   713: iload #14
    //   715: iadd
    //   716: istore #14
    //   718: aload #15
    //   720: iconst_0
    //   721: aload #15
    //   723: iconst_2
    //   724: iaload
    //   725: iastore
    //   726: aload #15
    //   728: iconst_1
    //   729: iconst_1
    //   730: iastore
    //   731: aload #15
    //   733: iconst_2
    //   734: iconst_0
    //   735: iastore
    //   736: iinc #8, 1
    //   739: goto -> 124
    //   742: iinc #9, 1
    //   745: goto -> 15
    //   748: return
  }
  
  private static boolean a(int[] paramArrayOfint) {
    int i = 0;
    int j;
    for (j = 0; j < 3; j++) {
      int m;
      if ((m = paramArrayOfint[j]) == 0)
        return false; 
      i += paramArrayOfint[j];
    } 
    if (i < 3)
      return false; 
    int k = (j = (i << 8) / 3) >> 1;
    return (Math.abs(j - (paramArrayOfint[0] << 8)) < k && Math.abs(j - (paramArrayOfint[1] << 8)) < k && Math.abs(j - (paramArrayOfint[2] << 8)) < k);
  }
  
  private static int a(ag paramag, int paramInt1, int paramInt2, int paramInt3, int paramInt4, int[] paramArrayOfint) {
    int i = paramag.b();
    int j = paramag.c();
    if (paramInt1 < 0 || paramInt1 >= i || paramInt2 < 0 || paramInt2 >= j)
      return Integer.MIN_VALUE; 
    if (!paramag.a(paramInt1, paramInt2))
      return Integer.MIN_VALUE; 
    paramInt3 = (paramInt3 < 0) ? 0 : paramInt3;
    paramInt4 = (paramInt4 > paramag.b()) ? paramag.b() : paramInt4;
    i = paramInt2;
    int[] arrayOfInt = new int[3];
    while (i >= paramInt3 && paramag.a(paramInt1, i)) {
      arrayOfInt[1] = arrayOfInt[1] + 1;
      i--;
    } 
    if (i < paramInt3)
      return Integer.MIN_VALUE; 
    while (i >= paramInt3 && !paramag.a(paramInt1, i)) {
      arrayOfInt[0] = arrayOfInt[0] + 1;
      i--;
    } 
    if (i < paramInt3)
      return Integer.MIN_VALUE; 
    paramInt3 = i + 1;
    i = paramInt2 + 1;
    if (arrayOfInt[0] == 0)
      return Integer.MIN_VALUE; 
    while (i < paramInt4 && paramag.a(paramInt1, i)) {
      arrayOfInt[1] = arrayOfInt[1] + 1;
      i++;
    } 
    if (i >= paramInt4)
      return Integer.MIN_VALUE; 
    while (i < paramInt4 && !paramag.a(paramInt1, i)) {
      arrayOfInt[2] = arrayOfInt[2] + 1;
      i++;
    } 
    if (i >= paramInt4)
      return Integer.MIN_VALUE; 
    if (a(arrayOfInt)) {
      int[] arrayOfInt2 = arrayOfInt;
      int[] arrayOfInt1;
      paramInt2 = (paramInt2 = ((paramInt2 = a(arrayOfInt1 = paramArrayOfint)) << 8) / 2) >> 1;
      if ((Math.abs((arrayOfInt1[0] << 8) - (arrayOfInt2[0] << 8)) < paramInt2 && Math.abs((arrayOfInt1[0] << 8) - (arrayOfInt2[1] << 8)) < paramInt2 && Math.abs((arrayOfInt1[0] << 8) - (arrayOfInt2[2] << 8)) < paramInt2 && Math.abs((arrayOfInt1[1] << 8) - (arrayOfInt2[0] << 8)) < paramInt2 && Math.abs((arrayOfInt1[1] << 8) - (arrayOfInt2[1] << 8)) < paramInt2 && Math.abs((arrayOfInt1[1] << 8) - (arrayOfInt2[2] << 8)) < paramInt2 && Math.abs((arrayOfInt1[2] << 8) - (arrayOfInt2[0] << 8)) < paramInt2 && Math.abs((arrayOfInt1[2] << 8) - (arrayOfInt2[1] << 8)) < paramInt2 && Math.abs((arrayOfInt1[2] << 8) - (arrayOfInt2[2] << 8)) < paramInt2))
        return paramInt3 + b(arrayOfInt); 
    } 
    return Integer.MIN_VALUE;
  }
  
  private static int a(int[] paramArrayOfint) {
    return paramArrayOfint[0] + paramArrayOfint[1] + paramArrayOfint[2];
  }
  
  private static int b(int[] paramArrayOfint) {
    return a(paramArrayOfint) - paramArrayOfint[2] - (paramArrayOfint[1] >> 1);
  }
}

Added: ab.java

public final class ab {
  private int a;
  
  private int b;
  
  private double[] a;
  
  private double[] b;
  
  private double[] c;
  
  private double[] d;
  
  private double[] e;
  
  private double[] f;
  
  private double[] g;
  
  private double[] h;
  
  public ab(int paramInt1, int paramInt2, l paraml) {
    this.a = paramInt1;
    this.b = paramInt2;
    this.a = a(paraml.a());
    this.b = a(paraml.b());
    this.c = a(paraml.c());
    this.d = a(paraml.d());
    this.e = a(this.a, this.b);
    this.f = a(this.b, this.c);
    this.g = a(this.c, this.d);
    this.h = a(this.d, this.a);
  }
  
  private static double[] a(int[] paramArrayOfint) {
    return new double[] { paramArrayOfint[0], paramArrayOfint[1] };
  }
  
  public final boolean a() {
    // Byte code:
    //   0: aload_0
    //   1: dup
    //   2: astore_1
    //   3: aload_1
    //   4: getfield a : [D
    //   7: invokespecial a : ([D)Z
    //   10: ifeq -> 50
    //   13: aload_1
    //   14: aload_1
    //   15: getfield b : [D
    //   18: invokespecial a : ([D)Z
    //   21: ifeq -> 50
    //   24: aload_1
    //   25: aload_1
    //   26: getfield d : [D
    //   29: invokespecial a : ([D)Z
    //   32: ifeq -> 50
    //   35: aload_1
    //   36: aload_1
    //   37: getfield c : [D
    //   40: invokespecial a : ([D)Z
    //   43: ifeq -> 50
    //   46: iconst_1
    //   47: goto -> 51
    //   50: iconst_0
    //   51: ifeq -> 371
    //   54: aload_0
    //   55: dup
    //   56: astore_1
    //   57: getfield a : [D
    //   60: aload_1
    //   61: getfield b : [D
    //   64: invokestatic a : ([D[D)[D
    //   67: aload_1
    //   68: getfield a : [D
    //   71: aload_1
    //   72: getfield c : [D
    //   75: invokestatic a : ([D[D)[D
    //   78: invokestatic b : ([D[D)D
    //   81: dstore_2
    //   82: aload_1
    //   83: getfield b : [D
    //   86: aload_1
    //   87: getfield d : [D
    //   90: invokestatic a : ([D[D)[D
    //   93: aload_1
    //   94: getfield b : [D
    //   97: aload_1
    //   98: getfield a : [D
    //   101: invokestatic a : ([D[D)[D
    //   104: invokestatic b : ([D[D)D
    //   107: dstore #4
    //   109: aload_1
    //   110: getfield c : [D
    //   113: aload_1
    //   114: getfield a : [D
    //   117: invokestatic a : ([D[D)[D
    //   120: aload_1
    //   121: getfield c : [D
    //   124: aload_1
    //   125: getfield d : [D
    //   128: invokestatic a : ([D[D)[D
    //   131: invokestatic b : ([D[D)D
    //   134: dstore #6
    //   136: aload_1
    //   137: getfield d : [D
    //   140: aload_1
    //   141: getfield b : [D
    //   144: invokestatic a : ([D[D)[D
    //   147: aload_1
    //   148: getfield d : [D
    //   151: aload_1
    //   152: getfield c : [D
    //   155: invokestatic a : ([D[D)[D
    //   158: invokestatic b : ([D[D)D
    //   161: dstore #8
    //   163: dload_2
    //   164: invokestatic a : (D)Z
    //   167: ifeq -> 198
    //   170: dload #4
    //   172: invokestatic a : (D)Z
    //   175: ifeq -> 198
    //   178: dload #6
    //   180: invokestatic a : (D)Z
    //   183: ifeq -> 198
    //   186: dload #8
    //   188: invokestatic a : (D)Z
    //   191: ifeq -> 198
    //   194: iconst_1
    //   195: goto -> 207
    //   198: getstatic java/lang/System.out : Ljava/io/PrintStream;
    //   201: ldc 'failed angle test'
    //   203: invokevirtual println : (Ljava/lang/String;)V
    //   206: iconst_0
    //   207: ifeq -> 371
    //   210: aload_0
    //   211: astore_1
    //   212: getstatic java/lang/Double.MIN_VALUE : D
    //   215: dstore_2
    //   216: ldc2_w 1.7976931348623157E308
    //   219: dstore #4
    //   221: iconst_4
    //   222: newarray double
    //   224: dup
    //   225: iconst_0
    //   226: aload_1
    //   227: getfield e : [D
    //   230: invokestatic a : ([D)D
    //   233: dastore
    //   234: dup
    //   235: iconst_1
    //   236: aload_1
    //   237: getfield f : [D
    //   240: invokestatic a : ([D)D
    //   243: dastore
    //   244: dup
    //   245: iconst_2
    //   246: aload_1
    //   247: getfield g : [D
    //   250: invokestatic a : ([D)D
    //   253: dastore
    //   254: dup
    //   255: iconst_3
    //   256: aload_1
    //   257: getfield h : [D
    //   260: invokestatic a : ([D)D
    //   263: dastore
    //   264: astore #6
    //   266: iconst_0
    //   267: istore #9
    //   269: iload #9
    //   271: aload #6
    //   273: arraylength
    //   274: if_icmpge -> 339
    //   277: aload #6
    //   279: iload #9
    //   281: daload
    //   282: dup2
    //   283: dstore #7
    //   285: dconst_0
    //   286: dcmpl
    //   287: ifne -> 302
    //   290: getstatic java/lang/System.out : Ljava/io/PrintStream;
    //   293: ldc 'failed lenght check; lenght was 0'
    //   295: invokevirtual println : (Ljava/lang/String;)V
    //   298: iconst_0
    //   299: goto -> 366
    //   302: dload_2
    //   303: dload #7
    //   305: dcmpg
    //   306: ifge -> 314
    //   309: dload #7
    //   311: goto -> 315
    //   314: dload_2
    //   315: dstore_2
    //   316: dload #4
    //   318: dload #7
    //   320: dcmpl
    //   321: ifle -> 329
    //   324: dload #7
    //   326: goto -> 331
    //   329: dload #4
    //   331: dstore #4
    //   333: iinc #9, 1
    //   336: goto -> 269
    //   339: dload_2
    //   340: dload #4
    //   342: dsub
    //   343: dload #4
    //   345: ldc2_w 1.5
    //   348: dmul
    //   349: dcmpl
    //   350: ifle -> 365
    //   353: getstatic java/lang/System.out : Ljava/io/PrintStream;
    //   356: ldc 'failed lenght check'
    //   358: invokevirtual println : (Ljava/lang/String;)V
    //   361: iconst_0
    //   362: goto -> 366
    //   365: iconst_1
    //   366: ifeq -> 371
    //   369: iconst_1
    //   370: ireturn
    //   371: iconst_0
    //   372: ireturn
  }
  
  private static boolean a(double paramDouble) {
    return (60.0D <= paramDouble && paramDouble <= 120.0D);
  }
  
  private static double[] a(double[] paramArrayOfdouble1, double[] paramArrayOfdouble2) {
    return new double[] { paramArrayOfdouble2[0] - paramArrayOfdouble1[0], paramArrayOfdouble2[1] - paramArrayOfdouble1[1] };
  }
  
  private boolean a(double[] paramArrayOfdouble) {
    return (0.0D <= paramArrayOfdouble[0] && paramArrayOfdouble[0] < this.a && 0.0D <= paramArrayOfdouble[1] && paramArrayOfdouble[1] < this.b);
  }
}

Added: ac.java

public final class ac {
  private int a;
  
  private int b;
  
  private double a;
  
  private int c;
  
  private double b = 1.0D;
  
  public ac(int paramInt1, int paramInt2, double paramDouble) {
    this.a = paramInt1;
    this.b = paramInt2;
    this.a = paramDouble;
    this.c = 1;
  }
  
  public final int a() {
    return this.a;
  }
  
  public final int b() {
    return this.b;
  }
  
  public final double a() {
    return this.a;
  }
  
  public final int c() {
    return this.c;
  }
  
  public final boolean a(double paramDouble, int paramInt1, int paramInt2) {
    paramInt1 = paramInt2;
    int i = paramInt1;
    double d = paramDouble;
    ac ac1 = this;
    if (!((Math.abs(i - ac1.a) <= d && Math.abs(paramInt1 - ac1.b) <= d && Math.abs(d - ac1.a) <= ac1.b) ? 1 : 0))
      return false; 
    this.c++;
    return true;
  }
}

Added: ad.java

public final class ad extends k {}

Added: ae.java

import java.util.Vector;

public final class ae {
  private ag a;
  
  private j a;
  
  public ae(ag paramag) {
    this.a = (j)paramag;
  }
  
  public final l[] a(ag paramag) {
    this.a = (j)paramag;
    Vector vector = new Vector();
    this.a = j.a();
    ac[] arrayOfAc1 = h.a(paramag);
    ac[] arrayOfAc2 = arrayOfAc1;
    ae ae2 = this;
    j j1 = j.a();
    int[][] arrayOfInt8 = a((ag)ae2.a, arrayOfAc2[0].a(), arrayOfAc2[0].b(), arrayOfAc2[2].a() - arrayOfAc2[0].a(), arrayOfAc2[2].b() - arrayOfAc2[0].b());
    int[][] arrayOfInt10 = a((ag)ae2.a, arrayOfAc2[1].a(), arrayOfAc2[1].b(), arrayOfAc2[2].a() - arrayOfAc2[0].a(), arrayOfAc2[2].b() - arrayOfAc2[0].b());
    int[][] arrayOfInt12 = a((ag)ae2.a, arrayOfAc2[0].a(), arrayOfAc2[0].b(), arrayOfAc2[1].a() - arrayOfAc2[0].a(), arrayOfAc2[1].b() - arrayOfAc2[0].b());
    int[][] arrayOfInt4 = a((ag)ae2.a, arrayOfAc2[2].a(), arrayOfAc2[2].b(), arrayOfAc2[1].a() - arrayOfAc2[0].a(), arrayOfAc2[1].b() - arrayOfAc2[0].b());
    j1.a(arrayOfInt8[0]);
    j1.b(arrayOfInt8[1]);
    j1.c(arrayOfInt10[0]);
    j1.d(arrayOfInt10[1]);
    j1.e(arrayOfInt12[1]);
    j1.f(arrayOfInt4[1]);
    int k;
    int m = ((k = a()) - 1 << 2) + 21;
    int[] arrayOfInt5 = a(paramag, arrayOfAc1[0].a(), arrayOfAc1[0].b());
    int[] arrayOfInt6 = a(paramag, arrayOfAc1[1].a(), arrayOfAc1[1].b());
    int[] arrayOfInt7 = a(paramag, arrayOfAc1[2].a(), arrayOfAc1[2].b());
    int[] arrayOfInt2;
    if ((arrayOfInt2 = aa.a(paramag, k, a(arrayOfAc1))) != null) {
      paramag.b();
      paramag.c();
      ai ai = a(arrayOfInt5, arrayOfInt6, arrayOfInt7, arrayOfInt2, 6, m, false);
      vector.addElement(new l(paramag.a(), m, 6, ai));
    } 
    paramag.b();
    paramag.c();
    ai ai2 = a(arrayOfInt5, arrayOfInt6, arrayOfInt7, h.a(paramag, arrayOfInt5, arrayOfInt6, arrayOfInt7), 6, m, true);
    vector.addElement(new l(paramag.a(), m, 6, ai2));
    paramag.b();
    paramag.c();
    arrayOfInt7 = arrayOfInt7;
    arrayOfInt6 = arrayOfInt6;
    arrayOfInt5 = arrayOfInt5;
    ae ae1;
    int[] arrayOfInt9 = h.a((ae1 = this).a.b(), ae1.a.d(), ae1.a.e(), ae1.a.f());
    int[] arrayOfInt11 = { arrayOfInt7[0] - arrayOfInt6[0], arrayOfInt7[1] - arrayOfInt6[1] };
    int[] arrayOfInt3 = h.a(new int[] { arrayOfInt5[0], arrayOfInt5[1] }, arrayOfInt9, new int[] { arrayOfInt6[0], arrayOfInt6[1] }, new int[] { arrayOfInt6[0] + arrayOfInt11[0], arrayOfInt6[1] + arrayOfInt11[1] });
    int[] arrayOfInt1 = { arrayOfInt3[0] - arrayOfInt5[0], arrayOfInt3[1] - arrayOfInt5[1] };
    arrayOfInt1 = new int[] { 2 * arrayOfInt1[0], 2 * arrayOfInt1[1] };
    ai ai1 = a(arrayOfInt5, arrayOfInt6, arrayOfInt7, new int[] { arrayOfInt5[0] + arrayOfInt1[0], arrayOfInt5[1] + arrayOfInt1[1] }, 6, m, true);
    vector.addElement(new l(paramag.a(), m, 6, ai1));
    int i;
    l[] arrayOfL = new l[i = vector.size()];
    for (byte b = 0; b < i; b++)
      arrayOfL[b] = vector.elementAt(b); 
    return arrayOfL;
  }
  
  private static int[][] a(ag paramag, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
    Vector vector = h.a(paramInt1, paramInt2, paramInt1 + paramInt3, paramInt2 + paramInt4, 0, 0, paramag.b(), paramag.c());
    paramInt4 = 0;
    int i = 0;
    byte b = 0;
    int k = 0;
    int m = vector.size();
    byte b1 = 1;
    int[] arrayOfInt3 = vector.elementAt(0);
    boolean bool = false;
    if (arrayOfInt3[0] != paramInt1 || arrayOfInt3[1] != paramInt2) {
      k = vector.size() - 1;
      m = 0;
      b1 = -1;
    } 
    for (paramInt1 = k; ((b1 > 0) ? (paramInt1 < m) : (paramInt1 >= m)) && !bool; paramInt1 += b1) {
      int[] arrayOfInt = vector.elementAt(paramInt1);
      if (paramag.a(arrayOfInt[0], arrayOfInt[1])) {
        if (b == 1) {
          paramInt4 = paramInt1;
          b++;
        } 
      } else {
        if (b == 0)
          b++; 
        if (b == 2) {
          i = paramInt1;
          b++;
          bool = true;
        } 
      } 
    } 
    int[] arrayOfInt1 = (b1 < 0) ? vector.elementAt((paramInt4 - i >> 1) + i + 1) : vector.elementAt((i - paramInt4 >> 1) + paramInt4);
    int[] arrayOfInt2 = vector.elementAt(i);
    return new int[][] { arrayOfInt1, arrayOfInt2 };
  }
  
  private static ai a(int[] paramArrayOfint1, int[] paramArrayOfint2, int[] paramArrayOfint3, int[] paramArrayOfint4, int paramInt1, int paramInt2, boolean paramBoolean) {
    paramInt1 = paramInt2 * 6;
    double d = paramBoolean ? 21.0D : 39.0D;
    ai ai;
    return ai = ai.a(21.0D, 21.0D, paramInt1 - 21.0D, 21.0D, 21.0D, paramInt1 - 21.0D, paramInt1 - d, paramInt1 - d, paramArrayOfint1[0], paramArrayOfint1[1], paramArrayOfint2[0], paramArrayOfint2[1], paramArrayOfint3[0], paramArrayOfint3[1], paramArrayOfint4[0], paramArrayOfint4[1]);
  }
  
  private static double[] a(ac[] paramArrayOfac) {
    j.a();
    double d1 = Double.MIN_VALUE;
    double d2 = Double.MAX_VALUE;
    for (byte b = 0; b < 3; b++) {
      double d;
      d1 = ((d = paramArrayOfac[b].a()) > d1) ? d : d1;
      d2 = (d < d2) ? d : d2;
    } 
    return new double[] { d2, d1 };
  }
  
  private int a() {
    j j1;
    int[] arrayOfInt2 = (j1 = j.a()).a();
    int[] arrayOfInt1 = j1.c();
    Vector vector = h.a(arrayOfInt2[0], arrayOfInt2[1], arrayOfInt1[0], arrayOfInt1[1], 0, 0, this.a.b(), this.a.c());
    byte b1 = 0;
    boolean bool = true;
    int i = vector.size();
    for (byte b2 = 0; b2 < i; b2++) {
      int[] arrayOfInt = vector.elementAt(b2);
      if (this.a.a(arrayOfInt[0], arrayOfInt[1])) {
        if (!bool) {
          b1++;
          bool = true;
        } 
      } else if (bool) {
        b1++;
        bool = false;
      } 
    } 
    return (b1 + 13 - 21 >> 2) + 1;
  }
  
  private int[] a(ag paramag, int paramInt1, int paramInt2) {
    paramInt1 = a(paramag, paramInt1, paramInt2);
    int m = paramInt2;
    int k = paramInt1;
    ag ag1;
    if (!(ag1 = paramag).a(k, m))
      throw new r(); 
    int n = ag1.c();
    byte b = 0;
    int i1;
    for (i1 = m; i1 >= 0 && ag1.a(k, i1); i1--)
      b++; 
    int i2 = i1 + 1;
    for (i1 = m + 1; i1 < n && ag1.a(k, i1); i1++)
      b++; 
    int i = (i1 == -1) ? m : ((i1 == n) ? m : (i2 + (b >> 1)));
    paramInt1 = a(paramag, paramInt1, i);
    return new int[] { paramInt1, i };
  }
  
  private static int a(ag paramag, int paramInt1, int paramInt2) {
    if (!paramag.a(paramInt1, paramInt2))
      throw new r(); 
    int i = paramag.b();
    byte b = 0;
    int k;
    for (k = paramInt1; k >= 0 && paramag.a(k, paramInt2); k--)
      b++; 
    if (k == -1)
      return paramInt1; 
    int m = k + 1;
    for (k = paramInt1 + 1; k < i && paramag.a(k, paramInt2); k++)
      b++; 
    return (k == i) ? paramInt1 : (m + (b >> 1));
  }
}

Added: af.java

import java.util.Enumeration;
import java.util.Hashtable;

public class af {
  private ag a;
  
  private int[] a;
  
  public af(int[] paramArrayOfint, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
    int[] arrayOfInt = new int[256];
    int[][] arrayOfInt1 = new int[paramInt3 * paramInt4][256];
    a(paramArrayOfint, arrayOfInt, arrayOfInt1, paramInt1, paramInt2, paramInt3, paramInt4);
    a(arrayOfInt, arrayOfInt1);
    this.a = (int[])new ag(paramArrayOfint, paramInt1, paramInt2);
  }
  
  private static void a(int[] paramArrayOfint1, int[] paramArrayOfint2, int[][] paramArrayOfint, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
    int i = paramArrayOfint1.length;
    int j = paramInt1 / paramInt3;
    int k = paramInt2 / paramInt4;
    for (byte b = 0; b < i; b++) {
      paramArrayOfint1[b] = (((paramInt2 = paramArrayOfint1[b]) >> 16 & 0xFF) + (paramInt2 >> 8 & 0xFF) + (paramInt2 & 0xFF)) / 3;
      paramArrayOfint2[paramArrayOfint1[b]] = paramArrayOfint2[paramArrayOfint1[b]] + 1;
      paramInt2 = b % paramInt1;
      paramInt4 = (b - paramInt2) / paramInt1;
      if ((paramInt2 = paramInt2 / j + paramInt4 / k * paramInt3) < paramArrayOfint.length)
        paramArrayOfint[paramInt2][paramArrayOfint1[b]] = paramArrayOfint[paramInt2][paramArrayOfint1[b]] + 1; 
    } 
  }
  
  private void a(int[] paramArrayOfint, int[][] paramArrayOfint1) {
    int j = paramArrayOfint1.length;
    int i = a(paramArrayOfint);
    byte b1 = 0;
    b1++;
    Hashtable hashtable;
    (hashtable = new Hashtable(j + 1)).put(i, false);
    for (byte b2 = 0; b2 < j; b2++) {
      i = a(paramArrayOfint1[b2]);
      if (!hashtable.containsKey(i))
        hashtable.put(i, b1++); 
    } 
    this.a = new int[hashtable.size()];
    Enumeration enumeration = hashtable.keys();
    while (enumeration.hasMoreElements()) {
      String str2 = enumeration.nextElement();
      String str1 = (String)hashtable.get(str2);
      this.a[Integer.parseInt(str1)] = Integer.parseInt(str2);
    } 
  }
  
  public final ag a() {
    return (ag)this.a;
  }
  
  public final int[] a() {
    return this.a;
  }
  
  public static ah a(int[] paramArrayOfint, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
    ai ai2 = ai.a(0.0D, 0.0D, paramInt3, 0.0D, 0.0D, paramInt4, paramInt3, paramInt4, 0.0D, 0.0D, paramInt1, 0.0D, 0.0D, paramInt2, paramInt1, paramInt2);
    ai ai1 = ai.a(0.0D, 0.0D, paramInt1, 0.0D, 0.0D, paramInt2, paramInt1, paramInt2, 0.0D, 0.0D, paramInt3, 0.0D, 0.0D, paramInt4, paramInt3, paramInt4);
    int[] arrayOfInt = new int[paramInt3 * paramInt4];
    for (byte b = 0; b < paramInt4; b++) {
      for (byte b1 = 0; b1 < paramInt3; b1++) {
        int i = (int)ai2.a(b1, b);
        int j = (int)ai2.b(b1, b);
        arrayOfInt[b1 + b * paramInt3] = paramArrayOfint[i + j * paramInt1];
      } 
    } 
    return new ah(arrayOfInt, ai1, paramInt3, paramInt4);
  }
  
  private static int a(int[] paramArrayOfint) {
    int i = paramArrayOfint.length;
    int j = 0;
    int k = 0;
    int m = 0;
    int n;
    for (n = 0; n < i; n++) {
      if (paramArrayOfint[n] > m) {
        k = n;
        m = paramArrayOfint[n];
      } 
      if (paramArrayOfint[n] > j)
        j = paramArrayOfint[n]; 
    } 
    n = 0;
    m = 0;
    int i1;
    for (i1 = 0; i1 < i; i1++) {
      int i4 = i1 - k;
      int i5;
      if ((i5 = paramArrayOfint[i1] * i4 * i4) > m) {
        n = i1;
        m = i5;
      } 
    } 
    if (k > n) {
      i1 = k;
      k = n;
      n = i1;
    } 
    i1 = n - 1;
    int i2 = -1;
    for (int i3 = n - 1; i3 > k; i3--) {
      if ((i = (i = i3 - k) * i * (n - i3) * (j - paramArrayOfint[i3])) > i2) {
        i1 = i3;
        i2 = i;
      } 
    } 
    return i1;
  }
}

Added: ag.java

public final class ag {
  private int[] a;
  
  private int a;
  
  private int b;
  
  private int c;
  
  ag(int[] paramArrayOfint, int paramInt1, int paramInt2) {
    this.a = paramArrayOfint;
    this.a = paramInt1;
    this.b = paramInt2;
  }
  
  public final void a(int paramInt) {
    this.c = paramInt;
  }
  
  public final int a() {
    return this.c;
  }
  
  public final boolean a(int paramInt1, int paramInt2) {
    if (paramInt1 >= 0 && paramInt1 < this.a && paramInt2 >= 0 && paramInt2 < this.b)
      return (this.a[paramInt1 + paramInt2 * this.a] <= this.c); 
    throw new r();
  }
  
  public final boolean a(int[] paramArrayOfint) {
    return (0 <= paramArrayOfint[0] && paramArrayOfint[0] < this.a && 0 <= paramArrayOfint[1] && paramArrayOfint[1] < this.b) ? ((this.a[paramArrayOfint[0] + paramArrayOfint[1] * this.a] <= this.c)) : false;
  }
  
  public final int b() {
    return this.a;
  }
  
  public final int c() {
    return this.b;
  }
}

Added: ah.java

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public final class ah {
  private final int[] a;
  
  private final ai a;
  
  private final int a;
  
  private final int b;
  
  private Image a;
  
  public ah(int[] paramArrayOfint, ai paramai, int paramInt1, int paramInt2) {
    this.a = (Image)paramArrayOfint;
    this.a = (Image)paramai;
    this.a = paramInt1;
    this.b = paramInt2;
  }
  
  public final Image a() {
    if (this.a == null) {
      this.a = Image.createImage(this.a, this.b);
      Graphics graphics;
      (graphics = this.a.getGraphics()).drawRGB((int[])this.a, 0, this.a, 0, 0, this.a, this.b, false);
    } 
    return this.a;
  }
  
  public final int[] a(int[] paramArrayOfint) {
    int[] arrayOfInt = paramArrayOfint;
    Image image = this.a;
    return new int[] { (int)image.a(arrayOfInt[0], arrayOfInt[1]), (int)image.b(arrayOfInt[0], arrayOfInt[1]) };
  }
}

Added: ai.java

public class ai {
  private double[] a;
  
  private int a;
  
  private int b;
  
  public ai(double[] paramArrayOfdouble) {
    this(paramArrayOfdouble, (byte)0);
  }
  
  private ai(double[] paramArrayOfdouble, byte paramByte) {
    this.a = paramArrayOfdouble;
    this.a = paramArrayOfdouble.length - 2;
    this.b = paramArrayOfdouble.length - 1;
  }
  
  public final double a(int paramInt1, int paramInt2) {
    return a(this.a[0], this.a[1], this.a[2], paramInt1, paramInt2);
  }
  
  public final double b(int paramInt1, int paramInt2) {
    return a(this.a[3], this.a[4], this.a[5], paramInt1, paramInt2);
  }
  
  private double a(double paramDouble1, double paramDouble2, double paramDouble3, int paramInt1, int paramInt2) {
    double d;
    return d = (paramDouble1 * paramInt1 + paramDouble2 * paramInt2 + paramDouble3) / (this.a[this.a] * paramInt1 + this.a[this.b] * paramInt2 + 1.0D);
  }
  
  public static ai a(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4, double paramDouble5, double paramDouble6, double paramDouble7, double paramDouble8, double paramDouble9, double paramDouble10, double paramDouble11, double paramDouble12, double paramDouble13, double paramDouble14, double paramDouble15, double paramDouble16) {
    double d16 = paramDouble16;
    double d15 = paramDouble15;
    double d14 = paramDouble14;
    double d13 = paramDouble13;
    double d12 = paramDouble12;
    double d11 = paramDouble11;
    double d10 = paramDouble10;
    double d9 = paramDouble9;
    double d8 = paramDouble8;
    double d7 = paramDouble7;
    double d6 = paramDouble6;
    double d5 = paramDouble5;
    double d4 = paramDouble4;
    double d3 = paramDouble3;
    double d2 = paramDouble2;
    double d1 = paramDouble1;
    ak ak = new ak(8, 9);
    double[] arrayOfDouble1 = { d1, d3, d5, d7 };
    double[] arrayOfDouble2 = { d2, d4, d6, d8 };
    double[] arrayOfDouble3 = { d9, d11, d13, d15 };
    double[] arrayOfDouble4 = { d10, d12, d14, d16 };
    byte b1;
    for (b1 = 0; b1 < 4; b1++) {
      ak.a(new double[] { arrayOfDouble1[b1], arrayOfDouble2[b1], 1.0D, 0.0D, 0.0D, 0.0D, -arrayOfDouble1[b1] * arrayOfDouble3[b1], -arrayOfDouble2[b1] * arrayOfDouble3[b1], arrayOfDouble3[b1] }, b1);
    } 
    for (b1 = 0; b1 < 4; b1++) {
      ak.a(new double[] { 0.0D, 0.0D, 0.0D, arrayOfDouble1[b1], arrayOfDouble2[b1], 1.0D, -arrayOfDouble1[b1] * arrayOfDouble4[b1], -arrayOfDouble2[b1] * arrayOfDouble4[b1], arrayOfDouble4[b1] }, b1 + 4);
    } 
    ak.a();
    double[] arrayOfDouble5 = new double[ak.a()];
    for (byte b2 = 0; b2 < ak.a(); b2++)
      arrayOfDouble5[b2] = ak.a(b2, ak.b() - 1); 
    return new ai(arrayOfDouble5);
  }
}

Added: aj.java

final class aj {
  private int a;
  
  private double[] a;
  
  aj(int paramInt1, int paramInt2, double[] paramArrayOfdouble) {
    this.a = paramInt2;
    this.a = paramArrayOfdouble;
  }
  
  final int a() {
    return this.a;
  }
  
  final double[] a() {
    return this.a;
  }
}

Added: ak.java

final class ak {
  private double[][] a;
  
  private int a = 8;
  
  private int b = 9;
  
  ak(int paramInt1, int paramInt2) {
    this.a = new double[8][9];
  }
  
  final void a(double[] paramArrayOfdouble, int paramInt) {
    this.a[paramInt] = paramArrayOfdouble;
  }
  
  final double a(int paramInt1, int paramInt2) {
    return this.a[paramInt1][paramInt2];
  }
  
  private int a(int paramInt) {
    byte b = 0;
    boolean bool = false;
    int j = paramInt;
    ak ak1;
    int i = (ak1 = this).a[j];
    for (j = 0; j < i.length; j++) {
      if (i[j] != 0.0D)
        bool = true; 
      if (!bool && i[j] == 0.0D)
        b++; 
    } 
    return b;
  }
  
  final void a() {
    ak ak1;
    ak ak2;
    aj[] arrayOfAj2 = new aj[(ak2 = ak1 = this).a];
    byte b3;
    for (b3 = 0; b3 < ak2.a; b3++) {
      byte b = b3;
      ak ak3;
      aj aj = new aj(b3, ak2.a(b3), (ak3 = ak2).a[b]);
      arrayOfAj2[b3] = aj;
    } 
    aj[] arrayOfAj1 = arrayOfAj2;
    byte b4;
    for (b4 = 1; b4 < arrayOfAj1.length; b4++) {
      aj aj = arrayOfAj1[b4];
      int k;
      for (k = b4 - 1; k >= 0 && arrayOfAj1[k].a() >= aj.a(); k--)
        arrayOfAj1[k + 1] = arrayOfAj1[k]; 
      arrayOfAj1[k + 1] = aj;
    } 
    for (b4 = 0; b4 < arrayOfAj1.length; b4++) {
      byte b = b4;
      double[] arrayOfDouble = arrayOfAj1[b4].a();
      ak ak3;
      (ak3 = ak1).a[b] = arrayOfDouble;
    } 
    byte b1 = 0;
    int i = this.a;
    int j = this.b;
    for (byte b2 = 0; b2 < i && j > b1; b2++) {
      byte b5 = b2;
      while (a(b5, b1) == 0.0D) {
        if (i == ++b5) {
          b5 = b2;
          if (j <= ++b1)
            break; 
        } 
      } 
      b4 = b2;
      byte b6 = b5;
      int i1 = b6;
      ak ak4;
      int m = (ak4 = ak1 = this).a[i1];
      i1 = b4;
      int k = b6;
      i1 = (ak4 = ak1).a[i1];
      (ak4 = ak1).a[k] = i1;
      k = b4;
      i1 = m;
      (ak4 = ak1).a[k] = i1;
      double d1 = 1.0D / a(b2, b1);
      double d2 = d1;
      b6 = b2;
      i1 = b6;
      ak ak3;
      int n = (ak4 = ak3 = this).a[i1];
      for (k = 0; k < n.length; k++)
        n[k] = n[k] * d2; 
      k = b6;
      i1 = n;
      (ak4 = ak3).a[k] = i1;
      for (b5 = 0; b5 < this.a; b5++) {
        if (b5 != b2) {
          double d = -1.0D * a(b5, b1);
          byte b = b2;
          b6 = b5;
          i1 = b6;
          k = (ak4 = ak3 = this).a[i1];
          i1 = b;
          int i2 = (ak4 = ak3).a[i1];
          for (b3 = 0; b3 < k.length; b3++)
            k[b3] = k[b3] + d * i2[b3]; 
          k = b6;
          i1 = k;
          (ak4 = ak3).a[k] = i1;
        } 
      } 
      b1++;
    } 
  }
  
  final int a() {
    return this.a;
  }
  
  final int b() {
    return this.b;
  }
}

Added: al.java

public abstract class al {
  public abstract am a(String paramString);
  
  public static void a(int paramInt1, byte[] paramArrayOfbyte, int paramInt2) {
    paramArrayOfbyte[paramInt2] = paramInt1 >> 24;
    paramArrayOfbyte[++paramInt2] = (byte)(paramInt1 >>> 16);
    paramArrayOfbyte[++paramInt2] = (byte)(paramInt1 >>> 8);
    paramArrayOfbyte[++paramInt2] = (byte)paramInt1;
  }
}

Added: am.java

public abstract class am {
  private int a;
  
  public am(int paramInt) {
    this.a = paramInt;
    System.out.print("Result type:");
    switch (paramInt) {
      case 0:
        System.out.println("Text");
        return;
      case 1:
        System.out.println("URL");
        return;
      case 2:
        System.out.println("SMS");
        return;
    } 
    System.out.println(paramInt);
  }
  
  public final int a() {
    return this.a;
  }
}

Added: an.java

public final class an {
  private static al[] a = new al[] { new ap((byte)0), new ao((byte)0) };
  
  public static am a(String paramString) {
    int i = a.length;
    for (byte b = 0; b < i; b++) {
      am am;
      if ((am = a[b].a(paramString)) != null)
        return am; 
    } 
    return new ar(paramString);
  }
}

Added: ao.java

final class ao extends al {
  private ao() {}
  
  public final am a(String paramString) {
    if (paramString.substring(0, 6).toLowerCase().equals("smsto:")) {
      int i = (paramString = paramString.substring(6)).indexOf(":");
      String str = paramString.substring(0, i);
      paramString = paramString.substring(++i);
      return new aq(str, paramString);
    } 
    if (paramString.substring(0, 6).toLowerCase().equals("sms://")) {
      String str = paramString.substring(6);
      int i = paramString.indexOf(":");
      paramString = str.substring(0, i);
      str = str.substring(++i);
      return new aq(paramString, str);
    } 
    return null;
  }
  
  ao(byte paramByte) {
    this();
  }
}

Added: ap.java

final class ap extends al {
  private ap() {}
  
  public final am a(String paramString) {
    return paramString.substring(0, 7).equals("http://") ? a(paramString) : (paramString.substring(0, 4).equals("www.") ? a(paramString) : null);
  }
  
  private static as a(String paramString) {
    return new as(paramString);
  }
  
  ap(byte paramByte) {
    this();
  }
}

Added: aq.java

public final class aq extends am {
  private String a;
  
  private String b;
  
  public aq(String paramString1, String paramString2) {
    super(2);
    this.a = paramString1;
    this.b = paramString2;
  }
  
  public final String toString() {
    return "SMSTO:" + this.a + ":" + this.b;
  }
}

Added: ar.java

public final class ar extends am {
  private String a;
  
  public ar(String paramString) {
    super(0);
    this.a = paramString;
  }
  
  public final String a() {
    return this.a;
  }
  
  public final String toString() {
    return this.a;
  }
}

Added: as.java

public final class as extends am {
  private String a;
  
  public as(String paramString) {
    super(1);
    this.a = paramString;
  }
  
  public final String a() {
    return this.a;
  }
  
  public final String b() {
    this.a = this.a.toLowerCase();
    return this.a.substring(0, 4).equals("http") ? this.a : ("http://" + this.a);
  }
  
  public final String toString() {
    return "[URL]:" + this.a;
  }
}

Added: at.java

import hotpants.Midlet;
import hotpants.i;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;

public final class at extends Canvas {
  private static at a = null;
  
  private final Midlet a;
  
  private final i a;
  
  private au a;
  
  private String a = null;
  
  private at(Midlet paramMidlet, i parami) {
    this.a = "Opening camera...";
    setFullScreenMode(true);
    this.a = (String)paramMidlet;
    this.a = (String)parami;
  }
  
  public static at a(Midlet paramMidlet, i parami) {
    if (a == null)
      a = (String)new at(paramMidlet, parami); 
    if (a.isShown()) {
      System.out.println("instance is shown");
      a.repaint();
    } 
    return (at)a;
  }
  
  protected final void showNotify() {
    if (this.a == null) {
      this.a = (String)new au(this);
      (new Thread((Runnable)this.a)).start();
    } 
  }
  
  protected final void paint(Graphics paramGraphics) {
    paramGraphics.setColor(0);
    paramGraphics.fillRect(0, 0, getWidth(), getHeight());
    paramGraphics.setColor(16777215);
    paramGraphics.setFont(Font.getFont(64, 0, 0));
    paramGraphics.drawString(this.a, getWidth() >> 1, getHeight() >> 1, 33);
  }
  
  protected final void pointerPressed(int paramInt1, int paramInt2) {
    this.a.a();
  }
  
  protected final void keyPressed(int paramInt) {
    switch (paramInt) {
      case 0:
        return;
      case -11:
      case -8:
      case -7:
        this.a.showMainForm();
        return;
    } 
    this.a.a();
  }
  
  static void a(at paramat, String paramString) {
    paramString = paramString;
    (paramat = paramat).a = paramString;
  }
}

Added: au.java

import dk.onlinecity.qrr.client.e;

final class au implements Runnable {
  private final at a;
  
  au(at paramat) {
    this.a = paramat;
  }
  
  public final void run() {
    e.a();
    at.a(this.a, "Take photo");
  }
}

Added: av.java

import hotpants.Midlet;
import hotpants.i;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;

public final class av extends GameCanvas implements Runnable {
  private Midlet a;
  
  private i a;
  
  private Thread a;
  
  private ah a;
  
  private int[] a;
  
  private int a;
  
  private int b;
  
  private int[] b;
  
  private int[] c;
  
  private int[] d;
  
  private int[] e;
  
  private int c = 1;
  
  private int d;
  
  private String a;
  
  private boolean a = "No QR Code found.";
  
  private String b;
  
  public av(Midlet paramMidlet, i parami, byte[] paramArrayOfbyte) {
    super(true);
    this.a = false;
    setFullScreenMode(true);
    this.a = paramMidlet;
    this.a = parami;
    Image image = Image.createImage(paramArrayOfbyte, 0, paramArrayOfbyte.length);
    this.b = image.getWidth();
    this.a = image.getHeight();
    int j;
    int k = (int)((j = getWidth() - 60) * this.a / this.b);
    this.a = new int[this.b * this.a];
    image.getRGB(this.a, 0, this.b, 0, 0, this.b, this.a);
    this.a = af.a(this.a, this.b, this.a, j, k);
    a(getGraphics());
    flushGraphics();
  }
  
  protected final void showNotify() {
    // Byte code:
    //   0: aload_0
    //   1: getfield a : Ljava/lang/Thread;
    //   4: ifnonnull -> 26
    //   7: aload_0
    //   8: new java/lang/Thread
    //   11: dup
    //   12: aload_0
    //   13: invokespecial <init> : (Ljava/lang/Runnable;)V
    //   16: putfield a : Ljava/lang/Thread;
    //   19: aload_0
    //   20: getfield a : Ljava/lang/Thread;
    //   23: invokevirtual start : ()V
    //   26: return
  }
  
  public final void run() {
    // Byte code:
    //   0: aload_0
    //   1: astore_1
    //   2: new n
    //   5: dup
    //   6: aload_1
    //   7: getfield a : [I
    //   10: aload_1
    //   11: getfield b : I
    //   14: aload_1
    //   15: getfield a : I
    //   18: bipush #8
    //   20: bipush #6
    //   22: invokespecial <init> : ([IIIII)V
    //   25: astore_2
    //   26: aload_1
    //   27: aload_2
    //   28: invokevirtual a : ()I
    //   31: putfield d : I
    //   34: aload_1
    //   35: aload_1
    //   36: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   39: invokespecial a : (Ljavax/microedition/lcdui/Graphics;)V
    //   42: aload_1
    //   43: invokevirtual flushGraphics : ()V
    //   46: aload_1
    //   47: aconst_null
    //   48: putfield b : Ljava/lang/String;
    //   51: aload_1
    //   52: getfield b : Ljava/lang/String;
    //   55: ifnonnull -> 151
    //   58: aload_1
    //   59: aload_2
    //   60: invokevirtual a : ()Ljava/lang/String;
    //   63: putfield b : Ljava/lang/String;
    //   66: aload_1
    //   67: aload_1
    //   68: getfield a : Lah;
    //   71: aload_2
    //   72: invokevirtual a : ()[I
    //   75: invokevirtual a : ([I)[I
    //   78: putfield b : [I
    //   81: aload_1
    //   82: aload_1
    //   83: getfield a : Lah;
    //   86: aload_2
    //   87: invokevirtual b : ()[I
    //   90: invokevirtual a : ([I)[I
    //   93: putfield c : [I
    //   96: aload_1
    //   97: aload_1
    //   98: getfield a : Lah;
    //   101: aload_2
    //   102: invokevirtual c : ()[I
    //   105: invokevirtual a : ([I)[I
    //   108: putfield d : [I
    //   111: aload_1
    //   112: aload_1
    //   113: getfield a : Lah;
    //   116: aload_2
    //   117: invokevirtual d : ()[I
    //   120: invokevirtual a : ([I)[I
    //   123: putfield e : [I
    //   126: aload_1
    //   127: aload_1
    //   128: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   131: invokespecial a : (Ljavax/microedition/lcdui/Graphics;)V
    //   134: aload_1
    //   135: invokevirtual flushGraphics : ()V
    //   138: aload_1
    //   139: dup
    //   140: getfield c : I
    //   143: iconst_1
    //   144: iadd
    //   145: putfield c : I
    //   148: goto -> 51
    //   151: getstatic java/lang/System.out : Ljava/io/PrintStream;
    //   154: new java/lang/StringBuffer
    //   157: dup
    //   158: ldc 'result:'
    //   160: invokespecial <init> : (Ljava/lang/String;)V
    //   163: aload_1
    //   164: getfield b : Ljava/lang/String;
    //   167: invokevirtual append : (Ljava/lang/String;)Ljava/lang/StringBuffer;
    //   170: invokevirtual toString : ()Ljava/lang/String;
    //   173: invokevirtual println : (Ljava/lang/String;)V
    //   176: aload_1
    //   177: aload_1
    //   178: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   181: invokespecial a : (Ljavax/microedition/lcdui/Graphics;)V
    //   184: aload_1
    //   185: invokevirtual flushGraphics : ()V
    //   188: goto -> 201
    //   191: astore_3
    //   192: aload_1
    //   193: aconst_null
    //   194: putfield b : Ljava/lang/String;
    //   197: aload_3
    //   198: invokevirtual printStackTrace : ()V
    //   201: aload_1
    //   202: getfield b : Ljava/lang/String;
    //   205: ifnonnull -> 255
    //   208: invokestatic currentTimeMillis : ()J
    //   211: ldc2_w 2500
    //   214: ladd
    //   215: lstore_3
    //   216: invokestatic currentTimeMillis : ()J
    //   219: lload_3
    //   220: lcmp
    //   221: ifge -> 247
    //   224: aload_1
    //   225: iconst_1
    //   226: putfield a : Z
    //   229: aload_1
    //   230: aload_1
    //   231: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   234: invokespecial a : (Ljavax/microedition/lcdui/Graphics;)V
    //   237: aload_1
    //   238: invokevirtual flushGraphics : ()V
    //   241: invokestatic yield : ()V
    //   244: goto -> 216
    //   247: aload_1
    //   248: getfield a : Lhotpants/i;
    //   251: invokevirtual b : ()V
    //   254: return
    //   255: new aw
    //   258: dup
    //   259: aload_1
    //   260: getfield b : Ljava/lang/String;
    //   263: aload_1
    //   264: getfield a : Lhotpants/Midlet;
    //   267: invokespecial <init> : (Ljava/lang/String;Lhotpants/Midlet;)V
    //   270: invokevirtual run : ()V
    //   273: return
    // Exception table:
    //   from	to	target	type
    //   46	188	191	java/lang/Exception
  }
  
  private void a(Graphics paramGraphics) {
    // Byte code:
    //   0: aload_1
    //   1: iconst_0
    //   2: invokevirtual setColor : (I)V
    //   5: aload_1
    //   6: iconst_0
    //   7: iconst_0
    //   8: aload_0
    //   9: invokevirtual getWidth : ()I
    //   12: aload_0
    //   13: invokevirtual getHeight : ()I
    //   16: invokevirtual fillRect : (IIII)V
    //   19: aload_1
    //   20: aload_0
    //   21: aload_0
    //   22: getfield a : Lah;
    //   25: invokevirtual a : ()Ljavax/microedition/lcdui/Image;
    //   28: astore_2
    //   29: dup
    //   30: astore_1
    //   31: getfield b : [I
    //   34: ifnonnull -> 58
    //   37: aload_1
    //   38: getfield c : [I
    //   41: ifnonnull -> 58
    //   44: aload_1
    //   45: getfield e : [I
    //   48: ifnonnull -> 58
    //   51: aload_1
    //   52: getfield d : [I
    //   55: ifnull -> 268
    //   58: aload_2
    //   59: invokevirtual getWidth : ()I
    //   62: aload_2
    //   63: invokevirtual getHeight : ()I
    //   66: invokestatic createImage : (II)Ljavax/microedition/lcdui/Image;
    //   69: dup
    //   70: astore_3
    //   71: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   74: dup
    //   75: astore #4
    //   77: aload_2
    //   78: iconst_0
    //   79: iconst_0
    //   80: bipush #20
    //   82: invokevirtual drawImage : (Ljavax/microedition/lcdui/Image;III)V
    //   85: aload #4
    //   87: ldc 65280
    //   89: invokevirtual setColor : (I)V
    //   92: aload_1
    //   93: getfield b : [I
    //   96: ifnull -> 135
    //   99: aload_1
    //   100: getfield c : [I
    //   103: ifnull -> 135
    //   106: aload #4
    //   108: aload_1
    //   109: getfield b : [I
    //   112: iconst_0
    //   113: iaload
    //   114: aload_1
    //   115: getfield b : [I
    //   118: iconst_1
    //   119: iaload
    //   120: aload_1
    //   121: getfield c : [I
    //   124: iconst_0
    //   125: iaload
    //   126: aload_1
    //   127: getfield c : [I
    //   130: iconst_1
    //   131: iaload
    //   132: invokevirtual drawLine : (IIII)V
    //   135: aload_1
    //   136: getfield c : [I
    //   139: ifnull -> 178
    //   142: aload_1
    //   143: getfield e : [I
    //   146: ifnull -> 178
    //   149: aload #4
    //   151: aload_1
    //   152: getfield c : [I
    //   155: iconst_0
    //   156: iaload
    //   157: aload_1
    //   158: getfield c : [I
    //   161: iconst_1
    //   162: iaload
    //   163: aload_1
    //   164: getfield e : [I
    //   167: iconst_0
    //   168: iaload
    //   169: aload_1
    //   170: getfield e : [I
    //   173: iconst_1
    //   174: iaload
    //   175: invokevirtual drawLine : (IIII)V
    //   178: aload_1
    //   179: getfield e : [I
    //   182: ifnull -> 221
    //   185: aload_1
    //   186: getfield d : [I
    //   189: ifnull -> 221
    //   192: aload #4
    //   194: aload_1
    //   195: getfield e : [I
    //   198: iconst_0
    //   199: iaload
    //   200: aload_1
    //   201: getfield e : [I
    //   204: iconst_1
    //   205: iaload
    //   206: aload_1
    //   207: getfield d : [I
    //   210: iconst_0
    //   211: iaload
    //   212: aload_1
    //   213: getfield d : [I
    //   216: iconst_1
    //   217: iaload
    //   218: invokevirtual drawLine : (IIII)V
    //   221: aload_1
    //   222: getfield d : [I
    //   225: ifnull -> 264
    //   228: aload_1
    //   229: getfield b : [I
    //   232: ifnull -> 264
    //   235: aload #4
    //   237: aload_1
    //   238: getfield d : [I
    //   241: iconst_0
    //   242: iaload
    //   243: aload_1
    //   244: getfield d : [I
    //   247: iconst_1
    //   248: iaload
    //   249: aload_1
    //   250: getfield b : [I
    //   253: iconst_0
    //   254: iaload
    //   255: aload_1
    //   256: getfield b : [I
    //   259: iconst_1
    //   260: iaload
    //   261: invokevirtual drawLine : (IIII)V
    //   264: aload_3
    //   265: goto -> 269
    //   268: aload_2
    //   269: aload_0
    //   270: invokevirtual getWidth : ()I
    //   273: iconst_1
    //   274: ishr
    //   275: aload_0
    //   276: invokevirtual getHeight : ()I
    //   279: iconst_1
    //   280: ishr
    //   281: iconst_3
    //   282: invokevirtual drawImage : (Ljavax/microedition/lcdui/Image;III)V
    //   285: aload_0
    //   286: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   289: astore_1
    //   290: aload_0
    //   291: getfield a : Z
    //   294: ifeq -> 337
    //   297: aload_1
    //   298: ldc 16777215
    //   300: invokevirtual setColor : (I)V
    //   303: aload_1
    //   304: bipush #64
    //   306: iconst_1
    //   307: iconst_0
    //   308: invokestatic getFont : (III)Ljavax/microedition/lcdui/Font;
    //   311: invokevirtual setFont : (Ljavax/microedition/lcdui/Font;)V
    //   314: aload_1
    //   315: aload_0
    //   316: getfield a : Ljava/lang/String;
    //   319: aload_0
    //   320: invokevirtual getWidth : ()I
    //   323: iconst_1
    //   324: ishr
    //   325: aload_0
    //   326: invokevirtual getHeight : ()I
    //   329: iconst_5
    //   330: isub
    //   331: bipush #33
    //   333: invokevirtual drawString : (Ljava/lang/String;III)V
    //   336: return
    //   337: aload_0
    //   338: aload_1
    //   339: bipush #20
    //   341: aload_0
    //   342: invokevirtual getWidth : ()I
    //   345: bipush #20
    //   347: isub
    //   348: bipush #10
    //   350: istore_1
    //   351: istore #4
    //   353: istore_3
    //   354: astore_2
    //   355: astore_1
    //   356: aload_2
    //   357: ldc 16777215
    //   359: invokevirtual setColor : (I)V
    //   362: aload_2
    //   363: bipush #20
    //   365: aload_1
    //   366: invokevirtual getHeight : ()I
    //   369: bipush #10
    //   371: isub
    //   372: bipush #10
    //   374: isub
    //   375: iload #4
    //   377: bipush #20
    //   379: isub
    //   380: bipush #10
    //   382: invokevirtual fillRect : (IIII)V
    //   385: aload_2
    //   386: iconst_0
    //   387: invokevirtual setColor : (I)V
    //   390: aload_2
    //   391: bipush #21
    //   393: aload_1
    //   394: invokevirtual getHeight : ()I
    //   397: bipush #10
    //   399: isub
    //   400: bipush #10
    //   402: isub
    //   403: iconst_1
    //   404: iadd
    //   405: iload #4
    //   407: bipush #20
    //   409: isub
    //   410: iconst_2
    //   411: isub
    //   412: bipush #8
    //   414: invokevirtual fillRect : (IIII)V
    //   417: aload_2
    //   418: ldc 16777215
    //   420: invokevirtual setColor : (I)V
    //   423: aload_2
    //   424: bipush #22
    //   426: aload_1
    //   427: invokevirtual getHeight : ()I
    //   430: bipush #10
    //   432: isub
    //   433: bipush #10
    //   435: isub
    //   436: iconst_2
    //   437: iadd
    //   438: aload_1
    //   439: bipush #20
    //   441: iload #4
    //   443: iconst_2
    //   444: isub
    //   445: iconst_2
    //   446: isub
    //   447: istore_3
    //   448: istore_2
    //   449: astore_1
    //   450: iload_3
    //   451: iload_2
    //   452: isub
    //   453: istore_2
    //   454: aload_1
    //   455: getfield c : I
    //   458: i2d
    //   459: aload_1
    //   460: getfield d : I
    //   463: i2d
    //   464: ddiv
    //   465: dup2
    //   466: dstore #11
    //   468: iload_2
    //   469: i2d
    //   470: dmul
    //   471: d2i
    //   472: bipush #6
    //   474: invokevirtual fillRect : (IIII)V
    //   477: return
  }
}

Added: aw.java

import hotpants.Midlet;
import hotpants.f;
import hotpants.h;
import hotpants.l;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;

public final class aw implements Runnable {
  private final Midlet a;
  
  private final String a;
  
  public aw(String paramString, Midlet paramMidlet) {
    this.a = paramString;
    this.a = (String)paramMidlet;
  }
  
  private h a() {
    System.out.print("Getting otp from scan result...");
    try {
      f f;
      if (!this.a.startsWith("otpauth://"))
        throw new Exception("QR Code is no one time password key"); 
      String str1 = this.a.substring(10, this.a.indexOf("/", 11));
      String str2;
      String str3 = (str2 = this.a.substring(11 + str1.length())).substring(0, str2.indexOf("?"));
      String str4 = a(str2 = str2.substring(str3.length() + 1), "secret");
      a(str2, "digits");
      if (str4 == null || str3 == null)
        throw new Exception("Code does not contain all necessary data"); 
      if (str1.equalsIgnoreCase("hotp")) {
        if ((str1 = a(str2, "counter")) == null)
          throw new Exception("HOTP code does not contain all necessary data"); 
        int j = Integer.parseInt(str1);
        (f = new f(str3)).a(str4);
        f.a(j);
        return f;
      } 
      if ((str1 = a((String)f, "period")) == null)
        str1 = "30"; 
      int i = Integer.parseInt(str1);
      l l;
      (l = new l(str3)).a(str4);
      l.b((byte)i);
      return l;
    } catch (NumberFormatException numberFormatException) {
      Display.getDisplay((MIDlet)this.a).setCurrent(a("Number parsing failed. " + numberFormatException.getMessage()), (Displayable)this.a.getMainForm());
    } catch (Exception exception) {
      Display.getDisplay((MIDlet)this.a).setCurrent(a(exception.getMessage()), (Displayable)this.a.getMainForm());
    } 
    return null;
  }
  
  private static String a(String paramString1, String paramString2) {
    if (paramString1.indexOf(paramString2) == -1) {
      System.out.println("Key " + paramString2 + " not found.");
      return null;
    } 
    return ((paramString1 = paramString1.substring(paramString1.indexOf(paramString2 + "=") + paramString2.length() + 1)).indexOf("&") == -1) ? paramString1 : paramString1.substring(0, paramString1.indexOf("&"));
  }
  
  private static Alert a(String paramString) {
    return new Alert("QR Code scan", paramString, null, AlertType.WARNING);
  }
  
  public final void run() {
    aw aw1;
    if ((aw1 = this).a == null) {
      Display.getDisplay((MIDlet)aw1.a).setCurrent(a("No QR code detected"), (Displayable)aw1.a.getScanForm());
      return;
    } 
    h h;
    if ((h = aw1.a()) == null) {
      Display.getDisplay((MIDlet)aw1.a).setCurrent(a("QR code did not contain valid OTP info"), (Displayable)aw1.a.getMainForm());
      return;
    } 
    aw1.a.addEntry(h);
    Display.getDisplay((MIDlet)aw1.a).setCurrent(new Alert(h.b(), "Import successful", null, AlertType.INFO), (Displayable)aw1.a.getMainForm());
  }
}

Added: ax.java

public class ax {
  private byte[] a;
  
  public ax(byte[] paramArrayOfbyte) {
    this(paramArrayOfbyte, 0, paramArrayOfbyte.length);
  }
  
  public ax(byte[] paramArrayOfbyte, int paramInt1, int paramInt2) {
    this.a = new byte[paramInt2];
    System.arraycopy(paramArrayOfbyte, 0, this.a, 0, paramInt2);
  }
  
  public byte[] a() {
    return this.a;
  }
}

Added: ay.java

public interface ay {
  String a();
  
  void a(byte[] paramArrayOfbyte, int paramInt1, int paramInt2);
  
  int a(byte[] paramArrayOfbyte, int paramInt);
  
  void a();
}

Added: az.java

public interface az extends ay {}

Added: b.java

public final class b extends Exception {
  public b(String paramString) {
    super(paramString);
  }
}

Added: ba.java

public interface ba {
  void a(ax paramax);
  
  int a();
  
  void a(byte[] paramArrayOfbyte, int paramInt1, int paramInt2);
  
  int a(byte[] paramArrayOfbyte, int paramInt);
  
  void a();
}

Added: bb.java

public abstract class bb implements az {
  private byte[] a;
  
  private int a;
  
  private long a = new byte[4];
  
  protected bb() {
    this.a = 0L;
  }
  
  private void a(byte paramByte) {
    this.a[this.a++] = paramByte;
    if (this.a == this.a.length) {
      a(this.a, 0);
      this.a = 0L;
    } 
    this.a++;
  }
  
  public final void a(byte[] paramArrayOfbyte, int paramInt1, int paramInt2) {
    while (this.a != 0L && paramInt2 > 0) {
      a(paramArrayOfbyte[paramInt1]);
      paramInt1++;
      paramInt2--;
    } 
    while (paramInt2 > this.a.length) {
      a(paramArrayOfbyte, paramInt1);
      paramInt1 += this.a.length;
      paramInt2 -= this.a.length;
      this.a += this.a.length;
    } 
    while (paramInt2 > 0) {
      a(paramArrayOfbyte[paramInt1]);
      paramInt1++;
      paramInt2--;
    } 
  }
  
  public final void b() {
    long l = this.a << 3L;
    a(-128);
    while (this.a != 0L)
      a((byte)0); 
    a(l);
    c();
  }
  
  public void a() {
    this.a = 0L;
    this.a = 0L;
    for (byte b = 0; b < this.a.length; b++)
      this.a[b] = 0L; 
  }
  
  protected abstract void a(byte[] paramArrayOfbyte, int paramInt);
  
  protected abstract void a(long paramLong);
  
  protected abstract void c();
}

Added: bc.java

public final class bc extends bb {
  private int a;
  
  private int b;
  
  private int c;
  
  private int d;
  
  private int e;
  
  private int[] a = new int[80];
  
  private int f;
  
  public bc() {
    a();
  }
  
  public final String a() {
    return "SHA-1";
  }
  
  protected final void a(byte[] paramArrayOfbyte, int paramInt) {
    int i = (i = (i = (i = paramArrayOfbyte[paramInt] << 24) | (paramArrayOfbyte[++paramInt] & 0xFF) << 16) | (paramArrayOfbyte[++paramInt] & 0xFF) << 8) | paramArrayOfbyte[++paramInt] & 0xFF;
    this.a[this.f] = i;
    if (++this.f == 16)
      c(); 
  }
  
  protected final void a(long paramLong) {
    if (this.f > 14)
      c(); 
    this.a[14] = (int)(paramLong >>> 32L);
    this.a[15] = (int)paramLong;
  }
  
  public final int a(byte[] paramArrayOfbyte, int paramInt) {
    b();
    al.a(this.a, paramArrayOfbyte, paramInt);
    al.a(this.b, paramArrayOfbyte, paramInt + 4);
    al.a(this.c, paramArrayOfbyte, paramInt + 8);
    al.a(this.d, paramArrayOfbyte, paramInt + 12);
    al.a(this.e, paramArrayOfbyte, paramInt + 16);
    a();
    return 20;
  }
  
  public final void a() {
    super.a();
    this.a = 1732584193;
    this.b = -271733879;
    this.c = -1732584194;
    this.d = 271733878;
    this.e = -1009589776;
    this.f = 0;
    for (byte b = 0; b != this.a.length; b++)
      this.a[b] = 0; 
  }
  
  private static int a(int paramInt1, int paramInt2, int paramInt3) {
    return paramInt1 & paramInt2 | (paramInt1 ^ 0xFFFFFFFF) & paramInt3;
  }
  
  private static int b(int paramInt1, int paramInt2, int paramInt3) {
    return paramInt1 & paramInt2 | paramInt1 & paramInt3 | paramInt2 & paramInt3;
  }
  
  protected final void c() {
    int i;
    for (byte b1 = 16; b1 < 80; b1++) {
      int i1 = this.a[b1 - 3] ^ this.a[b1 - 8] ^ this.a[b1 - 14] ^ this.a[b1 - 16];
      this.a[b1] = i1 << 1 | i1 >>> 31;
    } 
    int[] arrayOfInt = this.a;
    int j = this.b;
    int k = this.c;
    int m = this.d;
    int n = this.e;
    byte b2 = 0;
    byte b3;
    for (b3 = 0; b3 < 4; b3++) {
      n += (arrayOfInt << 5 | arrayOfInt >>> 27) + a(j, k, m) + this.a[b2++] + 1518500249;
      j = j << 30 | j >>> 2;
      m += (n << 5 | n >>> 27) + a(arrayOfInt, j, k) + this.a[b2++] + 1518500249;
      i = arrayOfInt << 30 | arrayOfInt >>> 2;
      k += (m << 5 | m >>> 27) + a(n, i, j) + this.a[b2++] + 1518500249;
      n = n << 30 | n >>> 2;
      j += (k << 5 | k >>> 27) + a(m, n, i) + this.a[b2++] + 1518500249;
      m = m << 30 | m >>> 2;
      i += (j << 5 | j >>> 27) + a(k, m, n) + this.a[b2++] + 1518500249;
      k = k << 30 | k >>> 2;
    } 
    for (b3 = 0; b3 < 4; b3++) {
      int i3 = m;
      int i2 = k;
      int i1;
      n += (i << 5 | i >>> 27) + ((i1 = j) ^ i2 ^ i3) + this.a[b2++] + 1859775393;
      j = j << 30 | j >>> 2;
      i3 = k;
      i2 = j;
      m += (n << 5 | n >>> 27) + ((i1 = i) ^ i2 ^ i3) + this.a[b2++] + 1859775393;
      i = i << 30 | i >>> 2;
      i3 = j;
      i2 = i;
      k += (m << 5 | m >>> 27) + ((i1 = n) ^ i2 ^ i3) + this.a[b2++] + 1859775393;
      n = n << 30 | n >>> 2;
      i3 = i;
      i2 = n;
      j += (k << 5 | k >>> 27) + ((i1 = m) ^ i2 ^ i3) + this.a[b2++] + 1859775393;
      m = m << 30 | m >>> 2;
      i3 = n;
      i2 = m;
      i += (j << 5 | j >>> 27) + ((i1 = k) ^ i2 ^ i3) + this.a[b2++] + 1859775393;
      k = k << 30 | k >>> 2;
    } 
    for (b3 = 0; b3 < 4; b3++) {
      n += (i << 5 | i >>> 27) + b(j, k, m) + this.a[b2++] + -1894007588;
      j = j << 30 | j >>> 2;
      m += (n << 5 | n >>> 27) + b(i, j, k) + this.a[b2++] + -1894007588;
      i = i << 30 | i >>> 2;
      k += (m << 5 | m >>> 27) + b(n, i, j) + this.a[b2++] + -1894007588;
      n = n << 30 | n >>> 2;
      j += (k << 5 | k >>> 27) + b(m, n, i) + this.a[b2++] + -1894007588;
      m = m << 30 | m >>> 2;
      i += (j << 5 | j >>> 27) + b(k, m, n) + this.a[b2++] + -1894007588;
      k = k << 30 | k >>> 2;
    } 
    for (b3 = 0; b3 <= 3; b3++) {
      int i3 = m;
      int i2 = k;
      int i1;
      n += (i << 5 | i >>> 27) + ((i1 = j) ^ i2 ^ i3) + this.a[b2++] + -899497514;
      j = j << 30 | j >>> 2;
      i3 = k;
      i2 = j;
      m += (n << 5 | n >>> 27) + ((i1 = i) ^ i2 ^ i3) + this.a[b2++] + -899497514;
      i = i << 30 | i >>> 2;
      i3 = j;
      i2 = i;
      k += (m << 5 | m >>> 27) + ((i1 = n) ^ i2 ^ i3) + this.a[b2++] + -899497514;
      n = n << 30 | n >>> 2;
      i3 = i;
      i2 = n;
      j += (k << 5 | k >>> 27) + ((i1 = m) ^ i2 ^ i3) + this.a[b2++] + -899497514;
      m = m << 30 | m >>> 2;
      i3 = n;
      i2 = m;
      i += (j << 5 | j >>> 27) + ((i1 = k) ^ i2 ^ i3) + this.a[b2++] + -899497514;
      k = k << 30 | k >>> 2;
    } 
    this.a += i;
    this.b += j;
    this.c += k;
    this.d += m;
    this.e += n;
    this.f = 0;
    for (b3 = 0; b3 < 16; b3++)
      this.a[b3] = 0; 
  }
}

Added: bd.java

import java.util.Hashtable;

public final class bd implements ba {
  private ay a;
  
  private int a;
  
  private int b;
  
  private byte[] a;
  
  private byte[] b;
  
  private static Hashtable a;
  
  public bd(ay paramay) {
    this(paramay, (paramay = paramay instanceof az) ? 64 : integer.intValue());
  }
  
  private bd(ay paramay, int paramInt) {
    this.a = (Hashtable)paramay;
    this.a = 20;
    this.b = paramInt;
    this.a = (Hashtable)new byte[this.b];
    this.b = new byte[this.b];
  }
  
  public final void a(ax paramax) {
    // Byte code:
    //   0: aload_0
    //   1: getfield a : Lay;
    //   4: invokeinterface a : ()V
    //   9: aload_1
    //   10: checkcast ax
    //   13: invokevirtual a : ()[B
    //   16: dup
    //   17: astore_1
    //   18: arraylength
    //   19: aload_0
    //   20: getfield b : I
    //   23: if_icmple -> 84
    //   26: aload_0
    //   27: getfield a : Lay;
    //   30: aload_1
    //   31: iconst_0
    //   32: aload_1
    //   33: arraylength
    //   34: invokeinterface a : ([BII)V
    //   39: aload_0
    //   40: getfield a : Lay;
    //   43: aload_0
    //   44: getfield a : [B
    //   47: iconst_0
    //   48: invokeinterface a : ([BI)I
    //   53: pop
    //   54: aload_0
    //   55: getfield a : I
    //   58: istore_1
    //   59: iload_1
    //   60: aload_0
    //   61: getfield a : [B
    //   64: arraylength
    //   65: if_icmpge -> 81
    //   68: aload_0
    //   69: getfield a : [B
    //   72: iload_1
    //   73: iconst_0
    //   74: bastore
    //   75: iinc #1, 1
    //   78: goto -> 59
    //   81: goto -> 121
    //   84: aload_1
    //   85: iconst_0
    //   86: aload_0
    //   87: getfield a : [B
    //   90: iconst_0
    //   91: aload_1
    //   92: arraylength
    //   93: invokestatic arraycopy : (Ljava/lang/Object;ILjava/lang/Object;II)V
    //   96: aload_1
    //   97: arraylength
    //   98: istore_1
    //   99: iload_1
    //   100: aload_0
    //   101: getfield a : [B
    //   104: arraylength
    //   105: if_icmpge -> 121
    //   108: aload_0
    //   109: getfield a : [B
    //   112: iload_1
    //   113: iconst_0
    //   114: bastore
    //   115: iinc #1, 1
    //   118: goto -> 99
    //   121: aload_0
    //   122: aload_0
    //   123: getfield a : [B
    //   126: arraylength
    //   127: newarray byte
    //   129: putfield b : [B
    //   132: aload_0
    //   133: getfield a : [B
    //   136: iconst_0
    //   137: aload_0
    //   138: getfield b : [B
    //   141: iconst_0
    //   142: aload_0
    //   143: getfield a : [B
    //   146: arraylength
    //   147: invokestatic arraycopy : (Ljava/lang/Object;ILjava/lang/Object;II)V
    //   150: iconst_0
    //   151: istore_1
    //   152: iload_1
    //   153: aload_0
    //   154: getfield a : [B
    //   157: arraylength
    //   158: if_icmpge -> 179
    //   161: aload_0
    //   162: getfield a : [B
    //   165: iload_1
    //   166: dup2
    //   167: baload
    //   168: bipush #54
    //   170: ixor
    //   171: i2b
    //   172: bastore
    //   173: iinc #1, 1
    //   176: goto -> 152
    //   179: iconst_0
    //   180: istore_1
    //   181: iload_1
    //   182: aload_0
    //   183: getfield b : [B
    //   186: arraylength
    //   187: if_icmpge -> 208
    //   190: aload_0
    //   191: getfield b : [B
    //   194: iload_1
    //   195: dup2
    //   196: baload
    //   197: bipush #92
    //   199: ixor
    //   200: i2b
    //   201: bastore
    //   202: iinc #1, 1
    //   205: goto -> 181
    //   208: aload_0
    //   209: getfield a : Lay;
    //   212: aload_0
    //   213: getfield a : [B
    //   216: iconst_0
    //   217: aload_0
    //   218: getfield a : [B
    //   221: arraylength
    //   222: invokeinterface a : ([BII)V
    //   227: return
  }
  
  public final int a() {
    return this.a;
  }
  
  public final void a(byte[] paramArrayOfbyte, int paramInt1, int paramInt2) {
    this.a.a(paramArrayOfbyte, 0, paramInt2);
  }
  
  public final int a(byte[] paramArrayOfbyte, int paramInt) {
    byte[] arrayOfByte = new byte[this.a];
    this.a.a(arrayOfByte, 0);
    this.a.a(this.b, 0, this.b.length);
    this.a.a(arrayOfByte, 0, arrayOfByte.length);
    this.a.a(paramArrayOfbyte, 0);
    a();
    return 20;
  }
  
  public final void a() {
    this.a.a();
    this.a.a((byte[])this.a, 0, this.a.length);
  }
  
  static {
    (a = new Hashtable()).put("GOST3411", new Integer(32));
    a.put("MD2", new Integer(16));
    a.put("MD4", new Integer(64));
    a.put("MD5", new Integer(64));
    a.put("RIPEMD128", new Integer(64));
    a.put("RIPEMD160", new Integer(64));
    a.put("SHA-1", new Integer(64));
    a.put("SHA-224", new Integer(64));
    a.put("SHA-256", new Integer(64));
    a.put("SHA-384", new Integer(128));
    a.put("SHA-512", new Integer(128));
    a.put("Tiger", new Integer(64));
    a.put("Whirlpool", new Integer(64));
  }
}

Added: c.java

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

public final class c {
  private static final int a;
  
  private final e a;
  
  private final int b;
  
  private final int c;
  
  private d a = new d(this);
  
  public c(ba paramba) {
    this(paramba, 6, 30);
  }
  
  private c(ba paramba, int paramInt1, int paramInt2) {
    this(new e(paramba), 6, 30);
  }
  
  private c(e parame, int paramInt1, int paramInt2) {
    this.a = (d)parame;
    this.b = paramInt1;
    this.c = paramInt2;
  }
  
  private String a(int paramInt) {
    String str;
    for (int i = (str = Integer.toString(paramInt)).length(); i < this.b; i++)
      str = "0" + str; 
    return str;
  }
  
  public final String a(long paramLong) {
    return b(this.a.a(paramLong));
  }
  
  public final String b(long paramLong) {
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    DataOutputStream dataOutputStream = new DataOutputStream(byteArrayOutputStream);
    try {
      dataOutputStream.writeLong(paramLong);
    } catch (IOException iOException) {
      throw new RuntimeException("Unexpected IOException");
    } 
    byte[] arrayOfByte1 = byteArrayOutputStream.toByteArray();
    byte[] arrayOfByte2 = arrayOfByte1;
    c c1;
    int j = (arrayOfByte2 = (c1 = this).a.a(arrayOfByte2))[arrayOfByte2.length - 1] & 0xF;
    int i = (i = a(arrayOfByte2, j) & Integer.MAX_VALUE) % a;
    return c1.a(i);
  }
  
  private static int a(byte[] paramArrayOfbyte, int paramInt) {
    DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(paramArrayOfbyte, paramInt, paramArrayOfbyte.length - paramInt));
    try {
      int i = dataInputStream.readInt();
    } catch (IOException iOException) {
      throw new IllegalStateException(String.valueOf(iOException));
    } 
    return iOException;
  }
  
  static int a(c paramc) {
    return paramc.c;
  }
  
  static {
    int i = 6;
    i = 10;
    i = 1;
    for (byte b = 0; b < 6; b++)
      i *= 10; 
    a = i;
  }
}

Added: d.java

class d {
  private final c a;
  
  public long a(long paramLong) {
    long l;
    return (l = paramLong / 1000L) / a();
  }
  
  d(c paramc) {
    this.a = paramc;
  }
  
  public int a() {
    return c.a(this.a);
  }
}

Added: dk/onlinecity/qrr/client/QrReaderMidlet.java

package dk.onlinecity.qrr.client;

import am;
import an;
import ar;
import as;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
import javax.microedition.midlet.MIDlet;

public class QrReaderMidlet extends MIDlet {
  public static final Command CMD_NEW = new Command("New", 4, 1);
  
  public static final Command CMD_EXIT = new Command("Exit", 7, 1);
  
  public static final Command CMD_OK = new Command("OK", 4, 1);
  
  public static final Command CMD_CANCEL = new Command("Cancel", 3, 1);
  
  protected void destroyApp(boolean paramBoolean) {}
  
  protected void pauseApp() {}
  
  protected void startApp() {
    Display.getDisplay(this).setCurrent((Displayable)b.a(this));
  }
  
  final void a() {
    e e = e.a();
    b b = b.a(this);
    Player player = e.a();
    VideoControl videoControl = e.a(b);
    try {
      videoControl.setDisplayFullScreen(true);
      videoControl.setDisplayLocation(0, 0);
      player.start();
      videoControl.setVisible(true);
      Display.getDisplay(this).setCurrent((Displayable)b);
      return;
    } catch (MediaException mediaException) {
      (videoControl = null).printStackTrace();
      return;
    } 
  }
  
  final void b() {
    e e1 = e.a();
    byte[] arrayOfByte = e1.a();
    QrReaderMidlet qrReaderMidlet = this;
    e e2;
    Player player = (e2 = e.a()).a();
    try {
      player.stop();
    } catch (MediaException mediaException) {}
    g g = new g(qrReaderMidlet, arrayOfByte);
    Display.getDisplay(qrReaderMidlet).setCurrent((Displayable)g);
  }
  
  final void a(String paramString) {
    as as;
    Alert alert;
    am am;
    switch ((am = an.a(paramString)).a()) {
      case 1:
        as = (as)am;
        qrReaderMidlet = this;
        (alert = new Alert("", "Open \"" + as.a() + "\" in browser?", null, AlertType.CONFIRMATION)).setTimeout(-2);
        alert.addCommand(CMD_OK);
        alert.addCommand(CMD_CANCEL);
        alert.setCommandListener(new j(qrReaderMidlet, as));
        Display.getDisplay(qrReaderMidlet).setCurrent((Displayable)alert);
        return;
    } 
    ar ar = (ar)qrReaderMidlet;
    QrReaderMidlet qrReaderMidlet = this;
    Form form;
    (form = new Form("Text")).append(ar.a());
    form.addCommand(CMD_NEW);
    form.addCommand(CMD_EXIT);
    form.setCommandListener(new i(qrReaderMidlet));
    Display.getDisplay(qrReaderMidlet).setCurrent((Displayable)form);
  }
}

Added: dk/onlinecity/qrr/client/a.java

package dk.onlinecity.qrr.client;

import javax.microedition.amms.control.camera.ExposureControl;
import javax.microedition.amms.control.camera.FocusControl;
import javax.microedition.amms.control.camera.ZoomControl;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;

public class a implements f {
  public final void a(Player paramPlayer) {
    System.out.println("advanced camera handler: focus()");
    try {
      FocusControl focusControl;
      if ((focusControl = (FocusControl)paramPlayer.getControl("javax.microedition.amms.control.camera.FocusControl")) == null)
        focusControl = (FocusControl)paramPlayer.getControl("FocusControl"); 
      if (focusControl == null) {
        System.out.println("FocusControl not available.");
        return;
      } 
      try {
        if (focusControl.isMacroSupported() && !focusControl.getMacro())
          focusControl.setMacro(true); 
      } catch (MediaException mediaException) {
        System.out.println("marco is not supported");
      } 
      try {
        if (focusControl.isAutoFocusSupported()) {
          focusControl.setFocus(-1000);
          try {
            Thread.sleep(750L);
          } catch (InterruptedException interruptedException) {}
          focusControl.setFocus(-1005);
        } 
      } catch (MediaException mediaException) {
        return;
      } 
    } catch (ClassCastException classCastException) {
      return;
    } catch (NoClassDefFoundError noClassDefFoundError) {}
  }
  
  public final void b(Player paramPlayer) {
    System.out.println("advanced camera handler: zoom()");
    try {
      ZoomControl zoomControl;
      if ((zoomControl = (ZoomControl)paramPlayer.getControl("javax.microedition.amms.control.camera.ZoomControl")) == null)
        zoomControl = (ZoomControl)paramPlayer.getControl("ZoomControl"); 
      if (zoomControl == null) {
        System.out.println("ZoomControl not available.");
        return;
      } 
      int i;
      if ((i = zoomControl.getMaxOpticalZoom()) > 100) {
        zoomControl.setOpticalZoom((i > 200) ? 200 : i);
      } else {
        i = zoomControl.getMaxDigitalZoom();
        zoomControl.setDigitalZoom((i > 250) ? 250 : i);
        return;
      } 
    } catch (ClassCastException classCastException) {
      return;
    } catch (NoClassDefFoundError noClassDefFoundError) {}
  }
  
  public final void c(Player paramPlayer) {
    System.out.println("advanced camera handler: exposure()");
    try {
      ExposureControl exposureControl;
      if ((exposureControl = (ExposureControl)paramPlayer.getControl("javax.microedition.amms.control.camera.ExposureControl")) == null)
        exposureControl = (ExposureControl)paramPlayer.getControl("ExposureControl"); 
      if (exposureControl != null) {
        int[] arrayOfInt;
        int i = (arrayOfInt = exposureControl.getSupportedISOs()).length;
        if (arrayOfInt != null && i > 0) {
          int j = Integer.MIN_VALUE;
          for (byte b = 0; b < i; b++)
            j = (j < arrayOfInt[b]) ? arrayOfInt[b] : j; 
          try {
            exposureControl.setISO(j);
          } catch (MediaException mediaException2) {
            MediaException mediaException1;
            (mediaException1 = null).printStackTrace();
          } 
        } 
        String[] arrayOfString;
        i = (arrayOfString = exposureControl.getSupportedLightMeterings()).length;
        if (arrayOfString != null)
          for (int j = 0; j < i; j++) {
            if (arrayOfString[j].equals("center-weighted")) {
              exposureControl.setLightMetering("center-weighted");
              j = i;
            } 
          }  
      } 
      return;
    } catch (ClassCastException classCastException) {
      return;
    } catch (NoClassDefFoundError noClassDefFoundError) {
      return;
    } 
  }
}

Added: dk/onlinecity/qrr/client/b.java

package dk.onlinecity.qrr.client;

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;

public final class b extends Canvas {
  private static b a = null;
  
  private final QrReaderMidlet a;
  
  private d a;
  
  private String a = null;
  
  private b(QrReaderMidlet paramQrReaderMidlet) {
    this.a = "Opening camera...";
    setFullScreenMode(true);
    this.a = (String)paramQrReaderMidlet;
  }
  
  public static b a(QrReaderMidlet paramQrReaderMidlet) {
    if (a == null)
      a = (String)new b(paramQrReaderMidlet); 
    if (a.isShown()) {
      System.out.println("instance is shown");
      a.repaint();
    } 
    return (b)a;
  }
  
  protected final void showNotify() {
    if (this.a == null) {
      this.a = (String)new d(this);
      (new Thread((Runnable)this.a)).start();
    } 
  }
  
  protected final void paint(Graphics paramGraphics) {
    paramGraphics.setColor(0);
    paramGraphics.fillRect(0, 0, getWidth(), getHeight());
    paramGraphics.setColor(16777215);
    paramGraphics.setFont(Font.getFont(64, 0, 0));
    paramGraphics.drawString(this.a, getWidth() >> 1, getHeight() >> 1, 33);
  }
  
  protected final void keyPressed(int paramInt) {
    Alert alert;
    switch (paramInt) {
      case 0:
        return;
      case -11:
      case -8:
      case -7:
        (alert = new Alert("", "Exit OC QR-Reader?", null, AlertType.CONFIRMATION)).addCommand(new Command("OK", 4, 1));
        alert.addCommand(new Command("Cancel", 3, 1));
        alert.setCommandListener(new c(this));
        Display.getDisplay((MIDlet)this.a).setCurrent((Displayable)alert);
        return;
    } 
    this.a.b();
  }
  
  static QrReaderMidlet a(b paramb) {
    return (QrReaderMidlet)paramb.a;
  }
  
  static void a(b paramb, String paramString) {
    paramString = paramString;
    (paramb = paramb).a = paramString;
  }
}

Added: dk/onlinecity/qrr/client/c.java

package dk.onlinecity.qrr.client;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;

final class c implements CommandListener {
  private final b a;
  
  c(b paramb) {
    this.a = paramb;
  }
  
  public final void commandAction(Command paramCommand, Displayable paramDisplayable) {
    if (paramCommand.getCommandType() == 4) {
      b.a(this.a).notifyDestroyed();
      return;
    } 
    b.a(this.a).a();
  }
}

Added: dk/onlinecity/qrr/client/d.java

package dk.onlinecity.qrr.client;

final class d implements Runnable {
  private final b a;
  
  d(b paramb) {
    this.a = paramb;
  }
  
  public final void run() {
    e.a();
    b.a(this.a, "Please wait...");
    b.a(this.a).a();
  }
}

Added: dk/onlinecity/qrr/client/e.java

package dk.onlinecity.qrr.client;

import h;
import java.io.IOException;
import java.util.Vector;
import javax.microedition.lcdui.Canvas;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
import p;

public final class e {
  private static e a;
  
  private Player a;
  
  private VideoControl a;
  
  private f a;
  
  private Vector a;
  
  private p a = null;
  
  private e() {
    if (this.a == null)
      this.a = (p)h.a(); 
    if (this.a == null) {
      a();
      return;
    } 
    int i;
    switch (i = this.a.getState()) {
      case 100:
        System.out.println("player is unrealized");
        a();
        return;
      case 200:
        System.out.println("player is realized");
        return;
      case 300:
        System.out.println("player is prefetched");
        return;
      case 400:
        System.out.println("player is started");
        return;
      case 0:
        System.out.println("player is closed");
        break;
    } 
  }
  
  private static Player b() {
    String str = System.getProperty("microedition.platform");
    try {
      if (str != null && str.toLowerCase().indexOf("nokia") >= 0)
        return Manager.createPlayer("capture://image"); 
    } catch (MediaException mediaException) {
    
    } catch (Exception exception) {}
    try {
      return Manager.createPlayer("capture://video");
    } catch (IOException iOException) {
    
    } catch (MediaException mediaException) {}
    return null;
  }
  
  private void a() {
    try {
      this.a = (p)b();
      this.a.realize();
      this.a.prefetch();
      this.a = (p)new h();
      this.a.b((Player)this.a);
      this.a.c((Player)this.a);
      this.a.a((Player)this.a);
      System.out.println("player is realized and prefetched");
      return;
    } catch (MediaException mediaException) {
      return;
    } 
  }
  
  public static e a() {
    if (a == null)
      a = (p)new e(); 
    return (e)a;
  }
  
  public final Player a() {
    return (Player)this.a;
  }
  
  public final VideoControl a(Canvas paramCanvas) {
    if (this.a == null) {
      this.a = (p)this.a.getControl("VideoControl");
      this.a.initDisplayMode(1, paramCanvas);
    } 
    return (VideoControl)this.a;
  }
  
  public final byte[] a() {
    if (this.a == null)
      throw new RuntimeException("VideoControl = null"); 
    this.a.a((Player)this.a);
    this.a.c((Player)this.a);
    this.a.b((Player)this.a);
    if (this.a != null)
      try {
        return this.a.getSnapshot(this.a.a());
      } catch (MediaException mediaException2) {
        MediaException mediaException1;
        (mediaException1 = null).printStackTrace();
      }  
    int i = this.a.size();
    System.out.println("profiles:" + i);
    for (byte b = 0; b < i; b++) {
      this.a = this.a.elementAt(b);
      try {
        System.out.println("using:" + this.a.a());
        byte[] arrayOfByte;
        if ((arrayOfByte = this.a.getSnapshot(this.a.a())) != null)
          return arrayOfByte; 
      } catch (MediaException mediaException) {
      
      } catch (NullPointerException nullPointerException) {}
    } 
    try {
      return this.a.getSnapshot(null);
    } catch (MediaException mediaException) {
      throw new RuntimeException("Could not use camera");
    } 
  }
}

Added: dk/onlinecity/qrr/client/f.java

package dk.onlinecity.qrr.client;

import javax.microedition.media.Player;

public interface f {
  void a(Player paramPlayer);
  
  void b(Player paramPlayer);
  
  void c(Player paramPlayer);
}

Added: dk/onlinecity/qrr/client/g.java

package dk.onlinecity.qrr.client;

import af;
import ah;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;

public final class g extends GameCanvas implements Runnable {
  private QrReaderMidlet a;
  
  private Thread a;
  
  private ah a;
  
  private int[] a;
  
  private int a;
  
  private int b;
  
  private int[] b;
  
  private int[] c;
  
  private int[] d;
  
  private int[] e;
  
  private int c = 1;
  
  private int d;
  
  private String a;
  
  private boolean a = "No QR Code found.";
  
  private String b;
  
  public g(QrReaderMidlet paramQrReaderMidlet, byte[] paramArrayOfbyte) {
    super(true);
    this.a = false;
    setFullScreenMode(true);
    this.a = paramQrReaderMidlet;
    Image image = Image.createImage(paramArrayOfbyte, 0, paramArrayOfbyte.length);
    this.b = image.getWidth();
    this.a = image.getHeight();
    int i;
    int j = (int)((i = getWidth() - 60) * this.a / this.b);
    this.a = new int[this.b * this.a];
    image.getRGB(this.a, 0, this.b, 0, 0, this.b, this.a);
    this.a = af.a(this.a, this.b, this.a, i, j);
    a(getGraphics());
    flushGraphics();
  }
  
  protected final void showNotify() {
    // Byte code:
    //   0: aload_0
    //   1: getfield a : Ljava/lang/Thread;
    //   4: ifnonnull -> 26
    //   7: aload_0
    //   8: new java/lang/Thread
    //   11: dup
    //   12: aload_0
    //   13: invokespecial <init> : (Ljava/lang/Runnable;)V
    //   16: putfield a : Ljava/lang/Thread;
    //   19: aload_0
    //   20: getfield a : Ljava/lang/Thread;
    //   23: invokevirtual start : ()V
    //   26: return
  }
  
  public final void run() {
    // Byte code:
    //   0: aload_0
    //   1: astore_1
    //   2: new n
    //   5: dup
    //   6: aload_1
    //   7: getfield a : [I
    //   10: aload_1
    //   11: getfield b : I
    //   14: aload_1
    //   15: getfield a : I
    //   18: bipush #8
    //   20: bipush #6
    //   22: invokespecial <init> : ([IIIII)V
    //   25: astore_2
    //   26: aload_1
    //   27: aload_2
    //   28: invokevirtual a : ()I
    //   31: putfield d : I
    //   34: aload_1
    //   35: aload_1
    //   36: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   39: invokespecial a : (Ljavax/microedition/lcdui/Graphics;)V
    //   42: aload_1
    //   43: invokevirtual flushGraphics : ()V
    //   46: aload_1
    //   47: aconst_null
    //   48: putfield b : Ljava/lang/String;
    //   51: aload_1
    //   52: getfield b : Ljava/lang/String;
    //   55: ifnonnull -> 151
    //   58: aload_1
    //   59: aload_2
    //   60: invokevirtual a : ()Ljava/lang/String;
    //   63: putfield b : Ljava/lang/String;
    //   66: aload_1
    //   67: aload_1
    //   68: getfield a : Lah;
    //   71: aload_2
    //   72: invokevirtual a : ()[I
    //   75: invokevirtual a : ([I)[I
    //   78: putfield b : [I
    //   81: aload_1
    //   82: aload_1
    //   83: getfield a : Lah;
    //   86: aload_2
    //   87: invokevirtual b : ()[I
    //   90: invokevirtual a : ([I)[I
    //   93: putfield c : [I
    //   96: aload_1
    //   97: aload_1
    //   98: getfield a : Lah;
    //   101: aload_2
    //   102: invokevirtual c : ()[I
    //   105: invokevirtual a : ([I)[I
    //   108: putfield d : [I
    //   111: aload_1
    //   112: aload_1
    //   113: getfield a : Lah;
    //   116: aload_2
    //   117: invokevirtual d : ()[I
    //   120: invokevirtual a : ([I)[I
    //   123: putfield e : [I
    //   126: aload_1
    //   127: aload_1
    //   128: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   131: invokespecial a : (Ljavax/microedition/lcdui/Graphics;)V
    //   134: aload_1
    //   135: invokevirtual flushGraphics : ()V
    //   138: aload_1
    //   139: dup
    //   140: getfield c : I
    //   143: iconst_1
    //   144: iadd
    //   145: putfield c : I
    //   148: goto -> 51
    //   151: getstatic java/lang/System.out : Ljava/io/PrintStream;
    //   154: new java/lang/StringBuffer
    //   157: dup
    //   158: ldc 'result:'
    //   160: invokespecial <init> : (Ljava/lang/String;)V
    //   163: aload_1
    //   164: getfield b : Ljava/lang/String;
    //   167: invokevirtual append : (Ljava/lang/String;)Ljava/lang/StringBuffer;
    //   170: invokevirtual toString : ()Ljava/lang/String;
    //   173: invokevirtual println : (Ljava/lang/String;)V
    //   176: aload_1
    //   177: aload_1
    //   178: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   181: invokespecial a : (Ljavax/microedition/lcdui/Graphics;)V
    //   184: aload_1
    //   185: invokevirtual flushGraphics : ()V
    //   188: goto -> 201
    //   191: astore_3
    //   192: aload_1
    //   193: aconst_null
    //   194: putfield b : Ljava/lang/String;
    //   197: aload_3
    //   198: invokevirtual printStackTrace : ()V
    //   201: aload_1
    //   202: getfield b : Ljava/lang/String;
    //   205: ifnonnull -> 255
    //   208: invokestatic currentTimeMillis : ()J
    //   211: ldc2_w 2500
    //   214: ladd
    //   215: lstore_3
    //   216: invokestatic currentTimeMillis : ()J
    //   219: lload_3
    //   220: lcmp
    //   221: ifge -> 247
    //   224: aload_1
    //   225: iconst_1
    //   226: putfield a : Z
    //   229: aload_1
    //   230: aload_1
    //   231: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   234: invokespecial a : (Ljavax/microedition/lcdui/Graphics;)V
    //   237: aload_1
    //   238: invokevirtual flushGraphics : ()V
    //   241: invokestatic yield : ()V
    //   244: goto -> 216
    //   247: aload_1
    //   248: getfield a : Ldk/onlinecity/qrr/client/QrReaderMidlet;
    //   251: invokevirtual a : ()V
    //   254: return
    //   255: aload_1
    //   256: getfield a : Ldk/onlinecity/qrr/client/QrReaderMidlet;
    //   259: aload_1
    //   260: getfield b : Ljava/lang/String;
    //   263: invokevirtual a : (Ljava/lang/String;)V
    //   266: return
    // Exception table:
    //   from	to	target	type
    //   46	188	191	java/lang/Exception
  }
  
  private void a(Graphics paramGraphics) {
    // Byte code:
    //   0: aload_1
    //   1: iconst_0
    //   2: invokevirtual setColor : (I)V
    //   5: aload_1
    //   6: iconst_0
    //   7: iconst_0
    //   8: aload_0
    //   9: invokevirtual getWidth : ()I
    //   12: aload_0
    //   13: invokevirtual getHeight : ()I
    //   16: invokevirtual fillRect : (IIII)V
    //   19: aload_1
    //   20: aload_0
    //   21: aload_0
    //   22: getfield a : Lah;
    //   25: invokevirtual a : ()Ljavax/microedition/lcdui/Image;
    //   28: astore_2
    //   29: dup
    //   30: astore_1
    //   31: getfield b : [I
    //   34: ifnonnull -> 58
    //   37: aload_1
    //   38: getfield c : [I
    //   41: ifnonnull -> 58
    //   44: aload_1
    //   45: getfield e : [I
    //   48: ifnonnull -> 58
    //   51: aload_1
    //   52: getfield d : [I
    //   55: ifnull -> 268
    //   58: aload_2
    //   59: invokevirtual getWidth : ()I
    //   62: aload_2
    //   63: invokevirtual getHeight : ()I
    //   66: invokestatic createImage : (II)Ljavax/microedition/lcdui/Image;
    //   69: dup
    //   70: astore_3
    //   71: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   74: dup
    //   75: astore #4
    //   77: aload_2
    //   78: iconst_0
    //   79: iconst_0
    //   80: bipush #20
    //   82: invokevirtual drawImage : (Ljavax/microedition/lcdui/Image;III)V
    //   85: aload #4
    //   87: ldc 65280
    //   89: invokevirtual setColor : (I)V
    //   92: aload_1
    //   93: getfield b : [I
    //   96: ifnull -> 135
    //   99: aload_1
    //   100: getfield c : [I
    //   103: ifnull -> 135
    //   106: aload #4
    //   108: aload_1
    //   109: getfield b : [I
    //   112: iconst_0
    //   113: iaload
    //   114: aload_1
    //   115: getfield b : [I
    //   118: iconst_1
    //   119: iaload
    //   120: aload_1
    //   121: getfield c : [I
    //   124: iconst_0
    //   125: iaload
    //   126: aload_1
    //   127: getfield c : [I
    //   130: iconst_1
    //   131: iaload
    //   132: invokevirtual drawLine : (IIII)V
    //   135: aload_1
    //   136: getfield c : [I
    //   139: ifnull -> 178
    //   142: aload_1
    //   143: getfield e : [I
    //   146: ifnull -> 178
    //   149: aload #4
    //   151: aload_1
    //   152: getfield c : [I
    //   155: iconst_0
    //   156: iaload
    //   157: aload_1
    //   158: getfield c : [I
    //   161: iconst_1
    //   162: iaload
    //   163: aload_1
    //   164: getfield e : [I
    //   167: iconst_0
    //   168: iaload
    //   169: aload_1
    //   170: getfield e : [I
    //   173: iconst_1
    //   174: iaload
    //   175: invokevirtual drawLine : (IIII)V
    //   178: aload_1
    //   179: getfield e : [I
    //   182: ifnull -> 221
    //   185: aload_1
    //   186: getfield d : [I
    //   189: ifnull -> 221
    //   192: aload #4
    //   194: aload_1
    //   195: getfield e : [I
    //   198: iconst_0
    //   199: iaload
    //   200: aload_1
    //   201: getfield e : [I
    //   204: iconst_1
    //   205: iaload
    //   206: aload_1
    //   207: getfield d : [I
    //   210: iconst_0
    //   211: iaload
    //   212: aload_1
    //   213: getfield d : [I
    //   216: iconst_1
    //   217: iaload
    //   218: invokevirtual drawLine : (IIII)V
    //   221: aload_1
    //   222: getfield d : [I
    //   225: ifnull -> 264
    //   228: aload_1
    //   229: getfield b : [I
    //   232: ifnull -> 264
    //   235: aload #4
    //   237: aload_1
    //   238: getfield d : [I
    //   241: iconst_0
    //   242: iaload
    //   243: aload_1
    //   244: getfield d : [I
    //   247: iconst_1
    //   248: iaload
    //   249: aload_1
    //   250: getfield b : [I
    //   253: iconst_0
    //   254: iaload
    //   255: aload_1
    //   256: getfield b : [I
    //   259: iconst_1
    //   260: iaload
    //   261: invokevirtual drawLine : (IIII)V
    //   264: aload_3
    //   265: goto -> 269
    //   268: aload_2
    //   269: aload_0
    //   270: invokevirtual getWidth : ()I
    //   273: iconst_1
    //   274: ishr
    //   275: aload_0
    //   276: invokevirtual getHeight : ()I
    //   279: iconst_1
    //   280: ishr
    //   281: iconst_3
    //   282: invokevirtual drawImage : (Ljavax/microedition/lcdui/Image;III)V
    //   285: aload_0
    //   286: invokevirtual getGraphics : ()Ljavax/microedition/lcdui/Graphics;
    //   289: astore_1
    //   290: aload_0
    //   291: getfield a : Z
    //   294: ifeq -> 337
    //   297: aload_1
    //   298: ldc 16777215
    //   300: invokevirtual setColor : (I)V
    //   303: aload_1
    //   304: bipush #64
    //   306: iconst_1
    //   307: iconst_0
    //   308: invokestatic getFont : (III)Ljavax/microedition/lcdui/Font;
    //   311: invokevirtual setFont : (Ljavax/microedition/lcdui/Font;)V
    //   314: aload_1
    //   315: aload_0
    //   316: getfield a : Ljava/lang/String;
    //   319: aload_0
    //   320: invokevirtual getWidth : ()I
    //   323: iconst_1
    //   324: ishr
    //   325: aload_0
    //   326: invokevirtual getHeight : ()I
    //   329: iconst_5
    //   330: isub
    //   331: bipush #33
    //   333: invokevirtual drawString : (Ljava/lang/String;III)V
    //   336: return
    //   337: aload_0
    //   338: aload_1
    //   339: bipush #20
    //   341: aload_0
    //   342: invokevirtual getWidth : ()I
    //   345: bipush #20
    //   347: isub
    //   348: bipush #10
    //   350: istore_1
    //   351: istore #4
    //   353: istore_3
    //   354: astore_2
    //   355: astore_1
    //   356: aload_2
    //   357: ldc 16777215
    //   359: invokevirtual setColor : (I)V
    //   362: aload_2
    //   363: bipush #20
    //   365: aload_1
    //   366: invokevirtual getHeight : ()I
    //   369: bipush #10
    //   371: isub
    //   372: bipush #10
    //   374: isub
    //   375: iload #4
    //   377: bipush #20
    //   379: isub
    //   380: bipush #10
    //   382: invokevirtual fillRect : (IIII)V
    //   385: aload_2
    //   386: iconst_0
    //   387: invokevirtual setColor : (I)V
    //   390: aload_2
    //   391: bipush #21
    //   393: aload_1
    //   394: invokevirtual getHeight : ()I
    //   397: bipush #10
    //   399: isub
    //   400: bipush #10
    //   402: isub
    //   403: iconst_1
    //   404: iadd
    //   405: iload #4
    //   407: bipush #20
    //   409: isub
    //   410: iconst_2
    //   411: isub
    //   412: bipush #8
    //   414: invokevirtual fillRect : (IIII)V
    //   417: aload_2
    //   418: ldc 16777215
    //   420: invokevirtual setColor : (I)V
    //   423: aload_2
    //   424: bipush #22
    //   426: aload_1
    //   427: invokevirtual getHeight : ()I
    //   430: bipush #10
    //   432: isub
    //   433: bipush #10
    //   435: isub
    //   436: iconst_2
    //   437: iadd
    //   438: aload_1
    //   439: bipush #20
    //   441: iload #4
    //   443: iconst_2
    //   444: isub
    //   445: iconst_2
    //   446: isub
    //   447: istore_3
    //   448: istore_2
    //   449: astore_1
    //   450: iload_3
    //   451: iload_2
    //   452: isub
    //   453: istore_2
    //   454: aload_1
    //   455: getfield c : I
    //   458: i2d
    //   459: aload_1
    //   460: getfield d : I
    //   463: i2d
    //   464: ddiv
    //   465: dup2
    //   466: dstore #11
    //   468: iload_2
    //   469: i2d
    //   470: dmul
    //   471: d2i
    //   472: bipush #6
    //   474: invokevirtual fillRect : (IIII)V
    //   477: return
  }
}

Added: dk/onlinecity/qrr/client/h.java

package dk.onlinecity.qrr.client;

import javax.microedition.media.Player;

public final class h implements f {
  private f a = null;
  
  public h() {
    try {
      this.a = (f)Class.forName("dk.onlinecity.qrr.client.a").newInstance();
      return;
    } catch (InstantiationException instantiationException) {
      return;
    } catch (IllegalAccessException illegalAccessException) {
      return;
    } catch (ClassNotFoundException classNotFoundException) {
      return;
    } catch (Exception exception) {
      return;
    } 
  }
  
  public final void a(Player paramPlayer) {
    if (paramPlayer == null && this.a == null)
      return; 
    this.a.a(paramPlayer);
  }
  
  public final void b(Player paramPlayer) {
    if (paramPlayer == null && this.a == null)
      return; 
    this.a.b(paramPlayer);
  }
  
  public final void c(Player paramPlayer) {
    if (paramPlayer == null && this.a == null)
      return; 
    this.a.c(paramPlayer);
  }
}

Added: dk/onlinecity/qrr/client/i.java

package dk.onlinecity.qrr.client;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;

final class i implements CommandListener {
  private final QrReaderMidlet a;
  
  i(QrReaderMidlet paramQrReaderMidlet) {
    this.a = paramQrReaderMidlet;
  }
  
  public final void commandAction(Command paramCommand, Displayable paramDisplayable) {
    if (paramCommand == QrReaderMidlet.CMD_NEW) {
      this.a.a();
      return;
    } 
    if (paramCommand == QrReaderMidlet.CMD_EXIT)
      this.a.notifyDestroyed(); 
  }
}

Added: dk/onlinecity/qrr/client/j.java

package dk.onlinecity.qrr.client;

import as;
import javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;

final class j implements CommandListener {
  private final as a;
  
  private final QrReaderMidlet a;
  
  j(QrReaderMidlet paramQrReaderMidlet, as paramas) {
    this.a = paramQrReaderMidlet;
    this.a = (QrReaderMidlet)paramas;
  }
  
  public final void commandAction(Command paramCommand, Displayable paramDisplayable) {
    if (paramCommand.getCommandType() == 4) {
      try {
        this.a.platformRequest(this.a.b());
      } catch (ConnectionNotFoundException connectionNotFoundException) {
      
      } catch (SecurityException securityException) {
      
      } finally {
        this.a.notifyDestroyed();
      } 
    } else if (paramCommand.getCommandType() == 3) {
      this.a.a();
    } 
  }
}

Added: e.java

class e {
  private final ba a;
  
  public byte[] a(byte[] paramArrayOfbyte) {
    this.a.a();
    this.a.a(paramArrayOfbyte, 0, paramArrayOfbyte.length);
    int i;
    byte[] arrayOfByte = new byte[i = this.a.a()];
    this.a.a(arrayOfByte, 0);
    this.a.a();
    return arrayOfByte;
  }
  
  e(ba paramba) {
    this.a = paramba;
  }
}

Added: f.java

public final class f {
  public static final f a = new f(285);
  
  public static final f b = new f(301);
  
  private final int[] a;
  
  private final int[] b;
  
  private final g a;
  
  private final g b;
  
  private f(int paramInt) {
    // Byte code:
    //   0: aload_0
    //   1: invokespecial <init> : ()V
    //   4: aload_0
    //   5: sipush #256
    //   8: newarray int
    //   10: putfield a : [I
    //   13: aload_0
    //   14: sipush #256
    //   17: newarray int
    //   19: putfield b : [I
    //   22: iconst_1
    //   23: istore_2
    //   24: iconst_0
    //   25: istore_3
    //   26: iload_3
    //   27: sipush #256
    //   30: if_icmpge -> 61
    //   33: aload_0
    //   34: getfield a : [I
    //   37: iload_3
    //   38: iload_2
    //   39: iastore
    //   40: iload_2
    //   41: iconst_1
    //   42: ishl
    //   43: dup
    //   44: istore_2
    //   45: sipush #256
    //   48: if_icmplt -> 55
    //   51: iload_2
    //   52: iload_1
    //   53: ixor
    //   54: istore_2
    //   55: iinc #3, 1
    //   58: goto -> 26
    //   61: iconst_0
    //   62: istore_3
    //   63: iload_3
    //   64: sipush #255
    //   67: if_icmpge -> 88
    //   70: aload_0
    //   71: getfield b : [I
    //   74: aload_0
    //   75: getfield a : [I
    //   78: iload_3
    //   79: iaload
    //   80: iload_3
    //   81: iastore
    //   82: iinc #3, 1
    //   85: goto -> 63
    //   88: aload_0
    //   89: new g
    //   92: dup
    //   93: aload_0
    //   94: iconst_1
    //   95: newarray int
    //   97: dup
    //   98: iconst_0
    //   99: iconst_0
    //   100: iastore
    //   101: invokespecial <init> : (Lf;[I)V
    //   104: putfield a : Lg;
    //   107: aload_0
    //   108: new g
    //   111: dup
    //   112: aload_0
    //   113: iconst_1
    //   114: newarray int
    //   116: dup
    //   117: iconst_0
    //   118: iconst_1
    //   119: iastore
    //   120: invokespecial <init> : (Lf;[I)V
    //   123: putfield b : Lg;
    //   126: return
  }
  
  final g a() {
    return this.a;
  }
  
  final g b() {
    return this.b;
  }
  
  final g a(int paramInt1, int paramInt2) {
    if (paramInt1 < 0)
      throw new IllegalArgumentException(); 
    if (paramInt2 == 0)
      return this.a; 
    int[] arrayOfInt;
    (arrayOfInt = new int[paramInt1 + 1])[0] = paramInt2;
    return new g(this, arrayOfInt);
  }
  
  static int a(int paramInt1, int paramInt2) {
    return paramInt1 ^ paramInt2;
  }
  
  final int a(int paramInt) {
    return this.a[paramInt];
  }
  
  final int b(int paramInt) {
    if (paramInt == 0)
      throw new IllegalArgumentException(); 
    return this.b[paramInt];
  }
  
  final int c(int paramInt) {
    if (paramInt == 0)
      throw new ArithmeticException(); 
    return this.a[255 - this.b[paramInt]];
  }
  
  final int b(int paramInt1, int paramInt2) {
    return (paramInt1 == 0 || paramInt2 == 0) ? 0 : ((paramInt1 == 1) ? paramInt2 : ((paramInt2 == 1) ? paramInt1 : this.a[(this.b[paramInt1] + this.b[paramInt2]) % 255]));
  }
}

Added: g.java

final class g {
  private final f a;
  
  private final int[] a;
  
  g(f paramf, int[] paramArrayOfint) {
    if (paramArrayOfint == null || paramArrayOfint.length == 0)
      throw new IllegalArgumentException(); 
    this.a = (int[])paramf;
    int i;
    if ((i = paramArrayOfint.length) > 1 && paramArrayOfint[0] == 0) {
      byte b;
      for (b = 1; b < i && paramArrayOfint[b] == 0; b++);
      if (b == i) {
        this.a = (paramf.a()).a;
      } else {
        this.a = new int[i - b];
        System.arraycopy(paramArrayOfint, b, this.a, 0, this.a.length);
        return;
      } 
    } else {
      this.a = paramArrayOfint;
    } 
  }
  
  final int a() {
    return this.a.length - 1;
  }
  
  final boolean a() {
    return (this.a[0] == 0);
  }
  
  final int a(int paramInt) {
    return this.a[this.a.length - 1 - paramInt];
  }
  
  final int b(int paramInt) {
    if (paramInt == 0)
      return a(0); 
    int i = this.a.length;
    if (paramInt == 1) {
      int k = 0;
      for (byte b1 = 0; b1 < i; b1++)
        k = f.a(k, this.a[b1]); 
      return k;
    } 
    int j = this.a[0];
    for (byte b = 1; b < i; b++)
      j = f.a(this.a.b(paramInt, j), this.a[b]); 
    return j;
  }
  
  final g a(g paramg) {
    if (!this.a.equals(paramg.a))
      throw new IllegalArgumentException("GF256Polys do not have same GF256 field"); 
    if (a())
      return paramg; 
    if (paramg.a())
      return this; 
    int[] arrayOfInt2 = this.a;
    int[] arrayOfInt1 = paramg.a;
    if (arrayOfInt2.length > arrayOfInt1.length) {
      int[] arrayOfInt = arrayOfInt2;
      arrayOfInt2 = arrayOfInt1;
      arrayOfInt1 = arrayOfInt;
    } 
    int[] arrayOfInt3 = new int[arrayOfInt1.length];
    int i = arrayOfInt1.length - arrayOfInt2.length;
    System.arraycopy(arrayOfInt1, 0, arrayOfInt3, 0, i);
    for (int j = i; j < arrayOfInt1.length; j++)
      arrayOfInt3[j] = f.a(arrayOfInt2[j - i], arrayOfInt1[j]); 
    return new g((f)this.a, arrayOfInt3);
  }
  
  final g b(g paramg) {
    if (!this.a.equals(paramg.a))
      throw new IllegalArgumentException("GF256Polys do not have same GF256 field"); 
    if (a() || paramg.a())
      return this.a.a(); 
    int[] arrayOfInt2;
    int i = (arrayOfInt2 = this.a).length;
    int[] arrayOfInt1;
    int j = (arrayOfInt1 = paramg.a).length;
    int[] arrayOfInt3 = new int[i + j - 1];
    for (byte b = 0; b < i; b++) {
      int k = arrayOfInt2[b];
      for (byte b1 = 0; b1 < j; b1++)
        arrayOfInt3[b + b1] = f.a(arrayOfInt3[b + b1], this.a.b(k, arrayOfInt1[b1])); 
    } 
    return new g((f)this.a, arrayOfInt3);
  }
  
  final g a(int paramInt) {
    if (paramInt == 0)
      return this.a.a(); 
    if (paramInt == 1)
      return this; 
    int i;
    int[] arrayOfInt = new int[i = this.a.length];
    for (byte b = 0; b < i; b++)
      arrayOfInt[b] = this.a.b(this.a[b], paramInt); 
    return new g((f)this.a, arrayOfInt);
  }
  
  final g a(int paramInt1, int paramInt2) {
    if (paramInt1 < 0)
      throw new IllegalArgumentException(); 
    if (paramInt2 == 0)
      return this.a.a(); 
    int i;
    int[] arrayOfInt = new int[(i = this.a.length) + paramInt1];
    for (byte b = 0; b < i; b++)
      arrayOfInt[b] = this.a.b(this.a[b], paramInt2); 
    return new g((f)this.a, arrayOfInt);
  }
  
  public final String toString() {
    g g1;
    StringBuffer stringBuffer = new StringBuffer(8 * ((g1 = this).a.length - 1));
    for (int i = (g1 = this).a.length - 1; i >= 0; i--) {
      int j;
      if ((j = a(i)) != 0) {
        if (j < 0) {
          stringBuffer.append(" - ");
          j = -j;
        } else if (stringBuffer.length() > 0) {
          stringBuffer.append(" + ");
        } 
        if (i == 0 || j != 1)
          if ((j = this.a.b(j)) == 0) {
            stringBuffer.append('1');
          } else if (j == 1) {
            stringBuffer.append('a');
          } else {
            stringBuffer.append("a^");
            stringBuffer.append(j);
          }  
        if (i != 0)
          if (i == 1) {
            stringBuffer.append('x');
          } else {
            stringBuffer.append("x^");
            stringBuffer.append(i);
          }  
      } 
    } 
    return stringBuffer.toString();
  }
}

Added: h.java

import java.util.Vector;

public class h {
  private final f a;
  
  public h(f paramf) {
    this.a = paramf;
  }
  
  public final void a(int[] paramArrayOfint, int paramInt) {
    g g2 = new g(this.a, paramArrayOfint);
    int[] arrayOfInt3 = new int[paramInt];
    boolean bool1 = this.a.equals(f.b);
    boolean bool = true;
    for (byte b3 = 0; b3 < paramInt; b3++) {
      int n = g2.b(this.a.a(bool1 ? (b3 + 1) : b3));
      arrayOfInt3[arrayOfInt3.length - 1 - b3] = n;
      if (n != 0)
        bool = false; 
    } 
    if (bool)
      return; 
    g g5 = new g(this.a, arrayOfInt3);
    int k = paramInt;
    g5 = g5;
    g g4 = this.a.a(paramInt, 1);
    h h1 = this;
    if (g4.a() < g5.a()) {
      g g = g4;
      g4 = g5;
      g5 = g;
    } 
    g g6 = g4;
    g g7 = g5;
    g2 = h1.a.b();
    g g8 = h1.a.a();
    g g9 = h1.a.a();
    g g10;
    for (g10 = h1.a.b(); g7.a() >= k / 2; g10 = g11.b(g9).a(g5)) {
      g g11 = g6;
      g4 = g2;
      g5 = g9;
      g6 = g7;
      g2 = g8;
      g9 = g10;
      if (g6.a())
        throw new i("r_{i-1} was zero"); 
      g7 = g11;
      g11 = h1.a.a();
      int n = g6.a(g6.a());
      n = h1.a.c(n);
      while (g7.a() >= g6.a() && !g7.a()) {
        int i1 = g7.a() - g6.a();
        int i2 = h1.a.b(g7.a(g7.a()), n);
        g11 = g11.a(h1.a.a(i1, i2));
        g7 = g7.a(g6.a(i1, i2));
      } 
      g g12 = g11.b(g2).a(g4);
    } 
    if ((paramInt = g10.a(0)) == 0)
      throw new i("sigmaTilde(0) was zero"); 
    int i = h1.a.c(paramInt);
    g5 = g10.a(i);
    g g1 = g7.a(i);
    g[] arrayOfG;
    g1 = (arrayOfG = new g[] { g5, g1 })[0];
    g2 = arrayOfG[1];
    g g3 = g1;
    h1 = this;
    (new int[1])[0] = g3.a(1);
    int[] arrayOfInt5 = new int[j];
    int m = 0;
    for (byte b4 = 1; b4 < 'Ā' && m < j; b4++) {
      if (g3.b(b4) == 0) {
        arrayOfInt5[m] = h1.a.c(b4);
        m++;
      } 
    } 
    if (m != j)
      throw new i("Error locator degree does not match number of roots"); 
    int j;
    int[] arrayOfInt1 = ((j = g3.a()) == 1) ? new int[1] : arrayOfInt5;
    boolean bool2 = bool1;
    int[] arrayOfInt4 = arrayOfInt1;
    g3 = g2;
    h1 = this;
    int[] arrayOfInt6 = new int[m = arrayOfInt4.length];
    for (byte b1 = 0; b1 < m; b1++) {
      int n = h1.a.c(arrayOfInt4[b1]);
      int i1 = 1;
      for (byte b = 0; b < m; b++) {
        if (b1 != b)
          i1 = h1.a.b(i1, f.a(1, h1.a.b(arrayOfInt4[b], n))); 
      } 
      arrayOfInt6[b1] = h1.a.b(g3.b(n), h1.a.c(i1));
      if (bool2)
        arrayOfInt6[b1] = h1.a.b(arrayOfInt6[b1], n); 
    } 
    int[] arrayOfInt2 = arrayOfInt6;
    for (byte b2 = 0; b2 < arrayOfInt1.length; b2++) {
      int n;
      if ((n = paramArrayOfint.length - 1 - this.a.b(arrayOfInt1[b2])) < 0)
        throw new i("Bad error location"); 
      paramArrayOfint[n] = f.a(paramArrayOfint[n], arrayOfInt2[b2]);
    } 
  }
  
  public static Vector a() {
    Vector vector = a(System.getProperty("video.snapshot.encodings"), " ");
    Vector vector1 = new Vector();
    int i = vector.size();
    for (byte b = 0; b < i; b++)
      vector1.addElement(new p(vector.elementAt(b))); 
    return vector1;
  }
  
  public static ac[] a(ag paramag) {
    Vector vector = new Vector();
    boolean[] arrayOfBoolean = new boolean[paramag.c()];
    int i = ((i = (int)(paramag.b() / 228.0F)) <= 0) ? 1 : i;
    a(paramag, vector, arrayOfBoolean, i, 0, i);
    if (i > 1 && vector.size() < 3)
      a(paramag, vector, arrayOfBoolean, 1, 0, 1); 
    if (vector.size() < 3)
      throw new ad(); 
    ac[] arrayOfAc1 = new ac[vector.size()];
    vector.copyInto((Object[])arrayOfAc1);
    a(arrayOfAc1);
    ac[] arrayOfAc2;
    ac ac1 = (arrayOfAc2 = arrayOfAc1)[0];
    ac ac2 = arrayOfAc2[1];
    ac ac3 = arrayOfAc2[2];
    double d1 = a(ac1, ac2);
    double d2 = a(ac1, ac3);
    double d3 = a(ac2, ac3);
    if (d1 > d2 && d1 > d3) {
      arrayOfAc2[0] = ac3;
      arrayOfAc2[1] = ac1;
      arrayOfAc2[2] = ac2;
    } 
    if (d2 > d1 && d2 > d3) {
      arrayOfAc2[0] = ac2;
      arrayOfAc2[1] = ac1;
      arrayOfAc2[2] = ac3;
    } 
    if (d3 > d1 && d3 > d2) {
      arrayOfAc2[0] = ac1;
      arrayOfAc2[1] = ac2;
      arrayOfAc2[2] = ac3;
    } 
    double[] arrayOfDouble2 = a(arrayOfAc2[0], arrayOfAc2[2]);
    double[] arrayOfDouble1;
    if ((arrayOfDouble1 = a(arrayOfAc2[0], arrayOfAc2[1]))[0] * arrayOfDouble2[1] - arrayOfDouble1[1] * arrayOfDouble2[0] < 0.0D) {
      ac ac = arrayOfAc2[1];
      arrayOfAc2[1] = arrayOfAc2[2];
      arrayOfAc2[2] = ac;
    } 
    j j;
    (j = j.a()).a(arrayOfAc1);
    return arrayOfAc1;
  }
  
  private static void a(ag paramag, Vector paramVector, boolean[] paramArrayOfboolean, int paramInt1, int paramInt2, int paramInt3) {
    // Byte code:
    //   0: aload_0
    //   1: invokevirtual b : ()I
    //   4: istore #4
    //   6: aload_0
    //   7: invokevirtual c : ()I
    //   10: istore #6
    //   12: iconst_3
    //   13: iload_3
    //   14: imul
    //   15: istore #7
    //   17: iconst_0
    //   18: istore #8
    //   20: iload #8
    //   22: iload #6
    //   24: if_icmpge -> 674
    //   27: aload_2
    //   28: iload #8
    //   30: baload
    //   31: ifne -> 664
    //   34: iconst_0
    //   35: istore #9
    //   37: iload #9
    //   39: iload #4
    //   41: if_icmpge -> 664
    //   44: aload_0
    //   45: iload #9
    //   47: iload #8
    //   49: invokevirtual a : (II)Z
    //   52: ifne -> 149
    //   55: aload_0
    //   56: iload #9
    //   58: iload #9
    //   60: iload #7
    //   62: iadd
    //   63: iload #8
    //   65: istore #13
    //   67: istore #12
    //   69: istore #11
    //   71: astore #10
    //   73: iload #11
    //   75: iflt -> 83
    //   78: iload #11
    //   80: goto -> 84
    //   83: iconst_0
    //   84: istore #11
    //   86: aload #10
    //   88: invokevirtual b : ()I
    //   91: istore #14
    //   93: iload #12
    //   95: iload #14
    //   97: if_icmpge -> 105
    //   100: iload #11
    //   102: goto -> 107
    //   105: iload #14
    //   107: istore #12
    //   109: iload #11
    //   111: istore #15
    //   113: iload #15
    //   115: iload #12
    //   117: if_icmpge -> 142
    //   120: aload #10
    //   122: iload #15
    //   124: iload #13
    //   126: invokevirtual a : (II)Z
    //   129: ifne -> 136
    //   132: iconst_0
    //   133: goto -> 143
    //   136: iinc #15, 1
    //   139: goto -> 113
    //   142: iconst_1
    //   143: ifne -> 149
    //   146: goto -> 655
    //   149: aload_0
    //   150: aload_1
    //   151: iload #8
    //   153: iload #9
    //   155: iload_3
    //   156: isub
    //   157: ifgt -> 164
    //   160: iconst_0
    //   161: goto -> 168
    //   164: iload #9
    //   166: iload_3
    //   167: isub
    //   168: iload #4
    //   170: istore #14
    //   172: istore #13
    //   174: istore #12
    //   176: astore #11
    //   178: astore #10
    //   180: iconst_0
    //   181: istore #15
    //   183: iconst_0
    //   184: istore #16
    //   186: iconst_5
    //   187: newarray int
    //   189: astore #17
    //   191: iload #13
    //   193: istore #13
    //   195: iload #13
    //   197: iload #14
    //   199: if_icmpge -> 646
    //   202: aload #10
    //   204: iload #13
    //   206: iload #12
    //   208: invokevirtual a : (II)Z
    //   211: ifeq -> 275
    //   214: iload #15
    //   216: iconst_1
    //   217: if_icmpeq -> 226
    //   220: iload #15
    //   222: iconst_3
    //   223: if_icmpne -> 229
    //   226: iinc #15, 1
    //   229: iload #15
    //   231: ifne -> 246
    //   234: aload #17
    //   236: iload #15
    //   238: iaload
    //   239: ifne -> 246
    //   242: iload #13
    //   244: istore #16
    //   246: iload #15
    //   248: ifeq -> 263
    //   251: iload #15
    //   253: iconst_2
    //   254: if_icmpeq -> 263
    //   257: iload #15
    //   259: iconst_4
    //   260: if_icmpne -> 640
    //   263: aload #17
    //   265: iload #15
    //   267: dup2
    //   268: iaload
    //   269: iconst_1
    //   270: iadd
    //   271: iastore
    //   272: goto -> 640
    //   275: iload #15
    //   277: ifne -> 287
    //   280: aload #17
    //   282: iconst_0
    //   283: iaload
    //   284: ifne -> 293
    //   287: iload #15
    //   289: iconst_2
    //   290: if_icmpne -> 296
    //   293: iinc #15, 1
    //   296: iload #15
    //   298: iconst_4
    //   299: if_icmpne -> 623
    //   302: aload #17
    //   304: invokestatic a : ([I)Z
    //   307: ifeq -> 569
    //   310: aload #10
    //   312: aload #11
    //   314: iload #16
    //   316: iload #12
    //   318: aload #17
    //   320: astore #21
    //   322: istore #20
    //   324: istore #19
    //   326: astore #18
    //   328: astore #15
    //   330: iconst_1
    //   331: istore #22
    //   333: iload #19
    //   335: aload #21
    //   337: invokestatic b : ([I)I
    //   340: iadd
    //   341: istore #23
    //   343: aload #15
    //   345: iload #23
    //   347: iload #20
    //   349: invokestatic a : (Lag;II)I
    //   352: istore #20
    //   354: iload #19
    //   356: aload #21
    //   358: iconst_0
    //   359: iaload
    //   360: iadd
    //   361: aload #21
    //   363: iconst_1
    //   364: iaload
    //   365: iadd
    //   366: dup
    //   367: istore #19
    //   369: aload #21
    //   371: iconst_2
    //   372: iaload
    //   373: iadd
    //   374: istore #24
    //   376: iload #23
    //   378: iconst_1
    //   379: isub
    //   380: istore #25
    //   382: iload #23
    //   384: iconst_1
    //   385: iadd
    //   386: istore #26
    //   388: iload #20
    //   390: ldc -2147483648
    //   392: if_icmpne -> 488
    //   395: iload #22
    //   397: ifne -> 404
    //   400: iconst_1
    //   401: goto -> 405
    //   404: iconst_0
    //   405: istore #22
    //   407: iload #25
    //   409: iload #19
    //   411: if_icmpgt -> 425
    //   414: iload #24
    //   416: iload #26
    //   418: if_icmpgt -> 425
    //   421: iconst_0
    //   422: goto -> 568
    //   425: iload #22
    //   427: ifeq -> 459
    //   430: iload #19
    //   432: iload #25
    //   434: if_icmpge -> 452
    //   437: aload #15
    //   439: iload #25
    //   441: iinc #25, -1
    //   444: iload #20
    //   446: invokestatic a : (Lag;II)I
    //   449: goto -> 454
    //   452: iload #20
    //   454: istore #20
    //   456: goto -> 388
    //   459: iload #26
    //   461: iload #24
    //   463: if_icmpge -> 481
    //   466: aload #15
    //   468: iload #26
    //   470: iinc #26, 1
    //   473: iload #20
    //   475: invokestatic a : (Lag;II)I
    //   478: goto -> 483
    //   481: iload #20
    //   483: istore #20
    //   485: goto -> 388
    //   488: aload #21
    //   490: invokestatic a : ([I)I
    //   493: i2d
    //   494: ldc2_w 7.0
    //   497: ddiv
    //   498: dstore #32
    //   500: aload #18
    //   502: invokevirtual size : ()I
    //   505: istore #15
    //   507: iconst_0
    //   508: istore #19
    //   510: iload #19
    //   512: iload #15
    //   514: if_icmpge -> 549
    //   517: aload #18
    //   519: iload #19
    //   521: invokevirtual elementAt : (I)Ljava/lang/Object;
    //   524: checkcast ac
    //   527: dload #32
    //   529: iload #23
    //   531: iload #20
    //   533: invokevirtual a : (DII)Z
    //   536: ifeq -> 543
    //   539: iconst_1
    //   540: goto -> 568
    //   543: iinc #19, 1
    //   546: goto -> 510
    //   549: aload #18
    //   551: new ac
    //   554: dup
    //   555: iload #23
    //   557: iload #20
    //   559: dload #32
    //   561: invokespecial <init> : (IID)V
    //   564: invokevirtual addElement : (Ljava/lang/Object;)V
    //   567: iconst_1
    //   568: pop
    //   569: iconst_3
    //   570: istore #15
    //   572: aload #17
    //   574: iconst_0
    //   575: iaload
    //   576: aload #17
    //   578: iconst_1
    //   579: iaload
    //   580: iadd
    //   581: iload #16
    //   583: iadd
    //   584: istore #16
    //   586: aload #17
    //   588: iconst_0
    //   589: aload #17
    //   591: iconst_2
    //   592: iaload
    //   593: iastore
    //   594: aload #17
    //   596: iconst_1
    //   597: aload #17
    //   599: iconst_3
    //   600: iaload
    //   601: iastore
    //   602: aload #17
    //   604: iconst_2
    //   605: aload #17
    //   607: iconst_4
    //   608: iaload
    //   609: iastore
    //   610: aload #17
    //   612: iconst_3
    //   613: iconst_1
    //   614: iastore
    //   615: aload #17
    //   617: iconst_4
    //   618: iconst_0
    //   619: iastore
    //   620: goto -> 640
    //   623: iload #15
    //   625: iconst_2
    //   626: irem
    //   627: iconst_1
    //   628: if_icmpne -> 640
    //   631: aload #17
    //   633: iload #15
    //   635: dup2
    //   636: iaload
    //   637: iconst_1
    //   638: iadd
    //   639: iastore
    //   640: iinc #13, 1
    //   643: goto -> 195
    //   646: aload_2
    //   647: iload #8
    //   649: iconst_1
    //   650: bastore
    //   651: goto -> 664
    //   654: pop
    //   655: iload #9
    //   657: iload_3
    //   658: iadd
    //   659: istore #9
    //   661: goto -> 37
    //   664: iload #8
    //   666: iload #5
    //   668: iadd
    //   669: istore #8
    //   671: goto -> 20
    //   674: return
    // Exception table:
    //   from	to	target	type
    //   44	146	654	java/lang/ArrayIndexOutOfBoundsException
    //   149	651	654	java/lang/ArrayIndexOutOfBoundsException
  }
  
  private static boolean a(int[] paramArrayOfint) {
    int i = 0;
    int j;
    for (j = 0; j < 5; j++) {
      if (paramArrayOfint[j] == 0)
        return false; 
      i += paramArrayOfint[j];
    } 
    if (i < 7)
      return false; 
    i = (j = (i << 8) / 7) >> 1;
    return (Math.abs(j - (paramArrayOfint[0] << 8)) < i && Math.abs(j - (paramArrayOfint[1] << 8)) < i && Math.abs(3 * j - (paramArrayOfint[2] << 8)) < i && Math.abs(j - (paramArrayOfint[3] << 8)) < i && Math.abs(j - (paramArrayOfint[4] << 8)) < i);
  }
  
  private static int a(ag paramag, int paramInt1, int paramInt2) {
    int i = paramag.b();
    int j = paramag.c();
    if (paramInt1 < 0 || paramInt1 >= i || paramInt2 < 0 || paramInt2 >= j)
      return Integer.MIN_VALUE; 
    if (!paramag.a(paramInt1, paramInt2))
      return Integer.MIN_VALUE; 
    int[] arrayOfInt = new int[5];
    j--;
    int m;
    for (m = paramInt2; m >= 0 && paramag.a(paramInt1, m); m--)
      arrayOfInt[2] = arrayOfInt[2] + 1; 
    if (m < 0)
      return Integer.MIN_VALUE; 
    while (m >= 0 && !paramag.a(paramInt1, m)) {
      arrayOfInt[1] = arrayOfInt[1] + 1;
      m--;
    } 
    if (arrayOfInt[1] == 0 || m < 0)
      return Integer.MIN_VALUE; 
    while (m >= 0 && paramag.a(paramInt1, m)) {
      arrayOfInt[0] = arrayOfInt[0] + 1;
      m--;
    } 
    int k = m + 1;
    m = paramInt2 + 1;
    if (arrayOfInt[0] == 0 || m > j)
      return Integer.MIN_VALUE; 
    while (m <= j && paramag.a(paramInt1, m)) {
      arrayOfInt[2] = arrayOfInt[2] + 1;
      m++;
    } 
    if (arrayOfInt[2] == 0 || m > j)
      return Integer.MIN_VALUE; 
    while (m <= j && !paramag.a(paramInt1, m)) {
      arrayOfInt[3] = arrayOfInt[3] + 1;
      m++;
    } 
    if (arrayOfInt[3] == 0 || m > j)
      return Integer.MIN_VALUE; 
    while (m <= j && paramag.a(paramInt1, m)) {
      arrayOfInt[4] = arrayOfInt[4] + 1;
      m++;
    } 
    return a(arrayOfInt) ? (k + b(arrayOfInt)) : Integer.MIN_VALUE;
  }
  
  private static int a(int[] paramArrayOfint) {
    return paramArrayOfint[0] + paramArrayOfint[1] + paramArrayOfint[2] + paramArrayOfint[3] + paramArrayOfint[4];
  }
  
  private static int b(int[] paramArrayOfint) {
    return a(paramArrayOfint) - paramArrayOfint[4] - paramArrayOfint[3] - (paramArrayOfint[2] >> 1);
  }
  
  private static void a(ac[] paramArrayOfac) {
    int i = paramArrayOfac.length;
    for (byte b = 1; b < i; b++) {
      ac ac1 = paramArrayOfac[b];
      int j;
      for (j = b - 1; j >= 0 && paramArrayOfac[j].c() < ac1.c(); j--)
        paramArrayOfac[j + 1] = paramArrayOfac[j]; 
      paramArrayOfac[j + 1] = ac1;
    } 
  }
  
  private static double a(ac paramac1, ac paramac2) {
    double d1 = (paramac1.a() - paramac2.a());
    double d2 = (paramac1.b() - paramac2.b());
    return a(d1, d2);
  }
  
  private static double[] a(ac paramac1, ac paramac2) {
    int j = paramac2.a() - paramac1.a();
    int i = paramac2.b() - paramac1.b();
    return new double[] { j, i };
  }
  
  public static int[] a(ag paramag, int[] paramArrayOfint1, int[] paramArrayOfint2, int[] paramArrayOfint3) {
    int[] arrayOfInt2 = a(paramArrayOfint1, paramArrayOfint2);
    int[] arrayOfInt3 = a(paramArrayOfint2, paramArrayOfint1);
    int[] arrayOfInt4 = a(paramArrayOfint1, paramArrayOfint3);
    paramArrayOfint1 = a(paramArrayOfint3, paramArrayOfint1);
    int[] arrayOfInt5 = a(paramArrayOfint2, paramArrayOfint3);
    int[] arrayOfInt6 = a(paramArrayOfint3, paramArrayOfint2);
    arrayOfInt2 = a(arrayOfInt2, 0.5D);
    arrayOfInt3 = a(arrayOfInt3, 0.5D);
    arrayOfInt4 = a(arrayOfInt4, 0.5D);
    paramArrayOfint1 = a(paramArrayOfint1, 0.5D);
    arrayOfInt5 = a(arrayOfInt5, 0.5D);
    arrayOfInt6 = a(arrayOfInt6, 0.5D);
    int[] arrayOfInt7 = a(paramag, paramArrayOfint2, b(paramArrayOfint2, arrayOfInt6));
    arrayOfInt2 = a(paramag, paramArrayOfint2, b(paramArrayOfint2, arrayOfInt2));
    arrayOfInt3 = a(paramag, paramArrayOfint2, b(paramArrayOfint2, arrayOfInt3));
    paramArrayOfint2 = a(paramag, paramArrayOfint2, b(paramArrayOfint2, arrayOfInt5));
    arrayOfInt5 = a(paramag, paramArrayOfint3, b(paramArrayOfint3, arrayOfInt5));
    arrayOfInt4 = a(paramag, paramArrayOfint3, b(paramArrayOfint3, arrayOfInt4));
    paramArrayOfint1 = a(paramag, paramArrayOfint3, b(paramArrayOfint3, paramArrayOfint1));
    int[] arrayOfInt1 = a(paramag, paramArrayOfint3, b(paramArrayOfint3, arrayOfInt6));
    paramArrayOfint3 = a(arrayOfInt5, arrayOfInt4);
    arrayOfInt1 = a(paramArrayOfint1, arrayOfInt1);
    arrayOfInt2 = a(arrayOfInt7, arrayOfInt2);
    paramArrayOfint2 = a(arrayOfInt3, paramArrayOfint2);
    paramArrayOfint3 = a(paramArrayOfint3, 8.0D);
    arrayOfInt1 = a(arrayOfInt1, 8.0D);
    arrayOfInt2 = a(arrayOfInt2, 8.0D);
    paramArrayOfint2 = a(paramArrayOfint2, 8.0D);
    arrayOfInt4 = a(paramArrayOfint1, b(arrayOfInt1, paramArrayOfint1), arrayOfInt3, b(paramArrayOfint2, arrayOfInt3));
    arrayOfInt1 = a(paramArrayOfint1, b(arrayOfInt1, paramArrayOfint1), arrayOfInt7, b(arrayOfInt2, arrayOfInt7));
    paramArrayOfint1 = a(arrayOfInt5, b(paramArrayOfint3, arrayOfInt5), arrayOfInt3, b(paramArrayOfint2, arrayOfInt3));
    paramArrayOfint2 = a(arrayOfInt5, b(paramArrayOfint3, arrayOfInt5), arrayOfInt7, b(arrayOfInt2, arrayOfInt7));
    System.out.println("UL:" + a(arrayOfInt4));
    System.out.println("UR:" + a(arrayOfInt1));
    System.out.println("LL:" + a(paramArrayOfint1));
    System.out.println("LR:" + a(paramArrayOfint2));
    System.out.println("---");
    arrayOfInt1 = a(arrayOfInt4, paramArrayOfint2, arrayOfInt1, paramArrayOfint1);
    System.out.println("p3 intersection guess:" + a(arrayOfInt1));
    System.out.println("---");
    return arrayOfInt1;
  }
  
  private static int[] a(ag paramag, int[] paramArrayOfint1, int[] paramArrayOfint2) {
    Vector vector;
    int[] arrayOfInt = (vector = a(paramArrayOfint1[0], paramArrayOfint1[1], paramArrayOfint2[0], paramArrayOfint2[1], 0, 0, paramag.b(), paramag.c())).elementAt(0);
    byte b = 0;
    int j = 0;
    int k = 0;
    int m = vector.size();
    byte b1 = 1;
    if (arrayOfInt[0] != paramArrayOfint1[0] || arrayOfInt[1] != paramArrayOfint1[1]) {
      k = vector.size() - 1;
      m = 0;
      b1 = -1;
    } 
    for (int i = k; (b1 > 0) ? (i < m) : (i >= m); i += b1) {
      arrayOfInt = vector.elementAt(i);
      if (paramag.a(arrayOfInt)) {
        if (b == 1)
          b++; 
      } else {
        if (b == 0)
          b++; 
        if (b == 2) {
          j = i;
          break;
        } 
      } 
    } 
    return arrayOfInt = vector.elementAt(j);
  }
  
  private static int[] a(int[] paramArrayOfint1, int[] paramArrayOfint2) {
    return new int[] { paramArrayOfint2[0] - paramArrayOfint1[0], paramArrayOfint2[1] - paramArrayOfint1[1] };
  }
  
  private static int[] a(int[] paramArrayOfint, double paramDouble) {
    return new int[] { (int)(paramArrayOfint[0] * paramDouble), (int)(paramArrayOfint[1] * paramDouble) };
  }
  
  private static int[] b(int[] paramArrayOfint1, int[] paramArrayOfint2) {
    return new int[] { paramArrayOfint1[0] + paramArrayOfint2[0], paramArrayOfint1[1] + paramArrayOfint2[1] };
  }
  
  private static String a(int[] paramArrayOfint) {
    return paramArrayOfint[0] + ", " + paramArrayOfint[1];
  }
  
  public static m a(ag paramag, l paraml) {
    if (paraml == null)
      throw new q("Candidate is null"); 
    int j = paraml.a();
    int k = paraml.b();
    int m = j * k;
    int n = m;
    ai ai = paraml.a();
    ag ag1 = paramag;
    boolean[][] arrayOfBoolean3 = new boolean[n][n];
    int i1 = ag1.b();
    int i2 = ag1.c();
    for (byte b2 = 0; b2 < n; b2++) {
      for (byte b = 0; b < n; b++) {
        int i3 = (int)ai.a(b, b2);
        int i4 = (int)ai.b(b, b2);
        if (i3 >= 0 && i3 < i1 && i4 >= 0 && i4 < i2)
          arrayOfBoolean3[b][b2] = ag1.a(i3, i4); 
      } 
    } 
    boolean[][] arrayOfBoolean1 = arrayOfBoolean3;
    boolean[][] arrayOfBoolean2 = new boolean[j][j];
    ab ab;
    if (!(ab = new ab(paramag.b(), paramag.c(), paraml)).a())
      return null; 
    int i = 0;
    for (byte b1 = 0; i < m && b1 < j; b1++) {
      int i3 = 0;
      for (byte b = 0; i3 < m && b < j; b++) {
        int i6 = i + k;
        int i5 = i3 + k;
        n = i;
        int i4 = i3;
        boolean[][] arrayOfBoolean = arrayOfBoolean1;
        int i7 = i4 + (i5 - i4 >> 1);
        i1 = n + (i6 - n >> 1);
        double d1 = 0.0D;
        double d2 = 0.0D;
        for (i4 = i1 - 1; i4 < i1 + 2; i4++) {
          for (n = i7 - 1; n < i7 + 2; n++) {
            if (arrayOfBoolean[n][i4])
              d1++; 
            d2++;
          } 
        } 
        arrayOfBoolean2[b][b1] = (d1 >= d2 * 0.6D);
        i3 += k;
      } 
      i += k;
    } 
    return new m(arrayOfBoolean2);
  }
  
  public static int a(int paramInt1, int paramInt2) {
    return (int)Math.floor(paramInt1 / paramInt2);
  }
  
  public static double a(double paramDouble1, double paramDouble2, double paramDouble3, double paramDouble4) {
    return paramDouble1 * paramDouble2 + paramDouble3 * paramDouble4;
  }
  
  public static double a(double[] paramArrayOfdouble1, double[] paramArrayOfdouble2) {
    return paramArrayOfdouble1[0] * paramArrayOfdouble2[0] + paramArrayOfdouble1[1] * paramArrayOfdouble2[1];
  }
  
  public static double a(double paramDouble1, double paramDouble2) {
    return Math.sqrt(a(paramDouble1, paramDouble1, paramDouble2, paramDouble2));
  }
  
  public static double a(double[] paramArrayOfdouble) {
    return Math.sqrt(a(paramArrayOfdouble[0], paramArrayOfdouble[0], paramArrayOfdouble[1], paramArrayOfdouble[1]));
  }
  
  public static int[] a(int[] paramArrayOfint1, int[] paramArrayOfint2, int[] paramArrayOfint3, int[] paramArrayOfint4) {
    double[] arrayOfDouble1 = { (paramArrayOfint2[0] - paramArrayOfint1[0]), (paramArrayOfint2[1] - paramArrayOfint1[1]) };
    double[] arrayOfDouble3 = { (paramArrayOfint4[0] - paramArrayOfint3[0]), (paramArrayOfint4[1] - paramArrayOfint3[1]) };
    double[] arrayOfDouble2;
    double d1 = -(arrayOfDouble2 = new double[] { (paramArrayOfint3[0] - paramArrayOfint1[0]), (paramArrayOfint3[1] - paramArrayOfint1[1]) })[1] * arrayOfDouble3[0] + arrayOfDouble2[0] * arrayOfDouble3[1];
    double d2 = -arrayOfDouble1[1] * arrayOfDouble3[0] + arrayOfDouble1[0] * arrayOfDouble3[1];
    double d3 = d1 / d2;
    double d4 = paramArrayOfint1[0] + arrayOfDouble1[0] * d3;
    double d5 = paramArrayOfint1[1] + arrayOfDouble1[1] * d3;
    double d6;
    return new int[] { (int)((d6 = d4) + 0.5D), (int)((d6 = d5) + 0.5D) };
  }
  
  public static double b(double[] paramArrayOfdouble1, double[] paramArrayOfdouble2) {
    double d2 = d1;
    byte b = 0;
    if (d2 < 0.0D) {
      d2 = -d2;
      b++;
    } 
    double d3 = Math.sqrt(1.0D - d2 * d2);
    if (d2 > 0.7D) {
      d3 = 1.5707963267948966D - a(d3 / d2);
    } else {
      d3 = a(d2 / d3);
    } 
    if (b > 0)
      d3 = -d3; 
    double d1;
    return Math.toDegrees(((d1 = a(paramArrayOfdouble1, paramArrayOfdouble2) / a(paramArrayOfdouble1) * a(paramArrayOfdouble2)) > 1.0D || d1 < -1.0D) ? Double.NaN : (1.5707963267948966D - ((d2 > 1.0D) ? Double.NaN : d3)));
  }
  
  private static double b(double paramDouble) {
    double d1 = paramDouble * paramDouble;
    double d2;
    return (d2 = (d2 = (((d1 * 16.15364129822302D + 268.42548195503974D) * d1 + 1153.029351540485D) * d1 + 1780.406316433197D) * d1 + 896.7859740366387D) / (((((d1 + 58.95697050844462D) * d1 + 536.2653740312153D) * d1 + 1666.7838148816338D) * d1 + 2079.33497444541D) * d1 + 896.7859740366387D)) * paramDouble;
  }
  
  private static double c(double paramDouble) {
    return (paramDouble < 0.41421356237309503D) ? b(paramDouble) : ((paramDouble > 2.414213562373095D) ? (1.5707963267948966D - b(1.0D / paramDouble)) : (0.7853981633974483D + b((paramDouble - 1.0D) / (paramDouble + 1.0D))));
  }
  
  public static double a(double paramDouble) {
    return (paramDouble > 0.0D) ? c(paramDouble) : -c(-paramDouble);
  }
  
  public static Vector a(String paramString1, String paramString2) {
    Vector vector = new Vector();
    int i;
    int j;
    for (j = paramString1.length(); (i = paramString1.indexOf(paramString2)) >= 0; j = (paramString1 = paramString1.substring(i + 1, j)).length()) {
      vector.addElement(paramString1.substring(0, i));
      if (i + 1 > j)
        return vector; 
    } 
    vector.addElement(paramString1);
    return vector;
  }
  
  public static Vector a(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6, int paramInt7, int paramInt8) {
    Vector vector = new Vector();
    boolean bool;
    if (bool = (Math.abs(paramInt4 - paramInt2) > Math.abs(paramInt3 - paramInt1)) ? true : false) {
      int n = paramInt1;
      paramInt1 = paramInt2;
      paramInt2 = n;
      n = paramInt3;
      paramInt3 = paramInt4;
      paramInt4 = n;
    } 
    if (paramInt1 > paramInt3) {
      int n = paramInt1;
      paramInt1 = paramInt3;
      paramInt3 = n;
      n = paramInt2;
      paramInt2 = paramInt4;
      paramInt4 = n;
    } 
    int i = paramInt3 - paramInt1;
    int j = Math.abs(paramInt4 - paramInt2);
    int k = i >> 1;
    int m = paramInt2;
    paramInt2 = (paramInt2 < paramInt4) ? 1 : -1;
    for (paramInt4 = paramInt1; paramInt4 < paramInt3; paramInt4++) {
      int[] arrayOfInt;
      if (bool) {
        arrayOfInt = new int[] { m, paramInt4 };
      } else {
        arrayOfInt = new int[] { paramInt4, m };
      } 
      if (paramInt5 <= arrayOfInt[0] && arrayOfInt[0] < paramInt7 && paramInt6 <= arrayOfInt[1] && arrayOfInt[1] < paramInt8)
        vector.addElement(arrayOfInt); 
      if ((k -= j) < 0) {
        m += paramInt2;
        k += i;
      } 
    } 
    return vector;
  }
}

Added: hotpants/Midlet.java

package hotpants;

import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;

public class Midlet extends MIDlet {
  private Display a;
  
  private g a;
  
  private d a;
  
  private i a;
  
  private k a;
  
  private m a;
  
  private Alert a;
  
  public void startApp() {
    this.a = (Alert)new g("Hotpants", this);
    this.a = (Alert)new d("", this);
    this.a = (Alert)new i(this);
    this.a = (Alert)new k(this);
    this.a.a();
    this.a = (Alert)Display.getDisplay(this);
    this.a.setCurrent((Displayable)this.a.a());
    this.a = (Alert)new m(this);
    (new Timer()).schedule((TimerTask)this.a, 0L, 1000L);
  }
  
  public void refreshAllEntries(Calendar paramCalendar) {
    Displayable displayable;
    if ((displayable = Display.getDisplay(this).getCurrent()) == this.a) {
      this.a.a(paramCalendar);
      return;
    } 
    if (displayable == this.a)
      this.a.a(); 
  }
  
  public void showMainForm() {
    Display.getDisplay(this).setCurrent((Displayable)this.a);
  }
  
  public void showEntryForm() {
    Display.getDisplay(this).setCurrent((Displayable)this.a);
  }
  
  public void showHotpEntryForm() {
    Display.getDisplay(this).setCurrent((Displayable)this.a);
  }
  
  public void showTimeConfigForm() {
    Display.getDisplay(this).setCurrent((Displayable)this.a);
  }
  
  public void showScanForm() {
    Display.getDisplay(this).setCurrent((Displayable)this.a);
    this.a.b();
  }
  
  public i getScanForm() {
    return (i)this.a;
  }
  
  public g getMainForm() {
    return (g)this.a;
  }
  
  public d getEntryForm() {
    return (d)this.a;
  }
  
  public void pauseApp() {}
  
  public void destroyApp(boolean paramBoolean) {}
  
  public void alertError(String paramString, Displayable paramDisplayable) {
    this.a = new Alert("Error");
    this.a.setTimeout(2000);
    this.a.setString(paramString);
    Display.getDisplay(this).setCurrent(this.a, paramDisplayable);
  }
  
  public void addEntry(h paramh) {
    a.a().a(paramh);
    this.a.a();
  }
  
  public void updateEntry(h paramh) {
    a.a().b(paramh);
    this.a.a();
  }
  
  public void deleteEntry(h paramh) {
    a.a().a(paramh.c());
    this.a.a();
  }
}

Added: hotpants/a.java

package hotpants;

import java.util.Hashtable;
import javax.microedition.rms.RecordStore;
import javax.microedition.rms.RecordStoreException;

public final class a {
  private static a a = null;
  
  private RecordStore a;
  
  private Hashtable a;
  
  private byte a;
  
  private int a;
  
  private a() {
    // Byte code:
    //   0: aload_0
    //   1: invokespecial <init> : ()V
    //   4: aload_0
    //   5: iconst_0
    //   6: putfield a : B
    //   9: aload_0
    //   10: iconst_m1
    //   11: putfield a : I
    //   14: aload_0
    //   15: new java/util/Hashtable
    //   18: dup
    //   19: invokespecial <init> : ()V
    //   22: putfield a : Ljava/util/Hashtable;
    //   25: aload_0
    //   26: ldc 'Hotpants'
    //   28: iconst_1
    //   29: invokestatic openRecordStore : (Ljava/lang/String;Z)Ljavax/microedition/rms/RecordStore;
    //   32: putfield a : Ljavax/microedition/rms/RecordStore;
    //   35: aload_0
    //   36: getfield a : Ljavax/microedition/rms/RecordStore;
    //   39: iconst_0
    //   40: iconst_0
    //   41: invokevirtual setMode : (IZ)V
    //   44: aload_0
    //   45: getfield a : Ljavax/microedition/rms/RecordStore;
    //   48: aconst_null
    //   49: aconst_null
    //   50: iconst_0
    //   51: invokevirtual enumerateRecords : (Ljavax/microedition/rms/RecordFilter;Ljavax/microedition/rms/RecordComparator;Z)Ljavax/microedition/rms/RecordEnumeration;
    //   54: astore_1
    //   55: aload_1
    //   56: invokeinterface hasNextElement : ()Z
    //   61: ifeq -> 238
    //   64: aload_1
    //   65: invokeinterface nextRecordId : ()I
    //   70: istore_2
    //   71: aload_0
    //   72: getfield a : Ljavax/microedition/rms/RecordStore;
    //   75: iload_2
    //   76: invokevirtual getRecord : (I)[B
    //   79: dup
    //   80: astore_3
    //   81: invokestatic a : ([B)I
    //   84: istore #4
    //   86: iconst_1
    //   87: iload #4
    //   89: if_icmpne -> 126
    //   92: aload_3
    //   93: invokestatic a : ([B)Lhotpants/l;
    //   96: dup
    //   97: astore_3
    //   98: iload_2
    //   99: i2b
    //   100: invokevirtual a : (B)V
    //   103: aload_0
    //   104: getfield a : Ljava/util/Hashtable;
    //   107: new java/lang/Integer
    //   110: dup
    //   111: aload_3
    //   112: invokevirtual c : ()I
    //   115: invokespecial <init> : (I)V
    //   118: aload_3
    //   119: invokevirtual put : (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    //   122: pop
    //   123: goto -> 55
    //   126: iconst_2
    //   127: iload #4
    //   129: if_icmpne -> 166
    //   132: aload_3
    //   133: invokestatic a : ([B)Lhotpants/f;
    //   136: dup
    //   137: astore_3
    //   138: iload_2
    //   139: i2b
    //   140: invokevirtual a : (B)V
    //   143: aload_0
    //   144: getfield a : Ljava/util/Hashtable;
    //   147: new java/lang/Integer
    //   150: dup
    //   151: aload_3
    //   152: invokevirtual c : ()I
    //   155: invokespecial <init> : (I)V
    //   158: aload_3
    //   159: invokevirtual put : (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    //   162: pop
    //   163: goto -> 55
    //   166: iconst_3
    //   167: iload #4
    //   169: if_icmpne -> 235
    //   172: aload_0
    //   173: aload_3
    //   174: astore_3
    //   175: astore_2
    //   176: aload_3
    //   177: arraylength
    //   178: bipush #9
    //   180: if_icmpeq -> 194
    //   183: getstatic java/lang/System.err : Ljava/io/PrintStream;
    //   186: ldc 'Corrupt time offset configuration entry.'
    //   188: invokevirtual println : (Ljava/lang/String;)V
    //   191: goto -> 55
    //   194: aload_2
    //   195: aload_3
    //   196: bipush #6
    //   198: baload
    //   199: putfield a : B
    //   202: aload_2
    //   203: aload_3
    //   204: bipush #8
    //   206: baload
    //   207: putfield a : I
    //   210: getstatic java/lang/System.out : Ljava/io/PrintStream;
    //   213: new java/lang/StringBuffer
    //   216: dup
    //   217: ldc 'Time offset from config: '
    //   219: invokespecial <init> : (Ljava/lang/String;)V
    //   222: aload_2
    //   223: getfield a : B
    //   226: invokevirtual append : (I)Ljava/lang/StringBuffer;
    //   229: invokevirtual toString : ()Ljava/lang/String;
    //   232: invokevirtual println : (Ljava/lang/String;)V
    //   235: goto -> 55
    //   238: aload_0
    //   239: getfield a : Ljavax/microedition/rms/RecordStore;
    //   242: invokevirtual closeRecordStore : ()V
    //   245: return
    //   246: astore_1
    //   247: getstatic java/lang/System.err : Ljava/io/PrintStream;
    //   250: new java/lang/StringBuffer
    //   253: dup
    //   254: ldc 'Could not load configuration: '
    //   256: invokespecial <init> : (Ljava/lang/String;)V
    //   259: aload_1
    //   260: invokevirtual getMessage : ()Ljava/lang/String;
    //   263: invokevirtual append : (Ljava/lang/String;)Ljava/lang/StringBuffer;
    //   266: invokevirtual toString : ()Ljava/lang/String;
    //   269: invokevirtual println : (Ljava/lang/String;)V
    //   272: return
    // Exception table:
    //   from	to	target	type
    //   25	245	246	javax/microedition/rms/RecordStoreException
  }
  
  public static a a() {
    if (a == null)
      a = new a(); 
    return a;
  }
  
  private static int a(byte[] paramArrayOfbyte) {
    byte b1 = 0;
    for (byte b2 = 0; b2 < paramArrayOfbyte.length; b2++) {
      if (b1 == 2) {
        if (2 == paramArrayOfbyte[b2])
          return 2; 
        if (1 == paramArrayOfbyte[b2])
          return 1; 
        if (3 == paramArrayOfbyte[b2])
          return 3; 
        System.err.println("Could not determine entry type");
        return -1;
      } 
      if (Byte.MAX_VALUE == paramArrayOfbyte[b2])
        b1++; 
    } 
    System.err.println("Record corrupt");
    return -1;
  }
  
  public final h a(h paramh) {
    // Byte code:
    //   0: aload_0
    //   1: aload_1
    //   2: invokeinterface a : ()[B
    //   7: invokespecial a : ([B)B
    //   10: istore_2
    //   11: getstatic java/lang/System.out : Ljava/io/PrintStream;
    //   14: new java/lang/StringBuffer
    //   17: dup
    //   18: ldc 'Adding entry '
    //   20: invokespecial <init> : (Ljava/lang/String;)V
    //   23: iload_2
    //   24: invokevirtual append : (I)Ljava/lang/StringBuffer;
    //   27: invokevirtual toString : ()Ljava/lang/String;
    //   30: invokevirtual println : (Ljava/lang/String;)V
    //   33: aload_1
    //   34: iload_2
    //   35: invokeinterface a : (B)V
    //   40: aload_0
    //   41: getfield a : Ljava/util/Hashtable;
    //   44: new java/lang/Integer
    //   47: dup
    //   48: iload_2
    //   49: invokespecial <init> : (I)V
    //   52: aload_1
    //   53: invokevirtual put : (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    //   56: pop
    //   57: aload_1
    //   58: areturn
  }
  
  private byte a(byte[] paramArrayOfbyte) {
    byte b = -1;
    try {
      this.a = RecordStore.openRecordStore("Hotpants", true);
      this.a.setMode(0, true);
      b = (byte)this.a.getNextRecordID();
      this.a.addRecord(paramArrayOfbyte, 0, paramArrayOfbyte.length);
      this.a.closeRecordStore();
    } catch (RecordStoreException recordStoreException) {
      System.err.println("Could not save entry: " + recordStoreException.getMessage());
    } 
    return b;
  }
  
  public final h b(h paramh) {
    // Byte code:
    //   0: getstatic java/lang/System.out : Ljava/io/PrintStream;
    //   3: new java/lang/StringBuffer
    //   6: dup
    //   7: ldc 'Updating entry '
    //   9: invokespecial <init> : (Ljava/lang/String;)V
    //   12: aload_1
    //   13: invokeinterface c : ()I
    //   18: invokevirtual append : (I)Ljava/lang/StringBuffer;
    //   21: invokevirtual toString : ()Ljava/lang/String;
    //   24: invokevirtual println : (Ljava/lang/String;)V
    //   27: aload_1
    //   28: ifnull -> 41
    //   31: aload_1
    //   32: invokeinterface c : ()I
    //   37: iconst_m1
    //   38: if_icmpne -> 43
    //   41: aconst_null
    //   42: areturn
    //   43: aload_0
    //   44: aload_1
    //   45: invokeinterface c : ()I
    //   50: aload_1
    //   51: invokeinterface a : ()[B
    //   56: astore #4
    //   58: istore_3
    //   59: astore_2
    //   60: aload_2
    //   61: ldc 'Hotpants'
    //   63: iconst_1
    //   64: invokestatic openRecordStore : (Ljava/lang/String;Z)Ljavax/microedition/rms/RecordStore;
    //   67: putfield a : Ljavax/microedition/rms/RecordStore;
    //   70: aload_2
    //   71: getfield a : Ljavax/microedition/rms/RecordStore;
    //   74: iconst_0
    //   75: iconst_1
    //   76: invokevirtual setMode : (IZ)V
    //   79: aload_2
    //   80: getfield a : Ljavax/microedition/rms/RecordStore;
    //   83: iload_3
    //   84: aload #4
    //   86: iconst_0
    //   87: aload #4
    //   89: arraylength
    //   90: invokevirtual setRecord : (I[BII)V
    //   93: aload_2
    //   94: getfield a : Ljavax/microedition/rms/RecordStore;
    //   97: invokevirtual closeRecordStore : ()V
    //   100: goto -> 129
    //   103: astore_2
    //   104: getstatic java/lang/System.err : Ljava/io/PrintStream;
    //   107: new java/lang/StringBuffer
    //   110: dup
    //   111: ldc 'Could not update entry: '
    //   113: invokespecial <init> : (Ljava/lang/String;)V
    //   116: aload_2
    //   117: invokevirtual getMessage : ()Ljava/lang/String;
    //   120: invokevirtual append : (Ljava/lang/String;)Ljava/lang/StringBuffer;
    //   123: invokevirtual toString : ()Ljava/lang/String;
    //   126: invokevirtual println : (Ljava/lang/String;)V
    //   129: aload_0
    //   130: getfield a : Ljava/util/Hashtable;
    //   133: new java/lang/Integer
    //   136: dup
    //   137: aload_1
    //   138: invokeinterface c : ()I
    //   143: invokespecial <init> : (I)V
    //   146: aload_1
    //   147: invokevirtual put : (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    //   150: pop
    //   151: aload_1
    //   152: areturn
    // Exception table:
    //   from	to	target	type
    //   60	100	103	javax/microedition/rms/RecordStoreException
  }
  
  public final void a(byte paramByte) {
    try {
      this.a = paramByte;
      byte[] arrayOfByte = new byte[9];
      this.a = RecordStore.openRecordStore("Hotpants", true);
      this.a.setMode(0, true);
      boolean bool;
      if (bool = (this.a == -1) ? true : false)
        this.a = this.a.getNextRecordID(); 
      arrayOfByte[0] = 0;
      arrayOfByte[1] = Byte.MAX_VALUE;
      arrayOfByte[2] = 0;
      arrayOfByte[3] = Byte.MAX_VALUE;
      arrayOfByte[4] = 3;
      arrayOfByte[5] = Byte.MAX_VALUE;
      arrayOfByte[6] = paramByte;
      arrayOfByte[7] = Byte.MAX_VALUE;
      arrayOfByte[8] = (byte)this.a;
      if (bool) {
        this.a = this.a.addRecord(arrayOfByte, 0, arrayOfByte.length);
      } else {
        this.a.setRecord(this.a, arrayOfByte, 0, arrayOfByte.length);
      } 
      this.a.closeRecordStore();
      return;
    } catch (RecordStoreException recordStoreException) {
      System.err.println("Could not update offset seconds. " + recordStoreException.getMessage());
      return;
    } 
  }
  
  public final byte a() {
    return this.a;
  }
  
  public final void a(int paramInt) {
    // Byte code:
    //   0: getstatic java/lang/System.out : Ljava/io/PrintStream;
    //   3: new java/lang/StringBuffer
    //   6: dup
    //   7: ldc 'Deleting entry '
    //   9: invokespecial <init> : (Ljava/lang/String;)V
    //   12: iload_1
    //   13: invokevirtual append : (I)Ljava/lang/StringBuffer;
    //   16: invokevirtual toString : ()Ljava/lang/String;
    //   19: invokevirtual println : (Ljava/lang/String;)V
    //   22: aload_0
    //   23: getfield a : Ljava/util/Hashtable;
    //   26: new java/lang/Integer
    //   29: dup
    //   30: iload_1
    //   31: invokespecial <init> : (I)V
    //   34: invokevirtual remove : (Ljava/lang/Object;)Ljava/lang/Object;
    //   37: pop
    //   38: aload_0
    //   39: ldc 'Hotpants'
    //   41: iconst_1
    //   42: invokestatic openRecordStore : (Ljava/lang/String;Z)Ljavax/microedition/rms/RecordStore;
    //   45: putfield a : Ljavax/microedition/rms/RecordStore;
    //   48: aload_0
    //   49: getfield a : Ljavax/microedition/rms/RecordStore;
    //   52: iconst_0
    //   53: iconst_1
    //   54: invokevirtual setMode : (IZ)V
    //   57: aload_0
    //   58: getfield a : Ljavax/microedition/rms/RecordStore;
    //   61: iload_1
    //   62: invokevirtual deleteRecord : (I)V
    //   65: aload_0
    //   66: getfield a : Ljavax/microedition/rms/RecordStore;
    //   69: invokevirtual closeRecordStore : ()V
    //   72: return
    //   73: astore_1
    //   74: getstatic java/lang/System.err : Ljava/io/PrintStream;
    //   77: new java/lang/StringBuffer
    //   80: dup
    //   81: ldc 'Could not delete entry: '
    //   83: invokespecial <init> : (Ljava/lang/String;)V
    //   86: aload_1
    //   87: invokevirtual getMessage : ()Ljava/lang/String;
    //   90: invokevirtual append : (Ljava/lang/String;)Ljava/lang/StringBuffer;
    //   93: invokevirtual toString : ()Ljava/lang/String;
    //   96: invokevirtual println : (Ljava/lang/String;)V
    //   99: return
    // Exception table:
    //   from	to	target	type
    //   38	72	73	javax/microedition/rms/RecordStoreException
  }
  
  public final Hashtable a() {
    return this.a;
  }
}

Added: hotpants/b.java

package hotpants;

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;

public final class b implements CommandListener {
  private Alert a;
  
  private e a;
  
  public b(Midlet paramMidlet, e parame, String paramString1, String paramString2) {
    this.a = (e)new Alert(paramString1);
    this.a.setString(paramString2);
    this.a.addCommand(parame.b());
    this.a.addCommand(parame.a());
    this.a.setCommandListener(this);
    this.a = parame;
  }
  
  public final Displayable a() {
    return (Displayable)this.a;
  }
  
  public final void commandAction(Command paramCommand, Displayable paramDisplayable) {
    paramCommand.getCommandType();
    this.a.commandAction(paramCommand, this.a.a());
  }
}

Added: hotpants/c.java

package hotpants;

import javax.microedition.lcdui.Command;

public final class c extends Command {
  private h a;
  
  public c(String paramString, int paramInt1, int paramInt2, h paramh) {
    super(paramString, paramInt1, paramInt2);
    this.a = paramh;
  }
  
  public final h a() {
    return this.a;
  }
  
  public final int a() {
    return (this.a != null) ? this.a.a() : -1;
  }
}

Added: hotpants/d.java

package hotpants;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.TextField;

public final class d extends Form implements CommandListener {
  private TextField a;
  
  private TextField b;
  
  private TextField c;
  
  private TextField d;
  
  private TextField e;
  
  private Command a;
  
  private Command b;
  
  private Midlet a;
  
  private l a;
  
  private f a;
  
  private int a;
  
  public d(String paramString, Midlet paramMidlet) {
    super(paramString);
    this.a = paramMidlet;
    this.a = new Command("Cancel", 3, 1);
    addCommand(this.a);
    this.b = new Command("Save", 8, 2);
    addCommand(this.b);
    setCommandListener(this);
  }
  
  public final void a(h paramh) {
    if (paramh == null)
      return; 
    this.a = paramh.a();
    paramh.c();
    deleteAll();
    String str2 = paramh.a();
    String str1 = paramh.b();
    d d1;
    (d1 = this).deleteAll();
    d1.a = new TextField("Name", str1, 80, 0);
    d1.append(d1.a);
    d1.b = (Command)new TextField("Secret", str2, 126, 0);
    d1.append((Item)d1.b);
    if (1 == paramh.a()) {
      this.a = null;
      this.a = (l)paramh;
      l l1 = (l)paramh;
      (d1 = this).c = new TextField("Token period in seconds", Integer.toString(l1.b()), 3, 2);
      d1.append((Item)d1.c);
      d1.d = new TextField("Number of digits", Integer.toString(l1.d()), 2, 2);
      d1.append((Item)d1.d);
      return;
    } 
    if (2 == paramh.a()) {
      this.a = null;
      this.a = (f)paramh;
      f f1 = (f)paramh;
      (d1 = this).e = new TextField("Counter", Integer.toString(f1.b()), 6, 2);
      d1.append((Item)d1.e);
    } 
  }
  
  private void a() {
    deleteAll();
    this.a = null;
    this.b = null;
    this.c = null;
    this.d = null;
    this.e = null;
    this.a = null;
    this.a = null;
    this.a = -1;
  }
  
  public final void commandAction(Command paramCommand, Displayable paramDisplayable) {
    // Byte code:
    //   0: aload_1
    //   1: aload_0
    //   2: getfield a : Ljavax/microedition/lcdui/Command;
    //   5: if_acmpeq -> 143
    //   8: aload_1
    //   9: aload_0
    //   10: getfield b : Ljavax/microedition/lcdui/Command;
    //   13: if_acmpne -> 154
    //   16: aload_0
    //   17: invokespecial a : ()Z
    //   20: ifeq -> 143
    //   23: invokestatic a : ()Lhotpants/a;
    //   26: pop
    //   27: aload_0
    //   28: getfield a : Lhotpants/l;
    //   31: ifnull -> 45
    //   34: aload_0
    //   35: getfield a : Lhotpants/l;
    //   38: invokevirtual c : ()I
    //   41: iconst_m1
    //   42: if_icmpne -> 132
    //   45: aload_0
    //   46: getfield a : Lhotpants/f;
    //   49: ifnull -> 63
    //   52: aload_0
    //   53: getfield a : Lhotpants/f;
    //   56: invokevirtual c : ()I
    //   59: iconst_m1
    //   60: if_icmpne -> 132
    //   63: aload_0
    //   64: getfield a : Lhotpants/Midlet;
    //   67: aload_0
    //   68: astore_1
    //   69: iconst_1
    //   70: aload_1
    //   71: getfield a : I
    //   74: if_icmpne -> 97
    //   77: aload_1
    //   78: new hotpants/l
    //   81: dup
    //   82: ldc ''
    //   84: invokespecial <init> : (Ljava/lang/String;)V
    //   87: putfield a : Lhotpants/l;
    //   90: aload_1
    //   91: invokespecial a : ()Lhotpants/h;
    //   94: goto -> 126
    //   97: iconst_2
    //   98: aload_1
    //   99: getfield a : I
    //   102: if_icmpne -> 125
    //   105: aload_1
    //   106: new hotpants/f
    //   109: dup
    //   110: ldc ''
    //   112: invokespecial <init> : (Ljava/lang/String;)V
    //   115: putfield a : Lhotpants/f;
    //   118: aload_1
    //   119: invokespecial a : ()Lhotpants/h;
    //   122: goto -> 126
    //   125: aconst_null
    //   126: invokevirtual addEntry : (Lhotpants/h;)V
    //   129: goto -> 143
    //   132: aload_0
    //   133: getfield a : Lhotpants/Midlet;
    //   136: aload_0
    //   137: invokespecial a : ()Lhotpants/h;
    //   140: invokevirtual updateEntry : (Lhotpants/h;)V
    //   143: aload_0
    //   144: invokespecial a : ()V
    //   147: aload_0
    //   148: getfield a : Lhotpants/Midlet;
    //   151: invokevirtual showMainForm : ()V
    //   154: return
  }
  
  private boolean a() {
    // Byte code:
    //   0: aload_0
    //   1: getfield a : Ljavax/microedition/lcdui/TextField;
    //   4: invokevirtual getString : ()Ljava/lang/String;
    //   7: invokevirtual length : ()I
    //   10: ifne -> 25
    //   13: aload_0
    //   14: getfield a : Lhotpants/Midlet;
    //   17: ldc 'Name must not be empty'
    //   19: aload_0
    //   20: invokevirtual alertError : (Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
    //   23: iconst_0
    //   24: ireturn
    //   25: aload_0
    //   26: getfield b : Ljavax/microedition/lcdui/TextField;
    //   29: invokevirtual getString : ()Ljava/lang/String;
    //   32: invokevirtual length : ()I
    //   35: iconst_5
    //   36: if_icmpge -> 51
    //   39: aload_0
    //   40: getfield a : Lhotpants/Midlet;
    //   43: ldc 'Secret must be 5 characters or more'
    //   45: aload_0
    //   46: invokevirtual alertError : (Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
    //   49: iconst_0
    //   50: ireturn
    //   51: aload_0
    //   52: getfield a : I
    //   55: iconst_1
    //   56: if_icmpne -> 145
    //   59: aload_0
    //   60: getfield c : Ljavax/microedition/lcdui/TextField;
    //   63: invokevirtual getString : ()Ljava/lang/String;
    //   66: invokestatic parseInt : (Ljava/lang/String;)I
    //   69: dup
    //   70: istore_1
    //   71: ifgt -> 86
    //   74: aload_0
    //   75: getfield a : Lhotpants/Midlet;
    //   78: ldc 'Interval must be at least 1 second'
    //   80: aload_0
    //   81: invokevirtual alertError : (Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
    //   84: iconst_0
    //   85: ireturn
    //   86: goto -> 102
    //   89: pop
    //   90: aload_0
    //   91: getfield a : Lhotpants/Midlet;
    //   94: ldc 'Interval must be an integer'
    //   96: aload_0
    //   97: invokevirtual alertError : (Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
    //   100: iconst_0
    //   101: ireturn
    //   102: aload_0
    //   103: getfield d : Ljavax/microedition/lcdui/TextField;
    //   106: invokevirtual getString : ()Ljava/lang/String;
    //   109: invokestatic parseInt : (Ljava/lang/String;)I
    //   112: dup
    //   113: istore_1
    //   114: ifgt -> 129
    //   117: aload_0
    //   118: getfield a : Lhotpants/Midlet;
    //   121: ldc 'Number of digits must be at least 6'
    //   123: aload_0
    //   124: invokevirtual alertError : (Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
    //   127: iconst_0
    //   128: ireturn
    //   129: goto -> 196
    //   132: pop
    //   133: aload_0
    //   134: getfield a : Lhotpants/Midlet;
    //   137: ldc 'Number of digits must be an integer'
    //   139: aload_0
    //   140: invokevirtual alertError : (Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
    //   143: iconst_0
    //   144: ireturn
    //   145: aload_0
    //   146: getfield a : I
    //   149: iconst_2
    //   150: if_icmpne -> 196
    //   153: aload_0
    //   154: getfield e : Ljavax/microedition/lcdui/TextField;
    //   157: invokevirtual getString : ()Ljava/lang/String;
    //   160: invokestatic parseInt : (Ljava/lang/String;)I
    //   163: dup
    //   164: istore_1
    //   165: ifge -> 180
    //   168: aload_0
    //   169: getfield a : Lhotpants/Midlet;
    //   172: ldc 'Counter must be positive'
    //   174: aload_0
    //   175: invokevirtual alertError : (Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
    //   178: iconst_0
    //   179: ireturn
    //   180: goto -> 196
    //   183: pop
    //   184: aload_0
    //   185: getfield a : Lhotpants/Midlet;
    //   188: ldc 'Counter must be an integer'
    //   190: aload_0
    //   191: invokevirtual alertError : (Ljava/lang/String;Ljavax/microedition/lcdui/Displayable;)V
    //   194: iconst_0
    //   195: ireturn
    //   196: iconst_1
    //   197: ireturn
    // Exception table:
    //   from	to	target	type
    //   59	85	89	java/lang/NumberFormatException
    //   102	128	132	java/lang/NumberFormatException
    //   153	179	183	java/lang/NumberFormatException
  }
  
  private h a() {
    // Byte code:
    //   0: aload_0
    //   1: getfield a : Ljavax/microedition/lcdui/TextField;
    //   4: invokevirtual getString : ()Ljava/lang/String;
    //   7: astore_1
    //   8: aload_0
    //   9: getfield b : Ljavax/microedition/lcdui/TextField;
    //   12: invokevirtual getString : ()Ljava/lang/String;
    //   15: astore_2
    //   16: iconst_1
    //   17: aload_0
    //   18: getfield a : I
    //   21: if_icmpne -> 88
    //   24: aload_0
    //   25: getfield a : Lhotpants/l;
    //   28: ifnull -> 88
    //   31: aload_0
    //   32: getfield a : Lhotpants/l;
    //   35: aload_0
    //   36: getfield d : Ljavax/microedition/lcdui/TextField;
    //   39: invokevirtual getString : ()Ljava/lang/String;
    //   42: invokestatic parseInt : (Ljava/lang/String;)I
    //   45: i2b
    //   46: invokevirtual c : (B)V
    //   49: aload_0
    //   50: getfield a : Lhotpants/l;
    //   53: aload_0
    //   54: getfield c : Ljavax/microedition/lcdui/TextField;
    //   57: invokevirtual getString : ()Ljava/lang/String;
    //   60: invokestatic parseInt : (Ljava/lang/String;)I
    //   63: i2b
    //   64: invokevirtual b : (B)V
    //   67: aload_0
    //   68: getfield a : Lhotpants/l;
    //   71: aload_1
    //   72: invokevirtual b : (Ljava/lang/String;)V
    //   75: aload_0
    //   76: getfield a : Lhotpants/l;
    //   79: aload_2
    //   80: invokevirtual a : (Ljava/lang/String;)V
    //   83: aload_0
    //   84: getfield a : Lhotpants/l;
    //   87: areturn
    //   88: iconst_2
    //   89: aload_0
    //   90: getfield a : I
    //   93: if_icmpne -> 141
    //   96: aload_0
    //   97: getfield a : Lhotpants/f;
    //   100: ifnull -> 141
    //   103: aload_0
    //   104: getfield a : Lhotpants/f;
    //   107: aload_0
    //   108: getfield e : Ljavax/microedition/lcdui/TextField;
    //   111: invokevirtual getString : ()Ljava/lang/String;
    //   114: invokestatic parseInt : (Ljava/lang/String;)I
    //   117: invokevirtual a : (I)V
    //   120: aload_0
    //   121: getfield a : Lhotpants/f;
    //   124: aload_1
    //   125: invokevirtual b : (Ljava/lang/String;)V
    //   128: aload_0
    //   129: getfield a : Lhotpants/f;
    //   132: aload_2
    //   133: invokevirtual a : (Ljava/lang/String;)V
    //   136: aload_0
    //   137: getfield a : Lhotpants/f;
    //   140: areturn
    //   141: aconst_null
    //   142: areturn
  }
}

Added: hotpants/e.java

package hotpants;

import a;
import ax;
import bc;
import bd;
import c;
import java.util.Calendar;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Gauge;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemCommandListener;
import javax.microedition.lcdui.StringItem;
import javax.microedition.midlet.MIDlet;

public final class e implements ItemCommandListener {
  h a;
  
  private Midlet a;
  
  Item a;
  
  private Command a;
  
  private Command b;
  
  public e(h paramh, Midlet paramMidlet) {
    h h1 = paramh;
    e e1 = this;
    c c = new c("Edit", 4, 2, h1);
    if (1 == h1.a()) {
      l l = (l)h1;
      e1.a = (Command)new Gauge("", false, l.b(), l.b());
      e1.a.setDefaultCommand(c);
    } else if (2 == h1.a()) {
      e1.a = (Command)new StringItem(h1.b(), "");
      e1.a.setDefaultCommand(new c("New PIN", 1, 1, h1));
      e1.a.addCommand(c);
    } 
    e1.a.addCommand(new c("Delete", 6, 3, h1));
    e1.a.setItemCommandListener(e1);
    System.out.println("New entry item for rec id " + paramh.c());
    this.a = (Command)paramh;
    this.a = (Command)paramMidlet;
    this.a.setLabel(a());
    this.a = new Command("Yes", 4, 1);
    this.b = new Command("No", 3, 2);
  }
  
  public final Item a() {
    return (Item)this.a;
  }
  
  public final void a(Calendar paramCalendar) {
    if (1 == this.a.a()) {
      Gauge gauge;
      (gauge = (Gauge)this.a).setValue(paramCalendar.get(13) % gauge.getMaxValue());
      if (gauge.getValue() <= 0)
        this.a.setLabel(a()); 
    } 
  }
  
  public final Command a() {
    return this.a;
  }
  
  public final Command b() {
    return this.b;
  }
  
  private String a() {
    int i = -1;
    if (2 == this.a.a())
      i = ((f)this.a).b(); 
    return this.a.b() + ": " + a(this.a.a(), i);
  }
  
  private static String a(String paramString, int paramInt) {
    try {
      byte[] arrayOfByte = a.a(paramString);
      bd bd;
      (bd = new bd(new bc())).a(new ax(arrayOfByte));
      c c = new c(bd);
      long l = System.currentTimeMillis() + (a.a().a() * 1000);
      if (paramInt == -1) {
        str = c.a(l);
      } else {
        str = str.b((new Long(paramInt)).longValue());
      } 
      String str;
      return str = str.substring(0, 3) + " " + str.substring(3);
    } catch (Exception exception) {
      return "General security exception: " + exception.getMessage();
    } 
  }
  
  public final void commandAction(Command paramCommand, Item paramItem) {
    if (paramCommand == this.a) {
      this.a.deleteEntry((h)this.a);
      this.a.showMainForm();
      return;
    } 
    if (paramCommand == this.b) {
      this.a.showMainForm();
      return;
    } 
    if (paramCommand.getCommandType() == 4) {
      paramCommand = paramCommand;
      if (1 == paramCommand.a()) {
        this.a.getEntryForm().a(paramCommand.a());
      } else if (2 == paramCommand.a()) {
        this.a.getEntryForm().a(paramCommand.a());
      } 
      this.a.showEntryForm();
      return;
    } 
    if (paramCommand.getCommandType() == 6) {
      Display.getDisplay((MIDlet)this.a).setCurrent((new b((Midlet)this.a, this, "Attention", "Do you want to delete this entry?")).a());
      return;
    } 
    e e1;
    if (paramCommand.getCommandType() == 1 && 2 == (e1 = this).a.a()) {
      ((f)this.a).a();
      paramItem.setLabel(a());
      a.a().b((h)this.a);
    } 
  }
}

Added: hotpants/f.java

package hotpants;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;

public final class f implements h {
  private byte a;
  
  private String a;
  
  private String b;
  
  private int a;
  
  public final int a() {
    return 2;
  }
  
  private f(byte[] paramArrayOfbyte1, byte[] paramArrayOfbyte2, int paramInt, byte paramByte) {
    this.b = new String(paramArrayOfbyte1);
    this.a = new String(paramArrayOfbyte2);
    this.a = paramInt;
    this.a = paramByte;
  }
  
  public f(String paramString) {
    this.a = 0;
    this.a = "";
    this.b = paramString;
    this.a = -1;
  }
  
  public final int b() {
    return this.a;
  }
  
  public final void a(int paramInt) {
    this.a = paramInt;
  }
  
  public final String a() {
    return this.a;
  }
  
  public final void a(String paramString) {
    this.a = paramString;
  }
  
  public final String b() {
    return this.b;
  }
  
  public final void b(String paramString) {
    this.b = paramString;
  }
  
  public final int c() {
    return this.a;
  }
  
  public final void a(byte paramByte) {
    this.a = paramByte;
  }
  
  public final void a() {
    this.a++;
  }
  
  public final byte[] a() {
    // Byte code:
    //   0: aload_0
    //   1: getfield b : Ljava/lang/String;
    //   4: invokevirtual getBytes : ()[B
    //   7: astore_1
    //   8: aload_0
    //   9: getfield a : Ljava/lang/String;
    //   12: invokevirtual getBytes : ()[B
    //   15: astore_2
    //   16: aload_1
    //   17: arraylength
    //   18: aload_2
    //   19: arraylength
    //   20: iadd
    //   21: bipush #10
    //   23: iadd
    //   24: newarray byte
    //   26: astore_3
    //   27: aload_1
    //   28: iconst_0
    //   29: aload_3
    //   30: iconst_0
    //   31: aload_1
    //   32: arraylength
    //   33: invokestatic arraycopy : (Ljava/lang/Object;ILjava/lang/Object;II)V
    //   36: iconst_0
    //   37: aload_1
    //   38: arraylength
    //   39: iadd
    //   40: istore_1
    //   41: aload_3
    //   42: iload_1
    //   43: iinc #1, 1
    //   46: bipush #127
    //   48: bastore
    //   49: aload_2
    //   50: iconst_0
    //   51: aload_3
    //   52: iload_1
    //   53: aload_2
    //   54: arraylength
    //   55: invokestatic arraycopy : (Ljava/lang/Object;ILjava/lang/Object;II)V
    //   58: iload_1
    //   59: aload_2
    //   60: arraylength
    //   61: iadd
    //   62: istore_1
    //   63: aload_3
    //   64: iload_1
    //   65: iinc #1, 1
    //   68: bipush #127
    //   70: bastore
    //   71: aload_3
    //   72: iload_1
    //   73: iinc #1, 1
    //   76: iconst_2
    //   77: bastore
    //   78: aload_3
    //   79: iload_1
    //   80: iinc #1, 1
    //   83: bipush #127
    //   85: bastore
    //   86: aload_0
    //   87: getfield a : I
    //   90: istore_2
    //   91: iconst_4
    //   92: newarray byte
    //   94: dup
    //   95: iconst_0
    //   96: iload_2
    //   97: i2b
    //   98: bastore
    //   99: dup
    //   100: iconst_1
    //   101: iload_2
    //   102: bipush #8
    //   104: iushr
    //   105: i2b
    //   106: bastore
    //   107: dup
    //   108: iconst_2
    //   109: iload_2
    //   110: bipush #16
    //   112: iushr
    //   113: i2b
    //   114: bastore
    //   115: dup
    //   116: iconst_3
    //   117: iload_2
    //   118: bipush #24
    //   120: iushr
    //   121: i2b
    //   122: bastore
    //   123: iconst_0
    //   124: aload_3
    //   125: iload_1
    //   126: iconst_4
    //   127: invokestatic arraycopy : (Ljava/lang/Object;ILjava/lang/Object;II)V
    //   130: iinc #1, 4
    //   133: aload_3
    //   134: iload_1
    //   135: iinc #1, 1
    //   138: bipush #127
    //   140: bastore
    //   141: aload_3
    //   142: iload_1
    //   143: aload_0
    //   144: getfield a : B
    //   147: bastore
    //   148: aload_3
    //   149: areturn
  }
  
  public static f a(byte[] paramArrayOfbyte) {
    ByteArrayOutputStream byteArrayOutputStream1 = new ByteArrayOutputStream();
    DataOutputStream dataOutputStream1 = new DataOutputStream(byteArrayOutputStream1);
    ByteArrayOutputStream byteArrayOutputStream2 = new ByteArrayOutputStream();
    DataOutputStream dataOutputStream2 = new DataOutputStream(byteArrayOutputStream2);
    ByteArrayOutputStream byteArrayOutputStream3 = new ByteArrayOutputStream();
    DataOutputStream dataOutputStream3 = new DataOutputStream(byteArrayOutputStream3);
    byte b1 = -1;
    byte b2 = 0;
    try {
      for (byte b = 0; b < paramArrayOfbyte.length; b++) {
        if (Byte.MAX_VALUE != paramArrayOfbyte[b]) {
          if (!b2)
            dataOutputStream1.write(paramArrayOfbyte[b]); 
          if (b2 == 1)
            dataOutputStream2.write(paramArrayOfbyte[b]); 
          if (b2 == 2 && 2 != paramArrayOfbyte[b]) {
            System.err.println("HotpEntry tries to read entry that is not Hotp.");
            return null;
          } 
          if (b2 == 3)
            dataOutputStream3.write(paramArrayOfbyte[b]); 
          if (b2 == 4)
            b1 = paramArrayOfbyte[b]; 
        } else {
          b2 = (byte)(b2 + 1);
        } 
      } 
    } catch (IOException iOException) {
      System.err.println("Could not read Configuration from record store. Out of memory?");
    } 
    ByteBuffer byteBuffer;
    byte[] arrayOfByte;
    int i = (byteBuffer = ByteBuffer.wrap(arrayOfByte = byteArrayOutputStream3.toByteArray())).getInt();
    return new f(byteArrayOutputStream1.toByteArray(), byteArrayOutputStream2.toByteArray(), i, b1);
  }
}

Added: hotpants/g.java

package hotpants;

import java.util.Calendar;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.StringItem;

public final class g extends Form implements CommandListener {
  private final StringItem a;
  
  private final Command a;
  
  private final Command b;
  
  private final Command c;
  
  private final Command d;
  
  private final Command e;
  
  private final Midlet a;
  
  private Vector a;
  
  public g(String paramString, Midlet paramMidlet) {
    super(paramString);
    this.a = (Vector)paramMidlet;
    this.a = new Vector();
    this.e = new Command("Scan code", 4, 1);
    addCommand(this.e);
    this.a = (Vector)new Command("Exit", 7, 1);
    addCommand((Command)this.a);
    this.b = new Command("Add TOTP", 1, 2);
    addCommand(this.b);
    this.c = new Command("Add HOTP", 1, 2);
    addCommand(this.c);
    this.d = new Command("Time configuration", 1, 2);
    addCommand(this.d);
    this.a = (Vector)new StringItem(null, "no entries");
    append((Item)this.a);
    setCommandListener(this);
  }
  
  public final void a() {
    this.a.removeAllElements();
    Hashtable hashtable;
    Enumeration enumeration = (hashtable = a.a().a()).keys();
    while (enumeration.hasMoreElements())
      this.a.addElement(new e((h)hashtable.get(enumeration.nextElement()), (Midlet)this.a)); 
    g g1;
    (g1 = this).deleteAll();
    g g2 = g1;
    Vector vector = new Vector(g2.a.size());
    while (g2.a.size() > 0) {
      e e = g2.a.firstElement();
      for (byte b1 = 1; b1 < g2.a.size(); b1++) {
        e e1 = g2.a.elementAt(b1);
        if (e.a.b().compareTo(e1.a.b()) > 0)
          e = e1; 
      } 
      vector.addElement(e);
      g2.a.removeElement(e);
    } 
    g2.a = vector;
    for (byte b = 0; b < g1.a.size(); b++) {
      e e = g1.a.elementAt(b);
      (g2 = g1).append((Item)e.a);
    } 
  }
  
  public final Form a() {
    return this;
  }
  
  public final void a(Calendar paramCalendar) {
    for (byte b = 0; b < this.a.size(); b++)
      ((e)this.a.elementAt(b)).a(paramCalendar); 
  }
  
  public final void commandAction(Command paramCommand, Displayable paramDisplayable) {
    if (paramCommand == this.a)
      this.a.notifyDestroyed(); 
    if (paramCommand == this.b) {
      this.a.getEntryForm().a(new l(""));
      this.a.showEntryForm();
    } 
    if (paramCommand == this.c) {
      this.a.getEntryForm().a(new f(""));
      this.a.showEntryForm();
    } 
    if (paramCommand == this.d)
      this.a.showTimeConfigForm(); 
    if (paramCommand == this.e)
      this.a.showScanForm(); 
  }
}

Added: hotpants/h.java

package hotpants;

public interface h {
  int a();
  
  String a();
  
  String b();
  
  int c();
  
  void a(byte paramByte);
  
  byte[] a();
}

Added: hotpants/i.java

package hotpants;

import at;
import dk.onlinecity.qrr.client.e;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.VideoControl;
import javax.microedition.midlet.MIDlet;

public final class i extends Form implements CommandListener {
  private final Midlet a;
  
  private final Command a = new Command("Back", 2, 1);
  
  public i(Midlet paramMidlet) {
    super("Scan QR Code");
    addCommand(this.a);
    setCommandListener(this);
    this.a = (Command)paramMidlet;
  }
  
  public final void a() {
    Display.getDisplay((MIDlet)this.a).setCurrent((Displayable)this);
    i i1 = this;
    (new Thread(new j(this, i1))).run();
  }
  
  public final void b() {
    e e = e.a();
    at at = at.a((Midlet)this.a, this);
    Player player = e.a();
    VideoControl videoControl = e.a(at);
    try {
      videoControl.setDisplayFullScreen(true);
      videoControl.setDisplayLocation(0, 0);
      player.start();
      videoControl.setVisible(true);
      System.out.println("Setting camera canvas as current displayable");
      Display.getDisplay((MIDlet)this.a).setCurrent((Displayable)at);
      return;
    } catch (MediaException mediaException) {
      (videoControl = null).printStackTrace();
      a(videoControl.getMessage());
      return;
    } 
  }
  
  private void a(String paramString) {
    deleteAll();
    append("Scan not possible. " + paramString);
  }
  
  public final void commandAction(Command paramCommand, Displayable paramDisplayable) {
    if (paramCommand == this.a)
      this.a.showMainForm(); 
  }
  
  static Midlet a(i parami) {
    return (Midlet)parami.a;
  }
  
  static void a(i parami, String paramString) {
    parami.a(paramString);
  }
}

Added: hotpants/j.java

package hotpants;

import av;
import dk.onlinecity.qrr.client.e;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.media.Player;

final class j implements Runnable {
  private final i a;
  
  private final i b;
  
  j(i parami1, i parami2) {
    this.b = parami1;
    this.a = parami2;
  }
  
  public final void run() {
    try {
      e e;
      byte[] arrayOfByte = (e = e.a()).a();
      Player player;
      (player = e.a()).stop();
      av av = new av(i.a(this.b), this.a, arrayOfByte);
      Display.getDisplay(i.a(this.b)).setCurrent((Displayable)av);
      return;
    } catch (Exception exception) {
      i.a(this.b, exception.getMessage());
      return;
    } 
  }
}

Added: hotpants/k.java

package hotpants;

import java.util.Calendar;
import java.util.Date;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Gauge;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.ItemStateListener;
import javax.microedition.lcdui.StringItem;

public final class k extends Form implements CommandListener, ItemStateListener {
  private final Midlet a;
  
  private final Command a;
  
  private final Command b;
  
  private final Gauge a;
  
  private byte a;
  
  private final Calendar a;
  
  private final StringItem a;
  
  public k(Midlet paramMidlet) {
    super("Time configuration");
    this.a = (StringItem)paramMidlet;
    this.a = new StringItem("", "Set the correct time as exact as possible and select \"Save\"");
    append((Item)this.a);
    this.a = (StringItem)new Gauge("0 seconds", true, 240, 120);
    this.a.setLayout(2048);
    append((Item)this.a);
    setItemStateListener(this);
    this.a = (StringItem)Calendar.getInstance();
    this.a = a.a().a();
    a();
    this.a = (StringItem)new Command("Cancel", 3, 1);
    addCommand((Command)this.a);
    this.b = new Command("Save", 8, 2);
    addCommand(this.b);
    setCommandListener(this);
  }
  
  public final void a() {
    this.a.setTime(new Date(System.currentTimeMillis() + (this.a * 1000)));
    int i = this.a.get(12);
    int j = this.a.get(13);
    this.a.setLabel(this.a + " seconds");
    this.a.setLabel(((i < 10) ? "0" : "") + i + ":" + ((j < 10) ? "0" : "") + j + ((this.a > null) ? "(+" : "(") + this.a + " seconds)");
  }
  
  public final void commandAction(Command paramCommand, Displayable paramDisplayable) {
    if (paramCommand == this.b)
      a.a().a(this.a); 
    this.a.showMainForm();
  }
  
  public final void itemStateChanged(Item paramItem) {
    if (paramItem == this.a) {
      this.a = (byte)(this.a.getValue() - 120);
      a();
    } 
  }
}

Added: hotpants/l.java

package hotpants;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;

public final class l implements h {
  private byte a;
  
  private byte b;
  
  private byte c;
  
  private String a;
  
  private String b;
  
  public final int a() {
    return 1;
  }
  
  private l(byte[] paramArrayOfbyte1, byte[] paramArrayOfbyte2, byte paramByte1, byte paramByte2, byte paramByte3) {
    this.b = new String(paramArrayOfbyte1);
    this.a = new String(paramArrayOfbyte2);
    this.a = paramByte1;
    this.b = paramByte2;
    this.c = paramByte3;
  }
  
  public l(String paramString) {
    this.a = '\036';
    this.b = '\006';
    this.a = "";
    this.b = paramString;
    this.c = -1;
  }
  
  public final int b() {
    return this.a;
  }
  
  public final void b(byte paramByte) {
    this.a = paramByte;
  }
  
  public final int d() {
    return this.b;
  }
  
  public final void c(byte paramByte) {
    this.b = paramByte;
  }
  
  public final String a() {
    return this.a;
  }
  
  public final void a(String paramString) {
    this.a = paramString;
  }
  
  public final String b() {
    return this.b;
  }
  
  public final void b(String paramString) {
    this.b = paramString;
  }
  
  public final int c() {
    return this.c;
  }
  
  public final void a(byte paramByte) {
    this.c = paramByte;
  }
  
  public final byte[] a() {
    byte[] arrayOfByte1 = this.b.getBytes();
    byte[] arrayOfByte2 = this.a.getBytes();
    byte[] arrayOfByte3 = new byte[arrayOfByte1.length + arrayOfByte2.length + 9];
    System.arraycopy(arrayOfByte1, 0, arrayOfByte3, 0, arrayOfByte1.length);
    arrayOfByte3[arrayOfByte1.length] = Byte.MAX_VALUE;
    System.arraycopy(arrayOfByte2, 0, arrayOfByte3, arrayOfByte1.length + 1, arrayOfByte2.length);
    arrayOfByte3[arrayOfByte1.length + arrayOfByte2.length + 1] = Byte.MAX_VALUE;
    arrayOfByte3[arrayOfByte1.length + arrayOfByte2.length + 2] = 1;
    arrayOfByte3[arrayOfByte1.length + arrayOfByte2.length + 3] = Byte.MAX_VALUE;
    arrayOfByte3[arrayOfByte1.length + arrayOfByte2.length + 4] = this.a;
    arrayOfByte3[arrayOfByte1.length + arrayOfByte2.length + 5] = Byte.MAX_VALUE;
    arrayOfByte3[arrayOfByte1.length + arrayOfByte2.length + 6] = this.b;
    arrayOfByte3[arrayOfByte1.length + arrayOfByte2.length + 7] = Byte.MAX_VALUE;
    arrayOfByte3[arrayOfByte1.length + arrayOfByte2.length + 8] = this.c;
    return arrayOfByte3;
  }
  
  public static l a(byte[] paramArrayOfbyte) {
    ByteArrayOutputStream byteArrayOutputStream1 = new ByteArrayOutputStream();
    DataOutputStream dataOutputStream1 = new DataOutputStream(byteArrayOutputStream1);
    ByteArrayOutputStream byteArrayOutputStream2 = new ByteArrayOutputStream();
    DataOutputStream dataOutputStream2 = new DataOutputStream(byteArrayOutputStream2);
    byte b1 = 30;
    byte b2 = 6;
    byte b3 = -1;
    byte b4 = 0;
    try {
      for (byte b = 0; b < paramArrayOfbyte.length; b++) {
        if (paramArrayOfbyte[b] != Byte.MAX_VALUE) {
          if (!b4)
            dataOutputStream1.write(paramArrayOfbyte[b]); 
          if (b4 == 1)
            dataOutputStream2.write(paramArrayOfbyte[b]); 
          if (b4 == 2 && 1 != paramArrayOfbyte[b]) {
            System.err.println("TotpEntry tries to read entry that is not TOTP.");
            return null;
          } 
          if (b4 == 3)
            b1 = paramArrayOfbyte[b]; 
          if (b4 == 4)
            b2 = paramArrayOfbyte[b]; 
          if (b4 == 5)
            b3 = paramArrayOfbyte[b]; 
        } else {
          b4 = (byte)(b4 + 1);
        } 
      } 
    } catch (IOException iOException) {
      System.err.println("Could not read Configuration from record store. Out of memory?");
    } 
    return new l(byteArrayOutputStream1.toByteArray(), byteArrayOutputStream2.toByteArray(), b1, b2, b3);
  }
}

Added: hotpants/m.java

package hotpants;

import java.util.Calendar;
import java.util.TimerTask;

public final class m extends TimerTask {
  private Midlet a;
  
  public m(Midlet paramMidlet) {
    this.a = paramMidlet;
  }
  
  public final void run() {
    this.a.refreshAllEntries(Calendar.getInstance());
  }
}

Added: i.java

public final class i extends Exception {
  public i(String paramString) {
    super(paramString);
  }
}

Added: icon32.png

PNG
�
���
IHDR��� ��� ������s������zTXtRaw profile type exif��xڭWir47���S����Z����� �σִg��*��H��x���������q�.q�����Zj$T��5�
>ٯљ��˸�'�C�m�^����q���#��qW��sP�/WG�Y��YH��5��9����[-Ϣ�s�8�M��n��F���@��&�H�b��~�%A������"�c�#94)�s��ޣ���@/F~��g�߽O�'9��-��:o'�����5�|q�%�׉����#�=����NR�E��(3vx����&��-�)�g�=
O��� �~��g����lRA������DL���%��m��B������OTb���R��\���[�`�6o���gR
8,���<��?y��CM�|�m��H��b(r��U$�����ρ�?��\�����BA��:�s��h8GcW��W9�&��aB��>��!�_�J��c@��)&�@ 0ӄ��b��
���[KLt��� 8XM���RbOI�>$91s���qc1��9Ē
�\J�������5RkmU�����[i��&BNp��,�zH��{��s/���e�}F�<�(��6dҌ41�,��6e����+-^yUW[��k;�y�]vA���������R��ܨaԕ8"(��b��(� ^��84)f���H�S�|#����d��͠��´���7v���
7��W���!�����9�������yn�bW��M}D�M���ϼv>�;�����Y�j��|Xur
��E෰y�B\��!!_����{H{�q�e<&K�I�N�}o��W)����e���.ݮ��ؖ��-�k'u��Y��:���A�>W��y@�1���
l�t�����"u"=��:2���u����a�3���޴�YO�}���jh�̘��������7L
�V�>�t@���k�	Q+��'p�q�c}��zC�@ۗ�	gt�a��=9�G�s3Kť�T��0j�*F�3���Q�����[z�
n���˅�;�z��������Z����m����QM7�A���6}�cr��
�4}Q[���J��%N`��։�G�o[���!��R�����Y���
�8B�j���p��K�� �4e��+������[�Hc�T����{������a��@=p�.�6��
�,(�D5�ݢ
��H 
��2�����i`�lh�u�fKV��K[��6�agϮ��U�ՃJ_����/0U�d��$�O�]��Ӷ����
ی
?OgmW�)3�x�F�g���ژ��'�*�6�f�d5���Q��a�X�:ʺ`Cp'v��:��^̃'�^c�,��G���hc?���Ո5�R���Me��&D vo��[R��
��
k������4Q�a��O�>�;�1�q]��b��X�w����f��D��a��ѱ1d
%�	��xj����q_��DHD�ꚯ��������U]��������=�-����H���
���T�U�=�a���q/���h<��^y`�3���A���P͕ջ~��6��;��3k�+
'h6�=�}��<`z���(^y�Uf�$���-XG�Q��˻m��P���[���"����ޭ)�TY��@:��ү"��]�]ۚ�mT�t����]��E���Ov��wT;i���#(�R� ���X�&ªaE���}۾����'p\�;8w�jো��G��6�@1�MH��)�]4u8�����ң�i��F�YCWm�%��N�A&�k�"}�6��l��pRiF*t��J���5YP�(����ȴ]���9s8ZfJViv������X��L��<�Sq`�&��|���]	���ЈZ��5���Zj�~א(�]l����<yX�����B��,�Ri����t;����i&���B������mՠ�=����n䔅��՝�~��e+�~��=V?� �
�.m]��2m��-���r��5k���j���bηC���ػ���Jufdoa����,M,q?�~G�����a1uzI��p�؏�w��Ssd��Y,�L���*�
��lR�~�'�U����_���98||��������M�O�v}R������U�ߕ�I��o���||H5�/A���=XɊ���$iCCPICC profile��x����J�P���T�":�EP�2���4�KU��B���Ni�b1�!I)��o���A�|��@���F���x�������{/��$L���H��p���rpe/��f�����a��<�����e��k����<�Q\�ҙ*���k_�L�ܰ��m�?�?��(�"�x;J#�f�O�I��in��g�禯���S<l�L��Pѕf���'u)���$�&��M5Sq#*��rt����:�SPcy��;Ry�<��~�}�՛��,���nͩZ���?���֞a�!���m
3N=��7~���P�'��t����bKGD���������	pHYs�����������������tIME�����4/�|������IDATHǝ�Ol�[���3�����҅
�WD����jPᮚ��(�L����*a����n��nܨոs��DbС�/�D��Y��f��bFu�����-�����<O�����}��횖V����c�?��bo:wH"�!����&��׍�w��ūf��)��]"v;:�|j��8`ֲ�P}�}耈CB*H�=��;�����ͬ�
o�%�99��{RLZGd��<�W���}�Ss�> Q?�|}4)^*Ϫ���q������G5������̉��u����=OTB5#��@:�'��Bp��������=)���v]��U���eϺv�P+x�>��X��^���Ku6������%��Wg >��=���"�Y��'��&6B���XY�;_1ª`�O`j5����(8��ev����l+�h8MbLE�<� pb$3E���8���i�{7���nDhCv��-�iZ�)O9N��Ǫ:�������,�"��ld7�l��:�}
,~T�����F(�I|y����6��xX�BK,�~rq��,�3�4�k�g����*��oc�sn��;
� ������,���}E�>6A�����T��T���ŢI1e@�'�Sb���QW�G������
_���B>����i�-�8S�D
�������t�����X3�$�blYs������D�0t-.�����IEND�B`�

Added: j.java

public final class j {
  private static j a = null;
  
  private ac[] a;
  
  private int[] a;
  
  private int[] b;
  
  private int[] c;
  
  private int[] d;
  
  private int[] e;
  
  private int[] f;
  
  public static j a() {
    if (a == null)
      a = (int[])new j(); 
    return (j)a;
  }
  
  public final void a(ac[] paramArrayOfac) {
    this.a = (int[])paramArrayOfac;
  }
  
  public final ac[] a() {
    if (this.a == null)
      throw new ad(); 
    return (ac[])this.a;
  }
  
  public final int[] a() {
    return this.a;
  }
  
  public final void a(int[] paramArrayOfint) {
    this.a = paramArrayOfint;
  }
  
  public final int[] b() {
    return this.b;
  }
  
  public final void b(int[] paramArrayOfint) {
    this.b = paramArrayOfint;
  }
  
  public final int[] c() {
    return this.c;
  }
  
  public final void c(int[] paramArrayOfint) {
    this.c = paramArrayOfint;
  }
  
  public final int[] d() {
    return this.d;
  }
  
  public final void d(int[] paramArrayOfint) {
    this.d = paramArrayOfint;
  }
  
  public final int[] e() {
    return this.e;
  }
  
  public final void e(int[] paramArrayOfint) {
    this.e = paramArrayOfint;
  }
  
  public final int[] f() {
    return this.f;
  }
  
  public final void f(int[] paramArrayOfint) {
    this.f = paramArrayOfint;
  }
}

Added: k.java

public class k extends RuntimeException {}

Added: l.java

public final class l {
  private final int a;
  
  private final int b;
  
  private final ai a;
  
  private final int[] a;
  
  private final int[] b;
  
  private final int[] c;
  
  private final int[] d;
  
  public l(int paramInt1, int paramInt2, int paramInt3, ai paramai) {
    this.a = paramInt2;
    this.b = 6;
    this.a = (int[])paramai;
    paramInt1 = paramInt2 * 6;
    this.a = new int[] { (int)paramai.a(0, 0), (int)paramai.b(0, 0) };
    this.b = new int[] { (int)paramai.a(paramInt1, 0), (int)paramai.b(paramInt1, 0) };
    this.c = new int[] { (int)paramai.a(0, paramInt1), (int)paramai.b(0, paramInt1) };
    this.d = new int[] { (int)paramai.a(paramInt1, paramInt1), (int)paramai.b(paramInt1, paramInt1) };
  }
  
  public final int a() {
    return this.a;
  }
  
  public final int b() {
    return this.b;
  }
  
  public final ai a() {
    return (ai)this.a;
  }
  
  public final int[] a() {
    return this.a;
  }
  
  public final int[] b() {
    return this.b;
  }
  
  public final int[] c() {
    return this.c;
  }
  
  public final int[] d() {
    return this.d;
  }
}

Added: m.java

public final class m {
  private final boolean[][] a;
  
  private final int a;
  
  public m(boolean[][] paramArrayOfboolean) {
    this.a = paramArrayOfboolean;
    this.a = paramArrayOfboolean.length;
  }
  
  public final boolean a(int paramInt1, int paramInt2) {
    return this.a[paramInt1][paramInt2];
  }
  
  public final int a() {
    return this.a;
  }
}

Added: n.java

public final class n {
  private final int[] a;
  
  private int a;
  
  private final int b;
  
  private ae a;
  
  private l[] a;
  
  private final ag a;
  
  private int[] b;
  
  private int[] c;
  
  private int[] d;
  
  private int[] e;
  
  public n(int[] paramArrayOfint, int paramInt1, int paramInt2, int paramInt3, int paramInt4) {
    af af = new af(paramArrayOfint, paramInt1, paramInt2, 8, 6);
    this.a = af.a();
    this.a = (ag)af.a();
    this.a = false;
    this.b = this.a.length;
    this.a = (ag)new ae(this.a);
    this.b = null;
    this.c = null;
    this.d = null;
    this.e = null;
  }
  
  public final String a() {
    this.a.a(this.a[this.a]);
    try {
      this.a = (ag)this.a.a(this.a);
      for (byte b = 0; b < this.a.length; b++) {
        this.b = this.a[b].a();
        this.c = this.a[b].b();
        this.d = this.a[b].c();
        this.e = this.a[b].d();
        try {
          String str;
          if ((str = z.a(h.a(this.a, (l)this.a[b]))) != null)
            return str; 
        } catch (q q) {}
      } 
    } catch (ad ad) {}
    if (this.b - 1 < ++this.a)
      throw new o("Could not find any QR-Code"); 
    return null;
  }
  
  public final int a() {
    return this.b;
  }
  
  public final int[] a() {
    return (this.b == null) ? new int[] { -1, -1 } : this.b;
  }
  
  public final int[] b() {
    return (this.c == null) ? new int[] { -1, -1 } : this.c;
  }
  
  public final int[] c() {
    return (this.d == null) ? new int[] { -1, -1 } : this.d;
  }
  
  public final int[] d() {
    return (this.e == null) ? new int[] { -1, -1 } : this.e;
  }
}

Added: o.java

public final class o extends Exception {
  public o() {}
  
  public o(String paramString) {
    super(paramString);
  }
}

Added: p.java

import java.util.Vector;

public final class p {
  private String a = null;
  
  private String b = null;
  
  public p(String paramString) {
    this.a = paramString;
    a();
    p p1;
    if ((p1 = this).b.indexOf("/") != -1) {
      p1.b = p1.b.substring(p1.b.indexOf("/") + 1, p1.b.length());
      p1.a = p1.a.substring(p1.a.indexOf("/") + 1, p1.a.length());
    } 
  }
  
  private void a() {
    Vector vector;
    int i = (vector = h.a(this.a, "&")).size();
    for (byte b = 0; b < i; b++) {
      String str2 = "=";
      (new String[2])[0] = str1;
      (new String[2])[1] = str1;
      (new String[2])[0] = str1.substring(0, j);
      (new String[2])[1] = str1.substring(j + 1, str1.length());
      String[] arrayOfString;
      String str1;
      int j;
      if ((arrayOfString = ((j = (str1 = (String)vector.elementAt(b)).indexOf(str2)) <= 0) ? new String[2] : new String[2])[0].toLowerCase().equals("encoding")) {
        this.b = arrayOfString[1];
      } else if (arrayOfString[0].toLowerCase().equals("width")) {
        Integer.parseInt(arrayOfString[1]);
      } else if (arrayOfString[0].toLowerCase().equals("height")) {
        Integer.parseInt(arrayOfString[1]);
      } 
    } 
  }
  
  public final String a() {
    return this.a;
  }
}

Added: q.java

public final class q extends RuntimeException {
  public q() {}
  
  public q(String paramString) {
    super(paramString);
  }
}

Added: r.java

public final class r extends k {}

Added: s.java

class s {
  private byte[] a;
  
  private int a;
  
  private int b;
  
  s(byte[] paramArrayOfbyte) {
    this.a = paramArrayOfbyte;
    this.a = 0;
    this.b = 0;
  }
  
  final int a(int paramInt) {
    int i = 0;
    if (this.a > 0) {
      int j = 8 - this.a;
      int k = (paramInt < j) ? paramInt : j;
      i = j - k;
      j = 255 >> 8 - k << i;
      i = (this.a[this.b] & j) >> i;
      paramInt -= k;
      this.a += k;
      if (this.a == 8) {
        this.a = 0;
        this.b++;
      } 
    } 
    if (paramInt > 0) {
      while (paramInt >= 8) {
        i = i << 8 | this.a[this.b] & 0xFF;
        this.b++;
        paramInt -= 8;
      } 
      if (paramInt > 0) {
        int j = 8 - paramInt;
        int k = 255 >> j << j;
        i = i << paramInt | (this.a[this.b] & k) >> j;
        this.a += paramInt;
      } 
    } 
    return i;
  }
  
  final int a() {
    return 8 * (this.a.length - this.b) - this.a;
  }
  
  static boolean a(int paramInt1, int paramInt2, int paramInt3) {
    switch (paramInt3) {
      case 0:
        return ((paramInt1 = (paramInt1 + paramInt2) % 2) == 0);
      case 1:
        return ((paramInt1 = paramInt2 % 2) == 0);
      case 2:
        return ((paramInt1 %= 3) == 0);
      case 3:
        return ((paramInt1 = (paramInt1 + paramInt2) % 3) == 0);
      case 4:
        paramInt2 = (int)Math.floor(paramInt2 / 2.0D);
        paramInt1 = (int)Math.floor(paramInt1 / 3.0D);
        return ((paramInt1 = (paramInt2 + paramInt1) % 2) == 0);
      case 5:
        return ((paramInt1 = paramInt1 * paramInt2 % 2 + paramInt1 * paramInt2 % 3) == 0);
      case 6:
        return ((paramInt1 = (paramInt1 * paramInt2 % 2 + paramInt1 * paramInt2 % 3) % 2) == 0);
      case 7:
        return ((paramInt1 = ((paramInt1 + paramInt2) % 2 + paramInt1 * paramInt2 % 3) % 2) == 0);
    } 
    return false;
  }
  
  static int a(t[] paramArrayOft) {
    int i;
    if ((i = paramArrayOft.length) == 0)
      throw new q("No candidates"); 
    for (byte b = 0; b < i; b++) {
      t t1 = paramArrayOft[b];
      int j;
      for (j = b - 1; j >= 0 && paramArrayOft[j].b() > t1.b(); j--)
        paramArrayOft[j + 1] = paramArrayOft[j]; 
      paramArrayOft[j + 1] = t1;
    } 
    return paramArrayOft[0].a();
  }
  
  static int a(s params, int paramInt1, int paramInt2) {
    switch (paramInt1) {
      case 0:
        return 0;
      case 1:
        return (paramInt2 < 10) ? params.a(10) : ((paramInt2 < 27) ? params.a(12) : ((paramInt2 < 41) ? params.a(14) : -1));
      case 2:
        return (paramInt2 < 10) ? params.a(9) : ((paramInt2 < 27) ? params.a(11) : ((paramInt2 < 41) ? params.a(13) : -1));
      case 3:
        return -1;
      case 4:
        return (paramInt2 < 10) ? params.a(8) : ((paramInt2 < 41) ? params.a(16) : -1);
      case 5:
        return -1;
      case 7:
        return -1;
      case 8:
        return -1;
      case 9:
        return -1;
    } 
    return -1;
  }
}

Added: t.java

final class t {
  private final int a;
  
  private final int b;
  
  public t(int paramInt1, int paramInt2) {
    this.a = paramInt1;
    this.b = paramInt2;
  }
  
  final int a() {
    return this.a;
  }
  
  final int b() {
    return this.b;
  }
}

Added: u.java

final class u {
  private int[] a;
  
  private int a;
  
  private int b;
  
  u(int paramInt1, int paramInt2) {
    this.a = new int[paramInt1 + paramInt2];
    this.a = paramInt2;
    this.b = paramInt1;
  }
  
  final void a(int paramInt1, byte paramByte, int paramInt2) {
    // Byte code:
    //   0: iload_3
    //   1: ifne -> 15
    //   4: aload_0
    //   5: getfield a : [I
    //   8: iload_1
    //   9: iload_2
    //   10: sipush #255
    //   13: iand
    //   14: iastore
    //   15: iload_3
    //   16: iconst_1
    //   17: if_icmpne -> 36
    //   20: aload_0
    //   21: getfield a : [I
    //   24: iload_1
    //   25: aload_0
    //   26: getfield b : I
    //   29: iadd
    //   30: iload_2
    //   31: sipush #255
    //   34: iand
    //   35: iastore
    //   36: return
  }
  
  final byte a(int paramInt) {
    return (byte)this.a[paramInt];
  }
  
  final int[] a() {
    return this.a;
  }
  
  final int a() {
    return this.a;
  }
  
  final int b() {
    return this.b;
  }
}

Added: v.java

final class v {
  private final h a = new h((f)f.a);
  
  final byte[] a(byte[] paramArrayOfbyte, int paramInt1, int paramInt2) {
    byte b;
    boolean bool;
    int[] arrayOfInt;
    int j = (arrayOfInt = w.a(paramInt1, paramInt2))[0];
    int k = arrayOfInt[1];
    int m = arrayOfInt[2];
    int n = w.a(paramInt1, paramInt2);
    if (arrayOfInt.length == 6) {
      b = arrayOfInt[3];
      bool = arrayOfInt[4];
      i = arrayOfInt[5];
    } else {
      b = 0;
      bool = false;
      i = 0;
    } 
    if (n != 0) {
      System.out.println("VERSION  :" + paramInt1);
      System.out.println("ERR LEVEL:" + w.a(paramInt2));
      System.out.println("P        :" + n);
      System.out.println("SHORT BLK:" + j);
      System.out.println("LONG BLK :" + b);
    } 
    u[] arrayOfU = a(paramArrayOfbyte, j, k, m, b, bool, i, n);
    paramArrayOfbyte = new byte[j * m + b * i];
    paramInt2 = arrayOfU.length;
    int i = 0;
    for (k = 0; k < paramInt2; k++) {
      try {
        this.a.a(arrayOfU[k].a(), arrayOfU[k].a());
        j = arrayOfU[k].b();
        for (m = 0; m < j; m++)
          paramArrayOfbyte[i + m] = arrayOfU[k].a(m); 
        i += j;
      } catch (i i1) {
        throw new q("Error correction failed");
      } 
    } 
    return paramArrayOfbyte;
  }
  
  private static u[] a(byte[] paramArrayOfbyte, int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6, int paramInt7) {
    int i = paramArrayOfbyte.length;
    int j = paramInt2 - paramInt3;
    int k = paramInt5 - paramInt6;
    if (paramInt7 != 0) {
      System.out.println("short block error words:" + j);
      System.out.println("long block error words :" + k);
    } 
    if (i != paramInt1 * paramInt2 + paramInt4 * paramInt5)
      throw new RuntimeException(); 
    paramInt2 = paramInt1 * paramInt3 + paramInt4 * paramInt6;
    u[] arrayOfU = new u[paramInt5 = paramInt1 + paramInt4];
    for (i = 0; i < paramInt5; i++) {
      if (i < paramInt1) {
        arrayOfU[i] = new u(paramInt3, j);
      } else {
        arrayOfU[i] = new u(paramInt6, k);
      } 
    } 
    a(paramArrayOfbyte, arrayOfU, paramInt1, paramInt3, paramInt4, paramInt6, 0);
    a(paramArrayOfbyte, arrayOfU, paramInt1, j, paramInt4, k, paramInt2);
    return arrayOfU;
  }
  
  private static final void a(byte[] paramArrayOfbyte, u[] paramArrayOfu, int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5) {
    int i = paramInt1 * paramInt2 + paramInt3 * paramInt4;
    byte b1 = 0;
    byte b2 = 0;
    byte b3 = 0;
    boolean bool = (paramInt5 == 0) ? false : true;
    while (b1 < i) {
      if (b2 < paramInt2) {
        for (byte b = 0; b < paramInt1; b++) {
          paramArrayOfu[b].a(b2, paramArrayOfbyte[b1 + paramInt5], bool);
          b1++;
        } 
        b2++;
      } 
      if (b3 < paramInt4) {
        for (int j = paramInt1; j < paramInt3 + paramInt1; j++) {
          paramArrayOfu[j].a(b3, paramArrayOfbyte[b1 + paramInt5], bool);
          b1++;
        } 
        b3++;
      } 
    } 
  }
}

Added: w.java

public final class w {
  private static final int[][][] a = new int[][][] { 
      { { 1, 26, 19 }, { 1, 26, 16 }, { 1, 26, 13 }, { 1, 26, 9 } }, { { 1, 44, 34 }, { 1, 44, 28 }, { 1, 44, 22 }, { 1, 44, 16 } }, { { 1, 70, 55 }, { 1, 70, 44 }, { 2, 35, 17 }, { 2, 35, 13 } }, { { 1, 100, 80 }, { 2, 50, 32 }, { 2, 50, 24 }, { 4, 25, 9 } }, { { 1, 134, 108 }, { 2, 67, 43 }, { 2, 33, 15, 2, 34, 16 }, { 2, 33, 11, 2, 34, 12 } }, { { 2, 86, 68 }, { 4, 43, 27 }, { 4, 43, 19 }, { 4, 43, 15 } }, { { 2, 98, 78 }, { 4, 49, 31 }, { 2, 32, 14, 4, 33, 15 }, { 4, 39, 13, 1, 40, 14 } }, { { 2, 121, 97 }, { 2, 60, 38, 2, 61, 39 }, { 4, 40, 18, 2, 41, 19 }, { 4, 40, 14, 2, 41, 15 } }, { { 2, 146, 116 }, { 3, 58, 36, 2, 59, 37 }, { 4, 36, 16, 4, 37, 17 }, { 4, 36, 12, 4, 37, 13 } }, { { 2, 86, 68, 2, 87, 69 }, { 4, 69, 43, 1, 70, 44 }, { 6, 43, 19, 2, 44, 20 }, { 6, 43, 15, 2, 44, 16 } }, 
      { { 4, 101, 81 }, { 1, 80, 50, 4, 81, 51 }, { 4, 50, 22, 4, 51, 23 }, { 3, 36, 12, 8, 37, 13 } }, { { 2, 116, 92, 2, 117, 93 }, { 6, 56, 36, 2, 59, 37 }, { 4, 46, 20, 6, 47, 21 }, { 7, 42, 14, 4, 43, 14 } }, { { 4, 133, 107 }, { 8, 59, 37, 1, 60, 38 }, { 8, 44, 20, 4, 45, 21 }, { 12, 33, 11, 4, 34, 12, 11 } } };
  
  static final int[] a(int paramInt1, int paramInt2) {
    if (paramInt1 > 10)
      throw new q("Version " + paramInt1 + " is not supported"); 
    switch (paramInt1 = paramInt2) {
      case 1:
      
      case 0:
      
      case 2:
      
      case 3:
      
    } 
    throw new q("Unknown error correction level");
  }
  
  static final int a(int paramInt1, int paramInt2) {
    switch (paramInt1) {
      case 1:
        switch (paramInt2) {
          case 1:
            return 3;
          case 0:
            return 2;
        } 
        return 1;
      case 2:
        return (paramInt2 == 1) ? 2 : 0;
      case 3:
        return (paramInt2 == 1) ? 1 : 0;
    } 
    return 0;
  }
  
  static final String a(int paramInt) {
    switch (paramInt) {
      case 1:
        return "L";
      case 0:
        return "M";
      case 2:
        return "H";
      case 3:
        return "Q";
    } 
    return "ERROR IN ERROR CORRECTION LEVEL";
  }
}

Added: x.java

final class x {
  private static final int[][] a = new int[][] { 
      { -2, -2 }, { -1, -1 }, { 6, 18 }, { 6, 22 }, { 6, 26 }, { 6, 30 }, { 6, 34 }, { 6, 22, 38 }, { 6, 24, 42 }, { 6, 26, 46 }, 
      { 6, 28, 50 }, { 6, 30, 54 }, { 6, 32, 58 }, { 6, 34, 62 }, { 6, 26, 46, 66 }, { 6, 26, 48, 70 }, { 6, 26, 50, 74 }, { 6, 30, 54, 78 }, { 6, 30, 56, 82 }, { 6, 30, 58, 86 }, 
      { 6, 34, 62, 90 }, { 6, 28, 50, 72, 94 }, { 6, 26, 50, 74, 98 }, { 6, 30, 54, 78, 102 }, { 6, 28, 54, 80, 106 }, { 6, 32, 58, 84, 110 }, { 6, 30, 58, 86, 114 }, { 6, 34, 62, 90, 118 }, { 6, 26, 50, 74, 98, 122 }, { 6, 30, 54, 78, 102, 126 }, 
      { 6, 26, 52, 78, 104, 130 }, { 6, 30, 56, 82, 108, 134 }, { 6, 34, 60, 86, 112, 138 }, { 6, 30, 58, 86, 114, 142 }, { 6, 34, 62, 90, 118, 146 }, { 6, 30, 54, 78, 102, 126, 150 }, { 6, 24, 50, 76, 102, 128, 154 }, { 6, 28, 54, 80, 106, 132, 158 }, { 6, 32, 58, 84, 110, 136, 162 }, { 6, 26, 54, 82, 110, 138, 166 }, 
      { 6, 30, 58, 86, 114, 142, 170 } };
  
  private final int a;
  
  private final int b;
  
  private boolean[][] a;
  
  x(int paramInt1, int paramInt2) {
    this.a = paramInt2;
    this.b = paramInt1;
    this.a = new boolean[paramInt2][paramInt2];
    a();
    c();
    b();
    d();
  }
  
  final boolean a(int paramInt1, int paramInt2) {
    return this.a[paramInt1][paramInt2];
  }
  
  private final void a() {
    int i;
    for (i = 0; i < 9; i++) {
      for (byte b = 0; b < 9; b++)
        this.a[b][i] = true; 
    } 
    for (i = 0; i < 9; i++) {
      for (int j = this.a - 8; j < this.a; j++)
        this.a[j][i] = true; 
    } 
    for (i = this.a - 8; i < this.a; i++) {
      for (byte b = 0; b < 9; b++)
        this.a[b][i] = true; 
    } 
  }
  
  private final void b() {
    for (byte b = 0; b < this.a; b++) {
      this.a[6][b] = true;
      this.a[b][6] = true;
    } 
  }
  
  private final void c() {
    if (this.b < 2 || this.b > 40)
      return; 
    try {
      boolean[] arrayOfBoolean;
      int i = (arrayOfBoolean = a[this.b]).length;
      for (byte b = 0; b < i; b++) {
        for (byte b1 = 0; b1 < i; b1++) {
          if (!this.a[arrayOfBoolean[b]][arrayOfBoolean[b1]]) {
            boolean bool2 = arrayOfBoolean[b1];
            boolean bool1 = arrayOfBoolean[b];
            x x1 = this;
            int k = bool1 - 2;
            int m = bool2 - 2;
            int n = bool1 + 3;
            int i1 = bool2 + 3;
            for (int j = k; j < n; j++) {
              for (int i2 = m; i2 < i1; i2++)
                x1.a[j][i2] = true; 
            } 
          } 
        } 
      } 
      return;
    } catch (Exception exception2) {
      Exception exception1;
      (exception1 = null).printStackTrace();
      return;
    } 
  }
  
  private final void d() {
    if (this.b < 7)
      return; 
    int i = this.a - 11;
    int j = this.a - 8;
    byte b;
    for (b = 0; b < 6; b++) {
      for (int k = i; k < j; k++)
        this.a[k][b] = true; 
    } 
    for (b = 0; b < 6; b++) {
      for (int k = i; k < j; k++)
        this.a[b][k] = true; 
    } 
  }
}

Added: y.java

final class y {
  private static final int[] a = new int[] { 
      0, 26, 44, 70, 100, 134, 172, 196, 242, 292, 
      346, 404, 466, 532, 581, 655, 733, 815, 901, 991, 
      1085, 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051, 
      2185, 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532, 
      3706 };
  
  private static final int[] b = new int[] { 
      31892, 34236, 39577, 42195, 48118, 51042, 55367, 58893, 63784, 68472, 
      70749, 76311, 79154, 84390, 87683, 92361, 96236, 102084, 102881, 110507, 
      110734, 117786, 119615, 126325, 127568, 133589, 136944, 141498, 145311, 150283, 
      152622, 158308, 161089, 167017 };
  
  private static final int[] c = new int[] { 
      21522, 20773, 24188, 23371, 17913, 16590, 20375, 19104, 30660, 29427, 
      32170, 30877, 26159, 25368, 27713, 26998, 5769, 5054, 7399, 6608, 
      1890, 597, 3340, 2107, 13663, 12392, 16177, 14854, 9396, 8579, 
      11994, 11245 };
  
  static final byte[] a(m paramm, int paramInt) {
    m m2;
    int k = (m2 = paramm).a();
    int n = 0;
    int i1 = 0;
    int i2 = 0;
    int i3 = 0;
    byte b2;
    for (b2 = 8; b2 >= 0; b2--) {
      if (b2 != 6) {
        n <<= 1;
        if (m2.a(8, b2))
          n |= 0x1; 
      } 
      if (b2 != 0) {
        i1 <<= 1;
        if (m2.a(k - b2, 8))
          i1 |= 0x1; 
      } 
    } 
    for (b2 = 0; b2 < 8; b2++) {
      if (b2 > 0) {
        i2 <<= 1;
        if (m2.a(8, k - b2))
          i2 |= 0x1; 
      } 
      if (b2 != 6) {
        i3 <<= 1;
        if (m2.a(b2, 8))
          i3 |= 0x1; 
      } 
    } 
    i2 <<= 8;
    i3 <<= 8;
    int i;
    int j = (i = (n == i1 && i2 == i3) ? a(n + i2, c).a() : ((n == i1 && i2 != i3) ? s.a(new t[] { a(n + i2, c), a(n + i3, c) }) : ((n != i1 && i2 == i3) ? s.a(new t[] { a(n + i2, c), a(i1 + i2, c) }) : s.a(new t[] { a(n + i2, c), a(n + i3, c), a(i1 + i2, c), a(i1 + i3, c) })))) >> 3;
    i &= 0x7;
    n = paramInt;
    k = i;
    m m1 = paramm;
    x x = new x(a(m1), m1.a());
    i3 = (i2 = m1.a()) - 1;
    b2 = 1;
    byte b1 = 0;
    int i4 = 0;
    byte[] arrayOfByte2 = new byte[a[n]];
    byte b3 = 0;
    while (i3 >= 0) {
      if (i3 == 6)
        i3--; 
      if (b2 != 0) {
        for (int i5 = i2 - 1; i5 >= 0; i5--) {
          for (byte b = 0; b < 2; b++) {
            if (!x.a(i3 - b, i5)) {
              i4 <<= 1;
              if ((m1.a(i3 - b, i5) ^ s.a(i3 - b, i5, k)) != 0)
                i4 |= 0x1; 
              if (++b1 == 8) {
                arrayOfByte2[b3++] = (byte)i4;
                b1 = 0;
                i4 = 0;
              } 
            } 
          } 
        } 
      } else {
        for (byte b = 0; b < i2; b++) {
          for (byte b4 = 0; b4 < 2; b4++) {
            if (!x.a(i3 - b4, b)) {
              i4 <<= 1;
              if ((m1.a(i3 - b4, b) ^ s.a(i3 - b4, b, k)) != 0)
                i4 |= 0x1; 
              if (++b1 == 8) {
                arrayOfByte2[b3++] = (byte)i4;
                b1 = 0;
                i4 = 0;
              } 
            } 
          } 
        } 
      } 
      i3 -= 2;
      b2 = (b2 == 0) ? 1 : 0;
    } 
    byte[] arrayOfByte1 = arrayOfByte2;
    v v;
    return arrayOfByte1 = (v = new v()).a(arrayOfByte1, paramInt, j);
  }
  
  static final int a(m paramm) {
    if (paramm == null)
      throw new q("QR-Code is null"); 
    int i;
    if ((i = (paramm.a() - 21 >> 2) + 1) <= 0)
      throw new q("Version < 1"); 
    if (i < 7)
      return i; 
    int j = (i = paramm.a()) - 11;
    i -= 9;
    int k = 0;
    int n = 0;
    for (byte b = 5; b >= 0; b--) {
      for (int i1 = i; i1 > j - 1; i1--) {
        k <<= 1;
        if (paramm.a(i1, b))
          k |= 0x1; 
        n <<= 1;
        if (paramm.a(b, i1))
          n |= 0x1; 
      } 
    } 
    if (k == n) {
      i = a(k, b).a() + 7;
    } else {
      i = s.a(new t[] { a(k, b), a(n, b) }) + 7;
    } 
    if (i > 40)
      throw new q("Version > 40"); 
    return i;
  }
  
  private static final t a(int paramInt, int[] paramArrayOfint) {
    byte b = -1;
    int i = Integer.MAX_VALUE;
    int j = 0;
    int k = paramArrayOfint.length;
    for (byte b1 = 0; b1 < k; b1++) {
      int m = paramInt;
      j = paramArrayOfint[b1];
      byte b2 = 0;
      for (j ^= m; j != 0; j &= j - 1)
        b2++; 
      if ((j = b2) == 0)
        return new t(b1, j); 
      if (j < i) {
        i = j;
        b = b1;
      } 
    } 
    return new t(b, j);
  }
}

Added: z.java

public final class z {
  private static final String[] a = new String[] { 
      "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
      "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
      "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", 
      "U", "V", "W", "X", "Y", "Z", " ", "$", "%", "*", 
      "+", "-", ".", "/", ":" };
  
  public static final String a(m paramm) {
    int i = y.a(paramm);
    System.out.println("version:" + i);
    return a(new s(y.a(paramm, i)), i);
  }
  
  private static final String a(s params, int paramInt) {
    String str = "";
    boolean bool = false;
    while (params.a() > 4 && !bool) {
      switch (params.a(4)) {
        case 0:
          bool = true;
        case 1:
          str = str + d(params, s.a(params, 1, paramInt));
        case 2:
          str = str + b(params, s.a(params, 2, paramInt));
        case 3:
          throw new q("Mode is not supported");
        case 4:
          str = str + c(params, s.a(params, 4, paramInt));
        case 5:
          throw new q("Mode is not supported");
        case 8:
          throw new q("Mode is not supported");
        case 9:
          throw new q("Mode is not supported");
      } 
    } 
    return str;
  }
  
  private static final String b(s params, int paramInt) {
    int i = 6 * paramInt % 2;
    paramInt = h.a(paramInt = 11 * h.a(paramInt, 2) + i, 11);
    String str = "";
    for (byte b = 0; b < paramInt; b++) {
      int j = params.a(11);
      String str2 = a[(int)(j / 45.0F)];
      String str1 = a[j % 45];
      str = str + str2 + str1;
    } 
    if (i == 6) {
      int j = params.a(i);
      str = str + a[j];
    } 
    return str;
  }
  
  private static final String c(s params, int paramInt) {
    byte[] arrayOfByte = new byte[paramInt];
    for (byte b = 0; b < paramInt; b++) {
      int i = params.a(8);
      arrayOfByte[b] = (byte)i;
    } 
    return new String(arrayOfByte);
  }
  
  private static final String d(s params, int paramInt) {
    byte b = 0;
    switch (paramInt % 3) {
      case 1:
        b = 4;
        break;
      case 2:
        b = 7;
        break;
    } 
    paramInt = h.a(paramInt = 10 * h.a(paramInt, 3) + b, 10);
    String str = "";
    int i;
    for (i = 0; i < paramInt; i++) {
      int k = params.a(10);
      int j;
      str = str + (((j = k) < 10) ? ("00" + j) : ((j < 100) ? ("0" + j) : j));
    } 
    if (b == 4)
      str = str + params.a(b); 
    if (b == 7) {
      i = params.a(10);
      str = str + ((i < 10) ? "0" : "") + i;
    } 
    return str;
  }
}

Instructions and example for changelog

Please add an entry to CHANGELOG.md to the "Unreleased" section. Make sure the entry includes this PR's number.

Example:

## Unreleased

### Fixes

- CI Check for Replay Stubs ([#5235](https://github.com/getsentry/sentry-react-native/pull/5235))

If none of the above apply, you can opt out of this check by adding #skip-changelog to the PR description or adding a skip-changelog label.

Generated by 🚫 dangerJS against 942017f

@lucas-zimerman lucas-zimerman changed the title fix: CI Check for Replay Stubs Ref: CI Check for Replay Stubs Oct 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant