Merged 1.0.7_branch into master

This commit is contained in:
2019-08-27 18:22:25 -05:00
23 changed files with 518 additions and 196 deletions

View File

@@ -1,5 +1,13 @@
# Changelog # Changelog
## 1.0.7
* \#31: New installation displays 'Mount location is not set' on Windows
* \#33: Add 'Microsoft Visual C++ Redistributable' as dependency installation on Windows
* \#32: Don't display network error message when check for UI updates fails
* \#30: Add uninstall feature with reboot to handle WinFSP upgrades/downgrades
* \#34: Allow cancelling/closing dependency installation if version count > 1
* Handle incorrect download sizes for dependencies and releases
## 1.0.6 ## 1.0.6
* Additional Linux distribution support: * Additional Linux distribution support:
* Antergos * Antergos

3
CONTRIBUTORS.md Normal file
View File

@@ -0,0 +1,3 @@
# Repertory UI
* Oleg Nypadymka <onypadymka@gmail.com>
* Scott E. Graves <scott.e.graves@protonmail.com>

View File

@@ -1,5 +1,5 @@
# Repertory UI # Repertory UI
![alt text](https://i.ibb.co/2dRFvFz/Screen-Shot-2019-07-30-at-9-06-49-PM.png) ![alt text](https://i.ibb.co/h1zS7Fr/Screenshot-from-2019-08-27-17-06-41.png)
## GUI for [Repertory](https://bitbucket.org/blockstorage/repertory) ## GUI for [Repertory](https://bitbucket.org/blockstorage/repertory)
Repertory allows you to mount Sia and/or SiaPrime blockchain storage solutions via FUSE on Linux/OS X or via WinFSP on Windows. Repertory allows you to mount Sia and/or SiaPrime blockchain storage solutions via FUSE on Linux/OS X or via WinFSP on Windows.
@@ -9,10 +9,10 @@ Repertory allows you to mount Sia and/or SiaPrime blockchain storage solutions v
* SiaPrime >=1.4.0 * SiaPrime >=1.4.0
## Downloads ## Downloads
* **Repertory UI v1.0.6 Linux 64-bit** [<Primary\>](https://pixeldrain.com/u/u5WRzlSt) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage) * **Repertory UI v1.0.7 Linux 64-bit** [<Primary\>](https://pixeldrain.com/u/thkU0RHP) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage)
* NOTE: Linux distributions require `fuse` and `libfuse` to be installed. * NOTE: Linux distributions require `fuse` and `libfuse` to be installed.
* **Repertory UI v1.0.6 OS X 64-bit** [<Primary\>](https://pixeldrain.com/u/_Qk344Yy) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_mac.dmg) * **Repertory UI v1.0.7 OS X 64-bit** [<Primary\>](https://pixeldrain.com/u/gBW5TSR0) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_mac.dmg)
* **Repertory UI v1.0.6 Windows 64-bit** [<Primary\>](https://pixeldrain.com/u/DpGbYmao) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_win.exe) * **Repertory UI v1.0.7 Windows 64-bit** [<Primary\>](https://pixeldrain.com/u/AcsttDQ_) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_win.exe)
* NOTE: Windows systems require [Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://aka.ms/vs/16/release/vc_redist.x64.exe) * NOTE: Windows systems require [Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019](https://aka.ms/vs/16/release/vc_redist.x64.exe)
## Supported Platforms ## Supported Platforms

View File

@@ -6,6 +6,9 @@ set /a ENABLE_UPLOAD=%1
set BITBUCKET_AUTH=%2 set BITBUCKET_AUTH=%2
set OPENSSL_BIN="c:\OpenSSL-Win64\bin\openssl.exe" set OPENSSL_BIN="c:\OpenSSL-Win64\bin\openssl.exe"
if NOT EXIST %OPENSSL_BIN% (
set OPENSSL_BIN="c:\Program Files\OpenSSL-Win64\bin\openssl.exe"
)
set PRIVATE_KEY="c:\src\cert\blockstorage_dev_private.pem" set PRIVATE_KEY="c:\src\cert\blockstorage_dev_private.pem"
set PUBLIC_KEY="%ROOT%blockstorage_dev_public.pem" set PUBLIC_KEY="%ROOT%blockstorage_dev_public.pem"
@@ -26,8 +29,8 @@ pushd "%ROOT%"
call npm run dist && ( call npm run dist && (
pushd dist pushd dist
(certutil -hashfile "%OUT_FILE%" SHA256 | %SED_BIN% -e "1d" -e "$d" -e "s/\ //g") > "%OUT_FILE%.sha256" || (call :ERROR "Create sha-256 failed") (certutil -hashfile "%OUT_FILE%" SHA256 | %SED_BIN% -e "1d" -e "$d" -e "s/\ //g") > "%OUT_FILE%.sha256" || (call :ERROR "Create sha-256 failed")
"%OPENSSL_BIN%" dgst -sha256 -sign "%PRIVATE_KEY%" -out "%OUT_FILE%.sig" "%OUT_FILE%" || (call :ERROR "Create signature failed") %OPENSSL_BIN% dgst -sha256 -sign "%PRIVATE_KEY%" -out "%OUT_FILE%.sig" "%OUT_FILE%" || (call :ERROR "Create signature failed")
"%OPENSSL_BIN%" dgst -sha256 -verify "%PUBLIC_KEY%" -signature "%OUT_FILE%.sig" "%OUT_FILE%" || (call :ERROR "Verify signature failed") %OPENSSL_BIN% dgst -sha256 -verify "%PUBLIC_KEY%" -signature "%OUT_FILE%.sig" "%OUT_FILE%" || (call :ERROR "Verify signature failed")
"%B64_BIN%" -e "%OUT_FILE%.sig" "%OUT_FILE%.sig.b64" || (call :ERROR "Create base64 failed") "%B64_BIN%" -e "%OUT_FILE%.sig" "%OUT_FILE%.sig.b64" || (call :ERROR "Create base64 failed")
if "%ENABLE_UPLOAD%"=="1" ( if "%ENABLE_UPLOAD%"=="1" (

View File

@@ -1,6 +1,6 @@
{ {
"name": "repertory-ui", "name": "repertory-ui",
"version": "1.0.6", "version": "1.0.7",
"private": true, "private": true,
"author": "scott.e.graves@protonmail.com", "author": "scott.e.graves@protonmail.com",
"description": "GUI for Repertory - Repertory allows you to mount Sia and/or SiaPrime blockchain storage solutions via FUSE on Linux/OS X or via WinFSP on Windows.", "description": "GUI for Repertory - Repertory allows you to mount Sia and/or SiaPrime blockchain storage solutions via FUSE on Linux/OS X or via WinFSP on Windows.",

View File

@@ -63,31 +63,35 @@ elif [ -f /etc/debian_version ]; then
resetDistVer resetDistVer
fi fi
fi fi
elif [ -f /etc/os-release ]; then fi
. /etc/os-release
if [ "$ID" == "arch" ]; then if [ "$DISTNAME" == "unknown" ]; then
DISTNAME=arch if [ -f /etc/os-release ]; then
elif [ "$ID" == "antergos" ] || [ "$ID" == "manjaro" ]; then . /etc/os-release
DISTNAME=ubuntu if [ "$ID" == "arch" ]; then
DISTVER=18.10 DISTNAME=arch
elif [ "$ID" == "opensuse-leap" ]; then elif [ "$ID" == "antergos" ] || [ "$ID" == "manjaro" ]; then
if [ "$VERSION_ID" == "15.0" ]; then DISTNAME=ubuntu
DISTNAME=opensuse DISTVER=18.10
DISTVER=15 elif [ "$ID" == "opensuse-leap" ]; then
elif [ "$VERSION_ID" == "15.1" ]; then if [ "$VERSION_ID" == "15.0" ]; then
DISTNAME=opensuse DISTNAME=opensuse
DISTVER=15.1 DISTVER=15
elif [ "$VERSION_ID" == "15.1" ]; then
DISTNAME=opensuse
DISTVER=15.1
else
resetDistVer
fi
elif [ "$ID" == "opensuse-tumbleweed" ]; then
DISTNAME=tumbleweed
DISTVER=
else else
resetDistVer resetDistVer
fi fi
elif [ "$ID" == "opensuse-tumbleweed" ]; then
DISTNAME=tumbleweed
DISTVER=
else else
resetDistVer resetDistVer
fi fi
else
resetDistVer
fi fi
echo ${DISTNAME}${DISTVER} echo ${DISTNAME}${DISTVER}

View File

@@ -726,20 +726,45 @@ ipcMain.on(Constants.IPC_Install_Dependency, (event, data) => {
}, error); }, error);
}); });
} else { } else {
helpers const execInstall = () => {
.executeAndWait(data.Source) helpers
.then(() => { .executeAndWait(data.Source)
standardIPCReply(event, Constants.IPC_Install_Dependency_Reply, { .then(() => {
Source: data.Source, standardIPCReply(event, Constants.IPC_Install_Dependency_Reply, {
URL: data.URL, Source: data.Source,
URL: data.URL,
});
})
.catch(error => {
standardIPCReply(event, Constants.IPC_Install_Dependency_Reply, {
Source: data.Source,
URL: data.URL,
}, error);
}); });
}) };
.catch(error => { if (data.IsWinFSP) {
standardIPCReply(event, Constants.IPC_Install_Dependency_Reply, { helpers
Source: data.Source, .performWindowsUninstall(["WinFsp 2019.3 B1", "WinFsp 2019.3 B2"])
URL: data.URL, .then(uninstalled => {
}, error); if (uninstalled) {
}); standardIPCReply(event, Constants.IPC_Install_Dependency_Reply, {
RebootRequired: true,
Source: data.Source,
URL: data.URL,
});
} else {
execInstall();
}
})
.catch(error => {
standardIPCReply(event, Constants.IPC_Install_Dependency_Reply, {
Source: data.Source,
URL: data.URL,
}, error);
});
} else {
execInstall();
}
} }
}); });
@@ -886,6 +911,13 @@ ipcMain.on(Constants.IPC_Mount_Drive, (event, data) => {
} }
}); });
ipcMain.on(Constants.IPC_Reboot_System, () => {
if (os.platform() === 'win32') {
helpers.executeAsync('shutdown.exe', ['/r', '/t', '30']);
}
closeApplication();
});
ipcMain.on(Constants.IPC_Save_State, (event, data) => { ipcMain.on(Constants.IPC_Save_State, (event, data) => {
helpers.mkDirByPathSync(helpers.getDataDirectory()); helpers.mkDirByPathSync(helpers.getDataDirectory());
const configFile = path.join(helpers.getDataDirectory(), 'settings.json'); const configFile = path.join(helpers.getDataDirectory(), 'settings.json');

View File

@@ -1,220 +1,220 @@
{ {
"Locations": { "Locations": {
"arch": { "arch": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"centos7": { "centos7": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"darwin": { "darwin": {
"1.0.6": { "1.0.7": {
"sha256": "9b27c8564dce9202a395d680135d29532ed6b6f0cd1d9875952a78bb05e68195", "sha256": "e4f5cf9765224d4c25472310089e0996f59772573dc59c1baa065810a16c19ba",
"sig": "CV5EhAk41EyqXjYCfocdQ2g7tBgA2WXNQpSonqQhKfbWqvQRrSrX4QTioxmCQ6WP/fuRZ83lJkorlSufnv5WyBuYKi6rLfTAyLMIh1j6Bbb9qqpI57DNNl69GIayrzNYyWNME0Y9hZn04YKllH2o9W25yQRfG1BVrC9Xt8qtfa1vJ3msHgf30mvIcUUYU7HibUZgHQDLRHjkCL82BozK+JO32js43hD4X80eE9A4u/ugWxZfq/ES+ajAugroggsI51nlJi7T9Qe7aoF7RV8Mxx6OR9woakPxgCp6F855zpXgj1AHMq269IRDxN987OSpb1GIBWgRft3O2AJED8DmlTkZYDMNEFC4FTtv7KUFR/VND81gmlBRysBVHXlwQg2apTRBf1ON9FWbztNNSKXt4gzRQsk/WoqTpPFLiBfgDofUdq7EHIJzxOm/MKfZ7TNyvAKTnLlBbyMJYqKV7wnt7GGMkUHLJTNOdq7eCtLipeGgHWScG5pBswW83Ib8+dRlLcfnTkT4l15tfjGwZMErb4I07dwWrkcq2zCVDXxnwITYWzVoHsjfDwu05OpntkD1VFSH/yqGJUC1rQ5z9nSSmojbT4AYzCajy2j6qITzYmLG9KL0cBwAqD1YceyCqsL9U1y9M7s4Aerq8EJ5B7ddENEESYz5M74u5LWR5webwdAFhwoBEQHrGkfkPR5kovNLV+CSA8IAlaDzrKnuieJbaXsA0Y41Tr9VK0MADCTlCCaREj8GLDfAu+pNRC/woenUPUMlXYRBzmbASaoTbYYNChQGT5vxBERRpubPX3ZkYQ4Ck/u12wuZZsOP7zqqQy7w5QbKnDXiRo91MqjHmvTLxzbz5gDgh60RGcN2CKfwJ9yJJfJ8aegVBdfzerm4BRg+JA4sAMpAxJ/4VuKVDYFsSJdCLXC5Q3D2WSsie4Flj4FyqLEN8fidnxTx0xgCQTCMOM0EjxjX4dgn3gLiuEZ6gWh8ua1RpLfI+GHOglAA9q7CJaoHZ3uukHz6MwXzpNcEyh/QXUzAGPbx1reFeCeXl19S5nDQMhdRNdnpJgxxrcSnO8/8D4DhHs7Bjjd27zH3fXMEFyagvLEN006OphrntRTeKnoBn3saWxr0+7qxNo+TdRH7j8OWuNFt5+LaL692uF9Px1bL26xGlF5j2+n6KW4hiMoa5Kp9z4bCtmzrToNuWV0Zqe4pjrHFUdxEEJhOXBEtLXxjuxNSg26ryuHtSuFiNEZkPR9IK7hxblCGPCwq+I8zR2pAWvpAadbeiHDhz1K0xnUhQfWv46tbX+6CJl80G6gq9qUt/PxmAUAcL0kh7+JwjfHTqr2YfNK3608FrxAueaJC6YxrMVLAB2u39PA=", "sig": "A11yvEkveuPo2yyJaDhw9xt/+/xw7/4T3D2Kd/Px1LwCREio25gCr5BWPSIef5yALCS1nDHIzG8CIaDS+OHc4w87YAqIqVOcQaDi2E2t1El7B1noW8yXs+Ew/Ro3AwqN0lnJrtr8fZWVFKqxUTvxLLOJmh5jiud9vdrFzlaI2MNEvC0dY62T0hS1o4uij5/NIXHrZJuz43sa8WftL1RSD/z0lQELF43MaFYCfcDeyCZn2N/htyyvlOEi0bVbjZg1N2cyWAhKbAZu47t5Z5uyoV+VYcIPJT0IsGK2Vr/Js6ziSr3IqdpWl44ztXRLGp4Es17MMnjne30AbhOt+qIOPIcwyRQ7ENEu6MEgT3nA35y5fd1YK7Nz3IkJMxMe1XwyjLE82MgXg9tywb46zKeEJ9zzWk4No71Z6CPwo7kGEl7kzKLw61GYL+1AY+o2dmiDrO+l+DmTzHqGJ3GqBuCnG+5yKM+6klEKU+zmtuaQsPHamY5YLa302G59ecnH90+XIP9veB8jj0ipID8UoGZqJNZgUvkNN3CFoV3TMqA01M5VH7xqWTGPib+aoxCwFsaYiaKTbZBYjw9PQ/ECGXakfX3YpkR1YniNq+Y6UHpfnQNznqZBC+lrud67R2SmRN5JO6wIKiqaKwUT5B5k1ze3Ltdfb1i8bkhk1yNJZBmnr3MA4n5w7wvS/Fw4Uq1zkeUb+No4lP3nH1TcAwU+shesB44MUaLiTlnWUii1AGivEsTtqNp1YoSKVdX1c5GOia0F3iJBqyO1T++bgRpm433AkwaFLqvOr66CirCRtelhZaZtZPStBXATzSBlXEn1J2NbEA6rS185Twco4Cp92+otMFfACm59Ew94E0I8/NSXWEtGkaF7OadMdjS9WPf/5jHWoMnqA8dpYZZXXnZN3xU1eUaVxlu7bdoQxwjllkVMElLp30nOE7Gg2sHuV9xTZ5L2zaueDhZToiItZqce1mlG7zqN0fPlJ8SY0V5nGkm91L90rVi7/9YLKa3jE63Kkv6rMd/o1MAqaFIu1KOgcEbVzexIh1f3ikphIfgxT0PdEuhYa5OGhXwHI/7oaNT8I9XebFRVXCIRHoaYz+zxqCIDQVqDWnW62aTKBwdmGBAp0b9RsCNekCheR2SHfiJi2qAvMWbQR1c3MZpC9A5xAIJZ+FJpTqpagR5U09RIkMjfewpCrfXQYdIWXDJ7CDm2pYGxVn2IIrxvc5kpbsh7VpvNh8bA/TaHyxEKqRWFbua9JZcGP17jliBx3R2ZLt45BYET63Z7z6C8A/Js4bfEspXDd8KfF+rmu83crc1txaJx4WRpbVx8KTLlU/b9o+B5PaoV+BTt/CV3Jgf6uLLXKLB/EXU=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/_Qk344Yy", "https://pixeldrain.com/api/file/gBW5TSR0",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_mac.dmg" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_mac.dmg"
] ]
} }
}, },
"debian9": { "debian9": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"debian10": { "debian10": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"fedora28": { "fedora28": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"fedora29": { "fedora29": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"fedora30": { "fedora30": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"opensuse15": { "opensuse15": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"opensuse15.1": { "opensuse15.1": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"solus": { "solus": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"tumbleweed": { "tumbleweed": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"ubuntu18.04": { "ubuntu18.04": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"ubuntu18.10": { "ubuntu18.10": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"ubuntu19.04": { "ubuntu19.04": {
"1.0.6": { "1.0.7": {
"sha256": "39f0a8e78ee78d6237a3c884666f6d87551fae13bbb43928f8f6f96386d5ed41", "sha256": "dac898185beb12bd6e0eaf0164f2cdcd517223981678ee18e8ec99983921ecbf",
"sig": "AcrywSjZ+OHQTTJL+nbmtIcov2+5VhXUNFC1iNPsdlk19u7MRazE6OVgwa4GsEd8QsAnhrQocQeFr7Vc34lT7Z14Ypaf+rCtzcGxFJDdyq5KcPRS0svlO6KDkZ3u0IwRHIA4MGhET+jXLTKZvjC6VGXz6a7XFI9qHeD8W5QRCsfDIqOsgQFi2+gStoFuwRIi2nrhdEeqtH3jShciV+4bxwYISQ8V6xUuSYiymQTzYEOaPNgzO9nhvt6HWspQAlUs8Pmsw4jo15rob4vr8zNd7ZtfhLS4CtmCkgegVsbvxvZ+wo0MFHRXlBAB+N018APeGcN8flk9PusOOHsBzKdmgC38HDc2RL/+jEPr370GWGbzMlIEZLoVYRF1e0ivxLrlZz4l0cBJrc5JD+W3a8QulRp7y7oo9g13OFFsHw3dqRn/ei2rEwXU/+ux0P1TnZy2bWWGaPtDWghH83Dzk98lXnJZEmr2kw5klfzBHkSZKZEUHKYYXDezUJJIznphQQDbXX17uW51aKX8Su2HnD7IAFicjRoGFlxSXG1Qx9HyUzw4hVgrNocF5Mp1oHuX1xrP9Zlg6PF5vaVtcU+wB6ifdIXAQRhSvgLkp3aTHhA8H7xjFTMNKOGUTx8BJ1ze/yP4/ZAcl3FD708+cNLJCwthyFvTPyGH99j/jsam4d41io8SHXVN4+YfW7OLEI43jjKBVPBn9FMuAq9cgBJ9iTxmfZRT5uzb8lJnFrzXRPqiWU2ZWrviOIEhduzIr2UEWpkC8SndAVuMHePvvc0oRd7jWXHTWM7aV6gWrNyRDMMxcmAm2gZOtrjyI+mUgHNZ/k/MBpKNfWQvKDr26E1wEABwcG0/7ktWdDWSjHT+tXn8Xt7ZLwDE2yHJsrPdgIoAQQ+mrUc38gaazyyleqx/T+dW9P0GZU+oO1h17zj7GpEOllmWv2IVDekq17zTnQR5E5hku1xj8cP1RE6S1qYWT0bdzGBnaBg6hrgQ3zYW1SBuQDYBMTANHq8/JLsLXWU/Pf/ELbECaLeV7IPBLO2XC3PKjWttIF4ZkoX7YM7bo7Qgldocp2E/hjHq/5M1OEDbxOiohUWrYlSeHoIzyii+hIq60vA5ixMm7Ex9ZBtBFP16AGvJSr4sGELxMcMu0uPNIGYC6UQvZfXkQPBWD3C4QChNybQyn3VEiNo/b37HIoJIRYfLHwNpnUpT8viwGFfeQecGpnzooAQ1PevtmJwbPTWgKcUZEAk5TKgqZe3PcHsekuZ6gsT4hrKytxAAQTVqDGq9Up+eTuKRcUAoAt2ZyBTUtFsmatb5ODeA1ZeHak7LmwfarVZwIBC8RRfcRjuajmmfyr/PDWvyRyLCL2CMyrd0wg0=", "sig": "A/jHXV4OFVc4jjczUlB+CzHZbmaCWIygzshHVS3wjpPYBuQjZRbqn0Lj7yIV7PBoaT3xBAykI0Nd6BAxFHdWwwt10d/Snz8jbW94U7LpQMYjhbmy/7FxlbVOcLJSGs1AeoZUIMsYZpyu74IFD0eHn7x37z5Sg62HBE03uggiwVdwKi5g5qfvgzpBkQnzlSAYRQFOb3wELjLu5GRupJQiKdYsUaSkh8xLeloxhsb3UD8VKB427lfyDG7Da+ZMUFROJN9e+1afkGshlJmLu+/6G+Wiyik7gnjVvNEIQyZOoUMfZNZfhO2oL+5YH1a5Sc7vXcPo1CqHxC9ZT9d5L2QLi/9isAk72FemdiRYhPcMHMJ52Zkp4s5WP/2HxCGunAMLx+qC+Zp4NIihkC99fGJcsJfJ4MX7W9ENdxtBA9al4E+Au2CftrxFWXuARhyCy3X6+b1JlQ1jeMWBqixEqthcsAHvWgVTJUOJKCcEJb4BzpQQt2iEIAqNg2nxIKcSeal86GSvz27Z7Cf7CaNXCxrc0CAJ8XeIm8ZzB17Fg/GnKfEDRzaxweL3yyMIrzpIZnGECc8xHBVa1cLpOpuL3s5DxsLRB4XvcNEQ9ywcyuK0ZiEDRHJMW7lWeKEHgvxhMZNTKFnBp72Fgla9Sb7r+ZGXkwJjSn2chwPkKyFr4HlQgMLU386C2fieL8aqaScbb9VpZnPC9gfXDE/ZaFnLug1ORQYwE45DFXoUSnLNVrFUAMne3ISDaXJ946dMQm/6lrAQm1PglS7WKk+1V+GYmrszx9YeHi+Mqz8Dmlww7PCOPbCYsDFHqeruxxcfisq7SoFoHEOzmlq1FNqT3h0hNatpGIKJ2/FM4tQnEuDIGb6gQZMUZrLrLiVYW4ZmeNBe/GoqOt6c8REbtbt4Hpo9UgueKhZtCZOppZZBXu6i59eJXOIgBtNqX+6Kg8R9iM8vhTNbpec5hC0Q9yyELdkoRZkbUDmKWObKZQSr6h82LlsDSggHFYKRtZ4mOqJNxR7U8T8XEr7xqSaC0jmCl9bbxNND1Ir1x6PREfOuSNABxCYHRvZBAqp3PI+T41OsN/2Gcbz5FKc1ShfRcEZKH6npg/mPeYB6KNtuTtgpTJefAAgEra6t3mrV84sjEPig0IfQhfp8VeZItB09OXV02aOOXHKOBU2VilXWF7+Lapjk51I6+BnWRulBkZg6k70YZP/6icOaR+Z60PS8kTqplELfsk4r41nsGlo7iQPHONd5jOa4vhRdmAws7Fan2o5x6wfCJyn1nljNTysLktSm9y8PzJFUVq/kscXac5Q7Rfl4F8JIqbVvmUT740/tJv1zTB4YLfgYJI5cnwVbFuTzTXeDOR/KPCk=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/u5WRzlSt", "https://pixeldrain.com/api/file/thkU0RHP",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_linux_x86_64.AppImage" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_linux_x86_64.AppImage"
] ]
} }
}, },
"win32": { "win32": {
"1.0.6": { "1.0.7": {
"sha256": "600fee604de40fd8634213ccce9513edcd8defe881914e28b1445c2bf48dec10", "sha256": "fbf7611bca712413bd6e6900bcbd49bd3a1545b4d4e70afb2ee9bd59f74b8f97",
"sig": "CBQXvnArlk/CCATwiP8dPeoSGAqc+2iBhUnr8wr8W8z05BpcpQKxl/OLBz9BaT3WHlyCPOLujqWZzVEyHLcxewByLQjgxvxYZyk9Qsz0zieciemc5dvXFDqyUy3hQoiDjD4VlUFoh2eiO1Oq8yzpw68qocVHNdyWHNMbShQBLiTa47uxjvimK2MgTLK+xsHgy8NUQldr9jHbrPYS0ZIi2Zvh17A66k97cVkjfMkEK4+3hOC6A2rZ6MGBnnaHV8gPC4juUIauZEuic62bIwNOc64qQZ7xp8daH4pLRNbdk5Ia84Ew71wX+Fx7C42wa+NPs721CgQHZoLOgbmo0tPghIrZe3K4xhhLVvB9aNUXoLM/KDb3CrTtNgm4+9UEiuqEJR1XE10gseOBdmE4oyqkirru5yQzNbTSrhMg4r+fBKK5b8AVUkBQHw6AMlgcKFc03HwiWnsRsc4lQsoev1X8WOE1X+wkogNrIUCNwJQS/46f/q9vAm+UFVH82tOSfQOQu6a51rV6yp5vRPyZK2Zuo3uzjT50pBoitAC5GzqRqD+nBtmbiu0h9y3BtD/cGouWT20ges6/W3kIEW720sFa5xNYPPrYiZQ5UUBwlDSxitrSQzssE58JC8nk6B/OKljxL4sQRHpYJinTPd7ZhzX295Rfi3bA9qbcdIhs31g2Kkg0CUBNDGE6k8/MefoYW6u/8k3UoJ7wihVURp6Y7zXHx/aeymkbnTYSjTy57axYyMWJTRghOIuParYvE/hXZPCA9cEn3FzFUOmiq8elNwYklpsuEikTZAtyxEU4zU6+pcRvtXdp6p4fKCebAKqfjfGY/17Oc8b9k7ZRfePQtBU9ZckzmVHdnNqQ9fUmqTz4tyM1NjMxopSYWAiVtizbq3A40zmgmIukIxOanfQQz6f0wGjpV+D84evaz1R4Vb/H8tS1CQ+Cz2Sln8v5DDKegLWLqfWOcPK6KAeFLIAuT+IkfFO1nt1PfsCVRxCPdDFytdlGnKC/5mYRqAVwGZTgwzbIG1u/LOWkbSSCa0XkHQP2rJCi1aKn5NaGXO1X4nILEbk9LeLBiLoyGp4jlwy1McnrjHcJRBRcrKTEG9O9zwSsEW29JOtLwgB5HA+EaQlcEdNGPzBLHS67cv7McTfyviClfK0QC34+VMZ0wPGEunAWaK31ztwsYVYftl5E6UIZY6woYd3jSk55ekGH8QmeIqpfmsjHs9TgpZYCfgA8u2blfxhLnNxxYBa9Z14DNST0oaPuF1dAE6p3oYj2Uf7BSUvjz+XOKGY2/PLR4Jd7JxN4d55559Lprrz410BTxAZEpkn+3B3JdFCMtHKucAlNLhsAURc6qtWNHwRVxahX43AoeQQ=", "sig": "B3URP0wqwJcxuisX/qkoLg19Tm1tUu0rQbkBrCtpscaSa5PhUS/p+6ID/eApKMy91SWqCeqw0C071OvTVfTmWRoB/v+9Kkftqs9IISIMDBZgJEAcwf5h0CYqRp/cLyl5XfZLnZoMDR6x7cIVejBaDu1EWtWtACTxfDy3SvtbHkXTfo5ojKk5DScTSNAeDVSL1dY7BBsGuy5WDR0GYpB+519//V4uNCeLSxmHMekEQdyMmjpaO4iKDOkqccwYNSrw3LpL6TQ6YpTX8g2I1tD1ucTKob5Z44LANceL/PMjk7XYRCplufZBIiAnK6mBQFjFFMm4dDTSWqFQKn+pJboTE1E20Gvs/1MFwO1S30mwOIuYebZ4Xfa/D26rFjjxsA8a62Xrxw5YenKczRWs1iNRK+BZUUNw3pbm0KtEwvJZX/XhaVBBuHwT4CDTLIK0tvVsVF6cMNXLdgJEBmItkSw8LdDta81SwHVco0oMxwExqFbwhXqZf7hQBx4NaytBft0QeXNGF0T1B7GTi+D2qr9F5YcIALzYPh5b6RC8yTuTuVgIW+f3LSY8yPTvJaFS3idjTMbzebWAC2aR0BNW1dPyEEoLzsQEfBDbXqSN4m7j+Nt2l5HGfpy370uOaVeKhIFgASJTvhp6FJ0+3FdJfv5E6E0h6EXCXsGCXmh51kcz5kPpmeLXa3OaoF8G5277hICztyUfqskmgz6cu5udRglW57ZwVM8nWRYo9yO5oiLn9ygq4ALOhUfQhbaCpICsDO5nG1R3rAj0t4a2yzQg+CqN9GXzf0+xlbuO0wdg92s2Tgs1O2F5U8yPvgp7fJIil8/GYmmJHj9zqj+kWjFm+ZPdreXns5m+jr58/hepaVyu7KVV/I/o5Q2dse5Xf+jvt7B8u2TC+JWmitzBJkDGRM0Rml+3QIb2F1lKMfPSs34aI7HJHjrfvExAcFiXDVsFXudVZqayjKWreA4gsgZ07GUi1lZ6qX00K7trxWz0BmlZqtXGofrDUQGgsiZ5FoGW5tFSs9t7DqUnpQAZCiVfPki8bphbPMeRsPXBMXsHKTK6TzbU8nukq8urMJWURetWQP5N4/dSI5zrgByBVI7n1TQvdE2bzMQrJP/xTLWGZUCRXfi2J7FmW7fbUtcAStVC2TPWPuzEC9Lvb3ybg0wepgEbMn1kGfb7mohJ5jeLHqhGzY9mx9fO191cduH9zI+yV5wrnYqWd5wN9J4NY66ULxeGxt03rzjMd2hv2tRRVRsT+/4ACUZcIV8JwUZgK51s5DuUWUsl2e5DBPAND/RVpThXJVFyAtBo/vDqoY3lg/pc4RaQZ6gNMoFeHbXwD/yu6TDDTWq5u00ZwNCbR0PaBTwDabs=",
"urls": [ "urls": [
"https://pixeldrain.com/api/file/DpGbYmao", "https://pixeldrain.com/api/file/AcsttDQ_",
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.6_win.exe" "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.7_win.exe"
] ]
} }
} }
}, },
"Versions": { "Versions": {
"arch": [ "arch": [
"1.0.6" "1.0.7"
], ],
"centos7": [ "centos7": [
"1.0.6" "1.0.7"
], ],
"darwin": [ "darwin": [
"1.0.6" "1.0.7"
], ],
"debian9": [ "debian9": [
"1.0.6" "1.0.7"
], ],
"debian10": [ "debian10": [
"1.0.6" "1.0.7"
], ],
"fedora28": [ "fedora28": [
"1.0.6" "1.0.7"
], ],
"fedora29": [ "fedora29": [
"1.0.6" "1.0.7"
], ],
"fedora30": [ "fedora30": [
"1.0.6" "1.0.7"
], ],
"linux": [ "linux": [
"unavailable" "unavailable"
], ],
"opensuse15": [ "opensuse15": [
"1.0.6" "1.0.7"
], ],
"opensuse15.1": [ "opensuse15.1": [
"1.0.6" "1.0.7"
], ],
"solus": [ "solus": [
"1.0.6" "1.0.7"
], ],
"tumbleweed": [ "tumbleweed": [
"1.0.6" "1.0.7"
], ],
"ubuntu18.04": [ "ubuntu18.04": [
"1.0.6" "1.0.7"
], ],
"ubuntu18.10": [ "ubuntu18.10": [
"1.0.6" "1.0.7"
], ],
"ubuntu19.04": [ "ubuntu19.04": [
"1.0.6" "1.0.7"
], ],
"unknown": [ "unknown": [
"unavailable" "unavailable"
], ],
"win32": [ "win32": [
"1.0.6" "1.0.7"
] ]
} }
} }

View File

@@ -2,7 +2,6 @@ import React from 'react';
import './App.css'; import './App.css';
import Box from './components/UI/Box/Box'; import Box from './components/UI/Box/Box';
import Configuration from './containers/Configuration/Configuration'; import Configuration from './containers/Configuration/Configuration';
import {checkVersionInstalled} from './redux/actions/install_actions';
import {connect} from 'react-redux'; import {connect} from 'react-redux';
import DependencyList from './components/DependencyList/DependencyList'; import DependencyList from './components/DependencyList/DependencyList';
import DownloadProgress from './components/DownloadProgress/DownloadProgress'; import DownloadProgress from './components/DownloadProgress/DownloadProgress';
@@ -13,6 +12,7 @@ import Loading from './components/UI/Loading/Loading';
import Modal from './components/UI/Modal/Modal'; import Modal from './components/UI/Modal/Modal';
import MountItems from './containers/MountItems/MountItems'; import MountItems from './containers/MountItems/MountItems';
import {notifyError} from './redux/actions/error_actions'; import {notifyError} from './redux/actions/error_actions';
import Reboot from './components/Reboot/Reboot';
import ReleaseVersionDisplay from './components/ReleaseVersionDisplay/ReleaseVersionDisplay'; import ReleaseVersionDisplay from './components/ReleaseVersionDisplay/ReleaseVersionDisplay';
import {saveState} from './redux/actions/common_actions'; import {saveState} from './redux/actions/common_actions';
import Text from './components/UI/Text/Text'; import Text from './components/UI/Text/Text';
@@ -44,7 +44,6 @@ class App extends IPCContainer {
(prevProps.ReleaseVersion !== this.props.ReleaseVersion) || (prevProps.ReleaseVersion !== this.props.ReleaseVersion) ||
(prevProps.VersionLookup !== this.props.VersionLookup)) { (prevProps.VersionLookup !== this.props.VersionLookup)) {
this.props.saveState(); this.props.saveState();
this.props.checkVersionInstalled();
} else if (Object.keys(this.props.ProviderState).filter(k=> { } else if (Object.keys(this.props.ProviderState).filter(k=> {
return this.props.ProviderState[k] !== prevProps.ProviderState[k]; return this.props.ProviderState[k] !== prevProps.ProviderState[k];
}).length > 0) { }).length > 0) {
@@ -77,8 +76,11 @@ class App extends IPCContainer {
(selectedVersion !== 'unavailable') && (selectedVersion !== 'unavailable') &&
(selectedVersion !== this.props.InstalledVersion); (selectedVersion !== this.props.InstalledVersion);
const missingDependencies = (this.props.MissingDependencies.length > 0); const missingDependencies = (this.props.MissingDependencies.length > 0) &&
const allowMount = this.props.InstalledVersion !== 'none' && this.props.AllowMount;
const allowMount = this.props.AllowMount &&
this.props.InstalledVersion !== 'none' &&
!missingDependencies && !missingDependencies &&
!this.props.InstallActive; !this.props.InstallActive;
@@ -93,6 +95,7 @@ class App extends IPCContainer {
const showConfig = !missingDependencies && const showConfig = !missingDependencies &&
this.props.DisplayConfiguration && this.props.DisplayConfiguration &&
!this.props.RebootRequired &&
allowConfig; allowConfig;
const showUpgrade = this.props.UpgradeAvailable && const showUpgrade = this.props.UpgradeAvailable &&
@@ -100,12 +103,17 @@ class App extends IPCContainer {
!showConfig && !showConfig &&
!this.props.DownloadActive && !this.props.DownloadActive &&
!this.props.UpgradeDismissed && !this.props.UpgradeDismissed &&
!this.props.InstallActive; !this.props.InstallActive &&
!this.props.RebootRequired;
const showDependencies = !showUpgrade && const showDependencies = !showUpgrade &&
missingDependencies && missingDependencies &&
!this.props.DownloadActive; !this.props.DownloadActive &&
!this.props.RebootRequired &&
!this.props.DismissDependencies &&
this.props.AllowMount;
const rebootDisplay = this.createModalConditionally(this.props.RebootRequired, <Reboot />);
const configDisplay = this.createModalConditionally(showConfig, <Configuration version={selectedVersion} />); const configDisplay = this.createModalConditionally(showConfig, <Configuration version={selectedVersion} />);
const dependencyDisplay = this.createModalConditionally(showDependencies, <DependencyList/>); const dependencyDisplay = this.createModalConditionally(showDependencies, <DependencyList/>);
const downloadDisplay = this.createModalConditionally(this.props.DownloadActive, <DownloadProgress/>); const downloadDisplay = this.createModalConditionally(this.props.DownloadActive, <DownloadProgress/>);
@@ -143,6 +151,7 @@ class App extends IPCContainer {
{upgradeDisplay} {upgradeDisplay}
{downloadDisplay} {downloadDisplay}
{configDisplay} {configDisplay}
{rebootDisplay}
<div className={'AppContainer'}> <div className={'AppContainer'}>
<div className={'AppHeader'}> <div className={'AppHeader'}>
<Box> <Box>
@@ -178,8 +187,10 @@ class App extends IPCContainer {
const mapStateToProps = state => { const mapStateToProps = state => {
return { return {
AllowDownload: state.download.AllowDownload, AllowDownload: state.download.AllowDownload,
AllowMount: state.common.AllowMount,
AppPlatform: state.common.AppPlatform, AppPlatform: state.common.AppPlatform,
AppReady: state.common.AppReady, AppReady: state.common.AppReady,
DismissDependencies: state.install.DismissDependencies,
DisplayConfiguration: state.mounts.DisplayConfiguration, DisplayConfiguration: state.mounts.DisplayConfiguration,
DisplayError: state.error.DisplayError, DisplayError: state.error.DisplayError,
DownloadActive: state.download.DownloadActive, DownloadActive: state.download.DownloadActive,
@@ -189,6 +200,7 @@ const mapStateToProps = state => {
MissingDependencies: state.install.MissingDependencies, MissingDependencies: state.install.MissingDependencies,
MountsBusy: state.mounts.MountsBusy, MountsBusy: state.mounts.MountsBusy,
ProviderState: state.mounts.ProviderState, ProviderState: state.mounts.ProviderState,
RebootRequired: state.common.RebootRequired,
Release: state.relver.Release, Release: state.relver.Release,
ReleaseVersion: state.relver.Version, ReleaseVersion: state.relver.Version,
UpgradeAvailable: state.relver.UpgradeAvailable, UpgradeAvailable: state.relver.UpgradeAvailable,
@@ -200,7 +212,6 @@ const mapStateToProps = state => {
const mapDispatchToProps = dispatch => { const mapDispatchToProps = dispatch => {
return { return {
checkVersionInstalled: () => dispatch(checkVersionInstalled()),
loadReleases: ()=> dispatch(loadReleases()), loadReleases: ()=> dispatch(loadReleases()),
notifyError: (msg, critical, callback) => dispatch(notifyError(msg, critical, callback)), notifyError: (msg, critical, callback) => dispatch(notifyError(msg, critical, callback)),
saveState: () => dispatch(saveState()), saveState: () => dispatch(saveState()),

View File

@@ -6,16 +6,19 @@ import Dependency from './Dependency/Dependency';
import Box from '../UI/Box/Box'; import Box from '../UI/Box/Box';
import {downloadItem} from '../../redux/actions/download_actions'; import {downloadItem} from '../../redux/actions/download_actions';
import {extractFileNameFromURL} from '../../utils'; import {extractFileNameFromURL} from '../../utils';
import {setDismissDependencies} from '../../redux/actions/install_actions';
const mapStateToProps = state => { const mapStateToProps = state => {
return { return {
AllowDismissDependencies: state.relver.AllowDismissDependencies,
MissingDependencies: state.install.MissingDependencies, MissingDependencies: state.install.MissingDependencies,
}; };
}; };
const mapDispatchToProps = (dispatch) => { const mapDispatchToProps = (dispatch) => {
return { return {
downloadItem: (name, type, url) => dispatch(downloadItem(name, type, url)) downloadItem: (name, type, url, isWinFSP) => dispatch(downloadItem(name, type, url, isWinFSP)),
setDismissDependencies: dismiss => dispatch(setDismissDependencies(dismiss)),
}; };
}; };
@@ -24,12 +27,23 @@ export default connect(mapStateToProps, mapDispatchToProps)(props => {
return ( return (
<Dependency key={i} <Dependency key={i}
name={k.display} name={k.display}
onDownload={()=>props.downloadItem(extractFileNameFromURL(k.download), Constants.INSTALL_TYPES.Dependency, k.download)}/> onDownload={()=>props.downloadItem(extractFileNameFromURL(k.download), Constants.INSTALL_TYPES.Dependency, k.download, k.is_winfsp)}/>
); );
}); });
let dismissDisplay;
if (props.AllowDismissDependencies) {
dismissDisplay = (
<div style={{float: 'right', margin: 0, paddingRight: '4px', boxSizing: 'border-box', display: 'block'}}>
<b style={{cursor: 'pointer'}}
onClick={()=>props.setDismissDependencies(true)}>X
</b>
</div>);
}
return ( return (
<Box dxStyle={{width: '300px', height: 'auto', padding: '5px'}}> <Box dxStyle={{width: '300px', height: 'auto', padding: '5px'}}>
{dismissDisplay}
<div style={{width: '100%', height: 'auto', paddingBottom: '5px', boxSizing: 'border-box'}}> <div style={{width: '100%', height: 'auto', paddingBottom: '5px', boxSizing: 'border-box'}}>
<h1 style={{width: '100%', textAlign: 'center', color: 'var(--text_color_error)'}}>Missing Dependencies</h1> <h1 style={{width: '100%', textAlign: 'center', color: 'var(--text_color_error)'}}>Missing Dependencies</h1>
</div> </div>

View File

@@ -0,0 +1,11 @@
.RebootHeading {
color: var(--text_color_error);
text-align: center;
margin-bottom: 4px;
}
.RebootContent {
max-height: 60vh;
overflow-y: auto;
margin-bottom: 8px;
}

View File

@@ -0,0 +1,24 @@
import React from 'react';
import './Reboot.css';
import {connect} from 'react-redux';
import Box from '../UI/Box/Box';
import Button from '../UI/Button/Button';
import {rebootSystem} from '../../redux/actions/common_actions';
const mapDispatchToProps = dispatch => {
return {
rebootSystem: () => dispatch(rebootSystem()),
};
};
export default connect(null, mapDispatchToProps)(props => {
return (
<Box dxDark dxStyle={{padding: '8px'}}>
<h1 className={'RebootHeading'}>Reboot System</h1>
<div className={'RebootContent'}>
<p>Repertory requires a system reboot to continue.</p>
</div>
<Button clicked={()=>props.rebootSystem()}>Reboot Now</Button>
</Box>
);
});

View File

@@ -7,12 +7,13 @@ import Grid from '../UI/Grid/Grid';
import Text from '../UI/Text/Text'; import Text from '../UI/Text/Text';
import Button from '../UI/Button/Button'; import Button from '../UI/Button/Button';
import UpgradeIcon from '../UpgradeIcon/UpgradeIcon'; import UpgradeIcon from '../UpgradeIcon/UpgradeIcon';
import {setActiveRelease} from "../../redux/actions/release_version_actions"; import {setActiveRelease} from '../../redux/actions/release_version_actions';
import {downloadItem} from '../../redux/actions/download_actions'; import {downloadItem} from '../../redux/actions/download_actions';
const mapStateToProps = state => { const mapStateToProps = state => {
return { return {
AppPlatform: state.common.AppPlatform, AppPlatform: state.common.AppPlatform,
DismissDependencies: state.install.DismissDependencies,
DownloadActive: state.download.DownloadActive, DownloadActive: state.download.DownloadActive,
InstallActive: state.install.InstallActive, InstallActive: state.install.InstallActive,
InstallType: state.install.InstallType, InstallType: state.install.InstallType,
@@ -74,7 +75,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(props => {
text={text} text={text}
textAlign={'left'}/> textAlign={'left'}/>
)); ));
} else if (props.downloadDisabled) { } else if (props.downloadDisabled || props.DismissDependencies) {
optionsDisplay.push(( optionsDisplay.push((
<Text col={dimensions => (dimensions.columns / 3) * 2} <Text col={dimensions => (dimensions.columns / 3) * 2}
colSpan={'remain'} colSpan={'remain'}
@@ -100,7 +101,6 @@ export default connect(mapStateToProps, mapDispatchToProps)(props => {
col={dimensions => (dimensions.columns / 3) * 2} col={dimensions => (dimensions.columns / 3) * 2}
colSpan={20} colSpan={20}
key={key++} key={key++}
disabled={props.downloadDisabled}
row={5} row={5}
rowSpan={7}>Install</Button> rowSpan={7}>Install</Button>
)); ));

View File

@@ -111,6 +111,8 @@ exports.IPC_Install_Upgrade_Reply = 'install_upgrade_reply';
exports.IPC_Mount_Drive = 'mount_drive'; exports.IPC_Mount_Drive = 'mount_drive';
exports.IPC_Mount_Drive_Reply = 'mount_drive_reply'; exports.IPC_Mount_Drive_Reply = 'mount_drive_reply';
exports.IPC_Reboot_System = 'reboot_system';
exports.IPC_Save_State = 'save_state'; exports.IPC_Save_State = 'save_state';
exports.IPC_Show_Window = 'show_window'; exports.IPC_Show_Window = 'show_window';

View File

@@ -223,7 +223,10 @@ class MountItems extends IPCContainer {
} }
if (location !== providerState.MountLocation) { if (location !== providerState.MountLocation) {
this.handleMountLocationChanged(provider, location); const value = (this.props.Platform === 'win32') ?
data.DriveLetters[provider].indexOf(location) :
location;
this.handleMountLocationChanged(provider, value);
} }
if (!this.props.AutoMountProcessed && if (!this.props.AutoMountProcessed &&

View File

@@ -12,6 +12,55 @@ const _getDataDirectory = () => {
return _resolvePath(Constants.DATA_LOCATIONS[os.platform()]); return _resolvePath(Constants.DATA_LOCATIONS[os.platform()]);
}; };
const _executeProcess = (command, args=[]) => {
return new Promise((resolve, reject) => {
const processOptions = {
detached: true,
shell: false,
};
const process = new spawn(command, args, processOptions);
const pid = process.pid;
process.on('error', (err) => {
reject(err, pid);
});
process.on('exit', (code) => {
resolve(code);
});
process.unref();
});
};
const _execProcessGetOutput = (cmd, args) => {
return new Promise((resolve, reject) => {
const proc = spawn(cmd, args, {
env: process.env,
stdio: ['ignore', 'pipe', 'pipe']
});
let output;
proc.stdout.on('data', data => {
output += data.toString();
});
proc.on('error', (err) => {
reject(err);
});
proc.on('exit', () => {
const lines = output
.replace(/\r\n/g, '\n')
.split('\n');
resolve(lines);
});
proc.unref();
});
};
const _resolvePath = str => { const _resolvePath = str => {
if (os.platform() === 'win32') { if (os.platform() === 'win32') {
return str.replace(/%([^%]+)%/g, (_, n) => { return str.replace(/%([^%]+)%/g, (_, n) => {
@@ -125,7 +174,7 @@ module.exports.downloadFile = (url, destination, progressCallback, completeCallb
fs.unlinkSync(destination); fs.unlinkSync(destination);
} }
} catch (e) { } catch (e) {
completeCallback(false, e); completeCallback(e);
return; return;
} }
@@ -133,32 +182,47 @@ module.exports.downloadFile = (url, destination, progressCallback, completeCallb
.get(url, { .get(url, {
responseType: 'stream', responseType: 'stream',
}) })
.then((response) => { .then(response => {
const stream = fs.createWriteStream(destination); try {
const total = parseInt(response.headers['content-length'], 10); const total = parseInt(response.headers['content-length'], 10);
let downloaded = 0; if (total === 0) {
response.data.on('data', (chunk) => { completeCallback(Error('No data available for download'));
stream.write(Buffer.from(chunk)); } else {
downloaded += chunk.length; const stream = fs.createWriteStream(destination);
if (progressCallback) {
progressCallback((downloaded / total * 100.0).toFixed(2)); let downloaded = 0;
response.data.on('data', (chunk) => {
stream.write(Buffer.from(chunk));
downloaded += chunk.length;
if (progressCallback) {
progressCallback((downloaded / total * 100.0).toFixed(2));
}
});
response.data.on('end', () => {
stream.end(() => {
if (downloaded === 0) {
completeCallback(Error('Received 0 bytes'));
} else if (downloaded !== total) {
completeCallback(Error('Received incorrect number of bytes'));
} else {
completeCallback();
}
});
});
response.data.on('error', error => {
stream.end(() => {
completeCallback(error);
});
});
} }
}); } catch (error) {
completeCallback(error);
response.data.on('end', () => { }
stream.end(() => {
completeCallback();
});
});
response.data.on('error', (e) => {
stream.end(() => {
completeCallback(e);
});
});
}) })
.catch((e)=> { .catch(error => {
completeCallback(e); completeCallback(error);
}); });
}; };
@@ -484,6 +548,65 @@ module.exports.mkDirByPathSync = (targetDir, { isRelativeToScript = false } = {}
}, initDir); }, initDir);
}; };
module.exports.performWindowsUninstall = names => {
return new Promise((resolve, reject) => {
if (os.platform() !== 'win32') {
reject('Windows OS is not being used');
} else {
const cmd = path.join(process.env.windir, 'system32', 'reg.exe');
const args = ["QUERY", "HKLM\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall"];
_execProcessGetOutput(cmd, args)
.then(lines => {
const parseLine = index => {
if (index < lines.length) {
const line = lines[index];
if (line.startsWith('HKEY_LOCAL_MACHINE\\')) {
let args2 = JSON.parse(JSON.stringify(args));
args2[1] = 'HKLM\\' + line.substr(19);
args2.push('/v');
args2.push('DisplayName');
args2.push('/t');
args2.push('REG_SZ');
_execProcessGetOutput(cmd, args2)
.then(lines => {
const value = lines[2].trim().substr(args2[3].length).trim().substr(6).trim();
if (names.includes(value)) {
const items = line.split('\\');
const productCode = items[items.length - 1];
_executeProcess('msiexec.exe', ['/x', productCode, '/norestart'])
.then(code => {
if ((code === 0) || (code === 3010) || (code === 1641)) {
resolve(true);
} else {
reject('[' + value + '] uninstall failed: ' + code);
}
})
.catch(err => {
reject(err);
});
} else {
parseLine(++index);
}
})
.catch(err=> {
parseLine(++index);
});
} else {
parseLine(++index);
}
} else {
resolve(false);
}
};
parseLine(0);
})
.catch( err => {
reject(err);
});
}
});
};
module.exports.removeDirectoryRecursively = (p) => { module.exports.removeDirectoryRecursively = (p) => {
if (fs.existsSync(p)) { if (fs.existsSync(p)) {
fs fs

View File

@@ -4,7 +4,25 @@ import {getIPCRenderer} from '../../utils';
const ipcRenderer = getIPCRenderer(); const ipcRenderer = getIPCRenderer();
export const notifyRebootRequired = createAction('common/notifyRebootRequired');
export const setAllowMount = createAction('common/setAllowMount');
export const rebootSystem = () => {
return dispatch => {
dispatch(setApplicationReady(false));
if (ipcRenderer) {
ipcRenderer.send(Constants.IPC_Reboot_System);
}
}
};
export const setApplicationReady = createAction('common/setApplicationReady'); export const setApplicationReady = createAction('common/setApplicationReady');
export const setRebootRequired = () => {
return dispatch => {
dispatch(showWindow());
dispatch(notifyRebootRequired(true));
};
};
export const showWindow = () => { export const showWindow = () => {
return dispatch => { return dispatch => {

View File

@@ -25,7 +25,7 @@ export const setDownloadBegin = (name, type, url) => {
export const setDownloadEnd = createAction('download/setDownloadEnd'); export const setDownloadEnd = createAction('download/setDownloadEnd');
export const setDownloadProgress = createAction('download/setDownloadProgress'); export const setDownloadProgress = createAction('download/setDownloadProgress');
export const downloadItem = (name, type, urls) => { export const downloadItem = (name, type, urls, isWinFSP) => {
return (dispatch, getState) => { return (dispatch, getState) => {
if (!Array.isArray(urls)) { if (!Array.isArray(urls)) {
urls = [urls]; urls = [urls];
@@ -35,7 +35,7 @@ export const downloadItem = (name, type, urls) => {
if (result.Success) { if (result.Success) {
switch (type) { switch (type) {
case Constants.INSTALL_TYPES.Dependency: case Constants.INSTALL_TYPES.Dependency:
dispatch(installDependency(result.Destination, result.URL)); dispatch(installDependency(result.Destination, result.URL, isWinFSP));
break; break;
case Constants.INSTALL_TYPES.Release: case Constants.INSTALL_TYPES.Release:
dispatch(installRelease(result.Destination)); dispatch(installRelease(result.Destination));

View File

@@ -12,7 +12,9 @@ import {
setReleaseUpgradeAvailable setReleaseUpgradeAvailable
} from './release_version_actions'; } from './release_version_actions';
import { import {
setAllowMount,
setApplicationReady, setApplicationReady,
setRebootRequired,
showWindow, showWindow,
shutdownApplication shutdownApplication
} from './common_actions'; } from './common_actions';
@@ -42,6 +44,7 @@ export const checkInstalled = (dependencies, version) => {
dispatch(setReleaseUpgradeAvailable(upgradeAvailable)); dispatch(setReleaseUpgradeAvailable(upgradeAvailable));
dispatch(setMissingDependencies(result.Dependencies)); dispatch(setMissingDependencies(result.Dependencies));
dispatch(setAllowDownload(true)); dispatch(setAllowDownload(true));
dispatch(setAllowMount(true));
if (result.Dependencies && (result.Dependencies.length > 0)) { if (result.Dependencies && (result.Dependencies.length > 0)) {
dispatch(showWindow()); dispatch(showWindow());
} }
@@ -81,7 +84,7 @@ export const checkVersionInstalled = () => {
}; };
}; };
export const installDependency = (source, url) => { export const installDependency = (source, url, isWinFSP) => {
return (dispatch, getState) => { return (dispatch, getState) => {
if (ipcRenderer && !getState().install.InstallActive) { if (ipcRenderer && !getState().install.InstallActive) {
dispatch(setInstallActive(Constants.INSTALL_TYPES.Dependency)); dispatch(setInstallActive(Constants.INSTALL_TYPES.Dependency));
@@ -89,11 +92,15 @@ export const installDependency = (source, url) => {
const installDependencyComplete = (event, arg) => { const installDependencyComplete = (event, arg) => {
const result = arg.data; const result = arg.data;
const handleCompleted = ()=> { const handleCompleted = ()=> {
ipcRenderer.send(Constants.IPC_Delete_File, { if (result.RebootRequired) {
FilePath: source, dispatch(setRebootRequired());
}); } else {
dispatch(setInstallComplete(result)); ipcRenderer.send(Constants.IPC_Delete_File, {
dispatch(checkVersionInstalled()); FilePath: source,
});
dispatch(setInstallComplete(result));
dispatch(checkVersionInstalled());
}
}; };
if (result.Success && source.toLowerCase().endsWith('.dmg')) { if (result.Success && source.toLowerCase().endsWith('.dmg')) {
@@ -121,6 +128,7 @@ export const installDependency = (source, url) => {
ipcRenderer.send(Constants.IPC_Install_Dependency, { ipcRenderer.send(Constants.IPC_Install_Dependency, {
Source: source, Source: source,
URL: url, URL: url,
IsWinFSP: isWinFSP,
}); });
} }
}; };
@@ -183,6 +191,7 @@ export const installUpgrade = (source, sha256, signature, skipVerification) => {
}; };
}; };
export const setDismissDependencies = createAction('install/setDismissDependencies');
export const setInstallActive = createAction('install/setInstallActive'); export const setInstallActive = createAction('install/setInstallActive');
export const setInstallComplete = createAction('install/setInstallComplete'); export const setInstallComplete = createAction('install/setInstallComplete');
export const setMissingDependencies = createAction('install/setMissingDependencies'); export const setMissingDependencies = createAction('install/setMissingDependencies');

View File

@@ -4,9 +4,14 @@ import {createAction} from 'redux-starter-kit';
import {notifyError} from './error_actions'; import {notifyError} from './error_actions';
import { import {
saveState, saveState,
setAllowMount,
setApplicationReady, setApplicationReady,
showWindow showWindow
} from './common_actions'; } from './common_actions';
import {
checkVersionInstalled,
setDismissDependencies
} from './install_actions';
import {unmountAll} from './mount_actions'; import {unmountAll} from './mount_actions';
export const CLEAR_UI_UPGRADE = 'relver/clearUIUpgrade'; export const CLEAR_UI_UPGRADE = 'relver/clearUIUpgrade';
@@ -38,9 +43,8 @@ export const detectUIUpgrade = () => {
} else { } else {
dispatch(clearUIUpgrade()); dispatch(clearUIUpgrade());
} }
}).catch(error => { }).catch(() => {
dispatch(clearUIUpgrade()); dispatch(clearUIUpgrade());
dispatch(notifyError(error));
}); });
}; };
}; };
@@ -61,16 +65,20 @@ export const loadReleases = () => {
dispatch(setReleaseData(locationsLookup, versionLookup)); dispatch(setReleaseData(locationsLookup, versionLookup));
const dispatchActions = () => { const dispatchActions = (processAllowDismiss = true) => {
dispatch(setReleaseUpgradeAvailable((version !== latestVersion))); dispatch(setReleaseUpgradeAvailable((version !== latestVersion)));
dispatch(setApplicationReady(true)); dispatch(setApplicationReady(true));
dispatch(detectUIUpgrade()); dispatch(detectUIUpgrade());
if (processAllowDismiss) {
dispatch(setAllowDismissDependencies(versionLookup[Constants.RELEASE_TYPES[release]].length > 1));
}
dispatch(checkVersionInstalled());
}; };
if ((version !== state.Version) || (release !== state.Release)) { if ((version !== state.Version) || (release !== state.Release)) {
dispatch(unmountAll(() => { dispatch(unmountAll(() => {
dispatch(setActiveRelease(release, version)); dispatch(setActiveRelease(release, version));
dispatchActions(); dispatchActions(false);
dispatch(showWindow()); dispatch(showWindow());
dispatch(saveState()); dispatch(saveState());
})); }));
@@ -113,17 +121,33 @@ export const loadReleases = () => {
}; };
}; };
export const SET_ACTIVE_RELEASE = 'relver/setActiveRelease'; export const NOTIFY_ACTIVE_RELEASE = 'relver/notifyActiveRelease';
export const setActiveRelease = (release, version) => { export const notifyActiveRelease = (release, version) => {
return { return {
type: SET_ACTIVE_RELEASE, type: NOTIFY_ACTIVE_RELEASE,
payload: { payload: {
release, release: release,
version version: version
},
};
};
export const setActiveRelease = (release, version) => {
return (dispatch, getState) => {
dispatch(setAllowMount(false));
const relVer = getState().relver;
const common = getState().common;
const versions = relVer.VersionLookup[Constants.RELEASE_TYPES[release]];
dispatch(setAllowDismissDependencies(versions.length > 1));
dispatch(setDismissDependencies(false));
dispatch(notifyActiveRelease(release, version));
if (common.AppReady) {
dispatch(checkVersionInstalled());
} }
}; };
}; };
export const setAllowDismissDependencies = createAction('relver/setAllowDismissDependencies');
export const setDismissUIUpgrade = createAction('relver/setDismissUIUpgrade'); export const setDismissUIUpgrade = createAction('relver/setDismissUIUpgrade');
export const setInstalledVersion = createAction('relver/setInstalledVersion'); export const setInstalledVersion = createAction('relver/setInstalledVersion');

View File

@@ -1,18 +1,36 @@
import {createReducer} from 'redux-starter-kit'; import {createReducer} from 'redux-starter-kit';
import {setApplicationReady} from '../actions/common_actions'; import {
notifyRebootRequired,
setAllowMount,
setApplicationReady,
} from '../actions/common_actions';
export const createCommonReducer = (platform, appPlatform, version) => { export const createCommonReducer = (platform, appPlatform, version) => {
return createReducer({ return createReducer({
AllowMount: false,
AppPlatform: appPlatform, AppPlatform: appPlatform,
AppReady: false, AppReady: false,
Platform: platform, Platform: platform,
RebootRequired: false,
Version: version, Version: version,
}, { }, {
[setAllowMount]: (state, action) => {
return {
...state,
AllowMount: action.payload,
}
},
[setApplicationReady]: (state, action) => { [setApplicationReady]: (state, action) => {
return { return {
...state, ...state,
AppReady: action.payload, AppReady: action.payload,
}; };
} },
[notifyRebootRequired]: (state, action) => {
return {
...state,
RebootRequired: action.payload,
};
},
}); });
}; };

View File

@@ -1,16 +1,24 @@
import {createReducer} from 'redux-starter-kit'; import {createReducer} from 'redux-starter-kit';
import { import {
setDismissDependencies,
setInstallActive, setInstallActive,
setInstallComplete, setInstallComplete,
setMissingDependencies setMissingDependencies
} from '../actions/install_actions'; } from '../actions/install_actions';
export const installReducer = createReducer({ export const installReducer = createReducer({
DismissDependencies: false,
InstallActive: false, InstallActive: false,
InstallResult: null, InstallResult: null,
InstallType: null, InstallType: null,
MissingDependencies: [], MissingDependencies: [],
}, { }, {
[setDismissDependencies]: (state, action) => {
return {
...state,
DismissDependencies: action.payload,
}
},
[setInstallActive]: (state, action) => { [setInstallActive]: (state, action) => {
return { return {
...state, ...state,

View File

@@ -14,6 +14,7 @@ const versionLookup = Constants.RELEASE_TYPES.map(k=> {
}); });
export const releaseVersionReducer = createReducer({ export const releaseVersionReducer = createReducer({
AllowDismissDependencies: false,
InstalledVersion: 'none', InstalledVersion: 'none',
LocationsLookup: {}, LocationsLookup: {},
Release: 0, Release: 0,
@@ -35,13 +36,19 @@ export const releaseVersionReducer = createReducer({
UpgradeVersion: null, UpgradeVersion: null,
}; };
}, },
[Actions.SET_ACTIVE_RELEASE]: (state, action) => { [Actions.NOTIFY_ACTIVE_RELEASE]: (state, action) => {
return { return {
...state, ...state,
Release: action.payload.release, Release: action.payload.release,
Version: action.payload.version Version: action.payload.version
}; };
}, },
[Actions.setAllowDismissDependencies]: (state, action) => {
return {
...state,
AllowDismissDependencies: action.payload,
};
},
[Actions.setDismissUIUpgrade]: (state, action) => { [Actions.setDismissUIUpgrade]: (state, action) => {
return { return {
...state, ...state,