From 8b920596e55106412cb9c7190daafffaeb9d58d0 Mon Sep 17 00:00:00 2001 From: Ultradesu Date: Tue, 22 Jul 2025 13:44:39 +0300 Subject: [PATCH] Works with egui --- .DS_Store | Bin 0 -> 6148 bytes Cargo.lock | 32 ------- Cargo.toml | 3 - src/gui/icons.rs.bak | 1 + src/gui/mod.rs | 1 + src/gui/settings/{cross.rs => cross.rs.bak} | 0 src/gui/settings/{macos.rs => macos.rs.bak} | 0 src/gui/settings/mod.rs | 99 +++++++++++++++++--- static/.DS_Store | Bin 0 -> 6148 bytes static/icon-settings.png | Bin 0 -> 10871 bytes static/icon-tray.png | Bin 0 -> 25060 bytes 11 files changed, 88 insertions(+), 48 deletions(-) create mode 100644 .DS_Store create mode 100644 src/gui/icons.rs.bak rename src/gui/settings/{cross.rs => cross.rs.bak} (100%) rename src/gui/settings/{macos.rs => macos.rs.bak} (100%) create mode 100644 static/.DS_Store create mode 100644 static/icon-settings.png create mode 100644 static/icon-tray.png diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f280d8746a7540c16abf1ed749d94ff743a5df5e GIT binary patch literal 6148 zcmeHK%}T>S5Z<-5CKMqDg&r5Y7Hn-1i&|40V1_SEUDR>OY3D+VW{byuuL zN4>5X4vyDr+uA=kJiVAc$1jO|(?oLMT*J)&UJ(pE2G Result<(), std::io::Error> { Ok(()) } -#[cfg(target_os = "macos")] -mod macos; -#[cfg(target_os = "macos")] -pub use macos::run_settings_window; - -#[cfg(not(target_os = "macos"))] -mod cross; -#[cfg(not(target_os = "macos"))] -pub use cross::run_settings_window; - -// Helper function to expand tilde in path pub fn expand_path(path: &str) -> String { if path.starts_with("~/") { if let Some(home) = home_dir() { @@ -76,3 +66,86 @@ pub fn expand_path(path: &str) -> String { } path.to_string() } + +struct KhmSettingsWindow { + settings: KhmSettings, + auto_sync_interval_str: String, +} + +impl eframe::App for KhmSettingsWindow { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + egui::CentralPanel::default().show(ctx, |ui| { + ui.heading("KHM Settings"); + ui.separator(); + + ui.horizontal(|ui| { + ui.label("Host URL:"); + ui.text_edit_singleline(&mut self.settings.host); + }); + + ui.horizontal(|ui| { + ui.label("Flow Name:"); + ui.text_edit_singleline(&mut self.settings.flow); + }); + + ui.horizontal(|ui| { + ui.label("Known Hosts:"); + ui.text_edit_singleline(&mut self.settings.known_hosts); + }); + + ui.horizontal(|ui| { + ui.label("Basic Auth:"); + ui.text_edit_singleline(&mut self.settings.basic_auth); + }); + + ui.horizontal(|ui| { + ui.label("Auto sync interval (min):"); + ui.text_edit_singleline(&mut self.auto_sync_interval_str); + // Parse the string and update settings + if let Ok(value) = self.auto_sync_interval_str.parse::() { + self.settings.auto_sync_interval_minutes = value; + } + }); + + ui.checkbox(&mut self.settings.in_place, "Update known_hosts file in-place after sync"); + + ui.separator(); + + ui.horizontal(|ui| { + if ui.button("Save").clicked() { + if let Err(e) = save_settings(&self.settings) { + error!("Failed to save KHM settings: {}", e); + } else { + info!("KHM settings saved successfully"); + } + ctx.send_viewport_cmd(egui::ViewportCommand::Close); + } + + if ui.button("Cancel").clicked() { + ctx.send_viewport_cmd(egui::ViewportCommand::Close); + } + }); + }); + } +} + +pub fn run_settings_window() { + let settings = load_settings(); + let auto_sync_interval_str = settings.auto_sync_interval_minutes.to_string(); + + let options = eframe::NativeOptions { + viewport: egui::ViewportBuilder::default() + .with_title("KHM Settings") + .with_inner_size([450.0, 385.0]), + ..Default::default() + }; + + let _ = eframe::run_native( + "KHM Settings", + options, + Box::new(|_cc| Ok(Box::new(KhmSettingsWindow { + settings, + auto_sync_interval_str, + }))), + ); +} diff --git a/static/.DS_Store b/static/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 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 XAQ2GDqmq9TQ-F$+`txc9^RWK|=g9?J literal 0 HcmV?d00001 diff --git a/static/icon-tray.png b/static/icon-tray.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7acfb0217fe667529708e5eba4d9d37688d1d1 GIT binary patch literal 25060 zcmY&`i48vK5XbA)|!s8M615qatN**(I{~Ug!B7 z^?iQ7=Z{``z3y{=#x>v9`?~H>O?3rg0y+W+f{2wA@7{wTIQTCd!n+9m?063zK@c;f zboY*qx7lh6ZY_1|VT~BsgLTPgD^w`gG$5fzTJ6}~TE z`-NI(rO9GF^uAm~-_z;sCzDwMA#U9bR-Rs-`>D%`%asW>sdYBf70oFrKJzv(d^jl= zVPHa+*4$cLZq4nQxgVd`|2Qw*HLjcYS7V5a>K}O5Tc@Eok=00Xu=GW=G zeH-%czJ@gOXs2yZ!DCraP~M)d3Ud5wd41UrnA^v}U_TP2*y(*|8=)QCM z$46X-o-~gYhCnhXq)6GwAvHF`U--PvS^x7bza?zkZ~AEe-aGS0M`jhcY;A0Jf3`wguto{{$Y266I9KRmqCL1G|JdLSg_{p%_WfeHzFrV>p4uFJ^0*widv zGs^b%wLlwLEoRH!IB9kJSH7fqbYTA>`L}0Z*h?)Ml1|I_DyWxU=PMw?iPG#j3CxPj z#1_dAnPf=l?(E$U_GG>Hn>_fOEqtgt#;g_cnF5^)JAAENLgteA9NJKbz%f!JG-#dY zFsUUuw9Me2woyR6@|w9f6-7;{O!|tr*}fY5=sP(Q(($x)n7m%p@7(aCX7V8Sg9w=f zQ#^V^O(tE9vNTVSU+()8H3&AdyD?)z1fMKiF^Ur_D_lHHy}oph5?+MImHBfu&Ka+H zX&2bTdkz%DwYxDib!bi-=&$B8HAVqLG9sp``TxpB6=@ zcYOML62D$tyzxd-BJ$ zj&v^pJwJY>t=qK1Aho!hQ{s2bhBp|DdPZD@AE>a@Z+El^wnCZDYT-K1JMLFXt1w8Y zF7Oz1GT9r3A1jig(AkKoQl_5L+x=U)=s@H! zf)p~OXgjlif$TdJt!jkCnW4Zqgjof77BA1zj31whHU!7VXNJh1Wf`f!>whk{m2?UR zsF+Zq&<_zizDO3N;WHEhmJ8NVcO9M@EmRZpn>6=rJ^gSMs^N^yDxQI0pn+t3RvtUw0Kd_tZ3NhUrzY2IwTc7lQs9IWYi z&zywd&YyANroh%+{M_X%Qa9R47X4**9~U9hZzCw}50*5E8qFDNHib2SdT!gr7w{D= zjQo;H=~j3KA-*eFG}cKDZnZzIj~X!q7XDDFCb_ysq{geV(d_2rR|h;~`UQB+kM*$54njc%|Zp@dg`hj4OZiM(qD2KM%^H8m-mv?>xgu<4gS0o|vPC?`3 zyU_}EpL{iB_yrOA^ppEl4a)2F*qF4wd);jyBB1r?e)=EMJib6zH5t?Zu7fu%Gh{Em zFg(ZiDGAfIyCT)}0zxF>OZf3p#z)7d`wlqFryzPyC)wlr5Ua>PMP~*B zvUs&D=>r!9DxX&H1dVP+L2z{Qb=SGRlb;dhVwgHp+SW@5W=(pygsUbC@~~@cr(T{x z4$^Te^)QHfbmE|2@nnYpPTKw&y`YI$cm=x`42+mt_}y@9Yf|cwO`+b%0x@`>Ij|?m z`hpo(FG-@OA_x+s)-5@n_|9iMG%L7WvJiZTeZztaA+J{xzPm^ZPd|Ae+2nC2Wbewu z1k#UlOd7sW;0@AfNPP4L?D=;=qm+Y}5ZC5R!gAPTbIIJ)+}gz{um(HZM(N=RXNQC_ zN=F8Wiu_Vy-Gor%=JLF>>CFbz2oMJjo+^N%R8YC)r@9)zH27YB2URNRO_+Ojth z3{U4Rx@fq>jgLYs{qBWV5Lb^ySMScCw7Jhjn>Nrj2V%-Tk@z5!!;jxXj0~E){88#> zS3t<)+VFU=cm%!)BSB!9h_z-|F)MV!lq3218piy1otsexf|J^kdVeZ6!#9CQ0)Tg( zFwi?K4(xqo<*R7wnRfjo1Xg#0OXw`PbVxjW`I{Dm3Y!b$^#ju%?aeX1{`DdHq`>A` zC~CWuQy(36w~KJSBLtC)|J?(T%*$u>hXS+()WKIF7~X-(OdU{!#nm^Qz#vkIp4VMB z_MRQ-GVePD!35aiU1SMNm?HheHC94z_#-&U<(qsP0}|v z==C`PqQzpJwhPc2r9a$Dkp zqa_#of5u?y*VG=6!GW>x;ZHDjBPO&vrfdf75Gdo)@PxW$zGWT&m4KEe$TVM}B6y{j zx*s<2U4vJ+&pGsiXnKmzu%5V&RiMCpY=-Gr{=} z++}9ik55TE;$^uQfSM%y^P3zFeq#!Da!SGL;DBU!jo<(#qL_uVjWL?CHhY5dS1?ob$pfm>-m?4fP9gpmiy=eYlvsAA%us2|ieuwV( zsR}9Jhv1Px(xximKWg?3Qg3a}$;q8dU?Tw?KR+=R$F%k1TjNt%=mc4xX0=LddR<@x zn_$5if=Msi6meIFGalHdkV1D#3r%64c}t9!c>=pZuq4eR2^=pfP%!e(moiOl%=Msw zjOI!>F{?{Y$$Gu8?~AaxScy|?s1qMgEj&)aL01Cvg?TVMJ;LfIeI7x{rdV>}V?Jw$ z1R?5y6FTa{Z2ExB`PmL$qb-ir_k+gX*At*FIAx3MN_(uzCtt#Di$V$oI)5@m2`#^P z9|^ZO-k6tmp1hcJh7FM@WC((iPqPGGoJWyXkB`~~NwD98?%@%^`GxrKZ&QS!#*N|% z6$2&kQB$JUV{0QdEDsdKusTDc`2wHFl5Lb4SNIzh#6Y#*URcOVhrmkyKBRz0B{CHl z4UeIebL;U?+D?=tA9fV`Z=N66Mb6?mt;AsLb@SE1JCJQF#x5>kZJBw72CFJOZ@HO( z`L32Yo+hF6CAh`F#{Bd^feN9`--SWAd(L9aiq%u zFY?X|qs-@qtU(~XrR&jd{bopdxLKkbH1AUzrMlOamy$4+Bup`H_ba zlr%^d3&&w%E4$_uxJBE>e6ws^bm?DzCbd@q_bO3aUawgK1>ns|qb(f{A0dS<~dXQJ); zGE#&n;!n94pQphg=I4e01@hxHGIhfzezCHf_vG!h1z#o{bmzq-s*Xe)=6}0=SD&F@M)${kJsuJ?4Z24ep9 zlbo>h4;U3b=M};$Sg?=XT%6720T*1#%~q)FS{eck8x9wu*nb}O_c|~P{uNvP)VZLf zk9eq7q8B-5`a3WJsdK}G5I0x^`IB+Hud^P%?mA+DUL<}Ec)22ib8aONe2(4aS)IRo z-`X)VbVQ42I$qZjCK?O*yX$Y{%&H5uh3X|IkFn<@@R|GDk49Lo_KKb#3CU~&uisxy zbxVp7)~|#{ha3AEFpuP9(w+XfL^mi7Y+%LT>n53!cS=u*{G${S-6JG{R(I3peSxwBP!+g->RINH-Aj9O|+Hs9Y9q5dEk@oivJ?HxUh zIA~~jw6sw|;nqKMA}15?f69;=-|Rzx3I?V&x4m>_^`H2a@6K!j89rr{`g09(-)M=x zEg?t$@4YwVmu>x*QH`D2W^m-!Q~Np0jfDM|7ynt?9Q%g5IAQdmYl{y)>OrCG*Ep}+ z8(01wHJTnaDS&G;X~YP(xU>9)t3$ERD_FZO?zN zQE`+e?XJElJc_S^dK)lm<&PN~{=G*)QF}ERr#(B|kN{FMwLSU=WP#=1fF~J>NUGk_ zz&7Zj{jjZ z5cS+atk{(uNO;%iNe#DH+*k~Njdb7t7f3W^;U&QpP*3g36KXgTm-fnfzmnrWC$(3% zh~AxE4D>a`L(z09F`UW%3o=MFabQ%ZDoMw5?R6SNF%DXNe)N5D@@G)}VY4d)mnI+m z@v)(kiev;nqwMBrtlw>k`&Scyl*2c%ns)jV7NP>{9Z#5+|-@!|CxYz+lf?n@Om)BU&4PyYy*>0>G&E8 zjgDP8bTG2XBl#OLP)HT{xIt)vah$ytIu>GH3mAKyF7?kb=>lKt@$Mc%{0Q{p`Ipp~ zE`}~=<$p3@j()zc4$rKwteR=R>>?FytA5Wi#k*UTZreKPUy$|T{sS*AZLg&^$^ z4UFIaeSDds8_pI<^iB_2c=>7hL7l4Qf3KR5j&{C!rEJet1c{H+O$pe|4*pA?NapK- zZiVw_N)EYXkegu^rnK>Hf7^$@I00D6eRz*?mk4jbyDu_yuyntdVJfQsX(s(LTq1x| z>q@FHeCDacj#ukW{COFLbuU2>RvY!n$(3-BUJj}Q7(!0Fw-SF%5`@gF8)1fh4k)i* zMk?HpXXT6J6s0R8cHjRw3G)VPV9H8E^Ow2TI*^GY@%u}%mq!f$_o*N)EO>UBk3XIb zKBGVUG6(ad&FR(F|E|rs@xpM>0W~sfpw0qi-{21$z_a@2CZz3e(QDSG72B`1$zkdH zM7Qof3Vin8ix1Ui9y=hHw^?#);TB{Sg^L&;)*9rU|0Gz>u~96NJ^~3SIB^w21|vkv z3+8`o9&lZMveAKwI>CGuR~%>nqxJ3HrGK$NAkd%$_6ra7qloDNpTJw^09#Nco+pk# zJVcvuf>fMzn5O7UR!HqV?(?;G6%xDT9}6 zQN+mbeoh=d^GGO<>cu~#10hb>(o=jLDaj|NGukry_d>w04nE6gT8P zIO9|FDt2*wyZe^2%WT9Uuie2k=8R@%ZSq#{NO`uQO^QhE%rnAgsgh5q=eNYBpHf_L z{X*6fL?U(hTSyw_}fLitcHr`;dDw(mRp=BG>gEe<73ap4_DHez#cwd3TW1$p1O zSpAE}kLs+_*Ta=%Ul8G6B&MUR^Eo`~6zV~!@Rr^EEn!Dc+_X2=V(K*++xFbcgFQ@a zOmW$-LhVS^v3@b9MNLf3sDN@jAy&`m+QA=b4DHE^jTWZ0^%09+a7DKSkN5`q!h@j? z_kY^uByf12?v4c2%_nw*ula3#;|yf<}Z9Q1OmT4I?o2-5}vC5?b)C z+#%7%^=Kj##aTV$pT511uusItfM`KzkOal9%iT6xb z&yc;>=1JJKoc8=s15X}a$m|BGFY$(wJ~9&zwcCZ}E6a;Z7lfzJ-syjfiP4av?GzqR z4UYIVpdrn$fWNj}vdhimD+ArN88TEtAbnq?7#ake?gouND)3?+%8HVb=Mn&@WkG{#t3`3Ug`vdGG)%oJ(tPi$i}s zoE73=Vrkl+_8fO2q;FVn#z^%(+071rPYNxDT>8716tEhLRw{j>9f|ZvB|;&QhCkZ* zwa{g!!ebDd2#w}Ad3$CC((5*GU>g*2lj0&GUY*y!QXV~ebg=QW1s!-H2-qNhA1NzD zZkdz~$N|aE-Mor3kD7LeTRcWg<4su^jX&=6s|2NZj(y`H;o*lWQA;Cn=Bq@$1tJi} zhN@)O{>zn{LC^vIL(JJJy)jE}qCK~Q`)tBt0A?M7Q#0-VB;7094y;Vv#I(eMRo(Yb zRU>BOqo&$5*}9l0=`-(*4)e4Af?|CW=;bbT+%4VYA_QvcD$&lrm0{VxuG$KCnmze* zi|!+h`P1tL4q?Rw=t(VGjJ(e#c>^#ELlqN=zUuOK|s zPF6b+uz(_7uG*n*oM{vJ2Jg@O+h}dPX>l_y!e{1-*M6GfLkyVX+PPnG&utC>XFa;r zD}7e>I(#hVc(rEw;<$6OU%H(Z4L(p43s$On)RdC<`uwKKy~$$lhlk20 z&kz!7bovrsGx2j1ja`&Ovq;cJZNw}E2ledqWEyj7?$RYPLP>p1?e&bh8XF9RD1NZ&96;ZAvei)(ruS=o+^NRY1=xl6k9ayf$aRGOPx7Jry=1csUq5de2zh|yo@Ti&e z++HetrYFUD+8`C<+x5;f(7Aulc&H#067LjG9wQ3}x!%0+)1@LPZg<^-3aaQ5HFo(- zEQa7IX?$!cyZ@c1M0oGG`EWi--4C=GzJ`J`3x?qoz0_Al-C!W4es8|oVLOD8C6Uyz zbtx-8DGr5dCoZpCR)E|qK8<0Tb>7?&kWB&fgHX?HA@Ld11p@laD5)bZ1KW(?XFXEK zopmHYV~S+ZBCUK?`b+P`(1OSPYm5x<<~lM|R}Dw*Lbn}G^=_lS!3*6*FQgkp%;rC} z9M*yy!9iO<0HIX9wOScWRFosNE45J)aO%LZ$_n*Akb|;qE)RWrNyZ9ipeXE-(~aqt z(mZ%zuC0bZZIsv^_U+B~CP2NGT{H(0w)`jgNsxhMFcrM@C%@1&$|ba z$O@RQG6=YS8^gxVI2D~Y!bc|aUqc6@7w=#1h(REhY>82OA+6G{CYLQ!C+Z~dARPL- z-C^UP1na~P(S3c=HIjRytQB$rtG9xI1Uj)2m^B)Gy4@ADT+%G{NTj4=y`o2|CGBj7 zv&8SMn+Q3yw8kCB_A)@;_+#zL2^aV{Q6x!9c+ zltaCl&97M%E{;EHa57R2U3Tc3=5JUbe|k6{PqJf@~mIw3%H@|j~?i#>Ite?%89#o)VI{Z z5?`?T;V3IzDesWDNhYK;Uc7w8t@C>D876cfEfF83rF)gr_rF2!vsrQwa zR=mc#u-;saw3+!N=S$Wp9>X#(1`&k|Xr2W=%qyNA_4kkGLbXz2qCCp@}rdwheK_VsoO(I74Gi3ok zoSC}#5+PRos`u}3-scCPCn9#+NNnlhUF$<^D66=Hi&I zNt})lEZy=)?-pMQh;u6>42<*!aj=Lbn^**D?|{i;P^-oDD+5i{v3kei-HPVZRp*wy zap(0N@9A2AdVi58HQvT9o=xq3w>r}*PGqra7GNg5QKE16nJS-cf^>J9^}^K!YR zOX?Pp`D2X&X2|-TJsLfaefBW zOUh?;ShokaU^s4FwW3F7pT!wMT%%E$Cw6_BT8qyJ`SJYs8>Xp-o`$Rf)IfrZJ!B;{ zfI>BG_^DP(M*;5plU}%|N2lTyCe$O#p479pZT_{(kcQ??pGCoepfAkzmrHE z*}l9tzpTYzl zkJ;tkteLbf&4DBLkK`+JtQUQAPa8e0vn7R0L}BTlYaww_j~h<|(3Vy7%P`!D7(}lol{$P`K*U|GJsr z^wyA$_RW2*uc16S=-v$3l=0#^083BTr_G>+bU<0<$#Ew^z0yH_Sqe5=cfxPX5NOpe z7dKGTEtbTl;i2@N8(|n=y@^`J_;RZQT^c37O>(hW^PtPwpW^nu$%C@$8YMVaK?r=; zyu{#aBSiY)Feb4ZvTX>MMK@Q|q6}A#Yxp$cY3+K5;+3FI@!3}q7ScS$wfC=5delZ` z68oQQehscua+vK};u{=UV-uL`mZmi)4Fi zoX!96SGUUc(m}4>+(SB$s&J|#Z$Li>6j#QS`kkOW%Cmz7+L^*IVGa~#Urw_0H>`gg z7a!9O$2`>l_Q3iaYY!pj3;`#bEwnbtWLLar0{eL6c|R-$w2q7@1xn>$A*{yj&AY5m z%a*f8cziJdpiUF5zHJk0&ka3yGwjf)!AFfH!$&=@#>zog+6J|)EwIU%t=7)UuR(^P| zH-n;@T4uexgP(8@U}xm!S;rfYq!kE&1OLQgxRtVyU%7@5)e{Cm?^2l$wQ4=mn5Pd` zqo{F?-u@o=Od`EIaDrPTpZ45&j|LqT#y^KJq9`vJq%9ZTi@-r=wYj&7!Zz|xOOfXS z&4M&__!ug)O61szY=^(kmvbPHN3YL)4Fqx=dZ)_1sPP@&orOMc;^@}S6b(+qC3;a_ z&9_n`N`z;XlZG0n%D!99$5S50PJ8yCq!+qKs0^uE8ge#tCR06RT0H{xxqYv)X|;Ns z-^;}JS>47bLV9iIF<TfXNf#{RuZ*@UFkk2zhKl8FVm+>f(n9hRg-9XX^h_{)i9Z zH1zJpv%EQby}LdweE{qs%y!B!3Ai~I84#cp;ASG24ZAW8uQu%ZPweud)TakKE&2%E zMvR@CI)9NbJlA&Ob5sc{&f^L<%%LNMEK{`M7Fr#1#+$KQ`5Q`5VflCN2)+QrD|vkc z1N6>~WLVmu1tgro{Ji}D1t^<|1?%LAhU)f@XvvP2r6~{b(fe3l7KxVf)r0;yY zu+}UVvmStH*o1`rPY#so-;Z1~Os*WAQ0&4%zaWR|k55QFKgfT>1?=TnyqT}vT84ks zg2u5^g*ZC9T?G#S6)8BgglvjI&EP#1H4f?*PLN4qn05!QBwJY)cLKX@u`;{ZygiQq692o72G)Ml_ zX0=uj{1$P~%Pgu_lel67pt`Gr@H3H6S~=EaK&7#~jnvPss3P`_cnr$yFGAE6?%=8| zoD#c-NyP-U#V_VXjoSg(805&ow~A~KG8d~1HcUgkTjz zN_S#Li**iiko;pMTrp!;5(-94pp9}_KmX|cEP66>w~2}hC-MRkz40(^$N zqoJ13V0smF#zaA>F|$-qa;e^9IgW=#O?xQ?gF|By?a<&O`T}Z?@vN`TXNK+~D}1o9 zGenSWD+*ML?&%VFMY}l7XS*f0oJKr?ma?h|8&c0kw3}J3Emg@YD3y$=OC3HOnN0X% z2E=Ge4v85}acO^Nq!W;V7QU1!F#50!%<|om^_%kfg9EU9R0!+OZgvFfR-B=6ei)?b z!dP^Foof-r+{DqVA8+^TOK5~_$d*w+If&6XN0^@yegJ6%K0B>UIT@MqkF(*atkQLZ zxx^sQt8v@ry1$O>!|Vi{VS=--gf5PlxT$ei%4E5l8rw4hXuu_>Vtf&%nVL}$2HAQj z_5iYZ-vaO!Zc>7YroA6B3^^GN+(5bZu-xp!>9>H@#kip{AX?}eu9>Xs-BUeh*f2->f3y}VB;51r!bNDHeZUHo^`5qLCz!=8 zMu5KH?;`$6mdFDq)?H9P=9cB}0br*>(xXj?2WjBuT&Mv>PGy#L=ez4E&qgq`lZB?Z zJz7CyF#%s0ydFv{fEee%YLKwJ`gZJUMp3)zd%!KRLjG(U=?FAyoPOsH_g1g>6da9< zFmkW>Larj*y;Xc)26}6wQvlYzVV3Ld8OugWDc9rC|I;#zg*(oWZF0w>^tBmNy}HD% z^Ou)orirK9X_zZ3fJiS+N(E}Sf!dUy+jc%bRIfd;ZH$B?Kf3@2!3Ef@A%ykK6g!p< z_A$%@%0{PAXxuJSaSWqA*cs5c6%aODfE(O9q!ehFZ53}S>J3yal+a{gonZCMCe^^kTlY>aSv+9Y4)l|N~`qy%r<(MCgtJ5 zD)!JBiSW5fWh2d8w3y)vqCb(bXw@}=vPHA(q6sJ8y9u8^DXdNk!|*Sl%IT^ij2SHe zc?JoedC*Z|t^7k4bc2}BS(k#CUFCEFeBe%6g<()FASCI3I%csk%oP+l6%XWTWzjAB znzSN%Z(bxgE#L|%9?&y(qT=FEdMoU?GO7wE6{#_Gg9+Y&&k%MDD9}c8$KHWX1QU%G zgj{COafFY*3+~~eZoKLzk-}>7rAg~t)EjqMKTs5=d>tGyN(DWd+nO&eXq1G4d@*Yh zerJb&S|;3jCVwu5GE}iwkA zeiOukUh2j?tu1#BR3ywCkm1QBI?0^NdJ#N#0h_-zo^Pmr3vCcE4-gg-we9v8 zj3-=@KH0cYJN_XGWB?*_T?Fc-#?866fxjH?Dgk!x2`EUIgzp9|XVVwvbPcdg9$0<$ zSoq~S+lE7sbmfmo>vMdH8-~I^I&6-*7Ih38$b*c{qoC%Fx1^N($1pEC`l>A5alo$Mk9$+_nZrM6BvK$( zlv^(Ko8#DhyI#mTYXYxko-i_x0Ien+{eQq%~ z`|8Ee`VvXCX0Qu2Kq5%8wO?$jlhY4l)PCuN>g+wIP{)guI$BV)8mFlT#vC@D$fF=`CEkAhl zA9HySQI)rOcD#;@B~n)yBq!@V2&eq^P5-n6P(CcwNRukVdGm|T_66TER$SslFK1B| zAHOTx2K1)i2~6cEmvFdE$OiDT4jHsbyOiSphPHyn%sYdOX4>lBt5bkMd8%uB17(Uo z;}@9wzKfQ2#YEXs-}9(Y2i6=hi()EUIcv`?1dQ(K4FufxPl^{^)5=uSlkZb)C1;Dd zX`*I0wi+&mp!amDcoiIda8HzPDLm=Yt(DRlP_jiD7g_lf{k*wWJ8Kl@z?04wI+jBt zl4<$yvz|*3v8W=Yu4V&Ur7;Wk@Pg`aq`(vXZn{e6JwGsCdA)$7$Ju{735gr|u*|u3 z=pC1R!qoKQm$Dmdpu*9Tfxg(}aZa#}+fdd1!EyoVrU?E4KzvWuCMftVnLYl-P9IKg zlk6%V|46u-!oZ~khxNE`;^0xkDz%AwpPc&XV!HuABSGX4rgTEUtv^*{rUE(u;D=6Q z8Z{OEI5`LhoS*%ZiWN84VAiD0-%4YC`|cf@H{}_itR<$;;;rxeg5h2vP4<~j;4gExEdcSJ5%i(%HL1^M zOFE!Is&cZzGTW@y-p2jIsUeKMT<;u;>mKLk$;l=D8kFXq#!^stSOHIX&qf3#J*vOv zFIV8&el-MnuMe98}IqB~C$BOzqYY(p?x~^eUzm#!(zX4=_6yoLTBKgXieg z+FxNjzw|5V>aD3ZyFsu@AJpSQr5QYWZQ4#;_QgiH8})cEo%T z$fqwPZmxr{9btaG&=t$fSf843$n_0Sco(#W67)R*S-Re_-jZhxpfQG8&^f)(l-Mo- zqR*?>V2otT-!N#e>!Su3596I6`-1NC~zKe@Ke; zii;8eDj!gNrfXO!S8@5q?t95CiNA5fF9F z63Y)U*7ZP|Q$Od%b$% z_acVFXDSz)imNC=U>D{CGLZkG~IA z|DuaN=nb`2>S2r;H+u{ET3m1I`Gc?YiW0spIUH{QeVxrxn-!fg z-STuS1ts=PClw4urOP^K*r{9TpDq4u-(8N5Oa?+VP=#Au>R4Qt|M22A=DQpo3d_J_ zyQ&;Xkt$$|*g0J(nQl+?{oCiyAVjEAiU1 zqxo8?kXO;Xt9+*fv88U*oUYv<5oYqPM!=o~#2g8%`t;YEhRSp1L<;^$TUGlJ`iRNg!&=m63eeIFINrcXA^V}2tR5C{LW4*53SNOqbk2a)8w)_nf z%9;A|r{zwjgq}`@(Dnhka$lJzR3!Et$AZF6s;4PA*o_Sv;Q-rMa=mqp<#a2)naDjc zt@^lL6^ou(OS{3C&V={r!qK9+Xq8Ca>7yVvzh1}I?H=j04on3dA!@|Yk=l_0GOFt1 z`DPJYrJf2$7M$&-N-b?ByC&FQodKli6RFeklAl5T_ zrXE8FRJZar!_7}JuV+=yCpt)!jac6;JEU^41vMxkrS*u1#L33zAZ_)Vt)YgJnu>_I zO{De%*hU`laF`Q(=F)LSb4(vk=xc6#=;}zqlo3ffj<64>9Nj=QOK3C;NE?!V=MlBo znDD+SdrE^Vn6aq6v7g1jz?E~EvG~D?L(5bcPx0l(t?xYQPvs%;meKDo_fW+Hfc1OR zI#pz^v$zhX=IQ7ec=BiE!W9Xu@~P1G2Ia5?8?eg*B2z+0ZNOprBlTguYMTF%-3E3x z!>#*fu1ZAoz-!%-6f1@F8G2nBv7BlqQEZ!zTOZ4RhN8F^YTAaDz-Ze9c`HBSKy z2)To{`$yTE!_lK7uby>yGvlF5F1j#H0&*PCXE1$TXrZm-!i#EolQ8Z!r9z?{=gXIybGaqAL^KwI-uz|rho>Q0NbZN_5=^o_mG+I7OqO02q6 z(5Hd`MqkeLBZm8f8R5Q-t~yV&z>rnuo2AAp{|?pI+okI&`c!RfC>v=Z@vYZN2CB{e z@uA3SRRG(LFkA`2_F7a17=`ay!I&GdaNz+5ay)EHoq|IZk8*eil-eCtc0er?ShZA; zLmdLmPd65_qUOsP`29*N7#(HMDv;oiN6 zdaI{yOUt_YmW<*qH7q}eT-4leJjq%Wi>Q_Eg3quV*IhYQzq0Wm2qNV;y`c5ZVkAR4 zizpC|unQ|)C4Ix?(f{@i__lUm))Z^$h6E_HCSM$hF6X5WxsmGzFGO~Hdv@)fIjylk zH?Gt&shanDmN)~lW;H&b^Zdf$kftVCN{^||JBy-+YtzjE%-5qmz~~R>D-iSqRbc5N zx5;}yu3o%++uOxurR-~42o)GnVuokC%SBeeioHAkn*~_<+J3hJ8vX3=89<~fp&(RX zN&{m?H9gsXv~n%g@&)aU*&hj(DI}$svt!&pX#xK8PM~$q`cDYaVt@;I;sQGDZC<=t zbkhMCzupq_=C;ne)Bru;3@JIT*-4A==UKx_BToxAP*sW^wbT7cLTUJ#@s5 z|5$+02Ty;>$H(2+PQC!vvjtNE*t`!jRuuLo_bMZ;SQ2b;W6XFxg(u?BO~ zHT`32)1zsVywJ|JWZZGv4gLO49+VIrHxBL?U?&J^MN%m9+y*KLNU>~sA=XT{Nuk8L zC!k~@kfxu(aygy9trEcZ;QhpH?{@v2_$p~22~tJe3%XK6x{$3H8qiK;s$fPm_|@h) z2?)qp7slInQ-EvlwEBn-@(YT&f7{6rhIj&YdS=X_#6t>uUB&b3vY(fcZEfAh#C&ycAv0m|$8fC7XK0e9wyMvsx9`@JUvScrz5AaMD}13qN*=l!>idw*`^ z(eUeOx$N_y3&5(x`V8QqRLR8DVJoT-@56vz8T7Rq9xWGU!GfPk=r^=ABy~pzzOcue zkgrrHjibSbfjdmR=eNX%d_=LGa?n?cTz~kTj$pM&2!BVK6?kU*tBrkYLqg~)7^v7e z{=+ABi6HNBego7yYJaN-jPaSg#Ovk0FR5nB@ktl!L7`X=(f}>*0J)KqA3b9N(_!mg z$#gxpw^gxoG8Vt?GO)!v$v_X=^l{Jl`W&0G3KTJ~#kx9iG>BNCXBIgL*7lBsCQmo- z?@WRD2g<_IPXsNXwKMlSA3Ns;#(vJ1r^kStJT1P!)8mdM6`!n>DR6{)jqii0upjM_ zH#(BQRO07CI3igGXVTTvfXM?uY!-&(VTCp%7CI^iET*sE+o!U_Q zExt@$i}c$zu%o?I`U!xyHh;3^1wx7tpHb{jy_I%7P_J5h+^~300iVhJ$splw>oTaN zFn2`q{_vL(NIDl%_)qqDR z27w{j)L6|LdthT|;W-+JM#KOlquE@O5Zf$u#xS?ue2X63!jmUG z1*(t}G#F#SLn(!*8^fJzf4)FsOu`gDhmeq98~q3)r)1%)|C@t9H{zgfcP>9i<5O@5 zt5Yz5>5AalO;~Foz`*#tMw?MZ@2Df64k|+n>k@yo>@&*oVSt54-V%w}Azedp06jqPf2deL2lf#XxMGI<@ zW5#Qa0^hK+da4r}U%22FTY(0kcBe0aTPJJ%k(o=Q%rpp(kis;&s>`i_#(#ukIRV!7 z!%3m7t-^|Kf;|vN4=#PpbDasq6&?E~1QyQli!@AGxxc6ihFF3H+P@HMykdbQ7+-dY zj`M0Zp0T{i!DxV1%?ua>R~ZEJN@Uea+~=oNh7@@na5eNwRzX``_T?Lbtpm0ItU)Lj zclbUTGZ%0)&lH07b`V5%{I@9H_A;1FQW-# z1?Gx-wNij--(uYR;4Np>&klr|WJ)Z^b@6qO?b^FoA(pJAO6GrSHxAi69MaW~Sofw8 zDFz)b3%~|?+6(1_fiInVuRH9thCaCBppEn_-G6f^>yg5GebJQ3f7Tk-JgSl0 zxpr)u{ZCmGm_hrSecb0JHk`>3LS4g)Z;|>Lf$Sf5cS;h1S;*n&n;w%L>ybPVCFz1| zN6adN`Zj#ggW^D|9jsSi^?J@=jOguazwI3j$D!4M~7TF>VuGD zmqaR*qg+`cxpFJHHc@I_5lUerREXrh_B*@Q=lA>kJ@bC=%xhk+*UWono{z;{Kvo(4 ze|K@#Id$1^Qu!H20;$(Hba`w<8~+J>+JDr|?4;kmWUz*QKPA|B)s@GN1vgeQilx5T zXx;8#tWSwlHMml7q{pIIB2fJ5$s#;BY@ckluLDVkFQ2K#Fb&oK$6pcP9Q%dz?;o?& zEdg*zRZ5~J7ZA{BSf>KDhkqp$Y!tkQSJ-K41V6UMwgJ%QDy7SCs=<;C^ zpmDKvvvQ*=;UK&u(y>BY&1^go=#>gJd#+twC+7G)JhJn23^6a|x_gxHhh4ZU(=N4( zr>4)9{H2M!sWmFZ%U&q?h83O4Va2(0Bsek{^?tyF)Af&7pnh<&Bc*Nm9LSR`gv?C+ z9uaw?{BPgdk@~pll7-GWcbtn_SXPCdpCv0O54$7@o}r6q%$#5e>w);Vo=s3Fq8NB_ z?~^2&ZWl%?f2RJdow)x9i`^FcpPLl z)MPz;a8~dmUB?K)axC`VV!}c``>mj#m$I9x{qS_<4g&SVnC$F1xA5%VTW;viqw^() zGE_Vmc67{G%zxlnTeiW1aR<4V}GuXaj*oW%4mG}#-18_Jcz`^I~PY8n?X4UiHmyZ(Lo3OB{hqkTS9x<}cibWs9r&i$V~w(?+MkGmzC8T!S;^#N5?$+w z#c;t7A6a&EzB2@#QFFkar$~%-M~Ridh|g?))<4+_%7Bndw-mt>*T);RV`N_gGPmN> zUzF>kyvEYdr?@!Y4To<`QaeI8oFW{qeENo1Ind}_xwzXgIrq$OsyK`)VrYe7UERrSCx~1*l{vOvX_DI~|VEAxF;rqP*A7QZ1BsqMOi#+~?+W4J(9KhGXCS$KRG8hzyK?_>W=9U<$ps z^Xi{TMC0IWjOLbGkgsj@{}UDFBjd`O_$MRcftFD{gYi*o)Wy#LaJGj5tihMtdSK zO~WS<|E2>ahR-8+9GPSPrJ$J8dx2OpuR}|~qzrdj zubdGy1PtyoDf~e3h+4?(frp!2z(h?Jazdj$XZ|bnG<3eXxNbHO+GPk8^K`;xV%>`| z=eHH2zjd&7l!b-xtSJ*$G3bZHB*RNVxoMg@5<7&tTeT-YZheHKN|q6~m$c~5C$+}5 z{gb}>&XvBWhO*xa8M#P7mz?e(RIdI}Vxn8NPr^6S{|tL?YA*Ofdnza2+47&e^zkY* zc2=2s?3nNR0BC9}Z&gA?mq#^D?K~$+&<#)9%1W?Y2Bq_McKb};7czXNht1gp+@H+B zt%p=yqU`=oST@;4;SfOe&`hug?^+@gyiD;(aR9|_;h9b$S5gFC)79AoVWeLZe}=!) zJSTL=M(=q|y-~kFGhHD{XhA+!9(hr-aiKr7?KJdENY5@HI6=zVs@uXWzAqX9ypNCk8#go7`rJfk9B-XZD5UspI_f}Sc{w?tQ5 z4}HcVS^&*W?k43325nBMI) zxuQef0)ezypDAq!Je%79GHSQX2*btNAW zz52IIQZ%KTHO=Rhh+tVg< zbX6GgvoGU8KDUf7yv#BCfW&Zm~}Pt4LR2;n)oRJ%ho zNz9Z`aHSncp!wDzCLy|&;#j`9EiL?^SiB41O8sX5J!7x~;Ept%hHSdL6sYE%((TgL zn)>%Ghj2lo*BZx1R$-JT{rNqpjW1WG$BA)@Tqjs@wI$a}tsf8DC>-7f7NI5Ma1mQ> z_tz6!YYzpHPOw5jLAm2xp>UJ}y=^yK&kl@}cjw;K9q3AIh`*5)8Qi3DUe>XeAD;OORPdbK(-`ef_`8}wIgcpfYCdI#7* zV8kC>TGnbbpQrL6I^p6O8SDmKKJ15e_FGw?JT3JL*$0i*SW3c|7r2FY5D{sp5W(S% z(!Z&O2avdxOpjG`mewfW_JoEJJ=EMN_*?y61z;+?vB4#WGRKB*`>H3*e#?{sFc#Ue zFqZ#1i!N4WBzshd_S~ljICu+)v)Ya0EI2g~H4zIil!>6+(rnXe4Duiq3V59IM9GN_a&+OP%qH7pC+DZfkK zEQx^3!uJLlC?YIUf)33I(6W5J#M}r7BmDB?8s9Q$7&~-)XnvM-0<*H6ha9<7-_)zO zd9sVBS&1PIg{lfvo^5Hg*tI=Fpre73-MTb=v6{+r!A6$XjQ7ea*sR^pW}poenF~MJ zo*F3^zx2M~XyaL9D5g~~8`XUmqR(0hDY(&%sfqCOwkJ>YmF7U`kuf>;1(u_Yv_yw> zXW4bQi#fR;>{gZ*LXVU(7`tC(DE=c8LU+AV zmT!E+8`ZN-*9ty>wpF`J!olaffBZz##_N&+`5vJENRv**Ryp`1Fg47#gvpb-5l^?_ z8Irs4lqeO7;_0!gu-+5~x;cK96fH_V$&I3Aejz+Z|MWYqYSl<3kL6`ppxY^A7yilvAal zPYx7d#2s>X#W^w?W#SH4(%L{!LpB1wU9#ifk&nJ$H!h~NJSD!MQ_0A5yNL+=>+hQw zt-fnk1>gd?at7n)rf(->mT7~QkU+FKXL@I=(a^f-Q{Qh{=&0||Nscmy0zHmNT6V?A z<7G-Bcs3ijUR<#JFyH{W@jt9S-ah}z^1#_O1TA|zaK6+CnGY}Q%s@k$cf*=|#j&r2 zXaqQnnFBo5EJ3+Z__ftd1CXOy49>uMc8^c+s%--ju_(K#4|Gr-3@)f%(BptIBL`(NSRN?~pN^$1 zL~u^XE$-osu4R&(X1x~Vr?H2XGj{+{xpLS(aJ!2fEFqkrLY#GDKr0$5iQY&6G^K%8 zl43Lq6B%HxH|Z1`%IN&2XaH$_A0%XTF6GgV^W*D_lXfe!WKv;zv_v? z+ZG}#Ammnh1H8@I0D3I&VT=wDOKL~9jGdyfS!}qv6Der#t&fLApqxq%nSucXCtS=D z(-p@{9li<-;rdqaZ`VOhCa`_K%i37C`jD9-VtSAM+jv`Q1$&Nek8q9EO0t4D(2*E9 z8@E>Lf(k7x`ke`B)CxW5?i17seF_L&Bo=lvw%jYLuZS4xP0ik3*|dlfP~pMz5^bhN zzFw^y5X);NON-CWfF~A!4NkG9P8jGY+=cb2_gQm|XWabFnGgxEqlKjaCN~xLKa9A% zx%XL-q2`WY-z*7AFPxG*-+`1J?-WhhcH-N_%I}GqdTVMgWzo} z!&gRnWW%^?P@eCfHFb#x(2`cRrrhMoU%(OaV7v(5_YBop)C+2{0SVgf){*~-1pauO<#4z8|b{-B%dqPVW z+rg??S*0O)8{F*MVDh-(X*dPKz0|;#I!l^?ub@XSf=9x23+m+yDp9x)X72`Hae_}{ zM-R21h*_4qELj^q|Au>GRb#+96T>Y+7AG~#`=s$u12PbRM1!jDkMC<(c%EZ&5Q;tU zS+IXv>-<*GVfk)ps-c=$HoA_hYP9?8`(xa}kA?QClWq9}%f=tKzS5ea+UXj=X;cTM zx$vxy$8AM}jT=V1k4HeSuekH#sKaXpYBy`qFI7T*3+&6p^-#MqN*L?O@U$yWmzVmzksyQ+m;l&G%GgF)US1~(;2-Oh zmrzl}2V1qb^r-FN zIkPAzT+gx;(OF#|*(5)DfZ7OomY@4a9OS|w2@3V?e2GhfGww~F-&OFiKA`$k5+291 z@(VE$aYWV5N{GtPTs<){(b&$Ebg^uX6IPP&tzD#;ro8LVh+H1hg90^mG}Tm3O2VSZ z37Pn>fq(?}32X|}*rW;`J(K3wxe#WJ-@kU-_sifHNt0@V;ES4D%(rOqw8fT+RaJQM zG!IP3cr#e(uI&8kS^%OHAf#E*k3KJaqMTw}vnZ0sKp!-|#qvM1f*VLfyX(P9(@>xM z9e~Z+!g4tQ6E?}Wd$6{6EUK%bUU#)ln;rD=0eb(%FpnETrki31%HqE1KuLjfgSCx! zHj5=AWUTT}FM!Xtxx2*3iTIq=dkgIf-wd$eXah=nXUW4(b=$g3@CvYuw?FFcl z;o0`j$Glttud}aSxrQ~0IM_EW*Z>^!n&=@lFc^s!(~l-IfF!jifz9K>*3&Og2^WT% zBx6ouzu#DFDc!i75t}5(3~C&ED|PQ-EFZxNPR~884Tv^`b4YKL&&Kpr>0FrzBz^p) zu|vAZUPRs30miA1F2P`_52$X1eYKMHs}yyu(88n`z=+j}94Gc!w!e)#|M)Fl!wC3Z zA7-xFe@x+g7=hOzXI}{zT3e37i4kr^thV!*M?kzIXwG54sU2P^y>})$hZ_SJw?vHi zbaOkP)5?ffX(@rG)Fa<2X)K1@4ttY>s95aWAB7e^<>CjspQsJxNC1OKAcwtQ{cS?! ztpUS-x<37NxxRE$+m-ESA6BJ|8t5W(4uNA<(_4p=rvwCI0c{%1XEQEyg)bJjC_Q4K zhQhC*U&;ZCS!RKYbLW6TOHh6PX44R#N9G|ClA~}^30qpEg`HgjJmvOzmA;>x4ZgY{ zZ^d3xnrXi{WN!VvL~gm@^1ff(NC1c{Ui|GrVjWoz6T6|GZ_WkIXHHqOG1&4;9wcm} z+b%pZ(I#X7Bo-A3?O6`kOqrn7zE@ig&J~FtEDHfc0`l7tvAMwBdz3{ZyXHU_U^Z#R zq}qT>-$4bV=W@M(*VS!A{zau0Z~Z0UvHZX)s#TI-ALAle1TL+bk$NM+hhy749M3|g zYtT!V%t5^fuycaKeQtZ!jX($-%I#%Rsjip4NelmPJ}G)O{qCV^FQbw87SQ|KAJ3FC zz?HYOu@`V-(X~1lavaWk#VaU6z0$f+5x7gHp61s^Pi2BJs{MhNg>^Jmj3uPUuXn%# z@a#-jFi^&5i#0Ry99tA1RKsZCk+z(H9fnoL|3(HXjxu5r5&*mNplV^OI3Xrt-R9g) zEjd9^;0cMGD?MTL-Sfv%Y(94N-9H9?X(Gm*Ab>wMGwGjxq?Gxk&Tk`Z@5T$2@$kL_ zOrc#5!F!yBtCXei!%Jgo+50h{4q54Cq9o6jdT(5}4g(sR{L(FeR$fu$@n5?1G@ugZ z$DW-m%6=6(5Vkpyzu8sz)iU@T6EMt?yXFlc_VRlf(hmHzD}CPkHI{RK??M&jlJ2_x z3qyb&Hfz=@x=*r|DQj?oqH9XafEy?1iOLFg2t&;{U7EvHT~nzFQehk2d1`5wJ) z`*_eo^J-BBa$yezL5h7BUgGk2fpjb`a7YKB%*V}iVNQlvnKJW7iNjw-Og)zkoPJrt*Us|9l~@0Ycdf%|?< zR~oCV)$nb->-#0Bfyb%=!}x7Hb6|%#5w_}O*H-+qgZ=9K8a{mpX{ZbDt~fV6_0$yE z*t1(?&m;)VgnjOV1)PYPBi-7~y3M6)jWd%{g`du_ug^EEE>yV4efA`IX;vDJyg|GX zql1-?%LpMlb{)NgubG{caJ^$)g{BpB;1`hik__g5)+{;-F1f!^J`?an^ zT_Xz(VJel&8g2brB`x7kq?*1gY~ERF*fIege*{>f4U!f=h>pY|aW`?7*%zvfG3{O> zQ