From 35e6ff8d5eb7e5f840ad10edb5811f7697b3fbe8 Mon Sep 17 00:00:00 2001 From: Bartosz Jablonski Date: Sat, 12 Nov 2022 17:27:00 +0100 Subject: [PATCH] SAS Packages Framework, ver. 20221112 SAS Packages Framework, ver. 20221112 Changes in `%generatePackage()` macro: - refactoring of package metadata extraction and metadata file preparation, - in a package folder all subfolders which name starts with `!` are ignored in the package generation process, - in a package folder all subfolders with unknown code types are ignored in the package generation process, - bug fix in package version extraction for required package list, - new test added to loading test, - documentation updated. --- The following packages were regenerated: - BasePlus [1.17.1] - DFA [0.5.1] - dynMacroArray [0.2.1] - GSM [0.20.1] - macroArray [1.0.1] - SQLinDS [2.2.1] --- README.md | 26 +- ...(a how to)- Paper 4725-2020 - extended.pdf | Bin 289741 -> 289951 bytes SPF/Macros/extendpackagesfileref.sas | 4 +- SPF/Macros/generatepackage.sas | 207 ++++++++++----- SPF/Macros/helppackage.sas | 6 +- SPF/Macros/installpackage.sas | 6 +- SPF/Macros/listpackages.sas | 6 +- SPF/Macros/loadpackage.sas | 4 +- SPF/Macros/loadpackages.sas | 4 +- SPF/Macros/previewpackage.sas | 4 +- SPF/Macros/unloadpackage.sas | 4 +- SPF/Macros/verifypackage.sas | 4 +- SPF/SPFinit.md | 29 +- SPF/SPFinit.sas | 251 +++++++++++------- packages/README.md | 24 +- packages/SHA256_for_packages.txt | 8 + packages/baseplus.md | 6 +- packages/baseplus.zip | Bin 84738 -> 84612 bytes packages/dfa.md | 6 +- packages/dfa.zip | Bin 47034 -> 46937 bytes packages/dynmacroarray.zip | Bin 13367 -> 13265 bytes packages/gsm.md | 6 +- packages/gsm.zip | Bin 16662 -> 16574 bytes packages/macroarray.md | 6 +- packages/macroarray.zip | Bin 50321 -> 50294 bytes packages/sqlinds.md | 8 +- packages/sqlinds.zip | Bin 13131 -> 13020 bytes 27 files changed, 386 insertions(+), 233 deletions(-) diff --git a/README.md b/README.md index 8139acc..8701536 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ In this repository we are presenting the **SAS Packages Framework** which allows ### Current version: -**The latest version** of SPF is **`20221107`**. +**The latest version** of SPF is **`20221112`**. To get started with SAS Packages try this [**`Getting Started with SAS Packages`**](https://github.com/yabwon/SAS_PACKAGES/blob/main/SPF/Documentation/Getting_Started_with_SAS_Packages.pdf "Getting Started with SAS Packages") presentation (see the `./SPF/Documentation` directory). @@ -166,13 +166,13 @@ If you find the SPF useful **share info** about it or **give it a [star](https:/ Packages: -- **SQLinDS**\[2.2\], based on Mike Rhoads' article *Use the Full Power of SAS in Your Function-Style Macros*. The package allows to write SQL queries in the data step, e.g. +- **SQLinDS**\[2.2.1\], based on Mike Rhoads' article *Use the Full Power of SAS in Your Function-Style Macros*. The package allows to write SQL queries in the data step, e.g. ```sas data class; set %SQL(select * from sashelp.class order by age); run; ``` -SHA256 digest for SQLinDS: 96D0EFE02DF1AE0D7D875A10CAF7EF63CDEF85DD0CF9418934BEFAF0C067D453 +SHA256 digest for SQLinDS: A070214517CC36590083FCF9D5F488AC6E746793E94B9AA55D09A419CF291B5B [Documentation for SQLinDS](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/sqlinds.md "Documentation for SQLinDS") @@ -182,13 +182,13 @@ SHA256 digest for MacroCore: A23C29529F3CE7D0C8BEE9545C5D22D5B5594907547374A5135 [Documentation for MacroCore](https://core.sasjs.io "Documentation for MacroCore") -- **DFA** (Dynamic Function Arrays)\[0.5\], contains set of macros and FCMP functions which implement: a dynamically allocated array, a stack, a fifo queue, an ordered stack, and a priority queue, run `%helpPackage(DFA,createDFArray)` to find examples. +- **DFA** (Dynamic Function Arrays)\[0.5.1\], contains set of macros and FCMP functions which implement: a dynamically allocated array, a stack, a fifo queue, an ordered stack, and a priority queue, run `%helpPackage(DFA,createDFArray)` to find examples. -SHA256 digest for DFA: 5BFFCE78439E1CDDCBB15C95CD287AA4195BF64BB17DDB8FE374EC3535B4F491 +SHA256 digest for DFA: 5A6FD2F6E962E6C191346A141FFAF354E35A546CA93146B55D7C6163BFB1BDD6 [Documentation for DFA](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/dfa.md "Documentation for DFA") -- **macroArray**\[1.0\], implementation of an array concept in a macrolanguage, e.g. +- **macroArray**\[1.0.1\], implementation of an array concept in a macrolanguage, e.g. ```sas %array(ABC[17] (111:127), macarray=Y); @@ -207,12 +207,12 @@ SHA256 digest for DFA: 5BFFCE78439E1CDDCBB15C95CD287AA4195BF64BB17DDB8FE374EC353 which = 1:H:2 ); ``` -SHA256 digest for macroArray: ED12BC96F8A4E9E7C4D651EC1E15479DB9B55D98B274B63C507ED842081F7AB7 +SHA256 digest for macroArray: 371B92A5ABBE82C53F7D63BC5C0D1EBD4695603D3894D8A9A5D5777D1AB59B30 [Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray") -- **BasePlus**\[1.17\] adds a bunch of functionalities I am missing in BASE SAS, such as: +- **BasePlus**\[1.17.1\] adds a bunch of functionalities I am missing in BASE SAS, such as: ```sas call arrMissToRight(myArray); call arrFillMiss(17, myArray); @@ -230,21 +230,21 @@ format x bool.; %zipLibrary(sashelp,libOut=work) ``` -SHA256 digest for BasePlus: 56B260350FEB7D5118F581B9EFD1B9CE1F0298DCB9A4C000A7654E2FF3F0298C +SHA256 digest for BasePlus: A80006D3C1409465E49F383D08F2F3AF1E33D6A67D71A8CAF29747ADC917E2E4 [Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus") -- **GSM** (Generate Secure Macros)\[0.20\], package allows +- **GSM** (Generate Secure Macros)\[0.20.1\], package allows to create secured macros stored in SAS Proc FCMP functions. The dataset with functions can be shared between different operating systems and allows to generate macros on site without showing their code. -SHA256 digest for GSM: 2AEBC150FBA99A4AAB0265A21C57E89200BFD96B633B898F32743D1C8831A159 +SHA256 digest for GSM: 5D1925970C9590CD195C15B8641B01D7857E3B2546323DC77D09154BCCA40922 [Documentation for GSM](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/gsm.md "Documentation for GSM") -- **dynMacroArray**\[0.2\], set of macros (wrappers for a hash table) emulating dynamic array in the data step (macro predecessor of DFA). Development of this package is currently on hold. +- **dynMacroArray**\[0.2.1\], set of macros (wrappers for a hash table) emulating dynamic array in the data step (macro predecessor of DFA). Development of this package is currently on hold. -SHA256 digest for dynMacroArray: D7E0B8F85C05EBF8622204E0D2F3E990D48D0A9B3911051C3AD44DC98954DDCF +SHA256 digest for dynMacroArray: C987C08615A53D7BD7AEC3911EADF436C676EAB3E233E7E422E42995B890E169 ### ====== diff --git a/SPF/Documentation/SAS(r) packages - the way to share (a how to)- Paper 4725-2020 - extended.pdf b/SPF/Documentation/SAS(r) packages - the way to share (a how to)- Paper 4725-2020 - extended.pdf index b0cebf2f26722ce0e3fdf29b2f33bbb6eb4e5576..5f573f205938f7c2f7fc3180eaf5786991d3a916 100644 GIT binary patch delta 64129 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 delta 63828 zcmV(`K-0gU*%8gx5wLIv0yQv~VSoWBf4v%OZ`(%lyMKic;BYcvZMYztUdx9}H^#kS!26orot^g#Cm5Eo>Ah-z1A{ck%m$3QQ6(z^F@0+K+qyU`pFV*g4wog>MNdw z+kB-x<@+;tYTv3LvF^;b{iWI}e_tDdS^2S1fxlSkSZQbp^7_R!!d|>y_f*oxQz4vg z15epR3rm>L1HF5i0!lV=?C}M_p92gM6(s>se>j+^A9-Um9hie6G=KAS^Z?H@KsfIG z6K?VN6Etak&69bELYjxr8diSe^a!~>lHS7 zx!x8${^c?NsCyo)VT-qHcyPT<50^fO4-bFyjFA5FJS=H?*SU5)e`8UXK-S}g z@YE{tKuP>W*;pv@GCh!#HtnBqsP&fLr8nn9^6_0E5DC;W^n8&U>sc>ZtfZYby;eUi zUGC7;=v1QZ6zB813F+zye;B?WGxEuoS&$jKh!U&3Ae74*ybV;_N9zO%9y-bO16o;u z>LMjZYjt~9UNJqH!^Fxqy)?@cPybw(e_WC=z=iU7&(qBcJbBKG zm)D5q`UC!df#ULNJ&`yfWCBLZkMI-^D6ZjJk+EM;2ew5GPt)=8)Ew^0dc%W8CSRs) z!M!=Vl?2LyU5$bmC~dzaSrKr`KFMyyz-|wB3AH9W>aIiSbQ)*0ZLEqUy+3FUO6 z6^LgPg1s@18m)))e;8jRt6#b(R)I!jjY_l_nK%qXJ_4G&_=Eg!)rfabU@9wfw#BfO>>e-Ne=sWP9WT)vu>~9whKZN$ z4#>gXeOY8ht1ef87dvAVIFj@v$OnM&vqe6MEnpq_*u*g(X82jq z5hRe+d$8PQdA|cp33DTyq66BlI6G@AoERMg9ru=GxlMDPx+zG|pm#cy#{qYlB$E~~ z{a{!%Sz3uJDC-=2H%5Ov0c_lsbuq_bCQ+;f6X@`Re?oo`PZ93W(v{Gr+#D#(+%>&a z!QA&{-F@b6TO7po=zy6Dg7yaYG*vDRiNj2=7?DbB5R-E>S_Ke3gy142#?d|4U|1}K zvJhj8p!%l_k_`hSw^5J< zRu;8Gf0wcFvRtB$7~ioPh_Ou{n24Bhg7(mnnX!Wja{7NLH`^nxHH3K1X21#w0Hkij zvh2#w{d-{8?VW;ocKHMEE*gYjWjl=Rl4Zt^k2^kUgV1z0a}rjH5cY}!PFX3@lxwkd zr~zB(7WJmMatc%b-Ra@+YdRTX;UoyAx=K;1e*skLG6URCsASd4lIa6hCBydpbK+cMiS ze@G_egV~$HO@T*}Ies;Cdd3o+a)xBZ8R62@#i{}$bl~->yd&_hM76_dST}y?->N3f ze*$~~S7gW!_rqY$GH4$H<)lxKzZMdDz6zo<@BS7D9uQMeO0frNN|_fg=~X3pwek+Ubb1+wqKov<&#J@ z@D+r6Q%Zx7+P@0rspnXhI-gi)#r`f>xK#|S18x9 z%l|m+0^@?=^r#{RGcGW6VFyfVe+lM%=i8xk+f-F^;yYoOH(4i95P+wB8Zo-!uq*OX zG@jK3AW6Rws%u9V`ezjKlf=aruxHaWg6mz~oT|St{6&t|!cTnW3AB>cLXU5T4wDc% zdzL7O!83uOcmmo!xbFdRupx%+cEXLsLL4U>KlVkzL5h3}i6qrmAC1&pf1XSLpV$lH zaTqUfCnXX?uU8M~S4DadOj#<=)_a2`OWUG!5t+3LqOvK~B4CgIhz58+f`d8q_Q)(b%hvrF+6nFtvLC`Yd z9QiJ22S$^r*$D}*P-lUxf6XlgEvKHkxMv#fjlkI_0mL)36_|N1^s< zd`_{70iKpjDdkmS9)G$&Zn>&Y6+DWJb*!-H<16Dt;WaIU5cGtL(e$t9Hui(_LQ}q< zgQcyT;1-N)!;&Cmm^g>AA%)@Zog|5^a?x0*!cb42`~r{5GOp$1gXJIj%sCSj1&}Wq zXJDck3uIJm1`G7ne{2yOQb|B5IkOtiP@#Nd`@Gh~7y@y4U*2?7*`V473I^XCjbl*_ zv5?;*N3w05XrEyjK-UBgl(}#__zyEm69J)=8`L-kZCi470Ok?`0;5Gp|DDt$00^hZ za#=H(5wfa;HwMJT##6N;S2HAlc3M6f6*WStze$!Trqd)?*c}s{Ts!9$vqUDVr3l5*HvO zPOhQz?)r*5qz=%s85+-|+*GBz5J&8(QG4!Xf?N-E&t65>rK7zmN04)`g47FxoH{Fu zQ4l5q(MOl)b=dEoaLOu30vC6m9S08F z8!V1GZvK4iygo1j$&P@K*Cjg{paYYHG!6t^**;^^e0XF}guI)oiG0M}EFDHv82XOJ9>*4VY>5I3cXR^hm^i`p7d?DO>Ca5Lso3FB6)^}w=%j>pCJ3jp zsPHR62q3d);sSH2z2lK&d<~E0zN^5MA=qpBe|{rXZ=8w~`aZ?glrS_R?p&0kv$`A6 zT)2y?_6YXKCmEzLeG>`;1Mz-dLg?CI=|6z2vdV*uqFYVUCp|3W(Nc2**XOc~-<~!F zdnBB2#W~r7#TBMAj;bbeSO!Bybq3REIgDPf6AJUO=^1svv6+bk(Dyz3bpsuN!6kRe ze{a!#9&bzj-Af<$&{q)zIIqdli*O6d6t*OF2nj@7&7~e)B}z>3$)K~ns=Qv~4~(Y2 zOA7hN5ZUhH<0o&C!xEgU0??-u0qzziQI>uHQ!TD9-uK^7hc6;=tZb5CS%vJW;l}OV8Epki}2y;j57NKnnFK~)76De{MZtzA!Nx&e%{H7z;n~~%_F96>ejO@W@QSAXS^YXf7 zfOGkt-?1x)O~rt+D~4^=$^kd)$a~<0U6U7NY;-~^=-r+H+fKBL?;W~Utl{Q5nRD^I zHX+c91fe7rj1gT-Xsyu^FPL|Jdl1DrJuQiU{2&{x7>}_xV%eEctrP)drHDe#24C4BGtg@gRH&OMIBet&Ob@)aV9P)zARu?q z4oJ25(bSWq6}uaF&V2_i5D}u4(}_6Sc4dA0U{?hHrb3*^`&g6Fx_gf}&LRF9=4awS z!4YJMgq={l44xc`JA~)Uyd8297zb($b&kUj_uj9Aj8qj?vjj==34i0qN$56W@&6pu zE5iuxWCk{U8UOGRWMh({oFoIlR>5$A|04vz8`&I0e=C3P3G5ds`V$Bza0u**V%T%M zl}`wPeAENHGl$J*yfpP~jT*BDf{$d}*l!O|`X}jJNp8D=lRwQ?mD(@RskJJAR7D5H zfga0T%+=1>XH--z-BqE9h7epNLF3n+Uj@9;al0rDr+zmgo~)bc?AOn)K8w`td1*v` zA)>mQ|Ko!f*{4^wJ#NFZWurrxa9K~_s+8#@;(`h;#h=fGc zB)}4+W%bv0_jd0HK#(jucH*@CKw|H`x9`2XaC9*WN007(dwOsBeG-mhktI4Eot}?m zqD2zxQ7X025~}8-zXc~pC*z4WGI%~VVQ@57Ves%L{I}qLqhoHJ(C74rV**}{HFk-k z;IG_*70(Dh`Qhlr@%ZnjKLP@>jet@@XDOg(m;RBvv~f&DoEX>P_~)?Hza&tW%SWJeAFe-LkGnk@{#h_DDk|ev zbQlMJ2URgEnx@=dQT-MvRa4vRs=lP!g#*ehHQ@%aoG+JDF{>+>$&N1O+*Zx0ZC*o zH(5)9u!8qwWoEPGB`?eEqC)`Ya#PsdZ_DZeL?j8VfWoIWYeO|o8vrZVpoTWPL2M%I z5xS^d_k2HW2_k?>bib#kaa)@vkw{~!reLQCH_*zYH>9J02x+H&4~bqmZ9YSxFiPWp zc8rP~^0w-{-caQgszJTu>h_Mo;+ixG3V}T?1ky5zgI(q4cvV(&-WARD?1U%JS0#uc zS&OKJtOlExn8>4he+o9>AJ2~-{&e(+ELd-MsTOhUy@$h@aIjh%fjy6u>hkkRS?%6V zUp{^OGm#(hvTV2suPhTfO58HjMZGG2reCAPR{5&<=3PiiBgGy`wvrwD3${K5kCBYP zhlxn4AqyO)ActT{>T1Z&CXt8|kKrri(E@Fe(tExlY%M2zt+guh`4tt(8tRDD5XJWp zjiL1RN@>*Ef7W9Y^oMkX!^Cm{yt@B1S~tWCJirzjFe`v`LSNdZN!heXIHv*yAe{}*b{k?$wH+pq4Z^yAG^B6=q0O#p zelt}7fsC`;6yfCg_m3-#;;^vWEUhtvd?bp|m?;>>LDj)xyInW;r_)V-DJ~%J*qz~? zP+foyVpgxFSNYjxU3I+6bOpLJg+=fOTD28T-jFuI^zCI>0=|TRd%2r;v3o$J=~wh6 z{;=*^3L|j7@yx{HSJU@@QrUL=_yJOwWmXE|bFeNptGuG<7Ar{l0I<>rUz9$Q3n=u( z(6*zICD@82d?7BWmUTY2Qi;Rdsy1-6JuCY9nY&Vo2v%mgo%3XJFxf{mPzrfNEKJ!{`J> zDbx2)tw0i6kvmPnT`404;Ni3Hj;U|6J8QsIpcy0~&SD{@?t6Y#_IbfEd%0}(RslG1 zc)R5uuugu?ci3gzz%>iy#+J@_cSHa&JN!JXQ&<0;2gW_MqyX`K@X1d)ev`RxFiXma zRHwftk^uQ3$qJEw>+SRrQ*`MqMHu!1;xOE|u-5{pC~cO0UGHVAA(AxLH6JyDW!F1bONySJ>mN{1!%VM<;e=yEb+=v~1 zDz3l-&fm*lFat0BG0gQaL}fyS{=UsFgbXOI#t|NwBRn6@QbO&SZqquYEC-Yf@BoF9 z7G>vvrRQ8)l(PkaG)5vHxRFE$08GNIxqiE)il(5WquD}mR{Erz6;)Fl&>YslGY+J^ z04%A03#Bz_DwG~_qp*hfWW4`x4d=BKAteA;+iycRjz-JOjwp?Tma@EWhY`a1615MllSx#%o5(c`Xs z{J&-SP3P`=L>Y=CQQi9|uL4>p_L3Stt<=_kUTH(svUDd6Sh5%4I;IFi(Pg*BvjD!1 z;DpIOT%Zwr%wS78qSaY<-hXdtXDt*g~aQD5^V2Q`X{5Z%?$2wy1EZ*3)msAA( z7R&}P12>~yG=bE%6C$0uR`sJ-yi<( zQv$j}?w{(M4j-sP)GDL*6&EAGc64G^W03SVSpXd0l!TMvrzjT6EBZp9NFq+feU?G} zsSOl*Llt->H6Oqn&=#@DhEPAb1$W>^mPPy1LKCjaig6`U18~9^6TK}Pbp}>{Quj_S zXh5p)9T2W3_`RU3?rsJua{D|cv-h)5^r0BQ9J~Rv+AS%QUN3o`-pvHgOk@SfzE(m2 zY!#Y^)U+i9JDlG%3FQgAHiaxuSmcAJg6**J%uDTRmAgp8SuV6wbVl@UYlUyoq)cvP z;%dhw&fjYE0^O?Tcf$|!9j3-#3}030!OMB0=(ZTY zmN7+KlHYIqM)q52(21s@Hjt+x?6l}s1X2Bf8bb_i|wX3Y+ukGnWPn7qL`v(>)z#A@P2ylXPoff04vykt!pMf~xJ}ugkmFch@TuspZ@2NG@MrYq@;$ zJ^uB@Z*IADML+Mpy`{o`UK{KZ+vT6R1uK4}^4+(uf4aT??{~k04XEJ;v=+vtusy%@ z@3_lwkEw{0D0H~}uWKcj?{0ti>h>#|`A@e$-F^4t51-SQmN21`LhHH3e`G48)M2jg zW)@R25jsvn7mHn9N#-B)wF@U)tYhrEvepT0++wATa7xjT&rVfYXWO^g=6&{%|12X3 z|5UeBKRiu@(jDddY||jW>Q-E@BCD5wY>Vmvh_dnWxXbrgilEmMRc*3Un^WDX%0C?P z%@G-sZ>iZ&mA9u7D~~Nze`Xc8@+{Hvm%Kh?zVEi6>Eh)9Hh!(5C2Sryy;$)+S1J;b zWg=TY@AV4)X6vFXj!*wa6xwt^q2xiD2K`Xe9>okZbRukI0yEz2U^B|O<)+^HQo77P zT)SnyIdx=W^E%%Z)s{LO!auQ z)v@pvJN75flYD(`QE*Xg+UJjT^PU&%WYyC+Ic5}jKH;IZ7?CEOw14&hXVhfJ{Nrlk ztWY)%13#acIThA+O8r?;wMSs@1^SnQ(tg6kmuWQ^RIQ`SXT8{37!k7~Zhr!QLK%0N zf~elDjuZrzVWR>Y$*6)xzbGDsB1S&~{?9sywP>;GY$Hqt)-32>?vkuI`MMyF& zN?%#lk3q;V$`w|{V+%=f(#T4Gt+`_08NCDeVs7hFgQX7}`nX+S(%2-td^VkhnArFg zFM4r^XtXd<=W)NxIRv&k_HhmVX7sZ@Jzychuy4~8Ycv;F4?)@t?KT!#b%L@x9uMso zH#hC+aHyN3XtP#8EOqmKeG{iQiA=@rxG(1%5t7q`o8ri820e<0eHB1|>d>>Qu`3`b zus{|Ls@`|F&%jAfa36%6=tXDP6A3Nd0K1O-F$H?wF*jwAcep4>ixc(_$>--zjZGLD zAupt7?z^R$q5}ZsmO%l_V_mTYgea9DD?)({K~*&78ChOVV9?kZH#xNu;81ijL2@ri zE;%mG*#N#{VNDc3tYq(D3QSVvgy;Nv-y4XkKPmBzI%l>QZCd& z1GtVMQh^N!BcsJ;|LSkAMC4of2dYBvRp`DN^rxiV$X-t-C3ADZ(*N;~tfawvNBC=) z$-n;;j=Z@!Y~DXy{pLBe)ft_-nT<_g`HSq*)tfJVR>rdUt-yYN;wMizG&?HNo?f2w z@7%==fjX4BMZcff)~ExngEWGWo8>H_D+sRu1dS~=<#ZS%4$XfNREpgxD&Z-B>8awl ziQWVs;4P!qpoZLCGged1 zZ0_GN7Y9+<)v5A-XQaZaSh=g~?bV#sR|*3yHOUM@oV*T^lebD()%Ib|q2*q|YWWXL zx?us#UO;B>RdC-b-{ftZq5t)rx+I}qdUmQ1ohzr9fmlVyhKaLC!b%9u{scj2*X+!9(+ z5(YQ`KsDM~*o4QFxDW^+VN>|XKOD*o@vEPm($B+*_rV(sVJ{2zHV^i`Y{euph=(UD zg|=oK7yzP7UJ52giZ>tZX(?nMWnZ2RbRe>BF3VtyJA?8qRc8p$f>y+M;Qkf@fV%fv zIYLLRJruxy?%Vp&C;NCb0X!&7GVW7?A`qUA=)V_-IVAzCn~Y&OO+5&ZctygHX)2^m z#{&6X#g?SP6Es$Hy7^GI#Q>T@eNlC2*qQ)Tb@2VZOfhnIBVm^7>uAZt=V8Cr;B}?F zBnkoF)87^JQ3$fz=;hsMgNl3);W+R1**FY026(D}OVumziOHBNY=vF8Q#s;Eotld3 zJnr^8R6`Gv#3JqSw46(7`OHediaZxk4%y*TGQ)|688-NQEc{&sl-S^cNHmWPiA1;}vLe-!6!9qN zT-kJgEaxlhBp)46>Jq(tO`Tfkm2)vakc%6oudt=h58yN&{g3Bwsm5P)VPVZv9=u2s zA;mUK7o-`>W9HBTqs-1sq(5HRq&jTbm+NYScEKw35}sAki70U|7%p@L{7IPSZ87@X z4-(vS7EVWSO1&ld?w+>yj5emi$*%9++phtCy&vavQ9_8~UIcL~Yw(hJ;{G5Y=>oQGaqa&<2zXrqR znQJiY%!YO@HsM{5DJCXjL^(rfEJYOQA)Q8=&SiKj3f}|ED}&{Q!bAX}hHbGj{t^*? zqR8c&6G1`G2S4}Fq|DDk1IPhz9tx`gitq(9TTb5mNdJp=Hq!vXc5fL&u-#;j;sFfp zX^r=;7&5{xeb|j+^7_rqoHzq8OnM-{KKXz<<-j`y(|jtolm_tHkNL2&w{?>{7^WeQGwKi^tt>=iz>T1ikIlMg##0>+{(d;P`98d;LwtG~j@^H13}Y z6irh%b4wcsv5oFs=yXX!^O#P8<805P{V{_m_5fOa(lwuC6lTDIzp*C7tDUeDPx>dE z#@|oO-lnPk4vGns9}OCdYFlgu?qOEs04})Ru%3(DN91g!RN`-~{(r=%e+@A#Q~i0$ z){k|CfD2TY-VO=a8>_3ZDRuzrR|ZuG>+zdv>SY5{MN zB$)XL+Sz3O-9BeQjZ>gqMS1G5w3CCAchi%1d<0HTPTqAVk4+W*;>l}ACy!at{^XOG zPTmE9`^d7AmsNPRxthC0>PIv9&OP@66VQJDcKOnycNd+!;|;p==aX0&c;o1alkxvE z;21I>t3)d12bo2*a0tdXr!s5kdnPRE5Kj2LefR4B0Gly9f|DU@6tl#8>Hz^XmtlYb zD3jNH5PwP#APIElKExOI^14eV_PM=jI~|&WBsLVO6U8{bU*BCUz=uRRPUhMV7C~UK zyIAa-4$oF+;n|N*F0P;a`LAhsmN1SOmLW5oc$xXdVV#ViYN_eFE45Ex0yhYM1Kaqx)q#wN8_uP&p%ww{&oEt7~n$& zqKFBtfIUn4wF4RQs92K59^mrtGad%lmp{L_d_kCRE`*%9x3-|cf@b$?QxP1D9Di~^lgBCJvOB`lvd$LofdrucXBda@ z$GcPYyV4ZS-N|s1<(6hmB-dHvD57ZH zE8A?2>404bufhQ4u(3w zqrfoK(-oV*A0?n1@hR!OFWd_tilg|D{`Ufo#N!h(j%3VKuQ_Zs2iV|xje-otK4iRIh39T#<%l7Ow-e3xBn{ zxvh7^^@0{i`*4(11Y&k1lpRfPOw(9%!xy~Q{n{hT>xvZCU0^c0KrpSayTD?z zEsMO^&*H#LT({(ms}4A8nij|s$$$OYiQ1AJH~_bvc|qXIEi8MR0iCe!WGIh2f=00? z$p2Ya{oV>#LW$aYf~7?^L#v;IvucdhH~`Dsv#ALv z&&tv`^5LTi8BZLU5dVlX`Tk=gC zcXs6Io?ws<%N~H;k@mu9+IdD?Gm*q!>pT+{i%I7RgshDL8v{RSRTWPkMi2sd*uf$> z8Z}-h^GL@`k8k`?GBW@YWRH=SLEE7D;*@pVc5P;D8HXsDe#1okkb;G=_<9kbGd~sq zGDP->BrEhhIM@_TgUT^MKY!FLRh@@NeR`4Yv+t)Y42HUs`!+j_9vs}!Go+`z$Dg2w z{)lNM#v=Zbh2oMn|~?|AeLhTsL6*h%!n@Eq`GOw4uH;3k-}x zTYrhGSu+R)Me`Av{m!1tE^ka$x&7x(X9*Q8kM#50`5>uy@Tww6=l)^j3=%exS+CkM z+tJe4Wf0I&Y@6~M?asQLC>{79d~us|aQ-ww=8=Y7UV~%IYw$_I%sUSYHSIDWW#no4 zNPWdr`lP;EDmmW4kbe;{XU~AMVi+!J&lAa-9i*YjC=HF0l<5#uJPKJNW3PZbeJFXw zQOE4{iLISO~6Mv~(=E+K+nQ}oqc z^c|eYW!LTqkbkbW4p&Aq+d+oMIg^JT+^Hg@f(G>4`XzerQ!ELI#{N$jn>3W!puXf+ z0j8>HxiOg9(p+YdtlEv$8=SG>0H7v{2birZn@maW&4eGCNfazhlkbY{o|1jc`3BJq zaV)2j`4Ji@kh)NZaXStNIB*doBtDNTW1Pj*x2^`8vwzC192Gx9WGCFZmP~2gDbLDO zW|!^FmlX)SMBL~7Lqh>#)|rzrXt-$=AKY}8+(P1SeW9;w1h)YBN1v(Py|gSl*MWD|MJH9E*i#V}gfNuqf_W zK!f|8_x zH7$4+C`}xEvbJ5ehCs<6Eg(7+95rC@`3N86MSiMy6+Tj;a}PZd$?$+F84W(q-xj&48gt%djxMPi`#a1~32?l9e2~;x{zDla zC4X!GgZxhPuIy=BJuZZ*lnFiM0YwV+XX%QEGz!`+&AC<*2B`)eG+bH|MZt6H31Gdx z{SPRK+m!oel@59{hk0M;4DlWGR)uu|q{g|~?x)H@?C+-Pz^9ncCZ8(lpxlZ&A4Y}W zoU1_thbxSXrRkG}NX66Im`aeE$7Q87MSl?z`8eroNG?lk8X?U)GbDN($Poqv12NMM zttCUDGMcOc}l z#T!?r+B2zUN_FzS`t^#+GpCVLK3GRA@0!}d1`A&pq9)yX8tanLu~IW^i<*!QtW=oO88wTlpR1CB5~200kK z*$#sWZ4YQnX~OnFAHT`;W!h!W6l^WO{-egBKtvL;Fnv%U4|>L;>Wgz%@~@s9SM|2d z(Lolj*4|{5ZEWKh)LvVyxBlm`zJFH!VZQdT^H?-{uh$RB8xkNnS(T-IF?~u-J_24tWAjmJ%{<^e|O9WzaQt_u5QrlPlz8^a0giIJz`k{#NmRh~FZf+pLz5x}o$ zgmSog`8r6i!YrEZ zTEg+Q3`q=b0uHZ~IH8I@GY|VSKmhpnvM9gseOHB@DlXe9cMS)$7#$vbU~tW|L{LbC zCp95))P<%*2DT`+P0U_F35rB(F<^75K)E^H#Sb4k4lX}u8)|R^kbezKM1}@;bz3@u zx8^TXVt_PFNIh+nS15_ieb=(5NaJ>lPKtbfe{=EX>ZKMp7earyc=P(==7;d@#m(!B zUn2hD`PGZJD!jOO6Gi;xPZzJ=z4sFSKgS0^7xxbI>2_y673S^{?Fh(#(#dwKO8a)J zQuJ*W<|uiF0X0~MGkEt-v8{-S?{pTUuCqc3HZBSzo2V{2ClQ_J4CAxulP?FgLs(gf?r6 zwng3U2%>O^GDxB7RZDnfZ(~>{*kTfx!*RD!zkWi86LWi z(2+>HP8E*FohqEM*&aO2=PcjbPJwV*X!m09nfN*no{TF!s^;`nzOVo;=WCMd@`3iC|vEF%^t=%*H9oDGRpqnOo^=~W@4F)W~&j8C5yEjC0sJefwUa`9$dY+8c$@zgUfLg1~0}U z3|_s*r(M38y3+~0W^bpo_&k=#qE+y#J3+#KM_OOKeer2J{$utI4B%Y@gkaJnV4hX| z&arfDOqh-%&oKRE%)?+d{qW=TN0R*W^wZVF#}7|vCqfX&Lng$KvM^y`D7>tT0cAXl zStPV)(a3TVy7-;HR>{aPqk#c1Z?&k{QnFlb`BrJDxzGzN_J-li)NjX|YIu z>kL&LXLgf=R2lN1&K6Bxm9$w@7?r>9K>{7q z=~#tMiE&EY*LgGMI@qOS6QCH!-`u1qqoLi-dV;HUdhZpjGqiFv;aW2t30OodQqK2u zvBjKMHM$;$!QD+((rQ(0Y0=zdwD=N#a^-9#mG(4WyW^rtmrhDbuT8qR9rGwiuQMAd zhzThdJ~sGiq6Q=bu`2Cp6hHte%(@e1ZJ3fi$a7G1mu^wl5>*>?dy|eMFmIk0d2>IM zs8BGY+C(vgW9)5;obeisCjuH-ID;{#_)eW%)sq`Cm9&`sJKqc`PXM$nPgit*U3t+y z6j4xQX*V+Vx^qA!#Gr4FO=kAzE~mwks10DIA`l3}nM`Cq4?BzUSOj^4QGh(W+}ZSU zptzHo-f3a&gOd$lCZ8AX%LdJ>Xzj%DAWOGJZtoUQyI3duBGuk2V6`qGp{`a9<`L70 zE;#k8VROnXTV_jV^k@9e;g@@V*ouzmteyPCI>jPNKh(dJc|3}U{RGelUa!#O9*(`W)^mTLvYs;s=Xev zXqnfyLncMc?5_tzYiS{Z;!6w-#B{qWiGno+BKZV&3FNle_?_8v?@Gr;->lo3M*F+G zxgo}VW~d-40|hbZgQ42k>iU%02;)ZZNGDpvqmV^B)+!F81Om!*7$?w9WGqKpXf}`I z{Ddv37ruyTZO|4Ls+dfFI74?XDUe^nD0DIX05JvEBN1Uud5+O_TW9lgVCF5rp}0lP zr!x%PR|O)&`|SR%+Aja43J07sO2U7!y3@3Kc$xSR#Y{`p=^R?d*i%4@2idmS~1E_CS#G1PV?u6W$3ZRjBNd0gG3wRgU_C(>}`m`I49g0ZZJ_D2*D z!D6Kj8orX^*bL=B{LX{Oswz47#Czr^z1v*MgI`K)dvR(N>`mkqE z+F=wB$J5e_E@#Pq!@k?PLzR)kbZHLi!V%ptx55}14qsf4>;oI(1cz7uQCqIyR>YJ& zyXdqL-0s^5?pzze<=pYRHUixN`tIU}h`od$0dft{;W(lhif!iQ07CDFfMWpliR$-> zGb<-;vTu890Ct)Wcq^r(eltOH^0FRK4yjF|_QsuEyqZ3LF2qJKF%V%G67a7>8JKf( zj1e|nJD-CsDZT1^y(w};21W)c2a^jCad5$}kK8t)1wXW9Q+$gusjzyq`jM<^xW2N0%Ln&XV0;|xq)Zazt^#g?{CZ_%Kv zI}g#?O-1y73j=B#*f?E|?wDdYBcl4BSj4oR%jMIP%X|w#zr@w{{v68yQ~)S;=brnA^Ml@W z`fPCS@VW1)!prqA*%+~BL-Wzs?ER*hN9=l7syYMFgOTU(J)NEW1KjAIjguj36SFyz z!~p>_mtlYbDSsMWbK5rZ-M>QTnVXX`7D50dNb2F{+*nE6OOu?fwn;x8Xo|MjP@+mw zvE5&PyTF1XXgU|S=j6f03S0pDjl}}q=xXGRUL1V0IC%Oz^hS!sp^Qe0%MlMH3zZy2 zTr$a_YdQLPe13dBnaY5V-%bK=d^{1}_}RblzXo5->3{3gG>eyW1N=CVh@$-Qd-{SM zZw!3?^7w2%`E~Iv5Wu?x2*G3=0eO1qZwaMKW5iS#ScLhz3HQc}`RkMUiJAF_`PupD zo7YF?m+)Xh?lB>T7V{$JdBVw3V{yfaH7oZS78gb6zAP`8v)c0d1WIUP*$zsk89a_l3_r@plALg%6 z1aIEX&t}-i$1mSt$BzbKF%ba@9pPlNq)s!OkI%k;1?ubaq}PvGtb{TK!D1<4aSlYs zX7Q8kBQB5?a}ym!`cgs}BZha7=0NE_QjbG~J15wn_S7!h>;gMT^vk4wJ!u zn3U$f&YKnCS7@>sEI38VM^hdIEQkXHSl|moa=y6&^w86*KvQRp0W^8g?!^*XB>+HT z0e|sP#(G&6&{N!Emv zlT?}&b=2)AE1r94fJr&~q`(aOMz{R`BY!ceLX?rY|C{Gi3xvkPN%xMo^zCjrPv|3GQ#c4OTJe`(nw;OGxK zNJSi&1T88rHr~4D#qgWg##w}jn3S%stbr1e53X3wLY%$$x|h z$wRAM+8`-ABVigq5ymir$Z5GDXU;dZ>2i$_I@TGXSUU6%GY?G|Y6GlSW!0e3m@Y?s zh>SRCxdvC&G-;kam)oC>ew>JkQCwN|$N>cgEDG8U=T~F36dtV6TlpY7Bp)~Yph5=> zOTsSaN1tz45og?Q4a+JV7f6$h0e>zmQCUVkIknHxEAuOdzMePE7YDx|Z~(m#AB7$S zFEvu3&pfdHbbaviuij`0-$2OBhYaCbW3ESjAVJ{hgT?6l;6IPDDVs#8E4@&$Kn5eF zI1_-QMe_8?WEuz?#u2iub}0lLBf^f$yr54yh&sqiCsFw?GeEmx45LS6lgc-j;OM_sq(ae2nF5(Nnno_;nI@R`bECU zXa=-Jhq+aj=x}csts3AGEYg`;1T6M?vVHR8<^1?$e)h!ve%g!9qU&o>)OEIBBo_wz zQSvs&KBly^qpQX3Hk%o`-+vn2q9aJp8_zz)g$%&rrR=aFzZe^KZAZ^U{H(P+>UeE7 zV}Ta(K#u&c#F5oZ-V~OfbBz0U-1Ue&1(H4Mv30g-vQ3H($^}HJhw>bJU7ml)su~z0 zu5Z{a`va7x!iO`WzOFeQ?;21U@$noJDGGS6Ixxn z3|sK8tGf9nEte2*h?DOZ&!a!di1_l1ba(Hw?Dt(>WlLh@@SCKj7^-Va8YnND>!ivK z$tw@x%hPu^H_q?lXMfM;=QQ9Hf^T)1q%=`en)W?d@8Re8X)GXf>*NOB7qnVh+fg>i zh_=z%im5KwS(_+W7nP8Oqi?o?DIuq-?x6WXBTc4p96neS{L71CIN3XypFcZ0eY-e) z^ZN5LJ`Tq(PemQm|8lvKU3)MmJ}!!02Ha#flxAFHSkTenb$@R0E(mQ`XG=G&US-9$ zD~tY-pd&Q$t;O-#Vm6dkzbdP2O|x(79f32AsS(yXpV*xK6C1Th?`o*8aU?- zoDY&^zO_e+6yjP|o3 z394=YS3s!0^51tE8`8ubrOjWT%>L*3Sn`+&Pd(^-+%5h)l?gc03Lob50v5rXnyme~ zU6^yb59fBQGe_R|?Ia#MRXm^fswBQspU~wAoQ6Gm6}_E%xN3hl^&sekpn!;lG4B?h zfrWLJY)nblrwTK4f=N}muEato#@Du%=>@iibX8Ne2vG7(oiAy^;ra`xjfK$j`Sll6 zIlohXfdvu}tEtb@YMKO7Cnip~Cc3daE)!ia2doQlJg`txu#2!(9P}%8fQrRtTfR0e z`I-4~y~@)S6?}gz>8cx*1!rE=7PU+f5akx=65w54{YVqg@)~g07l1?+GY)~pp%r=j zK5kc;5#Yua`O~$EzE%~J`zxp^=6BMOxe}yO=(j}^gx#wP zgNXd=S}1(aX>h4+Dk)5FTCP!TZB=ZRJweABiLEiHfNS`hS`a*nnXqT0O%(cU2; zSPv8%Lk5|Pdi6rO+2gEtRw(#O7b83L zs9y1tx7xLbdLd)YBtnr92lSwo;#NISYWE=^wQASFK-oAVZ6OXpYnMH#1cAPqq4Bf9 zTCkAZF+zV>gLgzt({o?f^0a)gmWPqKQ)M?wlQLq0bN7Oyy^gY1Po_dkVLMOtJ;u^4 z=2Bg+Ut`t)nW(uVa9vhF$c7;BmpoQJipOGMZb14%GR1k5odoWCVI-Y1FqV_~a zyPdAy9}XBm%$XFe0oWY=E+Js8inl@Hkct<3ZQ+0EN(0NI-X-IvB!V_OOe_)lsINnc zUDnqR4+Z03kAF!){-Y@9e$n`l6e!ivkqq<=6ts%2vVz_%5O!eQ1Cuv68=W@pAhVe| zB9&oeB&mmjB&lz=HC^rX8Nk9fZMp(CM3YGMSGwsn-ykqt(G=!p4*Kd3FM z1E_y)FPr;*nwOi}y5|R*t!d9J>#TQAOSY>I-w42NjB#!XQKP-QHWK=T2lGE?Ai?8! zFcxr!To|x?agPh{Z;?&OSNG|OoY#TEsciId^+P$HD%60pi zz->~*f6Z0ZqiBN4%0p2Mz__am3A?NII-h@ZfgP@^LdVCB`sD(S5bo zf-@Vhh40pDVW@FA8S9IAT(N{xZvK%j>^1KC0@Eyn9VKg?gy{0*OD0t-secZz4Vr5A z5Rc3u5K<=!W?zm43srApq^BpBS=Cwxk0rYB+CVv$iQp8YGjiQwZt=4#Bpo~2K;M53 zH9%sT?zVMNXe2S#Qs~NBc#$2j%+h>~iR5QYz9~1;fdwSG2*cxJJU-7i>ENyTJ@?fi zld=u;e=o{pNxK57$eL*1iWT$X&bcGi!YmB|=Cwd<9}7gOHI{k0f5ovhz5CJJ zZlYDL850@$xIEnNF7U_eZ)b(y{ANa`bc?5r5(2T46YE{6Wv8}&BFz_Tjq=B#fIr4fo zAbnJLAjADJ2~-xM#xNQRg%ttrk2}_Z$PTA^9WBo|G6!)3YAUgXDX$Z)RYKBlT~NRI z#o$)UVHt1#7z(^R1ko=Bomqc+`Wap8m%o)2gVYB8Z<7YjcLPxrt8ZC4(`;+JXGz2ylj>tn=hJS$bzeJq14gFksS5%Z*=)$~VMe~cd3krw zk#7Gw>+TeaiG8Ky9eY0{X*f5=y!*sU*;C$~IK+IvI~)6HC`nSfl+tNA$HIKy<#nx- zP5iMnuOkt(&zmhZK#LW}rc!gVE6pXp~m=hBEH|-}_QZg?s zqmaeE8`9`urhYo)G4II2!p*Coqy5-sQ+*__gOq8~(_UF}Uv~X3DtXsclObypvk9S_ z0|7FZQRf0Glh33Ye?2!%?Y;Jj_HdAQWm|}Lwb3Jv``6zLXQ-ED=g}4yAQnlDhC_1Z zHxI5{TrcF}+kn*d=W?8 zx_|doG$9^MHxY@r+X7&$Mzo9HmZ6khy4xHs13&oq%y8zzskQvr)M`36&;$b-rD4-L zqT{x?DJwXTP>0?RlOLuPf9g#}oprh0rqrynJ-mX`Pw`KKe==Tik=J&trfzvf&waXn zd#FM$y=HEyl??Z%wkx4Q+Be_Zf|yH`aTG6Vej);;2CAiF<>fU!Y1g4q@b}P>Uc1|XmfG>#n|ysUp&e<{klTjOxymnF zR!h{2Aofn1A*J-He?y&k*}FC;RoEQiuFQ8{EXXd5y>H)~Y1>S^Z!TW);G6Rw-<+SGtnko}&k@{z#pV(5 z%j{a#R>c9#?KZ%0zh%IImiwWhS9w!s#TB*do3br7M0LrZf9CLA)fq0n0c^l-N$+v1 z@2kEXFPrBVbz09HyFus=dRR z<@$fJTbG-BcRjNcK_J2rw(2M#MT~q0J20?A;2}iK%N-4-mu1@!p^XJ_tOgtbf|`1n zn|I7@Y$EW6e-3~@y3Kk71Z1bq7|cl|R5@+XdaUyEN=8~>7vjhFEQ&@gq-#H6%YqTK zEMzM~h-y&d*t+b?ktM-by(Q@+@&2`X6{AT6q4&$#F&fC~^tIv<98fr*d0=2QFc%9F z^A-W`@m#U96I|#-(Q7`H`s$AKl%%q2#YGQ14xC}{e@^DyvjMBS0`Q4{a zU!GjNI6r-}f_U_)8+ni7?z=7ee0iN11 z+=`sre>roY<4X(bVJHO~%VCQN8PoCA&~7RIVF5>wHTE0tlZEj0Fx7x3_AmL zb*2fU5W~UQf?=_D9I#30aYgjZvH^zVV4wrI1U{NMU81RlfGXK;BF0<*A)Q6jdKda_1)JS z9f&xd+ZI5M+`$!S;=bJV@MQy5f$_&R2h`h?+(TI(IfuPlqvE;#CLP#7oi%RU!7qjP zf5-~LAn9Thgt4}%^G!C1zPp`dN!{~$SF-j_@kmP%#?haGBPstDI6AjBmu(&Z-*HG_ zc&)}-Ule-p+R~cbhPr%s#wB9doF-yDHD)|y|Ii_aVO+q*d^n&m-kuJ4)2R` zmqS;M{c(6pBQCrhP3#gw>N)e{d1oR4T6qGbHpkNmSYu5i@T$(b=A7@BTB!ce_f@$j zpaG-FcX=}xLx&<#QU66whMM4dX!cH^qP)h!i}bzDe(#F_scR3sPrgZO&Qq-_f7nKO z)!e34_JnH&PvFh7(;v>DZ_inSMA|pwO|eABFJ7EnFqhL^lT}ygnz=V6Jy%(kZqg=w zGUtaQu(CcH5tKS{s-tJ&TPMPpPcbzm;=msQHZXKBLp^JGVeh7G-i4}a9U2leW5R5^ zZ!i`Nea{*N3}Jvvdjyf2?@y9+f3`7Hw)Z(X&M>4?3kxX!T9Gx8ob7si?$sQLBHk;@cWl$ySyh?XK0mNW4B)DX;UGmep6P3Fcy zb%}26uZL*$cR}ahzk@nU&~$`U@RGjhN{(#o4*t;E zIo~DVfyNBdVf?n6#Cc<+8%Kc280c)A>HYcznJe+X4%f=GstK1g9?1m08mk-w;5(ods2cQ;(4Ee;}~RI&(U0^Y!# z#@!yPJ7_tq*PS72k%X*o{E7+T1bN^!S2j9&HvCoI6ps4hro_w~n}cKJ_@)L8D>4^` zLD;felk=KN@N-rn=rYd_;%;tQx^7{bSBT+?Zv_Tz1c(nGe?F+M@9yrzAAfWpJ(;k- ztr_yu1AcnMPd~&@kLvTx3~SOele!`%Q(?Vrj?4vHO!irU zXMxo*wZ7{fS)e=g#hJkP6X`!%Z1|*qbNtTAD%%pLd|$WR+>`~vA}JW_9voP6G^@XM zYz+=Q<9wjWf10+M+xK*n?-Bp(2XIVTkvD?6uiK(Xx0`gIU$#t9q-)nq>4Eg!bl2^y zsbzG5)^3^cMO*J763lCN#5u4noD_pa@0|E4m=Q|=8D(3~o%s8*Xq$cNq<>jl7$Mf7)Bd{ zM#-fl>tcu1qMIzG3pNu??;VaNq*rB8l(*!FEj4-Aid-7jvs{7b(3RAyJiVl=24k>- zkC7wM&id--b3soW40okk#9SHL=Ylm~XdOPrSj8et%tTD< zede+We=Xo>Kgw>pYVs;`{34MgpU>~n-vPkBC(3;Gk{`MKvJtQOjMLF0&JW)!k55NT zQa&^KT}TYBV_FS`pzYCLdSI&y@=teMt28brH`7Zt7yx5oyBgf8C4=H^;MMIVQ)zp@ zK%Z3;&K&QWz}?%~)ZO=vr%Y^@esG{o=-s5uf3nNip?&G5rn_+fWfZz~ncPg`ly5-;9GYKytd(l9n6{@C}_uA)j7Y; zyHayk*QPQflC8_(Z#*z6m@Oee7%#)F>h#|^a1pxC^zN^4sbd5A*+h3QKeiS5u>M}V zeJ{J`$=d;k zKQimR=EMf(=6~tZP-DMx1zkSv^hg4`& zik|KHs_TO_#dX_PGipeYFqs@zKYC>AsvUi0W7~FDHj*%#$}2t=O9mG)V@axZ5;v;5 z?6a!4`|6=;!T$i~=#mw)v9X!~0yZ_5VSoWCe_HF4+qMz^et(5}({`wg1p^>Kf_Bpx z*EuIn8{4&Sns(w$h9apu#uO>*(aZI(?=BVuAEF-Tn`ysD5CCEy*vD^|;**;RpL~1q zm+OnCuOdDPSseL#a=n;{$Y)XLPqgrvFJLO0{N#Oj@nJgimGIt87583DCHG$b6+g}J zf7>g&I-{@a@2+U@?uSbXp9x)}u zW=o7)F1XcS^ZoQy$R{z2L)Zw<%mS&Ie~86oCVdtQL63gqBJ4eFD78=F$ZzOuZ*$ylx1$G7j>ECYs-7sIZ^nE1v+qN-mh{eVP{tiyf%C6@kNyt zX@Z*F;zz!*%uU(mNV>9(!bbvm6Xsk}wHT#cO? zn|Q?g#KGm}(q1Y#Nq;r3vL`e;paN7akN$T` zkU-G)2X+m-EtBn-SqF?q<7RE1F(Nlc-KeIhI%^NGZ=yBA*yb#Ud*t1me<@V#J=SN7 zWx1@gU74R{agMduKm5%)uzC0aOxQzvW)Ft8JwI@q?Yf7Kg}5KbF8$=cQ7&0mNl7xj zwCeu?r{+H6O7&HoCEH|7IG=@LJSsY)NbAgwZt^Opz-z1I4%>>~ZT$f6J{eh2<8f#<;~DS!4RRg#6O>yW1kYr5$%gS<>X(o>kUK zW*~*c6iahizD$h2K=AN3HBCC~0UIw-6iU99^S+>PW>biI$oObY0)SS2?7g;+r{EtnBBzHzZT1uP z#-9sI5tW1@@41LkOuE}TTPbXIE7nB1M3sZ6)i6aur4m?q+XRZmN3*PW!EikXwtYAv zD{hLt+zEnPt)(^TsI{$Sa!-SKW7MCD)hf?ePZWD^Mk&fEe?^55$8tMI>Vc`QdX!ZU zOxsYY)KDR~hzh}_V!5iP>B$X3zrywKjMoD5~r(x z^2H4s^NtX_!@+>%uF*cSI=50}IbKd>!mpWL)Yguu01712DmaSSgFc=Lg^Li$JjJ^; z*EGtWP_k1ff67>)`zh}ZgR73co}f&smjpl6-{px zw1h3zK3>2?PW?9I#Jn$JR(zD4=VZ^uabR+jf8OO)nzvG$Z|4;-zD@8H3UPE*QiUuC z!$I7%<*rl_xdxgrU9h!2Ae+%V#uMC^(9b*LQZU%we_E)5KO7IRaah#T4)BY(6DNAE zB;Xq_I^?Z8jNDZeGtuT5E}~x!UKqw@r91c9@SGEmHs&K23!1S@;c*v4fC6b~fOo&x z6QL*xPg+&L-8npvzZ|iwP_aM-eW}NDzmdATbi{cDuo;D4;=ESoK=%?kaLL0#?08d? zt&D0Ze`2lgT{jGuMK^0WdBDv#2V#Fy7*tvA%C0>v7%z0W)@-szS9$Z;oY*|rmh*vO zH7J51oJMDN(rzk7+^#$sYRx2+~}>_9K;a#r`uta0$9>%dW|_xfPH2s{vVFJ4+fXOY1Ag+q6wK1 z^(#%Z+6&+jwMh-QC@Kox(J**#K+UDyPO{M$Z@AuV?cT~(S|SSfyE$E^tnE;L)c0z* zf77*{GTPc;zZS6THQhB#SLHqJHR&MDR~99~OyYnlZ0xj3p7uIEh?<0N&D94hDl8Kg zwHYEgEjAM3Bx-I1^Eo{NC?@^Is6LuVuymEa9?Fbs#t>nt?c4PEq}9!BvZe|P9-%0M zv)JV|Q`qlClLCOKMIWKs zlU;Dceet7(2haE0O=Nk2!E+(tIm$-BOlz%Rzg)4VCb*X*?-Ca2;Hr7KWw`aZAih(hE`*w=YOxOicm}YEH}Ae-S7;646Nx z*crQzv41B=(r><8m2K6zU!Ux&2TFS-T%GgkdvL7Hc_AvXS&_UiiL^99-* zpNNTwAU~=I$}|NPh?=C!i=TexlMEICNU$K*lRL9@2{npj!UXwp^5Np|7aT%`6e`rA zglhzDqcDiL0vF@hCC~wYf0)RhtbyuzJKs0|qUeE3&6y8F=_?j#dFU-4Kpn28~$v8>WF;L&63UcJ@(p@e_LBOhg%|09<4!y z0#haap4Zv^kYev#OL4uco{y>H^RC!F?^)ZZmBBT$=>KhFeDIH*P7H%$4{8B{@8%$w zxng`ItAe+*c*oe;*JGgzY}Y^0{lKHzUK!cd*W+POh3+h8B|46qF#p7udgzr!gY7Uo zmr#y`ruSqPvGz0%e^Io12Gc5%-sM`H;6*gZXtqg6e>k4oos{jg6bJGKlw3^4 z>ZEDHHWl@)i3pgUQcF=7z!5hsB{Olje+daqGaU}zCKD3~JCB85v-Y;i-_hz|;e+|} zR%h)Hg4KfQ7A~CVVnM==qQ_vu7U_sMK7@397I3xqmy_{-FL2fWcb7T0^Y0A%A1yO| zxw-tEeGwE>f3bnHWFa_8Xn!9M;Q~UB&V~W_3VY@Ru~cF1&`uBz4F*Mu4w<-S$`_}hk=6&15#nYz|FxrIDm569@+kO;$1F9olb<=o;NqT9~wA*3O=+{sUZ5`2>4z~o_7g7gc+kXLh=6nK^v9T1h zhrc@l0y8(4p>P2zlkUL}e-ONqMB;Qtapc5KZK<-RX~*$&C>|wo!XuUAohA3zcNYu3 zok&?u+o|*AfCCr6VzK+|3wUr9@ZkG{Z_f|Dd>->4Vm4MuaDEwxSg|-#K_V1W0)|$> z+wjfNo5fNY5uPp#504g-htGb*U)TNq*neG8bN<6Ib$(hXB#CtRe-Hl!2TrK}=7*!R zWHUakB)-OHDkjI2Yv1tj8|Gp4BJU@Q@-SKy{^52fn-n=+@{e=EW z4hss-q@3D}CyaC1uJvMKGr=XZAP`R?IMN(&FF;3Zfj~w`ywoBA@g>1hDrSYCIYkAm z0F&G6+;5-Rsf} zavNs#VkyG)O;P468o4dD*F;lSQ|yRH0zbCh;dE1Hi=~k!eE#g!=>$WDGZD4a`5j(H zp6!r*wpeOq!XtnB{4QPJl%B8p5|;|#gJg*?!BQAzv}jM2e*ud!=HcN@nHJR{{ei=7 zP=RV#9awi`S-t9dyK+U{3qO=L)Pji0`W88Bz8c+L+a8}E{Ca>w<$(x<1p!za#3o@T zRzbEtc>9hAEBN>_;7o&V-a68CAeCW>*3d75HwS+`08v;eOq4`222vy9NXOhHpv^4e zaiWz_u;K=Ge|;R~S!<%B8?p)0pkuKHLx?&>*tBxN%POjDlc!Do?T3>p|Ct+}zWw4I zwBlFMUGq4_D%aZqH#ELTLbs{QKJd_#?(X6rw$inZHtW;aPo zrEiOOqgDEWKlx>8@^XsTyjpb(4#zk7cDJdfCdzIie~9Yqkrqteegt}L;^hB*`}>;e zv>_VWUlKDO2aythSY8=^<|29srR)&Uep(0u%$sJ>GTRu3IiiOA^B(DLepqEdjJBsw)Byw|EZ7<+rw>M;GMO5lo^w zx(z_TRu<1s&R!jzPm7GloddcdfXnjL&h_$7z^jN0CICV|Tf8z>fEP~MleT`P*QQBW zDvOH|PTba;U)UdS((IS?Du11>b2eCD4-TG!e>bIBHQdt1cW=nIx<5eh=Xtc42g`ot zYPZfe#rQ0QgZX9AYW8R=KHj8XD!WcMX|`<{{iMYn=F1z;e~Yt6E;k9?n_cw?_|*w& zocUbfw~dnr7z(hfQ~<|g5Gc^m&Zm*UG8J_|0P6hB1Pnm97>N!BNJR-=islJ*%7UP1 ze}lhiS$0Ag?3Q+(&Mk}4%DSjl{U)w+*c|==V;GVp zIx`$4XNJ9$nz0MR5$70sg5GV7eHbwqe+`uYaxWvhqpWw$0-YPIqQk15x)Uu}!n@0C z{UGjok&_8(4nEn8ub}sh(n#kUv7MG~%o*4A<8Dl`K4-Y+#TW(sFS?zaG@+M4i0Zk( zb3(f2oVp`w4+H%RPvo)zKa&D~=s9u2Ou9H2m=U;V;s{bC4^EJxDLYO*<}SI6p!+{dEJaK%9fL9o$1m#L(vViS>2^{?mMM)W;Uf$jQ1uoNa^OT zbEzT=+^apk*~{*5$0H9@U3NDNjb;+L2_f5X`#(?URHB)*$>$p&saP|W7!vmTwA}e* zF1^U+!y}M`BU(PCmP5i1fYydfe}`3mm2QjoxpM}AikzPrx%vGW|H?P@p-<0;85?yWLlSAml_a_K_Qgpj-0j_mZ^9 z1iU`izrimaEtXoSJ>R2+c9w@<(kUoUoRHe=Y+bJF)vnB^YB~bX+EO}5f5ydINX8A& zByr3`G7gdH4!M{?Mz~$sM?^1P{befJutU#AoC4&;+BgJv+t6q;k_BQSegmeQCdmX+ z*L?>#!xu(IY6#d5$tV^~8#9I2Iu6s#Lb^l|{|vwy{&}$0$sAZ4@VF+v57yIi(uS$t zaf}d}c1f#M#}oQu`qMbXf5q#hQBPC&Nz(!XVM45>_5!;5AtZ=x>PEqsjqDDVwVu^Q zv-Q=(p(Iv?wfzqwNw64Y?-d-ZqJo3fa~8uzAJx>`dMfmR`-)Y613pTx(vlW_M*Fly zT^gj?h3#z$Nt}1LolRkvY--5oOc7avO^J@z)3cNFlQ~{HZFxp3f3}=~c}0oo10-cI zbBXo>q^>p%ARUiGBCkIpnyraIU(2C|%?Z_D!QM{BLqkm#BkK~KbwO{&x^%*fny{|Z zIYtcl+&S|?UckJ(tJF+j<$tK6J*N_46;gOII)n$uv-QQPxk3`^V4ro}H?}zm3P>q+ z(&^=DXl{@$VsReQe~Rb$fYWQHYy&Xt`T82~byVPkLgg13vQ6}PidQ5QrlkbFT!5e4 zE3P>}Y71u+-qouQ_iJht>20m%y3QTw*le^!C&-9?$7mb=EkICNj` z`j>#c_k{L}?k_O^aPZg-XM<0ABOpqgCcn5FzdQ8oPR60VGCU$8wfK1WyLm;x{3Ckc z5kb#+*ZeNermI>a9y}X32zN-hlrrk0B>Y1bBOx@YmswgmM91;NOTy5cz9Kxi(i0k* zf+U>bf>dGPe_?S+R4L6xoJ7C?tn}nvRRM@D{LaKh>M#hos{GEoCItm^6Ojm+_;puM zr)haz`#Ot1>KN%(D;H?ENPs6Tv~t@cDvZ)oZGweS`iM%|k|wV3<2vYQ-Mp=Pn?Oom zXu-kv#VTJ-)sz&3Y<--HRj+3HrmW~H1itJAn=U=SNUmZtJVWB$19b3BWbZ6R)#Mur zg#5EJ8fSmz)C~{Xn}h0q1CiGY zZL`tJECG|6`xuiI%tr(sy691 zm$g0H?zDZNNXlYMky??8ll}Dz9Dp<_Q;yS@eGx$b=iqX1K7f+WjU$~OPhMT0oc$0= zClGOHBIkPLsL+ToFixb5FbY_i^P78haW$J8U%4M=zH~2UTDq_Qfxnjgalz6#e?6|> zEQt7JW>6*Y+<&tK86SwgdUJ8PnEi466F8uT4rnb*9D#e*^iQlZ^f3}a=ywW>UuR0X z*NgYxFTSUp|FyWhdi&x1DZOb48!9QZo-!sQA*Js2dOKlENiAYX2&*WCIwz77*gemF z2&5B(q7HD;+|!W=jdJGNh*&9FfBU;s!Duy@@&>Eop`o( z2n|H5m7DA^#W}sK>KzewucEqPomGn|gLSm~&;@0*@Zz}JKmVMkQ$9!$Yt<<=m}%p= zg+NDgF`Iiq z{HEUIxS0da8{wJ2nJXWx@nO}=Kl8Mm&2^;V;Cz|e=xzj7mBFY`kn*l`_)W_C<`mgM zC*34uyT+9)!XrVMRWWWh+@Q%@u%t+#UFW2dY`3(_c2}^rvPXUoEc)$iBXs{gU%(e{HOjhBFofP=y|6Op~(ps|L+by33rNS^mj-Th`k=BNmIC2_X76eb4x;QH#f~Ww(7ura-{Pb*@Mj4vuDo$C$#UrS^WHwsH^LX%WEP* zdNxs4N_rxYfBhYPLgopNylJ~If5g#)W?|BM&}aR)zZ?35Vk0g;G&oad{`oLEn_Z<*d6){Y+D4HrtZdr!*!Zf61(V?*X8pf4nOpT2^uHit0#A2{oI$ft&_Q!2eV3 zPV}JirYV&Wvy)fZy>^$@n+=rs`Q!)T;`-!2C-{jZ9p$K4ix9r5{3sNG@|<*Y^4lNM z$v_CM!Ymg#w^nuIXyc2>^MEd$tCN48NCAtLA4Gu$92LF_122?*1RuxYFg%<{D7j*WEIbzkKhq0<}=ufyv`!N2Qae@YpXZZ?hf0yo-U3w(5-*zDEOo6vD6r*>2QpdtPD3>`#-Rrma{ z*}Q*tJd%$N@I`NTvoG6XUKaQ#20Qd}>Ii5B02d%zoqb{QVQt(GCskXg_bR4ee>2tXRd2lrv|>&3f|KQFi<&ifPMBjYm8k~V4Dd^=?yWu%ps zNz*((T9QrPl3tTEh|gl6e^}{U-q5;E84>d0W=;R9*kp|ia4frh^_-={NISeadsLx3 z4E$OG@SFJm4gB)pZ{NYt913ZSK%=4~#ZyVe+! zaR(`X#aeA|+%^*a?q9Jm&^tM>X;Gx!oLqoSvQ6D4j?Z?Q9(u(=mT0d~t+ZWfWBY#n z&2UJ)t+q{iINXPLDRMM3`@kj_8M3Ql~W z@%4A}tHseTH{XK-ysv=gF%d_go)-PRA?fQFu^{vbJ7Pw&~1s9>1Z9wXmQC?YN%UR6gzzg)=;)uy0nuTG^LXfU^c>3(<#P@vX<;#~e z_-6j<^*>$Tg@2r8R!O?4&S?DN#S1)tk(tjt!DlDjW3lfMr)PS>HIv*<>et>UdD&w| z!-r*_E@_w)MfFhAxG~F_`E8cDSxL&wP9+UvY#?x;#Yta3tID&}DGk4QKYxAof%uxO zYcg;m8H~2LPBzKPoQgd-J*OJAp+~c7Ro>Rh=zLch3RGMVj6Pb|p-#t|srS2og1kQ` zXtX1=@^jj+&w_Y#WQ(8X?=Rmi%+AhQNk+6WX_hoe-Ke!aUC(E+D~JQG5mj0wb^Uzr z(blRVx;m+ss#vog{n%p0Ov$}EHlC#N`(>j&R&R75z`V8Dmd^*lJQ=)x%ppba|99|? z6O9h$!0iQd5P+V+%nvbt#@3jBJREFMC%5h$90{A+UT-ixs|53Da}+yZRL|p1Vv=G% zafq0?L7NkcJXK|_7#ONepdGD`xuq2X8p%R)_MEgT!Ned9azS3+lQ_eSDDo0~cSRcI zRY{ZDopI1C4cR(Le?8)X1NH|8_u|;OERs}>sQRMwlBA7T_{f4h22x{xjW~-$@Wqyn zTGEHSDCi`m5G;UVN=Ipbg6|fT5)i2Os)Sv{j`2G9g9_ma9i{LBr=~USDP@*u^$pSc z^BbaR-3DjTHpZDVT0VTcxL91xk0O8y=NE5@Y!8~DH_k5%(G^kLoWEYs%n1=B^z`w1 z@p^u}IBfG$&tGbl8n+EyV>}ql*K1W~`J;KFA95uc*Giemr5WgdZQ`Jd4*QOJY{>q@ zFdw9b6N>YJZvSm+5M1gb;C>qxG&X}?K-I@|Vi25glK0@MQpV1lu)Q&{*jIxM2c`2>>w9#Z+sOH#-Jmh zS}Jwgu$ele82ld~hLMW^mXO(acic+- zu1XWkw}0#Dj#b2JeX6NWUs_nWFZG?+vjY3_c43{1GBw%EiSAQ->YhScHI_Cv{nD7M@A z18kgY1XvP{rh=zwUZQ?@4Z!;dxck)~p}{eV$MFs)h#IUiwhL+w0*5mdX0Wq#nr)8WA6PS1;z4ZRX+z!JB~1!qj~s$4JBG@0CKV;Yji3N)=>3ei9lrpTaJ z`zAfs+tn)BJkbM*SXUdPVwTr%AWu|(4&eDVsq=Jdr#pKQ0i4TiwMD}Qrv1jbejU*h zy^?`PqnFo6!A>jp>ZUR;_4g+YJ?PWof8N$F{-=MI@@1M4sKQ;i)&o=p{h2|t8t z+s2ZSGl*%UAga1j{Z4wdHW7zaNJCwu`fTzzIwibnI8wBTiFyw&LmH67pi?D4Te5&V z;n2dR;{vzQ%|6i3bi5DG1W?e!_$#hWAn$qcFz*>dK+U#=B6ia4hRzCs2~H5?2mLz8 z@5b$ZuyYmM`SwVdj-p!GQwW%U=Z>1iJ$nfm_x-Qh3YWoDzt*O(p>x6nRs;>I_>?{S zHEVdE@U&L+R?^RB>ap1%mn7}MG2Zc5Z%pT?GMz>PXI|7*dy6JqzI!f^tV0lP{ZV)k zC3%=7(Z6kT8e}xv3uAcF835kti8c#{Nm4%1;6b%*AUut)zR;jiNC{bgYm{^vg?PVi zMx8>E}*u3Tp@}8J|!d{mALv4Vd|7n6%?mTVUGH~{ zVIeYc`U>-~bj`kS(C$mRv@e{j%HnB6*8tqmG^i;~BqjZVKiw*Q$`~yn9Q_Tw6ZR9c z7S+MVwGq_19X|AW=~&x;7kNBrfHY900}vCZjmg#*5{g~99lYABH#r7bJ!N++FV;?4f$paK zZ0i0D(o_dY4X(bxtC2r0xx3u(oAMZ>|EM;)p6v1q@%ys>wft`KrkK(WI@d7xYVGFR zW=YN7m>q!p_^XwF!;iaoW2B~7MiBsp;P+UbNZ-{T)P_i&crPrrm^jIZN&k11g^oIm zM#{c3CGgK!2Kj{}epkA7scgEI_Y_1Qt#lem3IZn+0$j$q+?8-?FY6}Ts{vpb3PC{A z)pzQfV$R}Gdf06Xv9`qqIbpQl7WsYm(WcV15a&zXs0(+01c)&m_1c}7YAo~_)X$Vg zHx$uAbm6vna-;@*We_$I6kFZF$yn+SV46!OqEKB`Ck@TOkWx{{Z%VrfW3s8i4a(42 zi$b|=DBEw-a#0g6dZO^8|DllO_aN$x(zlzXkml1s#(2fQY2E7tY&>e1HR@acy zn~6<4LH{FvZV160w4UNgq~=b#1Pk~Y?fHltxjBY$X28$QviCuSzV%7L;&9^j&)gtt zq~tkyQKvd82xZPh~M@@^bsyMmk!HnYr)*D8sI}) zuVahK;aG0zPS3?#qg0JQ+t}X(!Fca`VGnm@Z1O)dEp86}1L10f_m;-cUp5ge+v7yn$nyMA}I7K*Qayi#m+eU-A+SAW9)P4SO6wslQEx8L4S z;qO-hyJT|plWoC@AE^B9+v~SCSO2>G4hY~O0cn~DT>yDz>F;cpkj5g(a^*VQ{NswV z)$PsqU*CL9Gym=8?YlQWeE*uhQU()pmZWKHF;;&hjHPa_H<86S6EN0y;R5@7#w-I( zXPxLQ&9L)YN|kUeFV?9@H0O5OyQ_7|<*KyP%U}f05-I#~wEC&Bot#yKQ|Odd(?M zGnOK7k^PsXH$Bb0t#|e5O0ViIeV6T)I(X9B`Xe>b@Z(hqy^}5L-U8HEvkmM^0e{jT zO;zu@a%)+$z!IG$Dl29jfhDRA7sE4YTDT!ktqT$^xtGmXZ@#+0g@2@le`booKOS40 zCqnqe&3%L;G&}-{s2(qAQNvtRQ}l@wZfkcwQY2Y15nw#PjZ-~MJJC~@f9+9HVX;5h zW4UyFNXKKzSh+kx4=TF4!s~7}6@O7>MvV27s_fP%e9f#C7X?}$TV)i4W(%y=0DZMb zE6C=Bg9VV6r)s7PvRoq8n@=nN3=Ue#3eDU4-{q*C)KtzbmO z5wPx{TZdakwj;b&$fA<2la+)l2kn=S8BNBq?rW4~p$rC4tBohG=J#%{{<6niiR33TW+mn$yu_y2aof+Wvys8Ttdt5}8Fn9~l~9(ARAB zWoICWrN|N)%#C_#9a9~B^B#q{kY>4#ihX^e!uep^;`bQt<6vVZGH`P|cE_kz1%R97 z&z>1BtULxoA~^lveFo{b*F6dPAS}X$IFqr5X9RX@yA#!d_D_gW)@A@_v;^au&2gnw z-sV)m0B{ezw5zDP{lTu&+b&V2q4UKDU+-|U5$^^AI%-1nOA3f6FWt?|>6~)_b3ly0 z7Vuy=@sJ_j)EGy0SN>)LaQ05F!6N}6+Fw2&baU>q7a>DL=L8ltDIo=pt>g1@NsatHNo8w5an=u||5kNAtXFLcJ9YEz=PeM>8 z94^6{*AJv3&Mw?3Ei8zHhl)f8wD0P&jj3U-~lxR{=Qix*ygw z1?MnGk&kl|L9g6yTMFxFk7n@qf6FcDHVa)XaDwwnq@H;DaqCD5-Xw8IAY728&Q(7lSLxLB;AEje@Aj_U8z7Q zYfGP`3|_}%HcvG3xb(i>9hTx<;4Vrpwg6isn5O_0<1$u*_VndVEq*LvgB*<8t)n`) z(nhzMo!Co@WovM;*qv=*WNuB%-N1_oh~Qi&xtbWl7bF>2q9;kr*Jzqkli|X|Rw{FA z&Seo!NG;Z+OMBU{DsY-5e+9^}HsUnPVuaMOmkHsR$?VEQ#0F{)f%R+#8%cYZ2TD_= zhA4!}0*s>ujFS<|vCgnuJAh+hn^KETH6Rb=k-@Xc50)3RsH))1k(!0FZ73grS{6wF z^wdyNXLq4Y+}(~Jr+3xrOhFwObVnc=(FI7qP*e020zDJArckFs7~>>}jS-Dqc{upFUF_3JW#&2i-bFRv*dA>+X}6Sn zg_NP4I6E3ji%3->>^lzrw6FLIXy3Rx(L39<1

