From f5f59074e4b5245e08828a6ed25595d226c108e5 Mon Sep 17 00:00:00 2001 From: Nicolas CHAUVIN Date: Sun, 9 Aug 2026 21:25:51 +0200 Subject: [PATCH] feat(gui): add note history dialog with preview and restore --- gui/src/main.rs | 234 ++++++++++++++++++++++++- tools/gui-screenshot/golden/editor.png | Bin 59122 -> 59704 bytes 2 files changed, 233 insertions(+), 1 deletion(-) diff --git a/gui/src/main.rs b/gui/src/main.rs index 47fbfd3..587bab2 100644 --- a/gui/src/main.rs +++ b/gui/src/main.rs @@ -13,7 +13,7 @@ use adw::prelude::*; use gtk::glib; use note_core::{FolderId, NoteId, NoteStore, ROOT_FOLDER}; use plain_note_client::store::{self, LocalStore}; -use plain_note_client::{config, remote}; +use plain_note_client::{commands, config, remote}; const APP_ID: &str = "dev.plainnote.PlainNote"; @@ -2122,6 +2122,9 @@ fn build_editor_pane(ui: &Ui, state: &Rc>, note: ¬e_core::Note let source_toggle = gtk::ToggleButton::with_label("Source"); source_toggle.set_tooltip_text(Some("Afficher le Markdown brut")); source_toggle.add_css_class("flat"); + let history_btn = gtk::Button::from_icon_name("document-open-recent-symbolic"); + history_btn.set_tooltip_text(Some("Historique des versions")); + history_btn.add_css_class("flat"); let count_label = gtk::Label::new(None); count_label.add_css_class("dim-label"); count_label.add_css_class("caption"); @@ -2133,7 +2136,18 @@ fn build_editor_pane(ui: &Ui, state: &Rc>, note: ¬e_core::Note footer.set_margin_top(4); footer.set_margin_bottom(6); footer.append(&source_toggle); + footer.append(&history_btn); footer.append(&count_label); + { + let ui = ui.clone(); + let state = state.clone(); + let id = id.clone(); + let buffer = buffer.clone(); + let title = title.clone(); + history_btn.connect_clicked(move |btn| { + open_history_dialog(btn, &ui, &state, &id, &buffer, &title); + }); + } // Attachments row: one chip per attachment + an "add" button. The button is // only sensitive when the device is enrolled (attach needs the relay). @@ -2987,6 +3001,224 @@ fn build_enrolled_body(body: >k::Box, settings: &config::Settings) { list_btn.connect_clicked(move |_| refresh()); } +/// Held reference to the history timeline's repaint closure, so a preview's +/// "Back" can call it (self-reference through an `Rc` cell). +type HistoryBack = Rc>>>; + +/// Format a unix-millis timestamp as a local, human date for the history list. +fn format_ts(ts: i64) -> String { + if let Ok(dt) = gtk::glib::DateTime::from_unix_local(ts / 1000) + && let Ok(s) = dt.format("%e %b %Y, %H:%M") + { + return s.to_string(); + } + ts.to_string() +} + +/// Per-note version history: a timeline, a read-only preview of any version, and +/// restore. Reads are local (`commands::history`/`note_at`); restore is a +/// forward edit that then refreshes the open editor. See docs/design/note-history.md. +fn open_history_dialog( + anchor: &impl IsA, + ui: &Ui, + state: &Rc>, + id: &NoteId, + buffer: >k::TextBuffer, + title: >k::Entry, +) { + let window = anchor.root().and_downcast::(); + let dialog = adw::Dialog::new(); + dialog.set_title("Historique"); + dialog.set_content_width(460); + dialog.set_content_height(560); + + let body = gtk::Box::new(gtk::Orientation::Vertical, 8); + body.set_margin_top(12); + body.set_margin_bottom(12); + body.set_margin_start(12); + body.set_margin_end(12); + let header = adw::HeaderBar::new(); + let tv = adw::ToolbarView::new(); + tv.add_top_bar(&header); + let scroll = gtk::ScrolledWindow::builder() + .child(&body) + .vexpand(true) + .hscrollbar_policy(gtk::PolicyType::Never) + .build(); + tv.set_content(Some(&scroll)); + dialog.set_child(Some(&tv)); + + let versions = commands::history(&state.borrow().store, id.as_str()).unwrap_or_default(); + + // `render_list` repaints the timeline; a preview's "Back" calls it again, so + // it is held indirectly to allow the self-reference. + type Render = Rc; + let holder: Rc>> = Rc::new(RefCell::new(None)); + let render_list: Render = Rc::new({ + let body = body.clone(); + let dialog = dialog.clone(); + let ui = ui.clone(); + let state = state.clone(); + let id = id.clone(); + let buffer = buffer.clone(); + let title = title.clone(); + let holder = holder.clone(); + move || { + while let Some(c) = body.first_child() { + body.remove(&c); + } + if versions.is_empty() { + let l = gtk::Label::new(Some("Aucune version antérieure.")); + l.add_css_class("dim-label"); + l.set_margin_top(24); + body.append(&l); + return; + } + let list = gtk::ListBox::new(); + list.set_selection_mode(gtk::SelectionMode::None); + list.add_css_class("boxed-list"); + for (i, v) in versions.iter().enumerate() { + let row = adw::ActionRow::new(); + row.set_title(&format_ts(v.timestamp)); + row.set_activatable(true); + if i == 0 { + let chip = gtk::Label::new(Some("Actuel")); + chip.add_css_class("accent"); + chip.add_css_class("caption-heading"); + chip.set_valign(gtk::Align::Center); + row.add_suffix(&chip); + } else { + let arrow = gtk::Image::from_icon_name("go-next-symbolic"); + row.add_suffix(&arrow); + } + let version_id = v.version_id.clone(); + let body = body.clone(); + let dialog = dialog.clone(); + let ui = ui.clone(); + let state = state.clone(); + let id = id.clone(); + let buffer = buffer.clone(); + let title = title.clone(); + let holder = holder.clone(); + row.connect_activated(move |_| { + history_preview( + &body, + &dialog, + &ui, + &state, + &id, + &buffer, + &title, + &version_id, + &holder, + ); + }); + list.append(&row); + } + body.append(&list); + } + }); + *holder.borrow_mut() = Some(render_list.clone()); + render_list(); + dialog.present(window.as_ref()); +} + +/// A read-only preview of one version, with Restore and Back. +#[allow(clippy::too_many_arguments)] +fn history_preview( + body: >k::Box, + dialog: &adw::Dialog, + ui: &Ui, + state: &Rc>, + id: &NoteId, + buffer: >k::TextBuffer, + title: >k::Entry, + version_id: &str, + back: &HistoryBack, +) { + let Ok(snapshot) = commands::note_at(&state.borrow().store, id.as_str(), version_id) else { + if let Some(f) = back.borrow().as_ref() { + f(); + } + return; + }; + while let Some(c) = body.first_child() { + body.remove(&c); + } + let banner = gtk::Label::new(Some( + "Version en lecture seule — le texte actuel n'est pas modifié.", + )); + banner.add_css_class("dim-label"); + banner.set_halign(gtk::Align::Start); + banner.set_wrap(true); + body.append(&banner); + + let preview = gtk::TextView::new(); + preview.set_editable(false); + preview.set_cursor_visible(false); + preview.set_wrap_mode(gtk::WrapMode::WordChar); + preview.set_left_margin(8); + preview.set_right_margin(8); + preview.set_top_margin(8); + let heading = if snapshot.title.is_empty() { + String::new() + } else { + format!("{}\n\n", snapshot.title) + }; + preview + .buffer() + .set_text(&format!("{heading}{}", snapshot.text)); + let sw = gtk::ScrolledWindow::builder() + .child(&preview) + .vexpand(true) + .build(); + body.append(&sw); + + let bar = gtk::Box::new(gtk::Orientation::Horizontal, 8); + bar.set_halign(gtk::Align::End); + let back_btn = gtk::Button::with_label("Retour"); + { + let back = back.clone(); + back_btn.connect_clicked(move |_| { + if let Some(f) = back.borrow().as_ref() { + f(); + } + }); + } + let restore_btn = gtk::Button::with_label("Restaurer cette version"); + restore_btn.add_css_class("suggested-action"); + { + let dialog = dialog.clone(); + let ui = ui.clone(); + let state = state.clone(); + let id = id.clone(); + let buffer = buffer.clone(); + let title = title.clone(); + let version_id = version_id.to_string(); + restore_btn.connect_clicked(move |_| { + let now = store::now_millis(); + if commands::restore_version(&state.borrow().store, now, id.as_str(), &version_id) + .is_err() + { + return; + } + // Refresh the open editor from the restored note without re-saving. + if let Ok(note) = commands::get(&state.borrow().store, id.as_str()) { + state.borrow_mut().loading = true; + title.set_text(¬e.title); + buffer.set_text(¬e.text); + state.borrow_mut().loading = false; + } + reload_from_disk(&state); + rebuild_tree(&ui, &state); + dialog.close(); + }); + } + bar.append(&back_btn); + bar.append(&restore_btn); + body.append(&bar); +} + fn maybe_reload(ui: &Ui, state: &Rc>) { let Ok(doc) = state.borrow().store.load() else { return; diff --git a/tools/gui-screenshot/golden/editor.png b/tools/gui-screenshot/golden/editor.png index a13c903b2d0fdeb2f9418174bdb1b65fba803b24..49dd381e3271843e4259edf01a5c39585ed99a5d 100644 GIT binary patch delta 20665 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 Z^p9UpH+G%eg{l;g8c$b0mvv4FO#th>s5$@u delta 20029 zcmaL92T&I2)-8v!A`!UTf_xXxcefxAU#V{of3&vaRmx9wf3q z`wb*^r!=u2<2=32^F?8=!2$W_?sY--lh039c6i@CA9O`B=)>)-V_9cKI;)#3V*m79 zQd(aAY*e=FN?dJzJyhG%KL5k7e)HT&czt11%X;MeYR}w|YNod8J6$i+)|7(6B z6vPIH>okOfglhO{xHQixek!pYxs^hFlAxsx*r@rP;yd>TZieqi6^b3w?I$)A6co;# zI~T`);lew4`9m(tQ>)i~irm*<@R;@$ST}$8aA~i6?6pN2Zf$Y*(AzN&19Qf3a+y#* zF6VcQYZE%^nZi`+H|j$9U-?H34Gs#Jcl@>Y@NtKYDj%A^8!J{vh&XQj>dwD*?b`Jhr>IFM=;#93^t7`LeIM<)%%xfIIwT}H zGn1I?*vI7Qbv5LWd)+HO6Gh?T>wXNiLl=f>gZJ<4_?KtLJ3ZBX8gJBZFtw&AA2{Uq zHs>6-{XloV)pSpxMxJ@Bu4Hz0c57Q(navQ9Vnel96PVicFg@KjBg0ZbA!1v7W9jVHTD=so+~pBlNSg`?|WiHrJPP^D|3~8(&2c+DyK5 ziShBfemA#l``X!C`sl@rZ$q`JMUKl#o7}9tyo!Y^XU?1v71ix{%alUnJn+ePFY%t@ zK5?Sl>AviZd`pH8AND*xNH1jEaG#Po?dQ**JAV^sPf=F1?=#tl2ln>u+a#6r@etl0 zpZ%gXWnGZacy@!9C3tJULUB&D?5Kd_ivTRZZt`cH~DO0jcBj)0?xi%5mnLV;J)yvDxUEl6lnQc_>FxA6izk-LUtE*cZ$dMX;jl;8{ zy?uFMvItkGr>7?((*5?W9yY9kW@CH%bbDs~&nl_8xw*+-9Q`HE6Q3E0wc)UnO{K+> zj~_oic`{^q`nqzmE;r%3EcqsONG5D+DdYxr-K|@WkfFRI1yR(^i|)va}6wXg3HFE6j41?BS> zK{T7+IvyXOYst_u`}r|h@AC_u3m1g!SQpxLmM6P%OYO#*3~F8{CX|)gj${M|#)pK2 zjLRbcBgEYe1KF22HHxlW72A72?2Y>O46WjP^Uk&c>)81bZp{*>%?^_iA%U|Z0j-w5hb+rAzx*Zp$ z`vt|te>B8U8JOVE-V*29!RqEuevEns2Gop<#Hd`7U;W-88OrJS*w}2hRY}IEA2{o! zOB&71yhZjC>Z1n`PkGWTVG@M=_Llp=&!2&Q*Jw!R2<;L+Zf>ilxXgux1&67PT%}}% zt44PFneeUQx9~Hi`)h+U)6}vbFRVTc2^stFi0Sz8 z#v*%(;1WIx3US(U^ZT+-%F4>hx7UX2!dBP!NQYmvpJ@9vHAUZ^p%ou0D``C5a&vv@ z*K|KY%*0%du^s;UDj}stKP!+USUFSM;?r}h#|P$b-tx%1TUoTcwYtva&*E;6wG(&W zeVTJw^5!tF4kLrfq3IM)LEl2d?E?_6j*pk$Q{l1uW)LwTgqJ zS>~5@`U|tyn-gUpJvzjCjM8fQ1FzwRfuHxU1|r72*ug?iS65p4d1>h$#E8=Ph%cSH zi2eBMmoE>WbdHszUiaERLQQ{7kyhL-DORs?Vd1&$$hWZ2&~w@)@4tOp8g10`V-SlJ zFO8E?=8S8&crS#467+`F@#Yv#VbNSA}{ZPLs_BUw(`dp3~;4{&yg!FuGIR_h{m zS&cXEGWI9?_@yZEo%kqPz9b2YuED?mZun8@ek($l^T5!}9UaxlCfeGOe)T7qJT)1R zRCcjFTb}N3uZ*34b5-IGdSM%N##&cpMX?y?t<>>eCqYpD*lW<+q3?(YG0wN>(9v_%UQF<38 zWZM?3voyQd8-0p0QozCn7nFD_qOpAYdoZ_7x@Mu~+WR-ygtfuk`}PU-WJIhZb&82@ zxrPL?E1On6wh!b`eI==pr62O(!Goty-%bh}=$ znaj4H@Ce%dw=&T$w|~FS>U?=QGWFj~mCMr-(Q5(4RX!uCNq6|2=W-tGEFGGA-I}U; zLpFy!4)OKk#evVhVdqVn_{=7raj0yt`d91obav%RAX}fj*x=e%;#KOp%*Vs7RWVWi z+DDY1e-V|t>g$a?06B4o>FCaiO% zh~%@K%}Pl;BNgC2rIJu$q^fpB?(c!`#hl$}!)9!z6Y_xfNln2;Cer|Fl|E1uy`wwJqcpv=r=bzsQBSS;> z_VA0=S*S@(Hcl&@9-F&`MDiz_s+#*HqNAh#QqK(k8TR`1;OOYFBQ^!D%i0+kzn*1I zys!IOMi(i#&Gc?!eDJ=l$#n0Cfy>r{Sf)CsjQO@=)0ElCl&~gS%Hy7KdFyP+L$5ws zck76{EZr((8@}4NqNAOo8QS4-m1x@dyCrAx;hQs#V?PVc+NadAhxyFfQnW;tTT|PI zfVRSpQC0y8i;9+nM`$2IWl{fs0!K00c*wXuuo^;JlaiJmZ-^NId%5`^kOba^30z-J1NzxOU zFah91htUQm(i3*&Nq#=Qven_@AC;wq@AK!B)I5gI{j#$aXQ>O@8?E#c&E(Y;_ue(i z$Q@DtROcD)z%P|NWh=z8K0EKY{y8Y0uk9G=>$G9p>WIFHqQ2%gU(X(~*jlwP(|t^a zuCJFCUGwK{)>JK?FJCbnoiP47VVJ;nl=S3GZ{5`C;bEG+b$>?X@tb!YAFa zJd4k7uFk9H7;|~P&8EAzJXNYy>>!A8Io5oIIkt(5t8Q^&p`@e;4M~ErJfJZEVFa%c zkb{3;8n%Q~*v95g;1!}bQ-_hsGa|x5Qu0}5W)vV7mW#*WE3jl;U7Z(ITO0MEQym(4 zXq{205yFbnkN)%2cbr(sv77AhSX;2_D|0u~*SGumv6{Plk}KWsnM?EYS_6qT6G(gm+DO6#Nnlx%+ z){@n2gb6Nd)} zPoEa8uCK5E_Dw}BnY%10AE|1{ZTb+KR@aPUhsgv3OtDDE7Ki9EA* z!t&4|ZX=_!*FQf7nmp&?WM^j=A)Fh(z~Pysn3$K5k&$!iq_Y^$oXfqL9R}}6PjYhj z^z;TuUV}qJ7X4)dA0BzjMvD4AbGdU@KH>H5;5cQ3BdgGF=Vwf;9UPk4xv3c#N1$|?;f@y-W!1LMd{nzv+xE7*WY^=8l9D&I z&yFza%!%!fS`VUV)l7+xKjV3xm$$pnwi``LhPH1HATxR(toj`T1GS`Ut&++*$WqT4 z#F|=jbH}&hvA>k;^#>Pc2hJ82@HyI;WE2LH|5py00*>G4}~Cu}!gTEybnM26f?QQDs|J4@(zM=c_wgm^A-7Texex`e}Xt z@E)D|FLi`0ak~_ahs`Q7yo-yAfIwRyd*|5L*yc8GsakHzBWafAcJ4EtPP0F~a<;1d z6N!a13kwT7dwc&^uhP@b#S_)l)lHT8AXk1491V|%K>Lub_qpxi!-oT(Wsgl!?eW&g zw;UPXa$sIS%MnmZZn-%HL`2pXC)#V?>BbKbpJjzFDybFRiwsuHN4_a_4^wgb-|;<& z_}=^$Nl+PYI|-&I|RF50GqHG!f<_Hnn; zk=ERT@IBSj!;F$LF8=MQFJq`GQXgEpmhrQAGxN=>J}sZxkax?iTXZ49p|n?PvB$no zOf0Wh+uiP%MYVL8o=Q$kR83Jz7I$|^*Ic#5k4KGH$*5}Tz|s=KInVQe*ROU#>hW8~N$;*-@NsqTOir=NW|`uFJdq=tY=#=8C9v`^z@P#q|Ie zs;a7{JF}-z0+*Ho_XiFPwf?FL%kOtz-h8y@5Vuy*Mzd@x+N?MkfPX+aniD4$R;(8~ zvkxC-k?t#X&CIE;sQ5WMF#7s+$JejYA|e_@q3H0}kePyll?V|+%xR{OXqEm zmSV?g@s<=|F!xo1D8H4x*jInmUD!ptGUzsYRSY@q-8*ZGt^#&dVIh94BD{&+8W1mNTPJ#o=c}5Mlq_^pG>ay=a~8>MObY zQtt-^h3y!D?ji9Oy%*Kx$A7T1vfeJTTb&z8L zLpj;m|1DfdYISO3Wk6R#g1~<}cW!=*5LsQ>SaM6-+FU1kuqry`m-;={?a{t*YnNDDEUEZ+R+D>u6O0WdlJJaBIGv!w)cDGctc7$`h6WUJgI$*bd z&-X`rmS+?2%kPZW@JmuZ%VYPj6HSNk6FH-vo&JYIyaDZL32}L={<6C2>KI1+W{dsz zJKq%rO`2Lx@|LmX*i3e0maR{%m*@7qeLFxe;&4-1dW|tC`WR!>_o*rCjg_0ZE)(Rc zZ1k-}Hs*}8voiu5NNtydA3ir5pDS*U&4g@4tB`#Lfm5TKjoxO)#vpA{W$08r7U#> z`u@RX=4;P^L+ieV5ZO)5&BU6C^5+*?KnTUw11u)QkR_G|t={a+jIh)BxKTD53u&L@ z8G8;r#)lj@$x||V5}m&xI$lf5U+4-qHUzjdS1RLfDh9UFi@Vtkez{N=nmgW>?#*Ys z(bwnmyhL30<0z^ZxqY!28b{@MGqN7@jPm3~qQSN5SrqEVkI9}nbnVleq98i02Mm#G z#qC&I8XLzzNiv#NdVeF0hag6z^ct^n?4qDp(WF8Tp^nEc&61s)E3btBGd43*O}l+b z{abalkoC`&XVkTM7Tp_wS727+dsQ+tOVPJ6MjZyi4i&T#aGZKLNlZ?XhS1&}q#Fjg z(+fgid0EHG)Rf1v$8%%D4LuSaohq&wgfI8)^QwE_S@maXxry`6Y2 zc=vfdT|$?dvI-cad~<2SqFbQ9z}oiXlSbf4V%4Db;T?s2O-fba!bAD=g1!`V2vRY%aHlT2!kI;+ z*t5Mon)z0TZ0yWe`YLjBat<=|ob`OoZ#LW*>s=Gbu^uDfHhL~D@?Bm=QhK^pj)KPx z@<#MzYj}TFhAWu79@np5w>Q8-<=S7Bk&&5=(&qt4H}TKTZjQZ9_<2!*5+-+gZRrn! zf`|^oHsubRKXs8&G(J?Z;U?A!msH`Lk!>b0dILQ`RTdKP4sQqBgP>nqX{)7VwrnG~9}ciUvGtAQmYj%xp*Y=C>j9loBp+W zlauEA)1N7mW41{9h zEep0yNpuu8w*8xydg#_vlC}elkVG1%dd1@9*cSt-NS!ID29kyH!XWK<6s%I0`T*CX zBxKdH^gBUwbDlewqMCV}>TQg17H7g6Qt$&@>_XvRvtHM)*P_Qe$5~5Lt}$!$W3VO8 z__>y{{SmA`5q6Q2E4Uuk$1AdzQEp?v345 zhpxw2#3rn+P3BY|RS#XL5%@B60WeSb`YYTS^MT#NLqlh*_0O91 z?#h(p@{?yhw!P29#()~&osEqR>TyBtmXI#7DeL^ChiWacei zM&%HS`T6;QfunK3!otEPCSx_R8CpIi4xCwXKZ=TqLPJ9Vf#fqfiv@3oik>=pH1$-w zFJkIM0z{?NxpB|Y}=V3*DltCM5;iBRg(JKRIS{Ds6PP+1-57O8%`}swdTj3){XwQ%a#~)`~bz z?cTi`P0IBv;dF$cWd&MB$~r0Tgg0+`->f;!=u*~y`Eo-_%E!k?mGu~7SNiMhzg@1m zgeh^zfT-(s{Ep*Sg;0W{_LCEgS!a_0t^zoZ*U$~;-atBDS<9GetGnFA9{d@Ku$jrG z1NUWVY4c=-_&D>PV#j)5>T_B}X|ho}2mrbWAzPOy@zQ5O61Kw&!uF=bV(Z`qy-$g8 zapqlvi98L<8pr3B7;+41mom$@RQ5K4C4oQ!o%tZ+lG@+p|`W)FBiW?bJOqZ?qb#^9$Fl$=gDb>oR_XGOA zPN}3a%gxrlRQcF7Fiw{*`z?&|-l=|NK$iDPoGvvA4qc|E9t*nN+RU9WgC6hNRk6`# zqrcSEi7sykj$zc#m&2v0Dr-Nhd=NJFcCQbDh8L%!Mf+BB*bkBa?%lqK-!@JrCnp~~ zxU^8YEqCL~k3bIM;Qsyb8~{V-u3WDTjH3TsRYl`Iw`)fA?(Zkwm-}im=ouMZmq0Cu zruyyteIktHcOMb}#c8(#NAO*g$J)z1xA6U6^8cawMTiYGFtQU3G4r4_w|=-7eGBJz zS#Vk-cL!&#Q0$&DQoDUS$FwzzgMV;V+Uk_LXnA;)*)%7}5Dy^Z znl#0&0)cu`{rF)7MXV)Fje|Qg5}XVxD=QTVN}!OiaD>oNas4kd$2m1|iGh)kWlpnA zc@`phCe2Le&);B|>EaYt=PEsyko5Q8mA%EwHue^(Ny$L4c4I%uAe~HTjRf`eF(dCM z_8?B5(+Pg4s;VRE(l?j;>xuQH^c;_G;m*wo?&;@5|NI%Azq}WJAm*}AW;d2a^(WuL z4L^obFRI8$or4Ub&!xz$b{$yl`fHY!IOPW@u!;%_l1^X#H;?=u8rh~9bVE%xocIHPc6sh!dj;YRU+fUC; zpu?5}CCAYEaGTZ!SwJa*1gF@TQ0BJE&T8B(E3sKXY)=8vzo6yEpNx>6ApWsm^o)%Q zJT^nmNF7J<())Z%j>TEItc;FD`UK6Xl48R;f)=~jKO&+x!FK}6o+lNZ;97=yZnzYv zg@51RC#VNBTpM>=Q~2@t(8WsG+^Bqfz-3{Eho9e~A$ki;?eb)2aA4pWi}9X9MIdAV z5PN(3&40L5GL;ID+?KBKfGr2cLN}ToBm}yf`Z-o+_(3>1EJ~ez6l(kDIe>C z>k8u5IYPbo9j(PxsS{!@`p}1Kf^uJg4?2uU|vUxN0KA#62CQmp5Y!tyD0!G3} z5*Li>{tpE@X3&{s5WfqgVN<*mhhI}`E3TSTNpJS5nwpw>QZmXcS-1=W(Qew3w1vb@ z^(O&k7ncZkQoPLY@G!VOpyOQQ#uB-GU^o1afBpK^lL|V#rU15+9NK>ILuhAVAgPg4 zjd`ei^F>WTuewvs(-7mFLzyze%S$Ii0em&qf6=U&_lhv_Yh|>@A{Xg7>GVaK0Ud{*Mz4 z+`PQDi{tjnslt3_!Uk;w2tYW=;^Ue z3$Rnuy>->eV}24`OY`%~^Yen|8{p^i_p6`rOP!7NVON&4n(UCb9pQ4?5{(DdKGC+R z31m<8MmmItPB3G8EHM!6c3WGUY2%yKxSKj`R{OTJV1~h-y`68l8N}KB@R6e}c`1^3 zeF-SC8X9zCSM73oIyyXW?bv$W(xS9y&pP-Ots8{_-lmGpT^WLHJGnw`?-^=RblR*ZKH^m>d zBCo}k3KoNWNXu_K{Mkc}5HqqccDw}r0OlkIz>#8`yi2VWX+DaOlb5SconG z@$?t(eW^`N1P$_%`Ey)c2@z_oqSDrtJ5g*mYlkyu_D44-R(es{I6uc7K(7caw&*(6 z5p&rnSxkW$1kBJ-tL^#{{Z%^b&M>qQ;vT0q`)DOvQiN=WWx|$n=ZN^I{!cr0K0YS4 zfuQ3x`etKoJwG!8^B|Ai=#A^w69GF(PvCFBCL=5LaK&+I<(c)B zEWUrx2fJ7RCFB;Ja*xaC5yJ#58lk?zeib-<5RY$59N;wjWms6Tqt!jc?jf&gQi5#M zDgibuI$8#P3!rhZ7Mz}PtjCU?z2!dh{YRF86trq&m;>~}KjBUwJwcZ!19`ADw{^H~ zOYhV3t}=J;%<0`jOz?^56x<_QENTMSc)vp+c=!6L1o8F*W5?FG^~U4Qpo- zi4;SRiV%gCzSJd`c>etPgPq=|gpR0`y4VZmw*mQXtxZ^Qlg)55%ZEDN-faeK6csB* za`)KYderYB62@@~scbsoDh)-H51V2F2oCwZvlE%FU}r)?LywnlW4m?bngI}Tc+M

VVzoh3%eDReXqf78qy%Lk-o> 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