/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.security.rbac.OperationType
 *  com.l7tech.gateway.common.security.rbac.OtherOperationName
 *  com.l7tech.gateway.common.security.rbac.Role
 *  com.l7tech.identity.User
 *  com.l7tech.objectmodel.DeleteException
 *  com.l7tech.objectmodel.Entity
 *  com.l7tech.objectmodel.EntityHeader
 *  com.l7tech.objectmodel.EntityManager$UniqueType
 *  com.l7tech.objectmodel.EntityType
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.GuidEntityHeader
 *  com.l7tech.objectmodel.PersistentEntity
 *  com.l7tech.objectmodel.SaveException
 *  com.l7tech.objectmodel.UpdateException
 *  com.l7tech.objectmodel.folder.Folder
 *  com.l7tech.objectmodel.imp.NamedEntityImp
 *  com.l7tech.policy.CircularPolicyException
 *  com.l7tech.policy.Policy
 *  com.l7tech.policy.PolicyAlias
 *  com.l7tech.policy.PolicyDeletionForbiddenException
 *  com.l7tech.policy.PolicyHeader
 *  com.l7tech.policy.PolicyType
 *  com.l7tech.util.Config
 *  com.l7tech.util.ConfigFactory
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.TextUtils
 *  jakarta.persistence.TypedQuery
 *  jakarta.persistence.criteria.CriteriaBuilder
 *  jakarta.persistence.criteria.Expression
 *  jakarta.persistence.criteria.Predicate
 *  jakarta.persistence.criteria.Root
 *  org.jetbrains.annotations.NotNull
 *  org.springframework.orm.hibernate5.HibernateCallback
 *  org.springframework.transaction.annotation.Propagation
 *  org.springframework.transaction.annotation.Transactional
 */
package com.l7tech.server.policy;

