From 6a0c5e514b092810c83687d7f810f0621200fa04 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Wed, 17 Apr 2024 14:21:23 -0400 Subject: [PATCH 01/42] Move image to server instead of referring to ephemeral URL --- assets/google_cosplay.jpg | Bin 0 -> 59430 bytes src/how_to_run_a_journal.dj | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 assets/google_cosplay.jpg diff --git a/assets/google_cosplay.jpg b/assets/google_cosplay.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1eaf94368c74609bb54b63e9d26372b4bc1be95a GIT binary patch literal 59430 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 z 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 oWAfIY`?I)Z*Ps0z5b?Gy|5nrS?9X*q#6}g Date: Wed, 17 Apr 2024 14:23:40 -0400 Subject: [PATCH 02/42] Link image to the original Twitter status --- src/how_to_run_a_journal.dj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/how_to_run_a_journal.dj b/src/how_to_run_a_journal.dj index 0ab69a0..90ad010 100644 --- a/src/how_to_run_a_journal.dj +++ b/src/how_to_run_a_journal.dj @@ -65,7 +65,7 @@ Because our CI tool is running this code, we can know which articles need compil Everything I've just described can be done in just ~400 lines of Rust. This is the effect of buidling simple on top of simple, _and making an effort to retain simplicity_ by making the most out of the simple building blocks. -![Google cosplay is not business-critical](assets/google_cosplay.jpg) +[![Google cosplay is not business-critical](assets/google_cosplay.jpg)](https://twitter.com/garybernhardt/status/1344341213575483399) My Rust code makes heavy use of git, a very simple yet amazing tool for adding functionality to plain text. From 45259fb38d82be2f0e1806cc2053e3eecf887789 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sat, 20 Apr 2024 13:30:23 -0400 Subject: [PATCH 03/42] Add additional opengraph metadata --- templates/article.html | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/templates/article.html b/templates/article.html index 1c5757a..02847f5 100644 --- a/templates/article.html +++ b/templates/article.html @@ -1,14 +1,21 @@ - + - + {{title}} + + + + + + @@ -16,10 +23,16 @@ {% for author in authors %} + + + + {% endfor %} + + @@ -69,4 +82,4 @@ - + \ No newline at end of file From b97b91990d12d120e767a1ad4c21c7be1874de88 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sat, 20 Apr 2024 16:21:21 -0400 Subject: [PATCH 04/42] Make articles rss compatible --- templates/article.html | 4 ++-- templates/raw.html | 32 -------------------------------- 2 files changed, 2 insertions(+), 34 deletions(-) delete mode 100644 templates/raw.html diff --git a/templates/article.html b/templates/article.html index 02847f5..59efb62 100644 --- a/templates/article.html +++ b/templates/article.html @@ -71,7 +71,7 @@

{{published}}

-
{{body}}
+
{{body}}

Read more from Compute

@@ -82,4 +82,4 @@ - \ No newline at end of file + diff --git a/templates/raw.html b/templates/raw.html deleted file mode 100644 index 63f5415..0000000 --- a/templates/raw.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - {{title}} - - - - - - - - - - - {% for author in authors %} - - - - {% endfor %} - - - - - - -
View full webpage - {{body}} - - - From 6026c006db58108f251833536d8134a003fd7a12 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sat, 20 Apr 2024 17:19:14 -0400 Subject: [PATCH 05/42] Add opengraph image generation --- .woodpecker.yml | 1 + templates/article.html | 10 +++--- templates/opengraph.svg | 78 ++++++++++++++++++++++++++++++++++++++++ templates/opengraph.toml | 10 ++++++ 4 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 templates/opengraph.svg create mode 100644 templates/opengraph.toml diff --git a/.woodpecker.yml b/.woodpecker.yml index 391c920..e89d049 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -7,3 +7,4 @@ steps: - bruin-journal-gen volumes: - /var/woodpecker:/var/woodpecker + - /usr/share/fonts:/usr/share/fonts diff --git a/templates/article.html b/templates/article.html index 59efb62..4b82aab 100644 --- a/templates/article.html +++ b/templates/article.html @@ -11,14 +11,14 @@ - + + - - - + + @@ -82,4 +82,4 @@ - + \ No newline at end of file diff --git a/templates/opengraph.svg b/templates/opengraph.svg new file mode 100644 index 0000000..333193b --- /dev/null +++ b/templates/opengraph.svg @@ -0,0 +1,78 @@ + + + + diff --git a/templates/opengraph.toml b/templates/opengraph.toml new file mode 100644 index 0000000..9930beb --- /dev/null +++ b/templates/opengraph.toml @@ -0,0 +1,10 @@ +faces = ["/usr/share/fonts/noto/NotoSans-Bold.ttf"] + +[[text]] +x = 435.15115 +y = 8.0 +width = 736.84885 +height = 594.60768 +value = "{{title}}" +font = "Noto Sans" +bold = true From 1ef9934d13f9c0033924433161de01a33ad5a621 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sat, 20 Apr 2024 17:26:52 -0400 Subject: [PATCH 06/42] Update atom location --- templates/article.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/article.html b/templates/article.html index 4b82aab..fbce82f 100644 --- a/templates/article.html +++ b/templates/article.html @@ -6,7 +6,7 @@ {{title}} - + @@ -52,7 +52,7 @@ alt="Compute logo" height="64">
@@ -82,4 +82,4 @@ - \ No newline at end of file + From 1c5f748731b624878d2488f69048d0ab23bf0c43 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sat, 20 Apr 2024 17:29:05 -0400 Subject: [PATCH 07/42] Fix opengraph description --- templates/article.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/article.html b/templates/article.html index fbce82f..4035619 100644 --- a/templates/article.html +++ b/templates/article.html @@ -7,7 +7,7 @@ {{title}} - + @@ -31,8 +31,8 @@ {% endfor %} - - + + @@ -82,4 +82,4 @@ - + \ No newline at end of file From 81d919f212490c1e96b6506989595691e86790db Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sat, 20 Apr 2024 17:52:25 -0400 Subject: [PATCH 08/42] Add twitter domain tags --- templates/article.html | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/article.html b/templates/article.html index 4035619..1cdd68d 100644 --- a/templates/article.html +++ b/templates/article.html @@ -14,6 +14,7 @@ + From 97c0f6f35c2496921b87cd08c18785ee036c8861 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sun, 21 Apr 2024 00:03:04 -0400 Subject: [PATCH 09/42] Increase margin on right side of opengraph image --- templates/opengraph.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/opengraph.toml b/templates/opengraph.toml index 9930beb..385f383 100644 --- a/templates/opengraph.toml +++ b/templates/opengraph.toml @@ -1,7 +1,7 @@ faces = ["/usr/share/fonts/noto/NotoSans-Bold.ttf"] [[text]] -x = 435.15115 +x = 425.15115 y = 8.0 width = 736.84885 height = 594.60768 From d58bc8d8311c6cf6eba2dd2bee39ee2ed3ece149 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sun, 21 Apr 2024 00:18:46 -0400 Subject: [PATCH 10/42] Add details about new image generation to article --- src/how_to_run_a_journal.dj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/how_to_run_a_journal.dj b/src/how_to_run_a_journal.dj index 90ad010..f2be194 100644 --- a/src/how_to_run_a_journal.dj +++ b/src/how_to_run_a_journal.dj @@ -63,7 +63,7 @@ Because our CI tool is running this code, we can know which articles need compil - Run a blame on new articles, which is how we figure out who wrote them - See if we are we have changed the production branch, and index new articles if so -Everything I've just described can be done in just ~400 lines of Rust. This is the effect of buidling simple on top of simple, _and making an effort to retain simplicity_ by making the most out of the simple building blocks. +Everything I've described that the program can do thusfar can be done in just \~400 lines of Rust. This is the effect of buidling simple on top of simple, _and making an effort to retain simplicity_ by making the most out of the simple building blocks. (P.S: Our Rust code now also generates a title card image for each article, so they look better on platforms like Twitter and Discord. By using the same stradegy, I only needed to add \~230 lines to our Rust code) [![Google cosplay is not business-critical](assets/google_cosplay.jpg)](https://twitter.com/garybernhardt/status/1344341213575483399) From 78e59c0711042167f6847f2c729d82b72f2326e1 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sun, 21 Apr 2024 00:20:03 -0400 Subject: [PATCH 11/42] So far is better than thusfar --- src/how_to_run_a_journal.dj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/how_to_run_a_journal.dj b/src/how_to_run_a_journal.dj index f2be194..1c69785 100644 --- a/src/how_to_run_a_journal.dj +++ b/src/how_to_run_a_journal.dj @@ -63,7 +63,7 @@ Because our CI tool is running this code, we can know which articles need compil - Run a blame on new articles, which is how we figure out who wrote them - See if we are we have changed the production branch, and index new articles if so -Everything I've described that the program can do thusfar can be done in just \~400 lines of Rust. This is the effect of buidling simple on top of simple, _and making an effort to retain simplicity_ by making the most out of the simple building blocks. (P.S: Our Rust code now also generates a title card image for each article, so they look better on platforms like Twitter and Discord. By using the same stradegy, I only needed to add \~230 lines to our Rust code) +Everything I've described that the program can do so far can be done in just \~400 lines of Rust. This is the effect of buidling simple on top of simple, _and making an effort to retain simplicity_ by making the most out of the simple building blocks. (P.S: Our Rust code now also generates a title card image for each article, so they look better on platforms like Twitter and Discord. By using the same stradegy, I only needed to add \~230 lines to our Rust code) [![Google cosplay is not business-critical](assets/google_cosplay.jpg)](https://twitter.com/garybernhardt/status/1344341213575483399) From 0372db4ae4c9f52b7a129c68126d30857d101754 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sun, 21 Apr 2024 00:22:50 -0400 Subject: [PATCH 12/42] Move bear to feel more centered in OpenGraph title card --- templates/opengraph.svg | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/templates/opengraph.svg b/templates/opengraph.svg index 333193b..e24194a 100644 --- a/templates/opengraph.svg +++ b/templates/opengraph.svg @@ -9,7 +9,7 @@ id="svg1" xml:space="preserve" inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)" - sodipodi:docname="opengraph-image.svg" + sodipodi:docname="opengraph.svg" inkscape:export-filename="opengraph-image-export.svg" inkscape:export-xdpi="96" inkscape:export-ydpi="96" @@ -27,11 +27,11 @@ inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" showguides="false" - inkscape:zoom="0.28834299" - inkscape:cx="603.44799" - inkscape:cy="554.8947" - inkscape:window-width="1054" - inkscape:window-height="1056" + inkscape:zoom="0.89422838" + inkscape:cx="617.85112" + inkscape:cy="208.00056" + inkscape:window-width="1920" + inkscape:window-height="1080" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="0" @@ -67,7 +67,7 @@ height="630" x="0" y="0" /> Date: Sun, 21 Apr 2024 00:24:37 -0400 Subject: [PATCH 13/42] Move bear slightly again --- templates/opengraph.svg | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/opengraph.svg b/templates/opengraph.svg index e24194a..31a961d 100644 --- a/templates/opengraph.svg +++ b/templates/opengraph.svg @@ -27,11 +27,11 @@ inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" showguides="false" - inkscape:zoom="0.89422838" - inkscape:cx="617.85112" - inkscape:cy="208.00056" - inkscape:window-width="1920" - inkscape:window-height="1080" + inkscape:zoom="0.61131147" + inkscape:cx="184.03057" + inkscape:cy="83.427193" + inkscape:window-width="1054" + inkscape:window-height="1056" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="0" @@ -67,7 +67,7 @@ height="630" x="0" y="0" /> Date: Sun, 21 Apr 2024 14:03:14 -0400 Subject: [PATCH 14/42] Fix a couple of grammar errors --- src/how_to_run_a_journal.dj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/how_to_run_a_journal.dj b/src/how_to_run_a_journal.dj index 1c69785..2dc320a 100644 --- a/src/how_to_run_a_journal.dj +++ b/src/how_to_run_a_journal.dj @@ -45,7 +45,7 @@ Consider the following: If I'm accepting untrusted code from the public into my Their pipeline checks if the library with your new code compiles to every platform it's compatible with, with every feature enabled. It also makes sure that your code is well-formatted, contains no conflicts of license, uses no libraries banned by the project, and contains no security advisories. The _only_ way this many checks can be done on every git commit, is through CI, GitHub Actions in egui's case. -The way I've described CI so far has probably made it seem like the least simplest thing you could add to your project, but CI is actually _quite_ simple, and it's an excellent example of how capable of a tool you can make by just building simple, on top of simple, on top of simple. Really, CI is just shell scripting with extra steps. Despite it's inherent simplicity, CI can not only serve as a means to filter bugs out of pull requests, but it can also be a simple way to communicate to open source developers _what a project wants_ out of their code. Instead of having to read a big `CONTRIBUTORS.md` file to get an idea of that, developers can know that their code is good quality if it just passes CI. +The way I've described CI so far has probably made it seem like the least simple thing you could add to your project, but CI is actually _quite_ simple, and it's an excellent example of how capable of a tool you can make by just building simple, on top of simple, on top of simple. Really, CI is just shell scripting with extra steps. Despite it's inherent simplicity, CI can serve not only as a means to filter bugs out of pull requests, but it can also be a simple way to communicate to open source developers _what a project wants_ out of their code. Instead of having to read a big `CONTRIBUTORS.md` file to get an idea of that, developers can know that their code is good quality if it just passes CI. Fortunately, the level of CI I've described above isn't required for journalism. Our CI simply compiles our journalists' unreviewed articles, and serves them on an un-indexed (not visible on production) web page so that they and the team can preview their work before merging it. Our CI is also responsible for indexing and publishing finished articles onto our production website. From bf9c790a468d173f50dd1dc9bed808b1b3c3f7e0 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sun, 21 Apr 2024 14:04:48 -0400 Subject: [PATCH 15/42] Fix a couple of grammar errors --- src/how_to_run_a_journal.dj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/how_to_run_a_journal.dj b/src/how_to_run_a_journal.dj index 2dc320a..14a12ae 100644 --- a/src/how_to_run_a_journal.dj +++ b/src/how_to_run_a_journal.dj @@ -61,7 +61,7 @@ Because our CI tool is running this code, we can know which articles need compil - Stat the changed files, which is how we know which files need to be compiled, and which files have been deleted - Run a blame on new articles, which is how we figure out who wrote them -- See if we are we have changed the production branch, and index new articles if so +- See if we have changed the production branch, and index new articles if so Everything I've described that the program can do so far can be done in just \~400 lines of Rust. This is the effect of buidling simple on top of simple, _and making an effort to retain simplicity_ by making the most out of the simple building blocks. (P.S: Our Rust code now also generates a title card image for each article, so they look better on platforms like Twitter and Discord. By using the same stradegy, I only needed to add \~230 lines to our Rust code) From 169659b54057103625bb9044d8e30aa3fa560027 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sun, 21 Apr 2024 16:31:19 -0400 Subject: [PATCH 16/42] Follow 80 characters per line rule --- templates/article.html | 24 ++++++++++++++---------- templates/css/compute-c23f91.webflow.css | 15 +++++++++++---- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/templates/article.html b/templates/article.html index 1cdd68d..28f1eab 100644 --- a/templates/article.html +++ b/templates/article.html @@ -40,7 +40,7 @@ + type="text/javascript">!function (o, c) { var n = c.documentElement, t = " w-mod-"; n.className += t + "js", ("ontouchstart" in o || o.DocumentTouch && c instanceof DocumentTouch) && (n.className += t + "touch") }(window, document); @@ -61,16 +61,20 @@
-
-

{{title}}

-
- {% for author in authors %} - {{author.full_name}}'s Avatar -
{{author.full_name}}
- {% endfor %} +
+
+

{{title}}

+
+ {% for author in authors %} + {{author.full_name}}'s Avatar +
{{author.full_name}}
+ {% endfor %} +
+

+ {{published}} +

-

{{published}}

{{body}}

diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index 8587062..332d099 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -44,7 +44,15 @@ } article { - margin: 20px; + display: flex; + flex-direction: column; + align-items: center; +} + +article>* { + width: 96vw; + max-width: 575px; + line-height: 1.5; } h1 { @@ -97,12 +105,11 @@ li { } .flex-block-2.purple { - color: #333; - background-color: #552a85; flex-flow: column; justify-content: space-around; padding-top: 0; display: flex; + background-color: #552a85; overflow-x: hidden; } @@ -197,7 +204,7 @@ li { } .text-block-2 { - color: #fff; + color: white; font-size: 18px; } From 2b7bcb41229fa80f9fa62df5a09ae01eaa2ca3db Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sun, 21 Apr 2024 16:46:48 -0400 Subject: [PATCH 17/42] Increase readibility of articles --- templates/article.html | 2 +- templates/css/compute-c23f91.webflow.css | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/templates/article.html b/templates/article.html index 28f1eab..3025943 100644 --- a/templates/article.html +++ b/templates/article.html @@ -62,7 +62,7 @@
-
+

{{title}}

{% for author in authors %} diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index 332d099..24cf453 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -50,8 +50,6 @@ article { } article>* { - width: 96vw; - max-width: 575px; line-height: 1.5; } @@ -208,12 +206,32 @@ li { font-size: 18px; } +article>* { + width: 96vw; + max-width: 940px; +} + +#header-elements { + width: 96vw; + max-width: 940px; +} + @media screen and (max-width: 991px) { .heading-3.unwrapped-compute.compute-gradiant { height: 22vw; min-height: 0%; } + article>* { + width: 96vw; + max-width: 575px; + } + + #header-elements { + width: 96vw; + max-width: 575px; + } + .grid { grid-template-columns: 1fr; } From 5f49ea1ed18fbf5d10b4c2568352de3011c629e4 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sun, 21 Apr 2024 18:31:58 -0400 Subject: [PATCH 18/42] Huge readability improvements --- templates/css/compute-c23f91.webflow.css | 30 +++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index 24cf453..55a5fba 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -1,6 +1,7 @@ :root { --white: white; --black: black; + --gap: calc(1rem * 18 / 16); } .w-layout-vflex { @@ -47,10 +48,35 @@ article { display: flex; flex-direction: column; align-items: center; + margin: 25px; + gap: var(--gap); } -article>* { +.content section { + display: flex; + flex-direction: column; + gap: var(--gap); + word-wrap: break-word; + margin-top: calc(2 * var(--gap)); + margin-bottom: 0; +} + +.content img { + margin: var(--gap) 0; +} + +.content ul, +.content ol { + display: flex; + flex-direction: column; + padding: 0 0 0 2em; +} + + +.content * { line-height: 1.5; + margin: 0 0; + padding: 0 0; } h1 { @@ -60,8 +86,6 @@ h1 { } p { - margin-bottom: 10px; - margin-top: 10px; font-size: 18px; } From 3acd52fa266104d0a66e773171c001c9a683caed Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Sun, 21 Apr 2024 19:23:29 -0400 Subject: [PATCH 19/42] Huge readability improvements --- templates/css/compute-c23f91.webflow.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index 55a5fba..7fee20c 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -1,7 +1,7 @@ :root { --white: white; --black: black; - --gap: calc(1rem * 18 / 16); + --gap: calc(1rem * 12.5 / 16); } .w-layout-vflex { From 0ba3ca97545595ae4fa23acbcc73f5c4abfd1e14 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Mon, 22 Apr 2024 09:13:46 -0400 Subject: [PATCH 20/42] Change the theme color --- templates/article.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/article.html b/templates/article.html index 3025943..3e5fa8e 100644 --- a/templates/article.html +++ b/templates/article.html @@ -8,7 +8,7 @@ {{title}} - + @@ -40,7 +40,7 @@ + type="text/javascript">!function (o, c) {var n = c.documentElement, t = " w-mod-"; n.className += t + "js", ("ontouchstart" in o || o.DocumentTouch && c instanceof DocumentTouch) && (n.className += t + "touch")}(window, document); From 7ef3ff51268307f65cfa4bcd77f865f656d393a3 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Mon, 22 Apr 2024 17:20:57 -0400 Subject: [PATCH 21/42] Change font to Arimo --- templates/article.html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/templates/article.html b/templates/article.html index 3e5fa8e..bd523be 100644 --- a/templates/article.html +++ b/templates/article.html @@ -43,6 +43,10 @@ type="text/javascript">!function (o, c) {var n = c.documentElement, t = " w-mod-"; n.className += t + "js", ("ontouchstart" in o || o.DocumentTouch && c instanceof DocumentTouch) && (n.className += t + "touch")}(window, document); + + + @@ -62,7 +66,7 @@
-
+

{{title}}

{% for author in authors %} From 2c4e4a17f00c68dddf79ac55b47f88ef729f4fd9 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Mon, 22 Apr 2024 17:26:22 -0400 Subject: [PATCH 22/42] Change font to Arimo --- templates/article.html | 4 ++-- templates/css/compute-c23f91.webflow.css | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/templates/article.html b/templates/article.html index bd523be..93885ce 100644 --- a/templates/article.html +++ b/templates/article.html @@ -65,8 +65,8 @@
-
-
+
+

{{title}}

{% for author in authors %} diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index 7fee20c..4f8227c 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -4,6 +4,10 @@ --gap: calc(1rem * 12.5 / 16); } +body { + font-family: 'Arimo', sans-serif; +} + .w-layout-vflex { flex-direction: column; align-items: flex-start; From 0fc331b10fa02fc0ec8c6f847574e229dd546855 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Mon, 22 Apr 2024 23:11:04 -0400 Subject: [PATCH 23/42] Full compile-time code highlighting --- .helix/languages.toml | 25 +++ .woodpecker.yml | 3 + templates/article.html | 4 +- templates/assets | 2 +- templates/css/code-theme.css | 272 +++++++++++++++++++++++ templates/css/compute-c23f91.webflow.css | 4 + 6 files changed, 308 insertions(+), 2 deletions(-) create mode 100644 .helix/languages.toml create mode 100644 templates/css/code-theme.css diff --git a/.helix/languages.toml b/.helix/languages.toml new file mode 100644 index 0000000..ab93542 --- /dev/null +++ b/.helix/languages.toml @@ -0,0 +1,25 @@ +[[language]] +name = "grz" +scope = "scope.grz" +injection-regex = "grz" +file-types = ["grz"] +roots = [] +auto-format = true +comment-token = "//" +indent = { tab-width = 4, unit = " " } +language-servers = ["grezi"] + +[[grammer]] +name = "grz" + +[[language]] +name = "djot" +scope = "scope.djot" +injection-regex = "dj|djot" +file-types = ["dj"] +roots = [] +comment-token = "{%" +indent = { tab-width = 4, unit = " " } + +[[grammar]] +name = "djot" diff --git a/.woodpecker.yml b/.woodpecker.yml index e89d049..8218473 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -3,8 +3,11 @@ steps: image: journal environment: BASE_URL: https://compute.nations.lol + CODE_THEME: emacs + HELIX_RUNTIME: /usr/lib/helix/runtime commands: - bruin-journal-gen volumes: - /var/woodpecker:/var/woodpecker - /usr/share/fonts:/usr/share/fonts + - /usr/lib/helix/runtime/:/usr/lib/helix/runtime/ diff --git a/templates/article.html b/templates/article.html index 93885ce..c30a34b 100644 --- a/templates/article.html +++ b/templates/article.html @@ -39,13 +39,15 @@ + - diff --git a/templates/assets b/templates/assets index ec2e4be..bae6859 120000 --- a/templates/assets +++ b/templates/assets @@ -1 +1 @@ -../assets \ No newline at end of file +../assets/ \ No newline at end of file diff --git a/templates/css/code-theme.css b/templates/css/code-theme.css new file mode 100644 index 0000000..50eeb33 --- /dev/null +++ b/templates/css/code-theme.css @@ -0,0 +1,272 @@ +.content code .a { + color: #483D8B; +} +.content code .b { + color: #B22222; +} +.content code .c { + color: #008B8B; +} +.content code .d { + color: #483D8B; +} +.content code .e { + color: #228B22; +} +.content code .f { + text-decoration-color: #FF0000; + text-decoration: underline wavy; +} +.content code .g { + text-decoration-color: #008B8B; + text-decoration: underline wavy; +} +.content code .h { + text-decoration-color: #228B22; + text-decoration: underline wavy; +} +.content code .i { + text-decoration-color: #FF8C00; + text-decoration: underline wavy; +} +.content code .j { + color: #EE9A00; +} +.content code .k { + color: #EE0000; +} +.content code .l { + color: #00CD00; +} +.content code .m { + color: #FF0000; +} +.content code .n { + color: #0000FF; +} +.content code .o { + color: #483D8B; +} +.content code .p { + color: #0000FF; +} +.content code .q { + color: #483D8B; +} +.content code .r { + color: #483D8B; +} +.content code .s { + color: #008B8B; +} +.content code .t { + color: #228B22; +} +.content code .u { + color: #A020F0; +} +.content code .v { + color: #483D8B; +} +.content code .w { + font-weight: bold; +} +.content code .x { + color: #FFD700; + font-weight: bold; +} +.content code .y { + color: #0000FF; +} +.content code .z { + color: #A0522D; +} +.content code .aa { + color: #A020F0; +} +.content code .ab { + color: #B22222; +} +.content code .ac { + color: #228B22; +} +.content code .ad { + color: #008B8B; +} +.content code .ae { + color: #999999; +} +.content code .af { + font-style: italic; +} +.content code .ag { + color: #3A5FCD; +} +.content code .ah { + color: #3A5FCD; + text-decoration: underline; +} +.content code .ai { + color: #000000; +} +.content code .aj { + color: #999999; +} +.content code .ak { + color: #008B8B; +} +.content code .al { + color: #008B8B; +} +.content code .am { +} +.content code .an { + color: #008B8B; +} +.content code .ao { + color: #008B8B; +} +.content code .ap { + color: #A020F0; +} +.content code .aq { + color: #000000; +} +.content code .ar { + color: #0000FF; +} +.content code .as { + color: #8B2252; +} +.content code .at { + color: #8B2252; + font-weight: bold; +} +.content code .au { + color: #0000FF; +} +.content code .av { + color: #228B22; +} +.content code .aw { + color: #483D8B; +} +pre { + color: #000000; + background-color: #FFFFFF; +} +.content code .ay { + color: #000000; + background-color: #FFFFFF; +} +.content code .az { + color: #5C5C5C; + background-color: #E5E5E5; + text-decoration: underline; +} +.content code .ba { + color: #000000; + background-color: #FCFCFC; +} +.content code .bb { + background-color: #BFBFBF; +} +.content code .bc { + color: #FFFFFF; + background-color: #B3B3B3; +} +.content code .bd { + color: #FF0000; + background-color: #000000; +} +.content code .be { + color: #000000; + background-color: #40E0D0; +} +.content code .bf { + color: #FFFFFF; + background-color: #000000; +} +.content code .bg { + color: #FFFFFF; + background-color: #000000; +} +.content code .bh { + background-color: #B4EEB4; +} +.content code .bi { + background-color: #B4EEB4; +} +.content code .bj { + color: #8B0000; + background-color: #FFF8DC; +} +.content code .bk { + color: #999999; +} +.content code .bl { + color: #CCCCCC; +} +.content code .bm { + color: #000000; + background-color: #FFF8DC; +} +.content code .bn { + color: #8B0000; + background-color: #ADD8E6; +} +.content code .bo { + color: #000000; + background-color: #F7F7F7; +} +.content code .bp { + color: #000000; + background-color: #F7F7F7; +} +.content code .bq { + background-color: #FFEC8B; +} +.content code .br { + background-color: #EEDC82; +} +.content code .bs { + color: #000000; + background-color: #BFBFBF; +} +.content code .bt { + color: #333333; + background-color: #E5E5E5; +} +.content pre code { + border: 1px solid #999; + display: block; + padding: 20px; + color: #000000; +} +.content code .bv { + color: #000000; + background-color: #B4EEB4; +} +.content code .bw { + color: #BFBFBF; +} +.content code .bx { + background-color: #F2F2F2; +} +.content code .by { +} +.content code .bz { + color: #000000; +} +.content code .ca { + color: #A0522D; +} +.content code .cb { + color: #483D8B; +} +.content code .cc { + color: #A0522D; +} +.content code .cd { + color: #FF8C00; +} diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index 4f8227c..ba9163d 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -8,6 +8,10 @@ body { font-family: 'Arimo', sans-serif; } +code { + font-family: 'Fira Code', monospace; +} + .w-layout-vflex { flex-direction: column; align-items: flex-start; From 934892f81ae4b010ae9c99c46a13843070c1f1c0 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Mon, 22 Apr 2024 23:56:40 -0400 Subject: [PATCH 24/42] Fix code blocks --- templates/css/code-theme.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/templates/css/code-theme.css b/templates/css/code-theme.css index 50eeb33..ea7ff6b 100644 --- a/templates/css/code-theme.css +++ b/templates/css/code-theme.css @@ -151,7 +151,8 @@ .content code .aw { color: #483D8B; } -pre { +.content pre { + border: 1px solid #999; color: #000000; background-color: #FFFFFF; } @@ -238,9 +239,9 @@ pre { background-color: #E5E5E5; } .content pre code { - border: 1px solid #999; display: block; padding: 20px; + width: fit-content; color: #000000; } .content code .bv { From 4017705026c913287a4ed7e6b08cd50fcd61657c Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Tue, 23 Apr 2024 00:03:36 -0400 Subject: [PATCH 25/42] Increase readability on mobile --- templates/css/compute-c23f91.webflow.css | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index ba9163d..f26d7d7 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -255,12 +255,10 @@ article>* { } article>* { - width: 96vw; - max-width: 575px; + max-width: min(575px, 85vw); } #header-elements { - width: 96vw; max-width: 575px; } @@ -330,4 +328,4 @@ article>* { .text-block { font-size: 6vw; } -} \ No newline at end of file +} From 47b613cf4339d22ae860ea4f06dad355548d20e5 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Tue, 23 Apr 2024 08:12:30 -0400 Subject: [PATCH 26/42] Add code copy button --- templates/article.html | 1 + templates/css/compute-c23f91.webflow.css | 4 +-- templates/js/code_copy.js | 32 ++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 templates/js/code_copy.js diff --git a/templates/article.html b/templates/article.html index c30a34b..e5762c1 100644 --- a/templates/article.html +++ b/templates/article.html @@ -91,6 +91,7 @@ type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"> + \ No newline at end of file diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index f26d7d7..d0ee7d1 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -5,7 +5,7 @@ } body { - font-family: 'Arimo', sans-serif; + font-family: 'Arimo', 'Arial', sans-serif; } code { @@ -328,4 +328,4 @@ article>* { .text-block { font-size: 6vw; } -} +} \ No newline at end of file diff --git a/templates/js/code_copy.js b/templates/js/code_copy.js new file mode 100644 index 0000000..4a85af9 --- /dev/null +++ b/templates/js/code_copy.js @@ -0,0 +1,32 @@ +const copyButtonLabel = "Copy Code"; + +// use a class selector if available +let blocks = document.querySelectorAll("pre"); + +blocks.forEach((block) => { + // only add button if browser supports Clipboard API + if (navigator.clipboard) { + let button = document.createElement("button"); + + button.innerText = copyButtonLabel; + block.appendChild(button); + + button.addEventListener("click", async () => { + await copyCode(block); + }); + } +}); + +async function copyCode(block, button) { + let code = block.querySelector("code"); + let text = code.innerText; + + await navigator.clipboard.writeText(text); + + // visual feedback that task is completed + button.innerText = "Code Copied"; + + setTimeout(() => { + button.innerText = copyButtonLabel; + }, 700); +} From 437fab1fe0147ae4033b0c6596802ef937f8b869 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Tue, 23 Apr 2024 08:20:26 -0400 Subject: [PATCH 27/42] Add code copy button --- templates/js/code_copy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/js/code_copy.js b/templates/js/code_copy.js index 4a85af9..0924191 100644 --- a/templates/js/code_copy.js +++ b/templates/js/code_copy.js @@ -11,8 +11,8 @@ blocks.forEach((block) => { button.innerText = copyButtonLabel; block.appendChild(button); - button.addEventListener("click", async () => { - await copyCode(block); + button.addEventListener("click", async (event) => { + await copyCode(block, event.target); }); } }); From 90d78f9abbff09a35cdc18a5e0c7b86d790c52f2 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Tue, 23 Apr 2024 08:25:47 -0400 Subject: [PATCH 28/42] Add code copy button --- templates/css/code-theme.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/templates/css/code-theme.css b/templates/css/code-theme.css index ea7ff6b..60c0482 100644 --- a/templates/css/code-theme.css +++ b/templates/css/code-theme.css @@ -1,4 +1,7 @@ -.content code .a { +.content pre button { + position: absolute; + top: 5px; + right: 5px;}.content code .a { color: #483D8B; } .content code .b { @@ -152,6 +155,7 @@ color: #483D8B; } .content pre { + position: relative; border: 1px solid #999; color: #000000; background-color: #FFFFFF; From 7f6548e805d88f2c4fc2efeca2ccf821cc9959a8 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Tue, 23 Apr 2024 08:44:25 -0400 Subject: [PATCH 29/42] Add code copy button --- templates/css/code-theme.css | 6 +----- templates/js/code_copy.js | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/templates/css/code-theme.css b/templates/css/code-theme.css index 60c0482..ea7ff6b 100644 --- a/templates/css/code-theme.css +++ b/templates/css/code-theme.css @@ -1,7 +1,4 @@ -.content pre button { - position: absolute; - top: 5px; - right: 5px;}.content code .a { +.content code .a { color: #483D8B; } .content code .b { @@ -155,7 +152,6 @@ color: #483D8B; } .content pre { - position: relative; border: 1px solid #999; color: #000000; background-color: #FFFFFF; diff --git a/templates/js/code_copy.js b/templates/js/code_copy.js index 0924191..3373856 100644 --- a/templates/js/code_copy.js +++ b/templates/js/code_copy.js @@ -1,21 +1,21 @@ const copyButtonLabel = "Copy Code"; // use a class selector if available -let blocks = document.querySelectorAll("pre"); +if (navigator.clipboard) { + let blocks = document.querySelectorAll("pre"); -blocks.forEach((block) => { - // only add button if browser supports Clipboard API - if (navigator.clipboard) { - let button = document.createElement("button"); + blocks.forEach((block) => { + // only add button if browser supports Clipboard API + let button = document.createElement("button"); - button.innerText = copyButtonLabel; - block.appendChild(button); + button.innerText = copyButtonLabel; + block.parentNode.insertBefore(button, block); - button.addEventListener("click", async (event) => { - await copyCode(block, event.target); - }); - } -}); + button.addEventListener("click", async (event) => { + await copyCode(block, event.target); + }); + }); +} async function copyCode(block, button) { let code = block.querySelector("code"); From 6f2a1fe0aa5f967dc4c73e2442eb6a67fa7866c1 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Tue, 23 Apr 2024 09:09:30 -0400 Subject: [PATCH 30/42] Test inline code highlighting --- src/how_to_run_a_journal.dj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/how_to_run_a_journal.dj b/src/how_to_run_a_journal.dj index 14a12ae..5413bfb 100644 --- a/src/how_to_run_a_journal.dj +++ b/src/how_to_run_a_journal.dj @@ -4,6 +4,8 @@ Hi! I'm Isaac Mills, I'm the guy managing the infrastructure behind Compute! In ## Plain text +`fn main() { println!("Hello World!") }`{lang=rust} + Plain text is as simple as it gets, yet it can be an extremely powerful tool. It's capable of being anything, and can also be transmuted into anything. Its infinite extensibility makes it a formidable tool that every developer should have in their arsenal. For our case, we use a lot of plain text. In fact, the article you're reading right now is written in plain text, _not with some web UI_. A while back, I found a markup language called [djot](https://djot.net). It was created by the same person who created CommonMark, a flavor of markdown, to be easier to parse and more featureful. Below is some example djot ```djot From 927495694efd34cf582504e5343c9c708622d0c3 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Tue, 23 Apr 2024 09:19:09 -0400 Subject: [PATCH 31/42] revert Test inline code highlighting --- src/how_to_run_a_journal.dj | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/how_to_run_a_journal.dj b/src/how_to_run_a_journal.dj index 5413bfb..14a12ae 100644 --- a/src/how_to_run_a_journal.dj +++ b/src/how_to_run_a_journal.dj @@ -4,8 +4,6 @@ Hi! I'm Isaac Mills, I'm the guy managing the infrastructure behind Compute! In ## Plain text -`fn main() { println!("Hello World!") }`{lang=rust} - Plain text is as simple as it gets, yet it can be an extremely powerful tool. It's capable of being anything, and can also be transmuted into anything. Its infinite extensibility makes it a formidable tool that every developer should have in their arsenal. For our case, we use a lot of plain text. In fact, the article you're reading right now is written in plain text, _not with some web UI_. A while back, I found a markup language called [djot](https://djot.net). It was created by the same person who created CommonMark, a flavor of markdown, to be easier to parse and more featureful. Below is some example djot ```djot From bfb4e0e1f90c473ea15057a7ed974a37f1942011 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Tue, 23 Apr 2024 10:24:41 -0400 Subject: [PATCH 32/42] Remove article from repo --- assets/giga_chad.jpg | Bin 9885 -> 0 bytes assets/google_cosplay.jpg | Bin 59430 -> 0 bytes assets/the_pipeline.svg | 1 - src/how_to_run_a_journal.dj | 96 ------------------------------------ 4 files changed, 97 deletions(-) delete mode 100644 assets/giga_chad.jpg delete mode 100644 assets/google_cosplay.jpg delete mode 100644 assets/the_pipeline.svg delete mode 100644 src/how_to_run_a_journal.dj diff --git a/assets/giga_chad.jpg b/assets/giga_chad.jpg deleted file mode 100644 index 7150f96a62943b91c98f0a2eca953a7dd7982df0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9885 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 z zPrGPt`H4k$rMoA_sYcG)ruAgO55v2`z7|`iGl?wGtiH8FW&VPwBF94kM@{vtrRIpQ zmUN4KYu@_c?}=}JyiU&A{>^uiOxmp^1?N?{>WMbfHchJ3O_?exlri^Ix4%@MxZYdo zx|yZXs;~4Ti{yImU(AnVE$Xi8I@>7rO;AcW$F265$hnDIb~IhG@7(9|W|IFb^}Mbp z#}@Xc#Jt_fzjRVz-Hd9ho12eq-n~w~@|6DPWY0afHh#-1+8ubI;f`OP)%`^Ftb&g> z&%r_SABBoaoD7J%qeM}4{V`f~J|uU;;s-Ff5Vo~1udRc@cQblU=_CjYxZZu>cke1-dE9$I@%Ke9dT=Q{tZ zcgmF}UWi-nQ$ECXWSru7(*Bj=) zDy&#AGX3ws#3%egwF4@5~Q}4XCzk<#3J zi@C5Z)tpCKe^c7DX~}!74j1$n_1u}V(pUFd47W#wr>CZ>a)LnVXHm_|n>KaLiHR>d z*!{Iz|A^I0{Z(O!oaWLkGyTuDz4nUH^z{hpzIZohb#`h@$D`2w49y#OMP`+SMJ(3H zNO_aJ_Igg)$SK9uVWh3mm;7lQu}@N7ci!{~MQynOLvikRp8pKeuSEOV53dO_EWfBE!X3LY@R7xq_0#S#9(vp|Us^BU zfx*>p?VEnh%);E=CKCGt-bYLiT=3QEwwUmA4{`gg(Wzf_j_Vg|KU&htT6psd7kj)_ z%gdXYj$Trd>Rhj;IX0Cto?8;7c>CVY9qLS1rd?ZR|7=#_ayyZ=S|6r|1b?hh$ggXe zYpoP<{W33kubgmtbwotG zuE-AtmKRKnE3fWdWHaUQGT%*dnb(-7-@3Ks$jd(FUPYmay2sa)6`ek>s~F`q?QyrF zyr3%Qqsa?5J_s>Sve>eF+u0-gGj2c1y{>WNy59zwsM34F+kQ^>R-NhN9aHWu9x!RS z$nBU*9;#bZUi`S~w@8e&dfTZo&nwpJ{M(amgq#jtWaHy2G`m|#$M4Qe#_!Bs@7JgA zaFp_IT;TW3@0Ijc*T<}qmQ_=$2)B-i+7AdB(gkJ8@;!%t%RRXN{C)kt(tQ1m@#lk2 z9{%gDe)x|cXN24a>QtN{dq8;_y>uYn6|CLMQSkE6~Rvbc4BoBDS}u)0Bt zdup!G4afU(k7r-v+EV)9hjP`5%dcXemVH_6aV_$hQ=|F4=Z-!{w%t0NtN%{iVnWlx z&mLAPHD6b?Zmc|dGN>fhcNXiR(AM8A+C|qM%=of6kJG0-;B@VgZ51_&^<0gQ7cW&? zA0AemT^QuK@6P9)3wN%weJuXF;P%2JQ>ChsR^N@}RXld>)|9zRDsFl4&ky3Cdo}LW z+2n$gi{1tj^cK5c$?7U`Sw(VZ& zlAGN*ZFA%9Fgm|_#ALozyRLNcr`3Beo)vp+GI@Wn>M`3*K5yD3vn~s^t@(H_Cj7z$ z{^CRjp{>8x&v?3_hRJQ~s_D^-l%7l}inm|+lQ-<-hh-M4c_L=~smOLNx|gasVWr~! z_U_rYuEqR&p~5m>AvpbZ!dKU|@4}B~85#23();jXYt+J(E6u)Wo>X0U|9iW{yLRSz z3s?m#eq~gO-1^e4nOT{?|J1rJn~G1W`#LU06h5C5;3b`_>J|8l!De#gT;C;YXX`}H z@IJYAZS0iOg~6I^?t26T4{F_N+F5b&+Md5z$>*LLZGXDgW_HfRokDNdo^_t_dqbeA z?yk4%1Tu5hG%s2Gz^Ow)J8r?p)pk4|FHOy_`{uDx?Ihb(%fNNpRIOIN%$>e&!r`u9 zO{YC=Kh}EOnqpRKCm*HdvCg+>(v}}@{xiI2c{=mN_s;J;lT6AUM_-w0bth%%wk5ir zw{y22cVO-BPQGYuw`*yB&ZfCX-DEcDl^hn_^n0`5OlMznRZk~@2~(ETGRRF8da{r0 zp2fCU*{KsZ{+0i3vrL4$DtE%^HJ$}W9_n#p+zQ9T0%b6%A zhf<>?-YxS$m zk$>0J)i0dK^K;u7*_GFR`ngZI`Z7i)Hzs86@rxJ#a*FsZ3JVN6?SJ{J+4kB0oD17~ zZpZHT;f+lydzyQBxur)T%j(x3UeqN)41K%D~d8NW<2a!u;gd$spbc&--RTD9d!C`^-rn%V*M+W zZ|cEE1ov^`C|2MdG3LF`A8KPvD#@U@j;ftkhA z2NC&!d9QlkGZ}St$NVU|CK&TlHW*AysNxumb=DuJm@!MusYBrtKW~b+J^U`;=t2LW`d(`DN?i5#htfrNs`}vll#)GLV z*H%V&FjrqYV6|-N3->9PmwfwIZZC04;rAZbn2q1k&NLj~eZ2H|eOrL}@g3JX;$?q) zvSHkNIeeAsqp~l%e6B^l%h-B4_`FkAwBD9&v8m@}CM;aM$Yx1@fcrvG&Wn}Dqn5n5 zwOHSW^+4XqY@dh?@kNfA&$~}mW_vjOT)-1+mi z?y?k=G4m_naN5L%lY5^ zv43*tT0-0HtjMjZ;SnEgPp+K%_=s|&LtuVfm_P~N*9WqBvpOsCvv0lY`s}ysaA)Oo zky{tarmDPX{>l>Sdu#8^d3P-w=3RNNWT<1dcI8aYC+&%OPl&I?&x99HHc z@F=%P#cD&$g<5_V)!bh-_FNwK=kI;__{_>sk!iY7+n?=c{`7pxs;6?V4lQImdMw!} zaJiYJb7oY~4XMvd*6{xLy>DK|)0E?4)8>BYxE6i8>{#l-nT*DXeqPLHrgLXKY2Ko# zC4G@){zNJDqfRA04_7XmYf`;CKKV?;(M8vD1rj#An*Sh9Z^z?R3`Id5at#a&3{@BR zuH;D0d^LGn(vEwfcDn1VBz0EZl-VFAzG?HFpr2K|wQp6YR* zB@XM|6L6mUpP?ckHJ{%-dDK$!D+rM&c{XK7{&zbP+)SXh- z?7**D>M2)wFD>=>=;R6+p&_+n!UM zRl0fGUFIvzKWYws4w({DY4tI!FSXD-;+b$yO5Jm4h+DF} zsIB3eD)M{glk<~hxAX2(e>|{b%6P zSiW_l%}<4`7P%j_wr5OS5cAZj)6`fp@v2$-rFn`6_;xaGe*E)l+?f~6MP0dpjniT$ zd{RE1>1Xw*NuZ^7s>WOf_G=5KT?#v$v@5Zu-{ioqnB1`A-kz0gDNQXqCchF|Fp1Oi zgZm>}_gVYe?>zs{5X!brbAKbZ>LEReBO2Ew#kF&esjl_iwj*Ej;Fe!MHJKJ3Jzn%< z^KtD$&sAS-lV+G6*35nBd#Ybbo1@SxYT8ttDa)&P-%tE1SHpk((!{<+M$aR*tvz9} z&r)4ux6)17D+Y5#cl|nk=n{MH{3{a}eooR-+G?dgUFoQ-&+V;^CU;(6(%b%Q;lYi& z+Ty3)2yXQXyyO(^d4Fzg)~(9T>Q}7#rsmG7nJr%~z4Pz9oxUfXZaKf%)8J6JwRg#j zpYlt?yk@S`nU|AuHAG5W^RL0K=#MH--^C=YvRb@ZeanP(RmFYn%eGl^?QYe!Tzu6n z(q@-^{lnJFzf}L~|8~>g{d@bKZ(G*Y)Xkf9*Tia*{Z;ofpI%&gyyH*xsWh+o6-l@G zxP-RPi{kFG>1*&}pDNX|esauA8BNvP*{xrmK6`&Zb@r9|BC+>deeT`bqV%7kd;9DC zr-K()8OM4RT#ddPzUOMnj>}v?y}Yf=tb>bB zwybV_teAA;@MKXottp4*=v&#=sJ~nO(NxQBY5Lsd%MACfIi3CT)!o_Uoi)3(?tgRc z-L%zIu*kbBUe6|I65p1&zpCV?idb$^y%N;jwEO$T*u96g-(IKZvMuJSZQB>-Q+>-g z!}c__R!Z4vtqs0$OQ@*#WFQ-PW0xKaoou;5OL+Lc&!|tnBmL*^`|s!0KK-Ws^Hrrq z{fZ|)>N^i=GhY*7YS{YaxKh6KsT&i%r0%)1MWTy$`K05f>aNPq%Gf`tt!MXn{%YgT z8LuxFztC=TPTaC)Yw=#kt_S{l{2orC>(_PO&ASyd&!+HPeQ4xStDSSAHqA6ti0mxw zP|XTyn#6QvEw6fAiRtUl|KbWys_O9vFFB~=xwG6+fE;@nuP@+Ode8PkOTRyp{&MFg`d}@3!vF3o5#uJaZQwkrkPneN=dns;H{ZtC?rl zzB%QRKI6O&M_Ze;W|Hdxrs)-bye_a`|GGA1Yq`xI;fUZJ)<2}~EXw2QoA0>Qsq*RB zp3jXdUQU=gZLa!{uBe7f6aNX>eLJ?Vs?*}-q92Q=pDU`7(wpVm%Jf(D<)xc_x7L0V z5PRLouwwavn?L6-b&)mBTc#J_srO=X^ZmjMLFsL=mkZOJzl+63f4p)lTEmf*vta#s zhP5kR$Lrf^icLGSuBKAutJ|t>kG&DR&ow3f{t~gCa(%Y0=MIahZiNbOYdlz`?k_uN zzc=pcE`y7<2G`c=`+3C&Ex+|HQekTDv`+8uX%lt7oqW6Fhg6{3e}>)b?B>~os$EX^ z_my-L)qkY5)p^0b^QY!@H%jx|>D@j1^US`sWTVDI+!~j*Y%P?IZGUJ zDtCR(4qUZ=M!r_n?Izo-nUl16RuhO^fw1 zjs5G(r_6NU%KKE+U#aVM_UsGRMFqcm9bxBms*(BW+9v*4YeHu|o3dzI*zRA`AJ-rI z&#=rXaqpqu!EfTrjlZog{(d*R-p{7~%RlM0x>=SsJAZ~o$IHH0^HuIKSB|$fUu@!? zyo-^AJNq5&KmDo9-7uG7ZsXpM%>Sl(?p|CsOHa>lrJeqyi6K^fjhFqF>5B#BY_Hv! zRhY6gAvf@f|0KJW_b1uU_$8}ob#qRwzwfi(fluyyHD0yWC-qISM1}73pyb>*Dj%6hYxE?=*Hrzq>h7w>CHXKa?6Y(KdD?t>P4E^E6F%NsMfIqW$D z?$7;k{YuxKy(@Ey67$8>ZoNCZjKBKG+F;!<>*mc$r?;P;@Ob@qDHnIyOOwPlt?zb} z^7!(pUTRBJwB++P&*iGSGHd)RzFxW)Y}#QdJ9kI!oii=&dyS^*F8OmWHQ}ZA*Gr{8 z{`{Hzy=UUIvq$fi{h8Sr{`84?PE%~ZW!jOQMzfTg@-~D}3P3`@8{~4lU zxBJZ3Kiw1Zu=LM^wWUh0bN8hBpWeD_`UR=n?ebm~?Q^_JmiGUu*IIHbKe=v}P@C1n z2-J0cIGZ47yOUVDM3gUp=TzQTwturdxc~gU{|q&+?!_nVpSOH+`>#I#_8)VEHrOUQ zXz*-Q^J-KSdgxKue%so)cg0dqt7`}4raWkyGS&F>`Ms)F?G>NydUWo}))gzg?1TK* zGI?sbcL`w|D}p+XEn?D>gA+On<%0c9%37CSRexpI{&6{r$&!^bI<-{2R3<-}Om1_J zm0X!=jju^xiFFc4But?@BWri+h7|A zo?1g6WrKzsAzKM+gT*_W$H$b@#aqR!*X#e$U9jRm!-Cb1kJ_yFGr9deFIX)iDQc6+ z^!-UiAJ_D5`CKf&Q`J7yrGWoexc7&58?`Hz{%3gl@3={g`{Kzfo_7Cdc(cDaW{d7t z5sOJvRbDiixE7f_dO0_9rMCN1N2P`v$v^(S*4lgU*vH$&m*17EUzE~GbG!Ds%Zj09 z|I82UlOJ_P3Qg+TRu+AKVwS0hXti>_a1Kq{DzyIbtUzm|-yG*7s zW=e~$^TS++O!bp;&1b#BUM%zJ7Kyo8bH;YcXPtP#J!#u&-ZP$AkbKlWTUm1N%zj6& zsYf)gXl@ZO-@o#M-xf}x2bVTmd=;EBB`WK$pEmeVh#g;rm(FDOd7N}<{bk+ri}g0R zo>%3cZ zRIhm3i_bgNx4mgQsO=#AbOWQEtL7)KInkHzT-1X)!Dke%>X2PUgJAUzK-dm?{n``XdviF2yW}%*{OI4qzN={Br zesW3XIu|3i`p`+a6_?(H9lbkmPxJ$K=SOBwH4lVrninM_uzspn?`mzEU8zgeZc2Sj znVwp>;CIiSD{a5m*d6-0&7y<#?Lllc+R2_owcY1r4``Rn$1jGAemp>~O-Ix~Ps&-#d z;_An8^PETbwwz8?%~Qy=;o>b%85(vMx$3*a(^5?RUqM>A??OkMuTpGN=4w+k0o9@ueSSx)O^P z?G-x~QP+Ncb=9w%JG~#LUHf|Zjcto&*q(3Nc?=#xQ)F`;WQCS)v*TA`eDKrs#J*XH z$EIu!ay9S|h*@GqX>s~+jX{WzpddFYcS8}H6V!O-g_4uUcmprSJdX;Ll_0%?-b-Mf9 zkF?geR{i|TzwnQ(_JcpwFTTaIPusCK;y(Z7JO3H#p5Lhuza$f9D6bcH&h^yS@9S@G z^j|;6uIKH(qd#4n1-?x@lDAX&&9RQhlM>aOmwTo@f4t*zmimRAxGFZ+2U2^)y~=z1^KI&l)4pa zy=83@*wpgj>Drc+QP;kQ?&{psb#nHtFRqu))^?jO-zJ}PJU-{n$GUmG$L>W2yyJeI zw@f8m#4h#7i9(nD=~CNs-Eu?b@rTzdH~i*W>HTfZp|Gu@nr_cL)l=qgUUF6OYu~)} zZ{kmXw(kDc5wy$p+Ky>*jrXlAkKIZ0+;e`amUsD*Eic1&G3#<_yvupLrF1LrpQg1p z-@4oWF4&p%m-|Ms(DAooGE!{ZGva?$>$9YVbcn4fyS3Y;W$mQp>Xrqy->%H$v=_Y9 z*1=L~y*g*xoAkG4Pi_V653lF46ic6f@8iAc)wYS-rX_3_R@v_6di3j2rzaMdi*H6r zd3UjFo0mNC@jCZt6~@rKNp2sTrhM}J_P6_A{hYg>W6s|SU%LIrwCx+u)Qe0l+kVV< z@067**KE1f()7UJbj`|`&Y-?63>TzU=G}G+Xlf}uTXfT2;Qac6UEOcqUOM*pw#@NO z>t-GFecAr@&90qmJN!k=wu?>L(6Vx$qeA0W?Syxo? z(|vZ;yZ@c@t67_C`|aet;%mdbQ-uDQ*v!!Vy>xE+}_SE@Q}*=gIaN8+AVUzc-oy0)On@~uaq zOY@0Yo3^|xNSy4m@l;UV)%j-6Bl&{uZzRhnE}LD&U0Jh2SnTf3$+!A$YGqGuly=lB zl=&vI_M=MkV)w6pD_r#!{^6fnuwt41>fAolo#Ln_}G=)3SqYimh05W^(fRDV1MLbk^!_^Zh6P>CDM(ojs9y ze#zf%yq5@0J?Zs$%C-fq4AZ$Yq{Evy{1^UVTpDX+npxDlFK|M1ZjoNand@tNbd3cK z>{tXPw;vMn^3Tbs`CDSXpf1#8t>7vzW6zJVZ!Sk9Dw`&yt~FFVHmm){q)Rtbbw4I2 zZg=kwV4ARB{r4(6Pt%aCIoXrqoP+jmH=DFhGtOA)dGhf^w(@VUN2O|a$U6I$MREQx zUFXFq9VmV8U)r*7TLRs02hQ2P{_4!o%ni5a?>YaSPe|gsUf^X`V_|_^7lRjX*}5b{ z-}B~udFHq>k*QO!TWYNS`aaBU*3o76^o?(9Twrx|pY+SDln@2Qr@JPENpXcU1UWwP zKkt%#)GRDYFX+XC@y`|&K=cY89N74cQ4E%>0%wKOkg(vQ_czNI$-cAU7Txu! zW7>|rN8*<_Wgef!9qiLGmvR5oMYXo>^G*3vP9NMesdwMW*=;kwYk$3WURbWDyT&?X zvs_Tb4h_ z`{wcayTgr-532aBuAL2v?d##x4Sf}+wT#eOMl&;u>ybe!rswhh( z^xb@mX|sb)>{;?sVgB#d;NQ-fY4OxmQ{=rg;TC>go(| zc)Gw{iSwq&k`qO9gqPpG_OC{C^`&QLwy33?Nz>uGvguTc(TU`GPSr*Czi(ap>8o7J z&sF;@%v;?;mR8sJY};M*BvRRT--*fJyoF>1laA$2UcbYsdY08C_m-xm`Ed>MCf>Ox z=B&zfo|OA8uFc+w{AsmhqEV8ZeB->U=aSKhx4y1QtCx6Gw|_t!nS z{fE3I@83J?7cte8TfSFO z)o9i>zE>e8OP1_k>uBXs(neAgfufzI9uk5CNwT#muUtYI9CVx3Dl~Z9Dt#TCv##TpT&}I_E8e#I zQkRp@eUdJb$p3w%;-X&vrpx;IwMP`S7`5-ua{!+`b$5%~&S#Oeub8*3J{MjwpY!Lr zSlM2+;&oegu4d8mny^$LHtgIT<%u_MF5R$LY-&8G)` zet!AdyGD4C`Ks*(UZ*~Fp1pN*_N3Sp^JEX#wR~p^lej8bGaLLrv@7sUUawp#<~L=1 zo~PD%We3zhZ4; za{I01Ggme(RnC)1rWe1>7IJE8KByTWdtd>-eQfW$X@^_l-U_~}+?HO|taiQP^!nh3 zzVlYEnei!o*K7Z?nvYV}as_ggEI(M#7xi&hG?$>?CAFxk#aB-AL;;fox7^VH~&7|sj0t^Z^4^>Ee@|kjDLmKA6i@Y*tBz<%8T}to!c|#sO}c^@8j}# z@M%^d%P&oC`BLZCi$8x1m@77?bd_4{rj?hM9I0cTwD9*Nk!j)Yy`rCb1qMx9UL&-~ z{{%k+Z^+Kbh@?PY+c!ejn6x$hgzQ;plVq~iYNqpq8NDZlX892dFS zZPvD=9V;(Igrv=T_mWpJ+1sXc)7l*74Qzik=8DddxwVgD!+Y`UA}8JNo`sXRrZDTT zWKLo5Z~n}X|3%(Q?KoRG^ykl@eNcE=vl9v@gv5!dRKFM&P!M4#((dR zcz*nBy|h=mb|+iT(Xytcd#bs#vh(C0PAc=NYp<)Rd713>#c0vT^4#S&^IjY3o(c?p z;r)uU)cwke{732^S8j9b*!$wM*7Kq{B5HS3PCVQ2X!p96)d3zJfj7TCVz_@HYub&# zo(lJkReRK|l+@lD7~BX7xKLXoBr<6#gZaV@9`=n&(~foAz1aG4vx?D~Ord+FGaj@> zN4I+B$j2%CkiPI`#io#;vWeg^3Jq3<1vp2&zMMYqUaG(0)$Ky|Nnx!5OXjaozSLqe z@61`fr-eK0RL;*=^FGPIE?4RuaDDlt@}S!(8ppII3Fnz}Pwp&xY~`|asZG%Gxj`r7 z9X!9R$UBm>_-m+SLVSMNvMX2DeYBDitJE}nqPt=7S4EYaE6c94cnQwG7Uo_Rv(t!Y zr_kKePfp#dBZE%LwWptTo#v_Pank5z@s1tsdE$~m({5Z6`FtwU;}?^E*RYdS<+%os1vUK_G(?N6RT)mg2vd`r8$q5^_vp);_RzFvF(nGOT+iV^8$Ln@P zm)*Ydqq8vP+BB858DM-InI&dY{7$nLQ`0uKlfsHw72PQw#C7U0qHy2q;hR@k&# zhc49%lxbbaI&8P;<#pfnweCm#YPAh~XEwZ&NU%DU;>Ne4Wr_747adW}s9Qnn>5fB59%ar((>?_+ z{;>8y{|ffH_T#DR=MkOHzG1&g!aY z`>1YRn)qF8OUv@^>V8c-of9KV{@^Zi}T z%Vl4MwRyVko?byVlROz1UppR{EajuAcX+1kF%^TYCa?V#EX`f3?&US9 zrinwL+3{o_bY%mh+S8n!kZ32YTVLs~KV%bDE52EM`@-*T<|VUhCg`7Rn{E5dD|)h$vR}E#)G2+cS`6hv z!AIWk_B*lGyz>#&a=-cbJj<0!H|Hisng?v+&h+UNT*qT@>(aJ``)&&h-J1B&@#zF< zzkeV6k9ct2>s+&V^-g^`RqejxpZ_!54*FQ#+;c-m+~?HS%Gg)0^`5;p*KXfec3A#! z?h$=QP4*pIUfMtSYNvhs!wPeC<>&h*pA$GP;kx*Vt87E|Jv;MDXZYs#$9t`2?O!${ zX5OOb-+0uF=Ps_8bEQ1)24kD&?R9hiOt=ws{=sCIwHJLRUldo~U+o{EZ|TN!uiD6V z=Em;$Cy|PqbN4v!D9homDf_bX-MjVMq=V$#kFNb5ynb$6^lHlurjnUohb&*r_&t|g}JQqBAL+wQ>G|K z>;Aa&+$ZTqnPB@9S*NqRl6Fq^i+X3yFEzVhvh3`L+;yLqUfs52&!bCXw=-Ei<-`{6 zXIky4oi=N!rN+^3yR~Z5kLXA&bIqFCwOPq@vC2k=6H3k#-j|-poN({T!D8nbUY9mZ z72xz2s(EwCYlq2Eb(Qy1UcA|`L9f;NO18U~+Lu=mzSsGCtEX2ceN^!3)ro9*`b|1e zw;UCY-`ntAUxaa| ztc^JLz2Jg<&WX$QiUOsib*5EkD{6BU9{YWgU_^Yc+sVk3=bAh2o$5}hn_aT_ zpL+D(xw41u6}`1$Nt-^ccG-^!-IG5|R@C;X{bqYpJ1X$V@|g}=&v(rVU$T6rtz7P( zuD{Fq59RGuO?upt@NLenFK3qp|75zm*CXkD)`Y2+f6^8%&2+vv;YMbvr}OgnpEZ7J zh8>-=WO-1@?ke$adxrvzZ+FsV_TPM?YdRs>Cw6)2?1@j+JrL9KDV5b% zF=kfK^sSm&%%NHuXP-^ow%bnotL4>G{N4rYCM8&k+?%)T?}XH{-%U>~wVtZZc=Jt< ze@lB%+q6l`xrC-!Esq z+#*?-dAnJ5b3f+dD%fyff=8fruvFNecTrw9Bc4pza(sXNbhYOe2dnD4pUV25GvX=p zb7U8rn6f?kt&rX%C%K7chLMHe51oF>;mwz+m@sKcZ-Z&jCEraO<}6t(^6LEu)4#Sa zpQ%nwEZ?{K$jhT`8Fl}Q`RzazLU*Ob#!11n3Q$e zuc&8={&v%pZM$+W-nOfp`8e!ye@eO7*{y%Fu2-Do7KqLKRy}FP_Z#OFx2u?J-FC@o zu2bmJ`5iBUrcPY1+?AgnyWhDj?b}VUnqBX+r+4q}vlff)U3KYochtfc{~5wU_IF18 zXAu1Qb=5w<4(qP+v`GsnUr-O(Ayc<7CWQajmE{im6Lx&Q>ozs#;M+H+%|ktuxYr!l zS6G)9<381E>vlz#S$w)8)a3c|df+qLyAwNa-dxpmur2L+j9Bck zhiUzSLF>#`mQDElA}}WH$+qayV_hK@J8uVF5GiAb+LQ0%RT35ue6uIneAlCGd%8~Z z*?1aksxH`eHZ4eGNz2k__j0ck23+ol_S6i#AswLbuJghaky&-E%i^P--2G&|EpYOe z+g$t3?6x|5#J^KznboXJ-R0YF*J?d-67mWQnN%0AHP=;4%Tw**PvP~JSvZCm)h_5}MNZqw=Q8jJ(r_xVR=JxJMaH`+TC-SwJ^F zdp)=P)wmP2>uFv4w>RGBbbC|6 zcK^M3`t`NlTij#%<%&-2v^kl3#p33pbt=UQOH?#ux#qgYsl1vUx-ssg@$Y56y|)S@ z&0gnth(%tP{1_~_RH4-;*sG8|OS!39gM)#W_sx8%w)aUFo4Sj>>K5)@_*r7xH?N$C zTc0?#o!@xllsK!~n=1|%Qxq)EZ$DvDop|YHfx3hCu~(%=^L+B>?zNVBQ@`j6A?dl3H?)xtA?720&_+Gq}%oXm%+_f%3$McbtCoGCp7oUQy}w)~xI9Z_`~* zEUp=M`}T_p8b(}7Ivnj0P~LmLWd0X19HpHy52i_MI?Iq%55ip?VS45 z*7~?rYLSa#_OY->i}zgi5>may! zS+89W-PnD^^udjuJ9VEGSN0`eO0-FEpKysw;I&Mw_u2KG0a|=-9o?tvOJ%7(^4ngv zd!p`Lzh!a8yd#Axu9j(T zWov>q`tbCP2(;&*>jd;-jbAMbymb4v_?)8Xp0&%Jcjv~4iP&{r{7{#vu+;e=+iru> zod(GjmCbK|3reg=ja>Y7;$P(#%eOCgshXIRbo+|;ni_rO{D-9{eWxw({`fRA;#OqX z@hNLQetz(0^?_Gaswh$IJo2Ijcq)WRw zOXk_h1w5?4aOU<7``JxKk zCLnf4#pV6gotXJjb@HlHd(0k(&wS@7(5#}lPW6H4`6_E2?PG1*Z01|-Zguo{+8(m} ziudw$qWACqo|3ijiUup=)?#ozdm&#hnM+(hL)!Ks_UoR=l%M5@5FP*4$3Q;*=Xpb1%wlVen+WuwwG-AEBvICWmJ}%{BFv{8(ef`sr%%&XaphrYkzs z1u1Uwug;L;`eq`$w@S$GUr6BAl+-g1RYi7Y7wa~QY_LviFF&d7n-QxfQ79;=VdL>3 zCNlhcS?R)OOI<@Z8Kuse+#}9)Gk*Uqxeak?k@E|53uS|A4qOQMDOC(l?<}XWPyyaZquHL;VWO=~-Twj*{4&lA;KP*|eG~(b@o6VOlp3gSk zu=~sHbqV%3f3 zeK}p8DKYc6^Oy^l-7b%_uAZqC+PlT-_iEl5ml(gko$^!OKB(5NZcAav3wJYDjn^Ub z?`6N6QNo=kanJ4Q%a!MM+8TQFcxEzeTPonypc=>i@cHwA$6luo8&8Yn4LcgPs)U5T zB$jdtv9^lP3a==u+?u&brIwwgrcu z1jJl77g?L@!teO_z~6euo~NsuFTLDV-fH$U?XI<3 z{F=?8!l&x&!W8`6`FWJLcX_&;`g9o)lRAyoIZtoQeJ-;#I%iwUcGZ@QN#QFx?@v*f zzju@Q=1+h8JElwy=}tI2Nw{e8?awAZTp!)e5P!cV1!;mtK2V!d2rr(I`VafkX7xT zyN(*&UZ+?j&YeBmYs>T-fj?yZFZ{E2{`8+AFsx@zpYWvkgz?nGyE=PY6_yWUvn(y&~n;O|$)%};8!u)X?J zm^InbP-o+`mB;R{T{!v7p|g!;J<<9u6}bxfcP8gm?=-ylx%BedpI<&O{HhAvaaGOG zU2kus^8U4J_qjFP)7}5!PK53AfAw$YSHCR?{~9~bW@mQ)`riD~=x-UfUH1H~UHw(t zG#Io6hT_(M2vY;W)uQ}YR(je@TEu@viun`8tq`0QD+&7pagGjSDOpHWi*Ux~r_+LcItX>{Cnl8>n^G}*&mxC(Eo4oXDC;@SZi|jw!dn`^k3|^)c-PVk3Ik5d6#Nk_+$Ay5Bo3K z^Guhl=d3%{_b_W`)Z90B7TAlXU$DCA_n*P{*Y)Z1mz}-r?U!M(ziRQ7gI6BDTD+R) z%JiK##Wt9Wu>EIXI=D%1X`0v?Y2h}NyZQWW$_u?7O?)?SP} z>!cU-;LYT}(+y5??vB_nKcgpJ@ywbYn=h*+TE2wc)#ZO=E*IUt?bERi2FCp}tF(ZHoa?tY$7&zhu79)r@7rfPrWQNfRIaoMTAIU~sq%{}_(67W*52OtPQOCd zZ7GdAdFktY-ihJO8j@}Ld&ImA=T`sPm+^Gpb@@G}dw*W*(z+{pdh)5}`KtdJl)hyh zk~_3%&+a9Ei#uoTZ&lQf%RL{V5-poKX;ae{@vsHYI@FK%GC!|kyA>Lh7IpkMa{Q#}qj_|f&#tfRH}7j7$&FZhUpDFO6!#N`8j&Ga z4{hFg=vpVE`?g0D!c69||7dTptKkjVu_c}7;^fS?eqFll4Cg-05YpRmOt^0Mp$?CU zYOGsd@)|kZe6~fU<;UkISAx^}3cHt`7uzFkwl8{e`KHA0yIWXKg@~N$&ab={s$zae zr*)~S>VX^D8uxzuyte1kY`#Lj+4{14-|A28Iyvj{kIx_9ZPS)>c(QEP3GvLrADx9W z-t9fArOFYhx@azIllgwDt3FA$jZe?ASae^v%%r@pKdmfoj`OQED|+YD)gHZ_t;ZL8 zFXR5PC9gdluQhFdGB+f%G<90U&Wv}#3!SDGPCFyvv-0}=2-{|_gX}e2L?>~S4@bY%qf(QHTc7NXgH0Y|frsSPDwH%_X zM;Yx-XZ=o!o>={N-ktO(MUPL{Zkw_3x( zG2z}6z6Oqr_bWv{@Xwp3f& za)oxDk zLemzucLuua&RuII#kN#6?8H1z%@81j(~3Fy ztXJ>5be&cDUcUPaC$4dNdUx8LpMtt4TYmJso^)5!vE;pnr-!u_%bSYplU)6#IiHmZ z-8;WGDO~T%v*mlm?%myc;PiXXf);kZA4>{ZR!rcOVn1-#WW#5-srl(Ij^t(TuxEX~ zXw#iEVbzn_v!*Ddz(2mZPJWOA(tDEUHa^| zWu5P?TYE(&fBE{SjAKPs_o1w;i(K&4xi>G_O}wFJ@SkDH&(w4FiLHxgXE44y5qKeJ z;sy?uJ}>pIO5QiKe%o_?ST}k3kzMQ7uJqngt>3@;dqMx)^Yd4I^ttr1D(&OJVm;{} zRr>Wh@59cRsjho);9sB8OBT&3YxQ?6)%DS3_#W*XQ}Hp7li~e^_i@_W*Zy*sn=Pxn zdEqbV%U7R#n>kzI_^z1C%VaXAN0)5kXW4eRPw@G%+vQ$iCqD?eH~25OTj~Gu{Ddi+ zcAK63&#?T)u4UKkQ>WC-7wzXtzQ(;O`Oc!Xin%*)DQ=(O-pa6W%fu&wuQ-(U-9Kz~ zZuaqAp_Yyo`_BA1e{>h$`WOEhA|9??srTaHU5}U5GfwfoJ0Vkc!-H?ZJg+|gW#`YT z{J6j3i+$9O`%CKG_J6zopJDmZ`{Jed?00?t`}|t1>@S}^p8pw^zA8I?^V{@4{}}|& zYd=1}!Rq^_^gtb3z1Pq5r={|%c6-It$*km(7QFOZJHx83(`(wK#sB0&Gpy2NedK)d zv?sreYbjy=C;9C1+t|PjCG&na+;rY*7EC$ z3Cvw#Q#_@lZ^X(mP}C*Fx_DKa${)jia%!;N}M;^`*%uIj%Dd4_sv)L-)g;icFttsLup^WNB`5< zq4{i9+Xs77)%IyyYyMfy{#GhdSeHNf=5CAp4fDUPI%NO%^nZr8o3b|iI_@6+P5o!`|oqH^P7DZUA|nO_Q&aJ)l{ML6)lISbM&n5N}b}Du}${+ zeNHw-d@y zYp027MO|vUpUBC7uJlkH+qI>}8 z7TNymeo4cl$Nw2PuN)7_bLF&K$)c!yY}+LFg{HihN?&DjtbE$H_V1Lkdvi8kk#3Kz zs-N;uGNk^8#W$rh5))?b+M+x?P%!=Ok$|-`Iis9T?Z{E&V(C*gO)bxEo>vuSsi~iJ ze&(ms)1vFXNp0({{Zz8UEasR`_F<(;%_L3bySEEBt=DZAx#?Bnpd!G&Ht=uoIxX!L z_b>c>&FM8~W?_=$e}=hbHx&gA{61CExMBX8z&p%eR~@-+chdamYMpOCbBh6l&Ek$>FpoP8oRGdP6$2tWYLQ&mhUv! zCOm!}5x}UZ(hzrT&wS-7dU~00(M&0)dycb?w4RQVDVcCH zDBz`sl$E-tU8&!T-Yw^}?}Tq`-8pknZr^9?M|ztJoY%<~IM*{TsI_ld+hG64FtmT` zX0y}(&iZNJ{avSaQ`~3T*M84k$s9o{w$&9&c|N{ZY&h+x>3_b1QQ`Fq^G9oQSG!du za;|vtXn$B*;*HK7_oilaJ^tSR)9z7j|F+As-^y3$Ols{dFFm1>|M7y!yBBTqX1w~f z`}2?Z6Ws+ntT|GIm5#f3uDSiNJw)F5G{5-dtt&m9f@Cf-yr>Ac_dVclWXAEZDc{5X zGw7fAv-N&nkI$jCYrT|gz9<@9a8PmzH@vb^`~E$t`^_&m)s^_ZY590`&7?1XC(3po zJ#>*@vOBl_?u9oeIg2}_qii4WaoL-^uCukdbjz!=Ah@{bOZ>zQ+YHTaz7NvvJK>YR zO=an|hitQW7IHDL-wpe*IIdHvojwsNS{X z+kb{XXY;4+)8D&m?)y9GZ(fFfT^oNdq`1@EvnOK7*~yCE#B;K@Y!?fe^lZzs&VS#2 zynp_3*P68#FE+aAc~(u$T6lp#uZcM^WxH+Zv>ky<7q(A3bvn`O@x1`~tIaRBR`LG& z6|yu{U6nOge8sunv!{uzH%z{{w0N$hU{HmkX6Zc6%1o6hleT83{N$AP+Ao@}9KPCn z>-Gmfw5LlLt*I#7dN8YJdzukK{seS!~&<4hzAFWnx4P2HFKHRv=_|}^5 z(brhsRQvAznYZZO)RjC7R(pyZ|1*@n{E;8^^J;48&VBm&;lJxY{%1((DHfZnckJlL*CD?TD?S$#VrKdF&Gc-Z z;P)WEw#iRp{3ou`c$-?3>QyD|eRXD@;QODti$cs3SC&uHd*?Y_L`5~zxmQ7@W&XP* z3;GWT?y}BsJuEVL?~3_ahu*ms?}~|Zxjl6s_r%4&x3K2lOHpiDu)5AE$YOQ&MSB6} z>!rHUo4VDfi;8b9KcAZ7-umiU_tQzaYYy$$E2Y@V-0AtoXf4|X&RhM$r(ab}_Px94 zv`@)d>*(7*X2oo&-fR}_y;LoPLv|;FfOmHAIvs`A&xAH^{G=Wlnd@<#?_E%gS@^1D zN4i9mFYGir%elMtl8XAAx7!uJ-3+3)Q}IgTFW?dvwp~}UOmre?Y7$Ko|jIa{N}%*bv^%y+|=VA zv%SygKh`QzGV{MaQTp%euGo+*S7nTj&*sZtbN-3?-vu{%e=oXsA!yDqJt4&#MKe0~ zIHm|Jn^iEW{g&JJ2Nv_94*Qm6r^a|93Up)U(yd(9<$CPO+_Rd=T?BSQ>1;-~@ZanTC zy=v-L#qi(WaWuv@bV zmtQ=|?fI46Mex%n4*OoGlDNQYE54WRu`dngjOKAq(ym=5k*H#J%TvqhrphEwl}WzR zn-p1@cpZxq^Y-k_X*aUTSW~{tEFxrTk)Gn_?~~@+xa&KWfX;r>yy)p1?EB61D=TQz zFwPMtfr2(ID0nO09dlgic(>7|V>=6_!Yeh@y}sVt)BJV4vR%a4TefwR_(f#OHyy2fS-(a0 zxbj49`#o_HeTM?o?yE^3Xul@3Kq}>URDj^=c2(UaA3X0J>okiJdeCop_D`%`O&*uclL}#I9pJb9_2*yLH?H#hRI_i&%*OXx>>pMc`HM2#dpbievT5D5 zdy%PScUE8B+I@uK(S>zi+_&E@eyAS(s7`n(Zza>xWjnPckCiXqD6et!{f^jgVWyJ~ zez%@tC;QEMMRB`{YUYm#UVfLB%x8b@w!+QJ>*A^vI!HBum)Pp*S<0^(eo4;TYA$+p zTTuIyNkR)+<+&~@$jVE9cG49xiYfZsks>Y=tfZA#&c0!+f!#9QATZZbjrB5 zc^aM&%Q#v4ZPAGtTUK5%Ulx(+w`=X1hLRSI*H>OU2stc`b(W_t!*bC467(zK|Sfn~lZ%eLuiTtc~l-S=aT&N~~(UY4fEd+W~RyY7cI zk6n8t{cvA;Ms9l5N}^eIl$p=-3)VehmZIpPceaw- zOGMz_&)2gKIdyPqaWPDq%4l-xb=Te>hN(Ytf3xoX+dgqC@6N^zFI}QrDmy(?dPO&E zU7{f}cgZ~GXRJ~SB{f&O!PetQK5&>@GVAEJo18x}Q`6`<6}oZt-iLk?P6IZ$BBuOuF}mt>{?Z3NNwcxy2%nBntPb4>quaOO ztJ>kNa}|d9leKpj)y!p6*fQzObk3iJseIZ$1GQ6)&b!F;-MqeRL8?9A&r7b< zd6TR*QN=Xv`vQf?JTAs*Ve+Z#TbJMV3O=4te(vkz@@cQm)tGax*c!H9BFf69hKJ58*+0yzV@E=k&yZpyL< zi?uiM(%iLLQ?_!$O`V^%)1D`9-k9O$*?U|6QtrlYlI=>)ihhb)R!o|r(f26G^U-t$ zIffMzmxo~XIw$gWJFD$(DChB3|(al@F@3qfzp1jnD5Jdv#gvqU7Ov`!Y;yg z&B?>#-WLw$qv4y(yQ`kpy+85h`W$7BW9w_-oz-Kj$`O0=WZHI>+qoY(YA;P& zv|08E>zaj{p3yZy)2<(B%DOUjGpnVio8FJTU2&1AFLO@IhrhQ_7W4c#WAo$75@jOk z)&gp~bz6LWoPG(tlF}0wvQd8!;J>`9J^EtB&gHE7^?#)OW`DWQyWjBQ*C%G#!5-C8 zC)XFXObcs?iS78ab%V;vDbr(e$|i1LniB2k<@iA>C|c0+WcK>dUjq8u`#Rj~xlbDX zv~d0RnCaIieM5uOAsrJ_qE372ti2|aWSv#G-RYa~x(5gl`HzJ@L-= zO_~zxjq-mUEPIuD@8s;S>FXq1{zyxw=`K?J^irtU?2Fo?&WkbJ`jYY2*62DWEcDV~ zjN+6M)i1l~lX*yBQeE5br9X^9+4TK4|FAX7eybDpusHAjx1u{IJPhQfi+N6I3z3Ro z+*%NPLU!Y#ro~UDr}=rlUuAy&^eoN4acA_5tn@EsOKyt@luNT#%`RQ7;^N^oYu9Oq z2fw2E6a*SVgcgV`TB@DurMC7>_oJ@QDu4eoEL{ImcGKJBW3p$SZNFSmR^58Uv0vX{ z+p4N1R;QfirdfNWK5h9}x-XkUN>xEe_F`emlgzzZ@9&i8Ogh|BawtDeE&7AE>dA_I zp_%=OX-`Ew(l{!EohBcR3u~BQ$10~4B(25uc-3al$T=~aGPa*8{~^3_cfQY?h~xh6 zBYoygKeGKZPkw=Xeg=d_!jD7-3~6XutD((T*h zckg!|_^4THcid{dP?)>u?RSbyuQqI1x_6aN$V$hpQ-tO@zgw|j$|r^;uS;D$=Netr z$lYvR+ReD_`P|@xsqt4E?-rbH(tGbbH(^Wdlq=5@U5rGdBeF)~u|Y4(PjkGSV}d7YXYbY)$f;x~^ia+l`JzPTwcUGCg- z&+BtkWsT-n9XFOPag#fyvvkLc#AhmN3!f}K@gmEs(%{yl#dklR5Y2Q>KRQwR`tqvm zop~o_Y)QAfbT_J6r@h1A8YkadyPNN?wQLnU-m)ypd2>sc_ohh=FXN9*=hT$`Q5o`C zEnT`zB$ei|tG*!-2{v8UA7!7GSn!kwU0$Ug&6PWjJy%aR2zJvrLn z=N0XB5TKEKtpFUHv#vWv-z3){E(En>1dPTy%T=cGG!gqph(z z(=y7Iz5j7_+K(?9xn+-ym3-9ZRG9R;D6Co0@{9LH#fs@_JE99Szva9X_emG*nf*Qf z*0HtBayt`qytdtLF*{?Xf0=86#VN__jJGORZW5YXqqs%DRx7h8X{qkUd*6Q)&!UY3rn3g9{%2aCzEs5vd79(uCu=KPOx&g-J+l%TQ3$m8H zEBo=cd!JK}KWqQBJ6-zzA9sG%srAaco9c4AIM2Q5*7PD)#<_*Tj=T+0%IzxK7EM0D zwe8fI$E&JDKkZMRUu_Y+Rx&?k?ZqOSEZ%z}H?~i|w@r*8^(uGCa-kMQ(+(GH-Gta+I8h^{oq}B_aZ9~Zk+9USpKZewG;1et?fOWRT7z5v0L)m z1&dvQH=LTTaD7?I+ zH1*(hS%sCZ+Bv$M_r=aNF_mc5@9KKD@mSc~i<1SXc16X%&{Nwt>rpt{=Z-VS_Me=a zmHSd?R@Fx}i$@PXUG8-I^2%iM5~f8{RG8kVEctrs-ksW``3kY^#xLIoDY+il_&Vyt z>Z3bn3vWBYnHG?GQ*XnvxQd#hvI)&64=pY7JNS83`>xcfhXU`<^X6HjIVHi?;qYdU zxu&kK`H$V6(J@WC=yKV1-=vVVX(`^`irXvM#ik3y#~)jGRM|Z^+T_&A-+@!|X1_nk zZF=TI-Q2I@{2R2F{+RSeJ~er|^v|kur!T3Muf2Gtsdc6L7A`Tr32b+sJiOI+#BB0| z8BW37W$&wgpZXrOt1|b+egFJ2=_wk;`j%`FU#w%EM>_W@U1YTW-WI-gfk#Z+o+eAx zNw(&0TNYiIeOl!@XPr)e+U)F?=bheE&fU*@Jb!x5e1#ncXKQ`Vb$R02FFNC>;BD{O zyekhYW^4ORU(&0QwYW89%kzmxcP)wEH9KY3&g(t*^|wbG{LWo;I%C5|%{QAYr}N#} z{`O+EhPRh;@~BIE-GrTW z6|S4jp6)#v_x7X3VWTM4Z84fpq906|uvX;tQHy#d^EpA~Uso(D=@Y$}c71B9*t@BR zw>~p}syglcHj`an4{8>2RL7sm*y*n?&2P*-?Yk*ttJuLTL+_U9BKJ+q1U4{tUAQ0>_RVYB zE$RHK+mrl)`lclA^**j&DY{?E+0u;d%(Z8?->j}XFZX8q+)U%zgGbClPCB#ae)}S_ z&yn3hc*%*rod=iR{PX%z+HtFT$;x@*Q`26&JP^8?FYRaIgrj>iH+VT;n%&oV&aLlc z(4={JOgB^b9{8KIG-XD=Q?*ZZGe2t|JhSx51Ec!I<~m{TyU*<1&v@;VV9((?-QD*D zKJE6~c6rU#gWf5NCj~Uj^H5>jZ#q@#;gz*sueZ)E=ijk6_1o+hxwE7N!@2A%d)*Uk zCAS9&tG1l1Ja*{dgH4~`&C9&hsP49A-zLLJdxGn}1w2TZ_;#<(uCFuC=nL*lDYsd= zn^UOpM;i;r+QWQrcVs#xFFhXmYEx5v%O;x@v$}7cmC4JN-L?A34$Hm=6@TU&H;MPp zInOC;x;ZsBa(>Dx(|u2sQVgmy)n`d*h1=cN*WDF;UwGBroyJ!+L-KdK^B+k!pHbQ_ zH?wR@)P$>-{xh%|DY`aY7C0sHJ2QxxgOQOXN2GD_=C7-CZ(dYg#> zw#tW?Yi(!U`go+mD3|9U%q|Jv|w(*_QN}G8qW9-e%Gg9tD&0FY}V}) zxKp(*_00*J6JV-6<;?SMMcuo9%-4BR$#Q1iyRWZmyi?NWb8=lmT@?3L!^CrVfE2VCMJD=c{i|4PbSnAL})vJVW{v{iw*H>pB-M##S&Sq8d zB~v#VSxuTOB4>LqF;1*kMY}^W`uFae?Db!EZc3_LebfBqCb!Bk@$>3mUcJ9`^qwJy zfkgi1f^7;0mpUGAS$?el;p3!z<|to|j5iFAwSOdR=w>y4U^WIcqb$_^+pjZoPQ$^d?&evmO6}>yAz> zjBP95wd!?#-F02ZCA!{S9~iGNE%35rT(sn6luEu!v*yJ}SMSN+j!uo=xJ>V2&gQ>& zXFp+$*5jQv;Zc0g(uJukIXxBOL2^wLvbzun;!);qW5 z%W~D52`5>P-R51G;k{<1?g~{+X$Q{_{A*2(_W5Y-FOqFvQ|ozLZ+rLI-D-t5Et&Uy zED?UZ*>YvyCoMj!D=oTPbu_&cU9DyMI&LoABB$Z0a-Fqa_2l}Wy`SQ|C*O_V8S`96 z_ox2qtVjk1JJ4Cz84L^zi~)B)#Tf>M^zFS^pD}0I;VF-|ow;qOoAm9(d8g>r4Ywx= zO5eT1YY^|8<}{02gK?iL^YI4u?qea}4Nf;&Y!}^m{^P#&rQCv>lw~*Ek51#}Ul$Ux zo6V+O(QX6N+@9BKSDtun6TH=AiEKmpu2s2G-XbY)7n|;1TkE?mW&53NdLE($C+F(l zJ^Uegzf^W>YR#OU$62W^8k6k!+tZ`&n%X%ZWt)=S%wxB{l!?v1@bu%j2yyN`iF{R| zd0jg;MKCg$>{ykvVF}+YlS#cy6C7?V-RFE2Ch2ut9M5FzbA9%Jv)6SdeVbVDIGP%W63)l zBb{{=d6#-=`m3_M`6#XK)Vs|mQKF!#|H__AW-@bF#lz-o+^T$UX5SYz*_d*!OPeA~ zGxSVEmR$;&qNy15iSOLCSMAefqjt~lFV!}!S3Xg6JwImM&S0Y(yH9*ibKkRF``5?g z{USy8S220~%$oL7O4-YH;?DN#>sC9oONrRbT=w@G|ILg^x*K`6I=`KEq+CU8_c;@R z5`nE#det2YrRMsyxA9k*^p%Pm)N`gUFVgF^PwaU$w_o-}j>VIrrJn;bpDOIS6|%o$ zsWzv2O7pJnQkNHfYhzDZoDVHt<8*3G)zR|A9de)2w%qBi$y76$G-1-0(ml7P${rG$ zcy`g$8qLoS0?k@B9`n1|_VLP{NB{1*+`ac}rLxX+snQ24+Zw0*mig_iq9QW!Zt7*6Ql){_R zizd5xi>SR_v^(Wwe#G0KJ+m(A>c%ARSRU}|rt``t3!HW;CMwyc{T1}O=$)3= z%zb-H>sM@ly>{MLedUnMh~HgRSHG2nC75y^)zI|LT=Bw5V5!KGsgP)zb~Ch3(==wf zjPSbar>BQ)@M&LJe!}cZlTxL>ubHH{hoQA zD_~O7-9;N`l`dYfbMD?dbss0Ma$R%g`=+)>n+`qMHMhlD@z{mw@)0aA{ibT<%zd}; zPR-uy{ylrqtZgo-x0}o+@6_9NDeTulk4txgrrEss zX+76R$H4EBN%t$WtUXPqr*i*38@utwg-6kv}8Co>+Uc_-9b-s~e{lZ?)Y~c)Rl2l?kn?UsX4xeDdJ5eOE2V zchuC*BVxg{SvM{{i~JWj->Y9=Z7T28qmH>#T(-Nl++wu0%CpXJJNeb>uJophP3`Q{ zjPGo+i768{kJEWnG-r0Yf8yeI=Pe$|L~RS+`ZjmL%bNCH#zn5Wy@L1eRc-ysY`7`) zefqT7uP^3rlCN^UG~0>2&|kFNY2rFAr=J=kA|DkduB}+Qd&5I2|U ztiCB=_B@O7%r^&n&QwIJ%)66fCgFEd<&T{Ix|b_Ig`aBjGd&sIKP5itv2npS^};PN zY3}pY%rn_{{N^a+)t@QTHtBP-LqlaHyR-M3Xs^Ao=WqY>uQ~O^X=45S_uAVJ^k(<1 zyCitKTXw^3jY|yoMO1j_u6Ug?+3k(SiVr1n3!jBqr+XW|>wYBJcv9iu&QtqimT#AQ zrmPj*>78qID$Yyh(Ji4zok4Eber>VIIb9uO+!8(eq-t!hv~1z4B{>m^XHwTKyEDUU z+tRo<2d8wTCmi=#)b}g$qVhH|;l*pSkGd@ni9Xf(YB8VrwYbHP%rdTV^EtFBIaZz& z@SdP-_eEUHG3v3+G)+{ygvu_i+x=DCXy38@M|Rz_ew!*@azAh7 z_p-_Fg(t---d(D&_&-BO^+UJGAFC>)qE(%=R&P7@pJ72{?`pP0Gyp!ow z%c)#G&D=e2_c{A~eA~3Zdz}Ikd+(bUOfE++Z`!%&Ial2KGp&=p&R!{5q}y}fNMy&^ zMdAC8q}fP(oF%lUUN(2rt)SQK9k;HDEHdN#lqEA;&0?YSlI)0Aa>?@AyVKs>v$*%Z zsbaqN-CMQ~P5G4k4+I~yx%9gEA#=Zedz4i4ZgrPT_f3D9ZC%bp%8HZN-G$4_6cFKgB96}(&Z$vxZbD!C@zQb{Du^Dp$RB z%jcuOkMkLH#k~zJ6`jwbv+%wO`irtxC+RqqnX($%eFK5lTENIzd zv!$y&ayf1|s=Qe7YgS*S+7|s(F}aL=+Xl; z9Dgr8&fUfElT(xZ#LCH=b}U?I{q$YthkI+D|KQygJ6n9;(hlKRpZ25^ZAZ2>zm)Pm z;r${a_kvBi;L_~48m^XGx;llkxB0k7|C;;l?5)4r%6Sj<{+tQZOM0BwZ922F=T>y0 z-=^Q$x!z6zCY$C}-@JFlGb^PsV9Dxc$=CkDQ>VF{y>seb(N{LkZKjGR-mH;m(N%5T z77*~bCMKw2tx87Y3kF`lH;?>9<$rP?LUzh*uCX6LD`kd*S`+WC#MjCCifY*8%lKG<}+S94RtR-p+& z6%A8*RTbEl*{lc+Z2o8XRU`GqxrJp)F-T`p z)&3Ia3ekV3?`(g1Lz|6TT#t9x?Txoeb_%+3vlQp=c$}Wl)Uy3E+w_C}y49W^&Z>!D zxpRB@v5cen9DQexD0ufODGNQe3-ENBcKSthR*k4 z#5;PH(w~+*-8fO`!|NALS5>F%y4~q^s*Yi*(X}0g7aTl()CAp#c(hXW;KD6;)o;Ap z@V;#OZ{gfe(o-exX@;{$2Ly>OW#a2#cM<%$Lg!M}%&lRSQ`hd9IyJVeXRl}MlQQZ5 z46`&Rs4#!8-|N|PF$4Tdt`=fz{jHD{(C>{boru}Eps}`GRu4N-ScZ>eRkblvweAyqnMwy!kMkh?sM6QCGGR_ zn&WMF+qvfIL7OQ-UQG_xa+;v#mTAn?GqcrpKm9)a{r96sLvGqsx0$FVnN>8f%}V8P z_+ax=IX&ggq>Q`MdqP5$!vny_e1H$>5Mlc)eAb9Z@4?k$M=f(!ZV&p-=b}EV?p0fd zX24HP6~RxY7u#2zzPwz*cE0vzMU`cn^umkZzw4^M72JAf?Zh{>6FgRYH${+Q(-F2E}vekpvuWZuUeDpYP|1kdf@XDF*%Wi5j zT3i!Y@m*I{FJ>pl!<3rS8n;3>u2*-jkNR!5{D@V}jw#9gw^wcdt^9aO+OoTEibXY6 zyme38lN{)f+9?$C)7Pn4^rn$~MDDUk$EZ7zR-9h$lRSTNvAv#LTyns8x9mOMrtdBH z*M9e&HKD^`X>?qc%TirO4PLV)tvXW$*agZwL`_buJi6NFc-bLiZ{B6PzkYVyTYK%~ z@t(*{Z{KY?{5<-SOpsIP19_)f$h!FR%FAt?y0fO%PHjr@xt%bjGgxNpzG)I#ULo`H zL_Ydm+A?vInF#-xpc&W2UY#j0ka_hwv0iiQ!}6EYA`ZI#o>HBC&NaLL-ji2B0ds4< z)dbB~Jg0fNda`ki#G}BCueVswzZJG-)}_1WMAn_pXl2!0ej}(-gLTX2JcXauj9MR0 zJ6sjye6{sO=qm6P68H{D3g9C3aB)WPp+BJ6cPrQL%fx1fI~(3xxw&B4?$$@o-l#8L z-JiT;4_V2CFjcDRnk*CAs&?bLPeZO?x7?dL3= zRadXbWXrxTy}zn>er&r6XWEIKLWkGfc_*J~@|f?)kB$Imj*3bBoQ{u5Uk1F5oz~qm zN5nFIW7W>6UCqqv13tgL^ZdBa+Z$8d@+OHJNa#A7g{a=hQ=YcF&ua0}MV1;nS{t88 z&3*SVnBSgax!tqMx&4OXBHvd@pQ?MxVrsXQb8_cK zKY7&T@Kh>L+Rnr3Q)bvCoh1t`JwI+dvZ~!-0rH|7^4G8+B?a(u7SPd`gl}LIVf)N{ z@;}2u%X8KCNu>DevezI*y@ z_nF`O(>K4rGEOZrxxC8`?@#ZX~C40fqPz+75`@t{46P%f3rTl{E=h#yTAXw z%a?VWsf*dMyk@t}*7Y)5pGOU3BH?c@1yx9@`PM_D$47qf-`U zN790qELHxf>K$kovUH{U$(4Dhj%nFQWi=7n&_G655`S3>>Di6=ZF|JKVtdJMxos&s zgA`-8ER#&l|JHfEWJ!bYugd!`v_5$5J(ssyW#i)=^PM(lZ*%WcGR*6`&5*riT9EMi z%Ta4ze7v*d?zY0ZElJy=MOK(=d-EO*dGshYapRI)s~?l*PhZ!!r>f4h&tvH>Tf1(Z zWph$*w6>qzzP~MH@~U zGhbc$@~LFbr9Ac4yHT!_Ww(1pf1Is%bT*I0t>E>IM>KwNDIaP-fAH(qOTMme3Lf_P zT>Q4=`oS5--6lI{#BTdC$INta7n>KA!iTD_O_v(mS&opXI%Tgyy|E_@u{@2!~#A%Md{EAA$r$zY> z9AAAnnmc3q&8$w*on0CN(YYH$dNqmyt}m*1Q)eovsik|Va?;7w+l!|>__Vzwn{yzJ1d~a-RTCwkchK;PRtgWd3coCclaX4=RJ!E)u-(B**aO+1vR6&v)zjq}?dd z&2wYeA!O@R=J5ID^W(Foyqt1UHZW6pVeGDt6-8c0CtVht@#_-Lgrz%w{n28mn^zxo z@o8<$iK<^7;HQ3Eta}H?lb?uk||`GvndW zV^MoUZvK>?e{QMgQdjlM$Ca=AXLz&T?(?R&BIkFaJ6?5NTl{LN@FxGyt7fZuO?=cc zy?ob7t#DSqBZVjP6t`@@Qzsd9%HhJN(D3Uui>H>XEL7WAAMYPJs!R%+Kf%83`@$7Pxq(XzoP@6JRE++_IqkITxwEp%xWfZ3#T9z0W^#lp z2$e6~`}2k==cPrLjxAMHzi}-@N`6H+>(Uy>M~)Yz*}pC@E59@8`GmFe>w-PfjJzcJ z4kvD#$$mvu`M~{OSGL`pXH$6m;P2{_>&lO~SWlpg)6-tbZ_kyLCSeuHlh$t(`dPgr#avx)y1LNvIgAR5HbE_o3#Rl> zU|P7l?6ecNOv#bPfS4OMjHK5Y7rLIisIui%jfT8tp}on9n&bZ&zOVJlvtBgQ@VHLN ziNj^PWArEA-Fa7KzpP*L@?Ymt+1R+K@A`ND z9Y6czm-~FIe(wU^}V`LyL8(leo@6t%^?2^%`fAX zExcvssI6Rg=GO^7OQogkncv-KtxR6CNRl)hhSsai903DQ|tFHJecv9P+kfT{8sk7CmvMX=AZ8$$&Zuzl&k9UYW{p#nk-O0B#|4i=c>E(JS zJ#N>173G~`HuZ&&@N@Uy`xbo_KV(pJx^K>seKI0)^M7lVvahIkx>&JsLXz3iCut5F zqw}^W%9UQ<|B*hr@SITESp0+!5 z-&3uthUV6dJ#WfyH(5AMtQd%GN?msxe5l9;pjrGL|Ns1^N)r*o7K7q zub=wOV1DYJpL@g(UeOf)6J@(zHL-o|i@Hb4o>(o9cUD}oZP~Z2O&hkd6mdGJ%zYs? zJE>DSB`a~l4n47|h=_T84ua~`f)>S#lF=e5u?#Em0c3KKK zDnIV*Fmb7x;knem=;PGi@|M$Y?#k6(s(oy&@%kSs+-o|_wI5B?`&<<4Rp!`p>D0MH z6+-N6$Nt5Y>WPP>%Pseww(tBq%lZC$r|xRLqRqPPKZD$VhRz%R?o9e)ZK8ek`rV~> z<+M{Vywi8bmsU$(YG8DTGPqx?^Vch|$};x1%y;c?_1kak zows&wcK;N|n4Qchxoj8sz1T7k*x~H0N6JMQL4ww_-Ov9hzJ0wS*Vv?t6Q9 zyWtV$MXv%+_shrIaJioiO_{#1dCqj>FdbvD=vI^to)|)4&uJ(=msadCkqYc)SDWo2HcP+wj3C(C40 zScb{n50&Mj`;ES{&HZV%Y9OL*_cC{NF8{k@mHA55LbYZ=eRxlMcN-qur7 zWi>OmJ97ucI{nxYd_v`;x_k701}9rbk<3NOlZ;AwUmnu)+OTBVohf&sc37N#71N@s z;hwovQDtfYd$yfz`NmHdwoP}7t111wwQkL2!=CsQ-^ux|dp+vp|1${4Mn!wa`*{U& zO8>0<{Atz8w0<2Szn`||UH9)!Rg%g*#dpLj>_gCn2~)H$MytEpm7kE!KKIpE$7X}4 z^^^0`TqjdEUFo>?Wi9_wuar(+rVm^}{tTg8Cj`~-&Ub#{_S`$g=7ZmC)#ZXSi#Fa; zjZ$E>SJ^jx%JNBl+1|6f+)Wum*H5aMHP>va=;tZvs_HMYbAPP;^P$gyxmpYHN2k2~FSGo^$4m2CdW8$Zao z?9Hzd?Df-J%tr6g(%o9`v+Z8#eoASGWz0})UAc87XShk9qm>Fn4ZrnjjbAgLoRw4h zzV+vl~8VuXM8RabTzkfmQ~i z*?FnETKUpjj=FWVU3+w;f$Qo~l@|3nON|%2KRySo-s!nh_08JTOdGjtZi=-!6y>Pp zx&C`y%oOt4BURD6AVYnUS7r8rPm{E61+OytJSSv*)tB$HUN2pDVYQY1Hq|pcYW}-y zt}L3WtEKs5D$@kE4z7>uS?!iBTpHGWsOajVdLiGHyG?X_Z=ZQBEY5!RsA2Hk$}21j zwuC<3w&drHpBKYsYnyAPT$-Dcyz6GNUvKu##~b1tcIlpYCJ|V$?RTm*r}{}xZcph? zHa{1K?@|*k%rmYjSM)uWKkd6j?hjV4NzXIao$jd6JulC8!Q<(Z8oRB0x?+71-fb1T zlDBsoXH-2FZqCzKsO{WQXmfm(r=x=Q2fK{RF_U>F&byehI>#n=cXiNvqcpoe)2Ccg zc8X%U|IV3?+<=jprxtj8L4ivWwA+*-*q;hotvJV4qazr@mZ*)Wtr3NUk`5HyEMtn)5=cx z<+J5pE;^egc^2nZZ!?u-U8TG8#3bE!yPjCLq?}CH#ctB)u6U;^A=9PUKJZ>K@@kFaP*1et1uI zn!jAsq#yF~U#;@2Tfg$X?~Ivpw6AvSyCbKoJA*S5AF%x>QqKr@wB^s1wfv&L>MzzW zso4Cb^J}H;>YDlewK~5n_2#dgQYDjnY&yHiE7N|V(`)-;bIm*Cvt9EiRqUCNqQbwU z=BL#c`_q>%*DtBCu|Ha1x18nrY zqP8xpZbrP7_*G3=iC1fzSDbM+mfpH=p_)Nh_r*I-vr83z6+PH0^8UDjR??T<#%KG_ zHaC9R?zL;>o5L4vKDp(0mUdfCPTg~&@W`Xw+xPp$?kx{mGF`PMcBkT&NdiKX93PdH z?z(7k^j5l>PvxfLK8x0t+uP3n_596$hRbX6mlp+2HSCVb?VixH&dAWdW_EF5s^fN_ ze_Fvg%d0i>v#%dwRn}M~xiNM2wCgYTzbN{*qSTsY&lj;g*5s4HW^dLlkI{dTDwv|E z7kwx5%C;Xt7p63LwIA|`xId-eH0)~NHk+bIQ`4=1mvZiUwhG^9tekUAE?aZ^M)PIU zUV5{XKRjJHllxI!jfB$$jxUeOUx)2aIy2AumC3g!kL*s~yr+5DK7%LP?CiSzX*YBC z{e2&_o6q+4JEz(uHN2|c)=`&im|t&xoVJqP@8lPZt;u-Z_6^T%{+5_+n%LUl{{j$3UJqPJY2uaMqVa2Q+@9YcbTUed#y6=cz#=V zBt1Ge^6c)_lRxfWx?3jg-aBJ{-e#q&=i6>N>fVV@JhIH{uZMb~^`){B_4sP#zc!N# z3-|uqf8j~w{g8t0tCJUOSbP1_=NU03+iTo++e{R!`*Q2Vrv~v4OXffP^yO;k){R>X zPg>r3veW-{zmNQ@<6FeMdX}uZJtwI+cbfR$Q|^DBOxzJ z@2@*t^o&x9Nc(s;?CtD(y``6Le&^hl6mDj;&9Hlm_LJ+I3g-CVPrG}w%&A-3=cvlc zwt$;5llmWJPvE?NZ^lWborS5hv(|>){!rYvqBMN@^?6-sJ7W9QeQqzky?XMdik?L( zZHKRISDv!)op-LL{}G1=i^MqY%T})1w(^f};p0gsB~AZs{cLqi`MP}C&b>KDY!?>E zEsf2&9iG@dKIgT^Ce7$h*%g005B6&$zcJ~~0MfR)TqoTS(rfPqBs~~@1R>!8FlQT_k-Yg6WpEc#_ zE#JN$ty-7gY1L_SRGE}4op7^oYir9Ik>iMdGcs^{Q1tOd-{$X{w6-TtpC)F zotfnud2<%93w~J1pnl?h?_BMA-O8nFn~$3sYaKP59K76*uKjuaSBTkm zU7lQvUGMHcNbIcHZd!EsUd$$`t!#T=d#t&wTLH=O=JEY z(-dF9oiFc{Dx`3#@_M^y4WmCR^ULR%(jUDaOl8|zef>qw<%(lo_h)r(yzpb^iAkH4 zl+0u=_f~!k&N%PpJ2lsP|1;-P>%(?VT<7C3Po?_m$J~+sdMXsZp}qiVpb2={!1-ap2=2hHhtk~@9r$-zBn&THFZ z)3v8<&iLLodHq=I`_ZFDlkcToZB;M{e!OjJ<;|ZL!)7UE1)f}~ePb@S+UAI5Hy0eL zELs@-_sNM#5%SXgi<_oQyZTCKo)y>Ei@&bi3JHo>I?;1qY#qzAPp4~_zTo^F*m+hd zeUIG?v15-EIUX!wtv#~Rk1tF4iRr6amscL`UBUiYw|DP7b7Acw-F<()9(=A+ z&J}R$b|MF-f~abO(DV7z8_b`)TlG@6chOVL=#bov$KQngwo2Jp-^%pm@#-gUI@VjQ zc-vd}w$N#kNX?}6fsdm;2d&hvoabukHEYM89?rV+M%TVJ)j3RA+4*Y5l}CqHJ3q|e zjJUS5HCIzP`TX38fty33mP%#^z75Hh+MO)?PF(xeI>RKNXQ#zJT50#IZi~)Q-g%TW z$m_hw3)#l!*N;YBE=zkjNz-X<`Qn(_Ev!2$w#9sM)HP2rd45ZAxmVC9(G4O~RrI5@ zq#0f(JBNy&%Go#l%_+lGZ?ZRew`eNe&D*wT`QqD391kBg&3kp~%GMRkPk7ff?za-< z{pR}d=;|pu(`K#80?%tre&cT__L?uIg>~DRY16h$eCWx|(!5`;Y0Hs2DNA;<)!NFh z(%f>2xB6l{Ypbc^wF53GQ#E6p_B6g?l&iI=;yS=WKHlP9`oF{T{Sj$gBK8zw}KO-WS)6k50-?D}MT7%BDL~i+`T~ z&ybN-(6_wQao&oOL$CR=xtnI^-i&>A@y<+{{Mwi|6BO%r*GT& z?kAEqKd*H&$Ii}CkNwA!@`Arr`PdhRo1fRu_0F9d&=Z}Rcj_zXOgW@{$F7>)ue|tq z^a3NdscOP6C-XV4v1#72AH zE4sP{83s(YF6TURxa{7U;}a#nvRa)Aa}sl381Thv>4ZnKuUvZu-DyqsJT!P|im~DP z`PbIU&h5&7P`mR@>7>Uu<&3`jE1%yUWu!huHvRrQ#qMTL1&ixBD-@4TU|@{C6cRG= zqf&jDUEU$ncwjutlMdG^)YckHRP&%E7Ia;8C2 z!+Y%ljhELZ-N>Ky%`3!~<8HN__|%u&ka{0!Of)^F*i|^IUzSqNF`|ww2 zg!y0VLwdCyXLBulmwtZI-_OfACR3*Fdi9?{OWNyNJwG74vW2 z(&6siEmOWicwOM_D8*R$7_&!SB^6vDd9uf5tDpb6Du5*?|ETw+AiM0c7mfWT=Bs9g z*~+_%)$zpOWxLjhr7M%Z_Yv(=_|3TPD|hf8pJAW#^Ve zJ&(N7WA|}#w6p&vpZ=2Ecegra4rclpE&QbAH)Zls&%mkjLH$OV7FA2a*X$L0Rp#8o zv+rWpj=vjoZGNlYi*)`Jm0o*YqHk&Yd?$<5lV&?LJSwY^>eYQ0`Lrc&+NrJ6PM4i{ zcTvYox}@{F#Zj?ZQtoVWz~6w;mwZ^E}OQKTPHP3=T2&@z@B-l({`vaotVxny4#~kCFWgW z(u7;FLDKK6KF!Km8{^-&c0!3(O!<;9%dl3>a;@w4W~N7+vEK9ho6Q%sHRfh-zAHTL z{oJd2L^pS#2iMc1p1G;o*O}LIeOa-rd(FhDDnCtcvT4>Ib=`1(LG{W#(KmM;X1$`b zQ}kZ!b`DQfnH`guwye!~?IM)b*)wHb_uA_Vf0o=i^|$}gj3+BTu8Di2s`a&`=|E3h zhUS*t3Oi=}nN}&XRO=@5<%BCQ?wjcX;+sp@yAtPVc#gdnd+Orhi{ZFz4m;|{y1FNai4rSAP)*l{YN z@(G{Tt=UfPhiZP9N=2(aZ7R7rFWt3BW3Kv^ujy~CjTXi{Ih%7N^qO@3w#$rt+Fl|b z3a_s8*Abi0w1h>~>%*h0lD8>3E6*O7d^xWF)T=P&8Sy!5J*qzUpV?|EyT2;UCg4ne z<$H_YeJ?dQ-za-&dpQQOSBrREI62v6QjN9AbiN5+#je)wNG|@kb*tUYtfHTaY~HGD z%o)#C^6n5nc%|?YcUHKrfSKDWlTD{pqPF}!!tL(AS^Mv%yXBj1#Lbp^TV|#aJ5|xU zuE0qw(mUbveQ|;Eb#}EivYL~gi@e-lnYE?FS*v?)vc<8`RHIoZQdb%K+|)07$-gIn z-9+)gt6RCrlWHv7*ZR$UIi)ge+V%X-bw_t8UU_rwtgzDYkH_wAJy&_+<1>#PN4rk< zD>N)?npeoY!>e7S_G#rKzP^R7n^LCPx8_0DmBYaRl9ZQFUxd(LjtvkR{5&|hc#wsmPDpQ5Xl%p@$`!;3lB{xi&YTE=59HA(5Qx%xw|*mE^*EOz?3Tg?7U)ipf5yiv+) z%c7|wZ-Tw^lWJ}p(>(df`M8zw6`xJDhi)ftK3wLyDRaAr_x6k&X6=-+*}?0U>aCbi zBCU1*bhRj#?qr>fUE9*~m-`%h*%m%EF0i1z_PCLCZEwK!qa5y)J5wJ#;;Jkc+HsQk z5kpNh`?0ATt``T!n5ObAxDbG}Pz*m4a@xw5;Mte`+)16WB>9hQs-;dT#yiqgh_R89v z9kSO~of4T8{8?dcPF1*ByZ9z6o4@bQch~MuPu{3+QKs3I8lZ2m*ll)U&0&9m+wb=X zf8_HDznf`w^Zv@8v%ddPm-gJ&KlPXQRhwT){gXO=)YkG=i>IHlU8!Vs^`y&H#;O-( zndt|t7N?#p60ynE{652+=~Sgf$EC$PC9f{2xiZCODdT6&t3I*DHXDkYy(h1JXtA|@ z`L>)xqQ6aFin;grY`i<2DWZ&L_TtH+yqTRhojbp86TS0xo|T8!wtA^eA<34OTP|hZ z`ud+?@wW@l%%?qxRex1%>vdeG?2g*?%+AVQvj@}E4;9^e89cY+ew}*>U&dS3Tt9(z zRwmD8l#6PF-utv&ke7tk$DwpdoKYOK{1-rd`B)+HI zjtJ&&wRy>zvukPlB^k~8!uzd6b(d$XN!H0S%I^N-yY=F2KSgel?Xg9#Lnc`1PdJd3 zl)8MwpVqwvP7;|}7YaWAld^cD-|={Zqn_QPRZnyE-^DMSF8_+p=I`d^Gyf@Pz3jd| z$LgTat>A~A=o4mWYq(%JOS{A$uoO-!-;*l!mDK|dm zt+~BklIKg*f)o7(4QVZ!o=rOg?j>&jVpg#*Z>dY~1V-f(tBzi_GIl*B((Uf|X4<`} z&nD|i+EsQ=NuBZZ-f^jyS-Z_`yQ?or=x%xaI(=d$SKy=ak1Q))8d$w4%^u)B{rUkI~#Rkk#~D(T8MP8uWPWPzlXn?V`;Xu-wDo);%i_1L@-pY=xr7`FObg&$n~{2H(Ysr@DVYo( z-M$8`x;W>~JWJizd46SQyzPCed?zGNk9jS<_xx%7YvpS{zWHwAaLsk##?pI-dUdCEw1;>h+g~b+E$Cr zy2}MVyLoC~cyzm^agorvIMvI!Q@ZCQOT3#}Rcrr*}T_Wk3(MK|6~ zc;wgdXim?W7aNpqWiNzy9T(m7TI=~o6{`*V6+@ndIQh$|nr-*}m(KQDFIm{?RqUt# z3|ao%0ksBeb^pxXe%vXtXM$Z+=9c`AcZ2+HUhJ|`nEd4J_CKws--m9#_NIK@ocN92 zi??m{+m>Q}OzHTn=#D8%f1IB#5cIgZ)Mi%kglCRk?OnU8H_tO%;r7<{hechXFxQq+ zzsJH%J6466OFd(e*3|Z8lTgTnN`^&jml*A~x`%JPD6Y<*J$cQ&O@Hdr<9*_1Ydd$+Tzp^pUxU|P zR+IaqbY_&UI(GLKPj^%Fj-y4lT2!A&cK=O2_~@pFZmY`oekGHv%FGFu1E*Qtz5gh1 zQ)O7s^M&7*ulYV(MKa==d)<7!%UacePpkJFgFk|jpqtt>x|mcugID%=*`*5GOfKh6`Y7it_91aY+mzQUv@<K_g00fb)Ak`sIfY0+dehKKh@T{G)Dp{_eE9b|;PM)+MQ)(fjoE+kb|f zJ-4q{@3rN-U6|V@>)a{yc+Vy0&ftTd+{I1X_P=Kg+j868s%6n)-ETf?EvG*ff3xdt z#(#!4jb#5r?ul%TJ-zR!Dp6CnJ!&F;R(YN&ZReVHC=7r*S;>2 zUD{K{7d-t@h3a|6y2=CV&x=7~9Cxax zv+U0F3S0Wl-S*7-y}BD?jAFcb4(U$cU8UFG?dGW$bJ4(+k59@e)>}))kzwW932P_r z&5|uM?V9ZsRQgW0wrK0EPxBVWR$WdyU)cH0`sp#77Z>fW=9;SsJ#=`Zr)YabY|oNO z7KLsH?X*&NZ<;Z?r)JyS#l?S(Hk|x+>hz|QmA-pV`*d0wCEuBDx>@qr_55j93fes% zIc>WoxcGS{^Oc~#tF@Q@RZ|(A9tKwcO~P4P4Kd7F=eLbyl=#Q`_1;B zLCf~x>up|7+!S0AeZQr+q)v}2ODN7;p}Ftjk02(SHv0;@VZTquJveMcp@E7GD{;cA*lnw~;`$H`v;A zF|Vt(ma%;Eis9@h%MEMWoLE*AMsa^%!o2aM)`u<3Pdz=ful@LG`l95o9nX){w_&cg zuU2=L{7mg%(KY?*SNk<*9)?*zQx{!vNjWxWb5LxjmR8fO()}S*R)1jsy1x5tQ{aiq z?k{E(9}4i4ao71))LywWX5r&&N4FN_-7bvQHTpN{^~0&vI~Cq6`K)PYlfxL;dh%)D z^kTbp0)6Zn#y|H@Pl!Bb@^a>+TdLFUa>nmxic7uw;{7f&`zuYh+Hd3Ap1pj$-tX$E z2Y>#>I-gWuJC!~5L%`$*^VN3P9`y-j05{;c#iXYnJF>*9C{42ONzbVq#lZK5ccTOs zZ&;!^UAmC{Ny&QUYfG)PHD0}UU-R8=&sV;;QqRkJnWV#h_(m^qY&f1~qOo?W$d*fG zemixuR9#lA^ir9Wad#qzhL&sIf*qhO3HKjVuD!l|W{k|C({kFM6UwW7PdQDw_|9b6 zd4;JezjR)^R9=4>G}l_&Li4z{i70C;WA5RqiA4u>w|iWZR-J2ZJ(=&Q@5^g3F)wm< z-ORmWu&#DXvD1`E>sS*sJ_g+NDhUb*&bk@2LJu?=Mqomom^EqOw(5=r3=_)uIu=;V zyZ>Eh_41;^jvalG@6C>f-zmFUl6`N{+WJQq6+OZqwW`dYxhnOz%&8@%4_+64`OgqI zH_ZO;vb)u7Pi`7)^kM7_o~^6plsjq4wo8su?wYE~*XtbDrCv-93cjDbSiQScQgPwc zdfVq`cj^Zf*KBR%`#!<5Na0J@P2SB9-sEy#u=<&wwl`;Qe&8%_k!N4l-R;+QDa~Gc z>TJ<85vGPYSG&Ibsjp5tYkACc-z()ci{n>Fty~uPq^abV!URW!UcrEvDMy#R*3x=* zY@2tLb@a2(IV(NTS}QJc^HdSa^4yu4$joL_EDa9GN6`N5~t`W~e^?wNTzHZNJosTI_Jf$_D&t>_J( z_1#N-JTh}FnwP>>x;f0MUVN0(c!qIHe7(W_?@1Nkcc-`go3mHbB`Z99$3(Ug7qcfj z@;6OySG)2!RWbRM`D-sO&kskmYkp6@_dc&xDR|d?w&(@2h723zLWYIdme&1+4 z|1)OKazDjPndF$LvtkFw*B=gdeT`%mO z>!Qaqjm|#gU86X4$Kkw6uX|D#6n?!ZvR|?KF=!vgx}ZMo&M)ChOXM_%C+D>Q8MvHSy&aqshK@{O9J~&Cl2w`SyFLZ_mZ9N4YxN z?kzfbE5vKw#hafOZ{VN5{H)kFpLvS}F00GWUw`6Ruw;?V@f#Hi7Pq^cn(W>kympQ3 zy_*gNEV!Mh@=4YEQYZ5T^^Yr?vWxb{xmtI>J-F=X)A%*!(xt1uzWN8mRG}XQQ8rh>iep;dznUwZEs%+m$}~>h@PmGwZXph>q-=sW+x;hc;eIH29Hw^SbI< z-&MvLD*qWGI4;=LWK4ekah2N-_q0-$E6evU`l=WB{zKlUP0@EUizYJ3ZZa`{CwTc- z^g32qi^fk}7ui!Pm@hxA_PcrN;|>kiPq#~Nd@k8wIU%KN_N?gNPAb{TK@l$PLha8) zCLh(Cn!yyZaP!_m_A3`xm-!S`78E|bfA@pQ-Nf#)cQ^9P!!F4dUAyeRLRbCAgGmoA z*oRj2%R7gjtd3mn_V}%v-TuaNuZ_1*FQ-n=oGQh8&g5o}#b+N2nc&==w}ZAm;fu2R zyxvqhEiChtuG0Oo*Lvx8Ue}p|!@h}_Oq-R-tx)SVh4cQ)^_SLsGAnjod{lJbQ=^if z+by+c7fgB6e#bhvZ^cUYpR*R1pS&uuVwKyiyK|mSo1K4C?Dg$8M=vrms7z^oebgn_ z{zTWN$zBuZY)GE7)iW=nQ{~Ov$)TpUCa-Rk@|%=wyCO1qy%XP2=J1Vq#j7J9pIx~; z@2xI3tCrUyBd5l%EQO!6{-yNgf0;2o|H!&K`rE75WK4J`Jg2flL!c5MX8Ban);bjL1BhO4*ZA?f2_~-+4}Yb+`1Y z=-O=SpecSQ)t_Z8>r`1O7qHcA%UX6XPZs%w3srV+efGL`>ig}L@4c#HoaTgmv1_Pe z{J}Nt_LDV=GFgjOd@b7-`+mKW>%9kGmTsG;@oYV(yn`+Kr^UIST)^_(Qr;JyY}GUR zVRh)zetf0HZ8B?F%8nS-yXm%t^S+n4v`*czPtj&dT@?f4pH;X5IR#ppZ-t`mZ=2xmM^*r8eGb3?&t5*&z_bG1{Y4gE3kNxvOH7p!6kpM{9vxSzw+kd+>S#Adu>mY zvQn_(o~27f`2x7DMnPsFuKmT*C1Ut(zxi9IYu53zzb)8!>(BkItbNy?{av9`w%`1% oWAfIY`?I)Z*Ps0z5b?Gy|5nrS?9X*q#6}g
Articles are
served with
Articles are...
Search is powered
by
Search is powered...
Merges to prod
trigger CI
Merges to prod...
If article is good,
it gets merged
to prod
If article is good,...
Large assets
like images are
stored here
Large assets...
Forgejo
Compiles articles to HTML
Compiles articles to HTML
Woodpecker CI
Writers, editors, etc.
Write...
Articles are
statically
compressed
Articles are...
Articles are registered
and updated with
Articles are registered...
Pull requests are opened on
Pull requests are opened on

