From 312e99b0f4ccf1f6d7a070dbf532456dac51c049 Mon Sep 17 00:00:00 2001 From: Larry Masinter Date: Sat, 15 Jan 2022 20:26:40 -0800 Subject: [PATCH] Add templates for CL:WHEN CL:UNLESS --- library/MSCOMMON | 75 ++++++++++++++++++++++++----------------- library/MSCOMMON.DFASL | Bin 19947 -> 20101 bytes 2 files changed, 45 insertions(+), 30 deletions(-) diff --git a/library/MSCOMMON b/library/MSCOMMON index c70adc6d..5d0846ae 100644 --- a/library/MSCOMMON +++ b/library/MSCOMMON @@ -1,12 +1,17 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10) -(FILECREATED " 4-May-92 13:10:53" |{PELE:MV:ENVOS}LIBRARY>MSCOMMON.;3| 23489 - |changes| |to:| (TEMPLATES CL:DECF CL:INCF CL:PUSH) +(FILECREATED "15-Jan-2022 20:17:21" |{DSK}larry>medley>library>MSCOMMON.;4| 24053 - |previous| |date:| "12-Jun-90 10:17:31" |{PELE:MV:ENVOS}LIBRARY>MSCOMMON.;2|) + :CHANGES-TO (TEMPLATES ADD-EXEC CL:ASSOC CL:COMPILE-FILE EXEC CL:IN-PACKAGE CL:MAKE-STRING OPEN + CL:PUSH CL:PUSHNEW CL:RASSOC CL:WRITE-LINE CL:WRITE-STRING CL:WHEN CL:UNLESS + ) + (FNS FUNCTIONSMSGETDEF FUNCTIONSMSMC VARIABLESMSGETDEF) + (VARS MSCOMMONCOMS) + + :PREVIOUS-DATE " 4-May-92 13:10:53" |{DSK}larry>medley>library>MSCOMMON.;3|) -; Copyright (c) 1988, 1990, 1992 by Venue & Xerox Corporation. All rights reserved. +; Copyright (c) 1988, 1990, 1992 by Venue & Xerox Corporation. (PRETTYCOMPRINT MSCOMMONCOMS) @@ -37,8 +42,8 @@ CL:STRING-LESSP CL:STRING-NOT-EQUAL CL:STRING-NOT-GREATERP CL:STRING-NOT-LESSP CL:STRING-UPCASE CL:STRING/= CL:STRING< CL:STRING<= CL:STRING= CL:STRING> CL:STRING>= CL:SUBLIS CL:SUBSETP CL:SUBST CL:SUBST-IF CL:SUBST-IF-NOT CL:SUBSTITUTE - CL:SUBSTITUTE-IF CL:SUBSTITUTE-IF-NOT CL:TREE-EQUAL CL:UNION CL:VECTOR-PUSH - CL:VECTOR-PUSH-EXTEND WRITE CL:WRITE-LINE CL:WRITE-STRING CL:WRITE-TO-STRING) + CL:SUBSTITUTE-IF CL:SUBSTITUTE-IF-NOT CL:TREE-EQUAL CL:UNION CL:UNLESS CL:VECTOR-PUSH + CL:VECTOR-PUSH-EXTEND CL:WHEN WRITE CL:WRITE-LINE CL:WRITE-STRING CL:WRITE-TO-STRING) (P (* |;;| "First tell Masterscope how to find FUNCTIONS and VARIABLES") @@ -46,7 +51,7 @@ (MSADDANALYZE 'FUNCTIONS 'FUNCTION 'FUNCTIONS 'FUNCTIONSMSGETDEF 'FUNCTIONSMSMC) (* |;;| - "Then add KEYWORD support. Templates may now contain the following as their last element:") + "Then add KEYWORD support. Templates may now contain the following as their last element:") (* |;;| "... KEYWORDS list of keywords accepted)") @@ -65,7 +70,7 @@ (MSADDMODIFIER 'SPECIFY 'KEYWORDS 'KEYSPECIFY) (* |;;| - "Stuff for locally-defined things. We don't attempt to handle them (*sigh*), just record them.") + "Stuff for locally-defined things. We don't attempt to handle them (*sigh*), just record them.") (MSADDRELATION '(FLET FLETS FLETTING FLET)) (MSADDRELATION '(LABEL LABELS LABELLING LABELLED)) @@ -87,42 +92,48 @@ (DEFINEQ (FUNCTIONSMSGETDEF - (LAMBDA (NAME TYPE SOURCE OPTIONS) (* \; "Edited 31-Mar-88 17:31 by jrb:") + (LAMBDA (NAME TYPE SOURCE OPTIONS) (* \; "Edited 31-Mar-88 17:31 by jrb:") (LET ((BODY (REMOVE-COMMENTS (GETDEF NAME 'FUNCTIONS SOURCE OPTIONS)))) (AND BODY (SELECTQ (CAR BODY) (DEFMACRO (OR (GETTEMPLATE NAME) (SETTEMPLATE NAME 'MACRO)) NIL) (CL:DEFUN - (* |;;| "Body is of the form:") - (* |;;| "(DEFUN name (args...) bodies...)") - (* |;;| "We want to hand Masterscope a massaged form it will understand.") - (* |;;| "Which I believe is of this form:") + (* |;;| "Body is of the form:") - `(CL:LAMBDA ,(CADDR BODY) ,@(CDDDR BODY))) + (* |;;| "(DEFUN name (args...) bodies...)") + + (* |;;| + "We want to hand Masterscope a massaged form it will understand.") + + (* |;;| "Which I believe is of this form:") + + `(CL:LAMBDA ,(CADDR BODY) + ,@(CDDDR BODY))) NIL))))) (FUNCTIONSMSMC - (LAMBDA (NAME TYPE REASON) (* \; "Edited 1-Apr-88 13:47 by jrb:") - (* |;;| "Trick here is we don't want to mark FUNCTIONS macros as changed because they really don't get analyzed, but we do want to call CHANGEMACRO for them") + (LAMBDA (NAME TYPE REASON) (* \; "Edited 1-Apr-88 13:47 by jrb:") + + (* |;;| "Trick here is we don't want to mark FUNCTIONS macros as changed because they really don't get analyzed, but we do want to call CHANGEMACRO for them") (|if| (EQ (CAR (GETDEF NAME 'FUNCTIONS NIL '(NOERROR))) - 'DEFMACRO) + 'DEFMACRO) |then| (CHANGEMACRO NAME TYPE REASON) NIL |else| T))) (VARIABLESMSGETDEF - (LAMBDA (NAME TYPE SOURCE OPTIONS) (* \; "Edited 19-Feb-88 19:46 by jrb:") - + (LAMBDA (NAME TYPE SOURCE OPTIONS) (* \; "Edited 19-Feb-88 19:46 by jrb:") (LET ((BODY (GETDEF NAME 'VARIABLES SOURCE OPTIONS)) SPECVARP) (AND BODY - - (* |;;| "We have to return something here so Masterscope can get hold of the init form, and so It'll stop looking for other things") + + (* |;;| "We have to return something here so Masterscope can get hold of the init form, and so It'll stop looking for other things") `(CL:LAMBDA NIL ,(IF (CADDR BODY) - THEN `(SETQ ,(CADR BODY) ,(CADDR BODY)))))))) + THEN `(SETQ ,(CADR BODY) + ,(CADDR BODY)))))))) ) @@ -162,9 +173,9 @@ :LOAD :FILE-MANAGER-FORMAT :PROCESS-ENTIRE-FILE)) (SETTEMPLATE 'CL:COMPILER-LET '(! NIL (BOTH (|..| (IF LISTP (NIL EVAL |..| EFFECT) - NIL)) + NIL)) (|..| (IF LISTP ((BOTH BIND COMPILER-LET)) - (BOTH BIND COMPILER-LET)))) + (BOTH BIND COMPILER-LET)))) |..| EFFECT RETURN)) (SETTEMPLATE 'CL:COUNT '(EVAL EVAL KEYWORDS :FROM-END :TEST :TEST-NOT :START :END :KEY)) @@ -179,10 +190,10 @@ (SETTEMPLATE 'DECLARE '(|..| (@ EXPR (CONS NIL (SELECTQ (CAR (LISTP EXPR)) (LOCALVARS '(IF LISTP (|..| LOCALVARS) - LOCALVARS)) + LOCALVARS)) ((SPECVARS CL:SPECIAL) '(IF LISTP (|..| SPECVARS) - SPECVARS)) + SPECVARS)) NIL))))) (SETTEMPLATE 'CL:DELETE '(EVAL SMASH KEYWORDS :FROM-END :TEST :TEST-NOT :START :END :COUNT :KEY)) @@ -391,7 +402,7 @@ (SETTEMPLATE 'CL:REPLACE '(SMASH EVAL KEYWORDS :START1 :END1 :START2 :END2)) (SETTEMPLATE 'CL:ROTATEF '(|..| (IF (ATOM EXPR) - SET SMASH))) + SET SMASH))) (SETTEMPLATE 'CL:SEARCH '(EVAL EVAL KEYWORDS :FROM-END :TEST :TEST-NOT :KEY :START1 :START2 :END1 :END2)) @@ -401,7 +412,7 @@ (SETTEMPLATE 'CL:SET-EXCLUSIVE-OR '(EVAL EVAL KEYWORDS :TEST :TEST-NOT :KEY)) (SETTEMPLATE 'CL:SHIFTF '(|..| (IF (ATOM EXPR) - SET SMASH) + SET SMASH) EVAL)) (SETTEMPLATE 'CL:SORT '(EVAL FUNCTION KEYWORDS :KEY)) @@ -459,10 +470,14 @@ (SETTEMPLATE 'CL:UNION '(EVAL EVAL KEYWORDS :TEST :TEST-NOT :KEY)) +(SETTEMPLATE 'CL:UNLESS '(TEST |..| EFECT RETURN)) + (SETTEMPLATE 'CL:VECTOR-PUSH '(EVAL SMASH)) (SETTEMPLATE 'CL:VECTOR-PUSH-EXTEND '(EVAL SMASH EVAL)) +(SETTEMPLATE 'CL:WHEN '(TEST |..| EFECT RETURN)) + (SETTEMPLATE 'WRITE '(EVAL KEYWORDS :STREAM :ESCAPE :RADIX :BASE :CIRCLE :PRETTY :LEVEL :LENGTH :CASE :GENSYM :ARRAY)) @@ -539,6 +554,6 @@ (CLRHASH USERTEMPLATES) (PUTPROPS MSCOMMON COPYRIGHT ("Venue & Xerox Corporation" 1988 1990 1992)) (DECLARE\: DONTCOPY - (FILEMAP (NIL (5000 6811 (FUNCTIONSMSGETDEF 5010 . 5804) (FUNCTIONSMSMC 5806 . 6286) ( -VARIABLESMSGETDEF 6288 . 6809))))) + (FILEMAP (NIL (5280 7291 (FUNCTIONSMSGETDEF 5290 . 6258) (FUNCTIONSMSMC 6260 . 6731) ( +VARIABLESMSGETDEF 6733 . 7289))))) STOP diff --git a/library/MSCOMMON.DFASL b/library/MSCOMMON.DFASL index 46ed9cb7316569be820269b2b40f7ca18a0456e5..3915babb7190b84931b785e089d0c22b2da6aacb 100644 GIT binary patch literal 20101 zcmeHPZE#fAdEUF)U9AuTDY(QnO}xZoYy(Ry5|hTViLZ9=N^9-zU3OOjOqyg3D@#Ei zAPF2o+!#B?ZINrsiq*X)X+l3}8`>taJIo}slj3nmX2_3_wq&NX?vR<%w0M$GPw5YS zxX<&Rd-v>0D~yt9>mTrO-{-vNJzwv6&wI{2_ne*bg}230k=W?)p24BgSY&kH#GZW< zk^a%K$oS~Kv7MzzKlqV@@qEt{4-AYBmo^U-$Hoq99xm+~DjnE7H2COP5y5mmW~bA3 zW<$q^m*lI`?Hnr=CrY~_?e|3=E{;Su-n(&QWaGW}w}0gRjqOVkW^93^#H*@i5GL!8stSwKrwnrvL_e6(E`%6P?{IDNclwX((Cweon zLekEZr;R85??Z;IaVwF`SW)JS?0Jy<}0Kusv&`@=K8_OZAYqvOFDx5JUnj%efWe(*Xn<5}7VnAgA)U#;SJ^Kr=WyMq-rWy>1>KkD!(`xHskTAwato^r=YlPR?glQRTdqU zPI`VaWX2!1lNogOQlQ>^A!_Dw=5~aGW;UB5XcEwE+darJfDSA;cT0ReZ^sB?DLZcg zG{#c7ZZqF4Q0WS=Mr~E$Tojr`I2f~gGX!A)(PTmife9SV*o+Irtr+=@peZxQ(n4_y z84$H86pi<0Q^}Y#9kq6ul3hzB;O5t4^_i*Y)^3X}4>RDkkJ>`}UYu+qiZV)?8$hq8 zz-}gu_F)9rIWHm;XVox%F!ESS$O!Z*pHMB;qYe#%QBZVAG86TN54g#UG;^tpqr4hs zkP4;DPAioM3Z!h4rG?XGEN82Hm!!=e%k8%pVdMdQh1@=4iDt4PgvgH!VPKv6L z2}KDD=0H8G#JWN)5}7p%-5E1YT`NZ3+R|%fVq`RnM81$qX1Wjzq|GdiB1CFZy9%*z zLGU@y6=GdWVS<#)aw`!^Tj@@VDVh{gT5YKWT)hUb z29Y5`>8K`!T+LJhu4bAQBU$K`0fIc4OoA!}>Ql{elZ7(98B7XJ2t~DIO*9cxLBZ;h zzGzhp+Cina8?ts5vf-?qPs(%xd+@L-Xn9r8>o)4X56OaAD360c0M#DI_A2*5nz6Qm z70Q{epK0ZM5>4dnbhJ`|P|k|?iX8@WR+@Q%leYV)$u@=NxCNJ~+(ISbR;@8-!FNi2 zjXApjS0Y*FEi)&^wQOE*w~{lbvqSmrWI`Gi$lEy%t7gp1@bXbN*jCRNmb=U?*ifOKc`PR59R2nw?c(O@m^AB1uzJ=CV|nz;1^uk+5gSEjpyc+iDnInnKR9 zDvb|{NwX5Y8MYFrS$XfMYi#eS3Zg3umbmkPJ2?cm=8`gqmI%PSnW1qlRUxGjgqN#u z!S-x(`c_QFMwSbS4>)&}C+|-Tj*U-5CQ3s?k#uoaPdH71e(}6Ixz$#Y(Z>fz9*Y#m$rv1q3_)>`(oku*G%|62rHH#W zY}nxCo{tO-LT0o-vb%KP@zJqe05g@VU%rA%o ztHzde9=(~fuu_v{xYuj4h76gpn3XL+tWhDZD4P`IG>fiP0V`fnIhMZ^f|A|DFgzN< z52_@%K5firtynU#ox%zxu~d9%a*4}V`B$Rm7O(^bcsaOsFs}rN$gGQMx=;#mv0H!} zVhdO;rH{0YsWge{rpCn1Rf4QP64Hz+JZa^Rkc)sfYxy-vSsNzJ*UBuE_Cl@LPiuo0 z7btN~s<-B)a{a+4^0JQS8|l#KPTEU!R|#G~R`f9XaTwLsQe@ZY$XyeW;snhH-eWW} z0M~#wS6Jh4_d=j7YHsHQWG(vAWRR5I5+*31Q>Z?} z@TxmET~Jn_koT6NFdt#TABsV$fHugv8R!KoQhJM5Rsc&*wUVt=Vi^Z&J=xs#lGOHX64C!;n@t%2SFJUwy|`zFpA=4U~57ULTnlEAHGK@s`ni zZyCohuCHM4bw|D4ppMnaSjX0C2HOnY@){nM=voQ2@LXaL?q&$P2beGpNVPm?G9DS- zkKK*I5g0}~UwQMB>0{?msW>Lmy?HCA<0gua!hYavJMd7ikTgQJ7TYDmqa%^j;P{@3 zzk=%>g-_itCO1|>yXn3v3wSiJCVQ%-Tgkvu(w%V=93*JKYMcZ^Pz`v#nDZ4tRKH%H z>mblv)ePpTtlj|0-ljHjmW~!NB-$SzR&>33_9s6W^q0R7h zzw%(Wv0Y+*{>rTn3Hy-~N^}VYzdg{JRMB4%((U&f`0u~%w$=gs^QidK@-=T~d}{D*#^#M`;q6dwgR27Z=Eg&A4C7VX)57UIB%4;vv2HWdWl4ovB%;f| zLTHa$KO?N>#m0k7V%g0uE@@Bn%k`s+j+=n642EUK?elTuUl>r zMz?C&DWB|}q12`yN^M2+%0h33VMsUi0VUkD2YT$AKV<{s3j;pCzY}Z)}T5=L5pQdaVq=kz`6BP2|mRJjQD)F zOY|-7P!#Um99wRL8t%}rN5c*c*J-#)!{!PM zUDNQgh8HwEtKlgPPiS~l!y_6V)Nr?kJ2dRkutURj8m`i?xdMaNG`y_g1r5(?cuK<) z8Xnc~h=vC>+^yjb4SO`~&~TlGt2At`z`!*PFKc)~!?PNm((r_aM>Ra6;Xw^|Yq&$h z9t}G*T&LkG4Vx>l;hKh*HN2qVSq)EVctXRY8XnQ`poY6O+@WEQh8-HN({PoB%@yds zrr~7`FKBpH!&4fb(D0~+M>IUB;cg9gXxO7+hlcAkT%}=i1sc~hysY5`4bN(LO2ZQx z9@X%Oh6gp=t>F$0do=9OaGi#$G;FRw-!%;{Yj{D!vl^b#@Pvj(H9Vr=K}B{evO|#` zMLHB&r^qTrniYXJ_x%ALO@A%ndkBwf_(?+FMRFez_!eQWzzc*AYXM8(Psx=%5}yd% zC)^*Ad#^yrLF(c=M{Yz5NY#9j!%E>&Ap9@R?Ii!`yr1MBB;qx~9|(M%@T}(ktrH>V zlyFWF%Ixa<8^T%5Jtpw4$ej}SD&Zl4uMqAPI7?U*_zl7>0>4gZ3j9mLc7cCExLV+! z6SfIFL1+m48eroUfqzDLQQ)5vo)h>dgr@}_C!7`d$ArfO{t@Anz&|8BB#=GWxL4pY z!lJ;h5^fRr6+%3~wCGcs&Ljs>7+$-=9VNu|dgj<}?lbFtL zlC(QdkgRq-N7CjTBr%-Nf&{KO2S_eDA(C^>XGl&vkCV(g`$>*D`$(po36ew3ILTgT zjHKx7CE4QaAu*j%l6Gf=WVJI)(&h}27|w2xhAYmeNiI5rB$&}Mca>y}B_Bs!d6rGQeY;iV|n9hSF?al)vtDO## zHs^j4!}%zP?~3#5Bp02JkeqWik(_q!BbjwROmfWm5XqFYk>rrmzSp_8=zMUCv%z$t z?aunu&bl^dt>N6mXbz*M@A8Wg4=gst?Ckbjva7qm&n%O_+E*IcSBk8OY%7h8eg+?S z#_;LAI59ZN{%(Aok28FHkC}WOhcTC#4}A)m`sCG!FCy<7Dh@xotB7w*IJ{c#mBf$l z5IFf~=X-H1k6$m;Uid>e^vQ2N^2vvGZeUM4EMSA7L_X;AvDl;TmsI0+i4{i<)iKEj z82^Hor6D}`V;y6Tcq!G^_^(L3xP0TijDOOLUnVijjb*COJ7Xd_?kJfF3GI{TetAAF z&(Fy7fIR6L!~IYhRf4mxJUijvumR7YmB2Ade%V6Xdvo*(;Xcoz_EG>x2i?z*^o-$z z`(@W{D_wnfliL}_Q&QT~^8A84>GZ>E+;cSZ^rPy61J|sRoKJ$P@C}rSRxYfnBa$^I zr*Nn|tt_%i^{N=@fUum0gYqSXt77(@9Htc}r@O|h*U3htUZ~DM@RUw{sXVO~dUYyM zmD;WL^>R92r_o+>ba`iPNa|#HS`FNVYE@ky(Zcb%{Uqhilbu~fX z`iL|noQ*Dr4!&`J-PBU6m*sg>o?nvZmzkn}(JA^Cog%U56q^>EVvRShqz8R(Nei`~ zXk5AI97Bsu5xTnQ6qgpA;{2jhoLO{=lh@Z}==eLt&(y}h&c1MagkvXk_#NW+drtLf z2-5xHh^-v`2$%&s4MxD)mgQOK27Jtxj(%32bh@Gb8y{?;zD3BQ3iBM7+bHGmYKFbk zM-4eO*wnz|kPB_{rUf=n1i$Waz9GR`dA=%7P8y*#UKhIUWQ<#O{b3ziS)NvFkSd2( zQ(JdvNEuV|l&%T=V(EfcYtq$}RIQilQdwT`Qh9obl)g|s7fP+`96S$mfl;_eJZ8N< z)k>xDz*u5tPKuhP1r>N6vpXS1&n8%RjlwCw<~;N)iv`? z&AbP%+>*@TC_7G>$@KvyKI!#iRcmXqaP@=4E3m-AVJn>a-`b5+!+Bh!;Cn>yc%Avo zRky1uO3ip9=(O8n89t#-b;?(r)HU{^X=twh zw6;njEd6~L)n{L=eo}aq>dDz*V{VsWA-O>DUau%c&aFpnEQe5Vzc<$2s4chwmJz^p zj67HPsF`=O#5EbOc&~}Cdx~AFP6HX+pgSsYupc4-jVWBppqFyZ<~1qqO~eFnE^dUT ziUQ?&if3UW@v2wCwMTJ^g7sJ6GJztfqc$(bAMa%?2n;SYEb5k{I`OAolAn3N)q&*jp9?f-Zu>>}zZVc*TMW;g%2>z)%6M8?=|?r7>U%$F zyXu8m!Fn9KZ;HnJA*9|^W$=XRv}ysrwe;cMOivUyrR=R1U*iH-J?A1r)ood|-o{xY z|6P>5G*>nZPq-A9^LWHC>Rz5~!j%qd8!nmU5!r@7+_v(3AyQoCbKc8G&6n5nNP#mo z`gh%Wb&49dF4~)tC-omV`AelfUS~~#i3S$E~@d-#T=_Sfs}>RMG> zq~zQ0>0A1^rUmn4`#g)S&e638YBcc<@tfWuevMZb$^ZIwSy?MvZK3n(9iqecoaUUt zwvfx46+`)7ad}Wx!_{|Rl`h@5MjOs!e(6Vs{0)aatEiHyj^F!iK&D z+n!i3W|OO9Z^g@JUf%x z&NdvMqY9dzYTbV z7Z-D>GO2!>PLAu4{KW@0xE~F!_ziFUqW0xoH^CMdT*3MKYUVOg5e=e~KQn->%`EPk z%X-hh-f04(k$2(~sV*i>)GMY@vYuDWrW+r_{x#kt{6^h(pm&^0)B?QnUh4WxsTbDE zb7IvbNbl%hSu@C#vH6Fkv-t_fAJPW8N^)Z=<0`V`Kdg><;{$g@y*&$&`5E6+ctuY_ zcqwu>G*qO@hF>L(OZBv=mY8$3X`HX=G|zWPX7d+g^uflNMW;Afvv8|ZMz!y)Uam@c z$Gtvu^~<`s!&fh5jF}sfI$YOwV2t?2f}dO9VDTs8EWyw3rpA7E%f#)$1C-o~(PeK1 z3gT+Me4tszi#hlW7xm)|9J$R_rZ1VZGh9ncZePO%8UEx-&gRdM2#Y5JjQ)4svcl+t z^{CM@&sY-lhS>w$Y(&aU!T-Q`q*6wiKc}{D8qL)nEs?-;kAre1iw4Nv=2I;!)leK-sY&}!#%ot(ZeIeni_!FSagApf_n(06IE?!tF| z(J9XSG7iRf(sK%Lpl7+eiF<(fw(9lCyuNZrhgyQVV+1MPE}SQhHyJS;|BoeWcn>iS zxoeM(@&8ylNxnk6-_qSYMT|46?|4o7)Z#<^w3Ga*5j@KhxhLm^-Xozr)&)_l71Bwp zmmm{PnORRl{U8mtKIx94a9;Q!s9ZE*=kS9p5XFwD9mCHqMB%^iyHS#g6`Ao`ry4I$ zsZIm(roiEMmp|LD=ULY7Ei^4?cH-AP`n}Om(-6_P>tXt8o2n)s=^0~h;@#ECP4BMi ztnpqAmCjrv5i57syMmvP=jY`q^9_y!p_BYi$@7_&-l$x#hbU(}7jos?DS8%NjMY<@ odJAb#=O*wC3qKFV%umP(kP{e*-i7XX)IA0BGU6NVeEaSH0cO=n_y7O^ literal 19947 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 QN96$)oKy>}dGpQx1N`z4jQ{`u