package com.l7tech.gateway.api.impl;

import com.l7tech.gateway.api.AccessibleObject;
import com.l7tech.gateway.api.Accessor;
import com.l7tech.gateway.api.ManagedObjectFactory;
import com.l7tech.gateway.api.PolicyAccessor;
import com.l7tech.gateway.api.PolicyImportResult;
import com.l7tech.gateway.api.PolicyMO;
import com.l7tech.gateway.api.PolicyReferenceInstruction;
import com.l7tech.gateway.api.PolicyValidationResult;
import com.l7tech.gateway.api.Resource;
import com.l7tech.gateway.api.ResourceSet;
import com.l7tech.gateway.api.ServiceMO;
import com.l7tech.util.HexUtils;
import com.sun.ws.management.client.ResourceFactory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Map.Entry;

class d<AO extends AccessibleObject> extends c<AO> implements PolicyAccessor<AO> {
   private static final String i;
   private static final String j;
   private static final Random k;
   private static final String[] o;

   @Override
   public Resource getPolicy(String var1) throws Accessor.AccessorException {
      String[] var2 = o;
      this.a(var2[20], var1);
      return this.a(Resource.class, var1, var2[11]);
   }

   @Override
   public void putPolicy(String var1, Resource var2) throws Accessor.AccessorException {
      String[] var3 = o;
      this.a(var3[20], var1);
      this.a(var3[16], var2);
      this.a(var2, var1, var3[9]);
   }

   @Override
   public String exportPolicy(String var1) throws Accessor.AccessorException {
      this.a(o[20], var1);
      return this.a(new r(this, var1));
   }

   @Override
   public PolicyImportResult importPolicy(String var1, Map<String, Object> var2, String var3, List<PolicyReferenceInstruction> var4) throws Accessor.AccessorException {
      String[] var5 = o;
      this.a(var5[12], var1);
      this.a(var5[10], var3);
      return this.a(new s(this, var1, var2, var4, var3));
   }

   @Override
   public PolicyValidationResult validatePolicy(String var1) throws Accessor.AccessorException {
      String[] var2 = o;
      this.a(var2[20], var1);
      return this.a(Collections.singletonMap(var2[17], var1), new PolicyValidationContext());
   }

   @Override
   public PolicyValidationResult validatePolicy(AO var1, List<ResourceSet> var2) throws Accessor.AccessorException {
      String[] var5 = o;
      this.a(var5[7], var1);
      PolicyValidationContext var3 = new PolicyValidationContext();
      if (var1 instanceof PolicyMO var4) {
         this.a(var5[8], var4.getPolicyDetail());
         this.a(var5[14], var4.getPolicyDetail().getPolicyType());
         this.a(var5[0], var4.getResourceSets());
         var3.setPolicyType(var4.getPolicyDetail().getPolicyType());
         var3.setProperties(Collections.singletonMap(var5[15], this.b(var4.getPolicyDetail().getProperties())));
         var3.setResourceSets(this.a(var4.getResourceSets(), var2));
      } else {
         if (!(var1 instanceof ServiceMO var7)) {
            Accessor.AccessorException var10000;
            Accessor.AccessorException var10001;
            String var10002;
            label21: {
               try {
                  var10000 = new Accessor.AccessorException;
                  var10001 = var10000;
                  if (var1 == null) {
                     var10002 = o[5];
                     break label21;
                  }
               } catch (Accessor.AccessorException var6) {
                  throw var6;
               }

               var10002 = var1.getClass().getName();
            }

            var10001./* $VF: Unable to resugar constructor */<init>(o[6] + var10002 + "'");
            throw var10000;
         }

         var5 = o;
         this.a(var5[4], var7.getServiceDetail());
         this.a(var5[18], var7.getResourceSets());
         var3.setProperties(this.a(var7));
         var3.setResourceSets(this.a(var7.getResourceSets(), var2));
      }

      return this.a(null, var3);
   }

   d(String var1, String var2, Class<AO> var3, ResourceFactory var4, ResourceTracker var5) {
      super(var1, var2, var3, var4, var5);
   }

   <FO> FO a(Class<FO> var1, String var2, String var3) throws Accessor.AccessorException {
      return this.a(new t(this, var2, var3, var1));
   }

