/* * Decompiled with CFR 0.152. * * Could not load the following classes: * javax.baja.nre.util.TextUtil */ package com.tridium.util; import javax.baja.nre.util.TextUtil; public abstract class EscUtil { public static final EscUtil slot = new SlotEsc(); public static final EscUtil ord = new OrdEsc(); private static final int CM_LENGTH = 128; private static final int CM_HEX = 1; private static final int CM_START = 2; private static final int CM_PART = 4; private static final int CM_ORD = 8; private static byte[] charMap = new byte[128]; /* * Unable to fully structure code */ public boolean isValid(String var1_1) { var2_2 = var1_1.length(); if (var2_2 == 0) { return false; } var3_4 = 0; while (var3_4 < var2_2) { var4_5 = var1_1.charAt(var3_4); if (var3_4 != 0 ? this.isPart(var4_5) != false : this.isStart(var4_5) != false) ** GOTO lbl18 if (var4_5 != '$') { return false; } if ((var5_6 = var1_1.charAt(++var3_4)) == 'u') ** GOTO lbl16 if ((EscUtil.charMap[var5_6] & 1) == 0 || (EscUtil.charMap[var1_1.charAt(++var3_4)] & 1) == 0) { return false; } try { block8: { break block8; lbl16: // 1 sources if ((EscUtil.charMap[var1_1.charAt(++var3_4)] & 1) == 0 || (EscUtil.charMap[var1_1.charAt(++var3_4)] & 1) == 0 || (EscUtil.charMap[var1_1.charAt(++var3_4)] & 1) == 0 || (EscUtil.charMap[var1_1.charAt(++var3_4)] & 1) == 0) { return false; } } ++var3_4; } catch (IndexOutOfBoundsException var2_3) { return false; } } return true; } public String escape(String string) { int n = string.length(); if (n == 0) { return string; } char[] cArray = null; int n2 = 0; int n3 = n * 6; char c = string.charAt(0); if (!this.isStart(c)) { cArray = new char[n3]; n2 = EscUtil.escape(c, cArray, n2); } int n4 = 1; while (n4 < n) { c = string.charAt(n4); if (this.isPart(c)) { if (cArray != null) { cArray[n2++] = c; } } else { if (cArray == null) { cArray = new char[n * 6]; string.getChars(0, n4, cArray, 0); n2 = n4; } n2 = EscUtil.escape(c, cArray, n2); } ++n4; } if (cArray == null) { return string; } return new String(cArray, 0, n2); } public String unescape(String string) { char[] cArray = null; int n = 0; int n2 = string.length(); int n3 = 0; while (n3 < n2) { char c = string.charAt(n3); if (c != '$') { if (cArray != null) { cArray[n++] = c; } } else { char c2; if (cArray == null) { cArray = new char[n2]; string.getChars(0, n3, cArray, 0); n = n3; } if ((c2 = string.charAt(++n3)) != 'u') { cArray[n++] = (char)(TextUtil.hexCharToInt((char)c2) << 4 | TextUtil.hexCharToInt((char)string.charAt(++n3))); } else { cArray[n++] = (char)(TextUtil.hexCharToInt((char)string.charAt(++n3)) << 12 | TextUtil.hexCharToInt((char)string.charAt(++n3)) << 8 | TextUtil.hexCharToInt((char)string.charAt(++n3)) << 4 | TextUtil.hexCharToInt((char)string.charAt(++n3))); } } ++n3; } if (cArray == null) { return string; } return new String(cArray, 0, n); } public abstract boolean isStart(int var1); public abstract boolean isPart(int var1); public static int escape(char c, char[] cArray, int n) { String string = Integer.toHexString(c); cArray[n++] = 36; if (c < '\u0010') { cArray[n++] = 48; cArray[n++] = string.charAt(0); } else if (c < '\u0100') { cArray[n++] = string.charAt(0); cArray[n++] = string.charAt(1); } else if (c < '\u1000') { cArray[n++] = 117; cArray[n++] = 48; cArray[n++] = string.charAt(0); cArray[n++] = string.charAt(1); cArray[n++] = string.charAt(2); } else { cArray[n++] = 117; cArray[n++] = string.charAt(0); cArray[n++] = string.charAt(1); cArray[n++] = string.charAt(2); cArray[n++] = string.charAt(3); } return n; } public static void main(String[] stringArray) { String string = stringArray[0]; System.out.println("raw: " + string); System.out.println("slot: " + slot.escape(string) + " [" + slot.isValid(string) + ']'); System.out.println("ord: " + ord.escape(string) + " [" + ord.isValid(string) + ']'); } static /* synthetic */ int access$0() { return 128; } static /* synthetic */ int access$2() { return 2; } static /* synthetic */ int access$3() { return 4; } static /* synthetic */ int access$4() { return 8; } static { int n = 97; while (n <= 122) { EscUtil.charMap[n] = 6; ++n; } n = 65; while (n <= 90) { EscUtil.charMap[n] = 6; ++n; } n = 48; while (n <= 57) { EscUtil.charMap[n] = 5; ++n; } n = 97; while (n <= 102) { int n2 = n++; charMap[n2] = (byte)(charMap[n2] | 1); } n = 65; while (n <= 70) { int n3 = n++; charMap[n3] = (byte)(charMap[n3] | 1); } EscUtil.charMap[95] = 4; n = 32; while (n < 128) { if (n != 36 && n != 124) { int n4 = n; charMap[n4] = (byte)(charMap[n4] | 8); } ++n; } } static class SlotEsc extends EscUtil { public boolean isStart(int n) { boolean bl = false; if (n < 128 && (charMap[n] & 2) != 0) { bl = true; } return bl; } public boolean isPart(int n) { boolean bl = false; if (n < 128 && (charMap[n] & 4) != 0) { bl = true; } return bl; } SlotEsc() { } } static class OrdEsc extends EscUtil { public boolean isStart(int n) { boolean bl = false; if (n < 128 && (charMap[n] & 8) != 0) { bl = true; } return bl; } public boolean isPart(int n) { boolean bl = false; if (n < 128 && (charMap[n] & 8) != 0) { bl = true; } return bl; } OrdEsc() { } } }