/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.DefaultSyntaxErrorHandler
 *  com.l7tech.gateway.common.QueuingSyntaxErrorHandler
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.gateway.common.audit.AuditDetailMessage
 *  com.l7tech.gateway.common.audit.CommonMessages
 *  com.l7tech.policy.variable.BuiltinVariables
 *  com.l7tech.policy.variable.Syntax
 *  com.l7tech.policy.variable.Syntax$SyntaxErrorHandler
 *  com.l7tech.policy.variable.VariableNameSyntaxException
 *  com.l7tech.util.ConfigFactory
 *  com.l7tech.util.Functions$Unary
 *  com.l7tech.util.Pair
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 */
package com.l7tech.server.policy.variable;

import com.l7tech.gateway.common.DefaultSyntaxErrorHandler;
import com.l7tech.gateway.common.QueuingSyntaxErrorHandler;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.audit.AuditDetailMessage;
import com.l7tech.gateway.common.audit.CommonMessages;
import com.l7tech.policy.variable.BuiltinVariables;
import com.l7tech.policy.variable.Syntax;
import com.l7tech.policy.variable.VariableNameSyntaxException;
import com.l7tech.server.policy.variable.ServerVariables;
import com.l7tech.server.policy.variable.be;
import com.l7tech.server.policy.variable.bf;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.Functions;
import com.l7tech.util.Pair;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/*
 * Exception performing whole class analysis ignored.
 */
public final class ExpandVariables {
    static Logger a;
    private static final String[] b;
    private static final List<Selector<?>> c;
    private static final String[] d;
    private static final List<bf> e;
    static final /* synthetic */ boolean f;
    private static final String[] g;

    @Nullable
    public static Object processSingleVariableAsObject(String string, Map<String, ?> map, Audit audit) {
        return ExpandVariables.processSingleVariableAsObject(string, map, audit, ExpandVariables.a());
    }

    @Nullable
    public static Object processSingleVariableAsDisplayableObject(String string, Map<String, ?> map, Audit audit) {
        return ExpandVariables.processSingleVariableAsDisplayableObject(string, map, audit, ExpandVariables.a());
    }

    static boolean a() {
        return ConfigFactory.getBooleanProperty((String)g[22], (boolean)false);
    }

