From 4fe34640f5f4cbf45a802fa28b84bf8c4e70ff25 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Sat, 15 Oct 2022 12:13:14 +0200 Subject: [PATCH 1/4] Bump version to 2.0 RC 1 and update changelog --- CHANGELOG.md | 133 +++++++++++++++++++++- novelwriter/__init__.py | 6 +- novelwriter/assets/text/release_notes.htm | 8 +- sample/nwProject.nwx | 6 +- 4 files changed, 142 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 60755749..13f36abe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,139 @@ # novelWriter Changelog +## Version 2.0 RC 1 [2022-10-17] + +### Release Notes + +This is a release candidate of the next release version, and is intended for testing purposes. +Please be careful when using this version on live writing projects, and make sure you take frequent +backups. + +Please check the changelog for an overview of changes. The full release notes will be added to the +final release. + +### Detailed Changelog + +**Note:** This will no longer be release 1.7, but 2.0 instead due to the major changes to the User +Interface. PR #1146. + +**Features** + +* The add new documents feature has been made a little smarter and now tries to choose whether the + added document should be a sibling or a child to the selected document. Issue #1107. PR #1110. +* A folder in the Project Tree can now be converted to a Novel Document or Project Note from the + item's context menu. This makes sense now that documents can have child items. Issue #1071. + PR #1128. +* All child elements of an item in the Project Tree can now be collectively expanded or collapsed + from the context menu. The same action can be triggered on the entire tree from the menu button + at the top. Issue #1122. PR #1129. +* If using the auto-insert feature for spaces next to punctuation designed for for instance French, + any existing spaces are first stripped before the correct space character is added. Some users + find it hard to unlearn the reflex to type the space. Issue #1061. PR #1131. +* The Project Tree now has Quick Links for navigating directly between root folders. This is + convenient for very large projects. Issue #1137. PR #1165. +* It is now possible to filter out entire root folders on the Build Tool. Issue #1138. PR #1168. + +**Bugfixes** + +* Fix a typo in the Lorem Ipsum tool and set a max width for the views bar. PR #1065. +* The language set in the Build Tool is now properly exported to Open Document files. Previously, + it would be set to English regardless of the user's selection. Issue #1073. PR #1077. +* Since the text editor cursor extends to the right of its position in the window, it would + disappear under the right-hand margin if it reached the edge. A minimum margin of the width of + the cursor has been added to the editor, and the same value subtracted from the margin of the + viewbox. Thus, the cursor no longer disappears. Issue #1112. PR #1113. +* The `Shift+Enter` key combination no longer inserts a Unicode line separator in the text editor. + Issue #1150. PR #1151. +* Fixed an issue where idle time would not be properly reset when a new project was created. + Issue #1149. PR #1153. +* Removed the context menu that would appear on the Views Bar, from which the bar could be hidden. + This is some feature imposed by the Qt library, and it is not wanted. Issue #1147. PR #1153. + +**Known Issues** + +* An attempt has been made to fix the missing mime icon for novelWriter projects on Linux. The + newer versions of Nautilus don't seem to display the correct icon due to some changes in the way + icons are extracted from the theme. The icon displays fine in other places. PR #1068. + +**User Interface** + +* The New Project Wizard has been updated based on user feedback. The "Working Title" setting is + now called "Project Name". The number of root folders one can create on the options page has been + reduced to the standard ones. An option to add sample notes has been added, and the option to + generate chapter folders has been removed. The "Minimal Project" option also no longer creates + folders. An Archive root folder is automatically added to all new projects, and a Trash folder is + added to custom projects. PR #1067. +* The border around a lot of Widgets on the main GUI have been removed. PR #1069. +* The Views Bar has been updated since the beta re;ease with better icons, tooltips, and an + expanding menu on the Settings button. The Build Tool can now also be accessed from the Views + Bar. PR #1069. +* The editor theme setting in Preferences has been moved back to the General tab where users seem + to expect to find it. PR #1069. +* A toolbar has been added to the Outline View where the user can select which Novel folder to + view. A refresh button for a forced reload of the selected Novel folder has been added, and the + menu to select which columns to show has been added to a new button. This makes it easier to find + for users instead of having to right-click the table header. Issue #1105. PRs #1063, #1094, and + #1111. +* The Rebuild Outline and Auto-Update Outline options have been removed from the Main Menu. + PR #1063. +* The Project Tree has been redesigned. The header is now hidden, and the columns resize + automatically. A toolbar has been added with buttons for moving items up and down in the tree, a + button for adding new files, folders and root folders, and a menu button for further options + affecting the whole tree. These features have mostly bee removed from the Main Menu. PR #1079. +* The context menu of the Project Tree has been rewritten completely. It is now possible to set + importance and status directly from this menu. Part of issue #973. PRs #1079 and #1105. +* The Edit Item dialog has been replaced with a simple Edit Label dialog. Most of the features + handled by the old dialog have been moved to the Project Tree context menu. PR #1082. +* The Novel View has been redesigned to match the new Outline View and Project Tree. The header is + now hidden, and the columns auto-size. The third column can be selected from a set of options, or + be hidden entirely. A button with a menu can be used to select which Novel folder to show. + Issue #1041. PR #1084. +* An arrow icon has been added behind each item in the Novel View. Clicking it, will pop up a + tooltip showing the collected meta data for the heading the item represents. PR #1088. +* The Project Details dialog now supports multiple novel folders. Issue #1078. PRs #1130 and #1167. +* The Split and Merge tools have been rewritten to work with the new feature of allowing documents + to have child documents. The tools have also had more options added to them. The feature is now + accessible through the Project Tree item's context menu, and is no longer available from the Main + Menu. Issues #1072 and #1032. PRs #1148 and #1154. + +**Installation and Packaging** + +* AppImage distribution has been added by @Ryex. Issue #1091. PR #1092. + +**Code Improvements** + +* A new test project generator function has been added to replace the dependency on the New Project + tools in the app itself. This ensures that changing the in-app feature doesn't affect the entire + test suite. Over time, this generator function should also replace the minimal sample project + saved in the test suite. PR #1067. +* The index class has been rewritten. The index data is now stored in a hierarchy of objects rather + than a set of nested dictionaries. The `itemIndex` holds all the data collected from the project, + and the `tagsIndex` is a reverse lookup index for linking tags back to where they are used. The + reading/writing of the index to disk between sessions is now handled by pack/unpack functions in + each object. The index will be regenerated when the user first opens a project as it has been + completely restructured. PR #1074. +* The index instance is now an instance of the project class, not the main GUI. PR #1074. +* The Outline View has been restructured into a single parent widget in the same manner as the + Novel View was in the previous pre-release. Related to #1041. PR #1063. +* A lot of main GUI objects have been given new names in the code to better represent what they do. + PR #1081. +* The converter for the old 1.0 project structure has been simplified. Mostly to reduce the amount + of code and number of translation labels needed for it. It now produces a single error if + something went wrong. PR #1083. +* A number of unused icons have been removed from the code base. PR #1164. + +**Not Implemented** + +* An idea to make the indexer run in the global thread pool was not implemented. Issue #1076. +* Feature #997 is now obsolete due to the changes made to the Edit Item dialog in #1082. +* Feature #1106 is not implemented. It proposes to hide the option to select Novel folder if there + is only one. We will see if this is really needed based on user feedback. + +---- + ## Version 1.7 Beta 1 [2022-05-17] -**Note:** The 1.7 release was renamed to 2.0 on 2022-10-06. See #1144. +**Note:** The 1.7 release cycle was renamed 2.0 on 2022-10-06. See #1144. ### Release Notes diff --git a/novelwriter/__init__.py b/novelwriter/__init__.py index dc8f8c62..903fcad7 100644 --- a/novelwriter/__init__.py +++ b/novelwriter/__init__.py @@ -60,9 +60,9 @@ __license__ = "GPLv3" __author__ = "Veronica Berglyd Olsen" __maintainer__ = "Veronica Berglyd Olsen" __email__ = "code@vkbo.net" -__version__ = "2.0-beta1" -__hexversion__ = "0x020000b1" -__date__ = "2022-10-06" +__version__ = "2.0-rc1" +__hexversion__ = "0x020000c1" +__date__ = "2022-10-17" __status__ = "Stable" __domain__ = "novelwriter.io" __url__ = "https://novelwriter.io" diff --git a/novelwriter/assets/text/release_notes.htm b/novelwriter/assets/text/release_notes.htm index aeb5fbc7..b24ac288 100644 --- a/novelwriter/assets/text/release_notes.htm +++ b/novelwriter/assets/text/release_notes.htm @@ -2,11 +2,11 @@
-Released on 17 May 2022
+Released on 17 October 2022
-This is a beta release of the next release version, and is intended for testing purposes. Please -be careful when using this version on live writing projects, and make sure you take frequent +
This is a release candidate of the next release version, and is intended for testing purposes. +Please be careful when using this version on live writing projects, and make sure you take frequent backups.
Please check the changelog for an overview of changes. The full release notes will be added to the final release.
diff --git a/sample/nwProject.nwx b/sample/nwProject.nwx index 0cd59b77..c822a904 100644 --- a/sample/nwProject.nwx +++ b/sample/nwProject.nwx @@ -1,13 +1,13 @@ -y>?)A_1zI#mF@85dBBG~91D3?_ zPx4@T1BoYM8VfC6Fii<%*2)S-oVfuvKnhgE<^wuy(9m%M(J^pBA(9-a?Va5;jfV6W z@>LITm<90dB(x10bZ}-*OiWN7ovVsScePmBg)+q)94jDYeh5#cprF9i8d6T6d5UCI zEDF~CYX_LpyHWaKa!{@6<=G4GG{FVbXp@-V><0P|vXEWRPBT{7 z-+`wK8(VJ23FKhlma#qTF{=B@<<%`RX{lmHrmUvZor43b+4-__Eh;y`SOj{pNJ}3i ziOt(@Z2!vzFfcMg$u|Nt`^e`yI5}4XW(lA-veLk32b!}r(4G!wd3g?MDygMqplk!t z2RfCAgb1;h00kf{ctn{BY^zB?Tt6!fC(7ECokadBEG#?+DrFHUvL_Cm^9POXG}u^@ zqMCJU;nRS3s_`=5U&l#(NU wib|^1otN}02qg0Luy_Depra>7;do>aBCG)o|Hr~ zl`i662M4R|{ZhNL0(jbKnA~uDBW6bnTk0|qY~Vps<`r0ROjHF>^CU^(*Oz=vs1r7`kw8s$Y0&HWbLo$}KFJo9kyRB7^9qKSXAh79! ztO6l4006P=;GAuZP{yl6aMb>JmWiqh^>b<&KYMl!x^Rf<1*}(OT{elJUks_rJV?GWI>2;>59DtNlDL-RDU9%^m*jNaw(syJYaA(~yN!2wE62E+vV0{o!t z0ZLU398KKd-tcVifshcDF!n7B=$ Cve={*N(+>y(;4IW V!w6%bvm#4qe$g;x3+FW`Uq{Z*TVot z&@nOTfer-xi#CA%Mg&AE5Ff!0m0Lg*$pY&X>2`r9I)Wa8^!yd5t)UDDXOb)M7(rr= z$bt|?wOiM`k6X(FX_gY?U11?2O_$}-vVM~|@g$LCg%T4KKGU!k^>D*TLmOKMEigkT+sgto;R(7*Qo-PY@6W$dJykGG+=ZpqmFl ze%nFdy3d7oVCh1R?@1WU2dd;7H*SEhzCU=j0C54M_*@4dg6A zfa1_VI?o*=gJ?J4_FTlpMF@*oSxn#}g)9cZN8y-F=rn*1B~+B;_)YQK zXQdZ{Vq|(UGY5KAikz$!6^S4+K$%`=as)>YM5lSAPY8${SPUTAV>mhi%s^yJAjl>G zf)dn#0Gu=I5CEeN+`JIZD(J*H(14R^JeYd{JnbMehfl^O ^eK+0w@?4bjTh{dI)DX>yb{Qeym;w6lM z06rU{QUel7bx6(xoOmJ`y@=-#gt8Dp*nCjP^4`hT`sZmdrEIIAsJW*PIVnIQ8wlMI z>MoGEKa`gC$*qDd4OBEXz|J7Z!%~457}*BC)?m-m7(gWpmIPGJ+gD&UAlVu~FnJO! zb7bPlwUbs;=G@@+QGr=VVZ#UJ2WT@I9ArmQ6u>=%4nBg*nE(j|N!<~NIB=l5VL1XG z3`c`)h9g*HL;Vb OjneU?(-&)vt2QK?4Ic^hS6bKn+~Y@yOdZ zZE0 sN&F1j|HM6l6Si=)5Dm2dhJMruHTH1Vc^WMGhY&0}9$D4PvM*%tj`y*Yr ziTx+fG2LGN9wOCLkx)=1q8J-9XwxH)jWs=r!N+PW ?&4(i2V$_GOvU& zKG0 CUmsc*Ot%6;Fp$;?D8ow-~erOdy6cQ631d1&T }C4nWGotW9Bsa*T0@x;mHF_E=^z6A-nspn{- z3aKte=UN=% s4_lH`Xwz@>(5a3x5{JDhsOyNJ*o;CFI$kj*I z?v{*a3`Vw4f^pUU`;NiPUui;l84{yD`Z(&Ok16(&R5n-+v`y1)&AW}`9_BD#4|m{e z&I>*FyLYU$bMFj0H8W$J*Dy0SCjcm%3wYJ(JFdwk+-2juZVl{KB+YqLSU2h3@JobN zm=B)1MD5r6Qaf2)$Bet#kHH#(V C+J_k_C94ot6qnVvB{ur>?|1%`*wm49x-Ane zBN5=tkco9AX{~tG`G++}r@B4<+HX5jZ_BKs4NNz)Ws|S%j-& |Uo$Es z|MO&C$vysar}sTPQ<<+!uO>`QNSuWFkU;HCGj7oM?&7SYpC>v&kWgr7B=zDiZH4rL zuOlY}`%S(JIkM9fpKACnkAHdz=kB-Mems%?+`FAu>)5xJ3+ WdHT!kx?> z3&}ViQ>Eooj(ej=F@!|E%yV&9O-lMTBHETNV8ziJ-?#MJ@xsJ4LW#EKnE!r93!l&L za$!|jd|BUq@~vv@Q^l_lluJST Ra%v5h6EFRzS^NV^u#GtLv6M7@Ht+ zSE)CTwjo>LoCiW!Lf;aLOE=~_&(7h@N~ugt;ml5kVZNwuHH+mbIt1?R6OU%x9qC7p zM6!==)7}%-UniAQ>v!umo!w47 4Z=Caovv>turp0Y!ucFEnR$^seAIpD^JmAPG;7) zm$_uVpI~$btu@i!L-+H1zk7(|ZJWJp5qE{d33D=OwR(ZryCTD_u}hJg!lqVSCe`kY zwnA@sLpoge@sbk1TjDy)!NiZ@1>?-r!+jgWqvvX>$(8HJbOr k)dwlKM@JW*ko(j;ASp|BD;y&9-uqtLrG%~iyfm$3 zll(Q7&~3fVituw#CzEri#3mUum96$KV;Cs@ITS~Z@5DP10f_)oEnt-e{0aq|q$yCY zBIV4BISHY|E0C}`uNDm&BW$T*GusPA5SJmm)PNVMpSYNsS`=YE7+{|RqFE9g^94rz znw=;%VA}#AvZVvaCD37k|AE+bLK>mc6I;B~0EU<$Ay7qAp!zh5o0T(q5fdq(M8kRl zPZh+78UQL0o-C=%+PaDN4aOx-FGYmA9un%`vl&iNFnX-DFIy2B5Mf8~q#R4y2t#80 zgooZTu6BZGMwy1&{#H#hkz)_%J|^SJ^;J#3?w3`tnv@29E-F!uzROH%HYo$*Bm5P^ zR07x6> s!31vM)}fwNTaPhSnj!?|wHhZ)tqw!?xh0q_6sV zK#R8ayZHLy-#03_cQ#z gMUp1q`%2yAxH$pCj+1SYUq zFO2>MPmG7D-LOu`3sOrv-ul~Mg?J)#a==ilI^N2p63st&fbq?Y^0%$o+G!C0{E+r0 zbuXr+TO> &~uS~IDq+3MVmiu>RYtd6$pByZFTdb=cU23gw}yGCX}IBV_i2f z?9zqiOY}phg~O*mH!l5NdJ0>!74MmVp5!~m1# b1?^-*G{V_@aNBVQM4w4PXjho^IAkJiW<2dK)=3+qc$XjSb=C%3!PYDu78el_1S zRAt=y6zfD4`~J%UZmd;dkD~M22b?@)j+9T5Zy8RV>^G&n+$N|qEzr)&j<;JgRG2@x z>Lz>nE|y@@=Fe2;-5piUyio`0%=k{`;LqEGD#5uOBqU-z?gy}+S@zFQnGY-)nx&K+ z<2LY(TQiag?oytclF-?{B$BxkpO@_KF*U73eoT^Dml90ovX;H>BbAUfLHCGn?6%&J z7%YPLJ)HPoBTsY|C8c(qej7 7!>7 z{Y0?*A%94ux&PI!i7k<4)U&ZpSZo8kwcxJ65(hC=@-2Nbq ^vK<@X+{pBu-yld*M}(iC-a0mlL%1D7jDD z^n2na>i+W~QkFvr?Yw-9%YvqYm0y}+L2MQ=r{=7)Xin1KY2O!gSVK#sVUp7`aYNZF z8a-v5?^qVg+_`yg#m3hqVP71#j^wI@gvQ3TqQA(hspbQYcydC*T4>Dx(5v!n9L!;$ zR)i@(wVSiQ%p&4*fsnWQL+4WNm8Bcr^8H)KR?qp;So^eX2Y}vRk^i;^dJVyAdAYe@ zf<+6^)(&daOc>DbJ*%w#I+!Np1u9>#p#}hO5^7hZ$p__|>2s?3wqLqzi1i$3l_I!1 zokPFXAcE)+03mao%NTq6A?ZD+A#g#QC=nGDCk5Y% oP`_X9$X#S}^E82Ibow6F>SwH-E17mV}j_ARxAX>YrhWJUurS#e|jQG*?E;NR> zh4Q72B?>8gz0oBJ-awe>p59k+T>kYYovD6?%7gx9^ygqnCGr>9zTy3(P8TV@pbKl% z$me4+^E _hYY-j7#}DfZn$ z(=04IWi&piT26M9!@IgK5=>1lN)J|s5Fe(nvrUb;*79-445oB0LW0U-*l7k7jxd3- zg37tRO?6`p3IhRk*E2$We$o2y7aSo#2cJ2A|85h=jw<@_s2;?HW7{V6X)dIa{&pZ4 z#eDV#cg#2Z%(7hc)##EVrufti5=miWUfRB6GMTa?VcN3+4kxMu+t<##kn9l1M!l!M z8K_8gR+H&e`<)j1X~g%|Voa99kJ{UpsBbdGj0Bwd_#eg+Jp7YySN@8&VGL<1B#g`X z^t*??XLf}a*0@ZnTdr8#&Wr3L%38j+cQD80jAKj&%6L2NNJc^j7O!&{-+FmlqksFF zmRU)ni0{rL9;wo$l*H^CRok*@J*2Q4(e@igQ`Gt9O`Kxd#rxSaQfkGX*xS5V^K(hc znYiqC!SlC0<^%-~c}!tX*74i${w3Xw_qvs6)-@7lUVgpWziO=*a%ucFKq zg*&!hxNJ*D;%IbOL&kEaLv@LP?5Y@Sk!J<}*&;Fz?!`M x`0T*i2c3AeE?ei|ASmsz!444& z_~@E|y?$L@J}crK(2BvZQ9(`Z7oeDEk7Z=^0A>b0KVrJy))u0@Q}h@>KE!?9v}o@l zou|7y@Lz#stX#;+#f1#_gNZhr6#d=fLBWgkEgkm@?h`&aZMRg2t@tuCC?pCehr^~Q zPGLEe>@s~zesJ8h5IBpEtc RVcn($h56_3Z=(Gq>915#ie5r zFxWxt6H|HqY{9J0-!%R9nos|TUWca4Ua3)A$iV>b@CLr$v%XM&63(D+I#Izpy{}RP zzMl`GupxW;IyL7-E1ZV(1Wioys#)hQoO*IqxxkD)qN^##)YL2kDXDu|kg5S;useQZj=ANK`o!(t; zYc@@hPCLv;SJ-!6O4(Gc^*!+G!|>~KD=cNZcYlZEM3m*iL$nF9FAuAKq;o_MV- Hq;a-k)MYck-o mz@X9YPaT@tHiy#7r!PXygxj2xU0cl4K#_1coYL-t7cKPjkVM~reJCTWG+)9 zy5W^w%2@!)5S;+n+<{gDENsDhQ4e?!7&0$S@=8A30@M+B0bt+-oi9M;K)8euP *nP2i+KE93 0H$+z5DT=}4Ex?r??cmRt2c>x|2>1TWby^iNTRkFjaO^j#$f zPoGs3nq2%u14q|{YSKYZ6Ei*f;gBL9NzrzPftAB?qG$K;$mEnWmAv(~XlOvsL6uUw zkF8xGp`1VY17ft)y7maXv!w40wx{*iyD06hz#4!M(77OxqlRe_9R6ofW>znLJzk&* z)MFAsO_Kh6VUxCZR|V~Zgx(eQNv3FgzDJJzUFwn2Dn|E{C{G{Y3cj!CqaQqD-MB%J z*c Ul5%#>0yMrGE%#cOwf523i1*Xar z?I8}f=mS6r1hS&?xmLJPLb=KdU^JkJ%;z-xmV0UoESW1;vaa;Oo&isYoni51lbk!U zPg4%nIZM MrX)SMk&8M|s4sea@CEN{>j5iZBH_)KAa53*eret& zBUo-KY?8*odrU;5jpO^!XkAo)-AX`MK7D UGr$h;&&nzDAisct7j?q=Ld036;Y5PwpLsT=q{>-zrR Cu7A z7%ML2gg%1}Y}w_a*uI4(lkqd#p`~AMvhOElRA76ydDGwg@Od)pI}b(Md`@9+r;?4- zi*cUUW9-3{`?!`Stc}9`t!pWX#-un^G&h+jD#C=Cw>0B**BI_S4Ouw3wT@2($>pds zlUR4yKi2Q^yzPPK&l4|iZ=@qtr0b0`g>w92$0zg =Vq`ouvsLtxV})EbCDS$3)H2QoTk}!?l^P97 zQBSa0plf1@IIQ%#I?hDKWqgy7(Fb6CFo*zaX@Ez-88N$6d(}rd`*q6{y+J;yD52Oo z&iYjK5{7S#kaEQ0vK4Rh=@U#UT&2f{dyk`Y227%)G8Zj1e$2d(e%YsRFB6a4d2fDX zw=Rrz|9nY^7kSL1nT79^)=$wVrOG~*sZ3i9WG@b2^qQMenM}`3UAy{J_?V8|rr)^l zuvW*4OI>f`z0@P8IfV~Fv zRNKOGZLRUs9Boh^-;UB_3zRdpevmiH7Z{r+&a=+PUEuzMlZ-!V5<0%0*25iBp`WwV zr(hBKds0z8o%3tEv(%tV3EJzr!3w311h@H}F#+B6XtR%GN1a-=otS0|N|=mMiz?7U z#Y%0z8-S_QG4{G~MD8Q~P4ctwFZ*ZfLRIz@FaY*EL7aczgqM~sj>{K%f!$#fjTtjX ztaqVZI?+OopFYoc0m>p-u|+FY(jMwi$<&gv+hcS5s{5i8xwQ5%-MMLrNvnYn^t8fu zn@Dee+yzeSGRpr1>I93rJ~>QeLJSNHwsUaUL=>RVjiO`scTDOu2 E? @wtRCarUn5w>g9V G@tx zlRNLRbwV3?H1am~2DScNtH54CKTAYor~>4%Q_!!i!nxvSladePP}ajof0~%+NYlhj zZXK-K@#Es+%BiW5agTFD8Vx5cQPFT4lzcZRDG?W~_ZAExhCQY8n|A#BPJ)nWfIl%V zuG1# g_W3J?-=JDQMv& RkQ+?0Gfm6UmQe^UZl9EVpt$~8m z`tID-Ki{a^OqHkw9QJE!WNn1;AW}Ox2?GAE4+CbZe`XD!MuCgG5i^hHu{k}etI`!= z4c2*$>U?=Y-LG=cZkM^jm^TbbT`(en!I2l{5%DO*UY#L!Ha0ni5NLY?XBU~N5F%Ho znu!M0546GEdJXZGAA88Q5Bhs~iDW7(s;YYTqaG!7KKW%yljRQ`X)s3zC!?qz+5OYW z%gJn^LZ$qll?3@Bmbdn2mS^af()m7RI_id*&UrHv62|zB&nLg_KEphG_?r2qMf-iU zeDaYeuEX@lRBM|8CpDIIy`-YAx-j%VyfDIll|FKfL}=RIRXB-#VxdT(Oh m$r@x+Wt(MJ7f&*>8e(B9e!vK&JRI#C8>+D4Bh9lRehsnTyJc6ldm zCY 7&F3d`INd8|p0rabHTeeQ?8#7R~tC z<}|1ET;JYthsU3-bD7z#cty-$8&hfNra~ycu=L=s`54Ea>TVq iGMDtoN0FF;G3UNF%aH>0BBYwEOR zrE<1?;@ISs`92OywWY~-=g3*9awCa#+W&Y_O=k%Icr`<3h^dFT+G^tI6Ra^@ey%%C zZ*{{mQO9ev g8(X>2Sd7?2|#8Bk(@>`gN6i^(@O`9o3q zUz8fxA2Y
{Ce4zwNam!rE%GR^i_ZR6t8vNN_FvT*ZEnNl*@%OR{-??%+Bo~-%aE%rFN z=q1%i5+;~#&$JWk*PJIAY0D_NW!iwUnIc`SGod;N3}oVnjQ=cK`MAfz&}>5gSF?h` z+&HFiSGgK%{c9G3bcqBxLh_haa}~zS*Vz*}d)+QhSj~@6!U;F^cXX_hue1Etbn9Pv zNJjefxdNqMnO6OvSwxROob1+E(a)-_D7vdSggDCa1U?C=8{AB4LLxOUNr-Y6OtQX~ zIdnYA{QtDjj3fq`;a%bWijI 5_Zt{zcn zI7KlfVT7>JAmeT4y$Ts~-E&_SE#xa|8VDU_sD?Ze`P2lm>Y=wVbqr-R)k zc>M4J_tY7p*g&Cg0jm0+-I2~Qb-gtM+YwFR+$e9#==_dc73%IWW&g8JQh%C$pQLHA zXN}% FRWw}d7m^P68FvDEX! GEVe`tNJ72d<&=BQau62=-B{fzFX`o<# u zKHQ$_Bu#>oqL`v?z+q@HOUS0#= v7EG(KZ!6 z{=fT@Y3QrrV-WBcrGh!W`tmIxOmm=tG@lws=8Xm%n>*RAF=vQlu(<>(q7n@T71kSY zAbSVR1vC;`#*fkFpN?qafvo{(7eVY#vy6IMf{24{%A84Wm2n~F<{(J9R5t1_lPZ=V zr(HB`4?>^R^4qEx(Lz)|DkRshL_4q@ycus;yLVjj_R)mCXC3R(kl(hMs*}Tv%N%_o z8xA`6!K&G!S)_V|{hzD0n2mAN4K7bbRwNu8PeOVPIo0lk)_WZ` V@>T1rQ#HHq3?^1k<@4#0ebe=^+5=CKc1Q2%rTDq_ffTy(_1 z>PoXaZ3mio`{T;sytIF?b(|a|MGr_PZORsxm&@;2N)kT%#5ljK(I~3UjI(+~?GlHj z7H}g#ha{6V@Tae+66t-kxt38ojlvA_ hYdr64YIe@)k|F!$IxX zx--_Nm>*o}bnO<=-*5Kk)fX-9|J{8S7+d!0`Q!snbj7Jlf7A60X{* nlhN(P1ZKVEM1JCz~933$y( zz5dbj16^HjLz1ri@5?}L^(R!+Ti)vyCF%&7?uq^KppF$U1 +#34Df`wJYu@XAx`7Yt!8Sv`Y0eXJ-x*D%ikOH=W~$X)a|9S*i& B#hFocCQo;esj0m?XDk{SAE5$Qj?g)LSVYut< zA%?f?_ X 4OZfOO7lH>F zWe2u&7vDilrvy6?)6zv6Feq}7L=k_#f0N-Z&b!tN5#;tq7n!0^f&VF1{^# 6z`;6ZKTiS4De|b`hnt&kp_m4N9O< 0X~)hRE?^U$_;cXPqHQ}_&2 zMBU&!27@QikSR-$yPt=_7vvBp5_PUU2nEdrsKKG_02v%)Yluzu;E$IW;C%&o89!x5 zxCO91K8n5v9cNXQ>j-DpT=JK)JH*nNA6p0*H;#@UCO`b58BDpLW0K$HAZpY9wOz2Rt6@{ePIy54V9F-A@kWGrA7a$l`b zeMOEb3NaW6Tfu!D*YSX6&=Hv%4aRf8=za@~WV8`e+X)BYZ^MlNQWlJ;;?^sNU74MY z40eA))14NRB>Lo|LOOZKRdAJobpWz!H0XP#z@tGn1_*)C;Q2@bN(F15sC{k6j@~id zcQ$~D;7&+~49yY0AP*nHaz!pwFnKCp)uqacr>U%Tzs4(LYb=ZVR$z9=y_?P2@%HBL z;)1D?YPk4k?fV)VwpIo|9v94UWao2eoC^Qlyv2`I_!Ex7l_ChjjwT#^!ox5^qYWhH z65o|kA)2R(^Svrs$z_hqGR<)LV2bwTS7Cc~H5yZx4>T&0lo)_&0ip)XEEOdsIVGif zh%AT oPL9RUA7mMpO%%32z(`qGffo#Jz 6rEDr~j@zbWa zafVQh859h$u7H{7{G#&)WCmbRst;%)G8dDDMHrZT0H3}`0ZOh74s*c6hv2h-LfwX@ z&JVXz7$^c82(;xdU`V=Vb{LTFt$1VZ1UGzz(+_X~@GzidWV{6Dl)gSK2+^>kcks?v zeucS>Fy)#T^clvW&8giA>gZGM<)TSn&MiqhHeV)l`0s7&)=|{KIANlFDWdAFGrb>H zvh}IQ@IX=L JNzhgY+U3VlmX zP0PHp=Q>`=tCL3u$tlxcz31yUtz<^<6nf@1WNQ(_sZPv)BbxdfNL>UW3z81K2M6rS zo*QY9SN+X9_~AjrY{Z6FIqQh6H$Wj!nRb9C>oKT7p%z7wY}hh}Mn+(Hv1R2hcpq5* zKxu%02M$BRqN26-M=K*GL >AEZ6O94acQN_;idT@E8U|;oxXok$8t)2$07);`n z)z_adw!Fyt0>)>7HNBC7^WO4c9e7DFy{Rbt#wDdm_i`~TG*O9>XMav)1b?p{ q z{R&n1P#Vbsmavv$oAfWUxtiz^N!sA|8IkYs cKT_-) zy;fYv#PlAyYeS|u`I2mZcd@!p%H4#KuC5OdaRE4=0jFon_=>*=wWia?Bj{5 P+CW{5ayhOmTI}qtITrT3)1|wXNRHOUKVLtf8AtT7aCl03937TpZ4f{3g zk`{H$Du8MTEU7>>1U`%4zXoEBq;}QoQ{9b9uctDp%Kua;!Q&uS{c{W!D-Tp?`rF#( zaNP~zcYEJ0CT0*KRT&Z{YoX46MfLvmVV3L%J$cRBk}sA6hu3s%%e>Yogv8y&>&lA8 z8s}2P^~4_r8ndv>*yL4YhUgo8L$|XLVSU7!gBCn$L5#NNRO~0yKft`s?E7gZgMCwy z-D7IoA$@sq&NYMKN2$6KA2X16ZZ~l`+m1O^@|g)rWX3pc{eCZRSw1|3+|@psy8%*k z*)meKa~tcsO?$aCT>ey}`JeR}{I?pL%3`)~F;6Y@&<9^m+MNitzzNygEcKm +iek}zl zIyldzcIaDA8U`i?UhKo{=Ii+t`%R$Saa#k;G{XK8L6+U;7+M=PAxFWN)GxPjcYhpA z=(QNOoZC8&bz$pgi^Naqb}_22sl7ujsMpzw!_;Kg|J>xPXRsYG2S9R#Bn#kdiIWeb zL17RHNOusbC>Vo-7*_(6c#vV*RcJy02E!Cc7ZAr|?`w=msP4XYcul`(7+~bvFcR5M z+_J_6Km<_3zmZ-zJaK^)1nIuMon1J1`+*%T-+iM?7I*ChG|MU1dhx~n6HDrO@)@pC z#s%m_;k`SvJw2!QNPOd^8Y2c1vCs7ML0GN*dHRs~`>f85kuz7NT33QqTd#^g+7PzE zhl9h_#Bj#15feA^CYzYpfyuKAXeY5baRv9heW$93nG#*% MvkfO1~nk;`G>* zYi6 G%KYkTU~LxBJLWl=!HytWyEiI~{EPkv&_auYj8tZ6;1KK?J`8hl3` zPxn%rc?GIol>0Jy#@I$h$)Q0hzp-_2>0q-`L8?`cvZZahuh_2ec`M!fl1|q1=}Pzf zeF*LZtK7XawR Ej z$*y1uC-wbcv89$k1-!ByeDOK&U6ZnqM{ O@Mv;|QM-;>Pa?}jt2Q@`iL$6n<5H&|>O7o>j?&`@5LdU|`*0C)MkU>vP}YrSF7 zR!BwizMyHw+S UeVs&<91s}02-@dpWSAE?l;&msh zJ7_$6yTwFwuc{^!rglikTj7QXj9Qgxl=lsZcK^N{LKSu+&bx@9s%_YF9G~C+qW=VO zz{v-mMay&8uiy1cYw5d=x}ZH7rHL(Hku+^7^*U^KFm11j=m}Rk%|DS1j%GrSZ&z;; z8sF-;*QVBzQWup%9`^U7+f2EifO|VRhJcd)XIHW``aqd2Ggy}LAFtPe?hlbKLe|6b zmdgwjm>}k?UE9lp2~Nt{nr&b!vxq`XgU?CAw{PA+-_HeuAg~B;RQrzy0dknC>$nsd z1LPz0qkp8`^_ed@78flWSRP%sj1L%In|~e_Vx9ix;hPT&Hf1#GI@QxP#$=6Y*pXK1 zQa48pzV^JrzY~Pcm0z$v^Znf0x>{NR;_Ajey~@uqb>Hgmj1`5yi1_>orkN;VFI&DQ z5yMtUx3k g#J)h^~wM;35f8_^6y&p?yYlpB9Z}0T=CSQwqj tvA7b4=)B?lqm(!X+O9#T^^OR;I#T(_*h~uDq02vr^L$gexz}nW<62z^) zuBQLrG&@`-ij-`@l4sF|JAE0ItY=4Oe*bYg`A(I7v9sW@i;zrQKy#$wOFlmZFRAp0 z$#TAiw$9~+MmR 6k^Ke7uj#!vd^nD9bx4PzyeDTS4si?6t?k=Q$aMF zh~Wdh8gk`_O)L)>A~9kpjMwtlgNGZsitTcJ69xn*3-hB=t}?Tv+?o*kMfK`+jg%no z#+BigB31*c89rNA{Sh9g)6R~dQBDQI<6eR6uFiherO1*F-@hw|>nRHVzX22ZN&9|v zk9fm{7UsCswP~ga|F62I=E|Ga%DQ(_CaFEjW2IHq(&ggi>CEG3hnKex45%ny+2~$% z2w^a9-x%6IAB=P18F9`pTM0+9kDZ;zM Rz#8{^v)2)7$vOT?~=2GmaleoGaxpSTK`=-2Z z{qD~GnqRM(v4&C{&TE)B-bZ=&eYyOlx{pXLl|%VYC{Py&1eM 0^VO6rg^t(5N{8;uV&?bVwowl5pMm@5Pb;+X@!T+$^Pd}74oK`AsF~o&c0_eh zh22Z->5}=O+EyCOA+xjlqqB!=mUG r{) zAtKG*CgxVZ=;qb6xWCc#x@JX_8AAWPr;oqZ=}jAqKR#zylpHhb<>h|ijeS8S7t6de zeL6p9+2>6rM%Mcs{{Q6yXbBa&_Bc5B#ip)0c^77J5hf90U&7YW+NrFzHmVAFk)CJw zwk_y6*7w#Y5nfD>A0*FDJnp{oP4(Mz%^%U)CM>DLvPlG8?6==wR@t9DDCQ>$V q|27jTK~Akb=Qe(9{o1<|wYiOF&9;mo7V#q9&`-!ETUzs2FBk^kUOJw0jk z`Yu0b-n$SlNq5W(ohU2wv^-0ts>~FwP?|e$^M8>V4EMd9R5K;szfn+DVr>^Lm>T5q z{yi(I!5uiD1}_AScx=LAG_IA|p{mv1qg+oGviU0yE#_Xg)vZ`}8@&12*~L9OKN(>g zH+gz@PcdBnXZd&g0S%i--bfZhKP$)5RQ|aCoR3$DY~O>?^)5J =$ER$pn5>(E?2 ;^`E={n->Pg-&IQ zg1Uc#$XPc6 %Y$5W?n|-{s8O={o;23hHmXffaMry`pFBX!J0V|R1n~I22<-WPEJmUDcp*4 z(v%ohfzA!71+e`R3Jb4;2lMmi19xeII92g7&R%lL)5~*^8)}a;9??+VIkze;IomnH z4@b?l(b3@W;YDj6uiiyTP7?cj%yGkt|A(@-jH+@A+eT3oEI>h!MkPhMS(FLV4bm+s zA>9fJiiCnR3#6pGyFnVHyQI4tzI& De%z4i%dk(VnM0oor z> EY^FE z@4YvA(wP4cUyQJ_nD^982%tSwG7g;Q@W}#VhN`m%#Rg Dgi7};{$`Ik zyaDhmq-?;zQ8N=D RKSJxdXl`@ z?TIUYE$X2H;iR~?o{VpmSI_(bXlWnFrp+wpy^ zf{XC*>8_}o(+ORbYW_D`>#c(rc}2AH(rJPS49qJ^Y0cLIs+ad=$NL&OA4>a*Nle59 zwu~)?*JEP#EZfMLn9p-__BouoX=+%p3rpU#Umf&XpE(mnkY$bLdNH<3^7qIzLHOBI zpcW3Hb_ Z%f2o2)b0saY)$M9KJOHx)JY5HGq0YR`egR4$gC4D*s6Yt{k+e_ zj~&_5c(!y}UbtQ$YwhYbHUFUFA C*XM)cOU^pWVVs)lFAnyh(x8U(m=N80Mak4;;Ml@u>paFoOl!lMmjcyoZ z4e*&D;q5|$29c(E5P`LBY_Nc`8}c@KAROS)ix*d*#R_IWpdnF?2FTDXhr~k2S+kmO z-M 465MTk$ISWypeyijaXpbs_5)QUxFn4f4`oLC{p_PNGLG z-!<73#dl38Y})^e#TA@a`nYjQ+j%WBX#4`ETt$gLHZ`sBq_RTGezA9@C>)%+`S0y^ zvvItTdU=q{8$wI Tld3^8Jd!=5kB{S&pPhP0ck&o}oL$|Ic9Y=ehL&K{#+tC|yj0Q>Q5Ogju6^ z2evR2k@^<0&H2f3U uNGm~f4GwVFa(a7+IU&%)FN5= thPnBz8>X4Qgj+tluGC1t^3p!>$>F=dQ-T=?AaMYtxdRFX?znx1dgr^>yrA<)u z?e!$b1crX&PJMm8czR+mpoMltki0Fc>csR~&-I} UgwReI#inJ?9U$o6YI3BR914Q zKXie2f-oGK4F@BmkAZ<-< Lk$02-!((rB!QU(Y!7OA9dkE_$xLuOn6 zdpA+}c6Kd`bbMS}UMA@q9~<)n>>Tz&sDA>m8A5ZOJ@=!E1#B4qg-;BsAs0$O6Q*%v zr0VJ@3&ux=haI5A1br1%4h=D$&}9T4#pR~70uutEV!~k6=VnR_UN6v(wI-yy4L^gH zp!#Q38l?qANiO#r ?e2iQGlsFW{F&^b~R^dRPlP0 zkf8w?!CHIUeIW+Yf+z2k5~l}w&nv|l2w);(<7Nvi8dl}iT}_}vU}VUNzOuZs7#n+1 zxb^J2yS#kQ^9em!r(3OtOtjQAA11$R+dM{ik=+q=uAa-)A %BjGK)%guTxQLgz{ zxVQ?!dNH}uDdQ||2KT=$?$1N`(W59$m!(k_5*HUI`x@RB@FAe8k%4rw3%*~5fL>cp zAR5B MQY=;Cs##m0il#na z&V^R9^!2>l#zj4l{~?EOP=$cr5puPS0Xqvb!{qm_+(Z2Mqhc3I>OCYy= KY;CrZdLM4G?Bg7k zN`WpvSua(O%RBQbI2$PxJ#L!(ruSD9IxV~t&ugs`6jl3+@y+kPVEtaA!**r2y0w j|nrU0cpN`V%u1)$j5F95Tc+_?SU}H3}Vi--3ey>XwGE zVyMHu4lol~#7oO)L#vm;@d4W%0DdU?zHaJKtPEs2Gt6dM+=Lkbnmb^m0{Tr9#)k&b zFT*}K z=r2F#3JIod zjvhHKGbj9DrR4Xxk`Z!eN%))*2kX~&<& GPb{C zy{@afdEi2N%)?vJGu%AznoEfWTs$nfS#=&W=~b~ne}L@as=IXH{U9`>Wpi|G%{hJm zvfPIcY0WafF5NI+?>!suRavquMN)~-ZhMothy8l_cP=x(9bR+Kg_=76u9%xOHO1wc z3|u5-Z8T7|XIW53q8y 0G){;w2dKQ@U+lOXxhy#qu}0=E(kVANIV5Afwe^ zd1hLe3}hofI}Q3>H-*O*Hw^_E#^-s51XbbI7 z8^@>Mb=(fla=Dx+M@08r;42(R@XDbM4X^^w!3+oaLYFetGL)c5@P(BXE2PK5^a^w+ zIv-kDX(^N}3?%4{K{^^_i34j VZH;R6`APNW_ $6J)}Y%f^)>vVr{?+_tBa)*rNc3uVr0w_{DA5x-nZf}bq08~e1o?K^ z*1qXEc~O((7sSVtUKbMy&Ko=!XxTfeGW6e0W(?21_PkCK^%1+z$4U~Z_a^cD!iqVc zT7da%UPH|6#QLede?M8n@^)ZQ*wf}_T&eu%FbCYf3m{VuCoysRz&HFxiH5@Nj^+0r z56wiH2JO4F94jW?+_8}}xCcvZD*Ue66x3sH{sZvbBu$^F!1WG>br^@QTtEKp_Za#_ z!z$6yDJhob=jVf QFltH+na-JTToT5V8h*BtF62V z;e8O~+k&bE{QQ{`s!hwr$PdVF4G2L#uoo7|OW^UKi4AU`GMbu#KN5}{hEs ?27I6?aprcViS4yVl=WiOaF&QN}N1j~v#e(4P(W@|Z+(M@ANNvwtp}y63;+x-}65 z9679ULg4L#B$ViGFL>^>iN>H;FBbNcZ**UOw;YLWai5;Ur-aB_G(fUxRBz5`O!gI3 zXV|ap{LL=mqt~bD5qUnHjAx{pS$C|nh=k5QVg3~(Sdm3ikk?GicIs+*f1p6p;V3Zu zJHFJN|0jkZuCW5(I5jP;p@cJh@Q{*BJNpR#+U1F({-Qr(%KpASR57Eb2_4!z^4tVM zOKG6q4pb|FUo5ARU|f*b)RY499|BK$2xD&!1SF`4GMxUB`({FYtT`@X?YLd<*|GHp zgczQf$hp6fH r*9xVY?MsDH~3^CH3cPTk;d(wPlDnr_ uL6N>p(D}>)M8}2jX!X)7N ze)6VfMp~lXclS{%H2M!77IPii#x56GodhbRFxAx5&>VQ|ckW2Vr0{f*P-r=`J@n>m ze(-GB=A{{zW@ef}-Vld5zq?uTjGE&igY=8LPtxLBb&{;K-@5ZT5mIbymu!dMx>duy zAKH!RSaz+H`$Zh=g&8XNb7g1fJ%;x$&aQ?+y^%pz6Yh;>q82|gKO+TV-8#J--q$Nx z<3g#VyPcIg?1*E;)nAvs5(izYPU)8~&tATaL5Am^<514y>FH5oI3;j90sp44Z~dxO zPw!CuL+UK;B~D4>(+?`wOH6At>b;uS^eLvb+aHe)o?{4}|K{fTa|al`lCG3Cq? jee`3W 5VeuAXaz5Q@yV#$Y zkUO9|clz$awfMNhfs$>@gL1R=Y;~4s_XyUYGIqAZ?2O>Kn#a?gp0W>bM~S|B<^ADS z{6J6w4mo$Miy&-3Bl^_(IaN+Vbsah|;5(Y_>cK-5Og~}iV& LmYkWTc^}7g;i06) zF)#NS_EwS0Lh1tqq zGtE$T{C=fd)4<`H_ylt2Nc>I6MsR^vY-vUW{OFHt!Z~*1svf zsfO~^oA$GJ@>>@?y&3aFGvH2^NK1+aleE%OGvTjRjr(htT>@=a$|HaQhsOd+?e|yl3kS) zIZv|WP&pMOW}ee7S)OBp^;vI5nEKnfWvWT<+6=oMGl#i~0*ClCp2M2{Y*@TKn#u8T z3H5{UI*tBnqL! bWK3HFm+}Xy+X0g6^_~5X-{MevS*$h*=?j6?2No XulFm4M#9My@z+6eZ&HuV9pyGep9 z!XR8cF#U--uVH8gLA-65hKoLObRq|H&&B3LJW&jl^*;fTlj^D+zaWLx{I}KU^rbVw zwTp52!;eNhQx?--ytvCs_5Nl7MuFTXr9@)R4qcMt@Lq=*pSZXSgRV-r4)?7o@5?^8 zJsJ|x_&UWnK9i_p=$WNCKSji_!<#vV@nQo`VE GpHo0ENy!r&Y00Pl$}5{P>YCxU|)S zPK0WR{a*EEj#|(EkGoh5HgHoQGTN%8e9^OP96defX)Sc;X#OO8G(4ncL=vmKTShvo zwSn2^jx 7 z_D^CK)|=KgzYr0(1U&SYUKJ)xIoWCQaylE7>4b&j60gn0-PEuxCeHqq80(XhKrs3Y z1@pICp%)$vRR5eeY)7`E{iAO$p624_E-WlpuNCSk5G9c=CnC5zc#W-rtt?mCB2G*a zzYrFTFm2f`v@gP=APPtscyHU~ba?R(y;b~9Qte3zl)OUI`lJm4)dLA7&GRso7=Vrj zCFU*HgOFoSxs=}!T`Pb}FNX|r0HRDxOny8x`-dXKnPC @+5A3oWPe@dnGbp59>quXWC#*8?Aa>X!nWBAR%9&S?c7oY`|7 zIGAGyk>sDpgf(CCtQP9HDJzS^u;(^;J$$HsVTS_?D>o}Ca$woi5x#MPS+$njnoqMT zX6UPI`M~fKmHiLgq9-=yx5Pepc)h!zF38+EgSUBfs<7)96@D@rI7{{Z{f6{$3s2Vw zyUEHJ_n4%Z&9$d{_k41F2y=0)igkW(7moFnsVElv@ZA{~HFIF-cY6q15|uFZR@uHg zcgnm2edVT~1xn)wmT=zG>B(nSg| lA zZlpoY&$P5Cz?(@6cV8F=07OpuUmy8pV9clhiKz?=erorU2gD0EO2+cBv2xEL&B(z` z*3skKQ0iVQ9 clyd zN*)S$Hf_Dy0J!zosr1m*l}td2Hb%Vj_a`EDxb5cOz><1NTxx6dF%jar0zN&@kkKy0 z+Wx$y7X>=7?>gTpfTC_-Eqqoi6;Daais|}=Ts-T8vbdH(7wgtx_{94Bok+JD%7+v> zN=pp+#Ef&~?49OrAzLBM)T>EPKzs{cAgUl*pY8lZ4vTLUH5t|x2CL--HaK?jcB#I7 zAJUTY&qRAf&+L27w+^4j7`Bgc8ub#FVwMeQ {fy+is{yb6YjbIN0*O8R zTR$lwY7=y(sFY#os`>#n(jZXS_J`IuRF^d>(H@$Jpt}&boD*olC}A+jvPFzhcfymp zQ#VDZ(a|p0z+RVWC=|gS3ezXUSni>TH=99GTlohOC4pLN3jU_E(o