/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.audit.AdminAuditRecord
 *  com.l7tech.gateway.common.audit.AuditRecord
 *  com.l7tech.gateway.common.audit.AuditRecordHeader
 *  com.l7tech.gateway.common.audit.AuditSearchCriteria
 *  com.l7tech.gateway.common.audit.MessageSummaryAuditRecord
 *  com.l7tech.gateway.common.service.PublishedService
 *  com.l7tech.objectmodel.DeleteException
 *  com.l7tech.objectmodel.EntityHeader
 *  com.l7tech.objectmodel.EntityManager$UniqueType
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.SaveException
 *  com.l7tech.objectmodel.UpdateException
 *  com.l7tech.util.Config
 *  com.l7tech.util.Functions$BinaryThrows
 *  com.l7tech.util.Functions$BinaryVoid
 *  com.l7tech.util.Functions$QuaternaryVoid
 *  com.l7tech.util.Pair
 *  com.l7tech.util.ResourceUtils
 *  com.l7tech.util.SqlUtils
 *  com.l7tech.util.ValidatedConfig
 *  jakarta.inject.Inject
 *  jakarta.inject.Provider
 *  jakarta.persistence.Tuple
 *  jakarta.persistence.criteria.CriteriaBuilder
 *  jakarta.persistence.criteria.CriteriaQuery
 *  jakarta.persistence.criteria.Expression
 *  jakarta.persistence.criteria.Predicate
 *  jakarta.persistence.criteria.Root
 *  org.hibernate.HibernateException
 *  org.hibernate.Session
 *  org.hibernate.internal.SessionImpl
 *  org.hibernate.query.Query
 *  org.jetbrains.annotations.NotNull
 *  org.springframework.context.ApplicationContext
 *  org.springframework.context.ApplicationEvent
 *  org.springframework.transaction.PlatformTransactionManager
 *  org.springframework.transaction.annotation.Propagation
 *  org.springframework.transaction.annotation.Transactional
 */
package com.l7tech.server.audit;

import com.l7tech.gateway.common.audit.AdminAuditRecord;
import com.l7tech.gateway.common.audit.AuditRecord;
import com.l7tech.gateway.common.audit.AuditRecordHeader;
import com.l7tech.gateway.common.audit.AuditSearchCriteria;
import com.l7tech.gateway.common.audit.MessageSummaryAuditRecord;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityManager;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.server.HibernateEntityManager;
import com.l7tech.server.audit.AuditRecordManager;
import com.l7tech.server.audit.ad;
import com.l7tech.server.audit.ae;
import com.l7tech.server.audit.af;
import com.l7tech.server.audit.ah;
import com.l7tech.server.event.admin.AuditPurgeInitiated;
import com.l7tech.server.service.ServiceCache;
import com.l7tech.util.Config;
import com.l7tech.util.Functions;
import com.l7tech.util.Pair;
import com.l7tech.util.ResourceUtils;
import com.l7tech.util.SqlUtils;
import com.l7tech.util.ValidatedConfig;
import jakarta.inject.Inject;
import jakarta.inject.Provider;
import jakarta.persistence.Tuple;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Expression;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.internal.SessionImpl;
import org.hibernate.query.Query;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationEvent;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/*
 * Exception performing whole class analysis ignored.
 */
