From 1f2d26da76a5c4f2d33d0338111ea9ef30ec66e1 Mon Sep 17 00:00:00 2001 From: BenjaminArp <101420246+BenjaminArp@users.noreply.github.com> Date: Wed, 8 Apr 2026 15:50:50 +0200 Subject: [PATCH 01/52] Add parameterized abstract Test This enables the test execution for different Mitigation Approaches using the specified interface --- .../src/dev/arcovia/mitigation/ilp/Node.java | 62 +- .../mitigation/ilp/OptimizationManager.java | 16 +- .../dev/arcovia/mitigation/sat/Mechanic.java | 7 +- .../mitigation/sat/MitigationApproach.java | 9 + .../dev/arcovia/mitigation/smt/Mechanic.java | 45 + .../.classpath | 11 + .../.project | 28 + .../.settings/org.eclipse.jdt.core.prefs | 9 + .../META-INF/MANIFEST.MF | 21 + .../build.properties | 4 + .../results/violation_results.json | 1651 +++++++++++++ .../mitigation/evaluation/tests/TestBase.java | 181 ++ .../mitigation/evaluation/tests/ilpTest.java | 22 + .../mitigation/evaluation/tests/satTest.java | 35 + .../mitigation/evaluation/tests/smtTest.java | 23 + .../testresults/ -literalMapping.json | 1237 ++++++++++ .../testresults/ .cnf | 2105 +++++++++++++++++ 17 files changed, 5437 insertions(+), 29 deletions(-) create mode 100644 bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/MitigationApproach.java create mode 100644 bundles/dev.arcovia.mitigation.smt/src/dev/arcovia/mitigation/smt/Mechanic.java create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/.classpath create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/.project create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/.settings/org.eclipse.jdt.core.prefs create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/META-INF/MANIFEST.MF create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/build.properties create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/results/violation_results.json create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/ilpTest.java create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/smtTest.java create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/testresults/ -literalMapping.json create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/testresults/ .cnf diff --git a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Node.java b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Node.java index 47d9b7f6..4a0e61b2 100644 --- a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Node.java +++ b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Node.java @@ -66,7 +66,7 @@ public List> getPrevious() { return previous; } - public List getPossibleMitigations() { + public List getPossibleMitigations(boolean restrictedToAdding) { List mitigations = new ArrayList<>(); for (var constraint : violatingConstraints) { for (var mitigation : constraint.getMitigations()) { @@ -79,41 +79,56 @@ public List getPossibleMitigations() { mitigations.addAll(getDataMitigations(mitigation, ActionType.Adding)); } case DeleteNodeLabel -> { - mitigation.checkIfAllowed(vertex); - mitigations.add(new Mitigation(new ActionTerm(this.name, mitigation.label, ActionType.Removing), - mitigation.cost, getAllRequiredMitigations(mitigation))); + if (!restrictedToAdding) { + mitigation.checkIfAllowed(vertex); + mitigations.add(new Mitigation(new ActionTerm(this.name, mitigation.label, ActionType.Removing), + mitigation.cost, getAllRequiredMitigations(mitigation))); + } } case DeleteDataLabel -> { - mitigations.addAll(getDataMitigations(mitigation, ActionType.Removing)); + if (!restrictedToAdding) { + mitigations.addAll(getDataMitigations(mitigation, ActionType.Removing)); + } } case AddNode -> { - if (this.outgoingFlow == null) { - mitigations.add(new Mitigation(new ActionTerm(this.name, mitigation.label, ActionType.AddSink), - mitigation.cost, getAllRequiredMitigations(mitigation))); - } else { - mitigations.add(new Mitigation( - new ActionTerm(this.outgoingFlow.getId(), mitigation.label, ActionType.AddNode), - mitigation.cost, getAllRequiredMitigations(mitigation))); - mitigations.addAll(getNodeAdditionMitigations(mitigation)); + if (!restrictedToAdding) { + if (this.outgoingFlow == null) { + mitigations + .add(new Mitigation(new ActionTerm(this.name, mitigation.label, ActionType.AddSink), + mitigation.cost, getAllRequiredMitigations(mitigation))); + } else { + mitigations.add(new Mitigation( + new ActionTerm(this.outgoingFlow.getId(), mitigation.label, ActionType.AddNode), + mitigation.cost, getAllRequiredMitigations(mitigation))); + mitigations.addAll(getNodeAdditionMitigations(mitigation)); + } + } } case AddSink -> { - mitigations.add(new Mitigation(new ActionTerm(this.name, mitigation.label, ActionType.AddSink), - mitigation.cost, getAllRequiredMitigations(mitigation))); - mitigations.addAll(getSinkAdditionMitigations(mitigation)); + if (!restrictedToAdding) { + mitigations.add(new Mitigation(new ActionTerm(this.name, mitigation.label, ActionType.AddSink), + mitigation.cost, getAllRequiredMitigations(mitigation))); + mitigations.addAll(getSinkAdditionMitigations(mitigation)); + } } case DeleteNode -> { - mitigations.add(new Mitigation(new ActionTerm(this.name, mitigation.label, ActionType.RemoveNode), - mitigation.cost, getAllRequiredMitigations(mitigation))); - } - case DeleteFlow -> { - for (var incomingFlow : this.vertex.getPinFlowMap().values()) { + if (!restrictedToAdding) { mitigations - .add(new Mitigation(new ActionTerm(incomingFlow.getId(), null, ActionType.RemoveFlow), + .add(new Mitigation(new ActionTerm(this.name, mitigation.label, ActionType.RemoveNode), mitigation.cost, getAllRequiredMitigations(mitigation))); } } + case DeleteFlow -> { + if (!restrictedToAdding) { + for (var incomingFlow : this.vertex.getPinFlowMap().values()) { + mitigations.add( + new Mitigation(new ActionTerm(incomingFlow.getId(), null, ActionType.RemoveFlow), + mitigation.cost, getAllRequiredMitigations(mitigation))); + } + } + } default -> throw new IllegalArgumentException("Unexpected value: " + mitigation.type); @@ -194,8 +209,7 @@ private List> getAllRequiredMitigations(MitigationStrategy miti ActionType type; if (mitgation.type.toString().startsWith("Delete")) { type = ActionType.Removing; - } - else if (mitgation.type == MitigationType.AddNode) { + } else if (mitgation.type == MitigationType.AddNode) { type = ActionType.AddNode; } else if (mitgation.type == MitigationType.AddSink) { type = ActionType.AddSink; diff --git a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/OptimizationManager.java b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/OptimizationManager.java index 076f9aa6..3610979a 100644 --- a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/OptimizationManager.java +++ b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/OptimizationManager.java @@ -28,10 +28,11 @@ import dev.arcovia.mitigation.sat.CompositeLabel; import dev.arcovia.mitigation.sat.LabelCategory; +import dev.arcovia.mitigation.sat.MitigationApproach; import dev.arcovia.mitigation.sat.NodeLabel; import dev.arcovia.mitigation.sat.timeMeasurement; -public class OptimizationManager { +public class OptimizationManager implements MitigationApproach{ private final DataFlowDiagramAndDictionary dfd; Map outPinToAssignmentMap = new HashMap<>(); @@ -50,6 +51,8 @@ public class OptimizationManager { private List actions; private List result; + + private boolean isRestritedToLabelAddition = false; public OptimizationManager(String dfdLocation, List constraints) { this.dfd = new Web2DFDConverter().convert(new WebEditorConverterModel(dfdLocation)); @@ -91,7 +94,7 @@ public DataFlowDiagramAndDictionary repair() throws Exception { analyseDFD(); for (var node : violatingNodes) { - addMitigations(node.getPossibleMitigations()); + addMitigations(node.getPossibleMitigations(isRestritedToLabelAddition)); } for (var mitigation : allMitigations) { @@ -121,7 +124,7 @@ public DataFlowDiagramAndDictionary repair(timeMeasurement timer) throws Excepti timer.analysis(); for (var node : violatingNodes) { - addMitigations(node.getPossibleMitigations()); + addMitigations(node.getPossibleMitigations(isRestritedToLabelAddition)); } for (var mitigation : allMitigations) { @@ -143,7 +146,12 @@ public DataFlowDiagramAndDictionary repair(timeMeasurement timer) throws Excepti return dfd; } - + + @Override + public void restrictToLabelAddition() { + isRestritedToLabelAddition = true; + } + public int getCost() { int cost = 0; for (var mitigation : result) { diff --git a/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Mechanic.java b/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Mechanic.java index 44400b0f..9f73b36f 100644 --- a/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Mechanic.java +++ b/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Mechanic.java @@ -37,7 +37,7 @@ * constraints and repairing violations found within the DFD. It provides the ability to assess whether a DFD and its * constraints are consistent and suggests corrections to resolve violations. */ -public class Mechanic { +public class Mechanic implements MitigationApproach{ Map outPinToAss = new HashMap<>(); private final DataFlowDiagramAndDictionary dfd; @@ -715,4 +715,9 @@ private org.dataflowanalysis.dfd.datadictionary.Label getOrCreateLabel(DataDicti } return label; } + + @Override + public void restrictToLabelAddition() { + // already restricted due to design + } } diff --git a/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/MitigationApproach.java b/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/MitigationApproach.java new file mode 100644 index 00000000..245761cd --- /dev/null +++ b/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/MitigationApproach.java @@ -0,0 +1,9 @@ +package dev.arcovia.mitigation.sat; + +import org.dataflowanalysis.converter.dfd2web.DataFlowDiagramAndDictionary; + + +public interface MitigationApproach { + DataFlowDiagramAndDictionary repair() throws Exception; + void restrictToLabelAddition(); +} diff --git a/bundles/dev.arcovia.mitigation.smt/src/dev/arcovia/mitigation/smt/Mechanic.java b/bundles/dev.arcovia.mitigation.smt/src/dev/arcovia/mitigation/smt/Mechanic.java new file mode 100644 index 00000000..61a3c646 --- /dev/null +++ b/bundles/dev.arcovia.mitigation.smt/src/dev/arcovia/mitigation/smt/Mechanic.java @@ -0,0 +1,45 @@ +package dev.arcovia.mitigation.smt; + +import java.util.List; + +import org.dataflowanalysis.analysis.dsl.AnalysisConstraint; +import org.dataflowanalysis.converter.dfd2web.DataFlowDiagramAndDictionary; + +import dev.arcovia.mitigation.sat.MitigationApproach; +import dev.arcovia.mitigation.smt.config.Config; +import dev.arcovia.mitigation.smt.config.ConfigBuilder; +import dev.arcovia.mitigation.smt.preprocess.Preprocess; +import dev.arcovia.mitigation.smt.preprocess.PreprocessingResult; + +public class Mechanic implements MitigationApproach{ + + private Config config = null; + DataFlowDiagramAndDictionary dfd; + List constraints; + + public Mechanic(DataFlowDiagramAndDictionary dfd, List constraints) { + this.dfd = dfd; + this.constraints = constraints; + }; + + @Override + public DataFlowDiagramAndDictionary repair() throws Exception { + if (config == null) { + config = new ConfigBuilder().build(); + } + Preprocess preprocces = new Preprocess(); + PreprocessingResult preprocessingResult = preprocces.preprocess(dfd, constraints, config.onlyViolatingTFGs()); + SMT smt = new SMT(preprocessingResult, constraints, config); + var result = smt.repair(); + return result.repairedDFD(); + } + + @Override + public void restrictToLabelAddition() { + config = new ConfigBuilder().removeDataLabels(false) + .removeNodeLabels(false) + .build(); + + } + +} diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/.classpath b/tests/dev.arcovia.mitigation.evaluation.tests/.classpath new file mode 100644 index 00000000..675a5e29 --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/.classpath @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/.project b/tests/dev.arcovia.mitigation.evaluation.tests/.project new file mode 100644 index 00000000..1ac66382 --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/.project @@ -0,0 +1,28 @@ + + + dev.arcovia.mitigation.evaluation.tests + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/.settings/org.eclipse.jdt.core.prefs b/tests/dev.arcovia.mitigation.evaluation.tests/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..62ef3488 --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/META-INF/MANIFEST.MF b/tests/dev.arcovia.mitigation.evaluation.tests/META-INF/MANIFEST.MF new file mode 100644 index 00000000..cf3e68f7 --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/META-INF/MANIFEST.MF @@ -0,0 +1,21 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Tests +Bundle-SymbolicName: dev.arcovia.mitigation.evaluation.tests +Bundle-Version: 1.0.0.qualifier +Import-Package: org.junit.jupiter.api;version="5.8.1", + org.junit.jupiter.api.function;version="5.8.1", + org.junit.jupiter.params;version="5.8.1", + org.junit.jupiter.params.provider;version="5.8.1" +Require-Bundle: dev.arcovia.mitigation.sat, + org.dataflowanalysis.examplemodels, + org.dataflowanalysis.dfd.datadictionary;bundle-version="2.0.0", + org.dataflowanalysis.dfd.dataflowdiagram;bundle-version="2.0.0", + org.dataflowanalysis.analysis, + tools.mdsd.library.standalone.initialization, + org.dataflowanalysis.converter, + org.dataflowanalysis.analysis.dfd, + dev.arcovia.mitigation.ilp, + dev.arcovia.mitigation.smt +Automatic-Module-Name: dev.arcovia.mitigation.evaluation.tests +Bundle-RequiredExecutionEnvironment: JavaSE-17 diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/build.properties b/tests/dev.arcovia.mitigation.evaluation.tests/build.properties new file mode 100644 index 00000000..34d2e4d2 --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/results/violation_results.json b/tests/dev.arcovia.mitigation.evaluation.tests/results/violation_results.json new file mode 100644 index 00000000..95af8370 --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/results/violation_results.json @@ -0,0 +1,1651 @@ +[ { + "Approach" : "SAT", + "modelName" : "ewolff-kafka_0", + "violationsBefore" : 40, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff-kafka_3", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff-kafka_4", + "violationsBefore" : 32, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff-kafka_5", + "violationsBefore" : 66, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff-kafka_6", + "violationsBefore" : 56, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff-kafka_7", + "violationsBefore" : 30, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff-kafka_8", + "violationsBefore" : 33, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff-kafka_9", + "violationsBefore" : 36, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff-kafka_18", + "violationsBefore" : 57, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "anilallewar_0", + "violationsBefore" : 221, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "anilallewar_6", + "violationsBefore" : 209, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "anilallewar_7", + "violationsBefore" : 159, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "anilallewar_8", + "violationsBefore" : 189, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "anilallewar_9", + "violationsBefore" : 224, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "anilallewar_11", + "violationsBefore" : 192, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "anilallewar_12", + "violationsBefore" : 274, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "anilallewar_18", + "violationsBefore" : 288, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "mudigal-technologies_0", + "violationsBefore" : 122, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "mudigal-technologies_2", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "mudigal-technologies_4", + "violationsBefore" : 99, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "mudigal-technologies_5", + "violationsBefore" : 208, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "mudigal-technologies_7", + "violationsBefore" : 95, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "mudigal-technologies_8", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "mudigal-technologies_11", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "mudigal-technologies_18", + "violationsBefore" : 148, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "fernandoabcampos_18", + "violationsBefore" : 195, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "yidongnan_0", + "violationsBefore" : 121, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "yidongnan_2", + "violationsBefore" : 72, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "yidongnan_3", + "violationsBefore" : 208, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "yidongnan_4", + "violationsBefore" : 98, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "yidongnan_5", + "violationsBefore" : 208, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "yidongnan_6", + "violationsBefore" : 146, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "yidongnan_7", + "violationsBefore" : 78, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "yidongnan_8", + "violationsBefore" : 52, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "yidongnan_9", + "violationsBefore" : 99, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "yidongnan_18", + "violationsBefore" : 146, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_0", + "violationsBefore" : 11, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_1", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_2", + "violationsBefore" : 9, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_3", + "violationsBefore" : 24, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_4", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_5", + "violationsBefore" : 24, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_6", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_7", + "violationsBefore" : 10, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_8", + "violationsBefore" : 7, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_9", + "violationsBefore" : 11, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_10", + "violationsBefore" : 22, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_11", + "violationsBefore" : 14, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_12", + "violationsBefore" : 22, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "koushikkothagal_18", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "rohitghatol_10", + "violationsBefore" : 297, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "rohitghatol_12", + "violationsBefore" : 297, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "rohitghatol_18", + "violationsBefore" : 280, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "spring-petclinic_0", + "violationsBefore" : 143, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "spring-petclinic_2", + "violationsBefore" : 137, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "spring-petclinic_3", + "violationsBefore" : 272, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "spring-petclinic_5", + "violationsBefore" : 246, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "spring-petclinic_6", + "violationsBefore" : 245, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "spring-petclinic_7", + "violationsBefore" : 110, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "spring-petclinic_8", + "violationsBefore" : 137, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "spring-petclinic_9", + "violationsBefore" : 161, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "spring-petclinic_18", + "violationsBefore" : 245, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "callistaenterprise_0", + "violationsBefore" : 197, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "callistaenterprise_2", + "violationsBefore" : 147, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "callistaenterprise_6", + "violationsBefore" : 149, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "callistaenterprise_11", + "violationsBefore" : 146, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "callistaenterprise_18", + "violationsBefore" : 298, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff_5", + "violationsBefore" : 86, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff_10", + "violationsBefore" : 64, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff_12", + "violationsBefore" : 64, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "ewolff_18", + "violationsBefore" : 74, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "jferrater_0", + "violationsBefore" : 21, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "jferrater_2", + "violationsBefore" : 44, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "jferrater_3", + "violationsBefore" : 91, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "jferrater_5", + "violationsBefore" : 84, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "jferrater_6", + "violationsBefore" : 75, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "jferrater_7", + "violationsBefore" : 35, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "jferrater_8", + "violationsBefore" : 44, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "jferrater_9", + "violationsBefore" : 57, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "jferrater_18", + "violationsBefore" : 102, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "apssouza22_0", + "violationsBefore" : 162, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "apssouza22_2", + "violationsBefore" : 76, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "apssouza22_4", + "violationsBefore" : 102, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "apssouza22_6", + "violationsBefore" : 95, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "apssouza22_7", + "violationsBefore" : 85, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "apssouza22_8", + "violationsBefore" : 76, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "apssouza22_12", + "violationsBefore" : 139, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "apssouza22_18", + "violationsBefore" : 149, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "sqshq_0", + "violationsBefore" : 344, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "sqshq_6", + "violationsBefore" : 203, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "sqshq_7", + "violationsBefore" : 222, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "sqshq_8", + "violationsBefore" : 188, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "sqshq_9", + "violationsBefore" : 253, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "sqshq_10", + "violationsBefore" : 354, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "sqshq_11", + "violationsBefore" : 267, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "sqshq_12", + "violationsBefore" : 389, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "sqshq_18", + "violationsBefore" : 350, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_0", + "violationsBefore" : 19, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_2", + "violationsBefore" : 13, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_3", + "violationsBefore" : 39, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_4", + "violationsBefore" : 13, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_5", + "violationsBefore" : 36, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_6", + "violationsBefore" : 30, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_7", + "violationsBefore" : 12, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_8", + "violationsBefore" : 15, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_10", + "violationsBefore" : 26, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_11", + "violationsBefore" : 21, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_12", + "violationsBefore" : 26, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "georgwittberger_18", + "violationsBefore" : 25, + "violationsAfter" : 0 +}, { + "Approach" : "SAT", + "modelName" : "mdeket_5", + "violationsBefore" : 191, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff-kafka_0", + "violationsBefore" : 40, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff-kafka_3", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff-kafka_4", + "violationsBefore" : 32, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff-kafka_5", + "violationsBefore" : 66, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff-kafka_6", + "violationsBefore" : 56, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff-kafka_7", + "violationsBefore" : 30, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff-kafka_8", + "violationsBefore" : 33, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff-kafka_9", + "violationsBefore" : 36, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff-kafka_18", + "violationsBefore" : 57, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "anilallewar_0", + "violationsBefore" : 221, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "anilallewar_6", + "violationsBefore" : 209, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "anilallewar_7", + "violationsBefore" : 159, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "anilallewar_8", + "violationsBefore" : 189, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "anilallewar_9", + "violationsBefore" : 224, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "anilallewar_11", + "violationsBefore" : 192, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "anilallewar_12", + "violationsBefore" : 274, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "anilallewar_18", + "violationsBefore" : 288, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "mudigal-technologies_0", + "violationsBefore" : 122, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "mudigal-technologies_2", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "mudigal-technologies_4", + "violationsBefore" : 99, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "mudigal-technologies_5", + "violationsBefore" : 208, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "mudigal-technologies_7", + "violationsBefore" : 95, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "mudigal-technologies_8", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "mudigal-technologies_11", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "mudigal-technologies_18", + "violationsBefore" : 148, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "fernandoabcampos_18", + "violationsBefore" : 195, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "yidongnan_0", + "violationsBefore" : 121, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "yidongnan_2", + "violationsBefore" : 72, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "yidongnan_3", + "violationsBefore" : 208, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "yidongnan_4", + "violationsBefore" : 98, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "yidongnan_5", + "violationsBefore" : 208, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "yidongnan_6", + "violationsBefore" : 146, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "yidongnan_7", + "violationsBefore" : 78, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "yidongnan_8", + "violationsBefore" : 52, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "yidongnan_9", + "violationsBefore" : 99, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "yidongnan_18", + "violationsBefore" : 146, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_0", + "violationsBefore" : 11, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_1", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_2", + "violationsBefore" : 9, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_3", + "violationsBefore" : 24, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_4", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_5", + "violationsBefore" : 24, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_6", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_7", + "violationsBefore" : 10, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_8", + "violationsBefore" : 7, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_9", + "violationsBefore" : 11, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_10", + "violationsBefore" : 22, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_11", + "violationsBefore" : 14, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_12", + "violationsBefore" : 22, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "koushikkothagal_18", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "rohitghatol_10", + "violationsBefore" : 297, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "rohitghatol_12", + "violationsBefore" : 297, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "rohitghatol_18", + "violationsBefore" : 280, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "spring-petclinic_0", + "violationsBefore" : 143, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "spring-petclinic_2", + "violationsBefore" : 137, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "spring-petclinic_3", + "violationsBefore" : 272, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "spring-petclinic_5", + "violationsBefore" : 246, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "spring-petclinic_6", + "violationsBefore" : 245, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "spring-petclinic_7", + "violationsBefore" : 110, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "spring-petclinic_8", + "violationsBefore" : 137, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "spring-petclinic_9", + "violationsBefore" : 161, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "spring-petclinic_18", + "violationsBefore" : 245, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "callistaenterprise_0", + "violationsBefore" : 197, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "callistaenterprise_2", + "violationsBefore" : 147, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "callistaenterprise_6", + "violationsBefore" : 149, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "callistaenterprise_11", + "violationsBefore" : 146, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "callistaenterprise_18", + "violationsBefore" : 298, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff_5", + "violationsBefore" : 86, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff_10", + "violationsBefore" : 64, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff_12", + "violationsBefore" : 64, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "ewolff_18", + "violationsBefore" : 74, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "jferrater_0", + "violationsBefore" : 21, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "jferrater_2", + "violationsBefore" : 44, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "jferrater_3", + "violationsBefore" : 91, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "jferrater_5", + "violationsBefore" : 84, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "jferrater_6", + "violationsBefore" : 75, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "jferrater_7", + "violationsBefore" : 35, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "jferrater_8", + "violationsBefore" : 44, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "jferrater_9", + "violationsBefore" : 57, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "jferrater_18", + "violationsBefore" : 102, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "apssouza22_0", + "violationsBefore" : 162, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "apssouza22_2", + "violationsBefore" : 76, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "apssouza22_4", + "violationsBefore" : 102, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "apssouza22_6", + "violationsBefore" : 95, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "apssouza22_7", + "violationsBefore" : 85, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "apssouza22_8", + "violationsBefore" : 76, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "apssouza22_12", + "violationsBefore" : 139, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "apssouza22_18", + "violationsBefore" : 149, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "sqshq_0", + "violationsBefore" : 344, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "sqshq_6", + "violationsBefore" : 203, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "sqshq_7", + "violationsBefore" : 222, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "sqshq_8", + "violationsBefore" : 188, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "sqshq_9", + "violationsBefore" : 253, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "sqshq_10", + "violationsBefore" : 354, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "sqshq_11", + "violationsBefore" : 267, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "sqshq_12", + "violationsBefore" : 389, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "sqshq_18", + "violationsBefore" : 350, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_0", + "violationsBefore" : 19, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_2", + "violationsBefore" : 13, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_3", + "violationsBefore" : 39, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_4", + "violationsBefore" : 13, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_5", + "violationsBefore" : 36, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_6", + "violationsBefore" : 30, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_7", + "violationsBefore" : 12, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_8", + "violationsBefore" : 15, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_10", + "violationsBefore" : 26, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_11", + "violationsBefore" : 21, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_12", + "violationsBefore" : 26, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "georgwittberger_18", + "violationsBefore" : 25, + "violationsAfter" : 0 +}, { + "Approach" : "ILP", + "modelName" : "mdeket_5", + "violationsBefore" : 191, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff-kafka_0", + "violationsBefore" : 40, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff-kafka_3", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff-kafka_4", + "violationsBefore" : 32, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff-kafka_5", + "violationsBefore" : 66, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff-kafka_6", + "violationsBefore" : 56, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff-kafka_7", + "violationsBefore" : 30, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff-kafka_8", + "violationsBefore" : 33, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff-kafka_9", + "violationsBefore" : 36, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff-kafka_18", + "violationsBefore" : 57, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "anilallewar_0", + "violationsBefore" : 221, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "anilallewar_6", + "violationsBefore" : 209, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "anilallewar_7", + "violationsBefore" : 159, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "anilallewar_8", + "violationsBefore" : 189, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "anilallewar_9", + "violationsBefore" : 224, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "anilallewar_11", + "violationsBefore" : 192, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "anilallewar_12", + "violationsBefore" : 274, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "anilallewar_18", + "violationsBefore" : 288, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "mudigal-technologies_0", + "violationsBefore" : 122, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "mudigal-technologies_2", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "mudigal-technologies_4", + "violationsBefore" : 99, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "mudigal-technologies_5", + "violationsBefore" : 208, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "mudigal-technologies_7", + "violationsBefore" : 95, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "mudigal-technologies_8", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "mudigal-technologies_11", + "violationsBefore" : 70, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "mudigal-technologies_18", + "violationsBefore" : 148, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "fernandoabcampos_18", + "violationsBefore" : 195, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "yidongnan_0", + "violationsBefore" : 121, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "yidongnan_2", + "violationsBefore" : 72, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "yidongnan_3", + "violationsBefore" : 208, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "yidongnan_4", + "violationsBefore" : 98, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "yidongnan_5", + "violationsBefore" : 208, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "yidongnan_6", + "violationsBefore" : 146, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "yidongnan_7", + "violationsBefore" : 78, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "yidongnan_8", + "violationsBefore" : 52, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "yidongnan_9", + "violationsBefore" : 99, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "yidongnan_18", + "violationsBefore" : 146, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_0", + "violationsBefore" : 11, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_1", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_2", + "violationsBefore" : 9, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_3", + "violationsBefore" : 24, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_4", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_5", + "violationsBefore" : 24, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_6", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_7", + "violationsBefore" : 10, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_8", + "violationsBefore" : 7, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_9", + "violationsBefore" : 11, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_10", + "violationsBefore" : 22, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_11", + "violationsBefore" : 14, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_12", + "violationsBefore" : 22, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "koushikkothagal_18", + "violationsBefore" : 18, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "rohitghatol_10", + "violationsBefore" : 297, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "rohitghatol_12", + "violationsBefore" : 297, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "rohitghatol_18", + "violationsBefore" : 280, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "spring-petclinic_0", + "violationsBefore" : 143, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "spring-petclinic_2", + "violationsBefore" : 137, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "spring-petclinic_3", + "violationsBefore" : 272, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "spring-petclinic_5", + "violationsBefore" : 246, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "spring-petclinic_6", + "violationsBefore" : 245, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "spring-petclinic_7", + "violationsBefore" : 110, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "spring-petclinic_8", + "violationsBefore" : 137, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "spring-petclinic_9", + "violationsBefore" : 161, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "spring-petclinic_18", + "violationsBefore" : 245, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "callistaenterprise_0", + "violationsBefore" : 197, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "callistaenterprise_2", + "violationsBefore" : 147, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "callistaenterprise_6", + "violationsBefore" : 149, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "callistaenterprise_11", + "violationsBefore" : 146, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "callistaenterprise_18", + "violationsBefore" : 298, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff_5", + "violationsBefore" : 86, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff_10", + "violationsBefore" : 64, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff_12", + "violationsBefore" : 64, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "ewolff_18", + "violationsBefore" : 74, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "jferrater_0", + "violationsBefore" : 21, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "jferrater_2", + "violationsBefore" : 44, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "jferrater_3", + "violationsBefore" : 91, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "jferrater_5", + "violationsBefore" : 84, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "jferrater_6", + "violationsBefore" : 75, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "jferrater_7", + "violationsBefore" : 35, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "jferrater_8", + "violationsBefore" : 44, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "jferrater_9", + "violationsBefore" : 57, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "jferrater_18", + "violationsBefore" : 102, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "apssouza22_0", + "violationsBefore" : 162, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "apssouza22_2", + "violationsBefore" : 76, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "apssouza22_4", + "violationsBefore" : 102, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "apssouza22_6", + "violationsBefore" : 95, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "apssouza22_7", + "violationsBefore" : 85, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "apssouza22_8", + "violationsBefore" : 76, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "apssouza22_12", + "violationsBefore" : 139, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "apssouza22_18", + "violationsBefore" : 149, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "sqshq_0", + "violationsBefore" : 344, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "sqshq_6", + "violationsBefore" : 203, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "sqshq_7", + "violationsBefore" : 222, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "sqshq_8", + "violationsBefore" : 188, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "sqshq_9", + "violationsBefore" : 253, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "sqshq_10", + "violationsBefore" : 354, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "sqshq_11", + "violationsBefore" : 267, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "sqshq_12", + "violationsBefore" : 389, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "sqshq_18", + "violationsBefore" : 350, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_0", + "violationsBefore" : 19, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_2", + "violationsBefore" : 13, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_3", + "violationsBefore" : 39, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_4", + "violationsBefore" : 13, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_5", + "violationsBefore" : 36, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_6", + "violationsBefore" : 30, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_7", + "violationsBefore" : 12, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_8", + "violationsBefore" : 15, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_10", + "violationsBefore" : 26, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_11", + "violationsBefore" : 21, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_12", + "violationsBefore" : 26, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "georgwittberger_18", + "violationsBefore" : 25, + "violationsAfter" : 0 +}, { + "Approach" : "SMT", + "modelName" : "mdeket_5", + "violationsBefore" : 191, + "violationsAfter" : 0 +} ] \ No newline at end of file diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java new file mode 100644 index 00000000..2a0e4841 --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java @@ -0,0 +1,181 @@ +package dev.arcovia.mitigation.evaluation.tests; + + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.ArrayList; +import java.util.stream.Stream; + +import org.dataflowanalysis.analysis.dfd.DFDDataFlowAnalysisBuilder; +import org.dataflowanalysis.analysis.dfd.resource.DFDModelResourceProvider; +import org.dataflowanalysis.analysis.dsl.AnalysisConstraint; +import org.dataflowanalysis.analysis.dsl.constraint.ConstraintDSL; +import org.dataflowanalysis.converter.dfd2web.DataFlowDiagramAndDictionary; +import org.dataflowanalysis.examplemodels.Activator; +import org.dataflowanalysis.examplemodels.TuhhModels; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import dev.arcovia.mitigation.sat.MitigationApproach; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.core.type.TypeReference; + + + +public abstract class TestBase { + final AnalysisConstraint entryViaGatewayOnly = new ConstraintDSL().ofData() + .withLabel("Stereotype", "entrypoint") + .withoutLabel("Stereotype", "gateway") + .neverFlows() + .toVertex() + .withCharacteristic("Stereotype", "internal") + .create(); + final AnalysisConstraint nonInternalGateway = new ConstraintDSL().ofData() + .neverFlows() + .toVertex() + .withCharacteristic("Stereotype", "gateway") + .withCharacteristic("Stereotype", "internal") + .create(); + final AnalysisConstraint authenticatedRequest = new ConstraintDSL().ofData() + .withoutLabel("Stereotype", "authenticated_request") + .neverFlows() + .toVertex() + .withCharacteristic("Stereotype", "internal") + .create(); + final AnalysisConstraint transformedEntry = new ConstraintDSL().ofData() + .withLabel("Stereotype", "entrypoint") + .withoutLabel("Stereotype", "transform_identity_representation") + .neverFlows() + .toVertex() + .withCharacteristic("Stereotype", "internal") + .create(); + final AnalysisConstraint tokenValidation = new ConstraintDSL().ofData() + .withLabel("Stereotype", "entrypoint") + .withoutLabel("Stereotype", "token_validation") + .neverFlows() + .toVertex() + .withCharacteristic("Stereotype", "internal") + .create(); + final AnalysisConstraint loginAttempts = new ConstraintDSL().ofData() + .neverFlows() + .toVertex() + .withCharacteristic("Stereotype", "authorization_server") + .withoutCharacteristic("Stereotype", "login_attempts_regulation") + .create(); + final AnalysisConstraint encryptedEntry = new ConstraintDSL().ofData() + .withLabel("Stereotype", "entrypoint") + .withoutLabel("Stereotype", "encrypted_connection") + .neverFlows() + .toVertex() + .create(); + final AnalysisConstraint encryptedInternals = new ConstraintDSL().ofData() + .withLabel("Stereotype", "internal") + .withoutLabel("Stereotype", "encrypted_connection") + .neverFlows() + .toVertex() + .create(); + final AnalysisConstraint localLogging = new ConstraintDSL().ofData() + .neverFlows() + .toVertex() + .withCharacteristic("Stereotype", "internal") + .withoutCharacteristic("Stereotype", "local_logging") + .create(); + final AnalysisConstraint logSanitization = new ConstraintDSL().ofData() + .neverFlows() + .toVertex() + .withCharacteristic("Stereotype", "local_logging") + .withoutCharacteristic("Stereotype", "log_sanitization") + .create(); + + final List analysisConstraints = List.of(entryViaGatewayOnly, nonInternalGateway, authenticatedRequest, transformedEntry, + tokenValidation, loginAttempts, encryptedEntry, encryptedInternals, localLogging, logSanitization); + + + protected abstract MitigationApproach getApproach(DataFlowDiagramAndDictionary dfd, List constraints); + + protected abstract String getApproachName(); + + static Stream tuhhModelProvider() { + return TuhhModels.getTuhhModels() + .entrySet() + .stream() + .flatMap(entity -> entity.getValue().stream() + .map(model -> Arguments.of(entity.getKey(), model))); + } + + @ParameterizedTest + @MethodSource("tuhhModelProvider") + void evaluateEffectiveness(String model, int variant) throws Exception { + Thread.sleep(2); + String name = model + "_" + variant; + + var dfd = loadDFD(model, name); + + int violationsBefore = determineViolations(dfd, analysisConstraints); + + MitigationApproach approach = getApproach(dfd, analysisConstraints); + + var repairedDFD = approach.repair(); + + int violationsAfter = determineViolations(repairedDFD, analysisConstraints); + + assertEquals(violationsAfter, 0); + + ObjectMapper mapper = new ObjectMapper(); + Path out = Path.of("results/violation_results.json"); + + List existing = Files.exists(out) + ? mapper.readValue(out.toFile(), new TypeReference>() {}) + : new ArrayList<>(); + + existing.add(new ViolationResult(getApproachName(),name, violationsBefore, violationsAfter)); + mapper.writerWithDefaultPrettyPrinter().writeValue(out.toFile(), existing); + } + + + + private int determineViolations(DataFlowDiagramAndDictionary dfd, List constraints) { + var resourceProvider = new DFDModelResourceProvider(dfd.dataDictionary(), dfd.dataFlowDiagram()); + var analysis = new DFDDataFlowAnalysisBuilder().standalone().useCustomResourceProvider(resourceProvider) + .build(); + + analysis.initializeAnalysis(); + var flowGraph = analysis.findFlowGraphs(); + flowGraph.evaluate(); + + int violations = 0; + + for (var constraint : constraints) { + var result = constraint.findViolations(flowGraph); + + violations += result.size(); + + } + return violations; + } + + public record ViolationResult( + String Approach, + String modelName, + int violationsBefore, + int violationsAfter + ) {} + + private DataFlowDiagramAndDictionary loadDFD(String model, String name) throws Exception { + final String PROJECT_NAME = "org.dataflowanalysis.examplemodels"; + final String location = Paths.get("scenarios", "dfd", "TUHH-Models") + .toString(); + return new DataFlowDiagramAndDictionary(PROJECT_NAME, Paths.get(location, model, (name + ".dataflowdiagram")) + .toString(), + Paths.get(location, model, (name + ".datadictionary")) + .toString(), + Activator.class); + } +} diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/ilpTest.java b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/ilpTest.java new file mode 100644 index 00000000..705c74cf --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/ilpTest.java @@ -0,0 +1,22 @@ +package dev.arcovia.mitigation.evaluation.tests; + +import java.util.List; + +import org.dataflowanalysis.analysis.dsl.AnalysisConstraint; +import org.dataflowanalysis.converter.dfd2web.DataFlowDiagramAndDictionary; +import dev.arcovia.mitigation.ilp.OptimizationManager; +import dev.arcovia.mitigation.sat.MitigationApproach; + +public class ilpTest extends TestBase{ + + @Override + protected MitigationApproach getApproach(DataFlowDiagramAndDictionary dfd, List constraints) { + return new OptimizationManager(dfd, constraints); + } + + @Override + protected String getApproachName() { + return "ILP"; + } + +} diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java new file mode 100644 index 00000000..764ba22e --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java @@ -0,0 +1,35 @@ +package dev.arcovia.mitigation.evaluation.tests; + +import java.util.ArrayList; +import java.util.List; + +import org.dataflowanalysis.analysis.dsl.AnalysisConstraint; +import org.dataflowanalysis.converter.dfd2web.DataFlowDiagramAndDictionary; + +import dev.arcovia.mitigation.sat.Mechanic; +import dev.arcovia.mitigation.sat.Constraint; +import dev.arcovia.mitigation.sat.MitigationApproach; +import dev.arcovia.mitigation.sat.dsl.CNFTranslation; + +public class satTest extends TestBase{ + + @Override + protected MitigationApproach getApproach(DataFlowDiagramAndDictionary dfd, List constraints) { + List translatedConstraints = new ArrayList<>(); + + for (var constraint : constraints) { + var translation = new CNFTranslation(constraint); + Constraint translatedConstraint = translation.constructCNF() + .get(0); + translatedConstraints.add(translatedConstraint); + } + + return new Mechanic(dfd, " ",translatedConstraints); + } + + @Override + protected String getApproachName() { + return "SAT"; + } + +} diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/smtTest.java b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/smtTest.java new file mode 100644 index 00000000..aeeb7bbd --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/smtTest.java @@ -0,0 +1,23 @@ +package dev.arcovia.mitigation.evaluation.tests; + +import java.util.List; + +import org.dataflowanalysis.analysis.dsl.AnalysisConstraint; +import org.dataflowanalysis.converter.dfd2web.DataFlowDiagramAndDictionary; + +import dev.arcovia.mitigation.sat.MitigationApproach; +import dev.arcovia.mitigation.smt.Mechanic; + +public class smtTest extends TestBase{ + + @Override + protected MitigationApproach getApproach(DataFlowDiagramAndDictionary dfd, List constraints) { + return new Mechanic(dfd, constraints); + } + + @Override + protected String getApproachName() { + return "SMT"; + } + +} diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ -literalMapping.json b/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ -literalMapping.json new file mode 100644 index 00000000..8e79a8b5 --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ -literalMapping.json @@ -0,0 +1,1237 @@ +{ + "1" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, entrypoint)", + "2" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, gateway)", + "3" : "Node 10 has Property (Stereotype, internal)", + "4" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, entrypoint)", + "5" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, gateway)", + "6" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, entrypoint)", + "7" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, gateway)", + "8" : "Node 10 has Property (Stereotype, gateway)", + "9" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, authenticated_request)", + "10" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, authenticated_request)", + "11" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, authenticated_request)", + "12" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, transform_identity_representation)", + "13" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, transform_identity_representation)", + "14" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, transform_identity_representation)", + "15" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, token_validation)", + "16" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, token_validation)", + "17" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, token_validation)", + "18" : "Node 10 has Property (Stereotype, authorization_server)", + "19" : "Node 10 has Property (Stereotype, login_attempts_regulation)", + "20" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, encrypted_connection)", + "21" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, encrypted_connection)", + "22" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, encrypted_connection)", + "23" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, internal)", + "24" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, internal)", + "25" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, internal)", + "26" : "Node 10 has Property (Stereotype, local_logging)", + "27" : "Node 10 has Property (Stereotype, log_sanitization)", + "28" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, entrypoint)", + "29" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, gateway)", + "30" : "Node 11 has Property (Stereotype, internal)", + "31" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, entrypoint)", + "32" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, gateway)", + "33" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, entrypoint)", + "34" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, gateway)", + "35" : "Node 11 has Property (Stereotype, gateway)", + "36" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, authenticated_request)", + "37" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, authenticated_request)", + "38" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, authenticated_request)", + "39" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, transform_identity_representation)", + "40" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, transform_identity_representation)", + "41" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, transform_identity_representation)", + "42" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, token_validation)", + "43" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, token_validation)", + "44" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, token_validation)", + "45" : "Node 11 has Property (Stereotype, authorization_server)", + "46" : "Node 11 has Property (Stereotype, login_attempts_regulation)", + "47" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, encrypted_connection)", + "48" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, encrypted_connection)", + "49" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, encrypted_connection)", + "50" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, internal)", + "51" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, internal)", + "52" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, internal)", + "53" : "Node 11 has Property (Stereotype, local_logging)", + "54" : "Node 11 has Property (Stereotype, log_sanitization)", + "55" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, entrypoint)", + "56" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, gateway)", + "57" : "Node 12 has Property (Stereotype, internal)", + "58" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, entrypoint)", + "59" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, gateway)", + "60" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, entrypoint)", + "61" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, gateway)", + "62" : "Node 12 has Property (Stereotype, gateway)", + "63" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, authenticated_request)", + "64" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, authenticated_request)", + "65" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, authenticated_request)", + "66" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, transform_identity_representation)", + "67" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, transform_identity_representation)", + "68" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, transform_identity_representation)", + "69" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, token_validation)", + "70" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, token_validation)", + "71" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, token_validation)", + "72" : "Node 12 has Property (Stereotype, authorization_server)", + "73" : "Node 12 has Property (Stereotype, login_attempts_regulation)", + "74" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, encrypted_connection)", + "75" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, encrypted_connection)", + "76" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, encrypted_connection)", + "77" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, internal)", + "78" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, internal)", + "79" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, internal)", + "80" : "Node 12 has Property (Stereotype, local_logging)", + "81" : "Node 12 has Property (Stereotype, log_sanitization)", + "82" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, entrypoint)", + "83" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, gateway)", + "84" : "Node 13 has Property (Stereotype, internal)", + "85" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, entrypoint)", + "86" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, gateway)", + "87" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, entrypoint)", + "88" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, gateway)", + "89" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, entrypoint)", + "90" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, gateway)", + "91" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, entrypoint)", + "92" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, gateway)", + "93" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, entrypoint)", + "94" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, gateway)", + "95" : "Node 13 has Property (Stereotype, gateway)", + "96" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, authenticated_request)", + "97" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, authenticated_request)", + "98" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, authenticated_request)", + "99" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, authenticated_request)", + "100" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, authenticated_request)", + "101" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, authenticated_request)", + "102" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", + "103" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", + "104" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", + "105" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", + "106" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", + "107" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", + "108" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, token_validation)", + "109" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, token_validation)", + "110" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, token_validation)", + "111" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, token_validation)", + "112" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, token_validation)", + "113" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, token_validation)", + "114" : "Node 13 has Property (Stereotype, authorization_server)", + "115" : "Node 13 has Property (Stereotype, login_attempts_regulation)", + "116" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, encrypted_connection)", + "117" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, encrypted_connection)", + "118" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, encrypted_connection)", + "119" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, encrypted_connection)", + "120" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, encrypted_connection)", + "121" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, encrypted_connection)", + "122" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, internal)", + "123" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, internal)", + "124" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, internal)", + "125" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, internal)", + "126" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, internal)", + "127" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, internal)", + "128" : "Node 13 has Property (Stereotype, local_logging)", + "129" : "Node 13 has Property (Stereotype, log_sanitization)", + "130" : "Node 2 has Property (Stereotype, gateway)", + "131" : "Node 2 has Property (Stereotype, internal)", + "132" : "Node 2 has Property (Stereotype, authorization_server)", + "133" : "Node 2 has Property (Stereotype, login_attempts_regulation)", + "134" : "Node 2 has Property (Stereotype, local_logging)", + "135" : "Node 2 has Property (Stereotype, log_sanitization)", + "136" : "Node 3 has Property (Stereotype, gateway)", + "137" : "Node 3 has Property (Stereotype, internal)", + "138" : "Node 3 has Property (Stereotype, authorization_server)", + "139" : "Node 3 has Property (Stereotype, login_attempts_regulation)", + "140" : "Node 3 has Property (Stereotype, local_logging)", + "141" : "Node 3 has Property (Stereotype, log_sanitization)", + "142" : "Node 4 has Property (Stereotype, gateway)", + "143" : "Node 4 has Property (Stereotype, internal)", + "144" : "Node 4 has Property (Stereotype, authorization_server)", + "145" : "Node 4 has Property (Stereotype, login_attempts_regulation)", + "146" : "Node 4 has Property (Stereotype, local_logging)", + "147" : "Node 4 has Property (Stereotype, log_sanitization)", + "148" : "Node 5 has Property (Stereotype, gateway)", + "149" : "Node 5 has Property (Stereotype, internal)", + "150" : "Node 5 has Property (Stereotype, authorization_server)", + "151" : "Node 5 has Property (Stereotype, login_attempts_regulation)", + "152" : "Node 5 has Property (Stereotype, local_logging)", + "153" : "Node 5 has Property (Stereotype, log_sanitization)", + "154" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, entrypoint)", + "155" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, gateway)", + "156" : "Node 6 has Property (Stereotype, internal)", + "157" : "Node 6 has Property (Stereotype, gateway)", + "158" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, authenticated_request)", + "159" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, transform_identity_representation)", + "160" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, token_validation)", + "161" : "Node 6 has Property (Stereotype, authorization_server)", + "162" : "Node 6 has Property (Stereotype, login_attempts_regulation)", + "163" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, encrypted_connection)", + "164" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, internal)", + "165" : "Node 6 has Property (Stereotype, local_logging)", + "166" : "Node 6 has Property (Stereotype, log_sanitization)", + "167" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, entrypoint)", + "168" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, gateway)", + "169" : "Node 7 has Property (Stereotype, internal)", + "170" : "Node 7 has Property (Stereotype, gateway)", + "171" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, authenticated_request)", + "172" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, transform_identity_representation)", + "173" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, token_validation)", + "174" : "Node 7 has Property (Stereotype, authorization_server)", + "175" : "Node 7 has Property (Stereotype, login_attempts_regulation)", + "176" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, encrypted_connection)", + "177" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, internal)", + "178" : "Node 7 has Property (Stereotype, local_logging)", + "179" : "Node 7 has Property (Stereotype, log_sanitization)", + "180" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, entrypoint)", + "181" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, gateway)", + "182" : "Node 8 has Property (Stereotype, internal)", + "183" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, entrypoint)", + "184" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, gateway)", + "185" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, entrypoint)", + "186" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, gateway)", + "187" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, entrypoint)", + "188" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, gateway)", + "189" : "Node 8 has Property (Stereotype, gateway)", + "190" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, authenticated_request)", + "191" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, authenticated_request)", + "192" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, authenticated_request)", + "193" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, authenticated_request)", + "194" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, transform_identity_representation)", + "195" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, transform_identity_representation)", + "196" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, transform_identity_representation)", + "197" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, transform_identity_representation)", + "198" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, token_validation)", + "199" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, token_validation)", + "200" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, token_validation)", + "201" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, token_validation)", + "202" : "Node 8 has Property (Stereotype, authorization_server)", + "203" : "Node 8 has Property (Stereotype, login_attempts_regulation)", + "204" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, encrypted_connection)", + "205" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, encrypted_connection)", + "206" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, encrypted_connection)", + "207" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, encrypted_connection)", + "208" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, internal)", + "209" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, internal)", + "210" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, internal)", + "211" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, internal)", + "212" : "Node 8 has Property (Stereotype, local_logging)", + "213" : "Node 8 has Property (Stereotype, log_sanitization)", + "214" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, entrypoint)", + "215" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, gateway)", + "216" : "Node 9 has Property (Stereotype, internal)", + "217" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, entrypoint)", + "218" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, gateway)", + "219" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, entrypoint)", + "220" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, gateway)", + "221" : "Node 9 has Property (Stereotype, gateway)", + "222" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, authenticated_request)", + "223" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, authenticated_request)", + "224" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, authenticated_request)", + "225" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, transform_identity_representation)", + "226" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, transform_identity_representation)", + "227" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, transform_identity_representation)", + "228" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, token_validation)", + "229" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, token_validation)", + "230" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, token_validation)", + "231" : "Node 9 has Property (Stereotype, authorization_server)", + "232" : "Node 9 has Property (Stereotype, login_attempts_regulation)", + "233" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, encrypted_connection)", + "234" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, encrypted_connection)", + "235" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, encrypted_connection)", + "236" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, internal)", + "237" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, internal)", + "238" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, internal)", + "239" : "Node 9 has Property (Stereotype, local_logging)", + "240" : "Node 9 has Property (Stereotype, log_sanitization)", + "241" : "Node 10 has Property (Endpoints, user)", + "242" : "Node 10 has Property (Endpoints, useruserId)", + "243" : "Node 10 has Property (Port, 8001)", + "244" : "Node 10 has Property (Stereotype, token_validation)", + "245" : "OutgoingData at Pin 120 has Label (CircuitBreaker, Hystrix)", + "246" : "OutgoingData at Pin 120 has Label (LoadBalancer, Ribbon)", + "247" : "OutgoingData at Pin 120 has Label (Password, root)", + "248" : "OutgoingData at Pin 120 has Label (Stereotype, circuit_breaker)", + "249" : "OutgoingData at Pin 120 has Label (Stereotype, circuit_breaker_link)", + "250" : "OutgoingData at Pin 120 has Label (Stereotype, configuration_server)", + "251" : "OutgoingData at Pin 120 has Label (Stereotype, entrypoint)", + "252" : "OutgoingData at Pin 120 has Label (Stereotype, exitpoint)", + "253" : "OutgoingData at Pin 120 has Label (Stereotype, external_database)", + "254" : "OutgoingData at Pin 120 has Label (Stereotype, feign_connection)", + "255" : "OutgoingData at Pin 120 has Label (Stereotype, github_repository)", + "256" : "OutgoingData at Pin 120 has Label (Stereotype, infrastructural)", + "257" : "OutgoingData at Pin 120 has Label (Stereotype, internal)", + "258" : "OutgoingData at Pin 120 has Label (Stereotype, jdbc)", + "259" : "OutgoingData at Pin 120 has Label (Stereotype, load_balanced_link)", + "260" : "OutgoingData at Pin 120 has Label (Stereotype, load_balancer)", + "261" : "OutgoingData at Pin 120 has Label (Stereotype, monitoring_dashboard)", + "262" : "OutgoingData at Pin 120 has Label (Stereotype, plaintext_credentials)", + "263" : "OutgoingData at Pin 120 has Label (Stereotype, plaintext_credentials_link)", + "264" : "OutgoingData at Pin 120 has Label (Stereotype, restful_http)", + "265" : "OutgoingData at Pin 120 has Label (Stereotype, token_validation)", + "266" : "OutgoingData at Pin 120 has Label (Stereotype, user_stereotype)", + "267" : "OutgoingData at Pin 120 has Label (Username, root)", + "268" : "OutgoingData at Pin 161 has Label (CircuitBreaker, Hystrix)", + "269" : "OutgoingData at Pin 161 has Label (LoadBalancer, Ribbon)", + "270" : "OutgoingData at Pin 161 has Label (Password, root)", + "271" : "OutgoingData at Pin 161 has Label (Stereotype, circuit_breaker)", + "272" : "OutgoingData at Pin 161 has Label (Stereotype, circuit_breaker_link)", + "273" : "OutgoingData at Pin 161 has Label (Stereotype, configuration_server)", + "274" : "OutgoingData at Pin 161 has Label (Stereotype, entrypoint)", + "275" : "OutgoingData at Pin 161 has Label (Stereotype, exitpoint)", + "276" : "OutgoingData at Pin 161 has Label (Stereotype, external_database)", + "277" : "OutgoingData at Pin 161 has Label (Stereotype, feign_connection)", + "278" : "OutgoingData at Pin 161 has Label (Stereotype, github_repository)", + "279" : "OutgoingData at Pin 161 has Label (Stereotype, infrastructural)", + "280" : "OutgoingData at Pin 161 has Label (Stereotype, internal)", + "281" : "OutgoingData at Pin 161 has Label (Stereotype, jdbc)", + "282" : "OutgoingData at Pin 161 has Label (Stereotype, load_balanced_link)", + "283" : "OutgoingData at Pin 161 has Label (Stereotype, load_balancer)", + "284" : "OutgoingData at Pin 161 has Label (Stereotype, monitoring_dashboard)", + "285" : "OutgoingData at Pin 161 has Label (Stereotype, plaintext_credentials)", + "286" : "OutgoingData at Pin 161 has Label (Stereotype, plaintext_credentials_link)", + "287" : "OutgoingData at Pin 161 has Label (Stereotype, restful_http)", + "288" : "OutgoingData at Pin 161 has Label (Stereotype, token_validation)", + "289" : "OutgoingData at Pin 161 has Label (Stereotype, user_stereotype)", + "290" : "OutgoingData at Pin 161 has Label (Username, root)", + "291" : "Node 11 has Property (Endpoints, recommendation)", + "292" : "Node 11 has Property (Endpoints, recommendationdummyData)", + "293" : "Node 11 has Property (Endpoints, recommendationmovie)", + "294" : "Node 11 has Property (Endpoints, recommendationmoviemovieId)", + "295" : "Node 11 has Property (Endpoints, recommendationrecommenduseruserId)", + "296" : "Node 11 has Property (Endpoints, recommendationuser)", + "297" : "Node 11 has Property (Endpoints, recommendationuseruserId)", + "298" : "Node 11 has Property (Port, 8003)", + "299" : "Node 11 has Property (Stereotype, token_validation)", + "300" : "OutgoingData at Pin 128 has Label (CircuitBreaker, Hystrix)", + "301" : "OutgoingData at Pin 128 has Label (LoadBalancer, Ribbon)", + "302" : "OutgoingData at Pin 128 has Label (Password, root)", + "303" : "OutgoingData at Pin 128 has Label (Stereotype, circuit_breaker)", + "304" : "OutgoingData at Pin 128 has Label (Stereotype, circuit_breaker_link)", + "305" : "OutgoingData at Pin 128 has Label (Stereotype, configuration_server)", + "306" : "OutgoingData at Pin 128 has Label (Stereotype, entrypoint)", + "307" : "OutgoingData at Pin 128 has Label (Stereotype, exitpoint)", + "308" : "OutgoingData at Pin 128 has Label (Stereotype, external_database)", + "309" : "OutgoingData at Pin 128 has Label (Stereotype, feign_connection)", + "310" : "OutgoingData at Pin 128 has Label (Stereotype, github_repository)", + "311" : "OutgoingData at Pin 128 has Label (Stereotype, infrastructural)", + "312" : "OutgoingData at Pin 128 has Label (Stereotype, internal)", + "313" : "OutgoingData at Pin 128 has Label (Stereotype, jdbc)", + "314" : "OutgoingData at Pin 128 has Label (Stereotype, load_balanced_link)", + "315" : "OutgoingData at Pin 128 has Label (Stereotype, load_balancer)", + "316" : "OutgoingData at Pin 128 has Label (Stereotype, monitoring_dashboard)", + "317" : "OutgoingData at Pin 128 has Label (Stereotype, plaintext_credentials)", + "318" : "OutgoingData at Pin 128 has Label (Stereotype, plaintext_credentials_link)", + "319" : "OutgoingData at Pin 128 has Label (Stereotype, restful_http)", + "320" : "OutgoingData at Pin 128 has Label (Stereotype, token_validation)", + "321" : "OutgoingData at Pin 128 has Label (Stereotype, user_stereotype)", + "322" : "OutgoingData at Pin 128 has Label (Username, neo4j)", + "323" : "OutgoingData at Pin 163 has Label (CircuitBreaker, Hystrix)", + "324" : "OutgoingData at Pin 163 has Label (LoadBalancer, Ribbon)", + "325" : "OutgoingData at Pin 163 has Label (Password, root)", + "326" : "OutgoingData at Pin 163 has Label (Stereotype, circuit_breaker)", + "327" : "OutgoingData at Pin 163 has Label (Stereotype, circuit_breaker_link)", + "328" : "OutgoingData at Pin 163 has Label (Stereotype, configuration_server)", + "329" : "OutgoingData at Pin 163 has Label (Stereotype, entrypoint)", + "330" : "OutgoingData at Pin 163 has Label (Stereotype, exitpoint)", + "331" : "OutgoingData at Pin 163 has Label (Stereotype, external_database)", + "332" : "OutgoingData at Pin 163 has Label (Stereotype, feign_connection)", + "333" : "OutgoingData at Pin 163 has Label (Stereotype, github_repository)", + "334" : "OutgoingData at Pin 163 has Label (Stereotype, infrastructural)", + "335" : "OutgoingData at Pin 163 has Label (Stereotype, internal)", + "336" : "OutgoingData at Pin 163 has Label (Stereotype, jdbc)", + "337" : "OutgoingData at Pin 163 has Label (Stereotype, load_balanced_link)", + "338" : "OutgoingData at Pin 163 has Label (Stereotype, load_balancer)", + "339" : "OutgoingData at Pin 163 has Label (Stereotype, monitoring_dashboard)", + "340" : "OutgoingData at Pin 163 has Label (Stereotype, plaintext_credentials)", + "341" : "OutgoingData at Pin 163 has Label (Stereotype, plaintext_credentials_link)", + "342" : "OutgoingData at Pin 163 has Label (Stereotype, restful_http)", + "343" : "OutgoingData at Pin 163 has Label (Stereotype, token_validation)", + "344" : "OutgoingData at Pin 163 has Label (Stereotype, user_stereotype)", + "345" : "OutgoingData at Pin 163 has Label (Username, neo4j)", + "346" : "Node 12 has Property (CircuitBreaker, Hystrix)", + "347" : "Node 12 has Property (Endpoints, api)", + "348" : "Node 12 has Property (Endpoints, apirecommendationuseruserId)", + "349" : "Node 12 has Property (Endpoints, apiuserDetailsuserId)", + "350" : "Node 12 has Property (Endpoints, movie)", + "351" : "Node 12 has Property (Endpoints, moviedummyData)", + "352" : "Node 12 has Property (Endpoints, newuser)", + "353" : "Node 12 has Property (Endpoints, recommendationdummyData)", + "354" : "Node 12 has Property (Endpoints, user)", + "355" : "Node 12 has Property (Endpoints, useruserId)", + "356" : "Node 12 has Property (Gateway, Zuul)", + "357" : "Node 12 has Property (LoadBalancer, Ribbon)", + "358" : "Node 12 has Property (MonitoringDashboard, Hystrix)", + "359" : "Node 12 has Property (Port, 9000)", + "360" : "Node 12 has Property (Stereotype, circuit_breaker)", + "361" : "Node 12 has Property (Stereotype, infrastructural)", + "362" : "Node 12 has Property (Stereotype, load_balancer)", + "363" : "Node 12 has Property (Stereotype, monitoring_dashboard)", + "364" : "Node 12 has Property (Stereotype, token_validation)", + "365" : "OutgoingData at Pin 141 has Label (Stereotype, circuit_breaker)", + "366" : "OutgoingData at Pin 141 has Label (Stereotype, configuration_server)", + "367" : "OutgoingData at Pin 141 has Label (Stereotype, entrypoint)", + "368" : "OutgoingData at Pin 141 has Label (Stereotype, gateway)", + "369" : "OutgoingData at Pin 141 has Label (Stereotype, github_repository)", + "370" : "OutgoingData at Pin 141 has Label (Stereotype, infrastructural)", + "371" : "OutgoingData at Pin 141 has Label (Stereotype, load_balancer)", + "372" : "OutgoingData at Pin 141 has Label (Stereotype, local_logging)", + "373" : "OutgoingData at Pin 141 has Label (Stereotype, monitoring_dashboard)", + "374" : "OutgoingData at Pin 141 has Label (Stereotype, restful_http)", + "375" : "OutgoingData at Pin 141 has Label (Stereotype, token_validation)", + "376" : "OutgoingData at Pin 145 has Label (CircuitBreaker, Hystrix)", + "377" : "OutgoingData at Pin 145 has Label (LoadBalancer, Ribbon)", + "378" : "OutgoingData at Pin 145 has Label (Stereotype, circuit_breaker)", + "379" : "OutgoingData at Pin 145 has Label (Stereotype, circuit_breaker_link)", + "380" : "OutgoingData at Pin 145 has Label (Stereotype, configuration_server)", + "381" : "OutgoingData at Pin 145 has Label (Stereotype, entrypoint)", + "382" : "OutgoingData at Pin 145 has Label (Stereotype, exitpoint)", + "383" : "OutgoingData at Pin 145 has Label (Stereotype, feign_connection)", + "384" : "OutgoingData at Pin 145 has Label (Stereotype, gateway)", + "385" : "OutgoingData at Pin 145 has Label (Stereotype, github_repository)", + "386" : "OutgoingData at Pin 145 has Label (Stereotype, infrastructural)", + "387" : "OutgoingData at Pin 145 has Label (Stereotype, load_balanced_link)", + "388" : "OutgoingData at Pin 145 has Label (Stereotype, load_balancer)", + "389" : "OutgoingData at Pin 145 has Label (Stereotype, local_logging)", + "390" : "OutgoingData at Pin 145 has Label (Stereotype, monitoring_dashboard)", + "391" : "OutgoingData at Pin 145 has Label (Stereotype, restful_http)", + "392" : "OutgoingData at Pin 145 has Label (Stereotype, token_validation)", + "393" : "OutgoingData at Pin 145 has Label (Stereotype, user_stereotype)", + "394" : "OutgoingData at Pin 150 has Label (CircuitBreaker, Hystrix)", + "395" : "OutgoingData at Pin 150 has Label (LoadBalancer, Ribbon)", + "396" : "OutgoingData at Pin 150 has Label (Password, root)", + "397" : "OutgoingData at Pin 150 has Label (Stereotype, circuit_breaker)", + "398" : "OutgoingData at Pin 150 has Label (Stereotype, circuit_breaker_link)", + "399" : "OutgoingData at Pin 150 has Label (Stereotype, configuration_server)", + "400" : "OutgoingData at Pin 150 has Label (Stereotype, entrypoint)", + "401" : "OutgoingData at Pin 150 has Label (Stereotype, exitpoint)", + "402" : "OutgoingData at Pin 150 has Label (Stereotype, external_database)", + "403" : "OutgoingData at Pin 150 has Label (Stereotype, feign_connection)", + "404" : "OutgoingData at Pin 150 has Label (Stereotype, gateway)", + "405" : "OutgoingData at Pin 150 has Label (Stereotype, github_repository)", + "406" : "OutgoingData at Pin 150 has Label (Stereotype, infrastructural)", + "407" : "OutgoingData at Pin 150 has Label (Stereotype, internal)", + "408" : "OutgoingData at Pin 150 has Label (Stereotype, jdbc)", + "409" : "OutgoingData at Pin 150 has Label (Stereotype, load_balanced_link)", + "410" : "OutgoingData at Pin 150 has Label (Stereotype, load_balancer)", + "411" : "OutgoingData at Pin 150 has Label (Stereotype, local_logging)", + "412" : "OutgoingData at Pin 150 has Label (Stereotype, monitoring_dashboard)", + "413" : "OutgoingData at Pin 150 has Label (Stereotype, plaintext_credentials)", + "414" : "OutgoingData at Pin 150 has Label (Stereotype, plaintext_credentials_link)", + "415" : "OutgoingData at Pin 150 has Label (Stereotype, restful_http)", + "416" : "OutgoingData at Pin 150 has Label (Stereotype, service_discovery)", + "417" : "OutgoingData at Pin 150 has Label (Stereotype, token_validation)", + "418" : "OutgoingData at Pin 150 has Label (Stereotype, user_stereotype)", + "419" : "OutgoingData at Pin 150 has Label (Username, neo4j)", + "420" : "OutgoingData at Pin 150 has Label (Username, root)", + "421" : "OutgoingData at Pin 152 has Label (CircuitBreaker, Hystrix)", + "422" : "OutgoingData at Pin 152 has Label (LoadBalancer, Ribbon)", + "423" : "OutgoingData at Pin 152 has Label (Stereotype, circuit_breaker)", + "424" : "OutgoingData at Pin 152 has Label (Stereotype, circuit_breaker_link)", + "425" : "OutgoingData at Pin 152 has Label (Stereotype, configuration_server)", + "426" : "OutgoingData at Pin 152 has Label (Stereotype, entrypoint)", + "427" : "OutgoingData at Pin 152 has Label (Stereotype, exitpoint)", + "428" : "OutgoingData at Pin 152 has Label (Stereotype, feign_connection)", + "429" : "OutgoingData at Pin 152 has Label (Stereotype, gateway)", + "430" : "OutgoingData at Pin 152 has Label (Stereotype, github_repository)", + "431" : "OutgoingData at Pin 152 has Label (Stereotype, infrastructural)", + "432" : "OutgoingData at Pin 152 has Label (Stereotype, load_balanced_link)", + "433" : "OutgoingData at Pin 152 has Label (Stereotype, load_balancer)", + "434" : "OutgoingData at Pin 152 has Label (Stereotype, local_logging)", + "435" : "OutgoingData at Pin 152 has Label (Stereotype, monitoring_dashboard)", + "436" : "OutgoingData at Pin 152 has Label (Stereotype, restful_http)", + "437" : "OutgoingData at Pin 152 has Label (Stereotype, token_validation)", + "438" : "OutgoingData at Pin 152 has Label (Stereotype, user_stereotype)", + "439" : "OutgoingData at Pin 165 has Label (Stereotype, circuit_breaker)", + "440" : "OutgoingData at Pin 165 has Label (Stereotype, configuration_server)", + "441" : "OutgoingData at Pin 165 has Label (Stereotype, entrypoint)", + "442" : "OutgoingData at Pin 165 has Label (Stereotype, exitpoint)", + "443" : "OutgoingData at Pin 165 has Label (Stereotype, gateway)", + "444" : "OutgoingData at Pin 165 has Label (Stereotype, github_repository)", + "445" : "OutgoingData at Pin 165 has Label (Stereotype, infrastructural)", + "446" : "OutgoingData at Pin 165 has Label (Stereotype, load_balancer)", + "447" : "OutgoingData at Pin 165 has Label (Stereotype, local_logging)", + "448" : "OutgoingData at Pin 165 has Label (Stereotype, monitoring_dashboard)", + "449" : "OutgoingData at Pin 165 has Label (Stereotype, restful_http)", + "450" : "OutgoingData at Pin 165 has Label (Stereotype, service_discovery)", + "451" : "OutgoingData at Pin 165 has Label (Stereotype, token_validation)", + "452" : "OutgoingData at Pin 165 has Label (Stereotype, user_stereotype)", + "453" : "Node 13 has Property (Stereotype, infrastructural)", + "454" : "Node 2 has Property (Stereotype, entrypoint)", + "455" : "Node 2 has Property (Stereotype, github_repository)", + "456" : "Node 2 has Property (URL, httpsgithubcommdeketspringcloudexampleconfigrepogit)", + "457" : "OutgoingData at Pin 106 has Label (Stereotype, entrypoint)", + "458" : "OutgoingData at Pin 106 has Label (Stereotype, github_repository)", + "459" : "OutgoingData at Pin 106 has Label (Stereotype, restful_http)", + "460" : "Node 3 has Property (Stereotype, entrypoint)", + "461" : "Node 3 has Property (Stereotype, exitpoint)", + "462" : "Node 3 has Property (Stereotype, external_database)", + "463" : "OutgoingData at Pin 117 has Label (Stereotype, entrypoint)", + "464" : "OutgoingData at Pin 117 has Label (Stereotype, exitpoint)", + "465" : "OutgoingData at Pin 117 has Label (Stereotype, external_database)", + "466" : "OutgoingData at Pin 117 has Label (Stereotype, jdbc)", + "467" : "Node 4 has Property (Database, MySQL)", + "468" : "Node 4 has Property (Password, root)", + "469" : "Node 4 has Property (Port, 3306)", + "470" : "Node 4 has Property (Stereotype, entrypoint)", + "471" : "Node 4 has Property (Stereotype, exitpoint)", + "472" : "Node 4 has Property (Stereotype, external_database)", + "473" : "Node 4 has Property (Stereotype, plaintext_credentials)", + "474" : "Node 4 has Property (Username, root)", + "475" : "OutgoingData at Pin 125 has Label (Password, root)", + "476" : "OutgoingData at Pin 125 has Label (Stereotype, entrypoint)", + "477" : "OutgoingData at Pin 125 has Label (Stereotype, exitpoint)", + "478" : "OutgoingData at Pin 125 has Label (Stereotype, external_database)", + "479" : "OutgoingData at Pin 125 has Label (Stereotype, jdbc)", + "480" : "OutgoingData at Pin 125 has Label (Stereotype, plaintext_credentials)", + "481" : "OutgoingData at Pin 125 has Label (Stereotype, plaintext_credentials_link)", + "482" : "OutgoingData at Pin 125 has Label (Username, root)", + "483" : "Node 5 has Property (Database, Neo4j)", + "484" : "Node 5 has Property (Password, root)", + "485" : "Node 5 has Property (Port, 7474)", + "486" : "Node 5 has Property (Stereotype, entrypoint)", + "487" : "Node 5 has Property (Stereotype, exitpoint)", + "488" : "Node 5 has Property (Stereotype, external_database)", + "489" : "Node 5 has Property (Stereotype, plaintext_credentials)", + "490" : "Node 5 has Property (Username, neo4j)", + "491" : "OutgoingData at Pin 133 has Label (Password, root)", + "492" : "OutgoingData at Pin 133 has Label (Stereotype, entrypoint)", + "493" : "OutgoingData at Pin 133 has Label (Stereotype, exitpoint)", + "494" : "OutgoingData at Pin 133 has Label (Stereotype, external_database)", + "495" : "OutgoingData at Pin 133 has Label (Stereotype, jdbc)", + "496" : "OutgoingData at Pin 133 has Label (Stereotype, plaintext_credentials)", + "497" : "OutgoingData at Pin 133 has Label (Stereotype, plaintext_credentials_link)", + "498" : "OutgoingData at Pin 133 has Label (Username, neo4j)", + "499" : "Node 6 has Property (Stereotype, entrypoint)", + "500" : "Node 6 has Property (Stereotype, exitpoint)", + "501" : "Node 6 has Property (Stereotype, user_stereotype)", + "502" : "OutgoingData at Pin 138 has Label (Stereotype, circuit_breaker)", + "503" : "OutgoingData at Pin 138 has Label (Stereotype, configuration_server)", + "504" : "OutgoingData at Pin 138 has Label (Stereotype, entrypoint)", + "505" : "OutgoingData at Pin 138 has Label (Stereotype, exitpoint)", + "506" : "OutgoingData at Pin 138 has Label (Stereotype, gateway)", + "507" : "OutgoingData at Pin 138 has Label (Stereotype, github_repository)", + "508" : "OutgoingData at Pin 138 has Label (Stereotype, infrastructural)", + "509" : "OutgoingData at Pin 138 has Label (Stereotype, load_balancer)", + "510" : "OutgoingData at Pin 138 has Label (Stereotype, local_logging)", + "511" : "OutgoingData at Pin 138 has Label (Stereotype, monitoring_dashboard)", + "512" : "OutgoingData at Pin 138 has Label (Stereotype, restful_http)", + "513" : "OutgoingData at Pin 138 has Label (Stereotype, token_validation)", + "514" : "OutgoingData at Pin 138 has Label (Stereotype, user_stereotype)", + "515" : "Node 7 has Property (ConfigurationServer, SpringCloudConfig)", + "516" : "Node 7 has Property (Port, 8888)", + "517" : "Node 7 has Property (Stereotype, configuration_server)", + "518" : "Node 7 has Property (Stereotype, infrastructural)", + "519" : "Node 7 has Property (Stereotype, token_validation)", + "520" : "OutgoingData at Pin 110 has Label (Stereotype, configuration_server)", + "521" : "OutgoingData at Pin 110 has Label (Stereotype, entrypoint)", + "522" : "OutgoingData at Pin 110 has Label (Stereotype, github_repository)", + "523" : "OutgoingData at Pin 110 has Label (Stereotype, infrastructural)", + "524" : "OutgoingData at Pin 110 has Label (Stereotype, restful_http)", + "525" : "OutgoingData at Pin 110 has Label (Stereotype, token_validation)", + "526" : "OutgoingData at Pin 115 has Label (Stereotype, configuration_server)", + "527" : "OutgoingData at Pin 115 has Label (Stereotype, entrypoint)", + "528" : "OutgoingData at Pin 115 has Label (Stereotype, github_repository)", + "529" : "OutgoingData at Pin 115 has Label (Stereotype, infrastructural)", + "530" : "OutgoingData at Pin 115 has Label (Stereotype, restful_http)", + "531" : "OutgoingData at Pin 115 has Label (Stereotype, token_validation)", + "532" : "OutgoingData at Pin 123 has Label (Stereotype, configuration_server)", + "533" : "OutgoingData at Pin 123 has Label (Stereotype, entrypoint)", + "534" : "OutgoingData at Pin 123 has Label (Stereotype, github_repository)", + "535" : "OutgoingData at Pin 123 has Label (Stereotype, infrastructural)", + "536" : "OutgoingData at Pin 123 has Label (Stereotype, restful_http)", + "537" : "OutgoingData at Pin 123 has Label (Stereotype, token_validation)", + "538" : "OutgoingData at Pin 131 has Label (Stereotype, configuration_server)", + "539" : "OutgoingData at Pin 131 has Label (Stereotype, entrypoint)", + "540" : "OutgoingData at Pin 131 has Label (Stereotype, github_repository)", + "541" : "OutgoingData at Pin 131 has Label (Stereotype, infrastructural)", + "542" : "OutgoingData at Pin 131 has Label (Stereotype, restful_http)", + "543" : "OutgoingData at Pin 131 has Label (Stereotype, token_validation)", + "544" : "OutgoingData at Pin 143 has Label (Stereotype, configuration_server)", + "545" : "OutgoingData at Pin 143 has Label (Stereotype, entrypoint)", + "546" : "OutgoingData at Pin 143 has Label (Stereotype, github_repository)", + "547" : "OutgoingData at Pin 143 has Label (Stereotype, infrastructural)", + "548" : "OutgoingData at Pin 143 has Label (Stereotype, restful_http)", + "549" : "OutgoingData at Pin 143 has Label (Stereotype, token_validation)", + "550" : "OutgoingData at Pin 155 has Label (Stereotype, configuration_server)", + "551" : "OutgoingData at Pin 155 has Label (Stereotype, entrypoint)", + "552" : "OutgoingData at Pin 155 has Label (Stereotype, github_repository)", + "553" : "OutgoingData at Pin 155 has Label (Stereotype, infrastructural)", + "554" : "OutgoingData at Pin 155 has Label (Stereotype, restful_http)", + "555" : "OutgoingData at Pin 155 has Label (Stereotype, token_validation)", + "556" : "Node 8 has Property (Port, 8761)", + "557" : "Node 8 has Property (ServiceDiscovery, Eureka)", + "558" : "Node 8 has Property (Stereotype, infrastructural)", + "559" : "Node 8 has Property (Stereotype, service_discovery)", + "560" : "Node 8 has Property (Stereotype, token_validation)", + "561" : "OutgoingData at Pin 136 has Label (CircuitBreaker, Hystrix)", + "562" : "OutgoingData at Pin 136 has Label (LoadBalancer, Ribbon)", + "563" : "OutgoingData at Pin 136 has Label (Password, root)", + "564" : "OutgoingData at Pin 136 has Label (Stereotype, circuit_breaker)", + "565" : "OutgoingData at Pin 136 has Label (Stereotype, circuit_breaker_link)", + "566" : "OutgoingData at Pin 136 has Label (Stereotype, configuration_server)", + "567" : "OutgoingData at Pin 136 has Label (Stereotype, entrypoint)", + "568" : "OutgoingData at Pin 136 has Label (Stereotype, exitpoint)", + "569" : "OutgoingData at Pin 136 has Label (Stereotype, external_database)", + "570" : "OutgoingData at Pin 136 has Label (Stereotype, feign_connection)", + "571" : "OutgoingData at Pin 136 has Label (Stereotype, github_repository)", + "572" : "OutgoingData at Pin 136 has Label (Stereotype, infrastructural)", + "573" : "OutgoingData at Pin 136 has Label (Stereotype, internal)", + "574" : "OutgoingData at Pin 136 has Label (Stereotype, jdbc)", + "575" : "OutgoingData at Pin 136 has Label (Stereotype, load_balanced_link)", + "576" : "OutgoingData at Pin 136 has Label (Stereotype, load_balancer)", + "577" : "OutgoingData at Pin 136 has Label (Stereotype, monitoring_dashboard)", + "578" : "OutgoingData at Pin 136 has Label (Stereotype, plaintext_credentials)", + "579" : "OutgoingData at Pin 136 has Label (Stereotype, plaintext_credentials_link)", + "580" : "OutgoingData at Pin 136 has Label (Stereotype, restful_http)", + "581" : "OutgoingData at Pin 136 has Label (Stereotype, service_discovery)", + "582" : "OutgoingData at Pin 136 has Label (Stereotype, token_validation)", + "583" : "OutgoingData at Pin 136 has Label (Stereotype, user_stereotype)", + "584" : "OutgoingData at Pin 136 has Label (Username, neo4j)", + "585" : "OutgoingData at Pin 136 has Label (Username, root)", + "586" : "OutgoingData at Pin 157 has Label (CircuitBreaker, Hystrix)", + "587" : "OutgoingData at Pin 157 has Label (LoadBalancer, Ribbon)", + "588" : "OutgoingData at Pin 157 has Label (Password, root)", + "589" : "OutgoingData at Pin 157 has Label (Stereotype, circuit_breaker)", + "590" : "OutgoingData at Pin 157 has Label (Stereotype, circuit_breaker_link)", + "591" : "OutgoingData at Pin 157 has Label (Stereotype, configuration_server)", + "592" : "OutgoingData at Pin 157 has Label (Stereotype, entrypoint)", + "593" : "OutgoingData at Pin 157 has Label (Stereotype, exitpoint)", + "594" : "OutgoingData at Pin 157 has Label (Stereotype, external_database)", + "595" : "OutgoingData at Pin 157 has Label (Stereotype, feign_connection)", + "596" : "OutgoingData at Pin 157 has Label (Stereotype, github_repository)", + "597" : "OutgoingData at Pin 157 has Label (Stereotype, infrastructural)", + "598" : "OutgoingData at Pin 157 has Label (Stereotype, internal)", + "599" : "OutgoingData at Pin 157 has Label (Stereotype, jdbc)", + "600" : "OutgoingData at Pin 157 has Label (Stereotype, load_balanced_link)", + "601" : "OutgoingData at Pin 157 has Label (Stereotype, load_balancer)", + "602" : "OutgoingData at Pin 157 has Label (Stereotype, monitoring_dashboard)", + "603" : "OutgoingData at Pin 157 has Label (Stereotype, plaintext_credentials)", + "604" : "OutgoingData at Pin 157 has Label (Stereotype, plaintext_credentials_link)", + "605" : "OutgoingData at Pin 157 has Label (Stereotype, restful_http)", + "606" : "OutgoingData at Pin 157 has Label (Stereotype, service_discovery)", + "607" : "OutgoingData at Pin 157 has Label (Stereotype, token_validation)", + "608" : "OutgoingData at Pin 157 has Label (Stereotype, user_stereotype)", + "609" : "OutgoingData at Pin 157 has Label (Username, neo4j)", + "610" : "OutgoingData at Pin 157 has Label (Username, root)", + "611" : "Node 9 has Property (Endpoints, movie)", + "612" : "Node 9 has Property (Endpoints, moviedummyData)", + "613" : "Node 9 has Property (Endpoints, movielist)", + "614" : "Node 9 has Property (Endpoints, moviemovieId)", + "615" : "Node 9 has Property (Port, 8002)", + "616" : "Node 9 has Property (Stereotype, token_validation)", + "617" : "OutgoingData at Pin 112 has Label (CircuitBreaker, Hystrix)", + "618" : "OutgoingData at Pin 112 has Label (LoadBalancer, Ribbon)", + "619" : "OutgoingData at Pin 112 has Label (Password, root)", + "620" : "OutgoingData at Pin 112 has Label (Stereotype, circuit_breaker)", + "621" : "OutgoingData at Pin 112 has Label (Stereotype, circuit_breaker_link)", + "622" : "OutgoingData at Pin 112 has Label (Stereotype, configuration_server)", + "623" : "OutgoingData at Pin 112 has Label (Stereotype, entrypoint)", + "624" : "OutgoingData at Pin 112 has Label (Stereotype, exitpoint)", + "625" : "OutgoingData at Pin 112 has Label (Stereotype, external_database)", + "626" : "OutgoingData at Pin 112 has Label (Stereotype, feign_connection)", + "627" : "OutgoingData at Pin 112 has Label (Stereotype, github_repository)", + "628" : "OutgoingData at Pin 112 has Label (Stereotype, infrastructural)", + "629" : "OutgoingData at Pin 112 has Label (Stereotype, internal)", + "630" : "OutgoingData at Pin 112 has Label (Stereotype, jdbc)", + "631" : "OutgoingData at Pin 112 has Label (Stereotype, load_balanced_link)", + "632" : "OutgoingData at Pin 112 has Label (Stereotype, load_balancer)", + "633" : "OutgoingData at Pin 112 has Label (Stereotype, monitoring_dashboard)", + "634" : "OutgoingData at Pin 112 has Label (Stereotype, plaintext_credentials)", + "635" : "OutgoingData at Pin 112 has Label (Stereotype, plaintext_credentials_link)", + "636" : "OutgoingData at Pin 112 has Label (Stereotype, restful_http)", + "637" : "OutgoingData at Pin 112 has Label (Stereotype, service_discovery)", + "638" : "OutgoingData at Pin 112 has Label (Stereotype, token_validation)", + "639" : "OutgoingData at Pin 112 has Label (Stereotype, user_stereotype)", + "640" : "OutgoingData at Pin 112 has Label (Username, neo4j)", + "641" : "OutgoingData at Pin 112 has Label (Username, root)", + "642" : "OutgoingData at Pin 159 has Label (CircuitBreaker, Hystrix)", + "643" : "OutgoingData at Pin 159 has Label (LoadBalancer, Ribbon)", + "644" : "OutgoingData at Pin 159 has Label (Stereotype, circuit_breaker)", + "645" : "OutgoingData at Pin 159 has Label (Stereotype, circuit_breaker_link)", + "646" : "OutgoingData at Pin 159 has Label (Stereotype, configuration_server)", + "647" : "OutgoingData at Pin 159 has Label (Stereotype, entrypoint)", + "648" : "OutgoingData at Pin 159 has Label (Stereotype, exitpoint)", + "649" : "OutgoingData at Pin 159 has Label (Stereotype, external_database)", + "650" : "OutgoingData at Pin 159 has Label (Stereotype, feign_connection)", + "651" : "OutgoingData at Pin 159 has Label (Stereotype, github_repository)", + "652" : "OutgoingData at Pin 159 has Label (Stereotype, infrastructural)", + "653" : "OutgoingData at Pin 159 has Label (Stereotype, internal)", + "654" : "OutgoingData at Pin 159 has Label (Stereotype, jdbc)", + "655" : "OutgoingData at Pin 159 has Label (Stereotype, load_balanced_link)", + "656" : "OutgoingData at Pin 159 has Label (Stereotype, load_balancer)", + "657" : "OutgoingData at Pin 159 has Label (Stereotype, monitoring_dashboard)", + "658" : "OutgoingData at Pin 159 has Label (Stereotype, restful_http)", + "659" : "OutgoingData at Pin 159 has Label (Stereotype, service_discovery)", + "660" : "OutgoingData at Pin 159 has Label (Stereotype, token_validation)", + "661" : "Flow from OutPin: 120 to InPin: 122", + "662" : "Flow from OutPin: 120 to InPin: 130", + "663" : "Flow from OutPin: 120 to InPin: 135", + "664" : "Flow from OutPin: 120 to InPin: 154", + "665" : "Flow from OutPin: 120 to InPin: 140", + "666" : "Flow from OutPin: 120 to InPin: 105", + "667" : "Flow from OutPin: 120 to InPin: 109", + "668" : "Flow from OutPin: 120 to InPin: 114", + "669" : "Flow from OutPin: 161 to InPin: 122", + "670" : "Flow from OutPin: 161 to InPin: 130", + "671" : "Flow from OutPin: 161 to InPin: 135", + "672" : "Flow from OutPin: 161 to InPin: 154", + "673" : "Flow from OutPin: 161 to InPin: 140", + "674" : "Flow from OutPin: 161 to InPin: 105", + "675" : "Flow from OutPin: 161 to InPin: 109", + "676" : "Flow from OutPin: 161 to InPin: 114", + "677" : "Flow from OutPin: 128 to InPin: 122", + "678" : "Flow from OutPin: 128 to InPin: 130", + "679" : "Flow from OutPin: 128 to InPin: 135", + "680" : "Flow from OutPin: 128 to InPin: 154", + "681" : "Flow from OutPin: 128 to InPin: 140", + "682" : "Flow from OutPin: 128 to InPin: 105", + "683" : "Flow from OutPin: 128 to InPin: 109", + "684" : "Flow from OutPin: 128 to InPin: 114", + "685" : "Flow from OutPin: 163 to InPin: 122", + "686" : "Flow from OutPin: 163 to InPin: 130", + "687" : "Flow from OutPin: 163 to InPin: 135", + "688" : "Flow from OutPin: 163 to InPin: 154", + "689" : "Flow from OutPin: 163 to InPin: 140", + "690" : "Flow from OutPin: 163 to InPin: 105", + "691" : "Flow from OutPin: 163 to InPin: 109", + "692" : "Flow from OutPin: 163 to InPin: 114", + "693" : "Flow from OutPin: 141 to InPin: 122", + "694" : "Flow from OutPin: 141 to InPin: 130", + "695" : "Flow from OutPin: 141 to InPin: 135", + "696" : "Flow from OutPin: 141 to InPin: 154", + "697" : "Flow from OutPin: 141 to InPin: 140", + "698" : "Flow from OutPin: 141 to InPin: 105", + "699" : "Flow from OutPin: 141 to InPin: 109", + "700" : "Flow from OutPin: 141 to InPin: 114", + "701" : "Flow from OutPin: 145 to InPin: 122", + "702" : "Flow from OutPin: 145 to InPin: 130", + "703" : "Flow from OutPin: 145 to InPin: 135", + "704" : "Flow from OutPin: 145 to InPin: 154", + "705" : "Flow from OutPin: 145 to InPin: 140", + "706" : "Flow from OutPin: 145 to InPin: 105", + "707" : "Flow from OutPin: 145 to InPin: 109", + "708" : "Flow from OutPin: 145 to InPin: 114", + "709" : "Flow from OutPin: 150 to InPin: 122", + "710" : "Flow from OutPin: 150 to InPin: 130", + "711" : "Flow from OutPin: 150 to InPin: 135", + "712" : "Flow from OutPin: 150 to InPin: 154", + "713" : "Flow from OutPin: 150 to InPin: 140", + "714" : "Flow from OutPin: 150 to InPin: 105", + "715" : "Flow from OutPin: 150 to InPin: 109", + "716" : "Flow from OutPin: 150 to InPin: 114", + "717" : "Flow from OutPin: 152 to InPin: 122", + "718" : "Flow from OutPin: 152 to InPin: 130", + "719" : "Flow from OutPin: 152 to InPin: 135", + "720" : "Flow from OutPin: 152 to InPin: 154", + "721" : "Flow from OutPin: 152 to InPin: 140", + "722" : "Flow from OutPin: 152 to InPin: 105", + "723" : "Flow from OutPin: 152 to InPin: 109", + "724" : "Flow from OutPin: 152 to InPin: 114", + "725" : "Flow from OutPin: 165 to InPin: 122", + "726" : "Flow from OutPin: 165 to InPin: 130", + "727" : "Flow from OutPin: 165 to InPin: 135", + "728" : "Flow from OutPin: 165 to InPin: 154", + "729" : "Flow from OutPin: 165 to InPin: 140", + "730" : "Flow from OutPin: 165 to InPin: 105", + "731" : "Flow from OutPin: 165 to InPin: 109", + "732" : "Flow from OutPin: 165 to InPin: 114", + "733" : "Flow from OutPin: 106 to InPin: 122", + "734" : "Flow from OutPin: 106 to InPin: 130", + "735" : "Flow from OutPin: 106 to InPin: 135", + "736" : "Flow from OutPin: 106 to InPin: 154", + "737" : "Flow from OutPin: 106 to InPin: 140", + "738" : "Flow from OutPin: 106 to InPin: 105", + "739" : "Flow from OutPin: 106 to InPin: 109", + "740" : "Flow from OutPin: 106 to InPin: 114", + "741" : "Flow from OutPin: 117 to InPin: 122", + "742" : "Flow from OutPin: 117 to InPin: 130", + "743" : "Flow from OutPin: 117 to InPin: 135", + "744" : "Flow from OutPin: 117 to InPin: 154", + "745" : "Flow from OutPin: 117 to InPin: 140", + "746" : "Flow from OutPin: 117 to InPin: 105", + "747" : "Flow from OutPin: 117 to InPin: 109", + "748" : "Flow from OutPin: 117 to InPin: 114", + "749" : "Flow from OutPin: 125 to InPin: 122", + "750" : "Flow from OutPin: 125 to InPin: 130", + "751" : "Flow from OutPin: 125 to InPin: 135", + "752" : "Flow from OutPin: 125 to InPin: 154", + "753" : "Flow from OutPin: 125 to InPin: 140", + "754" : "Flow from OutPin: 125 to InPin: 105", + "755" : "Flow from OutPin: 125 to InPin: 109", + "756" : "Flow from OutPin: 125 to InPin: 114", + "757" : "Flow from OutPin: 133 to InPin: 122", + "758" : "Flow from OutPin: 133 to InPin: 130", + "759" : "Flow from OutPin: 133 to InPin: 135", + "760" : "Flow from OutPin: 133 to InPin: 154", + "761" : "Flow from OutPin: 133 to InPin: 140", + "762" : "Flow from OutPin: 133 to InPin: 105", + "763" : "Flow from OutPin: 133 to InPin: 109", + "764" : "Flow from OutPin: 133 to InPin: 114", + "765" : "Flow from OutPin: 138 to InPin: 122", + "766" : "Flow from OutPin: 138 to InPin: 130", + "767" : "Flow from OutPin: 138 to InPin: 135", + "768" : "Flow from OutPin: 138 to InPin: 154", + "769" : "Flow from OutPin: 138 to InPin: 140", + "770" : "Flow from OutPin: 138 to InPin: 105", + "771" : "Flow from OutPin: 138 to InPin: 109", + "772" : "Flow from OutPin: 138 to InPin: 114", + "773" : "Flow from OutPin: 110 to InPin: 122", + "774" : "Flow from OutPin: 110 to InPin: 130", + "775" : "Flow from OutPin: 110 to InPin: 135", + "776" : "Flow from OutPin: 110 to InPin: 154", + "777" : "Flow from OutPin: 110 to InPin: 140", + "778" : "Flow from OutPin: 110 to InPin: 105", + "779" : "Flow from OutPin: 110 to InPin: 109", + "780" : "Flow from OutPin: 110 to InPin: 114", + "781" : "Flow from OutPin: 115 to InPin: 122", + "782" : "Flow from OutPin: 115 to InPin: 130", + "783" : "Flow from OutPin: 115 to InPin: 135", + "784" : "Flow from OutPin: 115 to InPin: 154", + "785" : "Flow from OutPin: 115 to InPin: 140", + "786" : "Flow from OutPin: 115 to InPin: 105", + "787" : "Flow from OutPin: 115 to InPin: 109", + "788" : "Flow from OutPin: 115 to InPin: 114", + "789" : "Flow from OutPin: 123 to InPin: 122", + "790" : "Flow from OutPin: 123 to InPin: 130", + "791" : "Flow from OutPin: 123 to InPin: 135", + "792" : "Flow from OutPin: 123 to InPin: 154", + "793" : "Flow from OutPin: 123 to InPin: 140", + "794" : "Flow from OutPin: 123 to InPin: 105", + "795" : "Flow from OutPin: 123 to InPin: 109", + "796" : "Flow from OutPin: 123 to InPin: 114", + "797" : "Flow from OutPin: 131 to InPin: 122", + "798" : "Flow from OutPin: 131 to InPin: 130", + "799" : "Flow from OutPin: 131 to InPin: 135", + "800" : "Flow from OutPin: 131 to InPin: 154", + "801" : "Flow from OutPin: 131 to InPin: 140", + "802" : "Flow from OutPin: 131 to InPin: 105", + "803" : "Flow from OutPin: 131 to InPin: 109", + "804" : "Flow from OutPin: 131 to InPin: 114", + "805" : "Flow from OutPin: 143 to InPin: 122", + "806" : "Flow from OutPin: 143 to InPin: 130", + "807" : "Flow from OutPin: 143 to InPin: 135", + "808" : "Flow from OutPin: 143 to InPin: 154", + "809" : "Flow from OutPin: 143 to InPin: 140", + "810" : "Flow from OutPin: 143 to InPin: 105", + "811" : "Flow from OutPin: 143 to InPin: 109", + "812" : "Flow from OutPin: 143 to InPin: 114", + "813" : "Flow from OutPin: 155 to InPin: 122", + "814" : "Flow from OutPin: 155 to InPin: 130", + "815" : "Flow from OutPin: 155 to InPin: 135", + "816" : "Flow from OutPin: 155 to InPin: 154", + "817" : "Flow from OutPin: 155 to InPin: 140", + "818" : "Flow from OutPin: 155 to InPin: 105", + "819" : "Flow from OutPin: 155 to InPin: 109", + "820" : "Flow from OutPin: 155 to InPin: 114", + "821" : "Flow from OutPin: 136 to InPin: 122", + "822" : "Flow from OutPin: 136 to InPin: 130", + "823" : "Flow from OutPin: 136 to InPin: 135", + "824" : "Flow from OutPin: 136 to InPin: 154", + "825" : "Flow from OutPin: 136 to InPin: 140", + "826" : "Flow from OutPin: 136 to InPin: 105", + "827" : "Flow from OutPin: 136 to InPin: 109", + "828" : "Flow from OutPin: 136 to InPin: 114", + "829" : "Flow from OutPin: 157 to InPin: 122", + "830" : "Flow from OutPin: 157 to InPin: 130", + "831" : "Flow from OutPin: 157 to InPin: 135", + "832" : "Flow from OutPin: 157 to InPin: 154", + "833" : "Flow from OutPin: 157 to InPin: 140", + "834" : "Flow from OutPin: 157 to InPin: 105", + "835" : "Flow from OutPin: 157 to InPin: 109", + "836" : "Flow from OutPin: 157 to InPin: 114", + "837" : "Flow from OutPin: 112 to InPin: 122", + "838" : "Flow from OutPin: 112 to InPin: 130", + "839" : "Flow from OutPin: 112 to InPin: 135", + "840" : "Flow from OutPin: 112 to InPin: 154", + "841" : "Flow from OutPin: 112 to InPin: 140", + "842" : "Flow from OutPin: 112 to InPin: 105", + "843" : "Flow from OutPin: 112 to InPin: 109", + "844" : "Flow from OutPin: 112 to InPin: 114", + "845" : "Flow from OutPin: 159 to InPin: 122", + "846" : "Flow from OutPin: 159 to InPin: 130", + "847" : "Flow from OutPin: 159 to InPin: 135", + "848" : "Flow from OutPin: 159 to InPin: 154", + "849" : "Flow from OutPin: 159 to InPin: 140", + "850" : "Flow from OutPin: 159 to InPin: 105", + "851" : "Flow from OutPin: 159 to InPin: 109", + "852" : "Flow from OutPin: 159 to InPin: 114", + "853" : "OutgoingData at Pin 120 has Label (Stereotype, transform_identity_representation)", + "854" : "OutgoingData at Pin 120 has Label (Stereotype, encrypted_connection)", + "855" : "OutgoingData at Pin 120 has Label (Stereotype, gateway)", + "856" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, login_attempts_regulation)", + "857" : "OutgoingData at Pin 120 has Label (Stereotype, login_attempts_regulation)", + "858" : "OutgoingData at Pin 120 has Label (Stereotype, authenticated_request)", + "859" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, local_logging)", + "860" : "OutgoingData at Pin 120 has Label (Stereotype, local_logging)", + "861" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, log_sanitization)", + "862" : "OutgoingData at Pin 120 has Label (Stereotype, log_sanitization)", + "863" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, authorization_server)", + "864" : "OutgoingData at Pin 120 has Label (Stereotype, authorization_server)", + "865" : "OutgoingData at Pin 161 has Label (Stereotype, transform_identity_representation)", + "866" : "OutgoingData at Pin 161 has Label (Stereotype, encrypted_connection)", + "867" : "OutgoingData at Pin 161 has Label (Stereotype, gateway)", + "868" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", + "869" : "OutgoingData at Pin 161 has Label (Stereotype, login_attempts_regulation)", + "870" : "OutgoingData at Pin 161 has Label (Stereotype, authenticated_request)", + "871" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, local_logging)", + "872" : "OutgoingData at Pin 161 has Label (Stereotype, local_logging)", + "873" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, log_sanitization)", + "874" : "OutgoingData at Pin 161 has Label (Stereotype, log_sanitization)", + "875" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, authorization_server)", + "876" : "OutgoingData at Pin 161 has Label (Stereotype, authorization_server)", + "877" : "OutgoingData at Pin 128 has Label (Stereotype, transform_identity_representation)", + "878" : "OutgoingData at Pin 128 has Label (Stereotype, encrypted_connection)", + "879" : "OutgoingData at Pin 128 has Label (Stereotype, gateway)", + "880" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, login_attempts_regulation)", + "881" : "OutgoingData at Pin 128 has Label (Stereotype, login_attempts_regulation)", + "882" : "OutgoingData at Pin 128 has Label (Stereotype, authenticated_request)", + "883" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, local_logging)", + "884" : "OutgoingData at Pin 128 has Label (Stereotype, local_logging)", + "885" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, log_sanitization)", + "886" : "OutgoingData at Pin 128 has Label (Stereotype, log_sanitization)", + "887" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, authorization_server)", + "888" : "OutgoingData at Pin 128 has Label (Stereotype, authorization_server)", + "889" : "OutgoingData at Pin 163 has Label (Stereotype, transform_identity_representation)", + "890" : "OutgoingData at Pin 163 has Label (Stereotype, encrypted_connection)", + "891" : "OutgoingData at Pin 163 has Label (Stereotype, gateway)", + "892" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", + "893" : "OutgoingData at Pin 163 has Label (Stereotype, login_attempts_regulation)", + "894" : "OutgoingData at Pin 163 has Label (Stereotype, authenticated_request)", + "895" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, local_logging)", + "896" : "OutgoingData at Pin 163 has Label (Stereotype, local_logging)", + "897" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, log_sanitization)", + "898" : "OutgoingData at Pin 163 has Label (Stereotype, log_sanitization)", + "899" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, authorization_server)", + "900" : "OutgoingData at Pin 163 has Label (Stereotype, authorization_server)", + "901" : "OutgoingData at Pin 141 has Label (Stereotype, transform_identity_representation)", + "902" : "OutgoingData at Pin 141 has Label (Stereotype, encrypted_connection)", + "903" : "OutgoingData at Pin 141 has Label (Stereotype, internal)", + "904" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, login_attempts_regulation)", + "905" : "OutgoingData at Pin 141 has Label (Stereotype, login_attempts_regulation)", + "906" : "OutgoingData at Pin 141 has Label (Stereotype, authenticated_request)", + "907" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, local_logging)", + "908" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, log_sanitization)", + "909" : "OutgoingData at Pin 141 has Label (Stereotype, log_sanitization)", + "910" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, authorization_server)", + "911" : "OutgoingData at Pin 141 has Label (Stereotype, authorization_server)", + "912" : "OutgoingData at Pin 145 has Label (Stereotype, transform_identity_representation)", + "913" : "OutgoingData at Pin 145 has Label (Stereotype, encrypted_connection)", + "914" : "OutgoingData at Pin 145 has Label (Stereotype, internal)", + "915" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, login_attempts_regulation)", + "916" : "OutgoingData at Pin 145 has Label (Stereotype, login_attempts_regulation)", + "917" : "OutgoingData at Pin 145 has Label (Stereotype, authenticated_request)", + "918" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, local_logging)", + "919" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, log_sanitization)", + "920" : "OutgoingData at Pin 145 has Label (Stereotype, log_sanitization)", + "921" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, authorization_server)", + "922" : "OutgoingData at Pin 145 has Label (Stereotype, authorization_server)", + "923" : "OutgoingData at Pin 150 has Label (Stereotype, transform_identity_representation)", + "924" : "OutgoingData at Pin 150 has Label (Stereotype, encrypted_connection)", + "925" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, login_attempts_regulation)", + "926" : "OutgoingData at Pin 150 has Label (Stereotype, login_attempts_regulation)", + "927" : "OutgoingData at Pin 150 has Label (Stereotype, authenticated_request)", + "928" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, local_logging)", + "929" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, log_sanitization)", + "930" : "OutgoingData at Pin 150 has Label (Stereotype, log_sanitization)", + "931" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, authorization_server)", + "932" : "OutgoingData at Pin 150 has Label (Stereotype, authorization_server)", + "933" : "OutgoingData at Pin 152 has Label (Stereotype, transform_identity_representation)", + "934" : "OutgoingData at Pin 152 has Label (Stereotype, encrypted_connection)", + "935" : "OutgoingData at Pin 152 has Label (Stereotype, internal)", + "936" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, login_attempts_regulation)", + "937" : "OutgoingData at Pin 152 has Label (Stereotype, login_attempts_regulation)", + "938" : "OutgoingData at Pin 152 has Label (Stereotype, authenticated_request)", + "939" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, local_logging)", + "940" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, log_sanitization)", + "941" : "OutgoingData at Pin 152 has Label (Stereotype, log_sanitization)", + "942" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, authorization_server)", + "943" : "OutgoingData at Pin 152 has Label (Stereotype, authorization_server)", + "944" : "OutgoingData at Pin 165 has Label (Stereotype, transform_identity_representation)", + "945" : "OutgoingData at Pin 165 has Label (Stereotype, encrypted_connection)", + "946" : "OutgoingData at Pin 165 has Label (Stereotype, internal)", + "947" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", + "948" : "OutgoingData at Pin 165 has Label (Stereotype, login_attempts_regulation)", + "949" : "OutgoingData at Pin 165 has Label (Stereotype, authenticated_request)", + "950" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, local_logging)", + "951" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, log_sanitization)", + "952" : "OutgoingData at Pin 165 has Label (Stereotype, log_sanitization)", + "953" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, authorization_server)", + "954" : "OutgoingData at Pin 165 has Label (Stereotype, authorization_server)", + "955" : "OutgoingData at Pin 106 has Label (Stereotype, transform_identity_representation)", + "956" : "OutgoingData at Pin 106 has Label (Stereotype, encrypted_connection)", + "957" : "OutgoingData at Pin 106 has Label (Stereotype, gateway)", + "958" : "OutgoingData at Pin 106 has Label (Stereotype, token_validation)", + "959" : "OutgoingData at Pin 106 has Label (Stereotype, internal)", + "960" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, login_attempts_regulation)", + "961" : "OutgoingData at Pin 106 has Label (Stereotype, login_attempts_regulation)", + "962" : "OutgoingData at Pin 106 has Label (Stereotype, authenticated_request)", + "963" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, local_logging)", + "964" : "OutgoingData at Pin 106 has Label (Stereotype, local_logging)", + "965" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, log_sanitization)", + "966" : "OutgoingData at Pin 106 has Label (Stereotype, log_sanitization)", + "967" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, authorization_server)", + "968" : "OutgoingData at Pin 106 has Label (Stereotype, authorization_server)", + "969" : "OutgoingData at Pin 117 has Label (Stereotype, transform_identity_representation)", + "970" : "OutgoingData at Pin 117 has Label (Stereotype, encrypted_connection)", + "971" : "OutgoingData at Pin 117 has Label (Stereotype, gateway)", + "972" : "OutgoingData at Pin 117 has Label (Stereotype, token_validation)", + "973" : "OutgoingData at Pin 117 has Label (Stereotype, internal)", + "974" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, login_attempts_regulation)", + "975" : "OutgoingData at Pin 117 has Label (Stereotype, login_attempts_regulation)", + "976" : "OutgoingData at Pin 117 has Label (Stereotype, authenticated_request)", + "977" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, local_logging)", + "978" : "OutgoingData at Pin 117 has Label (Stereotype, local_logging)", + "979" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, log_sanitization)", + "980" : "OutgoingData at Pin 117 has Label (Stereotype, log_sanitization)", + "981" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, authorization_server)", + "982" : "OutgoingData at Pin 117 has Label (Stereotype, authorization_server)", + "983" : "OutgoingData at Pin 125 has Label (Stereotype, transform_identity_representation)", + "984" : "OutgoingData at Pin 125 has Label (Stereotype, encrypted_connection)", + "985" : "OutgoingData at Pin 125 has Label (Stereotype, gateway)", + "986" : "OutgoingData at Pin 125 has Label (Stereotype, token_validation)", + "987" : "OutgoingData at Pin 125 has Label (Stereotype, internal)", + "988" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, login_attempts_regulation)", + "989" : "OutgoingData at Pin 125 has Label (Stereotype, login_attempts_regulation)", + "990" : "OutgoingData at Pin 125 has Label (Stereotype, authenticated_request)", + "991" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, local_logging)", + "992" : "OutgoingData at Pin 125 has Label (Stereotype, local_logging)", + "993" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, log_sanitization)", + "994" : "OutgoingData at Pin 125 has Label (Stereotype, log_sanitization)", + "995" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, authorization_server)", + "996" : "OutgoingData at Pin 125 has Label (Stereotype, authorization_server)", + "997" : "OutgoingData at Pin 133 has Label (Stereotype, transform_identity_representation)", + "998" : "OutgoingData at Pin 133 has Label (Stereotype, encrypted_connection)", + "999" : "OutgoingData at Pin 133 has Label (Stereotype, gateway)", + "1000" : "OutgoingData at Pin 133 has Label (Stereotype, token_validation)", + "1001" : "OutgoingData at Pin 133 has Label (Stereotype, internal)", + "1002" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, login_attempts_regulation)", + "1003" : "OutgoingData at Pin 133 has Label (Stereotype, login_attempts_regulation)", + "1004" : "OutgoingData at Pin 133 has Label (Stereotype, authenticated_request)", + "1005" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, local_logging)", + "1006" : "OutgoingData at Pin 133 has Label (Stereotype, local_logging)", + "1007" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, log_sanitization)", + "1008" : "OutgoingData at Pin 133 has Label (Stereotype, log_sanitization)", + "1009" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, authorization_server)", + "1010" : "OutgoingData at Pin 133 has Label (Stereotype, authorization_server)", + "1011" : "OutgoingData at Pin 138 has Label (Stereotype, transform_identity_representation)", + "1012" : "OutgoingData at Pin 138 has Label (Stereotype, encrypted_connection)", + "1013" : "OutgoingData at Pin 138 has Label (Stereotype, internal)", + "1014" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, login_attempts_regulation)", + "1015" : "OutgoingData at Pin 138 has Label (Stereotype, login_attempts_regulation)", + "1016" : "OutgoingData at Pin 138 has Label (Stereotype, authenticated_request)", + "1017" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, local_logging)", + "1018" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, log_sanitization)", + "1019" : "OutgoingData at Pin 138 has Label (Stereotype, log_sanitization)", + "1020" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, authorization_server)", + "1021" : "OutgoingData at Pin 138 has Label (Stereotype, authorization_server)", + "1022" : "OutgoingData at Pin 110 has Label (Stereotype, transform_identity_representation)", + "1023" : "OutgoingData at Pin 110 has Label (Stereotype, encrypted_connection)", + "1024" : "OutgoingData at Pin 110 has Label (Stereotype, gateway)", + "1025" : "OutgoingData at Pin 110 has Label (Stereotype, internal)", + "1026" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, login_attempts_regulation)", + "1027" : "OutgoingData at Pin 110 has Label (Stereotype, login_attempts_regulation)", + "1028" : "OutgoingData at Pin 110 has Label (Stereotype, authenticated_request)", + "1029" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, local_logging)", + "1030" : "OutgoingData at Pin 110 has Label (Stereotype, local_logging)", + "1031" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, log_sanitization)", + "1032" : "OutgoingData at Pin 110 has Label (Stereotype, log_sanitization)", + "1033" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, authorization_server)", + "1034" : "OutgoingData at Pin 110 has Label (Stereotype, authorization_server)", + "1035" : "OutgoingData at Pin 115 has Label (Stereotype, transform_identity_representation)", + "1036" : "OutgoingData at Pin 115 has Label (Stereotype, encrypted_connection)", + "1037" : "OutgoingData at Pin 115 has Label (Stereotype, gateway)", + "1038" : "OutgoingData at Pin 115 has Label (Stereotype, internal)", + "1039" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, login_attempts_regulation)", + "1040" : "OutgoingData at Pin 115 has Label (Stereotype, login_attempts_regulation)", + "1041" : "OutgoingData at Pin 115 has Label (Stereotype, authenticated_request)", + "1042" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, local_logging)", + "1043" : "OutgoingData at Pin 115 has Label (Stereotype, local_logging)", + "1044" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, log_sanitization)", + "1045" : "OutgoingData at Pin 115 has Label (Stereotype, log_sanitization)", + "1046" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, authorization_server)", + "1047" : "OutgoingData at Pin 115 has Label (Stereotype, authorization_server)", + "1048" : "OutgoingData at Pin 123 has Label (Stereotype, transform_identity_representation)", + "1049" : "OutgoingData at Pin 123 has Label (Stereotype, encrypted_connection)", + "1050" : "OutgoingData at Pin 123 has Label (Stereotype, gateway)", + "1051" : "OutgoingData at Pin 123 has Label (Stereotype, internal)", + "1052" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, login_attempts_regulation)", + "1053" : "OutgoingData at Pin 123 has Label (Stereotype, login_attempts_regulation)", + "1054" : "OutgoingData at Pin 123 has Label (Stereotype, authenticated_request)", + "1055" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, local_logging)", + "1056" : "OutgoingData at Pin 123 has Label (Stereotype, local_logging)", + "1057" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, log_sanitization)", + "1058" : "OutgoingData at Pin 123 has Label (Stereotype, log_sanitization)", + "1059" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, authorization_server)", + "1060" : "OutgoingData at Pin 123 has Label (Stereotype, authorization_server)", + "1061" : "OutgoingData at Pin 131 has Label (Stereotype, transform_identity_representation)", + "1062" : "OutgoingData at Pin 131 has Label (Stereotype, encrypted_connection)", + "1063" : "OutgoingData at Pin 131 has Label (Stereotype, gateway)", + "1064" : "OutgoingData at Pin 131 has Label (Stereotype, internal)", + "1065" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, login_attempts_regulation)", + "1066" : "OutgoingData at Pin 131 has Label (Stereotype, login_attempts_regulation)", + "1067" : "OutgoingData at Pin 131 has Label (Stereotype, authenticated_request)", + "1068" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, local_logging)", + "1069" : "OutgoingData at Pin 131 has Label (Stereotype, local_logging)", + "1070" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, log_sanitization)", + "1071" : "OutgoingData at Pin 131 has Label (Stereotype, log_sanitization)", + "1072" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, authorization_server)", + "1073" : "OutgoingData at Pin 131 has Label (Stereotype, authorization_server)", + "1074" : "OutgoingData at Pin 143 has Label (Stereotype, transform_identity_representation)", + "1075" : "OutgoingData at Pin 143 has Label (Stereotype, encrypted_connection)", + "1076" : "OutgoingData at Pin 143 has Label (Stereotype, gateway)", + "1077" : "OutgoingData at Pin 143 has Label (Stereotype, internal)", + "1078" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, login_attempts_regulation)", + "1079" : "OutgoingData at Pin 143 has Label (Stereotype, login_attempts_regulation)", + "1080" : "OutgoingData at Pin 143 has Label (Stereotype, authenticated_request)", + "1081" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, local_logging)", + "1082" : "OutgoingData at Pin 143 has Label (Stereotype, local_logging)", + "1083" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, log_sanitization)", + "1084" : "OutgoingData at Pin 143 has Label (Stereotype, log_sanitization)", + "1085" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, authorization_server)", + "1086" : "OutgoingData at Pin 143 has Label (Stereotype, authorization_server)", + "1087" : "OutgoingData at Pin 155 has Label (Stereotype, transform_identity_representation)", + "1088" : "OutgoingData at Pin 155 has Label (Stereotype, encrypted_connection)", + "1089" : "OutgoingData at Pin 155 has Label (Stereotype, gateway)", + "1090" : "OutgoingData at Pin 155 has Label (Stereotype, internal)", + "1091" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", + "1092" : "OutgoingData at Pin 155 has Label (Stereotype, login_attempts_regulation)", + "1093" : "OutgoingData at Pin 155 has Label (Stereotype, authenticated_request)", + "1094" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, local_logging)", + "1095" : "OutgoingData at Pin 155 has Label (Stereotype, local_logging)", + "1096" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, log_sanitization)", + "1097" : "OutgoingData at Pin 155 has Label (Stereotype, log_sanitization)", + "1098" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, authorization_server)", + "1099" : "OutgoingData at Pin 155 has Label (Stereotype, authorization_server)", + "1100" : "OutgoingData at Pin 136 has Label (Stereotype, transform_identity_representation)", + "1101" : "OutgoingData at Pin 136 has Label (Stereotype, encrypted_connection)", + "1102" : "OutgoingData at Pin 136 has Label (Stereotype, gateway)", + "1103" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, login_attempts_regulation)", + "1104" : "OutgoingData at Pin 136 has Label (Stereotype, login_attempts_regulation)", + "1105" : "OutgoingData at Pin 136 has Label (Stereotype, authenticated_request)", + "1106" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, local_logging)", + "1107" : "OutgoingData at Pin 136 has Label (Stereotype, local_logging)", + "1108" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, log_sanitization)", + "1109" : "OutgoingData at Pin 136 has Label (Stereotype, log_sanitization)", + "1110" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, authorization_server)", + "1111" : "OutgoingData at Pin 136 has Label (Stereotype, authorization_server)", + "1112" : "OutgoingData at Pin 157 has Label (Stereotype, transform_identity_representation)", + "1113" : "OutgoingData at Pin 157 has Label (Stereotype, encrypted_connection)", + "1114" : "OutgoingData at Pin 157 has Label (Stereotype, gateway)", + "1115" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", + "1116" : "OutgoingData at Pin 157 has Label (Stereotype, login_attempts_regulation)", + "1117" : "OutgoingData at Pin 157 has Label (Stereotype, authenticated_request)", + "1118" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, local_logging)", + "1119" : "OutgoingData at Pin 157 has Label (Stereotype, local_logging)", + "1120" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, log_sanitization)", + "1121" : "OutgoingData at Pin 157 has Label (Stereotype, log_sanitization)", + "1122" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, authorization_server)", + "1123" : "OutgoingData at Pin 157 has Label (Stereotype, authorization_server)", + "1124" : "OutgoingData at Pin 112 has Label (Stereotype, transform_identity_representation)", + "1125" : "OutgoingData at Pin 112 has Label (Stereotype, encrypted_connection)", + "1126" : "OutgoingData at Pin 112 has Label (Stereotype, gateway)", + "1127" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, login_attempts_regulation)", + "1128" : "OutgoingData at Pin 112 has Label (Stereotype, login_attempts_regulation)", + "1129" : "OutgoingData at Pin 112 has Label (Stereotype, authenticated_request)", + "1130" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, local_logging)", + "1131" : "OutgoingData at Pin 112 has Label (Stereotype, local_logging)", + "1132" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, log_sanitization)", + "1133" : "OutgoingData at Pin 112 has Label (Stereotype, log_sanitization)", + "1134" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, authorization_server)", + "1135" : "OutgoingData at Pin 112 has Label (Stereotype, authorization_server)", + "1136" : "OutgoingData at Pin 159 has Label (Stereotype, transform_identity_representation)", + "1137" : "OutgoingData at Pin 159 has Label (Stereotype, encrypted_connection)", + "1138" : "OutgoingData at Pin 159 has Label (Stereotype, gateway)", + "1139" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", + "1140" : "OutgoingData at Pin 159 has Label (Stereotype, login_attempts_regulation)", + "1141" : "OutgoingData at Pin 159 has Label (Stereotype, authenticated_request)", + "1142" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, local_logging)", + "1143" : "OutgoingData at Pin 159 has Label (Stereotype, local_logging)", + "1144" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, log_sanitization)", + "1145" : "OutgoingData at Pin 159 has Label (Stereotype, log_sanitization)", + "1146" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, authorization_server)", + "1147" : "OutgoingData at Pin 159 has Label (Stereotype, authorization_server)", + "1148" : "IncomingData at Pin 122 has Label (Stereotype, transform_identity_representation)", + "1149" : "IncomingData at Pin 130 has Label (Stereotype, transform_identity_representation)", + "1150" : "IncomingData at Pin 135 has Label (Stereotype, transform_identity_representation)", + "1151" : "IncomingData at Pin 154 has Label (Stereotype, transform_identity_representation)", + "1152" : "IncomingData at Pin 140 has Label (Stereotype, transform_identity_representation)", + "1153" : "IncomingData at Pin 105 has Label (Stereotype, transform_identity_representation)", + "1154" : "IncomingData at Pin 109 has Label (Stereotype, transform_identity_representation)", + "1155" : "IncomingData at Pin 114 has Label (Stereotype, transform_identity_representation)", + "1156" : "IncomingData at Pin 122 has Label (Stereotype, encrypted_connection)", + "1157" : "IncomingData at Pin 130 has Label (Stereotype, encrypted_connection)", + "1158" : "IncomingData at Pin 135 has Label (Stereotype, encrypted_connection)", + "1159" : "IncomingData at Pin 154 has Label (Stereotype, encrypted_connection)", + "1160" : "IncomingData at Pin 140 has Label (Stereotype, encrypted_connection)", + "1161" : "IncomingData at Pin 105 has Label (Stereotype, encrypted_connection)", + "1162" : "IncomingData at Pin 109 has Label (Stereotype, encrypted_connection)", + "1163" : "IncomingData at Pin 114 has Label (Stereotype, encrypted_connection)", + "1164" : "IncomingData at Pin 122 has Label (Stereotype, gateway)", + "1165" : "IncomingData at Pin 130 has Label (Stereotype, gateway)", + "1166" : "IncomingData at Pin 135 has Label (Stereotype, gateway)", + "1167" : "IncomingData at Pin 154 has Label (Stereotype, gateway)", + "1168" : "IncomingData at Pin 140 has Label (Stereotype, gateway)", + "1169" : "IncomingData at Pin 105 has Label (Stereotype, gateway)", + "1170" : "IncomingData at Pin 109 has Label (Stereotype, gateway)", + "1171" : "IncomingData at Pin 114 has Label (Stereotype, gateway)", + "1172" : "IncomingData at Pin 122 has Label (Stereotype, token_validation)", + "1173" : "IncomingData at Pin 130 has Label (Stereotype, token_validation)", + "1174" : "IncomingData at Pin 135 has Label (Stereotype, token_validation)", + "1175" : "IncomingData at Pin 154 has Label (Stereotype, token_validation)", + "1176" : "IncomingData at Pin 140 has Label (Stereotype, token_validation)", + "1177" : "IncomingData at Pin 105 has Label (Stereotype, token_validation)", + "1178" : "IncomingData at Pin 109 has Label (Stereotype, token_validation)", + "1179" : "IncomingData at Pin 114 has Label (Stereotype, token_validation)", + "1180" : "IncomingData at Pin 122 has Label (Stereotype, login_attempts_regulation)", + "1181" : "IncomingData at Pin 130 has Label (Stereotype, login_attempts_regulation)", + "1182" : "IncomingData at Pin 135 has Label (Stereotype, login_attempts_regulation)", + "1183" : "IncomingData at Pin 154 has Label (Stereotype, login_attempts_regulation)", + "1184" : "IncomingData at Pin 140 has Label (Stereotype, login_attempts_regulation)", + "1185" : "IncomingData at Pin 105 has Label (Stereotype, login_attempts_regulation)", + "1186" : "IncomingData at Pin 109 has Label (Stereotype, login_attempts_regulation)", + "1187" : "IncomingData at Pin 114 has Label (Stereotype, login_attempts_regulation)", + "1188" : "IncomingData at Pin 122 has Label (Stereotype, authenticated_request)", + "1189" : "IncomingData at Pin 130 has Label (Stereotype, authenticated_request)", + "1190" : "IncomingData at Pin 135 has Label (Stereotype, authenticated_request)", + "1191" : "IncomingData at Pin 154 has Label (Stereotype, authenticated_request)", + "1192" : "IncomingData at Pin 140 has Label (Stereotype, authenticated_request)", + "1193" : "IncomingData at Pin 105 has Label (Stereotype, authenticated_request)", + "1194" : "IncomingData at Pin 109 has Label (Stereotype, authenticated_request)", + "1195" : "IncomingData at Pin 114 has Label (Stereotype, authenticated_request)", + "1196" : "IncomingData at Pin 122 has Label (Stereotype, local_logging)", + "1197" : "IncomingData at Pin 130 has Label (Stereotype, local_logging)", + "1198" : "IncomingData at Pin 135 has Label (Stereotype, local_logging)", + "1199" : "IncomingData at Pin 154 has Label (Stereotype, local_logging)", + "1200" : "IncomingData at Pin 140 has Label (Stereotype, local_logging)", + "1201" : "IncomingData at Pin 105 has Label (Stereotype, local_logging)", + "1202" : "IncomingData at Pin 109 has Label (Stereotype, local_logging)", + "1203" : "IncomingData at Pin 114 has Label (Stereotype, local_logging)", + "1204" : "IncomingData at Pin 122 has Label (Stereotype, log_sanitization)", + "1205" : "IncomingData at Pin 130 has Label (Stereotype, log_sanitization)", + "1206" : "IncomingData at Pin 135 has Label (Stereotype, log_sanitization)", + "1207" : "IncomingData at Pin 154 has Label (Stereotype, log_sanitization)", + "1208" : "IncomingData at Pin 140 has Label (Stereotype, log_sanitization)", + "1209" : "IncomingData at Pin 105 has Label (Stereotype, log_sanitization)", + "1210" : "IncomingData at Pin 109 has Label (Stereotype, log_sanitization)", + "1211" : "IncomingData at Pin 114 has Label (Stereotype, log_sanitization)", + "1212" : "IncomingData at Pin 122 has Label (Stereotype, internal)", + "1213" : "IncomingData at Pin 130 has Label (Stereotype, internal)", + "1214" : "IncomingData at Pin 135 has Label (Stereotype, internal)", + "1215" : "IncomingData at Pin 154 has Label (Stereotype, internal)", + "1216" : "IncomingData at Pin 140 has Label (Stereotype, internal)", + "1217" : "IncomingData at Pin 105 has Label (Stereotype, internal)", + "1218" : "IncomingData at Pin 109 has Label (Stereotype, internal)", + "1219" : "IncomingData at Pin 114 has Label (Stereotype, internal)", + "1220" : "IncomingData at Pin 122 has Label (Stereotype, entrypoint)", + "1221" : "IncomingData at Pin 130 has Label (Stereotype, entrypoint)", + "1222" : "IncomingData at Pin 135 has Label (Stereotype, entrypoint)", + "1223" : "IncomingData at Pin 154 has Label (Stereotype, entrypoint)", + "1224" : "IncomingData at Pin 140 has Label (Stereotype, entrypoint)", + "1225" : "IncomingData at Pin 105 has Label (Stereotype, entrypoint)", + "1226" : "IncomingData at Pin 109 has Label (Stereotype, entrypoint)", + "1227" : "IncomingData at Pin 114 has Label (Stereotype, entrypoint)", + "1228" : "IncomingData at Pin 122 has Label (Stereotype, authorization_server)", + "1229" : "IncomingData at Pin 130 has Label (Stereotype, authorization_server)", + "1230" : "IncomingData at Pin 135 has Label (Stereotype, authorization_server)", + "1231" : "IncomingData at Pin 154 has Label (Stereotype, authorization_server)", + "1232" : "IncomingData at Pin 140 has Label (Stereotype, authorization_server)", + "1233" : "IncomingData at Pin 105 has Label (Stereotype, authorization_server)", + "1234" : "IncomingData at Pin 109 has Label (Stereotype, authorization_server)", + "1235" : "IncomingData at Pin 114 has Label (Stereotype, authorization_server)" +} \ No newline at end of file diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ .cnf b/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ .cnf new file mode 100644 index 00000000..c70fda09 --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ .cnf @@ -0,0 +1,2105 @@ +p cnf 1235 2104 +-1 2 -3 0 +-4 5 -3 0 +-6 7 -3 0 +-8 -3 0 +9 -3 0 +10 -3 0 +11 -3 0 +-1 12 -3 0 +-4 13 -3 0 +-6 14 -3 0 +-1 15 -3 0 +-4 16 -3 0 +-6 17 -3 0 +-18 19 0 +-1 20 0 +-4 21 0 +-6 22 0 +-23 20 0 +-24 21 0 +-25 22 0 +-3 26 0 +-26 27 0 +-28 29 -30 0 +-31 32 -30 0 +-33 34 -30 0 +-35 -30 0 +36 -30 0 +37 -30 0 +38 -30 0 +-28 39 -30 0 +-31 40 -30 0 +-33 41 -30 0 +-28 42 -30 0 +-31 43 -30 0 +-33 44 -30 0 +-45 46 0 +-28 47 0 +-31 48 0 +-33 49 0 +-50 47 0 +-51 48 0 +-52 49 0 +-30 53 0 +-53 54 0 +-55 56 -57 0 +-58 59 -57 0 +-60 61 -57 0 +-62 -57 0 +63 -57 0 +64 -57 0 +65 -57 0 +-55 66 -57 0 +-58 67 -57 0 +-60 68 -57 0 +-55 69 -57 0 +-58 70 -57 0 +-60 71 -57 0 +-72 73 0 +-55 74 0 +-58 75 0 +-60 76 0 +-77 74 0 +-78 75 0 +-79 76 0 +-57 80 0 +-80 81 0 +-82 83 -84 0 +-85 86 -84 0 +-87 88 -84 0 +-89 90 -84 0 +-91 92 -84 0 +-93 94 -84 0 +-95 -84 0 +96 -84 0 +97 -84 0 +98 -84 0 +99 -84 0 +100 -84 0 +101 -84 0 +-82 102 -84 0 +-85 103 -84 0 +-87 104 -84 0 +-89 105 -84 0 +-91 106 -84 0 +-93 107 -84 0 +-82 108 -84 0 +-85 109 -84 0 +-87 110 -84 0 +-89 111 -84 0 +-91 112 -84 0 +-93 113 -84 0 +-114 115 0 +-82 116 0 +-85 117 0 +-87 118 0 +-89 119 0 +-91 120 0 +-93 121 0 +-122 116 0 +-123 117 0 +-124 118 0 +-125 119 0 +-126 120 0 +-127 121 0 +-84 128 0 +-128 129 0 +-130 -131 0 +-132 133 0 +-131 134 0 +-134 135 0 +-136 -137 0 +-138 139 0 +-137 140 0 +-140 141 0 +-142 -143 0 +-144 145 0 +-143 146 0 +-146 147 0 +-148 -149 0 +-150 151 0 +-149 152 0 +-152 153 0 +-154 155 -156 0 +-157 -156 0 +158 -156 0 +-154 159 -156 0 +-154 160 -156 0 +-161 162 0 +-154 163 0 +-164 163 0 +-156 165 0 +-165 166 0 +-167 168 -169 0 +-170 -169 0 +171 -169 0 +-167 172 -169 0 +-167 173 -169 0 +-174 175 0 +-167 176 0 +-177 176 0 +-169 178 0 +-178 179 0 +-180 181 -182 0 +-183 184 -182 0 +-185 186 -182 0 +-187 188 -182 0 +-189 -182 0 +190 -182 0 +191 -182 0 +192 -182 0 +193 -182 0 +-180 194 -182 0 +-183 195 -182 0 +-185 196 -182 0 +-187 197 -182 0 +-180 198 -182 0 +-183 199 -182 0 +-185 200 -182 0 +-187 201 -182 0 +-202 203 0 +-180 204 0 +-183 205 0 +-185 206 0 +-187 207 0 +-208 204 0 +-209 205 0 +-210 206 0 +-211 207 0 +-182 212 0 +-212 213 0 +-214 215 -216 0 +-217 218 -216 0 +-219 220 -216 0 +-221 -216 0 +222 -216 0 +223 -216 0 +224 -216 0 +-214 225 -216 0 +-217 226 -216 0 +-219 227 -216 0 +-214 228 -216 0 +-217 229 -216 0 +-219 230 -216 0 +-231 232 0 +-214 233 0 +-217 234 0 +-219 235 0 +-236 233 0 +-237 234 0 +-238 235 0 +-216 239 0 +-239 240 0 +241 0 +242 0 +243 0 +3 0 +244 0 +245 0 +246 0 +247 0 +248 0 +249 0 +250 0 +251 0 +252 0 +253 0 +254 0 +255 0 +256 0 +257 0 +258 0 +259 0 +260 0 +261 0 +262 0 +263 0 +264 0 +265 0 +266 0 +267 0 +268 0 +269 0 +270 0 +271 0 +272 0 +273 0 +274 0 +275 0 +276 0 +277 0 +278 0 +279 0 +280 0 +281 0 +282 0 +283 0 +284 0 +285 0 +286 0 +287 0 +288 0 +289 0 +290 0 +291 0 +292 0 +293 0 +294 0 +295 0 +296 0 +297 0 +298 0 +30 0 +299 0 +300 0 +301 0 +302 0 +303 0 +304 0 +305 0 +306 0 +307 0 +308 0 +309 0 +310 0 +311 0 +312 0 +313 0 +314 0 +315 0 +316 0 +317 0 +318 0 +319 0 +320 0 +321 0 +322 0 +323 0 +324 0 +325 0 +326 0 +327 0 +328 0 +329 0 +330 0 +331 0 +332 0 +333 0 +334 0 +335 0 +336 0 +337 0 +338 0 +339 0 +340 0 +341 0 +342 0 +343 0 +344 0 +345 0 +346 0 +347 0 +348 0 +349 0 +350 0 +351 0 +352 0 +353 0 +354 0 +355 0 +356 0 +357 0 +358 0 +359 0 +360 0 +62 0 +361 0 +362 0 +80 0 +363 0 +364 0 +365 0 +366 0 +367 0 +368 0 +369 0 +370 0 +371 0 +372 0 +373 0 +374 0 +375 0 +376 0 +377 0 +378 0 +379 0 +380 0 +381 0 +382 0 +383 0 +384 0 +385 0 +386 0 +387 0 +388 0 +389 0 +390 0 +391 0 +392 0 +393 0 +394 0 +395 0 +396 0 +397 0 +398 0 +399 0 +400 0 +401 0 +402 0 +403 0 +404 0 +405 0 +406 0 +407 0 +408 0 +409 0 +410 0 +411 0 +412 0 +413 0 +414 0 +415 0 +416 0 +417 0 +418 0 +419 0 +420 0 +421 0 +422 0 +423 0 +424 0 +425 0 +426 0 +427 0 +428 0 +429 0 +430 0 +431 0 +432 0 +433 0 +434 0 +435 0 +436 0 +437 0 +438 0 +439 0 +440 0 +441 0 +442 0 +443 0 +444 0 +445 0 +446 0 +447 0 +448 0 +449 0 +450 0 +451 0 +452 0 +114 0 +453 0 +454 0 +455 0 +456 0 +457 0 +458 0 +459 0 +460 0 +461 0 +462 0 +463 0 +464 0 +465 0 +466 0 +467 0 +468 0 +469 0 +470 0 +471 0 +472 0 +473 0 +474 0 +475 0 +476 0 +477 0 +478 0 +479 0 +480 0 +481 0 +482 0 +483 0 +484 0 +485 0 +486 0 +487 0 +488 0 +489 0 +490 0 +491 0 +492 0 +493 0 +494 0 +495 0 +496 0 +497 0 +498 0 +499 0 +500 0 +501 0 +502 0 +503 0 +504 0 +505 0 +506 0 +507 0 +508 0 +509 0 +510 0 +511 0 +512 0 +513 0 +514 0 +515 0 +516 0 +517 0 +518 0 +519 0 +520 0 +521 0 +522 0 +523 0 +524 0 +525 0 +526 0 +527 0 +528 0 +529 0 +530 0 +531 0 +532 0 +533 0 +534 0 +535 0 +536 0 +537 0 +538 0 +539 0 +540 0 +541 0 +542 0 +543 0 +544 0 +545 0 +546 0 +547 0 +548 0 +549 0 +550 0 +551 0 +552 0 +553 0 +554 0 +555 0 +556 0 +557 0 +558 0 +559 0 +560 0 +561 0 +562 0 +563 0 +564 0 +565 0 +566 0 +567 0 +568 0 +569 0 +570 0 +571 0 +572 0 +573 0 +574 0 +575 0 +576 0 +577 0 +578 0 +579 0 +580 0 +581 0 +582 0 +583 0 +584 0 +585 0 +586 0 +587 0 +588 0 +589 0 +590 0 +591 0 +592 0 +593 0 +594 0 +595 0 +596 0 +597 0 +598 0 +599 0 +600 0 +601 0 +602 0 +603 0 +604 0 +605 0 +606 0 +607 0 +608 0 +609 0 +610 0 +611 0 +612 0 +613 0 +614 0 +615 0 +216 0 +616 0 +617 0 +618 0 +619 0 +620 0 +621 0 +622 0 +623 0 +624 0 +625 0 +626 0 +627 0 +628 0 +629 0 +630 0 +631 0 +632 0 +633 0 +634 0 +635 0 +636 0 +637 0 +638 0 +639 0 +640 0 +641 0 +642 0 +643 0 +644 0 +645 0 +646 0 +647 0 +648 0 +649 0 +650 0 +651 0 +652 0 +653 0 +654 0 +655 0 +656 0 +657 0 +658 0 +659 0 +660 0 +-661 0 +-662 0 +-663 0 +-664 0 +-665 0 +-666 0 +667 0 +-668 0 +-669 0 +-670 0 +-671 0 +672 0 +-673 0 +-674 0 +-675 0 +-676 0 +-677 0 +-678 0 +-679 0 +-680 0 +-681 0 +-682 0 +683 0 +-684 0 +-685 0 +-686 0 +-687 0 +688 0 +-689 0 +-690 0 +-691 0 +-692 0 +-693 0 +-694 0 +-695 0 +-696 0 +697 0 +-698 0 +-699 0 +-700 0 +-701 0 +702 0 +-703 0 +-704 0 +-705 0 +-706 0 +-707 0 +-708 0 +-709 0 +-710 0 +-711 0 +-712 0 +-713 0 +-714 0 +-715 0 +716 0 +717 0 +-718 0 +-719 0 +-720 0 +-721 0 +-722 0 +-723 0 +-724 0 +-725 0 +-726 0 +-727 0 +728 0 +-729 0 +-730 0 +-731 0 +-732 0 +-733 0 +-734 0 +-735 0 +-736 0 +-737 0 +738 0 +-739 0 +-740 0 +-741 0 +-742 0 +-743 0 +-744 0 +-745 0 +-746 0 +-747 0 +748 0 +749 0 +-750 0 +-751 0 +-752 0 +-753 0 +-754 0 +-755 0 +-756 0 +-757 0 +758 0 +-759 0 +-760 0 +-761 0 +-762 0 +-763 0 +-764 0 +-765 0 +-766 0 +767 0 +-768 0 +-769 0 +-770 0 +-771 0 +-772 0 +-773 0 +-774 0 +-775 0 +-776 0 +-777 0 +-778 0 +779 0 +-780 0 +-781 0 +-782 0 +-783 0 +-784 0 +-785 0 +-786 0 +-787 0 +788 0 +789 0 +-790 0 +-791 0 +-792 0 +-793 0 +-794 0 +-795 0 +-796 0 +-797 0 +798 0 +-799 0 +-800 0 +-801 0 +-802 0 +-803 0 +-804 0 +-805 0 +-806 0 +807 0 +-808 0 +-809 0 +-810 0 +-811 0 +-812 0 +-813 0 +-814 0 +-815 0 +816 0 +-817 0 +-818 0 +-819 0 +-820 0 +-821 0 +-822 0 +823 0 +-824 0 +-825 0 +-826 0 +-827 0 +-828 0 +-829 0 +-830 0 +-831 0 +832 0 +-833 0 +-834 0 +-835 0 +-836 0 +-837 0 +-838 0 +-839 0 +-840 0 +-841 0 +-842 0 +843 0 +-844 0 +-845 0 +-846 0 +-847 0 +848 0 +-849 0 +-850 0 +-851 0 +-852 0 +-853 -667 196 0 +-196 853 0 +-196 667 0 +-854 -667 206 0 +-206 854 0 +-206 667 0 +-855 -667 186 0 +-186 855 0 +-186 667 0 +-265 -667 200 0 +-200 265 0 +-200 667 0 +-257 -667 210 0 +-210 257 0 +-210 667 0 +-857 -667 856 0 +-856 857 0 +-856 667 0 +-251 -667 185 0 +-185 251 0 +-185 667 0 +-858 -667 192 0 +-192 858 0 +-192 667 0 +-860 -667 859 0 +-859 860 0 +-859 667 0 +-862 -667 861 0 +-861 862 0 +-861 667 0 +-864 -667 863 0 +-863 864 0 +-863 667 0 +-865 -672 105 0 +-105 865 0 +-105 672 0 +-866 -672 119 0 +-119 866 0 +-119 672 0 +-867 -672 90 0 +-90 867 0 +-90 672 0 +-288 -672 111 0 +-111 288 0 +-111 672 0 +-280 -672 125 0 +-125 280 0 +-125 672 0 +-869 -672 868 0 +-868 869 0 +-868 672 0 +-274 -672 89 0 +-89 274 0 +-89 672 0 +-870 -672 99 0 +-99 870 0 +-99 672 0 +-872 -672 871 0 +-871 872 0 +-871 672 0 +-874 -672 873 0 +-873 874 0 +-873 672 0 +-876 -672 875 0 +-875 876 0 +-875 672 0 +-877 -683 197 0 +-197 877 0 +-197 683 0 +-878 -683 207 0 +-207 878 0 +-207 683 0 +-879 -683 188 0 +-188 879 0 +-188 683 0 +-320 -683 201 0 +-201 320 0 +-201 683 0 +-312 -683 211 0 +-211 312 0 +-211 683 0 +-881 -683 880 0 +-880 881 0 +-880 683 0 +-306 -683 187 0 +-187 306 0 +-187 683 0 +-882 -683 193 0 +-193 882 0 +-193 683 0 +-884 -683 883 0 +-883 884 0 +-883 683 0 +-886 -683 885 0 +-885 886 0 +-885 683 0 +-888 -683 887 0 +-887 888 0 +-887 683 0 +-889 -688 106 0 +-106 889 0 +-106 688 0 +-890 -688 120 0 +-120 890 0 +-120 688 0 +-891 -688 92 0 +-92 891 0 +-92 688 0 +-343 -688 112 0 +-112 343 0 +-112 688 0 +-335 -688 126 0 +-126 335 0 +-126 688 0 +-893 -688 892 0 +-892 893 0 +-892 688 0 +-329 -688 91 0 +-91 329 0 +-91 688 0 +-894 -688 100 0 +-100 894 0 +-100 688 0 +-896 -688 895 0 +-895 896 0 +-895 688 0 +-898 -688 897 0 +-897 898 0 +-897 688 0 +-900 -688 899 0 +-899 900 0 +-899 688 0 +-901 -697 159 0 +-159 901 0 +-159 697 0 +-902 -697 163 0 +-163 902 0 +-163 697 0 +-368 -697 155 0 +-155 368 0 +-155 697 0 +-375 -697 160 0 +-160 375 0 +-160 697 0 +-903 -697 164 0 +-164 903 0 +-164 697 0 +-905 -697 904 0 +-904 905 0 +-904 697 0 +-367 -697 154 0 +-154 367 0 +-154 697 0 +-906 -697 158 0 +-158 906 0 +-158 697 0 +-372 -697 907 0 +-907 372 0 +-907 697 0 +-909 -697 908 0 +-908 909 0 +-908 697 0 +-911 -697 910 0 +-910 911 0 +-910 697 0 +-912 -702 41 0 +-41 912 0 +-41 702 0 +-913 -702 49 0 +-49 913 0 +-49 702 0 +-384 -702 34 0 +-34 384 0 +-34 702 0 +-392 -702 44 0 +-44 392 0 +-44 702 0 +-914 -702 52 0 +-52 914 0 +-52 702 0 +-916 -702 915 0 +-915 916 0 +-915 702 0 +-381 -702 33 0 +-33 381 0 +-33 702 0 +-917 -702 38 0 +-38 917 0 +-38 702 0 +-389 -702 918 0 +-918 389 0 +-918 702 0 +-920 -702 919 0 +-919 920 0 +-919 702 0 +-922 -702 921 0 +-921 922 0 +-921 702 0 +-923 -716 227 0 +-227 923 0 +-227 716 0 +-924 -716 235 0 +-235 924 0 +-235 716 0 +-404 -716 220 0 +-220 404 0 +-220 716 0 +-417 -716 230 0 +-230 417 0 +-230 716 0 +-407 -716 238 0 +-238 407 0 +-238 716 0 +-926 -716 925 0 +-925 926 0 +-925 716 0 +-400 -716 219 0 +-219 400 0 +-219 716 0 +-927 -716 224 0 +-224 927 0 +-224 716 0 +-411 -716 928 0 +-928 411 0 +-928 716 0 +-930 -716 929 0 +-929 930 0 +-929 716 0 +-932 -716 931 0 +-931 932 0 +-931 716 0 +-933 -717 14 0 +-14 933 0 +-14 717 0 +-934 -717 22 0 +-22 934 0 +-22 717 0 +-429 -717 7 0 +-7 429 0 +-7 717 0 +-437 -717 17 0 +-17 437 0 +-17 717 0 +-935 -717 25 0 +-25 935 0 +-25 717 0 +-937 -717 936 0 +-936 937 0 +-936 717 0 +-426 -717 6 0 +-6 426 0 +-6 717 0 +-938 -717 11 0 +-11 938 0 +-11 717 0 +-434 -717 939 0 +-939 434 0 +-939 717 0 +-941 -717 940 0 +-940 941 0 +-940 717 0 +-943 -717 942 0 +-942 943 0 +-942 717 0 +-944 -728 107 0 +-107 944 0 +-107 728 0 +-945 -728 121 0 +-121 945 0 +-121 728 0 +-443 -728 94 0 +-94 443 0 +-94 728 0 +-451 -728 113 0 +-113 451 0 +-113 728 0 +-946 -728 127 0 +-127 946 0 +-127 728 0 +-948 -728 947 0 +-947 948 0 +-947 728 0 +-441 -728 93 0 +-93 441 0 +-93 728 0 +-949 -728 101 0 +-101 949 0 +-101 728 0 +-447 -728 950 0 +-950 447 0 +-950 728 0 +-952 -728 951 0 +-951 952 0 +-951 728 0 +-954 -728 953 0 +-953 954 0 +-953 728 0 +-955 -738 172 0 +-172 955 0 +-172 738 0 +-956 -738 176 0 +-176 956 0 +-176 738 0 +-957 -738 168 0 +-168 957 0 +-168 738 0 +-958 -738 173 0 +-173 958 0 +-173 738 0 +-959 -738 177 0 +-177 959 0 +-177 738 0 +-961 -738 960 0 +-960 961 0 +-960 738 0 +-457 -738 167 0 +-167 457 0 +-167 738 0 +-962 -738 171 0 +-171 962 0 +-171 738 0 +-964 -738 963 0 +-963 964 0 +-963 738 0 +-966 -738 965 0 +-965 966 0 +-965 738 0 +-968 -738 967 0 +-967 968 0 +-967 738 0 +-969 -748 226 0 +-226 969 0 +-226 748 0 +-970 -748 234 0 +-234 970 0 +-234 748 0 +-971 -748 218 0 +-218 971 0 +-218 748 0 +-972 -748 229 0 +-229 972 0 +-229 748 0 +-973 -748 237 0 +-237 973 0 +-237 748 0 +-975 -748 974 0 +-974 975 0 +-974 748 0 +-463 -748 217 0 +-217 463 0 +-217 748 0 +-976 -748 223 0 +-223 976 0 +-223 748 0 +-978 -748 977 0 +-977 978 0 +-977 748 0 +-980 -748 979 0 +-979 980 0 +-979 748 0 +-982 -748 981 0 +-981 982 0 +-981 748 0 +-983 -749 13 0 +-13 983 0 +-13 749 0 +-984 -749 21 0 +-21 984 0 +-21 749 0 +-985 -749 5 0 +-5 985 0 +-5 749 0 +-986 -749 16 0 +-16 986 0 +-16 749 0 +-987 -749 24 0 +-24 987 0 +-24 749 0 +-989 -749 988 0 +-988 989 0 +-988 749 0 +-476 -749 4 0 +-4 476 0 +-4 749 0 +-990 -749 10 0 +-10 990 0 +-10 749 0 +-992 -749 991 0 +-991 992 0 +-991 749 0 +-994 -749 993 0 +-993 994 0 +-993 749 0 +-996 -749 995 0 +-995 996 0 +-995 749 0 +-997 -758 40 0 +-40 997 0 +-40 758 0 +-998 -758 48 0 +-48 998 0 +-48 758 0 +-999 -758 32 0 +-32 999 0 +-32 758 0 +-1000 -758 43 0 +-43 1000 0 +-43 758 0 +-1001 -758 51 0 +-51 1001 0 +-51 758 0 +-1003 -758 1002 0 +-1002 1003 0 +-1002 758 0 +-492 -758 31 0 +-31 492 0 +-31 758 0 +-1004 -758 37 0 +-37 1004 0 +-37 758 0 +-1006 -758 1005 0 +-1005 1006 0 +-1005 758 0 +-1008 -758 1007 0 +-1007 1008 0 +-1007 758 0 +-1010 -758 1009 0 +-1009 1010 0 +-1009 758 0 +-1011 -767 67 0 +-67 1011 0 +-67 767 0 +-1012 -767 75 0 +-75 1012 0 +-75 767 0 +-506 -767 59 0 +-59 506 0 +-59 767 0 +-513 -767 70 0 +-70 513 0 +-70 767 0 +-1013 -767 78 0 +-78 1013 0 +-78 767 0 +-1015 -767 1014 0 +-1014 1015 0 +-1014 767 0 +-504 -767 58 0 +-58 504 0 +-58 767 0 +-1016 -767 64 0 +-64 1016 0 +-64 767 0 +-510 -767 1017 0 +-1017 510 0 +-1017 767 0 +-1019 -767 1018 0 +-1018 1019 0 +-1018 767 0 +-1021 -767 1020 0 +-1020 1021 0 +-1020 767 0 +-1022 -779 194 0 +-194 1022 0 +-194 779 0 +-1023 -779 204 0 +-204 1023 0 +-204 779 0 +-1024 -779 181 0 +-181 1024 0 +-181 779 0 +-525 -779 198 0 +-198 525 0 +-198 779 0 +-1025 -779 208 0 +-208 1025 0 +-208 779 0 +-1027 -779 1026 0 +-1026 1027 0 +-1026 779 0 +-521 -779 180 0 +-180 521 0 +-180 779 0 +-1028 -779 190 0 +-190 1028 0 +-190 779 0 +-1030 -779 1029 0 +-1029 1030 0 +-1029 779 0 +-1032 -779 1031 0 +-1031 1032 0 +-1031 779 0 +-1034 -779 1033 0 +-1033 1034 0 +-1033 779 0 +-1035 -788 225 0 +-225 1035 0 +-225 788 0 +-1036 -788 233 0 +-233 1036 0 +-233 788 0 +-1037 -788 215 0 +-215 1037 0 +-215 788 0 +-531 -788 228 0 +-228 531 0 +-228 788 0 +-1038 -788 236 0 +-236 1038 0 +-236 788 0 +-1040 -788 1039 0 +-1039 1040 0 +-1039 788 0 +-527 -788 214 0 +-214 527 0 +-214 788 0 +-1041 -788 222 0 +-222 1041 0 +-222 788 0 +-1043 -788 1042 0 +-1042 1043 0 +-1042 788 0 +-1045 -788 1044 0 +-1044 1045 0 +-1044 788 0 +-1047 -788 1046 0 +-1046 1047 0 +-1046 788 0 +-1048 -789 12 0 +-12 1048 0 +-12 789 0 +-1049 -789 20 0 +-20 1049 0 +-20 789 0 +-1050 -789 2 0 +-2 1050 0 +-2 789 0 +-537 -789 15 0 +-15 537 0 +-15 789 0 +-1051 -789 23 0 +-23 1051 0 +-23 789 0 +-1053 -789 1052 0 +-1052 1053 0 +-1052 789 0 +-533 -789 1 0 +-1 533 0 +-1 789 0 +-1054 -789 9 0 +-9 1054 0 +-9 789 0 +-1056 -789 1055 0 +-1055 1056 0 +-1055 789 0 +-1058 -789 1057 0 +-1057 1058 0 +-1057 789 0 +-1060 -789 1059 0 +-1059 1060 0 +-1059 789 0 +-1061 -798 39 0 +-39 1061 0 +-39 798 0 +-1062 -798 47 0 +-47 1062 0 +-47 798 0 +-1063 -798 29 0 +-29 1063 0 +-29 798 0 +-543 -798 42 0 +-42 543 0 +-42 798 0 +-1064 -798 50 0 +-50 1064 0 +-50 798 0 +-1066 -798 1065 0 +-1065 1066 0 +-1065 798 0 +-539 -798 28 0 +-28 539 0 +-28 798 0 +-1067 -798 36 0 +-36 1067 0 +-36 798 0 +-1069 -798 1068 0 +-1068 1069 0 +-1068 798 0 +-1071 -798 1070 0 +-1070 1071 0 +-1070 798 0 +-1073 -798 1072 0 +-1072 1073 0 +-1072 798 0 +-1074 -807 68 0 +-68 1074 0 +-68 807 0 +-1075 -807 76 0 +-76 1075 0 +-76 807 0 +-1076 -807 61 0 +-61 1076 0 +-61 807 0 +-549 -807 71 0 +-71 549 0 +-71 807 0 +-1077 -807 79 0 +-79 1077 0 +-79 807 0 +-1079 -807 1078 0 +-1078 1079 0 +-1078 807 0 +-545 -807 60 0 +-60 545 0 +-60 807 0 +-1080 -807 65 0 +-65 1080 0 +-65 807 0 +-1082 -807 1081 0 +-1081 1082 0 +-1081 807 0 +-1084 -807 1083 0 +-1083 1084 0 +-1083 807 0 +-1086 -807 1085 0 +-1085 1086 0 +-1085 807 0 +-1087 -816 102 0 +-102 1087 0 +-102 816 0 +-1088 -816 116 0 +-116 1088 0 +-116 816 0 +-1089 -816 83 0 +-83 1089 0 +-83 816 0 +-555 -816 108 0 +-108 555 0 +-108 816 0 +-1090 -816 122 0 +-122 1090 0 +-122 816 0 +-1092 -816 1091 0 +-1091 1092 0 +-1091 816 0 +-551 -816 82 0 +-82 551 0 +-82 816 0 +-1093 -816 96 0 +-96 1093 0 +-96 816 0 +-1095 -816 1094 0 +-1094 1095 0 +-1094 816 0 +-1097 -816 1096 0 +-1096 1097 0 +-1096 816 0 +-1099 -816 1098 0 +-1098 1099 0 +-1098 816 0 +-1100 -823 66 0 +-66 1100 0 +-66 823 0 +-1101 -823 74 0 +-74 1101 0 +-74 823 0 +-1102 -823 56 0 +-56 1102 0 +-56 823 0 +-582 -823 69 0 +-69 582 0 +-69 823 0 +-573 -823 77 0 +-77 573 0 +-77 823 0 +-1104 -823 1103 0 +-1103 1104 0 +-1103 823 0 +-567 -823 55 0 +-55 567 0 +-55 823 0 +-1105 -823 63 0 +-63 1105 0 +-63 823 0 +-1107 -823 1106 0 +-1106 1107 0 +-1106 823 0 +-1109 -823 1108 0 +-1108 1109 0 +-1108 823 0 +-1111 -823 1110 0 +-1110 1111 0 +-1110 823 0 +-1112 -832 103 0 +-103 1112 0 +-103 832 0 +-1113 -832 117 0 +-117 1113 0 +-117 832 0 +-1114 -832 86 0 +-86 1114 0 +-86 832 0 +-607 -832 109 0 +-109 607 0 +-109 832 0 +-598 -832 123 0 +-123 598 0 +-123 832 0 +-1116 -832 1115 0 +-1115 1116 0 +-1115 832 0 +-592 -832 85 0 +-85 592 0 +-85 832 0 +-1117 -832 97 0 +-97 1117 0 +-97 832 0 +-1119 -832 1118 0 +-1118 1119 0 +-1118 832 0 +-1121 -832 1120 0 +-1120 1121 0 +-1120 832 0 +-1123 -832 1122 0 +-1122 1123 0 +-1122 832 0 +-1124 -843 195 0 +-195 1124 0 +-195 843 0 +-1125 -843 205 0 +-205 1125 0 +-205 843 0 +-1126 -843 184 0 +-184 1126 0 +-184 843 0 +-638 -843 199 0 +-199 638 0 +-199 843 0 +-629 -843 209 0 +-209 629 0 +-209 843 0 +-1128 -843 1127 0 +-1127 1128 0 +-1127 843 0 +-623 -843 183 0 +-183 623 0 +-183 843 0 +-1129 -843 191 0 +-191 1129 0 +-191 843 0 +-1131 -843 1130 0 +-1130 1131 0 +-1130 843 0 +-1133 -843 1132 0 +-1132 1133 0 +-1132 843 0 +-1135 -843 1134 0 +-1134 1135 0 +-1134 843 0 +-1136 -848 104 0 +-104 1136 0 +-104 848 0 +-1137 -848 118 0 +-118 1137 0 +-118 848 0 +-1138 -848 88 0 +-88 1138 0 +-88 848 0 +-660 -848 110 0 +-110 660 0 +-110 848 0 +-653 -848 124 0 +-124 653 0 +-124 848 0 +-1140 -848 1139 0 +-1139 1140 0 +-1139 848 0 +-647 -848 87 0 +-87 647 0 +-87 848 0 +-1141 -848 98 0 +-98 1141 0 +-98 848 0 +-1143 -848 1142 0 +-1142 1143 0 +-1142 848 0 +-1145 -848 1144 0 +-1144 1145 0 +-1144 848 0 +-1147 -848 1146 0 +-1146 1147 0 +-1146 848 0 +-66 1150 0 +-1150 66 0 +-103 1151 0 +-1151 103 0 +-104 1151 0 +-1151 104 0 +-105 1151 0 +-1151 105 0 +-106 1151 0 +-1151 106 0 +-195 1154 0 +-1154 195 0 +-196 1154 0 +-1154 196 0 +-197 1154 0 +-1154 197 0 +-227 1155 0 +-1155 227 0 +-20 1156 0 +-1156 20 0 +-21 1156 0 +-1156 21 0 +-22 1156 0 +-1156 22 0 +-47 1157 0 +-1157 47 0 +-48 1157 0 +-1157 48 0 +-49 1157 0 +-1157 49 0 +-74 1158 0 +-1158 74 0 +-75 1158 0 +-1158 75 0 +-76 1158 0 +-1158 76 0 +-116 1159 0 +-1159 116 0 +-117 1159 0 +-1159 117 0 +-118 1159 0 +-1159 118 0 +-119 1159 0 +-1159 119 0 +-120 1159 0 +-1159 120 0 +-121 1159 0 +-1159 121 0 +-163 1160 0 +-1160 163 0 +-176 1161 0 +-1161 176 0 +-204 1162 0 +-1162 204 0 +-205 1162 0 +-1162 205 0 +-206 1162 0 +-1162 206 0 +-207 1162 0 +-1162 207 0 +-233 1163 0 +-1163 233 0 +-234 1163 0 +-1163 234 0 +-235 1163 0 +-1163 235 0 +-56 1166 0 +-1166 56 0 +-86 1167 0 +-1167 86 0 +-88 1167 0 +-1167 88 0 +-90 1167 0 +-1167 90 0 +-92 1167 0 +-1167 92 0 +-184 1170 0 +-1170 184 0 +-186 1170 0 +-1170 186 0 +-188 1170 0 +-1170 188 0 +-220 1171 0 +-1171 220 0 +-69 1174 0 +-1174 69 0 +-109 1175 0 +-1175 109 0 +-110 1175 0 +-1175 110 0 +-111 1175 0 +-1175 111 0 +-112 1175 0 +-1175 112 0 +-199 1178 0 +-1178 199 0 +-200 1178 0 +-1178 200 0 +-201 1178 0 +-1178 201 0 +-230 1179 0 +-1179 230 0 +-63 1190 0 +-1190 63 0 +-97 1191 0 +-1191 97 0 +-98 1191 0 +-1191 98 0 +-99 1191 0 +-1191 99 0 +-100 1191 0 +-1191 100 0 +-191 1194 0 +-1194 191 0 +-192 1194 0 +-1194 192 0 +-193 1194 0 +-1194 193 0 +-224 1195 0 +-1195 224 0 +-1106 1198 0 +-1198 1106 0 +-1118 1199 0 +-1199 1118 0 +-1142 1199 0 +-1199 1142 0 +-871 1199 0 +-1199 871 0 +-895 1199 0 +-1199 895 0 +-1130 1202 0 +-1202 1130 0 +-859 1202 0 +-1202 859 0 +-883 1202 0 +-1202 883 0 +-928 1203 0 +-1203 928 0 +-940 1204 0 +-1204 940 0 +-919 1205 0 +-1205 919 0 +-1018 1206 0 +-1206 1018 0 +-951 1207 0 +-1207 951 0 +-908 1208 0 +-1208 908 0 +-929 1211 0 +-1211 929 0 +-12 1148 0 +-13 1148 0 +-14 1148 0 +-1148 12 13 14 0 +-39 1149 0 +-40 1149 0 +-41 1149 0 +-1149 39 40 41 0 +-66 1150 0 +-67 1150 0 +-68 1150 0 +-1150 66 67 68 0 +-102 1151 0 +-103 1151 0 +-104 1151 0 +-105 1151 0 +-106 1151 0 +-107 1151 0 +-1151 102 103 104 105 106 107 0 +-159 1152 0 +-1152 159 0 +-172 1153 0 +-1153 172 0 +-194 1154 0 +-195 1154 0 +-196 1154 0 +-197 1154 0 +-1154 194 195 196 197 0 +-225 1155 0 +-226 1155 0 +-227 1155 0 +-1155 225 226 227 0 +-20 1156 0 +-21 1156 0 +-22 1156 0 +-1156 20 21 22 0 +-47 1157 0 +-48 1157 0 +-49 1157 0 +-1157 47 48 49 0 +-74 1158 0 +-75 1158 0 +-76 1158 0 +-1158 74 75 76 0 +-116 1159 0 +-117 1159 0 +-118 1159 0 +-119 1159 0 +-120 1159 0 +-121 1159 0 +-1159 116 117 118 119 120 121 0 +-163 1160 0 +-1160 163 0 +-176 1161 0 +-1161 176 0 +-204 1162 0 +-205 1162 0 +-206 1162 0 +-207 1162 0 +-1162 204 205 206 207 0 +-233 1163 0 +-234 1163 0 +-235 1163 0 +-1163 233 234 235 0 +-2 1164 0 +-5 1164 0 +-7 1164 0 +-1164 2 5 7 0 +-29 1165 0 +-32 1165 0 +-34 1165 0 +-1165 29 32 34 0 +-56 1166 0 +-59 1166 0 +-61 1166 0 +-1166 56 59 61 0 +-83 1167 0 +-86 1167 0 +-88 1167 0 +-90 1167 0 +-92 1167 0 +-94 1167 0 +-1167 83 86 88 90 92 94 0 +-155 1168 0 +-1168 155 0 +-168 1169 0 +-1169 168 0 +-181 1170 0 +-184 1170 0 +-186 1170 0 +-188 1170 0 +-1170 181 184 186 188 0 +-215 1171 0 +-218 1171 0 +-220 1171 0 +-1171 215 218 220 0 +-15 1172 0 +-16 1172 0 +-17 1172 0 +-1172 15 16 17 0 +-42 1173 0 +-43 1173 0 +-44 1173 0 +-1173 42 43 44 0 +-69 1174 0 +-70 1174 0 +-71 1174 0 +-1174 69 70 71 0 +-108 1175 0 +-109 1175 0 +-110 1175 0 +-111 1175 0 +-112 1175 0 +-113 1175 0 +-1175 108 109 110 111 112 113 0 +-160 1176 0 +-1176 160 0 +-173 1177 0 +-1177 173 0 +-198 1178 0 +-199 1178 0 +-200 1178 0 +-201 1178 0 +-1178 198 199 200 201 0 +-228 1179 0 +-229 1179 0 +-230 1179 0 +-1179 228 229 230 0 +-23 1212 0 +-24 1212 0 +-25 1212 0 +-1212 23 24 25 0 +-50 1213 0 +-51 1213 0 +-52 1213 0 +-1213 50 51 52 0 +-77 1214 0 +-78 1214 0 +-79 1214 0 +-1214 77 78 79 0 +-122 1215 0 +-123 1215 0 +-124 1215 0 +-125 1215 0 +-126 1215 0 +-127 1215 0 +-1215 122 123 124 125 126 127 0 +-164 1216 0 +-1216 164 0 +-177 1217 0 +-1217 177 0 +-208 1218 0 +-209 1218 0 +-210 1218 0 +-211 1218 0 +-1218 208 209 210 211 0 +-236 1219 0 +-237 1219 0 +-238 1219 0 +-1219 236 237 238 0 +-1052 1180 0 +-988 1180 0 +-936 1180 0 +-1180 1052 988 936 0 +-1065 1181 0 +-1002 1181 0 +-915 1181 0 +-1181 1065 1002 915 0 +-1103 1182 0 +-1014 1182 0 +-1078 1182 0 +-1182 1103 1014 1078 0 +-1091 1183 0 +-1115 1183 0 +-1139 1183 0 +-868 1183 0 +-892 1183 0 +-947 1183 0 +-1183 1091 1115 1139 868 892 947 0 +-904 1184 0 +-1184 904 0 +-960 1185 0 +-1185 960 0 +-1026 1186 0 +-1127 1186 0 +-856 1186 0 +-880 1186 0 +-1186 1026 1127 856 880 0 +-1039 1187 0 +-974 1187 0 +-925 1187 0 +-1187 1039 974 925 0 +-1 1220 0 +-4 1220 0 +-6 1220 0 +-1220 1 4 6 0 +-28 1221 0 +-31 1221 0 +-33 1221 0 +-1221 28 31 33 0 +-55 1222 0 +-58 1222 0 +-60 1222 0 +-1222 55 58 60 0 +-82 1223 0 +-85 1223 0 +-87 1223 0 +-89 1223 0 +-91 1223 0 +-93 1223 0 +-1223 82 85 87 89 91 93 0 +-154 1224 0 +-1224 154 0 +-167 1225 0 +-1225 167 0 +-180 1226 0 +-183 1226 0 +-185 1226 0 +-187 1226 0 +-1226 180 183 185 187 0 +-214 1227 0 +-217 1227 0 +-219 1227 0 +-1227 214 217 219 0 +-9 1188 0 +-10 1188 0 +-11 1188 0 +-1188 9 10 11 0 +-36 1189 0 +-37 1189 0 +-38 1189 0 +-1189 36 37 38 0 +-63 1190 0 +-64 1190 0 +-65 1190 0 +-1190 63 64 65 0 +-96 1191 0 +-97 1191 0 +-98 1191 0 +-99 1191 0 +-100 1191 0 +-101 1191 0 +-1191 96 97 98 99 100 101 0 +-158 1192 0 +-1192 158 0 +-171 1193 0 +-1193 171 0 +-190 1194 0 +-191 1194 0 +-192 1194 0 +-193 1194 0 +-1194 190 191 192 193 0 +-222 1195 0 +-223 1195 0 +-224 1195 0 +-1195 222 223 224 0 +-1055 1196 0 +-991 1196 0 +-939 1196 0 +-1196 1055 991 939 0 +-1068 1197 0 +-1005 1197 0 +-918 1197 0 +-1197 1068 1005 918 0 +-1106 1198 0 +-1017 1198 0 +-1081 1198 0 +-1198 1106 1017 1081 0 +-1094 1199 0 +-1118 1199 0 +-1142 1199 0 +-871 1199 0 +-895 1199 0 +-950 1199 0 +-1199 1094 1118 1142 871 895 950 0 +-907 1200 0 +-1200 907 0 +-963 1201 0 +-1201 963 0 +-1029 1202 0 +-1130 1202 0 +-859 1202 0 +-883 1202 0 +-1202 1029 1130 859 883 0 +-1042 1203 0 +-977 1203 0 +-928 1203 0 +-1203 1042 977 928 0 +-1057 1204 0 +-993 1204 0 +-940 1204 0 +-1204 1057 993 940 0 +-1070 1205 0 +-1007 1205 0 +-919 1205 0 +-1205 1070 1007 919 0 +-1108 1206 0 +-1018 1206 0 +-1083 1206 0 +-1206 1108 1018 1083 0 +-1096 1207 0 +-1120 1207 0 +-1144 1207 0 +-873 1207 0 +-897 1207 0 +-951 1207 0 +-1207 1096 1120 1144 873 897 951 0 +-908 1208 0 +-1208 908 0 +-965 1209 0 +-1209 965 0 +-1031 1210 0 +-1132 1210 0 +-861 1210 0 +-885 1210 0 +-1210 1031 1132 861 885 0 +-1044 1211 0 +-979 1211 0 +-929 1211 0 +-1211 1044 979 929 0 +-1059 1228 0 +-995 1228 0 +-942 1228 0 +-1228 1059 995 942 0 +-1072 1229 0 +-1009 1229 0 +-921 1229 0 +-1229 1072 1009 921 0 +-1110 1230 0 +-1020 1230 0 +-1085 1230 0 +-1230 1110 1020 1085 0 +-1098 1231 0 +-1122 1231 0 +-1146 1231 0 +-875 1231 0 +-899 1231 0 +-953 1231 0 +-1231 1098 1122 1146 875 899 953 0 +-910 1232 0 +-1232 910 0 +-967 1233 0 +-1233 967 0 +-1033 1234 0 +-1134 1234 0 +-863 1234 0 +-887 1234 0 +-1234 1033 1134 863 887 0 +-1046 1235 0 +-981 1235 0 +-931 1235 0 +-1235 1046 981 931 0 From 135e6fadd534c1d368dd4bdb29664417e195ae92 Mon Sep 17 00:00:00 2001 From: BenjaminArp <101420246+BenjaminArp@users.noreply.github.com> Date: Thu, 9 Apr 2026 10:44:28 +0200 Subject: [PATCH 02/52] Add efficency test --- .../mitigation/evaluation/tests/TestBase.java | 82 ++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java index 2a0e4841..8fcd9883 100644 --- a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java +++ b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java @@ -1,12 +1,14 @@ package dev.arcovia.mitigation.evaluation.tests; +import static java.util.Map.entry; import static org.junit.jupiter.api.Assertions.assertEquals; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; +import java.util.Map; import java.util.ArrayList; import java.util.stream.Stream; @@ -22,7 +24,10 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; +import dev.arcovia.mitigation.sat.Label; import dev.arcovia.mitigation.sat.MitigationApproach; +import dev.arcovia.mitigation.sat.ModelCostCalculator; +import dev.arcovia.mitigation.sat.dsl.CNFTranslation; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.core.type.TypeReference; @@ -126,7 +131,7 @@ void evaluateEffectiveness(String model, int variant) throws Exception { int violationsAfter = determineViolations(repairedDFD, analysisConstraints); - assertEquals(violationsAfter, 0); + assertEquals(0, violationsAfter); ObjectMapper mapper = new ObjectMapper(); Path out = Path.of("results/violation_results.json"); @@ -140,6 +145,73 @@ void evaluateEffectiveness(String model, int variant) throws Exception { } + static Stream tuhhModelProviderBaseModel() { + return TuhhModels.getTuhhModels() + .entrySet() + .stream() + .filter(model -> model.getValue().contains(0)) + .flatMap(entity -> entity.getValue().stream() + .map(model -> Arguments.of(entity.getKey(), model))); + } + + final Map minCosts = Map.ofEntries(entry(new Label("Stereotype", "gateway"), 1), + entry(new Label("Stereotype", "authenticated_request"), 1), entry(new Label("Stereotype", "transform_identity_representation"), 1), + entry(new Label("Stereotype", "token_validation"), 1), entry(new Label("Stereotype", "login_attempts_regulation"), 1), + entry(new Label("Stereotype", "encrypted_connection"), 1), entry(new Label("Stereotype", "log_sanitization"), 1), + entry(new Label("Stereotype", "local_logging"), 1)); + + @ParameterizedTest + @MethodSource("tuhhModelProviderBaseModel") + void evaluateCost(String model, int variant) throws Exception { + Thread.sleep(2); + String name = model + "_" + 0; + + List constraints = switch (variant) { + case 1 -> List.of(entryViaGatewayOnly, nonInternalGateway); + case 2 -> List.of(authenticatedRequest); + case 4 -> List.of(transformedEntry); + case 5 -> List.of(tokenValidation); + case 7 -> List.of(encryptedEntry, entryViaGatewayOnly, nonInternalGateway); + case 8 -> List.of(encryptedInternals); + case 10 -> List.of(localLogging); + case 11 -> List.of(localLogging, logSanitization); + default -> null; + }; + if (constraints == null) { + return; + } + + var dfd = loadDFD(model, name); + + MitigationApproach approach = getApproach(dfd, constraints); + + var repairedDFD = approach.repair(); + + + List satConstraint = new ArrayList<>(); + for (var constraint : constraints) { + var translation = new CNFTranslation(constraint); + dev.arcovia.mitigation.sat.Constraint c = translation.constructCNF() + .get(0); + satConstraint.add(c); + } + + var approachCost = new ModelCostCalculator(repairedDFD, satConstraint, minCosts).calculateCostWithoutForwarding(); + + var tuhhCost = new ModelCostCalculator(loadDFD(model, model + "_" + variant), satConstraint, minCosts) + .calculateCostWithoutForwarding(); + + ObjectMapper mapper = new ObjectMapper(); + Path out = Path.of("results/efficiency_results.json"); + + List existing = Files.exists(out) + ? mapper.readValue(out.toFile(), new TypeReference>() {}) + : new ArrayList<>(); + + existing.add(new CostResult(getApproachName(),model, variant, approachCost, tuhhCost)); + mapper.writerWithDefaultPrettyPrinter().writeValue(out.toFile(), existing); + + } private int determineViolations(DataFlowDiagramAndDictionary dfd, List constraints) { var resourceProvider = new DFDModelResourceProvider(dfd.dataDictionary(), dfd.dataFlowDiagram()); @@ -167,6 +239,14 @@ public record ViolationResult( int violationsBefore, int violationsAfter ) {} + + public record CostResult( + String Approach, + String model, + int variant, + int approachCost, + int tuhhCost + ) {} private DataFlowDiagramAndDictionary loadDFD(String model, String name) throws Exception { final String PROJECT_NAME = "org.dataflowanalysis.examplemodels"; From fc68a17d7a8c99cabf5e6642d8d7c15efd72e682 Mon Sep 17 00:00:00 2001 From: BenjaminArp <101420246+BenjaminArp@users.noreply.github.com> Date: Thu, 9 Apr 2026 12:24:46 +0200 Subject: [PATCH 03/52] Implement scalability & cost test --- .../dev/arcovia/mitigation/sat/Mechanic.java | 6 + .../models/sourceSink.json | 1 + .../results/efficiency_results.json | 919 ++++++++++++++++++ .../mitigation/evaluation/tests/TestBase.java | 134 +++ .../mitigation/evaluation/tests/satTest.java | 4 +- .../mitigation/ilp/tests/PerformanceEval.java | 18 +- .../mitigation/sat/tests/PerformanceEval.java | 18 +- 7 files changed, 1079 insertions(+), 21 deletions(-) create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/models/sourceSink.json create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/results/efficiency_results.json diff --git a/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Mechanic.java b/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Mechanic.java index 9f73b36f..adb5a4f9 100644 --- a/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Mechanic.java +++ b/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Mechanic.java @@ -181,6 +181,12 @@ public DataFlowDiagramAndDictionary repair() throws ContradictionException, Time } var solutions = new Sat().solve(nodes, flows, constraints, dfdName, deactivateSubsumption, allLabels); + + if(solutions.isEmpty()) { + logger.error("No solution found!"); + return dfd; + } + List flatendNodes = getFlatNodes(nodes); List chosenSolution = getChosenSolution(solutions, flatendNodes); diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/models/sourceSink.json b/tests/dev.arcovia.mitigation.evaluation.tests/models/sourceSink.json new file mode 100644 index 00000000..62fd95cb --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/models/sourceSink.json @@ -0,0 +1 @@ +{"model":{"canvasBounds":{"x":0,"y":0,"width":4288,"height":2189.783447265625},"scroll":{"x":-63,"y":-112.33034620712053},"zoom":7.4315424610052,"position":{"x":0,"y":0},"size":{"width":-1,"height":-1},"features":{},"type":"graph","id":"root","children":[{"position":{"x":0,"y":0},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"features":{},"id":"nr1cic","type":"empty-node","children":[]},{"position":{"x":12,"y":19},"size":{"width":62,"height":32},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"text":"user","labels":[],"ports":[{"position":{"x":58.5,"y":12.5},"size":{"width":7,"height":7},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"behavior":"set Sensitivity.Personal","validBehavior":true,"features":{},"id":"wksxi8","type":"port:dfd-output","children":[]}],"hideLabels":false,"minimumWidth":50,"annotations":[],"features":{},"id":"7oii5l","type":"node:input-output","children":[]},{"position":{"x":124,"y":14},"size":{"width":72,"height":42},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"text":"db","labels":[{"labelTypeId":"gvia09","labelTypeValueId":"5hnugm"}],"ports":[{"position":{"x":-3.5,"y":17.5},"size":{"width":7,"height":7},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"features":{},"id":"scljwi","type":"port:dfd-input","children":[]}],"hideLabels":false,"minimumWidth":50,"annotations":[],"features":{},"id":"8j2r1g","type":"node:storage","children":[]},{"routingPoints":[],"selected":false,"hoverFeedback":false,"opacity":1,"text":"","features":{},"id":"22iri","type":"edge:arrow","sourceId":"wksxi8","targetId":"scljwi","children":[]}]},"labelTypes":[{"id":"4h3wzk","name":"Sensitivity","values":[{"id":"zzvphn","text":"Personal"},{"id":"veaan9","text":"Public"}]},{"id":"gvia09","name":"Location","values":[{"id":"g10hr","text":"EU"},{"id":"5hnugm","text":"nonEU"}]}],"constraints":[{"name":"","constraint":""}],"mode":"edit","version":1} \ No newline at end of file diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/results/efficiency_results.json b/tests/dev.arcovia.mitigation.evaluation.tests/results/efficiency_results.json new file mode 100644 index 00000000..4609d928 --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/results/efficiency_results.json @@ -0,0 +1,919 @@ +[ { + "Approach" : "SAT", + "model" : "ewolff-kafka", + "variant" : 4, + "approachCost" : 5, + "tuhhCost" : 5 +}, { + "Approach" : "SAT", + "model" : "ewolff-kafka", + "variant" : 5, + "approachCost" : 5, + "tuhhCost" : 14 +}, { + "Approach" : "SAT", + "model" : "ewolff-kafka", + "variant" : 7, + "approachCost" : 11, + "tuhhCost" : 7 +}, { + "Approach" : "SAT", + "model" : "ewolff-kafka", + "variant" : 8, + "approachCost" : 3, + "tuhhCost" : 10 +}, { + "Approach" : "SAT", + "model" : "anilallewar", + "variant" : 7, + "approachCost" : 25, + "tuhhCost" : 8 +}, { + "Approach" : "SAT", + "model" : "anilallewar", + "variant" : 8, + "approachCost" : 11, + "tuhhCost" : 26 +}, { + "Approach" : "SAT", + "model" : "anilallewar", + "variant" : 11, + "approachCost" : 17, + "tuhhCost" : 22 +}, { + "Approach" : "SAT", + "model" : "mudigal-technologies", + "variant" : 2, + "approachCost" : 8, + "tuhhCost" : 32 +}, { + "Approach" : "SAT", + "model" : "mudigal-technologies", + "variant" : 4, + "approachCost" : 3, + "tuhhCost" : 4 +}, { + "Approach" : "SAT", + "model" : "mudigal-technologies", + "variant" : 5, + "approachCost" : 3, + "tuhhCost" : 53 +}, { + "Approach" : "SAT", + "model" : "mudigal-technologies", + "variant" : 7, + "approachCost" : 17, + "tuhhCost" : 6 +}, { + "Approach" : "SAT", + "model" : "mudigal-technologies", + "variant" : 8, + "approachCost" : 14, + "tuhhCost" : 32 +}, { + "Approach" : "SAT", + "model" : "mudigal-technologies", + "variant" : 11, + "approachCost" : 14, + "tuhhCost" : 49 +}, { + "Approach" : "SAT", + "model" : "yidongnan", + "variant" : 2, + "approachCost" : 6, + "tuhhCost" : 27 +}, { + "Approach" : "SAT", + "model" : "yidongnan", + "variant" : 4, + "approachCost" : 2, + "tuhhCost" : 6 +}, { + "Approach" : "SAT", + "model" : "yidongnan", + "variant" : 5, + "approachCost" : 2, + "tuhhCost" : 37 +}, { + "Approach" : "SAT", + "model" : "yidongnan", + "variant" : 7, + "approachCost" : 20, + "tuhhCost" : 8 +}, { + "Approach" : "SAT", + "model" : "yidongnan", + "variant" : 8, + "approachCost" : 14, + "tuhhCost" : 27 +}, { + "Approach" : "SAT", + "model" : "koushikkothagal", + "variant" : 1, + "approachCost" : 0, + "tuhhCost" : 0 +}, { + "Approach" : "SAT", + "model" : "koushikkothagal", + "variant" : 2, + "approachCost" : 3, + "tuhhCost" : 5 +}, { + "Approach" : "SAT", + "model" : "koushikkothagal", + "variant" : 4, + "approachCost" : 0, + "tuhhCost" : 0 +}, { + "Approach" : "SAT", + "model" : "koushikkothagal", + "variant" : 5, + "approachCost" : 0, + "tuhhCost" : 9 +}, { + "Approach" : "SAT", + "model" : "koushikkothagal", + "variant" : 7, + "approachCost" : 0, + "tuhhCost" : 1 +}, { + "Approach" : "SAT", + "model" : "koushikkothagal", + "variant" : 8, + "approachCost" : 5, + "tuhhCost" : 5 +}, { + "Approach" : "SAT", + "model" : "koushikkothagal", + "variant" : 10, + "approachCost" : 3, + "tuhhCost" : 13 +}, { + "Approach" : "SAT", + "model" : "koushikkothagal", + "variant" : 11, + "approachCost" : 6, + "tuhhCost" : 26 +}, { + "Approach" : "SAT", + "model" : "spring-petclinic", + "variant" : 2, + "approachCost" : 6, + "tuhhCost" : 25 +}, { + "Approach" : "SAT", + "model" : "spring-petclinic", + "variant" : 5, + "approachCost" : 3, + "tuhhCost" : 36 +}, { + "Approach" : "SAT", + "model" : "spring-petclinic", + "variant" : 7, + "approachCost" : 23, + "tuhhCost" : 10 +}, { + "Approach" : "SAT", + "model" : "spring-petclinic", + "variant" : 8, + "approachCost" : 13, + "tuhhCost" : 25 +}, { + "Approach" : "SAT", + "model" : "callistaenterprise", + "variant" : 2, + "approachCost" : 9, + "tuhhCost" : 29 +}, { + "Approach" : "SAT", + "model" : "callistaenterprise", + "variant" : 11, + "approachCost" : 50, + "tuhhCost" : 68 +}, { + "Approach" : "SAT", + "model" : "jferrater", + "variant" : 2, + "approachCost" : 7, + "tuhhCost" : 14 +}, { + "Approach" : "SAT", + "model" : "jferrater", + "variant" : 5, + "approachCost" : 0, + "tuhhCost" : 23 +}, { + "Approach" : "SAT", + "model" : "jferrater", + "variant" : 7, + "approachCost" : 0, + "tuhhCost" : 1 +}, { + "Approach" : "SAT", + "model" : "jferrater", + "variant" : 8, + "approachCost" : 5, + "tuhhCost" : 15 +}, { + "Approach" : "SAT", + "model" : "apssouza22", + "variant" : 2, + "approachCost" : 10, + "tuhhCost" : 32 +}, { + "Approach" : "SAT", + "model" : "apssouza22", + "variant" : 4, + "approachCost" : 3, + "tuhhCost" : 3 +}, { + "Approach" : "SAT", + "model" : "apssouza22", + "variant" : 7, + "approachCost" : 16, + "tuhhCost" : 14 +}, { + "Approach" : "SAT", + "model" : "apssouza22", + "variant" : 8, + "approachCost" : 12, + "tuhhCost" : 23 +}, { + "Approach" : "SAT", + "model" : "sqshq", + "variant" : 7, + "approachCost" : 26, + "tuhhCost" : 10 +}, { + "Approach" : "SAT", + "model" : "sqshq", + "variant" : 8, + "approachCost" : 17, + "tuhhCost" : 33 +}, { + "Approach" : "SAT", + "model" : "sqshq", + "variant" : 10, + "approachCost" : 18, + "tuhhCost" : 48 +}, { + "Approach" : "SAT", + "model" : "sqshq", + "variant" : 11, + "approachCost" : 24, + "tuhhCost" : 96 +}, { + "Approach" : "SAT", + "model" : "georgwittberger", + "variant" : 2, + "approachCost" : 4, + "tuhhCost" : 4 +}, { + "Approach" : "SAT", + "model" : "georgwittberger", + "variant" : 4, + "approachCost" : 4, + "tuhhCost" : 5 +}, { + "Approach" : "SAT", + "model" : "georgwittberger", + "variant" : 5, + "approachCost" : 4, + "tuhhCost" : 9 +}, { + "Approach" : "SAT", + "model" : "georgwittberger", + "variant" : 7, + "approachCost" : 8, + "tuhhCost" : 7 +}, { + "Approach" : "SAT", + "model" : "georgwittberger", + "variant" : 8, + "approachCost" : 1, + "tuhhCost" : 4 +}, { + "Approach" : "SAT", + "model" : "georgwittberger", + "variant" : 10, + "approachCost" : 3, + "tuhhCost" : 13 +}, { + "Approach" : "SAT", + "model" : "georgwittberger", + "variant" : 11, + "approachCost" : 6, + "tuhhCost" : 26 +}, { + "Approach" : "ILP", + "model" : "ewolff-kafka", + "variant" : 4, + "approachCost" : 1, + "tuhhCost" : 5 +}, { + "Approach" : "ILP", + "model" : "ewolff-kafka", + "variant" : 5, + "approachCost" : 1, + "tuhhCost" : 14 +}, { + "Approach" : "ILP", + "model" : "ewolff-kafka", + "variant" : 7, + "approachCost" : 2, + "tuhhCost" : 7 +}, { + "Approach" : "ILP", + "model" : "ewolff-kafka", + "variant" : 8, + "approachCost" : 1, + "tuhhCost" : 10 +}, { + "Approach" : "ILP", + "model" : "anilallewar", + "variant" : 7, + "approachCost" : 10, + "tuhhCost" : 8 +}, { + "Approach" : "ILP", + "model" : "anilallewar", + "variant" : 8, + "approachCost" : 4, + "tuhhCost" : 26 +}, { + "Approach" : "ILP", + "model" : "anilallewar", + "variant" : 11, + "approachCost" : 17, + "tuhhCost" : 22 +}, { + "Approach" : "ILP", + "model" : "mudigal-technologies", + "variant" : 2, + "approachCost" : 5, + "tuhhCost" : 32 +}, { + "Approach" : "ILP", + "model" : "mudigal-technologies", + "variant" : 4, + "approachCost" : 2, + "tuhhCost" : 4 +}, { + "Approach" : "ILP", + "model" : "mudigal-technologies", + "variant" : 5, + "approachCost" : 2, + "tuhhCost" : 53 +}, { + "Approach" : "ILP", + "model" : "mudigal-technologies", + "variant" : 7, + "approachCost" : 6, + "tuhhCost" : 6 +}, { + "Approach" : "ILP", + "model" : "mudigal-technologies", + "variant" : 8, + "approachCost" : 5, + "tuhhCost" : 32 +}, { + "Approach" : "ILP", + "model" : "mudigal-technologies", + "variant" : 11, + "approachCost" : 14, + "tuhhCost" : 49 +}, { + "Approach" : "ILP", + "model" : "yidongnan", + "variant" : 2, + "approachCost" : 4, + "tuhhCost" : 27 +}, { + "Approach" : "ILP", + "model" : "yidongnan", + "variant" : 4, + "approachCost" : 1, + "tuhhCost" : 6 +}, { + "Approach" : "ILP", + "model" : "yidongnan", + "variant" : 5, + "approachCost" : 1, + "tuhhCost" : 37 +}, { + "Approach" : "ILP", + "model" : "yidongnan", + "variant" : 7, + "approachCost" : 8, + "tuhhCost" : 8 +}, { + "Approach" : "ILP", + "model" : "yidongnan", + "variant" : 8, + "approachCost" : 4, + "tuhhCost" : 27 +}, { + "Approach" : "ILP", + "model" : "koushikkothagal", + "variant" : 1, + "approachCost" : 0, + "tuhhCost" : 0 +}, { + "Approach" : "ILP", + "model" : "koushikkothagal", + "variant" : 2, + "approachCost" : 3, + "tuhhCost" : 5 +}, { + "Approach" : "ILP", + "model" : "koushikkothagal", + "variant" : 4, + "approachCost" : 0, + "tuhhCost" : 0 +}, { + "Approach" : "ILP", + "model" : "koushikkothagal", + "variant" : 5, + "approachCost" : 0, + "tuhhCost" : 9 +}, { + "Approach" : "ILP", + "model" : "koushikkothagal", + "variant" : 7, + "approachCost" : 0, + "tuhhCost" : 1 +}, { + "Approach" : "ILP", + "model" : "koushikkothagal", + "variant" : 8, + "approachCost" : 4, + "tuhhCost" : 5 +}, { + "Approach" : "ILP", + "model" : "koushikkothagal", + "variant" : 10, + "approachCost" : 3, + "tuhhCost" : 13 +}, { + "Approach" : "ILP", + "model" : "koushikkothagal", + "variant" : 11, + "approachCost" : 6, + "tuhhCost" : 26 +}, { + "Approach" : "ILP", + "model" : "spring-petclinic", + "variant" : 2, + "approachCost" : 2, + "tuhhCost" : 25 +}, { + "Approach" : "ILP", + "model" : "spring-petclinic", + "variant" : 5, + "approachCost" : 2, + "tuhhCost" : 36 +}, { + "Approach" : "ILP", + "model" : "spring-petclinic", + "variant" : 7, + "approachCost" : 8, + "tuhhCost" : 10 +}, { + "Approach" : "ILP", + "model" : "spring-petclinic", + "variant" : 8, + "approachCost" : 2, + "tuhhCost" : 25 +}, { + "Approach" : "ILP", + "model" : "callistaenterprise", + "variant" : 2, + "approachCost" : 3, + "tuhhCost" : 29 +}, { + "Approach" : "ILP", + "model" : "callistaenterprise", + "variant" : 11, + "approachCost" : 50, + "tuhhCost" : 68 +}, { + "Approach" : "ILP", + "model" : "jferrater", + "variant" : 2, + "approachCost" : 1, + "tuhhCost" : 14 +}, { + "Approach" : "ILP", + "model" : "jferrater", + "variant" : 5, + "approachCost" : 0, + "tuhhCost" : 23 +}, { + "Approach" : "ILP", + "model" : "jferrater", + "variant" : 7, + "approachCost" : 0, + "tuhhCost" : 1 +}, { + "Approach" : "ILP", + "model" : "jferrater", + "variant" : 8, + "approachCost" : 1, + "tuhhCost" : 15 +}, { + "Approach" : "ILP", + "model" : "apssouza22", + "variant" : 2, + "approachCost" : 7, + "tuhhCost" : 32 +}, { + "Approach" : "ILP", + "model" : "apssouza22", + "variant" : 4, + "approachCost" : 3, + "tuhhCost" : 3 +}, { + "Approach" : "ILP", + "model" : "apssouza22", + "variant" : 7, + "approachCost" : 10, + "tuhhCost" : 14 +}, { + "Approach" : "ILP", + "model" : "apssouza22", + "variant" : 8, + "approachCost" : 5, + "tuhhCost" : 23 +}, { + "Approach" : "ILP", + "model" : "sqshq", + "variant" : 7, + "approachCost" : 8, + "tuhhCost" : 10 +}, { + "Approach" : "ILP", + "model" : "sqshq", + "variant" : 8, + "approachCost" : 10, + "tuhhCost" : 33 +}, { + "Approach" : "ILP", + "model" : "sqshq", + "variant" : 10, + "approachCost" : 18, + "tuhhCost" : 48 +}, { + "Approach" : "ILP", + "model" : "sqshq", + "variant" : 11, + "approachCost" : 22, + "tuhhCost" : 96 +}, { + "Approach" : "ILP", + "model" : "georgwittberger", + "variant" : 2, + "approachCost" : 1, + "tuhhCost" : 4 +}, { + "Approach" : "ILP", + "model" : "georgwittberger", + "variant" : 4, + "approachCost" : 1, + "tuhhCost" : 5 +}, { + "Approach" : "ILP", + "model" : "georgwittberger", + "variant" : 5, + "approachCost" : 1, + "tuhhCost" : 9 +}, { + "Approach" : "ILP", + "model" : "georgwittberger", + "variant" : 7, + "approachCost" : 2, + "tuhhCost" : 7 +}, { + "Approach" : "ILP", + "model" : "georgwittberger", + "variant" : 8, + "approachCost" : 1, + "tuhhCost" : 4 +}, { + "Approach" : "ILP", + "model" : "georgwittberger", + "variant" : 10, + "approachCost" : 3, + "tuhhCost" : 13 +}, { + "Approach" : "ILP", + "model" : "georgwittberger", + "variant" : 11, + "approachCost" : 6, + "tuhhCost" : 26 +}, { + "Approach" : "SMT", + "model" : "ewolff-kafka", + "variant" : 4, + "approachCost" : 1, + "tuhhCost" : 5 +}, { + "Approach" : "SMT", + "model" : "ewolff-kafka", + "variant" : 5, + "approachCost" : 1, + "tuhhCost" : 14 +}, { + "Approach" : "SMT", + "model" : "ewolff-kafka", + "variant" : 7, + "approachCost" : 2, + "tuhhCost" : 7 +}, { + "Approach" : "SMT", + "model" : "ewolff-kafka", + "variant" : 8, + "approachCost" : 1, + "tuhhCost" : 10 +}, { + "Approach" : "SMT", + "model" : "anilallewar", + "variant" : 7, + "approachCost" : 8, + "tuhhCost" : 8 +}, { + "Approach" : "SMT", + "model" : "anilallewar", + "variant" : 8, + "approachCost" : 3, + "tuhhCost" : 26 +}, { + "Approach" : "SMT", + "model" : "anilallewar", + "variant" : 11, + "approachCost" : 15, + "tuhhCost" : 22 +}, { + "Approach" : "SMT", + "model" : "mudigal-technologies", + "variant" : 2, + "approachCost" : 0, + "tuhhCost" : 32 +}, { + "Approach" : "SMT", + "model" : "mudigal-technologies", + "variant" : 4, + "approachCost" : 0, + "tuhhCost" : 4 +}, { + "Approach" : "SMT", + "model" : "mudigal-technologies", + "variant" : 5, + "approachCost" : 2, + "tuhhCost" : 53 +}, { + "Approach" : "SMT", + "model" : "mudigal-technologies", + "variant" : 7, + "approachCost" : 6, + "tuhhCost" : 6 +}, { + "Approach" : "SMT", + "model" : "mudigal-technologies", + "variant" : 8, + "approachCost" : 5, + "tuhhCost" : 32 +}, { + "Approach" : "SMT", + "model" : "mudigal-technologies", + "variant" : 11, + "approachCost" : 12, + "tuhhCost" : 49 +}, { + "Approach" : "SMT", + "model" : "yidongnan", + "variant" : 2, + "approachCost" : 0, + "tuhhCost" : 27 +}, { + "Approach" : "SMT", + "model" : "yidongnan", + "variant" : 4, + "approachCost" : 0, + "tuhhCost" : 6 +}, { + "Approach" : "SMT", + "model" : "yidongnan", + "variant" : 5, + "approachCost" : 0, + "tuhhCost" : 37 +}, { + "Approach" : "SMT", + "model" : "yidongnan", + "variant" : 7, + "approachCost" : 8, + "tuhhCost" : 8 +}, { + "Approach" : "SMT", + "model" : "yidongnan", + "variant" : 8, + "approachCost" : 4, + "tuhhCost" : 27 +}, { + "Approach" : "SMT", + "model" : "koushikkothagal", + "variant" : 1, + "approachCost" : 0, + "tuhhCost" : 0 +}, { + "Approach" : "SMT", + "model" : "koushikkothagal", + "variant" : 2, + "approachCost" : 0, + "tuhhCost" : 5 +}, { + "Approach" : "SMT", + "model" : "koushikkothagal", + "variant" : 4, + "approachCost" : 0, + "tuhhCost" : 0 +}, { + "Approach" : "SMT", + "model" : "koushikkothagal", + "variant" : 5, + "approachCost" : 0, + "tuhhCost" : 9 +}, { + "Approach" : "SMT", + "model" : "koushikkothagal", + "variant" : 7, + "approachCost" : 0, + "tuhhCost" : 1 +}, { + "Approach" : "SMT", + "model" : "koushikkothagal", + "variant" : 8, + "approachCost" : 4, + "tuhhCost" : 5 +}, { + "Approach" : "SMT", + "model" : "koushikkothagal", + "variant" : 10, + "approachCost" : 0, + "tuhhCost" : 13 +}, { + "Approach" : "SMT", + "model" : "koushikkothagal", + "variant" : 11, + "approachCost" : 0, + "tuhhCost" : 26 +}, { + "Approach" : "SMT", + "model" : "spring-petclinic", + "variant" : 2, + "approachCost" : 2, + "tuhhCost" : 25 +}, { + "Approach" : "SMT", + "model" : "spring-petclinic", + "variant" : 5, + "approachCost" : 2, + "tuhhCost" : 36 +}, { + "Approach" : "SMT", + "model" : "spring-petclinic", + "variant" : 7, + "approachCost" : 8, + "tuhhCost" : 10 +}, { + "Approach" : "SMT", + "model" : "spring-petclinic", + "variant" : 8, + "approachCost" : 2, + "tuhhCost" : 25 +}, { + "Approach" : "SMT", + "model" : "callistaenterprise", + "variant" : 2, + "approachCost" : 2, + "tuhhCost" : 29 +}, { + "Approach" : "SMT", + "model" : "callistaenterprise", + "variant" : 11, + "approachCost" : 40, + "tuhhCost" : 68 +}, { + "Approach" : "SMT", + "model" : "jferrater", + "variant" : 2, + "approachCost" : 1, + "tuhhCost" : 14 +}, { + "Approach" : "SMT", + "model" : "jferrater", + "variant" : 5, + "approachCost" : 0, + "tuhhCost" : 23 +}, { + "Approach" : "SMT", + "model" : "jferrater", + "variant" : 7, + "approachCost" : 0, + "tuhhCost" : 1 +}, { + "Approach" : "SMT", + "model" : "jferrater", + "variant" : 8, + "approachCost" : 1, + "tuhhCost" : 15 +}, { + "Approach" : "SMT", + "model" : "apssouza22", + "variant" : 2, + "approachCost" : 1, + "tuhhCost" : 32 +}, { + "Approach" : "SMT", + "model" : "apssouza22", + "variant" : 4, + "approachCost" : 0, + "tuhhCost" : 3 +}, { + "Approach" : "SMT", + "model" : "apssouza22", + "variant" : 7, + "approachCost" : 3, + "tuhhCost" : 14 +}, { + "Approach" : "SMT", + "model" : "apssouza22", + "variant" : 8, + "approachCost" : 2, + "tuhhCost" : 23 +}, { + "Approach" : "SMT", + "model" : "sqshq", + "variant" : 7, + "approachCost" : 8, + "tuhhCost" : 10 +}, { + "Approach" : "SMT", + "model" : "sqshq", + "variant" : 8, + "approachCost" : 7, + "tuhhCost" : 33 +}, { + "Approach" : "SMT", + "model" : "sqshq", + "variant" : 10, + "approachCost" : 18, + "tuhhCost" : 48 +}, { + "Approach" : "SMT", + "model" : "sqshq", + "variant" : 11, + "approachCost" : 20, + "tuhhCost" : 96 +}, { + "Approach" : "SMT", + "model" : "georgwittberger", + "variant" : 2, + "approachCost" : 1, + "tuhhCost" : 4 +}, { + "Approach" : "SMT", + "model" : "georgwittberger", + "variant" : 4, + "approachCost" : 1, + "tuhhCost" : 5 +}, { + "Approach" : "SMT", + "model" : "georgwittberger", + "variant" : 5, + "approachCost" : 1, + "tuhhCost" : 9 +}, { + "Approach" : "SMT", + "model" : "georgwittberger", + "variant" : 7, + "approachCost" : 2, + "tuhhCost" : 7 +}, { + "Approach" : "SMT", + "model" : "georgwittberger", + "variant" : 8, + "approachCost" : 1, + "tuhhCost" : 4 +}, { + "Approach" : "SMT", + "model" : "georgwittberger", + "variant" : 10, + "approachCost" : 0, + "tuhhCost" : 13 +}, { + "Approach" : "SMT", + "model" : "georgwittberger", + "variant" : 11, + "approachCost" : 0, + "tuhhCost" : 26 +} ] \ No newline at end of file diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java index 8fcd9883..83b3d9bc 100644 --- a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java +++ b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java @@ -9,6 +9,7 @@ import java.nio.file.Paths; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.ArrayList; import java.util.stream.Stream; @@ -19,15 +20,20 @@ import org.dataflowanalysis.converter.dfd2web.DataFlowDiagramAndDictionary; import org.dataflowanalysis.examplemodels.Activator; import org.dataflowanalysis.examplemodels.TuhhModels; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import dev.arcovia.mitigation.sat.Label; +import dev.arcovia.mitigation.sat.MeasurementWriter; import dev.arcovia.mitigation.sat.MitigationApproach; import dev.arcovia.mitigation.sat.ModelCostCalculator; +import dev.arcovia.mitigation.sat.RunConfig; import dev.arcovia.mitigation.sat.dsl.CNFTranslation; +import dev.arcovia.mitigation.sat.timeMeasurement; +import dev.arcovia.mitigation.sat.Scaler; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.core.type.TypeReference; @@ -213,6 +219,134 @@ void evaluateCost(String model, int variant) throws Exception { } + + private static final String SCALE_DFD = "models/sourceSink.json"; + + private static final AnalysisConstraint scalabilityConstraint = new ConstraintDSL().ofData() + .withLabel("Sensitivity", "Personal") + .withoutLabel("Encryption", "encrypted") + .neverFlows() + .toVertex() + .withCharacteristic("Location", "nonEU") + .create(); + + private static final List TFG_LENGTH_SCALINGS = + List.of(0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550); + + private static final List TFG_AMOUNT_SCALINGS = + List.of(0, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, + 11000, 12000, 13000, 14000, 15000); + + private static final List CONSTRAINT_SCALINGS = + List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 40, 60, 80, 100, 120, 140, 160, 180); + + private static final int MEASUREMENT_REPEATS = 3; + private static final int FLUSH_EVERY = 3; + private static boolean WARMUP = false; + + @Test + @Disabled("Long-running scalability experiment — run via evaluateScalability()") + void evaluateScalability() throws Throwable { + Path outDir = Paths.get("results"); + Files.createDirectories(outDir); + Path csv = outDir.resolve(getApproachName().toLowerCase() + "_performance_measurements.json"); + Set done = MeasurementWriter.loadDoneRunIds(csv); + + try (MeasurementWriter writer = new MeasurementWriter(csv, done, FLUSH_EVERY)) { + scaleTFGLength(writer); + scaleTFGAmount(writer); + scaleConstraints(writer); + } + } + + + private void scaleTFGLength(MeasurementWriter writer) throws Throwable { + for (int scaling : TFG_LENGTH_SCALINGS) { + RunConfig cfg = RunConfig.forTFG("tfg_length", scaling, 0); + runWithWarmupAndRepeats(writer, cfg, () -> { + var dfd = new Scaler(SCALE_DFD).scaleTFGLength(scaling); + getApproach(dfd, List.of(scalabilityConstraint)).repair(); + }); + } + } + + private void scaleTFGAmount(MeasurementWriter writer) throws Throwable { + for (int scaling : TFG_AMOUNT_SCALINGS) { + RunConfig cfg = RunConfig.forTFG("tfg_amount", 0, scaling); + runWithWarmupAndRepeats(writer, cfg, () -> { + var dfd = new Scaler(SCALE_DFD).scaleTFGAmount(scaling); + getApproach(dfd, List.of(scalabilityConstraint)).repair(); + }); + } + } + + private void scaleConstraints(MeasurementWriter writer) throws Throwable { + int dummyLabels = 600; + for (int s : CONSTRAINT_SCALINGS) + runConstraintCase(writer, dummyLabels, "constraints_amountConstraint", s, 1, 1, 1, 1); + for (int s : CONSTRAINT_SCALINGS) + runConstraintCase(writer, dummyLabels, "constraints_numberWithLabel", 1, s, 1, 1, 1); + for (int s : CONSTRAINT_SCALINGS) + runConstraintCase(writer, dummyLabels, "constraints_numberWithoutLabel", 1, 1, s, 1, 1); + for (int s : CONSTRAINT_SCALINGS) + runConstraintCase(writer, dummyLabels, "constraints_numberWithCharacteristic", 1, 1, 1, s, 1); + for (int s : CONSTRAINT_SCALINGS) + runConstraintCase(writer, dummyLabels, "constraints_numberWithoutCharacteristic", 1, 1, 1, 1, s); + for (int s : CONSTRAINT_SCALINGS) { + int half = s / 2; + runConstraintCase(writer, dummyLabels, "constraints_allTogether", s, half, half, half, half); + } + } + + private void runConstraintCase(MeasurementWriter writer, int dummyLabels, String name, + int amount, int withLabel, int withoutLabel, int withChar, int withoutChar) throws Throwable { + RunConfig cfg = RunConfig.forConstraints(name, amount, withLabel, withoutLabel, + withChar, withoutChar, dummyLabels); + runWithWarmupAndRepeats(writer, cfg, () -> { + Scaler scaler = new Scaler(SCALE_DFD); + DataFlowDiagramAndDictionary dfd = scaler.scaleLabels(dummyLabels); + List constraints = scaler.scaleConstraint(amount, withLabel, withoutLabel, + withChar, withoutChar, dummyLabels); + getApproach(dfd, constraints).repair(); + }); + } + + + private void runWithWarmupAndRepeats(MeasurementWriter writer, RunConfig cfg, + RunnableExperiment experiment) throws Throwable { + if (!WARMUP) { + try { + experiment.run(); + WARMUP = true; + } catch (Throwable t) { throw new RuntimeException(t); } + } + for (int i = 0; i < MEASUREMENT_REPEATS; i++) { + if (writer.isDone(MeasurementWriter.runId(cfg, "measurement", i))) continue; + timeMeasurement timer = new timeMeasurement(); + try { + timer.start(); + experiment.run(); + timer.stop(); + writer.append(cfg, timer, "measurement", i); + } catch (OutOfMemoryError oom) { + writer.appendFailure(cfg, "measurement", i, "OutOfMemoryError"); + throw oom; + } catch (Throwable t) { + String msg = t.getMessage(); + writer.appendFailure(cfg, "measurement", i, + t.getClass().getSimpleName() + ": " + (msg != null ? msg.substring(0, Math.min(200, msg.length())) : "")); + throw t; + } + } + } + + @FunctionalInterface + private interface RunnableExperiment { void run() throws Exception; } + + + + private int determineViolations(DataFlowDiagramAndDictionary dfd, List constraints) { var resourceProvider = new DFDModelResourceProvider(dfd.dataDictionary(), dfd.dataFlowDiagram()); var analysis = new DFDDataFlowAnalysisBuilder().standalone().useCustomResourceProvider(resourceProvider) diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java index 764ba22e..405045f7 100644 --- a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java +++ b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java @@ -19,9 +19,7 @@ protected MitigationApproach getApproach(DataFlowDiagramAndDictionary dfd, List< for (var constraint : constraints) { var translation = new CNFTranslation(constraint); - Constraint translatedConstraint = translation.constructCNF() - .get(0); - translatedConstraints.add(translatedConstraint); + translatedConstraints.addAll(translation.constructCNF()); } return new Mechanic(dfd, " ",translatedConstraints); diff --git a/tests/dev.arcovia.mitigation.ilp.tests/src/dev/arcovia/mitigation/ilp/tests/PerformanceEval.java b/tests/dev.arcovia.mitigation.ilp.tests/src/dev/arcovia/mitigation/ilp/tests/PerformanceEval.java index 4ce4af2f..2a178ac2 100644 --- a/tests/dev.arcovia.mitigation.ilp.tests/src/dev/arcovia/mitigation/ilp/tests/PerformanceEval.java +++ b/tests/dev.arcovia.mitigation.ilp.tests/src/dev/arcovia/mitigation/ilp/tests/PerformanceEval.java @@ -54,7 +54,7 @@ public class PerformanceEval { // Output (CSV) for Jupyter // ----------------------------- private static final Path OUT_DIR = Paths.get("perf-results"); - private static final Path CSV_FILE = OUT_DIR.resolve("performance_measurements.csv"); + private static final Path JSON_FILE = OUT_DIR.resolve("performance_measurements.json"); // flush every N lines (low overhead, still crash-safe) private static final int FLUSH_EVERY = 3; @@ -72,9 +72,9 @@ public void runAllExperiments() throws Exception { Files.createDirectories(OUT_DIR); // Load already-done runIds (so you can restart after crash/OOM) - Set done = MeasurementWriter.loadDoneRunIds(CSV_FILE); + Set done = MeasurementWriter.loadDoneRunIds(JSON_FILE); - try (MeasurementWriter writer = new MeasurementWriter(CSV_FILE, done, FLUSH_EVERY)) { + try (MeasurementWriter writer = new MeasurementWriter(JSON_FILE, done, FLUSH_EVERY)) { scaleTFGLength(writer); scaleTFGAmount(writer); scaleConstraints(writer); @@ -88,8 +88,8 @@ public void runAllExperiments() throws Exception { @Disabled("Long-running performance experiment: run via main() to avoid timeouts and IDE issues") public void scaleTFGLength_test() throws Exception { Files.createDirectories(OUT_DIR); - Set done = MeasurementWriter.loadDoneRunIds(CSV_FILE); - try (MeasurementWriter writer = new MeasurementWriter(CSV_FILE, done, FLUSH_EVERY)) { + Set done = MeasurementWriter.loadDoneRunIds(JSON_FILE); + try (MeasurementWriter writer = new MeasurementWriter(JSON_FILE, done, FLUSH_EVERY)) { scaleTFGLength(writer); } } @@ -98,8 +98,8 @@ public void scaleTFGLength_test() throws Exception { @Disabled("Long-running performance experiment: run via main() to avoid timeouts and IDE issues") public void scaleTFGAmount_test() throws Exception { Files.createDirectories(OUT_DIR); - Set done = MeasurementWriter.loadDoneRunIds(CSV_FILE); - try (MeasurementWriter writer = new MeasurementWriter(CSV_FILE, done, FLUSH_EVERY)) { + Set done = MeasurementWriter.loadDoneRunIds(JSON_FILE); + try (MeasurementWriter writer = new MeasurementWriter(JSON_FILE, done, FLUSH_EVERY)) { scaleTFGAmount(writer); } } @@ -108,8 +108,8 @@ public void scaleTFGAmount_test() throws Exception { @Disabled("Long-running performance experiment: run via main() to avoid timeouts and IDE issues") public void scaleConstraints_test() throws Exception { Files.createDirectories(OUT_DIR); - Set done = MeasurementWriter.loadDoneRunIds(CSV_FILE); - try (MeasurementWriter writer = new MeasurementWriter(CSV_FILE, done, FLUSH_EVERY)) { + Set done = MeasurementWriter.loadDoneRunIds(JSON_FILE); + try (MeasurementWriter writer = new MeasurementWriter(JSON_FILE, done, FLUSH_EVERY)) { scaleConstraints(writer); } } diff --git a/tests/dev.arcovia.mitigation.sat.tests/src/dev/arcovia/mitigation/sat/tests/PerformanceEval.java b/tests/dev.arcovia.mitigation.sat.tests/src/dev/arcovia/mitigation/sat/tests/PerformanceEval.java index f9f222bf..faddf733 100644 --- a/tests/dev.arcovia.mitigation.sat.tests/src/dev/arcovia/mitigation/sat/tests/PerformanceEval.java +++ b/tests/dev.arcovia.mitigation.sat.tests/src/dev/arcovia/mitigation/sat/tests/PerformanceEval.java @@ -59,7 +59,7 @@ public class PerformanceEval { // Output (CSV) for Jupyter // ----------------------------- private static final Path OUT_DIR = Paths.get("perf-results"); - private static final Path CSV_FILE = OUT_DIR.resolve("performance_measurements.csv"); + private static final Path JSON_FILE = OUT_DIR.resolve("performance_measurements.json"); // flush every N lines (low overhead, still crash-safe) private static final int FLUSH_EVERY = 3; @@ -77,9 +77,9 @@ public void runAllExperiments() throws Exception { Files.createDirectories(OUT_DIR); // Load already-done runIds (so you can restart after crash/OOM) - Set done = MeasurementWriter.loadDoneRunIds(CSV_FILE); + Set done = MeasurementWriter.loadDoneRunIds(JSON_FILE); - try (MeasurementWriter writer = new MeasurementWriter(CSV_FILE, done, FLUSH_EVERY)) { + try (MeasurementWriter writer = new MeasurementWriter(JSON_FILE, done, FLUSH_EVERY)) { scaleTFGLength(writer); scaleTFGAmount(writer); scaleConstraints(writer); @@ -93,8 +93,8 @@ public void runAllExperiments() throws Exception { @Disabled("Long-running performance experiment: run via main() to avoid timeouts and IDE issues") public void scaleTFGLength_test() throws Exception { Files.createDirectories(OUT_DIR); - Set done = MeasurementWriter.loadDoneRunIds(CSV_FILE); - try (MeasurementWriter writer = new MeasurementWriter(CSV_FILE, done, FLUSH_EVERY)) { + Set done = MeasurementWriter.loadDoneRunIds(JSON_FILE); + try (MeasurementWriter writer = new MeasurementWriter(JSON_FILE, done, FLUSH_EVERY)) { scaleTFGLength(writer); } } @@ -103,8 +103,8 @@ public void scaleTFGLength_test() throws Exception { @Disabled("Long-running performance experiment: run via main() to avoid timeouts and IDE issues") public void scaleTFGAmount_test() throws Exception { Files.createDirectories(OUT_DIR); - Set done = MeasurementWriter.loadDoneRunIds(CSV_FILE); - try (MeasurementWriter writer = new MeasurementWriter(CSV_FILE, done, FLUSH_EVERY)) { + Set done = MeasurementWriter.loadDoneRunIds(JSON_FILE); + try (MeasurementWriter writer = new MeasurementWriter(JSON_FILE, done, FLUSH_EVERY)) { scaleTFGAmount(writer); } } @@ -113,8 +113,8 @@ public void scaleTFGAmount_test() throws Exception { @Disabled("Long-running performance experiment: run via main() to avoid timeouts and IDE issues") public void scaleConstraints_test() throws Exception { Files.createDirectories(OUT_DIR); - Set done = MeasurementWriter.loadDoneRunIds(CSV_FILE); - try (MeasurementWriter writer = new MeasurementWriter(CSV_FILE, done, FLUSH_EVERY)) { + Set done = MeasurementWriter.loadDoneRunIds(JSON_FILE); + try (MeasurementWriter writer = new MeasurementWriter(JSON_FILE, done, FLUSH_EVERY)) { scaleConstraints(writer); } } From b89b6c24a51e438ee8754f2cc0edb667fb657353 Mon Sep 17 00:00:00 2001 From: BenjaminArp <101420246+BenjaminArp@users.noreply.github.com> Date: Thu, 9 Apr 2026 12:31:20 +0200 Subject: [PATCH 04/52] remove testresults --- .../testresults/ -literalMapping.json | 1237 ---------- .../testresults/ .cnf | 2105 ----------------- 2 files changed, 3342 deletions(-) delete mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/testresults/ -literalMapping.json delete mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/testresults/ .cnf diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ -literalMapping.json b/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ -literalMapping.json deleted file mode 100644 index 8e79a8b5..00000000 --- a/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ -literalMapping.json +++ /dev/null @@ -1,1237 +0,0 @@ -{ - "1" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, entrypoint)", - "2" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, gateway)", - "3" : "Node 10 has Property (Stereotype, internal)", - "4" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, entrypoint)", - "5" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, gateway)", - "6" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, entrypoint)", - "7" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, gateway)", - "8" : "Node 10 has Property (Stereotype, gateway)", - "9" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, authenticated_request)", - "10" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, authenticated_request)", - "11" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, authenticated_request)", - "12" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, transform_identity_representation)", - "13" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, transform_identity_representation)", - "14" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, transform_identity_representation)", - "15" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, token_validation)", - "16" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, token_validation)", - "17" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, token_validation)", - "18" : "Node 10 has Property (Stereotype, authorization_server)", - "19" : "Node 10 has Property (Stereotype, login_attempts_regulation)", - "20" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, encrypted_connection)", - "21" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, encrypted_connection)", - "22" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, encrypted_connection)", - "23" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, internal)", - "24" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, internal)", - "25" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, internal)", - "26" : "Node 10 has Property (Stereotype, local_logging)", - "27" : "Node 10 has Property (Stereotype, log_sanitization)", - "28" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, entrypoint)", - "29" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, gateway)", - "30" : "Node 11 has Property (Stereotype, internal)", - "31" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, entrypoint)", - "32" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, gateway)", - "33" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, entrypoint)", - "34" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, gateway)", - "35" : "Node 11 has Property (Stereotype, gateway)", - "36" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, authenticated_request)", - "37" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, authenticated_request)", - "38" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, authenticated_request)", - "39" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, transform_identity_representation)", - "40" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, transform_identity_representation)", - "41" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, transform_identity_representation)", - "42" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, token_validation)", - "43" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, token_validation)", - "44" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, token_validation)", - "45" : "Node 11 has Property (Stereotype, authorization_server)", - "46" : "Node 11 has Property (Stereotype, login_attempts_regulation)", - "47" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, encrypted_connection)", - "48" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, encrypted_connection)", - "49" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, encrypted_connection)", - "50" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, internal)", - "51" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, internal)", - "52" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, internal)", - "53" : "Node 11 has Property (Stereotype, local_logging)", - "54" : "Node 11 has Property (Stereotype, log_sanitization)", - "55" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, entrypoint)", - "56" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, gateway)", - "57" : "Node 12 has Property (Stereotype, internal)", - "58" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, entrypoint)", - "59" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, gateway)", - "60" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, entrypoint)", - "61" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, gateway)", - "62" : "Node 12 has Property (Stereotype, gateway)", - "63" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, authenticated_request)", - "64" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, authenticated_request)", - "65" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, authenticated_request)", - "66" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, transform_identity_representation)", - "67" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, transform_identity_representation)", - "68" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, transform_identity_representation)", - "69" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, token_validation)", - "70" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, token_validation)", - "71" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, token_validation)", - "72" : "Node 12 has Property (Stereotype, authorization_server)", - "73" : "Node 12 has Property (Stereotype, login_attempts_regulation)", - "74" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, encrypted_connection)", - "75" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, encrypted_connection)", - "76" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, encrypted_connection)", - "77" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, internal)", - "78" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, internal)", - "79" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, internal)", - "80" : "Node 12 has Property (Stereotype, local_logging)", - "81" : "Node 12 has Property (Stereotype, log_sanitization)", - "82" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, entrypoint)", - "83" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, gateway)", - "84" : "Node 13 has Property (Stereotype, internal)", - "85" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, entrypoint)", - "86" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, gateway)", - "87" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, entrypoint)", - "88" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, gateway)", - "89" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, entrypoint)", - "90" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, gateway)", - "91" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, entrypoint)", - "92" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, gateway)", - "93" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, entrypoint)", - "94" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, gateway)", - "95" : "Node 13 has Property (Stereotype, gateway)", - "96" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, authenticated_request)", - "97" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, authenticated_request)", - "98" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, authenticated_request)", - "99" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, authenticated_request)", - "100" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, authenticated_request)", - "101" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, authenticated_request)", - "102" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", - "103" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", - "104" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", - "105" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", - "106" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", - "107" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, transform_identity_representation)", - "108" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, token_validation)", - "109" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, token_validation)", - "110" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, token_validation)", - "111" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, token_validation)", - "112" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, token_validation)", - "113" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, token_validation)", - "114" : "Node 13 has Property (Stereotype, authorization_server)", - "115" : "Node 13 has Property (Stereotype, login_attempts_regulation)", - "116" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, encrypted_connection)", - "117" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, encrypted_connection)", - "118" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, encrypted_connection)", - "119" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, encrypted_connection)", - "120" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, encrypted_connection)", - "121" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, encrypted_connection)", - "122" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, internal)", - "123" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, internal)", - "124" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, internal)", - "125" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, internal)", - "126" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, internal)", - "127" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, internal)", - "128" : "Node 13 has Property (Stereotype, local_logging)", - "129" : "Node 13 has Property (Stereotype, log_sanitization)", - "130" : "Node 2 has Property (Stereotype, gateway)", - "131" : "Node 2 has Property (Stereotype, internal)", - "132" : "Node 2 has Property (Stereotype, authorization_server)", - "133" : "Node 2 has Property (Stereotype, login_attempts_regulation)", - "134" : "Node 2 has Property (Stereotype, local_logging)", - "135" : "Node 2 has Property (Stereotype, log_sanitization)", - "136" : "Node 3 has Property (Stereotype, gateway)", - "137" : "Node 3 has Property (Stereotype, internal)", - "138" : "Node 3 has Property (Stereotype, authorization_server)", - "139" : "Node 3 has Property (Stereotype, login_attempts_regulation)", - "140" : "Node 3 has Property (Stereotype, local_logging)", - "141" : "Node 3 has Property (Stereotype, log_sanitization)", - "142" : "Node 4 has Property (Stereotype, gateway)", - "143" : "Node 4 has Property (Stereotype, internal)", - "144" : "Node 4 has Property (Stereotype, authorization_server)", - "145" : "Node 4 has Property (Stereotype, login_attempts_regulation)", - "146" : "Node 4 has Property (Stereotype, local_logging)", - "147" : "Node 4 has Property (Stereotype, log_sanitization)", - "148" : "Node 5 has Property (Stereotype, gateway)", - "149" : "Node 5 has Property (Stereotype, internal)", - "150" : "Node 5 has Property (Stereotype, authorization_server)", - "151" : "Node 5 has Property (Stereotype, login_attempts_regulation)", - "152" : "Node 5 has Property (Stereotype, local_logging)", - "153" : "Node 5 has Property (Stereotype, log_sanitization)", - "154" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, entrypoint)", - "155" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, gateway)", - "156" : "Node 6 has Property (Stereotype, internal)", - "157" : "Node 6 has Property (Stereotype, gateway)", - "158" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, authenticated_request)", - "159" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, transform_identity_representation)", - "160" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, token_validation)", - "161" : "Node 6 has Property (Stereotype, authorization_server)", - "162" : "Node 6 has Property (Stereotype, login_attempts_regulation)", - "163" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, encrypted_connection)", - "164" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, internal)", - "165" : "Node 6 has Property (Stereotype, local_logging)", - "166" : "Node 6 has Property (Stereotype, log_sanitization)", - "167" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, entrypoint)", - "168" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, gateway)", - "169" : "Node 7 has Property (Stereotype, internal)", - "170" : "Node 7 has Property (Stereotype, gateway)", - "171" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, authenticated_request)", - "172" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, transform_identity_representation)", - "173" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, token_validation)", - "174" : "Node 7 has Property (Stereotype, authorization_server)", - "175" : "Node 7 has Property (Stereotype, login_attempts_regulation)", - "176" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, encrypted_connection)", - "177" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, internal)", - "178" : "Node 7 has Property (Stereotype, local_logging)", - "179" : "Node 7 has Property (Stereotype, log_sanitization)", - "180" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, entrypoint)", - "181" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, gateway)", - "182" : "Node 8 has Property (Stereotype, internal)", - "183" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, entrypoint)", - "184" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, gateway)", - "185" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, entrypoint)", - "186" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, gateway)", - "187" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, entrypoint)", - "188" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, gateway)", - "189" : "Node 8 has Property (Stereotype, gateway)", - "190" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, authenticated_request)", - "191" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, authenticated_request)", - "192" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, authenticated_request)", - "193" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, authenticated_request)", - "194" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, transform_identity_representation)", - "195" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, transform_identity_representation)", - "196" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, transform_identity_representation)", - "197" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, transform_identity_representation)", - "198" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, token_validation)", - "199" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, token_validation)", - "200" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, token_validation)", - "201" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, token_validation)", - "202" : "Node 8 has Property (Stereotype, authorization_server)", - "203" : "Node 8 has Property (Stereotype, login_attempts_regulation)", - "204" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, encrypted_connection)", - "205" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, encrypted_connection)", - "206" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, encrypted_connection)", - "207" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, encrypted_connection)", - "208" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, internal)", - "209" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, internal)", - "210" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, internal)", - "211" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, internal)", - "212" : "Node 8 has Property (Stereotype, local_logging)", - "213" : "Node 8 has Property (Stereotype, log_sanitization)", - "214" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, entrypoint)", - "215" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, gateway)", - "216" : "Node 9 has Property (Stereotype, internal)", - "217" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, entrypoint)", - "218" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, gateway)", - "219" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, entrypoint)", - "220" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, gateway)", - "221" : "Node 9 has Property (Stereotype, gateway)", - "222" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, authenticated_request)", - "223" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, authenticated_request)", - "224" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, authenticated_request)", - "225" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, transform_identity_representation)", - "226" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, transform_identity_representation)", - "227" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, transform_identity_representation)", - "228" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, token_validation)", - "229" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, token_validation)", - "230" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, token_validation)", - "231" : "Node 9 has Property (Stereotype, authorization_server)", - "232" : "Node 9 has Property (Stereotype, login_attempts_regulation)", - "233" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, encrypted_connection)", - "234" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, encrypted_connection)", - "235" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, encrypted_connection)", - "236" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, internal)", - "237" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, internal)", - "238" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, internal)", - "239" : "Node 9 has Property (Stereotype, local_logging)", - "240" : "Node 9 has Property (Stereotype, log_sanitization)", - "241" : "Node 10 has Property (Endpoints, user)", - "242" : "Node 10 has Property (Endpoints, useruserId)", - "243" : "Node 10 has Property (Port, 8001)", - "244" : "Node 10 has Property (Stereotype, token_validation)", - "245" : "OutgoingData at Pin 120 has Label (CircuitBreaker, Hystrix)", - "246" : "OutgoingData at Pin 120 has Label (LoadBalancer, Ribbon)", - "247" : "OutgoingData at Pin 120 has Label (Password, root)", - "248" : "OutgoingData at Pin 120 has Label (Stereotype, circuit_breaker)", - "249" : "OutgoingData at Pin 120 has Label (Stereotype, circuit_breaker_link)", - "250" : "OutgoingData at Pin 120 has Label (Stereotype, configuration_server)", - "251" : "OutgoingData at Pin 120 has Label (Stereotype, entrypoint)", - "252" : "OutgoingData at Pin 120 has Label (Stereotype, exitpoint)", - "253" : "OutgoingData at Pin 120 has Label (Stereotype, external_database)", - "254" : "OutgoingData at Pin 120 has Label (Stereotype, feign_connection)", - "255" : "OutgoingData at Pin 120 has Label (Stereotype, github_repository)", - "256" : "OutgoingData at Pin 120 has Label (Stereotype, infrastructural)", - "257" : "OutgoingData at Pin 120 has Label (Stereotype, internal)", - "258" : "OutgoingData at Pin 120 has Label (Stereotype, jdbc)", - "259" : "OutgoingData at Pin 120 has Label (Stereotype, load_balanced_link)", - "260" : "OutgoingData at Pin 120 has Label (Stereotype, load_balancer)", - "261" : "OutgoingData at Pin 120 has Label (Stereotype, monitoring_dashboard)", - "262" : "OutgoingData at Pin 120 has Label (Stereotype, plaintext_credentials)", - "263" : "OutgoingData at Pin 120 has Label (Stereotype, plaintext_credentials_link)", - "264" : "OutgoingData at Pin 120 has Label (Stereotype, restful_http)", - "265" : "OutgoingData at Pin 120 has Label (Stereotype, token_validation)", - "266" : "OutgoingData at Pin 120 has Label (Stereotype, user_stereotype)", - "267" : "OutgoingData at Pin 120 has Label (Username, root)", - "268" : "OutgoingData at Pin 161 has Label (CircuitBreaker, Hystrix)", - "269" : "OutgoingData at Pin 161 has Label (LoadBalancer, Ribbon)", - "270" : "OutgoingData at Pin 161 has Label (Password, root)", - "271" : "OutgoingData at Pin 161 has Label (Stereotype, circuit_breaker)", - "272" : "OutgoingData at Pin 161 has Label (Stereotype, circuit_breaker_link)", - "273" : "OutgoingData at Pin 161 has Label (Stereotype, configuration_server)", - "274" : "OutgoingData at Pin 161 has Label (Stereotype, entrypoint)", - "275" : "OutgoingData at Pin 161 has Label (Stereotype, exitpoint)", - "276" : "OutgoingData at Pin 161 has Label (Stereotype, external_database)", - "277" : "OutgoingData at Pin 161 has Label (Stereotype, feign_connection)", - "278" : "OutgoingData at Pin 161 has Label (Stereotype, github_repository)", - "279" : "OutgoingData at Pin 161 has Label (Stereotype, infrastructural)", - "280" : "OutgoingData at Pin 161 has Label (Stereotype, internal)", - "281" : "OutgoingData at Pin 161 has Label (Stereotype, jdbc)", - "282" : "OutgoingData at Pin 161 has Label (Stereotype, load_balanced_link)", - "283" : "OutgoingData at Pin 161 has Label (Stereotype, load_balancer)", - "284" : "OutgoingData at Pin 161 has Label (Stereotype, monitoring_dashboard)", - "285" : "OutgoingData at Pin 161 has Label (Stereotype, plaintext_credentials)", - "286" : "OutgoingData at Pin 161 has Label (Stereotype, plaintext_credentials_link)", - "287" : "OutgoingData at Pin 161 has Label (Stereotype, restful_http)", - "288" : "OutgoingData at Pin 161 has Label (Stereotype, token_validation)", - "289" : "OutgoingData at Pin 161 has Label (Stereotype, user_stereotype)", - "290" : "OutgoingData at Pin 161 has Label (Username, root)", - "291" : "Node 11 has Property (Endpoints, recommendation)", - "292" : "Node 11 has Property (Endpoints, recommendationdummyData)", - "293" : "Node 11 has Property (Endpoints, recommendationmovie)", - "294" : "Node 11 has Property (Endpoints, recommendationmoviemovieId)", - "295" : "Node 11 has Property (Endpoints, recommendationrecommenduseruserId)", - "296" : "Node 11 has Property (Endpoints, recommendationuser)", - "297" : "Node 11 has Property (Endpoints, recommendationuseruserId)", - "298" : "Node 11 has Property (Port, 8003)", - "299" : "Node 11 has Property (Stereotype, token_validation)", - "300" : "OutgoingData at Pin 128 has Label (CircuitBreaker, Hystrix)", - "301" : "OutgoingData at Pin 128 has Label (LoadBalancer, Ribbon)", - "302" : "OutgoingData at Pin 128 has Label (Password, root)", - "303" : "OutgoingData at Pin 128 has Label (Stereotype, circuit_breaker)", - "304" : "OutgoingData at Pin 128 has Label (Stereotype, circuit_breaker_link)", - "305" : "OutgoingData at Pin 128 has Label (Stereotype, configuration_server)", - "306" : "OutgoingData at Pin 128 has Label (Stereotype, entrypoint)", - "307" : "OutgoingData at Pin 128 has Label (Stereotype, exitpoint)", - "308" : "OutgoingData at Pin 128 has Label (Stereotype, external_database)", - "309" : "OutgoingData at Pin 128 has Label (Stereotype, feign_connection)", - "310" : "OutgoingData at Pin 128 has Label (Stereotype, github_repository)", - "311" : "OutgoingData at Pin 128 has Label (Stereotype, infrastructural)", - "312" : "OutgoingData at Pin 128 has Label (Stereotype, internal)", - "313" : "OutgoingData at Pin 128 has Label (Stereotype, jdbc)", - "314" : "OutgoingData at Pin 128 has Label (Stereotype, load_balanced_link)", - "315" : "OutgoingData at Pin 128 has Label (Stereotype, load_balancer)", - "316" : "OutgoingData at Pin 128 has Label (Stereotype, monitoring_dashboard)", - "317" : "OutgoingData at Pin 128 has Label (Stereotype, plaintext_credentials)", - "318" : "OutgoingData at Pin 128 has Label (Stereotype, plaintext_credentials_link)", - "319" : "OutgoingData at Pin 128 has Label (Stereotype, restful_http)", - "320" : "OutgoingData at Pin 128 has Label (Stereotype, token_validation)", - "321" : "OutgoingData at Pin 128 has Label (Stereotype, user_stereotype)", - "322" : "OutgoingData at Pin 128 has Label (Username, neo4j)", - "323" : "OutgoingData at Pin 163 has Label (CircuitBreaker, Hystrix)", - "324" : "OutgoingData at Pin 163 has Label (LoadBalancer, Ribbon)", - "325" : "OutgoingData at Pin 163 has Label (Password, root)", - "326" : "OutgoingData at Pin 163 has Label (Stereotype, circuit_breaker)", - "327" : "OutgoingData at Pin 163 has Label (Stereotype, circuit_breaker_link)", - "328" : "OutgoingData at Pin 163 has Label (Stereotype, configuration_server)", - "329" : "OutgoingData at Pin 163 has Label (Stereotype, entrypoint)", - "330" : "OutgoingData at Pin 163 has Label (Stereotype, exitpoint)", - "331" : "OutgoingData at Pin 163 has Label (Stereotype, external_database)", - "332" : "OutgoingData at Pin 163 has Label (Stereotype, feign_connection)", - "333" : "OutgoingData at Pin 163 has Label (Stereotype, github_repository)", - "334" : "OutgoingData at Pin 163 has Label (Stereotype, infrastructural)", - "335" : "OutgoingData at Pin 163 has Label (Stereotype, internal)", - "336" : "OutgoingData at Pin 163 has Label (Stereotype, jdbc)", - "337" : "OutgoingData at Pin 163 has Label (Stereotype, load_balanced_link)", - "338" : "OutgoingData at Pin 163 has Label (Stereotype, load_balancer)", - "339" : "OutgoingData at Pin 163 has Label (Stereotype, monitoring_dashboard)", - "340" : "OutgoingData at Pin 163 has Label (Stereotype, plaintext_credentials)", - "341" : "OutgoingData at Pin 163 has Label (Stereotype, plaintext_credentials_link)", - "342" : "OutgoingData at Pin 163 has Label (Stereotype, restful_http)", - "343" : "OutgoingData at Pin 163 has Label (Stereotype, token_validation)", - "344" : "OutgoingData at Pin 163 has Label (Stereotype, user_stereotype)", - "345" : "OutgoingData at Pin 163 has Label (Username, neo4j)", - "346" : "Node 12 has Property (CircuitBreaker, Hystrix)", - "347" : "Node 12 has Property (Endpoints, api)", - "348" : "Node 12 has Property (Endpoints, apirecommendationuseruserId)", - "349" : "Node 12 has Property (Endpoints, apiuserDetailsuserId)", - "350" : "Node 12 has Property (Endpoints, movie)", - "351" : "Node 12 has Property (Endpoints, moviedummyData)", - "352" : "Node 12 has Property (Endpoints, newuser)", - "353" : "Node 12 has Property (Endpoints, recommendationdummyData)", - "354" : "Node 12 has Property (Endpoints, user)", - "355" : "Node 12 has Property (Endpoints, useruserId)", - "356" : "Node 12 has Property (Gateway, Zuul)", - "357" : "Node 12 has Property (LoadBalancer, Ribbon)", - "358" : "Node 12 has Property (MonitoringDashboard, Hystrix)", - "359" : "Node 12 has Property (Port, 9000)", - "360" : "Node 12 has Property (Stereotype, circuit_breaker)", - "361" : "Node 12 has Property (Stereotype, infrastructural)", - "362" : "Node 12 has Property (Stereotype, load_balancer)", - "363" : "Node 12 has Property (Stereotype, monitoring_dashboard)", - "364" : "Node 12 has Property (Stereotype, token_validation)", - "365" : "OutgoingData at Pin 141 has Label (Stereotype, circuit_breaker)", - "366" : "OutgoingData at Pin 141 has Label (Stereotype, configuration_server)", - "367" : "OutgoingData at Pin 141 has Label (Stereotype, entrypoint)", - "368" : "OutgoingData at Pin 141 has Label (Stereotype, gateway)", - "369" : "OutgoingData at Pin 141 has Label (Stereotype, github_repository)", - "370" : "OutgoingData at Pin 141 has Label (Stereotype, infrastructural)", - "371" : "OutgoingData at Pin 141 has Label (Stereotype, load_balancer)", - "372" : "OutgoingData at Pin 141 has Label (Stereotype, local_logging)", - "373" : "OutgoingData at Pin 141 has Label (Stereotype, monitoring_dashboard)", - "374" : "OutgoingData at Pin 141 has Label (Stereotype, restful_http)", - "375" : "OutgoingData at Pin 141 has Label (Stereotype, token_validation)", - "376" : "OutgoingData at Pin 145 has Label (CircuitBreaker, Hystrix)", - "377" : "OutgoingData at Pin 145 has Label (LoadBalancer, Ribbon)", - "378" : "OutgoingData at Pin 145 has Label (Stereotype, circuit_breaker)", - "379" : "OutgoingData at Pin 145 has Label (Stereotype, circuit_breaker_link)", - "380" : "OutgoingData at Pin 145 has Label (Stereotype, configuration_server)", - "381" : "OutgoingData at Pin 145 has Label (Stereotype, entrypoint)", - "382" : "OutgoingData at Pin 145 has Label (Stereotype, exitpoint)", - "383" : "OutgoingData at Pin 145 has Label (Stereotype, feign_connection)", - "384" : "OutgoingData at Pin 145 has Label (Stereotype, gateway)", - "385" : "OutgoingData at Pin 145 has Label (Stereotype, github_repository)", - "386" : "OutgoingData at Pin 145 has Label (Stereotype, infrastructural)", - "387" : "OutgoingData at Pin 145 has Label (Stereotype, load_balanced_link)", - "388" : "OutgoingData at Pin 145 has Label (Stereotype, load_balancer)", - "389" : "OutgoingData at Pin 145 has Label (Stereotype, local_logging)", - "390" : "OutgoingData at Pin 145 has Label (Stereotype, monitoring_dashboard)", - "391" : "OutgoingData at Pin 145 has Label (Stereotype, restful_http)", - "392" : "OutgoingData at Pin 145 has Label (Stereotype, token_validation)", - "393" : "OutgoingData at Pin 145 has Label (Stereotype, user_stereotype)", - "394" : "OutgoingData at Pin 150 has Label (CircuitBreaker, Hystrix)", - "395" : "OutgoingData at Pin 150 has Label (LoadBalancer, Ribbon)", - "396" : "OutgoingData at Pin 150 has Label (Password, root)", - "397" : "OutgoingData at Pin 150 has Label (Stereotype, circuit_breaker)", - "398" : "OutgoingData at Pin 150 has Label (Stereotype, circuit_breaker_link)", - "399" : "OutgoingData at Pin 150 has Label (Stereotype, configuration_server)", - "400" : "OutgoingData at Pin 150 has Label (Stereotype, entrypoint)", - "401" : "OutgoingData at Pin 150 has Label (Stereotype, exitpoint)", - "402" : "OutgoingData at Pin 150 has Label (Stereotype, external_database)", - "403" : "OutgoingData at Pin 150 has Label (Stereotype, feign_connection)", - "404" : "OutgoingData at Pin 150 has Label (Stereotype, gateway)", - "405" : "OutgoingData at Pin 150 has Label (Stereotype, github_repository)", - "406" : "OutgoingData at Pin 150 has Label (Stereotype, infrastructural)", - "407" : "OutgoingData at Pin 150 has Label (Stereotype, internal)", - "408" : "OutgoingData at Pin 150 has Label (Stereotype, jdbc)", - "409" : "OutgoingData at Pin 150 has Label (Stereotype, load_balanced_link)", - "410" : "OutgoingData at Pin 150 has Label (Stereotype, load_balancer)", - "411" : "OutgoingData at Pin 150 has Label (Stereotype, local_logging)", - "412" : "OutgoingData at Pin 150 has Label (Stereotype, monitoring_dashboard)", - "413" : "OutgoingData at Pin 150 has Label (Stereotype, plaintext_credentials)", - "414" : "OutgoingData at Pin 150 has Label (Stereotype, plaintext_credentials_link)", - "415" : "OutgoingData at Pin 150 has Label (Stereotype, restful_http)", - "416" : "OutgoingData at Pin 150 has Label (Stereotype, service_discovery)", - "417" : "OutgoingData at Pin 150 has Label (Stereotype, token_validation)", - "418" : "OutgoingData at Pin 150 has Label (Stereotype, user_stereotype)", - "419" : "OutgoingData at Pin 150 has Label (Username, neo4j)", - "420" : "OutgoingData at Pin 150 has Label (Username, root)", - "421" : "OutgoingData at Pin 152 has Label (CircuitBreaker, Hystrix)", - "422" : "OutgoingData at Pin 152 has Label (LoadBalancer, Ribbon)", - "423" : "OutgoingData at Pin 152 has Label (Stereotype, circuit_breaker)", - "424" : "OutgoingData at Pin 152 has Label (Stereotype, circuit_breaker_link)", - "425" : "OutgoingData at Pin 152 has Label (Stereotype, configuration_server)", - "426" : "OutgoingData at Pin 152 has Label (Stereotype, entrypoint)", - "427" : "OutgoingData at Pin 152 has Label (Stereotype, exitpoint)", - "428" : "OutgoingData at Pin 152 has Label (Stereotype, feign_connection)", - "429" : "OutgoingData at Pin 152 has Label (Stereotype, gateway)", - "430" : "OutgoingData at Pin 152 has Label (Stereotype, github_repository)", - "431" : "OutgoingData at Pin 152 has Label (Stereotype, infrastructural)", - "432" : "OutgoingData at Pin 152 has Label (Stereotype, load_balanced_link)", - "433" : "OutgoingData at Pin 152 has Label (Stereotype, load_balancer)", - "434" : "OutgoingData at Pin 152 has Label (Stereotype, local_logging)", - "435" : "OutgoingData at Pin 152 has Label (Stereotype, monitoring_dashboard)", - "436" : "OutgoingData at Pin 152 has Label (Stereotype, restful_http)", - "437" : "OutgoingData at Pin 152 has Label (Stereotype, token_validation)", - "438" : "OutgoingData at Pin 152 has Label (Stereotype, user_stereotype)", - "439" : "OutgoingData at Pin 165 has Label (Stereotype, circuit_breaker)", - "440" : "OutgoingData at Pin 165 has Label (Stereotype, configuration_server)", - "441" : "OutgoingData at Pin 165 has Label (Stereotype, entrypoint)", - "442" : "OutgoingData at Pin 165 has Label (Stereotype, exitpoint)", - "443" : "OutgoingData at Pin 165 has Label (Stereotype, gateway)", - "444" : "OutgoingData at Pin 165 has Label (Stereotype, github_repository)", - "445" : "OutgoingData at Pin 165 has Label (Stereotype, infrastructural)", - "446" : "OutgoingData at Pin 165 has Label (Stereotype, load_balancer)", - "447" : "OutgoingData at Pin 165 has Label (Stereotype, local_logging)", - "448" : "OutgoingData at Pin 165 has Label (Stereotype, monitoring_dashboard)", - "449" : "OutgoingData at Pin 165 has Label (Stereotype, restful_http)", - "450" : "OutgoingData at Pin 165 has Label (Stereotype, service_discovery)", - "451" : "OutgoingData at Pin 165 has Label (Stereotype, token_validation)", - "452" : "OutgoingData at Pin 165 has Label (Stereotype, user_stereotype)", - "453" : "Node 13 has Property (Stereotype, infrastructural)", - "454" : "Node 2 has Property (Stereotype, entrypoint)", - "455" : "Node 2 has Property (Stereotype, github_repository)", - "456" : "Node 2 has Property (URL, httpsgithubcommdeketspringcloudexampleconfigrepogit)", - "457" : "OutgoingData at Pin 106 has Label (Stereotype, entrypoint)", - "458" : "OutgoingData at Pin 106 has Label (Stereotype, github_repository)", - "459" : "OutgoingData at Pin 106 has Label (Stereotype, restful_http)", - "460" : "Node 3 has Property (Stereotype, entrypoint)", - "461" : "Node 3 has Property (Stereotype, exitpoint)", - "462" : "Node 3 has Property (Stereotype, external_database)", - "463" : "OutgoingData at Pin 117 has Label (Stereotype, entrypoint)", - "464" : "OutgoingData at Pin 117 has Label (Stereotype, exitpoint)", - "465" : "OutgoingData at Pin 117 has Label (Stereotype, external_database)", - "466" : "OutgoingData at Pin 117 has Label (Stereotype, jdbc)", - "467" : "Node 4 has Property (Database, MySQL)", - "468" : "Node 4 has Property (Password, root)", - "469" : "Node 4 has Property (Port, 3306)", - "470" : "Node 4 has Property (Stereotype, entrypoint)", - "471" : "Node 4 has Property (Stereotype, exitpoint)", - "472" : "Node 4 has Property (Stereotype, external_database)", - "473" : "Node 4 has Property (Stereotype, plaintext_credentials)", - "474" : "Node 4 has Property (Username, root)", - "475" : "OutgoingData at Pin 125 has Label (Password, root)", - "476" : "OutgoingData at Pin 125 has Label (Stereotype, entrypoint)", - "477" : "OutgoingData at Pin 125 has Label (Stereotype, exitpoint)", - "478" : "OutgoingData at Pin 125 has Label (Stereotype, external_database)", - "479" : "OutgoingData at Pin 125 has Label (Stereotype, jdbc)", - "480" : "OutgoingData at Pin 125 has Label (Stereotype, plaintext_credentials)", - "481" : "OutgoingData at Pin 125 has Label (Stereotype, plaintext_credentials_link)", - "482" : "OutgoingData at Pin 125 has Label (Username, root)", - "483" : "Node 5 has Property (Database, Neo4j)", - "484" : "Node 5 has Property (Password, root)", - "485" : "Node 5 has Property (Port, 7474)", - "486" : "Node 5 has Property (Stereotype, entrypoint)", - "487" : "Node 5 has Property (Stereotype, exitpoint)", - "488" : "Node 5 has Property (Stereotype, external_database)", - "489" : "Node 5 has Property (Stereotype, plaintext_credentials)", - "490" : "Node 5 has Property (Username, neo4j)", - "491" : "OutgoingData at Pin 133 has Label (Password, root)", - "492" : "OutgoingData at Pin 133 has Label (Stereotype, entrypoint)", - "493" : "OutgoingData at Pin 133 has Label (Stereotype, exitpoint)", - "494" : "OutgoingData at Pin 133 has Label (Stereotype, external_database)", - "495" : "OutgoingData at Pin 133 has Label (Stereotype, jdbc)", - "496" : "OutgoingData at Pin 133 has Label (Stereotype, plaintext_credentials)", - "497" : "OutgoingData at Pin 133 has Label (Stereotype, plaintext_credentials_link)", - "498" : "OutgoingData at Pin 133 has Label (Username, neo4j)", - "499" : "Node 6 has Property (Stereotype, entrypoint)", - "500" : "Node 6 has Property (Stereotype, exitpoint)", - "501" : "Node 6 has Property (Stereotype, user_stereotype)", - "502" : "OutgoingData at Pin 138 has Label (Stereotype, circuit_breaker)", - "503" : "OutgoingData at Pin 138 has Label (Stereotype, configuration_server)", - "504" : "OutgoingData at Pin 138 has Label (Stereotype, entrypoint)", - "505" : "OutgoingData at Pin 138 has Label (Stereotype, exitpoint)", - "506" : "OutgoingData at Pin 138 has Label (Stereotype, gateway)", - "507" : "OutgoingData at Pin 138 has Label (Stereotype, github_repository)", - "508" : "OutgoingData at Pin 138 has Label (Stereotype, infrastructural)", - "509" : "OutgoingData at Pin 138 has Label (Stereotype, load_balancer)", - "510" : "OutgoingData at Pin 138 has Label (Stereotype, local_logging)", - "511" : "OutgoingData at Pin 138 has Label (Stereotype, monitoring_dashboard)", - "512" : "OutgoingData at Pin 138 has Label (Stereotype, restful_http)", - "513" : "OutgoingData at Pin 138 has Label (Stereotype, token_validation)", - "514" : "OutgoingData at Pin 138 has Label (Stereotype, user_stereotype)", - "515" : "Node 7 has Property (ConfigurationServer, SpringCloudConfig)", - "516" : "Node 7 has Property (Port, 8888)", - "517" : "Node 7 has Property (Stereotype, configuration_server)", - "518" : "Node 7 has Property (Stereotype, infrastructural)", - "519" : "Node 7 has Property (Stereotype, token_validation)", - "520" : "OutgoingData at Pin 110 has Label (Stereotype, configuration_server)", - "521" : "OutgoingData at Pin 110 has Label (Stereotype, entrypoint)", - "522" : "OutgoingData at Pin 110 has Label (Stereotype, github_repository)", - "523" : "OutgoingData at Pin 110 has Label (Stereotype, infrastructural)", - "524" : "OutgoingData at Pin 110 has Label (Stereotype, restful_http)", - "525" : "OutgoingData at Pin 110 has Label (Stereotype, token_validation)", - "526" : "OutgoingData at Pin 115 has Label (Stereotype, configuration_server)", - "527" : "OutgoingData at Pin 115 has Label (Stereotype, entrypoint)", - "528" : "OutgoingData at Pin 115 has Label (Stereotype, github_repository)", - "529" : "OutgoingData at Pin 115 has Label (Stereotype, infrastructural)", - "530" : "OutgoingData at Pin 115 has Label (Stereotype, restful_http)", - "531" : "OutgoingData at Pin 115 has Label (Stereotype, token_validation)", - "532" : "OutgoingData at Pin 123 has Label (Stereotype, configuration_server)", - "533" : "OutgoingData at Pin 123 has Label (Stereotype, entrypoint)", - "534" : "OutgoingData at Pin 123 has Label (Stereotype, github_repository)", - "535" : "OutgoingData at Pin 123 has Label (Stereotype, infrastructural)", - "536" : "OutgoingData at Pin 123 has Label (Stereotype, restful_http)", - "537" : "OutgoingData at Pin 123 has Label (Stereotype, token_validation)", - "538" : "OutgoingData at Pin 131 has Label (Stereotype, configuration_server)", - "539" : "OutgoingData at Pin 131 has Label (Stereotype, entrypoint)", - "540" : "OutgoingData at Pin 131 has Label (Stereotype, github_repository)", - "541" : "OutgoingData at Pin 131 has Label (Stereotype, infrastructural)", - "542" : "OutgoingData at Pin 131 has Label (Stereotype, restful_http)", - "543" : "OutgoingData at Pin 131 has Label (Stereotype, token_validation)", - "544" : "OutgoingData at Pin 143 has Label (Stereotype, configuration_server)", - "545" : "OutgoingData at Pin 143 has Label (Stereotype, entrypoint)", - "546" : "OutgoingData at Pin 143 has Label (Stereotype, github_repository)", - "547" : "OutgoingData at Pin 143 has Label (Stereotype, infrastructural)", - "548" : "OutgoingData at Pin 143 has Label (Stereotype, restful_http)", - "549" : "OutgoingData at Pin 143 has Label (Stereotype, token_validation)", - "550" : "OutgoingData at Pin 155 has Label (Stereotype, configuration_server)", - "551" : "OutgoingData at Pin 155 has Label (Stereotype, entrypoint)", - "552" : "OutgoingData at Pin 155 has Label (Stereotype, github_repository)", - "553" : "OutgoingData at Pin 155 has Label (Stereotype, infrastructural)", - "554" : "OutgoingData at Pin 155 has Label (Stereotype, restful_http)", - "555" : "OutgoingData at Pin 155 has Label (Stereotype, token_validation)", - "556" : "Node 8 has Property (Port, 8761)", - "557" : "Node 8 has Property (ServiceDiscovery, Eureka)", - "558" : "Node 8 has Property (Stereotype, infrastructural)", - "559" : "Node 8 has Property (Stereotype, service_discovery)", - "560" : "Node 8 has Property (Stereotype, token_validation)", - "561" : "OutgoingData at Pin 136 has Label (CircuitBreaker, Hystrix)", - "562" : "OutgoingData at Pin 136 has Label (LoadBalancer, Ribbon)", - "563" : "OutgoingData at Pin 136 has Label (Password, root)", - "564" : "OutgoingData at Pin 136 has Label (Stereotype, circuit_breaker)", - "565" : "OutgoingData at Pin 136 has Label (Stereotype, circuit_breaker_link)", - "566" : "OutgoingData at Pin 136 has Label (Stereotype, configuration_server)", - "567" : "OutgoingData at Pin 136 has Label (Stereotype, entrypoint)", - "568" : "OutgoingData at Pin 136 has Label (Stereotype, exitpoint)", - "569" : "OutgoingData at Pin 136 has Label (Stereotype, external_database)", - "570" : "OutgoingData at Pin 136 has Label (Stereotype, feign_connection)", - "571" : "OutgoingData at Pin 136 has Label (Stereotype, github_repository)", - "572" : "OutgoingData at Pin 136 has Label (Stereotype, infrastructural)", - "573" : "OutgoingData at Pin 136 has Label (Stereotype, internal)", - "574" : "OutgoingData at Pin 136 has Label (Stereotype, jdbc)", - "575" : "OutgoingData at Pin 136 has Label (Stereotype, load_balanced_link)", - "576" : "OutgoingData at Pin 136 has Label (Stereotype, load_balancer)", - "577" : "OutgoingData at Pin 136 has Label (Stereotype, monitoring_dashboard)", - "578" : "OutgoingData at Pin 136 has Label (Stereotype, plaintext_credentials)", - "579" : "OutgoingData at Pin 136 has Label (Stereotype, plaintext_credentials_link)", - "580" : "OutgoingData at Pin 136 has Label (Stereotype, restful_http)", - "581" : "OutgoingData at Pin 136 has Label (Stereotype, service_discovery)", - "582" : "OutgoingData at Pin 136 has Label (Stereotype, token_validation)", - "583" : "OutgoingData at Pin 136 has Label (Stereotype, user_stereotype)", - "584" : "OutgoingData at Pin 136 has Label (Username, neo4j)", - "585" : "OutgoingData at Pin 136 has Label (Username, root)", - "586" : "OutgoingData at Pin 157 has Label (CircuitBreaker, Hystrix)", - "587" : "OutgoingData at Pin 157 has Label (LoadBalancer, Ribbon)", - "588" : "OutgoingData at Pin 157 has Label (Password, root)", - "589" : "OutgoingData at Pin 157 has Label (Stereotype, circuit_breaker)", - "590" : "OutgoingData at Pin 157 has Label (Stereotype, circuit_breaker_link)", - "591" : "OutgoingData at Pin 157 has Label (Stereotype, configuration_server)", - "592" : "OutgoingData at Pin 157 has Label (Stereotype, entrypoint)", - "593" : "OutgoingData at Pin 157 has Label (Stereotype, exitpoint)", - "594" : "OutgoingData at Pin 157 has Label (Stereotype, external_database)", - "595" : "OutgoingData at Pin 157 has Label (Stereotype, feign_connection)", - "596" : "OutgoingData at Pin 157 has Label (Stereotype, github_repository)", - "597" : "OutgoingData at Pin 157 has Label (Stereotype, infrastructural)", - "598" : "OutgoingData at Pin 157 has Label (Stereotype, internal)", - "599" : "OutgoingData at Pin 157 has Label (Stereotype, jdbc)", - "600" : "OutgoingData at Pin 157 has Label (Stereotype, load_balanced_link)", - "601" : "OutgoingData at Pin 157 has Label (Stereotype, load_balancer)", - "602" : "OutgoingData at Pin 157 has Label (Stereotype, monitoring_dashboard)", - "603" : "OutgoingData at Pin 157 has Label (Stereotype, plaintext_credentials)", - "604" : "OutgoingData at Pin 157 has Label (Stereotype, plaintext_credentials_link)", - "605" : "OutgoingData at Pin 157 has Label (Stereotype, restful_http)", - "606" : "OutgoingData at Pin 157 has Label (Stereotype, service_discovery)", - "607" : "OutgoingData at Pin 157 has Label (Stereotype, token_validation)", - "608" : "OutgoingData at Pin 157 has Label (Stereotype, user_stereotype)", - "609" : "OutgoingData at Pin 157 has Label (Username, neo4j)", - "610" : "OutgoingData at Pin 157 has Label (Username, root)", - "611" : "Node 9 has Property (Endpoints, movie)", - "612" : "Node 9 has Property (Endpoints, moviedummyData)", - "613" : "Node 9 has Property (Endpoints, movielist)", - "614" : "Node 9 has Property (Endpoints, moviemovieId)", - "615" : "Node 9 has Property (Port, 8002)", - "616" : "Node 9 has Property (Stereotype, token_validation)", - "617" : "OutgoingData at Pin 112 has Label (CircuitBreaker, Hystrix)", - "618" : "OutgoingData at Pin 112 has Label (LoadBalancer, Ribbon)", - "619" : "OutgoingData at Pin 112 has Label (Password, root)", - "620" : "OutgoingData at Pin 112 has Label (Stereotype, circuit_breaker)", - "621" : "OutgoingData at Pin 112 has Label (Stereotype, circuit_breaker_link)", - "622" : "OutgoingData at Pin 112 has Label (Stereotype, configuration_server)", - "623" : "OutgoingData at Pin 112 has Label (Stereotype, entrypoint)", - "624" : "OutgoingData at Pin 112 has Label (Stereotype, exitpoint)", - "625" : "OutgoingData at Pin 112 has Label (Stereotype, external_database)", - "626" : "OutgoingData at Pin 112 has Label (Stereotype, feign_connection)", - "627" : "OutgoingData at Pin 112 has Label (Stereotype, github_repository)", - "628" : "OutgoingData at Pin 112 has Label (Stereotype, infrastructural)", - "629" : "OutgoingData at Pin 112 has Label (Stereotype, internal)", - "630" : "OutgoingData at Pin 112 has Label (Stereotype, jdbc)", - "631" : "OutgoingData at Pin 112 has Label (Stereotype, load_balanced_link)", - "632" : "OutgoingData at Pin 112 has Label (Stereotype, load_balancer)", - "633" : "OutgoingData at Pin 112 has Label (Stereotype, monitoring_dashboard)", - "634" : "OutgoingData at Pin 112 has Label (Stereotype, plaintext_credentials)", - "635" : "OutgoingData at Pin 112 has Label (Stereotype, plaintext_credentials_link)", - "636" : "OutgoingData at Pin 112 has Label (Stereotype, restful_http)", - "637" : "OutgoingData at Pin 112 has Label (Stereotype, service_discovery)", - "638" : "OutgoingData at Pin 112 has Label (Stereotype, token_validation)", - "639" : "OutgoingData at Pin 112 has Label (Stereotype, user_stereotype)", - "640" : "OutgoingData at Pin 112 has Label (Username, neo4j)", - "641" : "OutgoingData at Pin 112 has Label (Username, root)", - "642" : "OutgoingData at Pin 159 has Label (CircuitBreaker, Hystrix)", - "643" : "OutgoingData at Pin 159 has Label (LoadBalancer, Ribbon)", - "644" : "OutgoingData at Pin 159 has Label (Stereotype, circuit_breaker)", - "645" : "OutgoingData at Pin 159 has Label (Stereotype, circuit_breaker_link)", - "646" : "OutgoingData at Pin 159 has Label (Stereotype, configuration_server)", - "647" : "OutgoingData at Pin 159 has Label (Stereotype, entrypoint)", - "648" : "OutgoingData at Pin 159 has Label (Stereotype, exitpoint)", - "649" : "OutgoingData at Pin 159 has Label (Stereotype, external_database)", - "650" : "OutgoingData at Pin 159 has Label (Stereotype, feign_connection)", - "651" : "OutgoingData at Pin 159 has Label (Stereotype, github_repository)", - "652" : "OutgoingData at Pin 159 has Label (Stereotype, infrastructural)", - "653" : "OutgoingData at Pin 159 has Label (Stereotype, internal)", - "654" : "OutgoingData at Pin 159 has Label (Stereotype, jdbc)", - "655" : "OutgoingData at Pin 159 has Label (Stereotype, load_balanced_link)", - "656" : "OutgoingData at Pin 159 has Label (Stereotype, load_balancer)", - "657" : "OutgoingData at Pin 159 has Label (Stereotype, monitoring_dashboard)", - "658" : "OutgoingData at Pin 159 has Label (Stereotype, restful_http)", - "659" : "OutgoingData at Pin 159 has Label (Stereotype, service_discovery)", - "660" : "OutgoingData at Pin 159 has Label (Stereotype, token_validation)", - "661" : "Flow from OutPin: 120 to InPin: 122", - "662" : "Flow from OutPin: 120 to InPin: 130", - "663" : "Flow from OutPin: 120 to InPin: 135", - "664" : "Flow from OutPin: 120 to InPin: 154", - "665" : "Flow from OutPin: 120 to InPin: 140", - "666" : "Flow from OutPin: 120 to InPin: 105", - "667" : "Flow from OutPin: 120 to InPin: 109", - "668" : "Flow from OutPin: 120 to InPin: 114", - "669" : "Flow from OutPin: 161 to InPin: 122", - "670" : "Flow from OutPin: 161 to InPin: 130", - "671" : "Flow from OutPin: 161 to InPin: 135", - "672" : "Flow from OutPin: 161 to InPin: 154", - "673" : "Flow from OutPin: 161 to InPin: 140", - "674" : "Flow from OutPin: 161 to InPin: 105", - "675" : "Flow from OutPin: 161 to InPin: 109", - "676" : "Flow from OutPin: 161 to InPin: 114", - "677" : "Flow from OutPin: 128 to InPin: 122", - "678" : "Flow from OutPin: 128 to InPin: 130", - "679" : "Flow from OutPin: 128 to InPin: 135", - "680" : "Flow from OutPin: 128 to InPin: 154", - "681" : "Flow from OutPin: 128 to InPin: 140", - "682" : "Flow from OutPin: 128 to InPin: 105", - "683" : "Flow from OutPin: 128 to InPin: 109", - "684" : "Flow from OutPin: 128 to InPin: 114", - "685" : "Flow from OutPin: 163 to InPin: 122", - "686" : "Flow from OutPin: 163 to InPin: 130", - "687" : "Flow from OutPin: 163 to InPin: 135", - "688" : "Flow from OutPin: 163 to InPin: 154", - "689" : "Flow from OutPin: 163 to InPin: 140", - "690" : "Flow from OutPin: 163 to InPin: 105", - "691" : "Flow from OutPin: 163 to InPin: 109", - "692" : "Flow from OutPin: 163 to InPin: 114", - "693" : "Flow from OutPin: 141 to InPin: 122", - "694" : "Flow from OutPin: 141 to InPin: 130", - "695" : "Flow from OutPin: 141 to InPin: 135", - "696" : "Flow from OutPin: 141 to InPin: 154", - "697" : "Flow from OutPin: 141 to InPin: 140", - "698" : "Flow from OutPin: 141 to InPin: 105", - "699" : "Flow from OutPin: 141 to InPin: 109", - "700" : "Flow from OutPin: 141 to InPin: 114", - "701" : "Flow from OutPin: 145 to InPin: 122", - "702" : "Flow from OutPin: 145 to InPin: 130", - "703" : "Flow from OutPin: 145 to InPin: 135", - "704" : "Flow from OutPin: 145 to InPin: 154", - "705" : "Flow from OutPin: 145 to InPin: 140", - "706" : "Flow from OutPin: 145 to InPin: 105", - "707" : "Flow from OutPin: 145 to InPin: 109", - "708" : "Flow from OutPin: 145 to InPin: 114", - "709" : "Flow from OutPin: 150 to InPin: 122", - "710" : "Flow from OutPin: 150 to InPin: 130", - "711" : "Flow from OutPin: 150 to InPin: 135", - "712" : "Flow from OutPin: 150 to InPin: 154", - "713" : "Flow from OutPin: 150 to InPin: 140", - "714" : "Flow from OutPin: 150 to InPin: 105", - "715" : "Flow from OutPin: 150 to InPin: 109", - "716" : "Flow from OutPin: 150 to InPin: 114", - "717" : "Flow from OutPin: 152 to InPin: 122", - "718" : "Flow from OutPin: 152 to InPin: 130", - "719" : "Flow from OutPin: 152 to InPin: 135", - "720" : "Flow from OutPin: 152 to InPin: 154", - "721" : "Flow from OutPin: 152 to InPin: 140", - "722" : "Flow from OutPin: 152 to InPin: 105", - "723" : "Flow from OutPin: 152 to InPin: 109", - "724" : "Flow from OutPin: 152 to InPin: 114", - "725" : "Flow from OutPin: 165 to InPin: 122", - "726" : "Flow from OutPin: 165 to InPin: 130", - "727" : "Flow from OutPin: 165 to InPin: 135", - "728" : "Flow from OutPin: 165 to InPin: 154", - "729" : "Flow from OutPin: 165 to InPin: 140", - "730" : "Flow from OutPin: 165 to InPin: 105", - "731" : "Flow from OutPin: 165 to InPin: 109", - "732" : "Flow from OutPin: 165 to InPin: 114", - "733" : "Flow from OutPin: 106 to InPin: 122", - "734" : "Flow from OutPin: 106 to InPin: 130", - "735" : "Flow from OutPin: 106 to InPin: 135", - "736" : "Flow from OutPin: 106 to InPin: 154", - "737" : "Flow from OutPin: 106 to InPin: 140", - "738" : "Flow from OutPin: 106 to InPin: 105", - "739" : "Flow from OutPin: 106 to InPin: 109", - "740" : "Flow from OutPin: 106 to InPin: 114", - "741" : "Flow from OutPin: 117 to InPin: 122", - "742" : "Flow from OutPin: 117 to InPin: 130", - "743" : "Flow from OutPin: 117 to InPin: 135", - "744" : "Flow from OutPin: 117 to InPin: 154", - "745" : "Flow from OutPin: 117 to InPin: 140", - "746" : "Flow from OutPin: 117 to InPin: 105", - "747" : "Flow from OutPin: 117 to InPin: 109", - "748" : "Flow from OutPin: 117 to InPin: 114", - "749" : "Flow from OutPin: 125 to InPin: 122", - "750" : "Flow from OutPin: 125 to InPin: 130", - "751" : "Flow from OutPin: 125 to InPin: 135", - "752" : "Flow from OutPin: 125 to InPin: 154", - "753" : "Flow from OutPin: 125 to InPin: 140", - "754" : "Flow from OutPin: 125 to InPin: 105", - "755" : "Flow from OutPin: 125 to InPin: 109", - "756" : "Flow from OutPin: 125 to InPin: 114", - "757" : "Flow from OutPin: 133 to InPin: 122", - "758" : "Flow from OutPin: 133 to InPin: 130", - "759" : "Flow from OutPin: 133 to InPin: 135", - "760" : "Flow from OutPin: 133 to InPin: 154", - "761" : "Flow from OutPin: 133 to InPin: 140", - "762" : "Flow from OutPin: 133 to InPin: 105", - "763" : "Flow from OutPin: 133 to InPin: 109", - "764" : "Flow from OutPin: 133 to InPin: 114", - "765" : "Flow from OutPin: 138 to InPin: 122", - "766" : "Flow from OutPin: 138 to InPin: 130", - "767" : "Flow from OutPin: 138 to InPin: 135", - "768" : "Flow from OutPin: 138 to InPin: 154", - "769" : "Flow from OutPin: 138 to InPin: 140", - "770" : "Flow from OutPin: 138 to InPin: 105", - "771" : "Flow from OutPin: 138 to InPin: 109", - "772" : "Flow from OutPin: 138 to InPin: 114", - "773" : "Flow from OutPin: 110 to InPin: 122", - "774" : "Flow from OutPin: 110 to InPin: 130", - "775" : "Flow from OutPin: 110 to InPin: 135", - "776" : "Flow from OutPin: 110 to InPin: 154", - "777" : "Flow from OutPin: 110 to InPin: 140", - "778" : "Flow from OutPin: 110 to InPin: 105", - "779" : "Flow from OutPin: 110 to InPin: 109", - "780" : "Flow from OutPin: 110 to InPin: 114", - "781" : "Flow from OutPin: 115 to InPin: 122", - "782" : "Flow from OutPin: 115 to InPin: 130", - "783" : "Flow from OutPin: 115 to InPin: 135", - "784" : "Flow from OutPin: 115 to InPin: 154", - "785" : "Flow from OutPin: 115 to InPin: 140", - "786" : "Flow from OutPin: 115 to InPin: 105", - "787" : "Flow from OutPin: 115 to InPin: 109", - "788" : "Flow from OutPin: 115 to InPin: 114", - "789" : "Flow from OutPin: 123 to InPin: 122", - "790" : "Flow from OutPin: 123 to InPin: 130", - "791" : "Flow from OutPin: 123 to InPin: 135", - "792" : "Flow from OutPin: 123 to InPin: 154", - "793" : "Flow from OutPin: 123 to InPin: 140", - "794" : "Flow from OutPin: 123 to InPin: 105", - "795" : "Flow from OutPin: 123 to InPin: 109", - "796" : "Flow from OutPin: 123 to InPin: 114", - "797" : "Flow from OutPin: 131 to InPin: 122", - "798" : "Flow from OutPin: 131 to InPin: 130", - "799" : "Flow from OutPin: 131 to InPin: 135", - "800" : "Flow from OutPin: 131 to InPin: 154", - "801" : "Flow from OutPin: 131 to InPin: 140", - "802" : "Flow from OutPin: 131 to InPin: 105", - "803" : "Flow from OutPin: 131 to InPin: 109", - "804" : "Flow from OutPin: 131 to InPin: 114", - "805" : "Flow from OutPin: 143 to InPin: 122", - "806" : "Flow from OutPin: 143 to InPin: 130", - "807" : "Flow from OutPin: 143 to InPin: 135", - "808" : "Flow from OutPin: 143 to InPin: 154", - "809" : "Flow from OutPin: 143 to InPin: 140", - "810" : "Flow from OutPin: 143 to InPin: 105", - "811" : "Flow from OutPin: 143 to InPin: 109", - "812" : "Flow from OutPin: 143 to InPin: 114", - "813" : "Flow from OutPin: 155 to InPin: 122", - "814" : "Flow from OutPin: 155 to InPin: 130", - "815" : "Flow from OutPin: 155 to InPin: 135", - "816" : "Flow from OutPin: 155 to InPin: 154", - "817" : "Flow from OutPin: 155 to InPin: 140", - "818" : "Flow from OutPin: 155 to InPin: 105", - "819" : "Flow from OutPin: 155 to InPin: 109", - "820" : "Flow from OutPin: 155 to InPin: 114", - "821" : "Flow from OutPin: 136 to InPin: 122", - "822" : "Flow from OutPin: 136 to InPin: 130", - "823" : "Flow from OutPin: 136 to InPin: 135", - "824" : "Flow from OutPin: 136 to InPin: 154", - "825" : "Flow from OutPin: 136 to InPin: 140", - "826" : "Flow from OutPin: 136 to InPin: 105", - "827" : "Flow from OutPin: 136 to InPin: 109", - "828" : "Flow from OutPin: 136 to InPin: 114", - "829" : "Flow from OutPin: 157 to InPin: 122", - "830" : "Flow from OutPin: 157 to InPin: 130", - "831" : "Flow from OutPin: 157 to InPin: 135", - "832" : "Flow from OutPin: 157 to InPin: 154", - "833" : "Flow from OutPin: 157 to InPin: 140", - "834" : "Flow from OutPin: 157 to InPin: 105", - "835" : "Flow from OutPin: 157 to InPin: 109", - "836" : "Flow from OutPin: 157 to InPin: 114", - "837" : "Flow from OutPin: 112 to InPin: 122", - "838" : "Flow from OutPin: 112 to InPin: 130", - "839" : "Flow from OutPin: 112 to InPin: 135", - "840" : "Flow from OutPin: 112 to InPin: 154", - "841" : "Flow from OutPin: 112 to InPin: 140", - "842" : "Flow from OutPin: 112 to InPin: 105", - "843" : "Flow from OutPin: 112 to InPin: 109", - "844" : "Flow from OutPin: 112 to InPin: 114", - "845" : "Flow from OutPin: 159 to InPin: 122", - "846" : "Flow from OutPin: 159 to InPin: 130", - "847" : "Flow from OutPin: 159 to InPin: 135", - "848" : "Flow from OutPin: 159 to InPin: 154", - "849" : "Flow from OutPin: 159 to InPin: 140", - "850" : "Flow from OutPin: 159 to InPin: 105", - "851" : "Flow from OutPin: 159 to InPin: 109", - "852" : "Flow from OutPin: 159 to InPin: 114", - "853" : "OutgoingData at Pin 120 has Label (Stereotype, transform_identity_representation)", - "854" : "OutgoingData at Pin 120 has Label (Stereotype, encrypted_connection)", - "855" : "OutgoingData at Pin 120 has Label (Stereotype, gateway)", - "856" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, login_attempts_regulation)", - "857" : "OutgoingData at Pin 120 has Label (Stereotype, login_attempts_regulation)", - "858" : "OutgoingData at Pin 120 has Label (Stereotype, authenticated_request)", - "859" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, local_logging)", - "860" : "OutgoingData at Pin 120 has Label (Stereotype, local_logging)", - "861" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, log_sanitization)", - "862" : "OutgoingData at Pin 120 has Label (Stereotype, log_sanitization)", - "863" : "Flow from OutPin: 120 to InPin: 109 has Label: (Stereotype, authorization_server)", - "864" : "OutgoingData at Pin 120 has Label (Stereotype, authorization_server)", - "865" : "OutgoingData at Pin 161 has Label (Stereotype, transform_identity_representation)", - "866" : "OutgoingData at Pin 161 has Label (Stereotype, encrypted_connection)", - "867" : "OutgoingData at Pin 161 has Label (Stereotype, gateway)", - "868" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", - "869" : "OutgoingData at Pin 161 has Label (Stereotype, login_attempts_regulation)", - "870" : "OutgoingData at Pin 161 has Label (Stereotype, authenticated_request)", - "871" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, local_logging)", - "872" : "OutgoingData at Pin 161 has Label (Stereotype, local_logging)", - "873" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, log_sanitization)", - "874" : "OutgoingData at Pin 161 has Label (Stereotype, log_sanitization)", - "875" : "Flow from OutPin: 161 to InPin: 154 has Label: (Stereotype, authorization_server)", - "876" : "OutgoingData at Pin 161 has Label (Stereotype, authorization_server)", - "877" : "OutgoingData at Pin 128 has Label (Stereotype, transform_identity_representation)", - "878" : "OutgoingData at Pin 128 has Label (Stereotype, encrypted_connection)", - "879" : "OutgoingData at Pin 128 has Label (Stereotype, gateway)", - "880" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, login_attempts_regulation)", - "881" : "OutgoingData at Pin 128 has Label (Stereotype, login_attempts_regulation)", - "882" : "OutgoingData at Pin 128 has Label (Stereotype, authenticated_request)", - "883" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, local_logging)", - "884" : "OutgoingData at Pin 128 has Label (Stereotype, local_logging)", - "885" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, log_sanitization)", - "886" : "OutgoingData at Pin 128 has Label (Stereotype, log_sanitization)", - "887" : "Flow from OutPin: 128 to InPin: 109 has Label: (Stereotype, authorization_server)", - "888" : "OutgoingData at Pin 128 has Label (Stereotype, authorization_server)", - "889" : "OutgoingData at Pin 163 has Label (Stereotype, transform_identity_representation)", - "890" : "OutgoingData at Pin 163 has Label (Stereotype, encrypted_connection)", - "891" : "OutgoingData at Pin 163 has Label (Stereotype, gateway)", - "892" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", - "893" : "OutgoingData at Pin 163 has Label (Stereotype, login_attempts_regulation)", - "894" : "OutgoingData at Pin 163 has Label (Stereotype, authenticated_request)", - "895" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, local_logging)", - "896" : "OutgoingData at Pin 163 has Label (Stereotype, local_logging)", - "897" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, log_sanitization)", - "898" : "OutgoingData at Pin 163 has Label (Stereotype, log_sanitization)", - "899" : "Flow from OutPin: 163 to InPin: 154 has Label: (Stereotype, authorization_server)", - "900" : "OutgoingData at Pin 163 has Label (Stereotype, authorization_server)", - "901" : "OutgoingData at Pin 141 has Label (Stereotype, transform_identity_representation)", - "902" : "OutgoingData at Pin 141 has Label (Stereotype, encrypted_connection)", - "903" : "OutgoingData at Pin 141 has Label (Stereotype, internal)", - "904" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, login_attempts_regulation)", - "905" : "OutgoingData at Pin 141 has Label (Stereotype, login_attempts_regulation)", - "906" : "OutgoingData at Pin 141 has Label (Stereotype, authenticated_request)", - "907" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, local_logging)", - "908" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, log_sanitization)", - "909" : "OutgoingData at Pin 141 has Label (Stereotype, log_sanitization)", - "910" : "Flow from OutPin: 141 to InPin: 140 has Label: (Stereotype, authorization_server)", - "911" : "OutgoingData at Pin 141 has Label (Stereotype, authorization_server)", - "912" : "OutgoingData at Pin 145 has Label (Stereotype, transform_identity_representation)", - "913" : "OutgoingData at Pin 145 has Label (Stereotype, encrypted_connection)", - "914" : "OutgoingData at Pin 145 has Label (Stereotype, internal)", - "915" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, login_attempts_regulation)", - "916" : "OutgoingData at Pin 145 has Label (Stereotype, login_attempts_regulation)", - "917" : "OutgoingData at Pin 145 has Label (Stereotype, authenticated_request)", - "918" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, local_logging)", - "919" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, log_sanitization)", - "920" : "OutgoingData at Pin 145 has Label (Stereotype, log_sanitization)", - "921" : "Flow from OutPin: 145 to InPin: 130 has Label: (Stereotype, authorization_server)", - "922" : "OutgoingData at Pin 145 has Label (Stereotype, authorization_server)", - "923" : "OutgoingData at Pin 150 has Label (Stereotype, transform_identity_representation)", - "924" : "OutgoingData at Pin 150 has Label (Stereotype, encrypted_connection)", - "925" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, login_attempts_regulation)", - "926" : "OutgoingData at Pin 150 has Label (Stereotype, login_attempts_regulation)", - "927" : "OutgoingData at Pin 150 has Label (Stereotype, authenticated_request)", - "928" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, local_logging)", - "929" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, log_sanitization)", - "930" : "OutgoingData at Pin 150 has Label (Stereotype, log_sanitization)", - "931" : "Flow from OutPin: 150 to InPin: 114 has Label: (Stereotype, authorization_server)", - "932" : "OutgoingData at Pin 150 has Label (Stereotype, authorization_server)", - "933" : "OutgoingData at Pin 152 has Label (Stereotype, transform_identity_representation)", - "934" : "OutgoingData at Pin 152 has Label (Stereotype, encrypted_connection)", - "935" : "OutgoingData at Pin 152 has Label (Stereotype, internal)", - "936" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, login_attempts_regulation)", - "937" : "OutgoingData at Pin 152 has Label (Stereotype, login_attempts_regulation)", - "938" : "OutgoingData at Pin 152 has Label (Stereotype, authenticated_request)", - "939" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, local_logging)", - "940" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, log_sanitization)", - "941" : "OutgoingData at Pin 152 has Label (Stereotype, log_sanitization)", - "942" : "Flow from OutPin: 152 to InPin: 122 has Label: (Stereotype, authorization_server)", - "943" : "OutgoingData at Pin 152 has Label (Stereotype, authorization_server)", - "944" : "OutgoingData at Pin 165 has Label (Stereotype, transform_identity_representation)", - "945" : "OutgoingData at Pin 165 has Label (Stereotype, encrypted_connection)", - "946" : "OutgoingData at Pin 165 has Label (Stereotype, internal)", - "947" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", - "948" : "OutgoingData at Pin 165 has Label (Stereotype, login_attempts_regulation)", - "949" : "OutgoingData at Pin 165 has Label (Stereotype, authenticated_request)", - "950" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, local_logging)", - "951" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, log_sanitization)", - "952" : "OutgoingData at Pin 165 has Label (Stereotype, log_sanitization)", - "953" : "Flow from OutPin: 165 to InPin: 154 has Label: (Stereotype, authorization_server)", - "954" : "OutgoingData at Pin 165 has Label (Stereotype, authorization_server)", - "955" : "OutgoingData at Pin 106 has Label (Stereotype, transform_identity_representation)", - "956" : "OutgoingData at Pin 106 has Label (Stereotype, encrypted_connection)", - "957" : "OutgoingData at Pin 106 has Label (Stereotype, gateway)", - "958" : "OutgoingData at Pin 106 has Label (Stereotype, token_validation)", - "959" : "OutgoingData at Pin 106 has Label (Stereotype, internal)", - "960" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, login_attempts_regulation)", - "961" : "OutgoingData at Pin 106 has Label (Stereotype, login_attempts_regulation)", - "962" : "OutgoingData at Pin 106 has Label (Stereotype, authenticated_request)", - "963" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, local_logging)", - "964" : "OutgoingData at Pin 106 has Label (Stereotype, local_logging)", - "965" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, log_sanitization)", - "966" : "OutgoingData at Pin 106 has Label (Stereotype, log_sanitization)", - "967" : "Flow from OutPin: 106 to InPin: 105 has Label: (Stereotype, authorization_server)", - "968" : "OutgoingData at Pin 106 has Label (Stereotype, authorization_server)", - "969" : "OutgoingData at Pin 117 has Label (Stereotype, transform_identity_representation)", - "970" : "OutgoingData at Pin 117 has Label (Stereotype, encrypted_connection)", - "971" : "OutgoingData at Pin 117 has Label (Stereotype, gateway)", - "972" : "OutgoingData at Pin 117 has Label (Stereotype, token_validation)", - "973" : "OutgoingData at Pin 117 has Label (Stereotype, internal)", - "974" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, login_attempts_regulation)", - "975" : "OutgoingData at Pin 117 has Label (Stereotype, login_attempts_regulation)", - "976" : "OutgoingData at Pin 117 has Label (Stereotype, authenticated_request)", - "977" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, local_logging)", - "978" : "OutgoingData at Pin 117 has Label (Stereotype, local_logging)", - "979" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, log_sanitization)", - "980" : "OutgoingData at Pin 117 has Label (Stereotype, log_sanitization)", - "981" : "Flow from OutPin: 117 to InPin: 114 has Label: (Stereotype, authorization_server)", - "982" : "OutgoingData at Pin 117 has Label (Stereotype, authorization_server)", - "983" : "OutgoingData at Pin 125 has Label (Stereotype, transform_identity_representation)", - "984" : "OutgoingData at Pin 125 has Label (Stereotype, encrypted_connection)", - "985" : "OutgoingData at Pin 125 has Label (Stereotype, gateway)", - "986" : "OutgoingData at Pin 125 has Label (Stereotype, token_validation)", - "987" : "OutgoingData at Pin 125 has Label (Stereotype, internal)", - "988" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, login_attempts_regulation)", - "989" : "OutgoingData at Pin 125 has Label (Stereotype, login_attempts_regulation)", - "990" : "OutgoingData at Pin 125 has Label (Stereotype, authenticated_request)", - "991" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, local_logging)", - "992" : "OutgoingData at Pin 125 has Label (Stereotype, local_logging)", - "993" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, log_sanitization)", - "994" : "OutgoingData at Pin 125 has Label (Stereotype, log_sanitization)", - "995" : "Flow from OutPin: 125 to InPin: 122 has Label: (Stereotype, authorization_server)", - "996" : "OutgoingData at Pin 125 has Label (Stereotype, authorization_server)", - "997" : "OutgoingData at Pin 133 has Label (Stereotype, transform_identity_representation)", - "998" : "OutgoingData at Pin 133 has Label (Stereotype, encrypted_connection)", - "999" : "OutgoingData at Pin 133 has Label (Stereotype, gateway)", - "1000" : "OutgoingData at Pin 133 has Label (Stereotype, token_validation)", - "1001" : "OutgoingData at Pin 133 has Label (Stereotype, internal)", - "1002" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, login_attempts_regulation)", - "1003" : "OutgoingData at Pin 133 has Label (Stereotype, login_attempts_regulation)", - "1004" : "OutgoingData at Pin 133 has Label (Stereotype, authenticated_request)", - "1005" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, local_logging)", - "1006" : "OutgoingData at Pin 133 has Label (Stereotype, local_logging)", - "1007" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, log_sanitization)", - "1008" : "OutgoingData at Pin 133 has Label (Stereotype, log_sanitization)", - "1009" : "Flow from OutPin: 133 to InPin: 130 has Label: (Stereotype, authorization_server)", - "1010" : "OutgoingData at Pin 133 has Label (Stereotype, authorization_server)", - "1011" : "OutgoingData at Pin 138 has Label (Stereotype, transform_identity_representation)", - "1012" : "OutgoingData at Pin 138 has Label (Stereotype, encrypted_connection)", - "1013" : "OutgoingData at Pin 138 has Label (Stereotype, internal)", - "1014" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, login_attempts_regulation)", - "1015" : "OutgoingData at Pin 138 has Label (Stereotype, login_attempts_regulation)", - "1016" : "OutgoingData at Pin 138 has Label (Stereotype, authenticated_request)", - "1017" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, local_logging)", - "1018" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, log_sanitization)", - "1019" : "OutgoingData at Pin 138 has Label (Stereotype, log_sanitization)", - "1020" : "Flow from OutPin: 138 to InPin: 135 has Label: (Stereotype, authorization_server)", - "1021" : "OutgoingData at Pin 138 has Label (Stereotype, authorization_server)", - "1022" : "OutgoingData at Pin 110 has Label (Stereotype, transform_identity_representation)", - "1023" : "OutgoingData at Pin 110 has Label (Stereotype, encrypted_connection)", - "1024" : "OutgoingData at Pin 110 has Label (Stereotype, gateway)", - "1025" : "OutgoingData at Pin 110 has Label (Stereotype, internal)", - "1026" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, login_attempts_regulation)", - "1027" : "OutgoingData at Pin 110 has Label (Stereotype, login_attempts_regulation)", - "1028" : "OutgoingData at Pin 110 has Label (Stereotype, authenticated_request)", - "1029" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, local_logging)", - "1030" : "OutgoingData at Pin 110 has Label (Stereotype, local_logging)", - "1031" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, log_sanitization)", - "1032" : "OutgoingData at Pin 110 has Label (Stereotype, log_sanitization)", - "1033" : "Flow from OutPin: 110 to InPin: 109 has Label: (Stereotype, authorization_server)", - "1034" : "OutgoingData at Pin 110 has Label (Stereotype, authorization_server)", - "1035" : "OutgoingData at Pin 115 has Label (Stereotype, transform_identity_representation)", - "1036" : "OutgoingData at Pin 115 has Label (Stereotype, encrypted_connection)", - "1037" : "OutgoingData at Pin 115 has Label (Stereotype, gateway)", - "1038" : "OutgoingData at Pin 115 has Label (Stereotype, internal)", - "1039" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, login_attempts_regulation)", - "1040" : "OutgoingData at Pin 115 has Label (Stereotype, login_attempts_regulation)", - "1041" : "OutgoingData at Pin 115 has Label (Stereotype, authenticated_request)", - "1042" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, local_logging)", - "1043" : "OutgoingData at Pin 115 has Label (Stereotype, local_logging)", - "1044" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, log_sanitization)", - "1045" : "OutgoingData at Pin 115 has Label (Stereotype, log_sanitization)", - "1046" : "Flow from OutPin: 115 to InPin: 114 has Label: (Stereotype, authorization_server)", - "1047" : "OutgoingData at Pin 115 has Label (Stereotype, authorization_server)", - "1048" : "OutgoingData at Pin 123 has Label (Stereotype, transform_identity_representation)", - "1049" : "OutgoingData at Pin 123 has Label (Stereotype, encrypted_connection)", - "1050" : "OutgoingData at Pin 123 has Label (Stereotype, gateway)", - "1051" : "OutgoingData at Pin 123 has Label (Stereotype, internal)", - "1052" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, login_attempts_regulation)", - "1053" : "OutgoingData at Pin 123 has Label (Stereotype, login_attempts_regulation)", - "1054" : "OutgoingData at Pin 123 has Label (Stereotype, authenticated_request)", - "1055" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, local_logging)", - "1056" : "OutgoingData at Pin 123 has Label (Stereotype, local_logging)", - "1057" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, log_sanitization)", - "1058" : "OutgoingData at Pin 123 has Label (Stereotype, log_sanitization)", - "1059" : "Flow from OutPin: 123 to InPin: 122 has Label: (Stereotype, authorization_server)", - "1060" : "OutgoingData at Pin 123 has Label (Stereotype, authorization_server)", - "1061" : "OutgoingData at Pin 131 has Label (Stereotype, transform_identity_representation)", - "1062" : "OutgoingData at Pin 131 has Label (Stereotype, encrypted_connection)", - "1063" : "OutgoingData at Pin 131 has Label (Stereotype, gateway)", - "1064" : "OutgoingData at Pin 131 has Label (Stereotype, internal)", - "1065" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, login_attempts_regulation)", - "1066" : "OutgoingData at Pin 131 has Label (Stereotype, login_attempts_regulation)", - "1067" : "OutgoingData at Pin 131 has Label (Stereotype, authenticated_request)", - "1068" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, local_logging)", - "1069" : "OutgoingData at Pin 131 has Label (Stereotype, local_logging)", - "1070" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, log_sanitization)", - "1071" : "OutgoingData at Pin 131 has Label (Stereotype, log_sanitization)", - "1072" : "Flow from OutPin: 131 to InPin: 130 has Label: (Stereotype, authorization_server)", - "1073" : "OutgoingData at Pin 131 has Label (Stereotype, authorization_server)", - "1074" : "OutgoingData at Pin 143 has Label (Stereotype, transform_identity_representation)", - "1075" : "OutgoingData at Pin 143 has Label (Stereotype, encrypted_connection)", - "1076" : "OutgoingData at Pin 143 has Label (Stereotype, gateway)", - "1077" : "OutgoingData at Pin 143 has Label (Stereotype, internal)", - "1078" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, login_attempts_regulation)", - "1079" : "OutgoingData at Pin 143 has Label (Stereotype, login_attempts_regulation)", - "1080" : "OutgoingData at Pin 143 has Label (Stereotype, authenticated_request)", - "1081" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, local_logging)", - "1082" : "OutgoingData at Pin 143 has Label (Stereotype, local_logging)", - "1083" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, log_sanitization)", - "1084" : "OutgoingData at Pin 143 has Label (Stereotype, log_sanitization)", - "1085" : "Flow from OutPin: 143 to InPin: 135 has Label: (Stereotype, authorization_server)", - "1086" : "OutgoingData at Pin 143 has Label (Stereotype, authorization_server)", - "1087" : "OutgoingData at Pin 155 has Label (Stereotype, transform_identity_representation)", - "1088" : "OutgoingData at Pin 155 has Label (Stereotype, encrypted_connection)", - "1089" : "OutgoingData at Pin 155 has Label (Stereotype, gateway)", - "1090" : "OutgoingData at Pin 155 has Label (Stereotype, internal)", - "1091" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", - "1092" : "OutgoingData at Pin 155 has Label (Stereotype, login_attempts_regulation)", - "1093" : "OutgoingData at Pin 155 has Label (Stereotype, authenticated_request)", - "1094" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, local_logging)", - "1095" : "OutgoingData at Pin 155 has Label (Stereotype, local_logging)", - "1096" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, log_sanitization)", - "1097" : "OutgoingData at Pin 155 has Label (Stereotype, log_sanitization)", - "1098" : "Flow from OutPin: 155 to InPin: 154 has Label: (Stereotype, authorization_server)", - "1099" : "OutgoingData at Pin 155 has Label (Stereotype, authorization_server)", - "1100" : "OutgoingData at Pin 136 has Label (Stereotype, transform_identity_representation)", - "1101" : "OutgoingData at Pin 136 has Label (Stereotype, encrypted_connection)", - "1102" : "OutgoingData at Pin 136 has Label (Stereotype, gateway)", - "1103" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, login_attempts_regulation)", - "1104" : "OutgoingData at Pin 136 has Label (Stereotype, login_attempts_regulation)", - "1105" : "OutgoingData at Pin 136 has Label (Stereotype, authenticated_request)", - "1106" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, local_logging)", - "1107" : "OutgoingData at Pin 136 has Label (Stereotype, local_logging)", - "1108" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, log_sanitization)", - "1109" : "OutgoingData at Pin 136 has Label (Stereotype, log_sanitization)", - "1110" : "Flow from OutPin: 136 to InPin: 135 has Label: (Stereotype, authorization_server)", - "1111" : "OutgoingData at Pin 136 has Label (Stereotype, authorization_server)", - "1112" : "OutgoingData at Pin 157 has Label (Stereotype, transform_identity_representation)", - "1113" : "OutgoingData at Pin 157 has Label (Stereotype, encrypted_connection)", - "1114" : "OutgoingData at Pin 157 has Label (Stereotype, gateway)", - "1115" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", - "1116" : "OutgoingData at Pin 157 has Label (Stereotype, login_attempts_regulation)", - "1117" : "OutgoingData at Pin 157 has Label (Stereotype, authenticated_request)", - "1118" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, local_logging)", - "1119" : "OutgoingData at Pin 157 has Label (Stereotype, local_logging)", - "1120" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, log_sanitization)", - "1121" : "OutgoingData at Pin 157 has Label (Stereotype, log_sanitization)", - "1122" : "Flow from OutPin: 157 to InPin: 154 has Label: (Stereotype, authorization_server)", - "1123" : "OutgoingData at Pin 157 has Label (Stereotype, authorization_server)", - "1124" : "OutgoingData at Pin 112 has Label (Stereotype, transform_identity_representation)", - "1125" : "OutgoingData at Pin 112 has Label (Stereotype, encrypted_connection)", - "1126" : "OutgoingData at Pin 112 has Label (Stereotype, gateway)", - "1127" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, login_attempts_regulation)", - "1128" : "OutgoingData at Pin 112 has Label (Stereotype, login_attempts_regulation)", - "1129" : "OutgoingData at Pin 112 has Label (Stereotype, authenticated_request)", - "1130" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, local_logging)", - "1131" : "OutgoingData at Pin 112 has Label (Stereotype, local_logging)", - "1132" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, log_sanitization)", - "1133" : "OutgoingData at Pin 112 has Label (Stereotype, log_sanitization)", - "1134" : "Flow from OutPin: 112 to InPin: 109 has Label: (Stereotype, authorization_server)", - "1135" : "OutgoingData at Pin 112 has Label (Stereotype, authorization_server)", - "1136" : "OutgoingData at Pin 159 has Label (Stereotype, transform_identity_representation)", - "1137" : "OutgoingData at Pin 159 has Label (Stereotype, encrypted_connection)", - "1138" : "OutgoingData at Pin 159 has Label (Stereotype, gateway)", - "1139" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, login_attempts_regulation)", - "1140" : "OutgoingData at Pin 159 has Label (Stereotype, login_attempts_regulation)", - "1141" : "OutgoingData at Pin 159 has Label (Stereotype, authenticated_request)", - "1142" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, local_logging)", - "1143" : "OutgoingData at Pin 159 has Label (Stereotype, local_logging)", - "1144" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, log_sanitization)", - "1145" : "OutgoingData at Pin 159 has Label (Stereotype, log_sanitization)", - "1146" : "Flow from OutPin: 159 to InPin: 154 has Label: (Stereotype, authorization_server)", - "1147" : "OutgoingData at Pin 159 has Label (Stereotype, authorization_server)", - "1148" : "IncomingData at Pin 122 has Label (Stereotype, transform_identity_representation)", - "1149" : "IncomingData at Pin 130 has Label (Stereotype, transform_identity_representation)", - "1150" : "IncomingData at Pin 135 has Label (Stereotype, transform_identity_representation)", - "1151" : "IncomingData at Pin 154 has Label (Stereotype, transform_identity_representation)", - "1152" : "IncomingData at Pin 140 has Label (Stereotype, transform_identity_representation)", - "1153" : "IncomingData at Pin 105 has Label (Stereotype, transform_identity_representation)", - "1154" : "IncomingData at Pin 109 has Label (Stereotype, transform_identity_representation)", - "1155" : "IncomingData at Pin 114 has Label (Stereotype, transform_identity_representation)", - "1156" : "IncomingData at Pin 122 has Label (Stereotype, encrypted_connection)", - "1157" : "IncomingData at Pin 130 has Label (Stereotype, encrypted_connection)", - "1158" : "IncomingData at Pin 135 has Label (Stereotype, encrypted_connection)", - "1159" : "IncomingData at Pin 154 has Label (Stereotype, encrypted_connection)", - "1160" : "IncomingData at Pin 140 has Label (Stereotype, encrypted_connection)", - "1161" : "IncomingData at Pin 105 has Label (Stereotype, encrypted_connection)", - "1162" : "IncomingData at Pin 109 has Label (Stereotype, encrypted_connection)", - "1163" : "IncomingData at Pin 114 has Label (Stereotype, encrypted_connection)", - "1164" : "IncomingData at Pin 122 has Label (Stereotype, gateway)", - "1165" : "IncomingData at Pin 130 has Label (Stereotype, gateway)", - "1166" : "IncomingData at Pin 135 has Label (Stereotype, gateway)", - "1167" : "IncomingData at Pin 154 has Label (Stereotype, gateway)", - "1168" : "IncomingData at Pin 140 has Label (Stereotype, gateway)", - "1169" : "IncomingData at Pin 105 has Label (Stereotype, gateway)", - "1170" : "IncomingData at Pin 109 has Label (Stereotype, gateway)", - "1171" : "IncomingData at Pin 114 has Label (Stereotype, gateway)", - "1172" : "IncomingData at Pin 122 has Label (Stereotype, token_validation)", - "1173" : "IncomingData at Pin 130 has Label (Stereotype, token_validation)", - "1174" : "IncomingData at Pin 135 has Label (Stereotype, token_validation)", - "1175" : "IncomingData at Pin 154 has Label (Stereotype, token_validation)", - "1176" : "IncomingData at Pin 140 has Label (Stereotype, token_validation)", - "1177" : "IncomingData at Pin 105 has Label (Stereotype, token_validation)", - "1178" : "IncomingData at Pin 109 has Label (Stereotype, token_validation)", - "1179" : "IncomingData at Pin 114 has Label (Stereotype, token_validation)", - "1180" : "IncomingData at Pin 122 has Label (Stereotype, login_attempts_regulation)", - "1181" : "IncomingData at Pin 130 has Label (Stereotype, login_attempts_regulation)", - "1182" : "IncomingData at Pin 135 has Label (Stereotype, login_attempts_regulation)", - "1183" : "IncomingData at Pin 154 has Label (Stereotype, login_attempts_regulation)", - "1184" : "IncomingData at Pin 140 has Label (Stereotype, login_attempts_regulation)", - "1185" : "IncomingData at Pin 105 has Label (Stereotype, login_attempts_regulation)", - "1186" : "IncomingData at Pin 109 has Label (Stereotype, login_attempts_regulation)", - "1187" : "IncomingData at Pin 114 has Label (Stereotype, login_attempts_regulation)", - "1188" : "IncomingData at Pin 122 has Label (Stereotype, authenticated_request)", - "1189" : "IncomingData at Pin 130 has Label (Stereotype, authenticated_request)", - "1190" : "IncomingData at Pin 135 has Label (Stereotype, authenticated_request)", - "1191" : "IncomingData at Pin 154 has Label (Stereotype, authenticated_request)", - "1192" : "IncomingData at Pin 140 has Label (Stereotype, authenticated_request)", - "1193" : "IncomingData at Pin 105 has Label (Stereotype, authenticated_request)", - "1194" : "IncomingData at Pin 109 has Label (Stereotype, authenticated_request)", - "1195" : "IncomingData at Pin 114 has Label (Stereotype, authenticated_request)", - "1196" : "IncomingData at Pin 122 has Label (Stereotype, local_logging)", - "1197" : "IncomingData at Pin 130 has Label (Stereotype, local_logging)", - "1198" : "IncomingData at Pin 135 has Label (Stereotype, local_logging)", - "1199" : "IncomingData at Pin 154 has Label (Stereotype, local_logging)", - "1200" : "IncomingData at Pin 140 has Label (Stereotype, local_logging)", - "1201" : "IncomingData at Pin 105 has Label (Stereotype, local_logging)", - "1202" : "IncomingData at Pin 109 has Label (Stereotype, local_logging)", - "1203" : "IncomingData at Pin 114 has Label (Stereotype, local_logging)", - "1204" : "IncomingData at Pin 122 has Label (Stereotype, log_sanitization)", - "1205" : "IncomingData at Pin 130 has Label (Stereotype, log_sanitization)", - "1206" : "IncomingData at Pin 135 has Label (Stereotype, log_sanitization)", - "1207" : "IncomingData at Pin 154 has Label (Stereotype, log_sanitization)", - "1208" : "IncomingData at Pin 140 has Label (Stereotype, log_sanitization)", - "1209" : "IncomingData at Pin 105 has Label (Stereotype, log_sanitization)", - "1210" : "IncomingData at Pin 109 has Label (Stereotype, log_sanitization)", - "1211" : "IncomingData at Pin 114 has Label (Stereotype, log_sanitization)", - "1212" : "IncomingData at Pin 122 has Label (Stereotype, internal)", - "1213" : "IncomingData at Pin 130 has Label (Stereotype, internal)", - "1214" : "IncomingData at Pin 135 has Label (Stereotype, internal)", - "1215" : "IncomingData at Pin 154 has Label (Stereotype, internal)", - "1216" : "IncomingData at Pin 140 has Label (Stereotype, internal)", - "1217" : "IncomingData at Pin 105 has Label (Stereotype, internal)", - "1218" : "IncomingData at Pin 109 has Label (Stereotype, internal)", - "1219" : "IncomingData at Pin 114 has Label (Stereotype, internal)", - "1220" : "IncomingData at Pin 122 has Label (Stereotype, entrypoint)", - "1221" : "IncomingData at Pin 130 has Label (Stereotype, entrypoint)", - "1222" : "IncomingData at Pin 135 has Label (Stereotype, entrypoint)", - "1223" : "IncomingData at Pin 154 has Label (Stereotype, entrypoint)", - "1224" : "IncomingData at Pin 140 has Label (Stereotype, entrypoint)", - "1225" : "IncomingData at Pin 105 has Label (Stereotype, entrypoint)", - "1226" : "IncomingData at Pin 109 has Label (Stereotype, entrypoint)", - "1227" : "IncomingData at Pin 114 has Label (Stereotype, entrypoint)", - "1228" : "IncomingData at Pin 122 has Label (Stereotype, authorization_server)", - "1229" : "IncomingData at Pin 130 has Label (Stereotype, authorization_server)", - "1230" : "IncomingData at Pin 135 has Label (Stereotype, authorization_server)", - "1231" : "IncomingData at Pin 154 has Label (Stereotype, authorization_server)", - "1232" : "IncomingData at Pin 140 has Label (Stereotype, authorization_server)", - "1233" : "IncomingData at Pin 105 has Label (Stereotype, authorization_server)", - "1234" : "IncomingData at Pin 109 has Label (Stereotype, authorization_server)", - "1235" : "IncomingData at Pin 114 has Label (Stereotype, authorization_server)" -} \ No newline at end of file diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ .cnf b/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ .cnf deleted file mode 100644 index c70fda09..00000000 --- a/tests/dev.arcovia.mitigation.evaluation.tests/testresults/ .cnf +++ /dev/null @@ -1,2105 +0,0 @@ -p cnf 1235 2104 --1 2 -3 0 --4 5 -3 0 --6 7 -3 0 --8 -3 0 -9 -3 0 -10 -3 0 -11 -3 0 --1 12 -3 0 --4 13 -3 0 --6 14 -3 0 --1 15 -3 0 --4 16 -3 0 --6 17 -3 0 --18 19 0 --1 20 0 --4 21 0 --6 22 0 --23 20 0 --24 21 0 --25 22 0 --3 26 0 --26 27 0 --28 29 -30 0 --31 32 -30 0 --33 34 -30 0 --35 -30 0 -36 -30 0 -37 -30 0 -38 -30 0 --28 39 -30 0 --31 40 -30 0 --33 41 -30 0 --28 42 -30 0 --31 43 -30 0 --33 44 -30 0 --45 46 0 --28 47 0 --31 48 0 --33 49 0 --50 47 0 --51 48 0 --52 49 0 --30 53 0 --53 54 0 --55 56 -57 0 --58 59 -57 0 --60 61 -57 0 --62 -57 0 -63 -57 0 -64 -57 0 -65 -57 0 --55 66 -57 0 --58 67 -57 0 --60 68 -57 0 --55 69 -57 0 --58 70 -57 0 --60 71 -57 0 --72 73 0 --55 74 0 --58 75 0 --60 76 0 --77 74 0 --78 75 0 --79 76 0 --57 80 0 --80 81 0 --82 83 -84 0 --85 86 -84 0 --87 88 -84 0 --89 90 -84 0 --91 92 -84 0 --93 94 -84 0 --95 -84 0 -96 -84 0 -97 -84 0 -98 -84 0 -99 -84 0 -100 -84 0 -101 -84 0 --82 102 -84 0 --85 103 -84 0 --87 104 -84 0 --89 105 -84 0 --91 106 -84 0 --93 107 -84 0 --82 108 -84 0 --85 109 -84 0 --87 110 -84 0 --89 111 -84 0 --91 112 -84 0 --93 113 -84 0 --114 115 0 --82 116 0 --85 117 0 --87 118 0 --89 119 0 --91 120 0 --93 121 0 --122 116 0 --123 117 0 --124 118 0 --125 119 0 --126 120 0 --127 121 0 --84 128 0 --128 129 0 --130 -131 0 --132 133 0 --131 134 0 --134 135 0 --136 -137 0 --138 139 0 --137 140 0 --140 141 0 --142 -143 0 --144 145 0 --143 146 0 --146 147 0 --148 -149 0 --150 151 0 --149 152 0 --152 153 0 --154 155 -156 0 --157 -156 0 -158 -156 0 --154 159 -156 0 --154 160 -156 0 --161 162 0 --154 163 0 --164 163 0 --156 165 0 --165 166 0 --167 168 -169 0 --170 -169 0 -171 -169 0 --167 172 -169 0 --167 173 -169 0 --174 175 0 --167 176 0 --177 176 0 --169 178 0 --178 179 0 --180 181 -182 0 --183 184 -182 0 --185 186 -182 0 --187 188 -182 0 --189 -182 0 -190 -182 0 -191 -182 0 -192 -182 0 -193 -182 0 --180 194 -182 0 --183 195 -182 0 --185 196 -182 0 --187 197 -182 0 --180 198 -182 0 --183 199 -182 0 --185 200 -182 0 --187 201 -182 0 --202 203 0 --180 204 0 --183 205 0 --185 206 0 --187 207 0 --208 204 0 --209 205 0 --210 206 0 --211 207 0 --182 212 0 --212 213 0 --214 215 -216 0 --217 218 -216 0 --219 220 -216 0 --221 -216 0 -222 -216 0 -223 -216 0 -224 -216 0 --214 225 -216 0 --217 226 -216 0 --219 227 -216 0 --214 228 -216 0 --217 229 -216 0 --219 230 -216 0 --231 232 0 --214 233 0 --217 234 0 --219 235 0 --236 233 0 --237 234 0 --238 235 0 --216 239 0 --239 240 0 -241 0 -242 0 -243 0 -3 0 -244 0 -245 0 -246 0 -247 0 -248 0 -249 0 -250 0 -251 0 -252 0 -253 0 -254 0 -255 0 -256 0 -257 0 -258 0 -259 0 -260 0 -261 0 -262 0 -263 0 -264 0 -265 0 -266 0 -267 0 -268 0 -269 0 -270 0 -271 0 -272 0 -273 0 -274 0 -275 0 -276 0 -277 0 -278 0 -279 0 -280 0 -281 0 -282 0 -283 0 -284 0 -285 0 -286 0 -287 0 -288 0 -289 0 -290 0 -291 0 -292 0 -293 0 -294 0 -295 0 -296 0 -297 0 -298 0 -30 0 -299 0 -300 0 -301 0 -302 0 -303 0 -304 0 -305 0 -306 0 -307 0 -308 0 -309 0 -310 0 -311 0 -312 0 -313 0 -314 0 -315 0 -316 0 -317 0 -318 0 -319 0 -320 0 -321 0 -322 0 -323 0 -324 0 -325 0 -326 0 -327 0 -328 0 -329 0 -330 0 -331 0 -332 0 -333 0 -334 0 -335 0 -336 0 -337 0 -338 0 -339 0 -340 0 -341 0 -342 0 -343 0 -344 0 -345 0 -346 0 -347 0 -348 0 -349 0 -350 0 -351 0 -352 0 -353 0 -354 0 -355 0 -356 0 -357 0 -358 0 -359 0 -360 0 -62 0 -361 0 -362 0 -80 0 -363 0 -364 0 -365 0 -366 0 -367 0 -368 0 -369 0 -370 0 -371 0 -372 0 -373 0 -374 0 -375 0 -376 0 -377 0 -378 0 -379 0 -380 0 -381 0 -382 0 -383 0 -384 0 -385 0 -386 0 -387 0 -388 0 -389 0 -390 0 -391 0 -392 0 -393 0 -394 0 -395 0 -396 0 -397 0 -398 0 -399 0 -400 0 -401 0 -402 0 -403 0 -404 0 -405 0 -406 0 -407 0 -408 0 -409 0 -410 0 -411 0 -412 0 -413 0 -414 0 -415 0 -416 0 -417 0 -418 0 -419 0 -420 0 -421 0 -422 0 -423 0 -424 0 -425 0 -426 0 -427 0 -428 0 -429 0 -430 0 -431 0 -432 0 -433 0 -434 0 -435 0 -436 0 -437 0 -438 0 -439 0 -440 0 -441 0 -442 0 -443 0 -444 0 -445 0 -446 0 -447 0 -448 0 -449 0 -450 0 -451 0 -452 0 -114 0 -453 0 -454 0 -455 0 -456 0 -457 0 -458 0 -459 0 -460 0 -461 0 -462 0 -463 0 -464 0 -465 0 -466 0 -467 0 -468 0 -469 0 -470 0 -471 0 -472 0 -473 0 -474 0 -475 0 -476 0 -477 0 -478 0 -479 0 -480 0 -481 0 -482 0 -483 0 -484 0 -485 0 -486 0 -487 0 -488 0 -489 0 -490 0 -491 0 -492 0 -493 0 -494 0 -495 0 -496 0 -497 0 -498 0 -499 0 -500 0 -501 0 -502 0 -503 0 -504 0 -505 0 -506 0 -507 0 -508 0 -509 0 -510 0 -511 0 -512 0 -513 0 -514 0 -515 0 -516 0 -517 0 -518 0 -519 0 -520 0 -521 0 -522 0 -523 0 -524 0 -525 0 -526 0 -527 0 -528 0 -529 0 -530 0 -531 0 -532 0 -533 0 -534 0 -535 0 -536 0 -537 0 -538 0 -539 0 -540 0 -541 0 -542 0 -543 0 -544 0 -545 0 -546 0 -547 0 -548 0 -549 0 -550 0 -551 0 -552 0 -553 0 -554 0 -555 0 -556 0 -557 0 -558 0 -559 0 -560 0 -561 0 -562 0 -563 0 -564 0 -565 0 -566 0 -567 0 -568 0 -569 0 -570 0 -571 0 -572 0 -573 0 -574 0 -575 0 -576 0 -577 0 -578 0 -579 0 -580 0 -581 0 -582 0 -583 0 -584 0 -585 0 -586 0 -587 0 -588 0 -589 0 -590 0 -591 0 -592 0 -593 0 -594 0 -595 0 -596 0 -597 0 -598 0 -599 0 -600 0 -601 0 -602 0 -603 0 -604 0 -605 0 -606 0 -607 0 -608 0 -609 0 -610 0 -611 0 -612 0 -613 0 -614 0 -615 0 -216 0 -616 0 -617 0 -618 0 -619 0 -620 0 -621 0 -622 0 -623 0 -624 0 -625 0 -626 0 -627 0 -628 0 -629 0 -630 0 -631 0 -632 0 -633 0 -634 0 -635 0 -636 0 -637 0 -638 0 -639 0 -640 0 -641 0 -642 0 -643 0 -644 0 -645 0 -646 0 -647 0 -648 0 -649 0 -650 0 -651 0 -652 0 -653 0 -654 0 -655 0 -656 0 -657 0 -658 0 -659 0 -660 0 --661 0 --662 0 --663 0 --664 0 --665 0 --666 0 -667 0 --668 0 --669 0 --670 0 --671 0 -672 0 --673 0 --674 0 --675 0 --676 0 --677 0 --678 0 --679 0 --680 0 --681 0 --682 0 -683 0 --684 0 --685 0 --686 0 --687 0 -688 0 --689 0 --690 0 --691 0 --692 0 --693 0 --694 0 --695 0 --696 0 -697 0 --698 0 --699 0 --700 0 --701 0 -702 0 --703 0 --704 0 --705 0 --706 0 --707 0 --708 0 --709 0 --710 0 --711 0 --712 0 --713 0 --714 0 --715 0 -716 0 -717 0 --718 0 --719 0 --720 0 --721 0 --722 0 --723 0 --724 0 --725 0 --726 0 --727 0 -728 0 --729 0 --730 0 --731 0 --732 0 --733 0 --734 0 --735 0 --736 0 --737 0 -738 0 --739 0 --740 0 --741 0 --742 0 --743 0 --744 0 --745 0 --746 0 --747 0 -748 0 -749 0 --750 0 --751 0 --752 0 --753 0 --754 0 --755 0 --756 0 --757 0 -758 0 --759 0 --760 0 --761 0 --762 0 --763 0 --764 0 --765 0 --766 0 -767 0 --768 0 --769 0 --770 0 --771 0 --772 0 --773 0 --774 0 --775 0 --776 0 --777 0 --778 0 -779 0 --780 0 --781 0 --782 0 --783 0 --784 0 --785 0 --786 0 --787 0 -788 0 -789 0 --790 0 --791 0 --792 0 --793 0 --794 0 --795 0 --796 0 --797 0 -798 0 --799 0 --800 0 --801 0 --802 0 --803 0 --804 0 --805 0 --806 0 -807 0 --808 0 --809 0 --810 0 --811 0 --812 0 --813 0 --814 0 --815 0 -816 0 --817 0 --818 0 --819 0 --820 0 --821 0 --822 0 -823 0 --824 0 --825 0 --826 0 --827 0 --828 0 --829 0 --830 0 --831 0 -832 0 --833 0 --834 0 --835 0 --836 0 --837 0 --838 0 --839 0 --840 0 --841 0 --842 0 -843 0 --844 0 --845 0 --846 0 --847 0 -848 0 --849 0 --850 0 --851 0 --852 0 --853 -667 196 0 --196 853 0 --196 667 0 --854 -667 206 0 --206 854 0 --206 667 0 --855 -667 186 0 --186 855 0 --186 667 0 --265 -667 200 0 --200 265 0 --200 667 0 --257 -667 210 0 --210 257 0 --210 667 0 --857 -667 856 0 --856 857 0 --856 667 0 --251 -667 185 0 --185 251 0 --185 667 0 --858 -667 192 0 --192 858 0 --192 667 0 --860 -667 859 0 --859 860 0 --859 667 0 --862 -667 861 0 --861 862 0 --861 667 0 --864 -667 863 0 --863 864 0 --863 667 0 --865 -672 105 0 --105 865 0 --105 672 0 --866 -672 119 0 --119 866 0 --119 672 0 --867 -672 90 0 --90 867 0 --90 672 0 --288 -672 111 0 --111 288 0 --111 672 0 --280 -672 125 0 --125 280 0 --125 672 0 --869 -672 868 0 --868 869 0 --868 672 0 --274 -672 89 0 --89 274 0 --89 672 0 --870 -672 99 0 --99 870 0 --99 672 0 --872 -672 871 0 --871 872 0 --871 672 0 --874 -672 873 0 --873 874 0 --873 672 0 --876 -672 875 0 --875 876 0 --875 672 0 --877 -683 197 0 --197 877 0 --197 683 0 --878 -683 207 0 --207 878 0 --207 683 0 --879 -683 188 0 --188 879 0 --188 683 0 --320 -683 201 0 --201 320 0 --201 683 0 --312 -683 211 0 --211 312 0 --211 683 0 --881 -683 880 0 --880 881 0 --880 683 0 --306 -683 187 0 --187 306 0 --187 683 0 --882 -683 193 0 --193 882 0 --193 683 0 --884 -683 883 0 --883 884 0 --883 683 0 --886 -683 885 0 --885 886 0 --885 683 0 --888 -683 887 0 --887 888 0 --887 683 0 --889 -688 106 0 --106 889 0 --106 688 0 --890 -688 120 0 --120 890 0 --120 688 0 --891 -688 92 0 --92 891 0 --92 688 0 --343 -688 112 0 --112 343 0 --112 688 0 --335 -688 126 0 --126 335 0 --126 688 0 --893 -688 892 0 --892 893 0 --892 688 0 --329 -688 91 0 --91 329 0 --91 688 0 --894 -688 100 0 --100 894 0 --100 688 0 --896 -688 895 0 --895 896 0 --895 688 0 --898 -688 897 0 --897 898 0 --897 688 0 --900 -688 899 0 --899 900 0 --899 688 0 --901 -697 159 0 --159 901 0 --159 697 0 --902 -697 163 0 --163 902 0 --163 697 0 --368 -697 155 0 --155 368 0 --155 697 0 --375 -697 160 0 --160 375 0 --160 697 0 --903 -697 164 0 --164 903 0 --164 697 0 --905 -697 904 0 --904 905 0 --904 697 0 --367 -697 154 0 --154 367 0 --154 697 0 --906 -697 158 0 --158 906 0 --158 697 0 --372 -697 907 0 --907 372 0 --907 697 0 --909 -697 908 0 --908 909 0 --908 697 0 --911 -697 910 0 --910 911 0 --910 697 0 --912 -702 41 0 --41 912 0 --41 702 0 --913 -702 49 0 --49 913 0 --49 702 0 --384 -702 34 0 --34 384 0 --34 702 0 --392 -702 44 0 --44 392 0 --44 702 0 --914 -702 52 0 --52 914 0 --52 702 0 --916 -702 915 0 --915 916 0 --915 702 0 --381 -702 33 0 --33 381 0 --33 702 0 --917 -702 38 0 --38 917 0 --38 702 0 --389 -702 918 0 --918 389 0 --918 702 0 --920 -702 919 0 --919 920 0 --919 702 0 --922 -702 921 0 --921 922 0 --921 702 0 --923 -716 227 0 --227 923 0 --227 716 0 --924 -716 235 0 --235 924 0 --235 716 0 --404 -716 220 0 --220 404 0 --220 716 0 --417 -716 230 0 --230 417 0 --230 716 0 --407 -716 238 0 --238 407 0 --238 716 0 --926 -716 925 0 --925 926 0 --925 716 0 --400 -716 219 0 --219 400 0 --219 716 0 --927 -716 224 0 --224 927 0 --224 716 0 --411 -716 928 0 --928 411 0 --928 716 0 --930 -716 929 0 --929 930 0 --929 716 0 --932 -716 931 0 --931 932 0 --931 716 0 --933 -717 14 0 --14 933 0 --14 717 0 --934 -717 22 0 --22 934 0 --22 717 0 --429 -717 7 0 --7 429 0 --7 717 0 --437 -717 17 0 --17 437 0 --17 717 0 --935 -717 25 0 --25 935 0 --25 717 0 --937 -717 936 0 --936 937 0 --936 717 0 --426 -717 6 0 --6 426 0 --6 717 0 --938 -717 11 0 --11 938 0 --11 717 0 --434 -717 939 0 --939 434 0 --939 717 0 --941 -717 940 0 --940 941 0 --940 717 0 --943 -717 942 0 --942 943 0 --942 717 0 --944 -728 107 0 --107 944 0 --107 728 0 --945 -728 121 0 --121 945 0 --121 728 0 --443 -728 94 0 --94 443 0 --94 728 0 --451 -728 113 0 --113 451 0 --113 728 0 --946 -728 127 0 --127 946 0 --127 728 0 --948 -728 947 0 --947 948 0 --947 728 0 --441 -728 93 0 --93 441 0 --93 728 0 --949 -728 101 0 --101 949 0 --101 728 0 --447 -728 950 0 --950 447 0 --950 728 0 --952 -728 951 0 --951 952 0 --951 728 0 --954 -728 953 0 --953 954 0 --953 728 0 --955 -738 172 0 --172 955 0 --172 738 0 --956 -738 176 0 --176 956 0 --176 738 0 --957 -738 168 0 --168 957 0 --168 738 0 --958 -738 173 0 --173 958 0 --173 738 0 --959 -738 177 0 --177 959 0 --177 738 0 --961 -738 960 0 --960 961 0 --960 738 0 --457 -738 167 0 --167 457 0 --167 738 0 --962 -738 171 0 --171 962 0 --171 738 0 --964 -738 963 0 --963 964 0 --963 738 0 --966 -738 965 0 --965 966 0 --965 738 0 --968 -738 967 0 --967 968 0 --967 738 0 --969 -748 226 0 --226 969 0 --226 748 0 --970 -748 234 0 --234 970 0 --234 748 0 --971 -748 218 0 --218 971 0 --218 748 0 --972 -748 229 0 --229 972 0 --229 748 0 --973 -748 237 0 --237 973 0 --237 748 0 --975 -748 974 0 --974 975 0 --974 748 0 --463 -748 217 0 --217 463 0 --217 748 0 --976 -748 223 0 --223 976 0 --223 748 0 --978 -748 977 0 --977 978 0 --977 748 0 --980 -748 979 0 --979 980 0 --979 748 0 --982 -748 981 0 --981 982 0 --981 748 0 --983 -749 13 0 --13 983 0 --13 749 0 --984 -749 21 0 --21 984 0 --21 749 0 --985 -749 5 0 --5 985 0 --5 749 0 --986 -749 16 0 --16 986 0 --16 749 0 --987 -749 24 0 --24 987 0 --24 749 0 --989 -749 988 0 --988 989 0 --988 749 0 --476 -749 4 0 --4 476 0 --4 749 0 --990 -749 10 0 --10 990 0 --10 749 0 --992 -749 991 0 --991 992 0 --991 749 0 --994 -749 993 0 --993 994 0 --993 749 0 --996 -749 995 0 --995 996 0 --995 749 0 --997 -758 40 0 --40 997 0 --40 758 0 --998 -758 48 0 --48 998 0 --48 758 0 --999 -758 32 0 --32 999 0 --32 758 0 --1000 -758 43 0 --43 1000 0 --43 758 0 --1001 -758 51 0 --51 1001 0 --51 758 0 --1003 -758 1002 0 --1002 1003 0 --1002 758 0 --492 -758 31 0 --31 492 0 --31 758 0 --1004 -758 37 0 --37 1004 0 --37 758 0 --1006 -758 1005 0 --1005 1006 0 --1005 758 0 --1008 -758 1007 0 --1007 1008 0 --1007 758 0 --1010 -758 1009 0 --1009 1010 0 --1009 758 0 --1011 -767 67 0 --67 1011 0 --67 767 0 --1012 -767 75 0 --75 1012 0 --75 767 0 --506 -767 59 0 --59 506 0 --59 767 0 --513 -767 70 0 --70 513 0 --70 767 0 --1013 -767 78 0 --78 1013 0 --78 767 0 --1015 -767 1014 0 --1014 1015 0 --1014 767 0 --504 -767 58 0 --58 504 0 --58 767 0 --1016 -767 64 0 --64 1016 0 --64 767 0 --510 -767 1017 0 --1017 510 0 --1017 767 0 --1019 -767 1018 0 --1018 1019 0 --1018 767 0 --1021 -767 1020 0 --1020 1021 0 --1020 767 0 --1022 -779 194 0 --194 1022 0 --194 779 0 --1023 -779 204 0 --204 1023 0 --204 779 0 --1024 -779 181 0 --181 1024 0 --181 779 0 --525 -779 198 0 --198 525 0 --198 779 0 --1025 -779 208 0 --208 1025 0 --208 779 0 --1027 -779 1026 0 --1026 1027 0 --1026 779 0 --521 -779 180 0 --180 521 0 --180 779 0 --1028 -779 190 0 --190 1028 0 --190 779 0 --1030 -779 1029 0 --1029 1030 0 --1029 779 0 --1032 -779 1031 0 --1031 1032 0 --1031 779 0 --1034 -779 1033 0 --1033 1034 0 --1033 779 0 --1035 -788 225 0 --225 1035 0 --225 788 0 --1036 -788 233 0 --233 1036 0 --233 788 0 --1037 -788 215 0 --215 1037 0 --215 788 0 --531 -788 228 0 --228 531 0 --228 788 0 --1038 -788 236 0 --236 1038 0 --236 788 0 --1040 -788 1039 0 --1039 1040 0 --1039 788 0 --527 -788 214 0 --214 527 0 --214 788 0 --1041 -788 222 0 --222 1041 0 --222 788 0 --1043 -788 1042 0 --1042 1043 0 --1042 788 0 --1045 -788 1044 0 --1044 1045 0 --1044 788 0 --1047 -788 1046 0 --1046 1047 0 --1046 788 0 --1048 -789 12 0 --12 1048 0 --12 789 0 --1049 -789 20 0 --20 1049 0 --20 789 0 --1050 -789 2 0 --2 1050 0 --2 789 0 --537 -789 15 0 --15 537 0 --15 789 0 --1051 -789 23 0 --23 1051 0 --23 789 0 --1053 -789 1052 0 --1052 1053 0 --1052 789 0 --533 -789 1 0 --1 533 0 --1 789 0 --1054 -789 9 0 --9 1054 0 --9 789 0 --1056 -789 1055 0 --1055 1056 0 --1055 789 0 --1058 -789 1057 0 --1057 1058 0 --1057 789 0 --1060 -789 1059 0 --1059 1060 0 --1059 789 0 --1061 -798 39 0 --39 1061 0 --39 798 0 --1062 -798 47 0 --47 1062 0 --47 798 0 --1063 -798 29 0 --29 1063 0 --29 798 0 --543 -798 42 0 --42 543 0 --42 798 0 --1064 -798 50 0 --50 1064 0 --50 798 0 --1066 -798 1065 0 --1065 1066 0 --1065 798 0 --539 -798 28 0 --28 539 0 --28 798 0 --1067 -798 36 0 --36 1067 0 --36 798 0 --1069 -798 1068 0 --1068 1069 0 --1068 798 0 --1071 -798 1070 0 --1070 1071 0 --1070 798 0 --1073 -798 1072 0 --1072 1073 0 --1072 798 0 --1074 -807 68 0 --68 1074 0 --68 807 0 --1075 -807 76 0 --76 1075 0 --76 807 0 --1076 -807 61 0 --61 1076 0 --61 807 0 --549 -807 71 0 --71 549 0 --71 807 0 --1077 -807 79 0 --79 1077 0 --79 807 0 --1079 -807 1078 0 --1078 1079 0 --1078 807 0 --545 -807 60 0 --60 545 0 --60 807 0 --1080 -807 65 0 --65 1080 0 --65 807 0 --1082 -807 1081 0 --1081 1082 0 --1081 807 0 --1084 -807 1083 0 --1083 1084 0 --1083 807 0 --1086 -807 1085 0 --1085 1086 0 --1085 807 0 --1087 -816 102 0 --102 1087 0 --102 816 0 --1088 -816 116 0 --116 1088 0 --116 816 0 --1089 -816 83 0 --83 1089 0 --83 816 0 --555 -816 108 0 --108 555 0 --108 816 0 --1090 -816 122 0 --122 1090 0 --122 816 0 --1092 -816 1091 0 --1091 1092 0 --1091 816 0 --551 -816 82 0 --82 551 0 --82 816 0 --1093 -816 96 0 --96 1093 0 --96 816 0 --1095 -816 1094 0 --1094 1095 0 --1094 816 0 --1097 -816 1096 0 --1096 1097 0 --1096 816 0 --1099 -816 1098 0 --1098 1099 0 --1098 816 0 --1100 -823 66 0 --66 1100 0 --66 823 0 --1101 -823 74 0 --74 1101 0 --74 823 0 --1102 -823 56 0 --56 1102 0 --56 823 0 --582 -823 69 0 --69 582 0 --69 823 0 --573 -823 77 0 --77 573 0 --77 823 0 --1104 -823 1103 0 --1103 1104 0 --1103 823 0 --567 -823 55 0 --55 567 0 --55 823 0 --1105 -823 63 0 --63 1105 0 --63 823 0 --1107 -823 1106 0 --1106 1107 0 --1106 823 0 --1109 -823 1108 0 --1108 1109 0 --1108 823 0 --1111 -823 1110 0 --1110 1111 0 --1110 823 0 --1112 -832 103 0 --103 1112 0 --103 832 0 --1113 -832 117 0 --117 1113 0 --117 832 0 --1114 -832 86 0 --86 1114 0 --86 832 0 --607 -832 109 0 --109 607 0 --109 832 0 --598 -832 123 0 --123 598 0 --123 832 0 --1116 -832 1115 0 --1115 1116 0 --1115 832 0 --592 -832 85 0 --85 592 0 --85 832 0 --1117 -832 97 0 --97 1117 0 --97 832 0 --1119 -832 1118 0 --1118 1119 0 --1118 832 0 --1121 -832 1120 0 --1120 1121 0 --1120 832 0 --1123 -832 1122 0 --1122 1123 0 --1122 832 0 --1124 -843 195 0 --195 1124 0 --195 843 0 --1125 -843 205 0 --205 1125 0 --205 843 0 --1126 -843 184 0 --184 1126 0 --184 843 0 --638 -843 199 0 --199 638 0 --199 843 0 --629 -843 209 0 --209 629 0 --209 843 0 --1128 -843 1127 0 --1127 1128 0 --1127 843 0 --623 -843 183 0 --183 623 0 --183 843 0 --1129 -843 191 0 --191 1129 0 --191 843 0 --1131 -843 1130 0 --1130 1131 0 --1130 843 0 --1133 -843 1132 0 --1132 1133 0 --1132 843 0 --1135 -843 1134 0 --1134 1135 0 --1134 843 0 --1136 -848 104 0 --104 1136 0 --104 848 0 --1137 -848 118 0 --118 1137 0 --118 848 0 --1138 -848 88 0 --88 1138 0 --88 848 0 --660 -848 110 0 --110 660 0 --110 848 0 --653 -848 124 0 --124 653 0 --124 848 0 --1140 -848 1139 0 --1139 1140 0 --1139 848 0 --647 -848 87 0 --87 647 0 --87 848 0 --1141 -848 98 0 --98 1141 0 --98 848 0 --1143 -848 1142 0 --1142 1143 0 --1142 848 0 --1145 -848 1144 0 --1144 1145 0 --1144 848 0 --1147 -848 1146 0 --1146 1147 0 --1146 848 0 --66 1150 0 --1150 66 0 --103 1151 0 --1151 103 0 --104 1151 0 --1151 104 0 --105 1151 0 --1151 105 0 --106 1151 0 --1151 106 0 --195 1154 0 --1154 195 0 --196 1154 0 --1154 196 0 --197 1154 0 --1154 197 0 --227 1155 0 --1155 227 0 --20 1156 0 --1156 20 0 --21 1156 0 --1156 21 0 --22 1156 0 --1156 22 0 --47 1157 0 --1157 47 0 --48 1157 0 --1157 48 0 --49 1157 0 --1157 49 0 --74 1158 0 --1158 74 0 --75 1158 0 --1158 75 0 --76 1158 0 --1158 76 0 --116 1159 0 --1159 116 0 --117 1159 0 --1159 117 0 --118 1159 0 --1159 118 0 --119 1159 0 --1159 119 0 --120 1159 0 --1159 120 0 --121 1159 0 --1159 121 0 --163 1160 0 --1160 163 0 --176 1161 0 --1161 176 0 --204 1162 0 --1162 204 0 --205 1162 0 --1162 205 0 --206 1162 0 --1162 206 0 --207 1162 0 --1162 207 0 --233 1163 0 --1163 233 0 --234 1163 0 --1163 234 0 --235 1163 0 --1163 235 0 --56 1166 0 --1166 56 0 --86 1167 0 --1167 86 0 --88 1167 0 --1167 88 0 --90 1167 0 --1167 90 0 --92 1167 0 --1167 92 0 --184 1170 0 --1170 184 0 --186 1170 0 --1170 186 0 --188 1170 0 --1170 188 0 --220 1171 0 --1171 220 0 --69 1174 0 --1174 69 0 --109 1175 0 --1175 109 0 --110 1175 0 --1175 110 0 --111 1175 0 --1175 111 0 --112 1175 0 --1175 112 0 --199 1178 0 --1178 199 0 --200 1178 0 --1178 200 0 --201 1178 0 --1178 201 0 --230 1179 0 --1179 230 0 --63 1190 0 --1190 63 0 --97 1191 0 --1191 97 0 --98 1191 0 --1191 98 0 --99 1191 0 --1191 99 0 --100 1191 0 --1191 100 0 --191 1194 0 --1194 191 0 --192 1194 0 --1194 192 0 --193 1194 0 --1194 193 0 --224 1195 0 --1195 224 0 --1106 1198 0 --1198 1106 0 --1118 1199 0 --1199 1118 0 --1142 1199 0 --1199 1142 0 --871 1199 0 --1199 871 0 --895 1199 0 --1199 895 0 --1130 1202 0 --1202 1130 0 --859 1202 0 --1202 859 0 --883 1202 0 --1202 883 0 --928 1203 0 --1203 928 0 --940 1204 0 --1204 940 0 --919 1205 0 --1205 919 0 --1018 1206 0 --1206 1018 0 --951 1207 0 --1207 951 0 --908 1208 0 --1208 908 0 --929 1211 0 --1211 929 0 --12 1148 0 --13 1148 0 --14 1148 0 --1148 12 13 14 0 --39 1149 0 --40 1149 0 --41 1149 0 --1149 39 40 41 0 --66 1150 0 --67 1150 0 --68 1150 0 --1150 66 67 68 0 --102 1151 0 --103 1151 0 --104 1151 0 --105 1151 0 --106 1151 0 --107 1151 0 --1151 102 103 104 105 106 107 0 --159 1152 0 --1152 159 0 --172 1153 0 --1153 172 0 --194 1154 0 --195 1154 0 --196 1154 0 --197 1154 0 --1154 194 195 196 197 0 --225 1155 0 --226 1155 0 --227 1155 0 --1155 225 226 227 0 --20 1156 0 --21 1156 0 --22 1156 0 --1156 20 21 22 0 --47 1157 0 --48 1157 0 --49 1157 0 --1157 47 48 49 0 --74 1158 0 --75 1158 0 --76 1158 0 --1158 74 75 76 0 --116 1159 0 --117 1159 0 --118 1159 0 --119 1159 0 --120 1159 0 --121 1159 0 --1159 116 117 118 119 120 121 0 --163 1160 0 --1160 163 0 --176 1161 0 --1161 176 0 --204 1162 0 --205 1162 0 --206 1162 0 --207 1162 0 --1162 204 205 206 207 0 --233 1163 0 --234 1163 0 --235 1163 0 --1163 233 234 235 0 --2 1164 0 --5 1164 0 --7 1164 0 --1164 2 5 7 0 --29 1165 0 --32 1165 0 --34 1165 0 --1165 29 32 34 0 --56 1166 0 --59 1166 0 --61 1166 0 --1166 56 59 61 0 --83 1167 0 --86 1167 0 --88 1167 0 --90 1167 0 --92 1167 0 --94 1167 0 --1167 83 86 88 90 92 94 0 --155 1168 0 --1168 155 0 --168 1169 0 --1169 168 0 --181 1170 0 --184 1170 0 --186 1170 0 --188 1170 0 --1170 181 184 186 188 0 --215 1171 0 --218 1171 0 --220 1171 0 --1171 215 218 220 0 --15 1172 0 --16 1172 0 --17 1172 0 --1172 15 16 17 0 --42 1173 0 --43 1173 0 --44 1173 0 --1173 42 43 44 0 --69 1174 0 --70 1174 0 --71 1174 0 --1174 69 70 71 0 --108 1175 0 --109 1175 0 --110 1175 0 --111 1175 0 --112 1175 0 --113 1175 0 --1175 108 109 110 111 112 113 0 --160 1176 0 --1176 160 0 --173 1177 0 --1177 173 0 --198 1178 0 --199 1178 0 --200 1178 0 --201 1178 0 --1178 198 199 200 201 0 --228 1179 0 --229 1179 0 --230 1179 0 --1179 228 229 230 0 --23 1212 0 --24 1212 0 --25 1212 0 --1212 23 24 25 0 --50 1213 0 --51 1213 0 --52 1213 0 --1213 50 51 52 0 --77 1214 0 --78 1214 0 --79 1214 0 --1214 77 78 79 0 --122 1215 0 --123 1215 0 --124 1215 0 --125 1215 0 --126 1215 0 --127 1215 0 --1215 122 123 124 125 126 127 0 --164 1216 0 --1216 164 0 --177 1217 0 --1217 177 0 --208 1218 0 --209 1218 0 --210 1218 0 --211 1218 0 --1218 208 209 210 211 0 --236 1219 0 --237 1219 0 --238 1219 0 --1219 236 237 238 0 --1052 1180 0 --988 1180 0 --936 1180 0 --1180 1052 988 936 0 --1065 1181 0 --1002 1181 0 --915 1181 0 --1181 1065 1002 915 0 --1103 1182 0 --1014 1182 0 --1078 1182 0 --1182 1103 1014 1078 0 --1091 1183 0 --1115 1183 0 --1139 1183 0 --868 1183 0 --892 1183 0 --947 1183 0 --1183 1091 1115 1139 868 892 947 0 --904 1184 0 --1184 904 0 --960 1185 0 --1185 960 0 --1026 1186 0 --1127 1186 0 --856 1186 0 --880 1186 0 --1186 1026 1127 856 880 0 --1039 1187 0 --974 1187 0 --925 1187 0 --1187 1039 974 925 0 --1 1220 0 --4 1220 0 --6 1220 0 --1220 1 4 6 0 --28 1221 0 --31 1221 0 --33 1221 0 --1221 28 31 33 0 --55 1222 0 --58 1222 0 --60 1222 0 --1222 55 58 60 0 --82 1223 0 --85 1223 0 --87 1223 0 --89 1223 0 --91 1223 0 --93 1223 0 --1223 82 85 87 89 91 93 0 --154 1224 0 --1224 154 0 --167 1225 0 --1225 167 0 --180 1226 0 --183 1226 0 --185 1226 0 --187 1226 0 --1226 180 183 185 187 0 --214 1227 0 --217 1227 0 --219 1227 0 --1227 214 217 219 0 --9 1188 0 --10 1188 0 --11 1188 0 --1188 9 10 11 0 --36 1189 0 --37 1189 0 --38 1189 0 --1189 36 37 38 0 --63 1190 0 --64 1190 0 --65 1190 0 --1190 63 64 65 0 --96 1191 0 --97 1191 0 --98 1191 0 --99 1191 0 --100 1191 0 --101 1191 0 --1191 96 97 98 99 100 101 0 --158 1192 0 --1192 158 0 --171 1193 0 --1193 171 0 --190 1194 0 --191 1194 0 --192 1194 0 --193 1194 0 --1194 190 191 192 193 0 --222 1195 0 --223 1195 0 --224 1195 0 --1195 222 223 224 0 --1055 1196 0 --991 1196 0 --939 1196 0 --1196 1055 991 939 0 --1068 1197 0 --1005 1197 0 --918 1197 0 --1197 1068 1005 918 0 --1106 1198 0 --1017 1198 0 --1081 1198 0 --1198 1106 1017 1081 0 --1094 1199 0 --1118 1199 0 --1142 1199 0 --871 1199 0 --895 1199 0 --950 1199 0 --1199 1094 1118 1142 871 895 950 0 --907 1200 0 --1200 907 0 --963 1201 0 --1201 963 0 --1029 1202 0 --1130 1202 0 --859 1202 0 --883 1202 0 --1202 1029 1130 859 883 0 --1042 1203 0 --977 1203 0 --928 1203 0 --1203 1042 977 928 0 --1057 1204 0 --993 1204 0 --940 1204 0 --1204 1057 993 940 0 --1070 1205 0 --1007 1205 0 --919 1205 0 --1205 1070 1007 919 0 --1108 1206 0 --1018 1206 0 --1083 1206 0 --1206 1108 1018 1083 0 --1096 1207 0 --1120 1207 0 --1144 1207 0 --873 1207 0 --897 1207 0 --951 1207 0 --1207 1096 1120 1144 873 897 951 0 --908 1208 0 --1208 908 0 --965 1209 0 --1209 965 0 --1031 1210 0 --1132 1210 0 --861 1210 0 --885 1210 0 --1210 1031 1132 861 885 0 --1044 1211 0 --979 1211 0 --929 1211 0 --1211 1044 979 929 0 --1059 1228 0 --995 1228 0 --942 1228 0 --1228 1059 995 942 0 --1072 1229 0 --1009 1229 0 --921 1229 0 --1229 1072 1009 921 0 --1110 1230 0 --1020 1230 0 --1085 1230 0 --1230 1110 1020 1085 0 --1098 1231 0 --1122 1231 0 --1146 1231 0 --875 1231 0 --899 1231 0 --953 1231 0 --1231 1098 1122 1146 875 899 953 0 --910 1232 0 --1232 910 0 --967 1233 0 --1233 967 0 --1033 1234 0 --1134 1234 0 --863 1234 0 --887 1234 0 --1234 1033 1134 863 887 0 --1046 1235 0 --981 1235 0 --931 1235 0 --1235 1046 981 931 0 From 26751b572df80107d6b418f12a3473e0eec55fb4 Mon Sep 17 00:00:00 2001 From: BenjaminArp <101420246+BenjaminArp@users.noreply.github.com> Date: Thu, 9 Apr 2026 12:31:57 +0200 Subject: [PATCH 05/52] formatter --- .../dev/arcovia/mitigation/smt/Mechanic.java | 28 +- .../mitigation/evaluation/tests/TestBase.java | 479 ++++++++---------- .../mitigation/evaluation/tests/ilpTest.java | 2 +- .../mitigation/evaluation/tests/satTest.java | 14 +- .../mitigation/evaluation/tests/smtTest.java | 2 +- 5 files changed, 230 insertions(+), 295 deletions(-) diff --git a/bundles/dev.arcovia.mitigation.smt/src/dev/arcovia/mitigation/smt/Mechanic.java b/bundles/dev.arcovia.mitigation.smt/src/dev/arcovia/mitigation/smt/Mechanic.java index 61a3c646..3a37ab47 100644 --- a/bundles/dev.arcovia.mitigation.smt/src/dev/arcovia/mitigation/smt/Mechanic.java +++ b/bundles/dev.arcovia.mitigation.smt/src/dev/arcovia/mitigation/smt/Mechanic.java @@ -11,35 +11,33 @@ import dev.arcovia.mitigation.smt.preprocess.Preprocess; import dev.arcovia.mitigation.smt.preprocess.PreprocessingResult; -public class Mechanic implements MitigationApproach{ - +public class Mechanic implements MitigationApproach { + private Config config = null; DataFlowDiagramAndDictionary dfd; List constraints; - + public Mechanic(DataFlowDiagramAndDictionary dfd, List constraints) { this.dfd = dfd; this.constraints = constraints; }; - + @Override public DataFlowDiagramAndDictionary repair() throws Exception { if (config == null) { - config = new ConfigBuilder().build(); - } - Preprocess preprocces = new Preprocess(); - PreprocessingResult preprocessingResult = preprocces.preprocess(dfd, constraints, config.onlyViolatingTFGs()); - SMT smt = new SMT(preprocessingResult, constraints, config); - var result = smt.repair(); + config = new ConfigBuilder().build(); + } + Preprocess preprocces = new Preprocess(); + PreprocessingResult preprocessingResult = preprocces.preprocess(dfd, constraints, config.onlyViolatingTFGs()); + SMT smt = new SMT(preprocessingResult, constraints, config); + var result = smt.repair(); return result.repairedDFD(); } @Override public void restrictToLabelAddition() { - config = new ConfigBuilder().removeDataLabels(false) - .removeNodeLabels(false) - .build(); - + config = new ConfigBuilder().removeDataLabels(false).removeNodeLabels(false).build(); + } - + } diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java index 83b3d9bc..7bcbce0f 100644 --- a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java +++ b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java @@ -1,6 +1,5 @@ package dev.arcovia.mitigation.evaluation.tests; - import static java.util.Map.entry; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -38,208 +37,158 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.core.type.TypeReference; - - public abstract class TestBase { - final AnalysisConstraint entryViaGatewayOnly = new ConstraintDSL().ofData() - .withLabel("Stereotype", "entrypoint") - .withoutLabel("Stereotype", "gateway") - .neverFlows() - .toVertex() - .withCharacteristic("Stereotype", "internal") - .create(); - final AnalysisConstraint nonInternalGateway = new ConstraintDSL().ofData() - .neverFlows() - .toVertex() - .withCharacteristic("Stereotype", "gateway") - .withCharacteristic("Stereotype", "internal") - .create(); - final AnalysisConstraint authenticatedRequest = new ConstraintDSL().ofData() - .withoutLabel("Stereotype", "authenticated_request") - .neverFlows() - .toVertex() - .withCharacteristic("Stereotype", "internal") - .create(); - final AnalysisConstraint transformedEntry = new ConstraintDSL().ofData() - .withLabel("Stereotype", "entrypoint") - .withoutLabel("Stereotype", "transform_identity_representation") - .neverFlows() - .toVertex() - .withCharacteristic("Stereotype", "internal") - .create(); - final AnalysisConstraint tokenValidation = new ConstraintDSL().ofData() - .withLabel("Stereotype", "entrypoint") - .withoutLabel("Stereotype", "token_validation") - .neverFlows() - .toVertex() - .withCharacteristic("Stereotype", "internal") - .create(); - final AnalysisConstraint loginAttempts = new ConstraintDSL().ofData() - .neverFlows() - .toVertex() - .withCharacteristic("Stereotype", "authorization_server") - .withoutCharacteristic("Stereotype", "login_attempts_regulation") - .create(); - final AnalysisConstraint encryptedEntry = new ConstraintDSL().ofData() - .withLabel("Stereotype", "entrypoint") - .withoutLabel("Stereotype", "encrypted_connection") - .neverFlows() - .toVertex() - .create(); - final AnalysisConstraint encryptedInternals = new ConstraintDSL().ofData() - .withLabel("Stereotype", "internal") - .withoutLabel("Stereotype", "encrypted_connection") - .neverFlows() - .toVertex() - .create(); - final AnalysisConstraint localLogging = new ConstraintDSL().ofData() - .neverFlows() - .toVertex() - .withCharacteristic("Stereotype", "internal") - .withoutCharacteristic("Stereotype", "local_logging") - .create(); - final AnalysisConstraint logSanitization = new ConstraintDSL().ofData() - .neverFlows() - .toVertex() - .withCharacteristic("Stereotype", "local_logging") - .withoutCharacteristic("Stereotype", "log_sanitization") - .create(); - - final List analysisConstraints = List.of(entryViaGatewayOnly, nonInternalGateway, authenticatedRequest, transformedEntry, - tokenValidation, loginAttempts, encryptedEntry, encryptedInternals, localLogging, logSanitization); - - - protected abstract MitigationApproach getApproach(DataFlowDiagramAndDictionary dfd, List constraints); - + final AnalysisConstraint entryViaGatewayOnly = new ConstraintDSL().ofData().withLabel("Stereotype", "entrypoint") + .withoutLabel("Stereotype", "gateway").neverFlows().toVertex().withCharacteristic("Stereotype", "internal") + .create(); + final AnalysisConstraint nonInternalGateway = new ConstraintDSL().ofData().neverFlows().toVertex() + .withCharacteristic("Stereotype", "gateway").withCharacteristic("Stereotype", "internal").create(); + final AnalysisConstraint authenticatedRequest = new ConstraintDSL().ofData() + .withoutLabel("Stereotype", "authenticated_request").neverFlows().toVertex() + .withCharacteristic("Stereotype", "internal").create(); + final AnalysisConstraint transformedEntry = new ConstraintDSL().ofData().withLabel("Stereotype", "entrypoint") + .withoutLabel("Stereotype", "transform_identity_representation").neverFlows().toVertex() + .withCharacteristic("Stereotype", "internal").create(); + final AnalysisConstraint tokenValidation = new ConstraintDSL().ofData().withLabel("Stereotype", "entrypoint") + .withoutLabel("Stereotype", "token_validation").neverFlows().toVertex() + .withCharacteristic("Stereotype", "internal").create(); + final AnalysisConstraint loginAttempts = new ConstraintDSL().ofData().neverFlows().toVertex() + .withCharacteristic("Stereotype", "authorization_server") + .withoutCharacteristic("Stereotype", "login_attempts_regulation").create(); + final AnalysisConstraint encryptedEntry = new ConstraintDSL().ofData().withLabel("Stereotype", "entrypoint") + .withoutLabel("Stereotype", "encrypted_connection").neverFlows().toVertex().create(); + final AnalysisConstraint encryptedInternals = new ConstraintDSL().ofData().withLabel("Stereotype", "internal") + .withoutLabel("Stereotype", "encrypted_connection").neverFlows().toVertex().create(); + final AnalysisConstraint localLogging = new ConstraintDSL().ofData().neverFlows().toVertex() + .withCharacteristic("Stereotype", "internal").withoutCharacteristic("Stereotype", "local_logging").create(); + final AnalysisConstraint logSanitization = new ConstraintDSL().ofData().neverFlows().toVertex() + .withCharacteristic("Stereotype", "local_logging").withoutCharacteristic("Stereotype", "log_sanitization") + .create(); + + final List analysisConstraints = List.of(entryViaGatewayOnly, nonInternalGateway, + authenticatedRequest, transformedEntry, tokenValidation, loginAttempts, encryptedEntry, encryptedInternals, + localLogging, logSanitization); + + protected abstract MitigationApproach getApproach(DataFlowDiagramAndDictionary dfd, + List constraints); + protected abstract String getApproachName(); - + static Stream tuhhModelProvider() { - return TuhhModels.getTuhhModels() - .entrySet() - .stream() - .flatMap(entity -> entity.getValue().stream() - .map(model -> Arguments.of(entity.getKey(), model))); + return TuhhModels.getTuhhModels().entrySet().stream() + .flatMap(entity -> entity.getValue().stream().map(model -> Arguments.of(entity.getKey(), model))); } - + @ParameterizedTest @MethodSource("tuhhModelProvider") void evaluateEffectiveness(String model, int variant) throws Exception { Thread.sleep(2); String name = model + "_" + variant; - + var dfd = loadDFD(model, name); - + int violationsBefore = determineViolations(dfd, analysisConstraints); - + MitigationApproach approach = getApproach(dfd, analysisConstraints); - - var repairedDFD = approach.repair(); - + + var repairedDFD = approach.repair(); + int violationsAfter = determineViolations(repairedDFD, analysisConstraints); - + assertEquals(0, violationsAfter); - - ObjectMapper mapper = new ObjectMapper(); - Path out = Path.of("results/violation_results.json"); - List existing = Files.exists(out) - ? mapper.readValue(out.toFile(), new TypeReference>() {}) - : new ArrayList<>(); + ObjectMapper mapper = new ObjectMapper(); + Path out = Path.of("results/violation_results.json"); + + List existing = Files.exists(out) + ? mapper.readValue(out.toFile(), new TypeReference>() { + }) + : new ArrayList<>(); - existing.add(new ViolationResult(getApproachName(),name, violationsBefore, violationsAfter)); - mapper.writerWithDefaultPrettyPrinter().writeValue(out.toFile(), existing); + existing.add(new ViolationResult(getApproachName(), name, violationsBefore, violationsAfter)); + mapper.writerWithDefaultPrettyPrinter().writeValue(out.toFile(), existing); } - - + static Stream tuhhModelProviderBaseModel() { - return TuhhModels.getTuhhModels() - .entrySet() - .stream() - .filter(model -> model.getValue().contains(0)) - .flatMap(entity -> entity.getValue().stream() - .map(model -> Arguments.of(entity.getKey(), model))); + return TuhhModels.getTuhhModels().entrySet().stream().filter(model -> model.getValue().contains(0)) + .flatMap(entity -> entity.getValue().stream().map(model -> Arguments.of(entity.getKey(), model))); } - + final Map minCosts = Map.ofEntries(entry(new Label("Stereotype", "gateway"), 1), - entry(new Label("Stereotype", "authenticated_request"), 1), entry(new Label("Stereotype", "transform_identity_representation"), 1), - entry(new Label("Stereotype", "token_validation"), 1), entry(new Label("Stereotype", "login_attempts_regulation"), 1), - entry(new Label("Stereotype", "encrypted_connection"), 1), entry(new Label("Stereotype", "log_sanitization"), 1), - entry(new Label("Stereotype", "local_logging"), 1)); + entry(new Label("Stereotype", "authenticated_request"), 1), + entry(new Label("Stereotype", "transform_identity_representation"), 1), + entry(new Label("Stereotype", "token_validation"), 1), + entry(new Label("Stereotype", "login_attempts_regulation"), 1), + entry(new Label("Stereotype", "encrypted_connection"), 1), + entry(new Label("Stereotype", "log_sanitization"), 1), entry(new Label("Stereotype", "local_logging"), 1)); @ParameterizedTest @MethodSource("tuhhModelProviderBaseModel") void evaluateCost(String model, int variant) throws Exception { Thread.sleep(2); String name = model + "_" + 0; - + List constraints = switch (variant) { - case 1 -> List.of(entryViaGatewayOnly, nonInternalGateway); - case 2 -> List.of(authenticatedRequest); - case 4 -> List.of(transformedEntry); - case 5 -> List.of(tokenValidation); - case 7 -> List.of(encryptedEntry, entryViaGatewayOnly, nonInternalGateway); - case 8 -> List.of(encryptedInternals); - case 10 -> List.of(localLogging); - case 11 -> List.of(localLogging, logSanitization); - default -> null; - }; - if (constraints == null) { + case 1 -> List.of(entryViaGatewayOnly, nonInternalGateway); + case 2 -> List.of(authenticatedRequest); + case 4 -> List.of(transformedEntry); + case 5 -> List.of(tokenValidation); + case 7 -> List.of(encryptedEntry, entryViaGatewayOnly, nonInternalGateway); + case 8 -> List.of(encryptedInternals); + case 10 -> List.of(localLogging); + case 11 -> List.of(localLogging, logSanitization); + default -> null; + }; + if (constraints == null) { return; } - + var dfd = loadDFD(model, name); - + MitigationApproach approach = getApproach(dfd, constraints); - - var repairedDFD = approach.repair(); - - + + var repairedDFD = approach.repair(); + List satConstraint = new ArrayList<>(); for (var constraint : constraints) { - var translation = new CNFTranslation(constraint); - dev.arcovia.mitigation.sat.Constraint c = translation.constructCNF() - .get(0); - satConstraint.add(c); - } - - var approachCost = new ModelCostCalculator(repairedDFD, satConstraint, minCosts).calculateCostWithoutForwarding(); - - var tuhhCost = new ModelCostCalculator(loadDFD(model, model + "_" + variant), satConstraint, minCosts) - .calculateCostWithoutForwarding(); - - ObjectMapper mapper = new ObjectMapper(); - Path out = Path.of("results/efficiency_results.json"); - - List existing = Files.exists(out) - ? mapper.readValue(out.toFile(), new TypeReference>() {}) - : new ArrayList<>(); - - existing.add(new CostResult(getApproachName(),model, variant, approachCost, tuhhCost)); - mapper.writerWithDefaultPrettyPrinter().writeValue(out.toFile(), existing); - + var translation = new CNFTranslation(constraint); + dev.arcovia.mitigation.sat.Constraint c = translation.constructCNF().get(0); + satConstraint.add(c); + } + + var approachCost = new ModelCostCalculator(repairedDFD, satConstraint, minCosts) + .calculateCostWithoutForwarding(); + + var tuhhCost = new ModelCostCalculator(loadDFD(model, model + "_" + variant), satConstraint, minCosts) + .calculateCostWithoutForwarding(); + + ObjectMapper mapper = new ObjectMapper(); + Path out = Path.of("results/efficiency_results.json"); + + List existing = Files.exists(out) + ? mapper.readValue(out.toFile(), new TypeReference>() { + }) + : new ArrayList<>(); + + existing.add(new CostResult(getApproachName(), model, variant, approachCost, tuhhCost)); + mapper.writerWithDefaultPrettyPrinter().writeValue(out.toFile(), existing); + } - - + private static final String SCALE_DFD = "models/sourceSink.json"; private static final AnalysisConstraint scalabilityConstraint = new ConstraintDSL().ofData() - .withLabel("Sensitivity", "Personal") - .withoutLabel("Encryption", "encrypted") - .neverFlows() - .toVertex() - .withCharacteristic("Location", "nonEU") - .create(); + .withLabel("Sensitivity", "Personal").withoutLabel("Encryption", "encrypted").neverFlows().toVertex() + .withCharacteristic("Location", "nonEU").create(); - private static final List TFG_LENGTH_SCALINGS = - List.of(0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550); + private static final List TFG_LENGTH_SCALINGS = List.of(0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, + 550); - private static final List TFG_AMOUNT_SCALINGS = - List.of(0, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, - 11000, 12000, 13000, 14000, 15000); + private static final List TFG_AMOUNT_SCALINGS = List.of(0, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, + 9000, 10000, 11000, 12000, 13000, 14000, 15000); - private static final List CONSTRAINT_SCALINGS = - List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 40, 60, 80, 100, 120, 140, 160, 180); + private static final List CONSTRAINT_SCALINGS = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 40, 60, 80, 100, 120, 140, 160, 180); private static final int MEASUREMENT_REPEATS = 3; private static final int FLUSH_EVERY = 3; @@ -248,105 +197,105 @@ void evaluateCost(String model, int variant) throws Exception { @Test @Disabled("Long-running scalability experiment — run via evaluateScalability()") void evaluateScalability() throws Throwable { - Path outDir = Paths.get("results"); - Files.createDirectories(outDir); - Path csv = outDir.resolve(getApproachName().toLowerCase() + "_performance_measurements.json"); - Set done = MeasurementWriter.loadDoneRunIds(csv); - - try (MeasurementWriter writer = new MeasurementWriter(csv, done, FLUSH_EVERY)) { - scaleTFGLength(writer); - scaleTFGAmount(writer); - scaleConstraints(writer); - } + Path outDir = Paths.get("results"); + Files.createDirectories(outDir); + Path csv = outDir.resolve(getApproachName().toLowerCase() + "_performance_measurements.json"); + Set done = MeasurementWriter.loadDoneRunIds(csv); + + try (MeasurementWriter writer = new MeasurementWriter(csv, done, FLUSH_EVERY)) { + scaleTFGLength(writer); + scaleTFGAmount(writer); + scaleConstraints(writer); + } } - - + private void scaleTFGLength(MeasurementWriter writer) throws Throwable { - for (int scaling : TFG_LENGTH_SCALINGS) { - RunConfig cfg = RunConfig.forTFG("tfg_length", scaling, 0); - runWithWarmupAndRepeats(writer, cfg, () -> { - var dfd = new Scaler(SCALE_DFD).scaleTFGLength(scaling); - getApproach(dfd, List.of(scalabilityConstraint)).repair(); - }); - } + for (int scaling : TFG_LENGTH_SCALINGS) { + RunConfig cfg = RunConfig.forTFG("tfg_length", scaling, 0); + runWithWarmupAndRepeats(writer, cfg, () -> { + var dfd = new Scaler(SCALE_DFD).scaleTFGLength(scaling); + getApproach(dfd, List.of(scalabilityConstraint)).repair(); + }); + } } private void scaleTFGAmount(MeasurementWriter writer) throws Throwable { - for (int scaling : TFG_AMOUNT_SCALINGS) { - RunConfig cfg = RunConfig.forTFG("tfg_amount", 0, scaling); - runWithWarmupAndRepeats(writer, cfg, () -> { - var dfd = new Scaler(SCALE_DFD).scaleTFGAmount(scaling); - getApproach(dfd, List.of(scalabilityConstraint)).repair(); - }); - } + for (int scaling : TFG_AMOUNT_SCALINGS) { + RunConfig cfg = RunConfig.forTFG("tfg_amount", 0, scaling); + runWithWarmupAndRepeats(writer, cfg, () -> { + var dfd = new Scaler(SCALE_DFD).scaleTFGAmount(scaling); + getApproach(dfd, List.of(scalabilityConstraint)).repair(); + }); + } } private void scaleConstraints(MeasurementWriter writer) throws Throwable { - int dummyLabels = 600; - for (int s : CONSTRAINT_SCALINGS) - runConstraintCase(writer, dummyLabels, "constraints_amountConstraint", s, 1, 1, 1, 1); - for (int s : CONSTRAINT_SCALINGS) - runConstraintCase(writer, dummyLabels, "constraints_numberWithLabel", 1, s, 1, 1, 1); - for (int s : CONSTRAINT_SCALINGS) - runConstraintCase(writer, dummyLabels, "constraints_numberWithoutLabel", 1, 1, s, 1, 1); - for (int s : CONSTRAINT_SCALINGS) - runConstraintCase(writer, dummyLabels, "constraints_numberWithCharacteristic", 1, 1, 1, s, 1); - for (int s : CONSTRAINT_SCALINGS) - runConstraintCase(writer, dummyLabels, "constraints_numberWithoutCharacteristic", 1, 1, 1, 1, s); - for (int s : CONSTRAINT_SCALINGS) { - int half = s / 2; - runConstraintCase(writer, dummyLabels, "constraints_allTogether", s, half, half, half, half); - } + int dummyLabels = 600; + for (int s : CONSTRAINT_SCALINGS) + runConstraintCase(writer, dummyLabels, "constraints_amountConstraint", s, 1, 1, 1, 1); + for (int s : CONSTRAINT_SCALINGS) + runConstraintCase(writer, dummyLabels, "constraints_numberWithLabel", 1, s, 1, 1, 1); + for (int s : CONSTRAINT_SCALINGS) + runConstraintCase(writer, dummyLabels, "constraints_numberWithoutLabel", 1, 1, s, 1, 1); + for (int s : CONSTRAINT_SCALINGS) + runConstraintCase(writer, dummyLabels, "constraints_numberWithCharacteristic", 1, 1, 1, s, 1); + for (int s : CONSTRAINT_SCALINGS) + runConstraintCase(writer, dummyLabels, "constraints_numberWithoutCharacteristic", 1, 1, 1, 1, s); + for (int s : CONSTRAINT_SCALINGS) { + int half = s / 2; + runConstraintCase(writer, dummyLabels, "constraints_allTogether", s, half, half, half, half); + } } - private void runConstraintCase(MeasurementWriter writer, int dummyLabels, String name, - int amount, int withLabel, int withoutLabel, int withChar, int withoutChar) throws Throwable { - RunConfig cfg = RunConfig.forConstraints(name, amount, withLabel, withoutLabel, - withChar, withoutChar, dummyLabels); - runWithWarmupAndRepeats(writer, cfg, () -> { - Scaler scaler = new Scaler(SCALE_DFD); - DataFlowDiagramAndDictionary dfd = scaler.scaleLabels(dummyLabels); - List constraints = scaler.scaleConstraint(amount, withLabel, withoutLabel, - withChar, withoutChar, dummyLabels); - getApproach(dfd, constraints).repair(); - }); + private void runConstraintCase(MeasurementWriter writer, int dummyLabels, String name, int amount, int withLabel, + int withoutLabel, int withChar, int withoutChar) throws Throwable { + RunConfig cfg = RunConfig.forConstraints(name, amount, withLabel, withoutLabel, withChar, withoutChar, + dummyLabels); + runWithWarmupAndRepeats(writer, cfg, () -> { + Scaler scaler = new Scaler(SCALE_DFD); + DataFlowDiagramAndDictionary dfd = scaler.scaleLabels(dummyLabels); + List constraints = scaler.scaleConstraint(amount, withLabel, withoutLabel, withChar, + withoutChar, dummyLabels); + getApproach(dfd, constraints).repair(); + }); } - - private void runWithWarmupAndRepeats(MeasurementWriter writer, RunConfig cfg, - RunnableExperiment experiment) throws Throwable { - if (!WARMUP) { - try { - experiment.run(); - WARMUP = true; - } catch (Throwable t) { throw new RuntimeException(t); } - } - for (int i = 0; i < MEASUREMENT_REPEATS; i++) { - if (writer.isDone(MeasurementWriter.runId(cfg, "measurement", i))) continue; - timeMeasurement timer = new timeMeasurement(); - try { - timer.start(); - experiment.run(); - timer.stop(); - writer.append(cfg, timer, "measurement", i); - } catch (OutOfMemoryError oom) { - writer.appendFailure(cfg, "measurement", i, "OutOfMemoryError"); - throw oom; - } catch (Throwable t) { - String msg = t.getMessage(); - writer.appendFailure(cfg, "measurement", i, - t.getClass().getSimpleName() + ": " + (msg != null ? msg.substring(0, Math.min(200, msg.length())) : "")); - throw t; - } - } + private void runWithWarmupAndRepeats(MeasurementWriter writer, RunConfig cfg, RunnableExperiment experiment) + throws Throwable { + if (!WARMUP) { + try { + experiment.run(); + WARMUP = true; + } catch (Throwable t) { + throw new RuntimeException(t); + } + } + for (int i = 0; i < MEASUREMENT_REPEATS; i++) { + if (writer.isDone(MeasurementWriter.runId(cfg, "measurement", i))) + continue; + timeMeasurement timer = new timeMeasurement(); + try { + timer.start(); + experiment.run(); + timer.stop(); + writer.append(cfg, timer, "measurement", i); + } catch (OutOfMemoryError oom) { + writer.appendFailure(cfg, "measurement", i, "OutOfMemoryError"); + throw oom; + } catch (Throwable t) { + String msg = t.getMessage(); + writer.appendFailure(cfg, "measurement", i, t.getClass().getSimpleName() + ": " + + (msg != null ? msg.substring(0, Math.min(200, msg.length())) : "")); + throw t; + } + } } @FunctionalInterface - private interface RunnableExperiment { void run() throws Exception; } - - - - + private interface RunnableExperiment { + void run() throws Exception; + } + private int determineViolations(DataFlowDiagramAndDictionary dfd, List constraints) { var resourceProvider = new DFDModelResourceProvider(dfd.dataDictionary(), dfd.dataFlowDiagram()); var analysis = new DFDDataFlowAnalysisBuilder().standalone().useCustomResourceProvider(resourceProvider) @@ -366,30 +315,18 @@ private int determineViolations(DataFlowDiagramAndDictionary dfd, List constraints) { diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java index 405045f7..16e20c23 100644 --- a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java +++ b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/satTest.java @@ -11,18 +11,18 @@ import dev.arcovia.mitigation.sat.MitigationApproach; import dev.arcovia.mitigation.sat.dsl.CNFTranslation; -public class satTest extends TestBase{ +public class satTest extends TestBase { @Override protected MitigationApproach getApproach(DataFlowDiagramAndDictionary dfd, List constraints) { List translatedConstraints = new ArrayList<>(); - + for (var constraint : constraints) { - var translation = new CNFTranslation(constraint); - translatedConstraints.addAll(translation.constructCNF()); - } - - return new Mechanic(dfd, " ",translatedConstraints); + var translation = new CNFTranslation(constraint); + translatedConstraints.addAll(translation.constructCNF()); + } + + return new Mechanic(dfd, " ", translatedConstraints); } @Override diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/smtTest.java b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/smtTest.java index aeeb7bbd..92d37664 100644 --- a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/smtTest.java +++ b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/smtTest.java @@ -8,7 +8,7 @@ import dev.arcovia.mitigation.sat.MitigationApproach; import dev.arcovia.mitigation.smt.Mechanic; -public class smtTest extends TestBase{ +public class smtTest extends TestBase { @Override protected MitigationApproach getApproach(DataFlowDiagramAndDictionary dfd, List constraints) { From ba0c37e23bf8fdbf33b89819811ceeb883b299b5 Mon Sep 17 00:00:00 2001 From: BenjaminArp <101420246+BenjaminArp@users.noreply.github.com> Date: Fri, 10 Apr 2026 13:56:19 +0200 Subject: [PATCH 06/52] Add edgecase handling for ILP & Test Case --- .../arcovia/mitigation/ilp/Constraint.java | 2 ++ .../mitigation/ilp/MitigationStrategy.java | 3 ++- .../src/dev/arcovia/mitigation/ilp/Node.java | 27 ++++++++++++++++--- .../mitigation/ilp/OptimizationManager.java | 7 +++-- .../models/forwardingEdgeCase.json | 1 + .../mitigation/evaluation/tests/TestBase.java | 23 ++++++++++++++++ 6 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 tests/dev.arcovia.mitigation.evaluation.tests/models/forwardingEdgeCase.json diff --git a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Constraint.java b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Constraint.java index 1b718a2a..8bdd2522 100644 --- a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Constraint.java +++ b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Constraint.java @@ -205,6 +205,8 @@ private List determineMitigations() { mitigations.add(new MitigationStrategy(List.of(literal.compositeLabel()), 1000, type)); + } else if (literal.compositeLabel().category() == LabelCategory.IncomingData) { + mitigations.add(new MitigationStrategy(List.of(literal.compositeLabel()), 1000, MitigationType.DeleteDataLabel)); } } diff --git a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/MitigationStrategy.java b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/MitigationStrategy.java index 8162be5c..e5b6126e 100644 --- a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/MitigationStrategy.java +++ b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/MitigationStrategy.java @@ -24,7 +24,8 @@ public void addRequired(List> required) { for (var mitigations : required) { List requiredMitigations = new ArrayList<>(); for (var mitigation : mitigations) { - if (!mitigation.type.toString().startsWith("Delete")) { + if (!mitigation.type.toString().startsWith("Delete") + || mitigation.type == MitigationType.DeleteDataLabel) { requiredMitigations.add(mitigation); } } diff --git a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Node.java b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Node.java index 4a0e61b2..9db131e5 100644 --- a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Node.java +++ b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/Node.java @@ -12,6 +12,7 @@ import dev.arcovia.mitigation.sat.OutgoingDataLabel; import dev.arcovia.mitigation.sat.CompositeLabel; +import dev.arcovia.mitigation.sat.LabelCategory; public class Node { private static final double EPSILON = 0.01; @@ -219,8 +220,28 @@ private List> getAllRequiredMitigations(MitigationStrategy miti type = ActionType.Adding; } - requiredMitgation.add(new Mitigation(new ActionTerm(this.name, mitgation.label, type), mitgation.cost, - getAllRequiredMitigations(mitgation))); + + if (mitgation.type == MitigationType.DeleteDataLabel + || mitgation.type == MitigationType.DataLabel) { + List outLabels = new ArrayList<>(); + for (var label : mitgation.label) { + if (label.category() == LabelCategory.IncomingData) { + outLabels.add(new OutgoingDataLabel(label.label())); + } else { + outLabels.add(label); + } + } + for (var assignment : vertex.getReferencedElement().getBehavior().getAssignment()) { + String pinId = assignment.getOutputPin().getId(); + requiredMitgation.add(new Mitigation( + new ActionTerm(pinId, outLabels, type), mitgation.cost, + getAllRequiredMitigations(mitgation))); + } + } else { + requiredMitgation.add(new Mitigation( + new ActionTerm(this.name, mitgation.label, type), mitgation.cost, + getAllRequiredMitigations(mitgation))); + } } requiredMitgations.add(requiredMitgation); @@ -261,4 +282,4 @@ private Flow getIncominFlow(DFDVertex sink, DFDVertex source) { } return null; } -} +} \ No newline at end of file diff --git a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/OptimizationManager.java b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/OptimizationManager.java index 3610979a..06d185e0 100644 --- a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/OptimizationManager.java +++ b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/OptimizationManager.java @@ -263,8 +263,10 @@ private List> getAdditionalMitigations(List> getAdditionalMitigations(List> newRequired = new ArrayList<>(); for (var requieredMitgation : required) { for (MitigationStrategy mitigation : constraint.getMitigations()) { - if (mitigation.label.contains(label)) { + if (mitigation.label.contains(label) + && !mitigation.type.toString().startsWith("Delete")) { continue; } List temp = new ArrayList<>(requieredMitgation); diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/models/forwardingEdgeCase.json b/tests/dev.arcovia.mitigation.evaluation.tests/models/forwardingEdgeCase.json new file mode 100644 index 00000000..f562bfeb --- /dev/null +++ b/tests/dev.arcovia.mitigation.evaluation.tests/models/forwardingEdgeCase.json @@ -0,0 +1 @@ +{"model":{"canvasBounds":{"x":0,"y":0,"width":2560,"height":1307.3333740234375},"scroll":{"x":-17.310928552920572,"y":-56.68306974768142},"zoom":4.072689638702298,"position":{"x":0,"y":0},"size":{"width":-1,"height":-1},"features":{},"type":"graph","id":"root","children":[{"position":{"x":129.5,"y":59},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"dfdNodeLabelRenderer":{"labelTypeRegistry":{"labelTypes":[{"id":"4h3wzk","name":"Sensitivity","values":[{"id":"zzvphn","text":"Personal"},{"id":"veaan9","text":"Public"}]},{"id":"gvia09","name":"Location","values":[{"id":"g10hr","text":"EU"},{"id":"5hnugm","text":"nonEU"}]},{"id":"84rllz","name":"Encryption","values":[{"id":"2r6xe6","text":"Encrypted"}]}],"updateCallbacks":[null,null,null]}},"text":"User","labels":[],"ports":[{"position":{"x":87.5,"y":10.5},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"behavior":"set Sensitivity.Personal","validBehavior":true,"features":{},"id":"rtmoom","type":"port:dfd-output","children":[]}],"hideLabels":false,"minimumWidth":50,"annotations":[],"features":{},"id":"d480fa9","type":"node:input-output","children":[]},{"position":{"x":295.5,"y":57},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"dfdNodeLabelRenderer":{"labelTypeRegistry":{"labelTypes":[{"id":"4h3wzk","name":"Sensitivity","values":[{"id":"zzvphn","text":"Personal"},{"id":"veaan9","text":"Public"}]},{"id":"gvia09","name":"Location","values":[{"id":"g10hr","text":"EU"},{"id":"5hnugm","text":"nonEU"}]},{"id":"84rllz","name":"Encryption","values":[{"id":"2r6xe6","text":"Encrypted"}]}],"updateCallbacks":[null,null,null]}},"text":"ordering","labels":[{"labelTypeId":"gvia09","labelTypeValueId":"5hnugm"}],"ports":[{"position":{"x":-3.5,"y":15.5},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"features":{},"id":"azbkha","type":"port:dfd-input","children":[]},{"position":{"x":66.5,"y":3},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"behavior":"forward user","validBehavior":true,"features":{},"id":"yae7r","type":"port:dfd-output","children":[{"position":{"x":366.9560151218408,"y":63.87607999309034},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"behavior":"","validBehavior":true,"features":{},"id":"5kjguh","type":"port:dfd-output","children":[]}]},{"position":{"x":66.5,"y":13},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"behavior":"forward user","validBehavior":true,"features":{},"id":"4hy0qo","type":"port:dfd-output","children":[]},{"position":{"x":66.5,"y":23},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"behavior":"forward user","validBehavior":true,"features":{},"id":"nr8wb","type":"port:dfd-output","children":[]}],"hideLabels":false,"minimumWidth":50,"annotations":[],"features":{},"id":"b2km","type":"node:function","children":[]},{"position":{"x":466,"y":59},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"dfdNodeLabelRenderer":{"labelTypeRegistry":{"labelTypes":[{"id":"4h3wzk","name":"Sensitivity","values":[{"id":"zzvphn","text":"Personal"},{"id":"veaan9","text":"Public"}]},{"id":"gvia09","name":"Location","values":[{"id":"g10hr","text":"EU"},{"id":"5hnugm","text":"nonEU"}]},{"id":"84rllz","name":"Encryption","values":[{"id":"2r6xe6","text":"Encrypted"}]}],"updateCallbacks":[null,null,null]}},"text":"Database","labels":[{"labelTypeId":"gvia09","labelTypeValueId":"g10hr"}],"ports":[{"position":{"x":-3.5,"y":10.5},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"features":{},"id":"91q37d","type":"port:dfd-input","children":[]}],"hideLabels":false,"minimumWidth":50,"annotations":[],"features":{},"id":"6cb6d8","type":"node:storage","children":[]},{"position":{"x":464.5,"y":109},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"dfdNodeLabelRenderer":{"labelTypeRegistry":{"labelTypes":[{"id":"4h3wzk","name":"Sensitivity","values":[{"id":"zzvphn","text":"Personal"},{"id":"veaan9","text":"Public"}]},{"id":"gvia09","name":"Location","values":[{"id":"g10hr","text":"EU"},{"id":"5hnugm","text":"nonEU"}]},{"id":"84rllz","name":"Encryption","values":[{"id":"2r6xe6","text":"Encrypted"}]}],"updateCallbacks":[null,null,null]}},"text":"Shipping","labels":[{"labelTypeId":"gvia09","labelTypeValueId":"g10hr"}],"ports":[{"position":{"x":-3.5,"y":13},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"features":{},"id":"6m88fp","type":"port:dfd-input","children":[]}],"hideLabels":false,"minimumWidth":50,"annotations":[],"features":{},"id":"0inf7k","type":"node:input-output","children":[]},{"routingPoints":[],"selected":false,"hoverFeedback":false,"opacity":1,"text":"","features":{},"id":"bx9vsg","type":"edge:arrow","sourceId":"4hy0qo","targetId":"91q37d","children":[]},{"routingPoints":[],"selected":false,"hoverFeedback":false,"opacity":1,"text":"","features":{},"id":"y8i4tg","type":"edge:arrow","sourceId":"nr8wb","targetId":"6m88fp","children":[]},{"routingPoints":[],"selected":false,"hoverFeedback":false,"opacity":1,"text":"user","features":{},"id":"qj4178","type":"edge:arrow","sourceId":"rtmoom","targetId":"azbkha","children":[]},{"position":{"x":464.5,"y":4},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"dfdNodeLabelRenderer":{"labelTypeRegistry":{"labelTypes":[{"id":"4h3wzk","name":"Sensitivity","values":[{"id":"zzvphn","text":"Personal"},{"id":"veaan9","text":"Public"}]},{"id":"gvia09","name":"Location","values":[{"id":"g10hr","text":"EU"},{"id":"5hnugm","text":"nonEU"}]},{"id":"84rllz","name":"Encryption","values":[{"id":"2r6xe6","text":"Encrypted"}]}],"updateCallbacks":[null,null,null]}},"text":"Bank","labels":[{"labelTypeId":"gvia09","labelTypeValueId":"5hnugm"}],"ports":[{"position":{"x":-3.5,"y":10.5},"size":{"width":-1,"height":-1},"strokeWidth":0,"selected":false,"hoverFeedback":false,"opacity":1,"features":{},"id":"e7ctel","type":"port:dfd-input","children":[]}],"hideLabels":false,"minimumWidth":50,"annotations":[],"features":{},"id":"aakxvh","type":"node:input-output","children":[]},{"routingPoints":[],"selected":false,"hoverFeedback":false,"opacity":1,"text":"","features":{},"id":"3v8vpg","type":"edge:arrow","sourceId":"yae7r","targetId":"e7ctel","children":[]}]},"labelTypes":[{"id":"4h3wzk","name":"Sensitivity","values":[{"id":"zzvphn","text":"Personal"},{"id":"veaan9","text":"Public"}]},{"id":"gvia09","name":"Location","values":[{"id":"g10hr","text":"EU"},{"id":"5hnugm","text":"nonEU"}]},{"id":"84rllz","name":"Encryption","values":[{"id":"2r6xe6","text":"Encrypted"}]}],"constraints":[{"name":"Test","constraint":"data Sensitivity.Personal neverFlows vertex Location.nonEU"}],"mode":"edit","version":1} \ No newline at end of file diff --git a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java index 7bcbce0f..5f6d3c12 100644 --- a/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java +++ b/tests/dev.arcovia.mitigation.evaluation.tests/src/dev/arcovia/mitigation/evaluation/tests/TestBase.java @@ -17,6 +17,8 @@ import org.dataflowanalysis.analysis.dsl.AnalysisConstraint; import org.dataflowanalysis.analysis.dsl.constraint.ConstraintDSL; import org.dataflowanalysis.converter.dfd2web.DataFlowDiagramAndDictionary; +import org.dataflowanalysis.converter.web2dfd.Web2DFDConverter; +import org.dataflowanalysis.converter.web2dfd.WebEditorConverterModel; import org.dataflowanalysis.examplemodels.Activator; import org.dataflowanalysis.examplemodels.TuhhModels; import org.junit.jupiter.api.Disabled; @@ -209,6 +211,27 @@ void evaluateScalability() throws Throwable { } } + + final AnalysisConstraint encryptedPersonalData = new ConstraintDSL().ofData().withLabel("Sensitivity", "Personal") + .withoutLabel("Encryption", "Encrypted").neverFlows().toVertex().withCharacteristic("Location", "nonEU") + .create(); + + final AnalysisConstraint encryptedNonEu = new ConstraintDSL().ofData().withLabel("Encryption", "Encrypted").neverFlows().toVertex().withCharacteristic("Location", "EU") + .create(); + + @Test + @Disabled + void forwardingEdgeCase() throws Exception { + var dfdLocation = "models/forwardingEdgeCase.json"; + DataFlowDiagramAndDictionary dfd = new Web2DFDConverter().convert(new WebEditorConverterModel(dfdLocation)); + + var repairedDFD = getApproach(dfd, List.of(encryptedPersonalData,encryptedNonEu )).repair(); + + var violations = determineViolations(repairedDFD, List.of(encryptedPersonalData,encryptedNonEu)); + + assertEquals(0, violations); + } + private void scaleTFGLength(MeasurementWriter writer) throws Throwable { for (int scaling : TFG_LENGTH_SCALINGS) { RunConfig cfg = RunConfig.forTFG("tfg_length", scaling, 0); From 0c2e99e82c7d4259b5e8d07c9ce2d9b3b43334e8 Mon Sep 17 00:00:00 2001 From: BenjaminArp <101420246+BenjaminArp@users.noreply.github.com> Date: Fri, 10 Apr 2026 21:22:33 +0200 Subject: [PATCH 07/52] add missing or in if --- .../src/dev/arcovia/mitigation/ilp/MitigationStrategy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/MitigationStrategy.java b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/MitigationStrategy.java index e5b6126e..be5ade56 100644 --- a/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/MitigationStrategy.java +++ b/bundles/dev.arcovia.mitigation.ilp/src/dev/arcovia/mitigation/ilp/MitigationStrategy.java @@ -25,7 +25,7 @@ public void addRequired(List> required) { List requiredMitigations = new ArrayList<>(); for (var mitigation : mitigations) { if (!mitigation.type.toString().startsWith("Delete") - || mitigation.type == MitigationType.DeleteDataLabel) { + || mitigation.type == MitigationType.DeleteDataLabel || mitigation.type == MitigationType.DeleteNodeLabel) { requiredMitigations.add(mitigation); } } From 249d2b3641020d1835eb96e77a93eec718398f1c Mon Sep 17 00:00:00 2001 From: uuqjz Date: Mon, 13 Apr 2026 10:09:29 +0200 Subject: [PATCH 08/52] Sat scale mode --- .../src/dev/arcovia/mitigation/sat/Sat.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Sat.java b/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Sat.java index 5ff050f2..eb757aeb 100644 --- a/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Sat.java +++ b/bundles/dev.arcovia.mitigation.sat/src/dev/arcovia/mitigation/sat/Sat.java @@ -44,7 +44,8 @@ public class Sat { private boolean deactivateSubsumption; private Set