From 1780cc26b6e43fd92af7016eae7b0dd43f1216fe Mon Sep 17 00:00:00 2001 From: SisMaker <1713699517@qq.com> Date: Mon, 7 Dec 2020 00:08:24 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E5=91=BD=E4=BB=A4=E4=B8=BA=20eNpc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + README.md | 8 ++++---- bootstrap | 18 +++++++++--------- eNpc | Bin 0 -> 26669 bytes eNpc.cmd | 4 ++++ ebin/{erlNpc.app => eNpc.app} | 6 +++--- src/{erlNpc.erl => eNpc.erl} | 8 ++++---- src/rebar.erl | 14 +++++++------- src/rebarUtils.erl | 4 ++-- 9 files changed, 34 insertions(+), 29 deletions(-) create mode 100644 eNpc create mode 100644 eNpc.cmd rename ebin/{erlNpc.app => eNpc.app} (57%) rename src/{erlNpc.erl => eNpc.erl} (71%) diff --git a/.gitignore b/.gitignore index 0b66f73..19adb84 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,5 @@ _build/ _checkouts/ .idea +*.iml diff --git a/README.md b/README.md index 559ce8e..86f02c1 100644 --- a/README.md +++ b/README.md @@ -7,12 +7,12 @@ default_env 1. Clone this repository 1. Run `make` in this directory -1. Copy `erlNpc` to your project "c_src" dir and commit it +1. Copy `eNpc` to your project "c_src" dir and commit it 1. Add these (or similar) hooks to your rebar.config: ```erlang -{pre_hooks, [{"", compile, "escript c_src/erlNpc compile"}]}. -{post_hooks, [{"", clean, "escript c_src/erlNpc clean"}]}. +{pre_hooks, [{"", compile, "escript c_src/eNpc compile"}]}. +{post_hooks, [{"", clean, "escript c_src/eNpc clean"}]}. ``` -After that erlNpc should read your old rebar.config `port\_specs` and `port\_env` settings as expected (it is rebar2's port compiler after all...). +After that eNpc should read your old rebar.config `port_specs` and `port_env` settings as expected (it is rebar2's port compiler after all...). diff --git a/bootstrap b/bootstrap index 6e7ff3c..7422f73 100644 --- a/bootstrap +++ b/bootstrap @@ -66,16 +66,16 @@ main(Args) -> up_to_date -> ok; error -> - io:format("Failed to compile erlNpc files!\n"), + io:format("Failed to compile eNpc files!\n"), halt(1) end, %% Make sure file:consult can parse the .app file - case file:consult("ebin/erlNpc.app") of + case file:consult("ebin/eNpc.app") of {ok, _} -> ok; {error, Reason} -> - io:format("Invalid syntax in ebin/erlNpc.app: ~p\n", [Reason]), + io:format("Invalid syntax in ebin/eNpc.app: ~p\n", [Reason]), halt(1) end, @@ -93,7 +93,7 @@ main(Args) -> %% or write out script files on win32. case os:type() of {unix, _} -> - [] = os:cmd("chmod u+x erlNpc"), + [] = os:cmd("chmod u+x eNpc"), ok; {win32, _} -> writeWindowsScripts(), @@ -104,10 +104,10 @@ main(Args) -> %% Add a helpful message io:format(<<"Congratulations! You now have a self-contained script called" - " \"erlNpc\" in\n" + " \"eNpc\" in\n" "your current working directory. " "Place this script anywhere in your path\n" - "and you can use erlNpc to build native code for Erlang\n">>). + "and you can use eNpc to build native code for Erlang\n">>). usage() -> io:format(<<"Usage: bootstrap [OPTION]...~n">>), @@ -157,12 +157,12 @@ writeWindowsScripts() -> "setlocal\r\n" "set rebarscript=%~f0\r\n" "escript.exe \"%rebarscript:.cmd=%\" %*\r\n", - ok = file:write_file("erlNpc.cmd", CmdScript). + ok = file:write_file("eNpc.cmd", CmdScript). escriptize() -> - AppName = "erlNpc", - ScriptName = "erlNpc", + AppName = "eNpc", + ScriptName = "eNpc", Files = loadEScriptFiles(AppName, "ebin", "*"), diff --git a/eNpc b/eNpc new file mode 100644 index 0000000000000000000000000000000000000000..bab264af286737d6318aec3a5a35da3fc9133d62 GIT binary patch literal 26669 zcmaI71B@_Tm$uusZQHhO+qP}n*3*32wr$(CZFisd`)1~x%>4hHN@dkf>R!9DcT!i@ zx+_IYNbl}2WS0!2#t&q+u?>tIM=D(7HK{~zHW6_kQBFbE33 zzm6(^aK(QQ{xg97bN#pOf0sc0m&Ej65Bx73#J{If%x*#G{O7(8AOHZ;f7AVIQaVEi z2itf?=wJqfQ1|{{gzVt8xa}wx*Gm$mzj}*%nIX}#;P<`kRG^gOf@6-mon7qE){3r1 zN@C7sHlvFnxbnQOdt6Fx#0{wJb=U=SNveV;fvILqP=O7{`cr1NL1km|o``>tB#y}l z&OEn8PQabxR)G`1j_fWJn;CsrzOe}tv=M^T=KRvd_*1ubQ@`K0KR=7+hFe1O1Up@I z-J1V;19FF>I4Z%@cQDc%e4TQ?(nNItSU?~PA)Sgw!V>#jOn+#&FeD%(q|7P+1WAHN#%MV!(?xLK z*Io{N3@WXE!@2u@!+EO5ZSLnu8mf@bn4Y7X?OH2C7;*zNVNnp}AvHo~2y zUC~qc@I08>oK(?+V=3cTdtVbJWK0>YFA)i0Bi16VM8_B4PHU=$&~ZoV-D5gam+k^B_lMI@I%{s6H(ao8v{!UPUE zd)P*12JvdVi(&$&rm#n6NH36lA=XhLhz1N%9x{^2kYo+w&&)U{C7FM0x0(bMg4j#Z zWCo>2L@b|Z43T(!cv{3j(+7+pn<)-A$uQdDGuyfa2NhGdU>W4G(V$*B`JdCS3&EK$=TAb$iMx2p#!?8SS1N+}Qj9cV`?eNDJ*(2ZC zWM9rwgIh(2o2d2lL30O{7{=G`9n%;@E!S(J?!GUt=$ci)U;vq0q`o(|zFu=Y1fV)T z`nN0wgTB*qZ;t)Z^Uuh)EaE>_MgjZA-tzBXjRA{%{723*FIv5=>EGGp-yUPF=g2$@ z3$8u3O5YK;;@=u;t4v$Ti3OnB#aZwG-m7kvQGb_Ej}!0fN@)BtWV+CrYTdnFm^RyV7Nj=wsYo(hdvZ zlc-x;#PdMx)qA)-zW1r4-vhptPi1X?PYzRW)*rbS?M=aMRCD343iFU#)5yH2>8Gdi zNu;`34OF9lc)v?;HCLO@-&-o%^b@FkjpvojH{#2+f%E}fCirEwCu~&*|FJoc& zsEY2lQ@@8w7aRF8Zi>t|rKCxfyGUlC6kA%_aIyLoLF-Oer9DVLPRgQ`U)E@Nv*u)F zV8sviZu-9B&pXxcMXx=rVO3+gRJG_XXPt?tp^9O~KxgGK6XNsIe)^Y&9zpj7+dzGP zWzYzoBv;0|C`%%|H8xn0E(I7 z8P?T*0tNNIXE@pX3%CD?6bl?xlpgn+o0%&+znhtnED5|4DaATTvsN}+;0c?gX*W{Y zG_qy(S9>#eb9Xm0ZstElK}e7h{-G!zdlH0*#ntp#JWVJt7|{2UO;i^8U*2W;@INXD zf>gPknHHZ1q4C}`?mgZ!?dDHY-yi-?sJpw*SUGf{R%p02o#i$)^=^v;Bx2REV4AoW4mlU_a z($@Y#jYg%&TGmUuq3bY@P{omiQQbI6;2COM2-AZ)hm*#4xNZ@XX(eOWp#7a2-%$4Y}jk3jDkM4403M(6>~W{YEgXgkB5?yLkAVQ@W8HX&j z5E4y|Da8|-PC_bBQAV5|k$za-<%W?$5G_1J4Ur^N4+FkGCoClvN4*-kigbiC97T># z&T&d8*A?p^h!`1eW&zmB1v5Me6?vPa1YPSjnT>%++O-49TA{?5#KV0)!^NGjEB+h#v1vICoI zN0AA1--B$R<{=yjgP<67Xlwt?K?pJ3{=$Q8(6Vmy=_!C7P^Sr0XAl0(`3L~m_wKW{ zDgvOGXTDo78sB(}{K)Ffwm1an>z=cH`uGa`;oGx$>flwrxJm3cqsLG8#-?4sOS@UR zLAD70(Q`IR)Pr`IDjzR%Nw=5{YD1^%@nu8hq*cvpTZUJYAFb8~1}GobI?klX;(0yTfMpgniBpp0vC5k=yxwNu4Lcul4n^f}hMN zz9W+>7fTmo_jIn!|HH|&KI7}NcXBD;+xz_`&rN%I^1ez}?W^f?VD&8dBXoO<@AGr> z#C+iVc3^Zsz`|^sdit%oz34sRYReXk8Z2s+9W@qY?1q#4w|#Qk>3Sbsn#9fStrmY~ z?D<1vrApu~Ixd%iw>N)1&Mp&HBn~Ft4WsfHXrDn+L3F>R+zNGjNd;}l3;4c6lWn6y zjd-t;Dk>&#LQekVw2^!PmW1rMC_6p=IC+%BQ${Y16z=*wq?GLBVLh{a9V|-CRlR~I zO(q79_sibHjqfzP{iuMe63yu!qO4$9^m4HQiIc%hE{VDAmLiVQeV#DbxUy(gT+BU; zqo&nqFH2opo$8L$lc=BoOZI3u>2zv@iNoYVrSTgG@wv(0{N8AWzXQWJFh1>Woc_*g z@O%%nvk!jngAWAb`@Lvqgc%z$;)wIUzJ$;5|L;IS``_^JKai5#k&)B`0|0>WPl58^ zA>?FgWa#uCMA7heKzYX9oxY`e{lwK=Gl8e$0m7#1dg$8H-9dUu!VwSP8G}w8HFa)< z6lZHa-O)>^r;0F6JXa8@+7_g4W=ONdtyim#QeKh@El-aQn7?S^!o7ZN zZH4UT&&s6#{PxxFoqfIkyr#AG{;2P8)GO-G0Y$=t%(`yFcy+4d1$)V zT%jV1x9He!c@rcqH!~weQQfH~SsAZLOka8sXZ00gOQ?uN%+IKhp{fu*mm4)7KX1y4 znG{o!ZXZD*E-50bFTRn%loMTL-A4mT>xZKR)( zbyTX5dpq}WNm6TtSxN(c@@TYq$--$Wb9&4;iaS#Z>pG1Rl)q99S zE}bW-Kt8J1R~=|^tzJZFHhd$rvGrv1dD~LhS*YGMSZJ(-xO_auSw$K7!Uh0Goe7g- z3FOI0O)OW%YXJ>Q9nRH^ZCXTaS%(dCwdk+8Ks*_9yInkWr@3GvjHrI)gu-4-0lBjA zdl*|y5ff+=2BUEFco>_Yu6R=nletue4CX|}-%giMFjX^Ii^!^qp|iTFf&%lZ&cc;S9jAvuc_;&k5wfC1?}g+4{+c|aJTNaN+5AWjIcUZbxFDFdQN0(s3! zRtaBHJZWmrm}YY=1?9cN`M$^_D&Kd?dYOU)dGkn!rP4W z0S7bCabQ}@g8sw<$%Sq9)p_is5U+toI&DjJ+ogtK2t_<jf|!fFeZjp=YfDr)mIXi2_8sLC?D052EToMnyF}!Jt$Z z1!>0sp><}k;m!uv1WzI%d-r=I?jdUlH-K&vg-|lz3q`bnteM8@uwKJh9aZE<^caAu9}}zAL4^hP7(~ZcKHLzh zZc!nfstNU~3G}8ldU!&>ScKjal`Vl`fFY+J?bT$c(dJh4M5YVOi%d#QX;v4h)jF-<(By!fP1@=jQj$t*y1^baSVl}byQQY-(t}D`W8jKW;1e{oRRo}u0*V=m!ZqL% zd;&V%vK&PK7hq~s3hQ7d{k8OBu_93BLiTegoz+6F4be*(2m_34v4khkFm0x^IB-(v z{|*$E)j@EBBywcif*2zfg%8vWg`N=E#O6)Y#%&;LS{TL;7PJf#)Er*!oNVVpTU~e7 zIX;jNoVTh89DY_&xHg&z2pER7#S^1=lCVQGT5cPHM%5v9S`FB>s)-zq%|{?PYCL?? z{gI}zV{)vH4)5$EZwC&F1g2{nm%$n0p+nK!g3(wJj-w@m6C`p?7=u+NubLU&Bl_55 zoU;ConR{l5FkJ*-!~3YS$+E>pW;dz}FsPK>0&&zfs9XU`d;yU%J}`6mqdi_NIIoPF z9Rft72WxQQWeFT9o22|*Gelo&4C1?FZEin~$b zj)6=XF8>hF3?gt6ShGE3$dLR+a}zKjUQOJA7H1JMj3_BEr-9t+8of4o(5!svrh(qb zF~O)z{sgplQCI7OGcLQ&gA_d0 zR=^|SxZ1rq>niMZDZ2$J$W8DA=0(^}yh0698x8=Cx6d}94RSJ(WrETT zGFB7h1dQhCum)k~;?OD6g=i!~czPpNqfc=bnvOITPft=1R~Il*L~%kmO&8H#mw4HD z`zza1H+u-}=*w3Y9NAgW8lAt6ssrz24=@)x*N2CYCIDC2u7~#87acX+4WM@+prkqK z*K2X0hrxda@DykU(!4H0{O}h8QHZZRCQAvl?NxTyKSRwGnU?;n-)f_Xf5;W`X&T^G z8h`Dn|0UX!UtYeB*gXhb2F&R?>$b@N|M{nSuAR7g$BlD$CDFS0|%i_Rq?g_{{ zd6_z#q;GuVC|Ert5`4jB#fg{co?uFW5@W~afbi}d+zpzAdUw{f&VxFJ1_In5+BSCU zWy@AFUJSbW59`>9#3IT5OnsdlcvPl(zb(R67&fQp#`Q%?`t!}7bCU2jjP6`9no&ZB zm_bu=qLSS?@U!@=nMf9%_3!{)s3VXGaHBvS0SpRwh?2;C8$YSI03HG7>s|3-fk*Q- z`ldsg7Jp&IcKEWXGjB?qSggG&32A}4%^LXHu+z$z=&A)3iBm0ds{YEgIj4=;T9gdPsW); z=-d$T-s{HUmByB?)wEp`e%jAi$>13oG?BBF@QxdA-!D`D`}Nn_rCG%62k41@@>_n! zcf-qV(pMbbi{HDg@5`GUh24*v`$Kg4ygR?|@#t*Dx*vY}TyC%9t=^N=AG)Yr@3v`= zi-#+B`_9AMWbqBL89q;+$%V+Xj+1mE`x{?p3)-*a)& zBPadf6?I4Hck*!S?pvOg^BQMw`D=Awa5va+D)`AiGyFJlh3sosW|O+VUp>?fcYW#n zd=1XEQ_Q9MKRe@dn?1Gi*WGUm+T<5;JMTBj`d=?nKY{A>y|2fa@Y@A7{9Y}7_jAz?pC zsr5Yxv3_sOiNRax{HgpJGTYyRK^J`WxAl}>Dg5ter$%iqCX8-TD0d0m&oJ@0oi?ZoMuxy?{ z4}=vAIv?|;O1T}8Vtk-l(JJvgu60jcz&b-m?p!cYg};3JoX)(=EKyMW8mtpr@jpLv z&2V5>Tvi6B$xQm*DG{3owZC-BrP?@UJCZ6pvi?zUBhVm6is`hib2b*Y$#0})nn3~m z0`#w9LwID5_%ZX>b+$E_fP-&-9p&m=eTiWXHI@{{fd#d?#J;T9+uT~?wOwMKv&KFK z4dOn}eaED&98Gl;lVMp6Fz&1=$3BvEO6-!}A@(QqC$&#BAEzI4K0+DPRd4wP{NH<| z|8AlDfBnw?Xpx|{caY@%@xUz*006N5TU+(-6k&TiGfVS-H%hVU|G2p;sAR5|=X&ch z6pC?&Byt%F@AasgO;tk;IYUh*>y8I&ak!WxQ;Qdz81fon;-AsCz%|*fBAr!eL5;la<%qkAr-lRW&zTPr-R*!8^gMY_big_zwi#~M{EsTPmE#fqWIuZ#c+ zQ;oo+US>;A$;@lt7MT|hlac)@4brS$>=reuYp@?{654Iq+jXHbMmh|&#OB!e^Iime zJfVe08^8#f1#TNX%NkWQTe8wBj*T+g0?n;jP(y@kozw6&#@aCP9;u5rG{&14?(90I zE0+(n)&s)mRNWT~SjK3#Ju6#ly)CO3s$JPnqlT{y3hW$iW8KrC=drOgEVg5__~xEm z2a$>^MS~CT(gRaDZtbBd;FtQPxg=#uXW zrZ7nO2?ng+%#xxdD@TBQT;1p$WoE$I=2L5qr8S7QyCV>A|wMby) zBtw}w31lq?H&hX)!bu?yBE=uu)w_;LtO!%&)2s|f0E`P)vzRD=?Met#o(ElWK^al6 zu=Q~s495!)5j3w1^V)4vXh2z7NT;?YT3H2H$7!m|GLasS>!NNGVb^8p-(v(w7~OPkw2{9=eZ$9z1d#;<+@Od#&j(_iZ=Zx%hkoc*5h7zuK>h z0-7{`Vbo<<2SafJ*8&f=xy!NEgE7V(9P2&Dh~9yZv9T2rEI)7!@Sd|#Ox=M~><)7i z_6g9!i2OW`DdNssvG{!rDUsKIc6p%i7tP&)zFQP*m;?(*NeR-U5wTRr#ZUt^+4e)& zaWBpzYqV4taa9-i^D>FZG)VV`7Ck8E%sE|{mm2QDgMf@I)PRPB;ge&{JhR(8u}G4z z&5}q0tPm2n>H|0m2!aQ13E7FF;5CpAagJ?4k!1c79^TV6FX$B-3g7L{^6Xf$>`f*b z1XUOb7{NkiBV{LHGsU1aA<_3KN;!xZq5^!CBwOBtof$%-A8G2nDi|D40{BG-nw-;v zf?!`k2}iI{Le2OfLdGUxNikKjd9-N3IO#n@#Y3h6FWGBL+X6$FCT^4%A;az(KnZa>|9GM zln?qzEH5K7jgy_?i#>F(NfmMVdWB-84yK#$b`OPv zBrr!N3cWy_Dk>6v$snEk;)!Kx@DMr)$kB8i9-TFwo^0rGj2G`Qt`sL5FhP*w3#o1q zC+^N;qyI1;2k024F4t+LA2}Zf?AX+R_c%LvHu&LR?!t45Iu4wRxnOI4c;cX7ks6-< zbCbdjaudd@K)<(#53E#BGGf``xZph&%WKxAPREOdwA%Knqm$O4Esr0R8lH_f;IWsI zPuLCU(pMAC)x%(P-(hL%tNrOPLc;2=InseLL@xUtDL@Dcfl0Da93hPtgeD%n9r0Bc z)h0xHhzD>?yXR(?kiU;i&C1@mc;Ghl5HO?w#27q^L9Zf(e1MMttpHKuI%w0McSXL1 zzE-ABUIAO!7jI1Y=j$mm{<%P~UAPi{2$zWSc!2Vl(wnYkxk zDd(23iY2AZ*TxyRu+I74P|Ue}!ZEwk4+1uL(=qT3SsrYy*B>Bg$rrwd)~VF6y!eLZ z@=lxnvcEQesMeQGqy@BF^{Hv-=zt{I`L(>}JogtulkxSx&R)^|*-eE2UpgsC#ZvrN5B3JAyK0b-eak>-;;=72~sOhM-Rjl?&2KG@L9F?}*u_1@&h zY_v$8e)(i-?L47!Hrc7_6g2$NejC|LRC{huH`lNBe|lZrZFh~9mRC#LyOXcs{rdv= zVF|2nNR5Ma#(8a3!HSK7#%f9B6yJk;PN=W74^%8w(51#=N0bmPN|&LPk&QK}m)Vt~ zxj*1YTVvYXZ{wpdAJ+7yp#R%~+mn?$D<>B}Tjel4Nvf?WHS{S*E`Nj+Crn zlEWiymrS2@ItKO*I5RQ^^lI)hGY}Ab0=(@cz$4 zIR{~TTL()U)Bo`LV>C1!v{kcKmfKt6Q1Xs8)Q13J+9OfeMC)xJ>ykM*^-xS1BO_r$ zmeY!@#Up7TCFP7(000Ma?FO7QvjoCPs|@wC1On!Gd3jw*De+D$shCxjS>csgd8QV5 zWTs#9sMj6kVOeV$Zr*2q^ZdDg-EPBdH@SIon{#_iZdJRNtvh(|cA@d&PYXp&y?JzZ zv@Yo7Qk^_IuO{1|?Hyl%LNDmi$efa6ligS~*9uRekcYvVXCH>g!+dI#s^7?>Ou2K` z*AvD!&w*;!md}yqZ<-!S<-pmD_NP&?1=&+;z#3jeytw4AfT9*zmvwp$u;taS0(COY zua!($qCrV+#soO>0=Pn-QmSvMPN4YmA@0zqyM$a6TrD)R5Iga|)?8*%X(Rw5LvU#$7oNle$7R;f~i5I+1 zoqA6)?pzv`N#@w)13L&ykoXE+GVhO9Gi>MKc^|ti_C$I00-@yY*_ox<>5Q-^4j6l?HMbU}!#(U-RIoiW{u)|tsSf(0Xq;*^ z@j%IR^DHS#i#7E^ti1A#!qhEWHtEwx*i;4yvm`|z?>TJ;2)aS#I7+_^hnzzz6N`Iu$0f6IWzTE3Vl;-;+uLvu|6Ph zEuAi;k&+0VN9h?zYJcVm*&lNE^V8 zS|fW}YP)|!AX9R8N8BYvHTdnYafbKTVnQ`3D(vV(7hV`SPq#)5!QZPSqgk~^0qT=t zZa)DuHB)Li7fW@xPy_J$uT4#oWP0O~iqczlR8DxQ^*yJNJfTY^+hp1+gUC;k=UU)H zE?2(~2+u#CQraM(=04Q&v%-WciOVo$ohRqxM9VP$Krt8tjRPTr7+7d+-Vrv9r-WV1 zI62nRtB)O(HnI)U?M6!%ROJH+CyLG{8Zq_)NHXNKrZz{9IhyyIsbucrMV~P5YjbUK z|HYkOIU8~@T;AmX$#`$VU5gYI<&{@7dUVrv`AKahN3oPiY!N#J)%GTj?Eg8i;Ekwf z74LyqlR-^q%^EK)rEZZHy8z%7ce8t{>dFY`B==G?YaX>;po{pCRh!{%rMH@L&yT>Xr`Wu>$?2K!i`w{)O;&8eHEr&MV zPDFB3$6QU=O~mzSSSlH+Dyo|2yOqTt0EkJqg>vsBQ37u^R6k!F8}IctW3;e&zg?6W zXK=G&YoRKXQM#ed_&iNQ3Qb05#)RBDGE+;YC4*@yJ7e}?%s?Vcb`BRhb5vt2(Mv|h zLPLz{3|6vaGG#R7a0>HbI7SlT&rHT_!&%4-8ElaBR)bNN%Zs-*UtLo{XxK516X^xD z?MY5kksaIR3?k0rhy>u^lGKc&{bXxcOYb;?z-jgpY#=D3ZQYQOF!xdROG}LQM&g+A z)hO$Ua`i*-ZMuIIZaQT!E7osCP70+otsJ*`7wxZ+g}H=jT2v+zY3AdjTG>%%SkJhIda82@zB>Q{B%>yj&Q?|oqh9gDYPePh$Vo>?=`0?wb99J6 zGfbYFyW3=7~NpKyJVBF5NOR!m0BpjY}AP4j#jG@L6|zraCyz-iL_b_YWmvgtaQ z%w$GPxbdY~viChD{i{>H6UbLa;x;83SZ~uP?72jC;qgfyG-kqee;u!Pf-zV5uh8fgsJ#}8fcKCvyqF#f*uTxb5!Fr z7PSDI6lF<*Ik?yM%^E>M-UM{w1Zk`=k*K7x`X(B=CO~mA_rnqEL;Y(Qs8oKWRH&u| zGv|h+ymDA^WzNP}y&QxCC)wUHgd9Q7&)9c<=w0@Bh0%(YT5cB=Cil`fJFxWbL|SyV z{}@m0nH-!VkVQrwtVBc{>CDyuxrat86=x%Q@w0>IY= zvbC8oSx1~{FwBnzQ@~g4a~8N6gqbUj!SsT9)h=&d7K@~;c(zgFUYZGx%3%Vug1&aG z5_QXOtq22Tp=VgiBwD5h%@(&Pl`K6`JQzYcd`y4A~X7o+QbIl~}tJN&885j1kZ{CTPoKW(-uk(t$X^Iq4N6 z!Q2FMLPAU~H?&y0F}`;WjOSQlhuS84Tz~b^Doh7BxTyUM$7G9OLH)q`(kCjatWhKHd#aM6|&T>wt+R-f^?| z<-q8~^XwK>e4}8lvKxR<_Ke|!9>cq&BZiStKko@<)kGa7^njGGskpHbJr4;QOQ6;v zF&sATNS*=T$xR|O_3mIqJ%{q#_aw~2ZwrYFS2OM4Kd_Aqv10Wa!c{T^Uf*+Fh=uP$ zHID9e{@MD}gX27|MvJ%lG7DD^zyW_iYy045;k&q_a${P<9GvO3=DEJJyfQ)bIka$% zO?zXHHOJ`z|HH=CNDsLwqHg`5;adVof4yv(=K4p1;N&Db)@IOnVE@y>256Lw*oa&< zmFz^bUiy$*H!6G3T!0bsz0*pWsTVefi^z@GsoWw7J2R`xuC$+Qcrd|}TMQc|Xd5z7 zT={@nhShv)ACAXU^U_oqt`~XA-Kchs^hIIZ7_olzskTDc0@YiqxL0503sZ5)!x7J@ zm!D`tK;@g%vC=>qeD~^4HBB-pYwT96jc)P9qMw$ct0BuXZqr_vcf!{-TrWB;6Bzy! z#~0rnWx%Yh?tz>Iew2H3=A6}+wye^Ghej5ph&00df!I0VkgIrWTTVC0jnilc0xF3+ zTPOY%HzFtR0bJ}Z9-ycJt6_HmRzEN+Q0%TCFj5InmXv}gJ_r%tr9bD|)F$ZqyfgZxv;azwnTF&oIL>qmL0k6lCn~ zDk)w-^Y`HP0iF!!tHA_iY=N2)NDTbgTm(xa%a`Fv!3J9KVx`c;k9fh^@%91075`XO z9}B8fIDgpIw>eM#9IDA31la7TVg`PRI*%j2GBG@o20o_+Y`KRwkWWn!Al@yL7m+1g z8$F?8)~q2Y*fKDp1jN(r*lzn$k4|kMMC@4#NG{uvgx*=FfVN|O&Mm;`&blwwZuVji z@I;rOBhC(z7y=JUIGO0d!0rRdSpG=NscMFB)!ve2<$O}tT(`H!Jy&+5{Y<)hAzH-T zl7U~B%BG=5#`~&~ykQJUVOyLk1?fX+ z=<)V-GgVZL~q<>dP==#dvtMDzoxi|h*epC zC%h$g_=_BH+dS~tnP4!#z|%P%i?`ot(?y?i-UHUy-VbOj*dL(Ne*Hb3-4nyuUNP)i zhM>&ea3e(aPcPd&kHP)k&~SW_FI-`k?m!DJiXA8(lAWcuKX$v``iJ)ImF_G*Eranv zKZaXl+$=HTLz^Z1TckU1&tX;y{JaW2uvpFW!)S05t>v z!W)$aUl16*w@iFB82Gh}|BlT6M1P18e2XvOeCwE65u|Qu#xzIf%sXh z3jNXo^H{o`fZ^5XS)jrLKc;C2|};n6}Zt&kAXuQ5|dfGBE$YcDs=)jQ(mq zhpoes{-QqB_qBpR*xp`4tyui$K$l)al(GJYK$omPv~=+@KXin00+Gs0cL;&I++VT~ zK0rYJw{8p*9esoppJ+~Yz9L_Mw)$A4UeEEMaOadel_!6f^F6RRX&fKmC+2#c-?*Q) z;mp1q_c6VGuYspK`3@6I_yI4#pK^ob#`DTN3j&Kg7QP)Eb~S>1HdUx0JZs zLCN`Zc{PY1(HpD73es!-aUeD) zWQAF$5E%5^%#oPxNU~qKLym8kN4w}<<2@i*)Pql?y?XnHWa-5=%ZK2YKR^U45li%( z<=SecJhr)D==2fMUkfRF!^&!koxW0~gY8~frR-~|2FU9#nA@)XW)D}(-D`1g!sWV9 z7SiQ#dIOi;>{NF7mOo_L!n!2CcdGpC6?+RW+-1H?mT%iWrptD#KAM+rLq2k<8h0}@ zOlO_>r>oszr>foKr>Y;<+n<-p+g%H|TIujIwA0~ctL=IJ8T%LUo#zUM{B{ra3Wg~A zejkKp-O)gK50I8R<9t&{;~#Mw@)iuJ&Fh7Zh^DOz7o&BKBc189{!yD{^Q~O{`zWw ztDs0WT^ER-iGhVObT8bgkZM*Zo>iA-}xm6BR2RxfwzbKS^X&oPi_n z$UZ`JL4ij%tkWLC8|}fd7kV8}kmwzfzFb7?%aE<%ko zG9;+}PL;9%k2HjMH#p~)VXtchHI{-cPYG4YYff8E0>XIAU$*>!2Xe`Sn3O7CEH^;3 zNz-ZPKnh3$OBDkVo5=uMyARTY>#)K>je^i0IGuaXHW~J+n(`DEd7gVDa`K*X*r$X! z8<`yKUQbG8fbeC|g<^zD;e_ z6}$z1@et73FGKd2ep)tPcBW4O)$nTLaHs?99*S~0s14+3vJz{-)85rN>=d3U(H6lT zT+?@w>h)oxNJh$CNJXelT7)TO8a55{)4*}nroN#(oBCAJIe8K@sxbpIqK!AeCt81x zjdZ<_zZlp7p^rI{U@o;;qlhpVvKIj9S_9HUiBWc7hiV<^Cy=UcVI&Myib{Pxf)>hD{gTNpRnM#FeH=khkJwVZ}^(SO&q?}>9k+B2R*UhIed=BhXr;btSr^k$CVulMC>%2_3hf15hXMsow4EqT#u$j zqBVCIbck_+hkqGpn33HKFnBhG5pmD+#s`dry@5~yn+3!Igmo2|IERwxkHJDWz+>TK zL9^t}aZo9!Eba$pO;81C3&M6cYCwCm8pwuZ$;1UzR2c4ZlrV#VIbA0lMXirpVOqHCD8MUZGrXOY;_`!rjjrk*zxkg6FgP8?85xFlTm?gvG z#?-z!X&|22GehBrwV{GJ!;XP5^fppBiZnb-?gGV%)o`9TekN6~hmCpXrlqdVq;z z&Dn$sQ7WVzY&CPYShstr0R4_Rl+3vy6N)GheKSmi%mpQ1Pu{8b3dvoaUx z78Cj2M^EBm*TH~X?PrUGeK zp>u0P|ACLX9Nu|7mqy*kNpvoPb{+hdE4O-gv)#i&tg}Je-q_?q`8y^(>!+_^*85l2 zc@iC-JsGgx|K`KT+G*6abwh)A^)`Ly?(|6K=+yy<=3g)`=a%WpcAbq58V~4Q}m?@#Y04w94m?6&(a!%QQtNJKdIj=3rJ8^oz4u zyEZwzeV!Hf1R1fEU&G3pYi@GwA$dpkfO^xA=UXI=Fuv-Bg_&tKnV_7(P@sX?!^UUZ&)87{_$sx>>I1I+lQYf~rfQqfn&n|a+wk8SzPppdyl}agrwpd)4~M*k%~R2R z)zD}3k(~6}ed}eGiVk~*^+D!yD`_tldBOhkv*X?qHgS)RUIsrtrtV5{aqrD8?D{`C z_N!mWYug&OBAe|qinAYI;<)XPd!bc6&(C@N#KYK`!_H0m@j11u*2`&+MGr%X{vDMv zatdo7s}?O2-n!|WwND^Rt2Nt$kE|M^Ph;^{+NLG=@v-+>4>jFAQnL0&)g|nk@)Oz> zEu!Lf9j;ildiD!koP#;}2hY5bEMY$yW&3uYHl^kUPO#$R#V1{bnwxRe{!!e#spwo{ z?7j1Otxg`7bLff9!|t_j4IJX=Umc#LJC70-X?t0w#~a6~ot$#@agwXE@-S`1$}fCh ze{XY%M~vO`Iy)_!`%5%cOboYvs!f`_x|0l=+fE$9??CvrVT`dtH`h*bC(({>6q%iRi7Y{+n5BX3IhjR<8qe z>sLCoTKZdc1dA`R{{_rQZs%+ty8bsFcCTl}Yw{g7FLZAz!0aI&@A^Z9)Fo40boPQ> zr*VNWc@=^-%~3ONcT;T~5^N@y^WavJ{922($pnI7@n`)gAaS&?#3TE3O^2>GqpMn6 zKhxE9R;jG5)yLKjGCkdR>CMK&`DNLK*6xzp%m%pAUB$io#&Jc`%Pl|N^qmuLcj=aO zTdi5S*J%|JPZui%z11M3s{f_q=C9|aZibEXVdv5C2S(_q?BBvWE`2p0Tk+eC$v?k( zkA08p(J;+2*U8$iH=j%FT&A8%3x~_Ty$2H~Ma!#(?;#(_(88VnPhnpfR!6!ui#x%c z0Kp0F?(PY0!QI{6-GVy=hhQ6bm*5g$;}+a~qnA17&dvADoHKXz-(Iz=-+p@kskN%A zqvd6Zz38Woq6V|Gd?E=mE0IfZsNj?q5_l4tn$ssZNAjW^Rpcuhs}yAQ=q}eZyi7A!j5hB z-aKg!?8D2S9zcoiqgpFFf2nYIxQ|UNjmgm!gwXW?p05G~Y{OgiqKIh~GnXn~kGtC( zLy8A6D@PjK)wq^jXuflS4m_uE;`l+I0f8YNyOcDoael*@ZfY3_y^!yaoru5c5Vh}A z5GtBPXa@|U&$N)T7?ORzF~_nRT`5+hKZO7lx8GRIU(UXtK~LPRV-T-z$SMao-F8r6 znGv2>EerBm${jX?C@Ce)7BW12r_v1wa0<^l?7wAe(Qj5emdR~trX zq0<^^V?>n?wF|Np*hXqlOmuvo~+d+mRe!&<{?=yQKhDr z=vO!U96H#neXw;nd70aQIGWu1XgTx_$RP_#l#dCR1wSh>Fx`z{y)*r+?1K#UF8PZca`B zBWMH(ELn-^ncQLz7*H~RsJWOepq=LivO=v)D*4QB$!5vgI$i_D+YMg@7bX-lA6h3C zjrxqWk~y^mPjqWl;iqiBZ zlNUOO171#u?_&von%rxit8Tn4H&f_EgO$lY+W?85-QfT-0jD}vcMa!3cc1> zrFE_NMVcooy~>{Q9QxH`t@n&!)0yiJ?=M)NdM21yo#$G$Ci-Q1Kc6x)igxh6^|z~1G{wMxh1zpTPU1YA17VeM)kZB zwKb7CPnHEXN9*(Gw;8?lW*Ly3I&Oa#)Wz@ld%&a?|6_HUJuF0UNs52Fjo~iSu@8O?+TeoR9Ns0k)8> zJ>X@Ub^ho_>4=%>T3YENZSUBb5^;{(dIJnm;y1`NUiuK^l_KNGhB`A%;MI{suz1Otf@hztatt@WUkhi45tguGB zM;}FCFq3lEO?clN<$F;2(|msIW&U@Gv=IxeEmnu`V&1!_$$^GzFgAFR>3CG{Kno;e zBA%b6!Zt%cjIE%FqJ>$Y^!Tn*1fhjpKz|?%kM4Pyf0ot7^E6{}64VVhG&-HV zO2}<-@*+D%u)&@woaPNmXFmw6p=W~)wwdCcT|mbVdD`929?1qF_u%Ggi`g3 z-*kyNFn7es&`P=)Oezf$R4wuFyXd($^S>XMYb?u+WAzRR&RcA**)JWywKXtbJBx^o z2#e(kWg$l;OO=3zfesUghGvPWtQklX(NGcUpXtu~^d{557)HA0Tsy-Oqj-jH8%CSa zF{j*1ReDE%heEfCsJ(&uDon&Yw6+@N>f)#!jf@N*g#(p|ugKKI_Sgg*H=?vmVda1~ zllU4JrHfC1T8~SBV{QZ0wkRnk35^FmAkjPsg*z|+gF65NdK_pST$Gd?3>JqP!0#=# zhkZpgjTzS+g>!-kdP)tw4;F`(d?c5H>sKM^8=4ek5SV8qS)(GsHw7OukQDwxsn_z# zsMpL=A}UyUf^)nsh|PM&h}TUf8LzcNt&~bA8cTsZLPIXj6VEE8J`G}0>ScfHU zj0$m>^lhIcwp~h>tUB>u3nZ7=9+~a3DG7JOj&+HZq*lYQ#{58`PEzfWg&l&rm?t6E z#4kINml&Y*W6G|C^$}NpaEKc4ccBmhQ&41JVB7xhaFK(BP@=(&0&sC5F!T||{Grp3 ztihm*!MrxWviw=okoo*^&S9>4AT|&ogqYyKH%ZXNf+$Gdk^39hAko2A^zhUW8T;Gl z^De@>LeeZk-UfJo0(%!oY7dbGRnl!?51$mkbB>x6M}qm_z1<5@4jAIp&^Z-KZJU2Lwsl;c{kYVNiam7~a5;IpsKlN4L{ zZ6DW@CR>PVX5^ZMCq!4FI!}G3V*jV}$Bs~4*}W;R18bhRHAUjQ+?mM(><5bHNZ0)L z!qBBqKlKHNp}F-TrJ$nx>2XCk5*4K+XCj;_zetfOi71f7NGs1ovr*AY(JF~S$UVPm zXuLxH_fbaT|L;WNU&a~v{O^&%aKXTy$icwy{@$$WY+>#6uVox(4McAY)z;jD!f}fw z<>G8157zi|q!2LZB@q`bYT*DS8EvAE78!EOLK(s2Mf8!Fs5@VhQiBkNji4`jBCB0| z{PP&@%A<4_zPPF50B>{`e1>nzkL>PF9be5HmqNYncJFvu*FkSiD0g?+tm%Ln&qNZg zE}Cj;?N2GC^ytCYj8MW{=1~X8ofSpzTX(z>|mi)Cx)?LDIyH|-ij$#!`=rg0*VQp75MuGr0p%Qbqs%ZCynf_mjG z7}SXedDqYs_vv+s&66;>(x#px=F@Tp9D3}Hf`yFPczAIEEb<~fFf-Ul&`+HjBwykN zNNb&Ep=dBI>K+QFWy~{9t-|}!HS@z6{j;5FqVxx>@L~KrShf4WJD73jAvJezH52TO zY9fRhihTVwNf4o*JH?pLDIH>ywEH~0FcA*H?L^`l`knk^nnKZaq&%r{75iDYzQ@G$ zxYFv4ZrLeEHA>N;qE!8y-5SR>)iPznj>u>eT0_49Va&0OEFUAnig?m}ZLy4DoGafG z)54gZ7rP6DikqR1z7}Z_V_LzSG$`!+L@iCE7$@mtvpFWEg5rhuWk#m@AnjVriEbtZ zQMVFxL^rc#a%&8I9bYYqGIkS!o?^;p-P7EZ&yE{dl_DmoqNoU^ zeXZfiS9tW9AUuH#OFtn2iuKxF427x^xwAR88{_sCCa_lLezbaMd#aAF#rTH3U(->h zh@z-bic~A+S);aTpB{~iX9IeIK$eu=(`3%hl%qX0xlTWZ$^qDc)c%$3MM{XOR*Jlb z9L4-1(9c;Q2n=-NT;VSIQd&&_mgo&=M)ihL=Piv3K81Yl!BWX;NY8Xk`A%>R7 zO<2gbmQhBKn+~c=EU{>o_hh7)+ZtIdPRcAH68Bp2lZ24ja2q6n@O|K`$D?8Nx^b+2 zSVll;iM9d*#$uCM&h+d7R8$Hd!S*2Bgma0&U*b^$_SNI@=@dAMHgXGAp%J_kr6PXx zkGy6%I|^%|%B*C)CsC+NK-?Nn3x1lwvbDCy851Ez6w&2>=%6F_D`95Pm%}y@RTw4s z5N_E>f?KYN8Y`DPXQ`PyN}*XEKSSOpZ>)*B8p@-N&MqoDx=bCV3aqP?#{Tw$G;5A8 zP!vGjlBT(Oh-Bf^d24+{(5g}GL-K1R68C3S`kBJFLs#h)qq&k_KJ?*|PAbAz!-;4O zKWyde2(q!$tBm;WG@!IxmKea}*Mmv1(xI_UD(DEjD$7%{WFt*`czSgBtO(^t0YHL8ubWutcz9$q9ahCl(Fd+R>h}WhFQKbrk*) zkss;?UD{~yqMDJVUp{`tgs)MNd5r9zAkoD7n3eO9W+BmP(gk1a;B!9FR#q_=uRY9x zRpkDV$Br!N0d1SAa-^Zm!BEZEjdh|Oi-MDRPHEjwdh^Br{kh4*Q)4IyxCd4UUb6jT ziebeMxcc!g=QF6PT2=m8a2}EKaCJD!dLF+43tKRMHP>}z~XE3R5Q|>6zW7Yfx z5Mz&PT=UbXKCN5{-bJQd2YNTK7fPsD?F(EPeqlL7<&uQCLIlVW4&6$H*+oB2R0$Z0 zhv2f)r@~W^@eXIizW5&P@Y70Tf@6nP)$oL)c!PZl6(Oj6wg5{eqsYFZ9N)O~rw?|b zd_>|vPKn4CT+3QC+scq$F=?#r^?v5mCrc()??U0wo^$5&fl^~(i!pJ@P12v`Id0R_ zGwkF%AES_(eyGbF;3h=xhNG#0%B2Pg^Nl`Njro)EsL?1BO4Zd4^KyPwKVb@Dn)i-n z4TtPSh`(pR4Ak`MkJu7ruY`1L7nU&efhhPC|E+8U71uaP95;eQ4YQaAD>0CdyTZIN zVv#43B4V$-w}TIVU?k_#g>Um>L361Wf7y5{wzgc%v}gya05!Z;IymG*ymw<+cMPCa znqgUq`j^N#7kN7IM}P8#GGK8)Z^##qjJ-(1K>P{@>~96Vv*@3;Yb_mFz0hcCnk}-# zm&K{5e-^J(F$r3@h7GEuF)6YqU?8)gxuS$1u4H_NqCJ&KUleB~$4&{}I2DO~JtS*%SS0<>+~6}ntXKS@{ESAolZXx&$FRxqn0EwRk0INx&V zPajrB9sADWXj!gG_MDbUZx0Y>){YL_5t(DNA2$2mz4gJP7-mR=7kR za*E0wkG9MROg<4a@>%37r3yKi!qXOt7Bd(r2bK7Am=>&FKA~jC25ToQ8?N4LSWDzh zA}-N_U!Wz}>v^kd?1UA=IvO&Tr3fiob}8;T{NsX*oe!?`to{RZQhmXONIc@0Kr&Z6HaHS@|O&-~D}}D?D{Yf^@85E8MNx6-fpGb_=ZX;qI)du@x0$-?7#Kn6i+1-aJcrwC^TEiGAW$$zzsdghPZf z;FNjQ;|8#mt0XRPG_7>J($a!Oy`q;`^BUxhz1cPWFmu2z}>8EYRBdD&p2c$a-jqN?l{u_-YOxKZ6U zn+-Kp$+)E6dRSJ$keH%Btgb0#UdS|w+$gmaLR&#kf zB@^{sXxe6;Rf0D2l4;beT0(v6KEAZ`bVDS7k(Xj6TpqE`(fd-h`=nIC(8kt8XWy7H26F6LME+kz>k0r1w1xMceKnnLJzx zVMyY(Vw$bjGm@{2&r2_C9}?SOYxekIG?7ah`ks#lXT2P}N{&9$-kHK(!zWapagT-u zI3XFc4PyB^iufxhZs0^ZxV(mzUi4TW z&ZaSuH?!wybbi_Cc{L}}ut_Y2S-v${!J|di8w%zdi#=HoT3o;E0tdtf9 zJUIj%!*adfpqZ+J;I)Z|)Nh0=rK&T@2Z~Gz5w&#__p4Hb^LdnVuAtP~lbM^TY3W=` z2NNg`G%5qI^rxAsIV2bxddhOyzHZTo`e%KKzp96khxUfTjMzyh$5t^*cN&LI#*Eqt zgW(QNW^e}q4L#pc4RDM9oWZ>6_FUw{m>9{hB*Hzesi{R-7hTjQP25Aegu4~+XYtlm zQ+0g~fMCSk`K(V2bu0cNZAUPCs=$c1!-RcnxG7n>{gc!KNFwPEgdK}3E2pduadn1D zK|0nxq>eO(d8}_bXMMmT{I%!+#;Z$TTulj@$w$qCHaE_JXlE+_BFOMo1gY!ni@)#2myw4hV4-V$IH}-^C5!4p}U& z4BRniToAe%$;kwi*gx26Y@J_Y@<%Ce;Cb884AK)$9(N=^iu6%$-)rImTD~CVeBBCL zZl;5o{N=t|vCRF<7Y!nu-2bTT&7L&t{P-c}(a!cLKB;;efN(x7(T2 z;rkAj=^AsHfP3s*p3qbPrTAX3=Z>YBUHsK0D+hG4hM9AuyyIHD!C823jIjXV9cr~` zEV{R+EipL1#dLQ=cwMFOf^~H7>fTnJo^aG|CMCae!C7}p={vq-lVBeLEUGx94OoMR zX}0r=*u^F}rTtQN8^=WGXyMb`kD(fEgD2GMhJCE%BkH}7JM)e;>pbW)P_qjjmBH~m zqOno1N&_~;J)VK-c_mjP&VcUk-1)mNCY^{@?|legw{3F>UrBPihHVZ9&wkw#!?$zV zd*hUNr5sVQJU!_{v`RAy-GnU>163bYchqNhmb!QweJ;JvpF2fm&~yFBvmSTGSM!^2 z#_H+#RqD%~4uADbCdr?DRXcxyL>}Y>44L?;Y(KXiRkVyAx>f?8)^X-1yuaJ*QpH9_ zohH(EdTn)exPQ}s*bky-#mdEAWCGp7AL>I8s&!YJ zZ3a;?349kmpFP~I^L(3}>+rD!#&c@*%`5KZJ}i22V`e$;#x!prfd7w6e74lh=luT7mJ3+?*sA&ssB|`lIs;50B|8@zjs8wjQq|CF|MeBTq{Q zw7Gt_2V#Alh!}!TYdq}EhCNjuP!wN9+pm8K44LY9ztno2(sx|hS}o}9q-U$|J-0kH zDek=U;AN@01{le@{nXLf8GG)*au|7GeC2qJ;GEFY;Mo1OBH86>CARVF>+-AGgT=c2 z#FL%uDemP!D=TDc3d%CbWm*)2<)xwPCPWX~?EQ07D>Bt2UxU|S4eNsL`t?wib`+!c z^~K>0XJ1c&rUBZ|1sAuYyukLw+_aZsd8rmq_=uO`L$i26!7ca+X^8 zWWMrpBKTbJ&F)0jFMa=N0m;4S`mVvuGMBgMAe+(8=}6cQnA9POyzJO_sWP5?mo*+| z=k4|~=w?-=Xb z`Zj6$ues1fA8Sli%mKZwQptg-NbFgdc(JXUZ*8kZ^p$89h`ojuwZwDbr!%YRs}rZD zro4c*MlEYYtb7S*1gxT3k$xyLTxpZ#JZN@iX88{kr25lftYhm4rxVZTN~UH{(&>bl{MC49w4M4!!1U{!SNdMjsaeifvwb5TV|lMh zvqHPGtNJ>`D2u;vzgxm7OG(K=D? zNFgQlx%lFW$Y&POs7M`ol)=QvrNjXzaWqaf4$q3zM}l@MH8Jtd(F4Z^Ssh<9kax+@ z!EI8~OLm*V7uAk+?JIj5m7S1={--HYb!p(%%p=ygT>UFXxs3*`XgY&i|C&>%3Hf*) zK9(B|5iDb6Bwp*`r*RE=zBgCaygn7kaZ@9aD9wRmiT+C=4ZvCRC^kbExkXL7yzZ(4LA>ufbZL z3VQ!0SYL0_ANMRThCy?A z4ktb*W7wv8imqr5JxY@2cE%Vl)VAOl&lk}WLW~%eFWSk6HK$RX`B+YoT!8tFi(mXC zi9CwO9K)vAc1eMMPSS3M*V!Ltp9y&eHD-$XeF+Ae1eHZrXCeGUr(Q&(CDv`$kD$yNFeu;Qzby@gKazeybO6ss}g( zCggw5?0Azt{#AukYB{9(uaXBC1k!2d52zajp15`VSl{*8h7_C|j{$Zzwy ze`4{6;oYBA2>$p+>OUd;jl^FK@P0!u;QS5Zf7s#u6O}(KO#ZAw@cIw`g!4B-f3-CE z4RrE%puZTL{1d4^#K=FZ5Zq7ZZ>0W$^*3UF6(@g#wf`OL_s9NEoc{Qi__GSZJ&pdx a={L+99cY+8?nQmO*r33`>fY`K1N%P#>Fs&| literal 0 HcmV?d00001 diff --git a/eNpc.cmd b/eNpc.cmd new file mode 100644 index 0000000..6c7a1ca --- /dev/null +++ b/eNpc.cmd @@ -0,0 +1,4 @@ +@echo off +setlocal +set rebarscript=%~f0 +escript.exe "%rebarscript:.cmd=%" %* diff --git a/ebin/erlNpc.app b/ebin/eNpc.app similarity index 57% rename from ebin/erlNpc.app rename to ebin/eNpc.app index 76ed1ee..53d695d 100644 --- a/ebin/erlNpc.app +++ b/ebin/eNpc.app @@ -1,9 +1,9 @@ -{application,erlNpc, - [{description,"erlNpc: Erlang Native Compiler"}, +{application,eNpc, + [{description,"eNpc: Erlang Native Compiler"}, {vsn,"0.1.0"}, {registered,[]}, {applications,[kernel,stdlib]}, - {modules,[erlNpc,rebar,rebarConfig,rebarNpCompiler,rebarUtils]}, + {modules,[eNpc,rebar,rebarConfig,rebarNpCompiler,rebarUtils]}, {licenses,["Apache 2.0"]}, {links,[]}, {env,[{log_level,warn}]}]}. diff --git a/src/erlNpc.erl b/src/eNpc.erl similarity index 71% rename from src/erlNpc.erl rename to src/eNpc.erl index 1212810..9b94263 100644 --- a/src/erlNpc.erl +++ b/src/eNpc.erl @@ -1,4 +1,4 @@ --module(erlNpc). +-module(eNpc). -export([ main/1 @@ -7,13 +7,13 @@ main(Args) -> file:set_cwd("c_src"), {ok, Dir} = file:get_cwd(), - io:format("erlNpc begin compile pwd:~15.p ~n", [Dir]), + io:format("eNpc begin compile pwd:~15.p ~n", [Dir]), FunCom = fun(File) -> case filelib:is_dir(File) == true andalso lists:nth(1, File) =/= 46 andalso filename:basename(File) =/= "include" of true -> {ok, CurDir} = file:get_cwd(), - io:format("erlNpc cur ~p: ~-18.s, cur pwd:~p ~n", [Args, File, CurDir]), + io:format("eNpc cur ~p: ~-18.s, cur pwd:~p ~n", [Args, File, CurDir]), file:set_cwd(File), rebar:main(Args), file:set_cwd(".."); @@ -25,7 +25,7 @@ main(Args) -> {ok, Files} -> lists:foreach(FunCom, Files); _Err -> - rebar:log(error, "erlNpc start compile error ~p ~n", [_Err]) + rebar:log(error, "eNpc start compile error ~p ~n", [_Err]) end. diff --git a/src/rebar.erl b/src/rebar.erl index ee71287..dc2dd20 100644 --- a/src/rebar.erl +++ b/src/rebar.erl @@ -35,7 +35,7 @@ main(Args) -> end. log(Level, Format, Args) -> - {ok, LimitLevel} = application:get_env(erlNpc, log_level), + {ok, LimitLevel} = application:get_env(eNpc, log_level), case levelInt(LimitLevel) >= levelInt(Level) of true -> io:format(destination(Level), Format, Args); @@ -68,10 +68,10 @@ run(RawArgs) -> loadRebarApp() -> %% Pre-load the rebar app so that we get default configuration - case application:load(erlNpc) of + case application:load(eNpc) of ok -> ok; - {error, {already_loaded,erlNpc}} -> + {error, {already_loaded,eNpc}} -> ok; _ -> rebarUtils:delayedHalt(1) @@ -82,7 +82,7 @@ help(compile) -> help(clean) -> rebarNpCompiler:info(help, clean); help(Command) -> - ?CONSOLE("erlNpc no help available for \"~p\"~n", [Command]). + ?CONSOLE("eNpc no help available for \"~p\"~n", [Command]). parseArgs([]) -> {[], []}; @@ -110,7 +110,7 @@ parseArgs([NonOpt | Rest]) -> {Opts, [NonOpt | NonOpts]}. usage() -> - ?CONSOLE("erlNpc [-hv] [-c CONFIG_FILE] COMMAND [COMMAND ...]~n~n", []). + ?CONSOLE("eNpc [-hv] [-c CONFIG_FILE] COMMAND [COMMAND ...]~n~n", []). initConfig({Options, _NonOptArgs}) -> %% If $HOME/.rebar/config exists load and use as global config @@ -202,8 +202,8 @@ saveOptions(Config, {Options, NonOptArgs}) -> %% show version information and halt version() -> - {ok, Vsn} = application:get_key(erlNpc, vsn), - ?CONSOLE("erlNpc ~s ~s ~s ~s\n", [Vsn, ?OTP_INFO, ?BUILD_TIME, ?VCS_INFO]). + {ok, Vsn} = application:get_key(eNpc, vsn), + ?CONSOLE("eNpc ~s ~s ~s ~s\n", [Vsn, ?OTP_INFO, ?BUILD_TIME, ?VCS_INFO]). %% Seperate all commands (single-words) from flags (key=value) and store %% values into the rebar_config global storage. diff --git a/src/rebarUtils.erl b/src/rebarUtils.erl index 72fedd0..0e538dd 100644 --- a/src/rebarUtils.erl +++ b/src/rebarUtils.erl @@ -240,12 +240,12 @@ processingBaseDir(Config, Dir) -> AbsDir =:= baseDir(Config). otpRelease() -> - case application:get_env(erlNpc, memoized_otp_release) of + case application:get_env(eNpc, memoized_otp_release) of {ok, Return} -> Return; undefined -> Return = otpRelease_1(erlang:system_info(otp_release)), - application:set_env(erlNpc, memoized_otp_release, Return), + application:set_env(eNpc, memoized_otp_release, Return), Return end.