Djot

Articles are written in
Djot...
Uses git for incremental
rendering, and author
annotations
Uses git for incremental...
GitNGINXBrotli
Compressed articles
are written back to
server
Compressed articles...
MeilisearchGit LFS \ No newline at end of file diff --git a/src/how_to_run_a_journal.dj b/src/how_to_run_a_journal.dj deleted file mode 100644 index 14a12ae..0000000 --- a/src/how_to_run_a_journal.dj +++ /dev/null @@ -1,96 +0,0 @@ -# Web-dev, and the Power of Simplicity. - -Hi! I'm Isaac Mills, I'm the guy managing the infrastructure behind Compute! In this article, I'd like to talk about just that: the infra behind this media outlet, how it all works, and why it is the way it is. - -## Plain text - -Plain text is as simple as it gets, yet it can be an extremely powerful tool. It's capable of being anything, and can also be transmuted into anything. Its infinite extensibility makes it a formidable tool that every developer should have in their arsenal. For our case, we use a lot of plain text. In fact, the article you're reading right now is written in plain text, _not with some web UI_. A while back, I found a markup language called [djot](https://djot.net). It was created by the same person who created CommonMark, a flavor of markdown, to be easier to parse and more featureful. Below is some example djot - -```djot -# Heading - -paragraph - -*bold* _italic_ _*bold italic*_ {-strikethorugh-} {+underline+} - -- list -- list - -1. list -2. list -3. list -``` - -The benefit of using djot is that it compiles directly to HTML, thus the jorunalists who have joined Compute don't need to learn HTML to write articles. They also don't need to learn a clunky slow website editor like Wix or Squarespace. - -This is another superpower of plain text, if we used Wix for our website, our journalists would need to learn how to use the Wix UI, and how to write articles _for_ that UI. If we needed to change our tooling at any time, they would need to re-learn everything for _that_ tool. Not only that, but we would need to port the entire website (_every_ article), to use that new tooling. This is not so with plain text, if things change in the pipeline, or even if you're just joining our publication, there's no need to re-learn how to write text. At worst, you just need to convert the plain text to another format of plain text (djot to HTML for example). All our journalists need to know how to do is write their articles in djot, and submit it to the team via the pipeline - -## The Pipeline - -![A flowchart of the pipeline](assets/the_pipeline.svg) - -Pictured above is the full pipeline that articles go through in order to reach you readers at home, it goes like this - -1. Articles are written by our journalists in a plain text format (djot in our case) -2. Once an article is done, the journalist who wrote the article opens a pull request on our git repository with their new article and associated assets -3. The article can be reviewed by the team and edits can be made by them. -4. Once the article has been edited, the pull request gets merged into the main branch of our git repository, which is where the articles you see live -5. From there, the article goes through CI and gets deployed (we'll get into that in more detail later) - -Basically, this is just the workflow you would use for code, but adapted for journalism. In other words, no learning curve for our journalists! And if they do need to learn it, then this is information that they *should* know _anyway_. The workflow you see above has been in the making since git was created in 2005, with the sole purpose of efficiently moving code from development, into production. In the places where this workflow is used, more overhead in the pipeline means time, and time means money. Thus the workflow used in those places should be as simple as possible to reduce overhead, and I see it no differently for our publication. If this workflow has worked for nearly 2 decades for a pathologically huge project like the Linux kernel (which git was tailor-made to handle), the better. - -## CI - -Consider the following: If I'm accepting untrusted code from the public into my open source project, and I need that code to be production ready, how can I ensure that the code I accept _is_ actually production ready. The answer is with _continuous integration_, or _CI_. The idea is that every piece of code submitted to an open source project would undergo automated testing, linting, and checking to ensure that nothing will break upon merging the code into the production code base. For a project like [`egui`](https://lib.rs/crates/egui), their CI pipeline contains 19 checks. - -Their pipeline checks if the library with your new code compiles to every platform it's compatible with, with every feature enabled. It also makes sure that your code is well-formatted, contains no conflicts of license, uses no libraries banned by the project, and contains no security advisories. The _only_ way this many checks can be done on every git commit, is through CI, GitHub Actions in egui's case. - -The way I've described CI so far has probably made it seem like the least simple thing you could add to your project, but CI is actually _quite_ simple, and it's an excellent example of how capable of a tool you can make by just building simple, on top of simple, on top of simple. Really, CI is just shell scripting with extra steps. Despite it's inherent simplicity, CI can serve not only as a means to filter bugs out of pull requests, but it can also be a simple way to communicate to open source developers _what a project wants_ out of their code. Instead of having to read a big `CONTRIBUTORS.md` file to get an idea of that, developers can know that their code is good quality if it just passes CI. - -Fortunately, the level of CI I've described above isn't required for journalism. Our CI simply compiles our journalists' unreviewed articles, and serves them on an un-indexed (not visible on production) web page so that they and the team can preview their work before merging it. Our CI is also responsible for indexing and publishing finished articles onto our production website. - -## Deployment - -Deployment is the most complex part of our pipeline; getting the written, production ready articles, onto the website _you_ are reading this on. As I said earlier in the article, we use CI to compile and index finished articles. The CI tool we use is called [Woodpecker CI](https://woodpecker-ci.org/), a self-hosted docker-based CI tool. Self-hosted basically means that we can run the CI tool on the same server we use to serve our website, making deployment to there as easy as moving the generated files into the directory that our web server is serving (NGINX in our case). What's important to know is that when a pull request is opened on this journal's git repository, and when a pull request is merged into production, Woodpecker CI will run a custom program that I wrote in Rust to... - -- Compile djot articles to HTML -- Minify and compress compiled HTML -- Index articles with our search engine - -Because our CI tool is running this code, we can know which articles need compilation, who wrote those articles, and if any articles need to be deleted. Our CI tools will put our code in the working directory of our git repo. And via environment variables, the CI tool will tell us which files have changed, how the pipeline was triggered (via pull request, code push, etc.), as well as which git branch production resides in, and which branch our code is currently in. Our code can then use this information to... - -- Stat the changed files, which is how we know which files need to be compiled, and which files have been deleted -- Run a blame on new articles, which is how we figure out who wrote them -- See if we have changed the production branch, and index new articles if so - -Everything I've described that the program can do so far can be done in just \~400 lines of Rust. This is the effect of buidling simple on top of simple, _and making an effort to retain simplicity_ by making the most out of the simple building blocks. (P.S: Our Rust code now also generates a title card image for each article, so they look better on platforms like Twitter and Discord. By using the same stradegy, I only needed to add \~230 lines to our Rust code) - -[![Google cosplay is not business-critical](assets/google_cosplay.jpg)](https://twitter.com/garybernhardt/status/1344341213575483399) - -My Rust code makes heavy use of git, a very simple yet amazing tool for adding functionality to plain text. - -- It allows us to separate the WIP and the finished articles -- It allows us to keep an accurate and automated reference of who wrote and edited each article -- It allows a copy of the entire publication to be stored in many different places as backups. -- It allows us to easily sync new articles and changes to any git-compatible software forge of our choice (we use [forgejo](https://forgejo.org/)) - -By taking advantage of the vast functionality that a simple tool like git gives us, our code can stay lean, while also being very mean. Speaking of staying lean... - -## Webpages (and staying based) - -![An image of the giga-chad](assets/giga_chad.jpg) - -There is no better example of the cons of complexity than the modern web. Most webpages are not only bloated with ads, cookie banners, autoplaying BS, popups and the like; but they are also inundated with copious amounts of JavaScript. We only use JavaScript in 2 places - -1. On our homepage to power the search bar and display articles -2. Our web design tool, Webflow, bundles a small amount of JavaScript in every page (more on that later) - -Other than that, the actual article pages, such as this one, depend on nothing but the JavaScript that Webflow bundles in. And for our homepage, it's built and optimized so it can be served statically with it's _one_ dependency. Basically, I wanted to make our website as [suckless](https://suckless.org/philosophy/) (as lightweight, and as free from bloat) as possible. I say _I_ wanted to because our founder wanted to use Wix originally, yuck. - -Instead of _that_, I used [Webflow](https://webflow.com/) to design our webpages. For a one-time fee of $24, you can have access to the Webflow editor for 1 month, and then export your web pages to HTML/CSS/JS. Webflow is very different from your average Wix/Squarespace, those editors are designed for non-programmers who don't know and don't want to know HTML or CSS. Webflow is an editor for _developers_ that know what they're doing. It gives you the full power of HTML and CSS in a responsive, visual editor; making it an incredibly flexible tool capable of generating very based and performant webpages. Unlike the latter tools which generate bloated and obfuscated garbage. - -In just HTML, CSS, and JS: The homepage of this journal compressed is around 152.42 KB large, whereas our old Wix website's homepage compressed is around 861.9 KB large. That's nearly a 6x size difference. That's the effect of building your website in a UI that attempts to match up to the flexibility of HTML and CSS... without actually exposing you to the HTML and CSS. This is where Webflow thrives, as it is literally just a simple graphical editor _for_ HTML and CSS. It's another excellent example of what building simple around simple can do! - -## In conclusion - -Computers have an inconcievable amount of potential, but they're only as smart as their programmer. When you're building something with a computer, it's often much better to do more with less, than less with more. Don't use 17 different JavaScript frameworks with your hypervisor GPU WEB2.0 interface-driven scripting framework to drive your map/reduce-aware proxy-oriented software API. Just start simple, build simple, and if you need complexity, build it with more simple. The point I'm trying to make here is that bloat is your enemy, and it's often better for you, your team, and your users to just KISS (Keep it simple, stupid!) From 3eef87e5c48d67413f0bbe90be4533cda37783a5 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Tue, 23 Apr 2024 22:45:33 -0400 Subject: [PATCH 33/42] Re-add articles to test webp conversion --- assets/giga_chad.jpg | Bin 0 -> 9885 bytes assets/google_cosplay.jpg | Bin 0 -> 59430 bytes assets/the_pipeline.svg | 1 + src/how_to_run_a_journal.dj | 96 ++++++++++++++++++++++++++++++++++++ templates/article.html | 8 +-- 5 files changed, 101 insertions(+), 4 deletions(-) create mode 100644 assets/giga_chad.jpg create mode 100644 assets/google_cosplay.jpg create mode 100644 assets/the_pipeline.svg create mode 100644 src/how_to_run_a_journal.dj diff --git a/assets/giga_chad.jpg b/assets/giga_chad.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7150f96a62943b91c98f0a2eca953a7dd7982df0 GIT binary patch literal 9885 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 z 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 oWAfIY`?I)Z*Ps0z5b?Gy|5nrS?9X*q#6}g
Articles are
served with
Articles are...
Search is powered
by
Search is powered...
Merges to prod
trigger CI
Merges to prod...
If article is good,
it gets merged
to prod
If article is good,...
Large assets
like images are
stored here
Large assets...
Forgejo
Compiles articles to HTML
Compiles articles to HTML
Woodpecker CI
Writers, editors, etc.
Write...
Articles are
statically
compressed
Articles are...
Articles are registered
and updated with
Articles are registered...
Pull requests are opened on
Pull requests are opened on

