From 9b75699fba27e5c976899a542b071a6ad6fe1390 Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Tue, 8 Dec 2020 18:53:24 +0100 Subject: [PATCH 01/18] Move DANE Apps shared code to Arwes module (from forked docs for now) --- apps/dane/app.js | 128 ++++++------------------------------------- apps/dane_tcr/app.js | 115 +++++--------------------------------- 2 files changed, 30 insertions(+), 213 deletions(-) diff --git a/apps/dane/app.js b/apps/dane/app.js index 103bb21a5..7c64e16c3 100644 --- a/apps/dane/app.js +++ b/apps/dane/app.js @@ -1,3 +1,7 @@ +var d = require("https://raw.githubusercontent.com/OmegaVoid/EspruinoDocs/master/modules/dane_arwes.js"); +var Arwes = d.default(); + + const font = "6x8"; const timeFontSize = 4; const unixTimeFontSize = 2; @@ -7,112 +11,14 @@ const yOffset = 23; const width = g.getWidth(); const height = g.getHeight(); const xyCenter = width / 2 + 4; -const cornerSize = 14; -const cornerOffset = 3; -const borderWidth = 1; const yposTime = 27 + yOffset; const yposDate = 65 + yOffset + 12; const yposCounter = 58 + yOffset + 35 + 40; -const mainColor = "#26dafd"; -const mainColorDark = "#029dbb"; -// const mainColorLight = "#8bebfe"; - -const secondaryColor = "#df9527"; -const secondaryColorDark = "#8b5c15"; -// const secondaryColorLight = "#ecc180"; - -const success = "#00ff00"; -// const successDark = "#000900"; -// const successLight = "#060f06"; - -const alert = "#ff0000"; -// const alertDark = "#090000"; -// const alertLight = "#0f0606"; - let count = 100; -let oldCount = count; -function drawTopLeftCorner(x, y) { - g.setColor(mainColor); - const x1 = x - cornerOffset; - const y1 = y - cornerOffset; - g.fillRect(x1, y1, x1 + cornerSize, y1 + cornerSize); - g.setColor("#000000"); - g.fillRect(x, y, x + cornerSize - cornerOffset, y + cornerSize - cornerOffset); -} - -function drawTopRightCorner(x, y) { - g.setColor(mainColor); - const x1 = x + cornerOffset; - const y1 = y - cornerOffset; - g.fillRect(x1, y1, x1 - cornerSize, y1 + cornerSize); - g.setColor("#000000"); - g.fillRect(x, y, x - cornerSize - cornerOffset, y + cornerSize - cornerOffset); -} - -function drawBottomLeftCorner(x, y) { - g.setColor(mainColor); - const x1 = x - cornerOffset; - const y1 = y + cornerOffset; - g.fillRect(x1, y1, x1 + cornerSize, y1 - cornerSize); - g.setColor("#000000"); - g.fillRect(x, y, x + cornerSize - cornerOffset, y - cornerSize + cornerOffset); -} - -function drawBottomRightCorner(x, y) { - g.setColor(mainColor); - const x1 = x + cornerOffset; - const y1 = y + cornerOffset; - g.fillRect(x1, y1, x1 - cornerSize, y1 - cornerSize); - g.setColor("#000000"); - g.fillRect(x, y, x - cornerSize + cornerOffset, y - cornerSize + cornerOffset); -} - -function drawFrame(x1, y1, x2, y2) { - drawTopLeftCorner(x1, y1); - drawTopRightCorner(x2, y1); - drawBottomLeftCorner(x1, y2); - drawBottomRightCorner(x2, y2); - g.setColor(mainColorDark); - g.drawRect(x1, y1, x2, y2); - g.setColor("#000000"); - g.fillRect(x1 + borderWidth, y1 + borderWidth, x2 - borderWidth, y2 - borderWidth); -} - -function drawTopFrame(x1, y1, x2, y2) { - - drawBottomLeftCorner(x1, y2); - drawBottomRightCorner(x2, y2); - g.setColor(mainColorDark); - g.drawRect(x1, y1, x2, y2); - g.setColor("#000000"); - g.fillRect(x1 + borderWidth, y1 + borderWidth, x2 - borderWidth, y2 - borderWidth); -} - -function drawFrameNoCorners(x1, y1, x2, y2) { - g.setColor(mainColorDark); - g.drawRect(x1, y1, x2, y2); - g.setColor("#000000"); - g.fillRect(x1 + borderWidth, y1 + borderWidth, x2 - borderWidth, y2 - borderWidth); -} - -// function drawBottomFrame(x1,y1,x2,y2) { -// drawTopLeftCorner(x1,y1); -// drawTopRightCorner(x2,y1); -// g.setColor(mainColorDark); -// g.drawRect(x1,y1,x2,y2); -// g.setColor("#000000"); -// g.fillRect(x1+borderWidth,y1+borderWidth,x2-borderWidth,y2-borderWidth); -// } - -// function getUTCTime(d) { -// return d.toUTCString().split(' ')[4].split(':').map(function(d){return Number(d);}); -// } - - function drawTimeText(d) { const da = d.toString().split(" "); // var dutc = getUTCTime(d); @@ -121,19 +27,19 @@ function drawTimeText(d) { const hours = time[0], minutes = time[1], seconds = time[2]; - g.setColor(mainColor); + g.setColor(Arwes.C.color.primary.base); g.setFont(font, timeFontSize); g.drawString(`${hours}:${minutes}:${seconds}`, xyCenter, yposTime, true); const unix = Math.round(d.getTime()); g.setFont(font, unixTimeFontSize); - g.setColor(secondaryColor); + g.setColor(Arwes.C.color.secondary.base); g.drawString(`${unix}`, xyCenter, yposTime + 22, true); g.setFont(font, smallFontSize); } function drawDateText(d) { - g.setColor(mainColor); + g.setColor(Arwes.C.color.primary.base); g.setFont(font, dateFontSize); g.drawString(`${d.getDate()}.${d.getMonth() + 1}.${d.getFullYear()}`, xyCenter, yposDate, true); } @@ -144,7 +50,7 @@ function drawCounterText() { g.setColor("#000000"); g.fillRect(37, 58 + yOffset + 36, 203, 58 + 80 + yOffset + 34); g.setFontAlign(0, 0); - g.setColor(alert); + g.setColor(Arwes.C.color.alert.base); g.setFont(font, 8); g.drawString(`${count}`, xyCenter, yposCounter, true); @@ -153,10 +59,10 @@ function drawCounterText() { function levelColor(l) { // no icon -> brightest green to indicate charging, even when showing percentage - if (Bangle.isCharging()) return success; - if (l >= 50) return success; - if (l >= 15) return secondaryColorDark; - return alert; + if (Bangle.isCharging()) return Arwes.C.color.success.base; + if (l >= 50) return Arwes.C.color.success.base; + if (l >= 15) return Arwes.C.color.secondary.dark; + return Arwes.C.color.alert.base; } function drawBattery() { @@ -169,17 +75,17 @@ function drawBattery() { function drawClock() { // main frame - drawFrame(3, 10 + yOffset, width - 3, height - 3); + Arwes.drawFrame(3, 10 + yOffset, width - 3, height - 3); // time frame - drawTopFrame(20, 10 + yOffset, 220, 58 + yOffset); + Arwes.drawFrameBottomCorners(20, 10 + yOffset, 220, 58 + yOffset); // date frame - drawTopFrame(28, 58 + yOffset, 212, 58 + yOffset + 35); + Arwes.drawFrameBottomCorners(28, 58 + yOffset, 212, 58 + yOffset + 35); // counter frame - drawTopFrame(36, 58 + yOffset + 35, 204, 58 + 80 + yOffset + 35); + Arwes.drawFrameBottomCorners(36, 58 + yOffset + 35, 204, 58 + 80 + yOffset + 35); // battery frame - drawFrameNoCorners(44, 58 + 80 + yOffset + 35, 196, height - 3); + Arwes.drawFrameNoCorners(44, 58 + 80 + yOffset + 35, 196, height - 3); updateClock(); diff --git a/apps/dane_tcr/app.js b/apps/dane_tcr/app.js index d545ea016..deaac665a 100644 --- a/apps/dane_tcr/app.js +++ b/apps/dane_tcr/app.js @@ -1,99 +1,10 @@ +var d = require("https://raw.githubusercontent.com/OmegaVoid/EspruinoDocs/master/modules/dane_arwes.js"); +var Arwes = d.default(); const yOffset = 23; const width = g.getWidth(); const height = g.getHeight(); const xyCenter = width / 2 + 4; -const cornerSize = 14; -const cornerOffset = 3; -const borderWidth = 1; -const mainColor = "#26dafd"; -const mainColorDark = "#029dbb"; -// const mainColorLight = "#8bebfe"; - -const secondaryColor = "#df9527"; -const secondaryColorDark = "#8b5c15"; -// const secondaryColorLight = "#ecc180"; - -const success = "#00ff00"; -// const successDark = "#000900"; -// const successLight = "#060f06"; - -const alert = "#ff0000"; -// const alertDark = "#090000"; -// const alertLight = "#0f0606"; - -function drawTopLeftCorner(x, y) { - g.setColor(mainColor); - const x1 = x - cornerOffset; - const y1 = y - cornerOffset; - g.fillRect(x1, y1, x1 + cornerSize, y1 + cornerSize); - g.setColor("#000000"); - g.fillRect(x, y, x + cornerSize - cornerOffset, y + cornerSize - cornerOffset); -} - -function drawTopRightCorner(x, y) { - g.setColor(mainColor); - const x1 = x + cornerOffset; - const y1 = y - cornerOffset; - g.fillRect(x1, y1, x1 - cornerSize, y1 + cornerSize); - g.setColor("#000000"); - g.fillRect(x, y, x - cornerSize - cornerOffset, y + cornerSize - cornerOffset); -} - -function drawBottomLeftCorner(x, y) { - g.setColor(mainColor); - const x1 = x - cornerOffset; - const y1 = y + cornerOffset; - g.fillRect(x1, y1, x1 + cornerSize, y1 - cornerSize); - g.setColor("#000000"); - g.fillRect(x, y, x + cornerSize - cornerOffset, y - cornerSize + cornerOffset); -} - -function drawBottomRightCorner(x, y) { - g.setColor(mainColor); - const x1 = x + cornerOffset; - const y1 = y + cornerOffset; - g.fillRect(x1, y1, x1 - cornerSize, y1 - cornerSize); - g.setColor("#000000"); - g.fillRect(x, y, x - cornerSize + cornerOffset, y - cornerSize + cornerOffset); -} - -function drawFrame(x1, y1, x2, y2) { - drawTopLeftCorner(x1, y1); - drawTopRightCorner(x2, y1); - drawBottomLeftCorner(x1, y2); - drawBottomRightCorner(x2, y2); - g.setColor(mainColorDark); - g.drawRect(x1, y1, x2, y2); - g.setColor("#000000"); - g.fillRect(x1 + borderWidth, y1 + borderWidth, x2 - borderWidth, y2 - borderWidth); -} -function drawFrameNoCorners(x1, y1, x2, y2) { - g.setColor(mainColorDark); - g.drawRect(x1, y1, x2, y2); - g.setColor("#000000"); - g.fillRect(x1 + borderWidth, y1 + borderWidth, x2 - borderWidth, y2 - borderWidth); -} - -function drawTopFrame(x1, y1, x2, y2) { - - drawBottomLeftCorner(x1, y2); - drawBottomRightCorner(x2, y2); - g.setColor(mainColorDark); - g.drawRect(x1, y1, x2, y2); - g.setColor("#000000"); - g.fillRect(x1 + borderWidth, y1 + borderWidth, x2 - borderWidth, y2 - borderWidth); -} - -function drawBottomFrame(x1,y1,x2,y2) { - drawTopLeftCorner(x1,y1); - drawTopRightCorner(x2,y1); - g.setColor(mainColorDark); - g.drawRect(x1,y1,x2,y2); - g.setColor("#000000"); - g.fillRect(x1+borderWidth,y1+borderWidth,x2-borderWidth,y2-borderWidth); -} - const Storage = require("Storage"); const filename = 'dane_tcr.json'; @@ -160,7 +71,7 @@ const APPS = getApps(); function noIcon(x, y, scale){ if(scale < 0.2) return; - g.setColor(alert); + g.setColor(Arwes.C.color.alert.base); g.setFontAlign(0,0); g.setFont('6x8',settings.highres ? 6:3); g.drawString('x_x', x+1.5, y); @@ -203,11 +114,11 @@ function render(){ const h = (settings.highres ?8:6)*fontSize const w = ((settings.highres ?6:2)*fontSize)*app.name.length if(settings.hightres) - drawFrame(HALF-w, HALF-h, HALF+w, HALF+h); + Arwes.drawFrame(HALF-w, HALF-h, HALF+w, HALF+h); else - drawFrame(HALF-w-2, HALF-h, HALF+w, HALF+h); + Arwes.drawFrame(HALF-w-2, HALF-h, HALF+w, HALF+h); g.setFont(font, fontSize); - g.setColor(alert); + g.setColor(Arwes.C.color.alert.base); g.setFontAlign(0,0); g.drawString(app.name, HALF, HALF); return; @@ -225,9 +136,9 @@ function render(){ const imageScale = settings.highres ? scale*2 : scale; if(settings.hightres) - drawFrame(x-rescale-5, y-rescale-5, x+rescale+5, y+rescale+5); + Arwes.drawFrame(x-rescale-5, y-rescale-5, x+rescale+5, y+rescale+5); else - drawFrame(x-rescale-2-2, y-rescale-1, x+rescale+2, y+rescale+1); + Arwes.drawFrame(x-rescale-2-2, y-rescale-1, x+rescale+2, y+rescale+1); @@ -248,10 +159,10 @@ function render(){ const h = (settings.highres ?8:6)*fontSize const w = ((settings.highres ?6:2)*fontSize)*10//app.name.length if(settings.highres) - drawFrame(36, HEIGHT/4*3-(fontSize*8), 204, HEIGHT/4*3+(fontSize*8)); + Arwes.drawFrame(36, HEIGHT/4*3-(fontSize*8), 204, HEIGHT/4*3+(fontSize*8)); else - drawTopFrame(HALF-w-2, HEIGHT/4*3-h, HALF+w, HEIGHT/4*3+h); - g.setColor(mainColor); + Arwes.drawTopFrame(HALF-w-2, HEIGHT/4*3-h, HALF+w, HEIGHT/4*3+h); + g.setColor(Arwes.C.color.primary.base); g.setFont(font, fontSize); g.setFontAlign(0,0); g.drawString(app.name, HALF, HEIGHT/4*3); @@ -262,10 +173,10 @@ function render(){ const version = app.version ? app.version : '0.00'; const info = type+' v'+version; const textWidth = (info.length*(6*1.5)) - drawTopFrame(HALF-textWidth/2, 210-(1.5*8)-2, HALF+textWidth/2, 210+(1.5*8)-2); + Arwes.drawTopFrame(HALF-textWidth/2, 210-(1.5*8)-2, HALF+textWidth/2, 210+(1.5*8)-2); g.setFontAlign(0,1); g.setFont('6x8', 1.5); - g.setColor(secondaryColor); + g.setColor(Arwes.C.color.secondary.base); g.drawString(info, HALF, 210, { scale: scale }); } From a2c260a1ec8f6fd9dd4aa76d4b7587fdb2ab59ab Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Tue, 8 Dec 2020 19:07:09 +0100 Subject: [PATCH 02/18] change the require statements to point to the configured module source --- apps/dane/app.js | 2 +- apps/dane_tcr/app.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/dane/app.js b/apps/dane/app.js index 7c64e16c3..60fb44643 100644 --- a/apps/dane/app.js +++ b/apps/dane/app.js @@ -1,4 +1,4 @@ -var d = require("https://raw.githubusercontent.com/OmegaVoid/EspruinoDocs/master/modules/dane_arwes.js"); +var d = require("dane_arwes"); var Arwes = d.default(); diff --git a/apps/dane_tcr/app.js b/apps/dane_tcr/app.js index deaac665a..9ae6f8b28 100644 --- a/apps/dane_tcr/app.js +++ b/apps/dane_tcr/app.js @@ -1,4 +1,4 @@ -var d = require("https://raw.githubusercontent.com/OmegaVoid/EspruinoDocs/master/modules/dane_arwes.js"); +var d = require("dane_arwes"); var Arwes = d.default(); const yOffset = 23; From e23fc7630d0c5700500ab926df380ca21627a54f Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Tue, 8 Dec 2020 23:03:26 +0100 Subject: [PATCH 03/18] change Arwes methods to the new ones --- apps/dane_tcr/app.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/dane_tcr/app.js b/apps/dane_tcr/app.js index 9ae6f8b28..aa25379d3 100644 --- a/apps/dane_tcr/app.js +++ b/apps/dane_tcr/app.js @@ -161,7 +161,7 @@ function render(){ if(settings.highres) Arwes.drawFrame(36, HEIGHT/4*3-(fontSize*8), 204, HEIGHT/4*3+(fontSize*8)); else - Arwes.drawTopFrame(HALF-w-2, HEIGHT/4*3-h, HALF+w, HEIGHT/4*3+h); + Arwes.drawFrameBottomCorners(HALF-w-2, HEIGHT/4*3-h, HALF+w, HEIGHT/4*3+h); g.setColor(Arwes.C.color.primary.base); g.setFont(font, fontSize); g.setFontAlign(0,0); @@ -173,7 +173,7 @@ function render(){ const version = app.version ? app.version : '0.00'; const info = type+' v'+version; const textWidth = (info.length*(6*1.5)) - Arwes.drawTopFrame(HALF-textWidth/2, 210-(1.5*8)-2, HALF+textWidth/2, 210+(1.5*8)-2); + Arwes.drawFrameBottomCorners(HALF-textWidth/2, 210-(1.5*8)-2, HALF+textWidth/2, 210+(1.5*8)-2); g.setFontAlign(0,1); g.setFont('6x8', 1.5); g.setColor(Arwes.C.color.secondary.base); From 51032cfcc64b9a014ba0b38453d9b92de07b3136 Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Tue, 8 Dec 2020 23:05:37 +0100 Subject: [PATCH 04/18] Update Changelog --- apps.json | 4 ++-- apps/dane/ChangeLog | 3 ++- apps/dane_tcr/ChangeLog | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps.json b/apps.json index 0241b9fe8..c376813f2 100644 --- a/apps.json +++ b/apps.json @@ -1489,7 +1489,7 @@ "name": "Digital Assistant, not EDITH", "shortName": "DANE", "icon": "app.png", - "version": "0.11", + "version": "0.12", "description": "A Watchface inspired by Tony Stark's EDITH and based on https://arwes.dev/", "tags": "clock", "type": "clock", @@ -1510,7 +1510,7 @@ "name": "DANE Touch Launcher", "shortName":"DANE Toucher", "icon": "app.png", - "version":"0.03", + "version":"0.04", "description": "Touch enable left to right launcher in the style of the DANE Watchface", "tags": "tool,system,launcher", "type":"launch", diff --git a/apps/dane/ChangeLog b/apps/dane/ChangeLog index 5c44130bf..1480ba04b 100644 --- a/apps/dane/ChangeLog +++ b/apps/dane/ChangeLog @@ -6,4 +6,5 @@ 0.08: Removed Image, Reduced RAM usage 0.09: Added Unix Time 0.10: Added Counter, Added Battery Display -0.11: Code Refactoring, Improved Description \ No newline at end of file +0.11: Code Refactoring, Improved Description +0.12: Move code to Arwes Module \ No newline at end of file diff --git a/apps/dane_tcr/ChangeLog b/apps/dane_tcr/ChangeLog index b2cf10a5f..5ca22a7d9 100644 --- a/apps/dane_tcr/ChangeLog +++ b/apps/dane_tcr/ChangeLog @@ -1,3 +1,4 @@ 0.01: Fork Toucher and change looks to match with DANE Watchface 0.02: Add Frames -0.03: Add LowRes Support \ No newline at end of file +0.03: Add LowRes Support +0.04: Move code to Arwes Module \ No newline at end of file From 3d6cba09256b2b694fe39b384c7e24dbf8027552 Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Wed, 9 Dec 2020 14:19:57 +0100 Subject: [PATCH 05/18] Optimized Battery display --- apps/dane/app.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/dane/app.js b/apps/dane/app.js index 60fb44643..7a3cb6f6e 100644 --- a/apps/dane/app.js +++ b/apps/dane/app.js @@ -1,4 +1,4 @@ -var d = require("dane_arwes"); +var d = require("https://raw.githubusercontent.com/OmegaVoid/EspruinoDocs/master/modules/dane_arwes.js"); var Arwes = d.default(); @@ -69,6 +69,7 @@ function drawBattery() { const l = E.getBattery(), c = levelColor(l); count = l; const xl = 45 + l * (194 - 46) / 100; + g.clearRect(46, 58 + 80 + yOffset + 37, 193, height - 5); g.setColor(c).fillRect(46, 58 + 80 + yOffset + 37, xl, height - 5); } @@ -88,6 +89,7 @@ function drawClock() { Arwes.drawFrameNoCorners(44, 58 + 80 + yOffset + 35, 196, height - 3); + drawBattery(); updateClock(); // const img = makeImg(); @@ -100,7 +102,6 @@ function updateClock() { drawTimeText(date); drawDateText(date); drawCounterText(); - drawBattery(); } @@ -130,5 +131,6 @@ setWatch(Bangle.showLauncher, BTN2, {repeat: false, edge: "falling"}); // refesh every 100 milliseconds setInterval(updateClock, 500); +setInterval(drawBattery, 1000); From 0da99ce3ffc6f02d1c7857427807876567c58654 Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Wed, 9 Dec 2020 14:24:02 +0100 Subject: [PATCH 06/18] Optimized Battery display --- apps/dane/app.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/apps/dane/app.js b/apps/dane/app.js index 7a3cb6f6e..0fbd8b3d7 100644 --- a/apps/dane/app.js +++ b/apps/dane/app.js @@ -73,6 +73,10 @@ function drawBattery() { g.setColor(c).fillRect(46, 58 + 80 + yOffset + 37, xl, height - 5); } +function updateCounter() { + drawBattery(); + drawCounterText(); +} function drawClock() { // main frame @@ -89,7 +93,7 @@ function drawClock() { Arwes.drawFrameNoCorners(44, 58 + 80 + yOffset + 35, 196, height - 3); - drawBattery(); + updateCounter() updateClock(); // const img = makeImg(); @@ -101,7 +105,7 @@ function updateClock() { const date = new Date(); drawTimeText(date); drawDateText(date); - drawCounterText(); + } @@ -131,6 +135,6 @@ setWatch(Bangle.showLauncher, BTN2, {repeat: false, edge: "falling"}); // refesh every 100 milliseconds setInterval(updateClock, 500); -setInterval(drawBattery, 1000); +setInterval(updateCounter, 1000); From 15d51d5272dd260c741b969c57081096f415f2cd Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Wed, 9 Dec 2020 14:24:14 +0100 Subject: [PATCH 07/18] Optimized Battery display --- apps/dane/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dane/app.js b/apps/dane/app.js index 0fbd8b3d7..4f08c57c7 100644 --- a/apps/dane/app.js +++ b/apps/dane/app.js @@ -93,7 +93,7 @@ function drawClock() { Arwes.drawFrameNoCorners(44, 58 + 80 + yOffset + 35, 196, height - 3); - updateCounter() + updateCounter(); updateClock(); // const img = makeImg(); From 3a36580ee4764de941e3441f9d14d630db017806 Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Wed, 9 Dec 2020 14:56:20 +0100 Subject: [PATCH 08/18] Add Icon for Dane Launcher, Improve Icon for Dane add dane_arwes module --- apps.json | 3 +- apps/dane/app-icon.js | 2 +- apps/dane/app.js | 2 +- apps/dane_tcr/app-icon.js | 1 + core | 2 +- modules/dane_arwes.js | 116 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 122 insertions(+), 4 deletions(-) create mode 100644 apps/dane_tcr/app-icon.js create mode 100644 modules/dane_arwes.js diff --git a/apps.json b/apps.json index a7bb44acd..ea05a81fc 100644 --- a/apps.json +++ b/apps.json @@ -1522,7 +1522,8 @@ ], "storage": [ {"name":"dane_tcr.app.js","url":"app.js"}, - {"name":"dane_tcr.settings.js","url":"settings.js"} + {"name":"dane_tcr.settings.js","url":"settings.js"}, + {"name": "dane_tcr.img", "url": "app-icon.js", "evaluate": true} ], "sortorder" : -10 }, diff --git a/apps/dane/app-icon.js b/apps/dane/app-icon.js index 4deb12640..ab5a4d606 100644 --- a/apps/dane/app-icon.js +++ b/apps/dane/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("l8wxH+AH4A/AH4A/AFUvl8Cu4AEgUCBQIrfFQMRAAe/Aw4xbDYIlBiUS7AjCAAY5BBYMSiJkBGC4sCicTiRQJHoUSCAIwBF6sv30SikUiRMMMIISD7AvTl/YiYtPF40TF6R4BicVFqAWDF4MViaPRIwQWTF4O/IwiKRCoMRUiZHEDJ5cXJAxeOOQuQhQuShWQJIe/JJkviIuC74tTFwORRqKLD+3cmVLpsLFZtNAANKhXeDYKNOu4uEmdlDwVNBoNlsoDDmoKBhYQChcyFycVFwOTFwJcBpomBhYjCmouBAwYMCmZdBa4d3FyonBKoIoCAwIECLooucEIIjCRIYuFms1Lqq7CFwS7DLQQsDhYrBHIZdHXZkCdQpQDXoIQDFwIDBeoQQCpYuSl8RFwMT70KCRYAIhUSFwMTiMvFxm/CQUSFyp5Did3Fxi8DOBwuLDSEv7ETfoRCNDI13DIMT34ZPIYSgOaxJ3SIgZeTC7COBdgMCC58vOoakWiQvQFoQTBFqgvEiURF5gRDOKIdIDwMRiO/axMCBoMRLQItXF4Z9B7F3BxF37BZBAAQnRIYobDMAKqIl5aDAA5zJFwaCBAA6PBFxQQEAAYKBFxjSCU4IECA4YuJCAoAEFx0UikTAAIEBAwQuKCIoADFxsCI5RdiUAoAEVgIVJABRDHAH4A/AH4A/ADAA=")) \ No newline at end of file +require("heatshrink").decompress(atob("l8w4kA///hFC885ospj+X/+Ow0xkkhlFC8cYvWnsspgkh00x4UjMP4A/gHuAAXgCqOfWwIABzfuCpsOzOZ/wtB9P5zOeGJnn4/JB4cO9PD44XL9M2nIOFBBANFsVnBo3ssVsC5IWB7gMH9khBRBbBsMTBZHriNpBY8OmOC5yVI4WBnwKHyWB3ytJtAjI8cYi5pJ88YKQ/p7GCuCYJyWI644G4OItoWJhZGIIoOL9VVCo1VrXrxBGGM4OIn2kqlQglAglFqtUotenANBEQvmEAIuBqgBColVqoZBHgQuHVwOlgoQBDAQCCr0xxCxGFwdQqlUolFopEBotaFwODFwxPC0oqDI4QuCnDrHRgdFqFQgEFqABBoiMClguG4S7LNYONyAJFg4JBdRV9Io5GCHAwAD9koBg8OywhIBgUxiewBQ/CixGJ20mzwiImXcIxHss3OERELm03BQ8HnYWJgHu4fHCw+XIhBHDzOZI4vpzIWIhIXDv//ZAmf//uCIwAB+AXD92fBQfvzw1DhwiEh4KD93u/wQD/wtDgGXFwn5vwUBAAPvDofvBIfuvJpEhM2mc3u8zvhtDh2cuczu9z21+FwmdiIADaons6IKDjYuFsILDiQjDh1yxAJBjESnwuEzkzAAc5EYeZm1rmc7tZdFT4IAFBRoA/AGg")) \ No newline at end of file diff --git a/apps/dane/app.js b/apps/dane/app.js index 4f08c57c7..841ecdfeb 100644 --- a/apps/dane/app.js +++ b/apps/dane/app.js @@ -1,4 +1,4 @@ -var d = require("https://raw.githubusercontent.com/OmegaVoid/EspruinoDocs/master/modules/dane_arwes.js"); +var d = require("dane_arwes"); var Arwes = d.default(); diff --git a/apps/dane_tcr/app-icon.js b/apps/dane_tcr/app-icon.js new file mode 100644 index 000000000..6c1b97c1c --- /dev/null +++ b/apps/dane_tcr/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEw4kA///885kkh7/vj+Xssp/+GhFCosplFCgkh8cYw0xpNK4Uj00xMf4A/AAPuAAXgCqO7AAnuCx3lCQO+FwPrAoMuFpuy1YQE9eyxQxLh0i5G+BIvqrmCMZXir/KBo0Ol8cEIwMDksRxwLH9EX5YwIguBvkgBY8C491PRHqjsSEZEOw/RC48O3md+RrJl/d/ZrHk/XLxDJCvtyC40C5vR1wXJKgPcqAJH6KbJbQINI8V979WswVGg1mgX9Ho/ovvc+1EokAsdgsdmo1Es1l5vXSA3lzvc81GsgTBs1kowABs0PC4KFGC4dAgwTCDYQvBhwXI9AvDLAIrCGAVgC4RHGL4YrCAAQXCs0FWpCnBR4NEsEGAINmAYIZBgqPBU4yxFCoIDBslgAYMLa5EOrI5Dsk0AYNDow9DuXgC42hQIUGoYXDmgwB9F5/YXGgElu/FgEEmgXDodAgHsuKmGMAX3jXgF48O18cUwxIC18YHQJfGh2P5ZGHNYXMPARzCsg7Cqq9GGAmo1aDH3UrFxIlC3bLH3ZdIhYmDDAwGGGQgXDDAPuC4vuCQcOC4sgC5O7C4nrC4uy9wADC4wAD3YXFxlYwUilGK2QXE1GIBYOF5QXF493AAVxwQLD2sXBYblCC4dXBYd35YLD3l9y4JBy8SC4u4qoACrGrBYe65nFxFV4raFRQIAFBYYKGeRYA/AFwA==")) \ No newline at end of file diff --git a/core b/core index 8bfdeebf7..0389671ba 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 8bfdeebf705ced95699dcbbccfa05a99e7d3f4a9 +Subproject commit 0389671ba6678a12c9f35644ffb96c190bbe0278 diff --git a/modules/dane_arwes.js b/modules/dane_arwes.js new file mode 100644 index 000000000..b24bc008e --- /dev/null +++ b/modules/dane_arwes.js @@ -0,0 +1,116 @@ +/* Copyright (c) 2020 OmegaRogue. See the file LICENSE for copying permission. */ +/* +Graphics Functions based on the React Sci-Fi UI Framework Arwes +*/ + +var C = { + cornerSize: 14, // description + cornerOffset: 3, // description + borderWidth: 1 // description +}; + +function Arwes(cornerSize, cornerOffset) { + this.cornerSize = cornerSize; + this.cornerOffset = cornerOffset; +} + + +/** 'public' constants here */ +Arwes.prototype.C = { + color: { + primary: { + base: "#26dafd", + light: "#8bebfe", + dark: "#029dbb" + }, + secondary: { + base: "#df9527", + light: "#ecc180", + dark: "#8b5c15" + }, + header: { + base: "#a1ecfb", + light: "#fff", + dark: "#3fd8f7" + }, + control: { + base: "#acf9fb", + light: "#fff", + dark: "#4bf2f6" + }, + success: { + base: "#00ff00", + light: "#6f6", + dark: "#090" + }, + alert: { + base: "#ff0000", + light: "#f66", + dark: "#900" + }, + disabled: { + base: "#999999", + light: "#ccc", + dark: "#666" + } + } +}; + + +function drawCorner(obj, x, y, n) { + g.setColor(obj.C.color.primary.base); + let s1 = (n&1)?1:-1, s2 = (n&2)?1:-1; + const x1 = x + obj.cornerOffset * s1; + const y1 = y + obj.cornerOffset * s2; + g.fillRect(x1, y1, x - obj.cornerSize*s1 + obj.cornerOffset*s1, y); + g.fillRect(x1, y1, x, y - obj.cornerSize*s2 + obj.cornerOffset*s2); + +} + +Arwes.prototype.drawFrameNoCorners = function (x1, y1, x2, y2) { + g.setColor(this.C.color.primary.dark); + g.drawRect(x1, y1, x2, y2); +} + +Arwes.prototype.drawFrame = function (x1, y1, x2, y2) { + drawCorner(this, x1, y1, 0); + drawCorner(this, x2, y1, 1); + drawCorner(this, x1, y2, 2); + drawCorner(this, x2, y2, 3); + this.drawFrameNoCorners(x1, y1, x2, y2); +} + +Arwes.prototype.drawFrameBottomCorners = function (x1, y1, x2, y2) { + drawCorner(this, x1, y2, 2); + drawCorner(this, x2, y2, 3); + this.drawFrameNoCorners(x1, y1, x2, y2); +} + +Arwes.prototype.drawFrameTopCorners = function (x1, y1, x2, y2) { + drawCorner(this, x1, y1, 0); + drawCorner(this, x2, y1, 1); + this.drawFrameNoCorners(x1, y1, x2, y2); +} + +Arwes.prototype.drawFrameLeftCorners = function (x1, y1, x2, y2) { + drawCorner(this, x1, y1, 0); + drawCorner(this, x1, y2, 2); + this.drawFrameNoCorners(x1, y1, x2, y2); +} + +Arwes.prototype.drawFrameRightCorners = function (x1, y1, x2, y2) { + drawCorner(this, x2, y1, 1); + drawCorner(this, x2, y2, 3); + this.drawFrameNoCorners(x1, y1, x2, y2); +} + + + + +exports.create = function (cornerSize, cornerOffset) { + return new Arwes(cornerSize, cornerOffset); +}; + +exports.default = function () { + return new Arwes(C.cornerSize, C.cornerOffset); +}; From 8d661b0679c848a5ffd3c03097563d9365221cc0 Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Wed, 9 Dec 2020 15:15:41 +0100 Subject: [PATCH 09/18] Add Icon for Dane Launcher --- apps/dane_tcr/app.png | Bin 1620 -> 18706 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/apps/dane_tcr/app.png b/apps/dane_tcr/app.png index 582cb2e0853a5a2899a3afbd7eb19cde2ee7f6a0..5b78acc7722dc496960e1678f070bbf9f833408a 100644 GIT binary patch literal 18706 zcmV)2K+M01P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3>vk{r2?g#Yst?+DzN<8U>b8_e>VBKq zv|1{uDl>y50EasW((M2JpJV>)P4Dy7+Mf&bYmq;HGk>oB*WdnFeBa;ihdW0hlEbjx*j+`eC@n+!4f?F(PMpFZ60)lhu%Gdy>av!1}Siq&^7lZUMgzQc6pc2pKJ;mME z`sB0Mx4|Y1kwOjy+qBRzR*VV%DY4>1J%togN;#EOO=_v zXPI@j*_U5o0TU~)vg&H9Z)Y}0vExoV@3QM|yB~b*gcDCX`IJ*nJN?UQuT}r@>%Xv? zd#&cLrS!V;Wi`HQO8I<*6PzU342${buy~OLaA+@^+3I5SvYc#Yn%&a-NH65eMA?+H+v2{f2!`b1; zEN7fS_#a_}hRwXw4BPcyM(A~|vn&qTPpb>Vg_BDdYwoxT_S<9bLRvd<=_3X+)YlnP z(AQ0FIJNSyazdOu%$(uN=V^130V^2W&diM&l{v<|KW*Uf8LStph=WY5Fj?hU+A7sE zd&3A%)x?|D7_6Rchca-3YHM1x&6ZPGD;B)4pXh210ldcxLum83_dM*bmwri1EJMJ=lVmQ#3wQwbUzZ@U0#hCMAMPemWk=s0W z2G~ZxLM7#~cUZP%Ofq|M-29G$9Jns*la>ojSlQU^Llw7G~QLj&H;|2{Kh8&V}9P zigNgxC&4;uopIfe%zbUF-cp(~=wYo4IONI)m`|0dwk|x!?6m;QqDPQZ+)h8j(0irW z0t1lYaPZi7-#gaq?KIuN_KTcx&UVrqz-YvR(3nV6O+|P}9cFYw%dD8|!Sfe<6VAgp zXE`pfW4hllhJ3*SzX1_f^t=~8mcs)4c;o#6@tFYKu?Lju^tSK|hS?*5#E8c8o~93a z-t~TLSN9EC3?W3_!eq?Fm>h0P9$3wT zEF(aZz1@MhuJbTm43!J%1I*@c)dpoN2PzJ{=dPGzof^pshED|dye{sf2_nyua5{V( z)7EAeNhz9vaKPdd?}&4fo~KRO;ZvlPjAaY+u?;kjq{!=MMA`fb?~{RN9?%Uh;@62_ z`hvsCU)uE7U+~jWy7ET}7MJzyz@110ekPahdV#wjGT>1SuP1+=Jjn?INFXD=SQYDJ zxdc^mRuYpXg!i!PhD*EQ()KJXZ`ieQ!qq^$gjJt(wwZ$M_wV-C*L_&NK)kL1nBkIg z-2&HMJyz2SOq%pL09a@}7k|xDt0iJz$fV-gJo^_c`3&f)+?qH z3G&6TTsfd8^hiOuyeDy6Womo?#4jCdF}q2G4AIiISrqJ)g5g^yC5SyKG`7r0<@ZFJ z^%x4zC?aGA(Lr&;iR5V6F^cR-t)f&38d+R2WjvJZ$(iP#d|loRwi) zE4XKG!D6nx3~O^nezF(=Sn(5Bu@VOk1c;9S2KqT3cC?^t$IjGzoy>9T-96nA5sgr| zb_To*s%QgXn+smjNx|e19uFK41Horp4NA2apGvHW1_9Sc;VW_Zjd(1s@BH z1?k=&kL*kWN(D?bh@ZlYr4DzIZsIZ`>e%%J4S*y-Bqxv*tqjoRxXE5X9kV4Q2y_-1 zBSZH|K_cV>yeO{JsG!ATwfMklCI&oC8Btd83;?qG(i{}ulCx%&u=Zj(eJps+hKmwH z#Chok)N&R zn;@+bpk<8$f$R?`)8vEDHh9B?Uage+fvGG)CGp{v1syQLye&SmEhqSD{zH1#sv}LJ{J*2l2|_^P$_X=F%>puEnd1+Z( z_a%I8u}q8wa^XQ^viW5OSbd2N1IxLCM|S2KozgINg;u4bsLoed;D4g$q&)m`BX?1_ zM7*mWj6_zE{;>fBIvL5fylN->3VEUMb6j&HZAa=XD04VCc;a7BZ$^lEu9zYteQnaC z(}1xr19t<61Ivc?gnLAQqOAjxc`Zq7h$+n92R4TegSQv~6YdNaLN+3V8l4ac7_$OwutCC+H?%ZjEF|KT7s3~7%1L(iRV!%W zG;=KsCXJawx8(GNKO%@4j+MDmeQgsZ}10q7$`3xcM)|g zP=^0B=mk8|n@$43v%yGaLL9GztU@kjcrP|DV^F#t*j_nB$6B9M2(DNA%RWGH9V^YxT)~6rA2u>QB*PORJ8);v_7X^w24?&!&_7iA@_(wqmls&OVWDq_`J2U`V3#KTn+$x#?X$&?^z*NKr zim`!W^7w(0A_EoU!v;ihHE?jSmW)o2Ec}wE!J1()9>R`<1hK(2fb)=9J&D18=~c^f zz=Wol=>}_o3l4XO*^>>BZDyM5hnNHd zz;36q3z7iKHuzs&L^Do=crl<3>qVv>b7{ew90U9FUDj+>20JAE9A<~i!^VA%4%CMs zuy_{X4#ve|gbEYsXh}uPVF2>B!iBQcx;h7_b!7uGnH`aEhAoRg` z;u`IuA_AdUTahC%^^PZcMpCIlb3XoQehT5|b8 zR1VUd#oJg#FX>z%8dm&xvs8Yu79>qp3e9S5;e!B0#-Ha+V-oaBqHE%g2l@XLIe@Dx zGsx4B%!C&*(=IYb+JZ`kVGdfDd=V~jLWQYHtO9i=MGs}HWErlnq$)5kw9aa0?MitJ zDw~OyoH@(}s#RQc_zG+euSK-NCl#1DOqHX$F@{u8vXB_~jzTUGE3IzD@xCPDX0a0I zH7a8ouyOJpc6Y1{d7{U?h;>NF2@`-WcKSyciBiAg}~{z7N5T@k@AmpOd>iR%255(zJ10VpxduPFuNEmPGO$A*B0?UKX@T*HI z^HyW62X!R5PQeec459(KB0i3yK)~i8P`pmy;p3f<<%PiYoPfoGe)HOi76B0IOj1lk z921I7Z0xESnGihGp{TfODjzBy=G8Ob6c@o@2K=S$q~wK9fS>smR=z4YsJ1Htr0~C( zIAQ?e?NvA}N9oECeu=E09zks3YdreT81Ifv=5k-3gvW!s;-OgF@oP<0OE? zbX60ZcCbh{{gHs7uRIybMr&k1i`Xv79EUu~ z-i|1LW&N&gwW7)_B9-^o3KJ&~qcX@X{Xqsmj$DahgY*?00^k`f99-pK(q(NDGl+qO zqmnR*d=;K-N7W=DxrbIniSm@?KhSN`;e0k}8)xm&gZ4mFX)6?0j<}bRfzhH9=!+jMR?l zqPa^w9614CBJW)q4Z4f4fUk&0$n(I{m>)R}tp^RB%49@0B4Wa~RnUX6jUTnWrp<56 zFtv37evv*gLM##>)@4{Gxhx{IN%*iUI4hYPQa~1A6`7*sMpD58f`m-N`6O=!M7*Vl z;84WFKZjJw=rd2RO7eUhILkJKDk~^|Q!c0~*1Sfjw)JmDvODgS%%vpZCEE@!MIk zn%~T*L6fx={3kqwJP0XN2m;( zTO}t|zw;9k8S74XDr*PaGF^U%$7&~tMCnjWP?l&|M5ypm@%8v#EKvdopUIn)iBQTc zaz~P40rAzu&yg?l`7sIgzQEdB^M~-VJVS+dg*HSkAWS_3V3PA-<)}Pj4@iLCT}Y_o z!3@B0utdDyXmiU}B5dGEEQ-BTv;EF^g<$V0wG7${>auDPWpVCj{&Ca9$>Qw zPTo7{b9nqXN?O`ENM~EG!p#sfYR{YV=gs-PcVs+u zPRx%cKg?DkrClQk09HiAK@d;{s24HJIVxBJh!j-TYHdNQdH@6-t#UfF3#KWhgf1UyT?mr1LiVT( zyRJ|r*O7RE8mNuwDB{}!rZm}kNpuW5Xk^$>8xkE#*qvI0Pzn+8S0gxdRKVgLxeZm+ z(ETWv3B^Uey~|cnU;~?2G%Lw1!f>;6;N_=ezXnmsN_N2YI$(v=wKGUu-cSg8$2%d` z48Q}iv3DgptixkSsjPh|q;H8ayX5-`@QYsB)bDLgt{&i<@oq%Slt=+64wahMWHD#L zh~VQQS!#np%K_;u8&5$a+zp|vjV-gpG9gktbI0M!wo$RfGY;b#5RfpUDhtWtzX)hn z%qIX9wib&WKtqNDGxfgPW7+5UJ7wJm%u1G@drL z%><31`>J_~<7w0Za#xUl;pYC~#YUpaL5TD;5p>(n;aPS#n<7T+JsU+xQK^`8x=Cd@ zHO2Au@xqv)uTb25w?+v-hD*E)K*|Fk=s2%-3{znMtwjx!NtCNcw0mTM{{p4?dOgq` zz*mskKfCN=VSHek=o0XV%#8tqiVh^}$kbu@5_17I$XLb+(0PF@u_w=LPJocL|I24X zWW34_!9d=YTAm(=@bSAWu?sZ6_A=8x#Pa|f&emJcQFk6{3BOjnASezDavVy zwo`z5gE8;^r1nh?nCS!g8u0zXZ$1yN_DEez=NmvugK1RCSfyAuH)N-r*Qq#SaLB?-dRUZ}r8tnp^L{I9f@j zg8-mQDp@kjWnv>TaWsi|vei&G5i342w5Nz8-^Mfvh@@(JB>f#vyd+{5TnpN0^DPYn zYh2@Q2E&F$n|eugf@m`Ym*dp(UwBOD>7deK!IPN5Bqxh%UhTC#DH~=giFxyC)tt2f zg7Fbepf}9fFV*!he&fICfI84@H8fZRzeJgEf9+;97c#1vAA!xNEtwXfln6Iw3!zo7 zGTtD7&J}8rk*4H_OOsK7-Q|)EsX8$S@@`#Vwq41=HB{`u3h--8kp*V3mgub*Ll6$+ zbuI`5NG^yAtr4qSK&LVhBOuR{hE**Z?djvdfveg$2pBkVl^mDQ(PC)B3Zzq&AetJj zvL@!fY`7JitE(Ob)$GI$1ou7#N-DvvcFb7a?Xf;mB?Uo+0v@K^MP3(CMdolZ)vLT! zVFc1gw&=hedVQ6AU#o_gmyfVaaP%gDV!Wz8dni5{k5sh#RyAqC+(wj7DvG zZGDniirZ>WK%nq)LS9{P;znVJtr7b3RM<&X)$Dxm)BF`cpVd$fRK-jI zUM4xGTDxF7?hBZ;*a+G*;t}XpKo|T5Wyp@K8iK-Rm4npARG_*NxKJhO-p#00NlpL} znC+X$+SBlm5$TLqxfk)@3sh;`y)RWbP*dsxi8eIttzB8FvU}5RVJ`+4e@JFWm?|ItVe_b@1TCQ;Fgz~@hn*X^Xl0nVECeCE%1CV;w}6y3U}f>($*c%9bx1-iVC3*k zDR5+_lBl1icLW&-4{dC)5^^H`Q~E{u5!C|$ZHB(MW>I-!*5rm%h@myrXl~ck#*6YA zx%xKT;F2(Fp0dhfBA_k!2%q3<(fI8?*3Ygg(wcLl1bs&9mvE)NxmrKq1llqWYP!C? z4n(#U{#Q0iHBNS zp~Q(DmZb@_84RnLYPDp|lJ*7>dF0@Om;gz8bQ);O$m?5Xt#>aU zo(&RgkB-PmU8iG1D6X_)RZ*bFNg2W0%Bo4bl*BNra&EJ-3xZ2POea|2sR(ccP$P>? zlHpXrwoGyEitxuxla!5c0K5Qg>_|=6cSob$R00CeCU*kauW&Ko;>(f_lgJ>H_yBHh3pSs7xRI%1>o*G~;ZojA> zMV-iHXCoGmH@D>o?Sw=Y1MJ!wm^#Nonv*}NtEqwv9f0X-V9rlk2g^ydF_LWXHXHHm zM*@q1KahTlnkNNvhQk66<-dK7x8^d$X22)q0-Z8)F3NG@zuLfujEnn+Y%9O!ld{d>2)|Ybv>tRJu`57D_5TIdsQo!L_&JN>`!w zXW@l}SISd(Q5QCZyr=4c-OUX>D7XWBsk~Br3=|3A-u_g z!RZK-B`$+FByt{eND?TtGv)jSITQHn~I+VdmXH|>ch6~5FcxNkKSG8>1w zeNv1_wpy$@{5EMG$}_e7?A2V!S|jMi-kjQdH~fQf5knOnu8tnSie+?$$Xp1Y+cyKM z;Xd9YlgV>};JqGwlUyB;kmNj>P8=EM@}hqSfwvJSnluPgf+HRGO1@G$FXjwgf3oEFo zcS*q-@N7}dh+H4)3u#a1wbe$#B1M1e$Wz;BEL0qc2qL!+RV7*kWt>_8j!?%`53jncdVa$lXeS9I zyE<(dE$EjX1n(8wf_7}3ffyS<4wwTCWf+)8qk@xJLRCG0abG)@pk;pE2ucxRPeSkh z*&qw>D_AP*2Pv;i3%-cgom-{@Maviw2^Vze0n?E)SqIgqa6rjCoJj|dFj$GVlt8LH z#XMy(^}qp3PscGc)^2^QFp^+3P*`?!!)kQkzv!AaLI+^3cABurt2(~uyw*VK0TMMt z9}uiikGVvn+pYX}o$wfAXiqE*x%V0ZVij*1WU7Nlw|$hbgS_@`RVIdP$aA8a&XaZ? ztkPo;!^bbwxKOKFZ)LHl4PH2akv7>3-xlo_5zb2+i`hc2nkui1j}ZmfRablVfVSy~ z5YbFpFUmSu4YUY9{Dmy8^A=L6>RNf5k<@yjf|vLI~kc z({8x|YA+@B$r|VgSgOv8=vWGfzqMl+Rq)p75CjJV7!s7#RUnKdAL(oY zP?B?e&L+Ux@;#e?W(@bZ5F#$9kK#R~AdL_8)9$E65a>4v3=biV+YtFs*!98{o3gs? zI4(p2x!#(#PFYS^C*(`>P}9z-GJCX`l+^=4wa4Q2Wv-W0@!`&7uek{xTj=P}@SR~a4wvsw( zO66Wvp_1B~R`e@j{-$bQvfBaD(mqqN1+vX32y`ccea#+!g$@-0EZ7EBx zdlPk<>eiS&nip_c%1S#U_mRqy()+-_N&NWW4&nCNM73k6Xb-2BEaZ3gn;TEs_j5^n0g}lsY2qkpQ#3V@kaY}${H|YKgm^Xlj;>YcXM!S-#es$G~olOz}i-Z3D?<0K!f zHZE|;g$S8RofRob!75GuVE>UooZ~jFS55Xo_3UtAq#wWZDKsbf^NA4JH2oq>mfd3$t}u&8Kv;0_xG)OAKFro3_X=nUCN zO$-C_v4hvnC04)_5}u%zuj=Io1E9rGcENnAsW?Zj-iV`ddnV3A9c}o3Q#-+Jgc`82 zD&6B_=}E_Fatc+V72fRe!Or@iK%{b4yDkHf^y&KCGI7(PKJA*G=%GRsO1e1fsnN{J|Ccc!@?hoj>eeCxV#lpUtH@ z2#{5*irWAQAdkh5wSz` ztG5o*-WeaO0;3bBoob{}RkeN}X_5aVrQHr^k(ARB8x~s~Q^)Zv+^&hbg&yS{4YQ_t zt31MZRe9X4+Y@6|1upef#@*pU8pjwHYy^AH)W5}P;*^7_c~ig*l1U2r?$K_ z9DHN|BWnD@N=v84!k7wJ9se!%X?=0qABo=we4)Z!(02=sF}RsELwQiigNsywRO-?JBLI))e6r$s`QKSB##;o$eA@}-_^ zbhe!ite$-uqAQ+D^ze=_w@#ZO8Q0y(gEtAnmWMBaN1=EuF1W$31#&FzO^{64z>0QnjzE|G2>s51s)Asa-3< z7c9=I>p@@#K$-TT9B!uu{JwiK0GfLDSpo#D#9!45?n%d}UPf|>y2-zG0%t?T@k+u> zRR$zB%CSTJCK?(xnI{qzoM`g`280V=#(MVv5yVu*9>f%^@~Zubd>d9LgBQQTiN)`QMfS=>2U7j_IBmfS_(M*g)nTpGr(2J(0I~P@Sb2_*;bjXQ8`Sunp|{$c22WrYETM=-XiN6;I?Ei00eC&x*BiLh zR>QuMjC6diWxFa_H;DY6)Yp$fmZz!ywro*jKZ=4#7xhRwufez>qf-ZmrqY!wdHAf(Gi<1mQ&YH8?~TrEkuc1>S*KPtmxBcAl+Rn6Bn+`yL)ayN88lm zkFe08a^?roHRzMf<8-S;|40(TW9giYv~j)48zoMr)5dA~+6O&yeGz-OVP7Oj%mWaT z5Qq&TgxDjAO&z0E3$iv=NW-dIfFn)ftl<3G-D4fFgpNU}ZRj}$g~?Tyz=?GPQ{X&3 z(7(INdpho_h6k%7k0F(|oSiUZX*-fP4%Ff_eL5W>SC=MyV_xCcY|+tM5pNbi_cN6F z)ZpOjDtd!Pn;gk2m90An!(s&h<9c z!BlJqO$>V6>eLLxDX3tB7Z3w14sr=)fvSu{2e+cC2#}kvb925`60>u+#Smc2Bo;9T z_)4p)t?C1j7@}zE)Dih@FrksaU=n2%4eDZ0Mb|6ffqSZsVO01!OFP~(w;k>gzuWOJ zcX`S?a(SHzuG-aFI?NJu4xLG#9iqHJhoo=y7@z+BQPRQdstY-IIw}OZ4LxpxbKYW; zxO~QpQQ51>H<`=Q+k(N- z2qQf+=ynAEK0X~~;Pp5ywP$~~3`IJ{E3iDd3yC+o>K z^|FfTf>SX9Fu!9+R!qbdU`4wj2Dt_+z5mi?qdPh{{I+nl+qk7dKsnZt1GM9GcXjm? zwZSFQWJmSXY;-J4<;kcN)Ok}{3RIw#{DZ5iws!9dfvXeA?LVB?8)b zSc}?p4pViF1u?$Yp(utT3wwM9LYXvU_u5C&5nJPNAvhipdK*5Gx{%P?byh%U_hceB zNF_dQ^-$Qi(@lLvBi*99zg9K%^;;gUeQ_SG0;s$#>$ZX0IfQ7LEN=ScIe@J9fH7f* z=SH3KiA0;umXq4lrlN$RQxC6;>RwkEzfy_`Rq=9;_7~c z%}h%BvnR(muG{n?!tOrN^SvL=um)qIKhLfcj+mv!Nk&Vz}np&lTp z0T$>byLChrByPH1&b&Q-x*}i^R$FL?^dZCP1g={uip~>tMGF+yY5Q$MgKSDVB&wEe zm3~7pYAqvVs`paUsOswO@hl*ID=?g2P$+1e7D*M+an!eZ8Y%7iR4nT2_u8iSJ-B#J zR5G4G!cwF1(S;i7;YA;5C{jn2gq(FUL-)U^V^3|bDcz$OMyo70yM^;zvl`{l%12!< zqMoV+fgh?EYRIzGe%f=pDxwfaC7209s;2|5RR0GATFvDszjim^$g1j*L;0hAC9gzO z)tEiCZwVQ0y6~sKabavzXC;^JA|UdJ#G>6e+!->WUM+$yqJVXD5=Q$kUS~cp)Jm!9 z(zOw)t8m^YW|jeQBdLG1@1Z*Yb|NjGUUXxNC_)DlOeAgA@NBOC4i455byA>6-W(O}@zNod z+u$|&kqSyk(du-z6X~Rz6IEkZ=jGG=pqdsjta!PtU1?>U#uuGT$-2Hvn;GhaSvHv~ z24mByNK_{|g+!r4Zvn;ONtU=R+^i+tDg^pB9dK5SA!{?b*9NVTs~?rd#2?%J7Z&e2 zii=mO(Ym?uW7(tn<vB*6uW2!0>dBKU6}TaciGcht73K08#sNMMI{Z zI^=DShWYWyC%{m^HDFn13jA?5`{VEHmO^B`F3Ijv)I~fBOepO3x(vw7du3(0hd}#L z)0k&vqq3)yR7luO-IYU!k6}xsGu`MD>urNRH@8_9&g|Y~VAU&hzXnG2+Gc>g!AG>g ztxLijP)Lx$BAPbI17OY2GJ0_7{vr_98{F{eyxQZ<4^Ky-Zf~*L8Gdf`(q$n^5Zc0m zZp5XQV~C=9$#wQ;7#yu`9kqja)XV!T0e=aQ@|%*fLPt$He1un3_;#@7H^21!c8u>y z5@S_kA*^(8OBbl*v(-wYR;zhe;a`0Oey@)4u^$5SOze~;*??YxDCyjAc%Q<@uU{YE z?zEN2o=KZ$)^PP2_j9&DV&&(0q`MZ+ije&N_(T!0Fp@Po@E=mYC;OJ}-s5E|$F))yU{QQ;CXW1!5T>lB0TiOBeu6o~39gP~i%_Fkl+8=`g= zr%A8?KE^`yRHY~$uh3SJxih2(OoG2?c^W=ZKSQ zU%nAMy_lxH6Wz#xrmREm4<_oCkfeTBD2$Bsn&|PY^)7Mwv5w)8*R+vnC1TQDt9x4X z`jb<02%kUyeE;jVtkAdLnZGz*QqyVvvQvK?SAP3(+Y#<~f4hx&{KkK~ZTK}AX?}HF zs{}B~`?vH_5VJ=YNF}ZGBhL&$wa&w;5qW&X>yqf9smA5o@%fNJeYB+D$ggLC|6$H& zxW?^(UlF1Z<5g5NMj{D6qJSG_5!EBGqkCKj#UJsDu7i5XLrKy^wKwRoPU@B%T9Ge} zQXCvP!|yz~WZGV5x;O5T-qk=`L=IN<&&Fg_^T%p;W75R@DfH%BS@xY2U)6IYf~>A& z-K{HNlm5{fpE^L-0OIA8Nxvgj*3jz0Lih-*Ub`X5 zKsi`Mf}YQYqI#l1{oi;${M2Qf5jN6woG9k4 zZQ<6y23=v6q-EgVw??n??D<4p0R!8rh(}!vS;3$vzk#qCl_60$;^+QumE(O~+l5d$ zD1-XKM$;uo&*dg8gihG$QVy#dCbXwq5yCM4a@n{}{DC{FG2I<8&~V;!3+dc5-4MTZ z+d*P^?~^P^g%tR>F0E3dH#A0fdQ}pRwx{l8x4PBGO0m!Px-edYI|GC|!nzl%6t$%- z%czYnXar;w5EWHus^RO(C4xX@ADuyjXSX*Rc#tj@xRPAlTb(CYr`x><(BF$@biNtpLMngH;Og=WLI!f93j$NyO=lccK|VLcoOUIX zB4f{~Sp*%VoA++hmb-nvRkTs%<(IN4a(!Rwk?z4Jp@_DguEyGT2NMTH#5;!qBD}h8 zBH0qVDrOSIAJ;LuVS_|NZ1lM8(gAN45JAQa)eA38nMFptdatsWtR<=6oT`$u&I8~I z(dZU|duhV~T+}UaZ~4^Km>G^ImbdOLpGkq5ZlDsSk{KWulxOfkB}f*&AGj!ud$QsV!TLW>v=j{EWM-sA2aAk@oDH9N)uRkMs#JSJvyD`Mak zL3AU8L5xbw)D!823_QozJ$!t)O&;^Mfxh}i>#<}RQz%#=}CN)PKCKiirEVnT$87lDO?R@4mU+{q;Tf zJKuNC6aF?2MQ#To&jVCT!;txxp^Vb9O*8=b!MP|TM0aGhZltdgUfmDQ4ApsmY9h5p8f)<>gc9Oo_NNE&QvsNW$ZZ~}E!IaIhD?>5QCPQ8TB4GpWGYxh z4T9+T<3}(m5eO>Oh?WRL7@Z;%B2-3b(nxq2^wpmN$X^NI;tJU#m_l$OWGF2a#!)6D z$|T-QNNvZoH0|EYaqHlXxVc;iv-PTuhank?*fvcvX8QRiv((vcPmNtE$IMt9kcJ*f zTvel8gjJx2G9*%E3C+nse9pZ+h_?lBts)x(wpJ1ma#6++rZvc{)OG`_$;R&E?)v4& zc-P9~x~qCUw7vI)5Qs6Jn?wX-49+>MwWOPEHGYS@HvPW%qv<=tKACP#Y8Fl*dPan0 zg`NsS*U$_z!jo^qT5kzpry`drwrWVk(iUY(VNSf+LNC2|`N8z|(_c;Q4ExMU#WY=+Ee@J129LU{?NXX&Sw@m1s4DDiR_8v`JU;jF`Vl6Z zqnd;h7)}FS5e81EPYB_~w*YZL0F#Q`7%*N*F?3L-Q8r8Ew%0FbS0De6+20Khw=d1I zj2I(DQ4lU4p5FLb|G?bG{Ub8obT!dJzyqR@L>k-n3vSb?``z7(_a-07y6twW)xsD< zS(b3qVBw-)tMAXREuYccAHlGIup~;~DD~?QUcUg{%7v2A2O_3Y5|lQ=j4E4A;V$ie zKfnF>J*`i67AM=SRtxVvy7>Sy;koA46>*sDdg^A(J5EQo6bN zQ1*_a{~`HD=7-~#O-xMSoTDfTR+DbM`JUl7CqGdBxwieQV)O*UBFex)y*Cmy{Yen^ z&FjDE-(alZM9BrFfi0$TJA04kcb@q5&S$3UxqM<`0)SqxNBW806Wjk~{hwuX`LbqV z9$`_HRT26Ih6rUGF-)mKNfHY;8+z04m6v+Q2x|IO={14J6vV9X=v?? zXEccwPzf|%2pbhW@o(P-Kqn$Qz!FK-FpjcOYP+L&HoxWAuXjE>qZ`uc>1jlSm6a93 zE!~&5|3>+rm@N-$8s`y~6#52=%%0`6dh(s-jpY}^9*(C|olb{V ztA)kM>F+kXvpun!ZHs5Hv5?VyO)iAvzlnz5I=5zXK7i{+A!QMAlt~G)DV|9$KlVHM zCnu|!YO1Y0GLZ4Q7n+EFh-Es`n6>D>L0aknwpxT)9Cza5$uWx8HB(Hk}Ce9X-*k z2-PmX*#Bg_`1D<{|F6jI2jJ8tf2fo8Sa8YnCHBWXyZPAh)*b%E;lsmsPE1UY=Q*8D zhxSUxE`4YC-p#x00d;;%psPx8jYXauiQIDl+KR|XS!Sw?%fQX`9!mFY=yb^Q91)>u z8p^U{>W0Y|Lb_)Vn|F9$?UAy$(uAcOWsR22+8J3>(reds{d05VAJCsX2z57zbjYr`D&V$?_fv;Y%5;i33NaT!2y{>=@f_D zrS?cZ-nyuDHfuIbLtWR}-gDcrrvBMZU0%DfE-!XwZVt*heEGt~i_ra@J4&XHvqaep$?oUogc32CWl3fPu;6M#Du zi5??@RY(b@RlH)ir)f%>rWj-J-s8PTcDTNsdQa=h>Xti9y`?(cbQTW9^yL6YfGUA) z*Ep{Dk>@3a<&DC&?UqZP_Phc#TMgSzM26R!WXA@kXRGQ8bDFeR+IqZ<6VI34`&?B= znkh|5Y%1juvo+Z*xmZm^u?fgbjVz_80~n7`E23aja1u;bFPOO`NpQ{~BB&}cM(n1} za87n^`&d5r;g>^p_zH39`<3#(0bgBG&fK1I=Pyq4iLWg3$Ip27-Ij6ZFU;}_UtZw8 zmjWj~*5(s`&}Z+*C-~?}bbeX0u8lKC&X^4^*zIl*PK7+icvkp1=kRCDG*MCnD}wk4 z*Cp`CIt#5Buoj#_1dOO8u`g|FEyj$9Y8`-?%xWX4TlB2_x1rzrm4SXUBHWqtVc_~5 z3AgNBW#y`r+kjmjHqKXYYm2)Cu5BA;fUQ1C{!m}%zdnoypN{3L7~`d5tMgT?F$QA{ zT1k$I1q>1K7V+oPXdH1haL$CNmkYCrh$^z?uEG-NnPUwnH#siZAnZvE8@^SrIBD6| z5q1tEV=on~G)jAyWtSCFAn#b*hsVsW4`uG!o!YtxVlX-3!nK0)gqxmsVf`Iw0Wpjc zjzCn=Xj-v}F^(kf`GbXM1QihsYQ}(M#xk=MkXti$ZcoX6xxdZKvX@4}lN@s)~ppBE)W;sW!1=wR5YpH*Rp!nsaQsuh0Guwz>AdcKOb+z`~Uk zTi=y)?Q1nBJuDvzJpXgBani97SV;wcUCP{MF=dxlYcbjd9cr>ZkE#+vznh|q}DGTjzW7EOcq{wx4%E#c&#)s6F~kNDwJS7fbbq15?5 z>FM4@6~13^=Jmi41FQQz2eXQW`M}^rAPDpx=(BfE&Bh1^50qMNPjzmiQTJmbou#I- zx)NK~+OxY~*EO}T$+pLNjFt+GLTDmNdR`*iFX(2Eq67@J8Xb0a$Jb9amDY7FA%wF4 z^k~y5`# z&T64@bTOb*811JQ`{V9C)xvN%q-jRaD@hWPB$49K4>qLfcNep#c(*J^SLX+F;hQFzdvu9nu_DHER`o3D zMUbVM`1mr#yC<3b`EmK6$l{dIL*r5&pB_9Vd-6QT7&Ee$tE*%mD-N~xG%sRxNrVBB z+6!@TApng;ayClmpy!WiG zuF^|a>MftE|Ci=|9zz#l7!AG>;)M;3B5qU(^Qx3USJN;*{ek+?)@S=qFD)%G7z{AR z&~CR`{3aiC<@{{cemK6GJp0_gU+Vpj?{)Qf6VV9eTIh^u8R`g?6?l3@7yjMi;NBPA zv-{H4qrp`tXHMUzcek>Z5fOU59!twhZ2T9+gV`1J0i2!$da6{p5RSho)!FsMzt1Dt z$nBU2A|o}Hx{()xBTvV)fcAq&aX|cKzrcXaP9DgO0nLERWyDi>(y31Y0 z{z>n#4WB8$sqN+s45tKo#!$tGZZ_!jJuv^<=Vj+R1BQTUEY=8)h?P;w@2E0^Hy6p7 zY}b!}H~)L}17p|ad5-snd7f9zk$7uvp)BuPS17drLNhI==CuKb3M)vt@w6RepS zph5A`655gQVT7eqSU#wo<|s~2iO^?M(Y6Q{umX64b_{ytw^8|Gjd@OR zYRF@xqn^(9ujfy$`BT0)aUF{)C`tlM5M)j&x1~6cTs8m4=I-VDWS6hJG~UCdarNSV zn*9DnpWpQL=r^4fZFe(6Syj6wx??S5Wy-pRjc@$kiNC*aZ~ZIrRVJLZ=Jcl|A#??{P=>N#1qC{d`%4fq{X8>Q+l|CkiC5ebxK@VJ2oj%khnOvw!wBecnyR)0)IZwYsvFI}Abx z#StVgUgd+RPOC5_BW9~nnxhb0ZP(nGB~hh=H*+=@bNXxMA8xuiDeb1Phzo@pjbd;J zEl`Jxw07(Aw%t54ejSU;U)PU>LZ*bKqu9*aB~uAT0AspFNi!jgHD{Osgr-x|ykh$|FCF}hX{lFH5I zxijXe*3MTxZGLC$XX2q`Q#@rmT4GeOSaF(&B@-tZR@34{m`IWusxX0uT#Qe26tkiM z!Qg~Cp^>(BWjxIiil@^nt7lB4F^zgE^;D|bXw*Oyi9OS)kJ_!hhvbTO;gd8ia`DZy zrePUy0i*#Oqd*e@qe?1`oy_xGrpIS!`Bo?VpKycsp5_AHU|qX6O~cgGfN;7$CS}vo zmbZWy8TD#JF$#&UxCwV8X^l;e)B95UCg@B%#$7dZCB9n2L`b%|c>8 zyg+)kDse7n8i|rP>!j1^Ff}!WG3KnX_{-)@&Q>dymzU`lu_gT?r4A>k zbHYvJNz2X7&N4MMMUo_E$5`K-bpY#jvaahv(}VBOHH1M}Wf z*ELZ>z{Um$QHa@^3wGl`ZATR&}M_rc2W_Z@cjGt>17sq*$%eC}D_dEf7rv zwP;j=8m)^{jVp?Rm6esV@;rn<(==zF@cPb+$l2z}%E}5!sA{#bw8Bj_=)9_lBh{)#LKj5)djxSFv$XT|6y@WuPCSHiBp%6JbJy8S!S0 z%FasVCW(^af~boTs|pA~Kt)7B4IURuY+O|r7cnfNELrGVOZ7Aa=_vA^hzXtqORhp2 zrL$J7NM+P7khf?@sgA=I zkIkstGe8-NrBcB^CPX(7bTJUOSenA1HsXU&prej^1aWUsZ;t0eDk6ln4t!$_z7+_M zTH>X^CE$ljiQq*jR7e=*9%Bq|vHmpz80r5YLL)*G6+a#cPp>t>&)$2rB3mP3Bc?PM zjUx^>qZ+f2Tws<0Vup@*5;cLCCB&%c_afR`>lIubkc-!T0p(|=t4FQ9gF$~-ViwK-sa~tirfgy zMTiQ8AayY+jsK;i2k97e6b-<4iBBgQZ;76qOQH!eYQP$e!AKAcJ}AB5-5IcA z@d8w#^g@T3&dgpul+x+U-n)CIwK<9WpZ2=#@4xo`F6;X~IE~Zzb3=co>qV*0;V;<>t_7g#4P@iwmk1qmdsUbfUStd9Y| zTVP;i68~i*#Z&Y~>jipZkI1cLC-XG&6_#ObWSo3TMb<OxcFxcbN5=Q-4hR%xQn2>VnloLT~EMt9))w zb_t9z`$fds1weiDS%fvYLsiPBH2ZnQDk6uTc5^7mPDSrl!}_vfTUQ)F+oLxD4{1WM zdd9!Hc|m5n$vQyR>+YsqvNZO#t<^15JLgwo1!6$$$ooOkyMm*J0F*s8gp{jW_;jL| zl)p)?`07}`!LEM`jY9)Z0kt|Lq(2FsQU|U{&Lnw&nv-iz0UQ(1_C;r*+zXKT!Vl?D zy;NHGm#6;#j+0`o?rE&cS33Uzu^t4%0M>8gZsvJekQx2@V+fHo*5xa0rzlknI`ob) zSpqpmmr>I{XwtT=f>`%xcZ;5%V%3U4s;k`BBhPV`-mZVjhTHYJB=sn`2^Q$mRE>02(+W)np;)L1!GUvU2 z{O{<&F_nE6Qe#D~Xf|dD+?d3-D1(IUiL`C2;PPv4CKw8H)v7h8^obJ&Z6D0CjVUe8 zXq_NAymxmegP0ekG0q%cjYX8Luf59F*IsobYlouaRHM0~(;q09t|si8%+WEC zi^loRmFYCwYI6mr1j_Rj{=cR0U6{sf%n-UKfmDA^Okic}5Rq_UeN+~H!uVe{{lz}^`kQW`|!xuR17T{A$XG+1=ziuMVJ_2G<=DGAn&T*-bA zD+YfZ(I0?wrrO+K-v|fy4|DX;36jHEtgI3$_c6CFMEwO7gd?t7-aKL)pd~&(x0thy z7QxaE*@Ws7r4mmjvcx<3IQ(NG=PY9s!vkrC2h#ks?>HAOpF`dJh_{!DY|1~1bS#dw zebHHv-OtHAK`}V?Yl_c4`i+rf7Sm@iZ()Cg+WH8Q3O|NVINqP;hpz`Xd?0}cEM8H= z+`36mP?GrceEI9%2{WYQhDKVxISl-_Sn>l$M(Eo9D?JiW}=_T2jUA>LC80 zfoTera{^p)Wi`>}Gf;(|ZwEZQS^k|*9wyt=f4ZOo!xty7{%}HKD9tBZ50g$=%v*mj zi$%+;kV%e@`;VlUJ=eKfJ&9iYp{U)tsq3a*mURyT4^q&J?Qw8_f^^EF=G-z*K6A4Q-r}xlI;!r`()8e=1qnouVgx3+VHB91|r% zQJ$kGe(Pl9p~NdD-QBbr(SHForNq0S7nS>+&Oz-^QfHN=vA6MuqQHxcUJp$bNst%t zhoZ%hhv~ZHvseduC&kuI$^k?+Ves;_U-A`;(E_kxF>1DgHe=9$GLP~7^>HhNpRw2n p(gD^ETK4Xl>NV?WoW`FWzXM%bGkOQp1Xln6002ovPDHLkV1f{P7Cry~ From 1cee2ce4e75da1fb90bf911c48b216b739c6ed23 Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Wed, 9 Dec 2020 15:18:33 +0100 Subject: [PATCH 10/18] Updated Changelog --- apps.json | 4 ++-- apps/dane/ChangeLog | 3 ++- apps/dane_tcr/ChangeLog | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps.json b/apps.json index ea05a81fc..ec66d0420 100644 --- a/apps.json +++ b/apps.json @@ -1492,7 +1492,7 @@ "name": "Digital Assistant, not EDITH", "shortName": "DANE", "icon": "app.png", - "version": "0.12", + "version": "0.13", "description": "A Watchface inspired by Tony Stark's EDITH and based on https://arwes.dev/", "tags": "clock", "type": "clock", @@ -1513,7 +1513,7 @@ "name": "DANE Touch Launcher", "shortName":"DANE Toucher", "icon": "app.png", - "version":"0.04", + "version":"0.05", "description": "Touch enable left to right launcher in the style of the DANE Watchface", "tags": "tool,system,launcher", "type":"launch", diff --git a/apps/dane/ChangeLog b/apps/dane/ChangeLog index 1480ba04b..3f61d492a 100644 --- a/apps/dane/ChangeLog +++ b/apps/dane/ChangeLog @@ -7,4 +7,5 @@ 0.09: Added Unix Time 0.10: Added Counter, Added Battery Display 0.11: Code Refactoring, Improved Description -0.12: Move code to Arwes Module \ No newline at end of file +0.12: Move code to Arwes Module +0.13: Improve icon \ No newline at end of file diff --git a/apps/dane_tcr/ChangeLog b/apps/dane_tcr/ChangeLog index 5ca22a7d9..6d1befd33 100644 --- a/apps/dane_tcr/ChangeLog +++ b/apps/dane_tcr/ChangeLog @@ -1,4 +1,5 @@ 0.01: Fork Toucher and change looks to match with DANE Watchface 0.02: Add Frames 0.03: Add LowRes Support -0.04: Move code to Arwes Module \ No newline at end of file +0.04: Move code to Arwes Module +0.05: Add icon \ No newline at end of file From 3156e7d9ae2caf7cebe325329a27b4e1e3b7c7c1 Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Thu, 17 Dec 2020 11:09:34 +0100 Subject: [PATCH 11/18] Update Core --- core | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core b/core index 0389671ba..8bfdeebf7 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 0389671ba6678a12c9f35644ffb96c190bbe0278 +Subproject commit 8bfdeebf705ced95699dcbbccfa05a99e7d3f4a9 From 0f32b7804c9e340a4f43d0660964e14e5524df2d Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Thu, 17 Dec 2020 11:40:34 +0100 Subject: [PATCH 12/18] Fix DANE Icon --- apps/dane/app-icon.js | 2 +- apps/dane_tcr/app-icon.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) delete mode 100644 apps/dane_tcr/app-icon.js diff --git a/apps/dane/app-icon.js b/apps/dane/app-icon.js index ab5a4d606..0516a206f 100644 --- a/apps/dane/app-icon.js +++ b/apps/dane/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("l8w4kA///hFC885ospj+X/+Ow0xkkhlFC8cYvWnsspgkh00x4UjMP4A/gHuAAXgCqOfWwIABzfuCpsOzOZ/wtB9P5zOeGJnn4/JB4cO9PD44XL9M2nIOFBBANFsVnBo3ssVsC5IWB7gMH9khBRBbBsMTBZHriNpBY8OmOC5yVI4WBnwKHyWB3ytJtAjI8cYi5pJ88YKQ/p7GCuCYJyWI644G4OItoWJhZGIIoOL9VVCo1VrXrxBGGM4OIn2kqlQglAglFqtUotenANBEQvmEAIuBqgBColVqoZBHgQuHVwOlgoQBDAQCCr0xxCxGFwdQqlUolFopEBotaFwODFwxPC0oqDI4QuCnDrHRgdFqFQgEFqABBoiMClguG4S7LNYONyAJFg4JBdRV9Io5GCHAwAD9koBg8OywhIBgUxiewBQ/CixGJ20mzwiImXcIxHss3OERELm03BQ8HnYWJgHu4fHCw+XIhBHDzOZI4vpzIWIhIXDv//ZAmf//uCIwAB+AXD92fBQfvzw1DhwiEh4KD93u/wQD/wtDgGXFwn5vwUBAAPvDofvBIfuvJpEhM2mc3u8zvhtDh2cuczu9z21+FwmdiIADaons6IKDjYuFsILDiQjDh1yxAJBjESnwuEzkzAAc5EYeZm1rmc7tZdFT4IAFBRoA/AGg")) \ No newline at end of file +var img = require("heatshrink").decompress(atob("l8wxH+AH4A/AH4A/AFVCnk2m0wAAc2nk8oQrhg0AAAUGmAGFGQIxaFgMMlYABEYYACLYI5BBgMAmAwYoU2gAtCmwpBNRIPClcwF6paElZMMGAISDhk8LacwFqAvHSAItWRIKgQR6qmXoTvCIwQVUUiaOEgxHOLgkMLiJeVCYs3oYuSoc3JKM8gASCg8+FqX+oguEgCnMRYkHotkstlFZoPBstGnwbDaxouEhFF2eJAAIwCx+JAYIKBoNlAQIQCsk/g68QmARDmVGx9BJ4ImDAYNBGQJYBAwIICoFFFzYhCFAVlAgQBCLoVlF0CSDGoYFEoNGoguRXYguB2aACQYYsDAgK+Cx4NBLqbqGWALpCdYQABYAIDBFQP+MIVkLos8Fxc8gARCg9ECRYAInwuDgAuMoUGFwc9Fyk9LgcwoQTMRoifMDTk8LwZCOPA0wDIUGDJ5DDUBrWLDCBEEmxeRC7clngXPoR1DUjIvOFrIbDd4MlO5k8IIUGRKQvGngwBgAeBfxINDT6AvKAAM8g0wBxEwgwrBAAQnROAIUDDYbBBVRFCQ4QAHO4IuMhk2OoIABAYcwgAuIgEwCIIAFM4JzJFwbSBABAuKCpQuZngUGngu/AA6xBAAKmGAAJEJABRDHAH4A/AH4A/ADAA==")) \ No newline at end of file diff --git a/apps/dane_tcr/app-icon.js b/apps/dane_tcr/app-icon.js deleted file mode 100644 index 6c1b97c1c..000000000 --- a/apps/dane_tcr/app-icon.js +++ /dev/null @@ -1 +0,0 @@ -require("heatshrink").decompress(atob("mEw4kA///885kkh7/vj+Xssp/+GhFCosplFCgkh8cYw0xpNK4Uj00xMf4A/AAPuAAXgCqO7AAnuCx3lCQO+FwPrAoMuFpuy1YQE9eyxQxLh0i5G+BIvqrmCMZXir/KBo0Ol8cEIwMDksRxwLH9EX5YwIguBvkgBY8C491PRHqjsSEZEOw/RC48O3md+RrJl/d/ZrHk/XLxDJCvtyC40C5vR1wXJKgPcqAJH6KbJbQINI8V979WswVGg1mgX9Ho/ovvc+1EokAsdgsdmo1Es1l5vXSA3lzvc81GsgTBs1kowABs0PC4KFGC4dAgwTCDYQvBhwXI9AvDLAIrCGAVgC4RHGL4YrCAAQXCs0FWpCnBR4NEsEGAINmAYIZBgqPBU4yxFCoIDBslgAYMLa5EOrI5Dsk0AYNDow9DuXgC42hQIUGoYXDmgwB9F5/YXGgElu/FgEEmgXDodAgHsuKmGMAX3jXgF48O18cUwxIC18YHQJfGh2P5ZGHNYXMPARzCsg7Cqq9GGAmo1aDH3UrFxIlC3bLH3ZdIhYmDDAwGGGQgXDDAPuC4vuCQcOC4sgC5O7C4nrC4uy9wADC4wAD3YXFxlYwUilGK2QXE1GIBYOF5QXF493AAVxwQLD2sXBYblCC4dXBYd35YLD3l9y4JBy8SC4u4qoACrGrBYe65nFxFV4raFRQIAFBYYKGeRYA/AFwA==")) \ No newline at end of file From 35e8ea29a14e354db7f1ea0510bae77e8e8f5d33 Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Thu, 17 Dec 2020 11:43:29 +0100 Subject: [PATCH 13/18] Bump up Version from previous commit --- apps.json | 2 +- apps/dane/ChangeLog | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps.json b/apps.json index b29a52776..7b68fdec9 100644 --- a/apps.json +++ b/apps.json @@ -1492,7 +1492,7 @@ "name": "Digital Assistant, not EDITH", "shortName": "DANE", "icon": "app.png", - "version": "0.13", + "version": "0.14", "description": "A Watchface inspired by Tony Stark's EDITH and based on https://arwes.dev/", "tags": "clock", "type": "clock", diff --git a/apps/dane/ChangeLog b/apps/dane/ChangeLog index 3f61d492a..4c5376532 100644 --- a/apps/dane/ChangeLog +++ b/apps/dane/ChangeLog @@ -8,4 +8,5 @@ 0.10: Added Counter, Added Battery Display 0.11: Code Refactoring, Improved Description 0.12: Move code to Arwes Module -0.13: Improve icon \ No newline at end of file +0.13: Improve icon +0.14: Switch Icon back to 8bit web palette to fix it \ No newline at end of file From 40d818f38f875887ef3d892eeee604db83ac54cd Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Thu, 17 Dec 2020 11:48:32 +0100 Subject: [PATCH 14/18] Hotfix for icon --- apps/dane/app-icon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dane/app-icon.js b/apps/dane/app-icon.js index 0516a206f..763ae5dbc 100644 --- a/apps/dane/app-icon.js +++ b/apps/dane/app-icon.js @@ -1 +1 @@ -var img = require("heatshrink").decompress(atob("l8wxH+AH4A/AH4A/AFVCnk2m0wAAc2nk8oQrhg0AAAUGmAGFGQIxaFgMMlYABEYYACLYI5BBgMAmAwYoU2gAtCmwpBNRIPClcwF6paElZMMGAISDhk8LacwFqAvHSAItWRIKgQR6qmXoTvCIwQVUUiaOEgxHOLgkMLiJeVCYs3oYuSoc3JKM8gASCg8+FqX+oguEgCnMRYkHotkstlFZoPBstGnwbDaxouEhFF2eJAAIwCx+JAYIKBoNlAQIQCsk/g68QmARDmVGx9BJ4ImDAYNBGQJYBAwIICoFFFzYhCFAVlAgQBCLoVlF0CSDGoYFEoNGoguRXYguB2aACQYYsDAgK+Cx4NBLqbqGWALpCdYQABYAIDBFQP+MIVkLos8Fxc8gARCg9ECRYAInwuDgAuMoUGFwc9Fyk9LgcwoQTMRoifMDTk8LwZCOPA0wDIUGDJ5DDUBrWLDCBEEmxeRC7clngXPoR1DUjIvOFrIbDd4MlO5k8IIUGRKQvGngwBgAeBfxINDT6AvKAAM8g0wBxEwgwrBAAQnROAIUDDYbBBVRFCQ4QAHO4IuMhk2OoIABAYcwgAuIgEwCIIAFM4JzJFwbSBABAuKCpQuZngUGngu/AA6xBAAKmGAAJEJABRDHAH4A/AH4A/ADAA==")) \ No newline at end of file +require("heatshrink").decompress(atob("l8wxH+AH4A/AH4A/AFVCnk2m0wAAc2nk8oQrhg0AAAUGmAGFGQIxaFgMMlYABEYYACLYI5BBgMAmAwYoU2gAtCmwpBNRIPClcwF6paElZMMGAISDhk8LacwFqAvHSAItWRIKgQR6qmXoTvCIwQVUUiaOEgxHOLgkMLiJeVCYs3oYuSoc3JKM8gASCg8+FqX+oguEgCnMRYkHotkstlFZoPBstGnwbDaxouEhFF2eJAAIwCx+JAYIKBoNlAQIQCsk/g68QmARDmVGx9BJ4ImDAYNBGQJYBAwIICoFFFzYhCFAVlAgQBCLoVlF0CSDGoYFEoNGoguRXYguB2aACQYYsDAgK+Cx4NBLqbqGWALpCdYQABYAIDBFQP+MIVkLos8Fxc8gARCg9ECRYAInwuDgAuMoUGFwc9Fyk9LgcwoQTMRoifMDTk8LwZCOPA0wDIUGDJ5DDUBrWLDCBEEmxeRC7clngXPoR1DUjIvOFrIbDd4MlO5k8IIUGRKQvGngwBgAeBfxINDT6AvKAAM8g0wBxEwgwrBAAQnROAIUDDYbBBVRFCQ4QAHO4IuMhk2OoIABAYcwgAuIgEwCIIAFM4JzJFwbSBABAuKCpQuZngUGngu/AA6xBAAKmGAAJEJABRDHAH4A/AH4A/ADAA==")) \ No newline at end of file From f5d0c36290a99253bcb0305aa869cdf01d81539a Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Thu, 17 Dec 2020 11:52:05 +0100 Subject: [PATCH 15/18] Bump Version for hotfix --- apps.json | 4 ++-- apps/dane/ChangeLog | 3 ++- apps/dane_tcr/ChangeLog | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/apps.json b/apps.json index 7b68fdec9..99ef37037 100644 --- a/apps.json +++ b/apps.json @@ -1492,7 +1492,7 @@ "name": "Digital Assistant, not EDITH", "shortName": "DANE", "icon": "app.png", - "version": "0.14", + "version": "0.15", "description": "A Watchface inspired by Tony Stark's EDITH and based on https://arwes.dev/", "tags": "clock", "type": "clock", @@ -1513,7 +1513,7 @@ "name": "DANE Touch Launcher", "shortName":"DANE Toucher", "icon": "app.png", - "version":"0.05", + "version":"0.06", "description": "Touch enable left to right launcher in the style of the DANE Watchface", "tags": "tool,system,launcher", "type":"launch", diff --git a/apps/dane/ChangeLog b/apps/dane/ChangeLog index 4c5376532..48bb5c4be 100644 --- a/apps/dane/ChangeLog +++ b/apps/dane/ChangeLog @@ -9,4 +9,5 @@ 0.11: Code Refactoring, Improved Description 0.12: Move code to Arwes Module 0.13: Improve icon -0.14: Switch Icon back to 8bit web palette to fix it \ No newline at end of file +0.14: Switch Icon back to 8bit web palette to fix it +0.15: Hotfix: Remove var declaration from app image \ No newline at end of file diff --git a/apps/dane_tcr/ChangeLog b/apps/dane_tcr/ChangeLog index 6d1befd33..f50ba932f 100644 --- a/apps/dane_tcr/ChangeLog +++ b/apps/dane_tcr/ChangeLog @@ -2,4 +2,5 @@ 0.02: Add Frames 0.03: Add LowRes Support 0.04: Move code to Arwes Module -0.05: Add icon \ No newline at end of file +0.05: Add icon +0.06: remove app image as it is unused \ No newline at end of file From e7d5fb889caf81a61d5809f40c3f1b6876f3a0d8 Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Thu, 17 Dec 2020 11:54:48 +0100 Subject: [PATCH 16/18] Update app.json for hotfix --- apps.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps.json b/apps.json index 99ef37037..c6d7af1e9 100644 --- a/apps.json +++ b/apps.json @@ -1522,8 +1522,7 @@ ], "storage": [ {"name":"dane_tcr.app.js","url":"app.js"}, - {"name":"dane_tcr.settings.js","url":"settings.js"}, - {"name": "dane_tcr.img", "url": "app-icon.js", "evaluate": true} + {"name":"dane_tcr.settings.js","url":"settings.js"} ], "sortorder" : -10 }, From fde47a16ebed3071751e4c2d88cc81c15d4e39b9 Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Thu, 17 Dec 2020 11:58:55 +0100 Subject: [PATCH 17/18] Update app.json for hotfix --- apps.json | 2 +- apps/dane_tcr/ChangeLog | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps.json b/apps.json index c6d7af1e9..0dd96d3fe 100644 --- a/apps.json +++ b/apps.json @@ -1513,7 +1513,7 @@ "name": "DANE Touch Launcher", "shortName":"DANE Toucher", "icon": "app.png", - "version":"0.06", + "version":"0.07", "description": "Touch enable left to right launcher in the style of the DANE Watchface", "tags": "tool,system,launcher", "type":"launch", diff --git a/apps/dane_tcr/ChangeLog b/apps/dane_tcr/ChangeLog index f50ba932f..4f6fe2edc 100644 --- a/apps/dane_tcr/ChangeLog +++ b/apps/dane_tcr/ChangeLog @@ -3,4 +3,5 @@ 0.03: Add LowRes Support 0.04: Move code to Arwes Module 0.05: Add icon -0.06: remove app image as it is unused \ No newline at end of file +0.06: remove app image as it is unused +0.07: Bump version number for change to apps.json causing 404 on upload \ No newline at end of file From 6f26bf47b59a9c95d7ec71f7b62975032cb6355f Mon Sep 17 00:00:00 2001 From: OmegaRogue Date: Thu, 17 Dec 2020 12:01:44 +0100 Subject: [PATCH 18/18] Add pre minified dane_arwes module while automatic minification is broken --- modules/dane_arwes.min.js | 1 + 1 file changed, 1 insertion(+) create mode 100644 modules/dane_arwes.min.js diff --git a/modules/dane_arwes.min.js b/modules/dane_arwes.min.js new file mode 100644 index 000000000..c5e5812e5 --- /dev/null +++ b/modules/dane_arwes.min.js @@ -0,0 +1 @@ +function Arwes(a,b){this.cornerSize=a,this.cornerOffset=b}function drawCorner(a,d,e,i){g.setColor(a.C.color.primary.base);let b=i&1?1:-1,c=i&2?1:-1;const f=d+a.cornerOffset*b;const h=e+a.cornerOffset*c;g.fillRect(f,h,d-a.cornerSize*b+a.cornerOffset*b,e),g.fillRect(f,h,d,e-a.cornerSize*c+a.cornerOffset*c)}var C={cornerSize:14,cornerOffset:3,borderWidth:1};Arwes.prototype.C={color:{primary:{base:'#26dafd',light:'#8bebfe',dark:'#029dbb'},secondary:{base:'#df9527',light:'#ecc180',dark:'#8b5c15'},header:{base:'#a1ecfb',light:'#fff',dark:'#3fd8f7'},control:{base:'#acf9fb',light:'#fff',dark:'#4bf2f6'},success:{base:'#00ff00',light:'#6f6',dark:'#090'},alert:{base:'#ff0000',light:'#f66',dark:'#900'},disabled:{base:'#999999',light:'#ccc',dark:'#666'}}},Arwes.prototype.drawFrameNoCorners=function(a,b,c,d){g.setColor(this.C.color.primary.dark),g.drawRect(a,b,c,d)},Arwes.prototype.drawFrame=function(a,b,c,d){drawCorner(this,a,b,0),drawCorner(this,c,b,1),drawCorner(this,a,d,2),drawCorner(this,c,d,3),this.drawFrameNoCorners(a,b,c,d)},Arwes.prototype.drawFrameBottomCorners=function(b,d,c,a){drawCorner(this,b,a,2),drawCorner(this,c,a,3),this.drawFrameNoCorners(b,d,c,a)},Arwes.prototype.drawFrameTopCorners=function(b,a,c,d){drawCorner(this,b,a,0),drawCorner(this,c,a,1),this.drawFrameNoCorners(b,a,c,d)},Arwes.prototype.drawFrameLeftCorners=function(a,b,d,c){drawCorner(this,a,b,0),drawCorner(this,a,c,2),this.drawFrameNoCorners(a,b,d,c)},Arwes.prototype.drawFrameRightCorners=function(d,b,a,c){drawCorner(this,a,b,1),drawCorner(this,a,c,3),this.drawFrameNoCorners(d,b,a,c)},exports.create=function(a,b){return new Arwes(a,b)},exports.default=function(){return new Arwes(C.cornerSize,C.cornerOffset)} \ No newline at end of file