import com.l7tech.gateway.common.security.rbac.OperationType;
import com.l7tech.gateway.common.security.rbac.OtherOperationName;
import com.l7tech.gateway.common.security.rbac.Role;
import com.l7tech.identity.User;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityManager;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.GuidEntityHeader;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.objectmodel.folder.Folder;
import com.l7tech.objectmodel.imp.NamedEntityImp;
import com.l7tech.policy.CircularPolicyException;
import com.l7tech.policy.Policy;
import com.l7tech.policy.PolicyAlias;
import com.l7tech.policy.PolicyDeletionForbiddenException;
import com.l7tech.policy.PolicyHeader;
import com.l7tech.policy.PolicyType;
import com.l7tech.server.FolderSupportHibernateEntityManager;
import com.l7tech.server.folder.FolderManager;
import com.l7tech.server.policy.PolicyAliasManager;
import com.l7tech.server.policy.PolicyCache;
import com.l7tech.server.policy.PolicyManager;
import com.l7tech.server.policy.ar;
import com.l7tech.server.policy.as;
import com.l7tech.server.security.rbac.RoleManager;
import com.l7tech.server.util.JaasUtils;
import com.l7tech.util.Config;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.TextUtils;
import jakarta.persistence.TypedQuery;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.Expression;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import org.jetbrains.annotations.NotNull;
import org.springframework.orm.hibernate5.HibernateCallback;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Transactional(propagation=Propagation.REQUIRED, rollbackFor={Throwable.class})
public class PolicyManagerImpl
extends FolderSupportHibernateEntityManager<Policy, PolicyHeader>
implements PolicyManager {
    private static final Logger n;
    String o;
    String p;
    private static final Pattern q;
    private static final boolean r;
    static final String s;
    private final PolicyCache t;
    private final RoleManager u;
    private final PolicyAliasManager v;
    private final FolderManager w;
    private final Config x;
    private static final String[] z;

    public PolicyManagerImpl(RoleManager roleManager, PolicyAliasManager policyAliasManager, FolderManager folderManager, PolicyCache policyCache, @NotNull Config config) {
        if (config == null) {
            PolicyManagerImpl.c(0);
        }
        String[] stringArray = z;
        this.o = stringArray[8];
        this.p = stringArray[6] + this.o + stringArray[17];
        this.u = roleManager;
        this.v = policyAliasManager;
        this.w = folderManager;
        this.t = policyCache;
        this.x = config;
    }

    @Override
    public Policy findByHeader(EntityHeader entityHeader) throws FindException {
        block4: {
            try {
                try {
                    if (!(entityHeader instanceof GuidEntityHeader) || ((GuidEntityHeader)entityHeader).getGuid() == null) break block4;
                }
                catch (FindException findException) {
                    throw PolicyManagerImpl.a((Exception)((Object)findException));
                }
                return this.findByGuid(((GuidEntityHeader)entityHeader).getGuid());
            }
            catch (FindException findException) {
                throw PolicyManagerImpl.a((Exception)((Object)findException));
            }
        }
        return (Policy)super.findByHeader(entityHeader);
    }

    @Override
    public Policy findByGuid(String string) throws FindException {
        try {
            return (Policy)this.getHibernateTemplate().execute((HibernateCallback)new ar(this, string));
        }
        catch (Exception exception) {
            throw new FindException(z[0], (Throwable)exception);
        }
    }

    @Override
    public Collection<PolicyHeader> findHeadersWithTypes(Set<PolicyType> set) throws FindException {
        return this.findHeadersWithTypes(set, false);
    }

    @Override
    public Collection<PolicyHeader> findHeadersWithTypes(Set<PolicyType> set, boolean bl2) throws FindException {
        Goid goid;
        Object object22;
        List list = (List)this.getHibernateTemplate().execute((HibernateCallback)new as(this, set));
        ArrayList<PolicyHeader> arrayList = new ArrayList<PolicyHeader>(list.size());
        for (Object object22 : list) {
            arrayList.add(this.newHeader((Policy)object22));
        }
        try {
            if (!bl2) {
                return arrayList;
            }
        }
        catch (FindException findException) {
            throw PolicyManagerImpl.a((Exception)((Object)findException));
        }
        Collection collection = this.v.findAll();
        object22 = new HashMap();
        Object object3 = collection.iterator();
        while (object3.hasNext()) {
            PolicyAlias policyAlias = (PolicyAlias)object3.next();
            Goid goid2 = policyAlias.getEntityGoid();
            if (!object22.containsKey(goid2)) {
                goid = new HashSet();
                object22.put(goid2, goid);
            }
            ((Set)object22.get(goid2)).add(policyAlias);
        }
        object3 = new ArrayList();
        for (PolicyHeader policyHeader : arrayList) {
            goid = policyHeader.getGoid();
            object3.add(policyHeader);
            if (!object22.containsKey(goid)) continue;
            Set set2 = (Set)object22.get(goid);
            for (PolicyAlias policyAlias : set2) {
                PolicyHeader policyHeader2 = new PolicyHeader(policyHeader);
                policyHeader2.setAliasGoid(policyAlias.getGoid());
                policyHeader2.setFolderId(policyAlias.getFolder().getGoid());
                object3.add(policyHeader2);
            }
        }
        return object3;
    }

    public Collection<PolicyHeader> findHeaders(int n2, int n3, Map<String, String> map) throws FindException {
        Map<String, String> map2;
        block2: {
            map2 = map;
            String[] stringArray = z;
            String string = map.get(stringArray[29]);
            try {
                if (string == null || string.isEmpty()) break block2;
            }
            catch (FindException findException) {
                throw PolicyManagerImpl.a((Exception)((Object)findException));
            }
            map2 = new HashMap<String, String>(map);
            stringArray = z;
            map2.put(stringArray[21], string);
        }
        map2.remove(z[2]);
        return this.doFindHeaders(n2, n3, map2, true);
    }

    @Override
    public Goid save(Policy policy) throws SaveException {
        try {
            this.t.validate(policy);
        }
        catch (CircularPolicyException circularPolicyException) {
            String[] stringArray = z;
            throw new SaveException(stringArray[18] + ExceptionUtils.getMessage((Throwable)circularPolicyException), (Throwable)circularPolicyException);
        }
        try {
            if (policy.getFolder() == null) {
                Folder folder = this.w.findRootFolder();
                policy.setFolder(folder);
            }
        }
        catch (FindException findException) {
            throw new SaveException(z[13]);
        }
        Goid goid = super.save(policy);
        return goid;
    }

    /*
     * Enabled aggressive block sorting
     * Enabled unnecessary exception pruning
     * Enabled aggressive exception aggregation
     */
    @Override
    public void update(Policy policy) throws UpdateException {
        block6: {
            try {
                this.t.validate(policy);
            }
            catch (CircularPolicyException circularPolicyException) {
                String[] stringArray = z;
                throw new UpdateException(stringArray[16] + ExceptionUtils.getMessage((Throwable)circularPolicyException), (Throwable)circularPolicyException);
            }
            try {
                if (policy.getType() == PolicyType.PRIVATE_SERVICE) break block6;
                try {
                    this.u.renameEntitySpecificRoles(EntityType.POLICY, (NamedEntityImp)policy, q);
                }
                catch (FindException findException) {
                    throw new UpdateException(z[23], (Throwable)findException);
                }
            }
            catch (CircularPolicyException circularPolicyException) {
                throw PolicyManagerImpl.a((Exception)((Object)circularPolicyException));
            }
        }
        super.update(policy);
    }

    public void updateFolder(Goid goid, Folder folder) throws UpdateException {
        this.setParentFolderForEntity(goid, folder);
    }

    public void updateFolder(Policy policy, Folder folder) throws UpdateException {
        try {
            if (policy == null) {
                throw new UpdateException(z[3]);
            }
        }
        catch (UpdateException updateException) {
            throw PolicyManagerImpl.a((Exception)((Object)updateException));
        }
        this.setParentFolderForEntity(policy.getGoid(), folder);
    }

    @Override
    public void delete(Goid goid) throws DeleteException, FindException {
        this.findAndDelete(goid);
    }

    @Override
    public void delete(Policy policy) throws DeleteException {
        try {
            try {
                if (policy != null) {
                    this.t.validateRemove(policy.getGoid());
                }
            }
            catch (DeleteException deleteException) {
                throw PolicyManagerImpl.a((Exception)((Object)deleteException));
            }
        }
        catch (PolicyDeletionForbiddenException policyDeletionForbiddenException) {
            throw new DeleteException(z[22] + ExceptionUtils.getMessage((Throwable)policyDeletionForbiddenException), (Throwable)policyDeletionForbiddenException);
        }
        super.delete(policy);
    }

    @Override
    public void deleteWithoutValidation(Policy policy) throws DeleteException {
        super.delete(policy);
    }

    @Override
    @Transactional(readOnly=true)
    public Collection<PolicyHeader> findHeadersByType(PolicyType policyType) throws FindException {
        return this.findHeadersWithTypes(EnumSet.of(policyType));
    }

    public void createRoles(Policy policy) throws SaveException {
        try {
            if (this.x.getBooleanProperty(z[28], true)) {
                this.addManagePolicyRole(policy);
            }
        }
        catch (SaveException saveException) {
            throw PolicyManagerImpl.a((Exception)((Object)saveException));
        }
    }

    public void updateRoles(Policy policy) throws UpdateException {
    }

    @Override
    public void addManagePolicyRole(Policy policy) throws SaveException {
        Role role;
        block10: {
            User user = JaasUtils.getCurrentUser();
            String string = policy.getName();
            string = TextUtils.truncStringMiddle((String)string, (int)50);
            String[] stringArray = z;
            String string2 = MessageFormat.format(stringArray[30], string, policy.getGoid());
            n.info(stringArray[10] + string2);
            role = new Role();
            try {
                role.setName(string2);
                role.setDescription(stringArray[1]);
                role.setEntityType(EntityType.POLICY);
                role.setEntityGoid(policy.getGoid());
                role.addEntityPermission(OperationType.READ, EntityType.POLICY, policy.getId());
                role.addEntityPermission(OperationType.UPDATE, EntityType.POLICY, policy.getId());
                role.addEntityPermission(OperationType.DELETE, EntityType.POLICY, policy.getId());
                if (policy.getType().equals((Object)PolicyType.GLOBAL_FRAGMENT)) {
                    role.addEntityOtherPermission(EntityType.POLICY, policy.getId(), OtherOperationName.DEBUGGER.getOperationName());
                }
            }
            catch (FindException findException) {
                throw PolicyManagerImpl.a((Exception)((Object)findException));
            }
            role.addEntityPermission(OperationType.READ, EntityType.SERVICE_TEMPLATE, null);
            role.addEntityPermission(OperationType.READ, EntityType.JDBC_CONNECTION, null);
            role.addEntityPermission(OperationType.READ, EntityType.HTTP_CONFIGURATION, null);
            role.addEntityFolderAncestryPermission(EntityType.POLICY, policy.getGoid());
            role.addEntityPermission(OperationType.READ, EntityType.ENCAPSULATED_ASSERTION, null);
            role.addEntityPermission(OperationType.READ, EntityType.ASSERTION_ACCESS, null);
            if (user != null) {
                boolean bl2;
                try {
                    bl2 = this.u.isPermittedForAnyEntityOfType(user, OperationType.READ, EntityType.POLICY);
                    bl2 &= this.u.isPermittedForAnyEntityOfType(user, OperationType.UPDATE, EntityType.POLICY);
                    bl2 &= this.u.isPermittedForAnyEntityOfType(user, OperationType.DELETE, EntityType.POLICY);
                    bl2 &= this.u.isPermittedForAnyEntityOfType(user, OperationType.READ, EntityType.FOLDER);
                    bl2 &= this.u.isPermittedForAnyEntityOfType(user, OperationType.READ, EntityType.JDBC_CONNECTION);
                    bl2 &= this.u.isPermittedForAnyEntityOfType(user, OperationType.READ, EntityType.ENCAPSULATED_ASSERTION);
                }
                catch (FindException findException) {
                    stringArray = z;
                    throw new SaveException(stringArray[33], (Throwable)findException);
                }
                try {
                    try {
                        if (bl2 || !this.a()) break block10;
                    }
                    catch (FindException findException) {
                        throw PolicyManagerImpl.a((Exception)((Object)findException));
                    }
                    n.info(z[4]);
                    role.addAssignedUser(user);
                }
                catch (FindException findException) {
                    throw PolicyManagerImpl.a((Exception)((Object)findException));
                }
            }
        }
        this.u.save((PersistentEntity)role);
    }

    private boolean a() {
        return ConfigFactory.getBooleanProperty((String)z[26], (boolean)true);
    }

    @Transactional(propagation=Propagation.SUPPORTS)
    public Class<? extends Entity> getImpClass() {
        return Policy.class;
    }

    @Override
    @Transactional(propagation=Propagation.SUPPORTS)
    public Class<? extends Entity> getInterfaceClass() {
        return Policy.class;
    }

    @Override
    @Transactional(propagation=Propagation.SUPPORTS)
    public String getTableName() {
        return z[15];
    }

    @Override
    protected PolicyHeader newHeader(Policy policy) {
        return new PolicyHeader(policy);
    }

    @Override
    protected Predicate doFindHeaderPredicate(Predicate predicate, CriteriaBuilder criteriaBuilder, Root<Policy> root) {
        return criteriaBuilder.and((Expression)predicate, (Expression)criteriaBuilder.equal((Expression)root.get(z[24]), (Object)PolicyType.INCLUDE_FRAGMENT));
    }

    @Override
    protected Collection<Map<String, Object>> getUniqueConstraints(Policy policy) {
        Object object;
        ArrayList<Map<String, Object>> arrayList;
        block7: {
            arrayList = new ArrayList<Map<String, Object>>();
            HashMap<String, String> hashMap = new HashMap<String, String>();
            try {
                hashMap.put(z[12], policy.getName());
                arrayList.add(hashMap);
                if (policy.getType() != PolicyType.GLOBAL_FRAGMENT || r) break block7;
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PolicyManagerImpl.a(illegalArgumentException);
            }
            object = new HashMap();
            try {
                object.put(z[19], PolicyType.GLOBAL_FRAGMENT);
                if (policy.getInternalTag() != null) {
                    object.put(z[32], policy.getInternalTag());
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw PolicyManagerImpl.a(illegalArgumentException);
            }
            arrayList.add((Map<String, Object>)object);
        }
        if (policy.getType() == PolicyType.INTERNAL) {
            object = policy.getInternalTag();
            if (PolicyType.getAuditMessageFilterTags().contains(object)) {
                HashMap<String, Object> hashMap = new HashMap<String, Object>();
                String[] stringArray = z;
                hashMap.put(stringArray[24], PolicyType.INTERNAL);
                hashMap.put(stringArray[7], object);
                arrayList.add(hashMap);
            }
        }
        return arrayList;
    }

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

    static /* synthetic */ PersistentEntity access$000(PolicyManagerImpl policyManagerImpl, TypedQuery typedQuery) {
        return policyManagerImpl.getSingleResult(typedQuery);
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[34];
                var3_1 = 0;
                var2_2 = "J#5\u00178?s}l#\u001392?)9.\u0012-$1g)3\bZ\\?%\t/q5z?)\u001c240)8/[(91)7p\u0006|#;e)`\u0013='1)8(\u001e|06` )\u000f%q fl2\u001e=5x)90\u001f=%1)-.\u001f|51e)4\u001e|%<ll;J!q$f )\u0018%\u007f\t5(%\u001d=$8}r\u001fY#,\u0012?(t`?`\t9 !`>%\u001f|3!}l-\u0012/\"=g+n\"H?3\u0012;?=g+`\u0018)#&l\"4[\t\"1{l4\u0014|?1~l\u0012\u001404/j#-U0f l/(U/4&\u007f)2U,>8`/9U1$8}%0\u00179\u00168f.!\u0017\f>8`/)\u001e/\u000bD-.\u001a;4tr|=[\u000b`\"4\u001e.?5e\u0018!\u001c\u0006Y#,\u0012?(>H>'\u000e14:}l&\u0014.q\u0014G#45)=8)<!\t=<1})2[{t'.l/\u001d|t''i3[1$'}l.\u0014(q6ll.\u000e0=\u0013J>%\u001a(8:nl.\u001e+q\u0006f %A|\u0006Y#,\u0012?(\u0004g--\u001e'J#5\u00178?s}l3\u001a*4ty#,\u0012?(t|\"$\u001e.q&f#4[:>8m)2U%{.!\u0018r0!}#\u0012\u001404zd-.\u001a;4\u0004f )\u0018%\u007f5|8/8.45})\u0006y#,\u0012?(\u0018J#5\u00178?s}l5\u000b80 ll\u0010\u0014087pv`\u0007)dc\u0000m,}\u0016J#5\u00178?s}l3\u001a*4tY#,\u0012?(n)\u0004}50\u001e\u00065%.\u0012(o\u0004g--\u001e\u0018J#5\u00178?s}l$\u001e04 ll\u0010\u0014087pv`\u001cJ#5\u00178?s}l&\u001225t[#,\u001e|%;)>%\u0015=<1\u0004}50\u001e\u0006j#.\u001d56%{.!\u0018r0!}#\u0012\u001404zd-.\u001a;4\u0004f )\u0018%\u007f5|8/:/\"=n\"=!s|F\u0002\r#.7gJp`f1k=\\|xz#shDaq/91`'tr\u000fU(\u001b'8}tT0\u001b:q\u000b5$6pVe\f\t#\u0010i_u%{.!\u0018r0!}#\u0012\u001404zd-.\u001a;4\u0004f )\u0018%\u007f5|8/8.45})\t5(%\u001d=$8}r\u0018D-.\u001a;4tr|=[\f>8`/9[tr/81i*j#-T0f l/(T/4&\u007f)2T,>8`/9T\f>8`/96=?5n)221!8";
                var4_3 = "J#5\u00178?s}l#\u001392?)9.\u0012-$1g)3\bZ\\?%\t/q5z?)\u001c240)8/[(91)7p\u0006|#;e)`\u0013='1)8(\u001e|06` )\u000f%q fl2\u001e=5x)90\u001f=%1)-.\u001f|51e)4\u001e|%<ll;J!q$f )\u0018%\u007f\t5(%\u001d=$8}r\u001fY#,\u0012?(t`?`\t9 !`>%\u001f|3!}l-\u0012/\"=g+n\"H?3\u0012;?=g+`\u0018)#&l\"4[\t\"1{l4\u0014|?1~l\u0012\u001404/j#-U0f l/(U/4&\u007f)2U,>8`/9U1$8}%0\u00179\u00168f.!\u0017\f>8`/)\u001e/\u000bD-.\u001a;4tr|=[\u000b`\"4\u001e.?5e\u0018!\u001c\u0006Y#,\u0012?(>H>'\u000e14:}l&\u0014.q\u0014G#45)=8)<!\t=<1})2[{t'.l/\u001d|t''i3[1$'}l.\u0014(q6ll.\u000e0=\u0013J>%\u001a(8:nl.\u001e+q\u0006f %A|\u0006Y#,\u0012?(\u0004g--\u001e'J#5\u00178?s}l3\u001a*4ty#,\u0012?(t|\"$\u001e.q&f#4[:>8m)2U%{.!\u0018r0!}#\u0012\u001404zd-.\u001a;4\u0004f )\u0018%\u007f5|8/8.45})\u0006y#,\u0012?(\u0018J#5\u00178?s}l5\u000b80 ll\u0010\u0014087pv`\u0007)dc\u0000m,}\u0016J#5\u00178?s}l3\u001a*4tY#,\u0012?(n)\u0004}50\u001e\u00065%.\u0012(o\u0004g--\u001e\u0018J#5\u00178?s}l$\u001e04 ll\u0010\u0014087pv`\u001cJ#5\u00178?s}l&\u001225t[#,\u001e|%;)>%\u0015=<1\u0004}50\u001e\u0006j#.\u001d56%{.!\u0018r0!}#\u0012\u001404zd-.\u001a;4\u0004f )\u0018%\u007f5|8/:/\"=n\"=!s|F\u0002\r#.7gJp`f1k=\\|xz#shDaq/91`'tr\u000fU(\u001b'8}tT0\u001b:q\u000b5$6pVe\f\t#\u0010i_u%{.!\u0018r0!}#\u0012\u001404zd-.\u001a;4\u0004f )\u0018%\u007f5|8/8.45})\t5(%\u001d=$8}r\u0018D-.\u001a;4tr|=[\f>8`/9[tr/81i*j#-T0f l/(T/4&\u007f)2T,>8`/9T\f>8`/96=?5n)221!8".length();
                var1_4 = 25;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = PolicyManagerImpl.c(v0, PolicyManagerImpl.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\u000fM[qAPZ\nwNs!%LZxWP\u001c\u0012\u0003HqG\u001e^\u001eJ\\`ZP\\FSJf^WH\u0015J@z@";
                    var4_3 = "\u000fM[qAPZ\nwNs!%LZxWP\u001c\u0012\u0003HqG\u001e^\u001eJ\\`ZP\\FSJf^WH\u0015J@z@".length();
                    var1_4 = 11;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 39;
                        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++] = PolicyManagerImpl.c(v0, PolicyManagerImpl.a(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;
            }
        }
        PolicyManagerImpl.z = var5;
        PolicyManagerImpl.s = PolicyManagerImpl.z[14];
        PolicyManagerImpl.n = Logger.getLogger(PolicyManagerImpl.class.getName());
        var0_6 = PolicyManagerImpl.z;
        PolicyManagerImpl.q = Pattern.compile(MessageFormat.format(var0_6[27], new Object[]{var0_6[11]}));
        PolicyManagerImpl.r = ConfigFactory.getBooleanProperty((String)var0_6[5], (boolean)false);
    }

    private static /* synthetic */ void c(int n2) {
        String[] stringArray = z;
        throw new IllegalArgumentException(String.format(stringArray[9], stringArray[25], stringArray[31], stringArray[20]));
    }

    private static Exception a(Exception exception) {
        return exception;
    }

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

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String c(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 -> 65;
                    case 1 -> 4;
                    case 2 -> 8;
                    case 3 -> 51;
                    case 4 -> 20;
                    case 5 -> 25;
                    default -> 28;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

