From 1d44a208f421d111c4cae5392adb7d341c880354 Mon Sep 17 00:00:00 2001 From: Dany Thinnes Date: Thu, 25 Nov 2021 11:14:40 +0100 Subject: [PATCH] Erstes Video Version 0.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Erreicht: * Öffnen des Fensters * Anzeige des Text-Editors * Laden eines Textes mittels Startparameter * Prüfung, ob der Text im Editor sich verändert hat beim verlassen * Falls sich der Text nicht geändert hat, wird das Programm einfach beendet * Wenn der Text gespeichert werden soll, wird entweder der zuvor geladene Text überschreiben und falls keiner geladen wurde, der Text in die Datei "unbenannt.txt" gespeichert. Nicht erreicht: - Falls sich der Text geändert hat, wird nachgefragt, ob der Text gespeichert, nicht gespeichert, oder ob der Vorgang abgebrochen werden soll. --- Versionen | 9 +++ phED | Bin 0 -> 9424 bytes phED.link | 9 +++ phED.map | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++ phED.¶ | 88 ++++++++++++++++++++++++ phed-file.h | 43 ++++++++++++ phed-init.h | 31 +++++++++ phed.c | 117 ++++++++++++++++++++++++++++++++ phed.debug | Bin 0 -> 45908 bytes phed.o | Bin 0 -> 1976 bytes unbenannt.txt | 1 + 11 files changed, 480 insertions(+) create mode 100644 Versionen create mode 100644 phED create mode 100644 phED.link create mode 100644 phED.map create mode 100644 phED.¶ create mode 100644 phed-file.h create mode 100644 phed-init.h create mode 100644 phed.c create mode 100644 phed.debug create mode 100644 phed.o create mode 100644 unbenannt.txt diff --git a/Versionen b/Versionen new file mode 100644 index 0000000..d15d8e4 --- /dev/null +++ b/Versionen @@ -0,0 +1,9 @@ +Im ersten Video wird es um Version 0.1 gehen. Folgendes soll dabei erreicht werden: + +* Öffnen des Fensters +* Anzeige des Text-Editors +* Laden eines Textes mittels Startparameter +* Prüfung, ob der Text im Editor sich verändert hat beim verlassen +- Falls sich der Text nicht geändert hat, wird das Programm einfach beendet +- Falls sich der Text geändert hat, wird nachgefragt, ob der Text gespeichert, nicht gespeichert, oder ob der Vorgang abgebrochen werden soll. +* Wenn der Text gespeichert werden soll, wird entweder der zuvor geladene Text überschreiben und falls keiner geladen wurde, der Text in die Datei "unbenannt.txt" gespeichert.^@Y*à \ No newline at end of file diff --git a/phED b/phED new file mode 100644 index 0000000000000000000000000000000000000000..6e07fcf508af1654f479227fe66bb0209eba2589 GIT binary patch literal 9424 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 + ___exit_table68k = 80 (0x50) referenced 1 times + File + +BSS + + + Hunk #2 ( Far Public ) 568 Bytes (0x238) + _errno = 0 (0x0) referenced 1 times + File HD0:StormC/StormC/Lib/storm.lib + +END diff --git a/phED.¶ b/phED.¶ new file mode 100644 index 0000000..bce8f09 --- /dev/null +++ b/phED.¶ @@ -0,0 +1,88 @@ +Storm Shell Project (0013) +Settings (Start) +C/C++ Environment +"StormC:include" +"Projekte:Include_H" +Includepath (End) +0 "" 80 +0 "objects" +C/C++ Preprozessor +Defines (End) +1 1 1 +C/C++ Options +0 1 1 2 0 0 0 0 0 0 0 0 0 0 0 +C/C++ Optimizer +6 +C/C++ Warnings +1 1 1 1 1 1 0 1 +Assembler +0 "" +0 "CON://640/200/Storm Assembler/AUTO/WAIT/SCREEN StormScreen" +0 0 +0 1 60 0 1 0 0 20 0 +Sets (End) +0 1 0 0 0 2 1 0 0 +1 1 1 1 0 0 0 0 0 +1 0 +0 0 0 0 0 +Linker +0 0 "PROGDIR:startup.o" 0 0 1 0 1 0 0 +"StormC:lib" 0 "StormC:lib/logfile" 0 0 0 +0 "_WizardSurface" +0 0 50 0 50 0 50 0 0 +0 0 0 0 0 0 0 0 +Run +30 "" "" "" 0 +"" + +1 "CON://400/180/Storm Console/AUTO/WAIT/SCREEN StormScreen" "RAM:Output" "RAM:Input" +1 0 +0 0 0 "" "" +Settings (End) +File +1 "phed.c" +"phed.c" +"Projekte:phED/phed-init.h" +Storm Shell Project (Dependencies) +"phed.o" "phed.debug" +"" +"phed.o" "phed.debug" +Section +1 1 100 +File +2 "phed-init.h" +"phed-init.h" +Storm Shell Project (Dependencies) +"" "" +"" +File +2 "phed-file.h" +Storm Shell Project (Dependencies) +"" "" +"" +Section +2 1 95 +File +10 "phED" +"phED" +Storm Shell Project (Dependencies) +"" "" +"" +"phED.link" +Section +10 1 40 +File +5 "storm.lib" +"storm.lib" +Storm Shell Project (Dependencies) +"" "" +"" +File +5 "amiga.lib" +"amiga.lib" +Storm Shell Project (Dependencies) +"" "" +"" +Section +5 1 -50 +Storm Shell Project (End) diff --git a/phed-file.h b/phed-file.h new file mode 100644 index 0000000..f7f8738 --- /dev/null +++ b/phed-file.h @@ -0,0 +1,43 @@ +void saveText(char *name, UBYTE *buffer) +{ + FILE *fp; + + if(fp = fopen(name, "w")) + { + fwrite(buffer, sizeof(char), strlen(buffer), fp); + + fclose(fp); + } +} + +UBYTE *loadText(char *name) +{ + FILE *fp; + + char *buffer; + + buffer = (char *) malloc(0); + + if(fp = fopen(name, "r")) + { + char tmp[1025]; + + int read = 1; + + while(read > 0) + { + read = fread(tmp, 1, 1024, fp); + + buffer = (char *) realloc(buffer, strlen(buffer) + read + 1); + + strcat(buffer, tmp); + buffer[strlen(buffer)+1] = '\0'; + + if(read < 1024) break; + } + + fclose(fp); + } + + return buffer; +} diff --git a/phed-init.h b/phed-init.h new file mode 100644 index 0000000..abf36c7 --- /dev/null +++ b/phed-init.h @@ -0,0 +1,31 @@ +struct Library *WindowBase = NULL, + *LayoutBase = NULL, + *TextFieldBase = NULL; + +void closeLibraries() +{ + if(WindowBase) CloseLibrary((struct Library *) WindowBase); + if(TextFieldBase) CloseLibrary((struct Library *) TextFieldBase); + if(LayoutBase) CloseLibrary((struct Library *) LayoutBase); +} + + +BOOL openLibraries() +{ + BOOL ret = FALSE; + + if(WindowBase = (struct Library *) OpenLibrary("window.class", 0L)) + { + if(TextFieldBase = (struct Library *) OpenLibrary("gadgets/texteditor.gadget", 0L)) + { + if(LayoutBase = (struct Library *) OpenLibrary("gadgets/layout.gadget", 0L)) + { + ret = TRUE; + } + } + } + + if(!ret) closeLibraries(); + + return ret; +} \ No newline at end of file diff --git a/phed.c b/phed.c new file mode 100644 index 0000000..eca306a --- /dev/null +++ b/phed.c @@ -0,0 +1,117 @@ +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include + +#include "phed-init.h" +#include "phed-file.h" + +const char *version = "$VER: phED Version 0.1"; + +enum +{ + GID_TEXTEDITOR = 0, + GID_LAST +}; + +int main(int argc, char *argv[]) +{ + struct Window *window; + struct Gadget *gadgets[GID_LAST]; + + Object *Win_Object; + + ULONG signal, result; + ULONG done = FALSE; + + APTR text; + + char *buf; + + if(argc > 0) + { + buf = loadText(argv[1]); + + text = &buf; + } + + if(openLibraries()) + { + Win_Object = WindowObject, + WA_ScreenTitle, "Projekt Hirnfrei", + WA_Title, "phED", + WA_SizeGadget, TRUE, + WA_DepthGadget, TRUE, + WA_DragBar, TRUE, + WA_CloseGadget, TRUE, + WA_Activate, TRUE, + WA_Width, 400, + WA_Height, 400, + WINDOW_ParentGroup, HGroupObject, + StartVGroup, + StartMember, gadgets[GID_TEXTEDITOR] = TextEditorObject, + GA_ID, GID_TEXTEDITOR, + GA_RelVerify, TRUE, + GA_TEXTEDITOR_Contents, (APTR) buf, + EndMember, + End, + EndMember, + EndWindow; + + if(Win_Object) + { + if(window = (struct Window *) RA_OpenWindow(Win_Object)) + { + ULONG wait, changed; + UBYTE *buffer; + + GetAttr(WINDOW_SigMask, Win_Object, &signal); + + while(!done) + { + wait = Wait(signal|SIGBREAKF_CTRL_C); + + if(wait & SIGBREAKF_CTRL_C) done = TRUE; + else + { + while((result = RA_HandleInput(Win_Object, NULL)) != WMHI_LASTMSG) + { + switch(result) + { + case WMHI_CLOSEWINDOW: + GetAttr(GA_TEXTEDITOR_HasChanged, gadgets[GID_TEXTEDITOR], &changed); + + if(changed) + { + buffer = (UBYTE *) DoGadgetMethod(gadgets[GID_TEXTEDITOR], window, NULL, GM_TEXTEDITOR_ExportText, NULL); + + if(!argv[1]) saveText("unbenannt.txt", buffer); + else saveText(argv[1], buffer); + } + + done = TRUE; + break; + } + } + } + } + } + DisposeObject(Win_Object); + } + } + closeLibraries(); + + if(buf) free(buf); +} \ No newline at end of file diff --git a/phed.debug b/phed.debug new file mode 100644 index 0000000000000000000000000000000000000000..59167b03fca959a0726ca0339dff50ef11f757ad GIT binary patch literal 45908 zcmZ@=2Y8gl)8BT<5kg2pfQXb(LEUcJUT2Qq2-qS@*EOKaI zRU$Am+B&y2@WIe2`7dqjtazLP83n`;NgLWgy`@!go5#eXpTnWfbm2u7;Zr;C=m)af>_Wd-eu=Yqo!~$)?AM5}O*V{o%M;ssO^~V19LNy;xkwL0R?UMF2J^ zqvVRJ>N)kIyn1mdL|0l}T_x)0F00>}zb16p^4`GxATATW_$ms+5kGUi2%!jt8|vDd znkcM^1^g7&qgNIODOlud3y6imFlTRb^AlkUK;l$u6-hqS+Au%hLoKZh^}b-p4Q)om zam@`;sVmMWU&J8%J0X^0mY%qAuY}1c<0CUlfQZ%EAc(^}Rt| zuw_mt6lvn@!Iq`IAm>4JZJ?>c??lh-Yzjne;g~O)EKpCN5h{sVZI*Ih!k0p2Bs^*n z`P>wu-T1ni+CU38QBxIJ9f(dnY}O#(XVpzIaj<7-6*jGnLJxEdkL6tt0s&tPMm%UADGxLscN$l4uo`)wO}c+A->Aw!tj}vYfdRPJoETVKl{m z0Lmh5ZLl&_#&QE@c>i>eeOV>L`OqB z&;)JlXlM&I#Uf&E8MJNH5+nsW8d`(&Hx#iVa`;We8p5nNutKOstO|6s`J#~D{(-KA zzNlE$hQYNo&6RlX2uqjwqH!PTC1-_n0#Hi_&kycY)QzCb^Mk#M&JXq~YD=-iS2>bL z=&)pi+CV(g9&19gF*`H}dB}EB3@A;^7YmYVG(p}Ge=q@n4lW9;E{#Q2K|{lh4NC&C zcrX$slC2BE`d|W`0#P1_H*qG68wQ!8>~Mjoi3JI>Iv@m7fmlbtUxw8q90-ZB&g#ZP z@fYeOYAUKkWjNZNSQd>ztEjbLXR=|CWg%ZYPH{YAop2$U8_)+p2ZGH(aO;5H33X%; zE0^s&huRatP%zOoS+qtXY-i^q6s--e>1=JVv%3`rx6vh8wdPk>?_aTaQQ6KlVn(+^ zevvSQN!+p^nQD*Iq(g55FbUj~%5t$VkZ6tgi9r7&(K@JVBpPp+lSssPsOo(!l?g0* z6gjUl+#C_}eEya|g2_m9anw&HH4<%46(L}=5@p9B5}n62w{SKz7m2pO97kYjsPr7a zpUrqA>PuJ^i9})98X-$WwKX_QS6cZug&N9(ab#_3MFt>uOo^^*Cu<1;jnLn4JmE}1 z2i0NSrOCPCDHJv)&qPf=XK|oPg{r z>tQaUD9w+Qy47B~o^t zb_B3rOF)Teeh}O-C(D<#Agh=?O)XNew{CL|3m42V#pcQb{n+0m&gPrTt4O zwmF!Y%@J!={Zw~dq&dN+7!%UZRvVF|F+kK6yVwJy_~;EV{4neOhSIJ?AYK!QSvfdm zx!a(ZL_+Ot0XA|#m0=X3@dALnd4y&VqFl}Gr0W1Zr5m+m5Q0D@7rHhlj4X+XiX(I#K zU?mOvLdlFG9(Qs;BWXv(`j1G;en5KwrW9addngf%h61*(xE(c0;2gG0vPySpjmO)P z%Pi5!3@J7RWpS2$kflL?oQ?w6Bg92ChK(KUDnd64$QlR{L0!Nu{Y3Isho&^ZyilZZ zNubFsjDhFel!Ye~vOurUn_`MDYmddCh~>c;qslrCs%;Pn$0MPD%K~YCT~{22(2Xgp zs-*0-fkb;O4D-cx)T~PIh7k!%gJFMUbq(e>!2C#Cz-h)R1mfm)1|e=teTQbv20bU% z0+kCVSOis(CSPcYFUFv*H4qA6HS3_6gq&q_>v$H=x5uF7Ry&jkd96ceXK!mmX?wHa zXiP;~QT!BCU<=8Zh+;Qp3K8IeQxF!D1*(AnVZQxQ+X6yv0U@`55MnK&bcDqeq9kLk z!Qv@S{8T5L=7iIoa4)Q6=!q}pcbbdy9#0^ETm?^cXC^>Xv7=~jiwmY~ER0+TN4Z7{ zY9lzS(I1|=h?uv8qUV4&{6)+7i*`eHFUKY8v9+S@93mInMVVCwu+m*oIUKExOVS$WmTC{T({e`j(LOUd#2rDW0T4DX5!?g_+Xe_{ z@P!{VcY#+WLNGTGxNN%Iq*$UIn+nS2m|&t^vrDvXpEfPfM1REXAPCz&5!^lq+dhb7 z`=EQZ50q-(CfW9hcH0M?Y#($h8^ahkZC7tAJ0wwaNw!kbLrMoP^IT>Qw*4((?geqr z`E6XXC^pr|!nxam@h00#61&goEkf=ZhJh!tzr!_{ARM8)r&~%xKDJY&ew^G)4P)I# z$Qv@u=O$hi5y8?!XgddoR8u78$Knt71PCsUxQ2@Pl;oa1iFA&pL_!l`pQ?ON# zFl$1-Fg!6>e#lW%MgGDeB-z3WXZrU9iM*0dGiCtQh~ofz`H5ov$O{mWzu9;tZw$^NN|{DZrGS z4Lmhy)q_n6C0QzR7;mAIA6%6b#CNE7Y0wV|%nt-xTFF^%dxAZruMG!%HWj?!q3I5R z%{mx~7U5s9=m-W@LsCr4v1p$v+NWSk6yx%7+K|yuTRq17v-LGBLGwHaNdif{f*^$mpm z0Y5JEp%*%S#yVof0|(=@Q*U_5}4!a^Ml`MSzz zi4Kd>fUgZZ?n2QP3{z2RgW3whf9iw|2b996WXvish`XJbFC2%g+L9ndW(O&87JsSINS!qJ93*uZE#iv$>Hk6&~zgWf4K2z5>|!FU`?FUfxSLEu(7{_ zy-0M~{$R0!ny_E0CfFGWK_jp$#u^7#eI3jxJUyZYV~s1wS}Xzqs0>B+Dpnit^JZgS zED#7YRf+|k37B;lGAwmra?P;8B=uyIk7b0+cpzr&UlKZo5czgUcA=BJC<1N9pdnjz z9qHB*QY=f>cP1=>E?C0RZ_7YD+JxL>yW;HhWzefXz0+)$>uJ{Un#C06RV2n&5OG=z zkpM$y)s;Qdn9w*{kjIebBp-5m*9m`306Rup0@9um<3`qlSz|K-XAA>!%CI`Hwb{v4 zitAPXYHZ5jux^hhBBV%VOo+x%!tbZOLz@qFF(x{2M~lC$9Qfm_kQNh%M!E_q6T%`2 zn?juw`24H5Of-_@$MF%Vw41a|VU9GD z!y%dBZaO$CpC|~G=MHKp) zSGRE(vSAY#L3E=Hd^YggAkLmIXr|w(p)f=QqC1?hl@l;oDQt8?pA-5igkn#b%DG5x zl*Dm@ESNT@>P=*anBTVI@Z_LhL(e%_Cm|7B<)*4q<}){$`6Q zB+TPVBStc`LqGvWz!^U=r#*R7<7;Xl@gv|JJ`h9=gwq=Z#4KgO?#tJX-bO?p$jl_mu*4wZo=$*t8CtMgd#qSS#m6RUi<9=53565YtLZzuE>d(THV`)rQ)F zfT>yptxY)DKq!!RD|TQscFl0;p@RX;YOqK<$nrSvtk5aiV3mb9psfqRa%;fK9m`bS z>FjY9qKdd92-71KB+BJm( zjvb37Y`SClY0D~LKI+-rm&5z%9C4~+!4@19Ne@XY5EfHd>vCM{ZqK;mws=!pLkG4n zxC-Y;HtV>5592NgXTqi~-nFL|1;^e&2RrTh!sT&J!+|E$du1w%1aQsSI|ex$>3*t# zR>rtkQbQ7gdBo~tyXP!J7FY$N%|OH44%nMsxZ3X*rO}2$REN6qZ7LNhP8G2v$?U(1*wlq2!YVS8wk6t;yR8!KR!8&{ z&O`gdnh5!#(Y^zUvEhs-qIg_@m1Pe6306s)60v&N<0S}DoKJ9sX`~sGFLfCl>q%-UL9?D<7YAjA(@me}zl%(t51KxcwA92bS~`ID(=!gEDo|t8 zVC@44$3j%lnYJDsWMWRJB~q8@!bZ2=nKJdAPR9C9TeQBD^c<~Hp1P>7iLSP4Ygk!u zBn-E>r$(_F{;VXx5dio9wA+kC8yE=O{x+>@fNzP;k)-jd<1I`S-I8D{5E; zV$l+}PmXqspR!ZFsiN6Ouhklw_zXd3Vm>0r?dfsH!qY@4o$UDjo^z3wH9#=1bqNHt zJw`wm>)0{dQx?MItV@f%AYKd0ELY=&Qi_EdpD3y{mpLu%})JD zT4tMWX4e}J2qH@(A%9(406QT7>vfFa`U#*a0_Pk@<5h@5QCLnVZKOl3+Uey=GhA)H z7=-1LG{|`NWaIY_Ks#N1nalU6%8*f6Ojl8qHvNn(eZ}7MHDO(%WX6ar#(bex@EZUcrk@T zPJ=x@FloJ>Ok)2ZkGIG0wq-6}>m>7s6Afj)P>6;LrGap+2?hMidIM@Tl~NI-`xe>; zrXrW`7-?&F>af76gL!ijn0Df!5WKSSO%E-t)EB-INdoJOMJyZ~Nt*q#i0k#FCje`R zm@fL$$$x!x>kCBAtfKPBYI`-+JA#V4If{4A!4Yl_KRtk?qV5oYCQm3FPH^)q420Y9 z7^*YDL={$vxp;#^8z&AamXBM!SXI(<9g1RNf$#9cmkIj2oSY|E(dh4TuFd9br?+c( ztw@h-1x2yTuMQV{O$jEQYdE+O8@U8AVv~jAtj3nJI)wAQ>$|QE;3lpaH?UX$v3EtZ zeKh2}9ioU*%ySfT0z{BF1eCJ-HaR#J zx5@)mj=ho$IaW}HMq#e(-1g26M`d3BmORqVWP}dS?1I> zAK6e5_M0{&ZX6MV6Njqf+YN5QxwBb}w+aqv16Ts~lERQ<sim=9tneIhamPR_^=)y!H!4cz5{cyzC zaRuRwEPO*wl+WE!(HtikM}>U{$+I7mf*-k-FLWt{c951j_P&-K-Bz01x+RGROVzUX z-qNMK?{pKmB)8+JzjK*J?=LZ*d>CN&O)*w!hjmbv^<~asa=8<-NbTgInZ=b`2{7ph zkZwTB0||KiSXszDOhg&&{ucUTtDI%b%3$7#70xKS)N%pJwhzK#34_LivDDg_N?LI- z0IMDOBRK`)yh_s6lQz#hZTzud@>M9&m=RzJ{tnPdg6pIhyDuOLQ`7ZN60}_>D%BZ6 zbJ~I}KI*np#$Il+*|jS+kATCgb4az_FZH=X2erhGprA;HB$aWaiFV_cBAv#cLRJYP ztQrvIC;?v~(Z;5b>a?PRoE){Hqoef$SlxhcfxUP*Ws}vmGIjFSv^QFc9n#Ub^MIHL zCkK&MJ{-wzE<`QCyEt4lScSGJEqtTt&}huj2gjbp8}Y7;832_$!Ul0>hja}u}&O9U^UBlw~N97bZa z53y7w_A8wz?iYMHf#W7#9?bQ{yRZh(M;-y(gfYc+0NK8Pu(p8+H0fN&1KDZnV0=Th zEVLjVTrNO5n{JolICsNsOVDB19uHgn?!-=jwC0#7M@&T8iEl>-&#YS9 z7x68)$+Bh-lwkv4iv0*Y-i#lY8zizHC6#MY|T%v&a+ zE%cy2j3oxIkr~0N?H`Ubk}ujmrpG4VeT|Tcvu_fxU$Y;tRoV~L8s<-q+ONP?^BYi@ z7|S(Z_BlOZ`aerjGn0ia>b!dRfAis~x05l&-hX7qT|d6-O6J5DYP6ccQsK)u5D*v$ z%Uv(praLS+Ak|DV!l~^)nr-0^1;FEfq`^K#c zt%(NvMFEq%!Xwt%wYT6ctec7lD^?E>hpB=E8~OP3hY&B-?D&JKvbxpje@(@0+~wM4D-K;TW9(-J)&#i1JK!2gg! zkj^v^P$LfO^dgF}+y7u&6ce&7K$}F+tf4r-#$CKaqNCZAkK^s!2c$g<7q@bu49@P0 zNE|P*juDl-*u-o4w&+}VOgY{i0?J~a!Yt*t9nJ?CFmLoBV9MBG`ShodJIjiMlhICm z0LqsHZnk1a6{~`6^x!K2YZbt^K>V(NOxIinR#A7tsl1ND_KHX;?GBNS;=1~Wn|<2n zV-)^lpm@L0D(CG4j$Uf!~AhCkcz%al1$lP;m6B4BM|1u+?_b+63rcDNcpOM4|*D(XO3Jl!f4iWby6T+}zG6rrUoc*rBnX=iyEoZ%Jr? zb}Vc~&4m**GCQWyd4kiJxrU|~zMOD4wZQV5N`Nz(GwsYf`6bEg84l15D7mO( zAYS;y@fOVa<_{lu1@Kj`i(>fBfNN^T1{F2&9<|XvOQok~+=u2UZVG&UrW5dwVGjER zE(ZCVnFg1@r$oK96v|oNP&KEnUSJE`M1ML2?+@&{=qx^QTC3eJyy%%P40nv5r{kF~ zt}MU_Kf0pXgI%Owh`QRcIw5qGkRn6miUC4+pOo1mPYeV#mZ_0KWSqp*C?V2b0yR$T zA%yA&YP^_$)K#G7h*BX&E#SB^A^K9>cu|fLZ!)z=2u}i3LbMAZJ^|GsRtvGqFi>;w zR#D`7Ky``3!OeV7shY=&BT!2r#~q1U8aUs@h`R>VP2y%DhWJ4}A)W*;i$J{~UKFCw z-Arv2qCds`Bz_h`ehg}y_zTorP^mWNNH8_-K$$HirH&5~B}WKRx*O$_1&{`DKVD7* z2kSWXbI9N>roIs(2mGPLA3_W$AWCI|zo(hX1uwfZ1*sY0AfbxT+;&hMs#u7T<3Wv6 zQ@|D4?ah^%F2tlR#Jzx2nYIbkPiimJJe{cp=T>Y+ z15?imG5AWRo)co)Q=pzu&x1dVrIuPD-xrjs?}yaZF!dc;TgKGCkn>rfx(vA5jpb~9 z5Ml-TCSLFi1qW2(1IKgk z7)$7j=St62=-YgbyIP3hmm}_I&jUiFL;t`*4{AOe)bXB&(eACFPV_v2HXs+&_oxti z-U8||;(6jsP#dW1faUCLBCs2MW5rn(N=E?)Q(5>x+p3PnU{Z~yE`-rVdW zgnN322(1PVpDWDpCBiejMx?3!;@^M27rUB1`TuxIFuVHa?~2rE8T}Cdqv)SILX5~9 zfw;jcN9797kTF9`v+}dYd9yRJY@R{?h-~?l2&p1(mN0q4MHWi_AO>U(6y{$!=3n`* zH%E9z%@X_M?`3jCdR|e+(6ph#Ybr&b%t4s@1^LU<28zs4M`!fQEzaFf4H~s))-crZ zkrs7!G-;%-XDy#dOr79fuJ z!w>o1LNL?Q0_ts0+2UMK?}N$|7lQf_lvi9*AOz+b{SfyN0IPszUBsEF^3dYQ7T` zBqWWv2gda=p%E*`JF*q45ckARan*=>YNxmnsAV8ZjuB6S8VPEY*a`|thBn?V5W>+C z#1$fLl6V)?UZC>DcBDQJ3O~fnL@-8t3~FCcAB#^5gm?uMe!VqTEu^GF^Bs$32Rl>p_HyA;^*06<(9f*Eo*#Jvd$zXGd?mU@O_I3HGFEOF0TCowDJdx*=Hok;yGnYtZRo;(t%UvTQNpuPo_DNg|P zBd7wo4%DAuco(^$!0HvE5%)LZa^+_9=(nAEgjCfJneydDps>dgW96jwI^Aub<5 zp}gAZkyqZ}aBt-G$$s3phrsS&M_DPBAI(vNTE-(BBJU^=(gO-V#7#|7GeCLe{fHyo z$d)~zW`i>FF;Hco#>uD9Mqg+jVv|~&j#RRp-SP$0oCyj)Q2i~1R9bDu$S)C>lZ>kY z<<|$L#uur5Y$_mBQ+y` zM9ssw0F@=(9V`D$O7a&cpOQZ%sb7)rDCEnKf1xb(8$VFHSqiCZL5)*CBW~AZ+{vIa zRbRyIo{T#cRFBF6rxRfPu<$13ClR;jPH}xx`9Kx!l-g&9)G0fq_J>TLvT-})+iRzM z9;EiQap(ulw|q4OJnv(9PFX#qUV*r7H5#d;5%?kQW&|_Ueuyifm>un;Ed7tT^8bjd z_>Z{x{}H#~KjNzXBaUNo>i#2c@qffE-8l|2co}ioY9T1H z8#B}aDSd`?586p54UdOA8$U*gWvT&jD|gD*Z-;!}BHv0C0;jV;;m6~vK#=B4;1!r= zH*5|#IQ;)f{Tr#{)KMrQd+CP5i`J;@A9Wma&)S*FS1fcT%4RE?`;P8XJ{h4{#Pt;; zK~dk5+N2Lej90x)adwShuH2eCchbZR^bO}K`k}Se2&QV%#3MP1;?{!7)Pq1B2P#)% z4bUfo8m0RnAI(tw5O)fKQf=kuay3DE5o?fd4MO}tonR@Hpq){oV^SIq&DWo=m8l}Gm zMS2+3za!tRHWkzz$$VtxCmOQFcO~OGKxLZ)5J!6k{7_3Lf;>~ndg_kH{hWwYwFJ~U z6Gw>$-8geJmspOnG?p_AY3xJE)YCy_80eKb1Joc>1d1d+#>_&#$CLT4u~dN&&Uhe| zY%zW)K|9r{rV(*ZaTLWp3~GjHL)>%8IMUO6&p}9~n!P3h>N`+{hDQH;P*V-|qK0-T z#pY>O&gKP-{z0w<@nj;k!2Db+JlUYecyRdl}FDd$6zbkp6i+w}9eN^rIF5J^c8#-Ad;s9Lp>kL*>E7^G=OpGHpcD%(sBtE z2r=5mV($MYZwGDWE?T@0VIKJKrsb$%l%AH$p{%TelT$3d25DIk{UC9y!`Am`C0`ty z0jD8O0XditLm2G}G#33B%4ir+AvATkaJnNKaMm8-B9FppwLqlXI@6bmKFOSgaxnZL zZn+Y84Eup|o3ljr!%1+ANcR$}C2U`IV`PA~;-oxQtmQfh_3xFFMkJY2Ns%LV7suJ0 zK)GU~7|Cd*-U#pOo=$r!^(&ChB!}yj#tVP!2 zUdU>S&<<*V#HI@6ptr@YVw#K6c7gn+yXDe+Vwl)VjIue?6{Ir5Z7+R2q`9}7GyMff zbEcc-9g6jIA2-cgjFZePmuv3i z&>oQVA&hc>8X@Thk%pYPKo>yLD;W&}dLEMYF&ZM)=yXWBk?=fY_Y~O4dWFOr=o>Ypb*BZO`HZ)0dxh%D=gLlEdU~W8R2rv#G14{FnWhE z5>4XwpfZf?v0N@2D2`gz za_f0O*J5OkcWW_A;h#J~YyxLlGTR)6oF}r(a)EBbIIk0DAPpu6EW(^I#nk|Jz1wZ7o(o66X&9p zsXBEYMm<@lo{LdW)`>Gi6TD5NF9k5zXJFJfF&YE(I!66Wmc%$5Uua)@7N@~SWfo!7 z&tW9QHu)jaHZw9nKVj6*bJNraq@C}ksX~nUh2l(-i`b@C;O|A^JZc@N6QkZOMp2q9 zkmq33FBM~f4A31I^~*TT3-ltqyO%S{1o{d(a0R1mS)lqr2d?CDc|hZ!16OfcK2RyD zzM9ccphIx$bgeU*1?nuMT_-L?ds#?(4);(uxM_MK(r#oeKpG_2C2rwS5wg%kaXWP@ z*QtQ6$Gy~TjM9J}6-SEO8D#*y3s3YN0_GPj6q=u*k9RW4mW7^v(8s&D&RihOI&n8^ zRvysaX#F0}nGduC`gpHh5oBTd*YIiI=OV9!4%{!g$$rX0?*eG&gRDzHxig`i4>6KJ zG5EcESnI%b?zPaXhZz~5*P&OBFhU;&%!i-zQAS=MIx#-R2t69`9em-Bi_2_#d1Ih+ zPm2@LKOsxx_t3d##1%kZS)%$w=bjZ;0c8SJAj@;k94k?4pn=beYq*vYoe2$m$*vD_ zr92)w_p)7cfNn*(SFC2qmFgdi$*baeE=TB`R9eOi=;Q0+Mzm+-$_(09yeV#GURGut z5A96W(zgoQ`Hq{juMhtFcio(Q&qcZSxV=odGIMw6YO-9v_r%5G1FP3^Wk1??ZDXzT z%9UAtpvTFaSsRhIUEFSY$+{AHoJ{LK7-=6nTE4RXMCkFS;&S8^vPSu!$DeTvc|gZP zk3Sc8AuS*1I_U8ijwaWrCvn5@C67vhtkI*O)n73h1vCp<{Xec{4A5fSKzz+;9MBoi z@oyMS1bPk4e#@v(*1)pgA-)rLvUCaEEPimtwkDmO*vb7X*Wjk%E~)L# zN^ZeU_ikzI&Pr}c8xQGt7QL*ke;~bAbZlb-6pEJfN$@8*&_@K|n8xH{~8Y-}8Zf7jMb&tY<^zR!=c_ zfrksV6aY1gcjP2T&$g+nkTzL7hcvI;rXCdU$s&i(ZF(2+zQpkbX<2fcE)pN$Y8OvoIP(XYw%Ql&}q^m4`zgWm3|k=GjRl3TR0~; z>t8PW%T`9Iupz*){Qa)1mm0%tiJCGOA|fwP=T zj&&m<<2ySn@>=}+-l01^p zB%lN2NO=^aVj#a9C65;GpqA-CtL12UjCdDlCeYJz3~c{l_ zB`3;ttb>r}$amzPIN8yD9x@xXR8EqoaLz)Y%fZX3jHUwpPZrA494pl`8deD_8`X){ zNB@ePr;87OFw$d+(4(Tp+ zEbnB5J`}EyOXOXQ(1*gcX#H+R=tJRVxlCfuj&f+dXb-tu-p2^77ws!o$oqMu(R$GV z@<90jr=j(tfIJAkZ%4XCUGiY~x(PwLMH}TIvWF3*TXd~#fak&Ctmt9vl^sPV{JM9J|1+ z;tL?~0u+`nvE+fKWy*+rnRB9+X=TXqid)OHn2gI;#h11mPz+uddy4Ftb~|#uF8+r! z^k~{2KyQk#oSc8icKMe090L8m?-ZAOQvGOvNXV+p? zs7J`l)j%h$P?yRp;Patc@{zVwUa1C)KY@k-t&&%%T{!1(pqo(V5JsbbevsF|v&lNI z3eCOpS~ZlB0eV(m2Om0Vh*uSQguF$;n+=o+RESzeSWN~xP;OBL;vb|5MmMREylW+tgS^y9D$oZEtzI z+MQb;2ec05#&PQtf$ouastIL#SygioNy&YH!vTp|;4s<%0@7YSgLJ7S%^Sr1oKC zfCeDa?)B4vM#zUzj^{1VzVZ>2vomLlS|A@qIi9yjtLJirGJ$;ZaRvW15ZY5G;jcXv zP=)9{HtwSyjty zpiI@HrpZ^-0h0738>m{os%q6}pnRY<`I@TZ_J#tTC|?I>#OH9JyW|_HUJd{%0Qz3O zsTOk!V^ojMm2cs0mvmwr(An~BwUnha5$I+4j#|cO63|ETUA3Ic6#{)P-@|AVpHo$j zNt5rZ0~yT#>MK7`2Qiujgp-{*m{AE(Sbm5ZnTK-aKwIQ?wUYNs^MQVnA7PvZA+1C8 zcm~Oj;X$X~9u8D2KT%C`FwoIJmGV;+V6+w}C_hup%;$+fx602|3!`;FJ@O0HDtAG- zQ-I#bI0U)eg{miQu>49L%A5(Hb@G2|6(fv8+6(e)72;9xs-E;5`Hd=L31S@57s_u_ z*}&o(_s{;b;F zG+l#o9Z9rS{;pQb0w?EM`5U~mR+G2scaXEoMJ6BUa7m-7)HX&($Pu<2qa)=|H%*ib5moN4zetqzl8 zfii)#PGFP|bdgF|Cvtm3fj&}Rr}g1#n|FZfgV{>G zEdZ)f8EPHt^(eKi42fmC(0bo})d00o76DBKTCDQa8L}8?22iUS zs5Z%|K+AxRQG?W(avIRNKo_aO>MTYV0^O?e)!B@?fu2*lsB`3WM*DX7NbZiaG>0ve+BfPa+G7@$HmUR}>{O;L9+DgoL@O;vZYH7x}?0ISknaxTg(07|Io>TWp?Xc5p2YA8U>vgVRi)~2czv-e0eVrD zsYY1~gmK9JLY2ev)dOK1a+I2@o{&p`Ao-kKRfT#|Rs%uSIaAd<^%SE?KnJP$Sm!7W z(#<&@ygb7Q(#^SERjC&Q-`nd#)uHxRFR~;A&?U&Zm5~8@#gkAk*_(5nt=?3Nl;daD z+4=)jtzLCSiK{?$Tw1A1H?q&{S{ht5vVPzS5+jK%}isYBF9@<5cE0CYb3P%Bpf6#_k_ zR;K#UUnrmY#O*`>p{h}R$_RbvzeF{u&lu$aoumBfb4KV<|JPMOeZeSSXJ-#m&FV|m zUGy(|iE2?_F&YJQj%ro^V+78!-%vsIHKSskos+K)Ro^h03A9|TLT?+uXDLvM>l&cz zR9lMcoNrVZ7NH3_A^F@4%+>E%X5cfoMn%;RjKEp$Y3eZbBewuq=f13B>L=zJ@*I$_ z;_7EcV}TZ{g!+XMq&whz)vkVJI}ff0yaC;sFI&*wM4g?ti(0LI;})ub_E4SbcShhd zZWEYy27aNARDW@u=))jSGG`&sD0Ory=ipt`F}T5^RTMb~ z@1@qLe;J{-gG<%18WtF7=3~5YRfcQQKRSe4q=}8QR{O3<0`DZPK}1 zZYaP$U=(Qu%5)LFRACMgvFeW%XW_>u`|j4shyoulp9X)MrSwOJ45v~fTa)VVsJ z(RiT!)Ool)pmGy|YSsDJD-)Uo)T}Ph_{s{X5a@7qp&rVp7-)mKNDpH)73eZ`u^!H7 zI?x^J5$SaYSqAiwx&e3Fbgo(f^s2g1+f&woK%c3b^dxTYAYJ0wP2H>~GdculCQcNEj8+0I zQ@7y$g?iKo)TVCLcxwdY2U@Fc(|9Wn)C{y)-L9v~HlS9Z8`K?o8mC2p9#MB{yfs2v z4CoDYm&V(9pajtW)ZKap>wJeUNt5axjkiWfI}&KHx>wI+bTrU(b)Vjc=jIxq{nh=r z|D^r=@jwmg0lhEhTn7|a59-;BP61k{9@6_US`Ty)P8%hRHUQnC9@cXhZ3KEkJ)%n) zZ322nJ*vwXodxurdQ6uyI!BkJd(`82D?ogn3$%-R0{2pc&Ij64J&AiFLKgzfQ7>qF za=RF4v3goB;GL=fI$k}a_vf4j=mGVtu406FoBpGEPA_ES)g|6t)$@80Bg|XxEUaJE zGKv;3Z@rD`MO`Bg1L|h9RUaT@K-+*esh4yum6K@CdyRTo^Qlh4YIq+|uc(cjhSt3= zt5Cv{xPL3jP-?qwV)O`5p881p89fFxR(-4kjGh3Rp+3>gjGh8o zpgz?tjGh5HNPVVT89fISR-fx2qZfeIs4w)PjJ5)8QeWy-j9v!1N`0k6j9vx0SN%`7 zF?t>71@*NKGkOzfyZS~)7`+YjlloRi8NI7Z`lhMx^kIzN2O6Tj*D*%hfF`ORbez$4 zpxNq2onZ7a&;jZv-7Z%{5}yKvA;At#`wQqe^$X52V@UF9tM03Q)vIL}kO3O4e$$=K zS!S!gT>Y-Q7-b^u4fTgUoKd#gYBJTI`UpM|`qw#g4F}qcJ?}BZnJ56d3|}FyVJkHXXp2_*SVp6PaQmUx$|I0-4A2MKsI_h% zJbkrCAJ6Aa^ue>cPSYna@&d(ly3-!|;JH05MvhclE*e+oO&Q|*og=y#o?*RzF2 zAH05@t51{1qJ?olC+Gprd9x7cLY=2K$hAl-2D)Ak)Tgs`o2j<;!8&)t}3$(qxf^@Sc>5;evr&=J-tWrHneZVLO=pa2> zZ)TJW)ULq32{TW(-L7wN0qasxN&Vtut+Zs5auioS-?RFwNhPu175cXGPg zI%u$-rmtg!@f%d4r{n8&ntvF-K_Rqm $AH|iPi_|h7V)`z{U_trOa{~-BcAL*HT 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 ZaC|Shr{OP^GW%R`CSPiMtn|bc{{u?2oTC5$ literal 0 HcmV?d00001 diff --git a/phed.o b/phed.o new file mode 100644 index 0000000000000000000000000000000000000000..b2efb5c103c60c99cd2a8be7790bf4e97b678f9d GIT binary patch literal 1976 zcmaJ>PiP!f82@JGS;u6N5Q2E9%PYq(}s1~%nY%nLD0!2J3E~^yAx(7 z|3Jz%rl1}~6g_zG;3Xm$1hpV|DCtQL;z3GICX_-|)RYjUq^s-iz1f*qp}yt!=6m1w zz2E!(ythQkO(J6B&rQB&PS|7S#Dr-;L8SabBt4}+So)f;+`hpT{yi>cW8?2xp;xy8E zD|6*YDivx+3=#3DT;9$zekP5UcOM|i=s6^MRaaxXWoGkVwvpK}y+`kjb)SuR428tp4hT^!Tv?E(=vzhmpOYBNi(nLy~SlFn2Ys0 zf5v+_ca{#>e^{Mt>FJtB$9)sKWhT+HKE z4e)xyx`ATe4Q~?2rB4xrI7~Gen!(aOV~wiN3>^wJD1= zcD{kTL-Y}F0iBbODuWy*eCSICe7C{3#rbgFmTQT4nDuDa3--Z!r~UqSL+DNWnq_MF zEV^I%lvu4_S4GZWiMTf{a|W7!-wlE;lDZj6cV}2?)u?m6wCYkPm!7qcI4;ChKr}mU zhTougJ#Ch^%ea&CcthE#)059=^XE>V(x#lS=>-jKbmU30!r;8~YNQptuu%&gkK9Vt zb)u&3S5|_BXe3^y+Q?asoT?WEVPfHo6w*Rt)@f84jc6oVj%bONyhb%x8kzGe%_i}o z{D!Glh(wq1{T}b&IIsi2CSM2sfFHif&j4OBdm4Uy0Q!K3hyN4cD3AqC0y&@t_`n+Q z7Vt6f3Ao@VTfic403C+1dl3t}Uh(~4jw`?`4GLW?n0FdnMKW*=`jap!cC)hRoI%pU zM4Pd1=s58jE^Hh+W(2GO>(9r=VX7kkU-fqBG zu}=jPPINAakK=hOqj2vRJfV{m2^3O