   <FO> void a(FO var1, String var2, String var3) throws Accessor.AccessorException {
      this.a(new u(this, var2, var1, var3));
   }

   private boolean b(Map<String, Object> var1) {
      boolean var2 = false;
      if (var1 != null) {
         String[] var3 = o;
         if (var1.get(var3[15]) instanceof Boolean) {
            var2 = (Boolean)var1.get(var3[15]);
         }
      }

      return var2;
   }

   private String c(Map<String, Object> var1) {
      String var2 = null;
      if (var1 != null) {
         String[] var3 = o;
         if (var1.get(var3[2]) instanceof String) {
            var2 = (String)var1.get(var3[2]);
         }
      }

      return var2;
   }

   private Map<String, Object> a(ServiceMO var1) {
      HashMap var2 = new HashMap();
      String[] var4 = o;
      var2.put(var4[19], this.b(var1.getServiceDetail().getProperties()));
      String var3 = this.c(var1.getServiceDetail().getProperties());
      if (var3 != null) {
         var2.put(var4[3], var3);
      }

      return var2;
   }

   private List<ResourceSet> a(List<ResourceSet> var1, List<ResourceSet> var2) {
      List var3;
      if (var2 == null) {
         var3 = var1;
      } else if (var1 == null) {
         var3 = var2;
      } else {
         var3 = new ArrayList();
         Map var4 = this.a(var1);
         Map var5 = this.a(var2);
         HashSet var6 = new HashSet();

         for (Entry var8 : var4.entrySet()) {
            var6.add((ResourceSet)var8.getValue());
            ResourceSet var9 = (ResourceSet)var5.get(var8.getKey());
            if (var9 != null) {
               var6.add(var9);
               ArrayList var10 = new ArrayList();
               ResourceSet var11 = ManagedObjectFactory.createResourceSet();
               var11.setRootUrl(((ResourceSet)var8.getValue()).getRootUrl());
               var11.setTag(((ResourceSet)var8.getValue()).getTag());
               if (((ResourceSet)var8.getValue()).getResources() != null) {
                  var10.addAll(((ResourceSet)var8.getValue()).getResources());
               }

               if (var9.getResources() != null && !var9.getResources().isEmpty()) {
                  if (var11.getRootUrl() == null && var10.size() == 1) {
                     Resource var12 = (Resource)var10.get(0);
                     String var13 = var12.getId();
                     if (var13 == null) {
                        var13 = this.g();
                        var12.setId(var13);
                     }

                     var11.setRootUrl("#" + var13);
                  }

                  var10.addAll(var9.getResources());
               }

               var11.setResources(var10);
               var3.add(var11);
            } else {
               var3.add((ResourceSet)var8.getValue());
            }
         }

         for (ResourceSet var16 : var1) {
            if (!var6.contains(var16)) {
               var3.add(var16);
            }
         }

         for (ResourceSet var17 : var2) {
            if (!var6.contains(var17)) {
               var3.add(var17);
            }
         }
      }

      return var3;
   }

   private Map<String, ResourceSet> a(List<ResourceSet> var1) {
      HashMap var2 = new HashMap();
      if (var1 != null) {
         for (ResourceSet var4 : var1) {
            String var5 = var4.getTag();
            if (var5 != null && !var2.containsKey(var5)) {
               var2.put(var5, var4);
            }
         }
      }

      return var2;
   }

   private String g() {
      byte[] var1 = new byte[16];
      k.nextBytes(var1);
      return o[1] + HexUtils.hexDump(var1);
   }

   private PolicyValidationResult a(Map<String, String> var1, PolicyValidationContext var2) throws Accessor.AccessorException {
      return this.a(new v(this, var1, var2));
   }

