package com.l7tech.server.wsdm.subscription;

import com.l7tech.common.http.GenericHttpClient;
import com.l7tech.common.http.GenericHttpClientFactory;
import com.l7tech.common.http.GenericHttpHeader;
import com.l7tech.common.http.GenericHttpRequest;
import com.l7tech.common.http.GenericHttpRequestParams;
import com.l7tech.common.http.GenericHttpResponse;
import com.l7tech.common.http.HttpConstants;
import com.l7tech.common.http.HttpMethod;
import com.l7tech.common.http.RerunnableHttpRequest;
import com.l7tech.common.http.GenericHttpRequestParams.HttpVersion;
import com.l7tech.common.io.ByteLimitInputStream;
import com.l7tech.common.io.XmlUtil;
import com.l7tech.common.mime.ContentTypeHeader;
import com.l7tech.gateway.common.audit.ServiceMessages;
import com.l7tech.gateway.common.cluster.ClusterProperty;
import com.l7tech.gateway.common.service.MetricsSummaryBin;
import com.l7tech.gateway.common.service.PublishedService;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.server.ServerConfig;
import com.l7tech.server.audit.AuditContextFactory;
import com.l7tech.server.audit.Auditor;
import com.l7tech.server.audit.MessageSummaryAuditFactory;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.PolicyCache;
import com.l7tech.server.service.ServiceCache;
import com.l7tech.server.wsdm.Aggregator;
import com.l7tech.server.wsdm.MetricsRequestContext;
import com.l7tech.server.wsdm.QoSMetricsService;
import com.l7tech.server.wsdm.faults.FaultMappableException;
import com.l7tech.server.wsdm.faults.GenericWSRFExceptionFault;
import com.l7tech.server.wsdm.faults.ResourceUnknownFault;
import com.l7tech.server.wsdm.faults.UnacceptableTerminationTimeFault;
import com.l7tech.server.wsdm.method.Subscribe;
import com.l7tech.util.Background;
import com.l7tech.util.BuildInfo;
import com.l7tech.util.Charsets;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.GoidUpgradeMapper;
import com.l7tech.util.IOUtils;
import com.l7tech.util.ISO8601Date;
import com.l7tech.util.InetAddressUtil;
import com.l7tech.util.Pair;
import com.l7tech.util.PoolByteArrayOutputStream;
import com.l7tech.util.ResourceUtils;
import com.l7tech.util.SoapConstants;
import com.l7tech.xml.soap.SoapUtil;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import java.io.ByteArrayInputStream;
import java.io.Closeable;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.EnumSet;
import java.util.Map;
import java.util.TimerTask;
import java.util.UUID;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.Lifecycle;
import org.w3c.dom.Element;

public class SubscriptionNotifier implements ServiceStateMonitor, ApplicationContextAware, Lifecycle {
   private static final Logger a;
   public static final String ESM_SUBSCRIPTION_SERVICE_NAME;
   public static final String ESM_SUBSCRIPTION_SERVICE_ROOT_WSDL;
   public static final String ESM_SUBSCRIPTION_SERVICE_URI_PREFIX;
   public static final String PRODUCT;
   public static final String DEFAULT_USER_AGENT;
   public static final String CLUSTER_PROP_NOTIFY_INTERVAL;
   public static final String CLUSTER_PROP_ESM_ENABLED;
   public static final String SERVERCONFIG_PROP_NOTIFY_INTERVAL;
   public static final String SERVERCONFIG_PROP_ESM_ENABLED;
   private static final int b = 60000;
   private static final int c = 60000;
   private static final boolean d = true;
   private static final EnumSet<SubscriptionNotifier.NotificationType> e;
   private Auditor f;
   private URL g;
   private final AtomicLong h = new AtomicLong(0L);
   private final AtomicBoolean i = new AtomicBoolean(false);
   private volatile long j;
   @Inject
   private ServiceCache serviceCache;
   @Inject
   private SubscriptionManager subscriptionManager;
   @Inject
   private PolicyCache policyCache;
   @Inject
   private MessageSummaryAuditFactory auditFactory;
   @Inject
   private ServerConfig serverConfig;
   @Inject
   @Named("httpClientFactory")
   private GenericHttpClientFactory httpClientFactory;
   @Inject
   private Aggregator aggregator;
   private final String k;
   private final AtomicBoolean l = new AtomicBoolean(false);
   private TimerTask m;
   private TimerTask n;
   private TimerTask o;
   private final ExecutorService p = Executors.newSingleThreadExecutor();
   private AuditContextFactory q;
   private static final String[] r;

   public SubscriptionNotifier(String var1) {
      this.k = var1;
   }

   public void start() {
      this.a(true);
      String var1 = this.serverConfig.getHostname();
      String[] var5 = r;
      int var2 = this.serverConfig.getIntProperty(var5[7], 8080);
      String var3 = this.serverConfig.getProperty(var5[55]);

      label37: {
         try {
            if (var3 != null && var3.length() != 0) {
               break label37;
            }
         } catch (MalformedURLException var8) {
            throw a(var8);
         }

         var3 = var1;
      }

      try {
         String var10003 = InetAddressUtil.getHostForUrl(var3);
         var5 = r;
         this.g = new URL(var5[16] + var10003 + ":" + var2);
         a.log(Level.CONFIG, var5[42] + this.g.toString() + var5[10]);
      } catch (MalformedURLException var6) {
         throw new RuntimeException(var6);
      }

      SubscriptionNotifier var10000;
      boolean var10001;
      long var10002;
      label28: {
         try {
            this.subscriptionManager.setAggregator(this.aggregator);
            this.m = new m(this);
            this.n = new n(this);
            this.o = new o(this);
            var10000 = this;
            var10001 = false;
            if (this.i.get()) {
               var10002 = this.h.get();
               break label28;
            }
         } catch (MalformedURLException var7) {
            throw a(var7);
         }

         var10002 = 0L;
      }

      var10000.a(var10001, var10002);
      this.l.set(true);
   }

   public void stop() {
      this.l.set(false);
   }

   public boolean isRunning() {
      return this.l.get();
   }