Djot

Articles are written in
Djot...
Uses git for incremental
rendering, and author
annotations
Uses git for incremental...
GitNGINXBrotli
Compressed articles
are written back to
server
Compressed articles...
MeilisearchGit LFS \ No newline at end of file diff --git a/src/how_to_run_a_journal.dj b/src/how_to_run_a_journal.dj new file mode 100644 index 0000000..14a12ae --- /dev/null +++ b/src/how_to_run_a_journal.dj @@ -0,0 +1,96 @@ +# Web-dev, and the Power of Simplicity. + +Hi! I'm Isaac Mills, I'm the guy managing the infrastructure behind Compute! In this article, I'd like to talk about just that: the infra behind this media outlet, how it all works, and why it is the way it is. + +## Plain text + +Plain text is as simple as it gets, yet it can be an extremely powerful tool. It's capable of being anything, and can also be transmuted into anything. Its infinite extensibility makes it a formidable tool that every developer should have in their arsenal. For our case, we use a lot of plain text. In fact, the article you're reading right now is written in plain text, _not with some web UI_. A while back, I found a markup language called [djot](https://djot.net). It was created by the same person who created CommonMark, a flavor of markdown, to be easier to parse and more featureful. Below is some example djot + +```djot +# Heading + +paragraph + +*bold* _italic_ _*bold italic*_ {-strikethorugh-} {+underline+} + +- list +- list + +1. list +2. list +3. list +``` + +The benefit of using djot is that it compiles directly to HTML, thus the jorunalists who have joined Compute don't need to learn HTML to write articles. They also don't need to learn a clunky slow website editor like Wix or Squarespace. + +This is another superpower of plain text, if we used Wix for our website, our journalists would need to learn how to use the Wix UI, and how to write articles _for_ that UI. If we needed to change our tooling at any time, they would need to re-learn everything for _that_ tool. Not only that, but we would need to port the entire website (_every_ article), to use that new tooling. This is not so with plain text, if things change in the pipeline, or even if you're just joining our publication, there's no need to re-learn how to write text. At worst, you just need to convert the plain text to another format of plain text (djot to HTML for example). All our journalists need to know how to do is write their articles in djot, and submit it to the team via the pipeline + +## The Pipeline + +![A flowchart of the pipeline](assets/the_pipeline.svg) + +Pictured above is the full pipeline that articles go through in order to reach you readers at home, it goes like this + +1. Articles are written by our journalists in a plain text format (djot in our case) +2. Once an article is done, the journalist who wrote the article opens a pull request on our git repository with their new article and associated assets +3. The article can be reviewed by the team and edits can be made by them. +4. Once the article has been edited, the pull request gets merged into the main branch of our git repository, which is where the articles you see live +5. From there, the article goes through CI and gets deployed (we'll get into that in more detail later) + +Basically, this is just the workflow you would use for code, but adapted for journalism. In other words, no learning curve for our journalists! And if they do need to learn it, then this is information that they *should* know _anyway_. The workflow you see above has been in the making since git was created in 2005, with the sole purpose of efficiently moving code from development, into production. In the places where this workflow is used, more overhead in the pipeline means time, and time means money. Thus the workflow used in those places should be as simple as possible to reduce overhead, and I see it no differently for our publication. If this workflow has worked for nearly 2 decades for a pathologically huge project like the Linux kernel (which git was tailor-made to handle), the better. + +## CI + +Consider the following: If I'm accepting untrusted code from the public into my open source project, and I need that code to be production ready, how can I ensure that the code I accept _is_ actually production ready. The answer is with _continuous integration_, or _CI_. The idea is that every piece of code submitted to an open source project would undergo automated testing, linting, and checking to ensure that nothing will break upon merging the code into the production code base. For a project like [`egui`](https://lib.rs/crates/egui), their CI pipeline contains 19 checks. + +Their pipeline checks if the library with your new code compiles to every platform it's compatible with, with every feature enabled. It also makes sure that your code is well-formatted, contains no conflicts of license, uses no libraries banned by the project, and contains no security advisories. The _only_ way this many checks can be done on every git commit, is through CI, GitHub Actions in egui's case. + +The way I've described CI so far has probably made it seem like the least simple thing you could add to your project, but CI is actually _quite_ simple, and it's an excellent example of how capable of a tool you can make by just building simple, on top of simple, on top of simple. Really, CI is just shell scripting with extra steps. Despite it's inherent simplicity, CI can serve not only as a means to filter bugs out of pull requests, but it can also be a simple way to communicate to open source developers _what a project wants_ out of their code. Instead of having to read a big `CONTRIBUTORS.md` file to get an idea of that, developers can know that their code is good quality if it just passes CI. + +Fortunately, the level of CI I've described above isn't required for journalism. Our CI simply compiles our journalists' unreviewed articles, and serves them on an un-indexed (not visible on production) web page so that they and the team can preview their work before merging it. Our CI is also responsible for indexing and publishing finished articles onto our production website. + +## Deployment + +Deployment is the most complex part of our pipeline; getting the written, production ready articles, onto the website _you_ are reading this on. As I said earlier in the article, we use CI to compile and index finished articles. The CI tool we use is called [Woodpecker CI](https://woodpecker-ci.org/), a self-hosted docker-based CI tool. Self-hosted basically means that we can run the CI tool on the same server we use to serve our website, making deployment to there as easy as moving the generated files into the directory that our web server is serving (NGINX in our case). What's important to know is that when a pull request is opened on this journal's git repository, and when a pull request is merged into production, Woodpecker CI will run a custom program that I wrote in Rust to... + +- Compile djot articles to HTML +- Minify and compress compiled HTML +- Index articles with our search engine + +Because our CI tool is running this code, we can know which articles need compilation, who wrote those articles, and if any articles need to be deleted. Our CI tools will put our code in the working directory of our git repo. And via environment variables, the CI tool will tell us which files have changed, how the pipeline was triggered (via pull request, code push, etc.), as well as which git branch production resides in, and which branch our code is currently in. Our code can then use this information to... + +- Stat the changed files, which is how we know which files need to be compiled, and which files have been deleted +- Run a blame on new articles, which is how we figure out who wrote them +- See if we have changed the production branch, and index new articles if so + +Everything I've described that the program can do so far can be done in just \~400 lines of Rust. This is the effect of buidling simple on top of simple, _and making an effort to retain simplicity_ by making the most out of the simple building blocks. (P.S: Our Rust code now also generates a title card image for each article, so they look better on platforms like Twitter and Discord. By using the same stradegy, I only needed to add \~230 lines to our Rust code) + +[![Google cosplay is not business-critical](assets/google_cosplay.jpg)](https://twitter.com/garybernhardt/status/1344341213575483399) + +My Rust code makes heavy use of git, a very simple yet amazing tool for adding functionality to plain text. + +- It allows us to separate the WIP and the finished articles +- It allows us to keep an accurate and automated reference of who wrote and edited each article +- It allows a copy of the entire publication to be stored in many different places as backups. +- It allows us to easily sync new articles and changes to any git-compatible software forge of our choice (we use [forgejo](https://forgejo.org/)) + +By taking advantage of the vast functionality that a simple tool like git gives us, our code can stay lean, while also being very mean. Speaking of staying lean... + +## Webpages (and staying based) + +![An image of the giga-chad](assets/giga_chad.jpg) + +There is no better example of the cons of complexity than the modern web. Most webpages are not only bloated with ads, cookie banners, autoplaying BS, popups and the like; but they are also inundated with copious amounts of JavaScript. We only use JavaScript in 2 places + +1. On our homepage to power the search bar and display articles +2. Our web design tool, Webflow, bundles a small amount of JavaScript in every page (more on that later) + +Other than that, the actual article pages, such as this one, depend on nothing but the JavaScript that Webflow bundles in. And for our homepage, it's built and optimized so it can be served statically with it's _one_ dependency. Basically, I wanted to make our website as [suckless](https://suckless.org/philosophy/) (as lightweight, and as free from bloat) as possible. I say _I_ wanted to because our founder wanted to use Wix originally, yuck. + +Instead of _that_, I used [Webflow](https://webflow.com/) to design our webpages. For a one-time fee of $24, you can have access to the Webflow editor for 1 month, and then export your web pages to HTML/CSS/JS. Webflow is very different from your average Wix/Squarespace, those editors are designed for non-programmers who don't know and don't want to know HTML or CSS. Webflow is an editor for _developers_ that know what they're doing. It gives you the full power of HTML and CSS in a responsive, visual editor; making it an incredibly flexible tool capable of generating very based and performant webpages. Unlike the latter tools which generate bloated and obfuscated garbage. + +In just HTML, CSS, and JS: The homepage of this journal compressed is around 152.42 KB large, whereas our old Wix website's homepage compressed is around 861.9 KB large. That's nearly a 6x size difference. That's the effect of building your website in a UI that attempts to match up to the flexibility of HTML and CSS... without actually exposing you to the HTML and CSS. This is where Webflow thrives, as it is literally just a simple graphical editor _for_ HTML and CSS. It's another excellent example of what building simple around simple can do! + +## In conclusion + +Computers have an inconcievable amount of potential, but they're only as smart as their programmer. When you're building something with a computer, it's often much better to do more with less, than less with more. Don't use 17 different JavaScript frameworks with your hypervisor GPU WEB2.0 interface-driven scripting framework to drive your map/reduce-aware proxy-oriented software API. Just start simple, build simple, and if you need complexity, build it with more simple. The point I'm trying to make here is that bloat is your enemy, and it's often better for you, your team, and your users to just KISS (Keep it simple, stupid!) diff --git a/templates/article.html b/templates/article.html index e5762c1..2ed46e0 100644 --- a/templates/article.html +++ b/templates/article.html @@ -16,7 +16,7 @@ - + @@ -77,8 +77,8 @@
{{author.full_name}}
{% endfor %}
-

