From ef3620f4f99cf63b9bacba6a229cec4e14f377ca Mon Sep 17 00:00:00 2001 From: neauoire Date: Thu, 16 Apr 2020 19:53:23 +0900 Subject: [PATCH] Added old files --- icon.icns | Bin 0 -> 61293 bytes icon.ico | Bin 0 -> 106326 bytes main.js | 76 ++++++++ package.json | 25 +++ sources/index.html | 85 +++++++++ sources/links/fonts.css | 15 ++ sources/links/main.css | 37 ++++ sources/links/reset.css | 1 + sources/links/theme.css | 54 ++++++ sources/media/audio/effect/click1.ogg | Bin 0 -> 7688 bytes sources/media/audio/effect/click2.ogg | Bin 0 -> 5896 bytes sources/media/audio/effect/click3.ogg | Bin 0 -> 6000 bytes sources/media/audio/effect/click4.ogg | Bin 0 -> 5793 bytes sources/media/audio/effect/denied.ogg | Bin 0 -> 12436 bytes sources/media/audio/effect/done.ogg | Bin 0 -> 9750 bytes sources/media/audio/effect/flip.ogg | Bin 0 -> 8659 bytes sources/media/clove/10.svg | 3 + sources/media/clove/11.svg | 25 +++ sources/media/clove/13.svg | 25 +++ sources/media/clove/15.svg | 26 +++ sources/media/clove/17.svg | 26 +++ sources/media/clove/2.svg | 4 + sources/media/clove/3.svg | 5 + sources/media/clove/4.svg | 6 + sources/media/clove/5.svg | 7 + sources/media/clove/6.svg | 8 + sources/media/clove/7.svg | 9 + sources/media/clove/8.svg | 10 + sources/media/clove/9.svg | 11 ++ sources/media/diamond/10.svg | 3 + sources/media/diamond/11.svg | 28 +++ sources/media/diamond/2.svg | 4 + sources/media/diamond/3.svg | 5 + sources/media/diamond/4.svg | 6 + sources/media/diamond/5.svg | 7 + sources/media/diamond/6.svg | 8 + sources/media/diamond/7.svg | 9 + sources/media/diamond/8.svg | 10 + sources/media/diamond/9.svg | 11 ++ sources/media/fonts/input_mono_medium.ttf | Bin 0 -> 110032 bytes sources/media/fonts/input_mono_regular.ttf | Bin 0 -> 109152 bytes sources/media/heart/10.svg | 3 + sources/media/heart/11.svg | 25 +++ sources/media/heart/2.svg | 4 + sources/media/heart/3.svg | 5 + sources/media/heart/4.svg | 6 + sources/media/heart/5.svg | 7 + sources/media/heart/6.svg | 8 + sources/media/heart/7.svg | 9 + sources/media/heart/8.svg | 10 + sources/media/heart/9.svg | 11 ++ sources/media/icon.finder | 22 +++ sources/media/icon.svg | 1 + sources/media/icon180x180.png | Bin 0 -> 2401 bytes sources/media/joker/21.svg | 5 + sources/media/spade/10.svg | 3 + sources/media/spade/11.svg | 24 +++ sources/media/spade/13.svg | 24 +++ sources/media/spade/15.svg | 24 +++ sources/media/spade/17.svg | 24 +++ sources/media/spade/2.svg | 4 + sources/media/spade/3.svg | 5 + sources/media/spade/4.svg | 6 + sources/media/spade/5.svg | 7 + sources/media/spade/6.svg | 8 + sources/media/spade/7.svg | 9 + sources/media/spade/8.svg | 10 + sources/media/spade/9.svg | 11 ++ sources/scripts/board.js | 122 ++++++++++++ sources/scripts/card.js | 69 +++++++ sources/scripts/card.monster.js | 13 ++ sources/scripts/card.potion.js | 13 ++ sources/scripts/card.shield.js | 13 ++ sources/scripts/deck.js | 103 ++++++++++ sources/scripts/donsol.js | 91 +++++++++ sources/scripts/gage.health.js | 15 ++ sources/scripts/gage.js | 66 +++++++ sources/scripts/gage.progress.js | 29 +++ sources/scripts/gage.shield.js | 25 +++ sources/scripts/icon.js | 105 +++++++++++ sources/scripts/lib/controller.js | 185 ++++++++++++++++++ sources/scripts/lib/theme.js | 128 +++++++++++++ sources/scripts/player.js | 209 +++++++++++++++++++++ sources/scripts/speaker.js | 28 +++ sources/scripts/timeline.js | 16 ++ sources/scripts/walkthrough.js | 103 ++++++++++ 86 files changed, 2157 insertions(+) create mode 100644 icon.icns create mode 100644 icon.ico create mode 100644 main.js create mode 100644 package.json create mode 100644 sources/index.html create mode 100644 sources/links/fonts.css create mode 100644 sources/links/main.css create mode 100644 sources/links/reset.css create mode 100644 sources/links/theme.css create mode 100644 sources/media/audio/effect/click1.ogg create mode 100644 sources/media/audio/effect/click2.ogg create mode 100644 sources/media/audio/effect/click3.ogg create mode 100644 sources/media/audio/effect/click4.ogg create mode 100644 sources/media/audio/effect/denied.ogg create mode 100644 sources/media/audio/effect/done.ogg create mode 100644 sources/media/audio/effect/flip.ogg create mode 100644 sources/media/clove/10.svg create mode 100644 sources/media/clove/11.svg create mode 100644 sources/media/clove/13.svg create mode 100644 sources/media/clove/15.svg create mode 100644 sources/media/clove/17.svg create mode 100644 sources/media/clove/2.svg create mode 100644 sources/media/clove/3.svg create mode 100644 sources/media/clove/4.svg create mode 100644 sources/media/clove/5.svg create mode 100644 sources/media/clove/6.svg create mode 100644 sources/media/clove/7.svg create mode 100644 sources/media/clove/8.svg create mode 100644 sources/media/clove/9.svg create mode 100644 sources/media/diamond/10.svg create mode 100644 sources/media/diamond/11.svg create mode 100644 sources/media/diamond/2.svg create mode 100644 sources/media/diamond/3.svg create mode 100644 sources/media/diamond/4.svg create mode 100644 sources/media/diamond/5.svg create mode 100644 sources/media/diamond/6.svg create mode 100644 sources/media/diamond/7.svg create mode 100644 sources/media/diamond/8.svg create mode 100644 sources/media/diamond/9.svg create mode 100644 sources/media/fonts/input_mono_medium.ttf create mode 100644 sources/media/fonts/input_mono_regular.ttf create mode 100644 sources/media/heart/10.svg create mode 100644 sources/media/heart/11.svg create mode 100644 sources/media/heart/2.svg create mode 100644 sources/media/heart/3.svg create mode 100644 sources/media/heart/4.svg create mode 100644 sources/media/heart/5.svg create mode 100644 sources/media/heart/6.svg create mode 100644 sources/media/heart/7.svg create mode 100644 sources/media/heart/8.svg create mode 100644 sources/media/heart/9.svg create mode 100644 sources/media/icon.finder create mode 100644 sources/media/icon.svg create mode 100644 sources/media/icon180x180.png create mode 100644 sources/media/joker/21.svg create mode 100644 sources/media/spade/10.svg create mode 100644 sources/media/spade/11.svg create mode 100644 sources/media/spade/13.svg create mode 100644 sources/media/spade/15.svg create mode 100644 sources/media/spade/17.svg create mode 100644 sources/media/spade/2.svg create mode 100644 sources/media/spade/3.svg create mode 100644 sources/media/spade/4.svg create mode 100644 sources/media/spade/5.svg create mode 100644 sources/media/spade/6.svg create mode 100644 sources/media/spade/7.svg create mode 100644 sources/media/spade/8.svg create mode 100644 sources/media/spade/9.svg create mode 100644 sources/scripts/board.js create mode 100644 sources/scripts/card.js create mode 100644 sources/scripts/card.monster.js create mode 100644 sources/scripts/card.potion.js create mode 100644 sources/scripts/card.shield.js create mode 100644 sources/scripts/deck.js create mode 100644 sources/scripts/donsol.js create mode 100644 sources/scripts/gage.health.js create mode 100644 sources/scripts/gage.js create mode 100644 sources/scripts/gage.progress.js create mode 100644 sources/scripts/gage.shield.js create mode 100644 sources/scripts/icon.js create mode 100644 sources/scripts/lib/controller.js create mode 100644 sources/scripts/lib/theme.js create mode 100644 sources/scripts/player.js create mode 100644 sources/scripts/speaker.js create mode 100644 sources/scripts/timeline.js create mode 100644 sources/scripts/walkthrough.js diff --git a/icon.icns b/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..ea8b11ce538ed3b4c79b2797335b548318081e53 GIT binary patch literal 61293 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 literal 0 HcmV?d00001 diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d6ceaa3e4631409aaf14d90bde807509a6e2ae90 GIT binary patch literal 106326 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 literal 0 HcmV?d00001 diff --git a/main.js b/main.js new file mode 100644 index 0000000..44febaf --- /dev/null +++ b/main.js @@ -0,0 +1,76 @@ +const { app, BrowserWindow, webFrame, Menu, dialog } = require('electron') +const path = require('path') +const url = require('url') +const shell = require('electron').shell + +let isShown = true + +app.commandLine.appendSwitch('autoplay-policy', 'no-user-gesture-required') + +app.on('ready', () => { + app.win = new BrowserWindow({ + width: 860, + height: 420, + minWidth: 860, + minHeight: 420, + backgroundColor: '#000', + icon: path.join(__dirname, { darwin: 'icon.icns', linux: 'icon.png', win32: 'icon.ico' }[process.platform] || 'icon.ico'), + resizable: true, + frame: process.platform !== 'darwin', + skipTaskbar: process.platform === 'darwin', + autoHideMenuBar: process.platform === 'darwin', + webPreferences: { zoomFactor: 1.0, nodeIntegration: true, backgroundThrottling: false } + }) + + app.win.loadURL(`file://${__dirname}/sources/index.html`) + // app.inspect(); + + app.win.on('closed', () => { + win = null + app.quit() + }) + + app.win.on('hide', function () { + isShown = false + }) + + app.win.on('show', function () { + isShown = true + }) + + app.on('window-all-closed', () => { + app.quit() + }) + + app.on('activate', () => { + if (app.win === null) { + createWindow() + } else { + app.win.show() + } + }) +}) + +app.inspect = function () { + app.win.toggleDevTools() +} + +app.toggle_fullscreen = function () { + app.win.setFullScreen(!app.win.isFullScreen()) +} + +app.toggle_visible = function () { + if (process.platform == 'win32') { + if (!app.win.isMinimized()) { app.win.minimize() } else { app.win.restore() } + } else { + if (isShown && !app.win.isFullScreen()) { app.win.hide() } else { app.win.show() } + } +} + +app.inject_menu = function (menu) { + try { + Menu.setApplicationMenu(Menu.buildFromTemplate(menu)) + } catch (err) { + console.warn('Cannot inject menu.') + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..9b54b72 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "Donsol", + "version": "0.1.0", + "main": "main.js", + "scripts": { + "start": "electron .", + "clean": "rm -r ~/Desktop/Donsol-darwin-x64/ ; rm -r ~/Desktop/Donsol-linux-x64/ ; rm -r ~/Desktop/Donsol-win32-x64/ ; rm -r ~/Desktop/Donsol-linux-armv7l/ ; echo 'cleaned build location'", + "build_osx": "electron-packager . Donsol --platform=darwin --arch=x64 --out ~/Desktop/ --overwrite --icon=icon.icns ; echo 'Built for OSX'", + "build_linux": "electron-packager . Donsol --platform=linux --arch=x64 --out ~/Desktop/ --overwrite --icon=icon.ico ; echo 'Built for LINUX'", + "build_win": "electron-packager . Donsol --platform=win32 --arch=x64 --out ~/Desktop/ --overwrite --icon=icon.ico ; echo 'Built for WIN'", + "build_pi": "electron-packager . Donsol --platform=linux --arch=armv7l --out ~/Desktop/ --overwrite --icon=icon.ico ; echo 'Built for PI'", + "build": "npm run clean ; npm run build_osx ; npm run build_linux ; npm run build_win", + "push_osx": "~/butler push ~/Desktop/Donsol-darwin-x64/ hundredrabbits/donsol:osx-64", + "push_linux": "~/butler push ~/Desktop/Donsol-linux-x64/ hundredrabbits/donsol:linux-64", + "push_win": "~/butler push ~/Desktop/Donsol-win32-x64/ hundredrabbits/donsol:windows-64", + "push_pi": "~/butler push ~/Desktop/Donsol-linux-armv7l/ hundredrabbits/donsol:linux-pi", + "push_status": "~/butler status hundredrabbits/donsol", + "push_theme": "~/butler push ~/Github/HundredRabbits/Themes/themes/ hundredrabbits/donsol:themes", + "push": "npm run build ; npm run push_theme ; npm run push_osx ; npm run push_linux ; npm run push_win ; npm run clean ; npm run push_status" + }, + "devDependencies": { + "electron": "^7.1.12", + "electron-packager": "^14.2.1" + } +} diff --git a/sources/index.html b/sources/index.html new file mode 100644 index 0000000..9560a1e --- /dev/null +++ b/sources/index.html @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Donsol + + +
+
+
+
+ 1 + 2 + 3 + 4 +
+
+ + + diff --git a/sources/links/fonts.css b/sources/links/fonts.css new file mode 100644 index 0000000..be688de --- /dev/null +++ b/sources/links/fonts.css @@ -0,0 +1,15 @@ +/* Input */ + +@font-face { + font-family: 'input_mono_regular'; + src: url('../media/fonts/input_mono_regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'input_mono_medium'; + src: url('../media/fonts/input_mono_medium.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} \ No newline at end of file diff --git a/sources/links/main.css b/sources/links/main.css new file mode 100644 index 0000000..b127901 --- /dev/null +++ b/sources/links/main.css @@ -0,0 +1,37 @@ +body { background:black; font-family: 'input_mono_regular',monospace; min-width:750px; overflow-y: hidden; user-select: none; cursor: default; -webkit-app-region: drag; padding:30px;} + +#wrapper { display: block;max-width: 900px; height: calc(25vw * 1.25 + 90px);max-height:400px;margin:0px auto;position: relative;width:100%; -webkit-app-region: drag;} + +#player { display: block; font-size:12px; height:30px; line-height:20px; max-width:890px; -webkit-user-select: none;-webkit-app-region: drag; position: fixed; bottom:30px; width:calc(100% - 60px);} +#player > * { vertical-align: top } +#player .gage { width: 120px;display: block;height:30px;position: relative; float:right; margin-left:2px;width:70px; padding-right: 50px; text-align: right} +#player .gage .value { display: inline-block;line-height: 20px;font-family: 'input_mono_medium';padding-left: 5px;} +#player .gage .event { display: inline-block;position: absolute;top: -20px;left: 0px; transition: all 250ms; opacity: 0; margin-left:5px; display: none} +#player .gage .progress { display: block;width: 40px;position: absolute; top:7px;overflow: hidden;height: 4px;border-radius: 20px;right:0px;} +#player .gage .progress .bar{ height:5px; display:block !important; transition: width 300ms} +#player a.escape { -webkit-app-region: no-drag;padding: 0px 8px;border-radius: 20px;display: inline-block;margin-right: 10px;line-height: 20px; border:2px solid white; margin-top:0px; color:white;} +#player a.escape:hover { cursor: pointer; } +#player div#timeline { display: inline-block;color:white; transition: opacity 250ms; opacity: 0 } +#player div#timeline b { font-family: 'input_mono_medium',monospace; } + +#player.locked a.escape { display:none;} + +#board, #table { display:block; position: absolute; width: calc(100% + 15px)} +#board card, #table card { display: inline-block !important;height: calc(25vw * 1.25);max-height:300px;max-width:200px;width: calc(25% - 15px);margin-right: 15px;border-radius: 7px; position:relative; overflow:hidden;min-height: 300px;} +#board card { top:10px; opacity:0.01; z-index:900; transition: opacity 250ms, top 150ms } +#board card:hover { cursor:pointer; top:5px !important;} +#board card .face { display:block;width: 100%;height: calc(100% - 5px);border-radius: 7px;} +#board card .face img { width:100%; position: absolute;bottom:0px; } +#board card .face .value { display: block;position: absolute;width: 30px;height: 30px;left: 15px;top: 60px;font-size: 12px;text-align: center;} +#board card .face .graphic svg { display: block;position: absolute;left: calc(50% - 100px);bottom: calc(50% - 150px);} +#board card .face .icon { display: block;position: absolute;width: 30px;height: 30px;left: 15px;top: 15px;font-size: 11px; z-index:900;} +#board card .face .name { display: block;position: absolute;bottom: 20px;text-align: center;font-size: 11px;width: 100%;} + +#table card { } +#table card .shortcut { position:absolute; right:20px; bottom:15px; color:#555;} + +#board card:nth-child(2), #table card:nth-child(2) { position:absolute; left:25%;} +#board card:nth-child(3), #table card:nth-child(3) { position:absolute; left:50%;} +#board card:nth-child(4), #table card:nth-child(4) { position:absolute; left:75%;} + +#difficulty:hover { text-decoration: underline; cursor: pointer; } \ No newline at end of file diff --git a/sources/links/reset.css b/sources/links/reset.css new file mode 100644 index 0000000..9f57584 --- /dev/null +++ b/sources/links/reset.css @@ -0,0 +1 @@ +* { margin:0;padding:0;border:0;outline:0;text-decoration:none;font-weight:inherit;font-style:inherit;color:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;list-style:none;border-collapse:collapse;border-spacing:0; -webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;} \ No newline at end of file diff --git a/sources/links/theme.css b/sources/links/theme.css new file mode 100644 index 0000000..9430a8b --- /dev/null +++ b/sources/links/theme.css @@ -0,0 +1,54 @@ +body { background-color:var(--background) !important }; +.fh { color:var(--f_high) !important; stroke:var(--f_high) !important }; +.fm { color:var(--f_med) !important ; stroke:var(--f_med) !important }; +.fl { color:var(--f_low) !important ; stroke:var(--f_low) !important }; +.f_inv { color:var(--f_inv) !important ; stroke:var(--f_inv) !important }; +.bh { background-color:var(--b_high) !important; fill:var(--b_high) !important }; +.bm { background-color:var(--b_med) !important ; fill:var(--b_med) !important }; +.bl { background-color:var(--b_low) !important ; fill:var(--b_low) !important }; +.b_inv { background-color:var(--b_inv) !important ; fill:var(--b_inv) !important }; +.b { background-color:var(--background) !important; } + +/* Donsol Theme Scheme */ + +/* Red */ +svg .fill_red { fill:var(--f_med) !important } +#board card.heart .face { color:var(--f_med) !important;} +#board card.diamond .face { color:var(--f_med) !important;} + +/* Black */ +svg .fill_black { fill:var(--f_high) !important } +#board card.clove .face { color:var(--f_high) !important;} +#board card.spade .face { color:var(--f_high) !important;} +#board card.joker .face { color:var(--f_high) !important;} +svg .stroke_black { stroke:var(--f_high) !important } + +/* Grey */ +svg .stroke_grey { stroke:var(--f_low) !important } +svg .fill_grey { opacity:0.25; fill:var(--f_low) !important } + +/* White */ +svg .fill_white { fill:var(--b_high) !important } +#player a.escape { border:2px solid var(--b_high) !important; color: var(--b_high); } +#player a.escape:hover { background-color:var(--b_high) !important; color:var(--background); } +#board card .face { background-color:var(--b_high)} +.card_11 .face .name,.card_13 .face .name,.card_15 .face .name,.card_17 .face .name { color:var(--b_high);} +#player .gage { color:var(--b_high) } +svg .stroke_white { stroke:var(--b_high) !important } + +/* Dark Grey */ +#table card { background-color:var(--b_low) !important} +#player .gage .value .unit { color:var(--b_low) !important} +#player .gage .progress { background-color:var(--b_low) !important } + +/* EXTRAS*/ +#player .gage.health .progress .bar { background-color:var(--b_inv) !important } +#player .gage.shield .progress .bar { background-color:var(--b_high) !important } +#player .gage.experience .progress .bar { background-color:var(--b_med) !important } +#table card .shortcut { color:var(--background) !important} +#difficulty { color:var(--f_high) !important } + +/* DEATH*/ + +#player.death a.escape { border-color:var(--b_inv) !important; } +#player.death a.escape:hover { background-color:var(--b_inv) !important; } \ No newline at end of file diff --git a/sources/media/audio/effect/click1.ogg b/sources/media/audio/effect/click1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..76c0125d149406000dc08569ea9470e5ec6bb5fd GIT binary patch literal 7688 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 literal 0 HcmV?d00001 diff --git a/sources/media/audio/effect/click2.ogg b/sources/media/audio/effect/click2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8a9a0618b059fed0ab06927531ff9132b3a1911b GIT binary patch literal 5896 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 KpkVC(!ScU2aL|GP literal 0 HcmV?d00001 diff --git a/sources/media/audio/effect/click3.ogg b/sources/media/audio/effect/click3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d0de84b77a4b1df0795418993f9e7b9efe81e4b0 GIT binary patch literal 6000 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 PdjTKECC3Bzf3f^8_6*#a literal 0 HcmV?d00001 diff --git a/sources/media/audio/effect/click4.ogg b/sources/media/audio/effect/click4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..19669ae00fadabba1e3c7dc051f5f6a627b65f8a GIT binary patch literal 5793 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 literal 0 HcmV?d00001 diff --git a/sources/media/audio/effect/denied.ogg b/sources/media/audio/effect/denied.ogg new file mode 100644 index 0000000000000000000000000000000000000000..00c1a179d7b20d87824186307db8804f265c9939 GIT binary patch literal 12436 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 IWdAe#2b17=`~Uy| literal 0 HcmV?d00001 diff --git a/sources/media/audio/effect/flip.ogg b/sources/media/audio/effect/flip.ogg new file mode 100644 index 0000000000000000000000000000000000000000..ddd33aea9befec55662c3465e93ea4587662d922 GIT binary patch literal 8659 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 literal 0 HcmV?d00001 diff --git a/sources/media/clove/10.svg b/sources/media/clove/10.svg new file mode 100644 index 0000000..4eee6b7 --- /dev/null +++ b/sources/media/clove/10.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/sources/media/clove/11.svg b/sources/media/clove/11.svg new file mode 100644 index 0000000..572d55d --- /dev/null +++ b/sources/media/clove/11.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/clove/13.svg b/sources/media/clove/13.svg new file mode 100644 index 0000000..f5359bb --- /dev/null +++ b/sources/media/clove/13.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/clove/15.svg b/sources/media/clove/15.svg new file mode 100644 index 0000000..c333ba2 --- /dev/null +++ b/sources/media/clove/15.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/clove/17.svg b/sources/media/clove/17.svg new file mode 100644 index 0000000..fd44480 --- /dev/null +++ b/sources/media/clove/17.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/clove/2.svg b/sources/media/clove/2.svg new file mode 100644 index 0000000..924050c --- /dev/null +++ b/sources/media/clove/2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/sources/media/clove/3.svg b/sources/media/clove/3.svg new file mode 100644 index 0000000..b7f123a --- /dev/null +++ b/sources/media/clove/3.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/sources/media/clove/4.svg b/sources/media/clove/4.svg new file mode 100644 index 0000000..c9ae445 --- /dev/null +++ b/sources/media/clove/4.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/sources/media/clove/5.svg b/sources/media/clove/5.svg new file mode 100644 index 0000000..245f266 --- /dev/null +++ b/sources/media/clove/5.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/sources/media/clove/6.svg b/sources/media/clove/6.svg new file mode 100644 index 0000000..60a0c64 --- /dev/null +++ b/sources/media/clove/6.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/sources/media/clove/7.svg b/sources/media/clove/7.svg new file mode 100644 index 0000000..dd0518e --- /dev/null +++ b/sources/media/clove/7.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/sources/media/clove/8.svg b/sources/media/clove/8.svg new file mode 100644 index 0000000..5cdd9be --- /dev/null +++ b/sources/media/clove/8.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/sources/media/clove/9.svg b/sources/media/clove/9.svg new file mode 100644 index 0000000..5521485 --- /dev/null +++ b/sources/media/clove/9.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/sources/media/diamond/10.svg b/sources/media/diamond/10.svg new file mode 100644 index 0000000..8bd13b5 --- /dev/null +++ b/sources/media/diamond/10.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/sources/media/diamond/11.svg b/sources/media/diamond/11.svg new file mode 100644 index 0000000..b3ad935 --- /dev/null +++ b/sources/media/diamond/11.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/diamond/2.svg b/sources/media/diamond/2.svg new file mode 100644 index 0000000..4c3450b --- /dev/null +++ b/sources/media/diamond/2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/sources/media/diamond/3.svg b/sources/media/diamond/3.svg new file mode 100644 index 0000000..d3e6b3d --- /dev/null +++ b/sources/media/diamond/3.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/sources/media/diamond/4.svg b/sources/media/diamond/4.svg new file mode 100644 index 0000000..43a6e6d --- /dev/null +++ b/sources/media/diamond/4.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/sources/media/diamond/5.svg b/sources/media/diamond/5.svg new file mode 100644 index 0000000..178db49 --- /dev/null +++ b/sources/media/diamond/5.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/sources/media/diamond/6.svg b/sources/media/diamond/6.svg new file mode 100644 index 0000000..5115652 --- /dev/null +++ b/sources/media/diamond/6.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/sources/media/diamond/7.svg b/sources/media/diamond/7.svg new file mode 100644 index 0000000..4c8f6f9 --- /dev/null +++ b/sources/media/diamond/7.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/sources/media/diamond/8.svg b/sources/media/diamond/8.svg new file mode 100644 index 0000000..ff8b120 --- /dev/null +++ b/sources/media/diamond/8.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/diamond/9.svg b/sources/media/diamond/9.svg new file mode 100644 index 0000000..f152698 --- /dev/null +++ b/sources/media/diamond/9.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/fonts/input_mono_medium.ttf b/sources/media/fonts/input_mono_medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0d488bf84fa12e5c717824a0d24e6a615766c834 GIT binary patch literal 110032 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 literal 0 HcmV?d00001 diff --git a/sources/media/fonts/input_mono_regular.ttf b/sources/media/fonts/input_mono_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c19c28706f53f11edad8e705b467fd084c99a0c7 GIT binary patch literal 109152 zcmd44d3;pW-9LWLy_1<_l8_162}ve<$R4th5Fmskgs>&7$&iFVhCM(CTY{*FAhIL7 z+NUDYKGvm9rnsS1tgWSLD{Zy5iZ!V9vD!XWL~ALTeBYmQ?w!n#(AMAU_s4_2=iGbe z%)Mv%?B{cC7-x(Hv29Fc9g}Czt%!-3a+2}yKE{~8bLQ-v(F=a{O*3P>3$J?3T7o8?5|{DTlF~pW^$Jr5(#wA0GS8HO8{u#BUZYTeQA|neZR~?kRj9 zu&lj%XzGRVI`SXHt`0hGTv>X?VKT^Ms-xlCJY5D36U7Z>KwBh{s zj0N7-zP4@Ax)iI5=lz8-Q_<>0T^+{B2Gr$f53{aWw0ensZMcQ;)gLkD^HRs!^&3t- z+F8i>`iB`y|9eO0l8)~0(XDgF;A1bNzVoR2dJZ+Sg+XOsF@M7}Tw!l4DY%=;Upp?u z_D8zLtKaeI!l{udbQS;bJN3E?eN>*u_n)iZ5qFZ`iBC0I)VWVt&hBILnUD6p8NWbd zFxH%@$~k@r-x!qFl%x33ELrk9STSEt^?dyBI6r1M#gzYH?3;h;x38|4VrAuwx%$;v z{YJJ%z0NbOj6LxF+xS(3ibG~)fy(o2G>*hS9HXTy?OVW(x^*`JefMoK)V;p#J<9N0 zg8sYXIQB%f$9H-iDu;UZjo0*gp1-5x;+tSJu6yFf-~Fp|nuo|C5Q=NVhQN(&rMc9h ze@D;LuhAIMxKR7(x>-A>=SFMS=sKOF>_3Q-?nB2rQEI;v$5cH+@@92B_ zj(&&s_b-#BIHx{QeSF{lk}O%Qc8$hXzdzdC|5uz-+vzv@GxhKFlKP?_Q)vM7c6naM zaetr3cUu3%Z|RuYnyG<~^=HyOs0{>qmi{{`>DnlO>d-U)Q{2!lul9f2@AS4)n>~U1 z^uMgN?cd#V3F;Aa-np?p_4CGS-}YR;cZK#GYWGmMaSXrBb82zV)FChz*XX+&(S>WC zSc~&r0F5KjBw?uM6JODFx-a!htJ8l)JEq@JKh6R)t~L!+kJ>g z^gJ3P`cCH;x<=zi=XAXhplb^NeO&eL=zEM`|KGJb`uCz8jP;KP4ggs|HUJ&o9|=4P zKyUZA0!snu=ikdP(?=CX_TMG!OWW`=O+9{~pkfbGir3 z2bI)*GeC8zopfy^Kr2pNHWb(9fyVkEy=?d%gU&--~C`b2aGq z`M+AS`DiPkj{&ulXj`146f}=(di%fab^Uk$s-%1B-;4X}^of$L(={D*PGc+TY4fGe zn;3JC-@5t!TU_HUxc?3H6{2xm8|u43*NN5%uLEZQ`mHC3Zj&?|MCk(%UDGp(XNZT0 zmQw-rTbz@B@O!`?@-Y(_0X&6s{Odn}QkOluaC{d~g>m~DI0xW&1hxpcp^-RT+F;IyZeF{60EY89YJ1Y-TXMfG<9R_iaS`;o`C!R>E%M zxAViiUx`+VmFJY7E5A_QQw^%G8lVnW)6_lcKJ`KMSB4RWL_?0D)G)~~)3DHRPwdXv zFReaSlhxlEYz?!9dE6)c38Wuw_A5x&shK4`dGYAd`Nsmd_sIm ze0F?G{L%Ph@ed~`3C4t=gy9Kc2_q8X5=JFtB-A7Gz0n$niCG-YMVgQ+2@%Xggd%E{W zU%&A6%ir|7`uqE79MDTE%VnkP6nc40i4?tj1-<;e%2cCjMlVy;9q8o&^&tZ@L>rO} zxrVWZN<*FDQ0%tYD^`YH`dKa35Nm|hDtbBETH@~I2J~{9^&xjJ!?j*6h(F}f%V6{} zDj`m^Hm#NEqRZ|LO`cQ0A5xpzcwQg2poac_BVZSU;fQ@sw4Uh@905F|Jv zdV7XG`&0Ty^>6Cm46psH>qjo9>v7k8jP(VG8tnS_t|R8rH@~kzo-_7g)Q7Na7`yzk z_`G471T?6|Mtt)-i^Kcde8Mf z+#A+5-G6EGyI;P0Dsc>B-bh%NU^hPyP-Qk75+y~mUbOBy-vKf&S8J)I z^iQpkrGBi=QoB^a5vq%>8HO1$4cP|VAIC+8Qhb&gJbpvh2mdobN)7&JfZQU;e+KmV z+x=5N#_thkF<5}uLBCb`-}#69eI<+cDhmIA|AD{5|E3J%U-Gy36@HyxF7dloHHm z@NAyLb9o*w=XHD{^w1w!0DB*@p_dJ3e_|o*V;0K(hlR0ESOoi&ZRPbWhJDUr*%vI1 zU4aDolEt&DkfncT$?O}J!v4Wh*)=wbU1zuQSuBSuESIY+j~m!%?!)r=Y{=C)tdN@! zU-RR0Sqb-Nr96O*<$>&WK96nV^VtL*%*y$2Hj#($26hK;WHo#Qo5G`6Eg#9Ya~qq% zt!yTbXLUS*&EiRHHcw`AcnX`#Q&|H~XN^3A-N_fQRz8|7;`wYbBAIQxklA?=Tf&Rk za$d^T@(R|$*7GX1fmgGQd@^rh!`NlEnNMR|_)IpBr!gC>k?~4}GD)dYCMaW-YGpFp zsra!yY(I46ci9=flI>u3v0dzLwi}Vmee3``$PPot9%aX%gHEt}5qZ3yeTV%QJH;Mk zr`bd79`*oV$nAU?U&XiZ7T(Gi@x{E2FX2o1a=wDE=4<#`-oe-LPQHO}>av+Tdw!|Vs_5%ws1j6KeN$X;ada@Z5h!FrgJ{fIru zo?_3kbI|fXW-svV{7$}u@8rAq-Fz?K$M^FC{1D&G_wa}LUHk|95&kHDj6cqQ$e-X2 zeh)v$@8>=2cihQV@Ud(qFJr6tIJS;YQmtydng||zOEL40_@DTn`6v8i{y+Rv{yG0b z@l}kUvl)R}6XYFC@oX0=6K zsJ5z$)WvF>x>;STcBt#rPIbMyLEWfsg5KS(-U+?5Q@u;wrQWUXW=6~x{d-W8hT`Og z56G7P;NQQKGcWU>@}Kcn_|N$T{tNype~rKXe@OQH2Oa!3RaEdk{)Nf$Wc+6y^~rV$ z)Ig(Y)j*b2yafL{$^;4iA<9Gv{yxei2?bFBND2Yoi!wz*p?juE@DEU?0i&S3|9~=G zg8vO=hJ-QeVw9# z`bs*SPykHTP=u1^g+MxcIxqvEw$Ic+&#wb!0rb1s8tPHb(J&w7Tn!6Q&I9P$QlJ57 z1lj?chE9}J58&^jY?9!8D4QktC6p}^N-@fX68ue+trF0yj4jgeHp<078}I>O*8n?- zEz$59N@~+G09G7ZuHm03S7@L%td!tJl&d7TFG}hIz|AOE18ZHm`7ILsJ(OD|ct6TpCHNmv-X;Ni zfw5B>RFn@&@NZC_2EGT{BU=8xgn|OHUO=Jx4@)RSgFlc^YEV8R!Rh!>3I11Q92|PqNN@Q#e&ia{0J6i4$89<3it|oMnFkM`ILl0eDSn| zVnX?hghFHWtb|H^JSV}a4bMsN|3&#c@B+s9mndJ9fSttHdEjS&5AccxnxCI*2u67U zcnydGUI*R)GJuO3Xbyj^f#&fy!0&)b0MRG_8;ilJlE8e!zGAShBp=Wm6V?DUuLPR^ z_a$JD!SDzE1kgP`mVjl(U{gtagz^*MGvF^8{)W;8d@jMKqx?dG)A(NjzQ&k@q5Qjq zLjCaY~U0jspVq2lkr)X$IJF0@Od) za{{CjVAlyyUx^O|FJjza;|Wmzi6;eLLauT@2^tULPr;+$M_7UaG&ZmZ1z>qHScU>L zPQ=54k0Ve9Nx&{;G%jLnz;m!3CF)U9J7^ALP|~vj8du_fAp>Gj(lcl*F~&Sx0@f|# z^bCN;n@378D@xE40k$uLT`E925ca76>|q8wRe=pfMg!*aEUo63nW+}N*zQm zMG~wSr4FK(F&gHgERhhpycEX-qMfl4q}ySoN)R25lMwoTJdO!OQxhcE?I_DN%tJX* zf^9=tpRN-0ws7`@HgFKrUs(BItj8H;G;bEeX&id?^94L3pzUqSF=$vPbwr4Mel85@eh3 zMH+~H7fXe%fNpw%3xjHPNP@Atwz#C?y zYlXhOjPkmKuz~t;OdvXSNst{xwvGVkM~Rdm8&iprAUQ<#hp<6xD5E7v-jMA`AbL@r zli(krd*TLO^+1|L-bF$1R3 zIe_Q^Q};=*lPC{JAf~|7gA(ivN~#ACovQapAmYGO%$Ir$_o3$>2TtI4FG{-Cy*Q@( z-3L5?W2$=!co4_3;yLv^@G~5Pp4C?X z%stVu`lp-2mPr@PjBZX9RvfO3Xb0ksxNEX9Hv_ z8|XIxqC+fpn*{l1u^4Lt>Eu}ShrmF?v3E+4evaKCL4I58P6^W0u~#J6I+R~ZknXkO z7FHk3CC1Wfl2GGN`T=HKM+Gb9ji6$DtriLLajd}-;uv#f#T;?8-x?vI;P+O{l@<3U znPbIV5%`}`MoaKdP>uv*aQ$PHu@d}Kl=SR)T>l(pf`sCWGDU)ajWSn)Uq(3^z+5ZT zUd*i(^U6O%iE$zDf1n&Mp@8nJm|p_PT5E@dnul@&(2f4m{ce}wKSH?;*p2H+C?5jO z;8|1$G)+)IUsmunK>?k`V_XT!G?W-0f^DLAooURf2R^!XgQU z>e_)NxDUoA(ITPLqeQz2N+!xDBuKv{V`!2e#PwMy9|0c4@l}*g2?ex~d`?37JId!J zly6Y}R6_X&%2$Ec@Y`!B-;hwQqx@Jx=|eaTZ6zoehm>*&r5|O5go?JLpkD-)qimB< zG4?6wQ_50YN2QdN5~>eMw4I=0Oj1D?1k#zQ%Oq5cb1&}O>xb)OP?{yw$te8+%#Vua z_hPIFD#o}Mb4XAzZoQbtUbI=Af)aDpi+NTtR=t>Gf@(*Z3}9TvK+wu)Gm~@5~O!~rvkXQx*g?gfW~1j%2U8;98jbo3OD-&39?DP zep!NSg>NvX1QmUDp(LmY2q#7hi0clPIn`mTYv|$pK;tvKf2X4|rpKr*Y{_!)OslnO zMWutcW;v8h2TzaBa;TZsYKNL!J*y$H(YnXFXNrA~wc5ITk=R_`Q zR^W3^L%gHBG1`5&q_MFy%VD6~;1{U9rx7<;soemjxRleEMe1p5^eBcbMJaD35lq#yxxJ zezO}A;~m@f?1|ok9_Z)iz0aTF?8Xb_o)<6zRnPEkb+{FZ#Q12sfR*ofw6L)<%i)(f zb#_A)ni$^*GGGn_be!B5Z22^=D9%g>Wxg3tEAAt8enmlAI9)TiuldxE)#@4D*G%ps z->KSNnA6Y4l;L2q@6Pf-zTVkE9}fDk2J#KgR{FR|AKL=Sh!1Br#6GLpTs9R)b_UvJ zX5`12c`h?54a}@s8F&N#!nFSypcA*kRy&1w+AD|=eagPZYU5J=BmN@)HP$@8!rIA1 zWwvryIiozKTu|Os{;Kq=!Dpikhuz@G*FdRXMJ z6~itBjR;B!Y6&`P3A9YL%(k>xmRj~&p11te@`mMY%lnp3gU1C|1=j_)1+NOeKlq{G zM}z+od^Na#c-HX3;qAjW4Bt9@*YNv>pC10m@UKJWhb#_R8S+f%u+Z?(*wDPtlF$dk zcvxlF?P0sZE{6R+tT*gR`1tVZ@P_bJ;crGvh}ar&AmUWS!x85q`XYTI10%yCV#iRV9#zl2UIitQBF@D6!5${G9M}H^!i;+A=0MD)m``G^#RkO2#^%QEjXe?jMVuNJ7MB`V8aFMjC9WfGYutgjcaa5g z*m}nLl=VVyevqA$U7S5B``+wFa#+s& zIoET`a@XhnHuq0?bMtoPeLA{f^vcn{&5z7a&%Z1GK>mIC-_LjEe^oHC;J$)i70xMa zDqK_ecwv9h{Gtbo-YOneoK##~Jf-;I;xEQjkLeln@|f33MwRR<=_z@+)KVH*nqE4t z^!~AaW2?tDj9oeQ@v$$KDP_~j4wM})`)S$hWp9>UA7>aBKJLJ{3Kh&_rd)1`OD}3qQR$OQp3f@jKyg$6T7S~|#iGzflNPOC!?)y!25s}`+Vx$1-V z*7m2`zghjeHIvrdzvkkaOKYyL^;;XhHgRq4+R1BM*50!A#M-lKf4%m9JIoy;I?_8z zJ8C;@9VBhq8z0{I(#GFy z{A`n9Q`DxcP1TzgZ0gvwd((rPp565JroV0W-JG_0;^v0UU7PRO{P5-rn?LO`cNKKa z>{{8iv+Gosqw9Rvhh3j{^>zDqM|LN7kM1t-p5DE%dtLXP-N(95cmJ^ax$XxDb4JGyr4+;Mov13Mnyac;+}JKo#z*ByO3 z{dZb-=I)%bbK}kfJD=Y9#?C+Oyna{kT{U-|x$F14%6I+c?k&5GyBl_Yv8QBD%bq9q ze7@JVw{7oF_I|oAe_sv$YZL#S-1p4BEBlrG5&P5jkKf;Plm9yQZ{L4(|M&Nw+yDCh z-u+h&_#KEj&~V_{gNX;19z1jK^FvLC_TFQ6F+9ou&7@Uib5`_-}DV}CjJ&2hu=3CHV? zw;kVjeAn^&jz4z%h2s~G_nt7E2sjaYBJaf96U$DlKXLnsy(eBe@!J!BI`Q|DekVts z%syFua@NVkC+|CX`sCS@KR?-jZ}7b__l~-^@ZQ_*ef!?`?;Ckv!+po^Z-v%W*yw(v zvIn-I%3yOw1jh#_#|OucRvKIZ{E(~Tnqk^M&)O+Gqp&o59D}}9pmC=;xqm?L@Dc~N zID9X{W~gd#_~u0S_y&(}6emWU82z*pGfvDnfmvb1kDQ7q97;})fnUwd^zmtuS}3 zXKwnuneIBz4pparl=2(ZD(f&4{|Uta^;YNZrxm(KXKZQ-S>ZY^2CXgzw4Y< zT|LdITANz4@~iw}jPok9mfQL3g{31)3;T|at*};%1u?KXWb$rP)6x1#PBtG zLK97Tdl^m`wb!4SsD=JH4wI#47#hheJz;2hq`01&=aZ0vh83Z~5vG)s!~`SS9ga2@ zM;MKK`M!Po_V3y0Yd24CZmX|vYo2bl`|dO!JapyoJ$D>1x6fX%=1O~G{Yvw`+iB$M z`qQXo7v~0qvjwKjf(uI+f5c8X?TQ|4=jUhmrKdNcNa9c-+!6+-rstQwQer zy?qay+Sk>!q^)g9muh`r#~<(fj%{_rALn<{7>H+z{=xgl7`%YUrsyBfafH$sU}p7p z`LlYbAt2B_vtE?wkM{VZJ=7Kz6Y0bKsrf!R&O<)D*?ArxXUl!+e3Z@}6I$$V>G6{- zjt>+61;>Zk6<=2q?{ppDXH={0W1H(uo4bW1b0S3x&*~$G76xduBzrMX=Sjp#^y!VD$4lK~@4jG8barzeu0c{5Q^m{=GOVa7Z6 z9Y4J5mOD&#-`W|AW;ZNtn(+cp*k?Yr=gPhlTW>cv&uDJHvdXq>i>>|OeQvHNIzU_o z6z`@3aCDp(*VF9DI_}vUREK6y*74+e_kCP%YLW+aFni}gyE;eFo@#&Sa^+?mryC4p zZOB?r-}Fwz_p;72H?2dIBkMdnR2}d%##h!6Jl*N$=?23DPblPWEw843miO}X<0$+1B^boqItu^vu12W)Ni;H1mvHd1|5PQ34v(-QzC;^#wlZf;%(NE+4)*{F&9g593L3pcoaz~^+i-r`$b zJ3!-4@mkj*R~_Ft=~XB(VKPD5 z9k=rq)!J7oXjj}t(C!#98c$-aSJxv(O@16l3*-!=j%dMZF~juRrJ`lxx(dTbw5%G} zH;K_}b{aiK&w$Z03^{rVzESki(`C4mD+ct+8DLOo5Cd|Y#sKQ3(_dWA%}Z8kAVWe( zM5sLbfNj^&Bin5UF7T)O?!X|%@ypkHm2IvXbWCV{8ZAG_DCVI({y(WEpW z_24s-8uGU<-1uAAVx-C1Va*1@o*k{(vyNe!A?8KLI1z_DWouIxKvv#q+ax~XY36qatGwhLOT5F_E1lQ&qO zo^_tYdZ?hsL3OCd@;+`kIj9avKv~Bv0SDC~2_@^eWvQs+NSF4J7&`;WNmVnsu$^43Oq& zfY6*|`-Dn%kCz@293l^oh)3PJ_10U@o~^H{sz0k*SFBvTa)s*?-ceH7R9OOI1+~P( zk59+mk_6aVVTno9hA@l6thGUiH=U1#NF>(fmmI3a5ll+6C&Y9WCqz6Bv*xb(7*kSH zbT3G_ZQ^b^?x^2hqyLR5apiyaQbA70h)Qi^UF7@!9D+iArJ$PmPzVOL; zAurBba%EXV!?G(&=4qow^4bsf={#pd)Cg*EgvEiyO<`gLK)wX%E!L&8_$CbBgrWIP z7GS0yF{o@yk1rYy7cK%qI~0)&A++5t2smCFS5ru$nt0&?4dewo&$@N%qPAalzIK2g z7+XEQqPVY=26udGyV><~UZhzoM+E(2jTVyNNv!V++78HZMCp>iE$vZ9aQRF(mmd*Y zOaAr+Jinc&Zq?b1v8Xf^39Ljfb{HqIAw z{SxH{(sg={m}^|e7`VMyHOJwrjlpQN(et6s;{rI--?)o;@|hxD#&#z4;`e|iYJO0TOeBNmg=A*VNVTF$8G%% zszWm)@8g#0gX)mPmUY|`Thwuo40S(^WWTKCmi>e7L{eSWaZB|STWMjaizHYh`R+G-xUha&} z7k<|XjGY&9WRNqm~5 zk!H$qauZp(PH7=I{d7Y~RS};<6Y#&v-`upx-riQTV#SJ@mUjN0D-rEk&wu6`tL(qt ziy0KH5*)Bh(3B@F1Zo^0>ySQ`b=;8@jQq{&JgG-p2Gt>&lK1hXslZE)Xwu6Zx{xW4 z2)&GWwTF-EHSAttYp-!~Yih3e(CC;%fqB8Oa4{~ND+O=;ZX=Iyt$+3P4X&%$e_7*t zhM(kjyDsoCu5Q;dv;ui;%HwE-FDSvsj}+Dr5=g|$b+T|%f)BDMBqan(Qs9T|t`9ms zes_)QL!Qa6x|Z_$Tmcw+@eDz$u=0fj)_iJ6A3tsEWgX&GS;sv;gX++@$~x|G6?GgD zlICxGnp=A4cS5i0&}$hm3!kTe;|PJMkFg_(C2J_npTp?R_8dGp;6O zq-z2Hp60`&&*BN9&+uJEpS6e^ylUM>mvyK=vW}-e>s^P&Mb>dkZv8&6Rq#(i{24Lw z5O#}4T-2c1Dqci19IAUbX%h;R=nElO`xuV7q%fYZ3{}A7!tw{%U*?O>0QoKar9%M} ztHj6I@_@Pk#40H?J>1e`A?pxi7aW{uN(@0WXtv_!CKB4ezwk2GWCZ_IK=iTJrA%Hl9;ee{|+ zp^Zp}s6N8}K>UXkCtQ4LF6J>@b}drGV<>7#(HM95-y=9o-LTv3o+0An$N63xAL|h( zzHCD>5NzDo&o2rI~MWz)rz*cTvhQV+ug%ZA`hlc1 zHSo8Lre%kdHr2!FBAqOHC+4Ud(?ymhc~LSZPu@i!i(pfn{*h7CXMc+$Nb9XvEOlUB zxHd0N|3DGX@XzT95_3XRBf<({+FDFvVpyTuP`2Bj+TyKKbMO+l0Kiq!F^_Y@t zJC1+0zKgIg6cOn{AOx)sV~tK9=}Y=pK)F(Dh~+lD&0fZYuom?W=#tgx%fzajLB!r@ z9S%f**{1*qXxlpscM5HaoWBB*xRm0tqY%PggjLtyb>53$Tyq6~8%^AB7f~w3kRBR{ zA@Os{47@W`+S(Ma31s7(#$iDiIN9c*B?k|bT2&UlqL2Z?{9sdIF$~(`Fp~&<+3nY^ zVO#%-xVkvL%=OHSx*4wD*zi1ie=cHN>C6hgh>A~eKW_x)b%Z`fp*RWEPrO947$bj3 z29t8tF#?iHkzo_}s9;qx0YN&9RakxzEd+*9tg<6%dS+-^d2HF#s=U&vd3Jm3h{a{| z+jd?I32Y4tp0PmjnKrSqqz~$%tE_rmTi@@tZN z-ol@_hJUVEHrxE!v%hoaA9p-Z_j#S`d|jQgZFAEfn>)4HB+n@b@dRceDw4D5)l$Ji zLJyc|z8#t#K)Zd=BJc;)8-z1r@`2PYp#$`&d}1)qyl{cMD}?8ZZ1`U;sc|< zDnHJnF?z?;9njG@XGS$(30%{;KJKBo2!zRWHgbs?fQx9=YJ^TaJ(yS=df^DMpn4-EyY9W5L6TfN@N96fpO(IY2M9$md)!D_(og8A@%8UERSn4*en7C;xSvhhgUzzU4$3)U&T`hs)W z7rnkiT`hWy7FLMSeFrqLPEbmPj~Lw~onuI1o5)M`h>m!*%N;Ew zdsc8iX&JB&Sey(Aa5b&=@vCC358-0t=>Sw10Df&Jl;n-1@G`S*MBJ~t`?r|dX@js#w&Qb&DKA|b(uJ2G@eGW79+)J zaISe_IEQBgYJ=YhuZ;K&=R|Ei?plJ{{+0iu@fYs(s<^l2XX3nF^i-ey2&_R%`$Mwa z&`zGhjKrPDhVn-Q)@X4ATqN@j+=^q!bl4W;cf}_b!VDE*o(OyvVet$hAEOB_Vdu() zrIYNFN*Au|d?|4M8b06kgStArWZT93>gwoh&Hg}r1~x%1B(nuhe~(zBmrgeF8v1;t5pqX#sddRJh!#_xkJLgDJoDr2)n)tl z?%iKjz5V0qg|ikfo>e&AW(&J*PWz!FM-H{mxh>3Q`#5mnly+K;XrHn$5VQ6YW^I$0 zwTI-a`O~aPZcNAc(^ZalDKV^hTk)2H*-qn#Xt(C_iuvi9OY}1eMnV)(wL1XlG^s+N zAIq@%UhjewdlU0gkX7Y6vwIIaSU$Q3bA{ z(U|BK(e8{T47`@Lq---CxO4CR{rm3RZ?gN%YFs?)!w+XIw$1Y8e8;Xs2d^ADvimOc z^7#waq}tZ4vdvq9aTPIJ#AA&Vv&A{-SE+r3#Fpp(RyJ$v#kdRBZkf{m*ZzNq*`XY> zW@nV3L-I3q#WW0aF-$ku^pOy=6p3#lwOK;Wk<&6PlE%Z5;}|Al-;PKzBo2$ECy8dN z7(;>;3^H=Vi;6>#m*8GnNepp&JWudxg%+zN)Ni<7NHh=NnVD@%>}|U@|28vk?AW}_ zGYe*Nqt61>2jK{1gX@!3%NH+S1rc|&XmZo!BC^;uYV*Sz5tcbEv2mhJ1D2gv;MU80 zk4Ar@sXv|>6^>|24|cpbLjs9#9U(bnPdJ0*Sx`<-4D~G8-Fji3LJ|zP)-bE~6=f9` zW))p+YC73e)Y7`J<%mtRHr=&FCSz#bfQKogWW+5Yu%emB_>vUqr7OLpg6?EOp9yEk zc+u%=5UUQpIWh|@o}3?HeUj0f7)<$ne3+g1V_)Y6``F3*h&e8;TJHKYwilG3754s> zL|f37ur{?=9a8gXWW3nc%lh!7mgpNRdnT*>%GT` zqP^@)%q3AcR>w78J4pJDK?5-mFTLm<25Ct`UkjHThKW}gM5xHHc(=Up$cy9ex^_Ra zrfc(>XV1`j6y=;1BjLBNfAJ zPE?J^<%Gm9k_?8!r}?NaR6cx_eL{RZSNW56`}!!Q-L;~!@$m7_qgFKX&-zL~7o)G) z>yQk>2A1}_h=AZ6eK~t$Mw#A!A#-G%=R_T^{5VjP0rU7QdK|{KIZeWc9)hO5f_7f3 zjb3!+r6|O*99Y(AHi)Q-Ij1MsKntb_lR4F3BUsis%q(2)V2guBiK~er2o?(tMHrn{ zAHfjZ_mus)XBR${Zc9JC@Y(0=52V}p9j@E)dbkc(51%PO$s}~`4xziXY=A5_*U7ST z@EqBrI80oeK5;siLQj(vBD>LPi4&Y@$q}}FoP{#loY59R1JOCoR10Owc&!zRY+QFl z2p({%bbdY3cKMv0+mY=yW6t7P)0^$~`l>1OYpW19=-$%3cXn-K!>#7ko6Pl<XXZP&}fY$AW?;bkCgH|G*(`b!WcaTR8+eVKJi`E%vElJc-%^oWeo^{-when@r zy|_r+_ep+Q-WRcPvBH6uIrM4keIdvekU6$;F1?h4?vMx(sFNK9aEK|57IOSyYY7H~ z-q&Ilq~!Qju;0S^i1grKOLSm%2JxWsiYs~BMw3s2k5B!4B~7f?+}wu|zNN5KkbeU1 ztZ+*jsr~PDpS$gQ^jx!SP~RfH_p-n-*O~qO%0cjCC_K`juy8j8d+A3nIi!=bpksf; zAfOKs0}1k{que|S&dLB*aj{&df(`VO(9H1Qh!jh1eyAbkOZ&w)T3vlf%ec{C^YO{c z_g5PF{-T8T-O@M-Efy^j^Lv5j3iGS2njotzj8;uNeCY@lkByPbol%)t)C|}w{33lO zYVNd`)uI!rlPSbq2p^t(0`EIen&HU6Y7wbXuv%c~L%M<=$-JgC`GkuwVH`=28p(-} zq`EyvQAEvjf$-2&KUMkj&BTHGfuh^IUQ-r&Nd;y%D;XF0`Tv zQ>FD%^tKEJ*U2WB7)8pfgzLTHi5O8@0Sto8@2B@vj;NQQ^Xj>mLedGU#|SDh3(s&E z9_>TvlOE4k9$(b=xoAR`7;CK+eGo-50!i~K*AYz8wn0owUq|q2iq3kPiRUy*`_70~ z%OxI2AhC`hEj`_`9aeB>otg zD7M%+T=;5O>~i>Aq|X42w+35XH%^A2PF+zWCs}x@kht(kv2I4LlE~v0L#6ouG;jlE zbX`;FvPFxQ@=;B$@=~(ga@0~YhO4F1vG>W7XAoWD9SB29chw5}VSX1S9LRv0a%f;2&so*(r z&zsTAvlq^sxzP2S<{3l>qwqogip*Z~m)UCw+vw{wVg*T`2|eRNG(G|rTLhVqEKF>n zL-tyj^rO&za%+b%a{6I8x+T01j7F?aijWFaK84NUFYu^)e$w^2ePQ=Do@K`?hsP9G zjK^kQ1j91mDIfCN~ ztM0$5d{KZF9!XK3A)j%rN<@Xn`H8L!IsQ$)fpTk_%t}jxi*-0 z_85GwI$|(|_$DfxOz5+vQMFM}nuuB_l1{|lE9gWc0vb^LG^3bSu|%U8sF=^X4+G6>LGguEOaj_Uh0ARCv!QhuyfJP;Z$on4D(0UShs+KVg)- z9wiepwXmo=KsT_Zu>H=RJGXDR)wI}9J7rc~{p^}rb+Kuyd40#}&W$UU7{`}Y)ts)X z%+EJAwP1AZ$U{WiFuEU#QGJQt87Qu!&4OZaUBm;x|3tAKSjMRmuzOhtDs#tszOQHh~ z5MK2|kv_2-jATNvJ9C2qegiR3u>pveW1i!x(=g+|k(0kAu{PdrpIcDKQ$j)}*E~3> zB1oJ5pul&o_u92lRKKHsg5Lj`MpqpMoh5QHKoK@jL^#&f<~T#-x*Aq-^_{U^G^@uh zoslwb8<}(VZ;}0xN^{RJNIF;mA&_+8A;Lod6~`DTu;Fhq?ceIz4`K!`fU7QLo( z^Nzh8>+W`SOr2U&5$t+{XHLbx9aAT*U-#gK^&7jJCQO}_mi2CAP<`!WjUsG@O@TdHzPxyrBU{QR`81L|vKH-g z9{Nrsd1M{h=R9~(*#vYQ2V9eH20Opiz!#f4}YK{HF-!hq65u08U|?Je0;VnV|w zWE58*@xf(Ft8cWJ=a>SM(?{7{iu6jel|4!W-pgLbYS^95s42D3m*kJ;2(NUU#$Cc5 z)Eg(7jeG}ZQj}OnNXl_$B#EPpoU;=$W@aesoG)hZb9$Fho*bX6 z&fz&?QvvM7BAksZ5{XFY+c;kku1}~jk$A5FIvSRWR*;g84@=cIdrRe=4}+I`Z6Xkx zz(Lv0_k*TR4&ROd^Kd!ud95C#)tTFj% zuAda;*4Nie%`Gv68MAXUs(eB$6Jw*RY_^Eu{^R3DRLzaH#>Lh0pv)X=PDTbkGF?*> z($f+uM~xy*AKj0U6m;;l;10KDj>>UN(YQm_AzGAmD5qG^%Ah(#i?R-78V+5D)*NM> z7ZHE=szW+Qvnxa4ofSwA8^hPbkbjgVv! zZAG8OJ8(_h-DkLop7Ak}p+I%Of0QdKB&_%?#zMPJ+2sS*A!W4dl%+awU3(VpLwNuL z*I_kj^(k+B;5uZCcAav?2d-l-wd-Oog_NW`ZvFnLT3;xi8*_y3mmt?DRD9no#^W5l z!<3|`z5`LKvz};4yq}l$^`7#sgZVvD6OaA#SpMBE#Gal^v8)mucOV^)WFXCn1Xe;dxL_5${UokJ|Io8QN z=+6(U^hS?}?BIY1S|K+}xEBaSG(>K@)i&K`iaoc;d!Z2)6orT@H;X4ei8qp7pzCM} z#TE7I=jrXwTKzXk2g~~EFzDS2XrYMT;5Z2p1OMa{2q-C)Md(oH5D~J`PrT%{*KoSo zh1?V2xDf9kC>I4ABLPx6gxp6h`zu0E0u$?5GBZpl<&#ZKp&{cFQVY%DArq5Fmo`O4 zgp|ZIMMZ=b@*lcpDGhb$xj7l>x%E}90{(nf_Lw}^EGmoi@kVd{J-_R{`M3P;PF8cb z)0^KB9s|2Cbgk0aT_5cRmG}s`RInRq$D^Qc*p1%&PCP5?(2mDJb!aw8-%=g$>3J`{ zBi@j|r5%r6ztwF;jK$4&JnCbh8{HoHN+M$6k#sO%{?mIqcuV&k+q=8&xTAYoZS6F` zym8IxwOw6nPp{c%tE@U*QzfixF%rTrpULpTCL@j$>6oxcX#E~*-jsxi zTukBVYq=uix>1~8q`D9Ic6{!fsU;Ie&&!OPl$kIU=6r0_!eZNsy)!DOp01iOx|kfe z2AK1z6{LR4iicL-0^tLnNw%6iPUK`sj}x)GNX=RjVH&-mLg48Q6|#jIihYK(eijrU z*3XdV9xQy%V1yhzJda?QHy&;YzZx5DD_v+mx~5`lf$I}EBnee170qLj4_q{6)0&6Y zZnDPq;SZtZ7m-U+J>|rdYE4r#3&~L74E~pvfZk+XnmPS>DA{fD)i$~rpo;}8EXb%y z@Ns)=*t~I*Yzy-Xa;C>aER+;B*4v6oin8-uO{60*XwBp~(BD)LzNBWac*ukb@H<*5 z>kz*~MhpESeoNFZfBS-N>*&8l4=IY-gdQfd4Nm5fkK|=i>#RPo@A2$G>jPG$^K6_o z#|o2mp%vM%f3x;m;aF+eu(a-J2ox`-z;d3xG15vqOrIJXF*RaAgz6pP{8!r}mrgrS zmX+5%pHZ)hP6jp(_4yzzVSP|9ep=W)ecSygIT!g1Y`Zd&pi$p+4@1axWQ|7O-mzL!;WTRKSCoUH@9TTmo;S{0 zuViU@rCiQ2NYt%i-MUBCp*y<%uNUz8`ZoM+74q}p89olm#^va+Xtr5H;@APBuTH4#x?09?0?oa(dXJ@&!ybh_nlkcTK(|DNJ;AZ2fg%~(_f2G zj^W-z?zz-&=fx@dnw`*e`U-$|rh>-~%%S&OKGiU%b6xAS8Jp%#X(2;hJ`d5?7vb&_?Pz|UHhBYI*y%K`{uanatJ2Zt<)a$^u zTgxZH{!JIFQtO;ya#afNztG<%A)GsemYx1FnbJ1uVXDUx)Kfvhaltvk>N;nRSc_8S zS`?~iYf)uU)36rxlr3sy)Rrh!EJ`JbMD1jl#ANUN%cUu}Anv89gw%;6b|>eh$Bkb! zzwC5=enFvSYG6}ieS3OgNxdOBVgcV9pHdv17#CkVp?dt}F{27%3&Sd^r`Mg!4K>a* zL|3F0Vd~f}^tb>$CT}U{X77h_GSf)vE<^ekg3gEvh50}`b9a<{@MaF)(z zt>yG@;zT}iK}%`L8wtK08o5O z?9vL8YlQOc7QdLVDXlnR!RXA%6Dn3Lxy|M`f85ws`~6Ec>|fkfSKHjU+nAL;GcGGJ zD<>%+WKQMGMZ6@pvcB(^O8KVFJC&Y`$#EcEjOuvoM4*R(3wgU+}~ zB0w4^;;#4{qj?fyAw%b(1gu>o=qDl;p}Q6CXpUv1h{GZ$Xr%TM$}q}tLUK3Fo-~|QXvH)_TP)L; z8PqUsMOD>^8M#Kv1LpcUW9mXJ5tYRStt}I7$<0nr3Z5}+&g@Z>!on*v=Ga}IWas6j z`JR6vCpSB#@OPe_PwTYmfE@x@8`+*nms zIex6`iQ6)Ya|=^RLW;2!(qgJ6E$)$AJ~GEKNn~TmHN!n>A#$;DklD#{^F-G@gWdY- zkuJE%D-F9yX$__@k@bML9mthBr$wegATu(^SENCV@WtYL5P1pCV2enZh?GUNxJWu7 z0ah-UXq0Z^(wO1}q4_D;CtL_Rq=d8x>|2zZgl~*NbnLl($%HyfxWO9x(p~WlMI)wm zj(YZvjHEql>nkhk0dwbun%0iY*m8UF{JOI6q+wN|1=iVhrA7N~CvI71tE!qnEIFa7 z3bbg)Zs-Q(dG~H;lN=3X^kBmsKD~BB>*VK7?WN2Q^&;(thMJ?@9NxR3vBa)zhz|Kr zc0*qX2sl41K4eDC@fkG%0WS?p2#FpYo^P*7NZH$g?a<kDg zu{jpkHiN;2UC;+d&L4YvW2ZQ>m7U(OR@%$xpP&aMT)@hc8dLM);j>Weq4htCJ?J#? zAH*J#NW>=;WJf4s z1?>hU%bRwC1|kE!&1o5xPITlJ@>@3Rh;;cTRW zsKLT-$3{{gbiuuY6x|&`{uc#g-3``58v4qHXy%0rvEgkK=GozpW!w02*GXj)wef8J z*u`^Pck#tziVM(IG+6kBWc_$%9(%b5dVcYL66c21<5FzMJf8~*-K9%uJ){u1Fuk zRx$89q@2~#lZriLS(cs*5>O#tT0Y+Ej1r{ry_P^*NMnlRs7F$Aa#B)qa`_zXz;)Da z|8By>lu&EY$T3yhKfYagB{JTW5EYeRijN#P!j_7L>%TV#v<8@q%lY4JeW#bT5f6*i z4ve#r{`wfsY1F^;i1nXSzU%7HX9N5Y%sTMq=z(`idSzbfd_c3|4Db_4_IP0iUeHM6 zfRzwRAVPpH5UZ1_ff84pM)CGWWR(c+@E2#!VSxtv0oGxIV7k$JLTS4>rBc#{b9!6o z@#6^1;lsv#M%9ht5jNK&>2>L@UfQ?Xe??F^+13=vHe!Q=9vzlB!xVGCzI0d#L+(r0 zXVxn!`v1qi^aC;F385nkBXUZK@F@}@*kJv|0CTH30MoJ`lwastD#HI@g&CNl0gEO9 z*<2;;h|^d)mIlX2DOdEFttnS8mq}<5y(3;0jm|MnqbdxT5LqNygng3)1170I2?opv zX~4w6fJulGZ+=V2fePvw1sevlg?HPKDU(lBEK?#{xliQgP?39AZFNd&YRcLT&_i?}4VAcTZjpw{%BmTsXH1!b zk1Eis9yg0)E1dksU3~h$2z8^M2**;F=(=%&6*gg$7-jw%0&*n@CmA_F$|cXhQ-iK&eW4a*;qp6AYC@C`^#@4KCJ z1=dsfRd}Dl@Ll{oIDT*_4gycuC_}wI7Ky2lT3kt)mJymf(K@jX??l|X_o825YoOnN zAX1pE|4Wgx7>K_HJj2OT(=-8~=bCxtNq7lhoijz&5mF!MT@lDfgla{CGP!;tD{(-z zdM^Z!aFL!L&&->do<1|LsHo^_?8t@V=PX$=r+98utbO$8x|X?x1(ym6C)XUBToY9? zVe{%U?OkK@?XH@l5q?c(%IFjA7q$>QU+h!};D@Abj0}WSw{48o4a{f+Y-5{qz#5F# zI5-|kCSIpN_f|?$KSIe+1O!=CwDr(0UaW5T37f(ZZ=r~;GtJN2A_5f-Fx$W?jpl*L zH~dG?>jme|oH1o;e%6Euld38!;;Kib)x_F&wYBXkD5;pDd~e3&n)I@<4TVL+CycMD zaTRFmHa=U|Eo&K3G}Rnqnp={8%Sup8Emm(Rx;Nx|v~)J}3S0{|BYo-PN8$%8lvpgn zdn&)L%lyHbN4~$}@`X!ErK_0#qVIVygccFCvXOXqGWKp~h){u^+~u`V#m&M=fx=)k zC5g>{AX4P`IK#z7au^0Ok%gZse6TPriPg(VfPj+=l^uH~SCouiv+CJrCyX1nZQ0yC z$n&aOpO3LvyP>JHIc7vv{@glSOm;$YnzgxZ>4vqo@+nJ;#>Pd?%x{`fPP|nQ>v9$J zPZsuhd+rqz!EAk`+#QGs5;6$yd9cF&@r@x1(m7mS94>Z0BO{l(k_us+A+Ki)Br}S1 zAI%N&_&W&@O>(CR9Ax&vTm7GteJthkCsiMkfy1$AMZx2bpuQ2SM24==cb7p}^%L7XZwTcSS)! zCkjz4i66^o(ycBoPBjWss<=49WWq$!HWXy_gZl4Vb8B)&M)KU-H|37H$FyuyNMm64 zyjRmty^)YwJ#|j~!etk1QE90o4%$lBW!`TwFP|DxUL4ifk@G*va|qFuJU5 zcHcf>!BI=Z_%HPyf5a}N{X?E9twmF0it;39>+c^Cx(sg$7{V!V6JwA}mJNcT5Y!)p z+;2GB*eF5dM|<9p+8?d!LM_-s@?X!66uv42Gk8nKp1mC%yZ5-R@l0CpKR&J2^=2(N zh_Bq(*}2hme8XC0`W<&**}v~+l~o51R#k$w>iYi)zJaw$f7ehyr@o56FKkl%DQkO( z>jCt)yWQ6j%arwzqlD|2JlqdhA;J$ zA8mC+O~y(X-iGM05+-O!*9%_mk5^>gy|~PM#NskYN&NW?dK+R$J_2#zcWrw}M2KR* z;>lZ9)3B1_kgVw7sJw`p^&>x1cwfKL5T2QDG-5a2#2I}nX>@F$sH2eUG1%D}C3eqC z0=fAL-9Xq7%1aCt(KeC?utG;~;{xY~UUbHcATuA^lp_*pp-!$qiUU0o3+7F|VD2*8 ztMalYktUup(-0apzap+UH1rbbh4!-iv_$@lRK)%T<1;2jMxn*}I+K~+nj-!Vl5DXU zFI~QR&8M5b2j1-oMN~ArINzx7!z+}1fJ5qY`&CtE7ojp zXe=p9&9E&CZVcSp@M`+oW6~0`5?=iA)QU+{me()Lnp!6W-;#OJV5J5&M4HA}4)DF71E$G8GYEDe2=oZT@8!AO^BjB>-HR;O9J(O+O>#FXFI*-4(@ zH5-0TvhS+(9b?6THT?tk_4oDlf4;dX`4f3D3BQkBeXzX=fNh`<%`3tKqhIl4cwl7B zD`Bu(m^h5q-MO|1@eg1FAOJYlwuhhAf<+rge=%IZIbabUO4ccfrWe`RPAQyQKBi3odiv}L$w%z z+@7S-R5SN+*CK>ik)e~2bg}`=DU^uR7q}@4eT*$#sQ$O($k83_nr~M`kBsyT-nM#0 z@4$x!d&c(c`_SHl3A=Yq`)x2(5)EGmUs9c5Nyk@va`?Iqk$_N2jS(`x z04;+UOwQTAW11yjj`!;F+Lp6p*h+h(A&|q%5uOZolyebEwASW}mrp44(kRh~k0$y? zM*0#*;SR@+B;PgI(=$llyZ2|0vFrI5%j5fQ4!(2jI3u(p9<7`jkF<}+(+dAw@>0VN zGSZfT?x|EXYDJFu+D;x%MWdEt1Y6~!@)c6CRE`)6Ng&z#<{C6v^OL5}(Yg#)Lz%By z@HJV?l{lykFquM$qg8+kPeght>D<6m5+Rr-JK-u}Ux^(b-+e3^T<5D?KD1@mZO3*G zEnhx;I`8&_39Sm2M^Kmsl^`mgUbEq;j*lPN zKR!4-K0G+S|H$-d^Q}ACRmpn?mYHPZ>{-*Y0s6J`Rx?Q>9vzCFCya~g42+98r&3O? zC`40~Yq?_GzF|Wk)NBJnq2a1GdG2|;2q)}rkft`T(z|=alPAY=E0_#v= zukfm4Aj>MFX%-Y+k_)ZS0l-hlXPm-U25DX3pw%2{&nXiUW(}IYiSyI`loxMQy?5s~ z3%)rz>amRuUb*YeYqb5TYi?kn8xA_cYs1zx6Tv|3-Yt9gU5kCG9kegCL+neT0nnm3 z(q$N4(}xK{UBOm>pEfsBk<)K|nBec< zb@S4m6)SGP^X~gcyBBS^`|fQ^`!?S%uOC`rt#8p68U`B8qpR6vC6(5iU~+9VZf*>N z7fEL)sXix`q*iOLEff1?V@aNbBgBVDDUeBu@|^gJ>D|=-`~(T!{}~89l|Tp}9heY$ zR=fp5k5+JM8;>*=OvD!;^eC=e!q=E|VVU0IhLakcRW3m3`SCBG;~+hQem?+0ZY7W& zfNY6Ofx=!; z_~U4^TiSCmMvvCeEKi{UXz9KT2PjXNm!k&XrO>fYU&u*s4Eh7?NV}CYw z?1r3eIYXbT#* z$31MdeB3`IT9ZZsl6+(-K~3jG0@C=1E0TPY%V2Jjf;9M{Prd~b(7)?|1mp^Xn_M}K zQ4I8t0TAgoNB8IG*BkYNo7ol+9xHHF){$@HMQ49$wfJ*;Ts`qCeG(WHZyko2IQt7n z{#NZDdtld9C&%RLPO{6AIbehbSz`7v_J5Of#)Za(dD8l<69D6{Z$dvLU zOr1}tOzPM*r%vl;bQpE&!JizQ8+A&bRVc52`DN4rINhqOORYIG>NF=>s#Yh?WLh;+ zb($M370dm{&>=D}i?0^3zAZ_~S&HvA^7w9no=R)kInS}t%1#xhZqXQ^m;o<>uPp$$ zDc8S>r75N*l*hdY$<{?4g4%CB_PEC&$3o&`FXb_)6Ph{q7AGvELzl!t%97JrOG&;Y z(<~R7eB_!Omo6IFxIp15F-LMFO%B!xfslk2T>={^iiu9xoSk4Zu{psWFB>o0cFi^0 z#Mhg}#S0fL`ZE8Vo<4%p){m%PYuFPbEB38eK>=GUa6zXgsJ^VAQ5Qxot@MD5gg&?w zGE!DIXg{=hYHnntnq-?mMgsf8Zh%P_}v9CSRM&DatB%$21v;x52V?^6d(Dt(^@lqH`TGp3V2(($~?J$x)J3jj( zj*--I@?^Re6jzOZ_@Gfn7)c|FL0}{q2#j|Qn`DZA1q@~yBk9y>R5FOQJVJ%VI^Jh z)>ugzv9hcITBq>grYTHmtRz)5&HO5to>iDU%AhS-o(S)^*8`RLrqdPTPWhla^50OD9>5gHB))Q ze-H;?D{cqh2Xtp2zsC3MMbuR^1yI69_T6Z@Ot*Ak^~#_8WMtLgQvGG7oA%xE?suCv zjT__fCB4lfB?G;kUB=6=*njOKd#~fR5#T3bXHVcKl?wbM_?>EA&RIKrSwlr@6z_da zqj;zIN#qtPJZmpHNfP);0GS)xeEIfq;3qXSwBpaack@K@`||oT&Mntnx8=pnd&gS3 zUhHXW>v^%Og*aj(K1k~!?4&KqC9sn;9_EvYHZf?B3Tf=5Q?E(q5v6vjTN);Oy(}ap z3|km(;V>a)1rH9+(T;LaQIwivvDvMkzv1)iCU$Hg5T)u@sv8QMV(VZ2hJMp%;RaHV zAe$ue=fS*JiPdb7`|1g4z&Fvg*-Ud3-~{H>CX*@L1(fn4e)3N_T(I%WRn9lpU9qV` za1D%8F4ZcP*7ehybC4G#G3c-#HHII%U1>)jgzs;vA=f<3=Pm8*vk_r@@oe9>qj2~^ zYshjA%>rX!r((|-16i|+rp2T&r%%1+KJNy@Zw5M;@|+tm5mqI+PMx;T*uke_Ba;mLAQkEI9I)Dnbvjv}R8&ix@}wFjaTur*96(m8Q0Nu2 zyt2(+;c(@9&F%mYtNo)(*RCC$8t<7`Q!}pzTEyMMgGS>Pz0n_KPft$_cP-z5o9kI^ zUE@4LUeacFLaaWhNGf8rDvq<}jI5oKcLrB|>a=sl2^BjFwOW}hAmzJY23xvwB3MJh zq-I7mmK_&u;Rx2Eb!#gtyXMv8Cuc}SR~uDNJx_Bs$0cQ}a4EDjk}j7*lGX%E)`CV; zp!n$3mat^j;b$CVAxYQ0NJ!EzlJY<*+w5a7@M!j;|GXs1T2`qf&a}LNP>rSs?I+pQ zo5^Z)^0!b$kROX-ADPa!X;g|c&bHyBlw=N@QS2;80}xKL65~FQ7>8a0V{r=1f)*|_ zJg{nFjl+W_APHglGucnB_U4s291&-*&0XkOZOzXwce^8YTd9M^*c+?86?x`dyw_cc zfSw*-mBnhYqsoF|`_zM;Dpk$c4wPC@`~Dt7{gZ>wQOF{Y^=ik16`8 z$P)vTktgKSJ@?+*vk$Zfg3Ali%euS3&GRHgY${R#`5u#JEQXm81{OGM0W=d9Di}iD z_zmMQg%XngE8n;FP)sy;FsWL5H>1G&>=`fm1n6GfT9K9$nHG)X73hO%eHAd62 z{E6dPzpg8(s3<9^2*0R)XO@@t8m5xB$e)rP*1Zmj`0ziqA|ql6L0A;Aqyr&Al#FI% z+p7oGuOFbl%IfOMsw%{W_Af0P8XO!dTiV}WURehFJwD2*wC(aU%*Hv=1a1-BOJ{RZ zU+9^RuCSX(%VsASG>E@tt;cUleghxGshq3Ryc*!VY81R`#7HpmT^c?A0)e6}9$4B# zVAjWpU%{>WdhSKP9mcrWd+Bj;?17D2)Nyeb+q8SnKM0<(aDHKWsw1*S&5mt3`9Sg& zR0%oupRdFTLFCPebg(O%plgsI2+@{?*wGMk3MP<%t9E3pbGvQ6)HX2*H*Db5_m3zbGjuxA< z{oCEG4a*!w?nalt1enWuBVW5fuC`JL~+?T$Nd+c-SDk^agmE6d8FmFB5W9)A4OpML!CC#S{^ z-EsK%_17Oie8-{J3riaU9#5d5v=Ef#dWARzt5cCR>|Sl7POGlAn&La;IeBEfoy1WH zChU-bo#^B%as-8IXf%oyIQA{vx11>{zpBr?{Am4FK;*3GY|Otbcfk?>g5*6z7Y&VJ&!laV@VJl4^*+&8pfEY?xh z9dBJ>zGmA6DD|?`hyM5o^nV$nYd|scJ$~rCsa02MPNp4PZBIzaH&X;Nd~qhF85q*V z53yB4KuPE|CmFJEsu39C6tkW=lt|vjhCgr!C%Ya`7Qg)R7!G*NCw>sLErWbqqL?yp zD6>4bG}@}GR_=Z8vhmG8tTnLmpnW2&P%qk52;z*rl%mNd9@q~Y|HW5s9Pa7I=Eo0{ zxBb(>eaFpPkC`{OE?H7P(8ErQeS7!b#oP9SC|nCCP9=ZYkqiB0=N!=_&~ZelQYc1q zVNA)h^1Uj880YS?6b8Vx;q(wsFBwvc=j<7PZF=9k-goQ4L$0eW?JLJuxO}U74_$x! z)^)2^t;3)Bfm`1=e&4#So&~KFyS7wR-gZUd_3s*6zS6RCIsZtHxiZY%b&5H|r;B%| z#=pFyNqNJt(qV9Oz$9_x@gfT{cRo^+KfN* zj%y2twwOu`BMZwe-?;H|INIYBhpkHsuie4E7hmY>j>o%w3**U~7Ob!jcXbWhS1icn z4hy(ro#GbW)QHK}P=d1j*feh)rKE!EF7QVtNFZPjlHU#hg4`g0!(BpS$`MnFODb@M z<$ZR$Qi~^qN@PZi5GmN^HKU_z@VAN>rJ!eUY{casTe$zw@mt>au3OmcD@H6MEBHrp z513_f&M8lj}z(BWs6nnuEbj@dU5!he6=*>#>=NFZ*h&2!MgFx{KV>Ldpu*YXL zIv3%qBp3KnO6%V;2=6j-^KjeeQG;-#lMBiYboxBIn{ME=Rx@tEL9YaS20vu@=;4el zPfYQNqa%G(5U9Z8gMV2JQ4g<2?~D?e$5#T8m~s>_bV?w?9RLC`idYEPrYezX#mr~}3z>%7v#&LUHe2?DCJv^1KRmn(0S3kwSeo12C_ z9=ENapvrgH;mOI(Wk8;}WG^(07FF799-~*EV=xxvIrAMTJtrr}=Qf2J?KV5|srHw9 zD)KEhq%oOHMb1Gf#r?H74Q!3H0h-Yc8p!Jfd$*vQTC_eJ$B%L9GpXeYq8(y-165!e^$En9^MW18OlS3pr*1xlP5~fC@Lx7TZ)cZq%1>kNo=BuJ)^8!zkzaJXPX?IQPyrC_E3Jg7DHjJZF0?wvQ-qm6;@$|-O`-+SG7E6A} zT@Czl-T$-i%1 z;qkaE7E8qABuVNmD(bDP>nkcMvgGHNIg5ZUW_5WyE82>~U=jQa7Z+FH8`l-Zq1wFs zoSgi;+7Pbta&q$WYTrT_#4y@x{8ncmFW&+#$ji+wDscHCCVk;EKW715noKF)(Im(FrGJpVD1C2k z*)ay$F(zckm#FWuWXIczjVzg=EGgk(J%6U$*x$kn-VZk04>mioe~jvJ0vvW?&xs=^ zz+s;Shwc3A3F5F@PJEW0?zc@n1P+5(`6O}J|DG5TIsYZN^M6uA{m(P>|FER{3yy*a ztdtE>vvig8Zt0^qL3Xl9%%B=V5!V*yV-(EiqoCwtVicU(BJITvml7=DGiNY1$E1nV zGXmhkCSbu}o~)a}6#&5%APi9+aoc45jMCWLM11?pM$D6qw#kMWWu+)$WlXWHghV~M z5=_5q<$QW&7npw6o?S8Lr$~A-W(k{QD*TL@FzR;*S&z)rvdVo$w8 z8zYpGjxk3{?4%{g%8Hch-y&s#y{V>@kn)*Jq_iVXJftj<=Q~e1ja7X;>@ybZwXq8$ zc(gSQH^~tH!=1+jM`Bv87|;+yL~d?!s77&*9C_#qUwFuT?B<(~y&PuwFTKR_!z;qS zdiddAg{e-*&)2axc}YM$$S5gmq-iBhF%(0ijf(MLp&?=v9B!9HJ$PU0+!P17rMJ!9wS=vH9I zRil=5QXHr2)bbfha1<9b7g8PGH#BV#+J62S8vk$xRG_5NJ@fV8pxg}BQEvkC<<$t)fBwXR&HZid+5DEEi z{fC$JtJgIy@p@~$v8b+77pe1x3Jbg9YgX&Wbk#9eb$Kx6Z*9{X%suVix=^6T-&m{T z^s2_W64biIN?u0m_|iygU25@D^6bCTq?pHnBy56^j56fZt7XVY)@!$fvc{ z)I6Uyc|?mm*pm_K4mm=N@r5D*YK*@kT!O}AHMVvgHi2}tjsBWIsLtEoV>am9TK%zL zd9^E6tsB#?UK8&sEDU+;B4~It1`>FekX^44AG9Z;gAd6uMK4al(c30v)s&fK>f$`1 z`R{Q5c-pjZ3X~_DZcRajI%f*=37nWa0~ZqYv|-B(HZ}+mg`cKN*RXVUUIZs!8xIh<34O5wAVf0pyl7Pb9Z zhHq}_qb5rxZi*u$M(p*{zGlvwN{NXAcCmBIzoKQF4pAJ;W1Ff&swgx$zM-GBqm^y@ z)-exDo61SM%6|UE-nDCcd)KV#4V0G$0-?|$xxQug>+HS@ZnM+NhC4@=FCXa~UbeD4 z(i5quz(;xVKH1(r``T@DKE%qd05p0mMWZ&UAGV=~l<3-ZM5QPX#lt5efA9%f;j^88 z4!lEJ*#)hNIIYM=2U_v3d4g8+VoIot+fd6Widm_j$EiHeHW{BGDh}cO1v3PRwFFnI zXyYZDmV75u-4AmcSd@`hK&I)~liqX4O6$q`^&~=XJ3E&yy`sqNhAGZn#NM3!`g}}q z{u+z5#usbvsKb?|))#AQf6ZyLIUF{d^Ml$2JKeu@WN2VuXk=;s`-3GV!O>u8X|Q7U zwRYJ)+W@7th(CwXr--L{H>KH0X?CWrAXAx@onTM!kr_M$_X+89Ko zdPSOE10*;wx8t znZ=hyd|CMyCax&pDNNB8_=-g1Cb)}uul| z=cB)S{qOKi`qK#dd>3k0AZ=D~Hn!+tZ39|!H_LL%&zhI`ek19B(9`%FY~aynaD>Sd zSJ;qMofiytOsv58z;x;i5zs(wqH-kgwCRxP>A*;3Vp@LTWjc~H`O3>UAT*<9KIwkN zn6Y1->JAb~St3fq|&cK`Ip{9|}5c05c(Xy;&iXYR{uO4TQ9)Fd- zljHbCdtW>Md-gT#g}|#zkyNc-<#evgqb;fJS=FJFZEo!9YHVE4WuDjIZ-~Y4F%LPZ z;~FxqI3?rY&O>e2bVVrC5Ej#8Uw#RGWf0pKalCwa3)fRR=0t+l*devaDw$LVF~u#e z$YC9(7&0uXRm}G9N>#W)tvEYYRa0MEU0qvWQ|gTo(#pzGxELj0*Dl^5r=!wn zG&fDDxvoIHB)I80K9ks`7DdnH4nYCZW*a$4fETpMivQ3YkJEz!J&8&9g8rKyI39>L z#$t_)buoCDz_ld#VpWZwdeC1}Mdf1XKF8Ol8NH?fk#O+jx#bF(?Gw9sD|H0R;U9K>ZQuI9drUTFknv=g%j zl^hZAkz)foCqMKzB}uiu(IUg)1j}6|u-sr!eBmoX4%vAe9RTeoYXa8C zRN0QbSFP;m1&zpJzt3OP5XfMTwZ?g|A|-<_8gv=bn8o3ldm@qC3uB3}Y-Hw;X)DVb zw&@%U$N{{u7rBTmgx4WOoam&ts{@}~;;A~&Vf9!CG(bOmuloKwsR3XxSi_hoUCwyh zMDkncvRUC;8nsREMzh!SsY zBM!k11)nCw2-nmVa06c!TVt54_~wV3pRw!*YrytH2v%T}YW#BBrW$CuOp;ndM@q2- zZQcT>9V|}=zZ1K_RFdr$#Xj`#M~>Zo{Vm4Pk#(zAc9vJ?1>{w0FJHI&X!FKM__Bh^ z+E}=~0kTJnd?1*|sQwzs9Bp>2Ch zjQn3KF&Z92TO+WXER=3gVv812Yaxq(DTq(aZjj~oqQz)&8Lv%MN~gm}uXfrd^MPw3 zepGXxBbX&&1)B`aC_y8iOR=~K&k#u?8~_L4Umy(dy97aCJc8g8lRa!l++zVNT^d4I z5MbjP0)op2xQY?3J%15~CHcdhS2xsMwq(uj)h!Eec9L(~x&C=Yl0tiHUmsurW8E!4bV*N#;ON*gx>H}BcrJDRAn2W{crK+Uf1 zXx|m}!?Il3TOM4|RNcH}_SwpCS%277m*^*u&1T@qd zRi@NH?AK_F$w^6!S?VDC$H`K7lgV!?tu>r9tuYQ2N7#;#D}~-ANTP&WIgnM2ZK@GB zV~v!*(p5?fhqVa^#3_;@1Wg?+B3wYTGo~o2`784Me=^N+%Oe}jb>ub?* z-x!~0Z&|%(;Oc{Y^E-R)8B=eyk7&2U`+y-b4@*YKGIb?xV>QYz%DfvPMYpWQ}VCjf!s25xtC*tXaD>FQD z8BLmmlA&rn6hHSS;{J}mcZ}lZMrVI2`#0=r+I=}mKpD|hf09SQ@m^^;Vm=2}45QS^ zfwaf$JoME(t*^@Pqm1TjN!V_%Ooh2dJ<6>eJPk8WzYOlBQ&zyDE%S*TY3c&6nv8|m zQ*`2r^EDo{IFUw+e8Kbdlc-26+^1o!sVoMOlK z-9h+kxY&%uUNi(Mf38Zp^B>JO8nPcRYAP?8Y^dCW9Oiq zdoor^(Ed~5D%oq0)T)D(XRVVyEBzX_koa5V6V6i4+2)~%iJ_tKO}}2Sa9~k)_o9J? z{7g2rKFG_&?J6`@4#2JuWq`+n6~sv2u)nCbC)iv5L)cqj?Fo}ThW+e8dfo?|j{`WB z&P3_;%V^X|m9S2H5K(9)ilpLz;Y@a3&n(k=rB}cUH$5-iC15(geiiY zBooPVeEhz%T{Nl%hTZ}BkH8MF!aL6-1D_u8BRbqK#{G|hT6Wm6yEHsj>kOt(4o3(L z836+hVW5U{ZE7_}dZXP0)k`eOycaFX4A^qJpvyKz>g(wYf#etE`sB~mAF{PHXfH1- zE4K$rf1F4p|1Zj@~Xi=aV-V6q6pIX7~?0%}~^x4GO%`d%_{0>F0U09MVN|J@e zjY{GxQB5Lo?Tt%yJ!x+Oa)md-;6}(}Fo7br(~=0qpp4CD6Ui=Kia>#TfqTf@s2Fx# zOc$n+l31%{;bsO7#v=zOT*Rh3nVY%vWabt zBR-#x?gqlu`FXjxTURzN?k4yCIjOmXBDn(&bYk7kE`?XZ4J?}7hX?g*oT34DC=N5l z&k=T=1Tm>6wUs6<%u_k|ZNume2h|-uFp#>t7nBbqU#(BnEC1S(Ofp|A5u19kg|TO! zeKv6>K_96avJ=?T!@daOUrD~GV^oXRfmkN#On^Da+%7wkP24>JCN}aV*aXLd=OHa5 z)yV+yM08&olAn>kNk|5YUd76S$Uxwi!VFZ582O0tMT9R~n*0n~>SCLcj|{O67wbs= zCXxINa^Xm5e8z7`<#N$@(t?t)Cgpl6MfrguR9me6DEr#vZ`5qr^DZjPmF&8pj*?nO zF%u~!t|Fk0yvfLgQRUbs{`L@aCYUq%C0FuG7t~S9<)S)j@-7X9GD(L0AS4T>I7m=7 zn*5TQEm7k6WS1-XnT$FXNTn%THewhHKu4X4Y)ncX|DrWz2%?nFn5Zu1%pw=<54euI zXv!qwridWw&YX~3i?9N_84@9i^;e$~73;64ZL$h7g<8Q4%NjqXT4C{V5n_o=HA6C( zE!>L^E6z&3l;YzY%4k~I!~yYq?6+{apsJowpD4{7N-K-DZ!8J8^9#&%q4Ev!(q^}- z*x<>v_==M$U_s!kqY48g(?g1*e;~{)b{IBIP|0Rw4Xh^C^MgRI-TZ?mBlZAA{S22E+AVyv?6&E>0`7v0;DGBXM286W#h0y`R{bM;p_+~6}hA#OOq7Ximum8 zhuH5l5~JzGmw|tQcXc=%$VsN>m7luiQ=fWf{M+na*P1|bwQj+=8zB!Gr9&v`F+|Ju zOPi%@75kR0$c5Y$7ICMA72vQU6k4=}Zo?Wk09MisaK^%M8=d%-TSS}xIDCWF^bQHp zHEqBGRH%;nIh16?i{zb^7+&4$=RG2FKgl#)H97!s&3f zMk1~FVpDxPL*@7{w6iZc%%&RqJ#dvR^z=6-hf%YBoFBU%E9$s3U-4x46U}|51udR| zhaUyEc#5N_8g`8Y542?JESc3Ln+2FeRdjHwg2`z7S9gWYR$_Ho16E6MUH}0{=Hepn zK%FaWx0hO7`96!)Zw*B9aobxw_%)qQmup;W$kE9%WOfGtEE-pplmv8oU9LgB?QnF| z&3?CWmA|BvEMwXpE@|O;K=c+XC7Sx7&gZDYnac!d4qPk13f6Fjbn;24gt=!(GZ5N2 ztwiV#PKBhQb1fYf3b-Pw-iV+eJAql&Csiumj9p27uz@Cjxa^1g5ul25(u~eY18rWm zRJdGWi%Od^&?YD0^A`7IQo-(YwAadiJoleXt4jPOXz%9pUxN*672g|=0YOh!-#|kd zD?;E?;M0R9m*POTm=Y|lrzb(U$ciglOsNX;E!ryDE~k)g%tIiRQe+EKQpgWvf*@ZU z?Wnl&_&qpF!D0ZLV7QXMY9oJe&mBkO@2YizR z`F#6e#{lc=9O@jpX{2LcWuRtf{o%`YTs1O35eh`s*W8rYvr}#kHx_82IywivcvW(X9ncKh@{D&M$l!({;VfTiPW@-|SzB!v(ksuQ~e zpaOL~Hf}>PWyTKAU_`)E`+%QBAl|weIFC_GJaAq)Bp{fjoZCj=9A?87Z*e&uDghtG z!HcHa;S%T6Fu&7{1J*Y;ce|3l{Yl*=Gz3 z7tQ|auG~Xcp4@pb=dSmeuDaYf(5g!=mE%i{+qRhqh*T<7_h~w${fdw8UCp6c@VQf4 zw`eAtseBXq%SXTt0PLj@ZCbS8pi!l?T->xxR&rgqns{WY70KhRK1v>sDINR@Dx7Bi zGQpWZSSn#y;QdKr2%U+MO^$&uG>A_1%%{nMRxk2V)76{8OM+!h{_(a|6;1i(_pZ0t zZaQ$}Mr{4`t{PhGv3=#krrcm#zQ57ukC()2P2btGFI-@;Iy#p&7GB;^8gq>mwO4N0 zf5krY$b!y=;kM#2=e*+b(Mr1m#x;M(2zt9pYL)Mie-0}|Tw0(=T!sMyLLwfw2D$H} zl`q|hwMEP?e8q`>;pT_WDBr)W1N&YC;2%Ys(NyAHEdIsZ2UiNTleia_0Py;zPW8Wr zRsMC|+hI90?dV=#va$ic*V1pJX?ypYl2xaA1|Pw(FawVO>fh(z(7hA#;Sqnm`-<){ zzrTc%y6Sz86xTVC+V4ltTQT2!3UZ}T+ND^z-@EAfxz{)dwWFRh$4+&dhs}uRaEnC` zLgXmi8O#h9d3DhP7O=|P0+LS~BUlKLhdnm`oJ0f>mdlTW6HxGkrxge09niq0@BP)) zKl#b7U*5}4?i|}ahQ;<8oEyJ=Y&U9*|G4LfonrPg{93ZSkW;HNTMn-=j>%Ok2qA(B z!ZF#53g(Na`S5DwrUbQCwBX_Y!|w|6HzDW1YJs)I^cTPQ#W7ho_VU`1!(=)T{xOZ&XEgp4cH7=wScj3Ma7j%dM__859<;-i0YpDhF&l| zW32E`Iz;3dbcS4mK1cWLl*yc1;m^lRVGla<>#UYiYiSiWtaaaMUE?n)$u;R6*4%tq zXEI|%=S7MT~rY`W!v})ermqf#PD{XuG+p*=|E1YC$ZB0`w;R zh#}W#$~ENJb8?)yBhHA+UFEc!bD7Dgw;Nys!YU*}b3UE({20bd0pf>0C_SNs?>$NV z80K7s&v!v2kYc_7Jg`7B7%aq(h1w5p@zH)X<4Lo|D%$Qh&p`77;6LI>7AGrF1I(=` zt^u}KY#cTNjRIc_Z2aWOX4_=<%;cbLYAx;ohGHkaFxwub8D{D|deSsBYY*S^356K% z$V~lOTsPZsG9zRPj?y8sI@ikqxR1#vju{uMByMFZU3|Mp@Q6uh>AV!dZ-U2K=#UU3 zQMsjsbIG5ul1v*!J99bFk=iQP7;5JNxBGC#D%DGaOQ($Cusd?5tw@hpRfV^O5|yt_)wD zRnh6`8jA}u7X{k#dUNyiI!qL~ekW<1-Xdqv<*dJ&->`=q_A+--iPKr84?WW{W zTM?qw8IyH7r#V-z*F%!H)cLnYx=E2ZB7@+fxnVWT0#*a(y=9!hi49~jHQ@_ZZ*n+r z7V>2mPLqJ-E#{IJ8@5JLsL1wQMp`OCa4408u-!IU38Nu*5`tV1h@ZThArNTpMbAS% zXPwx20>2^glmAE95pKpHo<>I2E#g!L6$jdu(1~JWxjTuV@NTbTq zGh@di-H0B`x^JlrTs!vrXm?>@5n9~{uS{4iphL$Lrun93Sf3S{8=N_eoSvpGcx94X zF(f-bs*K6a-})NN%}hVd{xj(yuv+BWDZLD2)fHIz;qZ5L<#!R39A=3W=TP6falfAR1{vn*@(*ekB)pcRSg8fAnS5OBwn73-a5|^ZPvE z>f_FP<-I?tb{+Kl1()TgLuz!=|-k#?GqRrhksl3$+>7jlg@Z zPr4KK_i^6du+#)xSE+eEstN5HT#EP@`i%2-V{1=XF*BN9DV%C5V@iD`mRk|=69_W# z$_V8Wk4=`GA;_4DGfKUm&z=zy8JywOmR=loLNg^E0IRskN#~|E z!N)Ae#8+2XGh@k_hgGGH4E9)6Di$Yyg4-Y3_&$A)#a@rlOz z`o@Vk(75%fn5H;J#!AGXA5mnn!zPm-(j-0+ErZX5s)c1)M_QpowUQELaGayBHZv$x%#)!(5i_M`8MjI3 zSlrJ8jZUjQYQz&{ZT1U7;}QmUVm%>@F)^ucGu>FB%iS6ZwIMfX%Wb%FxeCW}b8?D+ zsFDlZoE)HE6hOPk{gxUfbwOJGK2MPSlH8k9S`YiW)9LJpc1Am$E+>rb^<_Cgz<^dv znoSREr@1+>!8()Ih?uI3#7K{~q8+%k64me_wI6R~yokQblxtC72&`13Mm`+HIEPk( zaZXzr7s$5~F`@ys6BUv!8dJhi?rRy2O;v%*;9*&>InD{ubupLW5KYyyH{|Ar{PDqk zkw7ziV0hK4k@@ohu~<2OZaMY|_Q%yDk)_K%{PVJCWL_8}!+-uw`5|2lW4J_Gt{4R( zF%+$0l?$`>2sDjGaT~cdgQasW+JN~Ofpv=AY9waFqOMqL5y@hQ2VvTp6xIb{4Wbnq z+i>TnmG{4QN}p^g?W$a{J5*ou?w>MCpsPB%ur&Xdr#|-|$>i5x_4*dHbS~^?|9rNn zw8&4Im-qaG^2agf6iC&n{i-R;%vaz2c%d+KZhGlmwrSVJzE)Pe(p#z1qA|DI+N7gS;HF@Jdc7z%A-uYE`6ksV z^G&os{FnKn9=LC3-uyn4Hwik-OAjrvmdMfL@O)V^OV#neztl?ihH3dKz9QrxR$<>=MBT zoI@^peqws|fZzu0eL$Gw{j=;_$=4B3POqn)6Yok{&-v@bfy8H^GM?-BcA|?tnn<2z zo6h|Z`#Rcl{(jc;6X%|g?^K_YzL@d;x2BV?XTASCA3Lf1`E&JsR!d_8+)VA`V+Ryw zJ;`x>@$3?e5In~Snfv(xiU&HIejlR&6gWH0tjTKeI)9#e|AOauosYn?e4L5;BL^4j zNs#?aeulieX@t)C91)J^o>1SX(U|eRbvjv{_5NJX)%R(f^Y+0fPPCtobx`0m#yd#B zd+}{j9UxZF`Wkh~rLjV^fHnyE0D7EGG^)9wQ!h%Xrajw8lqcT79-Ue;NgJ(xTAn<| z*CBO8A}*15noE^S^#ilKZMmSy?1gOsT`n${CsKJ6?L`{!CS;-LJsgV&F93(ZYn78?KHycGSo1mct-JF}?Y zqnt;P@i0S);M>*jTVQ*h@@?y9 zH+hC|&Y(NV2!BA5U2=nEI{ir zYQJgk;7AQkD)b~8Q{#@LdA4i-ZTUOg3p@3WRh@VE2vnzlx29K`zVEC*XiTcYK+8WR zujcCSG=1M0Kc&;ZGk!{^pFt%E#);>Wd5uI-YJz3#~;*(UlUt)0?LBMq$>F!o6! z&P+q9tRzE=eLqI+v`7=CSpt7TbA2TF8(kY5A(7KrqRZY)jGjWgPepj2rW$vXK39bbQt6XIY^qW;2ELq^3l#H zH-V=>`~^B7C3IHeVEjKV=bS+Tbz*{AgxF`E?s@25wA$hPB+?^oay&83dd?(}E6v7~ zu{z725OsjW!N>q4d{EVRp>nb3&)q1m2c5-S`=+P^Ps!`xl53F$2FUDQFR)&cqn^~LNT#WcrNWt{i{Zs93;Eu!2F6+DI75QS&| zcm{gKSp-eqNC0HndM)}dO^K8S%-KRE2KArX7L@29>gP1KY?B3_0S)QVW{=$ zDByMDltKxpV~A*V1{47A3aw99h5;ezQg7(M38)>V#VJF?X`E_klgd9tIjSFZH?Z3T z`FM$Zbn+6Tod4ktif>Jeqd|HWtWWQVUROsJZ<98%P(%5r)SqB%K9va0=Jn(GQ-7j< z=uy-y%qd4Bm~bBt>PP*>#|$qnJzqNUZbt3Wa)Hkq zysI;MTxF58oZw@b@<`X1`jG!GYOWHOcb`~ViAzaOJiy;48ruqJyY61?a&_%q8A~*-zI#`9BDQjO z7a>~+iARmj6lU+C2R$7NN<+k)iHadL$_+; zoSjb7&UkKc!vGkUpP}auP3T^mKtZYJR4Se_7Kir+5+WxSO8$EX3$ai~^56Lf{j6nQ znMlrOFHR&|k}VVLEBMe_%x7tE4e|1$WG)c43PFo3n;nl4=j|2m(8%Gl9)C&n7Pr7; zyhRfXFA25>KG$cIMAkvFdR$}!#4DV#DT`u8NqC9gLg$gK1|^Xs#9Yq{5+z}zpAfTr zGiun3cG0?xFFP7(&5^P@a=n8~s1Pg$jjFkTmrmA_bUrlFIekc0(n1HRFUp6HlCxN4 z!$6@fv5|)3NusAwQ<7*jT6C*sze`Vu2hP8ro>1=ewdqpWQ&~@*nq8^ABX?&$k-N`*IrW6Ju2h}n>2o|PMCIFzC%RSt zbxM6Fku^o?*`{<`FjocHCh|1n&+g~+{D`g#6d;LTfEXnYNAn9I7NiC{%d`*H zA$23Byk8o^8KSG9&2EGz|2B9hT_x?2u9FT*H%LdMTY+}}Ug`bPJ<@$R8|$Oe$EClQ z{!w~T`n2>}>1pXX;F*6}`d8`e(l?}U1KIosIJNs{(yye~q&K8LNdG0B$Ic#FV0$62kT~wSw9^}AY`zZT3`+N3}>`C@%?7~0Io?~BRUuOTxzRteEzRkYJe!zahe#U;qUSn^t zKd}E|=VhI2lJn#O*(rNupIj=3HU912Uke4!1V-NR|L64YIO#~>uRgIPiTO(5bKKwN ztG~@x|IK;#Z}Y2|SO2%@P+8gdw|{>v6rgq9JN^G$(K}9>X#A^Btj$-S)ouOT`s#1% ztN;Ew@qbHB|1DoJ56+v{__u$5Efn~th1b2~|IbC=ankD+{?#Yu_EmYB+v~aAQ`l;C ztH|3*PGndSVRe)f>({64j<6}FY_c39hudU@Gd=)p$X zZ-d?ZG3=+N-!S1UZgGB*hJUT%cyM=c1b`yoNrj!A!U;OSLP1r-B0J!U0cbWs`Hrzi zspr2cCE0J~^0%qUS6M~!j9i{PgPJ@leM>HqmvY^v=7O4V%zs`uB8g<%lwNqC8_DOK zs$im6?4smxwr}K>SH4A`REGriBG!W%2Fa4bp&}YEC$=}7Z0B#2`M*UsB1V$Y&Phi4 zT!nEjZ=^L~FP4zxcq;a}-?BG;a0>;a_Bwy=Idr89$Cu+#kBxj4Piww$`qfbT#4-A+41kkY9q8J|=|~sh;Cw6rrem zM9k!KObmeN;B=MAeD#=k5p|apIl@Cq)HsmLFc2O?!nQ2gS5s40S5vcZ$&!85bXC1? zNo=^Jq_ni8WH?qo0&tSj6933r{@{Yd>w|&P)s2m-O9R3573i6+H~74WjaHc0(zrN?F}bFbeuFaj7|=zV2n+bfi<1B zsd>bjneocm!83-80GsUK8M%&wmo}{M75nL`pw5*j?<( z$}TtI*0{SW2dcUea)Cgb?y3RA1|vAwj4lcw2>TzLF zks^v*ZIfMRlp*nZD5fkISIcQ6M(1OfIappNBV3R6fSYNz+CzKQ?s#KBHX!r``_FFL zSLTUmqqq^f%fJTU``S+VV{7F6;&4&&XAQm8c6p7?=&bPd2HMuN4j82$-5LL{aGZ!3 zh-e7$kYNsla52N1Xj@4q!n!h7|$E zRV^thDh2@2;;O2}UU7xPx;}2I3s-Du;VG-aksS+Kwp4`cOdlVUzu_zP4%F221FyhW zT--0NKpW}&ujOw-qJ^ae(niJI)lC6IfZd=FNfi}L1B6o?zAkzSOu`6nH;;$}K8qKj zMkV4I;;Kr!2#-Z6bMVKAJ!&MdfULom5!vRU6D#41AyBu&m!O1P&s(!#M>tZ&Y2hfh z*-EXafO2@}$UnGB30wH*bC87T)30!%Ahh0Wni)x6!<_%eInP(z{;@gf!lVEM%tt_% z5^0fQP-CEJ^x41>Hci6wU}LZcVQ48P8(|DnG^JNuVaOtEl1^j`V@AVqF(wrcfrAvP zhzQY;6V7mtAF}vbn=4u!P6zWXWj=hjRy4QzEMtIk)1UOZ3tP*^*_PzP<7KUdZtqEf zhD&HGPk^txfSzRR?m_8d7Rrhc3!}ne5(?HZ1%oLrW02;wl&e^28Lt ztbs41REc|4F{MUa)x?w*an%x27VylVuw-;4PEX2!b5J24&^|Z_@z(Q*@XR6LX_;|4 z9nHaDv%~4^Ew&U}EIz9@=5)FPe&6zW4OMxElaC$Ft7@3H-0uq%0tTVj>d&_nvp-?D=L@zOUfQk{sC0WeLMi{klIiy!U!oo(MI?*8oFc& zV%4k}y_$vgk^(f#5eH-hb~tFtVPj-6u)o4*#pENGw+$Yg)8=>^tX>Jmn%Yi+$+VY{sr?XrR z*aaMKosA+20V)TSAKncuaRia#-`Bs8c*xrwt=!VOb-|Uj^9FqE)#SFs=f^ibv2y(M z<%yZAP@rVN{Q87Cze>&s<}%D^nBiLZEJiaIkiRgO1u?^UJaI&A)9hw)YttHkh=~p= z0ln)mc;bE4haBbca9+!rwm`41!fDj4k?qyJ4auJsg^Tm$UzP8)gyLldPnrsf?5;9T z{(9!?nCM!#Yq;8hNw0?OZ&}-3(pg?xlsoFJTUJ z$rJYg^(h+CzDOis8y47b+gnv!Qy90pJ1kLif4@0u>2O=)g*EVWs+FIT zUIE4e;S~tjYZVTC%7j_Q%$G_~gdt0S_o4y`tiJ)Lj?{N|*W>F3`Khtp=Kjvke)H}z z_#hTzh4HHHHmq9+@4HdLc|lkym5~U<@m_ik2(RP`T=+cTev2Dkaf5&?baV<Tzx^&IWp%xFIcrcVrRvqx0Zyz1C_^SMmIEpNWqmMs&)a(uxJ?t*B>J#78 zMQ2Ns9}l<3DxJIXJ-(pp>F1t%uDq$L+_u;1FRk$Wg2vOa^H#Y9SQiHFlSm$#aSz;m zF`LJoc6K`X!kYg$IQXUIOaFy!0J!z&N3jmwoctIrA7t?F(n-C*ygR6)m;*QD7JS}_ zs+_FwNv2<+P`TR~B?LE&QUTd!>RmUoY-st&y4kNiaBkh;_;VglvDF)NMw-2zLRmU8 zylmOd9^-gu*ljJ@zv(>II`a-eT@Hy$_;-c7M1Ust?i>^ee6%W7+)91qj;90v(PX0?VO8ING$(l)$}5(cMpJ}&niD85%FCO& z)SdEb&df`j^+fwpb)V1EcrT!p01l{CDRwfIx+SyZH2x{2L+?G!>g6a#Y5`{7yo~b) zv(6RabhbcS1pJ1QBaRcv0YEmuI2auV1#OCshsJCMmPfz`&YgZwL4N-{V{D^k!;P$d zkabnovmv>yGr3`qN?$u^d-g78bF~GP4sb|2kat3w{t%CDW z51iXUcMD>lSx~UNV4^@bF^NMEi%};a4~nxeNM!>O1ucXLCjgaGMIWI$yW!<|a(?&W zP@uZ2E3DtBAHDL*_1*Eqr4?*GtKT_)*y1&nmO9JARdLhu6@%U7Z5?K>F;H2?TX2F^ zgKiO=C%j6r*2PjS;AbOiE#Uo3bOWUny{Qzb00hd>1OUWmMO91r=^X$HrkhH{MpFiK znbah~tByHNMPbQq1mSu@S!Lt9$Mj={%HAclwTo7*nqS*m-%zXHXc(Iq-Q83j>)ghw z2M3I`6_IjVI5bdL<|;2P3mXTzng(r^^YjjVTdj3)2}#9!(57k?*`)DO$R_ClN)4kn z5V(ns7D`#OOE#Jg+q5Hb`Hmfl#LljGybFJ-zfEwXNwz zElz+p`oNLUdZYoxEKURkehWZ_c-eeVXcXp_D&i5G_yW>lW+dL2lx7s!Or|SZ#}L3e zWU^C$8d8+T51#zo#Kz>058|kRpC-R`^UZy5Z0D9e(W`_myF_ijC^KvAl+~*)8}Cj) zeu5O}V?O5tzSW^pM4jx_ek8wTl?B)TJWJ;`4m9vx4x>Ynw+mSCvH zTUDOyyLxe7L+5f(;v}m9w?!pCaFr$$siu~iR-zI_!<@N}63^;ie*`27Njk*brMqq|q*r!))-n47WsAWq|b@QUA z(b-+MWn}Y}-F5W~7SzvUHCtAmTzy$rXF=4zpt03mv~sa!(T2YIa89(LA(|6~AlKwT z8P2?@Q_TD%3PEq)ty&-R4o4r;@YWH(p+6bq43^(G`^&@}<;#bXFR~8|t|?^o_dmFM z*|LNGa2w6iC)F`p0w3WvVAD$N9Yi-xP>P~1hL$6C3J5%~Kx`@w(&YpQphYQ+2k3p^ z%7ux?Y*V!v6yt}vr{8ST|OgFlS?W%?*fTaLhCAk-ij|A$%e75I7$d_ z31rWzf5zci%@F?Cx+dGapuVmf%+RrAO}^j|lY?`}6<2K8B-d~r;M|Zre*u$l#z8w0 zSQ)ODFM}KiNWBUx<+?8>oPgR6H`?LWOo-{34T?ePyjj#ACx*c+L|C*iX8^y;u7bP4 zXq6IJQ2wX|Y<}IQMt?_eMPh!*=;e>x&~|l0B2c<RN)Co7a($U39HrXcIfdc494)D^22byV5g4d$};pQw$!0bEdgBmCt7`na^FR zG@rd>nuVz}PxCbSYJDc>VeF)8{dy|ZGjEYtU1 zeUkx8th=z7$mCVlQ@^1m*dHDl#`eX1@2S~R$AM%8N7{1@Xc(=d02blA=sdh%gIr@CD{7PCddL3Uj~Y<;r#Rz8%C_~1wDiHJkGQdX}FyS3r6+bS8&c6e-{{# zR{1iVHqG>|iJ(Gms3kZljKtv6ofNb&V1qStxmd z<^;ueTjY0W)%ZCM0P@1sd3q(|ljGTobOk^N0z6__c_zIcui8FGH)41E^mH1ddi!q1 z=pE(e@CuEYmRCn(-X*W>F?aq*O~I7`=FgYu9HlAx+<>NJS`)yFzM;l7qOLM{IuWZocH6N$36nACvb@B4jf3CMt7SKZV>iC6V$! zbqXVJ>J-M{LQP4)L-#~-{sSU!4{6=cS#d5BEnXXgX zph*kC4Mkhv2sowd2A?OjLBgR84>;=ve4sr1ud>mSbt8so&{XatD5;h_Gjn)`Gm~@# z!WR(&(1fteNg3;U@M!YXDfH#ksd63IgPp!Hxk`x5+R{~`-dQCij+oyHM_(o04o9r3 z@?HVfq7+ByfTE+X5~Vm|R27cCO4L6GM-!<7iff?*3QJ!lN+}5)P&oQ3QHmpUK;h`C zgom@(lTgVj@ubuN$qRI#4jwW3DqpfnIHM&ZgJOjcH{lTmRq*3hPOj))jON!aNWorp zbvLhTXl&i+Km1<0{?O_4%AQEo{%{OdtNg0#-H+fqN>!{Oa-7BW$}~Nx(3Ss>o-p5` zx9;$IBHNQXb)BtK-U{PNA1ln5)DhrFow`!3FyQqSsZ$aTow``9Fo3HSM&Y|FjNP|3 zvhe{nL-LjI`nlMEEYQ`T|jtjHBCTZxvMTk%>!1d^cQti$!c;A|-S}%p-3TM|?rOL2VZ_ zsGX06ycydz*Is(rwb!1!^z`?mH9xDF*JSqHYxdPQKU=pn{OvnO?t1L8yGHK(HqEWM zXfA6D25&ua`sSN18Q7ei|JJkNs94q4!<+IS5$`-e|444ZeChuCGHA|H?A8!}Kt81H zU<+4@$6hOXTACIJrzQAYsNLRnwyKFO*neX8{JO=PySg?ns=wuP@7dSWx^-Z%x3y>A zd!C{VXZ3YG(>AXqLf6ws^W3&?CHFEo6|^pDe`IYB^9MJqdSdpHwh%plmQSJOtI;yH zjar(8`x7?Iao>#J4i;S5Bes{@Sxb|6=7xuF3r}s>-_zPVIIy*~Xa9!J-6A;X-n^)8 z{_Yd|kJC`wlG#tJ+7R@!p0$s(FKP`TPWIm9x7y}5OHNwmwLR0-cUA*}BQSW05thSh z(uAEkvV0EuES^iBDV|!3C-_vx?GXN0GFS*6YCqDtxV^R(PiEhuGl+UDx# zW39E}P+fEE`RbOsP;dUDyS803v32XjHQRQ5G~Y{aT$ew%s^?&S{ff-~)vNbs5KZSv z#Fc*)^JS1^@${iOHz9Tts%!5X7E?tzs>!`1DCz^Nt8=0hUz$Gy&v1uSZU`UnL#|8Z zx)6gM->FfKqkHkwReS%iSe^Z1%K@^~KhGuyQhZKC>_OlegpDG^?tV-J0h&b)V<4)F z=N5QYVSg`VxpIdTW8{^opxX4&k;JL)?ym0c?o){iZ-j$DQzP8>imkz!jSU@bi^K;- z=FXbczi7eQ=B9Yd{FZnqT(w}~!s7!2lk?}}+cWbg2S!dHAbM@QCfZURgJ0_Wn%ahF zBofaqU9x1dpEmE9I%~B#`0U=M#)hh3pf+~; z?%L|=g>4V6Jv6&L9&ew0aNX&b*Y2O)KKnVi4$f?Rx+;QC$yG%ni`tL0FUCjbV2(&T zwZCYD^alK6lE`xyIhAI(BHwPOIrhQD*Yw1n4|if?cG{095CuDppwfu!pm2hCO7n=F zu0q6!-`VL9X`r=sIzrm$Tss{l^>n?Rt|oKoE<0U|eQJlFI>`?w_>L>MI6;rV5{WcL z-B;{1Bh~cpcADe6Sus29({TJG%ld41fXrbJ+UX!Ugh#Q8W)<0mXPPPb~-}3 z`CWE8O6G9~znX02f3xAWq|qm0iU{871V4)si{o2z6UXvtd?_tHm@?yAbJ;?Cb1`ok z#ijB7Y@#FH-PyIGBfcq z{qc3OOcX7%%Ur-dGjFAH*|Ba|X0ez&45D3CGMGHAHfRa%_GH4+WiXHeD$2#z^8TfIeDr?~}XGy(%vK0$G z5me(PboL&frwDtJ2FmH7x(kyq$BbORy-Z6v>E6x6$pi zA2;sj(w+1?x(iW*_R#a`0AdFX(jmGJ5rhuF`{)qj2wgzmi#K*Iq!&?xe2NYus!)=e zbOf=5QZ!8uBf?OIj?*mS3{B7@G>>RQ1zMz&h&gnW9;3$*dFTYaguWl~hfdN<>1BvQ zbUD3(UWr&lSJ4mAs}Ygt8hS0g4snUDryrp=AUe^Lih)78HL8XqvNM4Mu37(+$(+B8-Feig# z2v63&Ous_*AyU#qReG5wrAL!U)VrswD{=<|ro^aA}Q{T1Rfy-0seU!uPuH`3qI z-_e)p@5v|WALuLeRYYxijs6$?Z^Ul;6a6!N9TA-V3QxB;5Xb3F`W8KnXikJt#t_rV z$NVgSH;=1Wh=mc~DavB38d08V89rc-SWk_ti8UkQQ!8s@GZ6P_CY#0D5&bF7&SY~C z18N?dk1tCsWQ*8hwgmB@ma=8615u$mSr_X@Y^W7%CF?N6-zC*rCzJaJ&pC$L=?&~u0D6TMS;CJ4RD=#0pi)|!x5FM=^ak(BrEUw?;?kq&E zBv-LbY%|+JKFE4mAKQwERomfJ`$xp&dWgIRlR6t-K_4R@M`W%Kle<|z+kuEyJK1^o zs@F~YZp2o(ne8T@CO5D>?0j+y8(@2JC3ZQvf_xobRDWTEY>4e6_h5lE$hBB<|AYLT z{1UOeo?-jRb>unn3-Ua90Z$zdA`aNqFLa$JlXpF+0I7VeiL1-AQ&SyNrE+UCypx zSF#VXtJsI|-rPU2YuL5yI`(09J^Ki|0pCyk82dOo#cpIbv76Z^@TSx)>{fOg`xLvK z-NEi;cd@(Kr`bL1pV?>FXW6~%bL{i%3+#*RU)X)@emqHikbMc?^ZE+=SN0Hln0=Lf z4fm2?XWwA|3ts~J7JHO^n|+6U7vJvs-|Tzr`|NS{1p5K|A$yYj8~bT9>}B?Q_6PO~dzJl> zy~h5F{Wrc7_9ymd_B#6u`z!k!dxQO7_9lCaoo0WBd8ZuT^TP$cp9gr5Jj|v%nH;ElYAJjI)N3vcCZdKG~el!0B|0KVK z-^y>}pW?UkJNTXaF5j-9ojYr@xvaR*O=m~*W}%qR1~-ixiF_^_*fg9sC(Yod+-NRq zj)gbnfnp?z1v9cGke<7Von!$dXe!t?c-{!C1r4ZTSRf?XgQ48#p{6}|| zz$7z)U8-o8UbIVfXt&+qZrNaLcd7_My#YmXuaeeYjhnq1TGe2} zOr|p#BQPlOqk~#uU`Ta#$ZmT`w(TDhgAg0iIS39Z0YvtD?F9CZ=8Z`+uwQZz+Mi6D zxW`Ick%Jn}L4|Wj;)D;m;tOu-Q;hGnGKQ6sX^d??XB2$fhmAbz-{IQ{Y~Gh0^$h~x z-;|k18DV)Y;0Dd|Z8i&rf180}^!J*Xf)VVSu+o`aHfsMWtV6)!eFdWm{}STI{bIrJ z^4*@1L$_jp=N*{J<1>#;p)K9I`!_ohe3 z4L)cTgF`kG_OHaMu`^Bsd`~LPx8Q$|l@9M7H%Ao{e0OR*(tFrU;KnwCJFifmlZx~n z_n`d_G<-1aCU>~yk)0le$SyA(9kfy|QndHDmkDih$!vBp!u!1BHa8jB<`E3{y5MlX zo2=>YlSA&3?9VyL$RV%I@FBNGxZmwYb$?0Sn*Owv%H<0Vf$+J8lZ>3JG18ZDz~R1e zFPU|cq1{d@yvJ*{FYiM8EH^pmB7}wCaWUq%4 z+nY*wx!UbUK53;#T}Gn^&Acm&+P%4vf?itJCv0WjGLue|;eMCLaKAf>b=y*AaYC3` z2QO&Y8g3|aX4vM;@XT$(Q`&ICRntIHSto2$NONt<`eD;W2%5IJH6>zXR3kI$Vns(a zs}o6iIDxdXKxvzPTJe{*t<7N%GdiY`2xO$eh-OM)${=P{QC2U?s$S&mR&uhHSWdTa zfxN1h*X!jKNlO+*ER7pWL#rw{Hnt$~qu3O37neX$^{{BSU6gJ6i_*pxbq<0>yVp}* zJAo->Kc^%Ip()3LM2=}V#}v+Si4#8VN}zwSqM+KjD}6mf|{NMEw~7wqGN!ni=`IS^epI@XAdI<&4MO03o0%UY%3eH zN-Suq+=3p{EvQv)L2-prW~kKwf2NF?dWCggS}lJrC#awQ%<<|Vyak&Kqkdg*9E zUxky}c-D=UTkTNRDo&s~xqOux#PQ)OsnCh>;h3lY$W=)jgG5MK83B@Z28pO^50HsC z6CUZHFhTgO(Tx!DRnmwd(ICy3SVzpHF`UD69v`mOOdGOc+wvh9Qr1hRvZg7v=2Ou^ z3g$(nt;k4v(n&`xj6>Egh+&OSAIC1Wk%6s=9VzAt?l^_aqY0>bayS#rSVxLR-V9`m z<7PfrEhUo__XI#rhKwv~Wz4h@D`t~eBojG6hckikbQX6L0Zgo1Hd%#ElrZVP8At+PDiLm^Y&kR&yGB=e~so`89#m9?XVO)}=L~o5uG%cD3@dBO= zM9d?_^rVr2+L&QcfKkf~7krs?-Uv+K@dGY9`-=HoKn;>#nvR$=A~F|%?9JSWWUs4h zRmijoSQ-nWe}d8CL^2z7Q^S^7pUI7;6GjG|cV>1pBSoLfA0IxNjHXOu@)+bRGqMB{ zD7Yndrcss@@)MaPF2-&2Mp?HUSc2(PFTr$x5)(s~te{yAEWvcDOPUU*4Xlxv$*de6 zbfPhtl@OVi6%p*n~vZp#zvq3YbHt+9qRHQ~VSsTz-lZ z)9_QoQi@TSh99q{;s@1jer!S|{Md9V`Eje&$<~Fi9FCerrjn;-ohQ5R5JR)wWm(&1 zL4XC3%02+wqihot*mgxp#3l%Eog|?1R_k(W_qxetR_}L{)^Cs1CT(;)P9+7|kS-Xmwe$`zL9jf2}g_w(W81%q>Ac76aLtTLM-}U>cTW zlM-GgQfD^WtT}UNdQLqdm2v77G}y@!PHlm`1E-!y%Q*E46sO25OXQ8b4VY0XRd*gh zR5MEDsuy|lMd#R=FBnrzy3Tx2JUBA<=8KLixv`lq8)e0fT_%|J##z>~Cz7n?30Bpb ze#Y7a6kpE#aOS4!g9BA$+!-Q7;T8#Ayg8y5c{AD;c7w#j;;0$s21%$4rsD~UV&dv} zHY|*4HffQxp|#1Zh3!7E7y*c?03aa&C;%XatY?vHB)$}>L`NRwBCoKc5?ka2EnJ$H z635b5LEJO1;?h1lsu7pyrNl8@ig>-~K`D6&Ds7+!S%D}!1eWUTT3#a(0xYkYYP*iz zkm|A!9pE6Lx-9Z~mu=CiE@;TI3#G_v5^2nM=ngYp1&0{{L6v$r+D1O%4T)M#B*^C2 zg?Peps(He0Q}ZTmjM^|vaV1&3M1abhN}>+#Pb~}lsOuQJVpx(aP5>U0Nk{6cAej{v zF!BBm)Ra{bTmgNGmq;0jL*;+0UBdBF$Mus!F#8@n8 zU*F1HbuufiUU9J~v#|gArLlxXpzKcN`eatST9(DQ){#|gGL}O}zmk@)&`2?pk*OxZ zaz%NwfL4-f6yWkkV*==MCFxc0T`O?(&eaHjy0({WR7=^rRMe2+mM&>V#<4kF9GB@( z5)TMuDu%lrc?~OT*UH)&0HU;8Oy-Sj0ZJn=#HFIhSF5S%WY17pRi_M9SXr=I2DNLH z%w31tOjW}zD`^=TT9OBOnJ?uRBs6GQ+mT`HY>nABI@`OuJ6A2QRiJSrW8VPPPNmWX z)A9g8*dU>6Z4y%wpUC0<1Gjhb*UYODaVO&xh$_M$s=AqxfViK`n1StGt5+^x9+6E9 zV;-3Wc`wq_wI(ovO~8!l6DPklfzk6NGR0v(bR%B~LUYG)gB2MsTK4^j84`E!W8$%o zB(bVzRYbdataWbao%__ z*}vWDce4%OY{NG@@a2-99);iC*(vexEAj9v@$jqgIy+ZL{Lapm_U|hDca8nKN&If@ z+q%`xZw?*D4Qhv#&W=>!sg_COZ#Tk$RU2|o!pYXTdwUKfCO4m*T#da$?c}S~PPLP*v3IPUd}!23HE27|4y<}q zPAVr`?`=dophkT|+5y(N`#%mOnzmEeg&C<+TWKW_T?_)JIb9(M0d7n?le?t0E+K(d zZ*PN_An9FENNS@+Lu#-$W_503>BAaEqq|3?0h_#?D-9aWXqh^-(XK&S^gVYCUYC)o zsX=PQcCwbQ%gAkL4HDBCw(2Y73sAX$t(NH}Y&A_MVh|{ovDHv1WT2Hx8E6$^wi>6A zvsGOpXz<|}Hm##p^R%M2V!EuY`U+uNt#2c3;FgQqsx6Z@aLNU4)z}g*>Xn@ z4i3Dvd?cKL8hb39e4{=Z4sb^0csNCk`iMBddT&e|P@_I74zQs_6E4i>u!-5KkBuBH z%PG*tM=zLFF-Cgn8D-<7m$m9+r5Ci7jF(>0s*jmo&{i^TddZB^vD1qho$=FwXOxYh zUN*CQ9QDG661}perjMtN++I1RdNEW`c%10ktOz!HV_S+}p>+zsMqL%)y5&NN(P&t> z9Y|YaigZe@z%9eL%E3PNh+{e7BrdLnTP0jx+u5Ah1sc_C4)U!sP&1J?CW6u_Vs2NB zx_XkZ3vrQCmPddv;rUvHw@Rd+KXPI68vhbuy<2ww5V1^}>U5C;Tr}^#Iw*g*x?q+ubUU^>5?ghN!+}+9Uv#g3U zu3gzfcz9NJ77EC|QF+Fk7PFFI&IB-bsxW)P(sMM1d0vB=SBKdyaD-2|_!noP5!KWB zq6+WP*_fvSi_3GPJPX~Sn9<@aqQ_9oXK_YcT%2df^BM9yQ=VtZGh!j5bhbRlab}p$ zb7W5Vt5a~W0NR!$pCOM2Pr+04O?d0w&L82=@;7`leH(ovzUzDs`Cj%n`giyb_^w6xbCw9JnX&bl|sv)4}@S(qJlhD)=}k3aVB351=iI|3SI{Y0+{Rx+i+X zpo<+SYs5c+Pppv4YP)2HgwF6vSWuM18{VPJd?!g5-jB))QuBdyF{tl-@Dq3O1J9Dk zbbgfdwB)M=mf!$60bl5Ek{8faJKh>R0RQpp=x69R;r09~ypvnuQM>{EwimGpH70Bi ziTW^zl?O^h-+?>| znBIkP|fm@I??1)A_)|0w5DqW( zD$E!G;qYpI9V-^azlXB|ZtX8(RtXG7pT?{g-&IiM6yqXizWgP!jM6vdOcZ*fq;n^v zwGVirJb<%Tauq1vWWSqNUX}qrCve24t+|W%#8*#n2)(SN+(G&29J^@>LZ`q;VMJ($(-oOZBSrw%w^I|XIT|2H(sjJycTQt5v!y|3Nc z3~vzxU0>`e;f<}8-3bbne%{i{Tf_PyC^$afN#XUam0bi1mHyzoho?J&8*`JnGA#mH)XwUe`Fn$-@oRm@sB6Y)OH Xn + + diff --git a/sources/media/heart/11.svg b/sources/media/heart/11.svg new file mode 100644 index 0000000..1f9c63c --- /dev/null +++ b/sources/media/heart/11.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/heart/2.svg b/sources/media/heart/2.svg new file mode 100644 index 0000000..8251e06 --- /dev/null +++ b/sources/media/heart/2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/sources/media/heart/3.svg b/sources/media/heart/3.svg new file mode 100644 index 0000000..94b07d4 --- /dev/null +++ b/sources/media/heart/3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/sources/media/heart/4.svg b/sources/media/heart/4.svg new file mode 100644 index 0000000..4630cd4 --- /dev/null +++ b/sources/media/heart/4.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/sources/media/heart/5.svg b/sources/media/heart/5.svg new file mode 100644 index 0000000..6cea6af --- /dev/null +++ b/sources/media/heart/5.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/sources/media/heart/6.svg b/sources/media/heart/6.svg new file mode 100644 index 0000000..ee09a6b --- /dev/null +++ b/sources/media/heart/6.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/sources/media/heart/7.svg b/sources/media/heart/7.svg new file mode 100644 index 0000000..21e7219 --- /dev/null +++ b/sources/media/heart/7.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/sources/media/heart/8.svg b/sources/media/heart/8.svg new file mode 100644 index 0000000..a9b8579 --- /dev/null +++ b/sources/media/heart/8.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/heart/9.svg b/sources/media/heart/9.svg new file mode 100644 index 0000000..585af2e --- /dev/null +++ b/sources/media/heart/9.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/sources/media/icon.finder b/sources/media/icon.finder new file mode 100644 index 0000000..5bc12e7 --- /dev/null +++ b/sources/media/icon.finder @@ -0,0 +1,22 @@ +How to use this icon: + +Step 1: Copy the icon to the clipboard +a) Click on this file from the Finder +b) Choose 'Get Info' from the 'File' menu. +c) In the info window that pops up, click on the icon +d) Choose 'Copy' from the 'Edit' menu. +e) Close the info window + +Step 2: Paste the icon to the desired item +a) Go to the item in the Finder that you want a custom icon +b) Click the item (file, folder, disk, etc) +b) Choose 'Get Info' from the 'File' menu. +c) In the info window that pops up, click on the icon +d) Choose 'Paste' from the 'Edit' menu. +e) Close the info window + +Step 3: +Enjoy your newly customized icon! + +For more thorough directions, see Apple's website at: +http://www.apple.com/support/mac101/customize/6/ diff --git a/sources/media/icon.svg b/sources/media/icon.svg new file mode 100644 index 0000000..d888d0e --- /dev/null +++ b/sources/media/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sources/media/icon180x180.png b/sources/media/icon180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..80fdc2207e5b3c4ef528262f352847882c8740b5 GIT binary patch literal 2401 zcmb`J`8(8$7sp4F$u_9$Sw>7`i$s!rMjBfa(ua#?#=eEIWF7lj2vKOpZ6V7vCWK+^ z;%2UtEm02n0o4McRNs z94h|_F7Tma{fuCCn8ZU&fe_mOkB~c9ygSI)Edb{ZL-}Jp-EG{lZV^Fm-SrNeG|`rJ zrh+9=nZEYnbB}PU@v9Ylj3`SjD9R`C93=B+9Pghr0qtWQ>?Cik6z{8@ zT?_&Oado4R#&+T3tHhO}S|z?@GmW>qx6_BvI2pglD9>KNH|=<6WmMgJHNRonlOOkC4Ntq}=oYmXiK z@oc}-a^DI|7OXu#Skq!-tlM08j?1AQnTYq`-2|S z9g{+09%Wbl0s*Xzpdlv-`D0GpUKPXSGRAg=eT8>L9hpuCwaAy1=GJV5a)gn{7gQa9 zGo!TOy#1rjYAPQ+)s6Lu&H_&XfO2j;iD0Lc@nVj@>JE@x@_Hv@;nJn9L8%)uQjR`~ z$L$dpr6nE9i~za$$sn)(Hy!vh*q@b73WaGlRF%!{S7*bJvH+N-Kw}0})nK&doQKQ_ znKx&_cbBh*Kag=WkHmyZ$`qBs05Ah4)}2~#LK-+Zz&{}b_H7msupAgEZLg$Vi4zX{ z3dg+G12e=O{bi{TlCW=s*sgnf(GTsH#$nP*Zym-o44PGs6fE3Zd}O+ZAOLb7w_1x+ zUAd_uJr0e;R10ouc(W^9RFweGPnNQxqB*FM3vgg?2$!l=qvkN-V9;u)!dPfsCx-7I zP#Z71a%OvvVZ|5j?q1($d>|#V=Up}zrpR^IvtgN$#H2v}zeY2j9HX9uwPAS7+6+Rs zTvIQAptO{hvcFNSytGlhNaqf|4d>OdZ{76Bx@YPP_|+q_gd21C^5;^S4V}Sb%Y995 zFLloG?{`wx12Tf7)si_={Pbi?f4FpqC?B!!Z;%Z!dE)60V&1Ouzb`0m=j@kd606 z&!)GXr`9jc*|9XPL}O5;?Ax{T3d<wx39R{av!7=Cw0*ZqBP) z2q9vgqi$AbX?@F-uRu=x1d4%$mru$mOxosfzo+5C@irH7Sq=qh1q`1iVeXZMZ_JAK z?h#&j6$hx!ac@*ggc&7+NG8cEkP+fUVmUs|WR@P4$Plk|Z_9%YOj8?G~OEu3kwk?3tEDn-_n9JyFM^|n-%INq!!6)0=16Y{yy)x3rM5~A86Mot*pg?hHkNX2q_c!v`w5$TXO>~m3a}~9{QSr^-+}?yg=`k<-$DV!iDR;lfGaDf&-C* zjQFA-yrg@&^K7%n%(u;nIcm|&R^loXDlnaEg#)xb^7uFUfAXzLNfZm&OD!E_W_)a$ zY|GM>C4XQmbF@yk_BnnfMHhL2oAX9A#8nzB(<`~o;HxU2XwoOMc07Z4R8%s=uw4NU zPHHedPA%(2oW{jD;=v(%_r6d)PTNO03ez}hPOV}9Ye|b!dry|%vkDcHAmuo@1gyBO z{bfhq7LKRo#b}^AIUwuHZ*>r_S=te-f9MLz#Anf2%D@LKpOX+zRf+g>V6HV14;IoW zSBk_O=lo3L=;woQJuU9SXz|70nMlWp^9gqMSB=G+iiS6&>)w!r%xa#uo69g&{6)T& z4da3$7gF^WnI6YH9MqQfK(9S z-bSWdubvH2PShb(3hA!RSr%v+IN;9&kDu#BT0Y!m6r z$3FztRTDZCsymI8X>^|AKmq-iJDvJ|x#;5TDZKoX#_k^N7mA$enHq1${MRaZa$mU$ zUi}%nIpwnY=F}foU^z~a+bb=X8-CA$;B!CAi-fXCa%=fP58~-aXViSc`pVlig8rmY z7``LPWZ2Mm-9SwCy-}9Qu-l16!>wJGAniB~W}6;-dh_S4k|F8lMPHcfW^`^1U;n4g zu4?cS7PeQzx5;Tp@cnAHhX2eSHfzSsSn&`hPg}ed>lN1b&Vg(x!GrIfwb_}wPYp$i1N{`I3}9q*yR`SQ7*JG z-cehyhj@UcRo%DUyrQvIDjj-w_8K8T9OpkI|2t~81Ox_6n3YIzecR4G{A@rdQ)?u} H1e5SLUTRuK literal 0 HcmV?d00001 diff --git a/sources/media/joker/21.svg b/sources/media/joker/21.svg new file mode 100644 index 0000000..4613569 --- /dev/null +++ b/sources/media/joker/21.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/sources/media/spade/10.svg b/sources/media/spade/10.svg new file mode 100644 index 0000000..96e30de --- /dev/null +++ b/sources/media/spade/10.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/sources/media/spade/11.svg b/sources/media/spade/11.svg new file mode 100644 index 0000000..075b9f9 --- /dev/null +++ b/sources/media/spade/11.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/spade/13.svg b/sources/media/spade/13.svg new file mode 100644 index 0000000..c18853f --- /dev/null +++ b/sources/media/spade/13.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/spade/15.svg b/sources/media/spade/15.svg new file mode 100644 index 0000000..195dfde --- /dev/null +++ b/sources/media/spade/15.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/spade/17.svg b/sources/media/spade/17.svg new file mode 100644 index 0000000..de40de6 --- /dev/null +++ b/sources/media/spade/17.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/spade/2.svg b/sources/media/spade/2.svg new file mode 100644 index 0000000..a251e86 --- /dev/null +++ b/sources/media/spade/2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/sources/media/spade/3.svg b/sources/media/spade/3.svg new file mode 100644 index 0000000..3dff615 --- /dev/null +++ b/sources/media/spade/3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/sources/media/spade/4.svg b/sources/media/spade/4.svg new file mode 100644 index 0000000..0c95fad --- /dev/null +++ b/sources/media/spade/4.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/sources/media/spade/5.svg b/sources/media/spade/5.svg new file mode 100644 index 0000000..9b3b57d --- /dev/null +++ b/sources/media/spade/5.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/sources/media/spade/6.svg b/sources/media/spade/6.svg new file mode 100644 index 0000000..e0404b3 --- /dev/null +++ b/sources/media/spade/6.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/sources/media/spade/7.svg b/sources/media/spade/7.svg new file mode 100644 index 0000000..7a9f1bf --- /dev/null +++ b/sources/media/spade/7.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/sources/media/spade/8.svg b/sources/media/spade/8.svg new file mode 100644 index 0000000..1b68e9c --- /dev/null +++ b/sources/media/spade/8.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/sources/media/spade/9.svg b/sources/media/spade/9.svg new file mode 100644 index 0000000..5adf324 --- /dev/null +++ b/sources/media/spade/9.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/sources/scripts/board.js b/sources/scripts/board.js new file mode 100644 index 0000000..c00416a --- /dev/null +++ b/sources/scripts/board.js @@ -0,0 +1,122 @@ +'use strict' + +function Board (element) { + this.element = element + this.room = [] + + this.enter_room = function (starting_hand = null) { + this.remove_cards() + + if (donsol.deck.cards.length > 0) { + this.add_card(0, donsol.deck.draw_card(starting_hand ? DIAMOND : null)) + setTimeout(() => { + this.room[0].element.style.opacity = 1 + this.room[0].element.style.top = 0 + donsol.speaker.play_effect('click2') + }, 100) + } + if (donsol.deck.cards.length > 0) { + this.add_card(1, donsol.deck.draw_card(starting_hand ? CLOVE : null)) + setTimeout(() => { + this.room[1].element.style.opacity = 1 + this.room[1].element.style.top = 0 + donsol.speaker.play_effect('click2') + }, 150) + } + if (donsol.deck.cards.length > 0) { + this.add_card(2, donsol.deck.draw_card(starting_hand ? HEART : null)) + setTimeout(() => { + this.room[2].element.style.opacity = 1 + this.room[2].element.style.top = 0 + donsol.speaker.play_effect('click2') + }, 200) + } + if (donsol.deck.cards.length > 0) { + this.add_card(3, donsol.deck.draw_card(starting_hand ? SPADE : null)) + setTimeout(() => { + this.room[3].element.style.opacity = 1 + this.room[3].element.style.top = 0 + donsol.speaker.play_effect('click2') + }, 250) + } + + donsol.player.update() + this.update() + } + + this.add_card = function (index, card) { + this.element.appendChild(card.install()) + this.room.push(card) + } + + this.remove_cards = function () { + this.room = [] + this.element.innerHTML = '' + } + + this.return_cards = function () { + if (!this.room[0].is_flipped) { donsol.deck.return_card(this.room[0]) } + if (!this.room[1].is_flipped) { donsol.deck.return_card(this.room[1]) } + if (!this.room[2].is_flipped) { donsol.deck.return_card(this.room[2]) } + if (!this.room[3].is_flipped) { donsol.deck.return_card(this.room[3]) } + } + + this.update = function () { + // Don't draw if the player is dead + if (donsol.player.health.value < 1) { + return + } + + if (donsol.player.experience.value === donsol.player.experience.limit) { + this.dungeon_complete() + return + } + if (this.room[0].is_flipped && this.room[1].is_flipped && this.room[2].is_flipped && this.room[3].is_flipped) { + setTimeout(function () { donsol.board.is_complete() }, 250) + } + } + + // Checks + + this.is_complete = function () { + donsol.player.has_escaped = false + this.enter_room() + } + + this.is_started = function () { + return this.cards_flipped().length > 0 + } + + this.has_monsters = function () { + return this.cards_monsters().length > 0 + } + + this.cards_flipped = function () { + const a = [] + if (this.room[0] && this.room[0].is_flipped) { a.push(this.room[0]) } + if (this.room[1] && this.room[1].is_flipped) { a.push(this.room[1]) } + if (this.room[2] && this.room[2].is_flipped) { a.push(this.room[2]) } + if (this.room[3] && this.room[3].is_flipped) { a.push(this.room[3]) } + return a + } + + this.cards_monsters = function () { + const a = [] + if (this.room[0] && this.room[0].constructor.name == 'Card_Monster' && this.room[0].is_flipped === false) { a.push(this.room[0]) } + if (this.room[1] && this.room[1].constructor.name == 'Card_Monster' && this.room[1].is_flipped === false) { a.push(this.room[1]) } + if (this.room[2] && this.room[2].constructor.name == 'Card_Monster' && this.room[2].is_flipped === false) { a.push(this.room[2]) } + if (this.room[3] && this.room[3].constructor.name == 'Card_Monster' && this.room[3].is_flipped === false) { a.push(this.room[3]) } + return a + } + + this.dungeon_complete = function () { + donsol.is_complete = true + donsol.player.escape_button.innerHTML = 'Restart' + donsol.player.element.setAttribute('class', 'done') + donsol.timeline.add_event('Completed dungeon!') + } + + this.dungeon_failed = function () { + + } +} diff --git a/sources/scripts/card.js b/sources/scripts/card.js new file mode 100644 index 0000000..a2d325e --- /dev/null +++ b/sources/scripts/card.js @@ -0,0 +1,69 @@ +'use strict' + +function Card (sym, value, type, name = 'Unknown') { + this.symbol = sym + this.value = value + this.type = type + this.name = name + + this.element = null + this.is_flipped = false + + this.install = function () { + const e = document.createElement('card') + e.setAttribute('class', this.type + ' card_' + this.value) + + // Face + const face = document.createElement('div') + face.setAttribute('class', 'face') + e.appendChild(face) + + // Value + const value = document.createElement('span') + value.setAttribute('class', 'value') + value.innerHTML = this.symbol + face.appendChild(value) + + const graphic = document.createElement('div') + graphic.className = 'graphic' + graphic.innerHTML = require('fs').readFileSync(`${__dirname}/media/${this.type}/${this.value}.svg`) + face.appendChild(graphic) + + // Name + const name_element = document.createElement('span') + name_element.setAttribute('class', 'name') + name_element.innerHTML = this.name + ' ' + this.value + face.appendChild(name_element) + + // Icon + face.appendChild(new Icon(this.type).install()) + + addClickHandler(e, this, this.value) + + this.element = e + + return e + } + + function addClickHandler (elem, object) { + elem.addEventListener('click', function (e) { object.touch() }, false) + } + + this.touch = function () { + console.log('??') + } + + this.flip = function () { + donsol.speaker.play_effect('flip') + + this.is_flipped = true + donsol.player.experience.value += 1 + donsol.player.experience.update() + + this.element.style.opacity = '0' + this.element.style.top = '-5px' + donsol.speaker.play_effect('click2') + + donsol.player.update() + } +} diff --git a/sources/scripts/card.monster.js b/sources/scripts/card.monster.js new file mode 100644 index 0000000..2644db7 --- /dev/null +++ b/sources/scripts/card.monster.js @@ -0,0 +1,13 @@ +'use strict' + +function Card_Monster (sym, value, type, name = 'Unknown') { + Card.call(this, sym, value, type, name) + + this.touch = function () { + if (this.is_flipped) { console.log('Card is already flipped'); return } + if (donsol.player.health.value < 1) { console.log('Player is dead'); return } + this.flip() + donsol.player.attack(this) + donsol.board.update() + } +} diff --git a/sources/scripts/card.potion.js b/sources/scripts/card.potion.js new file mode 100644 index 0000000..aa3d600 --- /dev/null +++ b/sources/scripts/card.potion.js @@ -0,0 +1,13 @@ +'use strict' + +function Card_Potion (sym, value, type, name = 'Unknown') { + Card.call(this, sym, value, type, name) + + this.touch = function () { + if (this.is_flipped) { console.log('Card is already flipped'); return } + if (donsol.player.health.value < 1) { console.log('Player is dead'); return } + this.flip() + donsol.player.drink_potion(this.value) + donsol.board.update() + } +} diff --git a/sources/scripts/card.shield.js b/sources/scripts/card.shield.js new file mode 100644 index 0000000..19cd345 --- /dev/null +++ b/sources/scripts/card.shield.js @@ -0,0 +1,13 @@ +'use strict' + +function Card_Shield (sym, value, type, name = 'Unknown') { + Card.call(this, sym, value, type, name) + + this.touch = function () { + if (this.is_flipped == true) { console.log('Card is already flipped'); return } + if (donsol.player.health.value < 1) { console.log('Player is dead'); return } + this.flip() + donsol.player.equip_shield(this.value) + donsol.board.update() + } +} diff --git a/sources/scripts/deck.js b/sources/scripts/deck.js new file mode 100644 index 0000000..acf974e --- /dev/null +++ b/sources/scripts/deck.js @@ -0,0 +1,103 @@ +'use strict' + +function Deck () { + this.cards = [ + new Card_Potion('A', 11, HEART, 'White Mage'), + new Card_Potion('2', 2, HEART, 'Small Potion'), + new Card_Potion('3', 3, HEART, 'Small Potion'), + new Card_Potion('4', 4, HEART, 'Medium Potion'), + new Card_Potion('5', 5, HEART, 'Medium Potion'), + new Card_Potion('6', 6, HEART, 'Medium Potion'), + new Card_Potion('7', 7, HEART, 'Medium Potion'), + new Card_Potion('8', 8, HEART, 'Medium Potion'), + new Card_Potion('9', 9, HEART, 'Large Potion'), + new Card_Potion('10', 10, HEART, 'Large Potion'), + new Card_Potion('V', 11, HEART, 'White Mage'), + new Card_Potion('Q', 11, HEART, 'White Mage'), + new Card_Potion('K', 11, HEART, 'White Mage'), + new Card_Shield('A', 11, DIAMOND, 'Red Mage'), + new Card_Shield('2', 2, DIAMOND, 'Buckler'), + new Card_Shield('3', 3, DIAMOND, 'Buckler'), + new Card_Shield('4', 4, DIAMOND, 'Shield'), + new Card_Shield('5', 5, DIAMOND, 'Shield'), + new Card_Shield('6', 6, DIAMOND, 'Shield'), + new Card_Shield('7', 7, DIAMOND, 'Shield'), + new Card_Shield('8', 8, DIAMOND, 'Shield'), + new Card_Shield('9', 9, DIAMOND, 'Large Shield'), + new Card_Shield('10', 10, DIAMOND, 'Large Shield'), + new Card_Shield('V', 11, DIAMOND, 'Red Mage'), + new Card_Shield('Q', 11, DIAMOND, 'Red Mage'), + new Card_Shield('K', 11, DIAMOND, 'Red Mage'), + new Card_Monster('A', 17, CLOVE, 'Empress'), + new Card_Monster('2', 2, CLOVE, 'Rat'), + new Card_Monster('3', 3, CLOVE, 'Bat'), + new Card_Monster('4', 4, CLOVE, 'Imp'), + new Card_Monster('5', 5, CLOVE, 'Goblin'), + new Card_Monster('6', 6, CLOVE, 'Orc'), + new Card_Monster('7', 7, CLOVE, 'Ogre'), + new Card_Monster('8', 8, CLOVE, 'Beholder'), + new Card_Monster('9', 9, CLOVE, 'Medusa'), + new Card_Monster('10', 10, CLOVE, 'Demon'), + new Card_Monster('V', 11, CLOVE, 'Consort'), + new Card_Monster('Q', 13, CLOVE, 'Queen'), + new Card_Monster('K', 15, CLOVE, 'Regnant'), + new Card_Monster('A', 17, SPADE, 'Empress'), + new Card_Monster('2', 2, SPADE, 'Slime'), + new Card_Monster('3', 3, SPADE, 'Tunneler'), + new Card_Monster('4', 4, SPADE, 'Fiend'), + new Card_Monster('5', 5, SPADE, 'Drake'), + new Card_Monster('6', 6, SPADE, 'Specter'), + new Card_Monster('7', 7, SPADE, 'Ghost'), + new Card_Monster('8', 8, SPADE, 'Elemental'), + new Card_Monster('9', 9, SPADE, 'Witch'), + new Card_Monster('10', 10, SPADE, 'Familiar'), + new Card_Monster('V', 11, SPADE, 'Consort'), + new Card_Monster('Q', 13, SPADE, 'Queen'), + new Card_Monster('K', 15, SPADE, 'Regnant'), + new Card_Monster('J', 21, JOKER, 'First Donsol'), + new Card_Monster('J', 21, JOKER, 'Second Donsol') + ] + + let draw_pile = [] + + this.start = function () { + draw_pile = this.cards + donsol.timeline.add_event(`Entered Donsol, at ${donsol.get_difficulty()} difficulty.`) + } + + this.shuffle = function () { + draw_pile = shuffle(this.cards) + donsol.timeline.add_event(`Entered Donsol, at ${donsol.get_difficulty()} difficulty.`) + } + + this.draw_card = function (type) { + let i = 0 + switch (type) { + case HEART: + i = Math.floor((Math.random() * 10) + 0); break + case DIAMOND: + i = Math.floor((Math.random() * 10) + 13); break + case CLOVE: + i = Math.floor((Math.random() * 10) + 25); break + case SPADE: + i = Math.floor((Math.random() * 10) + 36); break + } + + return draw_pile.splice(i, 1)[0] + } + + this.return_card = function (card) { + draw_pile.push(card) + draw_pile = shuffle(draw_pile) + } + + function shuffle (array) { + for (let i = array.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)) + const temp = array[i] + array[i] = array[j] + array[j] = temp + } + return array + } +} diff --git a/sources/scripts/donsol.js b/sources/scripts/donsol.js new file mode 100644 index 0000000..2553a1a --- /dev/null +++ b/sources/scripts/donsol.js @@ -0,0 +1,91 @@ +'use strict' + +const HEART = 'heart' +const DIAMOND = 'diamond' +const CLOVE = 'clove' +const SPADE = 'spade' +const JOKER = 'joker' + +function Donsol () { + const defaultTheme = { + background: '#000000', + f_high: '#000000', + f_med: '#a93232', + f_low: '#aaaaaa', + f_inv: '#ffffff', + b_high: '#ffffff', + b_med: '#cccccc', + b_low: '#333333', + b_inv: '#a93232' + } + + this.theme = new Theme(defaultTheme) + + this.deck = new Deck() + this.board = new Board() + this.player = new Player() + this.timeline = new Timeline() + this.controller = new Controller() + this.speaker = new Speaker() + this.walkthrough = new Walkthrough() + + this.is_complete = false + this.difficulty = 1 + + this.install = function (host = document.body) { + this.theme.install(host) + } + + this.start = function () { + donsol.board.element = document.getElementById('board') + donsol.player.element = document.getElementById('player') + + this.theme.start() + this.deck.start() + this.player.install() + donsol.timeline.install(donsol.player.element) + this.player.start() + + this.board.enter_room(true) + donsol.deck.shuffle() + + this.update() + } + + this.new_game = function () { + this.deck = new Deck() + this.deck.start() + + this.player.start() + this.board.enter_room(true) + donsol.deck.shuffle() + + this.update() + } + + this.toggle_difficulty = function () { + this.difficulty = this.difficulty < 3 ? this.difficulty + 1 : 0 + donsol.new_game() + } + + this.set_difficulty = function (id) { + this.difficulty = id + donsol.new_game() + } + + this.get_difficulty = function () { + return this.difficulty == 3 ? 'Expert' : this.difficulty == 2 ? 'Hard' : this.difficulty == 1 ? 'Normal' : 'Easy' + } + + this.update = function () { + console.log('Difficulty', this.get_difficulty()) + } + + this.skip = function () { + if (donsol.player.experience.value < 1) { + donsol.new_game() + } else { + donsol.player.escape_room() + } + } +} diff --git a/sources/scripts/gage.health.js b/sources/scripts/gage.health.js new file mode 100644 index 0000000..6d19008 --- /dev/null +++ b/sources/scripts/gage.health.js @@ -0,0 +1,15 @@ +'use strict' + +function Gage_Health (name, limit, color) { + Gage.call(this, name, limit, color) + + this.update = function () { + this.progress.update(this.value, this.limit) + + if (donsol.player.can_drink === false) { + this.value_element.innerHTML = `${this.value} HP` + } else { + this.value_element.innerHTML = `${this.value} HP` + } + } +} diff --git a/sources/scripts/gage.js b/sources/scripts/gage.js new file mode 100644 index 0000000..9303f23 --- /dev/null +++ b/sources/scripts/gage.js @@ -0,0 +1,66 @@ +'use strict' + +function Gage (name, limit, color) { + this.name = name + this.color = color + this.limit = limit + this.value = limit + this.value_element = null + this.event_element = null + this.element = document.createElement('div') + this.progress = new Progress(15, color) + + this.show_limit = true + this.units = '' + + this.start = function () { + this.install() + } + + this.install = function () { + this.element.setAttribute('class', 'gage ' + this.name.toLowerCase()) + + this.value_element = document.createElement('span') + this.value_element.setAttribute('class', 'value') + this.value_element.innerHTML = this.value + '(' + this.limit + ')' + this.element.appendChild(this.value_element) + + this.event_element = document.createElement('span') + this.event_element.setAttribute('class', 'event') + this.element.appendChild(this.event_element) + + this.element.appendChild(this.progress.install()) + + return this.element + } + + this.update = function (value) { + this.value = typeof value === 'number' ? value : this.value + if (this.value > this.limit) { this.value = this.limit } + if (this.value < 0) { this.value = 0 } + + this.progress.update(this.value, this.limit) + + if (this.name == 'Shield' && this.value == 0) { + this.value_element.innerHTML = "0DP" + } else if (this.name == 'Shield' && this.limit == 25) { + this.value_element.innerHTML = this.value + "DP" + } else { + this.value_element.innerHTML = this.show_limit ? this.value + ' < ' + this.limit + "" + this.units + '' : this.value + " " + this.units + '' + } + } + + this.add_event = function (value) { + this.event_element.innerHTML = "" + value + '' + this.event_element.style.marginTop = '5px' + this.event_element.style.opacity = '0' + setTimeout(() => { + this.event_element.style.marginTop = '0px' + this.event_element.style.opacity = 1 + }, 250) + } + + this.clear_event = function () { + this.event_element.innerHTML = '' + } +} diff --git a/sources/scripts/gage.progress.js b/sources/scripts/gage.progress.js new file mode 100644 index 0000000..a73c734 --- /dev/null +++ b/sources/scripts/gage.progress.js @@ -0,0 +1,29 @@ +'use strict' + +function Progress (radius = 15) { + this.wrapper = null + this.progress_bar = null + + this.install = function () { + this.wrapper = document.createElement('div') + this.wrapper.setAttribute('class', 'progress') + + this.progress_bar = document.createElement('div') + this.progress_bar.setAttribute('class', 'bar') + + this.wrapper.appendChild(this.progress_bar) + + return this.wrapper + } + + this.update = function (value, limit = 0) { + if (limit === 0) { value = 0; limit = 1 } + const min = 0 + const max = 130 + const pixels = Math.floor(((value / limit) * max) + min) + const ratio = (value / limit) + const perc = ratio * 100 + + this.progress_bar.style.width = `${perc}%` + } +} diff --git a/sources/scripts/gage.shield.js b/sources/scripts/gage.shield.js new file mode 100644 index 0000000..ffff279 --- /dev/null +++ b/sources/scripts/gage.shield.js @@ -0,0 +1,25 @@ +'use strict' + +function Gage_Shield (name, limit, color) { + Gage.call(this, name, limit, color) + + this.break_limit = null + + this.update = function () { + if (this.is_damaged() === true) { + this.value_element.innerHTML = `${this.break_limit - 1}/${this.value} DP` + this.progress.update(this.value < this.break_limit ? this.value : this.break_limit - 1, 11) + } else if (this.value == 0) { + this.value_element.innerHTML = "0 DP" + this.progress.update(0, 11) + } else { + this.value_element.innerHTML = '' + this.value + " DP" + this.progress.update(this.value, 11) + } + } + + this.is_damaged = function () { + if (this.break_limit === null) { return false } + return true + } +} diff --git a/sources/scripts/icon.js b/sources/scripts/icon.js new file mode 100644 index 0000000..415edea --- /dev/null +++ b/sources/scripts/icon.js @@ -0,0 +1,105 @@ +'use strict' + +function Icon (type) { + this.type = type + + this.install = function () { + switch (this.type) { + case HEART: + return this.heart() + case DIAMOND: + return this.diamond() + case CLOVE: + return this.clove() + case SPADE: + return this.spade() + case JOKER: + return this.joker() + } + } + + this.heart = function () { + const e = document.createElementNS('http://www.w3.org/2000/svg', 'svg') + e.setAttribute('class', 'icon') + + const s = document.createElementNS('http://www.w3.org/2000/svg', 'path') + s.setAttribute('d', 'M0,15 a15,15 0 0,1 30,0 l-15,15 l-15,-15') + s.setAttribute('class', 'fill_red') + + e.appendChild(s) + return e + } + + this.diamond = function () { + const e = document.createElementNS('http://www.w3.org/2000/svg', 'svg') + e.setAttribute('class', 'icon') + + const s = document.createElementNS('http://www.w3.org/2000/svg', 'path') + s.setAttribute('d', 'M15 0 L 30 15 L 15 30 L 0 15') + s.setAttribute('class', 'fill_red') + + e.appendChild(s) + return e + } + + this.clove = function () { + const e = document.createElementNS('http://www.w3.org/2000/svg', 'svg') + e.setAttribute('class', 'icon') + + const s = document.createElementNS('http://www.w3.org/2000/svg', 'circle') + s.setAttribute('cx', '15px') + s.setAttribute('cy', '6px') + s.setAttribute('r', '5px') + s.setAttribute('class', 'fill_black') + e.appendChild(s) + + const s2 = document.createElementNS('http://www.w3.org/2000/svg', 'circle') + s2.setAttribute('cx', '24px') + s2.setAttribute('cy', '15px') + s2.setAttribute('r', '5px') + s2.setAttribute('class', 'fill_black') + e.appendChild(s2) + + const s3 = document.createElementNS('http://www.w3.org/2000/svg', 'circle') + s3.setAttribute('cx', '6px') + s3.setAttribute('cy', '15px') + s3.setAttribute('r', '5px') + s3.setAttribute('class', 'fill_black') + e.appendChild(s3) + + const s4 = document.createElementNS('http://www.w3.org/2000/svg', 'circle') + s4.setAttribute('cx', '15px') + s4.setAttribute('cy', '24px') + s4.setAttribute('r', '5px') + s4.setAttribute('class', 'fill_black') + e.appendChild(s4) + + return e + } + + this.spade = function () { + const e = document.createElementNS('http://www.w3.org/2000/svg', 'svg') + e.setAttribute('class', 'icon') + + const s = document.createElementNS('http://www.w3.org/2000/svg', 'path') + s.setAttribute('d', 'M15,0 L0,15 a15,15 0 0,1 15,15 a15,15 0 0,1 15,-15') + s.setAttribute('class', 'fill_black') + + e.appendChild(s) + return e + } + + this.joker = function () { + const e = document.createElementNS('http://www.w3.org/2000/svg', 'svg') + e.setAttribute('class', 'icon') + + const s = document.createElementNS('http://www.w3.org/2000/svg', 'circle') + s.setAttribute('cx', '15px') + s.setAttribute('cy', '15px') + s.setAttribute('r', '15px') + s.setAttribute('class', 'fill_black') + e.appendChild(s) + + return e + } +} diff --git a/sources/scripts/lib/controller.js b/sources/scripts/lib/controller.js new file mode 100644 index 0000000..365c368 --- /dev/null +++ b/sources/scripts/lib/controller.js @@ -0,0 +1,185 @@ +'use strict' + +function Controller () { + this.menu = { default: {} } + this.mode = 'default' + + this.app = require('electron').remote.app + + this.start = function () { + } + + this.add = function (mode, cat, label, fn, accelerator) { + if (!this.menu[mode]) { this.menu[mode] = {} } + if (!this.menu[mode][cat]) { this.menu[mode][cat] = {} } + this.menu[mode][cat][label] = { fn: fn, accelerator: accelerator } + console.log(`${mode}/${cat}/${label} <${accelerator}>`) + } + + this.add_role = function (mode, cat, label) { + if (!this.menu[mode]) { this.menu[mode] = {} } + if (!this.menu[mode][cat]) { this.menu[mode][cat] = {} } + this.menu[mode][cat][label] = { role: label } + } + + this.set = function (mode = 'default') { + this.mode = mode + this.commit() + } + + this.format = function () { + const f = [] + const m = this.menu[this.mode] + for (const cat in m) { + const submenu = [] + for (name in m[cat]) { + const option = m[cat][name] + if (option.role) { + submenu.push({ role: option.role }) + } else { + submenu.push({ label: name, accelerator: option.accelerator, click: option.fn }) + } + } + f.push({ label: cat, submenu: submenu }) + } + return f + } + + this.commit = function () { + this.app.inject_menu(this.format()) + } + + this.docs = function () { + console.log('Generating docs..') + const svg = this.generate_svg(this.format()) + const txt = this.documentation(this.format()) + dialog.showSaveDialog((fileName) => { + if (fileName === undefined) { return } + fileName = fileName.substr(-4, 4) != '.svg' ? fileName + '.svg' : fileName + fs.writeFile(fileName, svg) + fs.writeFile(fileName.replace('.svg', '.md'), txt) + }) + } + + this.generate_svg = function (m) { + let svg_html = '' + + for (id in this.layout) { + const key = this.layout[id] + const acc = this.accelerator_for_key(key.name, m) + svg_html += `` + svg_html += `` + svg_html += `${key.name.toUpperCase()}` + svg_html += acc && acc.basic ? `${acc.basic}` : '' + svg_html += acc && acc.ctrl ? `${acc.ctrl}` : '' + } + return `${svg_html}` + } + + this.documentation = function () { + let txt = '' + + txt += this.documentation_for_mode('default', this.menu.default) + + for (name in this.menu) { + if (name == 'default') { continue } + txt += this.documentation_for_mode(name, this.menu[name]) + } + return txt + } + + this.documentation_for_mode = function (name, mode) { + let txt = `## ${name} Mode\n\n` + + for (id in mode) { + if (id == '*') { continue } + txt += `### ${id}\n` + for (name in mode[id]) { + const option = mode[id][name] + txt += `- ${name}: \`${option.accelerator}\`\n` + } + txt += '\n' + } + + return txt + '\n' + } + + this.accelerator_for_key = function (key, menu) { + const acc = { basic: null, ctrl: null } + for (cat in menu) { + const options = menu[cat] + for (id in options.submenu) { + const option = options.submenu[id]; if (option.role) { continue } + acc.basic = (option.accelerator.toLowerCase() == key.toLowerCase()) ? option.label.toUpperCase().replace('TOGGLE ', '').substr(0, 8).trim() : acc.basic + acc.ctrl = (option.accelerator.toLowerCase() == ('CmdOrCtrl+' + key).toLowerCase()) ? option.label.toUpperCase().replace('TOGGLE ', '').substr(0, 8).trim() : acc.ctrl + } + } + return acc + } + + this.layout = [ + { x: 0, y: 0, width: 60, height: 60, name: 'esc' }, + { x: 60, y: 0, width: 60, height: 60, name: '1' }, + { x: 120, y: 0, width: 60, height: 60, name: '2' }, + { x: 180, y: 0, width: 60, height: 60, name: '3' }, + { x: 240, y: 0, width: 60, height: 60, name: '4' }, + { x: 300, y: 0, width: 60, height: 60, name: '5' }, + { x: 360, y: 0, width: 60, height: 60, name: '6' }, + { x: 420, y: 0, width: 60, height: 60, name: '7' }, + { x: 480, y: 0, width: 60, height: 60, name: '8' }, + { x: 540, y: 0, width: 60, height: 60, name: '9' }, + { x: 600, y: 0, width: 60, height: 60, name: '0' }, + { x: 660, y: 0, width: 60, height: 60, name: '-' }, + { x: 720, y: 0, width: 60, height: 60, name: 'plus' }, + { x: 780, y: 0, width: 120, height: 60, name: 'backspace' }, + { x: 0, y: 60, width: 90, height: 60, name: 'tab' }, + { x: 90, y: 60, width: 60, height: 60, name: 'q' }, + { x: 150, y: 60, width: 60, height: 60, name: 'w' }, + { x: 210, y: 60, width: 60, height: 60, name: 'e' }, + { x: 270, y: 60, width: 60, height: 60, name: 'r' }, + { x: 330, y: 60, width: 60, height: 60, name: 't' }, + { x: 390, y: 60, width: 60, height: 60, name: 'y' }, + { x: 450, y: 60, width: 60, height: 60, name: 'u' }, + { x: 510, y: 60, width: 60, height: 60, name: 'i' }, + { x: 570, y: 60, width: 60, height: 60, name: 'o' }, + { x: 630, y: 60, width: 60, height: 60, name: 'p' }, + { x: 690, y: 60, width: 60, height: 60, name: '[' }, + { x: 750, y: 60, width: 60, height: 60, name: ']' }, + { x: 810, y: 60, width: 90, height: 60, name: '|' }, + { x: 0, y: 120, width: 105, height: 60, name: 'caps' }, + { x: 105, y: 120, width: 60, height: 60, name: 'a' }, + { x: 165, y: 120, width: 60, height: 60, name: 's' }, + { x: 225, y: 120, width: 60, height: 60, name: 'd' }, + { x: 285, y: 120, width: 60, height: 60, name: 'f' }, + { x: 345, y: 120, width: 60, height: 60, name: 'g' }, + { x: 405, y: 120, width: 60, height: 60, name: 'h' }, + { x: 465, y: 120, width: 60, height: 60, name: 'j' }, + { x: 525, y: 120, width: 60, height: 60, name: 'k' }, + { x: 585, y: 120, width: 60, height: 60, name: 'l' }, + { x: 645, y: 120, width: 60, height: 60, name: ';' }, + { x: 705, y: 120, width: 60, height: 60, name: "'" }, + { x: 765, y: 120, width: 135, height: 60, name: 'enter' }, + { x: 0, y: 180, width: 135, height: 60, name: 'shift' }, + { x: 135, y: 180, width: 60, height: 60, name: 'z' }, + { x: 195, y: 180, width: 60, height: 60, name: 'x' }, + { x: 255, y: 180, width: 60, height: 60, name: 'c' }, + { x: 315, y: 180, width: 60, height: 60, name: 'v' }, + { x: 375, y: 180, width: 60, height: 60, name: 'b' }, + { x: 435, y: 180, width: 60, height: 60, name: 'n' }, + { x: 495, y: 180, width: 60, height: 60, name: 'm' }, + { x: 555, y: 180, width: 60, height: 60, name: ',' }, + { x: 615, y: 180, width: 60, height: 60, name: '.' }, + { x: 675, y: 180, width: 60, height: 60, name: '/' }, + { x: 735, y: 180, width: 165, height: 60, name: 'capslock' }, + { x: 0, y: 240, width: 90, height: 60, name: 'ctrl' }, + { x: 90, y: 240, width: 90, height: 60, name: 'cmd' }, + { x: 180, y: 240, width: 90, height: 60, name: 'alt' }, + { x: 270, y: 240, width: 270, height: 60, name: 'space' }, + { x: 810, y: 240, width: 90, height: 60, name: 'ctrl' }, + { x: 720, y: 240, width: 90, height: 60, name: 'pn' }, + { x: 630, y: 240, width: 90, height: 60, name: 'fn' }, + { x: 540, y: 240, width: 90, height: 60, name: 'alt' } + ] +} + +module.exports = new Controller() diff --git a/sources/scripts/lib/theme.js b/sources/scripts/lib/theme.js new file mode 100644 index 0000000..7482596 --- /dev/null +++ b/sources/scripts/lib/theme.js @@ -0,0 +1,128 @@ +'use strict' + +function Theme (_default) { + const themer = this + + this.active = _default + + this.el = document.createElement('style') + this.el.type = 'text/css' + + this.install = function (host = document.body, callback) { + console.log('Theme', 'Installing..') + host.appendChild(this.el) + this.callback = callback + } + + this.start = function () { + console.log('Theme', 'Starting..') + if (isJson(localStorage.theme)) { + const storage = JSON.parse(localStorage.theme) + if (validate(storage)) { + console.log('Theme', 'Found theme in localStorage!') + this.load(storage) + return + } + } + this.load(_default) + } + + this.load = function (data) { + const theme = parse(data) + if (!validate(theme)) { console.warn('Theme', 'Not a theme', theme); return } + console.log('Theme', `Loading theme with background ${theme.background}.`) + this.el.innerHTML = `:root { --background: ${theme.background}; --f_high: ${theme.f_high}; --f_med: ${theme.f_med}; --f_low: ${theme.f_low}; --f_inv: ${theme.f_inv}; --b_high: ${theme.b_high}; --b_med: ${theme.b_med}; --b_low: ${theme.b_low}; --b_inv: ${theme.b_inv}; }` + localStorage.setItem('theme', JSON.stringify(theme)) + this.active = theme + if (this.callback) { + this.callback() + } + } + + this.reset = function () { + this.load(_default) + } + + function parse (any) { + if (any && any.background) { return any } else if (any && any.data) { return any.data } else if (any && isJson(any)) { return JSON.parse(any) } else if (any && isHtml(any)) { return extract(any) } + return null + } + + // Drag + + this.drag = function (e) { + e.stopPropagation() + e.preventDefault() + e.dataTransfer.dropEffect = 'copy' + } + + this.drop = function (e) { + e.preventDefault() + e.stopPropagation() + const file = e.dataTransfer.files[0] + if (!file || !file.name) { console.warn('Theme', 'Unnamed file.'); return } + if (file.name.indexOf('.thm') < 0 && file.name.indexOf('.svg') < 0) { console.warn('Theme', 'Skipped, not a theme'); return } + const reader = new FileReader() + reader.onload = function (e) { + themer.load(e.target.result) + } + reader.readAsText(file) + } + + this.open = function () { + const fs = require('fs') + const { dialog, app } = require('electron').remote + const paths = dialog.showOpenDialog(app.win, { properties: ['openFile'], filters: [{ name: 'Themes', extensions: ['svg'] }] }) + if (!paths) { console.log('Nothing to load') } + fs.readFile(paths[0], 'utf8', function (err, data) { + if (err) throw err + themer.load(data) + }) + } + + window.addEventListener('dragover', this.drag) + window.addEventListener('drop', this.drop) + + // Helpers + + function validate (json) { + if (!json) { return false } + if (!json.background) { return false } + if (!json.f_high) { return false } + if (!json.f_med) { return false } + if (!json.f_low) { return false } + if (!json.f_inv) { return false } + if (!json.b_high) { return false } + if (!json.b_med) { return false } + if (!json.b_low) { return false } + if (!json.b_inv) { return false } + return true + } + + function extract (text) { + const svg = new DOMParser().parseFromString(text, 'text/xml') + try { + return { + background: svg.getElementById('background').getAttribute('fill'), + f_high: svg.getElementById('f_high').getAttribute('fill'), + f_med: svg.getElementById('f_med').getAttribute('fill'), + f_low: svg.getElementById('f_low').getAttribute('fill'), + f_inv: svg.getElementById('f_inv').getAttribute('fill'), + b_high: svg.getElementById('b_high').getAttribute('fill'), + b_med: svg.getElementById('b_med').getAttribute('fill'), + b_low: svg.getElementById('b_low').getAttribute('fill'), + b_inv: svg.getElementById('b_inv').getAttribute('fill') + } + } catch (err) { + console.warn('Theme', 'Incomplete SVG Theme', err) + } + } + + function isJson (text) { + try { JSON.parse(text); return true } catch (error) { return false } + } + + function isHtml (text) { + try { new DOMParser().parseFromString(text, 'text/xml'); return true } catch (error) { return false } + } +} diff --git a/sources/scripts/player.js b/sources/scripts/player.js new file mode 100644 index 0000000..bf7ef5e --- /dev/null +++ b/sources/scripts/player.js @@ -0,0 +1,209 @@ +'use strict' + +function Player () { + this.element = null + this.health = new Gage_Health('Health', 21, '#ff0000') + this.shield = new Gage_Shield('Shield', 0, '#72dec2') + this.experience = new Gage('Experience', 0, '#ffffff') + + this.can_drink = true + this.has_escaped = false + this.escape_button = document.createElement('a') + this.timeline_element = document.createElement('div') + + this.escape_button.addEventListener('mousedown', () => { donsol.player.escape_room() }) + + this.start = function () { + this.health.show_limit = false + this.health.units = 'HP' + this.shield.units = 'DP' + this.experience.units = 'XP' + this.experience.show_limit = false + + this.health.value = 21 + this.shield.value = 0 + this.shield.break_limit = null + this.experience.limit = 54 + this.experience.value = 0 + + this.can_drink = true + this.has_escaped = false + + this.update() + } + + this.install = function () { + this.element.appendChild(this.experience.install()) + this.element.appendChild(this.shield.install()) + this.element.appendChild(this.health.install()) + + this.escape_button.setAttribute('class', 'escape') + this.escape_button.innerHTML = 'Escape' + this.element.appendChild(this.escape_button) + this.timeline_element.setAttribute('class', 'timeline') + this.timeline_element.innerHTML = '' + this.update() + } + + this.attack = function (card) { + console.log('' + card.value) + const attack_value = card.value + let damages = attack_value + let shield_event = '' + + // Shield + if (this.shield.value > 0) { + // Damaged shield + if (this.shield.is_damaged() === true && attack_value >= this.shield.break_limit) { + this.shield.value = 0 + this.shield.break_limit = null + shield_event = 'your shield broke' + } else { + this.shield.break_limit = attack_value + damages = attack_value > this.shield.value ? Math.abs(attack_value - this.shield.value) : 0 + shield_event = `your shield absorbed ${damages < 1 ? 'everything' : attack_value > this.shield.value ? this.shield.value : attack_value}` + } + } + + // Damages went through + if (damages > 0) { + this.health.value -= damages + } + + // Timeline + if (this.health.value < 1) { + donsol.player.health.add_event('-' + damages) + donsol.timeline.add_event('The ' + card.name + ' killed you!') + donsol.board.dungeon_failed() + this.update() + } else { + donsol.timeline.add_event(`${damages > 0 ? 'Battled' : 'Killed'} the ${card.name}${shield_event !== '' ? ', ' + shield_event : ''}.`) + } + + // Experience + donsol.player.experience.add_event('+1') + + this.can_drink = true + donsol.is_complete = false + this.shield.update() + this.health.update() + } + + this.equip_shield = function (shield_value) { + console.log('' + shield_value) + + this.shield.value = shield_value + this.shield.break_limit = null + + // donsol.player.shield.add_event(shield_value); + donsol.player.experience.add_event('+1') + donsol.timeline.add_event('Equipped shield ' + shield_value + '.') + this.can_drink = true + donsol.is_complete = false + this.shield.update() + this.health.update() + } + + this.drink_potion = function (potion_value) { + console.log('' + potion_value) + + if (this.can_drink === false) { + donsol.timeline.add_event('Wasted potion!') + donsol.player.health.add_event('Wasted') + return + } + const before_health = this.health.value + let new_health = this.health.value + potion_value; new_health = new_health > 21 ? 21 : new_health + + const mod = new_health - before_health + donsol.player.health.value = new_health + donsol.player.health.add_event(mod > 0 ? '+' + mod : 'Wasted') + donsol.player.experience.add_event('+1') + donsol.timeline.add_event('Drank potion.') + this.can_drink = false + donsol.is_complete = false + this.health.update() + this.shield.update() + } + + this.escape_room = function () { + donsol.speaker.play_effect('click2') + if (this.health.value < 1 || donsol.is_complete === true || this.experience.value == 0) { + donsol.new_game() + return + } + if (this.can_escape() !== true) { + donsol.timeline.add_event('Cannot escape the room!') + return + } + + this.has_escaped = true + this.can_drink = true + + donsol.board.return_cards() + donsol.board.enter_room() + donsol.timeline.add_event('Escaped the room!') + } + + this.update = function () { + if (this.health.value < 1) { + this.escape_button.innerHTML = 'Restart' + this.element.setAttribute('class', 'death') + } else if (this.can_escape() === true) { + this.escape_button.innerHTML = 'Run' + this.element.setAttribute('class', 'unlocked') + } else { + this.escape_button.innerHTML = 'Locked' + this.element.setAttribute('class', 'locked') + } + + this.health.clear_event() + this.shield.clear_event() + this.experience.clear_event() + + this.health.update() + this.shield.update() + this.experience.update() + } + + this.can_escape = function () { + // Basic Overrides + if (this.health.value < 1) { return true } // Death + if (this.experience.value === 0) { return true } // New Game + + // - All monsters have been delt with. (Easy Mode) + // - The player has not escaped the previous room. (Normal Mode) + // - There is only one card left in the room. (Hard Mode) + // - Can never escape. (Expert Mode) + + // Easy + if (donsol.difficulty == 0) { + if (!this.has_escaped) { return true } + if (donsol.board.has_monsters()) { console.warn('Monsters present.'); return false } + return true + } + + // Normal + if (donsol.difficulty == 1) { + if (!this.has_escaped) { return true } + if (donsol.board.has_monsters()) { console.warn('Monsters present.'); return false } + return true + } + + // Hard + if (donsol.difficulty == 2) { + if (!this.has_escaped) { return true } + if (!donsol.board.cards_flipped().length != 3) { console.warn('Cards remain.'); return false } + if (donsol.board.has_monsters()) { console.warn('Monsters present.'); return false } + return true + } + + // Expert + if (donsol.difficulty == 3) { + console.warn('Cannot escape(expert).') + return false + } + + return false + } +} diff --git a/sources/scripts/speaker.js b/sources/scripts/speaker.js new file mode 100644 index 0000000..672ce0d --- /dev/null +++ b/sources/scripts/speaker.js @@ -0,0 +1,28 @@ +'use strict' + +function Speaker () { + this.effect = new Audio() + + this.audio_catalog = {} + + this.is_muted = false + + this.play_effect = function (name) { + this.effect = this.load(name, 'effect', `media/audio/effect/${name}.ogg`) + this.effect.play() + } + + this.load = function (name, role, src, loop = false) { + const audio_id = role + '_' + name + if (!(audio_id in this.audio_catalog)) { + const audio = new Audio() + audio.name = name + audio.src = src + audio.loop = loop + audio.mute = 'muted' + this.audio_catalog[audio_id] = audio + } + this.audio_catalog[audio_id].currentTime = 0 + return this.audio_catalog[audio_id] + } +} diff --git a/sources/scripts/timeline.js b/sources/scripts/timeline.js new file mode 100644 index 0000000..bc10843 --- /dev/null +++ b/sources/scripts/timeline.js @@ -0,0 +1,16 @@ +'use strict' + +function Timeline () { + this.el = document.createElement('div') + this.el.id = 'timeline' + + this.install = function (host) { + host.appendChild(this.el) + } + + this.add_event = function (message) { + this.el.className = '' + this.el.style.opacity = '0' + setTimeout(() => { this.el.style.opacity = 1; this.el.innerHTML = message }, 100) + } +} diff --git a/sources/scripts/walkthrough.js b/sources/scripts/walkthrough.js new file mode 100644 index 0000000..d033d88 --- /dev/null +++ b/sources/scripts/walkthrough.js @@ -0,0 +1,103 @@ +'use strict' + +function Walkthrough () { + this.is_running = false + this.speed = 2500 + + this.start = function () { + console.log('Started walkthrough') + this.is_running = true + } + + this.run = function (force = false) { + if (!this.is_running && !force) { return } // Idle + if (donsol.player.health.value < 1) { this.is_running = false; return } + + const results = this.rate_room(donsol.board.room) + const target = results[0] + + // Return if going to waste potions + if (target && target[1] < -10 && donsol.player.can_escape()) { + donsol.player.escape_room() + return + } + + if (target) { + donsol.board.room[target[[0]]].touch() + } + } + + this.rate_room = function (room) { + const a = [] + for (const id in room) { + const card = room[id] + if (card.is_flipped) { continue } + a.push(this.rate_card(id, card)) + } + return a.sort(function (a, b) { + return a[1] - b[1] + }).reverse() + } + + this.rate_card = function (id, card) { + let rating = 0 + if (card.type == 'diamond') { + if (donsol.player.shield.value > 0) { + rating = donsol.player.shield.value - card.value + } else { + rating = card.value + } + } + if (card.type == 'heart') { + // Will waste + if (!donsol.player.can_drink || donsol.player.health.value == 21) { + rating = -card.value * 4 + } else { + const after = clamp(donsol.player.health.value + card.value, 0, 21) + const actual = (donsol.player.health.value - after) + rating = actual - card.value + } + } + if (card.type == 'clove' || card.type == 'spade') { + const strongest = this.find_strongest(id) + if (card.value < strongest.value) { + rating = -strongest.value - card.value + } else { + rating = -card.value + } + + if (donsol.player.shield.limit > card.value) { + rating = donsol.player.shield.limit + } + } + // TODO: Run + // TODO: Attack in descending order + // TODO: Don't waste shields + return [parseInt(id), rating, card] + } + + this.find_strongest = function () { + let strongest = null + + for (const id in donsol.board.room) { + const card = donsol.board.room[id] + if (card.type == 'diamond' || card.type == 'heart') { continue } + if (card.is_flipped) { continue } + if (!strongest) { strongest = card; continue } + if (card.value > strongest.value) { strongest = card } + } + return strongest + } + + setInterval(() => { donsol.walkthrough.run() }, this.speed) + function clamp (v, min, max) { return v < min ? min : v > max ? max : v } +} + +document.onkeyup = (e) => { + if (e.ctrlKey && e.key.toLowerCase() == 'k') { + donsol.walkthrough.start() + } + if (e.ctrlKey && e.key.toLowerCase() == 'l') { + donsol.walkthrough.run(true) + } +} -- 2.39.5