From f76b1447ee0a70969db8e17515857c8d47659133 Mon Sep 17 00:00:00 2001 From: Alonso Torres Date: Wed, 14 Oct 2026 10:20:27 +0200 Subject: [PATCH 1/6] :sparkles: Improve error report and warn on update loops (#12044) --- frontend/deps.edn | 8 +- frontend/src/app/main.cljs | 4 +- frontend/src/app/main/errors.cljs | 70 ++++++++- .../app/main/ui/workspace/viewport/hooks.cljs | 2 +- .../test/frontend_tests/main_errors_test.cljs | 142 ++++++++++++++++++ 5 files changed, 215 insertions(+), 11 deletions(-) diff --git a/frontend/deps.edn b/frontend/deps.edn index b1293a652c..c5184e43ae 100644 --- a/frontend/deps.edn +++ b/frontend/deps.edn @@ -15,8 +15,8 @@ :git/url "https://github.com/funcool/tubax.git"} funcool/potok2 - {:git/tag "v2.2" - :git/sha "0f7e15a" + {:git/tag "v2.3" + :git/sha "bdebbdb" :git/url "https://github.com/funcool/potok.git" :exclusions [funcool/beicon2]} @@ -26,8 +26,8 @@ :git/url "https://github.com/funcool/beicon.git"} funcool/rumext - {:git/tag "v2.25" - :git/sha "27e5a1a" + {:git/tag "v2.26" + :git/sha "d726717" :git/url "https://github.com/funcool/rumext.git"} instaparse/instaparse {:mvn/version "1.5.0"} diff --git a/frontend/src/app/main.cljs b/frontend/src/app/main.cljs index c7d87ba8ba..dbd3deb96c 100644 --- a/frontend/src/app/main.cljs +++ b/frontend/src/app/main.cljs @@ -16,7 +16,7 @@ [app.main.data.event :as ev] [app.main.data.profile :as dp] [app.main.data.websocket :as ws] - [app.main.errors] + [app.main.errors :as errors] [app.main.features :as feat] [app.main.rasterizer :as thr] [app.main.store :as st] @@ -134,6 +134,8 @@ (i18n/init) (cur/init-styles) + (mf/set-update-scheduler {:on-trip errors/on-update-loop}) + (init-ui) (st/emit! (plugins/initialize) (initialize))))) diff --git a/frontend/src/app/main/errors.cljs b/frontend/src/app/main/errors.cljs index 928722f889..d2c4976024 100644 --- a/frontend/src/app/main/errors.cljs +++ b/frontend/src/app/main/errors.cljs @@ -100,6 +100,40 @@ (assoc ::instance cause) (assoc ::trace (.-stack cause))))) +;; Events in flight when each exception was caught, as report lines +(defonce ^:private in-flight-by-cause (js/WeakMap.)) + +;; Events kept from each end of a long in-flight list +(def ^:private in-flight-edge-size 10) + +(defn- in-flight-lines + "Report lines for the in-flight `events`, outermost first; a long list + keeps only both ends." + [events] + (let [total (count events) + size in-flight-edge-size] + (if (<= total (* 2 size)) + (mapv ptk/repr-event events) + (-> [] + (into (map ptk/repr-event) (take size events)) + (conj (str "... " (- total (* 2 size)) " more ...")) + (into (map ptk/repr-event) (take-last size events)))))) + +(defn- record-in-flight! + "Keeps the events the store is processing for the report of `cause`. + Runs synchronously on the error path: when an event's `update`, `effect` + or synchronous `watch` throws, the last line is that event. When a + `watch` pipeline fails on a value from the store stream, the store has + already finished that value, so the lines show the events that emitted + it, not the event that owns the pipeline." + [cause] + (try + (when (ex/exception? cause) + (when-let [events (not-empty (ptk/in-flight-events st/state))] + (.set in-flight-by-cause cause (in-flight-lines events)))) + (catch :default _ + nil))) + (defn on-error "A general purpose error handler. @@ -114,6 +148,7 @@ (ex/print-throwable error)) (do (vreset! handling-error? true) + (record-in-flight! (if (map? error) (::instance error) error)) (try (if (map? error) (ptk/handle-error error) @@ -166,8 +201,9 @@ (println "HREF: " (rt/get-current-href))))) (defn- generate-full-report - "Complete report: context, formatted throwable (including `ex-data`) and the - last events." + "Complete report: context, formatted throwable (including `ex-data`), the + events in flight when the error was caught (when recorded) and the last + events." [cause] (with-out-str (print (report-context cause)) @@ -177,6 +213,12 @@ (ex/format-throwable cause)) (println) + (when-let [lines (.get in-flight-by-cause cause)] + (println "Events in flight when the error was caught (outermost first):") + (println "--------------------") + (run! println lines) + (println)) + (println "Last events:") (println "--------------------") (println (st/format-last-events)) @@ -202,9 +244,9 @@ "Build the report string for `cause`. `:format` selects the payload: `:full` (default) includes the formatted - throwable and the last events; `:compact` keeps only the context and the - error type/code/uri, for environment failures. The option is accepted both - as keyword arguments and as a trailing map." + throwable, the in-flight and the last events; `:compact` keeps only the + context and the error type/code/uri, for environment failures. The option + is accepted both as keyword arguments and as a trailing map." [cause & {:keys [format] :or {format :full}}] (try (case format @@ -392,6 +434,24 @@ hint occurrences)))) +(defonce ^:private update-loop-warned-at + (volatile! 0)) + +(defn on-update-loop + "Handler for the rumext update scheduler trips: logs the throttled + update loop with the events being processed, at most once per + `report-window-ms`. Runs inside store watchers and effect bodies, so it + never throws." + [_] + (try + (let [now (inst-ms (ct/now))] + (when (>= (- now @update-loop-warned-at) report-window-ms) + (vreset! update-loop-warned-at now) + (.warn js/console "[update-scheduler] update loop throttled; in-flight events:" + (into-array (map ptk/repr-event (ptk/in-flight-events st/state)))))) + (catch :default _ + nil))) + (defn- download-report! [report event] (dom/prevent-default event) diff --git a/frontend/src/app/main/ui/workspace/viewport/hooks.cljs b/frontend/src/app/main/ui/workspace/viewport/hooks.cljs index 6b91ba1984..ae8397383e 100644 --- a/frontend/src/app/main/ui/workspace/viewport/hooks.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/hooks.cljs @@ -402,7 +402,7 @@ (defn inside-vbox [vbox objects frame-id] (let [frame (get objects frame-id)] - (and (some? frame) (gsh/overlaps? frame vbox)))) + (and (some? frame) (some? vbox) (gsh/overlaps? frame vbox)))) (defn setup-active-frames [objects hover-ids selected active-frames zoom transform vbox] diff --git a/frontend/test/frontend_tests/main_errors_test.cljs b/frontend/test/frontend_tests/main_errors_test.cljs index a964620c15..c622647f84 100644 --- a/frontend/test/frontend_tests/main_errors_test.cljs +++ b/frontend/test/frontend_tests/main_errors_test.cljs @@ -11,6 +11,10 @@ - stale-asset-error? – pure predicate - exception->error-data – pure transformer - on-error re-entrancy guard – prevents recursive invocations + - events in flight – the full report lists the events the + store was processing when it caught the exception; a failing stream + pipeline lists the emitters of the value, not its own event + - on-update-loop – never throws into the scheduler's caller - flash schedules async report and toast – neither the report nor ntf/show is emitted synchronously - organization SSO recovery – expired SSO sessions go back to the provider @@ -368,6 +372,144 @@ ;; The guard must have allowed only the first invocation through. (t/is (= 1 @reentrant-call-count)))) +;; --------------------------------------------------------------------------- +;; Events in flight +;; +;; on-error records the events the store is processing when it catches an +;; exception; the full report lists them, outermost first. +;; --------------------------------------------------------------------------- + +(def ^:private in-flight-cause (atom nil)) + +(defmethod ptk/handle-error ::test-in-flight + [err] + (reset! in-flight-cause (::errors/instance err)) + nil) + +(def ^:private in-flight-heading + "Events in flight when the error was caught (outermost first):") + +(defn- in-flight-failure + [] + (ex-info "in-flight failure" {:type ::test-in-flight :hint "in-flight failure"})) + +(defn- recursive-event + [n] + (ptk/reify ::test-in-flight-recursive + ptk/WatchEvent + (watch [_ _ _] + (if (pos? n) + (rx/of (recursive-event (dec n))) + (throw (in-flight-failure)))))) + +(t/deftest ^:async report-lists-the-events-in-flight-of-a-failing-event + (let [store (ptk/store {:state {} :on-error errors/on-error})] + (try + (await + (mock/with-mocks* + {st/state store + st/format-last-events (mock/stub (fn [& _] "(stub last events)")) + rt/get-current-href (constantly "https://penpot.example.com/#/workspace")} + (reset! in-flight-cause nil) + (st/emit! + (ptk/reify ::test-in-flight-outer + ptk/WatchEvent + (watch [_ _ _] + (rx/of (ptk/reify ::test-in-flight-inner + ptk/UpdateEvent + (update [_ _] (throw (in-flight-failure)))))))) + (await (async/wait-for #(some? @in-flight-cause) "the failure reaches the handler")) + (let [report (errors/generate-report @in-flight-cause) + outer (.indexOf report "typ:(:frontend-tests.main-errors-test/test-in-flight-outer)") + inner (.indexOf report "typ:(:frontend-tests.main-errors-test/test-in-flight-inner)")] + (t/is (str/includes? report in-flight-heading)) + (t/is (< -1 outer inner) "outer event listed before the failing one")))) + (finally + (rx/dispose! store))))) + +(t/deftest ^:async report-keeps-both-ends-of-a-long-in-flight-list + (let [store (ptk/store {:state {} :on-error errors/on-error})] + (try + (await + (mock/with-mocks* + {st/state store + st/format-last-events (mock/stub (fn [& _] "(stub last events)")) + rt/get-current-href (constantly "https://penpot.example.com/#/workspace")} + (reset! in-flight-cause nil) + ;; 25 nested events: 10 from each end are kept + (st/emit! (recursive-event 24)) + (await (async/wait-for #(some? @in-flight-cause) "the failure reaches the handler")) + (let [report (errors/generate-report @in-flight-cause)] + (t/is (str/includes? report "... 5 more ...")) + (t/is (= 20 (count (re-seq #"test-in-flight-recursive" report))))))) + (finally + (rx/dispose! store))))) + +(defn- in-flight-section + "The in-flight section of `report`, or nil when absent." + [report] + (let [start (.indexOf report in-flight-heading)] + (when (<= 0 start) + (subs report start (.indexOf report "Last events:" start))))) + +(t/deftest ^:async stream-pipeline-failure-lists-the-emitters-of-the-value + (let [store (ptk/store {:state {} :on-error errors/on-error})] + (try + (await + (mock/with-mocks* + {st/state store + st/format-last-events (mock/stub (fn [& _] "(stub last events)")) + rt/get-current-href (constantly "https://penpot.example.com/#/workspace")} + (reset! in-flight-cause nil) + ;; The listener's pipeline fails on the trigger that the emitter emits + (st/emit! + (ptk/reify ::test-in-flight-listener + ptk/WatchEvent + (watch [_ _ stream] + (->> stream + (rx/filter (ptk/type? ::test-in-flight-trigger)) + (rx/take 1) + (rx/map (fn [_] (throw (in-flight-failure))))))) + (ptk/reify ::test-in-flight-emitter + ptk/WatchEvent + (watch [_ _ _] + (rx/of (ptk/data-event ::test-in-flight-trigger {}))))) + (await (async/wait-for #(some? @in-flight-cause) "the failure reaches the handler")) + (let [section (in-flight-section (errors/generate-report @in-flight-cause))] + (t/is (str/includes? section "test-in-flight-emitter")) + (t/is (not (str/includes? section "test-in-flight-trigger"))) + (t/is (not (str/includes? section "test-in-flight-listener")))))) + (finally + (rx/dispose! store))))) + +(t/deftest ^:async delayed-watch-failure-has-no-in-flight-section + (let [store (ptk/store {:state {} :on-error errors/on-error})] + (try + (await + (mock/with-mocks* + {st/state store + st/format-last-events (mock/stub (fn [& _] "(stub last events)")) + rt/get-current-href (constantly "https://penpot.example.com/#/workspace")} + (reset! in-flight-cause nil) + (st/emit! + (ptk/reify ::test-in-flight-delayed + ptk/WatchEvent + (watch [_ _ _] + (->> (rx/timer 0) + (rx/map (fn [_] (throw (in-flight-failure)))))))) + (await (async/wait-for #(some? @in-flight-cause) "the failure reaches the handler")) + (let [report (errors/generate-report @in-flight-cause)] + (t/is (not (str/includes? report in-flight-heading))) + (t/is (str/includes? report "Last events:"))))) + (finally + (rx/dispose! store))))) + +(t/deftest ^:async update-loop-handler-never-throws + (await + (mock/with-mocks* + {ptk/in-flight-events (fn [_] (throw (js/Error. "in-flight read failure")))} + (t/is (nil? (errors/on-update-loop {:rounds 26})))))) + ;; --------------------------------------------------------------------------- ;; Expired organization SSO session ;; From 1f96abd577af5fd907d9cb098bf49d72d8ba9934 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 14 Oct 2026 08:33:10 +0000 Subject: [PATCH 2/6] :books: Note that needs triage and internal issues are closed State in the contributing guide that issues under `needs triage` and `internal` are not open to contributions. Every new issue starts under `needs triage` until the product team reviews it, so contributors could mistake a fresh issue for an invitation and send a PR that we then turn down. A PR opened on one of those issues may be closed without review, without an explanation and without a reply. The wording follows the existing note about AI-assisted content. The help center page keeps its current wording for now. AI-assisted-by: deepseek-v4.1-flash --- CONTRIBUTING.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7a11d90851..9da08257f7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -67,6 +67,11 @@ If AI-assisted content is used, it must be carefully reviewed and verified by a Report bugs via [GitHub Issues](https://github.com/penpot/penpot/issues). Before filing, search existing issues to avoid duplicates. +> **Note:** Every new issue starts under the `needs triage` label until the +> product team reviews it. Issues under `needs triage` or `internal` are not +> open to contributions — do not start work on them. Wait for a maintainer to +> confirm it in the issue itself. + Include the following when possible: 1. Steps to reproduce the error. @@ -164,10 +169,15 @@ To save time on both sides, please avoid submitting PRs that: - Submit AI-generated code without human review. - Skip local syntax and formatting checks before submitting. - Skip the [discussion step](#workflow) for non-bug-fix changes. +- Open a PR for an issue under `needs triage` or `internal`. We may close + these PRs without review, without an explanation and without a reply. ### Good first issues We use the `good first issue` label to mark issues appropriate for newcomers. +An issue is open to contributions only after a maintainer says so in the issue +itself. Issues under `needs triage` or `internal` stay closed, however simple +they look. ## Commit Guidelines From f40686d2056ced54fb7b604e87b53010425b7bb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?andr=C3=A9s=20gonz=C3=A1lez?= Date: Wed, 14 Oct 2026 12:51:51 +0200 Subject: [PATCH 3/6] :books: Update user guide for 2.19 features (#12201) Document stroke per side and its tokens, path editor changes, image bounds resize, configurable shortcuts, tokens from a shared library as tokens source, canvas background color tokens, Penpot board presets, the 3x export scale, the text editing context menu, the organization and team selector, the hide resolved comments option, account security and the Check for updates option. Fix outdated notes about WebGL exports, background blur exports, library token import and path editor shortcuts. Add the images for these sections and remove the ones no longer used. AI-assisted-by: claude-opus-5-5 --- .../libraries-import-tokens-button.webp | Bin 27906 -> 0 bytes .../libraries-import-tokens-confirm.webp | Bin 30480 -> 0 bytes .../libraries/libraries-tokens-source.webp | Bin 0 -> 46024 bytes docs/img/shortcuts/shortcuts-settings.webp | Bin 0 -> 64912 bytes docs/img/styling/stroke-per-side.webp | Bin 0 -> 26546 bytes .../teams/team-selector-organizations.webp | Bin 0 -> 45812 bytes docs/img/teams/team-selector.webp | Bin 1256 -> 0 bytes docs/user-guide/account-teams/teams.njk | 14 ++-- .../user-guide/account-teams/your-account.njk | 9 ++- .../design-systems/design-tokens.njk | 7 +- docs/user-guide/design-systems/libraries.njk | 38 +++++++---- docs/user-guide/designing/color-stroke.njk | 15 ++++ docs/user-guide/designing/layers.njk | 35 ++++++++-- docs/user-guide/designing/text-typo.njk | 1 + .../user-guide/designing/workspace-basics.njk | 3 + .../export-import/exporting-layers.njk | 2 +- .../user-guide/first-steps/cloud-selfhost.njk | 4 ++ docs/user-guide/first-steps/shortcuts.njk | 64 ++++++++++++++++-- .../first-steps/troubleshooting-webgl.njk | 3 +- 19 files changed, 161 insertions(+), 34 deletions(-) delete mode 100644 docs/img/libraries/libraries-import-tokens-button.webp delete mode 100644 docs/img/libraries/libraries-import-tokens-confirm.webp create mode 100644 docs/img/libraries/libraries-tokens-source.webp create mode 100644 docs/img/shortcuts/shortcuts-settings.webp create mode 100644 docs/img/styling/stroke-per-side.webp create mode 100644 docs/img/teams/team-selector-organizations.webp delete mode 100644 docs/img/teams/team-selector.webp diff --git a/docs/img/libraries/libraries-import-tokens-button.webp b/docs/img/libraries/libraries-import-tokens-button.webp deleted file mode 100644 index 6cfe1b21562608917c090f9b1a7c677825529d6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27906 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 diff --git a/docs/img/libraries/libraries-import-tokens-confirm.webp b/docs/img/libraries/libraries-import-tokens-confirm.webp deleted file mode 100644 index cc923ac079cc306c9badf0eab2f0826c53e05500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30480 zcmV)NK)1hANk&EpcK`raMM6+kP&iEcb^rh`p8{9_Rg2=bZ5%24Z=GB(?}(TH>ew`0 z*~L3;$Z+H-pn!EMr(6&OxvaRn#ReyG;~1}EOH_9$hxlc>wXH3doHQOYR6PbUGcz+Y zGc#ibvXu`eFiL>IZm1rps$TUAO3Y?2nVo{DBhXr93j-MC!3u%hKLL5lpuGt~Sttd3 zDTv8a28w~nm&cO#5|E`d+7zb4(0M3@_Qv~iQ53QjL%YuuMxeEx-3p;?#V{1ZMDUqn zmJ(q1nPMpiW+{wWtL&jriEAt$94qayE4yB8knTDt2a&^=$mznaMDOY9YqmBxvOoz-c%(=@nJmbRfsLaeAX8e{JkGLJ4GUI)(^-zW< zg<;-hX6}C0a+!yj@^mc*mpfEuhI_61Xcvx{>GtYk=9HPadCDrgkb=wi^iT(7W*ADl zhRV#$=yG-FlQJ`;%-nkQz@xV9X(MUdc1bcrxVTc-ICSIsuK_+!4^>qch0!rvmULa- zZfkqnHruv+-;ah)5&%1?Zs$rp%iYWW|I*HuoUt8SqPi${0z}7g^j{WY+jiT`34&`R zv(J_Clv>Nbl=A;y=Q#Ie<_$A5GczqSGcz+YGcz+YGc!|QW&)E8V`*km?&Nv?ivr3q zRHht@Hby`l#6)$lgL(E=aIgaK9t%BJL(je8@45;KW1-5bfE+LiU>Pw`6}2$ua(nHq zI;v$g6jel0gcLJL8 zM5FuH)2r6=7?VhK?v-rS9rn@&mXdI^s{`&xB-ukV(%iOnEYbatHkO8xc!cRXJ?juj zGD|2)gkWMWfrv!6)WVw|rN|EPBo=HX5R!6P%_hwxxZa;=K`@o11pA_!jSn)?V=_Ua zaRf*StUKm#DY`>@lb8T691}@Y|Ed04;}cVrniK#4kTODP!0p&~enkMlke%k-%ZyCo zaME*=ob#0c7@@Py#ysr`WD*PG6tk=SmOVN1Z0xg+q;d_guud~;(i5GjZ_L{>7`faV zi{gy4`TE8_#Hu@c}7QLeL z=|0N{r3f||^NhC$EQC|dIy)7~q<+&8cL78Iz#vX}=2b=}buIMi8ZTnx^Z!y*|E>N2 zCC(;BFrYC6Ix(JMLO>P+Izu@GI2XBq5tADLgg6hG5J&`g)z`&lh;SmwBZ&Qn50A$Y z=a?^tqxcW6x=P4M07!5|7y^xmVfd9I!mCKdXUGsh%ElpnB{{~!;|M4MK!|=H0nlwc zhByb69Mf?OepFm^ugZ#O&Mqk>ejR26Sf2jBA%CC#d0O2Ty5MvX6 zX>Uc5+)H=`UK*1_k%E`NL%KyFf`*BL&)|trYNla-u52FeLCW_-af!)V`MO>>#(}Jq zg^UmMYUPuXa*@fV>oy((oB^fAPzZoXne+Z#J|IIFC}tx655F!pN0cFTNr9TL{KMA6 z4#P*f05xXBf$#ls1l>nVrfmR#23$*adcTKbm~Q>$k20Kq*K|*Mi$@WRU@#nT7}q`B z%p=|tP79zWw5U?}oe%y%lp_F7wRBpPT8H@#0I0A%8zE^Vz;Fh`0ft!mh@foRNeD-8 zFy3DbF8FYQe`FNmSb&iX{*iy=G+x*E_$r4PJMHysDB?eI2H|MHF${jqe`FZIQ73nJ z)N0sTRxiEog*S-!qaGmYq)uWHm|>&Z~odR@LC99YUb zVm2KK_-p^CJTM4)g0s%HG3(;GAhu?`lqebXfh)J{*j^F z^t9{1PAUqjd^udJu*Z*oOw9QU=71bi2S+W3FZ2vB|HwabqFaT>iGg3x8A-C)ph6~I zyb!ilftsULr&+(BdoVgZU??gSUfbL|O^W~jXfJn(Q=X%XE-BDyxi^u#KkI{bSOfC61^&a3YqBZ zTa1BL*=a2))IccW0eR*+$16GmC~bD2s{iu(V(CO2V+Ady zS(+bow-5&P9X*Ct;uovtpbg>K{1^E z614m2pL;;7?(|-TlX-o6uS{^@kjl<%#B|=Ioj-kG3Pi0xaubgo?jk^6E~{2t8^tFC zn8W&dv1Et#l2C%n6SO)x4`xB#{Pr0WP=-;dPVJri-k%OIBr4LKCe^5cxtEQ2%F&Zf zCock?3`YF_#d(6yh?ZujdkUbm!OO=L6+53p+NV#rWfbt5X!1JhHeL`ylOZHpfBWAn zL}Ge;pmU^=sK2;cV(5Tg`jW#8W+?lNBFM6pSxlw~F`{+ME z%&`yEF19E~cvdx**IBvhI)3E1rrK^YrR9@&(%!2&XnRCuWwAE>_Lk-7OA4e-cldOA z^4Zr9p%~ZJ=?}y4F)Xi4@aM0ng#cWo+CN_{v#NQMpxxj9xfdiwocVpw_xe{Yw`Bvp z0%omq;@j1XXfGaQYTM;`_D&7!KU>?4kRu0}wiY$Y&bV1TAwGz^Ie_E*!*W$O`*FeJ z=9VwoMAe^Ani6F_VtHn2wP*NDj7MJ_S8jb~R2d0yj}*KKSq z0vGcvC3;*hBtc1I2wd44^)l-}y3@AxEw|kA6B9s)KzRH5JWeKcnt7?y^W=`}w5pAU z#c<|x(BY?ll;N~1^zmj9otj>+C6?g=icr`}b<(OozPpi}pA?8&f8-`Q;rdx%>sw^? zoo=I%sJXtGufgql$zga456Q4~hW!8al-`qMn9~@(gv6(h3pIv}*M^SfG2{Z**V1=+ zxk5wQhXwAKGK~05Fyh@I%yPr3gW%hOcZ{bcT39{lAWBD=kX zL!_fs#NuLwbF#W!Zw5e+*IVAqlPtsP%&E!u_L0UB0JyR@W->ncsJZhej1&6_B8L&k<0wv?{)i6!fgQvqe9=m zTVdyA#|H#Ox2Maw;kMev?jZosh#q{?&19u+gMRv*%CSt>EmHj5_4)a(cM89UZp;6cb9iujZ?%b^GC# z&Pm4pmsd9M!0Bw7w0c~=N~40t5M=rs-?D8Dq>>qY{N8pqooi>#ch9H*IT}McibH<8 zTHvoN$NO!d#*i6H$Ihux+b9~j36HyZV%Qo;m1CZPMmKMJ0T_m7{QJM2Ywyj^_C>~d zf7;6Fd-X*UmNZ5HCEV8O`^R~9{A7G`q%*k7@L%TxukO#-cY0qw5Mcu}B5~2r+W3c_ zW?8H5g)tvY?VHtJDCQ`C^8d~zU3}ujHT4S5or`W?|Hiai02D>d^~L=)ZNr~#Q3e2< z*6;avd3OKa*5gALaqsg7+|wk-pDs9#2B4F$-JGr1^R&PGJ^#7IydmE3^y7aQe|dLNGMZ;S>Rofv5m z@bqDoZVx?rGmCNt!!4I?K^TIfk=y9_>!U1?;q|^3jhG}Jf40&535EuFDM6o6O8zEHt_08%6dLq>}{^skmvUB zr)B2k(Zj4|kpAKGg;~_OSwEvK7;%eqv|_6c`}!Nx(eMg?Ro%b-{d?ZBg^9BD+sz$W zX?OpQFaWj9emFDd2|s+}bC&RYHP6|Vzh0A^aJt~z?UpUSyvOAH+(!HT^$P_$WpBhh zK5g_?i96#~-NC2#x}Ace5iyW6g;sANlyKjTrl#KU=L^19U&7G)>Y;Kmn7xrHUw{9W z_{utbIvvwnTH0#i#FCrx)E{{H$;xg`kgB(KLf)H~S_97RSZ*t*!>mPg%;kb<8B#ov z^hf{iV*22BJZdP%`G-}lIqG~J${_?W+Q^fOU=iq!*9%mb3qzVs=FEd5F29nJ(uj$q zH~aVQ$os!D{k9C__q!CD1BYy$wC^wIp~p|6K@M`GUM}v)n)wXo0)9-hx$bwgVs~n} z0q4&`3ma|b3naF`y<>Ss4g`&xzK*hMzJTlTZhe$nh1zB1Fhc|=F?Kz;qiE*?d`utH z$29Ql4{oQXax7{2;lpDH!>=V8d9SjwT2ajX!>@8>^Xb(BQB?oDqzME7&{SM}e{P9^ zH}?!~?lR)ndH?Ir)m1!Y=cU}-ZZ01D>+JNauh!I?u?Q}V6`K0Q`N05(ARez(rj&Q+ zt&E4KB6x-8&*bov$4IWfmI%WRD}u!(JN5jYY*|x1P@3+U;+@ zJQSHRlj&LUHd^SfC5)(B6J(X{nBj}0p8;IsKASJ7VT8vQirndZLuwvDnYM~1R&ttX z5APm~qoU}N25qvA{(dvQv($+y^K3M6?Pc683>uGQ+QaAq(ahuUG0g)rP1GlbyRw~Z z-+wq`5gj|eX9**>ODz4d|93WZ^lv=~Bfo-uStBX0js&#P;m|Vt!f%KnE=y>Rw=pKJ~@3^ z6y_K+ne-n%T3gx#dC=r)S^?2!C-r`-ON(6&rV90H=c+$EvXtd^a>I(%$)#2%Ko^!One?d6_s98p~e)+JP znmV7KH}AUN#jI@b^D}C}R@+1WoMm@-Z^;f?rK^wu(@3B9o4FFY4DzhEPKTfVQOGc| z^=uq;x?~DNX*5hD+-K)2P2=|0uWPnSPz{LSt2@f_Ww@b!G-plYE}w1(|M&WoPrnkrmgeINWj+|ko7HBG=9f?W z_FvDnGmEqR=A4JSfBhTFZV_Pmwcmd-o7UYKoF5AT*Y*)F=QF%2$!Q}IA_yW86O}W2 z+vzv{?Z>9LviGN-aI)Y!8bQ)(+~eLS^Q=Ry>({*iu*+?7F^}gpzP{51kZd$mLeFkc zhH%LP(*Z(R>5o5W`THqaw!C^m8Rbyij9f-VJYpG72oH@;)&dTXSPO;UYMfcy11|4B zRUmK1*2;f*wovJe>u*aQI=b! zo~$Ic;WFeA)7RGF)6qO{XMVk2)6LW@V+G94S3w(ccZbe@{IpG)jg^|Rjt?0xghI<3!vQxdSV+d{ zdd=dv$lBZ*&Fq8KG(@kX8QI7 zvN{$_jbYSQx%SN+dkZ!0(^{;vrQ9uw&HtjJ_%-ctNJC7jOUZ1icJ9L#g?gdz~*CHUNp5t?h`} z`3hF~e0anKi+aAAV<$DQ-%$=UAdLn^UVS}1w}du7fBp!`PsB3HcX76;H5oUzsD+eL z`n#LiiJRrG%rEwPFFD|9H$3SC#OsHmz9w`X1P*q876_D;l*yp}mg(wJUhA|=M5C)0 z3OKEwxbXu z9KGEYKy8}$+JUh+N%ECq8R4G<;n5Lu4XG2Rk>*OZs=O{hKV}D^J)&ISZZ-p`tqyTJ zRvTX=`2Z;Ka#g3B0`H?GVgpk-k=y7Xf^L9a0cF*RL5tDzUOLK_>rSiQ5w`$9%~8^O zA0EJ<@%ak{cQH`5SK)P1@^|aVO_*C(_X~mD(f}2(jU7?A%?F3CU*QCO*<#QZ(Q=sV z0YHdbq{A*6>kl>$0cgMl+N#$039a+Hbt6o6EBheh+bxX|08827i!f-o#2sBKYW(!Q z8+!EeIRaO9lQX;F(GnG)fT_HsJU9?g-dIJs+*BAm(!=86Ch901RXLvJl?V`@K1U%VJh$%3IJ$CJn5$I z+~DEUkNw;t)1H64#f1T&BMDn4^3aJ7PI%B#ptdQ)l;g$iojf0HfMy2e(RAnK1{Ewf@h{>Q3002eK z1;V%i0QHl2KYwii02CP)@LdI^G%Vz71{9D!HnE7ylHwdmNm1f&+Cu;UK#1{(er>9h zjr{SG>(>S~Vc3tZ0RRmX`Q!gx0Dw+}6XybZ{5(K{;oqpF(~?)|%b^q^JS#5IGa~(t z_h~aZPyiZ~*!%SOA3ulTGg1LSDci7LTLpRdMhHW}ZTE%?pcIte8@VqoLqq^DjQm?S z1N>0musp?^hH;<(@@`~uLjgb@7a4~^A%X1uEF^b#Z)|QxzrR;zGLiW{pw^%0`<( z6K{tyxM&Yz<80KXE;(MK00D*oX#kkoX}<1O?ry1z9D>R#>D361+sH?;NiqmgtPH^7h#dRx7d;g1 zHrvoCJnSH$6WOlkDGf=3a$}8nJ8{%n6*;Tv$%D$*2 zrLS2IHE!4=Mi^Wp&4wKd(u#5vs6hUOv3S!B8&F`EQtC|w1^WP?WQ!)h03q74j{+#U zZa0ZxHb^SCUYzF_Y*7IKDI5g=n(K;KF>#p7nCGuvJFGg=HS+7^4CWl;js|DO~3~tl78e3u*N>X*PPGbK1A>v#hq8EAt&$O}DTZ zBUQ2VT%~kIFm-B_A@wAzvY>{jbXwoJQtpN-^XhF%teW~2?4n%h zH>s^g1iD_00qHb;<660Eu;b;wq5=($+_rRG8{tf7ZkK-}K%PP6)o&~}&FooCIEH*A z86E7ncZn=l zt4df#Rw`Y$Ml>K}XjeDOG#u?L8?Q+vn`*GIs{INdCErYq%JY!i35>)mFD(PKp(DMbZUeP;9W+sl?P%DbRXcTS z%d=&5pcUH9rBM8_*_7^I-W1W&F8@XfG~Z0M%K5n*S))Z(+`&^Kz}=UXb_41B4i&8G zPf!^hMy|?moR-EAK1-Wz+z_%yONw15wXNL(W30j<^e^p>rECMnQ*&olGF(%lRdniB zwnxiqvqosum#%wOQL~I4^fvJtJ(S@DKu1w~dDgjt)EfO!do*@JZU;Cg!~*y%8*KY2 zl6=Ux)iNP<0<4s9TV)XB<#(f4Q}Lqm8fiA_mdeCRwgm00MC;5?FttHgsF+51EoKQ+ z$D5`pvPypX&3LY(#MXEsdeu%!DgH-9K%P)W9WoVDIf0~`XwdPs^L!pf>7xb|xmDUv zZGjusWbIQsxsk!BU0WWJc}ZCC{7S{p%6$_jw&026RolsxbPkfQzl7iPl6P(pwM|7s-QjH%&GAQC2APC*Y`@ z_hF=|b^Wp!H&*Ly7-zH_l6UE(mb`9fhYG+@G+6aBYL-%o=A_*#DAT+D<MQ2_j|!+GfXMT2aQ{!Vp1m(O0i#&2&zF!YS~1|P6S1* z`B|ruH;#9=<{4&j$C@N@`45L~;xx$;w0S#xD>tp;4#Ba22FxHGx35s(*ZG3l58eea zrgbymUD-(`uk9yAIg*eiDD=|Cw{$Z~a_nxeAQP8i#@)2S+mgj9% zl~NiHpt>T*E!3^L(TUfFps8U2g`X;oMfXT4p?+?0?_u@xx1C>Ajz58EEU#TJ6iSI# z(TIuaZoGtaVD2Ti#yUclS#M_@mjz%)%Y3wpwF$BV{ za#=q?3N61WG01y~2fGDto3tt{^AoW)3JW?%LOK4MZaf-KG@iAcnk#32k8l7%9ft3{ zP}HB(j}e2WT`d)PE~gnSBpK~R##LGgx#R1lm@v;REmt;CigE_K<=f6 zEc^z+fyL0Y@SQ8SW2wA_uBTZ|s2H}<%LZww@+a-uiipgOGo@Zs=C8Z7Z>U0?u>e^l ztg>Eu16rd@qmvKP4pbpJu^7D8Qt3ygcE#wpM;V*lIKh;>xXf|DK{knx1gF=U-&%h2 zL7=_+n!XwD#XJowv0LLnC_|$4ejUBA!Wj`L9XG>x%(!t)Cnjp5E}8AzJrEojKtF|H z5v7#OG|u+0jPjn31A;Z316jLFIY;UH$t0%Ty6x9i<>Or;OLH{KHhF`%71?MJ3w-7x)EUTdyVev?U< zv%zhh!zb8&i%m9BgsBbu>V_v_x4cL*xx{OBFp1k{ahwK`-(V;jE&Cl>W8F<&7o1py z-87?Wq@8?|>0$J>=?C?GHi}AFVC-k)31Ta^X(@HRX8-f9x0+|@Xlug|20`Js?5FA4G%Q{hjuEblL5GHF zMn@(ioVdkqmQiV)AV-K*-3?+@D|OrbEaWzaIH_&kVj78-?{TyEz!mUDh+E4^wH&J@ zzm|8%s_POQp6Z71X{SXSMALy2G$`_V^LZ-mn6}1@6}suiu|n$A``<>F>L?X=zI0+LKxw+nIx!!=d@%7dDM`Ve9P?T zYZbN#JUR!|f@>WX=iM7quA6@tUpxaXujQzvmE`T`7~XIjh4K`&j8chjVU3G7na1IP zkIG{mg;6PW>Kjm$9@ANvv*!ue&qC3769%#Damfd$v4UPFt%J9RQHC*#q#rM}G%Cw5 zA_;q%xDDTBOtXG+BeeY*Azo+Mk7gy;HaHR6NJq&;PP552879b9-)r_iy=Rctw1TL5 z5X1;*%$e+u>AuVbB!z&88&%C1#2f!nCoU6R{^?=(Oo zE~&e1x6Jr_M<-@Ko2OA>Yk@g2b7U2ijNG|R!ox$!jWio}&beWHqA`NInH{EyRVxmw zoJAXFjc^0-=`)dWQ0i-8-73#Rlr9TVH_sC_VaHsR?Vbt&2Tk_hL89hc^4hp}- z<*|@>Mj9wtK}zp5>MSe5X{e`@-qd>iJRe@smYdi$-24>!>9kYPii0X2P{XUQ&Qj|_ zVHMN}|MkGr-7&ZU^&^j%M=qTejU%Y*&!=JTk#G%PdZ|0r#4jw7c3YsRn?)U!=DIaP z!fzP|S}98a6jxtPQg!~bf?81Z+a4_A@PwoAnNP#5eR;s$7KT-+gAO}Z?s%(loK4!+ zrjgZ}G1TTr0FZxHRo9wNqIk;njegmQtH}&hRO*;_6P9+OX0g-pax-SE&`s#(A8=uy zxbkwEWKO)Wl4GC>TF1`e_BjDyhV3ZK(X79Gje$noIvJ)kAogoA6xrt>G}2g!%9S0v z?zHG^f9z}Rm*?%&=F`M{wUjIh(-7K|g^umHc!g)Dqr-Di1Oa&W_ zvtd#}I#JFv%4;!g5x(yQKv7gY#ECVJX<4wr7FCee7CEl&P)OYPqT2 z_S-m;a$IOoSmhlCHEyi9=eXhVvIs?9A&nCn@xBKe@~?vQwtST84PtFINjuS%NUBAg z*8h2tQfB*UN>OS>1wfv5G3i*4B+4*UzKdz+hNU(Tw|BySi;tMElsue+o` zU3WGMcaE>VsPWQMm7*}b<>3tvZ$xAxV_N(J5EM_w+c~}!P+Vm(iDxHv(14m(#~G<@ z9G@OV;B=hPVw7aB&?AXxWLyn~$9rHJ@tQTyyy!+H)iRPYfzyz?5|>fZUYK`shuye^ zzvXe}z3Mgf6T_mLUXi$8Xi&7@rUv02;{ey#uBS;Rdtc;mO z0cC(&q@(196fm{rx#=Y|JW7&3Lfp;^h&M9ndWTz@0zn<7uI-c-|9n}KVNf%@mdZ`* zb-z>1<6BJHxNV#r+tF%{?6jM^$p&O|8db{>XgI!>gXfmIbgB;yV%dq^S{1qngn?3K zY5dy03u+97PHVXzf~Z;~RU%%Ox#4dsX%J96*W4v#ub5Vzx2{Ucpq?ogD!iPs_c0e^)EY~HxN z>n`!?NH{HQ)T%orCM~mQHMv}+Ldv4!3X)%1gs%=MUvQVTJv{uByt?QM6o48JQtx}{LXJnE*d}$7y z^!*bcud*GbH|3+uV;d=U8Une{Fg@^PCj;batONs3ldHm??`Wp)mx6c;&@) zTa|MC3Ny-gF-bCwzM~BqKlWfZ_K%MZMdA8<73ZzQ7Vv;Qe<3mf5Q723a1uc^%(3Nz zm)I?v7$3Qw7H*q<6x$=hkh;++2JyL7)h)z;LZs@uS!Y?xB$`UpsYvLYL{-=^7lu(@ z1Wc`(zfCe^t_*{NT%G=sjNQ8NbFXplC}QyZdBneG5dZ=}C+WA0yq$wgmBm;AMy&B_ z5=}=PZl3@1=Mxtb{VQ~0l3MY&;Sd)YZrZqMTUL2+*h_+G*#KT zQB*h;;nTt_4LRzEdu31(KI^`(ePnS1rToUPNbN@`+YA+`jJoDx9D{i|w|#gbqgqcQ zMXc6~nDt!ajhF+E*sm-gwrMluDjEtsOB+|6q(at;4$p{ToXEGn*I@ZmJpbn}BqjjB z7~~9^1^Zi}42as3%Sf@SbLfZgjPJG-`L)YiKg@jk@3;U!P&lk6>5{(-bYOg`v_(S@ z7a-SDGG^n{j}s;%r}Z=r6Fsh<|MTY)(;|AR2&%}X-yljpZMeoHnYGI;MP7?Z9F}~c zDK$&^v9qXQ|8?iadb3fmoz^aT5vJr@no*cpu6TW^Er@oOH~Zk=3XrzUMcOx=eB(( zd2D2oe9&$uYIY9-BGa-Ho%rqBO23nDBLjw!4VI$>!(vq4|j{jRdra+;kMyNLoCCx(_m zvwj$qCUzx6QS;Et$XU9~70^+5u7;6R8(Xbu<%ulKHl89Bd8O?np@nK*{?hat%RBKK zhif{=mzoPYqeqpTb7wcdi&!hCEbxUIv(4RFtU7_bG;-Q^ykZ)r7tEq}BL5;&T6H^2 zt7U@LLZ_ht@ueTL@l$J6XYj7d4IRkh5GUnS&&wX3ZtMCVf&e?iT$3xu*)$moW3Lh- zuYKsY&8#-zhG%OGh=fj}N-{`jp{kn;0reZ#EAtwq(L{CP9t>v)zx`5UUKR<#7B&wUfD@b zxvQINaS&-$FAZ8i#c)hX<@GqB0ed%pcqXM6leq00sbrN74S9JdZ3f!P@<_S~x)Fty z2E=7A_Ta?V&d>0iKp9@^C#ANFf06*RF@Q7fG9QLgUCynZrd8HW%2bWv7U8h&Ij@Qv z<@+{nI(m|!k*KzsMW}>nYoHMm)RZ#EYs#loWrEvsM2^D)ONqEqb8`H%{_UrA^{A zUo5>Qx!0yvkx~RJtS<_})+z+0+iL9LZyuYPFt*z^3}PA6ZBP_8dEi&s;kArzL=b8V zKYwf+95+!5yFe@e;5PlZgEHj1hBqp@;Vns9dqq*PPVIT+UUV&@8WFCs zrc)@~iw20QFmB`eIeRA8z%bl-6DOKlt5X0Vr~-Cj?eKsy06HIX!Kkq85d8|2LmZ1RHO4(o|h$3@4LZfAO z4+!$+vthcf{*NLc7ol9Y)Q@RYjO4A1u4hzS%YPVj8`;q%kCWZY@_qo#40w7+N^);>1ckNe_{IOM=#Q%e?4D{P7Vj)w4^k zZB*+Xbl_Yq*jxjEnyvXOu^H4Daz3(u1%L+pgBKzb6Y&8V92Ne&xQk`@_sj=C88MOb z0N*nj5r#ql$N1x*2{apZjDBBD192gWu09{W)gLSl~%0H9R6 z>Bc0=qH|P;s>TiHAz>T=uHkFJvVf9>`x#{6ganVR^kWklriCPA#AHYZ0EHF#hF|}E z?*KXx6NS*Q>%Z}Lnu5|tLvSdB+Xxf_!fo&*xQ2<4UC&{76O^!!^9b?*P!s~BcbY2x zK?H`0iHQi=%oHlj02A5A^)vk17%+hr|1!c5N5KQ!4?qXbLC$6%i_AhHME3BWEt5DG z=qAOJmVCpm=QDUlPvX%K+yDS!1ed{1P+!L-Ax07bu^ALX>7#i+cSAALa6aK?0Mu{+ zG6nzz8#spD^Lict!U^Cuw&C~u@$Z2%P$@uAd|VuW-B3apE+j+*0MLl>kh2&RLh&#E zJ>R6pP;Nv4K#d{ekhrIihyc6{iuqc+`GuhV<#|N=$>_*F`2R_S_}k*d-whsv8$LE6 znB4$Sd>t40zx?5Fz+498LWuJW`z(I++XRZUgrNbI{(S_)-Ei9B6fD*3+ozkev#f5HSYE-{QDl>YMf)It&gG8xbT0G`Aj z{q|n}MLZDz_0~uHS$x8;3)e6fHvm9-t$j8_7Vux{vv|{X0sw;Cbrt*ADPb8r#p-(slpxtqanx9KruOvTBVRj z1;q-P9=sUf@2j^Nw6ssk?v$>W+>VlPxwlfR(I~X1B&AwI&O<5bUU@WFgHAzBDNahR z{S;G5=B8M&vD}(bYc!-->fE}@H63V_=2W_Wa@!$_(*RJM+ssl>OetwuX{_Q+Jgqn! z#BGp}Da-J*Q~7jiK&@nwl>|`8s-|+Ac(p*PhoRGSq7$opl)Pt3cClh0@=m(ga$TRa z=tfo|z7}y(ScchNxR_K3$)<~OtYq=E)jZh0-V|J9MI-4w8AMBwP)lz&{cO?({N@}LE?If{WO|93Y(M@Nmc_r=?`Rkc%_%rpCFf-f)P$+Z}0E+Bw zG&a)QFeAV>wh&76YN;)ZmXhT(FGt81h5__8nrLB$q|3}R0(gIo5ZRn0N||b2mf*W8 z0w`e{X{d#{;U;^s&OU>E{4P>d1RQtI9KDs`FO4?t+k5a^3G zQsQm>4%r+EuQ95vn(3%(R#)>IOGAbLC_|K(P$?75%?%kaU~)sP7g9$eVd6n0NdAh&OSEw?C z11m~a?5}JAHH)Ec(ThH~-^iVlYT@tgf9&-_P!!eI{Y2FmMHRt_uSNaEq?L2P-Im?D z;qzXLcrD_F047mZi%s0hO13?#fcHTciS}XoriokWJDaqZ+|54<81S^POU7**!w)J- zC+~OOiUf1g5t<+pE9td~f<=zn@LT#!hmmfg?P>x@q-4{@ELPe`3dE5SiwR)rZgNuokiE*W+zWvH{)5^!%ubvJS6I`&r7 zUr{!hcgRa=r(`fhffz>m&O<*x6>-f$Zq#_OO~Z9-YJCuvQGT1Ar+d5=)Ek&!DC0Cr zky@u)?1enbEKb#$6V^FG{5{h)fEZDEd6rf;x}BV&6BEf!`$Fo+nd*0Jzo)9B^)^6| zo8(byrNzUXrLDA`Q>k3cF79XKjzn>ppWX(0elIWd`CHQHmqt8V)V*q{yo z@R~4r?Nk_TaTHD8&kiVMw_3dS-70?V0X45ZT;Fi_WYvoMB?T;_ny&{w!Fn&5n%_E3 znV+0G9U2~v&_LvvFzbb|wDR4C9zn7hXhaOHB%m)d%Hq^UOL_$b&&o25Q?+4-O%AWl zK`udNirVj4)uYvBK#-dqqOV&#$lt`Yy=&Jw7C{+cT1_XRu&knVYn9y~!8E92NN#pm z%ws5dwQyi>#2bMF?S#80t47={bMbdFI5Ck)8_TiqIvvRD=vcTu$g`@l9VE-fG|FyZ zDcN8%iJ|l_W4BJ|EDH2@JXdehmTu5C46^rhfw}9vRY`c#aVi8z+}i$|ZYw)QEkKcb zO~x_e^e*hZR~O4&4uOPzML zXxH#`$pYQOD?lgVvmT_i+UPjVU+?pGR~j%TauIR~GHt>yVjBR8?9pf;mk<*J5ezSb zQh}0OZVI88Wuy>c8>ms@T1XfN_#HD6W8P2h`SEK3vKbZuY-AfDMy`YO^0^EUMo{wK ziU9Hf5RxLpZ~-dyU%@wAoA@uM1;FG$0gm!9U(?lVN^1Qk^*+`5&+ASfwEtB9sUu@n&DlkPmaAdK#kgk5 zC$SI>(Tx%^3~}M)qktMKs$OgfDi1QLsAK?Wz3FpH(PJ6zH8_1eclswmPjO_qa1X*@N?76 zdZC=%B~HgbTj;qdW`AR&Rl?RnhXKyb+IqR!D)wv8^ct7&#+Jj$uHiY>#zZ==!O zt#-d8UewWnxc`&`15Ai$(uN8D1owuZ@X=89}vqt$bIy`LtpJqMVMjV zsq&YfywYKIJzE;v)5FCVma@-upO7tZn+gEHQ=Q~&+BvF3sZe@ZzXl0^|4e7J_I9~m z6%Q($MwiPyfDki1^g?+piOa%Vzh>e6fn$;}rH z%%}#L=i(>dGu%mVw}9#8U~4V*YDIRdvokQOaJ{2*xR|7v!?}9>ZUF%LNUyE|!2iEX z(p+u5838IN*rK|vpx|Z|KyksoEd>Rn`{OM^i3$p~PyicIz)b}O2nh3Hm|01;>sOT1 z)l_i-C69JpLBVAJph18Ypuk>O|HK~~KI#ll008-wS05J^SI9*v%A>;=yeNDs}#4dAU(ctgWo#J8IX?wi!F3N9r#R(E=n z#gA2Qc9_7c6?cOI1nFuOc~X?@hJQ%OZdixAZu2>MX#jwJ)0yY2B>?0`x^0>p)TmBR zXM+Y0J@(-|=`3-|BfA@0uMS(x7D&08x1)o7&7&ULG$Cv(UgA1JMi2klz??kdz{FMFJ8k(}#I?wWsw%2RQDC-`+3l~UrKG$R8qsw5;u=H~?O$KwfWniD5wF@pFoE?;DC-3~I zrVwN{S=2k}F4KIKXa_}yO2@m)fBw44POLBXo9QUrr&n3L zvN=2I$avHu3jgq#&RA~L=2`D{+wP)Tp3lv=DD~}aSdNiY;h2}fvG>2xEdVgxjWgFG z@Z;_0tygurZlgJ^y_)N@{iNCX@?N0g{Cr}&Z)rIr)6Np!HoJKh>E6(nVf6i`*S2@Q zq^>`H;c$NF)1*)Tfor#Fu5!aRQD)^l-0{)Y+wqr4mSdxN9v!m}7isG}s~H|0>YZ$9 z0?BYKn(X5<(%?Mg^W5@~qm8gzs&c_<-QI8GzJo`;*TTlK=_GUMw)yf$p|pq&--h!m zb-pkY{j~L9#dfq>&<2BNqqZNu+!e|IkNNY5k*AN6Uiqw=J$*l_`z^leOe@@Z!P;ni zAm2T-%f5d`(K%1kT(>y1v)1pN09XE`o!k2U^mHHx7Pj(y z-j0fojgEGhWlBtw(Ojwn!JU}dtC6zZEcy6d;59%eULg(prNMF|&b6A;I(xg}{)%-s z2GJ0=lh2@lS$g@*&z(i930Cx?#Z*k z)ZWtIG@&tWot-VNtl3c>dAzr}gQm0>TJXLi?mqk^xk z6Q8FO!kzmdu>g^=9xcyrXkq7!mw@IW626 z9v?W;9sS4b%+A`SbFxB}m<+R9@c(kpu#K?o44aNReEcjE|HqGGPamYc0!88b@Z)(B z#tc>s`l%He%r>NS^_R0*WICU$ZGxs@8VucqeNOKfu4XEK>edape_>h%Fe5{L`%7l< zs5{6ob)wcbsC3I7X$uf0*npjotc9`&aViyMal( z(e!#YKRVp(`5Xv_I8mMD#Ug3CUcOmJrDGKg*>pyYmd5=Y0hYt|^vG@Pj&B#!qn*{| z9^=4kIzyJ>pkC6jn_4&C5v%b`wzoUomYD6wt4p!ePvb|2@*HEg<2ee0zAhLx@RT=f z9rrnUt>DzPGk@qR9Cq?eD=KLW*V*=ubT|5$AQr?$p0S8>HN#Jgx&_9NFtWwuYy}jJ ze_Ff|2r%>g`P_szynlEi|My%eVn01FEkJ+>BV1m8Si%zBql72D)88hCUw+|QdJB%c z%4VLuC)XctG2*Vj|Kz~w+umVST-|tMrqpHJlo#eU%fpeIT@c%y38#u~6@%^m#;Eru;E!iEHcG9mOMUG|?@sNw$wg><~t))7{_F=p0 z17)B8JcI_h$H#};6|bMPFk)%MQJz3`id&vYM-BJj8Wem=BsIm(&WCAp^Kx(>wF~FyZHalJEWGyQ|UETpRWawRPb4pJw!bC;TQCpqKY2&Vsf-{F~`$ zzEb_>@nM$>rZAOO=jR%2ce=+pAV6$wwf+7>ru(Q970UQN{Ipn`+UM(EY#${@w9W|+ z=Y7w=h~4^TjF@rbm_&JzG6Bz5=Znnz>d4@@Pg8w8ThQv@zkmIC_u`5`o6d_ez^Yqv}zf@T-fHBRPcV33D*jyirz69fPN zgjOA1&W0YpXorye$ImB!`dfv=)$A&(aCUH6%ro7r?0H7xYz?T>|L?~!=ifxVdJiy+ zZ1wov)Zj($R-`dY_vYLb4^%`Tm(fdy;8=7G^kLfX;4YaJWM%?^A zBG8rQ7Yov?&WGn)LH+TMe3^Fr`s-Z*?v{gZYtwW-t+47}zwLn%^UZh5Bvl=6U)jXB ztCgsyaQ&Db(`2G$iXZdwZ{#6nxWw3P(r)k8J)3AjtFrsQvxA0CJQoZtlise+3|7*x zwcTD$&y3^E8w$+x<;Qc`t4=4QGXOdY*XiX>w0ORn?;ZGYLuUx^u(F`6cDs79z%=Ucr;m3OPNwyE;Pc&I3L!z=Q=Gs z375rXR&bDBCQz)K&1P+Uj}MC+Gh5d5=IySqwc_@Ah0#{0Yn`H>Iq!yi`u6WasbLk3 zoAzUW`2A*=-~X}#9;C-Ta_a_{u)+`&FOuueY+4)&2EyHftwwGl}%!gROBV zM>r@YP=CnGNbs$FiLNYv|9wv`0gtt^^5!%ER% z4{1;~?~gbHL*q2YD_jKhc>j>y`<)#$bl|z55wqJ(rq^wwyKTp(%K>MP{BDI1Z}R@b zxooG`&*&ThLFqmDkj1mIgG|^4LuaGTcc1PGG?E>D{qD?@haA2SKg_}xqhYE*P=_O* z`|ZE{#&TOI{wufug}CykZrt#@r~3hhv68<1GBtdVnG+njQBx>0ofUR>o4W#z@_?t0 zS@DaHZ9D2J%=`pBzqgsnA^-+s)BHlaZ&+YKH7m4Xaqc=r{$vH7${1p>o3 zM?GKuYCNw&ka3V(NXN5P-79Ny?vL#}=ymcUjbdCNol2|9mZFsLg=G0AUDZHp}b9Nm2jP6PqIo zh+|~x+u8We%H;TjGQyG9*v#jYl?NZjmPyHk1@~rd`{c=-QS}ejgyPnIrqDH zBP>9H3AJokGCi+Ah$-S(T0f6FmsGKrG8yuXsJA~m4;t&s9cf4-(vqD)(`nz{X_}qz zdlj8{;^T**gJjayZ}s_>VHpygqW9W2x_Nz#X~3J#FK1Yl`B8>2AbnJxf0$FZ9@k64 zG8iyD=?7DbM_6iD#*+#=?DBhkq3`Qi>R>PJFqY6l$ zcYaTQorn8MM+w16r}6qfUeD@%dOhjD(;jX{j+W9+z4_q`-*h|O+%s%LzWr&g^l$&? zMZe3%_`(jlenJG$iJ2TG%Npi$`@*&i3QXE`dcVvEo%|sPYmRaIOlK!t-0>Za0ZC+M z%wll%*+My7t4=RhW8(L+VZmTX81A;7920Mty%sZS+@#n2=26>ea9~DtaQ17I)mh{M zCGIu7oMR`}=gDh~0++U)6E!@$c@jz>Mnu0}PjuIYUd;qz0n!+f*v~&?o5bOEO9&(g z3E~}I&&T(c2E77f@CG!PU(707m+>=$(>uGcL6`A6o1xF_Vi8qMZeK79DlTtkRIS(L zl4F@7zTpiOO8tsXq=@gfCP~z#smk|GI77DKO=dqV#iGLKzyxMnyOo{%e%8@{cfEI_ zv+?e701&eMq0)GCvk zBYVd-j1J8^Gg;B(!_#IO@#@>r_{!=v*tX%2R=SfK*75Y^&%=R91iPQmdNCe{eIPZ{Oh}FkX+0=SO*RE!3?@>f&+F8|;ZH^_2%JFXtnIoR&{ritROH1l*uWdZm zPh#CV%!t$W(TMI+*r~|J56j4ew~N(edR=`+EC8$R^@5$7)mfE2N%rO#yNDw{etv6t z(x0*Mjz3ukh*CSut8d2H20D%sPd8x&jT}?k-RGl8R-O{&A;|med*i%Q<&!;~0iehO z{`k+!gq|>5NPBrc{2b zlRNYucuvbOyz%rrv*Abe55YhOrr{_zUq)1Qyt$Pp-EME^(^--j<-foQhhU7iFMF{i zpKGYL{4iaLw!@<@$YZnKBoIsNtxu4CuKv$gS$3Y-%bNsyA@GwXgHgSGE4Q)e?MOb$ zy331Yjh+#`mKz<*Fj6y&YX5jMo#p9q-iFu-X?V7qRvK?n0l499Cg*cldsHtAW2|r1 zn_|2PXNw%oAAiWk7e%F(X*@Fb26VTf!lc&Tq)K!-d;I&aiTm?rwyACxrZIqhvtWX- zrp1d-c5930%h|z^WEv~%ZZ~&@5>XxWnGVKx_7Qd)YSh3y=skFsc5()ah(CUw*n5;) zTyf|7=jXK1c{a~R=+QZ5)K1{(JKaJOqr-I4(i_y@#eh8AeiuZIX)+qSbqDsh!2)BN z;G9Ana{emv8#-`@+0`tmZBO?acIzGWd@(&*8Vm{oRj2vrY*D1dc?hwdX*kwB*`Dt9 z-F>-kl??zArO-EgW_xk~aM77=cSmz`-DnKo) z;^Pv>;o=Qp^nYiy!uupk$->hVJ1RIi^xv-lz)+aiey5@{NZ|=i?LIuP9aDx8Laf@` zhu*Xj_6iliH&b;t>|M)2tc^Zi69UR^&-&W7sT&Hn$H7@5`v}zTdBw1G#Q>@-pPoouXkl@+4KCHb-#UY{d$91&~^{r zbzCl=%5e6qoK|Q38h%u~7IzD-R>AYpsRYSqFNEKaVsW+AY#*N3sDaFMjE*KjaRoq$ zuv*!4RXN#SL7D8vCzQG6Ib{ z%VppDw@zhEWPfj|?Or?Y*v=a_XaudDvW*8q+j9KK7WixRESyvP!s2`fq|z^g=`*X# z=Wk3;1E`rsx$UE#jeVMcZeeQCO>l0YlrYMFH5{yI2!piY$~l=I++7O7noitta@mtM z+HnC2^{n(-FRkdEs_6D!>DfDSEDbeW$Oqh5&RK?DXRr6zesJV@QvSd{*HYf++ zDkpl`A4Js0%c}K{2nQ0(2&ZIpYRv{Q?R&B!9DS{R-D!IW2DYr1QwQ`mLaRj>(1?9T zJq;QSawyR&qW(2{e_VWoY;CzGz2h6}bv!mot@{~6m{Pqw>TO!Xae^=e6jjuGk~Vl^ z+4>r-+Hb$>45_4u%N9ev*4Twd|SApz?uPdlv@k0ag9 z-#66lVQ}GU*Z)0DQSHm+9#~t2p*-T>Kc0O5S?D%J*GQy&`0qETTzw(J2JZA0ofyUl z1#X*;rlF~Jw%rSNS_(z!yqxw8ms);9t*ft_GAXCypUvN!`E0V;1ZOkO=Ifi~TsO20 zhzLre&98sXwyWkBJBfvQM*1DX$x?*fJ$?3ff^nNDK-cD69ru3L|KgL-ui#D$e%*-R zti=qY{G>4Nor>0nVHja4r9qe%tt~IXX*HYYoOG^IGL(2(sZ8yv07|&6pMCIJ+&%7C zFGZu#fYNtes8vR1KKG*k@*Bf4sx^H>h`GK8LJWlxJZ1Hn_71pQV7Af7VH`D@T;l;L zfJQ?p=BE_j5aId~bYfg1bdYp`bQtovK{!G&PF##k3M6Hu#Q+ze<``MNjHbW#I{f^* zp#>6Vn3l=oYWB6gV9h;jr#ka1DSn&C5p zZ~%n(jUqrX(l`C!1sqYvgoaCrzG*RopOym6pQ(jR3hZ4GGklFz@K*?kfA8r*8^zZJBj*~*%2*mx9*qG9S+}Y$d@$(F}~=%Z(0&003&1k*(jSnYCJhxP-N1yj_jc^?UZ* z?AG&H`{r0%&TOoe0P{q1^3kg(E>$$(CPkIlK-yC;$>?Uy$TO7#E` z?;kfS87vTu%RfI~J1g;e1!i(1mmpij+u^~%qMz)|)2aPqCWBc<{+@w>Yhr&>ua{|YYH)~G6)gDk9m zgOi?T!;jx8butmkhIxPLK3ozV6$S!j5159BT;8I#kv%+T*IOKIeUEp#wzkj0$;-|$ zw_jOdOK6q+c0J2q*Xo`47F5f6V>ZEomv>*le>?Dx@oL_5IA0ritxeTE^L4h;!4uA2 zEThs`x`)i>)4aW5Cqs}|+f1`Fo_hIW;8xPs?lhlH3Es*cA34hI`Rj)>juz#kT(?z$ z`*=L&#^<~BA{d6(TwkuxZL{OOw$l=T96$t+VPx?4|CsD8KX5kSBbK(-%$eKf%N@#q ztkH5dk2N0SgO=TXo;(DF0YXe)S}cZ4MsLgkFY|GOjX0>D+nX}`AcOB0bdDv2Qsci3 z5B~aR81g3k8~rVX0Abolo3n4?>9ztk_{$08e!#;02^pK7YX&kd*S2lRh6#uI*(E$9Q>seAEw% zLXyA2rs#A_yAvBZkHNB5P8=@9L7ihp%AD?=DK&1?u>YMM`SlBKW5fB`bT27;kuQ+=vW^?af!-KFkv&eK-E zhr#V`7r3Y4ukiovzbtic#r-T_U2Qx3(<+U3TqBQqn?68nS2FWdpXw^Y^F$qX{S6mb zw&{6a^{)d3E*gwBNyZdC(%S8-D zfMP%iAWIlcj<~=4dM{A&d1(^}h?&=JLf)B`+ecsAzSpFIc{Z58;r))*^}|G4Q0mLY z`2I>}ddeN|-XO=Y|DN^u@)@_G+GdtbMWy@odj`LJtLfDuH&Nn{@txeO+2Z~Y;{Xg} z<&gAqqkNF{=7jz9=`mjQrE3ETxj{MpxBVXaN8Uc-uFm22+kai;FGT%3N43o`o7LYG z8)fI0*~s3jfzw=dl^93@hRF>AjBmJrk%*{X;UAOs7MQxhFJB=K1yrr~z%(-K`}NTN zqkdSj8R@t7F>mLCdQUuIY`60%sce1q%(pZfxS^66veF6jLU9$3e;RiF@mFmN1cZDL z;cv6k+@;jlY#`m%>h(76b@oCyhV-+s)9P|5RTYkp1S9>{>Hj*N*k4JbI$sH`DjNAZ z=y~^9>Nf9_WgbqL^cROm1^m|P_uM^h{3x+oArf0?+237Bvx7$)jiXx`vVNtB9rBf&z8?f4nby;hEum{ zXpr>)HbjXLhR+lAA)S*rZY!?O&PjQ#+ojB)|2sSE^B3F(6otcnkeRa)cHNiZFlF_! z+nG)#xjKyAVZOx=JAMCZ?seO zV{p0_lUU_``HXVlwW{}HeCW-SO!MFW^Bn(P)XVeLRX2lathT${(KzF3J7sc~$(sRO z_a~azvLjEPctJyG>AN_as^N57_Xix^iowylR|*DC8=y>4FLL5(3ZEd3Tz zh5)t_O~vTM5J1s@5hN?uuD=m&0Gqj`R!|oLjku1qd}|fVuyL4iJk3C6SbP4`4gm~i z?T^jipdw{sAh#%8FC|+O)(6WS?E@_lH41;cu&%HtU2P`iOfgaEh(h0v?% zjMRh?Rm-52;cXcDSfy@I7CpD>`<|bj3xm3F{pWR4588jK4T6bVl&^h5iM(GgEI;^z zQIsyDp6N$f2M!GdvnX9AjcgnUvd*l*u&>hP(mQ^a`Rg6(k`k(H(UMkjf4yx@W!)FM zp@O~AjPwf*Q1-9)@@{n{`|gGcwcYkD;Q}iLt~WS3B^;s~K6vFm1=^cDL_!F!DJHIW zJ=)Y8%K79eyA_n`8uEF&KUDvz{!{(85q-hGZe`Z|8Vo66sR-VE8N)B@ zXTq7HXQ{lG1}kB{5S9yXxe!bl^QACULS-*RT)7o8LVB7D-6(?gEo;k)JU@b-G*O~W z*DT5qTnA5qUILgio*ZBXF3eKn0UNG_fUkm~A!gT<2St)wol1)!aT0~^-I6rn8BhWC z0bt&+2ox4(FvqhKKg$p(2p_woQarV?s32#oaP8a$kP!fLhl1cCu*j{w0t#wdDXPj! zg{C<_{J(#gfn31s;htu1`wO8TmJ*jrI|}%9nQspwMZo;wjIJ0VPX-#`alaJg(@JbAt!3eD zmiYcy?e*a!U=6AfuP-5=l<2fAtlp=`#Xf@xC3E-M3(J0d$b^X{TK@(YnOHL&LlPtr zAs0zbr1_gDU?9&S(M*E)OKsoIGyI$35$3p2Xt>0%H&IN)L)yMwpv9Z0gY4zMd>tfh z#2a~rNeta{Z6fd(t`mV6a3#zDgkUld0Q-PO8i|XJUX)p6ssmkgxWGjxcTOZi0I*3^ zdr0kKAY2j#i2?`!1=BxiCE4sMhycXGiz7^j3mAb(CKIHgqDC6=1>WL8EtSBhM4Gzk zdNV>04v7T-nZ|+F??V6(SsI9>mW7syw-UKC_9e0;@OyfpaXf}g;|q4p5eyI_DJ2xMuaGA0@|2>2b4pgd4ugBvE~lFJ)dCvc4_TJ>{N7H8Cfj{h-;Wh z9z;vhi>e#B$n}*~Kl8(CD_oH$8B3;x06argx8tOW#WXy+5&v;?!~LLoj0QzFEK`;I z>=Ca;<3~5fc5&+eH4?()@tMYs&F*@uqB#J_?3ic&tgL*sLKg?*oLiYHt>y?_+Zld{ z%#-W{nkQ<+M(gqTt9_35o&J)oUxEgu%2F;#U_M1;XIdN5u%)hTbsV4YEUfSy5WG}sd!xT#9mlCCqqr10w(~1o{0yxb592trvr26q z^lazwm}#FcI#T}tSXsR`Sn?#Tasr;mquU>*mZ+K?V}P2!Jt(cLj^+IP{PNU$NZ=XG zH~l4MXii{6yiY;hZ+>O|QbB^F063?kE~90#&&a^C8K>DHsjMq{i0d~gS9TLpC$R-D z1dm$9=1w@&dRF_0ImmRSpS%h(q?O1w+LnIA+x4qXyS3e==59eE=H@rC$hw^yGU^sw zBK^i|edr{&=tst-QDKD}uZ*=<@C`XG<_FZ|0?D@ctvq0D zPV%F<=KliCF}cQ*^y0YM>1QVz0-BoBv{Zoi|N}Tq>f@RwlmW_rwPWNtb_o|bd}{* z^mVCRJE%1Jcx44b&w4_VKUY2p8w@nbvO!)jI(WKYF4(uSe2RS zB<4YRk!h3Yk_kat_a;6EE42uPhUvAgPbF;JGDla5296dI36Nf|m;IYu z1V&!}5hGAlS82-j6sKACpoc$2Hzjcw^H)YRqApd@Cm3STBJDrB33bT~`E3YGFExVO z1jF7U8lWk7%Cz_NQOr#$r3XYpPQ{nVA=f50L7~AhJ!bF}H|R>r@34eP2w0Xje>;z{ z3Ri|Rct8>W1rdNxIYb06k)%FfsXdInh$SGB5a(UpNC%Q^&7LE5XoenoTL1Mij(^e_ zhHujhpy9aY(&!x7&Ra{g3<-$9lPb$=q0gSve+o+h#{f?ufIGJTD7a^x{Z8|-w;-PL zr*p|YONVxOYyDN+dNFX-;|7nL5wc7n2x)N*=~Z5rgY7`cm=NtBse*W7szKIvLUMyO@w< zHkLLqWTHtA@biE3E{a9$Kv?j8D`z!UgbM_IO#0J#+S*Xd-4?72XhdC8*%*5vpWS=@ z7~ac_`2BR^=-=1@ZY58#z<`Z34whdF)8Paa^E9o<1j!7Vrz3{X`~hE;e*Fm`(WLe3 zSCTtx4->3rx3HU;|M2d@QQ-zjBS1wB%f2iAG*5N)B}p?oWBR66 zO&NGwNwYZtDgy7)XK79bR|-J{Vt*&G7VWD$c{eUr8X$?Kb5DL4otMTB zjg}2HF6$O04V*I`2|!wJo>AHDUZ`3}+wYm2z_{q8?mXvsD=^&uZI(($eY<(424#@8 z6}9?@s{1%SlTLnWRdjQRw41o^`ueFD3@K8M11lb@SY*Q^B=@k&r*M(rxm0>*wd{|y zjW%)4&G^1^FILibR|TsB8etDowc8yUw%PD#yxVC%)nO4e;OUp>p6rJmA~671({j5r5vMihzaoVYV58*PB=}@L z{hXljg63JY0P&ry$j*w{;Rq}HgRoN{#A+B|a7gR}Y5m22 z0-NgCSd~PG)_|wy>fhdzwZ9+|em6=G<=)zT%CSl?GM^7ugQ5V^@LTO!pq3|TMG}uB zAkj@FMc3rg)SKCi`*ogf`Bse^{E-5YB3+Y;`*!ykoJDMxa}__u6ANtzil5beE zRg{GFKmMhQkQ*x1BDL+koR2K$VMDvUQh@Z43J_%vI|hk>=p+3|Khj6MHu3q@X|b^P z?X~!_ko0tsHS@C@*QVZrPQ)`65@UB{45bGEaLvA{eQmQfPFHY&ML_XnT74$#B}EHk z`r!7l=~q2(ZzT4T$o>4e!M@W7E5KM!#@RY@iXl z-aUvOeO*346W(>Pkl9%i4loRH6#l_eqJXBErj%85?x1f|Qltz{Nx98{g)@M>-6 z8tye6WT@Q4D-Eh3$9u>(yzZ{wwXnLk=0$#7hE*>z^+U+i1gs^k;M7g6sk)!>iQRYi znrbssMYAf3o|r8fAtRGKYPYw&t-Ok+C-%hb5T3$XH8T=A7T+X(-9|bGKXhhAj0KIlKR7Q~AG)8Wuy<-V|bRItjENb!V21TXd_ zohK!gtAbtlDHhVAk}pBnY8;%&oo z88k6;51{o!mg9X`PsCX^;pit0F67T(eOGE;RXrO}{(dKYbXC)XpCImaSFT|;ncpgN zQY)3zl0VjFcJ;EIR&lhd4ZL#u_U)#JI4+mff|EhxM(%l)?vY2pK_-z-n@y0~8iTm} zxbDrQa(!|yxlpN+1)H{#RqzNu=^E=vMkU+ULRK-@=(=E3_Tm%geUVj43kGiUajhMr zCs&%PJU&t*`)IkxJx(O4)~m|JE*jV|H#b~UGu|g_(8>hAGKE? zv~zN1zHFo6Mg-)&Z^cF8A@Px3ua|w}_TS`XKT}eO8)c*I+wbjVzg{PQVs#OJbCc1;GFQdja6mOLxyZj0E^{IZpww+n-)iuJ^L7 z{k-qL;jDTeA2MM=iPmCR`ukHR45>5p<5bbHl!edG;y>Q2ym|Ntxb;Ss=Sx97hN`U; z-MCRxwXjis|1bCU`Lj;|!zsSy<9sQ|_uf4f+uH3B3gumv{{9N^0X#LOXhd8Y>mnf^ z++JkU)uBSyI(C*{UpI+drbnUZE+EIV+X?}{`&3#cCN52bQ1;llZ9F70d&N4o$$lRC*(UE`cU0t2Q-py+I1!y!wYBt-l!F0?I6rQF)+OQjr2p$IWA zipQ5ZpZ&-RIVR{0G)D{r<_wy{vA+zfa;8^zO)zx)t~hPGeWTAR+dmtRLTDh~x+Yg}G%Gf8ggg2Q7$f2@jV^qAiG@J@NFr91nvt&g0@1JUS2uh`+o XOogO_4DqO01@TPvpX$Fg_^AK@%PKeS diff --git a/docs/img/libraries/libraries-tokens-source.webp b/docs/img/libraries/libraries-tokens-source.webp new file mode 100644 index 0000000000000000000000000000000000000000..3a7b15f9cd3bb3467e2765958098cca9127e1031 GIT binary patch literal 46024 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 literal 0 HcmV?d00001 diff --git a/docs/img/shortcuts/shortcuts-settings.webp b/docs/img/shortcuts/shortcuts-settings.webp new file mode 100644 index 0000000000000000000000000000000000000000..e552a0f87a6dbd624c12245d4d40406cad52039c GIT binary patch literal 64912 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 Qi8uK&UB-R;*zLss1AC7lm;e9( literal 0 HcmV?d00001 diff --git a/docs/img/styling/stroke-per-side.webp b/docs/img/styling/stroke-per-side.webp new file mode 100644 index 0000000000000000000000000000000000000000..676be32b83b2257fc9a2261525f9133bd22f7996 GIT binary patch literal 26546 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 literal 0 HcmV?d00001 diff --git a/docs/img/teams/team-selector-organizations.webp b/docs/img/teams/team-selector-organizations.webp new file mode 100644 index 0000000000000000000000000000000000000000..8996358accfab0af156fcf33017b4b76f8b11a8f GIT binary patch literal 45812 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 literal 0 HcmV?d00001 diff --git a/docs/img/teams/team-selector.webp b/docs/img/teams/team-selector.webp deleted file mode 100644 index e7af5e15230ed97876c661985cf071419ef783a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1256 zcmVEqoN{}m`Jb^ z32AQOb^#2AkDLCE|3K}Jz8@!_@6>npo<}~-{*TztV=|>{W|SXY^_nONqA zs!{5$Lv3q*<*+|HjRC{LQ&E6%8!zE^+7#*B(qjQr20$d9BQv|D26o`rg;hBqjj%fn z;S4c$YiXz`7r5>qAs!{S}9N0cK4~>K4VEEWeZ~*?( zO{JMomL!B&MM!ChJ%5yR36myFnKER_lO{}=GGxhapv*Koh7+Yfg0w<+|jr zr4ZBv3Br_*C*P(@m)$zz>VVr!bdi1+Nu?4f^1|%T|8y&Om8Yx;8~w=ZXRf^vg^r&t z*^ElIWUax>vHJ-@$;*NnhpvI`_P+Abc3cME%%%&>?5cRr z&mwq-t)5aB&)TC#dHqysI%NyeFsz~!fn0zE>YR5YvThjOvH+KN4SPGDdaT8DQG~=U zgoO|}FNkQ)Z_+1eRb{B#h;wHdEhJD!S5#aJjT0f<1~vHNivA6Fl7DH~ua=w(ec!`h z>*@95utmUwYSVP^8Y;b%H4rDz)I-|pTWcidh#{9Wk)08(k?qf$_qu7&*wfFj>1{cf z+yCJu=1y7tU2>iow&sv?M?52D{T37rd9XsI);do6t-r_QmN^c?AIBm zb_X}GF-aj*Bs9OQ(NxoSvs{O#*etkL%`UdN&$}lsy*ALRS+JK>T#}k3S+eq{Rqebwz}qe+?BmR`6+eX?c@QyaiZn{#{C2eaXgUL(;^uD{68>P;aU?^ zphnG1iE2Ae#&=GF2<1%w#;2O8u;)>^Jb$k1P#A6F`)ilIuTF{Izmth7&jTY--v9T( zzZow2dbCSiI|_dCX!{IpcdaMWobz;#C)1?Bm<8HI@4jdXN%_X5gUd<S#La%cgWve$b=oM)|Rk7EA>5y{cm6r*u!>xkgCK_ SbkqQuaS(t20000000016eRK5y diff --git a/docs/user-guide/account-teams/teams.njk b/docs/user-guide/account-teams/teams.njk index 64c39376d3..ea8b721bb4 100644 --- a/docs/user-guide/account-teams/teams.njk +++ b/docs/user-guide/account-teams/teams.njk @@ -14,18 +14,24 @@ member is allowed to do depends on their permissions.

At Penpot you can create as many teams as you need and be invited to teams owned by others. Learn how to manage them.

Select team

-

At the top left of the dashboard you can find the team selector.

+

At the top left of the dashboard you can find the team selector. It shows the current team and, if the team belongs to an organization, the organization name.

+

If you belong to an organization, the menu has two columns:

+
    +
  • Organizations: the organizations you belong to, plus Other teams for teams outside any organization. A check mark shows where you are.
  • +
  • Teams: the teams of the organization you point at, with Personal Projects at the end. Click a team to go to it. Ctrl/⌘ + click opens it in a new tab.
  • +
+

Clicking an organization only shows its teams. You stay where you are until you pick a team. If you do not belong to any organization, the menu shows a single list of teams.

"Personal Projects" is the name of your personal space at Penpot. It is like any other team but in which no members can be invited so that you will always have your own private dashboard. Create or join other teams to collaborate with other Penpot users.

-
Teams selector
+
Team selector with the Organizations and Teams columns

Create teams

-

To create a new team go to the bottom of the team selector and press "+ Create new team". Then you will be asked to enter a team name and that's it. Once a new team is created you are able to invite new team members.

+

To create a new team go to the bottom of the team selector and press "Create new team". If the menu shows organizations, the team is created in the organization you are looking at, or outside any organization if Other teams is selected. Then you will be asked to enter a team name and that's it. Once a new team is created you are able to invite new team members.

Teams selector

Delete and leave teams

All members can leave the team anytime from the same menu.

-

Only the team owner can delete a team. The option can be found at the team menu (the three dots at the right side). When deleting a team all projects and files belonging to it will be permanently deleted.

+

Only the team owner can delete a team. The option can be found at the team menu (the three dots next to the team selector), together with members, invitations, settings and leaving the team. When deleting a team all projects and files belonging to it will be permanently deleted.

Teams selector

Team settings

diff --git a/docs/user-guide/account-teams/your-account.njk b/docs/user-guide/account-teams/your-account.njk index db8c5161e4..3267ac5886 100644 --- a/docs/user-guide/account-teams/your-account.njk +++ b/docs/user-guide/account-teams/your-account.njk @@ -18,11 +18,18 @@ desc: Learn how to import and export files in Penpot, the free, open-source desi

Password #

-

If you want to change your password to a new one, this can be done in the Password section.

+

If you want to change your password to a new one, this can be done in the Password section. Penpot sends you an email each time your password is changed, set or reset.

Penpot's password
+

Sessions and sign-in protection + # +

+

Your session ends after a period without activity, and also after a maximum time since you logged in, even if you keep working. When that happens, Penpot asks you to log in again.

+

After several failed login attempts in a short time, your account can be locked for some minutes. Penpot shows how long to wait. Resetting your password unlocks it.

+

On self-hosted installations, the administrator sets these limits. See Session expiration and Account lockout in the Technical Guide.

+

Notifications #

diff --git a/docs/user-guide/design-systems/design-tokens.njk b/docs/user-guide/design-systems/design-tokens.njk index 53f58cdb99..1ceb140067 100644 --- a/docs/user-guide/design-systems/design-tokens.njk +++ b/docs/user-guide/design-systems/design-tokens.njk @@ -19,6 +19,8 @@ desc: Learn how to create, manage and apply Penpot Design Tokens using W3C DTCG

Penpot Design Tokens adhere to the Design Tokens Format Module and its definitions, a draft by the W3C DTCG. Penpot ensures compatibility across various disciplines, tools, and technologies by following the most standardized approach available for design tokens.

Tokens can be exported from Penpot or integrated into other tools directly, without conversion. Additionally, the knowledge gained from using Design Tokens in Penpot remains valuable, regardless of whether you continue using Penpot or a different tool or technology.

+

Tokens live in a file. To share them between files, keep them in a shared library and set that library as the tokens source of the other files. See Use tokens from a shared library.

+

Creating a token

You can create reusable and semantic tokens to be referenced in your designs at the Tokens panel. In this panel, you’ll find all the available types of tokens in Penpot arranged alphabetically, with existing tokens being shown at the top of the list.

@@ -194,6 +196,7 @@ desc: Learn how to create, manage and apply Penpot Design Tokens using W3C DTCG
  • Clicking on a color token will apply it to the element as a fill by default.
  • Right-clicking on a color token, allows you to select whether it should be applied as a fill or stroke color.
  • +

    You can also use a color token for the canvas background. With nothing selected, click the swatch in the Canvas background section of the Design tab, switch the color picker to Color tokens and pick a token. The background then follows the token, for example when you switch between a light and a dark theme. Use Detach token to keep the color as a plain value.

    Tokens color
    @@ -343,6 +346,8 @@ desc: Learn how to create, manage and apply Penpot Design Tokens using W3C DTCG

    Stroke Width

    The stroke width token, also known as the border width token, defines the thickness of a stroke around a design element. It can be applied to boards, groups, rectangles and text elements.

    +

    On rectangles and boards you can apply it to a single side. Right-click the token and choose All, Top, Right, Bottom or Left. Dimension tokens offer the same options under Stroke Width. You can also pick a token in each side field of the stroke per side controls.

    +

    Tokens apply only to the first stroke of a layer. Applying a token to one side requires WebGL rendering.

    Number token

    @@ -677,7 +682,7 @@ ExtraBold Italic

    Importing and Exporting Tokens

    You can export Tokens from Penpot and import them from your computer to a Penpot file. Tokens can be imported from the Tools option at the bottom of the Tokens tab.

    -

    You can also import tokens from a connected shared library using the Libraries modal. That import uses the library's full token definition (sets and themes included) and replaces the tokens already in your file.

    +

    To use the tokens of a shared library without copying them, set the library as the file's tokens source. See Use tokens from a shared library. Import is not available while a library is the tokens source.

    The Import functionality allows you to upload and replace the global token set using a single file or a folder with multiple files in it.

    These features support JSON files formatted according to specific guidelines and preserve the ability to undo changes if needed.

    diff --git a/docs/user-guide/design-systems/libraries.njk b/docs/user-guide/design-systems/libraries.njk index 9c60b52918..d4b66e692e 100644 --- a/docs/user-guide/design-systems/libraries.njk +++ b/docs/user-guide/design-systems/libraries.njk @@ -71,22 +71,30 @@ desc: Use Penpot's libraries for reusable design elements! Learn to create, mana Open libraries
    -

    Import tokens from a connected library

    -

    If a shared library you have connected includes design tokens, you can copy them into the current file from the Libraries modal.

    -

    The Import tokens button appears only next to connected libraries that define tokens. Libraries without tokens do not show this control.

    +

    Use tokens from a shared library

    +

    A file can use the design tokens of a connected shared library instead of its own. This keeps one source of truth: tokens are defined once in the library, and every file that uses it gets the same tokens, sets and themes.

    +

    A file uses one tokens source at a time: its own tokens or the tokens of one connected library.

      -
    1. Open the Libraries panel from the assets tab.
    2. -
    3. Under Libraries in this file, find the connected library that includes tokens and click Import tokens (beside the disconnect control).
    4. -
    5. Review the confirmation dialog. Importing brings in the library's full token data, including sets and themes when the library defines them.
    6. -
    7. Click Import tokens to apply, or Cancel to go back without changes.
    8. +
    9. Connect the library to the file (see Connect shared libraries).
    10. +
    11. Open the Libraries panel from the assets tab. The This file tab lists the file library and the connected libraries, with how many tokens, sets and themes each one has.
    12. +
    13. Click Set as tokens source next to the library. The current source is labelled Tokens source.
    -

    Importing tokens from a library replaces all tokens, sets and themes in the current file. Export your tokens first (from the Tokens tab → Tools → Export) if you need to keep a backup.

    -

    This is separate from connecting the library for components, colors and typographies. You can use shared assets without importing tokens, and import tokens only when you want the file's token setup to match the library.

    - Import tokens button in the Libraries modal -
    The Import tokens button on a connected library that includes tokens.
    -
    -
    - Import tokens from library confirmation dialog -
    Confirm before importing. All current tokens, sets and themes in this file will be replaced.
    + This file tab of the Libraries modal with a connected library set as tokens source
    +

    The button only appears for libraries that have tokens of their own. A library that already uses tokens from another library cannot be a tokens source.

    +

    You can also change the source from the top of the Tokens tab, which shows Source: followed by This file or the library name. In the Assets tab, a tokens icon marks the library that is the current source.

    + +
    What you can do with library tokens
    +
      +
    • Apply them to layers, as with local tokens.
    • +
    • Activate themes and sets. The active themes and sets are saved in each file, so two files can use the same library with different themes. When you set a library as source, the file starts with the themes and sets active in the library.
    • +
    • Edit them in the library. From a file that uses library tokens you cannot create, edit, rename or delete tokens, sets or themes. Use the open-in-new-tab button next to the source name, or Edit themes in the theme menu, to open the library on its Tokens tab.
    • +
    + +
    How changes reach your file
    +

    Token changes in the library reach the files that use it right away. You do not need to accept them in Updates, which only lists components, colors and typographies. When sets or themes are added, removed or renamed in the library, Penpot shows a notice in the file.

    +

    If a token applied in your file is renamed or deleted in the library, the layer keeps its value but the token appears as missing. Apply the new token again.

    + +
    Switching back to the file's own tokens
    +

    Click Set as tokens source on the File library row. The file's own tokens were kept while the library was the source, so they come back. Tokens applied from the library appear as missing unless the file has tokens with the same names. Disconnecting a library that is the tokens source also switches the file back to its own tokens.

    diff --git a/docs/user-guide/designing/color-stroke.njk b/docs/user-guide/designing/color-stroke.njk index bd1cab3000..de69f59b8f 100644 --- a/docs/user-guide/designing/color-stroke.njk +++ b/docs/user-guide/designing/color-stroke.njk @@ -122,6 +122,21 @@ desc: Style your designs with Penpot's options! Learn about color fills, gradien Multiple strokes
    +

    Stroke per side

    +

    Rectangles and boards can have a different stroke width on each side. Use it for dividers, tab underlines or accent borders without adding extra layers.

    +
      +
    1. Select a rectangle or a board with a stroke.
    2. +
    3. Click the Stroke per side button at the end of the stroke row.
    4. +
    5. Set the width of each side: Top, Right, Bottom and Left. Use 0 to hide a side.
    6. +
    +
    + Stroke section with Stroke per side enabled and a different width on each side +
    +

    When the sides have different widths, the main width field shows Mixed. Typing a value in it sets all four sides to that value. Color, position and style are shared by all sides.

    +

    Each stroke of a layer has its own per-side widths. You can also edit them on a multiple selection of rectangles and boards.

    +

    You can apply stroke width tokens to one side or to all of them. In the Inspect tab, per-side widths appear as CSS logical properties (border-block-start-width, border-inline-end-width, border-block-end-width and border-inline-start-width).

    +

    Stroke per side requires WebGL rendering. With the classic renderer the button is disabled and only the top width is drawn.

    +

    Stroke to path

    A path is the underlying geometry: a sequence of points and segments (straight lines or Bezier curves). A stroke is the visible line drawn along that path, with properties such as width, color, opacity, dashes, caps, and joins.

    Stroke to path turns the visible outline of a stroke into a separate, editable path. You can then reshape or style that outline independently of the original path. The new shape is usually closed. That matters for SVG, boolean operations, and editing the outline as geometry.

    diff --git a/docs/user-guide/designing/layers.njk b/docs/user-guide/designing/layers.njk index b46bc11f90..9aca80ced0 100644 --- a/docs/user-guide/designing/layers.njk +++ b/docs/user-guide/designing/layers.njk @@ -22,7 +22,7 @@ are shown by default at the Curves (freehand)

    The curve tool allows a path to be created directly in a freehand mode. Select the curve tool from the free-draw flyout in the toolbar or press Shift/⇧ + C.

    -

    The path created will contain a lot of points, but it is edited the same way as any other curve.

    +

    When you release the mouse, Penpot turns your stroke into a few smooth curves. Sharp turns stay as corners, so a zigzag keeps its points. The result is a regular path that you can edit like any other.

    Paths (bezier)

    A path is composed of two or more nodes and the line segments between them, which may also be curved. To draw a new path, select the path tool from the free-draw flyout in the toolbar or press P. Then you have two ways to create the path:

    @@ -178,16 +178,37 @@ Select the curve tool from the free-draw flyout in the toolbar or press Shi
  • Close it clicking over the starting node.
  • Leave it open pressing Esc or Enter to stop editing. Then press Esc to exit the edit mode.
  • -

    Tip: If you hold Shift/⇧ while adding nodes the angle between the current and the next will change in 45 degree increments.

    +

    Tip: If you hold Shift/⇧ while adding nodes, the angle between the current node and the next one changes in 15 degree increments.

    -

    Edit nodes

    +

    Edit nodes

    To edit a node double click on a path or select and press Enter. You can choose to edit individual nodes or create new ones. Press Esc to exit node edition.

    +

    The path toolbar has two modes:

    +
      +
    • Move nodes (M): select and move nodes, segments and handles. Editing an existing path starts in this mode.
    • +
    • Draw nodes (P): add new nodes and segments to the path.
    • +
    +

    Snap nodes (Ctrl/⌘ + ') is on by default, so new and moved nodes snap to the existing ones.

    + +

    Continue or close a path

    +

    To keep drawing from an existing node, select it in Move mode and switch to Draw mode, or click it in Draw mode. If the node is the end of an open path, the new segments extend it. Click the start node to close the shape. Hold Shift/⇧ to draw in 15 degree steps.

    + +

    Reshape with the mouse

    +

    These gestures work on nodes and segments while you edit a path:

    +
      +
    • Ctrl/⌘ + drag a segment: bends it while both end nodes stay in place. Ctrl/⌘ + click turns a segment from straight to curved and back.
    • +
    • Ctrl/⌘ + drag a node: pulls out a pair of handles. Ctrl/⌘ + click turns a node from corner to curve and back.
    • +
    • Alt/⌥ + click a segment (Move mode): adds a node at that point. You can also click near the middle of a segment to add a node there.
    • +
    • Alt/⌥ + click a node: removes the node and keeps the path smooth around it.
    • +
    • Ctrl/⌘ + Alt/⌥ + click a node: removes the node and its segments, which leaves a gap.
    • +
    +

    Delete or Backspace removes the selected nodes and keeps the path joined. With selected handles, it removes them and the curve at that node becomes straight. Shift/⇧ + Delete removes the selected nodes together with their segments.

    +

    See all the path editor shortcuts.

    +

    Change the image frame

    +

    Hold Ctrl/⌘ while you drag a resize handle to change the layer bounds without scaling the image. Shrink the layer to crop the image, or make it bigger to add empty space around it. The image is not distorted.

    +

    This works with image layers and with any layer that has an image fill. A normal resize afterwards scales the frame and the image together.

    +

    Layer actions

    Create

    @@ -477,7 +502,7 @@ You can choose to edit individual nodes or create new ones. Press Esc
  • Layer blur blurs the layer content itself.
  • Background blur blurs whatever sits behind the layer. Use it for frosted-glass or depth effects. Background blur requires the WebGL renderer to be enabled.
  • -

    Background blur is not included in exported files yet (PNG, SVG, PDF, and others). The exporter still uses the legacy SVG renderer, so the effect only shows in the workspace and View mode. Export support is a current priority and will land in an upcoming release.

    +

    Background blur is included in exports made with WebGL rendering enabled. In PDF files it is embedded as an image.

    Colorful shapes behind a frosted panel with background blur applied
    Background blur affects the layers behind the shape, not the shape itself.
    diff --git a/docs/user-guide/designing/text-typo.njk b/docs/user-guide/designing/text-typo.njk index 3317821ff2..c01b634653 100644 --- a/docs/user-guide/designing/text-typo.njk +++ b/docs/user-guide/designing/text-typo.njk @@ -24,6 +24,7 @@ desc: Penpot's guide on custom fonts! Upload, manage, and use custom fonts in Pe

    Edit and style text content

    Press Enter with a text layer selected to start editing the text content. You can style parts of the text content as rich text.

    +

    With WebGL rendering enabled, right-click while editing to open a menu with Cut, Copy, Paste and Select all. Your text selection is kept.

    editing text
    diff --git a/docs/user-guide/designing/workspace-basics.njk b/docs/user-guide/designing/workspace-basics.njk index c0547d4cbc..bcd23eb546 100644 --- a/docs/user-guide/designing/workspace-basics.njk +++ b/docs/user-guide/designing/workspace-basics.njk @@ -185,6 +185,9 @@ press Shift/⇧ + left click over the right arrow of a group or a boa Marking comments as read
    +

    Filter comments

    +

    The comments menu lets you show all comments, only your comments or only your mentions. Hide resolved comments is a separate option. Penpot remembers it in your browser for all files, in the workspace and in View mode.

    +

    Edit and remove comments

    At the top right of the comment popup you can find options to edit or delete comments.

    diff --git a/docs/user-guide/export-import/exporting-layers.njk b/docs/user-guide/export-import/exporting-layers.njk index c8ad0988e9..6f1f5869c5 100644 --- a/docs/user-guide/export-import/exporting-layers.njk +++ b/docs/user-guide/export-import/exporting-layers.njk @@ -27,7 +27,7 @@ desc: Learn how to export layers in Penpot, the free, open-source design collabo

    Export options

    The options of an export:

      -
    • Size - Options for the most common sizing scales.
    • +
    • Size - The scale of the exported image: 0.5x, 0.75x, 1x, 1.5x, 2x, 3x, 4x or 6x. Use 1x, 2x and 3x to get the usual iOS asset sizes. Available for PNG, JPEG and WEBP.
    • Suffix - Especially useful if you are exporting at different scales.
    • File format - PNG, JPEG, WEBP, SVG, PDF.
    diff --git a/docs/user-guide/first-steps/cloud-selfhost.njk b/docs/user-guide/first-steps/cloud-selfhost.njk index bf3c128132..b5a22ee1a1 100644 --- a/docs/user-guide/first-steps/cloud-selfhost.njk +++ b/docs/user-guide/first-steps/cloud-selfhost.njk @@ -15,3 +15,7 @@ desc: Start instantly with Penpot, the open-source design and prototyping platfo

    On your own server

    Currently, private Penpot instances only require basic Docker knowledge.

    You can run your own Penpot server following the instructions at the Technical Guide

    + +

    Check for updates

    +

    To see if your installation is up to date, open your profile menu in the dashboard and go to About Penpot → Check for updates. If a newer version exists, Penpot shows your installed version, the latest one, and the highlights of each release you are missing, with links to the full changelog and the release notes.

    +

    The check runs from your browser and needs access to GitHub. It is hidden on installations configured as air-gapped.

    diff --git a/docs/user-guide/first-steps/shortcuts.njk b/docs/user-guide/first-steps/shortcuts.njk index b06057a9b9..e4708c9800 100644 --- a/docs/user-guide/first-steps/shortcuts.njk +++ b/docs/user-guide/first-steps/shortcuts.njk @@ -10,7 +10,43 @@ desc: Get quickstart tips, shortcuts, and tutorials for Penpot! Learn interface

    Here you can find a list of all keyboard shortcuts that you can use in Penpot. Bear in mind that most of them are at the workspace, where they are more needed.

    -

    You can also check the most updated list of shortcuts at the GitHub file.

    +

    The tables below list the default shortcuts. You can change most of them to fit your keyboard layout or your habits. See Customize shortcuts.

    + +

    Customize shortcuts

    +

    Go to Your account → Shortcuts to see every shortcut and change the ones you want. From the workspace, open the shortcuts panel (Help & info → Shortcuts in the main menu, or ?) and click Customize in Settings.

    +

    Your shortcuts are saved in your account, so they follow you to any computer and browser. After a change, reload any other open Penpot tabs to apply it.

    + +

    Find a shortcut

    +

    Shortcuts are grouped into Workspace, Dashboard and Viewer. Use the tabs to see All of them, only your Custom ones, or the ones you Disabled.

    +

    The search field matches both the action name and the keys. Type "group" to find the grouping actions, or "shift" to see every shortcut that uses Shift.

    + +

    Change a shortcut

    +
      +
    1. Click the shortcut you want to change.
    2. +
    3. Press the new keys. The last combination you press is the one recorded.
    4. +
    5. Click the check mark to save, or the cross to cancel. Clicking outside the editor also cancels. Esc does not cancel: it is recorded as a key.
    6. +
    +
    + Shortcuts settings with a shortcut being edited and a conflict warning +
    +

    If the keys are already used by another action in the same group, Penpot shows which one. When you save, the shortcut moves to the action you are editing, and the other action appears under Disabled.

    +

    Each action takes one combination. If an action had two defaults (for example, two ways to redo), saving a custom one replaces both.

    +

    From the same editor you can also disable a shortcut so that no keys trigger it, or reset it to its default value. Custom shortcuts are marked with a dot, and the main menu highlights the custom keys.

    +

    Paste cannot be customized.

    + +

    Keyboard layouts

    +

    Punctuation keys (such as -, [, / or ') are recorded by their physical position on the keyboard, so they work the same on AZERTY, QWERTZ and other layouts. Letters and numbers are recorded by the character they type. With Shift, the base key is recorded, not the shifted character.

    + +

    Reset to default

    +

    When you have custom shortcuts, a Reset all button appears next to the search field. It lists every shortcut that will go back to its default before you confirm.

    + +

    Export and import your shortcuts

    +

    Use the Import/Export button at the bottom of the page to move your setup to another account or share it with your team.

    +
      +
    • Export downloads a JSON file with your custom and disabled shortcuts. It is available once you have changed at least one shortcut.
    • +
    • Import reads a JSON file exported from Penpot and shows the shortcuts it will change. Click Import to confirm.
    • +
    +

    Importing replaces your custom shortcuts in each group included in the file (Workspace, Dashboard or Viewer). Custom shortcuts in those groups that are not in the file go back to their defaults. If an imported shortcut uses keys taken by a default one, the default one is disabled.

    Workspace

    The Workspace is where the designs are actually created. More about the Workspace.

    @@ -569,6 +605,7 @@ desc: Get quickstart tips, shortcuts, and tutorials for Penpot! Learn interface

    Path editor

    +

    Copy, cut, paste, duplicate and select all also work on nodes while you edit a path. For mouse gestures, see Reshape with the mouse.

    @@ -584,12 +621,17 @@ desc: Get quickstart tips, shortcuts, and tutorials for Penpot! Learn interface - - - + + + - + + + + + + @@ -614,7 +656,7 @@ desc: Get quickstart tips, shortcuts, and tutorials for Penpot! Learn interface - + @@ -628,6 +670,16 @@ desc: Get quickstart tips, shortcuts, and tutorials for Penpot! Learn interface + + + + + + + + + +
    ⇧+
    Delete nodeSupr or Delete⌫Delete node, segment or handleDelete or Backspace⌦ or ⌫
    Draw PathDelete node and segmentsShiftDelete⇧⌫
    Draw nodes P P
    ⌘J
    Move NodesMove nodes M M
    Ctrl' ⌘'
    Flip horizontally (selected nodes, or the whole path)ShiftH⇧H
    Flip vertically (selected nodes, or the whole path)ShiftV⇧V
    diff --git a/docs/user-guide/first-steps/troubleshooting-webgl.njk b/docs/user-guide/first-steps/troubleshooting-webgl.njk index c3893f90e8..829e0e99ba 100644 --- a/docs/user-guide/first-steps/troubleshooting-webgl.njk +++ b/docs/user-guide/first-steps/troubleshooting-webgl.njk @@ -10,7 +10,8 @@ desc: Diagnose and fix common WebGL issues in Penpot, enable WebGL rendering (Be

    WebGL rendering (Beta)

    Since Penpot 2.16, optional WebGL rendering (Beta) is available on design.penpot.app and self-hosted instances. It is off by default.

    Turn it on from Your account → Settings or Workspace → Main menu → Preferences when you want a faster canvas for complex files.

    -

    In this beta, WebGL applies to the design workspace canvas only. View mode and exports still use the legacy renderer, so some visual differences are expected. If the beta gets in your way, you can switch back to the legacy renderer at any time.

    +

    With WebGL rendering enabled, the workspace canvas, View mode and exports (PNG, JPEG, WEBP, SVG and PDF) use the same engine, so exported files match what you see on the canvas. Text is edited with the new text editor, which also adds a right-click menu with Cut, Copy, Paste and Select all.

    +

    Some features need WebGL rendering, such as stroke per side, background blur and stroke to path.

    For what is in scope today, what we are prioritizing next, and known visual differences, read What's next for the Penpot WebGL renderer on the Penpot Community.

    From 28e735119b316e38bbefc6574acccea6ceb96246 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 14 Oct 2026 12:06:17 +0000 Subject: [PATCH 4/6] :wrench: Forbid Co-authored-by trailer in commits The Co-authored-by trailer is now forbidden. The commit checker fails any message holding it, whatever the case, and the docs record the ban. AI-assisted-by: muse-spark-1.3-contributor Signed-off-by: Andrey Antukh --- .agents/skills/create-commit/SKILL.md | 1 + .serena/memories/workflow/creating-commits.md | 3 +- CONTRIBUTING.md | 2 ++ scripts/check-commit | 24 ++++++++++++++- scripts/test_check_commit.py | 29 +++++++++++++++++++ 5 files changed, 57 insertions(+), 2 deletions(-) diff --git a/.agents/skills/create-commit/SKILL.md b/.agents/skills/create-commit/SKILL.md index 26b23b6a7e..44ba9b2d8b 100644 --- a/.agents/skills/create-commit/SKILL.md +++ b/.agents/skills/create-commit/SKILL.md @@ -61,5 +61,6 @@ subject/body limits, and the `AI-assisted-by` trailer. Follow it exactly. - Do not pass `--author`. Author identity comes from the local git config. - Do not amend a commit you did not create in this session, unless explicitly asked. - Do not bypass pre-commit hooks (`--no-verify`) unless explicitly asked. +- Never add a `Co-authored-by:` trailer. It is forbidden and fails `./scripts/check-commit`. - Do not add untracked files that were not created in this session. - Do not skip the `scripts/check-commit` verification step (Iron Rule 4). diff --git a/.serena/memories/workflow/creating-commits.md b/.serena/memories/workflow/creating-commits.md index d632c9a471..d2d1fcaac2 100644 --- a/.serena/memories/workflow/creating-commits.md +++ b/.serena/memories/workflow/creating-commits.md @@ -37,8 +37,9 @@ that breaks them is wrong, even if the code is right. - For another commit: `./scripts/check-commit -c ` - **NEVER** hand-wave the body as "one long line". If a line exceeds 76, break it at a space. +- **NEVER add a `Co-authored-by:` trailer.** It is forbidden; `scripts/check-commit` fails the commit when any line matches it (case-insensitive). - Exceptions inside the body (do not wrap these): `Signed-off-by:`, - `Co-authored-by:`, `AI-assisted-by:` trailers, and lines carrying a URL. + `AI-assisted-by:` trailers, and lines carrying a URL. **AI-assisted-by trailer rules:** - Use only the model name, e.g. `mimo-v2.5`, `deepseek-v4-flash` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9da08257f7..1b74634dc7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -223,6 +223,8 @@ Commit messages must follow this format: - Keep the subject to **70 characters** or fewer - **Wrap body lines at 76 characters or fewer** (trailers and URLs excepted) - Separate the subject from the body with a **blank line** +- Never add a `Co-authored-by` trailer — it is forbidden and fails + `./scripts/check-commit` You can check a commit against these rules with `./scripts/check-commit`. diff --git a/scripts/check-commit b/scripts/check-commit index 3f2792552e..d0e9f59899 100755 --- a/scripts/check-commit +++ b/scripts/check-commit @@ -47,10 +47,12 @@ MERGE_PATTERN = re.compile(r"^(Merge|Revert|Reapply).+[^.]$") MAX_BODY_LINE = 76 TRAILER_PATTERN = re.compile( - r"^(Signed-off-by|Co-authored-by|Co-developed-by|Reviewed-by|" + r"^(Signed-off-by|Co-developed-by|Reviewed-by|" r"Acked-by|Tested-by|Reported-by|Suggested-by|AI-assisted-by):" ) +FORBIDDEN_TRAILER_PATTERN = re.compile(r"^\s*Co-authored-by\s*:", re.IGNORECASE) + URL_PATTERN = re.compile(r"https?://\S+") # ═══════════════════════════════════════════════════════════════════════════════ @@ -209,6 +211,25 @@ def check_signed_off_by(message): return True, None +def check_no_co_authored_by(message): + """Check that the forbidden Co-authored-by trailer is absent.""" + offenders = [ + (line_number, line) + for line_number, line in enumerate(message.split("\n"), start=1) + if FORBIDDEN_TRAILER_PATTERN.match(line) + ] + if not offenders: + return True, None + details = "\n".join( + f" line {line_number}: {line!r}" + for line_number, line in offenders + ) + return False, ( + "The 'Co-authored-by:' trailer is forbidden and must not appear " + "in the commit message. Offending line(s):\n" + details + ) + + # ═══════════════════════════════════════════════════════════════════════════════ def main(): @@ -234,6 +255,7 @@ def main(): ("Subject capitalized", check_subject_capitalized), ("Blank line after subject", check_body_blank_line), ("Body wrapped at 76 chars", check_body_line_length), + ("No Co-authored-by trailer", check_no_co_authored_by), ] all_ok = True diff --git a/scripts/test_check_commit.py b/scripts/test_check_commit.py index 4e4940429e..a3a7a1c2b9 100644 --- a/scripts/test_check_commit.py +++ b/scripts/test_check_commit.py @@ -106,6 +106,35 @@ class BodyLineLengthTests(unittest.TestCase): self.assertIn("line 4", error) +class ForbiddenTrailerTests(unittest.TestCase): + def assert_ok(self, message): + ok, error = check_commit.check_no_co_authored_by(message) + self.assertTrue(ok, error) + self.assertIsNone(error) + + def assert_fail(self, message): + ok, error = check_commit.check_no_co_authored_by(message) + self.assertFalse(ok) + self.assertIsNotNone(error) + return error + + def test_body_without_trailer_passes(self): + self.assert_ok(":bug: Fix crash\n\nBody.\n\nSigned-off-by: Someone \n") + + def test_co_authored_by_fails(self): + error = self.assert_fail(":bug: Fix crash\n\nBody.\n\nCo-authored-by: Someone \n") + self.assertIn("Co-authored-by", error) + + def test_co_authored_by_case_insensitive_fails(self): + self.assert_fail(":bug: Fix crash\n\nBody.\n\nco-authored-by: Someone \n") + + def test_co_authored_by_in_body_fails(self): + self.assert_fail(":bug: Fix crash\n\nCo-authored-by: Someone \nBody.\n") + + def test_similar_trailer_passes(self): + self.assert_ok(":bug: Fix crash\n\nBody.\n\nCo-developed-by: Someone \n") + + class SubjectRulesRegressionTests(unittest.TestCase): """Guard the pre-existing validators against accidental breakage.""" From 3458b2f2e5173b1598c0b59f056c7c7d502c7edb Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 14 Oct 2026 12:16:30 +0000 Subject: [PATCH 5/6] :wrench: Run check-commit on every new commit in CI Add a check-commit-guidelines job to commit-checker.yml that runs scripts/check-commit on every new commit, so the Co-authored-by ban holds in CI too. PR events check out the base ref, keeping the executed script trusted. AI-assisted-by: muse-spark-1.3-contributor Signed-off-by: Andrey Antukh --- .github/workflows/commit-checker.yml | 41 +++++++++++++++++++ .serena/memories/workflow/creating-commits.md | 1 + CONTRIBUTING.md | 2 + 3 files changed, 44 insertions(+) diff --git a/.github/workflows/commit-checker.yml b/.github/workflows/commit-checker.yml index a80e6e4cc0..14c48a5850 100644 --- a/.github/workflows/commit-checker.yml +++ b/.github/workflows/commit-checker.yml @@ -50,4 +50,45 @@ jobs: # pattern: '^.+(Resolves|Fixes): \#[0-9]+$' # error: 'You need at least one "Resolves|Fixes: #" line.' + check-commit-guidelines: + if: ${{ !github.event.pull_request.draft }} + name: Check Commit Guidelines + runs-on: ubuntu-latest + steps: + # On PR events check out the base ref, so the script below is + # always the trusted version: PR commits are only read, never + # executed. On push events this resolves to the pushed sha. + - name: Checkout trusted code + uses: actions/checkout@v6 + with: + fetch-depth: 0 + ref: ${{ github.event.pull_request.base.sha || github.sha }} + + - name: Fetch PR commits + if: ${{ github.event_name == 'pull_request' || github.event_name == 'pull_request_target' }} + run: git fetch --no-tags origin "pull/${{ github.event.pull_request.number }}/head:pr-head" + + - name: Run scripts/check-commit on every new commit + run: | + set -euo pipefail + if [ "${{ github.event_name }}" = "push" ]; then + if [ "${{ github.event.before }}" = "0000000000000000000000000000000000000000" ]; then + RANGE="${{ github.sha }}" + else + RANGE="${{ github.event.before }}..${{ github.sha }}" + fi + else + RANGE="${{ github.event.pull_request.base.sha }}..pr-head" + fi + COMMITS="$(git rev-list --reverse "$RANGE")" + if [ -z "$COMMITS" ]; then + echo "No new commits to check." + exit 0 + fi + FAILED=0 + for COMMIT in $COMMITS; do + ./scripts/check-commit -c "$COMMIT" || FAILED=1 + done + exit "$FAILED" + diff --git a/.serena/memories/workflow/creating-commits.md b/.serena/memories/workflow/creating-commits.md index d2d1fcaac2..a60234819f 100644 --- a/.serena/memories/workflow/creating-commits.md +++ b/.serena/memories/workflow/creating-commits.md @@ -38,6 +38,7 @@ that breaks them is wrong, even if the code is right. - **NEVER** hand-wave the body as "one long line". If a line exceeds 76, break it at a space. - **NEVER add a `Co-authored-by:` trailer.** It is forbidden; `scripts/check-commit` fails the commit when any line matches it (case-insensitive). +- CI runs `scripts/check-commit` on every new commit (`mem:workflow/creating-commits` is enforced by `.github/workflows/commit-checker.yml`), so a forbidden trailer fails the build. - Exceptions inside the body (do not wrap these): `Signed-off-by:`, `AI-assisted-by:` trailers, and lines carrying a URL. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1b74634dc7..2d665b0715 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -227,6 +227,8 @@ Commit messages must follow this format: `./scripts/check-commit` You can check a commit against these rules with `./scripts/check-commit`. +CI runs the same script on every new commit in +`.github/workflows/commit-checker.yml`, so violations fail the build. ### Examples From 24d3e62c6228fa1c904fd3e5519afc1af2cdb9c4 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 14 Oct 2026 12:25:34 +0000 Subject: [PATCH 6/6] :arrow_up: Update opencode on devenv dockerfile Bump opencode to 2.0.29 in the devenv image and refresh the published checksums for both supported architectures. AI-assisted-by: muse-spark-1.3-contributor --- docker/devenv/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docker/devenv/Dockerfile b/docker/devenv/Dockerfile index 1b452d6482..11dcf79391 100644 --- a/docker/devenv/Dockerfile +++ b/docker/devenv/Dockerfile @@ -109,18 +109,18 @@ RUN set -eux; \ FROM base AS setup-opencode -ENV OPENCODE_VERSION=2.0.26 +ENV OPENCODE_VERSION=2.0.29 RUN set -eux; \ ARCH="$(dpkg --print-architecture)"; \ case "${ARCH}" in \ aarch64|arm64) \ BINARY_URL="https://registry.npmjs.org/@opencode/cli-linux-arm64/-/cli-linux-arm64-${OPENCODE_VERSION}.tgz"; \ - ESUM='1d7117dbb31968456f89537b562fb5e20e48d9e9ef0325fc8845abdda6ef4842'; \ + ESUM='0af39e75dbdfacc20f8f531ef35fb4dcc0b44c08084203518614272f232283ae'; \ ;; \ amd64|x86_64) \ BINARY_URL="https://registry.npmjs.org/@opencode/cli-linux-x64/-/cli-linux-x64-${OPENCODE_VERSION}.tgz"; \ - ESUM='0a116e033a02804741d4644337d012bdf5a24aac33a34c0c96534d2d53961119'; \ + ESUM='14b5a6638a1a093ac9d484599c844b10c29b445d04844b682ccc668ce26530a2'; \ ;; \ *) \ echo "Unsupported arch: ${ARCH}"; exit 1; \