   static {
      String[] var5 = new String[21];
      int var3 = 0;
      String var2 = "$\u000bK*\u0005m\u00173=]1\u0003\u0003?\n\u0015\u000b%\u0001Y5&z\u0006%\u0007W+\u000b%\u0001Y5&z\u0006%\u0007W+\r%\u000bJ3\u0019|\u0011\u0012\u000bL$\u0019s\u0006j\u0000M)\u001c!$\u0006\u0001T,\u0013fT \u000fT,\u0014~\u0000?\u0001Ve\u0014p\u0011%NV*\u0004?\u0007#\u001eH*\u0002kTq\r;\u000fV$\u0017z\u0010\u0019\fR \u0013k\f&\u0001T,\u0013f03\u001aY,\u001c6:Y\u0002\u0017\u0015l\u001b#\u001c[ \u00030\u0018aTj \u0003p\u0001$\r]\u0016\u0015k/\u0016\u001aY\"M8\u00049\u0002Q&\t8)y\u0002\u000f\u007f\"z\u00079\u001bJ&\u0015\u00063\u0016H*\u0002k6:Y\u0002\u0017\u0015l\u001b#\u001c[ \u00030\u0018aTj \u0003p\u0001$\r]\u0016\u0015k/\u0016\u001aY\"M8\u00049\u0002Q&\t8)y\u0002\u000f\u007f\"z\u00079\u001bJ&\u0015\n?\n]+\u0004v\u0012?\u000bJ\u0002:Y\u0017&\u0001T,\u0013f03\u001aY,\u001c1\u00049\u0002Q&\tK\r&\u000b\u0004%\u0001Y5\b$\u000bK*\u0005m\u00173\u0002?\n\f$\u000bK*\u0005m\u00173=]1\u0003";
      int var4 = "$\u000bK*\u0005m\u00173=]1\u0003\u0003?\n\u0015\u000b%\u0001Y5&z\u0006%\u0007W+\u000b%\u0001Y5&z\u0006%\u0007W+\r%\u000bJ3\u0019|\u0011\u0012\u000bL$\u0019s\u0006j\u0000M)\u001c!$\u0006\u0001T,\u0013fT \u000fT,\u0014~\u0000?\u0001Ve\u0014p\u0011%NV*\u0004?\u0007#\u001eH*\u0002kTq\r;\u000fV$\u0017z\u0010\u0019\fR \u0013k\f&\u0001T,\u0013f03\u001aY,\u001c6:Y\u0002\u0017\u0015l\u001b#\u001c[ \u00030\u0018aTj \u0003p\u0001$\r]\u0016\u0015k/\u0016\u001aY\"M8\u00049\u0002Q&\t8)y\u0002\u000f\u007f\"z\u00079\u001bJ&\u0015\u00063\u0016H*\u0002k6:Y\u0002\u0017\u0015l\u001b#\u001c[ \u00030\u0018aTj \u0003p\u0001$\r]\u0016\u0015k/\u0016\u001aY\"M8\u00049\u0002Q&\t8)y\u0002\u000f\u007f\"z\u00079\u001bJ&\u0015\n?\n]+\u0004v\u0012?\u000bJ\u0002:Y\u0017&\u0001T,\u0013f03\u001aY,\u001c1\u00049\u0002Q&\tK\r&\u000b\u0004%\u0001Y5\b$\u000bK*\u0005m\u00173\u0002?\n\f$\u000bK*\u0005m\u00173=]1\u0003"
         .length();
      char var1 = '\f';
      int var7 = -1;

      label24:
      while (true) {
         String var10000 = var2.substring(++var7, var7 + var1);
         byte var10001 = -1;

         while (true) {
            String var13 = b(c(var10000));
            switch (var10001) {
               case 0:
                  var5[var3++] = var13;
                  if ((var7 += var1) >= var4) {
                     o = var5;
                     String[] var9 = o;
                     j = o[13];
                     i = var9[9];
                     k = new Random();
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var13;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "%\u0001Y5\n?\n]+\u0004v\u0012?\u000bJ";
                  var4 = "%\u0001Y5\n?\n]+\u0004v\u0012?\u000bJ".length();
                  var1 = 4;
                  var7 = -1;
            }

            var10000 = var2.substring(++var7, var7 + var1);
            var10001 = 0;
         }
      }
   }

   private static char[] c(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 116);
      }

      return var10000;
   }

   private static String b(char[] var0) {
      int var10002 = var0.length;
      char[] var10001 = var0;
      int var10000 = var10002;

      for (int var1 = 0; var10000 > var1; var1++) {
         var10001[var1] = (char)(var10001[var1] ^ switch (var1 % 7) {
            case 0 -> 86;
            case 1 -> 110;
            case 2 -> 56;
            case 3 -> 69;
            case 4 -> 112;
            case 5 -> 31;
            default -> 116;
         });
      }

      return new String(var10001).intern();
   }
}