@Transactional(propagation=Propagation.REQUIRED, rollbackFor={Throwable.class})
public class AuditRecordManagerImpl
extends HibernateEntityManager<AuditRecord, AuditRecordHeader>
implements AuditRecordManager,
PropertyChangeListener {
    private static final String m;
    private static final String n;
    private static final String o;
    private static final String p;
    private static final String q;
    private static final String r;
    private ValidatedConfig s;
    private AtomicBoolean t = new AtomicBoolean(false);
    private static final Level[] u;
    private static final String v;
    private static final String w;
    private static final String x;
    private static final String y;
    private static final String z;
    private static final String A;
    private static final String B;
    private static final String C;
    private static final String D;
    private static final String E;
    private static final String F;
    private static final String G;
    private static final String H;
    private static final String I;
    private static final String J;
    private static final String K;
    private static final String L;
    private static final String M;
    private static final String N;
    private static final AtomicBoolean O;
    private static final Logger P;
    private Config Q;
    @Inject
    private Provider<ServiceCache> serviceCache;
    private long R;
    private static final String[] T;

    @Override
    public AuditRecord findByPrimaryKey(Goid goid) throws FindException {
        AuditRecord auditRecord;
        block5: {
            auditRecord = (AuditRecord)super.findByPrimaryKey(goid);
            try {
                if (auditRecord == null || !(auditRecord instanceof MessageSummaryAuditRecord)) break block5;
            }
            catch (FindException findException) {
                throw AuditRecordManagerImpl.a((Exception)((Object)findException));
            }
            MessageSummaryAuditRecord messageSummaryAuditRecord = (MessageSummaryAuditRecord)auditRecord;
            PublishedService publishedService = ((ServiceCache)this.serviceCache.get()).getCachedService(messageSummaryAuditRecord.getServiceGoid());
            try {
                if (publishedService != null) {
                    messageSummaryAuditRecord.setSecurityZone(publishedService.getSecurityZone());
                }
            }
            catch (FindException findException) {
                throw AuditRecordManagerImpl.a((Exception)((Object)findException));
            }
        }
        return auditRecord;
    }

    /*
     * Loose catch block
     * Enabled aggressive block sorting
     * Enabled unnecessary exception pruning
     * Enabled aggressive exception aggregation
     */
    @Override
    public Map<String, Pair<byte[], byte[]>> getDigestForAuditRecords(Collection<String> collection) throws FindException {
        try {
            if (collection == null) {
                throw new NullPointerException(T[50]);
            }
        }
        catch (NumberFormatException numberFormatException) {
            throw AuditRecordManagerImpl.a(numberFormatException);
        }
        HashMap<String, Pair<byte[], byte[]>> hashMap = new HashMap<String, Pair<byte[], byte[]>>();
        try {
            if (collection.isEmpty()) {
                return hashMap;
            }
        }
        catch (NumberFormatException numberFormatException) {
            throw AuditRecordManagerImpl.a(numberFormatException);
        }
        Session session = null;
        try {
            String string2;
            Object object;
            String[] stringArray = T;
            int n2 = this.s.getIntProperty(stringArray[2], 100);
            if (collection.size() > n2) {
                block23: {
                    int n3 = collection.size() - n2;
                    object = collection.iterator();
                    int n4 = 0;
                    while (object.hasNext()) {
                        if (n4 < n3) {
                            object.remove();
                            ++n4;
                        }
                    }
                    break block23;
                    {
                        catch (NumberFormatException numberFormatException) {
                            throw AuditRecordManagerImpl.a(numberFormatException);
                        }
                    }
                    catch (NumberFormatException numberFormatException) {
                        throw AuditRecordManagerImpl.a(numberFormatException);
                    }
                }
                stringArray = T;
                P.log(Level.INFO, stringArray[48] + n2 + stringArray[47] + collection.size());
            }
            session = AuditRecordManagerImpl.useCurrentOrOpenNewSession(this.getSessionFactory());
            stringArray = T;
            Query query = session.createQuery(stringArray[18]);
            object = new ArrayList();
            for (String string2 : collection) {
                try {
                    object.add(Goid.parseGoid((String)string2));
                }
                catch (NumberFormatException numberFormatException) {}
            }
            stringArray = T;
            query.setParameterList(stringArray[25], (Collection)object);
            int n5 = this.s.getIntProperty(stringArray[64], 0x280000);
            query.setInteger(stringArray[61], n5);
            string2 = query.scroll();
            while (string2.next()) {
                AuditRecord auditRecord;
                block24: {
                    auditRecord = (AuditRecord)string2.get(0);
                    String string3 = auditRecord.getSignature();
                    try {
                        if (string3 == null || string3.isEmpty()) break block24;
                    }
                    catch (NumberFormatException numberFormatException) {
                        throw AuditRecordManagerImpl.a(numberFormatException);
                    }
                    byte[] byArray = auditRecord.computeSignatureDigest();
                    hashMap.put(Goid.toString((Goid)auditRecord.getGoid()), (Pair<byte[], byte[]>)new Pair((Object)byArray, (Object)auditRecord.computeOldIdSignatureDigest()));
                }
                session.evict((Object)auditRecord);
            }
        }
        catch (HibernateException hibernateException) {
            try {
                throw new FindException(T[56], (Throwable)hibernateException);
            }
            catch (Throwable throwable) {
                AuditRecordManagerImpl.closeNewSession(session);
                throw throwable;
            }
        }
        AuditRecordManagerImpl.closeNewSession(session);
        return hashMap;
    }

    @Override
    @Transactional(readOnly=true)
    public List<AuditRecordHeader> findHeaders(AuditSearchCriteria auditSearchCriteria) throws FindException {
        boolean bl2;
        Class clazz = this.b(auditSearchCriteria);
        try {
            bl2 = clazz == MessageSummaryAuditRecord.class;
        }
        catch (FindException findException) {
            throw AuditRecordManagerImpl.a((Exception)((Object)findException));
        }
        boolean bl3 = bl2;
        ad ad2 = new ad(this, bl3, auditSearchCriteria);
        ae ae2 = new ae(this, bl3);
        List<AuditRecordHeader> list = this.a(auditSearchCriteria, ad2, ae2);
        return Collections.unmodifiableList(list);
    }

    @Override
    public AuditRecord findByHeader(EntityHeader entityHeader) throws FindException {
        return (AuditRecord)super.findByHeader(entityHeader);
    }

    private <T> List<T> a(@NotNull AuditSearchCriteria auditSearchCriteria, @NotNull Functions.QuaternaryVoid<CriteriaBuilder, CriteriaQuery, Root, Predicate> quaternaryVoid, @NotNull Functions.BinaryVoid<List<T>, Tuple> binaryVoid) throws FindException {
        try {
            if (auditSearchCriteria == null) {
                AuditRecordManagerImpl.b(0);
            }
        }
        catch (HibernateException hibernateException) {
            throw AuditRecordManagerImpl.a((Exception)((Object)hibernateException));
        }
        try {
            if (quaternaryVoid == null) {
                AuditRecordManagerImpl.b(1);
            }
        }
        catch (HibernateException hibernateException) {
            throw AuditRecordManagerImpl.a((Exception)((Object)hibernateException));
        }
        try {
            if (binaryVoid == null) {
                AuditRecordManagerImpl.b(2);
            }
        }
        catch (HibernateException hibernateException) {
            throw AuditRecordManagerImpl.a((Exception)((Object)hibernateException));
        }
        try {
            if (auditSearchCriteria == null) {
                throw new IllegalArgumentException(T[21]);
            }
        }
        catch (HibernateException hibernateException) {
            throw AuditRecordManagerImpl.a((Exception)((Object)hibernateException));
        }
        int n2 = this.a(auditSearchCriteria);
        ArrayList arrayList = new ArrayList(n2);
        try {
            if (this.c(auditSearchCriteria)) {
                return arrayList;
            }
        }
        catch (HibernateException hibernateException) {
            throw AuditRecordManagerImpl.a((Exception)((Object)hibernateException));
        }
        Session session = null;
        try {
            session = AuditRecordManagerImpl.useCurrentOrOpenNewSession(this.getSessionFactory());
            CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
            CriteriaQuery criteriaQuery = criteriaBuilder.createTupleQuery();
            Root root = criteriaQuery.from(this.b(auditSearchCriteria));
            quaternaryVoid.call((Object)criteriaBuilder, (Object)criteriaQuery, (Object)root, (Object)((Predicate)this.d(auditSearchCriteria).call((Object)criteriaBuilder, (Object)root)));
            Query query = session.createQuery(criteriaQuery);
            query.setMaxResults(n2);
            List list = query.getResultList();
            for (Tuple tuple : list) {
                binaryVoid.call(arrayList, (Object)tuple);
            }
            ArrayList arrayList2 = arrayList;
            return arrayList2;
        }
        catch (HibernateException hibernateException) {
            throw new FindException(T[10], (Throwable)hibernateException);
        }
        finally {
            AuditRecordManagerImpl.closeNewSession(session);
        }
    }

    private int a(AuditSearchCriteria auditSearchCriteria) {
        int n2 = auditSearchCriteria.maxRecords;
        if (n2 <= 0) {
            n2 = 4096;
        }
        return n2;
    }

    Class b(AuditSearchCriteria auditSearchCriteria) {
        Class<AuditRecord> clazz;
        block11: {
            boolean bl2;
            block10: {
                block9: {
                    clazz = auditSearchCriteria.recordClass;
                    if (clazz == null) {
                        clazz = this.getInterfaceClass();
                    }
                    try {
                        try {
                            if (!AuditRecordManagerImpl.a(auditSearchCriteria.entityClassName) && auditSearchCriteria.entityId == null) break block9;
                        }
                        catch (NullPointerException nullPointerException) {
                            throw AuditRecordManagerImpl.a(nullPointerException);
                        }
                        bl2 = true;
                        break block10;
                    }
                    catch (NullPointerException nullPointerException) {
                        throw AuditRecordManagerImpl.a(nullPointerException);
                    }
                }
                bl2 = false;
            }
            boolean bl3 = bl2;
            boolean bl4 = AuditRecordManagerImpl.a(auditSearchCriteria.operation);
            boolean bl5 = AuditRecordManagerImpl.a(auditSearchCriteria.requestId);
            if (bl3) {
                clazz = AdminAuditRecord.class;
            } else {
                try {
                    if (!bl5 && !bl4) break block11;
                }
                catch (NullPointerException nullPointerException) {
                    throw AuditRecordManagerImpl.a(nullPointerException);
                }
                clazz = MessageSummaryAuditRecord.class;
            }
        }
        return clazz;
    }

    boolean c(AuditSearchCriteria auditSearchCriteria) {
        boolean bl2;
        block25: {
            block24: {
                boolean bl3;
                boolean bl4;
                block23: {
                    block21: {
                        boolean bl5;
                        boolean bl6;
                        boolean bl7;
                        boolean bl8;
                        block20: {
                            block18: {
                                boolean bl9;
                                boolean bl10 = AuditRecordManagerImpl.a(auditSearchCriteria.requestId);
                                bl8 = AuditRecordManagerImpl.a(auditSearchCriteria.entityClassName);
                                try {
                                    bl9 = auditSearchCriteria.entityId != null;
                                }
                                catch (NullPointerException nullPointerException) {
                                    throw AuditRecordManagerImpl.a(nullPointerException);
                                }
                                bl7 = bl9;
                                bl6 = AuditRecordManagerImpl.a(auditSearchCriteria.operation);
                                try {
                                    block19: {
                                        try {
                                            try {
                                                if (!bl10) break block18;
                                                if (bl8) break block19;
                                            }
                                            catch (NullPointerException nullPointerException) {
                                                throw AuditRecordManagerImpl.a(nullPointerException);
                                            }
                                            if (!bl7) break block18;
                                        }
                                        catch (NullPointerException nullPointerException) {
                                            throw AuditRecordManagerImpl.a(nullPointerException);
                                        }
                                    }
                                    bl5 = true;
                                    break block20;
                                }
                                catch (NullPointerException nullPointerException) {
                                    throw AuditRecordManagerImpl.a(nullPointerException);
                                }
                            }
                            bl5 = false;
                        }
                        bl4 = bl5;
                        try {
                            block22: {
                                try {
                                    try {
                                        if (!bl6) break block21;
                                        if (bl8) break block22;
                                    }
                                    catch (NullPointerException nullPointerException) {
                                        throw AuditRecordManagerImpl.a(nullPointerException);
                                    }
                                    if (!bl7) break block21;
                                }
                                catch (NullPointerException nullPointerException) {
                                    throw AuditRecordManagerImpl.a(nullPointerException);
                                }
                            }
                            bl3 = true;
                            break block23;
                        }
                        catch (NullPointerException nullPointerException) {
                            throw AuditRecordManagerImpl.a(nullPointerException);
                        }
                    }
                    bl3 = false;
                }
                boolean bl11 = bl3;
                try {
                    try {
                        if (!bl4 && !bl11) break block24;
                    }
                    catch (NullPointerException nullPointerException) {
                        throw AuditRecordManagerImpl.a(nullPointerException);
                    }
                    bl2 = true;
                    break block25;
                }
                catch (NullPointerException nullPointerException) {
                    throw AuditRecordManagerImpl.a(nullPointerException);
                }
            }
            bl2 = false;
        }
        return bl2;
    }

    private static boolean a(String string) {
        boolean bl2;
        block5: {
            block4: {
                try {
                    try {
                        if (string == null || string.trim().isEmpty()) break block4;
                    }
                    catch (NullPointerException nullPointerException) {
                        throw AuditRecordManagerImpl.a(nullPointerException);
                    }
                    bl2 = true;
                    break block5;
                }
                catch (NullPointerException nullPointerException) {
                    throw AuditRecordManagerImpl.a(nullPointerException);
                }
            }
            bl2 = false;
        }
        return bl2;
    }

    @Override
    protected AuditRecordHeader newHeader(AuditRecord auditRecord) {
        Pair pair;
        AuditRecordHeader auditRecordHeader;
        AuditRecordHeader auditRecordHeader2;
        block5: {
            block4: {
                auditRecordHeader2 = new AuditRecordHeader(auditRecord);
                String string = auditRecord.getSignature();
                try {
                    try {
                        auditRecordHeader = auditRecordHeader2;
                        if (string == null || string.length() <= 0) break block4;
                    }
                    catch (NullPointerException nullPointerException) {
                        throw AuditRecordManagerImpl.a(nullPointerException);
                    }
                    pair = new Pair((Object)auditRecord.computeSignatureDigest(), (Object)auditRecord.computeOldIdSignatureDigest());
                    break block5;
                }
                catch (NullPointerException nullPointerException) {
                    throw AuditRecordManagerImpl.a(nullPointerException);
                }
            }
            pair = null;
        }
        auditRecordHeader.setSignatureDigest(pair);
        return auditRecordHeader2;
    }

    @Override
    public int findCount(AuditSearchCriteria auditSearchCriteria) throws FindException {
        return super.findCount(auditSearchCriteria.recordClass, this.d(auditSearchCriteria));
    }

    @Override
    public Collection<AuditRecord> findPage(AuditRecordManager.SortProperty sortProperty, boolean bl2, int n2, int n3, AuditSearchCriteria auditSearchCriteria) throws FindException {
        return super.findPage(auditSearchCriteria.recordClass, sortProperty.getPropertyName(), bl2, n2, n3, this.d(auditSearchCriteria));
    }

    @Override
    public void deleteOldAuditRecords(long l2) throws DeleteException {
        String string;
        String[] stringArray;
        block4: {
            this.applicationContext.publishEvent((ApplicationEvent)new AuditPurgeInitiated(this));
            stringArray = T;
            string = this.Q.getProperty(stringArray[16]);
            try {
                if (string != null && string.length() != 0) break block4;
            }
            catch (NumberFormatException numberFormatException) {
                throw AuditRecordManagerImpl.a(numberFormatException);
            }
            stringArray = T;
            string = stringArray[37];
        }
        int n2 = 168;
        try {
            n2 = Integer.valueOf(string);
        }
        catch (NumberFormatException numberFormatException) {
            stringArray = T;
            P.info(stringArray[12] + string + stringArray[29] + n2 + stringArray[31]);
        }
        long l3 = (long)n2 * 60L * 60L * 1000L;
        ah ah2 = new ah(this, System.currentTimeMillis() - Math.max(l3, l2));
        new Thread(ah2).start();
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Unable to fully structure code
     */
    @Override
    public long getMinMills(long var1_1) throws SQLException {
        block6: {
            var3_2 = AuditRecordManagerImpl.useCurrentOrOpenNewSession(this.getSessionFactory());
            var4_3 = null;
            var5_4 = null;
            try {
                block7: {
                    var6_5 = ((SessionImpl)var3_2).connection();
                    var11_6 = AuditRecordManagerImpl.T;
                    var4_3 = var6_5.prepareStatement(var11_6[26]);
                    var4_3.setLong(1, var1_1);
                    var5_4 = var4_3.executeQuery();
                    if (!var5_4.next()) break block6;
                    var7_7 = var5_4.getString(1);
                    if (var7_7 == null) ** GOTO lbl19
                    try {
                        block8: {
                            if (!var11_6[63].equalsIgnoreCase(var7_7)) break block7;
                            break block8;
                            catch (SQLException v0) {
                                throw AuditRecordManagerImpl.a(v0);
                            }
                        }
                        AuditRecordManagerImpl.P.log(Level.FINE, AuditRecordManagerImpl.T[67]);
                        break block6;
                    }
                    catch (SQLException v1) {
                        throw AuditRecordManagerImpl.a(v1);
                    }
                }
                var8_8 = Long.parseLong(var7_7);
            }
            catch (Throwable var10_9) {
                ResourceUtils.closeQuietly(var5_4);
                ResourceUtils.closeQuietly(var4_3);
                AuditRecordManagerImpl.closeNewSession(var3_2);
                throw var10_9;
            }
            ResourceUtils.closeQuietly((ResultSet)var5_4);
            ResourceUtils.closeQuietly((Statement)var4_3);
            AuditRecordManagerImpl.closeNewSession(var3_2);
            return var8_8;
        }
        ResourceUtils.closeQuietly((ResultSet)var5_4);
        ResourceUtils.closeQuietly((Statement)var4_3);
        AuditRecordManagerImpl.closeNewSession(var3_2);
        return -1L;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     */
    @Override
    public int deleteRangeByTime(long l2, long l3) throws SQLException {
        int n2;
        Session session = AuditRecordManagerImpl.useCurrentOrOpenNewSession(this.getSessionFactory());
        PreparedStatement preparedStatement = null;
        try {
            Connection connection = ((SessionImpl)session).connection();
            preparedStatement = connection.prepareStatement(T[54]);
            preparedStatement.setLong(1, l2);
            preparedStatement.setLong(2, l3);
            n2 = preparedStatement.executeUpdate();
        }
        catch (Throwable throwable) {
            ResourceUtils.closeQuietly(preparedStatement);
            AuditRecordManagerImpl.closeNewSession(session);
            throw throwable;
        }
        ResourceUtils.closeQuietly((Statement)preparedStatement);
        AuditRecordManagerImpl.closeNewSession(session);
        return n2;
    }

    /*
     * Loose catch block
     * Enabled aggressive block sorting
     * Enabled unnecessary exception pruning
     * Enabled aggressive exception aggregation
     */
    @Override
    public long getMaxTableSpace() throws FindException {
        long l2;
        String[] stringArray;
        ResultSet resultSet;
        PreparedStatement preparedStatement;
        Session session;
        block8: {
            session = AuditRecordManagerImpl.useCurrentOrOpenNewSession(this.getSessionFactory());
            preparedStatement = null;
            resultSet = null;
            Connection connection = ((SessionImpl)session).connection();
            stringArray = T;
            preparedStatement = connection.prepareStatement(stringArray[1]);
            resultSet = preparedStatement.executeQuery();
            try {
                if (resultSet == null || !resultSet.next()) break block8;
            }
            catch (SQLException sQLException) {
                throw AuditRecordManagerImpl.a(sQLException);
            }
            stringArray = T;
            String string = resultSet.getString(stringArray[9]);
            long l3 = SqlUtils.getMaxTableSize((String)string);
            ResourceUtils.closeQuietly((ResultSet)resultSet);
            ResourceUtils.closeQuietly((Statement)preparedStatement);
            AuditRecordManagerImpl.closeNewSession(session);
            return l3;
        }
        try {
            l2 = -1L;
        }
        catch (SQLException sQLException) {
            try {
                stringArray = T;
                throw new FindException(stringArray[46], (Throwable)sQLException);
                catch (NumberFormatException numberFormatException) {
                    throw new FindException(T[14], (Throwable)numberFormatException);
                }
            }
            catch (Throwable throwable) {
                ResourceUtils.closeQuietly(resultSet);
                ResourceUtils.closeQuietly(preparedStatement);
                AuditRecordManagerImpl.closeNewSession(session);
                throw throwable;
            }
        }
        ResourceUtils.closeQuietly((ResultSet)resultSet);
        ResourceUtils.closeQuietly((Statement)preparedStatement);
        AuditRecordManagerImpl.closeNewSession(session);
        return l2;
    }

    @Override
    public long getCurrentUsage() throws FindException {
        ResultSet resultSet;
        PreparedStatement preparedStatement;
        Session session;
        block5: {
            long l2;
            session = AuditRecordManagerImpl.useCurrentOrOpenNewSession(this.getSessionFactory());
            preparedStatement = null;
            resultSet = null;
            try {
                Connection connection = ((SessionImpl)session).connection();
                String[] stringArray = T;
                preparedStatement = connection.prepareStatement(stringArray[45]);
                resultSet = preparedStatement.executeQuery();
                if (resultSet == null) break block5;
                long l3 = 0L;
                long l4 = 0L;
                while (resultSet.next()) {
                    stringArray = T;
                    l3 += resultSet.getLong(stringArray[6]);
                    l4 += resultSet.getLong(stringArray[24]);
                }
                long l5 = l3 + l4;
                stringArray = T;
                P.log(Level.FINE, stringArray[3], l5);
                l2 = l5;
            }
            catch (SQLException sQLException) {
                try {
                    String[] stringArray = T;
                    throw new FindException(stringArray[14], (Throwable)sQLException);
                }
                catch (Throwable throwable) {
                    ResourceUtils.closeQuietly(resultSet);
                    ResourceUtils.closeQuietly(preparedStatement);
                    AuditRecordManagerImpl.closeNewSession(session);
                    throw throwable;
                }
            }
            ResourceUtils.closeQuietly((ResultSet)resultSet);
            ResourceUtils.closeQuietly((Statement)preparedStatement);
            AuditRecordManagerImpl.closeNewSession(session);
            return l2;
        }
        ResourceUtils.closeQuietly((ResultSet)resultSet);
        ResourceUtils.closeQuietly((Statement)preparedStatement);
        AuditRecordManagerImpl.closeNewSession(session);
        throw new FindException(T[60]);
    }

    public Class<AuditRecord> getImpClass() {
        return AuditRecord.class;
    }

    @Override
    public Class<AuditRecord> getInterfaceClass() {
        return AuditRecord.class;
    }

    @Override
    public String getTableName() {
        return T[43];
    }

    public void setServerConfig(Config config) {
        this.Q = config;
        this.s = new ValidatedConfig(config, P);
        String[] stringArray = T;
        this.s.setMinimumValue(stringArray[66], (Number)100);
        this.s.setMaximumValue(stringArray[2], (Number)1000);
        this.s.setMinimumValue(stringArray[35], (Number)1024);
        this.s.setMaximumValue(stringArray[64], (Number)0x1400000);
        this.s.setMinimumValue(stringArray[13], (Number)0);
        this.s.setMaximumValue(stringArray[13], (Number)Long.MAX_VALUE);
        this.R = this.s.getLongProperty(stringArray[13], 0xA00000L);
    }

    @Override
    public void setDatabaseFull(boolean bl2) {
        this.t.set(bl2);
    }

    @Override
    public void update(AuditRecord auditRecord) throws UpdateException {
        block3: {
            block2: {
                try {
                    if (this.t.get()) break block2;
                    super.update(auditRecord);
                    break block3;
                }
                catch (UpdateException updateException) {
                    throw AuditRecordManagerImpl.a((Exception)((Object)updateException));
                }
            }
            P.log(Level.WARNING, T[30]);
        }
    }

    @Override
    public Goid save(AuditRecord auditRecord) throws SaveException {
        try {
            if (!this.t.get()) {
                return super.save(auditRecord);
            }
        }
        catch (SaveException saveException) {
            throw AuditRecordManagerImpl.a((Exception)((Object)saveException));
        }
        P.log(Level.WARNING, T[32]);
        return null;
    }

    @Override
    public Config getAuditValidatedConfig() {
        return this.s;
    }

    @Override
    protected EntityManager.UniqueType getUniqueType() {
        return EntityManager.UniqueType.NONE;
    }

    @Override
    public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
        block4: {
            String string = propertyChangeEvent.getPropertyName();
            try {
                try {
                    if (string == null || !string.equals(T[39])) break block4;
                }
                catch (NullPointerException nullPointerException) {
                    throw AuditRecordManagerImpl.a(nullPointerException);
                }
                this.R = this.s.getLongProperty(T[13], 0xA00000L);
            }
            catch (NullPointerException nullPointerException) {
                throw AuditRecordManagerImpl.a(nullPointerException);
            }
        }
    }

    private Functions.BinaryThrows<Predicate, CriteriaBuilder, Root<AuditRecord>, FindException> d(AuditSearchCriteria auditSearchCriteria) throws FindException {
        return new af(this, auditSearchCriteria);
    }

    private Predicate a(CriteriaBuilder criteriaBuilder, Root<AuditRecord> root, Map<String, Long> map, boolean bl2) {
        Predicate predicate = criteriaBuilder.disjunction();
        for (Map.Entry<String, Long> entry : map.entrySet()) {
            Predicate predicate2 = criteriaBuilder.conjunction();
            String[] stringArray = T;
            predicate2 = criteriaBuilder.and((Expression)predicate2, (Expression)criteriaBuilder.equal((Expression)root.get(stringArray[57]), (Object)entry.getKey()));
            predicate2 = bl2 ? criteriaBuilder.and((Expression)predicate2, (Expression)criteriaBuilder.gt((Expression)root.get(stringArray[62]), (Number)entry.getValue())) : criteriaBuilder.and((Expression)predicate2, (Expression)criteriaBuilder.lt((Expression)root.get(T[4]), (Number)entry.getValue()));
            predicate = criteriaBuilder.or((Expression)predicate, (Expression)predicate2);
        }
        return predicate;
    }

    static /* synthetic */ PlatformTransactionManager access$000(AuditRecordManagerImpl auditRecordManagerImpl) {
        return auditRecordManagerImpl.transactionManager;
    }

    static /* synthetic */ ApplicationContext access$100(AuditRecordManagerImpl auditRecordManagerImpl) {
        return auditRecordManagerImpl.applicationContext;
    }

    static /* synthetic */ ApplicationContext access$200(AuditRecordManagerImpl auditRecordManagerImpl) {
        return auditRecordManagerImpl.applicationContext;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[69];
                var3_1 = 0;
                var2_2 = "\u001c\u0015h D^\u0002\f!\u007f!F^\u0012\u0010\u0003J!YS+&9B\u0019\u0010a7'8L\f|r%U=D\u0005u\u0017Q\u001c\u001fc!TU)\u0011\u0010y/oQ\u001f\u0019\u0014R>QC\u001eR\"\u0014\u0004i'D\u0019\u0000\u0014\u001dd*QC\u0013&\u0018j QC\u0003\u0007\u0014##QO\u0004\u0010\u0012b<TD\u001c6\u0004\u007f<UY\u0002U\u0004~/WRLUV*5\u0000JQRQo7DR\u0005\u0006\u0018\u0018a\"YD\u000f\u0007\u0014~;\\C&\u0007\u001en+CD\u0019\u0007\u000b\u0011\u0010y/o[\u0013\u001b\u0016y&\b\u0016\u0003d:UE\u001f\u0014\u0007\u0018\u0014~=QP\u0013\u0005\u0003\u0010a;U\u001b6\u001ex\"TYQ\u0001Qk'^SV4\u0004i'D\u0017$\u0010\u0012b<TD>4\u0003j;]R\u0018\u0001Qk!B\u00176;\u001ey\u0000E[\u001aU\u0001l<QZ\u0013\u0001\u0014\u007fn\u0017\u0012\u0005RQb(\u0010\u0012\u0005[T~n]B\u0005\u0001Qc!D\u0017\u0014\u0010Qc;\\[\u001c\u0014\u0004i'Dg\u0003\u0007\u0016h\u0003YY\u001f\u0018\u0004`\u000fWRV\u0003\u0010a;U\u0017Q\u0016\u0014\u0004i'D\u0019\u001b\u0010\u0002~/WR%\u001c\u000bh\u0002YZ\u001f\u0001?0\u0003\u007f!B\u0017\u0004\u0010\u0005\u007f'UA\u001f\u001b\u0016-#QOV\u0006\u0001l-U\u0017\u0017\u0019\u001db-QC\u0013\u0011Qk!B\u0017\u0002\u001d\u0014-'^Y\u0019\u0011\u0013-:QU\u001a\u0010\u0002}/SRX\u0006\u001b\u001ei+yS\u0014\u0014\u0004i'Dg\u0003\u0007\u0016h\u0003YY\u001f\u0018\u0004`\u000fWR\u0006\u0000\u0002h<yS\u009b\u0013\u0003b#\u0010v\u0003\u0011\u0018y\u001cUT\u0019\u0007\u0015-9XR\u0004\u0010Qj!YSV\u001c\u001f-f\n^\u0012\u0006X-/^SV]\u0003h?ER\u0005\u0001)`\"\u0010^\u0005U\u001fx\"\\\u0017\u0019\u0007Qa+^P\u0002\u001dY\u007f+AB\u0013\u0006\u0005U#\\\u001eVIQ7#QO%\u001c\u000bhg\u0010V\u0018\u0011Q%<UD\u0006\u001a\u001f~+hZ\u001aU\u0018~n^B\u001a\u0019Qb<\u0010[\u0013\u001b\u0016y&\u0018E\u0013\u0006\u0001b CR.\u0018\u001d$n\f\u0017L\u0018\u0010u\u001dYM\u0013\\+&9B\u0019\u0010a7'8L\f|r%U=D\u0005u\u0017Q\u001c\u001fc!TU)\u0011\u0010y/oQ\u001f\u0019\u0014R>QC\u001eR/&4A\u000bscV88CfD^\u001b\u0010X-\bbx;U\u0010x*YC)\u0018\u0010d \u0010`>0#HnD^\u001b\u0010Q3n\u000f\u00196\u0003d:UE\u001f\u0014Q`;CCV\u001b\u001eynRRV\u001b\u0004a\"\u00bc14A\u000bdrV3#B\u0003\u0010V\u0003\u0011\u0018y\u0011]V\u001f\u001bQz&UE\u0013U\u0016b'T\u0017\u001f\u001bQ%\u001du{36%-)_^\u0012U7_\u0001}\u0017^&4A\u000bscV'>Z\u0011~b;74_f\u0019\u00179#4_f\u0019\u0017\u0017\u0006Q\u007f!GY\u0003\u0018\u0013h<\u001c\u0017\u0011\u001a\u0018inve98Ql;T^\u0002*\u001cl'^\u0017!=4_\u000b\u0010V\u0003\u0011\u0018y\u0011\\R\u0000\u0010\u001d-r\u000e\u0017IUQl T\u0017\u0002\u001c\u001chn\f\u0017I\\QL\u001d\u0010Q\u0019\u001aQZ\u0006ue3U\u0003b9^B\u001b\u0017\u0014\u007fn\f\nVDA=~\u0000\u001e\u0004\u001b\u0010`+\f\u001c\u001fi+Hh\u001a\u0010\u001fj:X\u0003\u001c\u0015~/&4A\u000bscV88CfD^\u001b\u0010X-\bbx;U\u0010x*YC)\u0018\u0010d \u0010`>0#HnD^\u001b\u0010Q3n\u000f\u0007\u0018\u0010u\u001dYM\u0013\t\u0006\u0018j QC\u0003\u0007\u0014\u001fRQd=\u0010Y\u0019\u0001QlnFV\u001a\u001c\u0015- EZ\u0014\u0010\u0003#neD\u001f\u001b\u0016-/ \u001fl,\\RV\u0001\u001e-;@S\u0017\u0001\u0014-\u000fES\u001f\u0001#h-_E\u0012OQI/DV\u0014\u0014\u0002hnYDV\u0013\u0004a\"\u0011\tU\u0018c=DR\u0017\u0011_- \u001fl,\\RV\u0001\u001e-=QA\u0013U0x*YC$\u0010\u0012b<T\rV1\u0010y/RV\u0005\u0010Qd=\u0010Q\u0003\u0019\u001d,\n\u0010\u001fy'DN1\u001a\u0018i\u0011&9B\u0019\u0010c77=Hncc7!$^\u001b\u0014\u0004i'D\u0019\u0005\u0010\u0010\u007f-X\u0019\u001b\u0014\t@+CD\u0017\u0012\u0014^'JR\u0006\u0006\u0005\u007f\u0002F[\u0003DG5\u0010\u0011\u0014a+DR)\u0007\u0010c)Uh\u0013\u001b\u0015\u0016\u0014\u0004i'D\u0019\u001b\u0010\u0002~/WR%\u001c\u000bh\u0002YZ\u001f\u0001\u0004\u0012\u001ed*\u009b\u0013\u0003b#\u0010v\u0003\u0011\u0018y\u001cUT\u0019\u0007\u0015-9XR\u0004\u0010Qj!YSV\u001c\u001f-f\n^\u0012\u0006X-/^SV]\u0003h?ER\u0005\u0001)`\"\u0010^\u0005U\u001fx\"\\\u0017\u0019\u0007Qa+^P\u0002\u001dY\u007f+AB\u0013\u0006\u0005U#\\\u001eVIQ7#QO%\u001c\u000bhg\u0010V\u0018\u0011Q%<UD\u0006\u001a\u001f~+hZ\u001aU\u0018~n^B\u001a\u0019Qb<\u0010[\u0013\u001b\u0016y&\u0018E\u0013\u0006\u0001b CR.\u0018\u001d$n\f\u0017L\u0018\u0010u\u001dYM\u0013\\\u0004\u001b\u0010`+\n\u0014\u0004i'Dh\u001b\u0014\u0018c.\u0016\u001e`a\\\u0000\u0002\u0010\u0012eaCR\u0004\u0003\u0014\u007faQB\u0012\u001c\u0005\"\u000fES\u001f\u0001#h-_E\u00128\u0010c/WR\u0004<\u001c}\"\u0011&9B\u0019\u0010c77=Hncc7!$^?0\u0003\u007f!B\u0017\u0004\u0010\u0005\u007f'UA\u001f\u001b\u0016-#QOV\u0006\u0001l-U\u0017\u0017\u0019\u001db-QC\u0013\u0011Qk!B\u0017\u0002\u001d\u0014-'^Y\u0019\u0011\u0013-:QU\u001a\u0010\u0002}/SRX\u0006U\u0017\u007f!]\u0017/;\u0004`,UEV\u001a\u0017-/ES\u001f\u0001\u0002-:_\u0017\u0012\u001c\u0016h=D\u0017\u0004\u0010\u0015x-USV\u0001\u001e-\"YZ\u001f\u0001Qb(\u0010\u0015\u0005\u0003h*YT\u0017\u0001\u0014N!^Q\u001f\u0012\u0004\u007f/DX\u0004\u0016\u0014\u0004i'De\u0013\u0016\u001e\u007f*yS\u0005U\u0018~n^B\u001a\u0019\u0003\u001c\u0015~\f\u0006\u0005\u007f\u001cUF\u0003\u0010\u0002y\u0007T\u0004\u0013\u0018c*@14A\u000bdrV3#B\u0003\u0010V\u0003\u0011\u0018y\u0011]V\u001f\u001bQZ\u0006ue3U\u0005d#U\u0017HHQ2nqy2U\u0005d#U\u0017JHQ2n|~;<%-\u007f\u0000\u0007FE\u000f\u0010\u001fy'DN5\u0019\u0010~=^V\u001b\u0010\u001b6\u001ex\"TYQ\u0001Qk'^SV4\u0004i'D\u0017$\u0010\u0012b<TD\u0006\u001b\u001ei+yS\b\u0000\u0002h<~V\u001b\u0010F14A\u000bdrV3#B\u0003\u0010V\u0003\u0011\u0018y\u0011]V\u001f\u001bQZ\u0006ue3U\u0010x*YC)\u0019\u0014{+\\\u0017JKQ2nqy2U\u0005d#U\u0017JUN-\u0002yz?!Q<~\u0000\u0007FR0\u0003\u007f!B\u0017\u0004\u0010\u0005\u007f'UA\u001f\u001b\u0016-#QOV\u0006\u0001l-U\u0017\u0017\u0019\u001db-QC\u0013\u0011Qk!B\u0017\u0002\u001d\u0014-'^Y\u0019\u0011\u0013-:QU\u001a\u0010\u0002}/SRMU\u001fbnTV\u0002\u0014Q\u007f+DE\u001f\u0010\u0007h*\u001e\u0007\u0018\u0010u\u001dYM\u0013\u0006\u0018\u0018a\"YD\u0004\u001b\u0004a\"\u001b\u0014\u0004i'D\u0019\u0005\u0010\u0010\u007f-X\u0019\u001b\u0014\t@+CD\u0017\u0012\u0014^'JR\r\u001a\u0001h<QC\u001f\u001a\u001fC/]R\"\u0014\u0004i'D\u0019\u0000\u0014\u001dd*QC\u0013&\u0018j QC\u0003\u0007\u0014##QO\u0004\u0010\u0012b<TD";
                var4_3 = "\u001c\u0015h D^\u0002\f!\u007f!F^\u0012\u0010\u0003J!YS+&9B\u0019\u0010a7'8L\f|r%U=D\u0005u\u0017Q\u001c\u001fc!TU)\u0011\u0010y/oQ\u001f\u0019\u0014R>QC\u001eR\"\u0014\u0004i'D\u0019\u0000\u0014\u001dd*QC\u0013&\u0018j QC\u0003\u0007\u0014##QO\u0004\u0010\u0012b<TD\u001c6\u0004\u007f<UY\u0002U\u0004~/WRLUV*5\u0000JQRQo7DR\u0005\u0006\u0018\u0018a\"YD\u000f\u0007\u0014~;\\C&\u0007\u001en+CD\u0019\u0007\u000b\u0011\u0010y/o[\u0013\u001b\u0016y&\b\u0016\u0003d:UE\u001f\u0014\u0007\u0018\u0014~=QP\u0013\u0005\u0003\u0010a;U\u001b6\u001ex\"TYQ\u0001Qk'^SV4\u0004i'D\u0017$\u0010\u0012b<TD>4\u0003j;]R\u0018\u0001Qk!B\u00176;\u001ey\u0000E[\u001aU\u0001l<QZ\u0013\u0001\u0014\u007fn\u0017\u0012\u0005RQb(\u0010\u0012\u0005[T~n]B\u0005\u0001Qc!D\u0017\u0014\u0010Qc;\\[\u001c\u0014\u0004i'Dg\u0003\u0007\u0016h\u0003YY\u001f\u0018\u0004`\u000fWRV\u0003\u0010a;U\u0017Q\u0016\u0014\u0004i'D\u0019\u001b\u0010\u0002~/WR%\u001c\u000bh\u0002YZ\u001f\u0001?0\u0003\u007f!B\u0017\u0004\u0010\u0005\u007f'UA\u001f\u001b\u0016-#QOV\u0006\u0001l-U\u0017\u0017\u0019\u001db-QC\u0013\u0011Qk!B\u0017\u0002\u001d\u0014-'^Y\u0019\u0011\u0013-:QU\u001a\u0010\u0002}/SRX\u0006\u001b\u001ei+yS\u0014\u0014\u0004i'Dg\u0003\u0007\u0016h\u0003YY\u001f\u0018\u0004`\u000fWR\u0006\u0000\u0002h<yS\u009b\u0013\u0003b#\u0010v\u0003\u0011\u0018y\u001cUT\u0019\u0007\u0015-9XR\u0004\u0010Qj!YSV\u001c\u001f-f\n^\u0012\u0006X-/^SV]\u0003h?ER\u0005\u0001)`\"\u0010^\u0005U\u001fx\"\\\u0017\u0019\u0007Qa+^P\u0002\u001dY\u007f+AB\u0013\u0006\u0005U#\\\u001eVIQ7#QO%\u001c\u000bhg\u0010V\u0018\u0011Q%<UD\u0006\u001a\u001f~+hZ\u001aU\u0018~n^B\u001a\u0019Qb<\u0010[\u0013\u001b\u0016y&\u0018E\u0013\u0006\u0001b CR.\u0018\u001d$n\f\u0017L\u0018\u0010u\u001dYM\u0013\\+&9B\u0019\u0010a7'8L\f|r%U=D\u0005u\u0017Q\u001c\u001fc!TU)\u0011\u0010y/oQ\u001f\u0019\u0014R>QC\u001eR/&4A\u000bscV88CfD^\u001b\u0010X-\bbx;U\u0010x*YC)\u0018\u0010d \u0010`>0#HnD^\u001b\u0010Q3n\u000f\u00196\u0003d:UE\u001f\u0014Q`;CCV\u001b\u001eynRRV\u001b\u0004a\"\u00bc14A\u000bdrV3#B\u0003\u0010V\u0003\u0011\u0018y\u0011]V\u001f\u001bQz&UE\u0013U\u0016b'T\u0017\u001f\u001bQ%\u001du{36%-)_^\u0012U7_\u0001}\u0017^&4A\u000bscV'>Z\u0011~b;74_f\u0019\u00179#4_f\u0019\u0017\u0017\u0006Q\u007f!GY\u0003\u0018\u0013h<\u001c\u0017\u0011\u001a\u0018inve98Ql;T^\u0002*\u001cl'^\u0017!=4_\u000b\u0010V\u0003\u0011\u0018y\u0011\\R\u0000\u0010\u001d-r\u000e\u0017IUQl T\u0017\u0002\u001c\u001chn\f\u0017I\\QL\u001d\u0010Q\u0019\u001aQZ\u0006ue3U\u0003b9^B\u001b\u0017\u0014\u007fn\f\nVDA=~\u0000\u001e\u0004\u001b\u0010`+\f\u001c\u001fi+Hh\u001a\u0010\u001fj:X\u0003\u001c\u0015~/&4A\u000bscV88CfD^\u001b\u0010X-\bbx;U\u0010x*YC)\u0018\u0010d \u0010`>0#HnD^\u001b\u0010Q3n\u000f\u0007\u0018\u0010u\u001dYM\u0013\t\u0006\u0018j QC\u0003\u0007\u0014\u001fRQd=\u0010Y\u0019\u0001QlnFV\u001a\u001c\u0015- EZ\u0014\u0010\u0003#neD\u001f\u001b\u0016-/ \u001fl,\\RV\u0001\u001e-;@S\u0017\u0001\u0014-\u000fES\u001f\u0001#h-_E\u0012OQI/DV\u0014\u0014\u0002hnYDV\u0013\u0004a\"\u0011\tU\u0018c=DR\u0017\u0011_- \u001fl,\\RV\u0001\u001e-=QA\u0013U0x*YC$\u0010\u0012b<T\rV1\u0010y/RV\u0005\u0010Qd=\u0010Q\u0003\u0019\u001d,\n\u0010\u001fy'DN1\u001a\u0018i\u0011&9B\u0019\u0010c77=Hncc7!$^\u001b\u0014\u0004i'D\u0019\u0005\u0010\u0010\u007f-X\u0019\u001b\u0014\t@+CD\u0017\u0012\u0014^'JR\u0006\u0006\u0005\u007f\u0002F[\u0003DG5\u0010\u0011\u0014a+DR)\u0007\u0010c)Uh\u0013\u001b\u0015\u0016\u0014\u0004i'D\u0019\u001b\u0010\u0002~/WR%\u001c\u000bh\u0002YZ\u001f\u0001\u0004\u0012\u001ed*\u009b\u0013\u0003b#\u0010v\u0003\u0011\u0018y\u001cUT\u0019\u0007\u0015-9XR\u0004\u0010Qj!YSV\u001c\u001f-f\n^\u0012\u0006X-/^SV]\u0003h?ER\u0005\u0001)`\"\u0010^\u0005U\u001fx\"\\\u0017\u0019\u0007Qa+^P\u0002\u001dY\u007f+AB\u0013\u0006\u0005U#\\\u001eVIQ7#QO%\u001c\u000bhg\u0010V\u0018\u0011Q%<UD\u0006\u001a\u001f~+hZ\u001aU\u0018~n^B\u001a\u0019Qb<\u0010[\u0013\u001b\u0016y&\u0018E\u0013\u0006\u0001b CR.\u0018\u001d$n\f\u0017L\u0018\u0010u\u001dYM\u0013\\\u0004\u001b\u0010`+\n\u0014\u0004i'Dh\u001b\u0014\u0018c.\u0016\u001e`a\\\u0000\u0002\u0010\u0012eaCR\u0004\u0003\u0014\u007faQB\u0012\u001c\u0005\"\u000fES\u001f\u0001#h-_E\u00128\u0010c/WR\u0004<\u001c}\"\u0011&9B\u0019\u0010c77=Hncc7!$^?0\u0003\u007f!B\u0017\u0004\u0010\u0005\u007f'UA\u001f\u001b\u0016-#QOV\u0006\u0001l-U\u0017\u0017\u0019\u001db-QC\u0013\u0011Qk!B\u0017\u0002\u001d\u0014-'^Y\u0019\u0011\u0013-:QU\u001a\u0010\u0002}/SRX\u0006U\u0017\u007f!]\u0017/;\u0004`,UEV\u001a\u0017-/ES\u001f\u0001\u0002-:_\u0017\u0012\u001c\u0016h=D\u0017\u0004\u0010\u0015x-USV\u0001\u001e-\"YZ\u001f\u0001Qb(\u0010\u0015\u0005\u0003h*YT\u0017\u0001\u0014N!^Q\u001f\u0012\u0004\u007f/DX\u0004\u0016\u0014\u0004i'De\u0013\u0016\u001e\u007f*yS\u0005U\u0018~n^B\u001a\u0019\u0003\u001c\u0015~\f\u0006\u0005\u007f\u001cUF\u0003\u0010\u0002y\u0007T\u0004\u0013\u0018c*@14A\u000bdrV3#B\u0003\u0010V\u0003\u0011\u0018y\u0011]V\u001f\u001bQZ\u0006ue3U\u0005d#U\u0017HHQ2nqy2U\u0005d#U\u0017JHQ2n|~;<%-\u007f\u0000\u0007FE\u000f\u0010\u001fy'DN5\u0019\u0010~=^V\u001b\u0010\u001b6\u001ex\"TYQ\u0001Qk'^SV4\u0004i'D\u0017$\u0010\u0012b<TD\u0006\u001b\u001ei+yS\b\u0000\u0002h<~V\u001b\u0010F14A\u000bdrV3#B\u0003\u0010V\u0003\u0011\u0018y\u0011]V\u001f\u001bQZ\u0006ue3U\u0010x*YC)\u0019\u0014{+\\\u0017JKQ2nqy2U\u0005d#U\u0017JUN-\u0002yz?!Q<~\u0000\u0007FR0\u0003\u007f!B\u0017\u0004\u0010\u0005\u007f'UA\u001f\u001b\u0016-#QOV\u0006\u0001l-U\u0017\u0017\u0019\u001db-QC\u0013\u0011Qk!B\u0017\u0002\u001d\u0014-'^Y\u0019\u0011\u0013-:QU\u001a\u0010\u0002}/SRMU\u001fbnTV\u0002\u0014Q\u007f+DE\u001f\u0010\u0007h*\u001e\u0007\u0018\u0010u\u001dYM\u0013\u0006\u0018\u0018a\"YD\u0004\u001b\u0004a\"\u001b\u0014\u0004i'D\u0019\u0005\u0010\u0010\u007f-X\u0019\u001b\u0014\t@+CD\u0017\u0012\u0014^'JR\r\u001a\u0001h<QC\u001f\u001a\u001fC/]R\"\u0014\u0004i'D\u0019\u0000\u0014\u001dd*QC\u0013&\u0018j QC\u0003\u0007\u0014##QO\u0004\u0010\u0012b<TD".length();
                var1_4 = 20;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = AuditRecordManagerImpl.b(v0, AuditRecordManagerImpl.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "Uu\u000e\u0003</\u007fqh@Q89tjx@L?0~{h@J9zuwh@Q8.iqy\u0016F9z3l}\u0002O8z~ul\u0014Zbs5\u0012|y\fF)?Dj}\u000eD8\u0005hl}\u0012W";
                    var4_3 = "Uu\u000e\u0003</\u007fqh@Q89tjx@L?0~{h@J9zuwh@Q8.iqy\u0016F9z3l}\u0002O8z~ul\u0014Zbs5\u0012|y\fF)?Dj}\u000eD8\u0005hl}\u0012W".length();
                    var1_4 = 56;
                    var0_5 = -1;
lbl22:
                    // 2 sources

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

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

                ** continue;
            }
        }
        AuditRecordManagerImpl.T = var5;
        AuditRecordManagerImpl.v = AuditRecordManagerImpl.T[4];
        AuditRecordManagerImpl.o = AuditRecordManagerImpl.T[34];
        AuditRecordManagerImpl.m = AuditRecordManagerImpl.T[20];
        AuditRecordManagerImpl.H = AuditRecordManagerImpl.T[58];
        AuditRecordManagerImpl.C = AuditRecordManagerImpl.T[52];
        AuditRecordManagerImpl.x = AuditRecordManagerImpl.T[40];
        AuditRecordManagerImpl.G = AuditRecordManagerImpl.T[17];
        AuditRecordManagerImpl.r = AuditRecordManagerImpl.T[41];
        AuditRecordManagerImpl.D = AuditRecordManagerImpl.T[65];
        AuditRecordManagerImpl.z = AuditRecordManagerImpl.T[8];
        AuditRecordManagerImpl.I = AuditRecordManagerImpl.T[55];
        AuditRecordManagerImpl.n = AuditRecordManagerImpl.T[19];
        AuditRecordManagerImpl.y = AuditRecordManagerImpl.T[15];
        AuditRecordManagerImpl.N = AuditRecordManagerImpl.T[22];
        AuditRecordManagerImpl.J = AuditRecordManagerImpl.T[33];
        AuditRecordManagerImpl.p = AuditRecordManagerImpl.T[51];
        AuditRecordManagerImpl.q = AuditRecordManagerImpl.T[27];
        AuditRecordManagerImpl.B = AuditRecordManagerImpl.T[42];
        AuditRecordManagerImpl.A = AuditRecordManagerImpl.T[28];
        AuditRecordManagerImpl.L = AuditRecordManagerImpl.T[38];
        AuditRecordManagerImpl.w = AuditRecordManagerImpl.T[36];
        AuditRecordManagerImpl.E = AuditRecordManagerImpl.T[23];
        AuditRecordManagerImpl.F = AuditRecordManagerImpl.T[0];
        AuditRecordManagerImpl.M = AuditRecordManagerImpl.T[59];
        AuditRecordManagerImpl.K = AuditRecordManagerImpl.T[68];
        AuditRecordManagerImpl.u = new Level[]{Level.ALL, Level.FINEST, Level.FINER, Level.FINE, Level.CONFIG, Level.INFO, Level.WARNING, Level.SEVERE, Level.OFF};
        AuditRecordManagerImpl.O = new AtomicBoolean(true);
        AuditRecordManagerImpl.P = Logger.getLogger(AuditRecordManagerImpl.class.getName());
    }

    /*
     * Exception decompiling
     */
    private static /* synthetic */ void b(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 1[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 Exception a(Exception exception) {
        return exception;
    }

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

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String b(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 -> 36;
                    case 1 -> 32;
                    case 2 -> 92;
                    case 3 -> 31;
                    case 4 -> 97;
                    case 5 -> 102;
                    default -> 39;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