   private boolean a(boolean param1) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: bipush 0
      // 001: istore 2
      // 002: aload 0
      // 003: getfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier.serverConfig Lcom/l7tech/server/ServerConfig;
      // 006: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.SERVERCONFIG_PROP_NOTIFY_INTERVAL Ljava/lang/String;
      // 009: invokevirtual com/l7tech/server/ServerConfig.getProperty (Ljava/lang/String;)Ljava/lang/String;
      // 00c: astore 5
      // 00e: aload 5
      // 010: ifnull 069
      // 013: iload 1
      // 014: ifeq 037
      // 017: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a Ljava/util/logging/Logger;
      // 01a: aload 5
      // 01c: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 01f: bipush 4
      // 020: aaload
      // 021: swap
      // 022: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 025: bipush 39
      // 027: aaload
      // 028: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // 02d: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 030: goto 037
      // 033: invokestatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 036: athrow
      // 037: aload 5
      // 039: getstatic com/l7tech/util/TimeUnit.MILLIS Lcom/l7tech/util/TimeUnit;
      // 03c: invokestatic com/l7tech/util/TimeUnit.parse (Ljava/lang/String;Lcom/l7tech/util/TimeUnit;)J
      // 03f: lstore 3
      // 040: goto 07c
      // 043: astore 6
      // 045: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a Ljava/util/logging/Logger;
      // 048: aload 5
      // 04a: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 04d: astore 7
      // 04f: aload 7
      // 051: bipush 29
      // 053: aaload
      // 054: swap
      // 055: aload 7
      // 057: bipush 39
      // 059: aaload
      // 05a: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // 05f: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 062: ldc2_w 60000
      // 065: lstore 3
      // 066: goto 07c
      // 069: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a Ljava/util/logging/Logger;
      // 06c: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 06f: astore 7
      // 071: aload 7
      // 073: bipush 3
      // 074: aaload
      // 075: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 078: ldc2_w 60000
      // 07b: lstore 3
      // 07c: aload 0
      // 07d: getfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier.h Ljava/util/concurrent/atomic/AtomicLong;
      // 080: invokevirtual java/util/concurrent/atomic/AtomicLong.get ()J
      // 083: lload 3
      // 084: lcmp
      // 085: ifeq 08a
      // 088: bipush 1
      // 089: istore 2
      // 08a: aload 0
      // 08b: getfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier.h Ljava/util/concurrent/atomic/AtomicLong;
      // 08e: lload 3
      // 08f: invokevirtual java/util/concurrent/atomic/AtomicLong.set (J)V
      // 092: aload 0
      // 093: getfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier.serverConfig Lcom/l7tech/server/ServerConfig;
      // 096: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.SERVERCONFIG_PROP_ESM_ENABLED Ljava/lang/String;
      // 099: invokevirtual com/l7tech/server/ServerConfig.getProperty (Ljava/lang/String;)Ljava/lang/String;
      // 09c: astore 4
      // 09e: aload 4
      // 0a0: ifnull 11d
      // 0a3: iload 1
      // 0a4: ifeq 0cf
      // 0a7: goto 0ae
      // 0aa: invokestatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0ad: athrow
      // 0ae: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a Ljava/util/logging/Logger;
      // 0b1: aload 4
      // 0b3: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 0b6: bipush 70
      // 0b8: aaload
      // 0b9: swap
      // 0ba: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 0bd: bipush 39
      // 0bf: aaload
      // 0c0: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // 0c5: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 0c8: goto 0cf
      // 0cb: invokestatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0ce: athrow
      // 0cf: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 0d2: bipush 21
      // 0d4: aaload
      // 0d5: aload 4
      // 0d7: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z
      // 0da: ifne 0f2
      // 0dd: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 0e0: bipush 80
      // 0e2: aaload
      // 0e3: aload 4
      // 0e5: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z
      // 0e8: ifeq 0fb
      // 0eb: goto 0f2
      // 0ee: invokestatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0f1: athrow
      // 0f2: aload 4
      // 0f4: invokestatic java/lang/Boolean.parseBoolean (Ljava/lang/String;)Z
      // 0f7: istore 3
      // 0f8: goto 12b
      // 0fb: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a Ljava/util/logging/Logger;
      // 0fe: aload 4
      // 100: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 103: astore 7
      // 105: aload 7
      // 107: bipush 40
      // 109: aaload
      // 10a: swap
      // 10b: aload 7
      // 10d: bipush 39
      // 10f: aaload
      // 110: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // 115: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 118: bipush 1
      // 119: istore 3
      // 11a: goto 12b
      // 11d: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a Ljava/util/logging/Logger;
      // 120: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 123: bipush 64
      // 125: aaload
      // 126: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 129: bipush 1
      // 12a: istore 3
      // 12b: aload 0
      // 12c: getfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier.i Ljava/util/concurrent/atomic/AtomicBoolean;
      // 12f: invokevirtual java/util/concurrent/atomic/AtomicBoolean.get ()Z
      // 132: iload 3
      // 133: if_icmpeq 138
      // 136: bipush 1
      // 137: istore 2
      // 138: aload 0
      // 139: getfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier.i Ljava/util/concurrent/atomic/AtomicBoolean;
      // 13c: iload 3
      // 13d: invokevirtual java/util/concurrent/atomic/AtomicBoolean.set (Z)V
      // 140: iload 2
      // 141: ireturn
      // try (9 -> 22): 23 java/lang/NumberFormatException
      // try (9 -> 29): 30 java/lang/NumberFormatException
      // try (73 -> 77): 78 java/lang/NumberFormatException
      // try (75 -> 91): 92 java/lang/NumberFormatException
      // try (94 -> 106): 107 java/lang/NumberFormatException
   }

   private void a(boolean var1, long var2) {
      label24: {
         try {
            if (var1) {
               Background.cancel(this.n);
               Background.cancel(this.o);
               break label24;
            }
         } catch (RuntimeException var5) {
            throw a(var5);
         }

         Background.scheduleRepeated(this.m, 123077L, 60000L);
      }

      try {
         if (var2 > 0L) {
            a.log(Level.INFO, r[87], var2);
            Background.scheduleRepeated(this.n, 15011L, var2);
            Background.scheduleRepeated(this.o, var2, (long)(2.49 * var2));
         }
      } catch (RuntimeException var4) {
         throw a(var4);
      }
   }

   public void renewSubscription(String var1, long var2, String var4) throws FaultMappableException {
      try {
         this.subscriptionManager.renewSubscription(var1, var2, var4);
      } catch (FindException var7) {
         this.a(var1, var7);
      } catch (UpdateException var8) {
         String[] var6 = r;
         a.log(Level.WARNING, var6[47], var8);
         throw new GenericWSRFExceptionFault(var6[60] + var1);
      }
   }

   public void unsubscribe(String var1) throws ResourceUnknownFault {
      try {
         this.subscriptionManager.deleteByUuid(var1);
      } catch (ObjectModelException var3) {
         this.a(var1, var3);
      }
   }

   private void a(String var1, Exception var2) throws ResourceUnknownFault {
      try {
         if (var2 != null) {
            a.log(Level.WARNING, r[68] + ExceptionUtils.getMessage(var2), var2);
         }
      } catch (ResourceUnknownFault var3) {
         throw a(var3);
      }

      throw new ResourceUnknownFault(r[14] + var1);
   }

   public String generateNewSubscriptionId() {
      return UUID.randomUUID().toString();
   }

   public Subscription subscribe(Subscribe var1, String var2) throws FaultMappableException, UnacceptableTerminationTimeFault {
      long var3 = System.currentTimeMillis();

      try {
         if (var1.getTermination() < var3) {
            throw new UnacceptableTerminationTimeFault(r[41]);
         }
      } catch (ObjectModelException var16) {
         throw a(var16);
      }

      try {
         PublishedService var5 = this.serviceCache.getCachedService(GoidUpgradeMapper.mapId(EntityType.SERVICE, var1.getServiceId()));

         try {
            if (var5 == null) {
               throw new ResourceUnknownFault(r[13] + var1.getServiceId());
            }
         } catch (ObjectModelException var14) {
            throw a(var14);
         }

         Subscription var6 = new Subscription(var1, this.generateNewSubscriptionId(), this.k);
         var6.setNotificationPolicyGuid(var2);
         SubscriptionKey var7 = new SubscriptionKey(var6.getPublishedServiceGoid(), var6.getTopic(), var6.getReferenceCallback());
         Collection var8 = this.subscriptionManager.findBySubscriptionKey(var7);
         if (!var8.isEmpty()) {
            String var9 = ((Subscription)var8.iterator().next()).getUuid();
            Logger var18 = a;
            String var10002 = var6.getReferenceCallback();
            String[] var17 = r;
            var18.warning(var17[37] + var9 + var17[58] + var10002 + var17[39]);
            throw new GenericWSRFExceptionFault(var17[71]);
         } else {
            this.subscriptionManager.save(var6);
            Logger var10000 = a;
            long var10 = (var6.getTermination() - System.currentTimeMillis()) / 1000L;
            String var12 = var6.getUuid();
            String[] var13 = r;
            var10000.info(var13[25] + var12 + var13[51] + var10 + var13[53]);
            return var6;
         }
      } catch (ObjectModelException var15) {
         throw new RuntimeException(var15);
      }
   }

   public void setApplicationContext(ApplicationContext var1) throws BeansException {
      this.f = new Auditor(this, var1, a);
      this.q = (AuditContextFactory)var1.getBean(r[77], AuditContextFactory.class);
   }

   @Override
   public void onServiceDisabled(Goid var1) {
      try {
         if (this.i.get()) {
            this.a(var1, SubscriptionNotifier.NotificationType.DISABLED);
         }
      } catch (RuntimeException var2) {
         throw a(var2);
      }
   }

   @Override
   public void onServiceEnabled(Goid var1) {
      try {
         if (this.i.get()) {
            this.a(var1, SubscriptionNotifier.NotificationType.ENABLED);
         }
      } catch (RuntimeException var2) {
         throw a(var2);
      }
   }

   private void a(Goid param1, SubscriptionNotifier.NotificationType param2) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 0
      // 001: getfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier.serverConfig Lcom/l7tech/server/ServerConfig;
      // 004: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 007: astore 11
      // 009: aload 11
      // 00b: bipush 15
      // 00d: aaload
      // 00e: bipush 1
      // 00f: invokevirtual com/l7tech/server/ServerConfig.getBooleanProperty (Ljava/lang/String;Z)Z
      // 012: istore 3
      // 013: iload 3
      // 014: ifne 01c
      // 017: return
      // 018: invokestatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 01b: athrow
      // 01c: aload 0
      // 01d: getfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier.subscriptionManager Lcom/l7tech/server/wsdm/subscription/SubscriptionManager;
      // 020: aload 0
      // 021: getfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier.k Ljava/lang/String;
      // 024: aload 1
      // 025: invokeinterface com/l7tech/server/wsdm/subscription/SubscriptionManager.findByNodeAndServiceGoid (Ljava/lang/String;Lcom/l7tech/objectmodel/Goid;)Ljava/util/Collection; 3
      // 02a: astore 4
      // 02c: goto 047
      // 02f: astore 5
      // 031: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a Ljava/util/logging/Logger;
      // 034: getstatic java/util/logging/Level.WARNING Ljava/util/logging/Level;
      // 037: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 03a: astore 11
      // 03c: aload 11
      // 03e: bipush 18
      // 040: aaload
      // 041: aload 5
      // 043: invokevirtual java/util/logging/Logger.log (Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
      // 046: return
      // 047: new java/util/ArrayList
      // 04a: dup
      // 04b: invokespecial java/util/ArrayList.<init> ()V
      // 04e: astore 5
      // 050: invokestatic java/lang/System.currentTimeMillis ()J
      // 053: lstore 6
      // 055: aload 4
      // 057: invokeinterface java/util/Collection.iterator ()Ljava/util/Iterator; 1
      // 05c: astore 8
      // 05e: aload 8
      // 060: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 065: ifeq 155
      // 068: aload 8
      // 06a: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 06f: checkcast com/l7tech/server/wsdm/subscription/Subscription
      // 072: astore 9
      // 074: aload 9
      // 076: invokevirtual com/l7tech/server/wsdm/subscription/Subscription.getPublishedServiceGoid ()Lcom/l7tech/objectmodel/Goid;
      // 079: aload 1
      // 07a: invokestatic com/l7tech/objectmodel/Goid.equals (Lcom/l7tech/objectmodel/Goid;Lcom/l7tech/objectmodel/Goid;)Z
      // 07d: ifne 087
      // 080: goto 05e
      // 083: invokestatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 086: athrow
      // 087: aload 9
      // 089: invokevirtual com/l7tech/server/wsdm/subscription/Subscription.getTermination ()J
      // 08c: lload 6
      // 08e: lcmp
      // 08f: ifge 0c6
      // 092: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a Ljava/util/logging/Logger;
      // 095: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.r [Ljava/lang/String;
      // 098: bipush 5
      // 099: aaload
      // 09a: bipush 2
      // 09b: anewarray 914
      // 09e: dup
      // 09f: bipush 0
      // 0a0: aload 9
      // 0a2: invokevirtual com/l7tech/server/wsdm/subscription/Subscription.getUuid ()Ljava/lang/String;
      // 0a5: aastore
      // 0a6: dup
      // 0a7: bipush 1
      // 0a8: invokestatic java/lang/System.currentTimeMillis ()J
      // 0ab: aload 9
      // 0ad: invokevirtual com/l7tech/server/wsdm/subscription/Subscription.getTermination ()J
      // 0b0: lsub
      // 0b1: ldc2_w 1000
      // 0b4: ldiv
      // 0b5: invokestatic java/lang/Long.valueOf (J)Ljava/lang/Long;
      // 0b8: aastore
      // 0b9: invokestatic java/text/MessageFormat.format (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      // 0bc: invokevirtual java/util/logging/Logger.info (Ljava/lang/String;)V
      // 0bf: goto 152
      // 0c2: invokestatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0c5: athrow
      // 0c6: aload 2
      // 0c7: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier$NotificationType.METRICS Lcom/l7tech/server/wsdm/subscription/SubscriptionNotifier$NotificationType;
      // 0ca: if_acmpne 0dd
      // 0cd: aload 9
      // 0cf: invokevirtual com/l7tech/server/wsdm/subscription/Subscription.getTopic ()I
      // 0d2: bipush 1
      // 0d3: if_icmpeq 0fe
      // 0d6: goto 0dd
      // 0d9: invokestatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0dc: athrow
      // 0dd: getstatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.e Ljava/util/EnumSet;
      // 0e0: aload 2
      // 0e1: invokevirtual java/util/EnumSet.contains (Ljava/lang/Object;)Z
      // 0e4: ifeq 152
      // 0e7: goto 0ee
      // 0ea: invokestatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0ed: athrow
      // 0ee: aload 9
      // 0f0: invokevirtual com/l7tech/server/wsdm/subscription/Subscription.getTopic ()I
      // 0f3: bipush 2
      // 0f4: if_icmpne 152
      // 0f7: goto 0fe
      // 0fa: invokestatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0fd: athrow
      // 0fe: new com/l7tech/server/wsdm/subscription/SubscriptionNotifier$ServiceStatusNotificationContext
      // 101: dup
      // 102: aload 0
      // 103: invokespecial com/l7tech/server/wsdm/subscription/SubscriptionNotifier$ServiceStatusNotificationContext.<init> (Lcom/l7tech/server/wsdm/subscription/SubscriptionNotifier;)V
      // 106: astore 10
      // 108: aload 10
      // 10a: aload 9
      // 10c: invokevirtual com/l7tech/server/wsdm/subscription/Subscription.getUuid ()Ljava/lang/String;
      // 10f: putfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier$ServiceStatusNotificationContext.subscriptionId Ljava/lang/String;
      // 112: aload 10
      // 114: aload 9
      // 116: invokevirtual com/l7tech/server/wsdm/subscription/Subscription.getEsmServiceGoid ()Lcom/l7tech/objectmodel/Goid;
      // 119: putfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier$ServiceStatusNotificationContext.esmServiceGoid Lcom/l7tech/objectmodel/Goid;
      // 11c: aload 10
      // 11e: aload 1
      // 11f: putfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier$ServiceStatusNotificationContext.serviceId Lcom/l7tech/objectmodel/Goid;
      // 122: aload 10
      // 124: aload 9
      // 126: invokevirtual com/l7tech/server/wsdm/subscription/Subscription.getReferenceCallback ()Ljava/lang/String;
      // 129: putfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier$ServiceStatusNotificationContext.target Ljava/lang/String;
      // 12c: aload 10
      // 12e: aload 0
      // 12f: aload 9
      // 131: invokevirtual com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Lcom/l7tech/server/wsdm/subscription/Subscription;)Ljava/lang/String;
      // 134: putfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier$ServiceStatusNotificationContext.refParamsXml Ljava/lang/String;
      // 137: aload 10
      // 139: aload 9
      // 13b: invokevirtual com/l7tech/server/wsdm/subscription/Subscription.getNotificationPolicyGuid ()Ljava/lang/String;
      // 13e: putfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier$ServiceStatusNotificationContext.notificationPolicyGuid Ljava/lang/String;
      // 141: aload 10
      // 143: lload 6
      // 145: putfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier$ServiceStatusNotificationContext.ts J
      // 148: aload 5
      // 14a: aload 10
      // 14c: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 151: pop
      // 152: goto 05e
      // 155: aload 5
      // 157: invokeinterface java/util/List.size ()I 1
      // 15c: ifgt 164
      // 15f: return
      // 160: invokestatic com/l7tech/server/wsdm/subscription/SubscriptionNotifier.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 163: athrow
      // 164: aload 0
      // 165: getfield com/l7tech/server/wsdm/subscription/SubscriptionNotifier.p Ljava/util/concurrent/ExecutorService;
      // 168: new com/l7tech/server/wsdm/subscription/h
      // 16b: dup
      // 16c: aload 0
      // 16d: aload 5
      // 16f: aload 2
      // 170: invokespecial com/l7tech/server/wsdm/subscription/h.<init> (Lcom/l7tech/server/wsdm/subscription/SubscriptionNotifier;Ljava/util/List;Lcom/l7tech/server/wsdm/subscription/SubscriptionNotifier$NotificationType;)V
      // 173: invokeinterface java/util/concurrent/ExecutorService.execute (Ljava/lang/Runnable;)V 2
      // 178: return
      // try (10 -> 13): 13 com/l7tech/objectmodel/FindException
      // try (15 -> 22): 23 com/l7tech/objectmodel/FindException
      // try (50 -> 56): 56 com/l7tech/objectmodel/FindException
      // try (58 -> 87): 87 com/l7tech/objectmodel/FindException
      // try (89 -> 96): 97 com/l7tech/objectmodel/FindException
      // try (92 -> 103): 104 com/l7tech/objectmodel/FindException
      // try (99 -> 110): 111 com/l7tech/objectmodel/FindException
      // try (150 -> 154): 154 com/l7tech/objectmodel/FindException
   }

   private void a(String var1, String var2, String var3) throws IOException {
      try {
         if (a.isLoggable(Level.FINEST)) {
            a.log(Level.FINEST, r[45], new String[]{var2, var1});
         }
      } catch (Exception var13) {
         throw a(var13);
      }

      PolicyEnforcementContext[] var4 = new PolicyEnforcementContext[]{null};
      AssertionStatus[] var5 = new AssertionStatus[]{AssertionStatus.SERVER_ERROR};

      try {
         this.q.doWithNewAuditContext(new i(this, var2, var4, var1, var3, var5), new j(this, var4, var5));
      } catch (Exception var11) {
         throw new IOException(var11);
      } finally {
         ResourceUtils.closeQuietly(var4);
      }
   }

   private boolean a(PolicyEnforcementContext var1, URL var2, String var3) {
      boolean var4 = false;
      GenericHttpClient var5 = this.httpClientFactory.createHttpClient(-1, -1, this.a(), this.b(), -1, null, null);
      GenericHttpRequestParams var6 = new GenericHttpRequestParams(var2);

      try {
         var6.setFollowRedirects(false);
         var6.setContentType(ContentTypeHeader.XML_DEFAULT);
         var6.addExtraHeader(new GenericHttpHeader(HttpConstants.HEADER_USER_AGENT, DEFAULT_USER_AGENT));
         var6.addExtraHeader(new GenericHttpHeader(SoapUtil.SOAPACTION, ""));
         if (Boolean.valueOf(this.serverConfig.getProperty(r[11]))) {
            var6.setUseExpectContinue(true);
         }
      } catch (Throwable var31) {
         throw a(var31);
      }

      try {
         if (Boolean.valueOf(this.serverConfig.getProperty(r[24]))) {
            var6.setUseKeepAlives(false);
         }
      } catch (Throwable var26) {
         throw a(var26);
      }

      try {
         if (r[69].equals(this.serverConfig.getProperty(r[22]))) {
            var6.setHttpVersion(HttpVersion.HTTP_VERSION_1_0);
         }
      } catch (Throwable var30) {
         throw a(var30);
      }

      GenericHttpRequest var7 = null;
      GenericHttpResponse var8 = null;

      try {
         var1.routingStarted();
         byte[] var9 = var3.getBytes(ContentTypeHeader.XML_DEFAULT.getEncoding());
         var6.setContentLength((long)var9.length);
         var7 = var5.createRequest(HttpMethod.POST, var6);
         if (var7 instanceof RerunnableHttpRequest var10) {
            var10.setInputStreamFactory(new k(this, var9));
         } else {
            var7.setInputStream(new ByteArrayInputStream(var9));
         }

         var8 = var7.getResponse();
         int var32 = var8.getStatus();
         if (var32 == 200) {
            var4 = true;
            this.f.logAndAudit(ServiceMessages.ESM_NOTIFY_SUCCESS, var2.toString(), Integer.toString(var32));
            if (a.isLoggable(Level.FINE)) {
               InputStream var11 = var8.getInputStream();

               try {
                  if (var11 != null) {
                     byte[] var12 = IOUtils.slurpStream(new ByteLimitInputStream(var11, 16, 10485760L));
                     Charset var13 = var8.getContentType().getEncoding();
                     Logger var10000 = a;
                     String var10001 = new String(var12, var13);
                     String[] var15 = r;
                     var10000.fine(var15[48] + var10001);
                  }
               } catch (Throwable var27) {
                  if (var11 != null) {
                     try {
                        var11.close();
                     } catch (Throwable var24) {
                        var27.addSuppressed(var24);
                     }
                  }

                  throw var27;
               }

               try {
                  if (var11 != null) {
                     var11.close();
                  }
               } catch (Throwable var25) {
                  throw a(var25);
               }
            }
         } else if (var32 < 300) {
            var4 = true;
            this.f.logAndAudit(ServiceMessages.ESM_NOTIFY_SUCCESS, var2.toString(), Integer.toString(var32));
         } else {
            this.f.logAndAudit(ServiceMessages.ESM_NOTIFY_FAILURE, var2.toString(), Integer.toString(var32));
         }
      } catch (IOException var28) {
         this.f
            .logAndAudit(
               ServiceMessages.ESM_NOTIFY_IO_ERROR,
               new String[]{var2.toString(), r[62], ExceptionUtils.getMessage(var28)},
               ExceptionUtils.getDebugException(var28)
            );
      } finally {
         ResourceUtils.closeQuietly(new Closeable[]{var7, var8});
         var1.routingFinished();
      }

      return var4;
   }

   private int a() {
      return this.a(r[32], 0, Integer.MAX_VALUE, 0);
   }

   private int b() {
      return this.a(r[52], 0, Integer.MAX_VALUE, 0);
   }

   private int a(String var1, int var2, int var3, int var4) {
      int var5 = var4;

      try {
         String var6 = this.serverConfig.getProperty(var1);
         if (var6 != null) {
            var5 = Integer.parseInt(var6);
            boolean var7 = false;
            if (var5 < var2) {
               var7 = true;
               int var8 = var4;
               int var9 = var2;
               String var10 = var1;
               String[] var24 = r;
               a.warning(var24[50] + var10 + var24[82] + var9 + var24[79] + var8 + var24[39]);
            } else if (var5 > var3) {
               var7 = true;
               int var11 = var4;
               int var12 = var3;
               String var13 = var1;
               String[] var25 = r;
               a.warning(var25[38] + var13 + var25[44] + var12 + var25[74] + var11 + var25[39]);
            }

            if (var7) {
               var5 = var4;
            }
         }
      } catch (SecurityException var21) {
         Logger var26 = a;
         String var14 = var21.getMessage();
         int var15 = var4;
         String var16 = var1;
         String[] var23 = r;
         var26.warning(var23[9] + var16 + var23[74] + var15 + var23[46] + var14);
      } catch (NumberFormatException var22) {
         Logger var10000 = a;
         String var17 = var22.getMessage();
         int var18 = var4;
         String var19 = var1;
         String[] var20 = r;
         var10000.warning(var20[28] + var19 + var20[74] + var18 + var20[17] + var17);
      }

      return var5;
   }

   @Override
   public void onServiceCreated(Goid var1) {
      this.onServiceEnabled(var1);
   }

   @Override
   public void onServiceDeleted(Goid var1) {
      this.onServiceDisabled(var1);
   }

   public void pushMetricsNotifications(long var1) {
      String[] var13 = r;
      boolean var3 = this.serverConfig.getBooleanProperty(var13[49], true);

      try {
         if (!var3) {
            return;
         }
      } catch (FindException var15) {
         throw a(var15);
      }

      Map var4;
      try {
         var4 = this.subscriptionManager.findNotifiableMetricsForNode(this.k, var1);
      } catch (FindException var14) {
         a.log(Level.WARNING, r[1], var14);
         return;
      }

      ArrayList var5 = new ArrayList();
      long var6 = System.currentTimeMillis();

      for (Pair var9 : var4.values()) {
         Subscription var10 = (Subscription)var9.left;
         MetricsSummaryBin var11 = (MetricsSummaryBin)var9.right;
         SubscriptionNotifier.ServiceStatusNotificationContext var12 = new SubscriptionNotifier.ServiceStatusNotificationContext();
         var12.subscriptionId = var10.getUuid();
         var12.esmServiceGoid = var10.getEsmServiceGoid();
         var12.serviceId = var10.getPublishedServiceGoid();
         var12.target = var10.getReferenceCallback();
         var12.refParamsXml = this.a(var10);
         var12.notificationPolicyGuid = var10.getNotificationPolicyGuid();
         var12.ts = var6;
         var12.bin = var11;
         var5.add(var12);
      }

      this.p.execute(new l(this, var5));
   }

   private String a(Subscription var1) {
      String var2 = var1.getReferenceParams();

      try {
         if (var2 == null) {
            return "";
         }
      } catch (IOException var14) {
         throw a(var14);
      }

      StringBuilder var3 = new StringBuilder();

      for (Element var4 = XmlUtil.findFirstChildElement(XmlUtil.stringAsDocument(var2).getDocumentElement());
         var4 != null;
         var4 = XmlUtil.findNextElementSibling(var4)
      ) {
         String[] var8 = r;
         var4.setAttributeNS(var8[76], var8[65], var8[26]);
         PoolByteArrayOutputStream var5 = new PoolByteArrayOutputStream(1024);

         try {
            XmlUtil.nodeToOutputStreamWithApacheXmlSec(var4, var5);
            var3.append(var5.toString(Charsets.UTF8));
         } catch (IOException var12) {
            this.f
               .logAndAudit(
                  ServiceMessages.ESM_NOTIFY_IO_ERROR,
                  new String[]{var1.getReferenceCallback(), var1.getNotificationPolicyGuid(), ExceptionUtils.getMessage(var12)},
                  ExceptionUtils.getDebugException(var12)
               );
         } finally {
            var5.close();
         }
      }

      return var3.toString();
   }

   private String a(SubscriptionNotifier.ServiceStatusNotificationContext var1, SubscriptionNotifier.NotificationType var2) throws IOException {
      SubscriptionNotifier var10000;
      String var10001;
      label30: {
         try {
            var10000 = this;
            if (var2 == SubscriptionNotifier.NotificationType.ENABLED) {
               var10001 = r[20];
               break label30;
            }
         } catch (IOException var6) {
            throw a(var6);
         }

         String[] var4 = r;
         var10001 = var4[63];
      }

      String var3 = var10000.a(var10001, var1);

      Object[] var10002;
      Object[] var10003;
      byte var10004;
      String var10005;
      label22: {
         try {
            var7 = a;
            var10001 = r[2];
            var10002 = new Object[2];
            var10003 = var10002;
            var10004 = 0;
            if (var2 == SubscriptionNotifier.NotificationType.ENABLED) {
               var10005 = r[54];
               break label22;
            }
         } catch (IOException var5) {
            throw a(var5);
         }

         var10005 = r[75];
      }

      var10003[var10004] = var10005;
      var10002[1] = var1.eventId;
      var7.info(MessageFormat.format(var10001, var10002));
      return var3;
   }

   private String a(SubscriptionNotifier.ServiceStatusNotificationContext var1) throws IOException {
      String[] var8 = r;
      String var2 = this.a(var8[0], var1);
      a.info(var8[8] + var1.eventId);
      long var3 = System.currentTimeMillis() - var1.bin.getStartTime();

      boolean var5;
      try {
         PublishedService var6 = this.serviceCache.getCachedService(var1.serviceId);

         boolean var10000;
         label22: {
            try {
               if (!var6.isDisabled()) {
                  var10000 = true;
                  break label22;
               }
            } catch (Exception var9) {
               throw a(var9);
            }

            var10000 = false;
         }

         var5 = var10000;
      } catch (Exception var10) {
         var8 = r;
         a.log(Level.WARNING, var8[27], var10);
         var5 = false;
      }

      MetricsRequestContext var11 = new MetricsRequestContext(var1.bin, var5, this.g, var3);
      StringBuffer var7 = new StringBuffer();
      String var10001 = QoSMetricsService.outputResourceID(var11);
      var8 = r;
      var7.append(var8[56] + var10001 + var8[23]);
      var7.append(var8[6] + QoSMetricsService.outputOperationalStatus(var11) + var8[85]);
      var7.append(var8[6] + QoSMetricsService.outputNrRequests(var11) + var8[85]);
      var7.append(var8[6] + QoSMetricsService.outputNrSuccessRequests(var11) + var8[85]);
      var7.append(var8[6] + QoSMetricsService.outputNrFailedRequests(var11) + var8[85]);
      var7.append(var8[6] + QoSMetricsService.outputThroughput(var11) + var8[85]);
      var7.append(var8[6] + QoSMetricsService.outputAvgResponseTime(var11) + var8[85]);
      var7.append(var8[6] + QoSMetricsService.outputMaxResponseTime(var11) + var8[85]);
      var7.append(var8[6] + QoSMetricsService.outputLastResponseTime(var11) + var8[85]);
      var7.append(var8[6] + QoSMetricsService.outputServiceTime(var11) + var8[85]);
      return var2.replace(var8[73], var7.toString());
   }

   private String a(String var1, SubscriptionNotifier.ServiceStatusNotificationContext var2) throws IOException {
      ClassLoader var3 = SubscriptionNotifier.class.getClassLoader();
      String[] var9 = r;
      String var4 = var9[30] + var1;
      InputStream var6 = var3.getResourceAsStream(var4);

      String var5;
      try {
         try {
            if (var6 == null) {
               throw new FileNotFoundException(var4);
            }
         } catch (Throwable var12) {
            throw a(var12);
         }

         var5 = new String(IOUtils.slurpStream(var6));
      } catch (Throwable var13) {
         if (var6 != null) {
            try {
               var6.close();
            } catch (Throwable var10) {
               var13.addSuppressed(var10);
            }
         }

         throw var13;
      }

      try {
         if (var6 != null) {
            var6.close();
         }
      } catch (Throwable var11) {
         throw a(var11);
      }

      String var20 = this.generateNewSubscriptionId();
      var2.eventId = var20;
      var9 = r;
      var5 = var5.replace(var9[19], var2.target);
      var5 = var5.replace(var9[81], var2.refParamsXml);
      var5 = var5.replace(var9[33], var2.subscriptionId);
      var5 = var5.replace(var9[84], this.a(var2.esmServiceGoid));
      var5 = var5.replace(var9[31], var9[86] + var20);
      var5 = var5.replace(var9[43], this.g.toString() + var9[61] + var2.serviceId);
      return var5.replace(var9[72], ISO8601Date.format(new Date(var2.ts)));
   }

   private String a(Goid var1) {
      String var2 = null;
      PublishedService var3 = this.serviceCache.getCachedService(var1);
      if (var3 != null) {
         var2 = this.g.toString() + var3.getRoutingUri();
      } else {
         String var4 = r[59];

         for (PublishedService var6 : this.serviceCache.getInternalServices()) {
            if (var4.equals(var6.getWsdlUrl())) {
               var2 = this.g.toString() + var6.getRoutingUri();
               this.f.logAndAudit(ServiceMessages.ESM_SUBSCRIPTION_SERVICE_GONE, Goid.toString(var1), var2);
               break;
            }
         }

         if (var2 == null) {
            var2 = SoapConstants.WSA_NO_ADDRESS;
            this.f.logAndAudit(ServiceMessages.ESM_NO_SUBSCRIPTION_SERVICE, Goid.toString(var1), var2);
         }
      }

      return var2;
   }

   static {
      String[] var5 = new String[89];
      int var3 = 0;
      String var2 = "r8q1OBvY#w1JH\u0015D:i\u001ci9d:E^\u001bH8%>@U_\u001c9j,@]R_6q1FUH&o2w.@X^\u001c,5%\tUTH>c1JZOU8kxN^UY%d,L_\u001bGfxUK$a5\u0007UTH>c1JZOU8kv@UOY%s9E\u001bXP\"v,LI\u001bL%j(LIOEwk7]\u001b]S\"k<\u0007\u001bnO>k?\tOSYwa=OZNP#%7O\u001b\r\fg5h\tVH\u0012?z8p6M\u001bxS9c1N\u001bkN8u=[OB\u001cpr+MV\u0015R8q1ORX]#l7G\u0015RR#`*_ZW\u001bwr1]S\u001bJ6i-L\u001b\u001c<u0k7[RU[wv-KHXN>u,@TU\u001c,5%\tY^_6p+L\u001bRHw` YRIY3%#\u0018F\u001bO2f7G_H\u001c6b7`\u001cw%x\t\u001b\u001b\u001cw%x\t\u0007LO%cu[K\u0001n2v7\\IXY\u0007w7Y^IH.S9EN^\u007f?d6N^uS#l>@XZH>j6\u00171\u001b\u001cw%x\t\u001b\u001b\u001cw%x\t\u001b\u0007K$w>\u0004IK\u0006\u0019`/\u007fZWI2vf#\u000f_;p+]^IT#q(YTIH\u001fq2q*@XH\u001c9j,@]R_6q1FU\u001b[2k=[ZOY3%\u0018\u007f6k6FO\u001b]4f=ZH\u001bL%j(LIOEw\"\u0002\u001by\u0017U8M,]KnO2@ Y^XH\u0014j6]RUI2\u000eY$h+D\u0016\u000b\u0012b+/Z_W\u0013r8%+LIMU4`x^ROTwL\u001c\t\u001fh?`xZNYO4w1YORS9%1M\u001bROwp6BUTK9%\u0015O2w.@X^q2q*@XHy9d:E^_\u0007T#q(\u0013\u0014\u0014\r\u001b{%=[ITNwl+\u0013\u001b\u001ci9d:E^\u001bH8%>@U_\u001c\u0004p:ZXIU'q1FUH\u0016bs[|wdlo\u0016Z\fhi|y\u0003Z\u0006\re\u001fb\u0013r8q1OBzJ6l4HYWYy}5E\u0004H%p=\rU8M,]KmY%v1FUb\u001cw%x\t\u001b\u001b\u001cw%x\t\u001b\u001b\u0000xr+[]\u0016N'?\u0016LLm];p=Z\u00051\u001cw%x\t\u001b\u001b\u001cw%x\t\u0007\u0014K$w>\u0004IK\u0006\u0005`+FNI_2U*FK^N#|\u000eHWNY\u0014m9G\\^r8q1ORX]#l7G\u00051\u0011U8M,]KuS\u001c`=YzWU!`\u001cr2rxZNYO4w1YORS9%*L\\RO#`*L_\u001b\u0004H%p= Y%w7[\u001b\\Y#q1G\\\u001bO2w.@X^\u001c1w7D\u001bX]4m=\u0017\u007f6k6FO\u001bL6w+L\u001bKN8u=[OB\u001cpYi9d:E^\u001bH8%(HIHYw@\u000bd\u001buS#l>@XZH>j6\t_^P6|xYITL2w,P\u001b\u0013K$a5\u0007UTH>c1JZOU8kv@UOY%s9E\u0012\u001bK>q0\tMZP\"`x\u000e._8hwE\fOY4mwZ^IJ2ww^H_Qxv-KHXN>u,@TU\u0013%`+FNI_2vw\u0016bs[|wd~j\u0012K\fvnnu\u0013Z\u0006\re\u001fb\u0016U8J-]xTR9`;]RTR\u0003l5LTNH\u001bbs[|wdhi\u0015V\u001b{rkh\u001eJ\u0016vr\u007fc\t!\u0006\re\u0019K$a5\u0007UTH>c1JZOU8kvLUZ^;`<\u0016\u0013 v<D\u0014^O:v-KHXN>u,@TUO\u001aK$a5\u0007UTH>c1JZOU8kv@UOY%s9EKz8p6M\u001b_I'i1JZOYwv-KHXN>u,@TU\u0010wk7]\u001bXN2d,@U\\\u001c9`/\tHN^$f*@KOU8kt\t_NL;l;HO^\u001c8cx\u000e\u001f\u007f8k>@\\NN2ax_ZWI2%>FI\u001bL%j(LIOEw\"\u0002\u001byMi9d:E^\u001bH8%(HIHYw@\u000bd\u001b^R6g4L_\u001bL%j(LIOEw-/Z_V\u00129j,@]R_6q1FU\u0015Y9d:E^_\u0015wr1]S\u001bJ6i-L\u001b\u001c+\u007f6k6FO\u001bT6s=\tZ\u001bH2w5@UZH>j6\tORQ2%1G\u001bOT2%(HHO\u0012\u000fi$l6N\u001bho\u0010%\r{w\u001b\u001b\u0017bs[|wdhn\u0014Z\u000b\u007fxdi\u0005I\u0007w\u001fe\u0018\t\u0019\u001b{%1Z\u001bz~\u0018S\u001d\tOSYwh9QRVI:%\u007f\u001fo2k<@U\\\u001c9j,@]R_6q1FU\u001bGgxx]T\u001bGfx\r\u001b{%=[ITNwl+\u0013\u001b\u001di9d:E^\u001bH8%-Y_ZH2%+\\YH_%l(]RTR'r8q1ORX]#l7G\u001bO]%b=]\u001bIY$u7G_^Xw7h\u0019\u001bLU#mx\u0015O2w.@X^q2q*@XHy9d:E^_\u001f\u007f8k>@\\NN2ax_ZWI2%>FI\u001bL%j(LIOEw\"\u0010\u001c l4E\u001b^D'l*L\u001bRRw\u0010U8J-]i^]3Q1D^TI#\b\u001c$`;FU_O\u0007Y9d:E^_\u000b_;p+]^It8v,`\u001cw%x\t\u001b\u001b\u001cw%x\t\u0007LO%cu[K\u0001n2v7\\IXY\u0007w7Y^IH.S9EN^\u007f?d6N^uS#l>@XZH>j6\u00171\u001b\u001cw%x\t\u001b\u001b\u001cw%x\t\u001b\u0007K$w>\u0004IK\u0006\u0019`/\u007fZWI2vf#\u0002\u00115\u000b\u001bwc7[\u001bnn\u001b%\u007f#Z>i=\u0013\u0014\u0014c\bv+NRUH2w6HW\u0014Y$h+D\u0016\u000b\u0012b+/Z_W\u001ei9d:E^\u001bH8%-Y_ZH2%+\\YH_%l(]RTRw\t\u0013$`*_RXYx\u0003rxD\u0015r8q1OBnR6s9@WZ^;`vQVWTK$a5\u0007UTH>c1JZOU8kvLUZ^;`<\tXWI$q=[\u001bKN8u=[OB\u001c9j,\t]TI9av\tnHU9bx]S^\u001c3`>HNWHwj>\t\r\u000b\fg5xDH\u0015\u0014u$W=O^IY9f=yZI]:`,LI\u001bp6|=[\f\u0016o2f-[^hL6kunZOY d!\u0006M\u001aK$a5\u0007UTH>c1JZOU8kv@UOY%s9E\"o\"g+JIRL#l7G\u001bKY%v1ZO^R4`xYIT^;`5\u0013\u001b\u0003\ry5>z8p6M\u001bxS9c1N\u001bkN8u=[OB\u001cpr+MV\u0015R8q1ORX]#l7G\u0015^R6g4L_\u001c\u001c l,A\u001bM];p=\t\u001c<x\"u4@XZH2%+\\YH_%l(]RTRy%\bE^ZO2%;HUXY;%=QRHH>k?\tHN^$f*@KOU8kv\u0019bs[|wdus\u0000Z\f`v~o\u0003D\u0015yde\u0018\t!\u0006\u001bbs[|wdln\u0016U\bl\u007fdq\u0012Q\n`xhc\t!\u0006\re\u0018\u001b{%-ZRU[wa=OZNP#%.HWNYw\"\bX>v9KW^X$T#q(\u0013\u0014\u0014K rv^\b\u0015S%bw\u001b\u000b\u000b\tx5`\u0006Z_X%`+ZRU[\u0013]\"a1]xTR#` ]}Z_#j*P\u0019K$a5\u0007UTH>c1JZOU8kvLUZ^;`<\u0018\u001b{%-ZRU[wa=OZNP#%.HWNYw\"\u0005Z6i+L\u001cbs[|wdiy\u0011@\nluxy\bU\u0019{zvo\b[|w\u001fe\u0019\u001b{%1Z\u001byy\u001bJ\u000f\tOSYwh1GRVI:%\u007f\u0019p6|=[\f\u0016o2f-[^hL6kunZOY d!\u001cbs[|wd~o\u001aZ\u000b|yhc\u0004S\u001bvnip\b[|w\u001feb\u001cw%x\t\u001b\u001b\u001cw%x\t\u001b\u001b\u0000xr+[]\u0016N'?\u0016LLm];p=Z\u00051\u001cw%x\t\u001b\u001b\u001cw%x\t\u0007\u0014K$w>\u0004IK\u0006\u0005`+FNI_2U*FK^N#|\u000eHWNY\u0014m9G\\^r8q1ORX]#l7G\u00051\tI%kb\\NRXm";
      int var4 = "r8q1OBvY#w1JH\u0015D:i\u001ci9d:E^\u001bH8%>@U_\u001c9j,@]R_6q1FUH&o2w.@X^\u001c,5%\tUTH>c1JZOU8kxN^UY%d,L_\u001bGfxUK$a5\u0007UTH>c1JZOU8kv@UOY%s9E\u001bXP\"v,LI\u001bL%j(LIOEwk7]\u001b]S\"k<\u0007\u001bnO>k?\tOSYwa=OZNP#%7O\u001b\r\fg5h\tVH\u0012?z8p6M\u001bxS9c1N\u001bkN8u=[OB\u001cpr+MV\u0015R8q1ORX]#l7G\u0015RR#`*_ZW\u001bwr1]S\u001bJ6i-L\u001b\u001c<u0k7[RU[wv-KHXN>u,@TU\u001c,5%\tY^_6p+L\u001bRHw` YRIY3%#\u0018F\u001bO2f7G_H\u001c6b7`\u001cw%x\t\u001b\u001b\u001cw%x\t\u0007LO%cu[K\u0001n2v7\\IXY\u0007w7Y^IH.S9EN^\u007f?d6N^uS#l>@XZH>j6\u00171\u001b\u001cw%x\t\u001b\u001b\u001cw%x\t\u001b\u0007K$w>\u0004IK\u0006\u0019`/\u007fZWI2vf#\u000f_;p+]^IT#q(YTIH\u001fq2q*@XH\u001c9j,@]R_6q1FU\u001b[2k=[ZOY3%\u0018\u007f6k6FO\u001b]4f=ZH\u001bL%j(LIOEw\"\u0002\u001by\u0017U8M,]KnO2@ Y^XH\u0014j6]RUI2\u000eY$h+D\u0016\u000b\u0012b+/Z_W\u0013r8%+LIMU4`x^ROTwL\u001c\t\u001fh?`xZNYO4w1YORS9%1M\u001bROwp6BUTK9%\u0015O2w.@X^q2q*@XHy9d:E^_\u0007T#q(\u0013\u0014\u0014\r\u001b{%=[ITNwl+\u0013\u001b\u001ci9d:E^\u001bH8%>@U_\u001c\u0004p:ZXIU'q1FUH\u0016bs[|wdlo\u0016Z\fhi|y\u0003Z\u0006\re\u001fb\u0013r8q1OBzJ6l4HYWYy}5E\u0004H%p=\rU8M,]KmY%v1FUb\u001cw%x\t\u001b\u001b\u001cw%x\t\u001b\u001b\u0000xr+[]\u0016N'?\u0016LLm];p=Z\u00051\u001cw%x\t\u001b\u001b\u001cw%x\t\u0007\u0014K$w>\u0004IK\u0006\u0005`+FNI_2U*FK^N#|\u000eHWNY\u0014m9G\\^r8q1ORX]#l7G\u00051\u0011U8M,]KuS\u001c`=YzWU!`\u001cr2rxZNYO4w1YORS9%*L\\RO#`*L_\u001b\u0004H%p= Y%w7[\u001b\\Y#q1G\\\u001bO2w.@X^\u001c1w7D\u001bX]4m=\u0017\u007f6k6FO\u001bL6w+L\u001bKN8u=[OB\u001cpYi9d:E^\u001bH8%(HIHYw@\u000bd\u001buS#l>@XZH>j6\t_^P6|xYITL2w,P\u001b\u0013K$a5\u0007UTH>c1JZOU8kv@UOY%s9E\u0012\u001bK>q0\tMZP\"`x\u000e._8hwE\fOY4mwZ^IJ2ww^H_Qxv-KHXN>u,@TU\u0013%`+FNI_2vw\u0016bs[|wd~j\u0012K\fvnnu\u0013Z\u0006\re\u001fb\u0016U8J-]xTR9`;]RTR\u0003l5LTNH\u001bbs[|wdhi\u0015V\u001b{rkh\u001eJ\u0016vr\u007fc\t!\u0006\re\u0019K$a5\u0007UTH>c1JZOU8kvLUZ^;`<\u0016\u0013 v<D\u0014^O:v-KHXN>u,@TUO\u001aK$a5\u0007UTH>c1JZOU8kv@UOY%s9EKz8p6M\u001b_I'i1JZOYwv-KHXN>u,@TU\u0010wk7]\u001bXN2d,@U\\\u001c9`/\tHN^$f*@KOU8kt\t_NL;l;HO^\u001c8cx\u000e\u001f\u007f8k>@\\NN2ax_ZWI2%>FI\u001bL%j(LIOEw\"\u0002\u001byMi9d:E^\u001bH8%(HIHYw@\u000bd\u001b^R6g4L_\u001bL%j(LIOEw-/Z_V\u00129j,@]R_6q1FU\u0015Y9d:E^_\u0015wr1]S\u001bJ6i-L\u001b\u001c+\u007f6k6FO\u001bT6s=\tZ\u001bH2w5@UZH>j6\tORQ2%1G\u001bOT2%(HHO\u0012\u000fi$l6N\u001bho\u0010%\r{w\u001b\u001b\u0017bs[|wdhn\u0014Z\u000b\u007fxdi\u0005I\u0007w\u001fe\u0018\t\u0019\u001b{%1Z\u001bz~\u0018S\u001d\tOSYwh9QRVI:%\u007f\u001fo2k<@U\\\u001c9j,@]R_6q1FU\u001bGgxx]T\u001bGfx\r\u001b{%=[ITNwl+\u0013\u001b\u001di9d:E^\u001bH8%-Y_ZH2%+\\YH_%l(]RTR'r8q1ORX]#l7G\u001bO]%b=]\u001bIY$u7G_^Xw7h\u0019\u001bLU#mx\u0015O2w.@X^q2q*@XHy9d:E^_\u001f\u007f8k>@\\NN2ax_ZWI2%>FI\u001bL%j(LIOEw\"\u0010\u001c l4E\u001b^D'l*L\u001bRRw\u0010U8J-]i^]3Q1D^TI#\b\u001c$`;FU_O\u0007Y9d:E^_\u000b_;p+]^It8v,`\u001cw%x\t\u001b\u001b\u001cw%x\t\u0007LO%cu[K\u0001n2v7\\IXY\u0007w7Y^IH.S9EN^\u007f?d6N^uS#l>@XZH>j6\u00171\u001b\u001cw%x\t\u001b\u001b\u001cw%x\t\u001b\u0007K$w>\u0004IK\u0006\u0019`/\u007fZWI2vf#\u0002\u00115\u000b\u001bwc7[\u001bnn\u001b%\u007f#Z>i=\u0013\u0014\u0014c\bv+NRUH2w6HW\u0014Y$h+D\u0016\u000b\u0012b+/Z_W\u001ei9d:E^\u001bH8%-Y_ZH2%+\\YH_%l(]RTRw\t\u0013$`*_RXYx\u0003rxD\u0015r8q1OBnR6s9@WZ^;`vQVWTK$a5\u0007UTH>c1JZOU8kvLUZ^;`<\tXWI$q=[\u001bKN8u=[OB\u001c9j,\t]TI9av\tnHU9bx]S^\u001c3`>HNWHwj>\t\r\u000b\fg5xDH\u0015\u0014u$W=O^IY9f=yZI]:`,LI\u001bp6|=[\f\u0016o2f-[^hL6kunZOY d!\u0006M\u001aK$a5\u0007UTH>c1JZOU8kv@UOY%s9E\"o\"g+JIRL#l7G\u001bKY%v1ZO^R4`xYIT^;`5\u0013\u001b\u0003\ry5>z8p6M\u001bxS9c1N\u001bkN8u=[OB\u001cpr+MV\u0015R8q1ORX]#l7G\u0015^R6g4L_\u001c\u001c l,A\u001bM];p=\t\u001c<x\"u4@XZH2%+\\YH_%l(]RTRy%\bE^ZO2%;HUXY;%=QRHH>k?\tHN^$f*@KOU8kv\u0019bs[|wdus\u0000Z\f`v~o\u0003D\u0015yde\u0018\t!\u0006\u001bbs[|wdln\u0016U\bl\u007fdq\u0012Q\n`xhc\t!\u0006\re\u0018\u001b{%-ZRU[wa=OZNP#%.HWNYw\"\bX>v9KW^X$T#q(\u0013\u0014\u0014K rv^\b\u0015S%bw\u001b\u000b\u000b\tx5`\u0006Z_X%`+ZRU[\u0013]\"a1]xTR#` ]}Z_#j*P\u0019K$a5\u0007UTH>c1JZOU8kvLUZ^;`<\u0018\u001b{%-ZRU[wa=OZNP#%.HWNYw\"\u0005Z6i+L\u001cbs[|wdiy\u0011@\nluxy\bU\u0019{zvo\b[|w\u001fe\u0019\u001b{%1Z\u001byy\u001bJ\u000f\tOSYwh1GRVI:%\u007f\u0019p6|=[\f\u0016o2f-[^hL6kunZOY d!\u001cbs[|wd~o\u001aZ\u000b|yhc\u0004S\u001bvnip\b[|w\u001feb\u001cw%x\t\u001b\u001b\u001cw%x\t\u001b\u001b\u0000xr+[]\u0016N'?\u0016LLm];p=Z\u00051\u001cw%x\t\u001b\u001b\u001cw%x\t\u0007\u0014K$w>\u0004IK\u0006\u0005`+FNI_2U*FK^N#|\u000eHWNY\u0014m9G\\^r8q1ORX]#l7G\u00051\tI%kb\\NRXm"
         .length();
      char var1 = 17;
      int var7 = -1;

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

         while (true) {
            String var9 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     r = var5;
                     String[] var10 = r;
                     CLUSTER_PROP_ESM_ENABLED = r[34];
                     PRODUCT = var10[83];
                     ESM_SUBSCRIPTION_SERVICE_NAME = var10[88];
                     ESM_SUBSCRIPTION_SERVICE_ROOT_WSDL = var10[12];
                     CLUSTER_PROP_NOTIFY_INTERVAL = var10[36];
                     ESM_SUBSCRIPTION_SERVICE_URI_PREFIX = var10[35];
                     a = Logger.getLogger(SubscriptionNotifier.class.getName());
                     String var11 = BuildInfo.getProductVersion();
                     var10001 = BuildInfo.getBuildNumber();
                     String[] var8 = r;
                     DEFAULT_USER_AGENT = var8[66] + var11 + var8[57] + var10001;
                     SERVERCONFIG_PROP_NOTIFY_INTERVAL = ClusterProperty.asServerConfigPropertyName(var8[67]);
                     SERVERCONFIG_PROP_ESM_ENABLED = ClusterProperty.asServerConfigPropertyName(var8[78]);
                     e = EnumSet.of(SubscriptionNotifier.NotificationType.DISABLED, SubscriptionNotifier.NotificationType.ENABLED);
                     return;
                  }

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

                  var2 = ",w.~\u000e\r\u0014\u0016z!;\u0019\r\u001a\fw4r\u001a\f\u0011\u0010zfu\u0005\f\u0011\u0019}%z\u001e\u0011\u0017\u001142z\u0019\u0013X\b}2sJ\b\u001d\r})\u007fJ\u0003H\u0002y55\u0019(G\u0002VJ+\r\u001dg%i\u0003\b\f\u0016{(;9\u001d\n\t}%~";
                  var4 = ",w.~\u000e\r\u0014\u0016z!;\u0019\r\u001a\fw4r\u001a\f\u0011\u0010zfu\u0005\f\u0011\u0019}%z\u001e\u0011\u0017\u001142z\u0019\u0013X\b}2sJ\b\u001d\r})\u007fJ\u0003H\u0002y55\u0019(G\u0002VJ+\r\u001dg%i\u0003\b\f\u0016{(;9\u001d\n\t}%~"
                     .length();
                  var1 = '<';
                  var7 = -1;
            }

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

   private static Throwable a(Throwable var0) {
      return var0;
   }

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

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 124;
            case 1 -> 23;
            case 2 -> 69;
            case 3 -> 24;
            case 4 -> 105;
            case 5 -> 123;
            default -> 123;
         });
      }

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

   private enum NotificationType {
      ENABLED,
      DISABLED,
      METRICS;

      // $VF: Failed to inline enum fields
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      static {
         String[] var0 = new String[3];
         int var4 = 0;
         String var3 = "l5\u0000X\u001f<t\bm2\u0012[\u00115um\u0007d>\u0015H\u001a:c";
         int var5 = "l5\u0000X\u001f<t\bm2\u0012[\u00115um\u0007d>\u0015H\u001a:c".length();
         char var2 = 7;
         int var1 = -1;

         while (true) {
            String var10002 = a(39, a(var3.substring(++var1, var1 + var2)));
            byte var10001 = -1;
            var0[var4++] = var10002;
            if ((var1 += var2) >= var5) {
               ENABLED = new SubscriptionNotifier.NotificationType();
               DISABLED = new SubscriptionNotifier.NotificationType();
               METRICS = new SubscriptionNotifier.NotificationType();
               return;
            }

            var2 = var3.charAt(var1);
         }
      }

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

         return var10000;
      }

      private static String a(int var0, char[] var1) {
         int var10003 = var1.length;
         int var10002 = var0;
         char[] var10001 = var1;
         int var10000 = var10003;

         for (int var2 = 0; var10000 > var2; var2++) {
            var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
               case 0 -> 14;
               case 1 -> 92;
               case 2 -> 102;
               case 3 -> 61;
               case 4 -> 116;
               case 5 -> 94;
               default -> 23;
            });
         }

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

   public class ServiceStatusNotificationContext {
      public String subscriptionId;
      public Goid serviceId;
      public String target;
      public String refParamsXml;
      public long ts;
      public String eventId;
      public String notificationPolicyGuid;
      public MetricsSummaryBin bin;
      public Goid esmServiceGoid;
   }
}