MBA$o^GAtNsM{nH1bSgxW=q#rCAlr%CNSA>Mw(Z{)bRSsxvp}YA z**#NV9z+C=QX`xdha9#O7YFo9qsj5+V-l7|Wt{2=<;hbEftH14qnPzK=dd>#1I<|r zR9mn2WMsIS(gV&@!%ZLjxHS7ltC3mu&2KUuiexbjcO396x4=mlZPo#K1*-vQzP9TxTfdkjpgOk ze%lQxjyuU5f4kQP&aXn6a~bsdha%GH3RMmka3ZSXLb-PBP2Pdm;~gjCkV?GFq6Rh*`OiCQyF%m1R1WlFjN-AACPregl;}^HoF`P!v#_UZgTg8o zNQLdBU*%ojq=WtA>Wy8<)XjEQuvj8%yT;(sWcP2xXIZ!7VD@kdEGDvBD+MoG4!+!OF@-wv~+|Gtg6s%zH~F^&SI|8&Z$q-YrGKF(a`q^iqJ|`j_uYzF2{? z!D0w4$1#s~^lomM6=!69`3lICFRgxQW|q@Q&y-*jWOF89PE=zg>JE)fs}d zwo&$jJ@vym^fE9+J_F+l|GapXX9YAvSGVYVbND#7c(WroHO}QN;9N9ZdsG{_9-TyV z{zD68fVkReVrgZx)8lfy{Ym3)&n9i{Mwwwp7xv;0?ZPi2_h0NKBT{R zCmmo=BZ#E&k)KvQ+Te-GZ%`*IjlJ7hY0o3|Kqeq&y>axW=+oCOA+$UF?fZKE;vOa( zL*J|=&dLWQ=jU=d#3Ap?o(3A$rG(}LTFSx%p(eFjN<*}O$DcNrM!5FT!GZSZVNO}l zNNG?k%c*-jy&I+K`i`6z??EEgO;8}OieTJwCxFOz!ek8Wi=b2Sx0yQGYdBV`*_4Bd zb?6Q&91Ak!%}5{O(oZ6hF{115>hgFpa?q(3_3e7y0yhU_A5sE8@&UEgz25cQir5-S zQv{3aK)rRT@0DY&xrre96~dkKO>|<10hk^`&_8-8u>(B7vQN0+4a#V&B9C;F`sF(OrjR z{y;CSNQhr9kDuFb}=M2#&n>JJey-CygFji>ae1Of-=YvQjVpt{8Lk7qkMg# z0BqUEPhao9XR&9qff&$4cBJey{7a-6srSf`Y76xGKg1}Chzt&kVN+f?ad`sUkuf;V zdv7`R-e_z^)5Rdn!>A$yQXKp=8|_H4vqoiCSmZ?04$b8|j_+&GXE*Qy*6OcL3^tXG zJNy%y9p{?bd}}~s%#`u%n25>zBHElX+Dk5apG&@d#qWJ)ufgrnBG!kWRh4~8;}g!; z%};SF4srskl@IeRnj*vue2Hfj+7T^3^RH9;Tu_;0N6h4C_NZOTyB=fnMzD`GSQ4_r zb8CO8c_xlzb{T0P34dk%JGE{VPkcI-h`l5%YG97gF6uz!da%W$OSN0>xC_oP1{fJO z(cjcz!&TOkEIXlt^Re!9r-+Qbqj%6SUgFMM`EU-3l^qK%I~(#_VmJ&UhwKu&GFF%# z-7m5Ne$pG^>-*tjObjsf89)A*uEE7Y(~MVo9G3FVAlitQYM>U#&D1lIzRF)BK9!L2 z^*gABEeZiGa7mti=&Rpap` zw5g&s2`-%c9>Kvn-MzjR5VD(md)Lw>FYD_&TbPuKV0KO-N@WXHvqBuU8zBEQ&pe6q z)joQX_q+6tVsm{vXAcd%fo`}&_(_`RH`5%cJf3)v$Ov9be2baG+zDE*Eb6CaCl33m z4&TOu77VT`s?+vX_(-qC?Uk)+Z2TMD+@@(`LXM^6Ml|Zo*8Q+8ATHN=o5VHE+XhDF zv9w_*_>19nuf1d>!M!d85e3p*@46nkZ%C*>Of#Rz^8BV+a${~Hm%ZWe4hn~kl`~>O zWz$zsXM}X-Ft@yq9!f{W9-hlb1R`xJE=#R>7B0^=mx3Ajs8lnpty<->@8jK|cE0P= zGn?0^U6*5ZsCnqL>z+^MP6t#BsU=z`LGc9w5Q53gP`&TNTOcE`_arU8(dzZE; z!6-7UVcJyQd+kBK@)0$RP;d_l(YPJ3>-Y?Gp2*LE@aw8J*BRjO{r zHvdF{YKWfo*D^noE@JEnwbsGWjv>>JsLFOe{@pNS&K`~-=fj1~VnpJoinSd@K5m6j zr7L%eV;VE8xz7CFN`j7A0X=WsNU@S-h%3M*(ra|hRYGDe< zMRzmMsUzwwx3k3f{0<`MNxFuL=74mNnUY-TG)H-- zo?XD%bFHmu9Q1We?3(meyS|1o7Ph^IQOnx3gUM5AtMZo+p&&$XoEvTaGXs6#BO7JH z2W8VnA`2S--rY8`k64}_$X$Eh4GUjE4IX36YiSK9e%Th6`Y0;8#r86qc2Wr!67aC4bF4vgfPPC4q$?U-?BJUfw0Ckzf!MQU<%qMVS19~a%>RnbekaFv~Jj+((;b)Bc91WSkC?vmGY2B1PJ#%>#Hw-*%ZyBRq| zo5tWvoPTYrT2DaGNF%Q-1r>=*lgnr+CX5X}Nrg)X1M(7rrr=-MoTV5 zBwiAlU=+|7+JYjU6eX6d(NQ-#FkO;7pKC#ZM~PzQJm@)T+PhwMoQur)p%s|tdgK9h zhrq4GW5t<O2PfMLM3FLIDe#>N zgGTvCWw#)ftlXE$dsd#^Use=UkBKzgda1h(o&*_?>IKA4UukhB?!CN=2y@{SwrRk!HPV79Foen4^m#91vuJ?!$Ah!z5@a>L9)pzvnGaT<3W z*yZ7l%LS+_^&>9`9F2-*==ptMJkpHHo?pz{QaDSinI=g9QxM|HSY3dRn~xhM8?Br- zpx>)uc{ui!h^R1@=q^kBzD<63OA7SuFd z_D6Y=bw>!kD~%maw}nub>Gb7B^rNymsdFcm7vx5Ye*~XjE>sfQtTJ{kB|M);WLGHU zi{uI19D|6UsO7%KSL#JNvq-^W5NGv05`FC)$gbEZ2pj1ow2Jf<>fCFLP30FZc0^{d zhj@_6CKZU~leOx@$??|1fbmD+Bl>5PXB3H3L^RxfQ>?(y=Yl8q=&f+f@3u9A?jJ{# z&YQO5Di2aQ(co+XTFuf58END~Ch#}f-wvxTp@=MF%KXY>lg)jw$S#*h2DPXp}+RH#gJDU_%IPufL z!3@O}Fqt_Czt~|LVT@pVc}MnnI%qR?JA{55DVhDGMXZqvQNRuwdcP4BPR zx*pK|*z|p*pRMijd{(Kr5fzJ_y~O6y7F%)pB}Zycg3tYVsj;1LH-AnoKDq3qgjw*QJqbQ9ukzGLl()SuTCk;83B3fL%w_21bxeq4yCB| zL9f!qHJ_YbB;uPM`>gpLE^>s{S9oKy&LPPuvrf@UC)GWNDe`Kq7^C6U)zhtbG`tXe zwF>ty5^C^i0*dp(6b^aqIkecyZhoV95&zN0%q8i<+{Dw>#Ph%tg9- zy+6}z@tkSChviI3rQh3RT%X^x&^-WgPOk|6(y>J$heoqKU65bwF1iSXB*9k*yI zid?gs8BOru7!Foi_N{*9e)bR*soGym=2}it?Mu3|`%F`#rl2%Vku!I((5Wn_k}^F= zae4p47{6~mx4q856n8!Y4c~s!=)|}(mdGOC53Fp85?%DNA9Mv+d8;Y~nzqv|^S3I@ z1m6Bt5s5Ya#v_*Y*>MP0SUXqpkBKczzXp3WstTXa^{YZ{8V)eUXU@0=FAdXYev}uY zh~aOCZhtZ%9AbgSwa7mE!&OvD)_Nm*F{Y4Wk5C|ldI_RC=}1Jirp%wv#Ol{Ws)rV z^l974zv)g(HEpnh?bA~-{i`R6_>K#(L!LbKn`b}?w%s}RG1tJ^TW=pXKk#Vf)v=;D z&J$*myTvDKv9VlambZP1P!-)o=SGVM*P$Q;_6_py5!8(B-mmu^0FVpz!=nO~rC8f8 zN}&06kY5ms%~H;X_H?4BLG3tMh{!1rgyK8R*(MpGcJUasv>eq-yj*Y{)m}$*jN%RE5YnU;)CsnMYr7;0{EB1 z?}lNXgCN+ne(=KZJO(U0pMA1r!MzjTT7%izIGcH@FsedG{TXFnhw9u{NVmMCOR^u} znRr>k8xD3*iaxZre{qkC6n?xI6^9UL=;ev8@4@Qg^1_3SevKrHeCH05zH9oleJqif zt(K7OE%k|pWoD@)L3`~mPl_)xH6UzOm(rPk>MLhL%2eh4>(ddl@mCLEpd{>di4zs{ zRcq&k5m!vzXp1Fgy(MDHh_#Jx)69DbJuZSvp!%odCslz(BUBHbbw)qLT~VI3QVW^p zdSSuG&~Im?jvPHCBOH&Q90`=$VyH&aUcYm%iGnMwt#{-JJQ`>W7TG&cu5rA^u}<0e zA7GeLKV3^Igmo9MhVGCW{Zf3Nxyh9$cbmTIm>(@5>n2yFG~k8}d*h*cXwmr0{`OpD zX-%GLOw-D7CA?XBq&=K{h zrxU#!gQ2`JtMV64?_p-aClY)Y%(jvU(0nq-LF+UzP*xUnhuem-G>toY8paS+Do6Rb zH-v5H$<;Dh*0ON2QcyHQOUCoVU6`H37>gxJ@kZS5IQWK~HA8|9^V(#;Ww4Ozfsqqk z7-)DIG4+)KX=30S6bOTZnF0p>Pz7xJE?#j%7fQ+#Oj=!gcw1WYGJH4~RW?HrX-Z(W z?mvzi1(}2`@X*&e=QzjKEN+z2rO()>=QSWnW|8(*ow@f$Ij>(KkL89*e3=|YRi zctx@H16eSzeN*>U*2~>hmcoOP%R+;M9fI?DJTH6A&0%dozp~8|eiRGWs3a2Z23g@G zk0@#~Nf_WH$(%_t3U?y1+nThgozSPcdqDk@b6at?ww<>xHuR(>8C(RCcWl;X&^e_z zwnSfwaP@A1-u84eDkfV?+Uo8zZdVebSK!jFo!FQ&5K~ruUpM~Tm%;W4w&^qE!-D6? zw2kt@SfKVCLs^b$SM+S2lIDY)leDn&;0X!!X9oGXRs85Q)`h(K;yw>VpH~^gXeasL zgxX;hPfKEHa2sa8#m+oZc+Uq){)~m@uKf?;BAYB`!hLtHLUdX~ST>I6gxVR=(JjDQtHW>yx7xN&UiPD##Dg&dH}hnAGXeh;Dm#6nQd#RG)siWqaFq4{ZpC)*yRw^OL=% zriOjIoZXp!Q_B&up}!z{@+jSJuir_&V#d-AlM1t+>n>-_AQp7ogR>dLf=mX-_@s9f z*Li-K4J{~v+2V(qaVxoG4kC?}eNO3YD0zx^t62!l;f9yI&Xo%EO!oL}WD6s&{DN~K zX{@k$4Z)nl+y2n9bl~#TZ}Fznu=XT>3W}T1Kr5=6Wj;c)t*!3l8o8l;CASQ!ZlL!M z*d!;I*?!$T{T}1*em+Q!**c$l6}y142iG225N2Bv69_{pYFngR3LT~^|vU(4p=KF@2`spX%Tti#$ zP&UKOX}bJKRpCr@nL3m=?UG4*`P@7`%S-Ros8wx?4!7F69BF`brYQOW|R3>81!!vb%)>G(D5sS1U6oFEeAfVp|4!pU_X6S-P=A z$UfAu4+i9&WMeQ9?BKO!WZM|spd?*DFQ^SC;T4(ePkFy2YJ$Z0WL#Lwzlq2IuEvGj z;MY}6HF(#HX!=>%o)(s3sDI#ELkr-)m)}i#4^4AkW$9}u9%wRFge5u)30?iVQv6yo z^Lj@2^kv0Det)&(I9i%9pZmN2pk$r|?qoqAMJ|bhCT(@`ruU*?BxLjP+xoAm?>oG$ z=-w)5A3ZfFLT5ozUJ{h*KrHv_+(HHer()3w9h0!b1F@neENsdo3^^ZkUM#l+=frVW zZA|r_jVI_M6|n%J$8!lYv^eT}WI0dX{#U8NwYY-bs8A?y1iTl@uE9D+X87P*Xkb|C zf@3u5FtrQ@p)pYA;0rw&!tMO9R2)g}7c|>Dld&2osx#0FdsGTJG<-0b&dhdzw7WWw zC<-4#5-OXw@w=!C>K>Nn*esS#4@RkH5n~aX{nZ&Q)nnm&J-tTvo%Z%eKKw6YO^GAte2n#d=r%CElbYi0kpOmAU#Rw zfM%>r#}^=n8R&kYh6>@WA1&M897uhcpRUGs*#%s`{K}_1R&ud3b2DhQL#p|sQF#*J znj@-Dm^Ts9b^PwBk8E%T>F~ojVQy@pzrup3gfA!r_X(Z6DGR^QJ3Z?Z9>$cF{1_8} z*Xbiur;8DxAEP5xV3d;XuSS{7^Zc%@vI>UOZdan_9L$D#cxMVuwr1*jX7& zh~T*l7q2)2DZiKkCH;*PGXHZuAcb=mFqI$WTe6#IJwhp_;EGCzCKw`Fi#E5z~EDTgopVpKUzqpdXv zlV}q&IvJYMses%gtNx)@QvTX=_q$Vp83G{V?sQJX;w9hROcoTkGW}jAUyIm#IfBz1 zXu>L0$>b^W;wld6GAd1=?^b_S$Ty>rt3_m#MrNnnJi577@D8w^F3}z9Jbc!2RNX&kY2fy zrGKg+4s$f(qDtRdwf)j)f$^kp1iTX?XqxgkBl<%bXSJu!Cn(i z4u!l`!+9eXI+JcjvFGl{DDQcnTQ(Jhz6UMn&R6rkkV3B1Aq$HCr~|rVrv3pGui~7y zXJ$K!>ewu$n|qwY65NXx(vuP$KQplG^OTwqE1RR=&Iir^Q=!3yHdm3@fjM5!M&?R= z*+`V!F4ORenfdq`kDH&nqS6?!ux!?Rub~M&DdD(*P3{c&8kLB!wG=*`a-g}@!=*W5 z8%s5-b9t{lag<=|$V^^gRg7I`Ees#>6)-uI^jA^nH#Sj}y>eQ)>+;6*C^x@9KSxxnKzLAK_A_ z74?r$r9FlAM+mXr`&Y2{LHzd@hDJ#G|Y*x{|X;dT7iEw_r*K^ zYSzmyAd&yNw*p?RV)@4gj9yIu(E?_y#wY&!CIJ9|@%u)>KMw?e1kmZ{0yeEC`(yKW z)&0M162S%4q$>aT`MaF>-!`}KfIr1WCPxEDd1(kp%-_Yv|9`9I@3X)EM)`x^*AS@v z1w701&nX00{p=4N?NYUD_C6j9TnJea%oy0QD&Fj}8;8TZ={d z&;KNBA5}S^0sv+_006;X=s=l&EemTg|DZd5qeZm;(UE{(YLWivkm?Aa@T~u}6R5-e zqtp1UgYp4@{e0fj|L-1_ZZRr^_H|01*!6X`uf@(k4VIpYxkU=XcorP2x}v0H2o=fpZ(sV2rE&;r}1z C&9;^R delta 9718 zcmZ{KWmH_-vToyU!QFy8A-EF=uEE{iU7IFIaA_pCySqzpcXuaPAh`2L_8aHieaCyV z|5Sgg=2tap%fBU!iwAu zHz6-K~Yj%(E<|^C5&)Y8TmQPtmnt*SA;+{AD=W?9~={+Vj{+m z7L#m5$E$G2n&x>9@wXb9Ux9HSH7CW3l-})|G{rl19zWIdb9d$boS{f(QB%UYsqqy< z&>?Qxl0o1r=Ka zSto;J{Gr!-?e#T2*ypt zAP_)x>Cgb`r0bg==(DsIU$~Wgi3!Q|h9gw=g5w+VCcKE>*OQ2!toaMKAjaLlrTm)!=BM}4H<&8}F2lTjPSd>driP;hbKt`4 zl|(JX>}^j;LQWzT4`EWH$k=7c#xsYIu}BwePDfx*$65bRz9FDJZ0ma5rC=02mc+`> z?}Z%<`Lqz&3K9CaC{u|Vem`jgtbeQ+xEw!0IgEvrmuUq(HT(WTKksF=UZt_SA`W6s ztb=Ny*+&_BnQ~eEMqXj@@v8pfJGe5myOsiGffe10|66~jy|{INh_lgGTEYv3!kI!V zEuC>s&Q8FeQ;G1OV_7>0*#wFD=X@GEj5b3-00143;3ya-V0x^G3=|uB&{@E%p$58E z%(gf>&W|vrFIozv9t<-!Ehuu-RLNw=m5r%uCD2Gegvrj=QBFC->Nw@&W zdf1H=vCUg0N8#!LiH@w;zK>U>{yWtgI6D_*uX4PVjMuTqz)GI5n| z43t1vgnhSaI>}=rKsIOKNka_H(kLSKWH!MJk1GG*Vm48mdH*e{{58;g)k4Ov(qMLb zzh_#^Sn)8l$}DXkc=y5r++MrxRJ&~bLVDN#SdODgOymCLpIH4TRI1&ugO$y1zhG)4 za5*d!Fwxd}g%y2Z1NVWr0+x_34;8szLJTh7RVKSyEV07aKEP_EJejFEZY{+3A>F1K z&2R9bj;$Tu(dBmLS-~B*XCJo91X?C#PY2x*E?}Py!BRpKfQe*K%`@3Q=l&EUV4NK z&hn9_=kl@?Z&W}&|9kQ7CG@J`-#SZ!Ve0UY@3~ht9*@e+)<-u|J>@Yq$Ma>!RlMv; zogsvx4p1tCpQW9kizl{%s<=ha+nItZvVsx3RH*|bHi}}T`UG04d)~8% z10{vXpmnc$CZ8)c5%*=^qsWL9vfTUv8Rm~EB(V~JNEzFSClg@dLcCR{aw-Cg*#jd! zdwAy_s+hYD(UsM$kW;HodR$LWTH%@X%UVul8&2=v_HpvvS?m;Zk;l$9kj&K|bMMG_ zJr21Rv@d97V#Ee?g(X-%Y?Eb{L$OlP0S8+dS;Eg6rV@=Ketajas)uRPKV*Z2#vjL{ zm#Xp&(2vA~s-H9e7WW)@*P+ol6_1DxD|a^f(_idRzd@IM@3MVLvJSTr z+`PFUH5*VLcmwYV&4-u>k%lnNT<7ahWN#d%(y!w&G7}`E%LP1hme9PC|9bOkO9PnL zKtqjsrX;GjPbgMXZ8~_+Ax<0+RVAT1ftAhVjx_%806@S7Mnz-=GIPq{ z4Vtl+lBs=$r5=`Bhc0uIFT`Yb#XKg(i$UAtVl*{s8XiiV1og%t?->(^sCrbXUsn?Iq|a>Xk=$WkCV8hTk@ z8{30AqIEVz>skdyiE-N*vT@-V2x|hDG-7I@pjc!L!hA@K`6}B#iU2p$2nxe6M0eT_ zBv~wA1tH;RQJ4gd{LpN}Y@!e}EFimq*}Rr1zkZyvJiWTgc{vt;zU;HKy}4JTm54uF zZSt1^BMiSny|RXoT;GF{9(sv76kpGxjc2Y)aEJ+Od+g;FaPP!8Lo7^yuP4ER@jk(7 zNBMDV6nf|Aze^}9VY%ZWlp#5{aGar})Q!nA-Zw4SyFRjMhrm%SG`3Ar$J}XVKG?|y z(n(b~feFtse1JEqb~Us~O^EAI7LVp$8Xbwk^@4T>kK6&g zFFgK~3WC^yG(I9y50!>xIiDl8e(x{(1d%=LDdmN7gbLlYH$tPZ2_}l5&n70@1V}7e ze5FF)!5Ai0-|Gnl1Id~l`T!5_=trALEn+jDJBPTf&f_0 zJ)s2cCHVLP+tmyRdPXC`c*Q=NUk4dsB_;UFstp12-!v3zsG(fL0zM8TbUP5w8vDN# zja+P17WQF5brqy0$MyrdxV^C`i-n$`3p2+T!mEGQgzhCrbPeuO{ygfZ#{0@ACD~|& z3CD29#Xj|MR!SQNSPICEWY*A3YGbPCY92p5(sHMwn#LREikqU24;B(FlX%zyxh);J ze(|{a)p_%3;mWtXC4$Nm6#LzHx#8s#HSRZ!SP@2{Jh*~>^t61g=u@WtiKC7~>;pW? z0+b4tWM1WW$Vz zIQ#(NK0K|h8Ac~ z0CeM0`h8!@3J+dWdnm^y!_G{hztJ&AB15Bd|A}<3JYwcOK(`qlldMq3fcY2CHyuTs z0z0BYcDX&bT%h)K&u_r-`S%|C<9jzQNBUa*9%)~9Uw2o?&!zfW6u!(jb|DW6#pa_vR-~QH_FKL}m3jr!p7t$zJ$|+lS24a(Y1(7Z&Ms{KP_<{eXm|<_?5; zH4K5TA448Jfc%^^P8$%wRrgNN5U35dNo&A0ttIgh1K5+yZ>+J6%6$dh*3^`E!3AbsV#39TOZ?F8ej&CW`n5Xv> z@O=*LglUV_b$2oUMY&vKHFXplb_IRYrEfu}oX~3aWyyC~jjUkkQF7DovZQqqBsQ(Ic~=Z$jL!#Rd+ zm=$YnL&F`zhGa4pSwNOh8{xhFp`_#pLk;iyx%=KzE1V?t)`8B%x8=JXq>x|mA)3N} zA_4KRdA5TqxP^L{%3DG)Rmk0o4(sNal(zd+G4*J@OSXlteLuc*D48rSk$E{}thU+y z4rsnUpKP|~aO^Q!P=Y!m$^UJ}J3G&&XUz6%IBR zXPTIwLa{KC%dF>cvS004(fKa=G zkFGRK2yAfbhx$fq_r!4pQ`S36%RO9jVhZ*zg_o7a80`E9zU_Sk@;v*zc=8fZl>!y+ zv@`mx_BMoNye=YXU(C353bv8aF54P~`!o+shmz#!!t&_8pJQiu7Zva z(;q7@*Jl^YIbsGB{0-mhhZPH!A_B8JBj73J(zQ9r= zjz=2jRSOI8gL%J;B^+3##o?sC+v8UTJxt6xDkdYQ&09?iO%&k9$-#fiw_RA$RM!%G zN;OChI9`rbgZLqv>HWQ_MK+8~!CwjDIty0o%CY0j*s{VNte&7L*VJL{-T^$;AfMw| z<=@?*Ok=v<3EGM$g5wVh*OX1a#v^Zf(o0{UqQSy7^tO60P|%fdcEOFfi%l;SO`C7lup z%^3q76Uq(AQSp5vg2F2MvpTT72|%Oy>P##np{o|zhYdA9?2l_U0VYW3;gXAlSvprI zcunZ%v3yM4qqKaa!>g`)t`zw2+anDrcE<&0>!6hCn%sBNod{;VtxASWox|Fqw+E~5lA4{msv#{fe&gjWYsUVcX)~)hMzGmi zTG9nhen$gLSKg3;6hZgHeIkXGYT_FmuVw!Q&(26UnaAuEe@NtNxt8!8n+Ei4#Z^8K zLt{GWIT^hjV7W*!F^a{HI~z!cVdjvu?^6IoGFIq(v|{NrIn4J{=+G|~L3S$`vl=`tzM zTwNUzPDcXgFit=HG>OguUl1FDvV}!#0N=C69k2ZMdns>qOZyn=-;U3dDfM4Ks47k3 zrg`f8bug2m=6Yf^o2DfQI(l-007G#jl3*?Ij2U%F8RK6*$%Jf+oeZ5#hcx z&K(AdZpW_%bJwT4-QRM##X(X{PIpTUz`<7woZXLkn7x}ov#?O0bx{}}p&=d4BtH)- zJ2^W&BbKNREFJH9fLt)_vROd0C$C8-y2lxvV0a0u2AZ6;*fet0sGK9f~M9^YSaGN11 zrUkidj7dUh*HO|Vy>jr}K-YjH`?s5nVEzb(mj0G~mmLVJ0}^Ctq$YCC?bDKZz|AbR z6(Wz`%3|(`OpeL8k18++OEFG_?hc|patNCdS*BdQ%}if!oIY2S4Z;nH0v#zHDij&w z7|H@O(h^3=7e$#cIkKVx5z>pg7$6CsFFmrmg~z5c+7<6@%4eGOprDYPh0?XI zix3;o%$;kR-v%Ac#O>mKd`h_)O~{lRE!!`|P)jRkt#myoOx5QVc?)r!^*)Y*)S06j zSfGyf!o0jiyK>1}*`=X(i16OY=yPgj$K`yM?(u#cBZwj3Va@}Ynzqs$Ca-qjq;=Qi&kWEV2@Y$85yIW7E#}2 zcp?h$?HuXKOEhU`bWcXoa`xE2i5Ykl?*4QJnuGh97z!9F#2LgSO_F&p;faWzv!{g51X` zOqItah1$d^@#5bpgQd^1vb2g1wo@L%k+p8WipV>$+NR6EsebsBVzQjF_!-Gb?!K?fZEdD$Jd5=fVeRMLTN(okN8Rr zhISuqLJ+Bo7d}jdZ*`*3??t|<$Qp`8`Fiy}D~>Ba%d&kRc~BfWZf*Fj#DkSdWxt2_ zz~y`0Cb?$!ZVJ*5v@2yU!>wWUz-4>vT`I&n_>O>WijStnYr8CbWc+^bNV7${P_NM>*sq|3pxY3m{2i6%X`BU&Do;86H8Wp* z@Z3+M74_Dt2WVql26OBoHMQ+tO6+}^Vce}<^?gstT=>Ghnv0%x;$D|pIdkq3zfO@v z+#N0}h0F|s*4horCw#=WQi@-;!Bn98JEd!gz3W9le$`KvUf+$p0 zIsCop&zGBnft8AW5j)9Gt&wXyX*!lQSZO=Yxlku2Di=qjcG(wgA_>}`L2Q`31MFd` z7One$v7Mh83bHic-8&ERziqQ))&Z+`TMrz*=+O+7a>TVZb8%at!bNx6T|WL&&<>!i zn&&+gJS%xj@)2#6;RCs(33b2A*S<*2ooh}|e7f>gL-A1kFpVEgXC#(XK`W?+L` zJ_Q%Cj$F99FnM5S$b)};8qMO9C}Lwz_zwqu?w~GQr)9f(Z3lFkcQ{!qp z9h!KsQKxim+6Xk${a88CnO&?&X>^dIv4fwxY}8!@J3%I(uJDH%~r3#G%IV zO=#vCb0@=4)1nz9gjYPJ<_d@wc_$?VaQ1VyJT(kd`;3%BRWWI_O@hr#ke60OBj;G2 z1~FY|N`+i%_CYNvOzJaQTl7X9?{e+yU^6eupL8Ofy8rUM6=#jwME721DzGy1ahy6% zNg|(AdFJRx*b5QKZF!Q2cyn@$z<(WqQ_y zzN(QsD!uQ_QQNSlz)qP}+MHcley0g`#JhOfl1FOj%<7n?N>$D*T| zuCXpgg^>egtn>A*h`^FCE8RYB*H!;Gc=EyqyHkba?R>61_aq~hefZH?sgrjiV++$Q zK|@%ws>S&F6@ufq?#`ndmL+PQT1kZBEi%R7so{L1hhMiF+!)3R=;_?E9%&fydLOW6 zL%cisrS)#@TuoEdi;(!WuUoi@peAq~h3AC>vNoio?l(`>c!6!wE1o}!j{26?1hIEU z^t#bN`7ISTkQ8|;Um|Py7*j~Upi~sJJvz{RWWW(65LA3YY0Ta-nC0I)m?d%#4vNPr z*uoQNN4kj+luoKptKPk# z8u_C%58e$*P&p8X;Gs46;44=VN;FEP@`g%K+b2~wg5Zbx>(_P(kI?0l*$dulU7D1D z7Aa=W2C3%nlibcfay=pnA5ca#c|OP6l@TqYT@!|O2sV@UYo0k=J^)twv_Tz$p`EX5 zN~dx|K5Q#(G}W!CUm_lrTN+y2TCauv$8{3S^{AvS>)@klMzK30}*PL`cB%H{ofs3=y6S3FQ0J9IZ9srX-)L?0&{4?a& zkxQ|==)hPRUyF}XXc+xKYQImL$8)|SO?s6*22s+wgw)mcADE4UvOh+5T@Yv4NQ-`> zWDgZ^U^Ely?OrrD~h}5IA^)-u^`CK6v-? z^h+-ys`aId61i>Aq}D$g;lTlYjPe)bb1W-?L(-w137L}#ulI2)&nKa6CVKz|?8jG*T_goyRYjH%lGrA$ZCTu=&u3M8$KY!{ zY&a+w*t42rP95~sfeaKjvO+ifABa!gaL2KmFiF1JWqrQHk5XJHXaaP^++(5;kFh!s z5xn#?U2_4T9B6w5odqUCxRUzkVWnB?#xpnR<#l&s1|^J}Tl2l)D@p{jDyUTHpo4b= z`Kh|7(cv1fF?4yy;$c%(m2@XzdwvhJmaaUOreYv}{#p@C0qk}a`Nn{hMIMlRZ#Fk*i_3mPYsL5 z-ok5sewslW$f_qK@UdtVPStdiRN53PL`fljmmx<(L6s}K+^I4TY*~HvwR{cb%WnSl zIe*QuSR8o(48-JN#zqjmp`>OT3Qda-V=U#Cdw?T14Szvn=HuzMq9T}5=ZURN61Qkl z-j4o6LHAARZRM=did zS;7*%fb#na&Sf$N((RrNMlYg-LhW3#`Q+95KlGXd*)J9-42|}0u6~QOc5#pk_q%jw zl*L#q8dEZu1}F-Ow4El^52Ai=bD!XFisE>Wm*S+Vi_A>!FoeZ(&Z^H}bQR0aH(sh` zex@ChTGN+DY)67U{T^bA7zUpyvjwb?=-8PlgwK;ZoHxDClP38 z%p;3qAwP!5U*mP96$7e?iZZVMF_<#VV!GQ7)3rBek(H{RJ5mZf&i4Es#0@=WngY=jIR>>un=goL7V--x zJWK7vPs}48NpdBa!kSBee|WYR22rOTXqQZ5%ObxtxvcWJXQ?-j$?4NfUek z8c5A(bp;OY1Hk>r2Geyo4ohu0wwgUrvLad-2Ss#eVOQ$H*o3L|Mlw8l!;vaYb#mGH zD2OMEI_L(_{B{Kj_(y5AEauDo!U2lrC?m`9IcbbOe#-E!QdQ2?%&F`@mhK-A@w zr#Vl+|Bz#CU(3vq+gMhrwyHk6d9V4Kd=K!oadtTBC9bqV8cGN}k~z@6W)WCnbACp1 zr9WR^xHFF8n#>Ku&*xF0z@4NDL|}UFqtfn!-t2aszmp>Ti2QO=N_B9|vj>|N4GZHv zuQ!zFG&gr9T27~T5E1O)E$}p|Z@^*AAn)vcu{lg>(9!Pu{Nh&5jOnQ`s5YwZn87*Q zWTum@X4h~rJm-VWNZ-zxQa;ghymA#ZbKz6J5Ounzbb6@a1EtH3c=uWWd}@VjXE|IR z*m^Q+xp9wakj9lr`<(fS|B|?fLcYx@8%p4KL1&d9wQY#LHSV&OYd-{E7lwsB$E5d{(|Olyre|fAOH3m9fsWp0(rqVAMvgFL8F!7uvl59jt*K z$AZ9dY{b&-?hvp)mpV86`afR6f5uU;*r0at007b24Js;psJ97#S~#H)l)pl(Y#Z8N zK~ZN0{jWf6d+?8d?uYcxBa%o3$iI&qqNV>4+GA0n{vzY?aQ_I4Np0``B1t8C{~*AM z-;gN(nuY=URt1x7W#u>fuC!!|HdtT_qf^#4FE9b z1po;D<-s19t&aZhKD|0Zs63s2_QllU{l!Y(FfZGGu(dio@;{ymPfUn+p}zUV2>=lN zi_66CA5HrDf2_*18W%yl#k1fo6DIwarW07Np82nZ=z2n^-e>^WKbjOgT95n}TY1AU z;sD^WSW+-v1M*+1U$b%yTHm-r-Y${E|Kg%Z0D#xyN&aY({qe8Nv=qhREz&SD|67ys zJ2<+5;jfAI211Bq@KOWAU-EWga>d*?a^1HB@^A8)3II5|f&@oV1_t(zRh+la##>#q Julmoo{{zeC@tgnv diff --git a/packages/dynmacroarray.zip b/packages/dynmacroarray.zip index 64b448a8ee6c17f9f9bae7fca11520101652934d..6f7f0444f2b783f547644fff72fe22a2dd0b8fc1 100644 GIT binary patch delta 7523 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 AZvX%Q delta 7666 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 OG@pkF@tE_^?*9T0Rnaj3 diff --git a/packages/gsm.md b/packages/gsm.md index 85736d7..6d904ef 100644 --- a/packages/gsm.md +++ b/packages/gsm.md @@ -8,7 +8,7 @@ --- -# The GSM package [ver. 0.20] ############################################### +# The GSM package [ver. 0.20.1] ############################################### The **GSM** (a.k.a. *Generate Secure Macros*) package allows to create secured macros stored in SAS Proc FCMP functions. @@ -91,10 +91,10 @@ Package contains: Required SAS Components: `Base SAS Software` -* SAS package generated by generatePackage, version 20220830 * +* SAS package generated by generatePackage, version 20221112 * The SHA256 hash digest for package GSM: -`2AEBC150FBA99A4AAB0265A21C57E89200BFD96B633B898F32743D1C8831A159` +`5D1925970C9590CD195C15B8641B01D7857E3B2546323DC77D09154BCCA40922` ## >>> `%GSM()` macro: <<< ####################### diff --git a/packages/gsm.zip b/packages/gsm.zip index df3bf538e355c72124d640135a3b5fe9ec8bdbfc..41703e64c23b80cc493262e91b3e3f3ab0daa306 100644 GIT binary patch delta 8348 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 diff --git a/packages/macroarray.md b/packages/macroarray.md index 5b60b44..5ceb5c1 100644 --- a/packages/macroarray.md +++ b/packages/macroarray.md @@ -19,7 +19,7 @@ --- -# The macroArray package [ver. 1.0] ############################################### +# The macroArray package [ver. 1.0.1] ############################################### The **macroArray** package implements a macro array facility: - `%array()`, @@ -75,10 +75,10 @@ Package contains: Required SAS Components: *Base SAS Software* -*SAS package generated by generatePackage, version 20220830.* +*SAS package generated by generatePackage, version 20221112.* The SHA256 hash digest for package macroArray: -`ED12BC96F8A4E9E7C4D651EC1E15479DB9B55D98B274B63C507ED842081F7AB7` +`371B92A5ABBE82C53F7D63BC5C0D1EBD4695603D3894D8A9A5D5777D1AB59B30` --- # Content description ############################################################################################ diff --git a/packages/macroarray.zip b/packages/macroarray.zip index 54dc081dcf419362fd1a126a217793bd3c82aa97..01fd3ef28cdac1c1dfde75fc3e2a7a5656728e37 100644 GIT binary patch delta 9722 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 N!#;Xg+m3&*{|Emj<&XdX delta 9730 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 ############################################### +# The SQLinDS package [ver. 2.2.1] ############################################### The **SQLinDS** package is an implementation of the *macro-function-sandwich* concept introduced in the @@ -46,10 +46,10 @@ Package contains: Required SAS Components: *Base SAS Software* -*SAS package generated by generatePackage, version 20220830* +*SAS package generated by generatePackage, version 20221112* The SHA256 hash digest for package SQLinDS: -`96D0EFE02DF1AE0D7D875A10CAF7EF63CDEF85DD0CF9418934BEFAF0C067D453` +`A070214517CC36590083FCF9D5F488AC6E746793E94B9AA55D09A419CF291B5B` --- # Content description ############################################################################################ diff --git a/packages/sqlinds.zip b/packages/sqlinds.zip index dbf6341d691feed106185a6891ff8e0208d61417..e023a23b748724454e57689e5d394e6d4bb80e16 100644 GIT binary patch delta 8638 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 delta 8659 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 R40d3FR&p{R;IaRu@n8QI4

o*=du@H(;F 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 diff --git a/SPF/Macros/extendpackagesfileref.sas b/SPF/Macros/extendpackagesfileref.sas index 258f3f2..bdee04d 100644 --- a/SPF/Macros/extendpackagesfileref.sas +++ b/SPF/Macros/extendpackagesfileref.sas @@ -6,7 +6,7 @@ when empty the "packages" value is used */ )/secure /*** HELP END ***/ -des = 'Macro to list directories pointed by "packages" fileref, version 20221107. Run %extendPackagesFileref(HELP) for help info.' +des = 'Macro to list directories pointed by "packages" fileref, version 20221112. Run %extendPackagesFileref(HELP) for help info.' ; %if %QUPCASE(&packages.) = HELP %then @@ -22,7 +22,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20221107 %put ### This is short help information for the `extendPackagesFileref` macro #; %put #-----------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to list directories pointed by 'packages' fileref, version `20221107` #; + %put # Macro to list directories pointed by 'packages' fileref, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/Macros/generatepackage.sas b/SPF/Macros/generatepackage.sas index 88649da..0db9ebb 100644 --- a/SPF/Macros/generatepackage.sas +++ b/SPF/Macros/generatepackage.sas @@ -23,7 +23,7 @@ default value 1 means "delete tests work" */ )/secure minoperator /*** HELP END ***/ -des = 'Macro to generate SAS packages, version 20221107. Run %generatePackage() for help info.' +des = 'Macro to generate SAS packages, version 20221112. Run %generatePackage() for help info.' ; %if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then %do; @@ -38,7 +38,7 @@ des = 'Macro to generate SAS packages, version 20221107. Run %generatePackage() %put ### This is short help information for the `generatePackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to generate SAS packages, version `20221107` #; + %put # Macro to generate SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -133,16 +133,19 @@ filename &_LIC_. "&filesLocation./license.sas" lrecl = 1024; infile &_DESCR_.; input; + %local metaExtStr; /* metadata Extraction String; */ + %let metaExtStr=kscanx(_INFILE_, 2, ":"); + select( strip(upcase(kscanx(_INFILE_, 1, ":"))) ); - when("PACKAGE") call symputX("packageName", kscanx(_INFILE_, 2, ":"),"L"); - when("VERSION") call symputX("packageVersion", kscanx(_INFILE_, 2, ":"),"L"); - when("AUTHOR") call symputX("packageAuthor", kscanx(_INFILE_, 2, ":"),"L"); - when("MAINTAINER") call symputX("packageMaintainer", kscanx(_INFILE_, 2, ":"),"L"); - when("TITLE") call symputX("packageTitle", kscanx(_INFILE_, 2, ":"),"L"); - when("ENCODING") call symputX("packageEncoding", kscanx(_INFILE_, 2, ":"),"L"); - when("LICENSE") call symputX("packageLicense", kscanx(_INFILE_, 2, ":"),"L"); - when("REQUIRED") call symputX("packageRequired", kscanx(_INFILE_, 2, ":"),"L"); - when("REQPACKAGES") call symputX("packageReqPackages", kscanx(_INFILE_, 2, ":"),"L"); + when("PACKAGE") call symputX("packageName", &metaExtStr., "L"); + when("VERSION") call symputX("packageVersion", &metaExtStr., "L"); + when("AUTHOR") call symputX("packageAuthor", &metaExtStr., "L"); + when("MAINTAINER") call symputX("packageMaintainer", &metaExtStr., "L"); + when("TITLE") call symputX("packageTitle", &metaExtStr., "L"); + when("ENCODING") call symputX("packageEncoding", &metaExtStr., "L"); + when("LICENSE") call symputX("packageLicense", &metaExtStr., "L"); + when("REQUIRED") call symputX("packageRequired", &metaExtStr., "L"); + when("REQPACKAGES") call symputX("packageReqPackages", &metaExtStr., "L"); /* stop at the beginning of description */ when("DESCRIPTION START") stop; @@ -163,13 +166,13 @@ filename &_LIC_. "&filesLocation./license.sas" lrecl = 1024; %do; %put ERROR: At least one of descriptors is missing!; %put ERROR- They are required to create a package.; - %put ERROR- &=packageName.; - %put ERROR- &=packageTitle.; - %put ERROR- &=packageVersion.; - %put ERROR- &=packageAuthor.; - %put ERROR- &=packageMaintainer.; - %put ERROR- &=packageEncoding.; - %put ERROR- &=packageLicense.; + %put ERROR- packageName=%superq(packageName); + %put ERROR- packageTitle=%superq(packageTitle); + %put ERROR- packageVersion=%superq(packageVersion); + %put ERROR- packageAuthor=%superq(packageAuthor); + %put ERROR- packageMaintainer=%superq(packageMaintainer); + %put ERROR- packageEncoding=%superq(packageEncoding); + %put ERROR- packageLicense=%superq(packageLicense); %put ERROR- ; %put ERROR- Aborting.; %abort; @@ -498,6 +501,7 @@ DESCRIPTION END: /* collect the data */ data &filesWithCodes.; + putlog "NOTE- "; putlog "NOTE: Generating content dataset: &filesWithCodes.."; putlog "NOTE- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"; putlog "NOTE- "; @@ -511,7 +515,8 @@ data &filesWithCodes.; folderid=dopen(folderRef); do i=1 to dnum(folderId); drop i; - folder = dread(folderId, i); + folder = dread(folderId, i); + if folder NE lowcase(folder) then do; put 'ERROR: Folder should be named ONLY with low case letters.'; @@ -529,6 +534,27 @@ data &filesWithCodes.; fileId = dopen(fileRef); file = ' '; + + /* ignore folders which name starts with ! */ + if fileId AND "!" =: folder then + do; + put "INFO: Folder " folder "name starts with ! and will be ignored. " / + " No content from it will be used to generate the package." / " "; + goto ignoreFolder; + end; + + /* ignore unknown types for folders */ + if fileId AND not (upcase(type) in: + ('LIBNAME' 'MACRO' /*'MACROS'*/ 'DATA' 'FUNCTION' /*'FUNCTIONS'*/ 'FORMAT' /*'FORMATS'*/ 'IMLMODULE' 'PROTO' 'EXEC' 'CLEAN' 'LAZYDATA' 'TEST')) + then + do; + put "WARNING: Type " type 'is not yet supported.' / + "WARNING- Folder " folder " will be ignored. " / + "WARNING- No content from it will be used to generate the package." / " "; + goto ignoreFolder; + end; + + /* if it is a directory then read its content */ if fileId then do j = 1 to dnum(fileId); drop j; file = dread(fileId, j); @@ -551,6 +577,8 @@ data &filesWithCodes.; "WARNING- "; end; end; + + ignoreFolder: ; rc = dclose(fileId); rc = filename(fileRef); end; @@ -563,6 +591,7 @@ data &filesWithCodes.; put 'ERROR: Aborting due to previous errors.'; abort; end; + put " "; stop; run; @@ -637,7 +666,7 @@ data _null_; put "ERROR: There are " e "EXECs files and " c "CLEANs files!" / "ERROR- Each EXEC file should have CLEAN file counterpart and vice versa." / 'ERROR- Please create appropriate files and make your package a "role model".' / - 'ERROR: Aborting package generation!' ; + 'ERROR: [&sysmacroname.] Aborting package generation!' ; abort; end; end; @@ -669,6 +698,7 @@ options ¬esSourceOptions.; /* packages description */ +%put NOTE-; %put NOTE: Preparing description file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -680,6 +710,7 @@ data _null_; run; /* package license */ +%put NOTE-; %put NOTE: Preparing license file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -698,8 +729,10 @@ run; %let packageLicense = MIT; data _null_; file &zipReferrence.(license.sas) encoding = &packageEncoding.; + length packageAuthor $ 1024; + packageAuthor = symget('packageAuthor'); put " "; - put " Copyright (c) %sysfunc(today(),year4.) &packageAuthor. "; + put " Copyright (c) since %sysfunc(today(),year4.) " packageAuthor ; put " "; put " Permission is hereby granted, free of charge, to any person obtaining a copy "; put ' of this software and associated documentation files (the "Software"), to deal '; @@ -723,6 +756,7 @@ run; %end; /* package metadata */ +%put NOTE-; %put NOTE: Preparing metadata file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -735,24 +769,26 @@ data _null_; end; file &zipReferrence.(packagemetadata.sas) encoding = &packageEncoding.; - put ' data _null_; '; /* simple "%local" returns error while loading package */ - put ' call symputX("packageName", " ", "L");'; - put ' call symputX("packageVersion", " ", "L");'; - put ' call symputX("packageTitle", " ", "L");'; - put ' call symputX("packageAuthor", " ", "L");'; - put ' call symputX("packageMaintainer", " ", "L");'; - put ' call symputX("packageEncoding", " ", "L");'; - put ' call symputX("packageLicense", " ", "L");'; - put ' run; '; + length packageName $ 32 packageVersion $ 24 + packageTitle packageAuthor packageMaintainer $ 2048 + packageEncoding $ 8 packageLicense $ 128; + packageName = quote(strip(symget('packageName')),'"'); + packageVersion = quote(strip(symget('packageVersion')),'"'); + packageTitle = quote(strip(symget('packageTitle')),'"'); + packageAuthor = quote(strip(symget('packageAuthor')),'"'); + packageMaintainer = quote(strip(symget('packageMaintainer')),'"'); + packageEncoding = quote(strip(symget('packageEncoding')),'"'); + packageLicense = quote(strip(symget('packageLicense')),'"'); - put ' %let packageName =' "&packageName.;"; - put ' %let packageVersion =' "&packageVersion.;"; - put ' %let packageTitle =' "&packageTitle.;"; - put ' %let packageAuthor =' "&packageAuthor.;"; - put ' %let packageMaintainer =' "&packageMaintainer.;"; - put ' %let packageEncoding =' "&packageEncoding.;"; - put ' %let packageLicense =' "&packageLicense.;"; - put ' ; '; + put ' data _null_; '; /* simple "%local" returns error while loading package */ + put ' call symputX("packageName", ' packageName ', "L");'; + put ' call symputX("packageVersion", ' packageVersion ', "L");'; + put ' call symputX("packageTitle", ' packageTitle ', "L");'; + put ' call symputX("packageAuthor", ' packageAuthor ', "L");'; + put ' call symputX("packageMaintainer", ' packageMaintainer ', "L");'; + put ' call symputX("packageEncoding", ' packageEncoding ', "L");'; + put ' call symputX("packageLicense", ' packageLicense ', "L");'; + put ' run; '; stop; run; @@ -771,6 +807,7 @@ run; %ICEloadpackage(sqlinds) */ +%put NOTE-; %put NOTE: Preparing iceloadpackage file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -833,6 +870,7 @@ run; /* loading package files */ +%put NOTE-; %put NOTE: Preparing load file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -844,10 +882,11 @@ data _null_; put "filename &_PackageFileref_. list;" /; put ' %put NOTE- ;'; put ' %put NOTE: ' @; put "Loading package &packageName., version &packageVersion., license &packageLicense.; "; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; + + put ' %put NOTE: ' @; put '*** %superq(packageTitle) ***; '; put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; + put ' %put NOTE- ' @; put 'Author(s): %superq(packageAuthor); '; + put ' %put NOTE- ' @; put 'Maintainer(s): %superq(packageMaintainer); '; put ' %put NOTE- ;'; put ' %put NOTE- Run %nrstr(%%)helpPackage(' "&packageName." ') for the description;'; put ' %put NOTE- ;'; @@ -936,7 +975,7 @@ data _null_; packageReqPackages = lowcase(symget('packageReqPackages')); /* try to load required packages */ put 'data _null_ ; '; - put ' length req name $ 64 vers verR 8 SYSloadedPackages $ 32767; '; + put ' length req name $ 64 vers verR $ 24 versN verRN 8 SYSloadedPackages $ 32767; '; put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '; put ' do; '; put ' do until(EOF); '; @@ -953,7 +992,7 @@ data _null_; put ' do _N_ = 1 to countw(SYSloadedPackages); '; put ' req = kscanx(SYSloadedPackages, _N_, " "); '; put ' name = lowcase(strip(kscanx(req, 1, "("))); '; - put ' vers = input(compress(kscanx(req,-1, "("), ".", "KD"),best32.); '; + put ' vers = compress(kscanx(req,-1, "("), ".", "KD"); '; put ' _RC_ = LP.add(); '; put ' end; '; /* check if elements of the framework are available */ @@ -963,11 +1002,21 @@ data _null_; put ' do req = ' / packageReqPackages / ' ; '; /* put ' req = compress(req, "(.)", "KDF"); ';*/ put ' name = lowcase(strip(kscanx(req, 1, "("))); '; - put ' verR = input(compress(kscanx(req,-1, "("), ".", "KD"),best32.); vers = .; '; + put ' verR = compress(kscanx(req,-1, "("), ".", "KD"); vers = ""; '; put ' LP_find = LP.find(); '; - put ' if (LP_find ne 0) or (LP_find = 0 and . < vers < verR) then '; + + /* convert major.minor.patch to number*/ + put ' array V verR vers ; '; + put ' array VN verRN versN; '; + put ' do over V; '; + put ' VN = input("0"!!scan(V,1,".","M"),?? best.)*1e8 '; + put ' + input("0"!!scan(V,2,".","M"),?? best.)*1e4 '; + put ' + input("0"!!scan(V,3,".","M"),?? best.)*1e0; '; + put ' end; '; + + put ' if (LP_find ne 0) or (LP_find = 0 and . < versN < verRN) then '; put ' do; '; - put ' put "NOTE: Trying to load required SAS package " req; '; + put ' put "NOTE: Trying to load required SAS package: " req; '; put ' if LoadPackageExist then '; put ' call execute(cats(''%nrstr(%loadPackage('', name, ", requiredVersion = ", verR, "))")); '; put ' else if ICELoadPackageExist then '; @@ -979,7 +1028,7 @@ data _null_; /* test if required packages are loaded */ put 'data _null_ ; '; - put ' length req name $ 64 SYSloadedPackages $ 32767; '; + put ' length req name $ 64 vers verR $ 24 versN verRN 8 SYSloadedPackages $ 32767; '; put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '; put ' do; '; put ' do until(EOF); '; @@ -995,7 +1044,7 @@ data _null_; put ' do _N_ = 1 to countw(SYSloadedPackages); '; put ' req = kscanx(SYSloadedPackages, _N_, " "); '; put ' name = lowcase(strip(kscanx(req, 1, "("))); '; - put ' vers = input(compress(kscanx(req,-1, "("), ".", "KD"), best32.); '; + put ' vers = compress(kscanx(req,-1, "("), ".", "KD"); '; put ' _RC_ = LP.add(); '; put ' end; '; @@ -1003,12 +1052,22 @@ data _null_; put ' do req = ' / packageReqPackages / ' ; '; /* put ' req = compress(req, "(.)", "KDF"); ';*/ put ' name = lowcase(strip(kscanx(req, 1, "("))); '; - put ' verR = input(compress(kscanx(req,-1, "("), ".", "KD"),best32.); vers = .; '; + put ' verR = compress(kscanx(req,-1, "("), ".", "KD"); vers = " "; '; put ' LP_find = LP.find(); '; - put ' if (LP_find ne 0) or (LP_find = 0 and . < vers < verR) then '; + + /* convert major.minor.patch to number*/ + put ' array V verR vers ; '; + put ' array VN verRN versN; '; + put ' do over V; '; + put ' VN = input("0"!!scan(V,1,".","M"),?? best.)*1e8 '; + put ' + input("0"!!scan(V,2,".","M"),?? best.)*1e4 '; + put ' + input("0"!!scan(V,3,".","M"),?? best.)*1e0; '; + put ' end; '; + + put ' if (LP_find ne 0) or (LP_find = 0 and . < versN < verRN) then '; put ' do; '; put ' missingPackagr = 1; '; - put ' put "ERROR: SAS package " req "is missing! Download it and" ; '; + put ' put "ERROR: SAS package: " req "is missing! Download it and" ; '; put ' put ''ERROR- use %loadPackage('' name ", requiredVersion = " verR ") to load it." ;'; put ' end ; '; put ' end ; '; @@ -1020,7 +1079,7 @@ data _null_; put ' call symputX("packageRequiredErrors", 1, "L"); '; put ' do req = ' / packageReqPackages / ' ; '; put ' name = lowcase(strip(kscanx(req, 1, "("))); '; - put ' vers = input(compress(kscanx(req,-1, "("), ".", "KD"), best32.); '; + put ' vers = compress(kscanx(req,-1, "("), ".", "KD"); '; put ' put "ERROR: SAS package " req "is missing! Download/install it and" ; '; put ' put ''ERROR- use %loadPackage('' name ", requiredVersion = " vers ") to load it." ; '; put ' end ; '; @@ -1188,6 +1247,7 @@ data _null_; run; /* to load lazydata */ +%put NOTE-; %put NOTE: Preparing "lazydata" file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -1199,10 +1259,11 @@ data _null_; put "filename &_PackageFileref_. list;" /; put ' %put NOTE- ;'; put ' %put NOTE: ' @; put "Data for package &packageName., version &packageVersion., license &packageLicense.; "; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; + + put ' %put NOTE: ' @; put '*** %superq(packageTitle) ***; '; put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; + put ' %put NOTE- ' @; put 'Author(s): %superq(packageAuthor); '; + put ' %put NOTE- ' @; put 'Maintainer(s): %superq(packageMaintainer); '; put ' %put NOTE- ;'; put ' %put NOTE- Write %nrstr(%%)helpPackage(' "&packageName." ') for the description;'; put ' %put NOTE- ;'; @@ -1245,6 +1306,7 @@ run; /* unloading package objects */ +%put NOTE-; %put NOTE: Preparing unload file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -1489,6 +1551,7 @@ data _null_; run; /* package preview, i.e. print out all content of the package files into the log */ +%put NOTE-; %put NOTE: Preparing preview file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -1502,10 +1565,11 @@ data _null_; put "filename &_PackageFileref_. list;" /; put ' %put NOTE- ;'; put ' %put NOTE: '"Preview of the &packageName. package, version &packageVersion., license &packageLicense.;"; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; + + put ' %put NOTE: ' @; put '*** %superq(packageTitle) ***; '; put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; + put ' %put NOTE- ' @; put 'Author(s): %superq(packageAuthor); '; + put ' %put NOTE- ' @; put 'Maintainer(s): %superq(packageMaintainer); '; put ' %put NOTE- ;'; put ' %put NOTE- *** START ***;' /; @@ -1603,6 +1667,7 @@ data _null_; run; /* package help */ +%put NOTE-; %put NOTE: Preparing help file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -1616,10 +1681,11 @@ data _null_; put "filename &_PackageFileref_. list;" /; put ' %put NOTE- ;'; put ' %put NOTE: '"Help for package &packageName., version &packageVersion., license &packageLicense.;"; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; + + put ' %put NOTE: ' @; put '*** %superq(packageTitle) ***; '; put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; + put ' %put NOTE- ' @; put 'Author(s): %superq(packageAuthor); '; + put ' %put NOTE- ' @; put 'Maintainer(s): %superq(packageMaintainer); '; put ' %put NOTE- ;'; put ' %put NOTE- *** START ***;' /; @@ -1676,7 +1742,7 @@ data _null_; put ' end ; '; %end; - put 'put "***"; put "* SAS package generated by generatePackage, version 20221107 *"; put "***";'; + put 'put "***"; put "* SAS package generated by generatePackage, version 20221112 *"; put "***";'; put 'run; ' /; @@ -1817,7 +1883,7 @@ data _null_; call execute(' if ex then put "File " pathname "copied into the package with return code: " rc "(0 = success)";'); call execute(' else do;'); - call execute(' put "ERROR: File " pathname "NOT copied into the package!" ;'); + call execute(' put "ERROR: [&sysmacroname.] File " pathname "NOT copied into the package!" ;'); call execute(' call symputX("createPackageContentStatus",1,"L");'); call execute(' end;'); @@ -1833,7 +1899,7 @@ data _null_; call execute(' if 18 <= lengthn(_endhelpline_) AND _endhelpline_ =: "/*** DNE PLEH ***/" then test + (-1); '); /* *** HELP END *** */ call execute(' if (test not in (.,0,1)) or (EOF and test) then '); call execute(' do; '); - call execute(' put "ERROR: Unmatched or nested HELP tags in ' !! catx('/', folder, file) !! '! Line: " _N_; '); + call execute(' put "ERROR: [&sysmacroname.] Unmatched or nested HELP tags in ' !! catx('/', folder, file) !! '! Line: " _N_; '); call execute(' put "ERROR- Aborting! "; '); call execute(' call symputX("createPackageContentStatus",1,"L"); '); call execute(' abort; '); @@ -1863,7 +1929,7 @@ data _null_; call execute(' ex = fexist("_SPFOUT_");'); call execute(' if not ex then do;'); - call execute(' put "ERROR: File ' !! strip(drivFile) !! '.sas DOES NOT EXIST in the package!" ;'); + call execute(' put "ERROR: [&sysmacroname.] File ' !! strip(drivFile) !! '.sas DOES NOT EXIST in the package!" ;'); call execute(' call symputX("createPackageContentStatus",1,"L"); '); call execute(' end;'); @@ -1920,6 +1986,7 @@ filename &zipReferrence. clear; /* verify if there were errors while package content creation */ %if %bquote(&createPackageContentStatus.) ne 0 %then %do; + %put ERROR- ** [&sysmacroname.] **; %put ERROR: ** ERRORS IN PACKAGE CONTENT CREATION! **; %put ERROR- ** NO TESTING WILL BE EXECUTED. **; %GOTO NOTESTING; @@ -2017,7 +2084,7 @@ run; %end; %else %do; - %put ERROR: Provided location of the SAS binary file does not exist!; + %put ERROR: [&sysmacroname.] Provided location of the SAS binary file does not exist!; %put ERROR- The directory was: &SASEXE.; %put ERROR- Testing would not be executed.; filename sasroot; @@ -2030,7 +2097,7 @@ run; 0 = %sysfunc(fileexist(&SASEXE..exe)) /* WINDOWS */ %then %do; - %put ERROR: Provided location of the SAS binary file does not contain SAS file!; + %put ERROR: [&sysmacroname.] Provided location of the SAS binary file does not contain SAS file!; %put ERROR- The file searched was: &SASEXE.; %put ERROR- Testing would not be executed.; %GOTO NOTESTING; @@ -2064,7 +2131,7 @@ run; %end; %else %do; - %put ERROR: Provided SAS config file does not exist!; + %put ERROR: [&sysmacroname.] Provided SAS config file does not exist!; %put ERROR- The file was: &SASCFGFILE.; %put ERROR- Testing would not be executed.; %GOTO NOTESTING; @@ -2203,6 +2270,10 @@ data _null_; put '%unloadPackage'"(&packageName.,"; put " path=&filesLocation.) " /; + put "filename packages '&filesLocation.';" / + '%listPackages() ' /; + + put "proc printto"; put "; run;"; diff --git a/SPF/Macros/helppackage.sas b/SPF/Macros/helppackage.sas index a25cda7..938c1ec 100644 --- a/SPF/Macros/helppackage.sas +++ b/SPF/Macros/helppackage.sas @@ -24,7 +24,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to get help about SAS package, version 20221107. Run %helpPackage() for help info.' +des = 'Macro to get help about SAS package, version 20221112. Run %helpPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -39,7 +39,7 @@ des = 'Macro to get help about SAS package, version 20221107. Run %helpPackage() %put ### This is short help information for the `helpPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to get help about SAS packages, version `20221107` #; + %put # Macro to get help about SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -169,7 +169,7 @@ TODO: - add MD5(&packageName.) value hash instead "package" word in filenames [DONE] */ -/* Macros to install SAS packages, version 20221107 */ +/* Macros to install SAS packages, version 20221112 */ /* A SAS package is a zip file containing a group of files with SAS code (macros, functions, data steps generating data, etc.) wrapped up together and %INCLUDEed by diff --git a/SPF/Macros/installpackage.sas b/SPF/Macros/installpackage.sas index 854dbd4..afece0e 100644 --- a/SPF/Macros/installpackage.sas +++ b/SPF/Macros/installpackage.sas @@ -14,7 +14,7 @@ /secure minoperator /*** HELP END ***/ -des = 'Macro to install SAS package, version 20221107. Run %%installPackage() for help info.' +des = 'Macro to install SAS package, version 20221112. Run %%installPackage() for help info.' ; %if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then %do; @@ -29,7 +29,7 @@ des = 'Macro to install SAS package, version 20221107. Run %%installPackage() fo %put ### This is short help information for the `installPackage` macro #; %put #--------------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to install SAS packages, version `20221107` #; + %put # Macro to install SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -458,7 +458,7 @@ des = 'Macro to install SAS package, version 20221107. Run %%installPackage() fo /* Macro to list SAS packages in packages folder. - Version 20221107 + Version 20221112 A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating diff --git a/SPF/Macros/listpackages.sas b/SPF/Macros/listpackages.sas index a6c2ffd..471a78b 100644 --- a/SPF/Macros/listpackages.sas +++ b/SPF/Macros/listpackages.sas @@ -1,7 +1,7 @@ /*+listPackages+*/ %macro listPackages()/secure PARMBUFF -des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20221107.' +des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20221112.' ; %if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then %do; @@ -16,7 +16,7 @@ des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HE %put ### This is short help information for the `listPackages` macro #; %put #-----------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to list available SAS packages, version `20221107` #; + %put # Macro to list available SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -166,7 +166,7 @@ options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; /* Macro to generate SAS packages. - Version 20221107 + Version 20221112 A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating diff --git a/SPF/Macros/loadpackage.sas b/SPF/Macros/loadpackage.sas index 738b50d..5b8e19e 100644 --- a/SPF/Macros/loadpackage.sas +++ b/SPF/Macros/loadpackage.sas @@ -27,7 +27,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to load SAS package, version 20221107. Run %loadPackage() for help info.' +des = 'Macro to load SAS package, version 20221112. Run %loadPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -42,7 +42,7 @@ des = 'Macro to load SAS package, version 20221107. Run %loadPackage() for help %put ### This is short help information for the `loadPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to *load* SAS packages, version `20221107` #; + %put # Macro to *load* SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/Macros/loadpackages.sas b/SPF/Macros/loadpackages.sas index 378dad3..34fc8bb 100644 --- a/SPF/Macros/loadpackages.sas +++ b/SPF/Macros/loadpackages.sas @@ -11,7 +11,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to load multiple SAS packages at one run, version 20221107. Run %loadPackages() for help info.' +des = 'Macro to load multiple SAS packages at one run, version 20221112. Run %loadPackages() for help info.' parmbuff ; %if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then @@ -27,7 +27,7 @@ parmbuff %put ### This is short help information for the `loadPackageS` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro wrapper for the loadPackage macro, version `20221107` #; + %put # Macro wrapper for the loadPackage macro, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/Macros/previewpackage.sas b/SPF/Macros/previewpackage.sas index 252660d..9a85d32 100644 --- a/SPF/Macros/previewpackage.sas +++ b/SPF/Macros/previewpackage.sas @@ -23,7 +23,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to preview content of a SAS package, version 20221107. Run %previewPackage() for help info.' +des = 'Macro to preview content of a SAS package, version 20221112. Run %previewPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -38,7 +38,7 @@ des = 'Macro to preview content of a SAS package, version 20221107. Run %preview %put ### This is short help information for the `previewPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to get previwe of a SAS packages, version `20221107` #; + %put # Macro to get previwe of a SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/Macros/unloadpackage.sas b/SPF/Macros/unloadpackage.sas index bbf5ea2..f01d602 100644 --- a/SPF/Macros/unloadpackage.sas +++ b/SPF/Macros/unloadpackage.sas @@ -20,7 +20,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to unload SAS package, version 20221107. Run %unloadPackage() for help info.' +des = 'Macro to unload SAS package, version 20221112. Run %unloadPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -35,7 +35,7 @@ des = 'Macro to unload SAS package, version 20221107. Run %unloadPackage() for h %put ### This is short help information for the `unloadPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to unload SAS packages, version `20221107` #; + %put # Macro to unload SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/Macros/verifypackage.sas b/SPF/Macros/verifypackage.sas index d23887f..16f52a4 100644 --- a/SPF/Macros/verifypackage.sas +++ b/SPF/Macros/verifypackage.sas @@ -13,7 +13,7 @@ hashing_file() function, SAS 9.4M6 */ )/secure /*** HELP END ***/ -des = 'Macro to verify SAS package with the hash digest, version 20221107. Run %verifyPackage() for help info.' +des = 'Macro to verify SAS package with the hash digest, version 20221112. Run %verifyPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -28,7 +28,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20221107. Run % %put ### This is short help information for the `verifyPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to verify SAS package with it hash digest, version `20221107` #; + %put # Macro to verify SAS package with it hash digest, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/SPF/SPFinit.md b/SPF/SPFinit.md index fca0f84..7cc966d 100644 --- a/SPF/SPFinit.md +++ b/SPF/SPFinit.md @@ -21,14 +21,14 @@ A **SAS package** is an automatically generated, single, stand alone *zip* file The *purpose of a package* is to be a simple, and easy to access, code sharing medium, which will allow: on the one hand, to separate the code complex dependencies created by the developer from the user experience with the final product and, on the other hand, reduce developer's and user's unnecessary frustration related to a remote deployment process. -In this repository we are presenting the **SAS Packages Framework** which allows to develop and use SAS packages. The latest version of SPF is **`20221107`**. +In this repository we are presenting the **SAS Packages Framework** which allows to develop and use SAS packages. The latest version of SPF is **`20221112`**. **To get started with SAS Packages** try this [**`Getting Started with SAS Packages`**](https://github.com/yabwon/SAS_PACKAGES/blob/main/SPF/Documentation/Getting_Started_with_SAS_Packages.pdf "Getting Started with SAS Packages") presentation (see the `./SPF/Documentation` directory). **The documentation and more advance reading** would be the [**`SAS(r) packages - the way to share (a how to)- Paper 4725-2020 - extended.pdf`**](https://github.com/yabwon/SAS_PACKAGES/blob/main/SPF/Documentation/SAS(r)%20packages%20-%20the%20way%20to%20share%20(a%20how%20to)-%20Paper%204725-2020%20-%20extended.pdf "SAS packages - the way to share") article (see the `./SPF/Documentation` directory). -*Note:* Filenames references `packages` and `package` are reserved keywords. +*Note:* Filenames references `packages` and `package` are **reserved keywords.** The first one should be used to point local folder with packages and the framework. The second is used internally by macros. After assigning the directory do not change them when using the SPF since it may affect stability of the framework. @@ -39,7 +39,7 @@ After assigning the directory do not change them when using the SPF since it may ## This is short help information for the `installPackage` macro -------------------------------------------------------------------------------------------- - Macro to install SAS packages, version `20221107` + Macro to install SAS packages, version `20221112` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -141,7 +141,7 @@ filename packages "C:/SAS_PACKAGES"; ## This is short help information for the `helpPackage` macro ------------------------------------------------------------------------------- - Macro to get help about SAS packages, version `20221107` + Macro to get help about SAS packages, version `20221112` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -211,7 +211,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `loadPackage` macro ------------------------------------------------------------------------------- - Macro to *load* SAS packages, version `20221107` + Macro to *load* SAS packages, version `20221112` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -284,7 +284,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `loadPackageS` macro ------------------------------------------------------------------------------- - Macro wrapper for the loadPackage macro, version `20221107` + Macro wrapper for the loadPackage macro, version `20221112` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -333,7 +333,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `unloadPackage` macro ------------------------------------------------------------------------------- - Macro to unload SAS packages, version `20221107` + Macro to unload SAS packages, version `20221112` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -398,7 +398,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `listPackages` macro ----------------------------------------------------------------------------------------- - Macro to list available SAS packages, version `20221107` + Macro to list available SAS packages, version `20221112` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -439,7 +439,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `verifyPackage` macro ------------------------------------------------------------------------------- - Macro to verify SAS package with it hash digest, version `20221107` + Macro to verify SAS package with it hash digest, version `20221112` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -493,7 +493,7 @@ filename packages "C:/SAS_PACKAGES"; %* set-up a directory for packages; ## This is short help information for the `previewPackage` macro ------------------------------------------------------------------------------- - Macro to get previwe of a SAS packages, version `20221107` + Macro to get previwe of a SAS packages, version `20221112` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -560,7 +560,7 @@ filename packages "C:/SAS_PACKAGES"; %* setup a directory for packages; ## This is short help information for the `generatePackage` macro ------------------------------------------------------------------------------- - Macro to generate SAS packages, version `20221107` + Macro to generate SAS packages, version `20221112` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -626,7 +626,7 @@ The file should contain the following obligatory information: Type: Package Package: PackageName Title: A title/brief info for log note about your package. -Version: X.Y +Version: X.Y.Z Author: Firstname1 Lastname1 (xxxxxx1@yyyyy.com), Firstname2 Lastname2 (xxxxxx2@yyyyy.com) Maintainer: Firstname Lastname (xxxxxx@yyyyy.com) License: MIT @@ -650,6 +650,9 @@ Name of the `type` of folder and `files.sas` inside must be in the _low_ case le If order of loading is important, the sequential number can be used to order multiple types in the way you wish. +If folder name starts with `!` (e.g., `!ignore_me`) or *type* of the folder is "unknown" (e.g., not supported one) +the content of such folder is ignored during package generation process. + The "tree structure" of the folder could be for example as follows: All files have to have `.sas` extension. Other files are ignored. @@ -741,7 +744,7 @@ All files have to have `.sas` extension. Other files are ignored. ## This is short help information for the `extendPackagesFileref` macro ----------------------------------------------------------------------------------------- - Macro to list directories pointed by 'packages' fileref, version `20221107` + Macro to list directories pointed by 'packages' fileref, version `20221112` A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating diff --git a/SPF/SPFinit.sas b/SPF/SPFinit.sas index 8e5f0d4..08e5f50 100644 --- a/SPF/SPFinit.sas +++ b/SPF/SPFinit.sas @@ -42,7 +42,7 @@ - to unload, or - to generate SAS packages. - Version 20221107. + Version 20221112. See examples below. A SAS package is a zip file containing a group of files @@ -82,7 +82,7 @@ */ )/secure /*** HELP END ***/ -des = 'Macro to load SAS package, version 20221107. Run %loadPackage() for help info.' +des = 'Macro to load SAS package, version 20221112. Run %loadPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -97,7 +97,7 @@ des = 'Macro to load SAS package, version 20221107. Run %loadPackage() for help %put ### This is short help information for the `loadPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to *load* SAS packages, version `20221107` #; + %put # Macro to *load* SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -283,7 +283,7 @@ des = 'Macro to load SAS package, version 20221107. Run %loadPackage() for help */ )/secure /*** HELP END ***/ -des = 'Macro to unload SAS package, version 20221107. Run %unloadPackage() for help info.' +des = 'Macro to unload SAS package, version 20221112. Run %unloadPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -298,7 +298,7 @@ des = 'Macro to unload SAS package, version 20221107. Run %unloadPackage() for h %put ### This is short help information for the `unloadPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to unload SAS packages, version `20221107` #; + %put # Macro to unload SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -443,7 +443,7 @@ des = 'Macro to unload SAS package, version 20221107. Run %unloadPackage() for h */ )/secure /*** HELP END ***/ -des = 'Macro to get help about SAS package, version 20221107. Run %helpPackage() for help info.' +des = 'Macro to get help about SAS package, version 20221112. Run %helpPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -458,7 +458,7 @@ des = 'Macro to get help about SAS package, version 20221107. Run %helpPackage() %put ### This is short help information for the `helpPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to get help about SAS packages, version `20221107` #; + %put # Macro to get help about SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -588,7 +588,7 @@ TODO: - add MD5(&packageName.) value hash instead "package" word in filenames [DONE] */ -/* Macros to install SAS packages, version 20221107 */ +/* Macros to install SAS packages, version 20221112 */ /* A SAS package is a zip file containing a group of files with SAS code (macros, functions, data steps generating data, etc.) wrapped up together and %INCLUDEed by @@ -611,7 +611,7 @@ TODO: /secure minoperator /*** HELP END ***/ -des = 'Macro to install SAS package, version 20221107. Run %%installPackage() for help info.' +des = 'Macro to install SAS package, version 20221112. Run %%installPackage() for help info.' ; %if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then %do; @@ -626,7 +626,7 @@ des = 'Macro to install SAS package, version 20221107. Run %%installPackage() fo %put ### This is short help information for the `installPackage` macro #; %put #--------------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to install SAS packages, version `20221107` #; + %put # Macro to install SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -1055,7 +1055,7 @@ des = 'Macro to install SAS package, version 20221107. Run %%installPackage() fo /* Macro to list SAS packages in packages folder. - Version 20221107 + Version 20221112 A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -1076,7 +1076,7 @@ des = 'Macro to install SAS package, version 20221107. Run %%installPackage() fo /*+listPackages+*/ %macro listPackages()/secure PARMBUFF -des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20221107.' +des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HELP) for help, version 20221112.' ; %if %QUPCASE(&SYSPBUFF.) = %str(%(HELP%)) %then %do; @@ -1091,7 +1091,7 @@ des = 'Macro to list SAS packages from `packages` fileref, type %listPackages(HE %put ### This is short help information for the `listPackages` macro #; %put #-----------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to list available SAS packages, version `20221107` #; + %put # Macro to list available SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -1241,7 +1241,7 @@ options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; /* Macro to generate SAS packages. - Version 20221107 + Version 20221112 A SAS package is a zip file containing a group of SAS codes (macros, functions, data steps generating @@ -1278,7 +1278,7 @@ options ls = &ls_tmp. ps = &ps_tmp. ¬es_tmp. &source_tmp.; default value 1 means "delete tests work" */ )/secure minoperator /*** HELP END ***/ -des = 'Macro to generate SAS packages, version 20221107. Run %generatePackage() for help info.' +des = 'Macro to generate SAS packages, version 20221112. Run %generatePackage() for help info.' ; %if (%superq(filesLocation) = ) OR (%qupcase(&filesLocation.) = HELP) %then %do; @@ -1293,7 +1293,7 @@ des = 'Macro to generate SAS packages, version 20221107. Run %generatePackage() %put ### This is short help information for the `generatePackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to generate SAS packages, version `20221107` #; + %put # Macro to generate SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -1388,16 +1388,19 @@ filename &_LIC_. "&filesLocation./license.sas" lrecl = 1024; infile &_DESCR_.; input; + %local metaExtStr; /* metadata Extraction String; */ + %let metaExtStr=kscanx(_INFILE_, 2, ":"); + select( strip(upcase(kscanx(_INFILE_, 1, ":"))) ); - when("PACKAGE") call symputX("packageName", kscanx(_INFILE_, 2, ":"),"L"); - when("VERSION") call symputX("packageVersion", kscanx(_INFILE_, 2, ":"),"L"); - when("AUTHOR") call symputX("packageAuthor", kscanx(_INFILE_, 2, ":"),"L"); - when("MAINTAINER") call symputX("packageMaintainer", kscanx(_INFILE_, 2, ":"),"L"); - when("TITLE") call symputX("packageTitle", kscanx(_INFILE_, 2, ":"),"L"); - when("ENCODING") call symputX("packageEncoding", kscanx(_INFILE_, 2, ":"),"L"); - when("LICENSE") call symputX("packageLicense", kscanx(_INFILE_, 2, ":"),"L"); - when("REQUIRED") call symputX("packageRequired", kscanx(_INFILE_, 2, ":"),"L"); - when("REQPACKAGES") call symputX("packageReqPackages", kscanx(_INFILE_, 2, ":"),"L"); + when("PACKAGE") call symputX("packageName", &metaExtStr., "L"); + when("VERSION") call symputX("packageVersion", &metaExtStr., "L"); + when("AUTHOR") call symputX("packageAuthor", &metaExtStr., "L"); + when("MAINTAINER") call symputX("packageMaintainer", &metaExtStr., "L"); + when("TITLE") call symputX("packageTitle", &metaExtStr., "L"); + when("ENCODING") call symputX("packageEncoding", &metaExtStr., "L"); + when("LICENSE") call symputX("packageLicense", &metaExtStr., "L"); + when("REQUIRED") call symputX("packageRequired", &metaExtStr., "L"); + when("REQPACKAGES") call symputX("packageReqPackages", &metaExtStr., "L"); /* stop at the beginning of description */ when("DESCRIPTION START") stop; @@ -1418,13 +1421,13 @@ filename &_LIC_. "&filesLocation./license.sas" lrecl = 1024; %do; %put ERROR: At least one of descriptors is missing!; %put ERROR- They are required to create a package.; - %put ERROR- &=packageName.; - %put ERROR- &=packageTitle.; - %put ERROR- &=packageVersion.; - %put ERROR- &=packageAuthor.; - %put ERROR- &=packageMaintainer.; - %put ERROR- &=packageEncoding.; - %put ERROR- &=packageLicense.; + %put ERROR- packageName=%superq(packageName); + %put ERROR- packageTitle=%superq(packageTitle); + %put ERROR- packageVersion=%superq(packageVersion); + %put ERROR- packageAuthor=%superq(packageAuthor); + %put ERROR- packageMaintainer=%superq(packageMaintainer); + %put ERROR- packageEncoding=%superq(packageEncoding); + %put ERROR- packageLicense=%superq(packageLicense); %put ERROR- ; %put ERROR- Aborting.; %abort; @@ -1753,6 +1756,7 @@ DESCRIPTION END: /* collect the data */ data &filesWithCodes.; + putlog "NOTE- "; putlog "NOTE: Generating content dataset: &filesWithCodes.."; putlog "NOTE- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"; putlog "NOTE- "; @@ -1766,7 +1770,8 @@ data &filesWithCodes.; folderid=dopen(folderRef); do i=1 to dnum(folderId); drop i; - folder = dread(folderId, i); + folder = dread(folderId, i); + if folder NE lowcase(folder) then do; put 'ERROR: Folder should be named ONLY with low case letters.'; @@ -1784,6 +1789,27 @@ data &filesWithCodes.; fileId = dopen(fileRef); file = ' '; + + /* ignore folders which name starts with ! */ + if fileId AND "!" =: folder then + do; + put "INFO: Folder " folder "name starts with ! and will be ignored. " / + " No content from it will be used to generate the package." / " "; + goto ignoreFolder; + end; + + /* ignore unknown types for folders */ + if fileId AND not (upcase(type) in: + ('LIBNAME' 'MACRO' /*'MACROS'*/ 'DATA' 'FUNCTION' /*'FUNCTIONS'*/ 'FORMAT' /*'FORMATS'*/ 'IMLMODULE' 'PROTO' 'EXEC' 'CLEAN' 'LAZYDATA' 'TEST')) + then + do; + put "WARNING: Type " type 'is not yet supported.' / + "WARNING- Folder " folder " will be ignored. " / + "WARNING- No content from it will be used to generate the package." / " "; + goto ignoreFolder; + end; + + /* if it is a directory then read its content */ if fileId then do j = 1 to dnum(fileId); drop j; file = dread(fileId, j); @@ -1806,6 +1832,8 @@ data &filesWithCodes.; "WARNING- "; end; end; + + ignoreFolder: ; rc = dclose(fileId); rc = filename(fileRef); end; @@ -1818,6 +1846,7 @@ data &filesWithCodes.; put 'ERROR: Aborting due to previous errors.'; abort; end; + put " "; stop; run; @@ -1892,7 +1921,7 @@ data _null_; put "ERROR: There are " e "EXECs files and " c "CLEANs files!" / "ERROR- Each EXEC file should have CLEAN file counterpart and vice versa." / 'ERROR- Please create appropriate files and make your package a "role model".' / - 'ERROR: Aborting package generation!' ; + 'ERROR: [&sysmacroname.] Aborting package generation!' ; abort; end; end; @@ -1924,6 +1953,7 @@ options ¬esSourceOptions.; /* packages description */ +%put NOTE-; %put NOTE: Preparing description file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -1935,6 +1965,7 @@ data _null_; run; /* package license */ +%put NOTE-; %put NOTE: Preparing license file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -1953,8 +1984,10 @@ run; %let packageLicense = MIT; data _null_; file &zipReferrence.(license.sas) encoding = &packageEncoding.; + length packageAuthor $ 1024; + packageAuthor = symget('packageAuthor'); put " "; - put " Copyright (c) %sysfunc(today(),year4.) &packageAuthor. "; + put " Copyright (c) since %sysfunc(today(),year4.) " packageAuthor ; put " "; put " Permission is hereby granted, free of charge, to any person obtaining a copy "; put ' of this software and associated documentation files (the "Software"), to deal '; @@ -1978,6 +2011,7 @@ run; %end; /* package metadata */ +%put NOTE-; %put NOTE: Preparing metadata file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -1990,24 +2024,26 @@ data _null_; end; file &zipReferrence.(packagemetadata.sas) encoding = &packageEncoding.; - put ' data _null_; '; /* simple "%local" returns error while loading package */ - put ' call symputX("packageName", " ", "L");'; - put ' call symputX("packageVersion", " ", "L");'; - put ' call symputX("packageTitle", " ", "L");'; - put ' call symputX("packageAuthor", " ", "L");'; - put ' call symputX("packageMaintainer", " ", "L");'; - put ' call symputX("packageEncoding", " ", "L");'; - put ' call symputX("packageLicense", " ", "L");'; - put ' run; '; + length packageName $ 32 packageVersion $ 24 + packageTitle packageAuthor packageMaintainer $ 2048 + packageEncoding $ 8 packageLicense $ 128; + packageName = quote(strip(symget('packageName')),'"'); + packageVersion = quote(strip(symget('packageVersion')),'"'); + packageTitle = quote(strip(symget('packageTitle')),'"'); + packageAuthor = quote(strip(symget('packageAuthor')),'"'); + packageMaintainer = quote(strip(symget('packageMaintainer')),'"'); + packageEncoding = quote(strip(symget('packageEncoding')),'"'); + packageLicense = quote(strip(symget('packageLicense')),'"'); - put ' %let packageName =' "&packageName.;"; - put ' %let packageVersion =' "&packageVersion.;"; - put ' %let packageTitle =' "&packageTitle.;"; - put ' %let packageAuthor =' "&packageAuthor.;"; - put ' %let packageMaintainer =' "&packageMaintainer.;"; - put ' %let packageEncoding =' "&packageEncoding.;"; - put ' %let packageLicense =' "&packageLicense.;"; - put ' ; '; + put ' data _null_; '; /* simple "%local" returns error while loading package */ + put ' call symputX("packageName", ' packageName ', "L");'; + put ' call symputX("packageVersion", ' packageVersion ', "L");'; + put ' call symputX("packageTitle", ' packageTitle ', "L");'; + put ' call symputX("packageAuthor", ' packageAuthor ', "L");'; + put ' call symputX("packageMaintainer", ' packageMaintainer ', "L");'; + put ' call symputX("packageEncoding", ' packageEncoding ', "L");'; + put ' call symputX("packageLicense", ' packageLicense ', "L");'; + put ' run; '; stop; run; @@ -2026,6 +2062,7 @@ run; %ICEloadpackage(sqlinds) */ +%put NOTE-; %put NOTE: Preparing iceloadpackage file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -2088,6 +2125,7 @@ run; /* loading package files */ +%put NOTE-; %put NOTE: Preparing load file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -2099,10 +2137,11 @@ data _null_; put "filename &_PackageFileref_. list;" /; put ' %put NOTE- ;'; put ' %put NOTE: ' @; put "Loading package &packageName., version &packageVersion., license &packageLicense.; "; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; + + put ' %put NOTE: ' @; put '*** %superq(packageTitle) ***; '; put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; + put ' %put NOTE- ' @; put 'Author(s): %superq(packageAuthor); '; + put ' %put NOTE- ' @; put 'Maintainer(s): %superq(packageMaintainer); '; put ' %put NOTE- ;'; put ' %put NOTE- Run %nrstr(%%)helpPackage(' "&packageName." ') for the description;'; put ' %put NOTE- ;'; @@ -2191,7 +2230,7 @@ data _null_; packageReqPackages = lowcase(symget('packageReqPackages')); /* try to load required packages */ put 'data _null_ ; '; - put ' length req name $ 64 vers verR 8 SYSloadedPackages $ 32767; '; + put ' length req name $ 64 vers verR $ 24 versN verRN 8 SYSloadedPackages $ 32767; '; put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '; put ' do; '; put ' do until(EOF); '; @@ -2208,7 +2247,7 @@ data _null_; put ' do _N_ = 1 to countw(SYSloadedPackages); '; put ' req = kscanx(SYSloadedPackages, _N_, " "); '; put ' name = lowcase(strip(kscanx(req, 1, "("))); '; - put ' vers = input(compress(kscanx(req,-1, "("), ".", "KD"),best32.); '; + put ' vers = compress(kscanx(req,-1, "("), ".", "KD"); '; put ' _RC_ = LP.add(); '; put ' end; '; /* check if elements of the framework are available */ @@ -2218,11 +2257,21 @@ data _null_; put ' do req = ' / packageReqPackages / ' ; '; /* put ' req = compress(req, "(.)", "KDF"); ';*/ put ' name = lowcase(strip(kscanx(req, 1, "("))); '; - put ' verR = input(compress(kscanx(req,-1, "("), ".", "KD"),best32.); vers = .; '; + put ' verR = compress(kscanx(req,-1, "("), ".", "KD"); vers = ""; '; put ' LP_find = LP.find(); '; - put ' if (LP_find ne 0) or (LP_find = 0 and . < vers < verR) then '; + + /* convert major.minor.patch to number*/ + put ' array V verR vers ; '; + put ' array VN verRN versN; '; + put ' do over V; '; + put ' VN = input("0"!!scan(V,1,".","M"),?? best.)*1e8 '; + put ' + input("0"!!scan(V,2,".","M"),?? best.)*1e4 '; + put ' + input("0"!!scan(V,3,".","M"),?? best.)*1e0; '; + put ' end; '; + + put ' if (LP_find ne 0) or (LP_find = 0 and . < versN < verRN) then '; put ' do; '; - put ' put "NOTE: Trying to load required SAS package " req; '; + put ' put "NOTE: Trying to load required SAS package: " req; '; put ' if LoadPackageExist then '; put ' call execute(cats(''%nrstr(%loadPackage('', name, ", requiredVersion = ", verR, "))")); '; put ' else if ICELoadPackageExist then '; @@ -2234,7 +2283,7 @@ data _null_; /* test if required packages are loaded */ put 'data _null_ ; '; - put ' length req name $ 64 SYSloadedPackages $ 32767; '; + put ' length req name $ 64 vers verR $ 24 versN verRN 8 SYSloadedPackages $ 32767; '; put ' if SYMEXIST("SYSloadedPackages") = 1 and SYMGLOBL("SYSloadedPackages") = 1 then '; put ' do; '; put ' do until(EOF); '; @@ -2250,7 +2299,7 @@ data _null_; put ' do _N_ = 1 to countw(SYSloadedPackages); '; put ' req = kscanx(SYSloadedPackages, _N_, " "); '; put ' name = lowcase(strip(kscanx(req, 1, "("))); '; - put ' vers = input(compress(kscanx(req,-1, "("), ".", "KD"), best32.); '; + put ' vers = compress(kscanx(req,-1, "("), ".", "KD"); '; put ' _RC_ = LP.add(); '; put ' end; '; @@ -2258,12 +2307,22 @@ data _null_; put ' do req = ' / packageReqPackages / ' ; '; /* put ' req = compress(req, "(.)", "KDF"); ';*/ put ' name = lowcase(strip(kscanx(req, 1, "("))); '; - put ' verR = input(compress(kscanx(req,-1, "("), ".", "KD"),best32.); vers = .; '; + put ' verR = compress(kscanx(req,-1, "("), ".", "KD"); vers = " "; '; put ' LP_find = LP.find(); '; - put ' if (LP_find ne 0) or (LP_find = 0 and . < vers < verR) then '; + + /* convert major.minor.patch to number*/ + put ' array V verR vers ; '; + put ' array VN verRN versN; '; + put ' do over V; '; + put ' VN = input("0"!!scan(V,1,".","M"),?? best.)*1e8 '; + put ' + input("0"!!scan(V,2,".","M"),?? best.)*1e4 '; + put ' + input("0"!!scan(V,3,".","M"),?? best.)*1e0; '; + put ' end; '; + + put ' if (LP_find ne 0) or (LP_find = 0 and . < versN < verRN) then '; put ' do; '; put ' missingPackagr = 1; '; - put ' put "ERROR: SAS package " req "is missing! Download it and" ; '; + put ' put "ERROR: SAS package: " req "is missing! Download it and" ; '; put ' put ''ERROR- use %loadPackage('' name ", requiredVersion = " verR ") to load it." ;'; put ' end ; '; put ' end ; '; @@ -2275,7 +2334,7 @@ data _null_; put ' call symputX("packageRequiredErrors", 1, "L"); '; put ' do req = ' / packageReqPackages / ' ; '; put ' name = lowcase(strip(kscanx(req, 1, "("))); '; - put ' vers = input(compress(kscanx(req,-1, "("), ".", "KD"), best32.); '; + put ' vers = compress(kscanx(req,-1, "("), ".", "KD"); '; put ' put "ERROR: SAS package " req "is missing! Download/install it and" ; '; put ' put ''ERROR- use %loadPackage('' name ", requiredVersion = " vers ") to load it." ; '; put ' end ; '; @@ -2443,6 +2502,7 @@ data _null_; run; /* to load lazydata */ +%put NOTE-; %put NOTE: Preparing "lazydata" file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -2454,10 +2514,11 @@ data _null_; put "filename &_PackageFileref_. list;" /; put ' %put NOTE- ;'; put ' %put NOTE: ' @; put "Data for package &packageName., version &packageVersion., license &packageLicense.; "; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; + + put ' %put NOTE: ' @; put '*** %superq(packageTitle) ***; '; put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; + put ' %put NOTE- ' @; put 'Author(s): %superq(packageAuthor); '; + put ' %put NOTE- ' @; put 'Maintainer(s): %superq(packageMaintainer); '; put ' %put NOTE- ;'; put ' %put NOTE- Write %nrstr(%%)helpPackage(' "&packageName." ') for the description;'; put ' %put NOTE- ;'; @@ -2500,6 +2561,7 @@ run; /* unloading package objects */ +%put NOTE-; %put NOTE: Preparing unload file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -2744,6 +2806,7 @@ data _null_; run; /* package preview, i.e. print out all content of the package files into the log */ +%put NOTE-; %put NOTE: Preparing preview file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -2757,10 +2820,11 @@ data _null_; put "filename &_PackageFileref_. list;" /; put ' %put NOTE- ;'; put ' %put NOTE: '"Preview of the &packageName. package, version &packageVersion., license &packageLicense.;"; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; + + put ' %put NOTE: ' @; put '*** %superq(packageTitle) ***; '; put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; + put ' %put NOTE- ' @; put 'Author(s): %superq(packageAuthor); '; + put ' %put NOTE- ' @; put 'Maintainer(s): %superq(packageMaintainer); '; put ' %put NOTE- ;'; put ' %put NOTE- *** START ***;' /; @@ -2858,6 +2922,7 @@ data _null_; run; /* package help */ +%put NOTE-; %put NOTE: Preparing help file.; %put NOTE- ^^^^^^^^^^^^^^^^^^^^; %put NOTE-; @@ -2871,10 +2936,11 @@ data _null_; put "filename &_PackageFileref_. list;" /; put ' %put NOTE- ;'; put ' %put NOTE: '"Help for package &packageName., version &packageVersion., license &packageLicense.;"; - put ' %put NOTE: ' @; put "*** &packageTitle. ***; "; + + put ' %put NOTE: ' @; put '*** %superq(packageTitle) ***; '; put ' %put NOTE- ' @; put "Generated: %sysfunc(datetime(), datetime21.); "; - put ' %put NOTE- ' @; put "Author(s): &packageAuthor.; "; - put ' %put NOTE- ' @; put "Maintainer(s): &packageMaintainer.; "; + put ' %put NOTE- ' @; put 'Author(s): %superq(packageAuthor); '; + put ' %put NOTE- ' @; put 'Maintainer(s): %superq(packageMaintainer); '; put ' %put NOTE- ;'; put ' %put NOTE- *** START ***;' /; @@ -2931,7 +2997,7 @@ data _null_; put ' end ; '; %end; - put 'put "***"; put "* SAS package generated by generatePackage, version 20221107 *"; put "***";'; + put 'put "***"; put "* SAS package generated by generatePackage, version 20221112 *"; put "***";'; put 'run; ' /; @@ -3072,7 +3138,7 @@ data _null_; call execute(' if ex then put "File " pathname "copied into the package with return code: " rc "(0 = success)";'); call execute(' else do;'); - call execute(' put "ERROR: File " pathname "NOT copied into the package!" ;'); + call execute(' put "ERROR: [&sysmacroname.] File " pathname "NOT copied into the package!" ;'); call execute(' call symputX("createPackageContentStatus",1,"L");'); call execute(' end;'); @@ -3088,7 +3154,7 @@ data _null_; call execute(' if 18 <= lengthn(_endhelpline_) AND _endhelpline_ =: "/*** DNE PLEH ***/" then test + (-1); '); /* *** HELP END *** */ call execute(' if (test not in (.,0,1)) or (EOF and test) then '); call execute(' do; '); - call execute(' put "ERROR: Unmatched or nested HELP tags in ' !! catx('/', folder, file) !! '! Line: " _N_; '); + call execute(' put "ERROR: [&sysmacroname.] Unmatched or nested HELP tags in ' !! catx('/', folder, file) !! '! Line: " _N_; '); call execute(' put "ERROR- Aborting! "; '); call execute(' call symputX("createPackageContentStatus",1,"L"); '); call execute(' abort; '); @@ -3118,7 +3184,7 @@ data _null_; call execute(' ex = fexist("_SPFOUT_");'); call execute(' if not ex then do;'); - call execute(' put "ERROR: File ' !! strip(drivFile) !! '.sas DOES NOT EXIST in the package!" ;'); + call execute(' put "ERROR: [&sysmacroname.] File ' !! strip(drivFile) !! '.sas DOES NOT EXIST in the package!" ;'); call execute(' call symputX("createPackageContentStatus",1,"L"); '); call execute(' end;'); @@ -3175,6 +3241,7 @@ filename &zipReferrence. clear; /* verify if there were errors while package content creation */ %if %bquote(&createPackageContentStatus.) ne 0 %then %do; + %put ERROR- ** [&sysmacroname.] **; %put ERROR: ** ERRORS IN PACKAGE CONTENT CREATION! **; %put ERROR- ** NO TESTING WILL BE EXECUTED. **; %GOTO NOTESTING; @@ -3272,7 +3339,7 @@ run; %end; %else %do; - %put ERROR: Provided location of the SAS binary file does not exist!; + %put ERROR: [&sysmacroname.] Provided location of the SAS binary file does not exist!; %put ERROR- The directory was: &SASEXE.; %put ERROR- Testing would not be executed.; filename sasroot; @@ -3285,7 +3352,7 @@ run; 0 = %sysfunc(fileexist(&SASEXE..exe)) /* WINDOWS */ %then %do; - %put ERROR: Provided location of the SAS binary file does not contain SAS file!; + %put ERROR: [&sysmacroname.] Provided location of the SAS binary file does not contain SAS file!; %put ERROR- The file searched was: &SASEXE.; %put ERROR- Testing would not be executed.; %GOTO NOTESTING; @@ -3319,7 +3386,7 @@ run; %end; %else %do; - %put ERROR: Provided SAS config file does not exist!; + %put ERROR: [&sysmacroname.] Provided SAS config file does not exist!; %put ERROR- The file was: &SASCFGFILE.; %put ERROR- Testing would not be executed.; %GOTO NOTESTING; @@ -3458,6 +3525,10 @@ data _null_; put '%unloadPackage'"(&packageName.,"; put " path=&filesLocation.) " /; + put "filename packages '&filesLocation.';" / + '%listPackages() ' /; + + put "proc printto"; put "; run;"; @@ -3790,7 +3861,7 @@ TODO: (in Polish) */ )/secure /*** HELP END ***/ -des = 'Macro to load multiple SAS packages at one run, version 20221107. Run %loadPackages() for help info.' +des = 'Macro to load multiple SAS packages at one run, version 20221112. Run %loadPackages() for help info.' parmbuff ; %if (%superq(packagesNames) = ) OR (%qupcase(&packagesNames.) = HELP) %then @@ -3806,7 +3877,7 @@ parmbuff %put ### This is short help information for the `loadPackageS` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro wrapper for the loadPackage macro, version `20221107` #; + %put # Macro wrapper for the loadPackage macro, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -3903,7 +3974,7 @@ parmbuff hashing_file() function, SAS 9.4M6 */ )/secure /*** HELP END ***/ -des = 'Macro to verify SAS package with the hash digest, version 20221107. Run %verifyPackage() for help info.' +des = 'Macro to verify SAS package with the hash digest, version 20221112. Run %verifyPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -3918,7 +3989,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20221107. Run % %put ### This is short help information for the `verifyPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to verify SAS package with it hash digest, version `20221107` #; + %put # Macro to verify SAS package with it hash digest, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -4089,7 +4160,7 @@ des = 'Macro to verify SAS package with the hash digest, version 20221107. Run % */ )/secure /*** HELP END ***/ -des = 'Macro to preview content of a SAS package, version 20221107. Run %previewPackage() for help info.' +des = 'Macro to preview content of a SAS package, version 20221112. Run %previewPackage() for help info.' ; %if (%superq(packageName) = ) OR (%qupcase(&packageName.) = HELP) %then %do; @@ -4104,7 +4175,7 @@ des = 'Macro to preview content of a SAS package, version 20221107. Run %preview %put ### This is short help information for the `previewPackage` macro #; %put #-------------------------------------------------------------------------------#; %put # #; - %put # Macro to get previwe of a SAS packages, version `20221107` #; + %put # Macro to get previwe of a SAS packages, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; @@ -4231,7 +4302,7 @@ des = 'Macro to preview content of a SAS package, version 20221107. Run %preview when empty the "packages" value is used */ )/secure /*** HELP END ***/ -des = 'Macro to list directories pointed by "packages" fileref, version 20221107. Run %extendPackagesFileref(HELP) for help info.' +des = 'Macro to list directories pointed by "packages" fileref, version 20221112. Run %extendPackagesFileref(HELP) for help info.' ; %if %QUPCASE(&packages.) = HELP %then @@ -4247,7 +4318,7 @@ des = 'Macro to list directories pointed by "packages" fileref, version 20221107 %put ### This is short help information for the `extendPackagesFileref` macro #; %put #-----------------------------------------------------------------------------------------#;; %put # #; - %put # Macro to list directories pointed by 'packages' fileref, version `20221107` #; + %put # Macro to list directories pointed by 'packages' fileref, version `20221112` #; %put # #; %put # A SAS package is a zip file containing a group #; %put # of SAS codes (macros, functions, data steps generating #; diff --git a/packages/README.md b/packages/README.md index 2a21f21..0fd5a38 100644 --- a/packages/README.md +++ b/packages/README.md @@ -10,7 +10,7 @@ Packages: --- -- **SQLinDS**\[2.2\], based on Mike Rhoads' article *Use the Full Power of SAS in Your Function-Style Macros*. The package allows to write SQL queries in the data step, e.g. +- **SQLinDS**\[2.2.1\], based on Mike Rhoads' article *Use the Full Power of SAS in Your Function-Style Macros*. The package allows to write SQL queries in the data step, e.g. ```sas data class; set %SQL( @@ -22,7 +22,7 @@ data class; WH = weight + height; run; ``` -SHA256 digest for SQLinDS: 96D0EFE02DF1AE0D7D875A10CAF7EF63CDEF85DD0CF9418934BEFAF0C067D453 +SHA256 digest for SQLinDS: A070214517CC36590083FCF9D5F488AC6E746793E94B9AA55D09A419CF291B5B [Documentation for SQLinDS](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/sqlinds.md "Documentation for SQLinDS") @@ -36,7 +36,7 @@ SHA256 digest for MacroCore: A23C29529F3CE7D0C8BEE9545C5D22D5B5594907547374A5135 --- -- **DFA** (Dynamic Function Arrays)\[0.5\], contains set of macros and FCMP functions which implement: a dynamically allocated array, a stack, a fifo queue, an ordered stack, and a priority queue, run `%helpPackage(DFA,createDFArray)` to find examples. +- **DFA** (Dynamic Function Arrays)\[0.5.1\], contains set of macros and FCMP functions which implement: a dynamically allocated array, a stack, a fifo queue, an ordered stack, and a priority queue, run `%helpPackage(DFA,createDFArray)` to find examples. ```sas %createDFArray(ArrDynamic, resizefactor=17); @@ -63,13 +63,13 @@ data _null_; end; run; ``` -SHA256 digest for DFA: 5BFFCE78439E1CDDCBB15C95CD287AA4195BF64BB17DDB8FE374EC3535B4F491 +SHA256 digest for DFA: 5A6FD2F6E962E6C191346A141FFAF354E35A546CA93146B55D7C6163BFB1BDD6 [Documentation for DFA](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/dfa.md "Documentation for DFA") --- -- **macroArray**\[1.0\], implementation of an array concept in a macro language, e.g. +- **macroArray**\[1.0.1\], implementation of an array concept in a macro language, e.g. ```sas %array(ABC[17] (111:127), macarray=Y); @@ -88,13 +88,13 @@ SHA256 digest for DFA: 5BFFCE78439E1CDDCBB15C95CD287AA4195BF64BB17DDB8FE374EC353 which = 1:H:2 ); ``` -SHA256 digest for macroArray: ED12BC96F8A4E9E7C4D651EC1E15479DB9B55D98B274B63C507ED842081F7AB7 +SHA256 digest for macroArray: 371B92A5ABBE82C53F7D63BC5C0D1EBD4695603D3894D8A9A5D5777D1AB59B30 [Documentation for macroArray](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/macroarray.md "Documentation for macroArray") --- -- **BasePlus**\[1.17\] adds a bunch of functionalities I am missing in BASE SAS, such as: +- **BasePlus**\[1.17.1\] adds a bunch of functionalities I am missing in BASE SAS, such as: ```sas call arrMissToRight(myArray); call arrFillMiss(17, myArray); @@ -112,25 +112,25 @@ format x bool.; %zipLibrary(sashelp,libOut=work) ``` -SHA256 digest for BasePlus: 56B260350FEB7D5118F581B9EFD1B9CE1F0298DCB9A4C000A7654E2FF3F0298C +SHA256 digest for BasePlus: A80006D3C1409465E49F383D08F2F3AF1E33D6A67D71A8CAF29747ADC917E2E4 [Documentation for BasePlus](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/baseplus.md "Documentation for BasePlus") --- -- **GSM** (Generate Secure Macros)\[0.20\], package allows +- **GSM** (Generate Secure Macros)\[0.20.1\], package allows to create secured macros stored in SAS Proc FCMP functions. The dataset with functions can be shared between different operating systems and allows to generate macros on site without showing their code. -SHA256 digest for GSM: 2AEBC150FBA99A4AAB0265A21C57E89200BFD96B633B898F32743D1C8831A159 +SHA256 digest for GSM: 5D1925970C9590CD195C15B8641B01D7857E3B2546323DC77D09154BCCA40922 [Documentation for GSM](https://github.com/yabwon/SAS_PACKAGES/blob/main/packages/gsm.md "Documentation for GSM") --- -- **dynMacroArray**\[0.2\], set of macros (wrappers for a hash table) emulating dynamic array in the data step (macro predecessor of DFA). Development of this package is currently on hold. +- **dynMacroArray**\[0.2.1\], set of macros (wrappers for a hash table) emulating dynamic array in the data step (macro predecessor of DFA). Development of this package is currently on hold. -SHA256 digest for dynMacroArray: D7E0B8F85C05EBF8622204E0D2F3E990D48D0A9B3911051C3AD44DC98954DDCF +SHA256 digest for dynMacroArray: C987C08615A53D7BD7AEC3911EADF436C676EAB3E233E7E422E42995B890E169 --- diff --git a/packages/SHA256_for_packages.txt b/packages/SHA256_for_packages.txt index d9ab5ec..486a814 100644 --- a/packages/SHA256_for_packages.txt +++ b/packages/SHA256_for_packages.txt @@ -1,3 +1,11 @@ +/* 20221112 */ +BasePlus: A80006D3C1409465E49F383D08F2F3AF1E33D6A67D71A8CAF29747ADC917E2E4 +DFA: 5A6FD2F6E962E6C191346A141FFAF354E35A546CA93146B55D7C6163BFB1BDD6 +dynMacroArray: C987C08615A53D7BD7AEC3911EADF436C676EAB3E233E7E422E42995B890E169 +GSM: 5D1925970C9590CD195C15B8641B01D7857E3B2546323DC77D09154BCCA40922 +macroArray: 371B92A5ABBE82C53F7D63BC5C0D1EBD4695603D3894D8A9A5D5777D1AB59B30 +SQLinDS: A070214517CC36590083FCF9D5F488AC6E746793E94B9AA55D09A419CF291B5B + /* 20220830 */ BasePlus: 56B260350FEB7D5118F581B9EFD1B9CE1F0298DCB9A4C000A7654E2FF3F0298C DFA: 5BFFCE78439E1CDDCBB15C95CD287AA4195BF64BB17DDB8FE374EC3535B4F491 diff --git a/packages/baseplus.md b/packages/baseplus.md index bf5afdd..6a73852 100644 --- a/packages/baseplus.md +++ b/packages/baseplus.md @@ -56,7 +56,7 @@ --- -# The BasePlus package [ver. 1.17] ############################################### +# The BasePlus package [ver. 1.17.1] ############################################### The **BasePlus** package implements useful functions and functionalities I miss in the BASE SAS. @@ -273,10 +273,10 @@ Package contains: 48. functions quicksorthashsddv 49. functions quicksortlight -*SAS package generated by generatePackage, version 20220830* +*SAS package generated by generatePackage, version 20221112* The SHA256 hash digest for package BasePlus: -`56B260350FEB7D5118F581B9EFD1B9CE1F0298DCB9A4C000A7654E2FF3F0298C` +`A80006D3C1409465E49F383D08F2F3AF1E33D6A67D71A8CAF29747ADC917E2E4` --- # Content description ############################################################################################ diff --git a/packages/baseplus.zip b/packages/baseplus.zip index 8935aae791677bd609e3d5daf614580630dacbc7..36106107745405273eeed8c05379bfd3320ec2d6 100644 GIT binary patch delta 13058 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 delta 13121 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 ZV_0P&R ############################################### +# The DFA package [ver. 0.5.1] ############################################### The **DFA** (a.k.a. *Dynamic Function Array*) package implements: - dynamic numeric and character arrays, @@ -52,10 +52,10 @@ Package contains: 12. exec generatearrays 13. clean generatearrays -*SAS package generated by generatePackage, version 20220830* +*SAS package generated by generatePackage, version 20221112* The SHA256 hash digest for package BasePlus: -`5BFFCE78439E1CDDCBB15C95CD287AA4195BF64BB17DDB8FE374EC3535B4F491` +`5A6FD2F6E962E6C191346A141FFAF354E35A546CA93146B55D7C6163BFB1BDD6` --- # Content description ############################################################################################ diff --git a/packages/dfa.zip b/packages/dfa.zip index 5a654fd8f76241a3a287f0989ff0693e26e23b0e..ab2786ba0d59f5ac975a1d3e8f0c598dad1cc003 100644 GIT binary patch delta 9642 zcmZvCWl&w)vh@an`^F`>y95ay2rj|ho#5_l+N+~ZXiAHgkcfjqI?K$1ESso%y13YqAmCfW*Lo{5@i?q? ziew?pmKm%;-PFtHXva~37erjVIvs1OG%5^E90w#gG?oJ(4<;+_dj{y4q>>iy@!$Ya zMkl5tYe>DCouy=F3vTsEYkK4z_{g6Vz|tv>Qs)g9bMtGKUk`>a2F^Z-8K9=)-C@vN zk)j_-^yzymiG%mY6l>OlTpV|w=_ENe9*9x&GxACpF4|)t6<(Zp$$IX1*)Fnn1lQmB z6^NgSx%*9>_U&IA2N&2~S8oM8$ZHR=?I85yuJz)IOkWu-T#?^Ahf<-!4;3pYE1WQx zAt?>=3azO2Hp71gQd)*n8uPfk7xVyGyl<&yG2J*EGMciMW`tI{n9fCxi2mj#L~Iom zwy$+O#ZCPgbH)W^PsoI|<@#6Wv5 zYR7nwA8C`J2RZjVKU}Obn7LFy2eF2GioX{|;4MxXL3!eP8uk=y`bNSh*NgU1ycYja z-F@`u+-HM2i7r;8Ktj~o3*K^bSu_hd26U5vw*#lglrIq@AIEq94#JuN$VNz%f1