- {{published}} +

+ {{read_time}} minute read · {{published}}

@@ -94,4 +94,4 @@ - \ No newline at end of file + From d0ad4c3f7469818b3309451af8ebb3afc01469aa Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Tue, 23 Apr 2024 22:49:14 -0400 Subject: [PATCH 34/42] Specifically denote published time --- templates/article.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/article.html b/templates/article.html index 2ed46e0..1686ab2 100644 --- a/templates/article.html +++ b/templates/article.html @@ -78,7 +78,7 @@ {% endfor %}

- {{read_time}} minute read · {{published}} + {{read_time}} minute read · Published: {{published}}

@@ -94,4 +94,4 @@ - + \ No newline at end of file From ea4a9f3760f4771453c45b1bfbf5c1e6e37f81ed Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Wed, 24 Apr 2024 00:17:07 -0400 Subject: [PATCH 35/42] Add published attribute to articles --- src/how_to_run_a_journal.dj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/how_to_run_a_journal.dj b/src/how_to_run_a_journal.dj index 14a12ae..ca600bd 100644 --- a/src/how_to_run_a_journal.dj +++ b/src/how_to_run_a_journal.dj @@ -1,3 +1,5 @@ +`attributes`{published="2024-04-23 12:11"} + # Web-dev, and the Power of Simplicity. Hi! I'm Isaac Mills, I'm the guy managing the infrastructure behind Compute! In this article, I'd like to talk about just that: the infra behind this media outlet, how it all works, and why it is the way it is. From d866cf24cd24781b62afc2a2439347960b6580fe Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Wed, 24 Apr 2024 08:52:09 -0400 Subject: [PATCH 36/42] Adjust margins on heading --- templates/article.html | 8 +++---- templates/css/compute-c23f91.webflow.css | 28 ++++++------------------ 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/templates/article.html b/templates/article.html index 1686ab2..b4dee1a 100644 --- a/templates/article.html +++ b/templates/article.html @@ -68,16 +68,16 @@
-
-

