summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorskydrome2020-01-31 03:26:55 -0500
committerskydrome2020-01-31 03:26:55 -0500
commitc7502ccdeb991d8072dd00baa1ff4b672b2e6627 (patch)
treea851cda7699969b26bf558ad0e1fe500d2429acc
parent0d47a1ff8985103cf2f5e78bdfe0983bbf2e21ad (diff)
downloadaur-c7502ccdeb991d8072dd00baa1ff4b672b2e6627.tar.gz
update
-rw-r--r--.SRCINFO21
-rw-r--r--.gitignore1
-rw-r--r--PKGBUILD63
-rw-r--r--add_mlbnetwork.patch56
-rw-r--r--config.properties2
-rw-r--r--remove_privileged_actions.patch179
-rw-r--r--update-to-java-13.patch1707
7 files changed, 1753 insertions, 276 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 05f4d2ed301f..33d81f8b6a9b 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,35 +1,34 @@
pkgbase = lazyman-git
pkgdesc = A simple program that lets you stream every NHL and MLB game
- pkgver = 2.3.1.20180418
- pkgrel = 1
+ pkgver = 2.4.0.20191028
+ pkgrel = 2
url = https://github.com/StevensNJD4/LazyMan
- install = lazyman.install
arch = any
license = GPL2
makedepends = java-environment>=8
makedepends = apache-ant
+ makedepends = go
makedepends = git
depends = java-runtime>=8
depends = streamlink
depends = mpv
- depends = ldns
provides = lazyman
conflicts = lazyman
backup = usr/share/java/lazyman/config.properties
source = git+https://github.com/StevensNJD4/LazyMan.git
- source = remove_privileged_actions.patch
- source = add_mlbnetwork.patch
+ source = git+https://github.com/jwallet/go-mlbam-proxy.git
+ source = update-to-java-13.patch
source = config.properties
source = lazyman.sh
- source = lazyman.desktop
source = lazyman.png
+ source = lazyman.desktop
+ md5sums = SKIP
md5sums = SKIP
- md5sums = e48d71e6d053df2516cdb98fa59571b0
- md5sums = dfdda6e67f8400fb478e2def13486950
- md5sums = 184afd99d5106bbb81c72be5e88ec4d2
+ md5sums = 96d5ba5fd23360767fb365b46c0bfc3e
+ md5sums = 16522ba6bdc10dfa827e0d8afbfd3c2e
md5sums = b76d76bc5941418f8f3048b941fa8228
- md5sums = 1b259947cc8e14cd1b0bcad4d05094d9
md5sums = 41aebb968e8b6856d1b73cabd6a8c5d2
+ md5sums = 1b259947cc8e14cd1b0bcad4d05094d9
pkgname = lazyman-git
diff --git a/.gitignore b/.gitignore
index e5d51d75b3fb..ab0b7fb83919 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
src/
pkg/
LazyMan/
+go-mlbam-proxy/
*.pkg.tar
diff --git a/PKGBUILD b/PKGBUILD
index 5effc4395895..256e003822ee 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -3,62 +3,67 @@
# Contributor: StevensNJD4 <github dot com slash StevensNJD4>
pkgname=lazyman-git
-pkgver=2.3.1.20180418
-pkgrel=1
+pkgver=2.4.0.20191028
+pkgrel=2
pkgdesc="A simple program that lets you stream every NHL and MLB game"
url="https://github.com/StevensNJD4/LazyMan"
license=('GPL2')
arch=('any')
-depends=('java-runtime>=8' 'streamlink' 'mpv' 'ldns')
-makedepends=('java-environment>=8' 'apache-ant' 'git')
+depends=('java-runtime>=8' 'streamlink' 'mpv')
+makedepends=('java-environment>=8' 'apache-ant' 'go' 'git')
provides=('lazyman')
conflicts=('lazyman')
-install='lazyman.install'
backup=('usr/share/java/lazyman/config.properties')
source=('git+https://github.com/StevensNJD4/LazyMan.git'
- 'remove_privileged_actions.patch'
- 'add_mlbnetwork.patch'
+ 'git+https://github.com/jwallet/go-mlbam-proxy.git'
+ 'update-to-java-13.patch'
'config.properties'
- 'lazyman.sh'
- 'lazyman.desktop'
- 'lazyman.png')
+ lazyman.{sh,png,desktop})
+
md5sums=('SKIP'
- 'e48d71e6d053df2516cdb98fa59571b0'
- 'dfdda6e67f8400fb478e2def13486950'
- '184afd99d5106bbb81c72be5e88ec4d2'
+ 'SKIP'
+ '96d5ba5fd23360767fb365b46c0bfc3e'
+ '16522ba6bdc10dfa827e0d8afbfd3c2e'
'b76d76bc5941418f8f3048b941fa8228'
- '1b259947cc8e14cd1b0bcad4d05094d9'
- '41aebb968e8b6856d1b73cabd6a8c5d2')
+ '41aebb968e8b6856d1b73cabd6a8c5d2'
+ '1b259947cc8e14cd1b0bcad4d05094d9')
pkgver() {
- cd "$srcdir/LazyMan"
+ cd LazyMan
cat VERSION
}
prepare() {
- cd "$srcdir/LazyMan"
- #patch -Np0 -i "../remove_privileged_actions.patch"
- #patch -Np0 -i "../add_mlbnetwork.patch"
+ cd LazyMan
+ patch -Np1 -i ../update-to-java-13.patch
+
+ sed -i src/Objects/Proxy.java \
+ -e 's|mitm = "linux".*|mitm = "mlbamproxy";|'
}
build() {
- cd "$srcdir/LazyMan"
+ cd LazyMan
rm -rf build dist store
- ant -Dplatforms.JDK_1.8.home=/usr/lib/jvm/default jar
+ ant jar
+
+ cd ../go-mlbam-proxy
+ go build -o ../LazyMan/mlbamproxy
}
package() {
- cd "$srcdir"
+ cd LazyMan
install -dm755 "$pkgdir"/usr/bin
install -dm755 "$pkgdir"/usr/share/applications
install -dm755 "$pkgdir"/usr/share/icons
- install -dm777 "$pkgdir"/usr/share/java/lazyman
install -dm755 "$pkgdir"/usr/share/java/lazyman/lib
- install -Dm755 lazyman.sh "$pkgdir"/usr/bin/lazyman
- install -Dm644 lazyman.desktop "$pkgdir"/usr/share/applications/lazyman.desktop
- install -Dm644 lazyman.png "$pkgdir"/usr/share/icons/lazyman.png
- install -Dm777 config.properties "$pkgdir"/usr/share/java/lazyman/config.properties
- install -Dm644 LazyMan/dist/LazyMan.jar "$pkgdir"/usr/share/java/lazyman/LazyMan.jar
- install -Dm644 LazyMan/src/lazyman/*.jar "$pkgdir"/usr/share/java/lazyman/lib/
+
+ install -Dm644 dist/LazyMan.jar "$pkgdir"/usr/share/java/lazyman/LazyMan.jar
+ install -Dm644 src/lazyman/*.jar "$pkgdir"/usr/share/java/lazyman/lib/
+ install -Dm755 mlbamproxy "$pkgdir"/usr/share/java/lazyman/mlbamproxy/mlbamproxy
+
+ install -Dm755 ../lazyman.sh "$pkgdir"/usr/bin/lazyman
+ install -Dm644 ../lazyman.desktop "$pkgdir"/usr/share/applications/lazyman.desktop
+ install -Dm644 ../lazyman.png "$pkgdir"/usr/share/icons/lazyman.png
+ install -Dm777 ../config.properties "$pkgdir"/usr/share/java/lazyman/config.properties
}
diff --git a/add_mlbnetwork.patch b/add_mlbnetwork.patch
deleted file mode 100644
index c23b7e5f41af..000000000000
--- a/add_mlbnetwork.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-diff -Naur src/lazyman/MainGUI.java src.b/lazyman/MainGUI.java
---- src/lazyman/MainGUI.java 2018-03-27 15:01:06.810076336 -0400
-+++ src.b/lazyman/MainGUI.java 2018-03-27 15:03:48.667710087 -0400
-@@ -156,9 +156,11 @@
- jMenu2 = new javax.swing.JMenu();
- preferencesMI = new javax.swing.JMenuItem();
- jMenu3 = new javax.swing.JMenu();
-+ jMenu4 = new javax.swing.JMenu();
- guidesMI = new javax.swing.JMenuItem();
- AboutMI = new javax.swing.JMenuItem();
- updateMI = new javax.swing.JMenuItem();
-+ otherstreams = new javax.swing.JMenuItem();
-
- consolePM.setLabel("popupMenu1");
-
-@@ -560,6 +562,24 @@
-
- jMenuBar1.add(jMenu3);
-
-+ jMenu4.setMnemonic(KeyEvent.VK_H);
-+ jMenu4.setText("Other Streams");
-+
-+ otherstreams.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, java.awt.event.InputEvent.CTRL_MASK));
-+ otherstreams.setText("Open MLB Network");
-+ otherstreams.addActionListener(new java.awt.event.ActionListener() {
-+ public void actionPerformed(java.awt.event.ActionEvent evt) {
-+ Process m;
-+ try {
-+ m = new ProcessBuilder("/bin/bash", "-c", "mpv http://mlblive-akc.mlb.com/ls01/mlbam/mlb_network/NETWORK_LINEAR_1/master_wired.m3u8").start();
-+ } catch (IOException ex) {
-+ ex.printStackTrace();
-+ }
-+ }
-+ });
-+ jMenu4.add(otherstreams);
-+ jMenuBar1.add(jMenu4);
-+
- setJMenuBar(jMenuBar1);
-
- pack();
-@@ -856,6 +876,7 @@
- private javax.swing.JMenu jMenu1;
- private javax.swing.JMenu jMenu2;
- private javax.swing.JMenu jMenu3;
-+ private javax.swing.JMenu jMenu4;
- private javax.swing.JMenuBar jMenuBar1;
- private javax.swing.JTabbedPane leaguesTabbedPane;
- private javax.swing.JPanel mainPanel;
-@@ -877,6 +898,7 @@
- private javax.swing.JCheckBox restartCB;
- private javax.swing.JCheckBox saveStreamCB;
- private javax.swing.JMenuItem updateMI;
-+ private javax.swing.JMenuItem otherstreams;
- // End of variables declaration//GEN-END:variables
-
- class newDay extends Thread {
diff --git a/config.properties b/config.properties
index 59cd24b5dd67..bbb22fa9fd11 100644
--- a/config.properties
+++ b/config.properties
@@ -4,6 +4,6 @@ NHLTeam=None
Bitrate=best
StreamlinkArgs=
MLBTeam=None
-RefreshRate=0
+RefreshRate=60
SaveStreamLoc=/usr/share/java/lazyman
French=0
diff --git a/remove_privileged_actions.patch b/remove_privileged_actions.patch
deleted file mode 100644
index fd532756d537..000000000000
--- a/remove_privileged_actions.patch
+++ /dev/null
@@ -1,179 +0,0 @@
-diff -Naur src/lazyman/MainGUI.java src.b/lazyman/MainGUI.java
---- src/lazyman/MainGUI.java 2018-03-27 14:56:29.846459000 -0400
-+++ src.b/lazyman/MainGUI.java 2018-03-27 14:59:20.640513714 -0400
-@@ -66,9 +66,6 @@
- leagues[i].getDateTF().setDate(Time.getPSTDate1("MMM dd, yyyy"));
- leagues[i].setFavoriteTeam(Props.getFavTeam(leagues[i].getName()));
- }
-- if (System.getProperty("os.name").toLowerCase().contains("win")) {
-- changePasswordMI.setVisible(false);
-- }
- /*else if (System.getProperty("os.name").toLowerCase().contains("mac")) {
- com.apple.eawt.Application application = com.apple.eawt.Application.getApplication();
- application.addPreferencesMenuItem();
-@@ -155,12 +152,9 @@
- maximizeConsoleButton = new javax.swing.JButton();
- jMenuBar1 = new javax.swing.JMenuBar();
- jMenu1 = new javax.swing.JMenu();
-- changePasswordMI = new javax.swing.JMenuItem();
- exitMI = new javax.swing.JMenuItem();
- jMenu2 = new javax.swing.JMenu();
- preferencesMI = new javax.swing.JMenuItem();
-- jMenuItem1 = new javax.swing.JMenuItem();
-- jMenuItem2 = new javax.swing.JMenuItem();
- jMenu3 = new javax.swing.JMenu();
- guidesMI = new javax.swing.JMenuItem();
- AboutMI = new javax.swing.JMenuItem();
-@@ -509,15 +503,6 @@
- jMenu1.setMnemonic(KeyEvent.VK_F);
- jMenu1.setText("File");
-
-- changePasswordMI.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
-- changePasswordMI.setText("Change Password");
-- changePasswordMI.addActionListener(new java.awt.event.ActionListener() {
-- public void actionPerformed(java.awt.event.ActionEvent evt) {
-- changePasswordMIActionPerformed(evt);
-- }
-- });
-- jMenu1.add(changePasswordMI);
--
- exitMI.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F4, java.awt.event.InputEvent.ALT_MASK));
- exitMI.setText("Exit");
- exitMI.addActionListener(new java.awt.event.ActionListener() {
-@@ -541,23 +526,6 @@
- });
- jMenu2.add(preferencesMI);
-
-- jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, java.awt.event.InputEvent.CTRL_MASK));
-- jMenuItem1.setText("Change IP");
-- jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
-- public void actionPerformed(java.awt.event.ActionEvent evt) {
-- jMenuItem1ActionPerformed(evt);
-- }
-- });
-- jMenu2.add(jMenuItem1);
--
-- jMenuItem2.setText("Clear Hosts File");
-- jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
-- public void actionPerformed(java.awt.event.ActionEvent evt) {
-- jMenuItem2ActionPerformed(evt);
-- }
-- });
-- jMenu2.add(jMenuItem2);
--
- jMenuBar1.add(jMenu2);
-
- jMenu3.setMnemonic(KeyEvent.VK_H);
-@@ -703,12 +671,6 @@
- }
- }//GEN-LAST:event_preferencesMIActionPerformed
-
-- private void changePasswordMIActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_changePasswordMIActionPerformed
-- GetPasswordGUI gp = new GetPasswordGUI(this, true);
-- gp.setLocationRelativeTo(this);
-- gp.setVisible(true);
-- }//GEN-LAST:event_changePasswordMIActionPerformed
--
- private void AboutMIActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AboutMIActionPerformed
- AboutGUI a = new AboutGUI(this, true);
- a.setLocationRelativeTo(this);
-@@ -754,22 +716,6 @@
- leagues[leaguesTabbedPane.getSelectedIndex()].setSelectedGame(0);
- }//GEN-LAST:event_NHLNextDayBtnActionPerformed
-
-- private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
-- CustomIP c = new CustomIP(this, true);
-- c.setLocationRelativeTo(this);
-- c.setVisible(true);
-- }//GEN-LAST:event_jMenuItem1ActionPerformed
--
-- private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
-- EditHosts eh = new EditHosts();
--
-- if (eh.clearHosts(leagues)) {
-- MessageBox.show("Hosts file cleared from LazyMan edits.", "Hosts File Cleared", 0);
-- } else {
-- MessageBox.show("Hosts file not cleared from LazyMan edits. Please check the console area.", "Hosts Not File Cleared", 2);
-- }
-- }//GEN-LAST:event_jMenuItem2ActionPerformed
--
- private void MLBPrevDayBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MLBPrevDayBtnActionPerformed
- leagues[leaguesTabbedPane.getSelectedIndex()].setFavGameSelected(false);
- leagues[leaguesTabbedPane.getSelectedIndex()].setDate(Time.getPrevDay(leagues[leaguesTabbedPane.getSelectedIndex()].getDate()));
-@@ -897,7 +843,6 @@
- private javax.swing.JTable NHLGameTable;
- private javax.swing.JButton NHLNextDayBtn;
- private javax.swing.JButton NHLPrevDayBtn;
-- private javax.swing.JMenuItem changePasswordMI;
- private javax.swing.JPopupMenu consolePM;
- private javax.swing.JPanel consolePanel;
- private javax.swing.JScrollPane consoleScrollPane;
-@@ -912,8 +857,6 @@
- private javax.swing.JMenu jMenu2;
- private javax.swing.JMenu jMenu3;
- private javax.swing.JMenuBar jMenuBar1;
-- private javax.swing.JMenuItem jMenuItem1;
-- private javax.swing.JMenuItem jMenuItem2;
- private javax.swing.JTabbedPane leaguesTabbedPane;
- private javax.swing.JPanel mainPanel;
- private javax.swing.JButton maximizeConsoleButton;
-@@ -1456,57 +1399,13 @@
- }
- } else {
- if (curMajor > major || (curMajor == major && curMinor > minor) || (curMajor == major && curMinor >= minor && curPatch > patch) || (curMajor == major && curMinor >= minor && curPatch >= patch && curBuild > build)) {
-- if (MessageBox.ask("New stable update available!\nWould you like to update", "New Update!") == MessageBox.yesOption()) {
-- SwingWorker<Void, Void> u = updating();
-- u.execute();
-- if (AutoUpdate.download(version)) {
-- if (AutoUpdate.unZipIt()) {
-- String loc;
--
-- if (!System.getProperty("os.name").toLowerCase().contains("linux")) {
-- loc = Paths.get(".").toAbsolutePath().normalize().toString() + System.getProperty("file.separator");
-- if (System.getProperty("os.name").toLowerCase().contains("win")) {
-- loc += "LazyMan.exe";
-- } else {
-- loc += "LazyMan.jar";
-- }
-- } else {
-- loc = new java.io.File(Props.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParent() + System.getProperty("file.separator") + "LazyMan.jar";
-- }
-- Runtime.getRuntime().exec("java -jar " + loc);
-- System.exit(0);
-- }
-- }
-- MessageBox.show("Could not automatically update. Please manually update.", "Could not automatically update", 2);
-- }
-+ MessageBox.show("New update available. Please manually update", version, build);
- } else {
- version = Web.getContent("https://raw.githubusercontent.com/StevensNJD4/LazyMan/master/VERSIONBETA").replace(" BETA", "").trim();
- String[] curVerB = version.split("\\.");
- int curMajorB = Integer.parseInt(curVerB[0]), curMinorB = Integer.parseInt(curVerB[1]), curPatchB = Integer.parseInt(curVerB[2]), curBuildB = Integer.parseInt(curVerB[3]);
- if (curMajorB > major || (curMajorB == major && curMinorB > minor) || (curMajorB == major && curMinorB >= minor && curPatchB > patch) || (curMajorB == major && curMinorB >= minor && curPatchB >= patch && curBuildB > build)) {
-- if (MessageBox.ask("New beta update available!\nWould you like to update?", "New Update!") == MessageBox.yesOption()) {
-- SwingWorker<Void, Void> u = updating();
-- u.execute();
-- if (AutoUpdate.download(version)) {
-- if (AutoUpdate.unZipIt()) {
-- String loc;
--
-- if (!System.getProperty("os.name").toLowerCase().contains("linux")) {
-- loc = Paths.get(".").toAbsolutePath().normalize().toString() + System.getProperty("file.separator");
-- if (System.getProperty("os.name").toLowerCase().contains("win")) {
-- loc += "LazyMan.exe";
-- } else {
-- loc += "LazyMan.jar";
-- }
-- } else {
-- loc = new java.io.File(Props.class.getProtectionDomain().getCodeSource().getLocation().getPath()).getParent() + System.getProperty("file.separator") + "LazyMan.jar";
-- }
-- Runtime.getRuntime().exec("java -jar " + loc);
-- System.exit(0);
-- }
-- }
-- MessageBox.show("Could not automatically update. Please manually update.", "Could not automatically update", 2);
-- }
-+ MessageBox.show("New beta update available", version, build);
- } else {
- updateMI.setVisible(false);
- }
diff --git a/update-to-java-13.patch b/update-to-java-13.patch
new file mode 100644
index 000000000000..203682d3d03a
--- /dev/null
+++ b/update-to-java-13.patch
@@ -0,0 +1,1707 @@
+From 138a8a083e80b3432312df7cf6e1a499e782810c Mon Sep 17 00:00:00 2001
+From: StevensNJD4 <ntyler1092@gmail.com>
+Date: Mon, 28 Oct 2019 13:59:22 -0400
+Subject: [PATCH 1/3] Update to Java 13
+
+---
+ nbproject/build-impl.xml | 767 +++++++++++++++++++--------
+ nbproject/genfiles.properties | 6 +-
+ nbproject/private/private.properties | 4 +-
+ nbproject/private/private.xml | 13 +-
+ nbproject/project.properties | 36 +-
+ nbproject/project.xml | 1 -
+ 7 files changed, 591 insertions(+), 238 deletions(-)
+
+diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml
+index b493ca0..4eec7d6 100644
+--- a/nbproject/build-impl.xml
++++ b/nbproject/build-impl.xml
+@@ -19,7 +19,7 @@ is divided into following sections:
+ - cleanup
+
+ -->
+-<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="LazyMan-impl">
++<project xmlns:if="ant:if" xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" xmlns:unless="ant:unless" basedir=".." default="default" name="LazyMan-impl">
+ <fail message="Please build using Ant 1.8.0 or higher.">
+ <condition>
+ <not>
+@@ -46,51 +46,80 @@ is divided into following sections:
+ <property file="${user.properties.file}"/>
+ <!-- The two properties below are usually overridden -->
+ <!-- by the active platform. Just a fallback. -->
+- <property name="default.javac.source" value="1.4"/>
+- <property name="default.javac.target" value="1.4"/>
++ <property name="default.javac.source" value="1.8"/>
++ <property name="default.javac.target" value="1.8"/>
+ </target>
+ <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+ <property file="nbproject/configs/${config}.properties"/>
+ <property file="nbproject/project.properties"/>
+ </target>
+- <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+- <j2seproject1:property name="platform.home" value="platforms.${platform.active}.home"/>
+- <j2seproject1:property name="platform.bootcp" value="platforms.${platform.active}.bootclasspath"/>
+- <j2seproject1:property name="platform.compiler" value="platforms.${platform.active}.compile"/>
+- <j2seproject1:property name="platform.javac.tmp" value="platforms.${platform.active}.javac"/>
+- <condition property="platform.javac" value="${platform.home}/bin/javac">
+- <equals arg1="${platform.javac.tmp}" arg2="$${platforms.${platform.active}.javac}"/>
++ <target name="-init-modules-supported">
++ <condition property="modules.supported.internal" value="true">
++ <not>
++ <matches pattern="1\.[0-8](\..*)?" string="${javac.source}"/>
++ </not>
+ </condition>
+- <property name="platform.javac" value="${platform.javac.tmp}"/>
+- <j2seproject1:property name="platform.java.tmp" value="platforms.${platform.active}.java"/>
+- <condition property="platform.java" value="${platform.home}/bin/java">
+- <equals arg1="${platform.java.tmp}" arg2="$${platforms.${platform.active}.java}"/>
++ </target>
++ <target depends="-init-modules-supported" if="modules.supported.internal" name="-init-macrodef-modulename">
++ <macrodef name="modulename" uri="http://www.netbeans.org/ns/j2se-project/3">
++ <attribute name="property"/>
++ <attribute name="sourcepath"/>
++ <sequential>
++ <loadresource property="@{property}" quiet="true">
++ <javaresource classpath="@{sourcepath}" name="module-info.java" parentFirst="false"/>
++ <filterchain>
++ <stripjavacomments/>
++ <linecontainsregexp>
++ <regexp pattern="module .* \{"/>
++ </linecontainsregexp>
++ <tokenfilter>
++ <linetokenizer/>
++ <replaceregex flags="s" pattern="(\s*module\s+)(\S*)(\s*\{.*)" replace="\2"/>
++ </tokenfilter>
++ <striplinebreaks/>
++ </filterchain>
++ </loadresource>
++ </sequential>
++ </macrodef>
++ </target>
++ <target depends="-init-modules-supported,-init-macrodef-modulename" if="modules.supported.internal" name="-init-source-module-properties">
++ <fail message="Java 9 support requires Ant 1.10.0 or higher.">
++ <condition>
++ <not>
++ <antversion atleast="1.10.0"/>
++ </not>
++ </condition>
++ </fail>
++ <j2seproject3:modulename property="module.name" sourcepath="${src.dir}:${src.resources.dir}"/>
++ <condition property="named.module.internal">
++ <and>
++ <isset property="module.name"/>
++ <length length="0" string="${module.name}" when="greater"/>
++ </and>
+ </condition>
+- <property name="platform.java" value="${platform.java.tmp}"/>
+- <j2seproject1:property name="platform.javadoc.tmp" value="platforms.${platform.active}.javadoc"/>
+- <condition property="platform.javadoc" value="${platform.home}/bin/javadoc">
+- <equals arg1="${platform.javadoc.tmp}" arg2="$${platforms.${platform.active}.javadoc}"/>
++ <condition property="unnamed.module.internal">
++ <not>
++ <isset property="named.module.internal"/>
++ </not>
+ </condition>
+- <property name="platform.javadoc" value="${platform.javadoc.tmp}"/>
+- <condition property="platform.invalid" value="true">
+- <or>
+- <contains string="${platform.javac}" substring="$${platforms."/>
+- <contains string="${platform.java}" substring="$${platforms."/>
+- <contains string="${platform.javadoc}" substring="$${platforms."/>
+- </or>
++ <property name="javac.modulepath" value=""/>
++ <property name="run.modulepath" value="${javac.modulepath}"/>
++ <property name="module.build.classes.dir" value="${build.classes.dir}"/>
++ <property name="debug.modulepath" value="${run.modulepath}"/>
++ <property name="javac.upgrademodulepath" value=""/>
++ <property name="run.upgrademodulepath" value="${javac.upgrademodulepath}"/>
++ <condition else="" property="javac.systemmodulepath.cmd.line.arg" value="--system '${javac.systemmodulepath}'">
++ <and>
++ <isset property="javac.systemmodulepath"/>
++ <length length="0" string="${javac.systemmodulepath}" when="greater"/>
++ </and>
+ </condition>
+- <fail unless="platform.home">Must set platform.home</fail>
+- <fail unless="platform.bootcp">Must set platform.bootcp</fail>
+- <fail unless="platform.java">Must set platform.java</fail>
+- <fail unless="platform.javac">Must set platform.javac</fail>
+- <fail if="platform.invalid">
+- The J2SE Platform is not correctly set up.
+- Your active platform is: ${platform.active}, but the corresponding property "platforms.${platform.active}.home" is not found in the project's properties files.
+- Either open the project in the IDE and setup the Platform with the same name or add it manually.
+- For example like this:
+- ant -Duser.properties.file=&lt;path_to_property_file&gt; jar (where you put the property "platforms.${platform.active}.home" in a .properties file)
+- or ant -Dplatforms.${platform.active}.home=&lt;path_to_JDK_home&gt; jar (where no properties file is used)
+- </fail>
++ <property name="dist.jlink.dir" value="${dist.dir}/jlink"/>
++ <property name="dist.jlink.output" value="${dist.jlink.dir}/${application.title}"/>
++ <property name="module.name" value=""/>
++ </target>
++ <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property,-init-modules-supported" name="-do-init">
++ <property name="platform.java" value="${java.home}/bin/java"/>
+ <available file="${manifest.file}" property="manifest.available"/>
+ <condition property="splashscreen.available">
+ <and>
+@@ -112,7 +141,9 @@ is divided into following sections:
+ <and>
+ <isset property="javac.profile"/>
+ <length length="0" string="${javac.profile}" when="greater"/>
+- <matches pattern="1\.[89](\..*)?" string="${javac.source}"/>
++ <not>
++ <matches pattern="1\.[0-7](\..*)?" string="${javac.source}"/>
++ </not>
+ </and>
+ </condition>
+ <condition property="do.archive">
+@@ -123,15 +154,6 @@ is divided into following sections:
+ <istrue value="${not.archive.disabled}"/>
+ </or>
+ </condition>
+- <condition property="do.mkdist">
+- <and>
+- <isset property="do.archive"/>
+- <isset property="libs.CopyLibs.classpath"/>
+- <not>
+- <istrue value="${mkdist.disabled}"/>
+- </not>
+- </and>
+- </condition>
+ <condition property="do.archive+manifest.available">
+ <and>
+ <isset property="manifest.available"/>
+@@ -193,6 +215,7 @@ is divided into following sections:
+ <property name="application.args" value=""/>
+ <property name="source.encoding" value="${file.encoding}"/>
+ <property name="runtime.encoding" value="${source.encoding}"/>
++ <property name="manifest.encoding" value="${source.encoding}"/>
+ <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+ <and>
+ <isset property="javadoc.encoding"/>
+@@ -220,6 +243,20 @@ is divided into following sections:
+ <condition else="" property="javac.profile.cmd.line.arg" value="-profile ${javac.profile}">
+ <isset property="profile.available"/>
+ </condition>
++ <condition else="false" property="jdkBug6558476">
++ <and>
++ <matches pattern="1\.[56]" string="${java.specification.version}"/>
++ <not>
++ <os family="unix"/>
++ </not>
++ </and>
++ </condition>
++ <condition else="false" property="javac.fork">
++ <or>
++ <istrue value="${jdkBug6558476}"/>
++ <istrue value="${javac.external.vm}"/>
++ </or>
++ </condition>
+ <property name="jar.index" value="false"/>
+ <property name="jar.index.metainf" value="${jar.index}"/>
+ <property name="copylibs.rebase" value="true"/>
+@@ -273,11 +310,80 @@ is divided into following sections:
+ </sequential>
+ </macrodef>
+ </target>
+- <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
++ <target depends="-init-ap-cmdline-properties,-init-source-module-properties" if="modules.supported.internal" name="-init-macrodef-javac-with-module">
++ <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
++ <attribute default="${src.dir}:${src.resources.dir}" name="srcdir"/>
++ <attribute default="${build.classes.dir}" name="destdir"/>
++ <attribute default="${javac.classpath}" name="classpath"/>
++ <attribute default="${javac.modulepath}" name="modulepath"/>
++ <attribute default="${javac.upgrademodulepath}" name="upgrademodulepath"/>
++ <attribute default="${javac.processorpath}" name="processorpath"/>
++ <attribute default="${javac.processormodulepath}" name="processormodulepath"/>
++ <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
++ <attribute default="${includes}" name="includes"/>
++ <attribute default="${excludes}" name="excludes"/>
++ <attribute default="${javac.debug}" name="debug"/>
++ <attribute default="${empty.dir}" name="sourcepath" unless:set="named.module.internal"/>
++ <attribute default="${src.dir}:${src.resources.dir}" if:set="named.module.internal" name="sourcepath"/>
++ <attribute default="${empty.dir}" name="gensrcdir"/>
++ <element name="customize" optional="true"/>
++ <sequential>
++ <condition property="warn.excludes.internal">
++ <and>
++ <isset property="named.module.internal"/>
++ <length length="0" string="@{excludes}" trim="true" when="greater"/>
++ </and>
++ </condition>
++ <echo if:set="warn.excludes.internal" level="warning" message="The javac excludes are not supported in the JDK 9 Named Module."/>
++ <property location="${build.dir}/empty" name="empty.dir"/>
++ <mkdir dir="${empty.dir}"/>
++ <mkdir dir="@{apgeneratedsrcdir}"/>
++ <condition property="processormodulepath.set">
++ <resourcecount count="0" when="greater">
++ <path>
++ <pathelement path="@{processormodulepath}"/>
++ </path>
++ </resourcecount>
++ </condition>
++ <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
++ <src>
++ <dirset dir="@{gensrcdir}" erroronmissingdir="false">
++ <include name="*"/>
++ </dirset>
++ </src>
++ <classpath>
++ <path path="@{classpath}"/>
++ </classpath>
++ <modulepath>
++ <path path="@{modulepath}"/>
++ </modulepath>
++ <upgrademodulepath>
++ <path path="@{upgrademodulepath}"/>
++ </upgrademodulepath>
++ <compilerarg line="${javac.systemmodulepath.cmd.line.arg}"/>
++ <compilerarg line="${javac.profile.cmd.line.arg}"/>
++ <compilerarg line="${javac.compilerargs}"/>
++ <compilerarg if:set="processormodulepath.set" value="--processor-module-path"/>
++ <compilerarg if:set="processormodulepath.set" path="@{processormodulepath}"/>
++ <compilerarg unless:set="processormodulepath.set" value="-processorpath"/>
++ <compilerarg path="@{processorpath}:${empty.dir}" unless:set="processormodulepath.set"/>
++ <compilerarg line="${ap.processors.internal}"/>
++ <compilerarg line="${annotation.processing.processor.options}"/>
++ <compilerarg value="-s"/>
++ <compilerarg path="@{apgeneratedsrcdir}"/>
++ <compilerarg line="${ap.proc.none.internal}"/>
++ <customize/>
++ </javac>
++ </sequential>
++ </macrodef>
++ </target>
++ <target depends="-init-ap-cmdline-properties,-init-source-module-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors" unless="modules.supported.internal">
+ <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${src.dir}:${src.resources.dir}" name="srcdir"/>
+ <attribute default="${build.classes.dir}" name="destdir"/>
+ <attribute default="${javac.classpath}" name="classpath"/>
++ <attribute default="${javac.modulepath}" name="modulepath"/>
++ <attribute default="${javac.upgrademodulepath}" name="upgrademodulepath"/>
+ <attribute default="${javac.processorpath}" name="processorpath"/>
+ <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+ <attribute default="${includes}" name="includes"/>
+@@ -290,7 +396,7 @@ is divided into following sections:
+ <property location="${build.dir}/empty" name="empty.dir"/>
+ <mkdir dir="${empty.dir}"/>
+ <mkdir dir="@{apgeneratedsrcdir}"/>
+- <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
++ <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+ <src>
+ <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+ <include name="*"/>
+@@ -314,11 +420,13 @@ is divided into following sections:
+ </sequential>
+ </macrodef>
+ </target>
+- <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
++ <target depends="-init-ap-cmdline-properties,-init-source-module-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
+ <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${src.dir}:${src.resources.dir}" name="srcdir"/>
+ <attribute default="${build.classes.dir}" name="destdir"/>
+ <attribute default="${javac.classpath}" name="classpath"/>
++ <attribute default="${javac.modulepath}" name="modulepath"/>
++ <attribute default="${javac.upgrademodulepath}" name="upgrademodulepath"/>
+ <attribute default="${javac.processorpath}" name="processorpath"/>
+ <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+ <attribute default="${includes}" name="includes"/>
+@@ -330,7 +438,7 @@ is divided into following sections:
+ <sequential>
+ <property location="${build.dir}/empty" name="empty.dir"/>
+ <mkdir dir="${empty.dir}"/>
+- <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" executable="${platform.javac}" fork="yes" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
++ <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+ <src>
+ <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+ <include name="*"/>
+@@ -347,7 +455,7 @@ is divided into following sections:
+ </sequential>
+ </macrodef>
+ </target>
+- <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
++ <target depends="-init-macrodef-javac-with-module,-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
+ <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${src.dir}:${src.resources.dir}" name="srcdir"/>
+ <attribute default="${build.classes.dir}" name="destdir"/>
+@@ -402,59 +510,99 @@ is divided into following sections:
+ <property name="test.binarytestincludes" value=""/>
+ <property name="test.binaryexcludes" value=""/>
+ </target>
+- <target if="${nb.junit.single}" name="-init-macrodef-junit-single" unless="${nb.junit.batch}">
+- <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
++ <target depends="-init-modules-supported" if="modules.supported.internal" name="-init-macrodef-junit-prototype-with-module">
++ <macrodef name="junit-prototype" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${includes}" name="includes"/>
+ <attribute default="${excludes}" name="excludes"/>
+- <attribute default="**" name="testincludes"/>
+- <attribute default="" name="testmethods"/>
+- <element name="customize" optional="true"/>
++ <element name="customizePrototype" optional="true"/>
+ <sequential>
+ <property name="junit.forkmode" value="perTest"/>
+- <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
+- <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
++ <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+ <syspropertyset>
+ <propertyref prefix="test-sys-prop."/>
+ <mapper from="test-sys-prop.*" to="*" type="glob"/>
+ </syspropertyset>
++ <classpath>
++ <path path="${run.test.classpath}"/>
++ </classpath>
++ <modulepath>
++ <path path="${run.test.modulepath}"/>
++ </modulepath>
+ <formatter type="brief" usefile="false"/>
+ <formatter type="xml"/>
++ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <jvmarg value="-ea"/>
+- <customize/>
++ <jvmarg line="${run.test.jvmargs}"/>
++ <customizePrototype/>
+ </junit>
+ </sequential>
+ </macrodef>
+ </target>
+- <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-batch" unless="${nb.junit.single}">
+- <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
++ <target depends="-init-modules-supported" name="-init-macrodef-junit-prototype-without-module" unless="modules.supported.internal">
++ <macrodef name="junit-prototype" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${includes}" name="includes"/>
+ <attribute default="${excludes}" name="excludes"/>
+- <attribute default="**" name="testincludes"/>
+- <attribute default="" name="testmethods"/>
+- <element name="customize" optional="true"/>
++ <element name="customizePrototype" optional="true"/>
+ <sequential>
+ <property name="junit.forkmode" value="perTest"/>
+- <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
+- <batchtest todir="${build.test.results.dir}">
+- <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+- <filename name="@{testincludes}"/>
+- </fileset>
+- <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+- <filename name="${test.binarytestincludes}"/>
+- </fileset>
+- </batchtest>
++ <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" showoutput="true" tempdir="${build.dir}">
+ <syspropertyset>
+ <propertyref prefix="test-sys-prop."/>
+ <mapper from="test-sys-prop.*" to="*" type="glob"/>
+ </syspropertyset>
++ <classpath>
++ <path path="${run.test.classpath}"/>
++ </classpath>
+ <formatter type="brief" usefile="false"/>
+ <formatter type="xml"/>
++ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <jvmarg value="-ea"/>
+- <customize/>
++ <customizePrototype/>
+ </junit>
+ </sequential>
+ </macrodef>
+ </target>
++ <target depends="-init-test-properties,-init-macrodef-junit-prototype-with-module,-init-macrodef-junit-prototype-without-module" if="${nb.junit.single}" name="-init-macrodef-junit-single" unless="${nb.junit.batch}">
++ <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
++ <attribute default="${includes}" name="includes"/>
++ <attribute default="${excludes}" name="excludes"/>
++ <attribute default="**" name="testincludes"/>
++ <attribute default="" name="testmethods"/>
++ <element name="customize" optional="true"/>
++ <sequential>
++ <j2seproject3:junit-prototype>
++ <customizePrototype>
++ <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
++ <customize/>
++ </customizePrototype>
++ </j2seproject3:junit-prototype>
++ </sequential>
++ </macrodef>
++ </target>
++ <target depends="-init-test-properties,-init-macrodef-junit-prototype-with-module,-init-macrodef-junit-prototype-without-module" if="${nb.junit.batch}" name="-init-macrodef-junit-batch" unless="${nb.junit.single}">
++ <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
++ <attribute default="${includes}" name="includes"/>
++ <attribute default="${excludes}" name="excludes"/>
++ <attribute default="**" name="testincludes"/>
++ <attribute default="" name="testmethods"/>
++ <element name="customize" optional="true"/>
++ <sequential>
++ <j2seproject3:junit-prototype>
++ <customizePrototype>
++ <batchtest todir="${build.test.results.dir}">
++ <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
++ <filename name="@{testincludes}"/>
++ </fileset>
++ <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
++ <filename name="${test.binarytestincludes}"/>
++ </fileset>
++ </batchtest>
++ <customize/>
++ </customizePrototype>
++ </j2seproject3:junit-prototype>
++ </sequential>
++ </macrodef>
++ </target>
+ <target depends="-init-macrodef-junit-init,-init-macrodef-junit-single, -init-macrodef-junit-batch" if="${junit.available}" name="-init-macrodef-junit"/>
+ <target if="${testng.available}" name="-init-macrodef-testng">
+ <macrodef name="testng" uri="http://www.netbeans.org/ns/j2se-project/3">
+@@ -473,12 +621,16 @@ is divided into following sections:
+ </fileset>
+ </union>
+ <taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
+- <testng classfilesetref="test.set" failureProperty="tests.failed" jvm="${platform.java}" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="LazyMan" testname="TestNG tests" workingDir="${work.dir}">
++ <testng classfilesetref="test.set" failureProperty="tests.failed" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="LazyMan" testname="TestNG tests" workingDir="${work.dir}">
+ <xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
+ <propertyset>
+ <propertyref prefix="test-sys-prop."/>
+ <mapper from="test-sys-prop.*" to="*" type="glob"/>
+ </propertyset>
++ <classpath>
++ <path path="${run.test.classpath}"/>
++ </classpath>
++ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <customize/>
+ </testng>
+ </sequential>
+@@ -533,10 +685,6 @@ is divided into following sections:
+ <sequential>
+ <j2seproject3:test-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+ <customize>
+- <classpath>
+- <path path="${run.test.classpath}"/>
+- </classpath>
+- <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <jvmarg line="${run.jvmargs}"/>
+ <jvmarg line="${run.jvmargs.ide}"/>
+ </customize>
+@@ -544,74 +692,20 @@ is divided into following sections:
+ </sequential>
+ </macrodef>
+ </target>
+- <target if="${junit.available}" name="-init-macrodef-junit-debug" unless="${nb.junit.batch}">
+- <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+- <attribute default="${includes}" name="includes"/>
+- <attribute default="${excludes}" name="excludes"/>
+- <attribute default="**" name="testincludes"/>
+- <attribute default="" name="testmethods"/>
+- <element name="customize" optional="true"/>
+- <sequential>
+- <property name="junit.forkmode" value="perTest"/>
+- <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
+- <test methods="@{testmethods}" name="@{testincludes}" todir="${build.test.results.dir}"/>
+- <syspropertyset>
+- <propertyref prefix="test-sys-prop."/>
+- <mapper from="test-sys-prop.*" to="*" type="glob"/>
+- </syspropertyset>
+- <formatter type="brief" usefile="false"/>
+- <formatter type="xml"/>
+- <jvmarg value="-ea"/>
+- <jvmarg line="${debug-args-line}"/>
+- <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+- <customize/>
+- </junit>
+- </sequential>
+- </macrodef>
+- </target>
+- <target depends="-init-test-properties" if="${nb.junit.batch}" name="-init-macrodef-junit-debug-batch">
+- <macrodef name="junit-debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+- <attribute default="${includes}" name="includes"/>
+- <attribute default="${excludes}" name="excludes"/>
+- <attribute default="**" name="testincludes"/>
+- <attribute default="" name="testmethods"/>
+- <element name="customize" optional="true"/>
+- <sequential>
+- <property name="junit.forkmode" value="perTest"/>
+- <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" forkmode="${junit.forkmode}" jvm="${platform.java}" showoutput="true" tempdir="${build.dir}">
+- <batchtest todir="${build.test.results.dir}">
+- <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+- <filename name="@{testincludes}"/>
+- </fileset>
+- <fileset dir="${build.test.classes.dir}" excludes="@{excludes},${excludes},${test.binaryexcludes}" includes="${test.binaryincludes}">
+- <filename name="${test.binarytestincludes}"/>
+- </fileset>
+- </batchtest>
+- <syspropertyset>
+- <propertyref prefix="test-sys-prop."/>
+- <mapper from="test-sys-prop.*" to="*" type="glob"/>
+- </syspropertyset>
+- <formatter type="brief" usefile="false"/>
+- <formatter type="xml"/>
+- <jvmarg value="-ea"/>
+- <jvmarg line="${debug-args-line}"/>
+- <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+- <customize/>
+- </junit>
+- </sequential>
+- </macrodef>
+- </target>
+- <target depends="-init-macrodef-junit-debug,-init-macrodef-junit-debug-batch" if="${junit.available}" name="-init-macrodef-junit-debug-impl">
++ <target depends="-init-macrodef-junit" if="${junit.available}" name="-init-macrodef-junit-debug-impl">
+ <macrodef name="test-debug-impl" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${includes}" name="includes"/>
+ <attribute default="${excludes}" name="excludes"/>
+ <attribute default="**" name="testincludes"/>
+ <attribute default="" name="testmethods"/>
+- <element implicit="true" name="customize" optional="true"/>
++ <element name="customizeDebuggee" optional="true"/>
+ <sequential>
+- <j2seproject3:junit-debug excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+- <customize/>
+- </j2seproject3:junit-debug>
++ <j2seproject3:junit excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
++ <customize>
++ <jvmarg value="-agentlib:jdwp=transport=${debug-transport},address=${jpda.address}"/>
++ <customizeDebuggee/>
++ </customize>
++ </j2seproject3:junit>
+ </sequential>
+ </macrodef>
+ </target>
+@@ -630,14 +724,14 @@ is divided into following sections:
+ <delete dir="${build.test.results.dir}" quiet="true"/>
+ <mkdir dir="${build.test.results.dir}"/>
+ <j2seproject3:debug classname="org.testng.TestNG" classpath="${debug.test.classpath}">
+- <customize>
++ <customizeDebuggee>
+ <customize2/>
+ <jvmarg value="-ea"/>
+ <arg line="${testng.debug.mode}"/>
+ <arg line="-d ${build.test.results.dir}"/>
+ <arg line="-listener org.testng.reporters.VerboseReporter"/>
+ <arg line="${testng.cmd.args}"/>
+- </customize>
++ </customizeDebuggee>
+ </j2seproject3:debug>
+ </sequential>
+ </macrodef>
+@@ -664,14 +758,10 @@ is divided into following sections:
+ <attribute default="" name="testMethod"/>
+ <sequential>
+ <j2seproject3:test-debug-impl excludes="@{excludes}" includes="@{includes}" testincludes="@{testincludes}" testmethods="@{testmethods}">
+- <customize>
+- <classpath>
+- <path path="${run.test.classpath}"/>
+- </classpath>
+- <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
++ <customizeDebuggee>
+ <jvmarg line="${run.jvmargs}"/>
+ <jvmarg line="${run.jvmargs.ide}"/>
+- </customize>
++ </customizeDebuggee>
+ </j2seproject3:test-debug-impl>
+ </sequential>
+ </macrodef>
+@@ -751,16 +841,17 @@ is divided into following sections:
+ <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+ <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+ <attribute default="${main.class}" name="name"/>
++ <attribute default="${debug.modulepath}" name="modulepath"/>
+ <attribute default="${debug.classpath}" name="classpath"/>
+ <attribute default="" name="stopclassname"/>
+ <sequential>
+ <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
++ <modulepath>
++ <path path="@{modulepath}"/>
++ </modulepath>
+ <classpath>
+ <path path="@{classpath}"/>
+ </classpath>
+- <bootclasspath>
+- <path path="${platform.bootcp}"/>
+- </bootclasspath>
+ </nbjpdastart>
+ </sequential>
+ </macrodef>
+@@ -776,20 +867,6 @@ is divided into following sections:
+ </macrodef>
+ </target>
+ <target name="-init-debug-args">
+- <exec executable="${platform.java}" outputproperty="version-output">
+- <arg value="-version"/>
+- </exec>
+- <condition property="have-jdk-older-than-1.4">
+- <or>
+- <contains string="${version-output}" substring="java version &quot;1.0"/>
+- <contains string="${version-output}" substring="java version &quot;1.1"/>
+- <contains string="${version-output}" substring="java version &quot;1.2"/>
+- <contains string="${version-output}" substring="java version &quot;1.3"/>
+- </or>
+- </condition>
+- <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+- <istrue value="${have-jdk-older-than-1.4}"/>
+- </condition>
+ <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
+ <os family="windows"/>
+ </condition>
+@@ -799,21 +876,79 @@ is divided into following sections:
+ </target>
+ <target depends="-init-debug-args" name="-init-macrodef-debug">
+ <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
++ <attribute default="${module.name}" name="modulename"/>
+ <attribute default="${main.class}" name="classname"/>
++ <attribute default="${debug.modulepath}" name="modulepath"/>
+ <attribute default="${debug.classpath}" name="classpath"/>
++ <element name="customizeDebuggee" optional="true"/>
++ <sequential>
++ <j2seproject1:java classname="@{classname}" classpath="@{classpath}" modulename="@{modulename}" modulepath="@{modulepath}">
++ <customize>
++ <jvmarg value="-agentlib:jdwp=transport=${debug-transport},address=${jpda.address}"/>
++ <customizeDebuggee/>
++ </customize>
++ </j2seproject1:java>
++ </sequential>
++ </macrodef>
++ </target>
++ <target depends="-init-source-module-properties" if="named.module.internal" name="-init-macrodef-java-with-module">
++ <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
++ <attribute default="${module.name}" name="modulename"/>
++ <attribute default="${main.class}" name="classname"/>
++ <attribute default="${run.modulepath}" name="modulepath"/>
++ <attribute default="${run.upgrademodulepath}" name="upgrademodulepath"/>
++ <attribute default="${run.classpath}" name="classpath"/>
++ <attribute default="jvm" name="jvm"/>
+ <element name="customize" optional="true"/>
+ <sequential>
+- <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" jvm="${platform.java}">
+- <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+- <jvmarg line="${debug-args-line}"/>
+- <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
++ <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" module="@{modulename}">
++ <classpath>
++ <path path="@{classpath}"/>
++ </classpath>
++ <modulepath>
++ <pathelement path="@{modulepath}"/>
++ <pathelement location="${module.build.classes.dir}"/>
++ </modulepath>
++ <upgrademodulepath>
++ <path path="@{upgrademodulepath}"/>
++ </upgrademodulepath>
+ <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+ <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+ <jvmarg line="${run.jvmargs}"/>
+ <jvmarg line="${run.jvmargs.ide}"/>
++ <syspropertyset>
++ <propertyref prefix="run-sys-prop."/>
++ <mapper from="run-sys-prop.*" to="*" type="glob"/>
++ </syspropertyset>
++ <customize/>
++ </java>
++ </sequential>
++ </macrodef>
++ </target>
++ <target depends="-init-source-module-properties" if="unnamed.module.internal" name="-init-macrodef-java-with-unnamed-module">
++ <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
++ <attribute default="" name="modulename"/>
++ <attribute default="${main.class}" name="classname"/>
++ <attribute default="${run.modulepath}" name="modulepath"/>
++ <attribute default="${run.upgrademodulepath}" name="upgrademodulepath"/>
++ <attribute default="${run.classpath}" name="classpath"/>
++ <attribute default="jvm" name="jvm"/>
++ <element name="customize" optional="true"/>
++ <sequential>
++ <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true">
+ <classpath>
+ <path path="@{classpath}"/>
+ </classpath>
++ <modulepath>
++ <path path="@{modulepath}"/>
++ </modulepath>
++ <upgrademodulepath>
++ <path path="@{upgrademodulepath}"/>
++ </upgrademodulepath>
++ <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
++ <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
++ <jvmarg line="${run.jvmargs}"/>
++ <jvmarg line="${run.jvmargs.ide}"/>
+ <syspropertyset>
+ <propertyref prefix="run-sys-prop."/>
+ <mapper from="run-sys-prop.*" to="*" type="glob"/>
+@@ -823,14 +958,16 @@ is divided into following sections:
+ </sequential>
+ </macrodef>
+ </target>
+- <target name="-init-macrodef-java">
++ <target depends="-init-source-module-properties" name="-init-macrodef-java-without-module" unless="modules.supported.internal">
+ <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
++ <attribute default="" name="modulename"/>
+ <attribute default="${main.class}" name="classname"/>
++ <attribute default="" name="modulepath"/>
+ <attribute default="${run.classpath}" name="classpath"/>
+ <attribute default="jvm" name="jvm"/>
+ <element name="customize" optional="true"/>
+ <sequential>
+- <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true" jvm="${platform.java}">
++ <java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true">
+ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+ <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+@@ -848,6 +985,7 @@ is divided into following sections:
+ </sequential>
+ </macrodef>
+ </target>
++ <target depends="-init-macrodef-java-with-module, -init-macrodef-java-with-unnamed-module, -init-macrodef-java-without-module" name="-init-macrodef-java"/>
+ <target name="-init-macrodef-copylibs">
+ <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${manifest.file}" name="manifest"/>
+@@ -869,7 +1007,7 @@ is divided into following sections:
+ </chainedmapper>
+ </pathconvert>
+ <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+- <copylibs compress="${jar.compress}" excludeFromCopy="${copylibs.excludes}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" rebase="${copylibs.rebase}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
++ <copylibs compress="${jar.compress}" excludeFromCopy="${copylibs.excludes}" index="${jar.index}" indexMetaInf="${jar.index.metainf}" jarfile="${dist.jar}" manifest="@{manifest}" manifestencoding="UTF-8" rebase="${copylibs.rebase}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+ <fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
+ <manifest>
+ <attribute name="Class-Path" value="${jar.classpath}"/>
+@@ -881,7 +1019,7 @@ is divided into following sections:
+ </target>
+ <target name="-init-presetdef-jar">
+ <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+- <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
++ <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}" manifestencoding="UTF-8">
+ <j2seproject1:fileset dir="${build.classes.dir}" excludes="${dist.archive.excludes}"/>
+ </jar>
+ </presetdef>
+@@ -937,7 +1075,9 @@ is divided into following sections:
+ <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
+ </target>
+ <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
+- <antcall target="clean"/>
++ <antcall target="clean">
++ <param name="no.dependencies" value="true"/>
++ </antcall>
+ </target>
+ <target depends="init,deps-jar" name="-pre-pre-compile">
+ <mkdir dir="${build.classes.dir}"/>
+@@ -979,7 +1119,7 @@ is divided into following sections:
+ <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+ <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+ <j2seproject3:force-recompile/>
+- <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}:${src.resources.dir}"/>
++ <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}, module-info.java" sourcepath="${src.dir}:${src.resources.dir}"/>
+ </target>
+ <target name="-post-compile-single">
+ <!-- Empty placeholder for easier customization. -->
+@@ -999,21 +1139,40 @@ is divided into following sections:
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
++ <target depends="init,compile" name="-check-module-main-class">
++ <pathconvert property="main.class.file">
++ <string value="${main.class}"/>
++ <unpackagemapper from="*" to="*.class"/>
++ </pathconvert>
++ <condition property="do.module.main.class">
++ <and>
++ <isset property="main.class.available"/>
++ <available file="${build.classes.dir}/module-info.class"/>
++ <available file="${build.classes.dir}/${main.class.file}"/>
++ <isset property="libs.CopyLibs.classpath"/>
++ <available classname="org.netbeans.modules.java.j2seproject.moduletask.ModuleMainClass" classpath="${libs.CopyLibs.classpath}"/>
++ </and>
++ </condition>
++ </target>
++ <target depends="-check-module-main-class" if="do.module.main.class" name="-set-module-main-class">
++ <taskdef classname="org.netbeans.modules.java.j2seproject.moduletask.ModuleMainClass" classpath="${libs.CopyLibs.classpath}" name="modulemainclass"/>
++ <modulemainclass failonerror="false" mainclass="${main.class}" moduleinfo="${build.classes.dir}/module-info.class"/>
++ </target>
+ <target depends="init" if="do.archive" name="-do-jar-create-manifest" unless="manifest.available">
+ <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
+ <touch file="${tmp.manifest.file}" verbose="false"/>
+ </target>
+ <target depends="init" if="do.archive+manifest.available" name="-do-jar-copy-manifest">
+ <tempfile deleteonexit="true" destdir="${build.dir}" property="tmp.manifest.file"/>
+- <copy file="${manifest.file}" tofile="${tmp.manifest.file}"/>
++ <copy encoding="${manifest.encoding}" file="${manifest.file}" outputencoding="UTF-8" tofile="${tmp.manifest.file}"/>
+ </target>
+ <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+main.class.available" name="-do-jar-set-mainclass">
+- <manifest file="${tmp.manifest.file}" mode="update">
++ <manifest encoding="UTF-8" file="${tmp.manifest.file}" mode="update">
+ <attribute name="Main-Class" value="${main.class}"/>
+ </manifest>
+ </target>
+ <target depends="init,-do-jar-create-manifest,-do-jar-copy-manifest" if="do.archive+profile.available" name="-do-jar-set-profile">
+- <manifest file="${tmp.manifest.file}" mode="update">
++ <manifest encoding="UTF-8" file="${tmp.manifest.file}" mode="update">
+ <attribute name="Profile" value="${javac.profile}"/>
+ </manifest>
+ </target>
+@@ -1021,25 +1180,65 @@ is divided into following sections:
+ <basename file="${application.splash}" property="splashscreen.basename"/>
+ <mkdir dir="${build.classes.dir}/META-INF"/>
+ <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
+- <manifest file="${tmp.manifest.file}" mode="update">
++ <manifest encoding="UTF-8" file="${tmp.manifest.file}" mode="update">
+ <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
+ </manifest>
+ </target>
+- <target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.mkdist" name="-do-jar-copylibs">
++ <target depends="init,compile" name="-check-do-mkdist">
++ <condition property="do.mkdist">
++ <and>
++ <isset property="do.archive"/>
++ <isset property="libs.CopyLibs.classpath"/>
++ <not>
++ <istrue value="${mkdist.disabled}"/>
++ </not>
++ <not>
++ <available file="${build.classes.dir}/module-info.class"/>
++ </not>
++ </and>
++ </condition>
++ </target>
++ <target depends="init,-init-macrodef-copylibs,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-check-do-mkdist" if="do.mkdist" name="-do-jar-copylibs">
+ <j2seproject3:copylibs manifest="${tmp.manifest.file}"/>
+ <echo level="info">To run this application from the command line without Ant, try:</echo>
+ <property location="${dist.jar}" name="dist.jar.resolved"/>
+- <echo level="info">${platform.java} -jar "${dist.jar.resolved}"</echo>
++ <echo level="info">java -jar "${dist.jar.resolved}"</echo>
+ </target>
+- <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen" if="do.archive" name="-do-jar-jar" unless="do.mkdist">
++ <target depends="init,compile,-pre-pre-jar,-pre-jar,-do-jar-create-manifest,-do-jar-copy-manifest,-do-jar-set-mainclass,-do-jar-set-profile,-do-jar-set-splashscreen,-check-do-mkdist" if="do.archive" name="-do-jar-jar" unless="do.mkdist">
+ <j2seproject1:jar manifest="${tmp.manifest.file}"/>
+ <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+ <property location="${dist.jar}" name="dist.jar.resolved"/>
++ <condition else="${dist.jar.resolved}" property="jar.usage.message.class.path.replacement" value="">
++ <isset property="named.module.internal"/>
++ </condition>
+ <pathconvert property="run.classpath.with.dist.jar">
+ <path path="${run.classpath}"/>
++ <map from="${build.classes.dir.resolved}" to="${jar.usage.message.class.path.replacement}"/>
++ </pathconvert>
++ <pathconvert property="run.modulepath.with.dist.jar">
++ <path location="${dist.jar.resolved}"/>
++ <path path="${run.modulepath}"/>
+ <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+ </pathconvert>
+- <condition else="" property="jar.usage.message" value="To run this application from the command line without Ant, try:${line.separator}${platform.java} -cp ${run.classpath.with.dist.jar} ${main.class}">
++ <condition else="${run.modulepath}" property="jar.usage.message.run.modulepath.with.dist.jar" value="${run.modulepath.with.dist.jar}">
++ <isset property="named.module.internal"/>
++ </condition>
++ <condition else="" property="jar.usage.message.module.path" value=" -p ${jar.usage.message.run.modulepath.with.dist.jar}">
++ <and>
++ <isset property="modules.supported.internal"/>
++ <length length="0" string="${jar.usage.message.run.modulepath.with.dist.jar}" when="greater"/>
++ </and>
++ </condition>
++ <condition else="" property="jar.usage.message.class.path" value=" -cp ${run.classpath.with.dist.jar}">
++ <length length="0" string="${run.classpath.with.dist.jar}" when="greater"/>
++ </condition>
++ <condition else="/${main.class}" property="jar.usage.message.main.class.class.selector" value="">
++ <isset property="do.module.main.class"/>
++ </condition>
++ <condition else=" ${main.class}" property="jar.usage.message.main.class" value=" -m ${module.name}${jar.usage.message.main.class.class.selector}">
++ <isset property="named.module.internal"/>
++ </condition>
++ <condition else="" property="jar.usage.message" value="To run this application from the command line without Ant, try:${line.separator}${platform.java}${jar.usage.message.module.path}${jar.usage.message.class.path}${jar.usage.message.main.class}">
+ <isset property="main.class.available"/>
+ </condition>
+ <condition else="debug" property="jar.usage.level" value="info">
+@@ -1058,8 +1257,73 @@ is divided into following sections:
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+- <target depends="init,compile,-pre-jar,-do-jar-without-libraries,-do-jar-with-libraries,-post-jar" name="-do-jar"/>
+- <target depends="init,compile,-pre-jar,-do-jar,-post-jar" description="Build JAR." name="jar"/>
++ <target depends="init,compile,-pre-jar,-set-module-main-class,-do-jar-without-libraries,-do-jar-with-libraries,-post-jar" name="-do-jar"/>
++ <target depends="init,compile,-pre-jar,-do-jar,-post-jar,deploy" description="Build JAR." name="jar"/>
++ <!--
++ =================
++ DEPLOY SECTION
++ =================
++ -->
++ <target name="-pre-deploy">
++ <!-- Empty placeholder for easier customization. -->
++ <!-- You can override this target in the ../build.xml file. -->
++ </target>
++ <target depends="init" name="-check-jlink">
++ <condition property="do.jlink.internal">
++ <and>
++ <istrue value="${do.jlink}"/>
++ <isset property="do.archive"/>
++ <isset property="named.module.internal"/>
++ </and>
++ </condition>
++ </target>
++ <target depends="init,-do-jar,-post-jar,-pre-deploy,-check-jlink" if="do.jlink.internal" name="-do-deploy">
++ <delete dir="${dist.jlink.dir}" failonerror="false" quiet="true"/>
++ <property name="jlink.launcher.name" value="${application.title}"/>
++ <condition else="${module.name}" property="jlink.add.modules" value="${module.name},${jlink.additionalmodules}">
++ <and>
++ <isset property="jlink.additionalmodules"/>
++ <length length="0" string="${jlink.additionalmodules}" when="greater"/>
++ </and>
++ </condition>
++ <condition property="jlink.do.strip.internal">
++ <and>
++ <isset property="jlink.strip"/>
++ <istrue value="${jlink.strip}"/>
++ </and>
++ </condition>
++ <condition property="jlink.do.additionalparam.internal">
++ <and>
++ <isset property="jlink.additionalparam"/>
++ <length length="0" string="${jlink.additionalparam}" when="greater"/>
++ </and>
++ </condition>
++ <condition property="jlink.do.launcher.internal">
++ <and>
++ <istrue value="${jlink.launcher}"/>
++ <isset property="main.class.available"/>
++ </and>
++ </condition>
++ <property name="platform.jlink" value="${jdk.home}/bin/jlink"/>
++ <property name="jlink.systemmodules.internal" value="${jdk.home}/jmods"/>
++ <exec executable="${platform.jlink}">
++ <arg value="--module-path"/>
++ <arg path="${jlink.systemmodules.internal}:${run.modulepath}:${dist.jar}"/>
++ <arg value="--add-modules"/>
++ <arg value="${jlink.add.modules}"/>
++ <arg if:set="jlink.do.strip.internal" value="--strip-debug"/>
++ <arg if:set="jlink.do.launcher.internal" value="--launcher"/>
++ <arg if:set="jlink.do.launcher.internal" value="${jlink.launcher.name}=${module.name}/${main.class}"/>
++ <arg if:set="jlink.do.additionalparam.internal" line="${jlink.additionalparam}"/>
++ <arg value="--output"/>
++ <arg value="${dist.jlink.output}"/>
++ </exec>
++ </target>
++ <target name="-post-deploy">
++ <!-- Empty placeholder for easier customization. -->
++ <!-- You can override this target in the ../build.xml file. -->
++ </target>
++ <target depends="-do-jar,-post-jar,-pre-deploy,-do-deploy,-post-deploy" name="deploy"/>
+ <!--
+ =================
+ EXECUTION SECTION
+@@ -1096,9 +1360,9 @@ is divided into following sections:
+ </target>
+ <target depends="init,compile" name="-debug-start-debuggee">
+ <j2seproject3:debug>
+- <customize>
++ <customizeDebuggee>
+ <arg line="${application.args}"/>
+- </customize>
++ </customizeDebuggee>
+ </j2seproject3:debug>
+ </target>
+ <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
+@@ -1164,28 +1428,24 @@ is divided into following sections:
+ </customize>
+ </profile>
+ </target>
+- <target depends="profile-init,compile-test-single" if="profiler.info.jvmargs.agent" name="-profile-test-single-pre72">
++ <target depends="-init-macrodef-junit,profile-init,compile-test-single" if="profiler.info.jvmargs.agent" name="-profile-test-single-pre72">
+ <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+ <nbprofiledirect>
+ <classpath>
+ <path path="${run.test.classpath}"/>
+ </classpath>
+ </nbprofiledirect>
+- <junit dir="${profiler.info.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" jvm="${profiler.info.jvm}" showoutput="true">
+- <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
+- <jvmarg value="${profiler.info.jvmargs.agent}"/>
+- <jvmarg line="${profiler.info.jvmargs}"/>
+- <test name="${profile.class}"/>
+- <classpath>
+- <path path="${run.test.classpath}"/>
+- </classpath>
+- <syspropertyset>
+- <propertyref prefix="test-sys-prop."/>
+- <mapper from="test-sys-prop.*" to="*" type="glob"/>
+- </syspropertyset>
+- <formatter type="brief" usefile="false"/>
+- <formatter type="xml"/>
+- </junit>
++ <j2seproject3:junit excludes="${excludes}" includes="${includes}" testincludes="${profile.class}" testmethods="">
++ <customize>
++ <jvmarg value="-agentlib:jdwp=transport=${debug-transport},address=${jpda.address}"/>
++ <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
++ <jvmarg value="${profiler.info.jvmargs.agent}"/>
++ <jvmarg line="${profiler.info.jvmargs}"/>
++ <classpath>
++ <path path="${run.test.classpath}"/>
++ </classpath>
++ </customize>
++ </j2seproject3:junit>
+ </target>
+ <!--
+ end of pre NB72 profiling section
+@@ -1216,7 +1476,7 @@ is divided into following sections:
+ <target depends="-profile-check" description="Profile a selected class in the IDE." if="profiler.configured" name="profile-test-with-main">
+ <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+ <startprofiler/>
+- <antcal target="run-test-with-main"/>
++ <antcall target="run-test-with-main"/>
+ </target>
+ <target depends="-profile-check,-profile-applet-pre72" if="profiler.configured" name="profile-applet" unless="profiler.info.jvmargs.agent">
+ <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+@@ -1238,13 +1498,16 @@ is divided into following sections:
+ </not>
+ </and>
+ </condition>
+- <exec executable="${platform.java}" failonerror="false" outputproperty="platform.version.output">
+- <arg value="-version"/>
+- </exec>
+ <condition else="" property="bug5101868workaround" value="*.java">
+- <matches multiline="true" pattern="1\.[56](\..*)?" string="${platform.version.output}"/>
++ <matches pattern="1\.[56](\..*)?" string="${java.version}"/>
++ </condition>
++ <condition else="" property="javadoc.html5.cmd.line.arg" value="-html5">
++ <and>
++ <isset property="javadoc.html5"/>
++ <available file="${jdk.home}${file.separator}lib${file.separator}jrt-fs.jar"/>
++ </and>
+ </condition>
+- <javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" executable="${platform.javadoc}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
++ <javadoc additionalparam="-J-Dfile.encoding=${file.encoding} ${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+ <classpath>
+ <path path="${javac.classpath}"/>
+ </classpath>
+@@ -1259,6 +1522,7 @@ is divided into following sections:
+ <exclude name="*.java"/>
+ </fileset>
+ <arg line="${javadoc.endorsed.classpath.cmd.line.arg}"/>
++ <arg line="${javadoc.html5.cmd.line.arg}"/>
+ </javadoc>
+ <copy todir="${dist.javadoc.dir}">
+ <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+@@ -1288,11 +1552,63 @@ is divided into following sections:
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
++ <target depends="-init-source-module-properties" if="named.module.internal" name="-init-test-javac-module-properties-with-module">
++ <j2seproject3:modulename property="test.module.name" sourcepath="${test.src.dir}"/>
++ <condition else="${empty.dir}" property="javac.test.sourcepath" value="${test.src.dir}">
++ <and>
++ <isset property="test.module.name"/>
++ <length length="0" string="${test.module.name}" when="greater"/>
++ </and>
++ </condition>
++ <condition else="--patch-module ${module.name}=${test.src.dir} --add-reads ${module.name}=ALL-UNNAMED" property="javac.test.compilerargs" value="--add-reads ${test.module.name}=ALL-UNNAMED">
++ <and>
++ <isset property="test.module.name"/>
++ <length length="0" string="${test.module.name}" when="greater"/>
++ </and>
++ </condition>
++ </target>
++ <target depends="-init-source-module-properties" if="named.module.internal" name="-init-test-run-module-properties">
++ <condition else="${module.name}" property="run.test.addexport.source.module.internal" value="${test.module.name}">
++ <and>
++ <isset property="test.module.name"/>
++ <length length="0" string="${test.module.name}" when="greater"/>
++ </and>
++ </condition>
++ <fileset dir="${build.test.classes.dir}" id="run.test.packages.internal" includes="**/*.class"/>
++ <property location="${build.test.classes.dir}" name="build.test.classes.dir.abs.internal"/>
++ <pathconvert pathsep=" " property="run.test.addexports.internal" refid="run.test.packages.internal">
++ <chainedmapper>
++ <regexpmapper from="^(.*)\Q${file.separator}\E.*\.class$$" to="\1"/>
++ <filtermapper>
++ <uniqfilter/>
++ <replacestring from="${build.test.classes.dir.abs.internal}" to=""/>
++ </filtermapper>
++ <cutdirsmapper dirs="1"/>
++ <packagemapper from="*" to="--add-exports ${run.test.addexport.source.module.internal}/*=ALL-UNNAMED"/>
++ </chainedmapper>
++ </pathconvert>
++ <condition else="--patch-module ${module.name}=${build.test.classes.dir} --add-modules ${module.name} --add-reads ${module.name}=ALL-UNNAMED ${run.test.addexports.internal}" property="run.test.jvmargs" value="--add-modules ${test.module.name} --add-reads ${test.module.name}=ALL-UNNAMED ${run.test.addexports.internal}">
++ <and>
++ <isset property="test.module.name"/>
++ <length length="0" string="${test.module.name}" when="greater"/>
++ </and>
++ </condition>
++ </target>
++ <target depends="-init-source-module-properties" name="-init-test-module-properties-without-module" unless="named.module.internal">
++ <property name="javac.test.sourcepath" value="${empty.dir}"/>
++ <property name="javac.test.compilerargs" value=""/>
++ <property name="run.test.jvmargs" value=""/>
++ </target>
++ <target depends="-init-test-javac-module-properties-with-module,-init-test-module-properties-without-module" name="-init-test-module-properties"/>
+ <target if="do.depend.true" name="-compile-test-depend">
+ <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
+ </target>
+- <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+- <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir="${test.src.dir}"/>
++ <target depends="init,deps-jar,compile,-init-test-module-properties,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
++ <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" modulepath="${javac.test.modulepath}" processorpath="${javac.test.processorpath}" sourcepath="${javac.test.sourcepath}" srcdir="${test.src.dir}">
++ <customize>
++ <compilerarg line="${javac.test.compilerargs}"/>
++ </customize>
++ </j2seproject3:javac>
+ <copy todir="${build.test.classes.dir}">
+ <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+ </copy>
+@@ -1306,10 +1622,14 @@ is divided into following sections:
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+- <target depends="init,deps-jar,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
++ <target depends="init,deps-jar,compile,-init-test-module-properties,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+ <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+ <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
+- <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
++ <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}, module-info.java" modulepath="${javac.test.modulepath}" processorpath="${javac.test.processorpath}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}">
++ <customize>
++ <compilerarg line="${javac.test.compilerargs}"/>
++ </customize>
++ </j2seproject3:javac>
+ <copy todir="${build.test.classes.dir}">
+ <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+ </copy>
+@@ -1327,7 +1647,7 @@ is divided into following sections:
+ <target depends="init" if="have.tests" name="-pre-test-run">
+ <mkdir dir="${build.test.results.dir}"/>
+ </target>
+- <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
++ <target depends="init,compile-test,-init-test-run-module-properties,-pre-test-run" if="have.tests" name="-do-test-run">
+ <j2seproject3:test includes="${includes}" testincludes="**/*Test.java"/>
+ </target>
+ <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+@@ -1339,14 +1659,14 @@ is divided into following sections:
+ <target depends="init" if="have.tests" name="-pre-test-run-single">
+ <mkdir dir="${build.test.results.dir}"/>
+ </target>
+- <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
++ <target depends="init,compile-test-single,-init-test-run-module-properties,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+ <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+ <j2seproject3:test excludes="" includes="${test.includes}" testincludes="${test.includes}"/>
+ </target>
+ <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+ <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+ </target>
+- <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
++ <target depends="init,compile-test-single,-init-test-run-module-properties,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+ <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single-method">
+ <fail unless="test.class">Must select some files in the IDE or set test.class</fail>
+ <fail unless="test.method">Must select some method in the IDE or set test.method</fail>
+@@ -1355,7 +1675,7 @@ is divided into following sections:
+ <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method" if="have.tests" name="-post-test-run-single-method">
+ <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+ </target>
+- <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single-method,-post-test-run-single-method" description="Run single unit test." name="test-single-method"/>
++ <target depends="init,compile-test-single,-init-test-run-module-properties,-pre-test-run-single,-do-test-run-single-method,-post-test-run-single-method" description="Run single unit test." name="test-single-method"/>
+ <!--
+ =======================
+ TEST DEBUGGING SECTION
+@@ -1373,8 +1693,8 @@ is divided into following sections:
+ <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+ <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+ </target>
+- <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+- <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/>
++ <target depends="init,compile-test-single,-init-test-run-module-properties,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
++ <target depends="init,compile-test-single,-init-test-run-module-properties,-debug-start-debugger-test,-debug-start-debuggee-test-method" name="debug-test-method"/>
+ <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+ <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+ </target>
+@@ -1400,9 +1720,9 @@ is divided into following sections:
+ <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
+ <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+ <j2seproject3:debug classname="sun.applet.AppletViewer">
+- <customize>
++ <customizeDebuggee>
+ <arg value="${applet.url}"/>
+- </customize>
++ </customizeDebuggee>
+ </j2seproject3:debug>
+ </target>
+ <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
+@@ -1429,6 +1749,7 @@ is divided into following sections:
+ </target>
+ <target depends="init" name="-do-clean">
+ <delete dir="${build.dir}"/>
++ <delete dir="${dist.jlink.output}"/>
+ <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
+ </target>
+ <target name="-post-clean">
+diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties
+index 9754f4e..3d66b41 100644
+--- a/nbproject/genfiles.properties
++++ b/nbproject/genfiles.properties
+@@ -3,6 +3,6 @@ build.xml.script.CRC32=52bfd133
+ build.xml.stylesheet.CRC32=8064a381@1.79.1.48
+ # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+ # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+-nbproject/build-impl.xml.data.CRC32=ae0b0416
+-nbproject/build-impl.xml.script.CRC32=b384fd05
+-nbproject/build-impl.xml.stylesheet.CRC32=05530350@1.79.1.48
++nbproject/build-impl.xml.data.CRC32=3544ff30
++nbproject/build-impl.xml.script.CRC32=a1f21cc5
++nbproject/build-impl.xml.stylesheet.CRC32=f89f7d21@1.93.0.48
+diff --git a/nbproject/private/private.properties b/nbproject/private/private.properties
+index ea9d93a..757ef36 100644
+--- a/nbproject/private/private.properties
++++ b/nbproject/private/private.properties
+@@ -1,6 +1,8 @@
+ compile.on.save=true
+ do.depend=false
+ do.jar=true
++do.jlink=false
+ javac.debug=true
+ javadoc.preview=true
+-user.properties.file=C:\\Users\\ntyle\\AppData\\Roaming\\NetBeans\\8.1\\build.properties
++jlink.strip=false
++user.properties.file=/home/trox/.netbeans/11.2/build.properties
+diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml
+index 2c13095..7ccf2f7 100644
+--- a/nbproject/private/private.xml
++++ b/nbproject/private/private.xml
+@@ -3,14 +3,11 @@
+ <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
+ <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
+ <group>
+- <file>file:/D:/Documents/NetBeansProjects/LazyMan/src/GameObj/GameWatchInfo.java</file>
+- <file>file:/D:/Documents/NetBeansProjects/LazyMan/resources/VERSION.txt</file>
+- <file>file:/D:/Documents/NetBeansProjects/LazyMan/src/Util/Props.java</file>
+- <file>file:/D:/Documents/NetBeansProjects/LazyMan/src/Util/TextAreaOutputStream.java</file>
+- <file>file:/D:/Documents/NetBeansProjects/LazyMan/src/Util/ProcessReader.java</file>
+- <file>file:/D:/Documents/NetBeansProjects/LazyMan/src/lazyman/MainGUI.java</file>
+- <file>file:/D:/Documents/NetBeansProjects/LazyMan/nbproject/build-impl.xml</file>
+- <file>file:/D:/Documents/NetBeansProjects/LazyMan/src/Objects/Livestreamer.java</file>
++ <file>file:/home/trox/LazyMan/src/lazyman/LazyMan.java</file>
++ <file>file:/home/trox/LazyMan/build.xml</file>
++ <file>file:/home/trox/LazyMan/nbproject/project.properties</file>
++ <file>file:/home/trox/LazyMan/src/lazyman/MainGUI.java</file>
++ <file>file:/home/trox/LazyMan/src/lazyman/MainGUI.form.xml</file>
+ </group>
+ </open-files>
+ </project-private>
+diff --git a/nbproject/project.properties b/nbproject/project.properties
+index 239d313..44b2903 100644
+--- a/nbproject/project.properties
++++ b/nbproject/project.properties
+@@ -19,8 +19,12 @@ build.test.results.dir=${build.dir}/test/results
+ #debug.transport=dt_socket
+ debug.classpath=\
+ ${run.classpath}
++debug.modulepath=\
++ ${run.modulepath}
+ debug.test.classpath=\
+ ${run.test.classpath}
++debug.test.modulepath=\
++ ${run.test.modulepath}
+ # Files in build.classes.dir which should be excluded from distribution jar
+ dist.archive.excludes=
+ # This directory is removed when the project is cleaned:
+@@ -33,7 +37,9 @@ file.reference.AppleJavaExtensions-1.4.jar=src/lazyman/AppleJavaExtensions-1.4.j
+ file.reference.gson-2.7.jar=src\\lazyman\\gson-2.7.jar
+ file.reference.jcalendar-1.4.jar=src/lazyman/jcalendar-1.4.jar
+ includes=**
++jar.archive.disabled=${jnlp.enabled}
+ jar.compress=false
++jar.index=${jnlp.enabled}
+ javac.classpath=\
+ ${file.reference.gson-2.7.jar}:\
+ ${file.reference.jcalendar-1.4.jar}:\
+@@ -42,6 +48,8 @@ javac.classpath=\
+ javac.compilerargs=
+ javac.deprecation=false
+ javac.external.vm=true
++javac.modulepath=
++javac.processormodulepath=
+ javac.processorpath=\
+ ${javac.classpath}
+ javac.source=1.8
+@@ -49,11 +57,14 @@ javac.target=1.8
+ javac.test.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
++javac.test.modulepath=\
++ ${javac.modulepath}
+ javac.test.processorpath=\
+ ${javac.test.classpath}
+ javadoc.additionalparam=
+ javadoc.author=false
+ javadoc.encoding=${source.encoding}
++javadoc.html5=false
+ javadoc.noindex=false
+ javadoc.nonavbar=false
+ javadoc.notree=false
+@@ -62,11 +73,30 @@ javadoc.splitindex=true
+ javadoc.use=true
+ javadoc.version=false
+ javadoc.windowtitle=
++jlink.launcher=false
++jlink.launcher.name=LazyMan
++jnlp.codebase.type=no.codebase
++jnlp.descriptor=application
++jnlp.enabled=false
++jnlp.mixed.code=default
++jnlp.offline-allowed=false
++jnlp.signed=false
++jnlp.signing=
++jnlp.signing.alias=
++jnlp.signing.keystore=
+ main.class=lazyman.LazyMan
++# Optional override of default Application-Library-Allowable-Codebase attribute identifying the locations where your signed RIA is expected to be found.
++manifest.custom.application.library.allowable.codebase=
++# Optional override of default Caller-Allowable-Codebase attribute identifying the domains from which JavaScript code can make calls to your RIA without security prompts.
++manifest.custom.caller.allowable.codebase=
++# Optional override of default Codebase manifest attribute, use to prevent RIAs from being repurposed
++manifest.custom.codebase=
++# Optional override of default Permissions manifest attribute (supported values: sandbox, all-permissions)
++manifest.custom.permissions=
+ manifest.file=manifest.mf
+ meta.inf.dir=${src.dir}/META-INF
+ mkdist.disabled=false
+-platform.active=JDK_1.8
++platform.active=default_platform
+ run.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+@@ -74,9 +104,13 @@ run.classpath=\
+ # You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
+ # To set system properties for unit tests define test-sys-prop.name=value:
+ run.jvmargs=
++run.modulepath=\
++ ${javac.modulepath}
+ run.test.classpath=\
+ ${javac.test.classpath}:\
+ ${build.test.classes.dir}
++run.test.modulepath=\
++ ${javac.test.modulepath}
+ source.encoding=UTF-8
+ src.dir=src
+ src.resources.dir=resources
+diff --git a/nbproject/project.xml b/nbproject/project.xml
+index 9c21770..7b3c5ad 100644
+--- a/nbproject/project.xml
++++ b/nbproject/project.xml
+@@ -4,7 +4,6 @@
+ <configuration>
+ <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+ <name>LazyMan</name>
+- <explicit-platform explicit-source-supported="true"/>
+ <source-roots>
+ <root id="src.dir"/>
+ <root id="src.resources.dir"/>
+
+From 1312265f649b72536f08eba913ee48d4ea829575 Mon Sep 17 00:00:00 2001
+From: Troy C <troxor@users.noreply.github.com>
+Date: Sat, 28 Dec 2019 16:56:37 -0600
+Subject: [PATCH 2/3] specify proxy scheme
+
+---
+ src/Objects/Streamlink.java | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Objects/Streamlink.java b/src/Objects/Streamlink.java
+index 9b5c6d1..855c52f 100644
+--- a/src/Objects/Streamlink.java
++++ b/src/Objects/Streamlink.java
+@@ -42,7 +42,7 @@ public Process run(Game g, GameWatchInfo gwi, int port) {
+ String ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36";
+ ProcessBuilder pb;
+
+- List<String> args = new ArrayList<>(Arrays.asList(new String[]{location, getURLFormat(gwi.getUrl(), gwi.getQuality().equals("best")), gwi.getQuality(), "--http-header", "User-Agent=" + ua, "--hls-segment-threads=4", "--https-proxy", "127.0.0.1:" + port}));
++ List<String> args = new ArrayList<>(Arrays.asList(new String[]{location, getURLFormat(gwi.getUrl(), gwi.getQuality().equals("best")), gwi.getQuality(), "--http-header", "User-Agent=" + ua, "--hls-segment-threads=4", "--https-proxy", "https://127.0.0.1:" + port}));
+
+ if (record) {
+ String saveLoc = Props.getSaveStreamLoc() + File.separator + gwi.getDate();
+
+From a9df8ff90364c5d154ac92351479d3cd0952dd2a Mon Sep 17 00:00:00 2001
+From: Troy C <troxor@users.noreply.github.com>
+Date: Sat, 28 Dec 2019 16:57:30 -0600
+Subject: [PATCH 3/3] Make dialogs bigger, disable update
+
+---
+ src/lazyman/MainGUI.form | 78 +++++++++++++++++++++-------------------
+ src/lazyman/MainGUI.java | 46 ++++++++++++------------
+ src/lazyman/Options.form | 5 ++-
+ src/lazyman/Options.java | 1 +
+ 4 files changed, 69 insertions(+), 61 deletions(-)
+
+diff --git a/src/lazyman/MainGUI.form b/src/lazyman/MainGUI.form
+index ebc0289..dc10280 100644
+--- a/src/lazyman/MainGUI.form
++++ b/src/lazyman/MainGUI.form
+@@ -15,6 +15,14 @@
+ </Layout>
+ </Container>
+ <Menu class="javax.swing.JMenuBar" name="jMenuBar1">
++ <Properties>
++ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
++ <Dimension value="[300, 32769]"/>
++ </Property>
++ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
++ <Dimension value="[300, 100]"/>
++ </Property>
++ </Properties>
+ <SubComponents>
+ <Menu class="javax.swing.JMenu" name="jMenu1">
+ <Properties>
+@@ -156,10 +164,10 @@
+ </Property>
+ <Property name="locationByPlatform" type="boolean" value="true"/>
+ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+- <Dimension value="[648, 512]"/>
++ <Dimension value="[900, 600]"/>
+ </Property>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+- <Dimension value="[648, 512]"/>
++ <Dimension value="[900, 600]"/>
+ </Property>
+ </Properties>
+ <SyntheticProperties>
+@@ -180,7 +188,7 @@
+ <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+- <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-52,0,0,2,112"/>
++ <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,115,0,0,3,-12"/>
+ </AuxValues>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+@@ -504,9 +512,6 @@
+ <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+ <Color blue="0" green="0" red="0" type="rgb"/>
+ </Property>
+- <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+- <Color blue="ff" green="ff" red="ff" type="rgb"/>
+- </Property>
+ <Property name="doubleBuffered" type="boolean" value="true"/>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[8, 21]"/>
+@@ -530,13 +535,32 @@
+ </Container>
+ <Container class="javax.swing.JPanel" name="playOptionsPanel">
+ <Properties>
++ <Property name="alignmentY" type="float" value="0.0"/>
+ <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="[32767, 74]"/>
+ </Property>
++ <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
++ <Dimension value="[750, 80]"/>
++ </Property>
+ </Properties>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
+ <SubComponents>
++ <Component class="javax.swing.JButton" name="playBtn">
++ <Properties>
++ <Property name="mnemonic" type="int" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
++ <Connection code="KeyEvent.VK_P" type="code"/>
++ </Property>
++ <Property name="text" type="java.lang.String" value="Play"/>
++ <Property name="enabled" type="boolean" value="false"/>
++ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
++ <Dimension value="[80, 40]"/>
++ </Property>
++ </Properties>
++ <Events>
++ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="playBtnActionPerformed"/>
++ </Events>
++ </Component>
+ <Component class="javax.swing.JProgressBar" name="jProgressBar1">
+ <Properties>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+@@ -609,21 +633,6 @@
+ </Component>
+ </SubComponents>
+ </Container>
+- <Component class="javax.swing.JButton" name="playBtn">
+- <Properties>
+- <Property name="mnemonic" type="int" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
+- <Connection code="KeyEvent.VK_P" type="code"/>
+- </Property>
+- <Property name="text" type="java.lang.String" value="Play"/>
+- <Property name="enabled" type="boolean" value="false"/>
+- <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+- <Dimension value="[80, 40]"/>
+- </Property>
+- </Properties>
+- <Events>
+- <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="playBtnActionPerformed"/>
+- </Events>
+- </Component>
+ <Container class="javax.swing.JPanel" name="playActionPanel">
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
+@@ -645,24 +654,19 @@
+ </Constraint>
+ </Constraints>
+ </Component>
+- <Component class="javax.swing.JCheckBox" name="restartCB">
+- <Properties>
+- <Property name="mnemonic" type="int" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
+- <Connection code="KeyEvent.VK_R" type="code"/>
+- </Property>
+- <Property name="text" type="java.lang.String" value="Restart"/>
+- </Properties>
+- <Events>
+- <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="restartCBActionPerformed"/>
+- </Events>
+- <Constraints>
+- <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+- <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="23" weightX="0.0" weightY="0.0"/>
+- </Constraint>
+- </Constraints>
+- </Component>
+ </SubComponents>
+ </Container>
++ <Component class="javax.swing.JCheckBox" name="restartCB">
++ <Properties>
++ <Property name="mnemonic" type="int" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
++ <Connection code="KeyEvent.VK_R" type="code"/>
++ </Property>
++ <Property name="text" type="java.lang.String" value="Restart"/>
++ </Properties>
++ <Events>
++ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="restartCBActionPerformed"/>
++ </Events>
++ </Component>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+diff --git a/src/lazyman/MainGUI.java b/src/lazyman/MainGUI.java
+index db5cd2a..e2dae8a 100644
+--- a/src/lazyman/MainGUI.java
++++ b/src/lazyman/MainGUI.java
+@@ -42,7 +42,7 @@
+
+ public MainGUI() {
+ initComponents();
+- checkUpdate();
++ //checkUpdate();
+ p = new Proxy(Props.getProxyPort());
+ p.run();
+ streamCnt = 0;
+@@ -144,12 +144,12 @@ private void initComponents() {
+ consoleTA = new javax.swing.JTextPane();
+ consolePanel = new javax.swing.JPanel();
+ playOptionsPanel = new javax.swing.JPanel();
++ playBtn = new javax.swing.JButton();
+ jProgressBar1 = new javax.swing.JProgressBar();
+ playOptionSelectionsPanel = new javax.swing.JPanel();
+ feedCB = new javax.swing.JComboBox<>();
+ qualityCB = new javax.swing.JComboBox<>();
+ CDNCB = new javax.swing.JComboBox<>();
+- playBtn = new javax.swing.JButton();
+ playActionPanel = new javax.swing.JPanel();
+ saveStreamCB = new javax.swing.JCheckBox();
+ restartCB = new javax.swing.JCheckBox();
+@@ -173,8 +173,8 @@ private void initComponents() {
+ setTitle("LazyMan");
+ setIconImage(Toolkit.getDefaultToolkit().getImage(MainGUI.class.getResource("/Logos/LM.png")));
+ setLocationByPlatform(true);
+- setMinimumSize(new java.awt.Dimension(648, 512));
+- setPreferredSize(new java.awt.Dimension(648, 512));
++ setMinimumSize(new java.awt.Dimension(900, 600));
++ setPreferredSize(new java.awt.Dimension(900, 600));
+ addWindowListener(new java.awt.event.WindowAdapter() {
+ public void windowClosing(java.awt.event.WindowEvent evt) {
+ formWindowClosing(evt);
+@@ -412,7 +412,6 @@ public void keyReleased(java.awt.event.KeyEvent evt) {
+
+ consoleTA.setEditable(false);
+ consoleTA.setBackground(new java.awt.Color(0, 0, 0));
+- consoleTA.setForeground(new java.awt.Color(255, 255, 255));
+ consoleTA.setDoubleBuffered(true);
+ consoleTA.setMaximumSize(new java.awt.Dimension(8, 21));
+ consoleScrollPane.setViewportView(consoleTA);
+@@ -427,7 +426,20 @@ public void keyReleased(java.awt.event.KeyEvent evt) {
+ consolePanel.setLayout(new javax.swing.BoxLayout(consolePanel, javax.swing.BoxLayout.Y_AXIS));
+ mainPanel.add(consolePanel);
+
++ playOptionsPanel.setAlignmentY(0.0F);
+ playOptionsPanel.setMaximumSize(new java.awt.Dimension(32767, 74));
++ playOptionsPanel.setMinimumSize(new java.awt.Dimension(750, 80));
++
++ playBtn.setMnemonic(KeyEvent.VK_P);
++ playBtn.setText("Play");
++ playBtn.setEnabled(false);
++ playBtn.setPreferredSize(new java.awt.Dimension(80, 40));
++ playBtn.addActionListener(new java.awt.event.ActionListener() {
++ public void actionPerformed(java.awt.event.ActionEvent evt) {
++ playBtnActionPerformed(evt);
++ }
++ });
++ playOptionsPanel.add(playBtn);
+
+ jProgressBar1.setPreferredSize(new java.awt.Dimension(64, 12));
+ playOptionsPanel.add(jProgressBar1);
+@@ -462,17 +474,6 @@ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+
+ playOptionsPanel.add(playOptionSelectionsPanel);
+
+- playBtn.setMnemonic(KeyEvent.VK_P);
+- playBtn.setText("Play");
+- playBtn.setEnabled(false);
+- playBtn.setPreferredSize(new java.awt.Dimension(80, 40));
+- playBtn.addActionListener(new java.awt.event.ActionListener() {
+- public void actionPerformed(java.awt.event.ActionEvent evt) {
+- playBtnActionPerformed(evt);
+- }
+- });
+- playOptionsPanel.add(playBtn);
+-
+ playActionPanel.setLayout(new java.awt.GridBagLayout());
+
+ saveStreamCB.setMnemonic(KeyEvent.VK_V);
+@@ -489,6 +490,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
+ playActionPanel.add(saveStreamCB, gridBagConstraints);
+
++ playOptionsPanel.add(playActionPanel);
++
+ restartCB.setMnemonic(KeyEvent.VK_R);
+ restartCB.setText("Restart");
+ restartCB.addActionListener(new java.awt.event.ActionListener() {
+@@ -496,18 +499,15 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ restartCBActionPerformed(evt);
+ }
+ });
+- gridBagConstraints = new java.awt.GridBagConstraints();
+- gridBagConstraints.gridx = 1;
+- gridBagConstraints.gridy = 1;
+- gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
+- playActionPanel.add(restartCB, gridBagConstraints);
+-
+- playOptionsPanel.add(playActionPanel);
++ playOptionsPanel.add(restartCB);
+
+ mainPanel.add(playOptionsPanel);
+
+ getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
+
++ jMenuBar1.setMaximumSize(new java.awt.Dimension(300, 32769));
++ jMenuBar1.setMinimumSize(new java.awt.Dimension(300, 100));
++
+ jMenu1.setMnemonic(KeyEvent.VK_F);
+ jMenu1.setText("File");
+
+diff --git a/src/lazyman/Options.form b/src/lazyman/Options.form
+index 6427f79..d679e02 100644
+--- a/src/lazyman/Options.form
++++ b/src/lazyman/Options.form
+@@ -3,6 +3,9 @@
+ <Form version="1.8" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+ <Properties>
+ <Property name="defaultCloseOperation" type="int" value="2"/>
++ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
++ <Dimension value="[800, 700]"/>
++ </Property>
+ <Property name="resizable" type="boolean" value="false"/>
+ </Properties>
+ <SyntheticProperties>
+@@ -19,7 +22,7 @@
+ <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+- <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,84,0,0,2,98"/>
++ <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,-106,0,0,3,33"/>
+ </AuxValues>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+diff --git a/src/lazyman/Options.java b/src/lazyman/Options.java
+index 8f2f33a..17b0bb4 100644
+--- a/src/lazyman/Options.java
++++ b/src/lazyman/Options.java
+@@ -122,6 +122,7 @@ private void initComponents() {
+ portSpinner = new javax.swing.JSpinner();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
++ setPreferredSize(new java.awt.Dimension(800, 700));
+ setResizable(false);
+
+ jPanel1.setLayout(new java.awt.GridBagLayout());