    public static Object processSingleVariableAsObject(String string, Map<String, ?> map, Audit audit, boolean bl2) {
        try {
            if (string == null) {
                throw new IllegalArgumentException();
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExpandVariables.a(illegalArgumentException);
        }
        Matcher matcher = Syntax.oneVarPattern.matcher(string);
        if (matcher.matches()) {
            Object[] objectArray;
            block11: {
                String string2 = matcher.group(1);
                Syntax syntax = Syntax.parse((String)string2, (String)ExpandVariables.defaultDelimiter());
                objectArray = ExpandVariables.a(map, syntax, audit, bl2);
                try {
                    try {
                        if (objectArray != null && objectArray.length != 0) break block11;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExpandVariables.a(illegalArgumentException);
                    }
                    return null;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw ExpandVariables.a(illegalArgumentException);
                }
            }
            try {
                if (objectArray.length == 1) {
                    return objectArray[0];
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExpandVariables.a(illegalArgumentException);
            }
            return objectArray;
        }
        return ExpandVariables.process(string, map, audit, bl2);
    }

    @Nullable
    public static Object processSingleVariableAsDisplayableObject(String string, Map<String, ?> map, Audit audit, boolean bl2) {
        try {
            if (string == null) {
                throw new IllegalArgumentException();
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExpandVariables.a(illegalArgumentException);
        }
        Matcher matcher = Syntax.oneVarPattern.matcher(string);
        if (matcher.matches()) {
            DefaultSyntaxErrorHandler defaultSyntaxErrorHandler;
            Object[] objectArray;
            Syntax syntax;
            block14: {
                String string2 = matcher.group(1);
                syntax = Syntax.parse((String)string2, (String)ExpandVariables.defaultDelimiter());
                objectArray = ExpandVariables.a(map, syntax, audit, bl2);
                defaultSyntaxErrorHandler = new DefaultSyntaxErrorHandler(audit);
                try {
                    try {
                        if (objectArray != null && objectArray.length != 0) break block14;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExpandVariables.a(illegalArgumentException);
                    }
                    return null;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw ExpandVariables.a(illegalArgumentException);
                }
            }
            try {
                if (objectArray.length == 1) {
                    return syntax.format(new Object[]{objectArray[0]}, Syntax.getFormatter((Object)objectArray[0]), (Syntax.SyntaxErrorHandler)defaultSyntaxErrorHandler, bl2);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExpandVariables.a(illegalArgumentException);
            }
            Object[] objectArray2 = new Object[objectArray.length];
            Object[] objectArray3 = new Object[1];
            try {
                for (int i2 = 0; i2 < objectArray.length; ++i2) {
                    objectArray3[0] = objectArray[i2];
                    objectArray2[i2] = syntax.format(objectArray3, Syntax.getFormatter((Object)objectArray[i2]), (Syntax.SyntaxErrorHandler)defaultSyntaxErrorHandler, bl2);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExpandVariables.a(illegalArgumentException);
            }
            return objectArray2;
        }
        return ExpandVariables.process(string, map, audit, bl2);
    }

    public static String defaultDelimiter() {
        String string = ConfigFactory.getProperty((String)g[28], null);
        try {
            if (string != null) {
                return string;
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExpandVariables.a(illegalArgumentException);
        }
        return Syntax.DEFAULT_MV_DELIMITER;
    }

    public static void badVariable(String string, boolean bl2, Audit audit) {
        try {
            audit.logAndAudit((AuditDetailMessage)CommonMessages.TEMPLATE_UNSUPPORTED_VARIABLE, new String[]{string});
            if (bl2) {
                throw new VariableNameSyntaxException(string);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExpandVariables.a(illegalArgumentException);
        }
    }

    public static boolean isVariableReferencedNotFound(@Nullable String string, @NotNull Map<String, Object> map, @NotNull Audit audit) {
        String[] stringArray;
        try {
            if (map == null) {
                ExpandVariables.a(0);
            }
        }
        catch (VariableNameSyntaxException variableNameSyntaxException) {
            throw ExpandVariables.a((IllegalArgumentException)((Object)variableNameSyntaxException));
        }
        try {
            if (audit == null) {
                ExpandVariables.a(1);
            }
        }
        catch (VariableNameSyntaxException variableNameSyntaxException) {
            throw ExpandVariables.a((IllegalArgumentException)((Object)variableNameSyntaxException));
        }
        for (String string2 : stringArray = Syntax.getReferencedNames((String)string)) {
            try {
                ExpandVariables.process(Syntax.getVariableExpression((String)string2), map, audit, true);
            }
            catch (VariableNameSyntaxException variableNameSyntaxException) {
                return true;
            }
        }
        return false;
    }

    @Nullable
    static Object[] a(Map<String, ?> map, Syntax syntax, Audit audit, boolean bl2) {
        Object[] objectArray;
        Selector.Selection selection;
        DefaultSyntaxErrorHandler defaultSyntaxErrorHandler;
        Object object;
        block35: {
            block34: {
                block36: {
                    block30: {
                        int n2;
                        String string;
                        block33: {
                            block32: {
                                block31: {
                                    string = Syntax.getMatchingName((String)syntax.remainingName.toLowerCase(), map.keySet());
                                    try {
                                        if (string == null) {
                                            ExpandVariables.badVariable(syntax.remainingName, bl2, audit);
                                            return null;
                                        }
                                    }
                                    catch (IllegalArgumentException illegalArgumentException) {
                                        throw ExpandVariables.a(illegalArgumentException);
                                    }
                                    object = map.get(string);
                                    defaultSyntaxErrorHandler = new DefaultSyntaxErrorHandler(audit);
                                    try {
                                        if (string.toLowerCase().equals(syntax.remainingName.toLowerCase().trim())) break block30;
                                        if (object != null) break block31;
                                    }
                                    catch (IllegalArgumentException illegalArgumentException) {
                                        throw ExpandVariables.a(illegalArgumentException);
                                    }
                                    String string2 = defaultSyntaxErrorHandler.handleBadVariable(syntax.remainingName);
                                    try {
                                        if (bl2) {
                                            throw new IllegalArgumentException(string2);
                                        }
                                    }
                                    catch (IllegalArgumentException illegalArgumentException) {
                                        throw ExpandVariables.a(illegalArgumentException);
                                    }
                                    return null;
                                }
                                try {
                                    try {
                                        if (f || syntax.remainingName.toLowerCase().startsWith(string)) break block32;
                                    }
                                    catch (IllegalArgumentException illegalArgumentException) {
                                        throw ExpandVariables.a(illegalArgumentException);
                                    }
                                    throw new AssertionError();
                                }
                                catch (IllegalArgumentException illegalArgumentException) {
                                    throw ExpandVariables.a(illegalArgumentException);
                                }
                            }
                            n2 = string.length();
                            try {
                                try {
                                    if (f || syntax.remainingName.substring(n2, n2 + 1).equals(".")) break block33;
                                }
                                catch (IllegalArgumentException illegalArgumentException) {
                                    throw ExpandVariables.a(illegalArgumentException);
                                }
                                throw new AssertionError();
                            }
                            catch (IllegalArgumentException illegalArgumentException) {
                                throw ExpandVariables.a(illegalArgumentException);
                            }
                        }
                        selection = ExpandVariables.a(string, object, syntax.remainingName.substring(n2 + 1), (Syntax.SyntaxErrorHandler)defaultSyntaxErrorHandler, bl2);
                        break block36;
                    }
                    selection = new Selector.Selection(object);
                }
                try {
                    if (selection != null && selection != Selector.NOT_PRESENT) break block34;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw ExpandVariables.a(illegalArgumentException);
                }
                String string = defaultSyntaxErrorHandler.handleBadVariable(syntax.remainingName);
                try {
                    if (bl2) {
                        throw new IllegalArgumentException(string);
                    }
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw ExpandVariables.a(illegalArgumentException);
                }
                return null;
            }
            objectArray = selection.getRemainingName();
            try {
                if (objectArray == null || objectArray.length() <= 0) break block35;
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExpandVariables.a(illegalArgumentException);
            }
            String string = defaultSyntaxErrorHandler.handleBadVariable((String)objectArray);
            try {
                if (bl2) {
                    throw new IllegalArgumentException(string);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExpandVariables.a(illegalArgumentException);
            }
            return null;
        }
        object = selection.getSelectedValue();
        if (object instanceof Object[]) {
            objectArray = (Object[])object;
        } else if (object instanceof List) {
            List list = (List)object;
            objectArray = list.toArray(new Object[list.size()]);
        } else {
            objectArray = new Object[]{object};
        }
        return syntax.filter(objectArray, (Syntax.SyntaxErrorHandler)defaultSyntaxErrorHandler, bl2);
    }

    private static Selector.Selection a(String string, Object object, String string2, Syntax.SyntaxErrorHandler syntaxErrorHandler, boolean bl2) {
        block21: {
            Object object2;
            Object object3 = string;
            Object object4 = object;
            String string3 = string2;
            while (true) {
                String string4;
                block22: {
                    try {
                        if (string3 == null || string3.length() <= 0) break block21;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExpandVariables.a(illegalArgumentException);
                    }
                    Selector<?> selector = null;
                    if (object4 instanceof Selector) {
                        selector = (Selector<?>)object4;
                    } else {
                        for (Selector<?> selector2 : c) {
                            if (!selector2.getContextObjectClass().isAssignableFrom(object4.getClass())) continue;
                            selector = selector2;
                            break;
                        }
                    }
                    try {
                        if (selector == null) {
                            return new Selector.Selection(object4, string3);
                        }
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExpandVariables.a(illegalArgumentException);
                    }
                    object2 = null;
                    QueuingSyntaxErrorHandler queuingSyntaxErrorHandler2 = new QueuingSyntaxErrorHandler(syntaxErrorHandler);
                    try {
                        object2 = selector.select((String)object3, object4, string3, (Syntax.SyntaxErrorHandler)queuingSyntaxErrorHandler2, bl2);
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        object2 = ExpandVariables.a((String)object3, object4, string3, (Syntax.SyntaxErrorHandler)queuingSyntaxErrorHandler2, bl2, selector);
                    }
                    if (object2 == null && (object2 = ExpandVariables.a((String)object3, object4, string3, (Syntax.SyntaxErrorHandler)queuingSyntaxErrorHandler2, bl2, selector)) == null) {
                        queuingSyntaxErrorHandler2.flushLogAuditEvents();
                        String[] stringArray = g;
                        string4 = syntaxErrorHandler.handleBadVariable(MessageFormat.format(stringArray[1], string3, object.getClass().getName()));
                        try {
                            if (bl2) {
                                throw new IllegalArgumentException(string4);
                            }
                        }
                        catch (IllegalArgumentException illegalArgumentException) {
                            throw ExpandVariables.a(illegalArgumentException);
                        }
                        return Selector.NOT_PRESENT;
                    }
                    string4 = ((Selector.Selection)object2).getRemainingName();
                    try {
                        try {
                            if (string4 != null && string4.length() != 0) break block22;
                        }
                        catch (IllegalArgumentException illegalArgumentException) {
                            throw ExpandVariables.a(illegalArgumentException);
                        }
                        return object2;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExpandVariables.a(illegalArgumentException);
                    }
                }
                if (string4.length() <= 0) break;
                Object object5 = string3.substring(0, string3.length() - ((Selector.Selection)object2).getRemainingName().length());
                if (((String)object5).endsWith(".")) {
                    object5 = ((String)object5).substring(0, ((String)object5).length() - 1);
                }
                if (!((String)object3).endsWith(".")) {
                    object5 = "." + (String)object5;
                }
                object3 = (String)object3 + (String)object5;
                object4 = ((Selector.Selection)object2).getSelectedValue();
                string3 = string4;
            }
            String[] stringArray = g;
            throw new IllegalStateException(stringArray[17] + string3 + stringArray[11] + String.valueOf(object2));
        }
        String[] stringArray = g;
        throw new IllegalStateException(stringArray[0] + string2 + stringArray[32] + object.getClass().getName());
    }

    private static Selector.Selection a(String string, Object object, String string2, Syntax.SyntaxErrorHandler syntaxErrorHandler, boolean bl2, Selector selector) {
        block5: {
            bf bf2 = ExpandVariables.a(string2);
            if (bf2 != null) {
                Pair<String, String> pair = ExpandVariables.a(string2, bf2);
                if (pair.left != null) {
                    Selector.Selection selection = selector.select(string, object, (String)pair.left, syntaxErrorHandler, bl2);
                    try {
                        if (selection != null) {
                            return bf2.select(selection.getSelectedValue(), syntaxErrorHandler, bl2);
                        }
                        break block5;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExpandVariables.a(illegalArgumentException);
                    }
                }
                return bf2.select(object, syntaxErrorHandler, bl2);
            }
        }
        return null;
    }

    private static bf a(String string) {
        if (string != null) {
            for (bf bf2 : e) {
                try {
                    if (string.equalsIgnoreCase(bf2.getSuffix())) {
                        return bf2;
                    }
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw ExpandVariables.a(illegalArgumentException);
                }
                try {
                    if (!string.toLowerCase().endsWith("." + bf2.getSuffix())) continue;
                    return bf2;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw ExpandVariables.a(illegalArgumentException);
                }
            }
        }
        return null;
    }

    private static Pair<String, String> a(String string, bf bf2) {
        block7: {
            block8: {
                try {
                    try {
                        try {
                            if (string == null || bf2 == null) break block7;
                        }
                        catch (IllegalArgumentException illegalArgumentException) {
                            throw ExpandVariables.a(illegalArgumentException);
                        }
                        if (!string.equalsIgnoreCase(bf2.getSuffix())) break block8;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExpandVariables.a(illegalArgumentException);
                    }
                    return new Pair(null, (Object)string);
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw ExpandVariables.a(illegalArgumentException);
                }
            }
            if (string.toLowerCase().endsWith("." + bf2.getSuffix())) {
                int n2 = string.length() - (bf2.getSuffix().length() + 1);
                return new Pair((Object)string.substring(0, n2), (Object)string.substring(n2));
            }
        }
        return new Pair((Object)string, null);
    }

    @NotNull
    public static String process(String string, Map<String, ?> map, Audit audit) {
        return ExpandVariables.process(string, map, audit, ExpandVariables.a(), null);
    }

    public static String process(String string, Map<String, ?> map, Audit audit, Functions.Unary<String, String> unary) {
        return ExpandVariables.process(string, map, audit, ExpandVariables.a(), unary);
    }

    public static String process(String string, Map<String, ?> map, Audit audit, boolean bl2) {
        return ExpandVariables.process(string, map, audit, bl2, null);
    }

    public static String process(String string, Map<String, ?> map, Audit audit, boolean bl2, int n2) {
        return ExpandVariables.process(string, map, audit, bl2, new be(n2));
    }

    @NotNull
    public static String process(String string, Map<String, ?> map, Audit audit, boolean bl2, @Nullable Functions.Unary<String, String> unary) {
        String string2;
        try {
            if (string == null) {
                throw new IllegalArgumentException();
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExpandVariables.a(illegalArgumentException);
        }
        Matcher matcher = Syntax.regexPattern.matcher(string);
        StringBuffer stringBuffer = new StringBuffer();
        while (matcher.find()) {
            String string3;
            String string4;
            block15: {
                Object[] objectArray;
                Syntax syntax;
                block14: {
                    int n2 = matcher.groupCount();
                    try {
                        if (n2 != 1) {
                            throw new IllegalStateException(g[21] + n2);
                        }
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExpandVariables.a(illegalArgumentException);
                    }
                    syntax = Syntax.parse((String)matcher.group(1), (String)ExpandVariables.defaultDelimiter());
                    objectArray = ExpandVariables.a(map, syntax, audit, bl2);
                    try {
                        if (objectArray != null && objectArray.length != 0) break block14;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw ExpandVariables.a(illegalArgumentException);
                    }
                    string4 = "";
                    break block15;
                }
                DefaultSyntaxErrorHandler defaultSyntaxErrorHandler = new DefaultSyntaxErrorHandler(audit);
                string4 = syntax.format(objectArray, Syntax.getFormatter((Object)objectArray[0]), (Syntax.SyntaxErrorHandler)defaultSyntaxErrorHandler, bl2);
            }
            try {
                string3 = unary != null ? (String)unary.call((Object)string4) : string4;
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExpandVariables.a(illegalArgumentException);
            }
            string4 = string3;
            string4 = Matcher.quoteReplacement(string4);
            matcher.appendReplacement(stringBuffer, string4);
        }
        try {
            matcher.appendTail(stringBuffer);
            string2 = stringBuffer.toString();
            if (string2 == null) {
                ExpandVariables.a(2);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExpandVariables.a(illegalArgumentException);
        }
        return string2;
    }

    @NotNull(value="Values of the list may be null")
    public static List<Object> processNoFormat(@NotNull String string, @NotNull Map<String, ?> map, @NotNull Audit audit, boolean bl2) throws VariableNameSyntaxException {
        ArrayList<Object> arrayList;
        try {
            if (string == null) {
                ExpandVariables.a(3);
            }
        }
        catch (VariableNameSyntaxException variableNameSyntaxException) {
            throw ExpandVariables.a((IllegalArgumentException)((Object)variableNameSyntaxException));
        }
        try {
            if (map == null) {
                ExpandVariables.a(4);
            }
        }
        catch (VariableNameSyntaxException variableNameSyntaxException) {
            throw ExpandVariables.a((IllegalArgumentException)((Object)variableNameSyntaxException));
        }
        try {
            if (audit == null) {
                ExpandVariables.a(5);
            }
        }
        catch (VariableNameSyntaxException variableNameSyntaxException) {
            throw ExpandVariables.a((IllegalArgumentException)((Object)variableNameSyntaxException));
        }
        Matcher matcher = Syntax.regexPattern.matcher(string);
        ArrayList<Object> arrayList2 = new ArrayList<Object>();
        int n2 = 0;
        while (matcher.find()) {
            int n3 = matcher.groupCount();
            try {
                if (n3 != 1) {
                    throw new IllegalStateException(g[44] + n3);
                }
            }
            catch (VariableNameSyntaxException variableNameSyntaxException) {
                throw ExpandVariables.a((IllegalArgumentException)((Object)variableNameSyntaxException));
            }
            String string2 = string.substring(n2, matcher.start());
            try {
                if (!string2.isEmpty()) {
                    arrayList2.add(string.substring(n2, matcher.start()));
                }
            }
            catch (VariableNameSyntaxException variableNameSyntaxException) {
                throw ExpandVariables.a((IllegalArgumentException)((Object)variableNameSyntaxException));
            }
            Object[] objectArray = ExpandVariables.a(map, Syntax.parse((String)matcher.group(1), (String)ExpandVariables.defaultDelimiter()), audit, bl2);
            try {
                if (objectArray != null) {
                    Collections.addAll(arrayList2, objectArray);
                }
            }
            catch (VariableNameSyntaxException variableNameSyntaxException) {
                throw ExpandVariables.a((IllegalArgumentException)((Object)variableNameSyntaxException));
            }
            n2 = matcher.end();
        }
        try {
            if (n2 < string.length()) {
                arrayList2.add(string.substring(n2, string.length()));
            }
        }
        catch (VariableNameSyntaxException variableNameSyntaxException) {
            throw ExpandVariables.a((IllegalArgumentException)((Object)variableNameSyntaxException));
        }
        try {
            arrayList = arrayList2;
            if (arrayList == null) {
                ExpandVariables.a(6);
            }
        }
        catch (VariableNameSyntaxException variableNameSyntaxException) {
            throw ExpandVariables.a((IllegalArgumentException)((Object)variableNameSyntaxException));
        }
        return arrayList;
    }

    @NotNull
    public static List<Object> processNoFormat(@NotNull String string, @NotNull Map<String, ?> map, @NotNull Audit audit) {
        try {
            if (string == null) {
                ExpandVariables.a(7);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExpandVariables.a(illegalArgumentException);
        }
        try {
            if (map == null) {
                ExpandVariables.a(8);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExpandVariables.a(illegalArgumentException);
        }
        try {
            if (audit == null) {
                ExpandVariables.a(9);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExpandVariables.a(illegalArgumentException);
        }
        return ExpandVariables.processNoFormat(string, map, audit, ExpandVariables.a());
    }

    @Nullable
    public static String processEnvVar(@Nullable String string) {
        String string2;
        String string3;
        block10: {
            String string4;
            try {
                string4 = string == null ? null : Syntax.getSingleVariableReferenced((String)string);
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExpandVariables.a(illegalArgumentException);
            }
            string3 = string4;
            try {
                try {
                    if (string3 != null && string3.startsWith(BuiltinVariables.SSGNODE_ENV_VAR)) break block10;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw ExpandVariables.a(illegalArgumentException);
                }
                return string;
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw ExpandVariables.a(illegalArgumentException);
            }
        }
        String string5 = string3.substring(BuiltinVariables.SSGNODE_ENV_VAR_DOT_LENGTH);
        String string6 = null;
        if (ServerVariables.o.matcher(string5).find()) {
            string6 = System.getenv(string5);
        } else {
            String[] stringArray = g;
            a.warning(stringArray[24] + string5 + stringArray[29] + ServerVariables.n);
        }
        try {
            string2 = string6 == null ? string : string6;
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw ExpandVariables.a(illegalArgumentException);
        }
        return string2;
    }

    private ExpandVariables() {
    }

    /*
     * Unable to fully structure code
     */
    static {
        block12: {
            block11: {
                var5 = new String[47];
                var3_1 = 0;
                var2_2 = "pDCj4F{QE\u0002{=O>F^\u0002\n^\u001a_(7M{^\u001b_8FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=s:VYUg*G\b@FGk,L)\u000fUXMk=P(kEdg*N:Q$FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r=M;FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\bL^GE1M?@Xag6W>]^qm4F8QEP9FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0003\u0010\u001a\u001bK=Q/LLKk9W>vONm;W4W2FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001d@OFj9@0vONm;W4W.FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001cJCF[=O>F^Mz1FEO'4\u0014/@IJ'+F)SOP'(L7LI['.B)LK@d=\f\u001e]ZCf<u:WCCj4F(CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=`4K\\Gz+B/LEL[=P(LEL[=O>F^Mz\n\u0005XG|-Q5@N\u00021FEO'4\u0014/@IJ'+F)SOP'(L7LI['.B)LK@d=\f\u001e]ZCf<u:WCCj4F(\u0004SKP{1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0016@YQi?F\b@FGk,L)FFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=s:VYUg*G\u0017JIC|7Q\u0018JDVm W\b@FGk,L)CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0010@X@m*L(d_V`7Q2_KVa7M\u001fD^C[=O>F^Mz\rvONm;W4W\nDg*\u0003\u0005D_Fa,\u001cLYti*J:GFGZ=E>WOLk=G\u0015J^dg-M?BFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u000bJFKk!f5CEPk=N>K^ag6W>]^qm4F8QEP&`RRm;W2KM\u00029xN:QIJa6D{BXM}(\u000f{WOAm1U>A\u0010\u0002\u0013QOOx4B/@\u0004Q|*J8QgMl=.FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u000eVOP[=O>F^Mz,d^Vm5S/\u0005^M(9@8@YQ(=M-LXMf5F5Q\nTi*J:GFG(6B6@\n\u001esKN}=P{JL\u0002|0F{ICQ|xN:\\\n@mxM.IF*edM|\u0016V7I\nOm,K4A\n\u0007{v\u0006(\u0005GW{,\u00035J^\u0002z=W.WD\u0002f-O72FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001fD^G\\1N>vONm;W4W#QOOx4B/@\u0004Fm>B.I^o}4W2SKN}=g>ICOa,F)F\u0005]C{xM4Q\nCd4L,@N\f(;L6\u000bF\u0015|=@3\u000bYGz.F)\u000bZMd1@\"\u000b\\Cz1B9IO\fm6U\u001aIFM\u007f\u0014J(QxGo=[f5FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\u001cF/DCN[=O>F^Mz$FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r:S\u0006\u0005LPg5\u0003=FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\u000bF:WIJK*J/@XKi\u000bF7@IVg*5FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\nF8JXF[=O>F^Mz6FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0017@DE|0p.CLKp\u000bF7@IVg*EFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\tDNK}+b.QBGf,J8D^Kg6`4K^Gp,p>IOA|7Q1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@XTa;F\b@FGk,L)CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001f@HWo\fQ:FOti*J:GFGK7M/@RV[=O>F^Mz?FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0016@YQi?F\u0018JDVm W\u0016DZRa6D\b@FGk,L)#FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r:>dXE}5F5Q\nDg*\u0003\u001bkEVF-O7\u0005ZCz9N>QOP(\u007f\u0006(\u0002\nMnx\u0006(\u000b\u000fQ(5V(Q\nLg,\u00039@\nL}4O1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0019\\^GO=M\b@FGk,L).FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0017LYV[=O>F^Mz&`RRm;W2KM\u00029xN:QIJa6D{BXM}(\u000f{WOAm1U>A\u0010\u0002";
                var4_3 = "pDCj4F{QE\u0002{=O>F^\u0002\n^\u001a_(7M{^\u001b_8FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=s:VYUg*G\b@FGk,L)\u000fUXMk=P(kEdg*N:Q$FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r=M;FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\bL^GE1M?@Xag6W>]^qm4F8QEP9FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0003\u0010\u001a\u001bK=Q/LLKk9W>vONm;W4W2FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001d@OFj9@0vONm;W4W.FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001cJCF[=O>F^Mz1FEO'4\u0014/@IJ'+F)SOP'(L7LI['.B)LK@d=\f\u001e]ZCf<u:WCCj4F(CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=`4K\\Gz+B/LEL[=P(LEL[=O>F^Mz\n\u0005XG|-Q5@N\u00021FEO'4\u0014/@IJ'+F)SOP'(L7LI['.B)LK@d=\f\u001e]ZCf<u:WCCj4F(\u0004SKP{1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0016@YQi?F\b@FGk,L)FFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=s:VYUg*G\u0017JIC|7Q\u0018JDVm W\b@FGk,L)CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0010@X@m*L(d_V`7Q2_KVa7M\u001fD^C[=O>F^Mz\rvONm;W4W\nDg*\u0003\u0005D_Fa,\u001cLYti*J:GFGZ=E>WOLk=G\u0015J^dg-M?BFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u000bJFKk!f5CEPk=N>K^ag6W>]^qm4F8QEP&`RRm;W2KM\u00029xN:QIJa6D{BXM}(\u000f{WOAm1U>A\u0010\u0002\u0013QOOx4B/@\u0004Q|*J8QgMl=.FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u000eVOP[=O>F^Mz,d^Vm5S/\u0005^M(9@8@YQ(=M-LXMf5F5Q\nTi*J:GFG(6B6@\n\u001esKN}=P{JL\u0002|0F{ICQ|xN:\\\n@mxM.IF*edM|\u0016V7I\nOm,K4A\n\u0007{v\u0006(\u0005GW{,\u00035J^\u0002z=W.WD\u0002f-O72FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001fD^G\\1N>vONm;W4W#QOOx4B/@\u0004Fm>B.I^o}4W2SKN}=g>ICOa,F)F\u0005]C{xM4Q\nCd4L,@N\f(;L6\u000bF\u0015|=@3\u000bYGz.F)\u000bZMd1@\"\u000b\\Cz1B9IO\fm6U\u001aIFM\u007f\u0014J(QxGo=[f5FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\u001cF/DCN[=O>F^Mz$FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r:S\u0006\u0005LPg5\u0003=FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\u000bF:WIJK*J/@XKi\u000bF7@IVg*5FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\nF8JXF[=O>F^Mz6FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0017@DE|0p.CLKp\u000bF7@IVg*EFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\tDNK}+b.QBGf,J8D^Kg6`4K^Gp,p>IOA|7Q1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@XTa;F\b@FGk,L)CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001f@HWo\fQ:FOti*J:GFGK7M/@RV[=O>F^Mz?FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0016@YQi?F\u0018JDVm W\u0016DZRa6D\b@FGk,L)#FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r:>dXE}5F5Q\nDg*\u0003\u001bkEVF-O7\u0005ZCz9N>QOP(\u007f\u0006(\u0002\nMnx\u0006(\u000b\u000fQ(5V(Q\nLg,\u00039@\nL}4O1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0019\\^GO=M\b@FGk,L).FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0017LYV[=O>F^Mz&`RRm;W2KM\u00029xN:QIJa6D{BXM}(\u000f{WOAm1U>A\u0010\u0002".length();
                var1_4 = 17;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 67;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block11;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = ExpandVariables.a(v0, ExpandVariables.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "JIC*8\u0018#LEF*'J%_C\\*$@;@EW*\"N%@GLh1\u0001\u0016\\BGp\u0007J;LEZk&\u0007YTAg1\\$";
                    var4_3 = "JIC*8\u0018#LEF*'J%_C\\*$@;@EW*\"N%@GLh1\u0001\u0016\\BGp\u0007J;LEZk&\u0007YTAg1\\$".length();
                    var1_4 = 47;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 79;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block11;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = ExpandVariables.a(v0, ExpandVariables.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block12;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        ExpandVariables.g = var5;
        try {
            v5 = ExpandVariables.class.desiredAssertionStatus() == false;
        }
        catch (IllegalArgumentException v6) {
            throw ExpandVariables.a(v6);
        }
        ExpandVariables.f = v5;
        ExpandVariables.a = Logger.getLogger(ExpandVariables.class.getName());
        v7 = new String[25];
        var0_6 = ExpandVariables.g;
        v7[0] = var0_6[14];
        v7[1] = var0_6[6];
        v7[2] = var0_6[23];
        v7[3] = var0_6[45];
        v7[4] = var0_6[34];
        v7[5] = var0_6[30];
        v7[6] = var0_6[33];
        v7[7] = var0_6[20];
        v7[8] = var0_6[4];
        v7[9] = var0_6[40];
        v7[10] = var0_6[38];
        v7[11] = var0_6[15];
        v7[12] = var0_6[2];
        v7[13] = var0_6[10];
        v7[14] = var0_6[31];
        v7[15] = var0_6[43];
        v7[16] = var0_6[16];
        v7[17] = var0_6[27];
        v7[18] = var0_6[7];
        v7[19] = var0_6[37];
        v7[20] = var0_6[5];
        v7[21] = var0_6[36];
        v7[22] = var0_6[39];
        v7[23] = var0_6[8];
        v7[24] = var0_6[42];
        ExpandVariables.b = v7;
        ExpandVariables.c = Collections.unmodifiableList(new ArrayList<Selector<?>>(){
            static final long serialVersionUID = 1673733761752601162L;
            {
                for (String string : b) {
                    try {
                        Class<?> clazz = Class.forName(string);
                        Selector selector = (Selector)clazz.newInstance();
                        this.add(selector);
                    }
                    catch (InstantiationException instantiationException) {
                        throw new RuntimeException(instantiationException);
                    }
                    catch (IllegalAccessException illegalAccessException) {
                        throw new RuntimeException(illegalAccessException);
                    }
                    catch (ClassNotFoundException classNotFoundException) {
                        throw new RuntimeException(classNotFoundException);
                    }
                }
            }
        });
        ExpandVariables.d = new String[]{var0_6[35]};
        ExpandVariables.e = Collections.unmodifiableList(new ArrayList<bf>(){
            static final long serialVersionUID = 265362179342170420L;
            {
                for (String string : d) {
                    try {
                        Class<?> clazz = Class.forName(string);
                        bf bf2 = (bf)clazz.newInstance();
                        this.add(bf2);
                    }
                    catch (InstantiationException instantiationException) {
                        throw new RuntimeException(instantiationException);
                    }
                    catch (IllegalAccessException illegalAccessException) {
                        throw new RuntimeException(illegalAccessException);
                    }
                    catch (ClassNotFoundException classNotFoundException) {
                        throw new RuntimeException(classNotFoundException);
                    }
                }
            }
        });
    }

    /*
     * Exception decompiling
     */
    private static /* synthetic */ void a(int var0) {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [0[TRYBLOCK]], but top level block is 6[SWITCH]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1050)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

    private static IllegalArgumentException a(IllegalArgumentException illegalArgumentException) {
        return illegalArgumentException;
    }

    private static char[] b(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x18);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String a(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 102;
                    case 1 -> 105;
                    case 2 -> 97;
                    case 3 -> 75;
                    case 4 -> 27;
                    case 5 -> 96;
                    default -> 24;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }

    public static interface Selector<T> {
        public static final Selection NOT_PRESENT = new Selection(null, null);

        public Selection select(String var1, T var2, String var3, Syntax.SyntaxErrorHandler var4, boolean var5);

        public Class<T> getContextObjectClass();

        public static class Selection {
            private final Object a;
            private final String b;

            public Selection(Object object) {
                this(object, null);
            }

            public Selection(Object object, String string) {
                this.a = object;
                this.b = string;
            }

            public Object getSelectedValue() {
                return this.a;
            }

            public String getRemainingName() {
                return this.b;
            }
        }
    }
}

