From e8d870888b5600771c80e9cac931bb87c089feda Mon Sep 17 00:00:00 2001 From: vivek vr Date: Fri, 15 Sep 2023 21:05:46 +0530 Subject: [PATCH 01/22] Small typo in build instruction of the GUI has been changed --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 README.md diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 89fe24e..bcb458f --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ JoularJX GUI adopts WinUI 3 style and is currently only available on Windows, an To compile the GUI, open the project (in the ```GUI``` folder) in Visual Studio and compile there. Or open, Developer Command Prompt for VS (or Developer PowerShell for VS), and compile with this command: ``` -msbuild.exe juolarjx-gui.sln /property:Configuration=Release +msbuild.exe joularjx-gui.sln /property:Configuration=Release ```
From 2c01dd25ee507231c319330b7593faf5453e8078 Mon Sep 17 00:00:00 2001 From: Magiel Bruntink Date: Tue, 26 Sep 2023 11:30:25 +0200 Subject: [PATCH 02/22] Added guards for totalEncounters of methods and call trees being 0. --- .../joularjx/monitor/MonitoringHandler.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java b/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java index 4ed3c0a..adc73d3 100644 --- a/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java +++ b/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java @@ -300,7 +300,10 @@ private void updateMethodsConsumedEnergy(Map> metho for (var threadEntry : methodsStats.entrySet()) { double totalEncounters = threadEntry.getValue().values().stream().mapToDouble(i -> i).sum(); for (var methodEntry : threadEntry.getValue().entrySet()) { - double methodPower = threadCpuTimePercentages.get(threadEntry.getKey().getId()) * (methodEntry.getValue() / totalEncounters); + double methodPower = 0.0; + if(totalEncounters >= Double.MIN_VALUE) { + methodPower = threadCpuTimePercentages.get(threadEntry.getKey().getId()) * (methodEntry.getValue() / totalEncounters); + } //Only of consumption evolution tracking is enabled if (this.properties.trackConsumptionEvolution()) { @@ -330,8 +333,11 @@ private void updateCallTreesConsumedEnergy(Map> s double totalEncounters = entry.getValue().values().stream().mapToDouble(i -> i).sum(); for (var callTreeEntry : entry.getValue().entrySet()) { - double stackTracePower = threadCpuTimePercentages.get(entry.getKey().getId()) * (callTreeEntry.getValue() / totalEncounters); - + double stackTracePower = 0.0; + if (totalEncounters >= Double.MIN_VALUE) { + stackTracePower = threadCpuTimePercentages.get(entry.getKey().getId()) * (callTreeEntry.getValue() / totalEncounters); + } + callTreeConsumer.accept(callTreeEntry.getKey(), stackTracePower); } } From aad6e971ba1f3b0b7b5977a9d4d15fd032492b98 Mon Sep 17 00:00:00 2001 From: Magiel Bruntink Date: Tue, 26 Sep 2023 10:58:41 +0200 Subject: [PATCH 03/22] Added stack-monitoring-sample-rate to agent properties. --- config.properties | 5 +++++ install/config.properties | 5 +++++ .../joularjx/monitor/MonitoringHandler.java | 18 +++++++++------- .../joularjx/utils/AgentProperties.java | 21 ++++++++++++++++--- .../joularjx/utils/AgentPropertiesTest.java | 9 +++++--- 5 files changed, 44 insertions(+), 14 deletions(-) diff --git a/config.properties b/config.properties index 3cadbd1..b47a52a 100644 --- a/config.properties +++ b/config.properties @@ -60,6 +60,11 @@ save-call-trees-runtime-data=true # Allowed values: true, false overwrite-call-trees-runtime-data=true +# The sample rate (milliseconds) for the agent to monitor the JVM call +# stack. Lower means more accurate monitoring. Allowable values are +# from 1 to 1000. +stack-monitoring-sample-rate=10 + # Path for our power monitor program on Windows # On Windows, please escape slashes twice powermonitor-path=C:\\joularjx\\PowerMonitor.exe \ No newline at end of file diff --git a/install/config.properties b/install/config.properties index 3cadbd1..b47a52a 100644 --- a/install/config.properties +++ b/install/config.properties @@ -60,6 +60,11 @@ save-call-trees-runtime-data=true # Allowed values: true, false overwrite-call-trees-runtime-data=true +# The sample rate (milliseconds) for the agent to monitor the JVM call +# stack. Lower means more accurate monitoring. Allowable values are +# from 1 to 1000. +stack-monitoring-sample-rate=10 + # Path for our power monitor program on Windows # On Windows, please escape slashes twice powermonitor-path=C:\\joularjx\\PowerMonitor.exe \ No newline at end of file diff --git a/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java b/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java index 4ed3c0a..5d8e6a6 100644 --- a/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java +++ b/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java @@ -39,9 +39,6 @@ public class MonitoringHandler implements Runnable { private static final String DESTROY_THREAD_NAME = "DestroyJavaVM"; - private static final long SAMPLE_TIME_MILLISECONDS = 1000; - private static final long SAMPLE_RATE_MILLISECONDS = 10; - private static final int SAMPLE_ITERATIONS = (int) (SAMPLE_TIME_MILLISECONDS / SAMPLE_RATE_MILLISECONDS); private static final Logger logger = JoularJXLogging.getLogger(); private final long appPid; @@ -52,6 +49,9 @@ public class MonitoringHandler implements Runnable { private final OperatingSystemMXBean osBean; private final ThreadMXBean threadBean; private final ResultTreeManager resultTreeManager; + private final long sampleTimeMilliseconds = 1000; + private final long sampleRateMilliseconds; + private final int sampleIterations; /** * Creates a new MonitoringHandler. @@ -74,6 +74,8 @@ public MonitoringHandler(long appPid, AgentProperties properties, ResultWriter r this.osBean = osBean; this.threadBean = threadBean; this.resultTreeManager = resultTreeManager; + this.sampleRateMilliseconds = properties.stackMonitoringSampleRate(); + this.sampleIterations = (int) (sampleTimeMilliseconds / sampleRateMilliseconds); } @Override @@ -149,7 +151,7 @@ public void run() { } } - Thread.sleep(SAMPLE_RATE_MILLISECONDS); + Thread.sleep(sampleRateMilliseconds); } catch (InterruptedException exception) { Thread.currentThread().interrupt(); } catch (IOException exception) { @@ -168,7 +170,7 @@ public void run() { private Map> sample() { Map> result = new HashMap<>(); try { - for (int duration = 0; duration < SAMPLE_TIME_MILLISECONDS; duration += SAMPLE_RATE_MILLISECONDS) { + for (int duration = 0; duration < sampleTimeMilliseconds; duration += sampleRateMilliseconds) { for (var entry : Thread.getAllStackTraces().entrySet()) { String threadName = entry.getKey().getName(); //Ignoring agent related threads, if option is enabled @@ -179,12 +181,12 @@ private Map> sample() { // Only check runnable threads (not waiting or blocked) if (entry.getKey().getState() == Thread.State.RUNNABLE) { var target = result.computeIfAbsent(entry.getKey(), - t -> new ArrayList<>(SAMPLE_ITERATIONS)); + t -> new ArrayList<>(sampleIterations)); target.add(entry.getValue()); } } - Thread.sleep(SAMPLE_RATE_MILLISECONDS); + Thread.sleep(sampleRateMilliseconds); } } catch (InterruptedException exception) { Thread.currentThread().interrupt(); @@ -256,7 +258,7 @@ private long updateThreadsCpuTime(Map> methodsStats for (var entry : methodsStats.entrySet()) { long threadCpuTime = threadBean.getThreadCpuTime(entry.getKey().getId()); - threadCpuTime *= entry.getValue().values().stream().mapToDouble(i -> i).sum() / SAMPLE_ITERATIONS; + threadCpuTime *= entry.getValue().values().stream().mapToDouble(i -> i).sum() / sampleIterations; // If thread already monitored, then calculate CPU time since last time threadCpuTime = threadsCpuTime.merge(entry.getKey().getId(), threadCpuTime, diff --git a/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java b/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java index 7b8b5bf..acc6e6c 100644 --- a/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java +++ b/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java @@ -39,6 +39,7 @@ public class AgentProperties { private static final String CALL_TREES_CONSUMPTION_PROPERTY = "enable-call-trees-consumption"; private static final String SAVE_CT_RUNTIME_DATA_PROPERTY = "save-call-trees-runtime-data"; private static final String OVERWRITE_CT_RUNTIME_DATA_PROPERTY = "overwrite-call-trees-runtime-data"; + private static final String STACK_MONITORING_SAMPLE_RATE_PROPERTY = "stack-monitoring-sample-rate"; /** * Loaded configuration properties @@ -55,6 +56,7 @@ public class AgentProperties { private final boolean callTreesConsumption; private final boolean saveCtRuntimeData; private final boolean overwriteCtRuntimeData; + private final int stackMonitoringSampleRate; /** * Instantiate a new instance which will load the properties @@ -72,6 +74,7 @@ public AgentProperties(FileSystem fileSystem) { this.callTreesConsumption = loadCallTreesConsumption(); this.saveCtRuntimeData = loadSaveCallTreesRuntimeData(); this.overwriteCtRuntimeData = loadOverwriteCallTreeRuntimeData(); + this.stackMonitoringSampleRate = loadStackMonitoringSampleRate(); } public boolean filtersMethod(String methodName) { @@ -115,9 +118,9 @@ public boolean saveCallTreesRuntimeData() { return this.saveCtRuntimeData; } - public boolean overwriteCallTreesRuntimeData() { - return this.overwriteCtRuntimeData; - } + public boolean overwriteCallTreesRuntimeData() { return this.overwriteCtRuntimeData; } + + public int stackMonitoringSampleRate() { return this.stackMonitoringSampleRate; } private Properties loadProperties(FileSystem fileSystem) { Properties result = new Properties(); @@ -186,6 +189,18 @@ public boolean loadOverwriteCallTreeRuntimeData() { return Boolean.parseBoolean(properties.getProperty(OVERWRITE_CT_RUNTIME_DATA_PROPERTY)); } + public int loadStackMonitoringSampleRate() { + String property = properties.getProperty(STACK_MONITORING_SAMPLE_RATE_PROPERTY); + int value = 10; // default of 10 milliseconds + if(property != null) { + int parsedValue = Integer.parseInt(property); + if (parsedValue > 0 && parsedValue <= 1000) { + value = parsedValue; + } + } + return value; + } + private Path getPropertiesPathIfExists(FileSystem fileSystem) { Path path = fileSystem.getPath("config.properties"); diff --git a/src/test/java/org/noureddine/joularjx/utils/AgentPropertiesTest.java b/src/test/java/org/noureddine/joularjx/utils/AgentPropertiesTest.java index d976af1..5db2232 100644 --- a/src/test/java/org/noureddine/joularjx/utils/AgentPropertiesTest.java +++ b/src/test/java/org/noureddine/joularjx/utils/AgentPropertiesTest.java @@ -53,7 +53,8 @@ void loadEmptyFile() throws IOException { () -> assertFalse(properties.loadAgentConsumption()), () -> assertFalse(properties.loadCallTreesConsumption()), () -> assertFalse(properties.loadSaveCallTreesRuntimeData()), - () -> assertFalse(properties.loadOverwriteCallTreeRuntimeData()) + () -> assertFalse(properties.loadOverwriteCallTreeRuntimeData()), + () -> assertEquals(10, properties.loadStackMonitoringSampleRate()) ); } } @@ -69,7 +70,8 @@ void fullConfiguration() throws IOException { "hide-agent-consumption=true\n"+ "enable-call-trees-consumption=true\n"+ "save-call-trees-runtime-data=true\n"+ - "overwrite-call-trees-runtime-data=true"; + "overwrite-call-trees-runtime-data=true\n"+ + "stack-monitoring-sample-rate=1"; Files.write(fs.getPath("config.properties"), (props).getBytes(StandardCharsets.UTF_8)); AgentProperties properties = new AgentProperties(fs); @@ -83,7 +85,8 @@ void fullConfiguration() throws IOException { () -> assertTrue(properties.hideAgentConsumption()), () -> assertTrue(properties.callTreesConsumption()), () -> assertTrue(properties.saveCallTreesRuntimeData()), - () -> assertTrue(properties.overwriteCallTreesRuntimeData()) + () -> assertTrue(properties.overwriteCallTreesRuntimeData()), + () -> assertEquals(1, properties.stackMonitoringSampleRate()) ); } } From beea203b7922f341df9ea8871c584ff0d860af3b Mon Sep 17 00:00:00 2001 From: Adel Noureddine Date: Wed, 27 Sep 2023 11:25:39 +0200 Subject: [PATCH 04/22] Update maven.yml --- .github/workflows/maven.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index fbe029e..253c70f 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -29,7 +29,3 @@ jobs: cache: maven - name: Build with Maven run: mvn -B package --file pom.xml - - # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive - - name: Update dependency graph - uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6 From 45ca97137219effe341e21901ec08828b9ec9649 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Fri, 13 Oct 2023 18:29:09 +0200 Subject: [PATCH 05/22] fix: typo --- src/main/java/org/noureddine/joularjx/Agent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/noureddine/joularjx/Agent.java b/src/main/java/org/noureddine/joularjx/Agent.java index 1b73a50..dd86a12 100644 --- a/src/main/java/org/noureddine/joularjx/Agent.java +++ b/src/main/java/org/noureddine/joularjx/Agent.java @@ -58,7 +58,7 @@ public static void premain(String args, Instrumentation inst) { // Creating the required folders to store the result files generated later on ResultTreeManager resultTreeManager = new ResultTreeManager(properties, appPid, System.currentTimeMillis()); if (!resultTreeManager.create()) { - logger.log(Level.WARNING, "Error(s) occured while creating the result folder hierarchy. Some results may not be reported."); + logger.log(Level.WARNING, "Error(s) occurred while creating the result folder hierarchy. Some results may not be reported."); } Cpu cpu = CpuFactory.getCpu(properties); From 7dde6c5f2b08d6710f45ee2f371e63a88d45f94c Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Tue, 17 Oct 2023 14:16:00 +0200 Subject: [PATCH 06/22] fix: fail faster/more explicitly on Windows when power monitor path is missing --- src/main/java/org/noureddine/joularjx/cpu/IntelWindows.java | 6 ++++++ .../java/org/noureddine/joularjx/utils/AgentProperties.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/noureddine/joularjx/cpu/IntelWindows.java b/src/main/java/org/noureddine/joularjx/cpu/IntelWindows.java index aee2749..b7df38b 100644 --- a/src/main/java/org/noureddine/joularjx/cpu/IntelWindows.java +++ b/src/main/java/org/noureddine/joularjx/cpu/IntelWindows.java @@ -11,10 +11,12 @@ package org.noureddine.joularjx.cpu; +import org.noureddine.joularjx.utils.AgentProperties; import org.noureddine.joularjx.utils.JoularJXLogging; import java.io.BufferedReader; import java.io.InputStreamReader; +import java.util.Objects; import java.util.logging.Level; import java.util.logging.Logger; @@ -38,6 +40,10 @@ public class IntelWindows implements Cpu { private boolean initialized; public IntelWindows(final String programPath) { + if (programPath == null || programPath.isBlank()) { + logger.severe("Can''t start because of missing power monitor path. Set it in config.properties under the ''" + AgentProperties.POWER_MONITOR_PATH_PROPERTY + "'' key."); + System.exit(1); + } this.programPath = programPath; } diff --git a/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java b/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java index acc6e6c..a57ceb9 100644 --- a/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java +++ b/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java @@ -30,7 +30,7 @@ public class AgentProperties { //Properties names in the config.properties file private static final String FILTER_METHOD_NAME_PROPERTY = "filter-method-names"; - private static final String POWER_MONITOR_PATH_PROPERTY = "powermonitor-path"; + public static final String POWER_MONITOR_PATH_PROPERTY = "powermonitor-path"; private static final String SAVE_RUNTIME_DATA_PROPERTY = "save-runtime-data"; private static final String OVERWRITE_RUNTIME_DATA_PROPERTY = "overwrite-runtime-data"; private static final String LOGGER_LEVEL_PROPERTY = "logger-level"; From d6d34048c60ab337bcb975b876f1e03ac11c9491 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Fri, 13 Oct 2023 18:33:02 +0200 Subject: [PATCH 07/22] feat: make it possible to start without config.properties --- .../joularjx/utils/AgentProperties.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java b/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java index acc6e6c..f376481 100644 --- a/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java +++ b/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java @@ -125,14 +125,15 @@ public boolean saveCallTreesRuntimeData() { private Properties loadProperties(FileSystem fileSystem) { Properties result = new Properties(); - // Read properties file - try (InputStream input = new BufferedInputStream(Files.newInputStream(getPropertiesPathIfExists(fileSystem)))) { - result.load(input); - } catch (IOException e) { - logger.log(Level.SEVERE, "Cannot load properties: \"{0}\"", e.getMessage()); - logger.throwing(getClass().getName(), "loadProperties", e); - System.exit(1); - } + // Read properties file if possible + getPropertiesPathIfExists(fileSystem).ifPresent(path -> { + try (InputStream input = new BufferedInputStream(Files.newInputStream(path))) { + result.load(input); + } catch (IOException e) { + logger.log(Level.INFO, "Couldn't load local config: \"{0}\"", e.getMessage()); + } + }); + return result; } @@ -201,14 +202,14 @@ public int loadStackMonitoringSampleRate() { return value; } - private Path getPropertiesPathIfExists(FileSystem fileSystem) { + private Optional getPropertiesPathIfExists(FileSystem fileSystem) { Path path = fileSystem.getPath("config.properties"); if (Files.notExists(path)) { - logger.log(Level.SEVERE, "Could not locate config.properties"); - System.exit(1); + logger.log(Level.INFO, "Could not locate config.properties, will use default values"); + return Optional.empty(); } - return path; + return Optional.of(path); } } From a12ebd06c73d354f4ccd33846f697d70b1c50d6b Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Tue, 17 Oct 2023 10:39:57 +0200 Subject: [PATCH 08/22] fix: test --- .../java/org/noureddine/joularjx/Agent.java | 7 ++- .../joularjx/utils/AgentProperties.java | 5 +++ .../joularjx/utils/AgentPropertiesTest.java | 45 ++++++++++++------- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/noureddine/joularjx/Agent.java b/src/main/java/org/noureddine/joularjx/Agent.java index dd86a12..ba383c1 100644 --- a/src/main/java/org/noureddine/joularjx/Agent.java +++ b/src/main/java/org/noureddine/joularjx/Agent.java @@ -12,11 +12,11 @@ package org.noureddine.joularjx; import com.sun.management.OperatingSystemMXBean; +import org.noureddine.joularjx.cpu.Cpu; +import org.noureddine.joularjx.cpu.CpuFactory; import org.noureddine.joularjx.monitor.MonitoringHandler; import org.noureddine.joularjx.monitor.MonitoringStatus; import org.noureddine.joularjx.monitor.ShutdownHandler; -import org.noureddine.joularjx.cpu.Cpu; -import org.noureddine.joularjx.cpu.CpuFactory; import org.noureddine.joularjx.result.CsvResultWriter; import org.noureddine.joularjx.result.ResultTreeManager; import org.noureddine.joularjx.result.ResultWriter; @@ -26,7 +26,6 @@ import java.lang.instrument.Instrumentation; import java.lang.management.ManagementFactory; import java.lang.management.ThreadMXBean; -import java.nio.file.FileSystems; import java.util.logging.Level; import java.util.logging.Logger; @@ -43,7 +42,7 @@ public class Agent { */ public static void premain(String args, Instrumentation inst) { Thread.currentThread().setName(NAME_THREAD_NAME); - AgentProperties properties = new AgentProperties(FileSystems.getDefault()); + AgentProperties properties = new AgentProperties(); JoularJXLogging.updateLevel(properties.getLoggerLevel()); logger.info("+---------------------------------+"); diff --git a/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java b/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java index f376481..478b46c 100644 --- a/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java +++ b/src/main/java/org/noureddine/joularjx/utils/AgentProperties.java @@ -15,6 +15,7 @@ import java.io.IOException; import java.io.InputStream; import java.nio.file.FileSystem; +import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.util.*; @@ -77,6 +78,10 @@ public AgentProperties(FileSystem fileSystem) { this.stackMonitoringSampleRate = loadStackMonitoringSampleRate(); } + public AgentProperties() { + this(FileSystems.getDefault()); + } + public boolean filtersMethod(String methodName) { for (String filterMethod : filterMethodNames) { if (methodName.startsWith(filterMethod)) { diff --git a/src/test/java/org/noureddine/joularjx/utils/AgentPropertiesTest.java b/src/test/java/org/noureddine/joularjx/utils/AgentPropertiesTest.java index 5db2232..d3bdea6 100644 --- a/src/test/java/org/noureddine/joularjx/utils/AgentPropertiesTest.java +++ b/src/test/java/org/noureddine/joularjx/utils/AgentPropertiesTest.java @@ -28,14 +28,6 @@ class AgentPropertiesTest { - @Test - @ExpectSystemExitWithStatus(1) - void loadNonExistentFile() throws IOException { - try (final FileSystem fs = MemoryFileSystemBuilder.newEmpty().build()) { - new AgentProperties(fs); - } - } - @Test void loadEmptyFile() throws IOException { try (final FileSystem fs = MemoryFileSystemBuilder.newEmpty().build()) { @@ -59,19 +51,38 @@ void loadEmptyFile() throws IOException { } } + @Test + void shouldHaveSaneDefaultsWithoutConfiguration() throws IOException { + try (final FileSystem fs = MemoryFileSystemBuilder.newEmpty().build()) { + AgentProperties properties = new AgentProperties(fs); + + assertFalse(properties.filtersMethod("")); + assertNull(properties.getPowerMonitorPath()); + assertFalse(properties.overwritesRuntimeData()); + assertFalse(properties.savesRuntimeData()); + assertEquals(Level.INFO, properties.getLoggerLevel()); + assertFalse(properties.loadConsumptionEvolution()); + assertFalse(properties.loadAgentConsumption()); + assertFalse(properties.loadCallTreesConsumption()); + assertFalse(properties.loadSaveCallTreesRuntimeData()); + assertFalse(properties.loadOverwriteCallTreeRuntimeData()); + assertEquals(10, properties.loadStackMonitoringSampleRate()); + } + } + @Test void fullConfiguration() throws IOException { try (final FileSystem fs = MemoryFileSystemBuilder.newEmpty().build()) { String props = "filter-method-names=org.noureddine.joularjx\n" + - "powermonitor-path=C:\\\\joularjx\\\\PowerMonitor.exe\n" + - "save-runtime-data=true\n"+ - "overwrite-runtime-data=true\n"+ - "track-consumption-evolution=true\n"+ - "hide-agent-consumption=true\n"+ - "enable-call-trees-consumption=true\n"+ - "save-call-trees-runtime-data=true\n"+ - "overwrite-call-trees-runtime-data=true\n"+ - "stack-monitoring-sample-rate=1"; + "powermonitor-path=C:\\\\joularjx\\\\PowerMonitor.exe\n" + + "save-runtime-data=true\n" + + "overwrite-runtime-data=true\n" + + "track-consumption-evolution=true\n" + + "hide-agent-consumption=true\n" + + "enable-call-trees-consumption=true\n" + + "save-call-trees-runtime-data=true\n" + + "overwrite-call-trees-runtime-data=true\n" + + "stack-monitoring-sample-rate=1"; Files.write(fs.getPath("config.properties"), (props).getBytes(StandardCharsets.UTF_8)); AgentProperties properties = new AgentProperties(fs); From 1dd0a64d89694c4c6072b7772f0e43cf0b718c73 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Tue, 17 Oct 2023 20:54:14 +0200 Subject: [PATCH 09/22] fix: do not use DestroyJavaVM thread as monitoring loop exit condition Fixes #42 --- .../joularjx/monitor/MonitoringHandler.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java b/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java index 38e7144..65b672a 100644 --- a/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java +++ b/src/main/java/org/noureddine/joularjx/monitor/MonitoringHandler.java @@ -37,8 +37,6 @@ * The MonitoringHandler performs all the sampling and energy computation step, and stores the data in dedicated MonitoringStatus structures or in files. */ public class MonitoringHandler implements Runnable { - - private static final String DESTROY_THREAD_NAME = "DestroyJavaVM"; private static final Logger logger = JoularJXLogging.getLogger(); private final long appPid; @@ -85,7 +83,7 @@ public void run() { // CPU time for each thread Map threadsCpuTime = new HashMap<>(); - while (!destroyingVM()) { + while (true) { try { double energyBefore = cpu.getInitialPower(); @@ -376,13 +374,4 @@ public void saveResults(Map> stats, Map thread.getName().equals(DESTROY_THREAD_NAME)); - } } From ee29a46394ec8cddb1175e339acb06f4be7564d2 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Wed, 18 Oct 2023 12:44:05 +0200 Subject: [PATCH 10/22] fix: double quoting --- src/main/java/org/noureddine/joularjx/cpu/IntelWindows.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/noureddine/joularjx/cpu/IntelWindows.java b/src/main/java/org/noureddine/joularjx/cpu/IntelWindows.java index b7df38b..df53e0d 100644 --- a/src/main/java/org/noureddine/joularjx/cpu/IntelWindows.java +++ b/src/main/java/org/noureddine/joularjx/cpu/IntelWindows.java @@ -41,7 +41,7 @@ public class IntelWindows implements Cpu { public IntelWindows(final String programPath) { if (programPath == null || programPath.isBlank()) { - logger.severe("Can''t start because of missing power monitor path. Set it in config.properties under the ''" + AgentProperties.POWER_MONITOR_PATH_PROPERTY + "'' key."); + logger.severe("Can't start because of missing power monitor path. Set it in config.properties under the '" + AgentProperties.POWER_MONITOR_PATH_PROPERTY + "' key."); System.exit(1); } this.programPath = programPath; @@ -62,7 +62,7 @@ public void initialize() { initialized = true; } catch (Exception exception) { - logger.log(Level.SEVERE, "Can''t start power monitor \"{0}\" on Windows. Exiting...", programPath); + logger.log(Level.SEVERE, "Can't start power monitor \"{0}\" on Windows. Exiting...", programPath); logger.throwing(getClass().getName(), "initialize", exception); System.exit(1); } From e9e508037de08d694c6242be777b005140080c51 Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Tue, 17 Oct 2023 20:51:47 +0200 Subject: [PATCH 11/22] feat: add support for macOS monitoring using powermetrics --- README.md | 1 + .../noureddine/joularjx/cpu/CpuFactory.java | 5 ++ .../joularjx/cpu/PowermetricsMacOS.java | 69 +++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java diff --git a/README.md b/README.md index bcb458f..e33ce2d 100755 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ JoularJX requires a minimum version of Java 11+. JoularJX depend on the following software or packages in order to get power reading: - On Windows, JoularJX uses a custom power monitor program that uses Intel Power Gadget API on Windows, and therefore require installing the [Intel Power Gadget tool](https://www.intel.com/content/www/us/en/developer/articles/tool/power-gadget.html) and using a supported Intel CPU. - On PC/server GNU/Linux, JoularJX uses Intel RAPL interface through powercap, and therefore requires running on an Intel CPU or an AMD Ryzen CPU. +- On macOS, JoularJX uses `powermetrics`, which requires running with `sudo` access. It is recommended to authorize the current users to run `/usr/bin/powermetrics` without requiring a password by making the proper modification to the `sudoers` file. - On Raspberry Pi devices on GNU/Linux, JoularJX uses our own research-based regression models to estimate CPU power consumption with support for the following device models: - Model Zero W (rev 1.1), for 32-bit OS - Model 1 B (rev 2), for 32-bit OS diff --git a/src/main/java/org/noureddine/joularjx/cpu/CpuFactory.java b/src/main/java/org/noureddine/joularjx/cpu/CpuFactory.java index 3032010..8244999 100644 --- a/src/main/java/org/noureddine/joularjx/cpu/CpuFactory.java +++ b/src/main/java/org/noureddine/joularjx/cpu/CpuFactory.java @@ -39,11 +39,16 @@ public static Cpu getCpu(final AgentProperties properties) { // Get OS String osName = System.getProperty("os.name").toLowerCase(); String osArch = System.getProperty("os.arch").toLowerCase(); + logger.info("Initializing for platform: '" + osName + "' running on architecture: '" + osArch + '\''); if (osName.contains("win")) { return new IntelWindows(properties.getPowerMonitorPath()); } + if(osName.contains("mac os x")) { + return new PowermetricsMacOS(); + } + if (!osName.contains("linux")) { logger.log(Level.SEVERE, "Platform not supported. Exiting..."); System.exit(1); diff --git a/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java b/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java new file mode 100644 index 0000000..a1b9f68 --- /dev/null +++ b/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java @@ -0,0 +1,69 @@ +package org.noureddine.joularjx.cpu; + +import org.noureddine.joularjx.utils.JoularJXLogging; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * A {@link Cpu} implementation using powermetrics. + */ +public class PowermetricsMacOS implements Cpu { + private static final Logger logger = JoularJXLogging.getLogger(); + private Process process; + private boolean initialized; + + @Override + public void initialize() { + if(initialized) { + return; + } + + try { + process = Runtime.getRuntime().exec("sudo powermetrics --samplers cpu_power -i 500"); + + + initialized = true; + } catch (Exception exception) { + logger.log(Level.SEVERE, "Can''t start powermetrics. Exiting..."); + logger.throwing(getClass().getName(), "initialize", exception); + System.exit(1); + } + } + + @Override + public double getInitialPower() { + return 0; + } + + @Override + public double getCurrentPower(double cpuLoad) { + try { + // Should not be closed since it closes the process + BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream())); + String line; + while ((line = input.readLine()) != null) { + // look for line that contains combined power measurement + // which should look similar to: `Combined Power (CPU + GPU + ANE): 377 mW` + if (!line.startsWith("Combined")) { + continue; + } + final var powerValue = line.split(":")[1]; + final var powerInMilliwatts = powerValue.split("m")[0]; + return Double.parseDouble(powerInMilliwatts) / 1000; + } + } catch (Exception exception) { + logger.throwing(getClass().getName(), "getCurrentPower", exception); + } + return 0; + } + + @Override + public void close() throws Exception { + if (initialized) { + process.destroy(); + } + } +} From 790c9f301fe627f6fc6ab3938c3a5c076b796eba Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Wed, 18 Oct 2023 16:02:37 +0200 Subject: [PATCH 12/22] fix: change sampling rate to 1 second --- .../java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java b/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java index a1b9f68..8a6a6ce 100644 --- a/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java +++ b/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java @@ -22,9 +22,7 @@ public void initialize() { } try { - process = Runtime.getRuntime().exec("sudo powermetrics --samplers cpu_power -i 500"); - - + process = Runtime.getRuntime().exec("sudo powermetrics --samplers cpu_power -i 1000"); initialized = true; } catch (Exception exception) { logger.log(Level.SEVERE, "Can''t start powermetrics. Exiting..."); From 19895bc1636c992ed79e3296df4f8c8dcc91d3fc Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Wed, 18 Oct 2023 16:02:48 +0200 Subject: [PATCH 13/22] fix: typo --- .../java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java b/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java index 8a6a6ce..8aef917 100644 --- a/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java +++ b/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java @@ -25,7 +25,7 @@ public void initialize() { process = Runtime.getRuntime().exec("sudo powermetrics --samplers cpu_power -i 1000"); initialized = true; } catch (Exception exception) { - logger.log(Level.SEVERE, "Can''t start powermetrics. Exiting..."); + logger.log(Level.SEVERE, "Can't start powermetrics. Exiting..."); logger.throwing(getClass().getName(), "initialize", exception); System.exit(1); } From 6ca183b7b02288b6202b512d833bc0ec8977268c Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Wed, 18 Oct 2023 16:03:47 +0200 Subject: [PATCH 14/22] chore: add comment on sudo failure detection --- src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java b/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java index 8aef917..dfb9be8 100644 --- a/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java +++ b/src/main/java/org/noureddine/joularjx/cpu/PowermetricsMacOS.java @@ -22,6 +22,7 @@ public void initialize() { } try { + // todo: detect when sudo fails as this currently won't throw an exception process = Runtime.getRuntime().exec("sudo powermetrics --samplers cpu_power -i 1000"); initialized = true; } catch (Exception exception) { From a0d160349fc614fc621f11b61033d298feba8b5a Mon Sep 17 00:00:00 2001 From: Chris Laprun Date: Thu, 19 Oct 2023 13:52:54 +0200 Subject: [PATCH 15/22] chore: add that powermetrics is bundled with macOS --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e33ce2d..912dbfb 100755 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ JoularJX requires a minimum version of Java 11+. JoularJX depend on the following software or packages in order to get power reading: - On Windows, JoularJX uses a custom power monitor program that uses Intel Power Gadget API on Windows, and therefore require installing the [Intel Power Gadget tool](https://www.intel.com/content/www/us/en/developer/articles/tool/power-gadget.html) and using a supported Intel CPU. - On PC/server GNU/Linux, JoularJX uses Intel RAPL interface through powercap, and therefore requires running on an Intel CPU or an AMD Ryzen CPU. -- On macOS, JoularJX uses `powermetrics`, which requires running with `sudo` access. It is recommended to authorize the current users to run `/usr/bin/powermetrics` without requiring a password by making the proper modification to the `sudoers` file. +- On macOS, JoularJX uses `powermetrics`, a tool bundled with macOS which requires running with `sudo` access. It is recommended to authorize the current users to run `/usr/bin/powermetrics` without requiring a password by making the proper modification to the `sudoers` file. - On Raspberry Pi devices on GNU/Linux, JoularJX uses our own research-based regression models to estimate CPU power consumption with support for the following device models: - Model Zero W (rev 1.1), for 32-bit OS - Model 1 B (rev 2), for 32-bit OS From c9677b5194024f10380a41a94929ec6e46ac8a60 Mon Sep 17 00:00:00 2001 From: Adel Noureddine Date: Thu, 19 Oct 2023 16:37:35 +0200 Subject: [PATCH 16/22] Remove JoularJX GUI as in issue #45. Is moved to its own repo at github.com/joular/joularjx-reader --- GUI/.gitignore | 398 ------------------ GUI/App.xaml | 26 -- GUI/App.xaml.cs | 59 --- GUI/Assets/BadgeLogo.scale-100.png | Bin 166 -> 0 bytes GUI/Assets/BadgeLogo.scale-125.png | Bin 179 -> 0 bytes GUI/Assets/BadgeLogo.scale-150.png | Bin 217 -> 0 bytes GUI/Assets/BadgeLogo.scale-200.png | Bin 250 -> 0 bytes GUI/Assets/BadgeLogo.scale-400.png | Bin 500 -> 0 bytes GUI/Assets/LargeTile.scale-100.png | Bin 4279 -> 0 bytes GUI/Assets/LargeTile.scale-125.png | Bin 5617 -> 0 bytes GUI/Assets/LargeTile.scale-150.png | Bin 7298 -> 0 bytes GUI/Assets/LargeTile.scale-200.png | Bin 10595 -> 0 bytes GUI/Assets/LargeTile.scale-400.png | Bin 27665 -> 0 bytes GUI/Assets/LockScreenLogo.scale-200.png | Bin 432 -> 0 bytes GUI/Assets/SmallTile.scale-100.png | Bin 997 -> 0 bytes GUI/Assets/SmallTile.scale-125.png | Bin 1306 -> 0 bytes GUI/Assets/SmallTile.scale-150.png | Bin 1588 -> 0 bytes GUI/Assets/SmallTile.scale-200.png | Bin 2250 -> 0 bytes GUI/Assets/SmallTile.scale-400.png | Bin 5651 -> 0 bytes GUI/Assets/SplashScreen.scale-100.png | Bin 4625 -> 0 bytes GUI/Assets/SplashScreen.scale-125.png | Bin 5950 -> 0 bytes GUI/Assets/SplashScreen.scale-150.png | Bin 7894 -> 0 bytes GUI/Assets/SplashScreen.scale-200.png | Bin 11748 -> 0 bytes GUI/Assets/SplashScreen.scale-400.png | Bin 32312 -> 0 bytes GUI/Assets/Square150x150Logo.scale-100.png | Bin 1715 -> 0 bytes GUI/Assets/Square150x150Logo.scale-125.png | Bin 2245 -> 0 bytes GUI/Assets/Square150x150Logo.scale-150.png | Bin 2807 -> 0 bytes GUI/Assets/Square150x150Logo.scale-200.png | Bin 4157 -> 0 bytes GUI/Assets/Square150x150Logo.scale-400.png | Bin 10251 -> 0 bytes ...go.altform-lightunplated_targetsize-16.png | Bin 319 -> 0 bytes ...go.altform-lightunplated_targetsize-24.png | Bin 518 -> 0 bytes ...o.altform-lightunplated_targetsize-256.png | Bin 10284 -> 0 bytes ...go.altform-lightunplated_targetsize-32.png | Bin 701 -> 0 bytes ...go.altform-lightunplated_targetsize-48.png | Bin 1135 -> 0 bytes ...x44Logo.altform-unplated_targetsize-16.png | Bin 319 -> 0 bytes ...44Logo.altform-unplated_targetsize-256.png | Bin 10284 -> 0 bytes ...x44Logo.altform-unplated_targetsize-32.png | Bin 701 -> 0 bytes ...x44Logo.altform-unplated_targetsize-48.png | Bin 1135 -> 0 bytes GUI/Assets/Square44x44Logo.scale-100.png | Bin 767 -> 0 bytes GUI/Assets/Square44x44Logo.scale-125.png | Bin 1006 -> 0 bytes GUI/Assets/Square44x44Logo.scale-150.png | Bin 1328 -> 0 bytes GUI/Assets/Square44x44Logo.scale-200.png | Bin 1874 -> 0 bytes GUI/Assets/Square44x44Logo.scale-400.png | Bin 4646 -> 0 bytes GUI/Assets/Square44x44Logo.targetsize-16.png | Bin 283 -> 0 bytes GUI/Assets/Square44x44Logo.targetsize-24.png | Bin 364 -> 0 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 518 -> 0 bytes GUI/Assets/Square44x44Logo.targetsize-256.png | Bin 7511 -> 0 bytes GUI/Assets/Square44x44Logo.targetsize-32.png | Bin 540 -> 0 bytes GUI/Assets/Square44x44Logo.targetsize-48.png | Bin 853 -> 0 bytes GUI/Assets/StoreLogo.backup.png | Bin 456 -> 0 bytes GUI/Assets/StoreLogo.scale-100.png | Bin 1223 -> 0 bytes GUI/Assets/StoreLogo.scale-125.png | Bin 1571 -> 0 bytes GUI/Assets/StoreLogo.scale-150.png | Bin 2083 -> 0 bytes GUI/Assets/StoreLogo.scale-200.png | Bin 3019 -> 0 bytes GUI/Assets/StoreLogo.scale-400.png | Bin 7459 -> 0 bytes GUI/Assets/Wide310x150Logo.scale-100.png | Bin 1879 -> 0 bytes GUI/Assets/Wide310x150Logo.scale-125.png | Bin 2407 -> 0 bytes GUI/Assets/Wide310x150Logo.scale-150.png | Bin 3089 -> 0 bytes GUI/Assets/Wide310x150Logo.scale-200.png | Bin 4625 -> 0 bytes GUI/Assets/Wide310x150Logo.scale-400.png | Bin 11748 -> 0 bytes GUI/Images/appIcon.ico | Bin 108262 -> 0 bytes GUI/Images/joularjx.png | Bin 43078 -> 0 bytes GUI/MainWindow.xaml | 67 --- GUI/MainWindow.xaml.cs | 254 ----------- GUI/Models/AllMethodsPageParameters.cs | 26 -- GUI/Models/AppType.cs | 29 -- GUI/Models/CalltreeChartBar.cs | 46 -- GUI/Models/Method.cs | 77 ---- GUI/Models/MethodConsumption.cs | 29 -- GUI/Models/MethodConsumptionPerTimestamp.cs | 34 -- GUI/Models/MethodPageParameters.cs | 27 -- GUI/Models/MethodType.cs | 29 -- GUI/Models/MethodsChartPlotModel.cs | 71 ---- GUI/Models/PID.cs | 33 -- GUI/Package.appxmanifest | 53 --- GUI/Pages/AllMethodsPage.xaml | 117 ----- GUI/Pages/AllMethodsPage.xaml.cs | 232 ---------- GUI/Pages/AllPIDsPage.xaml | 106 ----- GUI/Pages/AllPIDsPage.xaml.cs | 285 ------------- GUI/Pages/HomePage.xaml | 144 ------- GUI/Pages/HomePage.xaml.cs | 156 ------- GUI/Pages/MethodPage.xaml | 134 ------ GUI/Pages/MethodPage.xaml.cs | 139 ------ GUI/Properties/Resources.Designer.cs | 63 --- GUI/Properties/Resources.resx | 101 ----- GUI/Properties/launchSettings.json | 11 - GUI/Shared/CurrentJoularResultsItems.cs | 35 -- GUI/Shared/Dialog.cs | 41 -- GUI/Shared/RegularExpressions.cs | 109 ----- GUI/Shared/WindowManagement.cs | 99 ----- GUI/app.manifest | 20 - GUI/joularjx-gui.csproj | 79 ---- GUI/joularjx-gui.sln | 43 -- README.md | 19 +- images/joularjx-gui-1.png | Bin 84987 -> 0 bytes 95 files changed, 1 insertion(+), 3190 deletions(-) delete mode 100644 GUI/.gitignore delete mode 100644 GUI/App.xaml delete mode 100644 GUI/App.xaml.cs delete mode 100644 GUI/Assets/BadgeLogo.scale-100.png delete mode 100644 GUI/Assets/BadgeLogo.scale-125.png delete mode 100644 GUI/Assets/BadgeLogo.scale-150.png delete mode 100644 GUI/Assets/BadgeLogo.scale-200.png delete mode 100644 GUI/Assets/BadgeLogo.scale-400.png delete mode 100644 GUI/Assets/LargeTile.scale-100.png delete mode 100644 GUI/Assets/LargeTile.scale-125.png delete mode 100644 GUI/Assets/LargeTile.scale-150.png delete mode 100644 GUI/Assets/LargeTile.scale-200.png delete mode 100644 GUI/Assets/LargeTile.scale-400.png delete mode 100644 GUI/Assets/LockScreenLogo.scale-200.png delete mode 100644 GUI/Assets/SmallTile.scale-100.png delete mode 100644 GUI/Assets/SmallTile.scale-125.png delete mode 100644 GUI/Assets/SmallTile.scale-150.png delete mode 100644 GUI/Assets/SmallTile.scale-200.png delete mode 100644 GUI/Assets/SmallTile.scale-400.png delete mode 100644 GUI/Assets/SplashScreen.scale-100.png delete mode 100644 GUI/Assets/SplashScreen.scale-125.png delete mode 100644 GUI/Assets/SplashScreen.scale-150.png delete mode 100644 GUI/Assets/SplashScreen.scale-200.png delete mode 100644 GUI/Assets/SplashScreen.scale-400.png delete mode 100644 GUI/Assets/Square150x150Logo.scale-100.png delete mode 100644 GUI/Assets/Square150x150Logo.scale-125.png delete mode 100644 GUI/Assets/Square150x150Logo.scale-150.png delete mode 100644 GUI/Assets/Square150x150Logo.scale-200.png delete mode 100644 GUI/Assets/Square150x150Logo.scale-400.png delete mode 100644 GUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png delete mode 100644 GUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png delete mode 100644 GUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png delete mode 100644 GUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png delete mode 100644 GUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png delete mode 100644 GUI/Assets/Square44x44Logo.altform-unplated_targetsize-16.png delete mode 100644 GUI/Assets/Square44x44Logo.altform-unplated_targetsize-256.png delete mode 100644 GUI/Assets/Square44x44Logo.altform-unplated_targetsize-32.png delete mode 100644 GUI/Assets/Square44x44Logo.altform-unplated_targetsize-48.png delete mode 100644 GUI/Assets/Square44x44Logo.scale-100.png delete mode 100644 GUI/Assets/Square44x44Logo.scale-125.png delete mode 100644 GUI/Assets/Square44x44Logo.scale-150.png delete mode 100644 GUI/Assets/Square44x44Logo.scale-200.png delete mode 100644 GUI/Assets/Square44x44Logo.scale-400.png delete mode 100644 GUI/Assets/Square44x44Logo.targetsize-16.png delete mode 100644 GUI/Assets/Square44x44Logo.targetsize-24.png delete mode 100644 GUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png delete mode 100644 GUI/Assets/Square44x44Logo.targetsize-256.png delete mode 100644 GUI/Assets/Square44x44Logo.targetsize-32.png delete mode 100644 GUI/Assets/Square44x44Logo.targetsize-48.png delete mode 100644 GUI/Assets/StoreLogo.backup.png delete mode 100644 GUI/Assets/StoreLogo.scale-100.png delete mode 100644 GUI/Assets/StoreLogo.scale-125.png delete mode 100644 GUI/Assets/StoreLogo.scale-150.png delete mode 100644 GUI/Assets/StoreLogo.scale-200.png delete mode 100644 GUI/Assets/StoreLogo.scale-400.png delete mode 100644 GUI/Assets/Wide310x150Logo.scale-100.png delete mode 100644 GUI/Assets/Wide310x150Logo.scale-125.png delete mode 100644 GUI/Assets/Wide310x150Logo.scale-150.png delete mode 100644 GUI/Assets/Wide310x150Logo.scale-200.png delete mode 100644 GUI/Assets/Wide310x150Logo.scale-400.png delete mode 100644 GUI/Images/appIcon.ico delete mode 100644 GUI/Images/joularjx.png delete mode 100644 GUI/MainWindow.xaml delete mode 100644 GUI/MainWindow.xaml.cs delete mode 100644 GUI/Models/AllMethodsPageParameters.cs delete mode 100644 GUI/Models/AppType.cs delete mode 100644 GUI/Models/CalltreeChartBar.cs delete mode 100644 GUI/Models/Method.cs delete mode 100644 GUI/Models/MethodConsumption.cs delete mode 100644 GUI/Models/MethodConsumptionPerTimestamp.cs delete mode 100644 GUI/Models/MethodPageParameters.cs delete mode 100644 GUI/Models/MethodType.cs delete mode 100644 GUI/Models/MethodsChartPlotModel.cs delete mode 100644 GUI/Models/PID.cs delete mode 100644 GUI/Package.appxmanifest delete mode 100644 GUI/Pages/AllMethodsPage.xaml delete mode 100644 GUI/Pages/AllMethodsPage.xaml.cs delete mode 100644 GUI/Pages/AllPIDsPage.xaml delete mode 100644 GUI/Pages/AllPIDsPage.xaml.cs delete mode 100644 GUI/Pages/HomePage.xaml delete mode 100644 GUI/Pages/HomePage.xaml.cs delete mode 100644 GUI/Pages/MethodPage.xaml delete mode 100644 GUI/Pages/MethodPage.xaml.cs delete mode 100644 GUI/Properties/Resources.Designer.cs delete mode 100644 GUI/Properties/Resources.resx delete mode 100644 GUI/Properties/launchSettings.json delete mode 100644 GUI/Shared/CurrentJoularResultsItems.cs delete mode 100644 GUI/Shared/Dialog.cs delete mode 100644 GUI/Shared/RegularExpressions.cs delete mode 100644 GUI/Shared/WindowManagement.cs delete mode 100644 GUI/app.manifest delete mode 100644 GUI/joularjx-gui.csproj delete mode 100644 GUI/joularjx-gui.sln delete mode 100755 images/joularjx-gui-1.png diff --git a/GUI/.gitignore b/GUI/.gitignore deleted file mode 100644 index 8a30d25..0000000 --- a/GUI/.gitignore +++ /dev/null @@ -1,398 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore - -# User-specific files -*.rsuser -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Mono auto generated files -mono_crash.* - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -[Ww][Ii][Nn]32/ -[Aa][Rr][Mm]/ -[Aa][Rr][Mm]64/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ -[Ll]ogs/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUnit -*.VisualState.xml -TestResult.xml -nunit-*.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# ASP.NET Scaffolding -ScaffoldingReadMe.txt - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_h.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*_wpftmp.csproj -*.log -*.tlog -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Coverlet is a free, cross platform Code Coverage Tool -coverage*.json -coverage*.xml -coverage*.info - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# NuGet Symbol Packages -*.snupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx -*.appxbundle -*.appxupload - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!?*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser -*- [Bb]ackup.rdl -*- [Bb]ackup ([0-9]).rdl -*- [Bb]ackup ([0-9][0-9]).rdl - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio 6 auto-generated project file (contains which files were open etc.) -*.vbp - -# Visual Studio 6 workspace and project file (working project files containing files to include in project) -*.dsw -*.dsp - -# Visual Studio 6 technical files -*.ncb -*.aps - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# CodeRush personal settings -.cr/personal - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - -# Visual Studio History (VSHistory) files -.vshistory/ - -# BeatPulse healthcheck temp database -healthchecksdb - -# Backup folder for Package Reference Convert tool in Visual Studio 2017 -MigrationBackup/ - -# Ionide (cross platform F# VS Code tools) working folder -.ionide/ - -# Fody - auto-generated XML schema -FodyWeavers.xsd - -# VS Code files for those working on multiple tools -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -*.code-workspace - -# Local History for Visual Studio Code -.history/ - -# Windows Installer files from build outputs -*.cab -*.msi -*.msix -*.msm -*.msp - -# JetBrains Rider -*.sln.iml diff --git a/GUI/App.xaml b/GUI/App.xaml deleted file mode 100644 index df46070..0000000 --- a/GUI/App.xaml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/GUI/App.xaml.cs b/GUI/App.xaml.cs deleted file mode 100644 index c4b41a7..0000000 --- a/GUI/App.xaml.cs +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using org_noureddine_joularjx_gui.Shared; -using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Controls.Primitives; -using Microsoft.UI.Xaml.Data; -using Microsoft.UI.Xaml.Input; -using Microsoft.UI.Xaml.Media; -using Microsoft.UI.Xaml.Navigation; -using Microsoft.UI.Xaml.Shapes; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.ApplicationModel; -using Windows.ApplicationModel.Activation; -using Windows.Foundation; -using Windows.Foundation.Collections; - -// To learn more about WinUI, the WinUI project structure, -// and more about our project templates, see: http://aka.ms/winui-project-info. - -namespace org_noureddine_joularjx_gui -{ - /// - /// Provides application-specific behavior to supplement the default Application class. - /// - public partial class App : Application - { - /// - /// Initializes the singleton application object. This is the first line of authored code - /// executed, and as such is the logical equivalent of main() or WinMain(). - /// - public App() - { - this.InitializeComponent(); - } - /// - /// Invoked when the application is launched. - /// - /// Details about the launch request and process. - protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args) - { - m_window = new MainWindow(); - WindowManagement.CenterWindow(m_window); - m_window.Activate(); - } - public Window m_window; - } -} diff --git a/GUI/Assets/BadgeLogo.scale-100.png b/GUI/Assets/BadgeLogo.scale-100.png deleted file mode 100644 index 542849a6be102c59269ad15489d3f7a14dd926aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjoCO|{#S9EWB_ParFHODzC>Y`C z;uumfCpmF}VS?n=gey&f+$*vV)+;bv>~Uzg%#_pRVJIWJ;Xx2fl5jTXCc6^bkbdSb z0t;?1<*aiTbKc0Xq+yPQLwL9OB+uR$r&sM^b`n5Cm~JsJRJUkk&I~MR0@}gg>FVdQ I&MBb@0EcNaX8-^I diff --git a/GUI/Assets/BadgeLogo.scale-125.png b/GUI/Assets/BadgeLogo.scale-125.png deleted file mode 100644 index 45ea973974d584efd888ec524f24916ea7c86289..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3oCO|{#S9EWB_ParFHODzD46Q$ z;uumf=k1i+Tn>T)uA2YUHx3vIVCg!05vZ`A^-pY diff --git a/GUI/Assets/BadgeLogo.scale-150.png b/GUI/Assets/BadgeLogo.scale-150.png deleted file mode 100644 index b10cbb191eb5b77f499734f4722f64bd497e0be9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBI14-?iy0V%NpZIF3Fg=Kb4GG4p0aG}p8Ty7uCEAR<#tSTmF}B^hbo_Eo{+3+TjIIDCFo#> z=FK>b6#Z>We(l=n{&Di(ujyOA-FhrHs}p3DkdlgvM@NL;3%2rg8gtvPC%*wYi^0>? K&t;ucLK6U)Sx?ab diff --git a/GUI/Assets/BadgeLogo.scale-200.png b/GUI/Assets/BadgeLogo.scale-200.png deleted file mode 100644 index 9793c24402a840bcf8e221098c45d63867649a54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?4G5)fv*mnL5U6kOx! z;uumf=j|0ozGejxhQQes|FySoQZQUr=WxZ*IRCNRLB_&)a(T<*7ffd~Va{N?z_UQo z!MGuf;Vi=}#_*qdm%eW9cqeVPAk0uZ@zl=GG-Rf}J zxmm4M|0Q>LZ~1l6QbsLd?b9A!!2qlLzzcZ}RWI%z2>;XgDaQR6U-^S||Le}jIM+DY hB3lEtS5E!|vyPw1(XFL-&jH=d;OXk;vd$@?2>_enTR{K- diff --git a/GUI/Assets/BadgeLogo.scale-400.png b/GUI/Assets/BadgeLogo.scale-400.png deleted file mode 100644 index 67f14ff97c926a03015815c083e12f975ced6063..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 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 EU(+HiR{#J2 diff --git a/GUI/Assets/LargeTile.scale-200.png b/GUI/Assets/LargeTile.scale-200.png deleted file mode 100644 index dd030b29ae7cffa269752c76f032021efe34fca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10595 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 diff --git a/GUI/Assets/LargeTile.scale-400.png b/GUI/Assets/LargeTile.scale-400.png deleted file mode 100644 index a14e58af011790b1fc16c4c3e030ede9b5ac2209..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27665 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%0Dyh-9YiealOfn#j8PJfBcvEy6rK+x7csI{quiNW

)pk=JX=IZMNv^y@h$m5|DWeNZLfsKgAo}t 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 AssI20 diff --git a/GUI/Assets/SmallTile.scale-100.png b/GUI/Assets/SmallTile.scale-100.png deleted file mode 100644 index 506244d37be0480316956e57143bc703ea0071c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 997 zcmeAS@N?(olHy`uVBq!ia0vp^?jX#;1|&l_M9Bjw&H|6fVg?4G5)fv*mnL7qz`#7+ z)5S5QV$R!Xu^z#R5)JWpQ=YAH3(Jx^)uiKk(MaQ{UYACgn2^f`X>KjvD|$g+oJ@AT zP+Q~_V=pwN-XqXaq;clA_JHUKt}CW=n$$Z@Pxalt@@t*7eCC4u#pg1_-!tKH@VMQfBSXJ*!MaM7lzR(PK z)Dark6=iIsV5P*A)z+S}y|k-fuW7 z#}zqIO=AAL_Kya(>w5awi+b3nToqzDb*gaD&lhG}eLNoNleq1GN1aG zas9R8q74GmBzPWZ=(lV1AKzX7bJO{sEwc)ho(B3D)t2Nek-FoYKK=Fd%&=oBhbEln z@>k0`y1zp*wx`YWsGZ`s-hwY2Q7v{(x1at!GGjp(*M%1)0llk_O`FO({o|dWko3)s z(W_fsrFdT$o)ZtaSM&brj0v*}Cpp}-KcaTK?DeU?t8{mMl(*Yi)%BZwmx=Sa^UvSK zRuwW&5$Ij8W`5dS3_s>Sp7#9Hlg%B)Ny>2y#=qNc zG%r}m*>quEBF diff --git a/GUI/Assets/SmallTile.scale-125.png b/GUI/Assets/SmallTile.scale-125.png deleted file mode 100644 index df24df47de029e5599cc7a4f1267c41f94389756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1306 zcmeAS@N?(olHy`uVBq!ia0vp^ks!>$1|&ndJJtg!&H|6fVg?4G5)fv*mnL7qz`%0G z)5S5QV$Rzc`5v*UGROCyTfO^fUS^Q7;(wp?clxv1x+kPfQOwcbq-(}?N@L>71vk3c z*tm}^aBWmIlU#hJ<7OL=l45*|cKlVTb(WW3FH^d5*7{HJ^4V6U_v-r3ugrUR;O?IL z6YAuD6!ky1dv5u>=G^B$=ZZ@mJ1y4z|Hbr=e?L+In`sPkQ(^maR+5N-p6Kh|-c3%HyrIzcP8&OuR10Bwmde^ZrAV0=TpmPsknZcd)ZDt?2Z41N&ja&>zp)Q^}Dx~ zO1#DI>mKu_Jn=lH@^#Y79TqAjB@ezFVY!o=Yw`3;>bu{XC-o=27Tlf8UgpcU=fb@B zZIx-Sk56^I`a=Gl0|J(SOHGTP$-?fw0`rY2{QysBz;T`px4BDTVPbzQN zoNS&Gnb}gy5cu`0hnC*4@XpQ?uihT@_VxX7@a5w?3;sEb!JoERS6)4)JK5Fx6c=9y z(}UOlfc3QFsokFm>dGHe;$_Qnt5|1l z-1*|u9OpwfFI~#on0*CldC>cv88Tb)+-%DR1w>73=ushlW1f zu-RH;tEHJbd%3HtVw{Tj!E-arZd{ZVRMNBz-4y((_ejsQLxJ~?*u7sX_P+0H^}TA7 zr=6{CmM8rmpNaU}-W+SUd5ckSMgNlENs1q>Y9$Z0ZqS~Rc|$WVYqMmd+;U%?H>df7 zx?>M2cv)G0TzkL2KOtOXna`2lzNEDObv#FoB;0!%6_Ly1sipdMgZ`yd^+}V?zNq#K zVy&K>@1eJMMo{(2e}5V$N*}zn_u$WjFAfWq|NMHqU%t4n(l?0LdX>-1jKXjGbqzP2 z;m)7F#4pKhVPvg|b?zDdshiWBRq}N-9g`y^&$Yyy?@)15nLWwC#(H-^+?m5#CFe|c zocaD=ed3fHx21xKub$l(`zu=c-u#67VWs193X@yWS`#<^sjv5 qqQH|ZAx4Z-eH>JU18B#rWB>X^!`AZSoOEDe$KdJe=d#Wzp$Py1a$Gq8 diff --git a/GUI/Assets/SmallTile.scale-150.png b/GUI/Assets/SmallTile.scale-150.png deleted file mode 100644 index fcec39ba151fef9d9562e92f1645284f8687003c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1588 zcmd6o>pK$)0LDj2$jPPLRx0wilw2mAk}%|Qgf+>?rQ|lu(sG-I7-BX~%P1*l4Kq#8 zY7#j}+ia^gLc&lI&8=pc<#LYxi=OBGy}!@zr}w76uZOy-fhqt1Q1|k5JG<%lUu@sD z*~pH}9h*`?dcv*(09vSDD2zq#O9KFuzIeI01f*5XS7iD0NA2N^S8;ac45#rMWTm6W z7IK(q$SZ-+`Pz|(dsN9%2ptV!@9|bL$?5x&h;3+iY-yyZCRr+j1Z-8lS5%Ag-}b_C z1b8~6+=_yi9H(>^Co7tD5l6Zq)NDXrUcOPXg7dd-IWbPMW>RQJryvnpSLab)N-GZE3v+q60vc0_O1XKY|M-1y=8!Mv_N%_|B7wjn3~e^(2ygZugbtT1w(k^`hA5ja>GKdp>KPg9)eKQf z?b~*b^h(?6v!~^rp*=m$J}wFtb$%W`S8P;`jCk+vIp_s&Ek^$Ov$3NgrUulXb4JElPtTpUQ2;8F=2u{b5zdf>>zm6i!z z%PCUPw^kFijV&7$ao*rap*b!!|07m~%dP9JHAtuj79wL|OEtjYGsRQvqkj6@7jeXL z9n>-VPtF-9`f_u7y~#AKRuJl-$;CTw@~!K%9YrE!-}MdDn5yG&wFRu9VD7A15ZG888*EVSO7LMh!!5+nv)1F6ZzRQ;i@gGErL$dSoUA!cq}^rt1cFSHkqQqb zUN;G?y?Wp)X!^wz9G|mufHyartE3HrpufBM{lM}TXZ}4oBcqPv78^7tsU6&vHU3I~ zF?=^==+D3`Wygo7a-u;JSMWsEoSry#1iyii$^Fk6w#Qf+-OT#A+WkS8eXQm^m^sLD z@he#$vtyI3`xyPwD^*hc=uIBgnS^rFOC-ipwrl&oANsOtyM^z$7{ox_<7joQ`4rULIH3e+ z|KL@NM`*YYH8F`}Qxx3RA1ni*Oe_DAS4fUX*^zE~aWHX*LO5hBd!f=@7|(a+?m&?e zMou-YFMo(C@2vQM-{9YCi|1kB7|yy;Lr+Z=7LkU{xVdacZ;jE6GLfQ4?s7l|nr@J8 zCGD@TFBnq^BUjL9nk|vaHq)$ diff --git a/GUI/Assets/SmallTile.scale-200.png b/GUI/Assets/SmallTile.scale-200.png deleted file mode 100644 index 4529ed325687b5f55e85a1df95aa2d27a9d73fee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2250 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 diff --git a/GUI/Assets/SplashScreen.scale-100.png b/GUI/Assets/SplashScreen.scale-100.png deleted file mode 100644 index 80c047df5f4d6615568ab5c709f4fa4f8efdaa1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4625 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 diff --git a/GUI/Assets/SplashScreen.scale-125.png b/GUI/Assets/SplashScreen.scale-125.png deleted file mode 100644 index dee592a573f937e41a3b64ec77aee17ed4d1ec21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5950 zcmeHL`Ck&)+Q(@oZ)0j|x!}SrGtE-dG&L8dO~)Fya>-naF%%a<1zf@MW||63xumF= zl;*x9;);$bl$1;2zMyh(LsQ&P5qO>VZ+PF|`r$n1bIwoae3x^c=Sg;Qu$BH5_$vSa zkhc5%`fUKwY4O2yLDl+08m`ByMDzbGIwS2 zNV*#*Ziff@(ovoC{+N^Qugb%(FS)#GIBgTc92#H(A!(k$$ML%qk5pRSy)8e5tRj<| z{5q^SGT0cVX^1GXOUD`)cGlCZ0_3}-k2ys+Nq8JioSNrT6?|#gauQuHd*^fKcfN;9 z_C6NGt!_+=s~sFEV=k>#0sv@lPB1%Iz5Ee=VDLi+|F<^Snf!J;4VTs`2WYWKJ```y zIytx#Y=SDGbq(%N(wfbKpgU_L(A8E5odCxXUD3ovjz5Q0ld(GCCJ{W=DbZe3)%kbv z5=9dJMcTvDR!vTu81CRz&&J7tg@NbyzhylTXJ2H`gc@*t(+-syA~l0gwV$z51C$dD z2hFN6F`*`*<4NP+2wKt<_mH}ZNGTbxCAC)Yojm?b1L!#sht3V_zrkxv%sN_1+kv_4 zzCiT3q+w=serk`FlLT;~RWL8-wm5i;1$!Es_f(4gbO~$`F$ss`cPD*}DuLKzRrK~L zXF{~GAaBGv-af+&a2I?I7~0mW#hMQ9bP1Yqrwz)hf3uioO<2?f1I_MWsikkt?`|5A|v zZs8XDjtZKFiZes|t+z^)Gz2}e__zQ!S-4(GuwWR@M}|D9Jx1ZKZq!aUgj-!g6W;69 z>a%EBL8s2+#v<~xr#hfVOK1zQ;1lGhA2}E2ZiM`e@@=!-$cEDFp}BHc%g9H_Vv(wS z9*{=@bs+}7KArRthna}p01ezoYW^c+;GI$)({scP08Ba*Pw78G`HmfXB3{^Uo_|QS zTuzV#$(Jb|eSRY$lcuOnkZ$4*#nex2^nx3DgT`B8$7;YM%PnQ#C_We&BOnj%I5CSD z`*tRnK?eTp@CCDGOmi&l9k;q7K@tf zt?IMgrb4kg`3`6X#Q$J=i|d zggW^#NT!s=;`4S79B?68CIM4S)EFjWG5dk+gkc}maJ=~$nTk+rCVf7WbcW+n!TEH{ zJbKLy_XyCJW(J5X@?e<8($is7+26n<3_u{#wyt_=)geiV3&=xy6AZxwFZ1~$~DuDv-@mXnpgl|Kl1&-yO@T$~MJ@{(*(T%3(e#6~eJX@;j5vmZsD9Brg#+Mpb27W}bfxUFD9iQ?7X| z#CXZ##ZV@yVYQq_brzu6?_s$tI#g(D(zCcdGHBJhmg1WlWYDBzJ;>bLgS^tFPihl$ z?^icu^%~fo?2b+{`epImo-nV}P!m=IXum8k2~c&&zZuSbOzKr*TAm(zn2OWniy0&S z9Wku64*HzcaVeiD>%(}pW4H3XRUpsAS0aKNb>@u4moF>v1>;LvSe^qs7S!!hAXSFA zB@}7E*Y_lXc-ca2`{%3q;SRA)+{Y)*ohqfz9T4ng86B}~33Ewp5Q|=`kV%sM>em|| zhMAKCcf+Sn`S_|j<4Tv^(_#uy&P`#8@1JhfM1)|j0AL62YT}3e(jLfRd%`!&TElkS zgYhGtbQuLq6cdclB;4~EqQGmSI>5QJ zah`^CMLdcXTKS(0H^2SJj#*@!fmGCTOSI8bylI>sq@Et2BlYT5L9ilO^C+moCi%tU z;Lh;Y1S;M>#|$v?DD!J{Qy}I3p?YPbM;*_Vzg;#v;~VF(PlUA9(Nf&1?y2k94^o3S zmhRTTJnG7U$Ap(wlazd7Ptq>MU6^aV9JEj#WsnhQq^c>?jYE2XoMg~PtKiofr|)K0 z-WfWPp7*`Tht-O5>&;dW$M#)8I3r^glC^0jSzhw1K^3CkQ7o$*C70%%K_MI~7Vx?v z<0LllB$O`Gh`d<+zUw!0BPWN9dqZC7ci!n&!r>kX7r-#XJ4M=7o@ph{Qa>XAeUb=3 z^-RPzJVb@cDd!p1L7E%TjB&_J`*s8SGXc_8gO#@z24Ok+aUp>%P*G0}B&IVHlGv$P zHK|Zm>OD>06I;@(o1ram=2Xr5a2xXz0glk^sOI#%~Jlc{0y+%(RjkUbI3t}1fGf1aGWgF8Oq3qp(q8U`-(DSNb{ZX?m0w|0n; zT7SdMCsIRqU&KZ-i+~wjL(SKFp&maKJU$>GUJ+T34yJq!MKI-vI6JiHeEveDj(#iJ zW`8I7ETa3F_zX&Uo2qQ~r{6MV{7TK_m%OsJr|wNJDWwGs`?ZW&=6rt2(`$*Hk`@*u-eozh z!`-8)7-e!0DE-`7-x>)D$nVu@8NiSuTPBuK`;{0KJ@qo=0g@cl%3f1v|J}%^S3f4u z%e7?bX#-U$y{m1IqskLNHX4`(nOT2|7_aLx#B{z?Hun?1zOYxYlNHmGBtZ-?*jQ2( z<1iLts(!J<%C8AVTJ!KiMJaEDlcFe7eZ%uoAF3`F={B)LuHvK<@7AB6{dS8zcd_Ra zNiiil%5gY5rMs?hQ9*kyz0lDI>3V+ZAt7=*{mwd2GEGzpoOfkUzxRF}^6l_QXuN&? zKbgig)m5*S-2}&crs01-&->(9i4@q{wA4n5t$0WY(pR7d;m*@-Z*g<5E0sQ@a+-<8 zU4^(4hS3v!k+Gxpyqnw!Z4sHZY1G@s8#~Nx{#S#ke}YUEOFx{?@OW8-jInQ&N0^hB z63wFfx6|OAX~o2Rixu7iNzPXkHgO3F%WeHAQ^WX@-B{`8V6duZE8XoNW(>aOeTCEb zrF<-Ab0MH{y?f{Hms$wMA=yqQ!vGH{te-3JDv9F4_E-M72ZC!DThUSJG8V?Lkbc&xs{pw_nsy1iGyS?&EJF0b zF$#GWE60VBvbcunCuTbh?Ahthuh^NoGSu}mL_~;*19+|d?&cKVW}u{)mcAr<=?PCe z&=Wge_i|6t*k8C>YQerL`Wmyx&jn{$&i!Q;fPo(5DpMwd^yfbL2F0H(TV^ml&#?7c z`q|dvqE{F!?>~lRIc}ZpjWITD#b|sSxOrF=``exHFVyg|5fsOcR|6i`6W!lK=SNX1 zgx~fC#NKJIxD*CuMm)kmwTyOfX#ZZIzVhw4%0#-o4Lkn!{JwYJM`&;o>2Mz2QXaZo zV;d`;Be2I^)#^gYuCAH`Y-&(tvK@MIYn-bS;jRe9r;MeO!dzy?DJ%^oSN7v2l)3wI z$2FPH>f*3;KR;&Wf|qXabrTv>?CE1#3S^~>{p1gb{hmw5erJ;jT0VpE}kt;l9LY zTxEs%&-}I3yK7@YJw}#FHd#WY%_D0ArdlGYV&1uM@J$cP@VzS3;P#9C z>*Kh{$qt-0+r0veBY;FAskX@2DMR!hxw}MZ$E@CS#Y(LW81Y+JY%Q=Y^`3D$(U-ai z-=EI!(b*hG9QVJE7`3BPfyG0hb5|bu3Adq36m0*Rpl%RrGrT1YEIwO7#>bwv$$ND5 zi?Z2;!`QithKr?T>-;5+lam=vx@}PNFehAC-7v_&_L_bPp6smXk#&Q?5p$XsXTt!i zy0d@+DCd-?zjictPl(v+e^uqmCQO1X`SD_lt)w#CNccz+y_c}viN{a)k9$j|0&C;y zOhObHZhFsmQ;0awU{}A3%HDY%6>8S)ylASA<@v-o`w5jE>?PcP$J% zTWC5DtHg94CxC+^MfI?BDV(=5Incb#9n`8a@evXtO?ei9ttFe(gN$`B#!!a|%xp4m zaOn+nZ)e|z6JTc!T>A?as|yo{X8f)LJ*Nx3qsu*g^Fo9-ph9hO(U+ANraOQiV!4Zs zI=-i61nq`PV6+daqWlc?-h|Q`UnaGJbrELq#ecqW`9GN@m;LSA+it9QZfkgB_qTdo z#O9c`&!E?vohfLIzM-aQex}HtfGqbS2aGPw`SxIIc5#6UP|Mvj<6#e(s27YA813sT zUvBtIHY}gcS~UDXQZ$lvXH$KwNov3BMln(84AX^Sbc~2dx};b7hlOsjiJsEcpfYi) z`w~{e|8c}_-1n844Mx{z{c;wySnx_+9ntQM?s5-p)~kxxcgp}Q5<|Kea zW)rjkQ|Eu$TTfZgygKx4Wvib+C!vo2>22u(vbxuLx$pcjieZ&J z&Ba_QL*YQ5mu0N%n8OE?cI+|R194C6$M}Q54+1|3{Qn~0L@^+)x)2KA74ZT2`bf(0rkQIuVi&TI+YMv$I};Pl z#R)+X?|CkS{yk8Z#FRzFx<SRdZ}<4mFCI4t9B$Y9Gq^m`hX20?Jw z@e_UM_t~0`@PKx-Owdnr>fhBdSBfHlid|{Mt18ppi-jNT7IDC{Toa+ErEv4%s`7_` zy^ap|)sBd0Sf3J@x3J(>UeZ#2$t7MqDZMoRMfixZZtrl8Y-!J?s!Pnag8lXOY+GAH zE;oTFUgqPm%@dttS|tATa&3vq)JJmKZt(a~mNyJmx5adWdH+693CNG3f01jZ|Fd(K zwr>fXjKC*hVKKYucd+@b>-BMKow$UIOUY{u-2us}AFP_wUqZ`lT+t5CL(5;+-?p1d z*3*Wf*lovFWGObnbxR$w4LI2;7+#JyR?z!uB|^Uo z+qmbC-l`0-JyYn3p`Q=SvZ!dO&c;^mJ{*7AFay+ERT7!AmMQ|gGgzu%O3IBzkl`LJ zp&LsggyY^d9s9tA6j+M0rcDZg+6FN~lFp}&0Qvl-!yqbz!@2nyvp3T`8>{X6Z@Y9g zkdrUs?y)=x{mb<2N%c|gC^X;mU!2DA^%-YEyzTMP0!R3l9KIgCvHHa{9dwjiYn{|& zSfP*2&WVcbP^!>B2PLs)eu?rpS9XMvM09H?k|p~VG(T9KBw6@5mn|(7(+neKi5u*d zJ1zWSW837fyIb5Cs9>KeH33+6JaBpKf(|IIrcvB~Z+K@BmTJAgQbesa*>L=WQt~jf z<+K&{!Z0R}n<>XNK}A&Qz~h|Sy!?jb^_Y{5@<)StS(V&r;i9N8*rhbX)ewsMC4<3? za7h|DWlIJ-SK)pJ-b)&i# z?QRhaRg_z`9M+=VA2*!!;4A=b6Qm$?t*Lrn4g-3@fejr$k)@77|C%mIVL95J(CI8q zAg#2LaE<$Wnr6)PDXD*oi)6+mw>c#Us_}5g&b(gm&N^KMzcrCK5(`Yr(JG`xk5JzH znd(b|QSAw+Vi|l*bvOLbgXiC~!>q3+6_U_<2t6E-N0L7;+OC_ef^q2A`l_4SA&T_TO&6rc`C9 zt-*l?%f@v~1iAZVBgr|2rgjQ9i?nFaX)uFZ;{6J!a$OUY-(0{xL+C~wm!nOJ;oZcx z)DF%ZIcmDN`N9nTX^nOHLaaR&qC+OCkQ=i%|Mlf;wn9e0q+{v}=0U23q$&T>onf_% z?mIbGsM}YA-K_N2Kk7BKM)H2{^eiY-f1#}fU2F@MZiL?)WY$MCR28`b19ow7Jud)A zyYG03U-6WfMZ!d^&|<;HSt^KIeI`Na5i+oa;4>R+7_m`>^d2qn_GkaSEPEe3gpTp5 zx?Zf-q=I!!f$arpbKK>bOeNI9KG0$9?hNil!F_h|9y1gfB-X}@iX2whQxYWEbmKJI zwK|(NdTWdw1XbRvlTMq@HN#d#+^;>ny=v@jDvtd2Dh&=~mBDUYfuf8D^&9A4uF%)# z>et6u#WEwY)eDJG(6A(0oLDDa@i=g|I*wj#t-CS=bZ>oBfiXZI-zq{Fj^ z-yYwdNGF{x1#oU392Ko$&-!cQC4ffgxKdi}VUshOKx6gcJ-Y6ErKr$O8>fw56AQAG z>78%tsXMn|K?PcmHaEk>1J9neTeL}$)SwtINaQIcm-M+T4s|?YBL$y;FcCTz+T!$= zes1HcSMJ%yF1RP7es;x#Pp$S}7;0X8V>e$L$u1gc@UNrX6z#zco0v=l`zIl(Jg9=b zXY!a0Mxna>8c<=dCK?r`BkI6TEfeIu?I?nT&xf|;)N`>_xou@YdQ8iGP)oFxzD0Pb zfE`o6-)Lf{eoIrla^_fv#e~et=@r4mC-F9s zo33=D9;sZl?h|R#g;kIzMK`x<-m>*CnlYn4OGToWF*O5SFBTnDqk0O2Zf)>!+l>O> z0;Pbr$J~ARJBfBSsaRNx8i=tuv&ni~--mU(SF%c_1;~1CIi8EO$|DoP|`@4OE-Q8 zQ6k4wZgey#hTl)&{VVBRumBPjr$ppNK)ca96z%J#~W-b?9My?WotO=|1KOF+}k25I)NSj}qYt1bT8+<;}|ms*L0 z@FAD;N6mRbSZ~fA^D21yZ@q8Decg|N0exGVZYN!Jo8HWwB{EQ3seG!xP zOgH*(I6)$#;Er?uBB_#rZcs#r@%Q*_Fbi_ZAjqY!$P~Z7fiWBw%_9!72U~LKcfWR2 z?79o;L@X3f@jPPD4ciRq>pD zDDmGj`@rWik?Ct{Q1AU|LWZ$mV8`yF5!b390%mXls1^D;Q=6ABr;U8XDQK`4XW)ai zIsVAmZl8ti6VjJGkw=<;m! zA_RI|78T_MSW5eDyxrU5)#@!nG`g^Qau8@(Y89qWZBq0`Ip{3La@#iUZW%x@uz;z#ZfV-|GUl3vg*tR_>()hc<`?zz z6;r=M7rWA*rzj^+N0tIUpI80)4;WCsaS7R(!2~fwh1|j5_Ex`HX`vQ99s{fY+8-{f zGnAS-jYv+Yc9-f?jtHyLZCG(J(K#$C{z8ldSuS_Vt5tcJ!G2RB_RZ2T3Pa70$6W?}wJ`$9##n7{v_hZ)g&ko?Dwz5XsG8TURH>)Lwz4BfH0N zEislFK}}0kk4=EU7Tbzt_UNG+1&Pyz&1TM%WqjA7DsQ)#{tGC zivU%(_1|%p%b05X3}|(k4>TjFDQP4% z$S_)=ccV|~tU}uAZo_bIZ?E2VCfFOqyB

U+lH!0@sr(CDBV&pqw`%PX^xG?b`@q zk_xH!;cnwHvkZ;javbKb+pLBP-$BD0lF`!|TpT^meh%cFZn*Whk5 zz};!&!%suWG2u)578XY1;n;dEGZ9L0#d{9VwrfBOou1Y!UNh8!9^Za5SQduc3vk4k zGF!93%iM^>>HJTj`wZJHk~&InkV5jD!1-6=5B8U{lC&ew2KczeNH<6pO1%Ft=E#WJsEnas|2K$xl6j8q~0B_#y5-U4Wk zJ9tKRc=#}b2a#P!IH+k!l`ZXUn*0?Y6~F&2z-E7aHGPAMey}_ni`zBN>FGbjN-iW6 z7kkp?oMtF8SlN!#n!~YI^0T)5jM(#o(xoFx>x9cDk;0x++z9U9YKTEf+X}7m(G~Na z&5Q`f@IT7Rnj0<-xgD)zU^+ab3uefgy0TcD{`@IunKRjs6pU0E5-x8bF(??0tO0a= zzJ!V0s%&0JxjwI8o4lwyFG*ZI-Po07X_RhEsWA<*K}@k-PmHN2TdOk}A_kX87PIG} z!i_?{^ZuV7Ny2#Uk&lLn2MNin(~XcyR8(kWi-~U6x{IZgD|Zp?2=#&BJoMZY1hc#^ z>e)gLw(~&q#|UVZnU?o;UZ!xc9lpmhy#d##nNMkI-gqUFeAJDXaFHaS!#&#~5t^)n zFpF-^9xFm521YD~Y1nCiH{Hg!AMJaKklpPFPizfY;k+_IXYR?yKUP-1mASXR=jS3) zroF0+FQLRriFn~N<)$nbYROXT@9Woi?d!J`V@J*EsL#YUsF!zQIxZ#L@U+FdZ=c5F zfOK{`+j!9T(vxY2SQdQwx-Jy;c<}fC)LJdfm?zgl{X(bC^XGDqHh}g&4@?>bN23S4 znpF~~y-E~JgXoi?9uJZ#LiLuxuy1BH``?0a_OWmLCux5h-;f{2qwkXWPW;uuxDwzl zhD1QevFcU{JSy=`M;t_iBy}62HW_*>NZ%KGCEM;qhB}JZnopa49kO*Pq{%-_f4uoM zNcTF_q}XwVRcE^J!eP=_&x1ERGlq~Z1u^w-*cJU+n0aJu1j#pR zlTEG#Ld?oTk?<*=b4&@{*LE98QEcqWY&&Z3e{~zA<8Fa2R<_!ZiHlxKw+~kusONGp zTh8|RRW`7E48>7q&3fgpKz4@iuCc?!>R#25ujpf4)5M<+eoFrOG5#R%gTN00|4#`l b3lGr*K|ZZ{roe-bV89(SkZJX;2T%V8Kb9>z diff --git a/GUI/Assets/SplashScreen.scale-200.png b/GUI/Assets/SplashScreen.scale-200.png deleted file mode 100644 index 680b98d042becb29e2789371aa69cb9efe5839f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11748 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

B~-$P@<_EcMOx~O;;**j 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 B>V^OS diff --git a/GUI/Assets/Square150x150Logo.scale-100.png b/GUI/Assets/Square150x150Logo.scale-100.png deleted file mode 100644 index 5097fcf0389e0fd96255edc2da463952ee834baa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1715 zcmdUw`#Tc~0EXA;P!W2lsod%*mm?9yQDciNL(xIZgyfQ`<+$HAQ*~!i=ElRu0LS`@c@8!!jEhdL>i?40ICsgE>6BF1Ti-~3ZJOow=A&~prSoQm<1P& zH<3UA*~R_7H!_p_2>LMd+5~I0X#gTWG6GvRG|!F5x4Xc(u-E;hHOph}MM%3@z@SG( z1*5Bbg}^)fj4AFBPJhd?sw6s!c&GXNsTGjvBp`FOKI0ddXO7A)X4bEvPFb`=PVjq& zEMR+pM|Y}g|3vddoud5eah8|K7sPh|?>Tu1)f1sf`x5YdtF8S}0N-%AVCnwvUjJ`<#%R3#H zXTP-0kqsT!IicHY(|Y^8aHfloPRfSJBk1; zdtVC-s_cn1#Vo*Eoogqk5)}$DT#NG5qvcCad`ns#9mNAD^)=4&sjD+kiqF{FiKmI{ z`1%u9hP0>1xsb1O6$C5gbRJ@_YujkVYl#-cH(!`sXg5c{QDzHHVp*obOG`qjy+zHX zE5d*PckCpw9I4?&qMr*0@Dq)a;jdBXICQE10;S2hU*9kPNKJgUVlnWWP5S4SCw4XL z4!gF0qnbVz1+^uN9jr}S8{`a}>PUqZJPu4K*xh&6(c85nBP^s^dAD1=VVu#F_+N6C z-grZ^$f3SEBiR6lhPHuek4_?Q0Q6~i8;&x23u6-o;La3*(P@%_$@)$ zGF){ro%Y|&LCV? zL{>_*H@VV{Pl(q3?w+cbnsSG$oJ})W;gqK0sGc2bf@mLVEE?i{@+2;0%d8D%M1tm< z%2SM*-B}-c!ds4r#4~6`qFO;%`kcffPQUXJ;d}1rIPPw zlZ&7KezW&-e-K!||7RBE55ddSbx(ltz>gRDw_XU~2K97lbiSJP EKTWJO{{R30 diff --git a/GUI/Assets/Square150x150Logo.scale-125.png b/GUI/Assets/Square150x150Logo.scale-125.png deleted file mode 100644 index d1213314d2f6138eb9bd2c4d7957f08aa5adba88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2245 zcmd^>{XZK90>*W{skUBvdZVk7X{TM$bJvbg8dvpF4c1|Z9%;PJOUhL=@_t2&c^jRm zQQ4}b7Q}m$h(jY3Nxd{k5b7mHNF*d7lAQe=`+T17^Zn`h{mHrO=Vfr>>o0Mc}H^pM`}Hv`iuHhD(LQ>o^xZNnsjcUrl`RmoI%;lRMf3g@Bj%EB&%TCP$vdc;X)908IfP#gMz|E98&L<>S2=JIzxg=khtaXT8zKx0EeO;a~rXZAYJV{HQ%1eg}_BLd* zWl+d|z!MfJrD?!TaoFx|`vaDt8Rnp)D*1t%=iut)~3#73VM!0p@b0PxZ9R7QL9sdeZX`7S@x7dp}Y}1jZKJ z*i7=b`^u)}H!nb&xGn@%f)9q05=kvs|9(Z%*#3_OCfX~6S&3(j{ki4`%B$mWaD8VbH%jhRE2qh{bl*wIAvz&V?^{S5Qps7<+O z-$6e=^{%F7z+FO4*|(b!W`Ss-tp|EHv#O*+L|1P(wJtQ8BIMBSH8seM#;V=nBFk#MSfhHubG25#eG*5z^b6V zLbMz3U1n4k z{g5GKx6wbpCdx_w#B6suQa*u_8LPhEYrO1EfQ46<2v>P+cmxnC$cpxHY|b+EfASyh z(}izde!-ZPtUGU5v-IgvlghlDplR(74rbVQ@#Qv~t^m~HC46c&rxeF-;r?RS#*cl7 zML9C)Uox;Fru3Sx5QN&Q!)OX7# zW5Qk#9%#CZ&R$1ksx>RA!{Uw|Bw>frzf?|YTAPe={1|R3;2I}`qZANCpi$D@{xMV; zhibe3ulPi|@38SjYy>)JIK=^YZ@k!w82l|Pn%W(s_0A4C$??}|nRI1^Q7%k`dZ6i;YK+B3P5 zRKVmvHSHTy{*#Y$fE?Tm!85{~;)*{gudY7aNR!9rdk|oKwQNb!+3?22Y>V)`I1}@k z{@71x&yz)u(GtrBYAAy3JoQrY=tU#5@6~FT3C~z-?c*3#8Orgq%)@4yJkMUbXWdx|j`Y=>rBz6tq{}-dnfAVOLuD11!(!=q0 R4}Xb{w}+p5gWLV|{{u4i0A~OI diff --git a/GUI/Assets/Square150x150Logo.scale-150.png b/GUI/Assets/Square150x150Logo.scale-150.png deleted file mode 100644 index 99489a0633912def822fbe9d267046043f472d9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2807 zcmeH}*;f*Z8pUnq;#ejv)byS#%L5iCSLBdGgPILm*D-SlU1F)AC8C00r8z|EIT=Qg zQdpWfA}TpRg{hSTDG7=Lnki0*M&J&ry^=!+VE}n=33J|mv-2| zT9ebV{WqV|<$ktHziy?I5d^e;%Dxczc47U=vZ>waTLn+nNZ-|a^GcOLqZ=hd>v%ix zR+ryTsyAtM*zei=KFh$s;)KgRz=l8mDgV<3-0FuMM30UTs@8;sqm zqsy$n)4*^bHdo&XS=W{hU0!w~RFG1GFBn|D<;aC2dUWM782+Bo;eA=K1W#=~%9SuO zLi6K=aMgptY&~X*Jo zLpbW}#Q|+=`_9JVzl3FX#b(zMdH%gcpe@rXF(!->dIucadxqNO|G@-m-AfCCq8(VXwBUXb@#U|S1UZX# zL-FTr66$@MbFS>kW9!kwVy7~wu537Eu7+9OFX>lLXXbl3OBB?C(y$|Cr`JTqip67G zW!+AD?Dc7n&7&S0ERu=E8N&WYl_4m_mMwmmNitUE?KLQCRkvv2WLc8?n>n%XE=cKt_fprh3!zzq6+fCpu7e= z>hg%?T+rx{G6I=7!JJI68bAl2!#nTu;glL<@oh>HQ*n zom=`NP)V9=`BPcQRJ&{_{^fpxhp$JrqD2aCu0RbfhVkbajBqJ#=nZ5((sh^P+RI8& zZCjP7S!n#Kyb{UXOr;ipNId6D6AvLs@CLZa_L5w4llp@r4H(~(ewDf(c1J-PylR9_ zMD7`TJ(igx?mbd*e@0NLW>vt7)4Br`qp464qTBuxY7NXQwYKNaM8YHibvFukAjwCT z9#2~24Jg9f2OfOCF|_*x6?UEOcx9UzX>CC=cCk3-U7EhA>7I^>uq=OsAPi=ZmUmso z6!fQNG`g=!Y)iHyqLOZM&ib)t3qKt#P^r4}-1J+XucXyZRQ`-?g+j_vKVD{Rb$IrS z+AlrB+*i+J9gKeS#XnaZfC+2!!uVLSk>MS_m0wxe!2#=lOGJv0+jR~%T(E)?{Y6~- z8fG%eC>}9xhsV@Z3n*cS;@|PSk<7D$Nr|5WNQnA>)9u+0f=u&a>{vwJiM6peRY1cK$Z5KISE7nMyM>1 z*>ktgkFtZC1sX6KPA&-SSX9s+S~D|G+|15WM=qY-NosxI=QE)Fn~PY@Mygf<#&{W* z3{sy|PdPKEjlU(FA92cByqXkulB?>a8+Gu2*xKoeiOs2RzigKsJn+~Xb5YjgtM7{q z!Gx6*nvOEA`SsR}79ctG@yf?w);adr1b9i*3a_-K+I^)$XvX2NqOEb*!GOZ9S zs86gi{n16C4_EEGCitCQf#kcVs^ccba|^a(`B04_(faP^Loa`#%ig?`WUj(ikEC@# z11DA89BU0*oN)==%XlOc;Gje-rpUG2=k~TK8s|~|id$Bd7p_T->U%!0ZKLtTer!o# z9d+hSObS_UBo<=ztDQ8q>yOlIOai6vWDDrm|D^JYUytZ<0K^*Sf!xxV?ocQ^bFz1& z@4eJ3$E!B-YrHLl8$?s(%tqmt)yven?n3M$qsX1IGJn;Z$E9ySl~r8dk#%U_KV0+w eWIM+Crq|N_c>0stx?d!#<>Bgis_Mj*+y4b!?;kz@ diff --git a/GUI/Assets/Square150x150Logo.scale-200.png b/GUI/Assets/Square150x150Logo.scale-200.png deleted file mode 100644 index a15b0bfff545a303ea5d95ab596a02dcf885dc61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4157 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 IM6N<$g7ly1A^-pY diff --git a/GUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png b/GUI/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png deleted file mode 100644 index 3dc4e727af8b33bafaf931e690a47777e28cc807..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10284 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 B8h!u( diff --git a/GUI/Assets/Square44x44Logo.altform-unplated_targetsize-16.png b/GUI/Assets/Square44x44Logo.altform-unplated_targetsize-16.png deleted file mode 100644 index 8e50790591bce7d1affb08c36a82e208dca0ceb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 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 B8h!u( diff --git a/GUI/Assets/Square44x44Logo.scale-100.png b/GUI/Assets/Square44x44Logo.scale-100.png deleted file mode 100644 index 1091bc31be3cf4a55398fdc92cfa200e9eb96790..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 767 zcmVS$rr(ZZ^ug;nQo3nxlC z!nwJ*8ObIS)_XkY3wMBUgg20L zp^oQ2NCx>r#{X0}NQMh*b1xU~E4vV9i^I#7M`bzXsTFNk``o-%NRE(L@;s#9H_?w= zCx=M|86}^ptKldpKuQBfa@Jz2%?U|Sy`7^EbB;O7Q4(DO@4(G>QU+4SE}th#B8!|M$H^XIB@raLrUsVm zY+UQ=!kxT4+z`)aY0PA1!rs#Z7llXUul4-FwDHWs&iKGee4{_Ty8m?9rx)b}M_f<-LM@7%h4He86&`?5cSW+_36e(Yq{u}f?DZnj??+|G zIPXam@yQ9ihEe}ZW;tQ8EpHY#hRFWP+ePPoc@$raS0U|F3m5&EUSh0(WX1gV|8&Zu xg;hrjtBw{{9WAUnT3B_ou3aN zx5vyov-8Y5^ZwV2|5)aKy@0RK}19djbKGpU|+e0aN_UPEHqH3S5_^LTr4TlBuG zvQK39g^U%OQ9#6wzn61}%ukf>S>%~)x53D+C&_@3oi4OjvHe5HC;v{#D9)%@594S6N7*JY@nK?PAWV^pGOuSpVV0Q~j)o|Z28y1dS6%y#* z6&DIl;ED4w?4Eshw65QK4d0MChWA^F*-FB8O)wI zhW$u4@&Lxhw1;urbMfuw{jxc6G%TZR5d&{mWWlpF(8JsxK|Vq7tF`$D26PR2TvmMF zCBC7FIU>ng7#ZqMZn(_d{)@RTU0^OR$5UqR;IwIYefBIGVq(y(QzvvTD#ESPr(uV2 zv>Si6V0X-k<6yQ0c1Sb%IYJAHvoSqv38JmDaL;k|*^B38ciC^3u@x>qEV5K9KOZ0~ zNfOy34Sl1;L@byv0kNAmV{3do&cL|Gb#LClH#iuk^mK&t`zsiQ<+sd@B(dZki6+b#vg@!e zdt8O}Wu(<)4ajnwzkDY0b)k$G1ws@IaS!ImwlujxR%uKW98pP+kW?A7l$7S>!MnN| zyW`?e8 zpA#?n`KTt&@A|}jEN^C=O-ld$QdQcVs?z3El{TlUv^iC!&8aGFPE~1hs!E$vRoa}Y c(&kjvC+NyBSjUBCn0J z=V98@#z|<$E|v^!6Gt+~$ZUj%&fQ;d&;9WIexK+2!}pi(^L%pAfxbWkQv(110Q5VH z#B8P4KiaOh<&)w zZm+7=qxSJ&ad;xxbV39Z=1=*Da?2c=hkBjqSHUy2y+)~IR@TyJg(%d?%JIG5n?&3E z^0xq6(9gWfaiNxCmsb4nhJ5(;4ei@WKYqxWB&{3n=)%R`TPZB^waU@T4+o=vbz!nWDP$>B$-4)=X~(jdQfq zYC%xkR8GaKk~7k^M<^7rbReA?Df(hcr&R95kji4N;E+|pc$;7v^V~%aI=26&N-Cq3 zOyEf#yEMxm8yjBIf_nkgv976QAV)oSV~vTuSrV*6DEnT-3;Hu6O@|c zXo&ube6$%Y%*=${J7MENvx1NfulQ?s7Y=x?()&~BE*S>{t&d40sCLRee@G-b{-$fj z2?46kQ{CtW;q^IFx$xK?(Pn{`{;o@Q5YdKHG-2wmylQo-#SvzF31>Aw{)uW?ccaZG zw5NYE=-v~I{_*j>T-_twa#am~T<&t8T9zw+gF0Vb1>S%)(9ZaSH!VOq%WwZIl*ZzU zr=?6@*B^PErF~e%9N`7(qY0LJ;d9hR1hzT3=(m{ROf)WNV9dD}=dt-1qt~`83$xEF zMAW~R5M$?MV0inqg-+1W;CLd@+1WFwIZiRdmTJ)2EL*X*(a?!zXt@n&hM>HfcihmV z>wvW>zwcVqbzQB_!{in#>=CDW74b@s#QV_?1I%Qx86+RJama(iJ_A%4DSV89z{j!= zxxu^BScj0&BM-NwEQgPX3|Dfpp-wk4sN^Cm-uZJ%5ZpgB#w?`Q&1x4~+wJ zNQ{i=0FPJf5si8f?r>U~6CMC7o_3r??3B~bDr_pHY!?Q3(eQcU>_cMihk#OO8j&L1 zWBmo{r(nI;a{9Walr4^kjZ1t{5h0f$pFKma)2+7-NnN`Oyv$B^d(C(+p6VKZbhS%p z2~D^KlBU={bF6ElNZkPLA(z0~qw}-Wsv*#Yfks$THpcDUqsmH9NlA8*`g0}kR!0ZL zz&kynu2#QCqaiA9 zo-I?h8Xa{>PYo;Y)!FNE-_WiM`>NK!dpi7x z!IH2(<)9P|Y@1p;1@A<)?`N>!B#CmBUr`^>=FnpIa$l6>!A^CI#8q<09kh5rO{@XK z7vMDuqe2})5u!rh6@-6SKkCsgdRb%}qij{Iy#8f}w2nfUymrBboqiF^AyL;0uki_) x)_G&?-M>D63NBtLE$f?V5Bi^s_!lk@blw!Z`|L;UpW8wpz|SWT+2|FX{x^V#cbWhI diff --git a/GUI/Assets/Square44x44Logo.scale-200.png b/GUI/Assets/Square44x44Logo.scale-200.png deleted file mode 100644 index 904f37f97da3803ee4bd7311bcd2a41935259880..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1874 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 diff --git a/GUI/Assets/Square44x44Logo.targetsize-16.png b/GUI/Assets/Square44x44Logo.targetsize-16.png deleted file mode 100644 index 7ef9d410f96688f66c77e948109a44ec57c49f6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9EWB_ParFHODzD0tS> z#WAE}PIBS`fek%U4zbKL8h*&n+M^(_zr9dQH|fEze{&z!S6Lk{&tdyh{&DMh|Gd6w zIwwxXe*bjhe7=KWra~S2ku_>+Jo_7NnCSIAl$cP@+)=+sdV#`nwRa0vuMtx?q;~Sx zq=yGtCoFWx;WAROn)UGR?sA^|`L@XkPaY)&{QB1W&}tWBPjy+I_na%SvnuQFufFeK zCoWLWnp8Kz{M?+xAE6N^7>Y#AJ#@|V?^KsO1$ dOdA>*8CH1OUOnD%sS@Zh22WQ%mvv4FO#r3CaSi|g diff --git a/GUI/Assets/Square44x44Logo.targetsize-24.png b/GUI/Assets/Square44x44Logo.targetsize-24.png deleted file mode 100644 index 660325be02798df2967c7ba368e1259f5f034b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9iTP)4f>8?w#sV!Mehb7e(ZsER_!kgg0OH?J zF;)=!$PtFHsZ$xwEnm*?49NdR$O0MPB)81!#tQ3>)wPE<6dhd%6#EOrIzW6Lh`pc& z{{iBk_wF%pfBeW`y>>0b86aN)h;KpVa9Z$7RZBM2T*i#uSi!(>Bjd62|NsAg4ix7F zVnrYp1Y#*5ev_KYuvhb5^g0U=Voqis2d-^%xfX$EJu9Fg)|Ys0E`IkOlxYxm=z;^u9y@0000< KMNUMnLSTaV<(d5e diff --git a/GUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/GUI/Assets/Square44x44Logo.targetsize-24_altform-unplated.png deleted file mode 100644 index d8e699c094c9d81b7b2d939bf86c7f9a0378b544..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 518 zcmV+h0{Q)kP)J|emJ3UX6Xj}& zDVJRxl=A1W{3*4jNSd=}0Ko#Vl(G%m3}=`>cmXaZoOLpZc_C&-2^!ec#{S zS4Mw4WMY6AAO?I2$b`rbwMN*4yYC9Nx2e(Lpe>s%UL$-Bu)Pz5HiK^t6IEELx3$#rx@i*9$k3)R4agpU9TNixd{)#fZ^29>MSs>)JLZ-91| zv6al*#}3a01#hJe9$~z_ojPuAD97a@M_nCh)M|=3ourLM>6``BK#4$t5R(TdU+B6= zUtoBcy|<5Iy@em*=XcB6Q~?2aW!I(CQFbIkO(!R09v-GU94<{sAvyL^*`2c=J@6|W z8!*nCmL6!9E^fo2wFR#aYYm_T7ynFxUC4(G$dF3uwX>7Vp%C4(L;Zd_gj39=5S8&> z?Z3CGRXezz@V~ed=I>9~al+cA$3uzZk^30`>qQd-#DL$8H+Wx&GX1{z)&Kwi07*qo IM6N<$g7ly1A^-pY diff --git a/GUI/Assets/Square44x44Logo.targetsize-256.png b/GUI/Assets/Square44x44Logo.targetsize-256.png deleted file mode 100644 index cad4def699760e57a16f799d2f5f00cff9a8c636..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7511 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 diff --git a/GUI/Assets/Square44x44Logo.targetsize-32.png b/GUI/Assets/Square44x44Logo.targetsize-32.png deleted file mode 100644 index 67efc704ab501320911efa52e31019a425b3a2a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 540 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 diff --git a/GUI/Assets/StoreLogo.scale-125.png b/GUI/Assets/StoreLogo.scale-125.png deleted file mode 100644 index 6b9687363019b0ee898f02706447180c05d0f18d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1571 zcmai!X*?4Q0EgE>kz@cf?-|L+gs63Rwi_K++90Fbw{MO^-6i{I>){GZ2(t`CM-3KjymEsYJnhtf$D2EgM3h+=FO>>=c?! zAfX#u??qr-pa5K?H(B2gTJ!LN0*qT4iZ&kg!lsJeX_|iz>ks_>_@C@cbbX~EkQI60Tv6DZroHXb> z-8JF>bekB$1pUzG!Z3K-#U}l=*{0ehVpm+NWBy4^BM@(f*qaKW;$5ltgXg_F$k-kF z35>xOe@51;MPN0*Z(|}v@!Dz`(y|f5 zptQIro_7uZ)cpA4YPAxy)F{yGS;_$fY%hJ{YfIn}t!5cDlTqChEUCQ|pnc-{qZ_Q$ z%{BGoriXa*b1%-s?0>dn*VP2ubvHban^1OVna;=+SN?T)N>Wg-ECxLqfeBi!u)g z^hjBRuUJvlAnNn6W6cc%45urJAI&5`GwB8FY;b>Aj|H!blMXzCJ0{05m0-(&&$~bP zztEW>PfN0b?wCiue!|*->w$_RR>`!)wRr*vLTyE-6Cx1`MD_7Zt9_jzO>8DYcj2FfufV@Y5SLwCRG|*Z`u}>dujQ0q-mGr{nS-C zuUa`mM61|`anC7$X+2!i(dIi>7tT1aU)tY(50llcgQBLY12>;|iTnW00p+u^DW;Pb zZub0>WR&eB9Kav7&8m{&&-+jZ!(=t&^s6{xPTj+XB&JrZWw|=a5>ZQo&FOf7S*&K( z>_?)zJHFhbI*r{oH9F`Ho-H#mDe3Ke*WPYTy3#O=*}h`lq$=`3n1jAX3}Q;1U1s)_ z2E~2Id%8|nx@a^&~0rV*>``|b3UQI1%{v?nY;Y=nuDAD^Zf z#4jqRDhuJ_G?q;vLi<63TYden8)PmubFvjTzxAwTJq?w6P#&tjI017riv zZdCwwOh={cTmJF>E-vX2B_AIquH2Jp=@CXXZh!__;QEu&Cb41Sw{7UVS4ChVl-)>T z3@gAEKRMRhkd$xN_;67;2~MImH+tA?(q+ETejQn)d)jVEck$={Wb%)OZh*ALThwkf So+|oPeSn=63Q=i!^}&BV7$(gC diff --git a/GUI/Assets/StoreLogo.scale-150.png b/GUI/Assets/StoreLogo.scale-150.png deleted file mode 100644 index d038cb9a04f9809becb5ca5795ffe3dd318e45dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2083 zcmb`I`9Bj51ILHZLau3J6h*$}KAxPphK(`Pp;hF_U72h9PDtMoN@1$un_E;SCNjso z+-dSGw^)}srr9v}?dkjL^Xv2c@cz7i`1}FyhiDXB>WI=2001E6gs{Kx+sJ=7EcSa% zQFpn&1q?@AjRFAVqW?kYd*BHI03bf%WN&+kkjKxFKwr8H={b;)sB8;E*w~=6Wd266 zC9?X0at+BNuPpA}b2(8SvM6a)1%XdS#<(qabRrv2`VXB_3?_%#ys-dc5tx=?FOqqzycSk-I=u zf9d0dXwS+dYN&}K?f!?ONy%qTW8+k{X5j(20Bm2Mi43r~Aw?yV#7VTNBb|4D3Uz5? z?pNLieDQeO@x>vHdZjt~{CHYiMd^Ni`!?}wqUGbb^~Iz0DkHagX0@UZT0x+s9IJSl z?p7GgOZMN?-H)d}T9cpywp}A@GsehJqOscJ_0|NurNm$OoT2c zZ*a~63jMV!n)+G^wl6|-dfE&nGzH~u7LGeO9pf-JvlD3#P(Wi=M?T&t)UcwL6S%&+ z+cw@;SDAuTRDw@hMk;Lakqc4QF@P$D+9!1Ta0i$TlW zdq0o-C@#t0rQL2HJ97roaZvoj%tLFz$P=q3tzM{_p^n9w{Nd(1qW4E0FFQLb4(^ib zwhS{l|D>T|A^ZaU?dN^{X>`=2yt|MAtdM0rmu`YRU@O1(M%0(;REjg?87~G5w8gBT ze%4bO9iMLM$H*PBY0)dZUcEQVF&y?^&JKPMFkT0IfkQ*j{rn`D^12ypY?*Nd1>7=; zbd61126^xq#9foHrAD(x&WS`>+4y`)&>h!*;aMgn@2Vt=NxlMnY`6F@UfJHmf-`G1 zGBI!`2ioPXC@$oDf^%}Yb~;yvbPELks-3Ft3!7i}-I|5oK7L-QlR_D&!|RaC%h`%B zYwvdo!r_gh8;85BMo&)?geeAL*U&#QA1w@}B%^G4lVaaH0R6LhAKp~N-L*U115v%7}EeLN$2SO$O_uPC;8mTE-j+q5_%sw%v1MrO7DZ z6X)$5Tor}mLJXUXi~HOkhsR1A?`#k43({c8&K4z0I6gdHHB|MurAS0}?za}Wgu_T) zhn?jbmqMT?By5h26w|udkI=~-$Z>nXPE2ekr4AG$E89?Be+*nvfkupNYBUm59IRY) z7bVFXrR^iM<1+BAb6pSw%lZ4^_?dUEg7f!`!^z= z+ucAe9Fe_DudJMS|6$$St0c6S5D~>;lXRcy1_P^djDbe|O`_q)EbHRTB9YGeZ{Gl! ze=7}_m-)V8OcT4FTV>0>C~}Aiq7wMq)7dlA<~lftze@6mLdfPiM>-Q?DOXcdqsviY z+R%!ivc3zCaE&_&4=}HfNqciIL?rLXoUD!b(3_N+v@q>Sz^t@v91nEKOD)4&aDfP= z%kx+^yCp08n@YUhHX*EVE4(q3=~A@KNL z%dg;vx2`Wc!kXpy!Cap{T@7^~|8V`;O!rHNB%T9BN=q`Mw^zLjO`7gW1KW8oGLQOwRT-? z>YWPkLf>DUL+2G{_-yYn2TC!HMbTd@#dKBPF}7xAHuG!*?-KlGUB>L=oSB0Y0xkhm zk{o+2rQ0Vt>jyE%mMQEjbM^ESXr;?|wnDCAjCaNoH{kMQO4UZUYjlu&Z@wmJs<|}s z(?gtIrSi&(IsaZYsmE^E`J(Em)ndTF1PE&1 zt;N;Vc*%Y@N#(=yRA0i_7&u_+gWBX515m>xW24_Be7|pUk7QI@vwjof`8qwN9)!cV zh3MhHX2O2>Mk-SC#8|8zeP!s$r83?NbM_RFG&*N5Pp2bqr6ugn?MxM#&3a$Dy0XYJ z#(0`e)cwUfoq(llhKSk^FBSFHMOoUy)z;HZ`DLci1!4})OOn_sX1FGQ=#_K;&24Td zuojBYM#*TYk-_4kaH(olYbkW%D6?FUi(;B|u-iYwSbo)S2imx|z@D~E4`ItN>&SpMHAlZ#icJXIR74Jr9QMeo1+ anIK$-)`*unE|>7T`T!>flzo+*5Ai=_pXu@d diff --git a/GUI/Assets/StoreLogo.scale-200.png b/GUI/Assets/StoreLogo.scale-200.png deleted file mode 100644 index 6c2d9c4cf3621f7e8b25110fca169282d69a3031..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3019 zcmc)M`6CmI0|s#Sy{QnLC+y6GGVB z=2%{gku&k_{VU!dp6Bz^^ZS!=)6NROCCzs-H#L7V#Rb^o`w5y9MCiLkKA{;iT*4d?qUMUm~lgHXT{DJ##nEr)^G zwzcLuFxz{3LkkNjqF?&Y%z;<;+G|MfZfq{NeAzNNrGFEYTu$S}2+9Z+BSH2N2 z`l1L`tLZ89+7?r2?wY{{QR1vhWiOv=K>Rp3**Mbh{L*-*iw7ar54mdFsDkvG65Yj% zc}1@M;t|M7D2Pzf6U}Z%TP2k9ufEV-+95Um=!%k4_aG$K`x(M5S?P?vf|37INj(cN z)m=#>T{NUpsrCgI;%knWkt^0{?~V_bX|_&2cgB?Jm(NLgdH2R>gLe@R8 z)}#?66F0@aDI)_(sd|QAR;-hBjPG(LUMl0o+6+G=(S?8~>2>h*`g{9kaC>_$VL>%v zb!c6By4A{_{h%*OW$ zt8R)AM~Qo=yN7%W1$$Tn(I=j;M{~`K%^{7c9!~I$G@X!!@Sj1MqTQr@n1b^l8c{zg zrFV^w`CL2nZmt54l+(FZoYT^%aW17~V0dRIvMDBLUYBLV;n_#W+x&|Q#PFV`Qj?Vy z%HQDugTExq{lLa{pAYl59_%O9sqB*VBi77RS=b$bbsdH;1lnKGa<;FZrk)N@K4s1S zp!;B8&2DCh|9!9!ibpKPbtBCpGwtEg8)=eBXmwhrj!-iffh zXx=#Xd}!b!(2Qg3r^`v4K`YJrLBhRqOOE+2$qHX2|7a1Ow=avJiOkcwZww5bdt~yZ zYqKq`k@p(MS9%Ikyq#B=z>hTy=ppI!n-d(=Kadl?!}%PbiE&tOL_|@7iguULQx=UT zY07j=<+_i$j?DL8cA~QYMO~q#z+P+YYb%Gg(czi$eX(hXo?~7RM+>p%i6?NRFZSB& zP(59ruV2*Qmx^7Dqb@qf(y}O^taqKc)v zKP@WZHZf|6AR4Tip50GXRMto~cqzJ-lz^yMe=QyCIk}JW#5ey245ROvQ~l7+2efuq ztvjHHqCsR{X|}bYUeX&I&5^Ls;qO4r{#>i(QfVpquK2U75A$CPO6U!beZGzzn0JK= zhgQe(xv(~N;SvH+b{PM|vUf$3n#O1Ey9`7|5b@KtMe5IxLCQnaI?p{DbA- z%McrD9*Kn4H}Z;t z&Y`Q@B<4F8{|aTc&gb>1-@*_z?4WSxvN-s9I&dfc*uMtsqElJC>DR-wqUM#=!o{sd zmgrBFX@_$`W?eM?IcLuJR$a+aZ)qi4GPe41eLUZGvQM36gR99wrf;n`45q|9E@f4; zF#T&O-GY5r51ku4DUL|9j0hb1C4k!Mx;XG8P!Wj zQ|PLNU02JNVV_bhc~Kl%U?cq|7j4^Ni%x&84GiHb zNf*F9pwo*C6ZL^P;%Tb^+B{DSvSIf9GkjKx7Zwc$xt?s_c2J$>+7+b3am&8&9bU6Z zSw@?QHaVkkr~YpvCEX(xPWIcg>V%mD#c6a-b@Y>ZG{Yy17#26&MS5yz5>2L?Yx|Ac z;r1kf!AZE8TOz|bm9R=7nX$T|;xbfhRDJaXM)LKWrOs@LrGmWVs-K;YW+!AGF>5RK zHEW2>1DG|l*rDT|0 z0g-3Di=qDd#A6ULXLX?k;Uz-Ys`~3e?tQVjw!O|yB&}Ho$j$Tl#(U|-jFH=cCGPp} z4EUd@u7i;fy2kEQn%qkzB3FVWuPt0K<${06eiK!W{1AWdxnsSv3KjSbD) zBf3g+?=x%%E3;ID&1Y!@RdmO%gD??e6Yf-7=$5^J3S?HxM4(*`zOf3p4JI>FItF*u zolOZZ5$I1n0r*tTc=WCeCcHCG^VQ|^swNfb6UFKUc>1ASH{Vp*;N4e@YU|nA0~&*- z?x-8bqul9}7|h}~VoEn0`yqvQlO*nPjZpjy-|@Pt_M9K%C`en*hjQeSKIXzADt%Y=`JVx?QpdDV)a*S($<;IrJ9^@2RBr|D;Q446C5|Jc>Gx=Dq_c3{*CIr`rGQ7Tl=ZwS zo=lggT2N~;`!0QH)X!dvr7m{!PzEa4K4@ZLr{;g(gCG+TVQgG3Q+v84;RiYio&Z#Z z1O9!I!n*R9+}5p|9-)yC0Hd^4NnVX!*qif}o%Up5sAiCQroSJ_u!-|oks Pcg|pKVF#@<^GW$X8lI6X diff --git a/GUI/Assets/StoreLogo.scale-400.png b/GUI/Assets/StoreLogo.scale-400.png deleted file mode 100644 index 028e4e9f830dba224fd9a7fc9bf37ff84cf13c37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7459 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 diff --git a/GUI/Assets/Wide310x150Logo.scale-100.png b/GUI/Assets/Wide310x150Logo.scale-100.png deleted file mode 100644 index 10182d94066b0b2e2b9518a4415f6fbf8b386e65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1879 zcmd^={W}u~0LSN^dt5vsN|CpouFGZEnY?XG%IkT&W(kYDN0>Eh%U<;2MBS!DEHBj% z!Z6KL#yK^etu4>I#h4On-n!Wf^Lp<7jr-yI{d|A>{`UPA1PA);)jq5Z008#-`Fe%| z02+?F`QaYTT@M?rk?%q)(>DSQ02pNbD~+in3mgFOgO;DCM;NYRX&m2FiZS~`rYFgS zpUyA7d-PrGsayJ%Ho0zC>b|uJb#D-EW6F1|?xvfM}#M}q1 zs+ou2(h}-bFfw6~b}52!tfQlY!|(@@TZ-#Ar7pp9L6+#~6$8g?a5Zlo96zx6>3cy) zGaVABB3s9px7Z?#^g5Vq_6qbh?>=~gyXf{&{-CgR@IiIR?S^$H7#FWdKq0i0rE$LeTqM`}XLKv?E?d4(RM3iYg%^+0aao&8o7wuH#T>Q7Q6Kf)zvJ-M7y zWe+0_$~+fEuWPR<@EqInb{cU(fE0x`zgWlO-?xI3RhivUT+tA2vldup5oBkW3P>rt?C}DJTJ_L)=o1ImUVFWG^xK z`4pfqGzs3at*YqAC0B)^=Iv*j^mHk`w?A{;%MY=lH`$$6M3~ys$Tv5B#K&I}zPRGD z=8IOCGM2r4hy{^mQA_s&?qH|Re;rj`{Hw@WUgRGaclmNt&SKjdpjWIbz5+3`VLGH-i$dg)8U<>jsR=C8`Fnf1&c0z}?-OSEgTBTJllt zBsSG+iX1j(4)nU=;|4fnyJv)*l8xmBQFY@v5~x&-25n6pJCc^w0Q1G;sXnysl;EYD zEfw9Xu}2IB&hg5x_A&SKD~GOKj$7VsY@x_rV}1I&iERlhU)DTk$_mJ6_tn4q zWTDjgaGWp9*BN8{6gfWrIX=-#mC9OWLFb2K45w3LS{CxWFxzb*VsiQtvq!VeA-0+u zL)%{Snl;--5Fx{<0i$`x}$Ajy|126jEXaOJ^0!Q6mf)3#Fva*U>+5X;1JD= z&kdtTYnM6ZB-l<}E;(L}%+Rc`LT*XUK*IBOoQILQ!qWfCDF638e0L2s8TKIS{>aVU Prv&(U1$xp?U%dGbU`Ms8 diff --git a/GUI/Assets/Wide310x150Logo.scale-125.png b/GUI/Assets/Wide310x150Logo.scale-125.png deleted file mode 100644 index fa86e7501554a042cd84a76c3ff609b8daa8a0f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2407 zcmeHJ`#%#38=sVvLr(9>ZJ0uxQej2M#&#qmDsr9MjyZF`}+IgVaS*r?_co#1Lue5`#hiL`8>aTKi|*ud>=U9uvb2;br=8u zC_7xeati>E%iOEG6czR`k^8Y~FCDsl6%hvj9F6~9$Z>)|iF-Xwhbz`@iN(v)N{w!J zbY88@cIz4cfhU?&D4d@7z3^Fe?vD^diwcd=>ipcmLd55cvy51`Yry7Pv9ZsKYwTK> zCm2ivS4~j*)gvIH9*Qr2pw~z*dTs+w_51r;wuwKTA>Lx{1c`*DR-M!7Ycp2!XP4yx z*&CvDB>*u}bwA)wJ;3Ara{o0@1Q=KY^bYL8<2I!uM!?e$vZ)wnZ278#wKuhf3f2 z_#o!yPsiyhI$CgTE66+CqyS#c>_@Zjn~Y=~+7~%<9(@wuQOg|n4lSt@;04~HDbZd% zmcle)hel77pHtmziw{AEvEU3pj~ycJcz<5x+XIIJwBNxu$LWRw4nEkJvF6z+qv7$7(U+ zhJud2nAgtiS2t+E@FiD7*hQ)_0K?Cj1wr@;+qhG&7+llqWgS&^8oS)mQODYp~h{*)Q z^{Mfw^=P@)g}o&Es5jutFlXX?2~`ykt$mT1dLwLJR(n&N*pf8< zS}5~^8SW;@GGZjw^LA|uI)N{9b3+Abpa$dUZ0S_)!q~)T&jvCw-+H2O6bfWusZ0x( zsczTEuXUL9Xi9QTIWONK54CzgeE?yVY{zBQtTemccyovJ`y|13v-ob9_GEYRl4oBN zF*9Is;DKgln5P@X@e84T$M2Q7p<;wOyX(a+PZx^uH6d}!lbsS5mL|ga9MhnQU~V1= zdQMFy6)w!Q`wR^6w+t1=gcav~+9#FYS3iP2%$c;F16H&e&3^zRr>8T9;c$iG1n+5Z z;%#m0%$=3I7;dZ%u;-zNZ2(nH9_2wzjlpiktFG~RQ5B1M*2fAzekSQpYFHENfxgt@ z-2ur#KIo+&{UGS$a<#?>?pHM>tUS0i=3 zs5?9!a9LLKzPxxP7Ed+U+t`h16N7H(zia*1*!{jC3sn zSg%utEfYqB8JxtCSLxdWBHd0IT?sCpfv|2o~&^ z+rh_mn9ct%cEDjsFQ7j%sQ-M$B5)8Ik@$|!4|!^GT!C4tbD))?$QX>Ff(b#h%pq?EW_{%R#4$ z_|g8@shHeKcnpVx-YjAL<+tfqKt}A$k!Yi*{8Lyq@Ooop2?ue22!V#6q^-7S;iKGO zkd(qSL)SL{nd-;i0IL^t=!JFS*lc|L<)-JmPlFkjN7s#ql(l}a2gNyE%mu3dMw69x z$KPbZ%H677c*y9rME5eqTCY2gCQoH7b{-ABuQ8IfcQG9(E7HrXcUvNLit<`cwD;U< z7C+}a?hvmktQIp9eaG&7Ndp=HBSy|JSByI(3W?P;`= z<8>IBQro8_BOl2u+O4y!un+%XLPhc4Kl^`NhZxyI?_>U)(;2YIfIvox|C7$QNQ-0;XnpfZk7MVPA5RXf z|06Ua<*m}v_}`ro?pY^y+eK&ZHYz)p?tNBwWaot)w{J(-mYlnP_T`1kYhpK_atWu5 zi$D7J>r~#nk2>`@{8&c1-W{UOnv*3L?i@Gz)P2tuH$zvPvgG6An+U~{T-aVZVF(WZ8{e1nNmGqd3kf(D08A*JekdtAqn1}N76 zxoM|fgR02>L5Jxjd2K^wt~Enalscv+M91?}B+XMiLql&Dy7Gia0d&j=p~4 zfyX9|;6-V^74T_Z2U&<8g^);gvcZ9cpvq|3-5R9YnjNny+v=1wyQBOPtATk$lNTj? zgTouMI8V_$p7c3-Gi*Qg)k>0Rw5!iNO@k`= ztu@C0_oONT8V=lB8Xi*L^(%Obu^Ckt9rI6`C0pW2LYeYTQ#XJ<$hQWCoiMTXV8kpmFz%`&i`XBaMsh zy+r$ZmLPr91T8Mj-ZzWz`Vl+kHa}`-*+OW%5jU{(ABIx2|HlXA+Rm(I2{~5-&CN{> zqi*bq4>J0^mS!5Hk+@V!5;&20wNC{)t94OKebw~hBn0ULe9PTe=dOM_Vcg=icEbTk zl6x?2aSRn-Uw^Q+QQjQ36lfL9-YM*7?{Ya5pX0-cY=Pqz6I(gVvkHDl{05y2bB|5f zQuA#CNM)JVmZZu!(%2-QkB)(mES8t+9=QzPd2|>R{=+KJ*7BcVV9D-;k2Sg?ADbIXf_e8(gaM&IqY+SfeSN+|n!M zdeO1h1-#*V{{2ma#}3%U;KkZ5bZFX;yXf&q&|ovXjjsFcwa2C;)|$$xPXl!`fEr^n zPvqgT{j&zX0k41h*bQaKN*HlxR4+-S|jtG|tbC=qP41z)7Z1n-_4E z00L3A?%lZDtnPbLJ?-tc4gGNq4nV-{K4_pJG0^`wpUk zbA%p~PH;KbOXXJp{=z&ub$#UY`{Bo=dNlKcf$du?>(sXJ={`mS)(=ZoyV0rYQitv^s><7390U4n`%j zzL3k)UR6o4$L7Hw;zSjQ@^?}i>n(W*lZ>yZvI(%~QXoEGzxr5b4}T z&%SJT^-Y3$UIBOYOPbaQWRx1Z@=C{haWV z5!7Dy6L26e$_4C6S*a$waphusAn=*6)V5K}R&(IY-RGNtlBk`5kgPKpMekARCApeji&s?yUd6*{{4pRlb_BHYwedRehoIG+uKXlAO zwxE!;5psno7o4c{u@Ma`+6OZj+gYAcFQ}C^u~Ao#%#>KDuNNwYAM#ydJb26^iG*|O u3Vm1cTV||*@{aT`GW#=<+5bH)5@H`%x?kI2xxC8wppz#M9?avH)Bg)MfbnrXBtg~l8;_Zqj#)M$a+EykP>G9|^`_DzMcLJb!x zOLGI41Qmr$fs&AM6hsjz$qiH_LlhT&&Oh-x?}zzt&pqd!`{6myea^Y}x%W>7`5XOv z*S`S(fYGs|KBoYHO(+0B&+cE}ZB(+Xl>-}T^Od6^7yw|$)xSe;^dcw)0NCDj%;(6N zl#*FV`eR{I=^GW_P*XhOv-|6eV^8Mnc321kMcu?@1I(EPAQUl@0yoQKABuL z%Dyr>xk67e0su}a+B%#8fNR+&>h%CW?iB$54~;hfzu)Wxxc2!QAmDJ~4I{vAm(K41 zf0RV)1C9p$)AkP`|NjcPW(h4s+MK~eJ2J@^<%^P%y-7-mn_peHITo!n(u+Lz4X}QX z9L~!=+h0et&fhKiZW}Iwu{PU6eQCW&pROpq(B4c`3o^=y{T}(|!3h(u$giP7= zjv@p2!pVV7*jx1Y;?SvR{~txydeb5tN$3nOYie-)%ckffBc7OxJ^=wfCP=Os_(8f; zY8oGT2j)N{c2rM?@IK5ol)k|otJf=Su2v-l4%DE|R0QRjbF6?XC0BlJUvwbdC&9OY zMW3fR<&hzDH@QjAxEKMvZdn+uUuLEh@AL?DVpLD(PI$c##Vor6Q{H{w5Rbvswrb@? zN%E?McjJYeJ$UyWOr(1hOelmc5Rraxj38NjD*EmQ*vSvUrs0QvU%zqJGe!D<*`BmK zSnMwmH)Au#9u^n~x1DoQGpw+>$zYogEi?(<5U0)MH*RW1E?`j}!kTzT#dFWrrw%=k zcTgy3Mp~{i$FdzjU!y$Z@yI*yep`72W1&3KK1|%HxEqmlc2z##g;35(_Gr~PMeZ)9 z$qHdwNmOy-2T4706vi7vj&4`q-!ZH60J#2*t$T%>CFurU)-rSa>_pf>@2E`FSD^Ec zZCB%PUi`L98Y6;^kLr&b+NWIZ>m;?0iHezmrTj#T!9b{iAhvor%^*HKae%}1I2q{j zG@A#z+}kGz?_0_ZB+RdbID)DsJ|*)zo)epZB!~8!8aw*IN?JPV9RbcZ+TcH(=5d8( zlA!SS{A*WScD!bINPzl%6%r#zkp2ht2DStBrm64D`k_xf-qOAS^jfyF`Wz_UbBw2Y z05$NTMMi{1)hkB5W&REfU=6%>b`X1#lry>_8`QMUlrmi?ss;UW&zp^drlU-_Y+0{# zgnTv+ZELW2AlLPAPv`phM_prEbDSe3uaZ*K(MZfjW<jsqRhT9xER%sQhQG&e5OwT!>GsJJJ#mF^6YGnBJNB$19WgayZ*R9aJ%r{P zu>IUAolZ7#N!j?v^~Qjv3|Q;d;aBVho_M}Yk)_Hx)Jk-GWW#!_zx7^zNAEzU-K{5GIoPmGk^VZ^1)^^KeGC>CFaTR!&nUzn57SU{nbr7@e~mgc0vosUSy z-z;P}w9U1DpVdFhX+ZHFibV0LGvbx`mIQT2=2%t4bH19~mnfWOvI^imRJ8*aDXMPb zE1>r4edjX^t#?5;d+s7ezjK6I48OjEskeSsr&Hkm<>VL1D$-ruR`s#z1XoW z0fp4E%waG2Ve!CUudsNl$d2{kvo93HG|9Jx zfIv!tZD{qo;h!&u{{l+=%}^orVx*~9syYL!sd*xD9MiLTt3MtDGHchZC9E9V%X$fP z_UnHV%dTpQ<(QQ-e9yY*Ju4~sxm`tXDT36SZ=4OEBcM^-nP_fc0b*M(0 zwYG7Hs4i8qT;hbNvT%otBGQ$4p>-kOY7Qi z)}I;TIDW1r_zZ?mMeUt`yRmH-doGoEJKGNeSRoiszp&gzrX z2YdBL*SYrTR#!e2v#naD$3kl=CXyPIP>IaIp|?ZXI6ZhGH@G=6y|yTv$MmtZ(}nR~ zLMg`yw4d}G8dPnIoEC!O31JJrz+pf4GAl8!8RU~``uotto?T2%o*>*@E%}zXi{wB> zH@Pn0Pr+C?FVEh#3F6Yw#vmrG((Tq?-!7y^OwK-nO7FgIahFRNF~vQX`GIiV@xzcy zAD%&_@vm1QH;hsqM(YpTnq`3Lw%pG7%B1;>5Xt_0^$OKsqNE{FMYn2SRZB~-pUo~x zTxY$(bj#QM^;vYd?|?-P9DMJ|LM5ejA>WO>ssbsOK0nNkH|lg6zax)vR5re%R8**d2wcE_F?s0oeHpj%Bt@7M1*9%E87GtogIF2*L0hV!PO6ro4k zdzti!{!ZzHUaxbAC7aw;ImZU v*3GLP=QTF-cK?{se{A>v{2!uKXOMEw?)Lo8pMo}iJb+`qK|bVPqi_5lYUy9> diff --git a/GUI/Assets/Wide310x150Logo.scale-400.png b/GUI/Assets/Wide310x150Logo.scale-400.png deleted file mode 100644 index 680b98d042becb29e2789371aa69cb9efe5839f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11748 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

B~-$P@<_EcMOx~O;;**j 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 F{|8TMo0k9p diff --git a/GUI/Images/joularjx.png b/GUI/Images/joularjx.png deleted file mode 100644 index 382dc72d4de168fa53e74434500f39910a4871dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43078 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 z 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/GUI/MainWindow.xaml.cs b/GUI/MainWindow.xaml.cs deleted file mode 100644 index 08265f9..0000000 --- a/GUI/MainWindow.xaml.cs +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using org_noureddine_joularjx_gui.Models; -using org_noureddine_joularjx_gui.Pages; -using org_noureddine_joularjx_gui.Shared; -using Microsoft.UI.Xaml; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Media.Animation; -using Microsoft.UI.Xaml.Navigation; -using Newtonsoft.Json; -using System; -using System.Runtime.InteropServices; -using System.Threading.Tasks; -using Windows.Storage.Pickers; -using Windows.Storage; -using WinRT; -using Microsoft.UI.Windowing; - -namespace org_noureddine_joularjx_gui -{ - ///

- /// The main window of the application - /// - public sealed partial class MainWindow : Window - { - - public MainWindow() - { - this.InitializeComponent(); - WindowManagement.SetupDefaultSize(this); - navigationView.ItemInvoked += NavigationView_ItemInvoked; - navigationView.Loaded += NavigationView_Loaded; - DisableNavigationItemsExceptHome(); - - ExtendsContentIntoTitleBar = true; - SetTitleBar(appTitleBar); - } - /// - /// Invoked when the main window page is loaded - /// - /// - /// - private void NavigationView_Loaded(object sender, RoutedEventArgs e) - { - //Launch "HomePage" as the default page - ContentFrame.Navigate(typeof(HomePage)); - navigationView.SelectedItem = homeNavItem; - } - /// - /// Disables all navigation view items except the home navigation item at the start before the user selects the joular results folder - /// - private void DisableNavigationItemsExceptHome() - { - foreach (NavigationViewItemBase item in navigationView.MenuItems) - { - if (item is NavigationViewItem navigationItem && navigationItem != homeNavItem) - { - navigationItem.IsEnabled = false; - } - } - } - /// - /// Invoked when a navigation trough the menu has been made - /// - /// - /// - private void ContentFrame_Navigated(object sender, NavigationEventArgs e) - { - // Update the "back" button to allow it to go back - navigationView.IsBackEnabled = ContentFrame.CanGoBack; - } - /// - /// Invoked when the back button is clicked, it permits to go back to the last page and the last navigation item - /// - /// - /// - private void NavigationView_BackRequested(NavigationView sender, NavigationViewBackRequestedEventArgs args) - { - Type oldPageType = ContentFrame.CurrentSourcePageType; - NavigationViewItem oldNavItemSelected = (NavigationViewItem)navigationView.SelectedItem; - if (ContentFrame.CanGoBack) - { - ContentFrame.GoBack(); - } - Type currentPageType = ContentFrame.CurrentSourcePageType; - - //Update the navigation view item selected according to the last and the current page - if (oldPageType == typeof(MethodPage)) - { - switch (oldNavItemSelected.Tag?.ToString()) - { - case "MethodsAppPage": - NavigateToNavItemPage(methodsAppNavItem); - break; - case "MethodsAllPage": - NavigateToNavItemPage(methodsAllNavItem); - break; - case "CalltreesAppPage": - NavigateToNavItemPage(calltreesAppNavItem); - break; - case "CalltreesAllPage": - NavigateToNavItemPage(calltreesAllNavItem); - break; - default: - break; - } - } - else if (currentPageType == typeof(HomePage)) - { - navigationView.SelectedItem = homeNavItem; - } - else if (currentPageType == typeof(AllPIDsPage)) - { - navigationView.SelectedItem = allPIDsNavItem; - } - else if (currentPageType == typeof(AllMethodsPage)) - { - navigationView.SelectedItem = methodsAppNavItem; - } - } - /// - /// Invoked when a navigation view item has been clicked - /// - /// - /// - private void NavigationView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args) - { - NavigationViewItem selectedItem = args.InvokedItemContainer as NavigationViewItem; - if(selectedItem != null) - { - NavigateToNavItemPage(selectedItem); - } - } - /// - /// Invoked when the selected navigation view item changes - /// - /// - /// - private void NavigationView_SelectionChanged(NavigationView sender, NavigationViewSelectionChangedEventArgs args) - { - NavigationViewItem selectedNavItem = args.SelectedItem as NavigationViewItem; - if(selectedNavItem != null) - { - NavigateToNavItemPage(selectedNavItem); - } - } - /// - /// Permits to navigate to the convenient page according to a navigation view item - /// - /// the navigation view item - private void NavigateToNavItemPage(NavigationViewItem item) - { - AllMethodsPageParameters allMethodsPageParameters = new AllMethodsPageParameters(); - string navigationState; - if (item == null) { return; } - string tag = item.Tag.ToString(); - if (string.IsNullOrEmpty(tag)) { return; } - //Navigate to the convenient page according to the navigation view item's tag - switch (tag) - { - case "HomePage": - ContentFrame.Navigate(typeof(HomePage)); - break; - case "AllPIDsPage": - navigationState = JsonConvert.SerializeObject(CurrentJoularResultsItems.PIDs); - ContentFrame.Navigate(typeof(AllPIDsPage), navigationState); - break; - case "PIDPage": - navigationView.SelectedItem = methodsNavItem; - break; - case "MethodsPage": - navigationView.SelectedItem = methodsAppNavItem; - break; - case "MethodsAppPage": - allMethodsPageParameters.MethodType = MethodType.Type.Method; - allMethodsPageParameters.AppType = AppType.Type.App; - navigationState = JsonConvert.SerializeObject(allMethodsPageParameters); - ContentFrame.Navigate(typeof(AllMethodsPage), navigationState); - break; - case "MethodsAllPage": - allMethodsPageParameters.MethodType = MethodType.Type.Method; - allMethodsPageParameters.AppType = AppType.Type.All; - navigationState = JsonConvert.SerializeObject(allMethodsPageParameters); - ContentFrame.Navigate(typeof(AllMethodsPage), navigationState, new EntranceNavigationTransitionInfo()); - break; - case "CalltreesPage": - navigationView.SelectedItem = calltreesAppNavItem; - break; - case "CalltreesAppPage": - allMethodsPageParameters.MethodType = MethodType.Type.Calltree; - allMethodsPageParameters.AppType = AppType.Type.App; - navigationState = JsonConvert.SerializeObject(allMethodsPageParameters); - ContentFrame.Navigate(typeof(AllMethodsPage), navigationState); - break; - case "CalltreesAllPage": - allMethodsPageParameters.MethodType = MethodType.Type.Calltree; - allMethodsPageParameters.AppType = AppType.Type.All; - navigationState = JsonConvert.SerializeObject(allMethodsPageParameters); - ContentFrame.Navigate(typeof(AllMethodsPage), navigationState); - break; - default: - break; - } - } - /// - /// Shows a folder picker and store the selected folder into "CurrentJoularResultsItems.joularResultsFolderPath" - /// - /// - /// - /// - public async Task SaveJoularResultsFolderFromFolderPicker(object sender, RoutedEventArgs e) - { - // Create a folder picker - FolderPicker openPicker = new FolderPicker(); - // Retrieve the window handle (HWND) of the current WinUI 3 window. - var hWnd = WinRT.Interop.WindowNative.GetWindowHandle(this); - // Initialize the folder picker with the window handle (HWND). - WinRT.Interop.InitializeWithWindow.Initialize(openPicker, hWnd); - // Set options for your folder picker - openPicker.SuggestedStartLocation = PickerLocationId.Desktop; - openPicker.FileTypeFilter.Add("*"); - // Open the picker for the user to pick a folder - StorageFolder folder = await openPicker.PickSingleFolderAsync(); - if (folder != null) - { - CurrentJoularResultsItems.joularResultsFolderPath = folder.Path; - } - } - /// - /// The interface to show the selecting folder dialog box to the user - /// - [ComImport] - [Guid("3E68D4BD-7135-4D10-8018-9FB6D9F33FA1")] - [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] - public interface IInitializeWithWindow - { - void Initialize(IntPtr hwnd); - } - [ComImport] - [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] - [Guid("EECDBF0E-BAE9-4CB6-A68E-9598E1CB57BB")] - internal interface IWindowNative - { - IntPtr WindowHandle { get; } - } - } -} \ No newline at end of file diff --git a/GUI/Models/AllMethodsPageParameters.cs b/GUI/Models/AllMethodsPageParameters.cs deleted file mode 100644 index 246451d..0000000 --- a/GUI/Models/AllMethodsPageParameters.cs +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace org_noureddine_joularjx_gui.Models -{ - /// - /// The paramaters for the "AllMethodsPage" Page - /// - public class AllMethodsPageParameters - { - public MethodType.Type MethodType { get; set; } - public AppType.Type AppType { get; set; } - } -} diff --git a/GUI/Models/AppType.cs b/GUI/Models/AppType.cs deleted file mode 100644 index 6661e6f..0000000 --- a/GUI/Models/AppType.cs +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace org_noureddine_joularjx_gui.Models -{ - /// - /// The type of the application ("App" or "All") - /// - public static class AppType - { - public enum Type - { - App, - All - } - } -} diff --git a/GUI/Models/CalltreeChartBar.cs b/GUI/Models/CalltreeChartBar.cs deleted file mode 100644 index 927eb21..0000000 --- a/GUI/Models/CalltreeChartBar.cs +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using Microsoft.UI; -using Microsoft.UI.Xaml.Media; - -namespace org_noureddine_joularjx_gui.Models -{ - public class CalltreeChartBar - { - public SolidColorBrush RectangleColor { get; set; } - public bool IsLastItem { get; set; } - public string Text { get; set; } - public int Length { get; set; } - public static int MaxLength = 0; - public CalltreeChartBar(string text, int maxLength = 0) - { - Text = text; - if (maxLength > 0) - { - MaxLength = maxLength; - } - Length = MaxLength; - IsLastItem = false; - UpdateRectangleColor(); - - } - public void UpdateRectangleColor() - { - if (IsLastItem) - { - RectangleColor = new SolidColorBrush(Colors.LimeGreen); - } - else - { - RectangleColor = new SolidColorBrush(Colors.SteelBlue); - } - } - } -} diff --git a/GUI/Models/Method.cs b/GUI/Models/Method.cs deleted file mode 100644 index e3821de..0000000 --- a/GUI/Models/Method.cs +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using System; -using System.ComponentModel; - -namespace org_noureddine_joularjx_gui.Models -{ - /// - /// A method that has been used into the application analysed by joularjx - /// - public class Method : INotifyPropertyChanged - { - private string _name; - private double _powerConsumption; - public double ConsumptionPercentage { get; set; } - - public string Name - { - get { return _name; } - set - { - if (_name != value) - { - _name = value; - OnPropertyChanged(nameof(Name)); - } - } - } - - public double PowerConsumption - - { - get { return _powerConsumption; } - set - { - if (_powerConsumption != value) - { - _powerConsumption = value; - OnPropertyChanged(nameof(PowerConsumption)); - } - } - } - - public void UpdatePercentage(double totalPowerConsumption) - { - if(totalPowerConsumption == 0) - { - ConsumptionPercentage = 0; - } - else - { - ConsumptionPercentage = ((PowerConsumption * 100) / totalPowerConsumption); - ConsumptionPercentage = Math.Round(ConsumptionPercentage, 2); - } - } - - public Method(string name, double totalPowerConsumption) - { - Name = name; - PowerConsumption = totalPowerConsumption; - } - - public event PropertyChangedEventHandler PropertyChanged; - - protected virtual void OnPropertyChanged(string propertyName) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); - } - } -} diff --git a/GUI/Models/MethodConsumption.cs b/GUI/Models/MethodConsumption.cs deleted file mode 100644 index df0b439..0000000 --- a/GUI/Models/MethodConsumption.cs +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using System.Collections.Generic; - -namespace org_noureddine_joularjx_gui.Models -{ - /// - /// The consumption evolution of a method per timestamp - /// - public class MethodConsumption - { - public List Evolution; - - public MethodConsumption(List evolution = null) - { - if(evolution != null) - { - Evolution = evolution; - } - } - } -} diff --git a/GUI/Models/MethodConsumptionPerTimestamp.cs b/GUI/Models/MethodConsumptionPerTimestamp.cs deleted file mode 100644 index e287892..0000000 --- a/GUI/Models/MethodConsumptionPerTimestamp.cs +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; -using System.Security.Cryptography.X509Certificates; -using System.Text; -using System.Threading.Tasks; - -namespace org_noureddine_joularjx_gui.Models -{ - /// - /// Method's consumption per timestamp - /// - public class MethodConsumptionPerTimestamp - { - public double Consumption; - public int Timestamp; - - public MethodConsumptionPerTimestamp(double consumption, int timestamp) - { - Consumption = consumption; - Timestamp = timestamp; - } - } -} diff --git a/GUI/Models/MethodPageParameters.cs b/GUI/Models/MethodPageParameters.cs deleted file mode 100644 index b1e3990..0000000 --- a/GUI/Models/MethodPageParameters.cs +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace org_noureddine_joularjx_gui.Models -{ - /// - /// The parameters of the "MethodPage" page - /// - public class MethodPageParameters - { - public Method Method { get; set; } - public MethodType.Type MethodType { get; set; } - public double TotalPowerConsumption { get; set; } - } -} diff --git a/GUI/Models/MethodType.cs b/GUI/Models/MethodType.cs deleted file mode 100644 index 4165dde..0000000 --- a/GUI/Models/MethodType.cs +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace org_noureddine_joularjx_gui.Models -{ - /// - /// The method type ("Method" or "Calltree") - /// - public static class MethodType - { - public enum Type - { - Method, - Calltree - } - } -} diff --git a/GUI/Models/MethodsChartPlotModel.cs b/GUI/Models/MethodsChartPlotModel.cs deleted file mode 100644 index 10dd77b..0000000 --- a/GUI/Models/MethodsChartPlotModel.cs +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using OxyPlot.Axes; -using OxyPlot.Series; -using OxyPlot; - -namespace org_noureddine_joularjx_gui.Models -{ - /// - /// The plot model for a method's consumption evolution - /// - public class MethodsChartPlotModel - { - private static MethodConsumption _methodConsumption; - public PlotModel Model = new(); - private readonly LineSeries _lineSeries = new() - { - Title = "Line Series", - MarkerType = MarkerType.Circle, - Color = OxyColor.FromRgb(0, 120, 215) - }; - private readonly LinearAxis _xAxis = new() - { - Title="\nTimestamp (S)", - Position = AxisPosition.Bottom, - Angle = -45, - - }; - private readonly LinearAxis _yAxis = new() - { - Title = "Power Consumption (J)\n", - Position = AxisPosition.Left, - }; - public MethodsChartPlotModel(MethodConsumption methodConsumption) - { - _methodConsumption = methodConsumption; - Model.Axes.Add(_xAxis); - Model.Axes.Add(_yAxis); - _lineSeries.Points.AddRange(GetDataPoints()); - //Model.PlotMargins = new OxyThickness(0); - Model.Series.Add(_lineSeries); - } - /// - /// Retrieve datapoints from the "_methoddConsumption.Evolution" list - /// - /// - private static IEnumerable GetDataPoints() - { - List dataPoints = new(); - - foreach (MethodConsumptionPerTimestamp consumptionPerTime in _methodConsumption.Evolution) - { - DataPoint dataPoint = new(consumptionPerTime.Timestamp, consumptionPerTime.Consumption); - dataPoints.Add(dataPoint); - } - return dataPoints; - } - } -} diff --git a/GUI/Models/PID.cs b/GUI/Models/PID.cs deleted file mode 100644 index ed2f467..0000000 --- a/GUI/Models/PID.cs +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace org_noureddine_joularjx_gui.Models -{ - /// - /// The processor ID from the joular results folder and its creation date - /// - public class PID - { - public string Name { get; set; } - public string CreationDate { get; set; } - - public PID(string pID="", string date="") - { - this.Name = pID; - this.CreationDate = date; - } - - } -} diff --git a/GUI/Package.appxmanifest b/GUI/Package.appxmanifest deleted file mode 100644 index 7d8245e..0000000 --- a/GUI/Package.appxmanifest +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - joularIHM - kabao - Assets\StoreLogo.png - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/GUI/Pages/AllMethodsPage.xaml b/GUI/Pages/AllMethodsPage.xaml deleted file mode 100644 index 196131f..0000000 --- a/GUI/Pages/AllMethodsPage.xaml +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/GUI/Pages/AllMethodsPage.xaml.cs b/GUI/Pages/AllMethodsPage.xaml.cs deleted file mode 100644 index 86fe2cc..0000000 --- a/GUI/Pages/AllMethodsPage.xaml.cs +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using org_noureddine_joularjx_gui.Models; -using org_noureddine_joularjx_gui.Shared; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Navigation; -using Newtonsoft.Json; -using System; -using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Linq; -using System.Runtime.CompilerServices; - - -namespace org_noureddine_joularjx_gui.Pages -{ - /// - /// The page that shows methods according to the application type ("All" or "App") and the method type ("Method" or "Calltree") - /// - public sealed partial class AllMethodsPage : Page, INotifyPropertyChanged - { - public event PropertyChangedEventHandler PropertyChanged; - private AppType.Type _appType; - private MethodType.Type _methodType; - public ObservableCollection Methods { get; set; } - private double _totalPowerConsumption; - public double TotalPowerConsumption - { - get { return _totalPowerConsumption; } - set - { - if (_totalPowerConsumption != value) - { - _totalPowerConsumption = value; - OnPropertyChanged(nameof(TotalPowerConsumption)); - NotifyPropertyChanged(); - } - } - } - private ObservableCollection filteredMethods; - /// - /// The methods displayed according to the results from the search bar - /// - public ObservableCollection FilteredMethods - { - get { return filteredMethods; } - set - { - filteredMethods = value; - OnPropertyChanged(nameof(FilteredMethods)); - } - } - - public AllMethodsPage() - { - this.InitializeComponent(); - pIDTextBlock.Text = $"PID {CurrentJoularResultsItems.PID.Name}"; - this.DataContext = this; - } - - /// - /// Update the methods number founded trough the search bar and update the convenient textblock - /// - private void UpdateMethodsNumberFoundTextblock() - { - string number = "0"; - if(FilteredMethods != null && FilteredMethods.Any()) - { - number = $"{FilteredMethods.Count()}"; - } - methodsNumberFoundTextBlock.Text = $"{number} method(s) found"; - } - /// - /// Invoked when the page is loaded. Retrieves the page's parameters : - /// The type of the method (Method or Calltree) - /// and the type of the app (App or All) - /// - /// - protected override void OnNavigatedTo(NavigationEventArgs e) - { - base.OnNavigatedTo(e); - //Retrieve the page's parameters and save them - if (e.NavigationMode == NavigationMode.New && e.Parameter is string AllMethodsPageParametersToObject) - { - AllMethodsPageParameters parameters = JsonConvert.DeserializeObject(AllMethodsPageParametersToObject); - _methodType = parameters.MethodType; - _appType = parameters.AppType; - this.DataContext = this; - } - UpdateTitleTextBlock(); - UpdateMethodsList(); - UpdateMethodsNumberFoundTextblock(); - TotalPowerConsumption = CalculateTotalPowerConsumption(); - RetrieveMethodsConsumptionsPercentages(); - //Don't show the methods list view if the methods list is empty - if (!Methods.Any()) - { - methodListView.Visibility = Microsoft.UI.Xaml.Visibility.Collapsed; - } - } - /// - /// Update the methods list according to the method type and the app type - /// - private void UpdateMethodsList() - { - if ((_methodType == MethodType.Type.Method) && (_appType == AppType.Type.App)) - { - Methods = new ObservableCollection( - CurrentJoularResultsItems.AppMethodsTotalConsumptions); - } - else if ((_methodType == MethodType.Type.Method) && (_appType == AppType.Type.All)) - { - Methods = new ObservableCollection( - CurrentJoularResultsItems.AllMethodsTotalConsumptions); - } - else if ((_methodType == MethodType.Type.Calltree) && (_appType == AppType.Type.App)) - { - Methods = new ObservableCollection( - CurrentJoularResultsItems.AppCaltreesTotalConsumptions); - } - else if ((_methodType == MethodType.Type.Calltree) && (_appType == AppType.Type.All)) - { - Methods = new ObservableCollection( - CurrentJoularResultsItems.AllCaltreesTotalConsumptions); - } - FilteredMethods = new ObservableCollection(Methods); - } - private void OnPropertyChanged(string propertyName) - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); - } - /// - /// Update the title textblock to display the convenient PID's name - /// - private void UpdateTitleTextBlock() - { - string pageTitleTextBlockContent = string.Empty; - - if(_appType == AppType.Type.App) - { - pageTitleTextBlockContent += "App "; - } - else - { - pageTitleTextBlockContent += "All "; - } - - if(_methodType == MethodType.Type.Method) - { - pageTitleTextBlockContent += "Methods "; - } - else - { - pageTitleTextBlockContent += "Calltrees "; - } - - pageTitleTextBlockContent += "Power Consumption"; - titleTextBlock.Text = pageTitleTextBlockContent; - } - /// - /// Invoked when a method has been clicked into the methods list view. - /// Retrieve the method selected and navigates to the "MethodPage" page with its parameters - /// - /// - /// - /// - private void MethodListView_ItemClick(object sender, ItemClickEventArgs e) - { - Method selectedMethod = (Method)e.ClickedItem; - //Get the method's power consumption evolution - if(_methodType == MethodType.Type.Method) - { - CurrentJoularResultsItems.MethodConsumptionEvolution = AllPIDsPage.GetMethodConsumptionEvolution(selectedMethod, this._appType); - } - Frame currentFrame = this.FindFirstParentOfType(); - string methodPageParametersObject; - MethodPageParameters methodPageParameters = new MethodPageParameters(); - methodPageParameters.Method = selectedMethod; - methodPageParameters.MethodType = this._methodType; - methodPageParameters.TotalPowerConsumption = this._totalPowerConsumption; - methodPageParametersObject = JsonConvert.SerializeObject(methodPageParameters); - currentFrame.Navigate(typeof(MethodPage), methodPageParametersObject); - } - - private void NotifyPropertyChanged([CallerMemberName] string propertyName = "") - { - PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); - } - - private void RetrieveMethodsConsumptionsPercentages() - { - foreach(Method methods in Methods) - { - methods.UpdatePercentage(TotalPowerConsumption); - } - } - - private double CalculateTotalPowerConsumption() - { - double totalPowerConsumption = 0; - foreach (Method method in Methods) - { - totalPowerConsumption += method.PowerConsumption; - } - return totalPowerConsumption; - } - /// - /// Invoked when the text into the method's search bar changes. - /// - /// - /// - private void AutoSuggestBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args) - { - if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput) - { - string userInput = sender.Text.Trim(); - - // The methods displayed are those that contains the text into the searchBar - FilteredMethods = new ObservableCollection( - Methods.Where(m => m.Name.Contains(userInput, StringComparison.OrdinalIgnoreCase))); - } - UpdateMethodsNumberFoundTextblock(); - } - } -} diff --git a/GUI/Pages/AllPIDsPage.xaml b/GUI/Pages/AllPIDsPage.xaml deleted file mode 100644 index b29a263..0000000 --- a/GUI/Pages/AllPIDsPage.xaml +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/GUI/Pages/AllPIDsPage.xaml.cs b/GUI/Pages/AllPIDsPage.xaml.cs deleted file mode 100644 index 378e489..0000000 --- a/GUI/Pages/AllPIDsPage.xaml.cs +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Copyright (c) 2021-2023, Adel Noureddine, Université de Pau et des Pays de l'Adour. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the - * GNU General Public License v3.0 only (GPL-3.0-only) - * which accompanies this distribution, and is available at - * https://www.gnu.org/licenses/gpl-3.0.en.html - */ - -using org_noureddine_joularjx_gui.Models; -using org_noureddine_joularjx_gui.Shared; -using Microsoft.UI.Xaml.Controls; -using Microsoft.UI.Xaml.Navigation; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.IO; -using System.Linq; - - -namespace org_noureddine_joularjx_gui.Pages -{ - /// - /// An empty page that can be used on its own or navigated to within a Frame. - /// - public sealed partial class AllPIDsPage : Page - { - private List _allPIDs { get; set; } - private string _searchText { get; set; } - public static Button NavigateToAllMethodPageButton { get; set; } - public ObservableCollection PIDs { get; set; } - public ObservableCollection FilteredPIDs { get; set; } - - public AllPIDsPage() - { - this.InitializeComponent(); - NavigateToAllMethodPageButton = navigateToAllMethodsPageButton; - this.DataContext = this; - } - /// - /// Invoked when the page is loaded. - /// Retrieve page's parameters and save them - /// - /// - protected override void OnNavigatedTo(NavigationEventArgs e) - { - base.OnNavigatedTo(e); - if (e.NavigationMode == NavigationMode.New && e.Parameter is string AllPIDsPageParametersObject) - { - List parameters = JsonConvert.DeserializeObject>(AllPIDsPageParametersObject); - PIDs = new ObservableCollection(parameters); - FilteredPIDs = new ObservableCollection(PIDs); - _allPIDs = PIDs.Select(p => p.Name).ToList(); - this.DataContext = this; - } - } - /// - /// Invoked when the text into the PID's search bar changes. - /// - /// - /// - private void AutoSuggestBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args) - { - if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput) - { - string searchText = sender.Text.ToLower(); - List filteredPIDs = PIDs.Where(p => p.Name.ToLower().Contains(searchText)).ToList(); - FilteredPIDs = new ObservableCollection(filteredPIDs); - PIDsListView.ItemsSource = FilteredPIDs; - } - } - /// - /// Invoked when an item (a PID) is selected into the PIDs list view - /// Retrieve the selected PID and navigate to "AllMethodsPage" - /// - /// - /// - private void PIDListView_ItemClick(object sender, ItemClickEventArgs e) - { - PID pIDCardSelected = (PID)e.ClickedItem; - CurrentJoularResultsItems.PID = new PID(pIDCardSelected.Name, pIDCardSelected.CreationDate); - GetPIDMethodsTotalConsumptions(); - NavigationView navigationView = this.FindFirstParentOfType(); - //Enable all navigation view items - foreach (NavigationViewItemBase item in navigationView.MenuItems) - { - item.IsEnabled = true; - } - //Expand the "PIDPage" Navigation Item if the window is large enough - if(navigationView.DisplayMode == NavigationViewDisplayMode.Expanded) - { - foreach (NavigationViewItemBase item in navigationView.MenuItems) - { - if (item is NavigationViewItem navigationItem && navigationItem.Tag?.ToString() == "PIDPage") - { - navigationItem.IsExpanded = true; - break; - } - } - } - // Selects the MethodsAppPage navigation view item to navigate towards the "AllMethodsPage" page - navigationView.SelectedItem = navigationView.MenuItems.OfType() - .FirstOrDefault(item => item.Tag.ToString() == "PIDPage") - .MenuItems.OfType() - .FirstOrDefault(item => item.Tag.ToString() == "MethodsPage") - .MenuItems.OfType() - .FirstOrDefault(item => item.Tag.ToString() == "MethodsAppPage"); - - } - /// - /// Retrieve the methods total consumptions according to the methods type ("Method" or "Calltree") and the app type ("App" or "All"). - /// Save them into the currentJoularResults static clas - /// - public void GetPIDMethodsTotalConsumptions() - { - CurrentJoularResultsItems.AppMethodsTotalConsumptions = GetPIDMethods(AppType.Type.App, MethodType.Type.Method); - CurrentJoularResultsItems.AppCaltreesTotalConsumptions = GetPIDMethods(AppType.Type.App, MethodType.Type.Calltree); - CurrentJoularResultsItems.AllMethodsTotalConsumptions = GetPIDMethods(AppType.Type.All, MethodType.Type.Method); - CurrentJoularResultsItems.AllCaltreesTotalConsumptions = GetPIDMethods(AppType.Type.All, MethodType.Type.Calltree); - } - /// - /// Retrieve the PID's methods according to a method type and an app type - /// - /// - /// - /// - public List GetPIDMethods(AppType.Type appType, MethodType.Type methodType) - { - List methods = new List(); - DirectoryInfo pIDFolder = GetPIDFolder(); - if (pIDFolder == null) { return null; } - - string pIDMethodsSubFolderPath; - if(appType == AppType.Type.App) - { - pIDMethodsSubFolderPath = "app/total/"; - } - else - { - pIDMethodsSubFolderPath = "all/total/"; - } - if(methodType == MethodType.Type.Method) - { - pIDMethodsSubFolderPath += "methods"; - } - else - { - pIDMethodsSubFolderPath += "calltrees"; - } - - DirectoryInfo methodsFolder = GetPSubFolderDirectory(pIDFolder.FullName, pIDMethodsSubFolderPath); - if (methodsFolder == null) { return null; } - - string methodsFileContent = GetCSVFiles(methodsFolder); - if(methodsFileContent == null) { return null; } - - methods = RegularExpressions.ExtractMethods(methodsFileContent); - methods = methods.OrderByDescending(m => m.PowerConsumption).ToList(); - return methods; - } - /// - /// Retrieve the list of a method's consumption per timestamp - /// - /// - /// - /// - public static List GetMethodConsumptionEvolution(Method method, AppType.Type appType) - { - List methodConsumptionPerTime = new List(); - DirectoryInfo pIDFolder = GetPIDFolder(); - if (pIDFolder == null) { return null; } - - string methodEvolutionSubFolderPath; - if (appType == AppType.Type.App) - { - methodEvolutionSubFolderPath = "app/evolution"; - } - else - { - methodEvolutionSubFolderPath = "all/evolution"; - } - - DirectoryInfo methodConsumptionEvolutionFolder = GetPSubFolderDirectory(pIDFolder.FullName, methodEvolutionSubFolderPath); - if (methodConsumptionEvolutionFolder == null) { return null; } - - string methodsFilesContent = GetCSVFiles(methodConsumptionEvolutionFolder, method); - if (methodsFilesContent == null) { return null; } - - methodConsumptionPerTime = RegularExpressions.ExtractMethodConsumptionEvolution(methodsFilesContent); - methodConsumptionPerTime = methodConsumptionPerTime.OrderBy(m => m.Timestamp).ToList(); - return methodConsumptionPerTime; - } - /// - /// Retrieve a sub folder directory from a parent folder - /// - /// - /// - /// - private static DirectoryInfo GetPSubFolderDirectory(string parentFolder, string subFolder) - { - DirectoryInfo subFolderDirectory; - string subFolderPath = System.IO.Path.Combine(parentFolder, subFolder); - try - { - subFolderDirectory = new DirectoryInfo(subFolderPath); - } - catch (Exception ex) - { - Dialog.ShowMessage(NavigateToAllMethodPageButton, $"An error occured while retrieving a PID subfolder :\n" + - $"{ex.Message}"); - return null; - } - return subFolderDirectory; - } - /// - /// Retrieve the CSV files into a folder - /// If a method is declared into the parameters, it will retrieve only the CSV whose name contains the method's name - /// - /// - /// - /// - private static string GetCSVFiles(DirectoryInfo folder, Method method = null) - { - string filesContent = String.Empty; - FileInfo[] csvFiles; - try - { - //Retrieve the csv files info - if(method != null) - { - csvFiles = folder.EnumerateFiles($"*{method.Name}*.csv").ToArray(); - } - else - { - csvFiles = folder.EnumerateFiles("*.csv").ToArray(); - } - //Retrieve the csv files contents - foreach (FileInfo csvFile in csvFiles) - { - using (StreamReader reader = new StreamReader(csvFile.FullName)) - { - string line; - while ((line = reader.ReadLine()) != null) - { - if (!String.IsNullOrEmpty(line)) - { - filesContent += $"{line}\n"; - } - } - } - } - } - catch (Exception e) - { - Dialog.ShowMessage(NavigateToAllMethodPageButton, $"An error occured while the retrieving of the csv files :\n" + - $"{e.Message}"); - return null; - } - return filesContent; - } - /// - /// Retrieve the PID directory Info from the selected PID saved into the "CurrentJoularResultsItems" static class - /// - /// - private static DirectoryInfo GetPIDFolder() - { - DirectoryInfo joularResultsFolder = null; - DirectoryInfo PIDFolder = null; - try - { - joularResultsFolder = new DirectoryInfo(CurrentJoularResultsItems.joularResultsFolderPath); - PIDFolder = joularResultsFolder.GetDirectories() - .Where(dir => dir.Name == CurrentJoularResultsItems.PID.Name) - .FirstOrDefault(); - } - catch (Exception e) - { - Dialog.ShowMessage(NavigateToAllMethodPageButton ,$"Error occured when retrieving joular Results Folder :\n" + - $"{e.Message}"); - } - return PIDFolder; - } - } -} diff --git a/GUI/Pages/HomePage.xaml b/GUI/Pages/HomePage.xaml deleted file mode 100644 index fd3bd47..0000000 --- a/GUI/Pages/HomePage.xaml +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - JoularJX is a Java-based agent - for power monitoring at the source code - level with support for modern Java versions - and multi-OS to monitor power consumption - of hardware and software. - - - - - - Documentation - - - - GitHub Repository - - - - Official Website - - - - - - Let’s start by selecting the 'joularjx-result' folder - - - - - -