From 55d45880ecaeb27668640f57e66a49d4720fb430 Mon Sep 17 00:00:00 2001 From: Joao Peseiro Date: Sun, 16 Mar 2025 16:13:01 +0000 Subject: [PATCH 1/2] LAB functions --- main.ipynb | 403 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 343 insertions(+), 60 deletions(-) diff --git a/main.ipynb b/main.ipynb index b05630a..d1fbb29 100644 --- a/main.ipynb +++ b/main.ipynb @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -37,19 +37,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def greater(a,b):\n", + " if a > b:\n", + " return a #(f\"{a} is greater than {b}\")\n", + " elif a < b:\n", + " return b #(f\"{b} is greater than {a}\")\n", + " else:\n", + " return a # (\"They are both equal\")\n", + "\n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.110s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_greater(greater)" @@ -57,11 +76,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "#your code here" + "greater (5,5)" ] }, { @@ -73,18 +103,39 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ - "#your code here" + "#your code here\n", + "def greatest(lst):\n", + " if not lst:\n", + " raise error(\"list can not be empty\")\n", + " x = lst[0]\n", + " for i in lst:\n", + " if i > x:\n", + " x = i\n", + " return x\n", + "\n" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.095s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_greatest(greatest)" @@ -99,21 +150,39 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def sum_all(lst):\n", - "#your code here" + " x = 0\n", + " for i in lst:\n", + " x += i\n", + "\n", + " return x\n", + "\n", + " " ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.109s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_sum(sum_all)" @@ -128,21 +197,39 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def mult_all(lst):\n", - "#your code here" + " for i in range(0, len(lst)):\n", + " if i > 0:\n", + " previous_number = previous_number * lst[i]\n", + " else:\n", + " previous_number = lst[i]\n", + "\n", + " return previous_number\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.098s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_mult(mult_all)" @@ -157,19 +244,46 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "def oper_all(arr, oper = \"*\"):\n", + " if oper == \"+\":\n", + " for i in range(0, len(arr)):\n", + " if i > 0:\n", + " previous_number = previous_number + arr[i]\n", + " else:\n", + " previous_number = arr[i]\n", + " elif oper == \"*\":\n", + " for i in range(0, len(arr)):\n", + " if i > 0:\n", + " previous_number = previous_number * arr[i]\n", + " else:\n", + " previous_number = arr[i]\n", + "\n", + " return previous_number\n", + "\n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.098s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_operations(oper_all)" @@ -184,11 +298,15 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "def factorial(n):\n", + " x = 1\n", + " for i in range(1, n + 1):\n", + " x *= i\n", + " return x\n", "#your code here" ] }, @@ -213,9 +331,21 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.101s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_factorial(factorial)" @@ -232,19 +362,41 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "def unique(lst_un):\n", + " values = []\n", + " unique_values = []\n", + " for i in lst_un:\n", + " if i not in values:\n", + " values.append(i)\n", + " unique_values.append(i) \n", + " return unique_values\n", + " \n", + "\n", + " \n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.242s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_unique(unique)" @@ -260,19 +412,45 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "def mode_counter(arr):\n", + " numbers = {}\n", + " values = 0\n", + " keys = 0\n", + " for i in arr:\n", + " if i in numbers:\n", + " numbers[i] += 1\n", + " else:\n", + " numbers[i] = 1\n", + " for key,value in numbers.items():\n", + " if value > values:\n", + " values = value\n", + " keys = key\n", + " return keys\n", + "\n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.104s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_mode(mode_counter)" @@ -288,19 +466,42 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "def st_dev(list_sd):\n", + " sum_numbers = 0\n", + " sqrd = 0\n", + " for i in list_sd:\n", + " sum_numbers += i\n", + " med = sum_numbers / len(list_sd)\n", + " for i in list_sd:\n", + " sqrd += (i - med) ** 2\n", + " var = sqrd / (len(list_sd) -1)\n", + " dev = var ** 0.5\n", + " return dev\n", + "\n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.059s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_stdev(st_dev)" @@ -315,19 +516,39 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "def pangram(string):\n", + " string = string.lower()\n", + " alphabet = ['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m']\n", + " for i in alphabet:\n", + " if i not in string:\n", + " return False\n", + " return True\n", + "\n", + "\n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "..............................\n", + "----------------------------------------------------------------------\n", + "Ran 30 tests in 0.014s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_pangram(pangram)" @@ -344,19 +565,52 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "def sort_alpha(string):\n", + " words = []\n", + " sliced_word = \"\"\n", + " for i in string:\n", + " if i == ',':\n", + " words.append(sliced_word)\n", + " sliced_word = \"\"\n", + " else:\n", + " sliced_word += i\n", + " words.append(sliced_word)\n", + "\n", + " words.sort()\n", + "\n", + " result = \"\"\n", + " for i in range(len(words)):\n", + " result += words[i]\n", + " if i < len(words) - 1: \n", + " result += \",\"\n", + "\n", + " return result\n", + " \n", + "\n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.058s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_alpha(sort_alpha)" @@ -371,19 +625,53 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def check_pass(password):\n", + " if len(password) < 8:\n", + " return False\n", + " \n", + " lower = False\n", + " upper = False\n", + " digit = False\n", + " special = False\n", + "\n", + " for i in password:\n", + " if i.islower():\n", + " lower = True\n", + " elif i.isupper():\n", + " upper = True\n", + " elif i.isdigit():\n", + " digit = True\n", + " elif not i.isalnum():\n", + " special = True\n", + "\n", + " if lower == True and upper == True and digit == True and special == True:\n", + " return True\n", + " else:\n", + " return False\n", "#your code here" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "....................................................................................................\n", + "----------------------------------------------------------------------\n", + "Ran 100 tests in 0.062s\n", + "\n", + "OK\n" + ] + } + ], "source": [ "# This will test your function \n", "test_pass(check_pass)" @@ -392,7 +680,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "base", "language": "python", "name": "python3" }, @@ -406,12 +694,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" - }, - "vscode": { - "interpreter": { - "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49" - } + "version": "3.12.7" } }, "nbformat": 4, From 19a198b27d7d27536a2dec5fe6d748b64765dcde Mon Sep 17 00:00:00 2001 From: Joao Peseiro Date: Thu, 20 Mar 2025 22:57:14 +0000 Subject: [PATCH 2/2] Map Filter Reduce LAB --- mod/__pycache__/testing.cpython-312.pyc | Bin 0 -> 19645 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 mod/__pycache__/testing.cpython-312.pyc diff --git a/mod/__pycache__/testing.cpython-312.pyc b/mod/__pycache__/testing.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6ff36270176bf6c1f1f80f57cd315b9328854748 GIT binary patch literal 19645 zcmeHPdr(womcRG*g9e%gA3;MDF9>Q!MF}R8M8}B&(V!vkiuy0~s1Kt!riQ?Amf|U% z_E0wYpSIE9XFQBoXVcLbrt|2%2AhGn^&X=)%a-Le*-XT5@ML>)Y&qUsTdvn^Geem1 zIm(vDX92bFCZPFzHqZh-2k0U`7wBT%40H*f2XrZK0eW9M#pnMmZ7bvpz_*NF1avvS z80h`Iv~|fOHn-kN$Bd%D2OR>qvYnhG;1^w-$I8SEQh*nZ$Mjx5FIaW4d`@z>Ty~GY zTM!+bB&Y$wt}Z3O$h+EI0m(sQ!ODZ9rGwv87lb}fJ#RQmG1M+<&@f0j8J>R5#4`ak zE#+26Pz#}`H!(LnKQ{!la@~44ERnvcc>3u;mKx6M-c<6`P_2y=)z1X7)i^hqN7X0) z^LpO!rqYJFr|j4F>-uPSUUFIJW2jSxK3$)_oeAWtv9e!nms*?Zr>WD;dMcr(1!}(d zzuHsxl6aWv>Z9W&^-@-2y+e(`e|31LHh|}s%=55F1qv6YjTxlX39;!087Iv%&zWrc zL8^zg85$|8?#opHK?>O0MS%+lV#PL(-@$pL?G;TBy2t15_BoV!BK4sgTQ{|xRCJb# z&+#c;AN2yvklG8H>ZAK8yV^9Wj{%=nRxdS5*N^I9Ee2tg#Y}d)%jXK%?Jv{@2F>8Mv| z=emy82vTRj-*wc(wQY0;eU5<3?~^tPzN4`Gk7D0lzV?c)UU3nW5L!3OU{t8>%!Slb z#X$ZzKz(Lj^pf>lQ^dS}+`RFV`-=x_PS<@>#17WHuxAQVP)YBN5dz2v;>i7yK1=mc zZf*TzYWaZ`2BVkmy?GIHq@NB2YQqd?}N6)7^hFdNn{7a<>=26gFc*s(AwF?N=b+-oh(cks!z-Xx6CUd z<`u6V99nv@Xt?N{eT09jbF}li?WX?Y+z)fd`omkBC(MV$BFHsr#D(GGyaFtY9J?K6 zEa*YE*>1f zK1cn5(Pfu>kwa&<(6=e1q#-2jBo9d@m;c{aUrqiG6f~L>GX-JI;wZ#SI3m>uo@9A8 z23-LmW)L}Fy8tN6`FOt<1`hsRzCbLC<9SRU(|Ng`n59YR38432(C33!K?lQTHInw? z+kpkq_885@=r+;}30KfFu-4fpEiI2M zE&rTC-{%EX-hH>s#SwFH)XWalewMfRrK%TggY;*XrDuGneCL{nwnQ!KE)~92JX(C+ zaGj4@s|QO4=}$~~XYx+vz3duVG*mfcxZoJ6962yje%>7|teh}CblX5#mVa)f40*To z4@C42MD;6g=}RK|lA-bm{W>y`Nv{Gn6K7=VHFyDlh3FL)0_ZeP7NSo8)-985dqU|QiNnUx(Gc%xdv%gpH_J=L%4XEL%HeV;Co&8Un( zEkX4IixC!%#W)xmdehHzQ`W47V>WEUT9pFdA-54Nu+T(g)*`;?aehJGAsPIwvo%gb ze*`D-ekABhTGSf8hal$b;JZ4V>Ct?yC@-$S)**uuSs;lBPM|W0)1{q>3I)DbLH2a; zt-qKvob&pzk*2qfj2^jOHx~H!6E{wbdBcx4O_-Zy)GWj5tyukZ;C%vuaRjFU?;!%b zhZ2BSTo36c5v4_xZ^VsADu9d{2uzBPVZh@+VmeL~Wt2pL08vr_$-Jbw6?a1{a%-DDVSE%+)jXQvpjvC9xU_VG%O{;66yT4pY`>$%&wfU?#49 zMlJgyoA!>BD6*bosB|K~JiKWy%6j_}WxXdyw_jg+j|uF zax(~g@5_k%{pnkKzHdavZE3<59T#cJ!yEamc1FcrC)2M(-Fm+sw%D4!Hl9V+<}y?t zY_wmb(x7(eTS4vYg+uL9vfBNiN#%%o^B$8B*U#QO4Z(3|Hk+UrfHYrcYyC}Cr?YOV zADlx+6-g1rKXEmZStZ41Ak{8R`Jk3OMN({mh#0*-Mn9N@y(-5*9;R>%R5|`bl{{!iA=t`@4e&>J0=RLUVvN5lu}aVi_@t05*`#|%Aod_u zzybjkb^fB4s(;>dK{r%=-gIu&XZNofwv0%ZE2H;69A5k|sdzRn6*D?I{4R$;gy*a6k1*X-t}jFRYvq(rX&XK>70xx4w{tIlh_E55OVH+9iR_Kt7f7tODa zY~D9g`HJzZq`Y3QMef;HjI`y%=E;|+&yHMB+=TEq6Xu)`TX)*fx>2wPl(x;qS$ z{m5-2m2FX!!Mfq}{Ae>d#f4YmAzcPORt)){!0OH$)3JO_(;% zEQym5OHzmYaJ8+P*@L=3=Xp|PjAPt<)ggVFkwzMk`kp_jDkjSk4tSpp3ilY~$p`Nl zo2KC%N(&kA4v#vCWOy1Jnei?z5i0fw_>QMM>cUe00Ri#MBIP0HR%yahtrLidZPkl- z>I521ArLo65LpP5;Q`U5f_%f6iA{G!4YznbtLsHOIGjVF_!BM z(7ntiPRe3rHzbe4Yg+YgZo*KAuuZ2>w3OZeqTuL}q$92)GaPYMK63T=wUbv)j zzB+xwG>GnniOK-c2$lq*?{Se-(N|~as3MJ?#D30A8a)9?5xdfzi%s@p1d61S_anh$ zu(_cpj^-@rsi=&hBjV2>HR7%G4v=}vpc@~$`pC8ISGJF>9&<#i>c%(jiCXqXHtrdr z73}1On2G$=;f;GDmc2K{@#Z79njMj5N0=AF&W>oaE8OIc>~}{j?m=B5u-1$$Ij`=r zXEe1Uwgda(yX>+IyX-&PUHz%pU9BXN0kQkO$8b^>-!ipK1Ij^sfAO84zB$umSp=EP zvTSCHT9sF4+Pm{$xtz(e_LA;RMJ7huTF{bCqS94d2?Q1mg_xbIYw_MwLW$PGsGZeNR zyJZt1HX;19GrX@oY%ZNJcg!x|J_kiVk9DNVw=N>zy3)(H^D|!%$+&6igS7H(PJ9)M ze+ljR3v5$@cExO_dV-^sRlIEV&AXA$$cgM7QddVAU9{_cv< zx(18`Uz@*&?REt^Sf}f_!1Df(;A1_oX@%n5!FH)4w0f7v)yBI0j!p?H49N{(1AbB` z-_426iqM)mD30g4CD!AIVz69SJ1c2TksAT6Yw8f>nxI}VoQJAIoXAU1m$ysqkEgdH zRJPmSjm1L>Pp{HVo^uA+kkBS_a_W*$*#Xl3kkHl9D@xE^fAyp&bb96wr$*?*) zp`$JzRNGz=dZ>j9I6Bz1b%MVOMyI!A?FM#-2WGfQ6xxJNCmn#(wW#cGjie$aod)DxTNgpd|FMA>lZ z;5yPiC>sx&?^E-~|H(nKKCny;nO=t*SzO8!Pv56^L(5a2H{%x%-8mWwci8KjmU z%JxoHHqOvjMFzo@Gshj?i;(p1;g>8|a zn)T6rA07Yrx))5Ma!F`g@-0g zEw^>lqQd{yo73IjxqByzD(Rr_{$^R9v>f_&!%$hX%6Q`uwx+1y-NI~ezh7hkn#5)h zSP7f?>+g=u;AE30Eps`eFc;J@rabZcr2&ogxYJn|&CFb6_Lb%SW;K{n4^5`AuXr2N zFu;Ju(p31LiG3xcd0DxPgsg0b!pcw$mGa1}448DfUTUll7?#HD;st<~6!g0IO#7eC zvZ|9<7B0M$M`KxOSmW$0D}i|}pgoqn-R3-99o#*+-Oki9jdA@N2Kfihxa6&K#-1u{ z>z}Zrb5l(I3X)#MH%a%^$T>>0*)rnZd?0hff_I_XoyCE9~nM!e(d|u7j8WkwsXmDvq7UOYT}_>%K-(>2=_ z+nDZcd$gi9TK;6TaMy%s_iTKQ73jNnNM-m3#Y+#uu->35YjgBBDl2OZmUm0pT59=w zOg6aR%gu)H4=4k;KQI`;ox}sRt(IBlfkx$;t8w1fT#a$Ny>$906$$%kUI*5$Oq`#^ z5f`|KPPwQG%MR>f4QUZv805Hen43CCtdDcoW)~$G1edr3x$sLLT(- z*+^BM0sO3zY`!!z0|@B^?uB1%&;$2kp>_jo#L{pe;9kZ)16cereFn9>)PBHrsdT}4 zkFFawkmO=5xU4w~XQU-tH+F%B@w;X?a9Cde(?YJ$#*F0a4R-RS2Cx7^K|mZuvIGf% zOPr3h*KcLO&d>#oGrf=5i-CZyGx@^{_{D|Odz23^Oji?|AP=@;>J=d0hME|Z#ESR= z6==`v@Nt-o>SMiXU`v$8y86(PCqZuqN-2rOap?AoJSef2Z6I14`HL8=q9XOATX|pUun=^%pJ~sUHM8w_{R<51I@P%9E}_}8V1wQ z)<8JeOPIk9nHlUrTn^GZ@o!r-LUmpZGrNKr_sQ>J1Mq!MG@wA{LT9T*;QC2|RuqBB zoc4 zei1t}iR)K<9tfBbH=r9aS|p*_;EL%yf=}$mcm_m>0IC9Gv?I|DS~k6wZ{{Sg2G!2` zBgihj3S@wKqw#(Jc#Ctq!v|COEKTP3Ntjq*=%v*-+2|RgFRX^IK&(06d3E(=?(H>^ zHIGJ1AG=->E!_&aFa;!p}V(M^F>|qXI5xba!=sU!;V2WMvhv}KaB>iDbQT#Lp zwKB&T;K0Sl7-Ymy5%J7QpGitCrf8bNM_O2U68z4NS8C7)SV?6@JOb@ApW=@E^Wq1*&{vff~z^0&ociKI`L< z7_Qz_(20OU3-xhF;}?1>2~v7aJ_0OY7i{3|TrH6$01;Ec)_9E#9| z`_h