{{title}}

-
+
+

{{title}}

+
{% for author in authors %} {{author.full_name}}'s Avatar
{{author.full_name}}
{% endfor %}
-

+

{{read_time}} minute read · Published: {{published}}

diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index d0ee7d1..faf70e4 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -12,12 +12,6 @@ code { font-family: 'Fira Code', monospace; } -.w-layout-vflex { - flex-direction: column; - align-items: flex-start; - display: flex; -} - .w-layout-blockcontainer { max-width: 940px; margin-left: auto; @@ -135,9 +129,8 @@ li { } .flex-block-2.purple { - flex-flow: column; - justify-content: space-around; padding-top: 0; + align-items: center; display: flex; background-color: #552a85; overflow-x: hidden; @@ -214,9 +207,8 @@ li { background-image: linear-gradient(90deg, #f6c415, rgba(246, 196, 21, .3)); -webkit-background-clip: text; background-clip: text; + font-size: 64px; margin-bottom: 20px; - margin-left: 20px; - margin-right: 20px; } .image { @@ -224,7 +216,6 @@ li { background-clip: border-box; border-radius: 50%; margin-bottom: 0; - margin-left: 20px; margin-right: 10px; } @@ -244,8 +235,12 @@ article>* { } #header-elements { - width: 96vw; max-width: 940px; + display: flex; + justify-content: space-around; + flex-direction: column; + margin: 14px 20px; + align-items: flex-start; } @media screen and (max-width: 991px) { @@ -265,11 +260,6 @@ article>* { .grid { grid-template-columns: 1fr; } - - .heading-8 { - margin-bottom: 20px; - font-size: 64px; - } } @media screen and (max-width: 767px) { @@ -290,10 +280,6 @@ article>* { .heading-3.unwrapped-compute.compute-gradiant { display: none; } - - .heading-8 { - font-size: 64px; - } } @media screen and (max-width: 479px) { From 847fddc09bc5761db4ab44196d04fed81725d54a Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Wed, 24 Apr 2024 09:10:04 -0400 Subject: [PATCH 37/42] Adjust margins on heading --- templates/article.html | 2 +- templates/css/compute-c23f91.webflow.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/article.html b/templates/article.html index b4dee1a..bd5a79f 100644 --- a/templates/article.html +++ b/templates/article.html @@ -77,7 +77,7 @@
{{author.full_name}}
{% endfor %}
-

+

{{read_time}} minute read · Published: {{published}}

diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index faf70e4..f88fc99 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -239,7 +239,7 @@ article>* { display: flex; justify-content: space-around; flex-direction: column; - margin: 14px 20px; + margin: 20px; align-items: flex-start; } From f4be152ca6436024aae5c93e4a55c86bb986abb3 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Wed, 24 Apr 2024 09:16:17 -0400 Subject: [PATCH 38/42] Adjust margins on heading --- templates/css/compute-c23f91.webflow.css | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index f88fc99..942ca38 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -227,6 +227,7 @@ li { .text-block-2 { color: white; font-size: 18px; + margin-right: 20px; } article>* { From 3f6385f10967c0ded17c41e7e71ac2887c238938 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Wed, 24 Apr 2024 09:20:59 -0400 Subject: [PATCH 39/42] Add published attribute to articles --- templates/article.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/article.html b/templates/article.html index bd5a79f..27044fb 100644 --- a/templates/article.html +++ b/templates/article.html @@ -77,7 +77,7 @@
{{author.full_name}}
{% endfor %}
-

+

{{read_time}} minute read · Published: {{published}}

@@ -94,4 +94,4 @@ - \ No newline at end of file + From 3c8d8dce6e127a9fcd358edb11c8604b59576005 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Wed, 24 Apr 2024 09:30:12 -0400 Subject: [PATCH 40/42] Adjust margins in heading --- templates/article.html | 4 ++-- templates/css/compute-c23f91.webflow.css | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/article.html b/templates/article.html index 27044fb..ad1afc2 100644 --- a/templates/article.html +++ b/templates/article.html @@ -69,7 +69,7 @@
-

{{title}}

+

{{title}}

{% for author in authors %} {{author.full_name}}'s Avatar - + \ No newline at end of file diff --git a/templates/css/compute-c23f91.webflow.css b/templates/css/compute-c23f91.webflow.css index 942ca38..26163c8 100644 --- a/templates/css/compute-c23f91.webflow.css +++ b/templates/css/compute-c23f91.webflow.css @@ -221,7 +221,6 @@ li { .flex-block-3 { align-items: center; - margin-bottom: 20px; } .text-block-2 { @@ -242,6 +241,7 @@ article>* { flex-direction: column; margin: 20px; align-items: flex-start; + gap: 14px; } @media screen and (max-width: 991px) { @@ -315,4 +315,4 @@ article>* { .text-block { font-size: 6vw; } -} \ No newline at end of file +} From dfff82e45004871825711b23ec72a4d699c67f03 Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Wed, 24 Apr 2024 09:43:17 -0400 Subject: [PATCH 41/42] Adjust margins in heading --- templates/article.html | 2 +- templates/css/compute-c23f91.webflow.css | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/article.html b/templates/article.html index ad1afc2..6ac52c8 100644 --- a/templates/article.html +++ b/templates/article.html @@ -69,7 +69,7 @@