From a722f70807ef82dbae37ae7532b7a7152726764a Mon Sep 17 00:00:00 2001 From: Xuan Loi Date: Wed, 7 Jan 2026 09:03:26 +0700 Subject: [PATCH] changes --- api/__pycache__/settings.cpython-312.pyc | Bin 3432 -> 3432 bytes app/__pycache__/cleardata.cpython-312.pyc | Bin 2352 -> 3368 bytes app/__pycache__/signals.cpython-312.pyc | Bin 2780 -> 3500 bytes .../workflow_utils.cpython-312.pyc | Bin 4846 -> 5718 bytes app/cleardata.py | 113 ++++++++---------- static/files/20260106101444-entry.xlsx | Bin 0 -> 7694 bytes static/files/20260106101638-entry.xlsx | Bin 0 -> 7681 bytes 7 files changed, 48 insertions(+), 65 deletions(-) create mode 100644 static/files/20260106101444-entry.xlsx create mode 100644 static/files/20260106101638-entry.xlsx diff --git a/api/__pycache__/settings.cpython-312.pyc b/api/__pycache__/settings.cpython-312.pyc index ca73c951372dac40cc4864ad9260265d78f3c5e4..edc1fd4803c13a50833cd36080c2965c4167bf22 100644 GIT binary patch delta 20 acmaDM^+JmKG%qg~0}#~ii`~c_%L@QO^aZ^D delta 20 acmaDM^+JmKG%qg~0}wo_jM>N?%L@QQ6b0M> diff --git a/app/__pycache__/cleardata.cpython-312.pyc b/app/__pycache__/cleardata.cpython-312.pyc index 2334e05c953b173c5b62d328be1ceb8c61cbeb5a..9f6b360a6b729ae0753ce8571921838c5b91faec 100644 GIT binary patch literal 3368 zcmcIn-A@!(6u+}`_5&7JL`39ESWsM%-4$?I2x%&UBCUM5^aB#z%+6fgU1oRInOP9C zG?>_^NfY~4AAIbK(f$if+ovYggmJeSa|5Mq0%2l$13cWurWo2?~s55MnoxQj$sVhCfZW$9Bay~2r2uV z-IPIe{9t2{4PjQWUtsPsn<#?gD!RJ`IOkk;`dm+q-W`TG6qQr6ijN^KE|Z8ZCh(FW zpT$Z>N-LPk%wYmklaU#I3(JJD)7oIT@vFmNmqSTY{dy%Z3;hVm4XU*kq=MyhWIU?cOvZ&n?}$%8d_Iap)AKnU%n|hHrZ<-ZnsuE zW6(E^fZiGX`?kF;X`5#RwIelT={t}dSOImw>gT{(8C}nR&MdrbmgdhD_zEIh?Gm$u zF0r#{iSd`g;5MP_Q@l)JCb$By39vvMDwbM+&QPNsx^MDjWHf z)Q-)}Ohx;G!RYYuk?7gc>CZ+ZGXw-q zez6et0#-@&OTt@Bi8IEDT$;xO6mAg{x4AbxbZ;g zixpKi(u(Xh_LG&RCBk6E_{eEB%8RZ*TuR}9C?(WO0Rb-tvZ|CxZ~^+sM4wE67cnOr z`|ZyxlS)H~n!8J9k^>aQxK+wHJ-}7;*j{n%{FU?HErT(w?o$t)r;3$(Zhx*fhqdN# zp>kl&G4R;wUh_;pbWXozc>+~B)M-$sLxTnld1%t1U4!-l94PK&s@e3{p+$q1JhbZ2 zsX=D}d_}0%p zjahVP)u1&GULAZI_zKWfG@#yRqKh?X>)_SEn}-e^x-{r2Kz9*5I_%Y8uMUkGH0GgM zhYk%o3UF}8b-AxiUYXq7k?;MwH>`QXx_3zP4*kTed57}e;WcO|z=T zI)oi8I^5TfUyZ+hoWDB;{-Gn;!54~=6z&dv>O(&tYN7Qn&ha+d-1n88X=CsAbew5o zAJj2ae$Zs6^@Ptws$_c4qw_MC!ZfZeYzB{guPglm<|Ua^C0UV;`%m`1VW(a5&%lg7 zq@3P^LSOxlWFwdxzYoe0T0LVKhIxeA9wGlDbfk#t epSzH){Cep6p**wuxvhg4++dNd)|BL9biltxbzbKH literal 2352 zcmcIm&2Jk;6rb6B{z_syM9!y^)JdEgV`5hbP#X|ZLIR19+K`x!MnbFY?m+CUy=HbD zCsKj}3L*y%h)Xa12dcvVk%|i|8*Mdm)I%#FZYk*jg$uLmtWyy5fRd4B<~Q%n{N9_L zw{PaBaJU2U^6|ru3cq$C^vD@_1x~^7G6%Pjid3wj5?;mF!Gb1~#8uJ7q6Q`3s?Wus z`F|8J5)ctppX&cixQAOjYG4oDJEdF=Yz5Py-<;81%>0Han^hx?Sx~MNq>TcpIe3{E z6}@Z_j`2%Oe0M(2VClw6UO6Rnxf~}&UXQ=$=r#%=(-k{SQE0<9DEiv44Lqlcfwrg( zJRL@6&=a0BuX_Lv_c`{+gKG+Uxy97;tYnUu+zHnCjEr@+O`Y0cfm^aBmleXm zkT(eRJG*eQE$dv!=a-~cu3V9ByvIWGn+mBohM2EH3w&EKSN$qi&(6$A%k%GlFu#&d zi!4CN=T%~uOr&~^VPZI+B#}s*WO8eIiR3iBU~cAAvXQHrdZi%e_+7wjC8uaarmAep z*~%6RJ3w;36}L&9L!af<*yWePE;{lLiqlWKkS}UOp9Ot33|TN#hhZBgESPA(WD_F) zt?Fsbw_((R(K;k-NLi3-K)MOtHVjxWV8gHl!*v+7VbX%h2Be-t_!zouh*=P8t*yh5 z4PzFJHDIC%&#}elJ63E+Sdgg0xD9Cw(hbNoogF#8*)VRwcpZ{9WGu)uV5$jx%l#Jg z+Yq-PUWXAIk`^QzaQSick{wN1(Ucv{SkX*9I`umed@t;a4`RK$%HH||f9RXFFW0^< z9{ITVX%KbA?!0ctr>yu?qci(6WdCS}diWA?y6NxSpV?b$hI{XPXpdaAMy@u(*M9L| z`;)H}r%#MgeiC0TbS^~DK_s;37Z3WAi(19N;I`*?dj9b^&8qd@wU$|X|M>3S=u z2LCS1szlMLZ0gjY&Xvvj|DoqY_i^CHCF|gEk}c^xEDSd!?xJJ92+=X#oCM$GnyN*K9uG#2H%B7I_z;a9qU<4hxrqjzZ1ZPJ$Np>IUEa^t@z4_?j;D`BB*a}rogDBN DCGwxv diff --git a/app/__pycache__/signals.cpython-312.pyc b/app/__pycache__/signals.cpython-312.pyc index bb4ebf2eec084fa3977e0e4e24543a4c12b1f0b4..783df8fea1bb1e66b935f4115329673964cdf70f 100644 GIT binary patch delta 1271 zcmZ`(O-~a+7@pZ~cej+b2!4R3Sj4Cm1p`J6MI@SN^Z+Jaw272uXIfgeTQjplG$r(4 z0vyT4pow4cB*7Ss2M_!NiNP2kHX8j6fW~n0o!x2z$|U>j%scPL%=|hN*MT8l77C zDBkCsl}-OK*o`=^hGc}qAKip#xa)nHV&DJiSBZxJzpCP}x3<8oOo4Cbg|^Rh2PZPpH9 zOf(|yXKuG@8BH_FhbT#9EpF?ULD>o6bP%AdaB30CxE~g=SgBNEE&GMNUf5G!sg$0! zDN7lJd_HU6O*ko~VZ61=EEu}UyIZ$&Oh6jm0r0DYJ~tno&b|&z2ERv}pY}iOUx~JT zjJCZ#^Dglwu^4Up6g{`7?fs%PEbcw_Vt7gGWXB<{cUEEnah5>AsuYJiodOFx*d$Qg zqO1&$>MXqYU-hm*ft& zno;RDI3n~{KAo_bz#tu*#;$BYA!?&s1m2tvN_rcqG(yyUh_Wl%LTCyRyopf>7zGhi zmq?E<>@vbd46p!LA;ELoOv2d=wJ6IvdjcUdHKbd_q-+Z%{|UPSNqGnWD1mN2IP&cB zlGf@qo1FoBT(0yN=1kn3ode)PxiPP+{c6*Z9#~!wcF|QxwI0U)wsqy7uD*SwF5pvw z112)C9sz>6S>)FAE*UWjmIeAv@odHdMX^iZ(dRq~bgHfj;yayhfsyM0lGCkBp_L4J zqVSJo=_qI7BWE!ILi5Zm)+1&j3%e*lWN}MvXkGB%n~!Jq^4^zh)&{o9 z{`B0a)ACN?Vr%%`s3|j%Gw)VigjtZ*2drjg-y5iU(q{HchnbTu^T=A(_gWh>+d16T z&`!SVW5@E`Fm>i%$}oCbk7{vD14&r~csi+w$Qa?QmwXnx;n8#U*KRJ{#Ptah^$rJZRMk${1k0$TjmDk3~ zT(}yOnl%k7sF$K{vu+<%MH33DiUP)OYl26(9EFo~mqRs>c${&dBjP^XY{SJi6xvX3 k!_Y4i@O;OD<1v1NTt^I{*?EKpmOGxnkwe$AaI)L^4{JDuKL7v# diff --git a/app/__pycache__/workflow_utils.cpython-312.pyc b/app/__pycache__/workflow_utils.cpython-312.pyc index f8d5fe3f6131dd915860bcbecb6ecf0911628d88..6b46abc61529cc9c58ddbf23cc78a0aa8e0bb83c 100644 GIT binary patch delta 1276 zcmZuvO-vg{6rR~NX6^O*cfAX?!5AE1g9Czuk^mBIp;90?sYG)?m^d`MNw6GDcUO=^ zvoeQBn5b%#?x8&9|zJ{rdOlLhFopKZUu{n+a|y8}t}2+Mhd z<zkS8;ESgB`bk#^bDNnAQqX~%o}`=pc<-+k09*)$SJu`C`&QB>Qm?LG@d^Q>ob z(N*6`-&oSGT(3H68foR`s#=YZ(pa(jl6pD}Kv7hxXo!sn;&pDsqmzmfOe{bBmMX)ADkWA>Nk zK!xup^W7!B`@u&RFO~U$5?(^=NtCu@mY67uLnU#@5>FLeuk1jKKbYQL zw}g=bTVaJF+g=Gp3g>Et@E2p2&{JS>9+9>qkJhd5M3I?ndBFyYLibnnGd6KR*|_0f zz2Qo{_sf}wGsS@kEBY5Qb+qG2UKsA2D9yN&G;O5L6No6a#7zP*V7T!73IaK`|D>WWY*V-nSveB(Uihty<@TJGS5zTi(&c z8dHZ<1`R`~K3{|@gUqc9r5+|U?V-`IfF|qs7ePQ}+@p=S&p0L0COs{Y@U^V~?GmA* zHL#NTO$&$kYF!svl?k0}^fNq0_it^W-pzI*;6JRYxzoNTh%951Y`yY$vZdvQG(WNk z<%ED5RD%KxQR;INy5E))^j3)huDZ+%=D7EV_)QEJgG3 zJDLlb6fnFk^F1T%oVE6PHc_7Tey{^3kF42&uWBE?Kjl&d8=glv-7ofNVKMNsfQ3c* SY0cq^oQfy;5<}C;(C80DBVt|v diff --git a/app/cleardata.py b/app/cleardata.py index 54b92113..55a812e2 100644 --- a/app/cleardata.py +++ b/app/cleardata.py @@ -5,73 +5,21 @@ from app.models import * #========================================================================================== -# @api_view(['POST']) -# def data_deletion(request): -# if request.method != 'POST': -# return Response(status=status.HTTP_400_BAD_REQUEST) - -# #check password -# try: -# password = request.data['password'] -# hash = request.data['hash'] -# if password != "igyRr8HOW5e7G4PE09hso3nrLKPMPcGqpYlnkZ2zmqKBxoo4Pg": -# return Response(status=status.HTTP_400_BAD_REQUEST) - -# if hash != "05c62b974e358cb9a61d0418e5ccb271b9e9a76b240e878f4509fc1e7536114e": -# return Response(status=status.HTTP_400_BAD_REQUEST) - -# Customer_Note.objects.all().delete() -# Contract.objects.all().delete() -# Customer_File.objects.all().delete() -# Customer_People.objects.all().delete() -# Customer.objects.all().delete() -# Email_Sent.objects.all().delete() -# Entry_File.objects.all().delete() -# Internal_Entry.objects.all().delete() -# Account_Book.objects.all().delete() - -# Staff_File.objects.all().delete() -# Staff.objects.all().delete() - -# Message_Receiver.objects.all().delete() -# Message.objects.all().delete() -# Email_Sent.objects.all().delete() - -# Branch.objects.all().update(manager=None, signature=None) - -# People_File.objects.all().delete() -# People.objects.all().delete() -# Company.objects.all().delete() - -# default_user = User.objects.filter(username='support@y99.vn').first() -# News.objects.all().update(user=default_user) - -# Token.objects.all().delete() -# User_Apps.objects.exclude(user__username__in=['bigdatatech', 'support@y99.vn', 'admin@y99.vn']).delete() - -# File.objects.exclude(user__username__in=['bigdatatech', 'support@y99.vn', 'admin@y99.vn']).delete() -# User.objects.exclude(username__in=['bigdatatech', 'support@y99.vn', 'admin@y99.vn']).delete() - -# for row in Internal_Account.objects.all(): -# row.balance = 0 -# row.save() - -# return Response(status=status.HTTP_200_OK) -# except Exception as e: -# print(e) -# return Response(status=status.HTTP_400_BAD_REQUEST) - - -#========================================================================================== -@api_view(['GET', 'POST']) +@api_view(['POST']) def data_deletion(request): + if request.method != 'POST': + return Response(status=status.HTTP_400_BAD_REQUEST) + #check password try: - # Customer_Note.objects.all().delete() - # Contract.objects.all().delete() - # Customer_File.objects.all().delete() - # Customer_People.objects.all().delete() - # Customer.objects.all().delete() + password = request.data['password'] + hash = request.data['hash'] + if password != "QOJpl37zHN1Y1S3yBbuNyYXTjSHqioQzlTgwqZnCIPbFe4W0F0": + return Response(status=status.HTTP_400_BAD_REQUEST) + + if hash != "8816f9082eb2a9adf08dca6e0273d40908f409b6f8ca60bbeedd5d8d437c603b": + return Response(status=status.HTTP_400_BAD_REQUEST) + Email_Sent.objects.all().delete() Entry_File.objects.all().delete() Internal_Entry.objects.all().delete() @@ -81,8 +29,11 @@ def data_deletion(request): Contract.objects.all().delete() Product_Booked.objects.all().delete() Transaction_File.objects.all().delete() + Payment_Schedule.objects.all().delete() Transaction_Detail.objects.all().delete() Transaction.objects.all().delete() + Product_Note.objects.all().delete() + Product.objects.update(status=Product_Status.objects.get(id=2)) for row in Internal_Account.objects.all(): row.balance = 0 @@ -91,4 +42,36 @@ def data_deletion(request): return Response(status=status.HTTP_200_OK) except Exception as e: print(e) - return Response(status=status.HTTP_400_BAD_REQUEST) \ No newline at end of file + return Response(status=status.HTTP_400_BAD_REQUEST) + + +# #========================================================================================== +# @api_view(['GET', 'POST']) +# def data_deletion(request): +# #check password +# try: +# # Customer_Note.objects.all().delete() +# # Contract.objects.all().delete() +# # Customer_File.objects.all().delete() +# # Customer_People.objects.all().delete() +# # Customer.objects.all().delete() +# Email_Sent.objects.all().delete() +# Entry_File.objects.all().delete() +# Internal_Entry.objects.all().delete() +# Account_Book.objects.all().delete() +# Email_Sent.objects.all().delete() + +# Contract.objects.all().delete() +# Product_Booked.objects.all().delete() +# Transaction_File.objects.all().delete() +# Transaction_Detail.objects.all().delete() +# Transaction.objects.all().delete() + +# for row in Internal_Account.objects.all(): +# row.balance = 0 +# row.save() + +# return Response(status=status.HTTP_200_OK) +# except Exception as e: +# print(e) +# return Response(status=status.HTTP_400_BAD_REQUEST) \ No newline at end of file diff --git a/static/files/20260106101444-entry.xlsx b/static/files/20260106101444-entry.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e477a595f0322abdc6877331cd539d81d1aae829 GIT binary patch literal 7694 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 gX&{go3hMu9Au96l4Eo;a0fVDEa{vGU literal 0 HcmV?d00001 diff --git a/static/files/20260106101638-entry.xlsx b/static/files/20260106101638-entry.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..cf984616c8a9286284d42225b69480bf98af0c0a GIT binary patch literal 7681 zcmaJ`1z418)26$-8wo+lrMqDX=?>{wmJVs88>CZ7X{2H4ZV-@^MoM5M6aj%B&iVdJ zj{pCid9U}~oZ07{nP=wSd(@QR5eQ&VP*7m7$etL&JQA||=UxuaOI*Kn~9y-l#Y1Z;-iHrqYXmwd*zkc)ugjEeC{W%Z z=k<-*S%;a8esbRHXOcZ=(@?VzKye$G&#@=;JzUK-Hq{y*VgHdiLtJY_ljuRgQZu%p zrN~8utekY%;<>7kD76;b4d8tU*lUQ4)Cf@rUvZsiBW6 z$2|sT2YIV3fF?a-ir%g+pZL_2kWo6O1WDKLy-*4V1Ecm|{e=CupB{Ut zDA@?S#6b`Sy?9EuCbbDeDubzoEK^zkJf*7LBO8BnV<8cwxKMxBfiLxz5c0ki{oCLN z>dwJk_h;3aib#{D6;rH?_0)+l1oJIw<;lOibk7GEYT`<>6)I^Mg=)6#t~OlC#|39z zQLg)2YN!k9sP;^q;;~v?w<3imN@hg~P-JS^*u%3mF$R`fkjTBj(*`ovG6Ba7NLrZ@ z!drH-(2|#>FywdC+Sz45Li+t{!R6_C-~+08t=I^l{DueBk{Owx;Fe}EImmtEsu}ur zk4=CqG`VA>T0r$1sF2p`C)?6hw%V|e-f*J3;>W4IPFo(qjZM#KSvh@Raaw4?x8^3x zu7j(mBg9!=R6;elqMQt9W880XRL#Pc_`Aj@8Pfe$bR4F~r$I~}B)~Lt+7S4yYVQIy zI1n!>bH^S9?!3HEU%ZxJ%q|V3RN@VDl+9@9fM4T86S9&*>#nwH_lYQm_;1OG|93LF*;s-spZ|5`eAu%6 zIws&O4xE6slA2!~WIde>cGKY=AE^YDms+vcN#Kn^uN|65((YXxI@bq$5;U^thoyA;_5WzuCwya5}#;*K&UeS_npi-4c zAzr$X3^$PNn98+L3q!cJjRQwhH+3nhJ)`La?z#dx6)OoD!C(RCa&*+;pvVWM6c1?I zE8{$8Io5NOmZpxJ!lmurre35xiK^-^F9^P(b%!OoLEZWVS#-X7PYE(|Np-B4Ql>ae z=qjs`+GC^A&eStu(P<|CI_FR&p>^;|4!Y1F;e%^3QlEHr+ab1K+*@c{=sZo>l^|Vp z9YMhl7v(y9I?4KrWwnb_aETH`LXQQmZjcg?BXG*%Q z+!2u`b`(m>19iQ+L9ez38Ly%WcR6Wd{-VK6^j*-0beFWTJA>7!=D-$;iLNa6OqwzS z)T%@Bz8{Q21S#%imRPVmEjO~X#fzY#dhf1Q8;_lXRbB^@Qz{>!fn+_8R=H4kRWd?)Bmz9k(Dp_HEEKvYNBpw-Y zgL>s;I*};H!`rLGde4Vi9sv|FF0L-M-a~UC#7A`Utvvc z(51?=2GB(DGsM|Dd+9*YoDQrM2yqI$0H3?|#3`v5)i3EFN#YG$^dT z&ow%i6x%umAS6#Z(0j=J6CrYJ=EZnP3p8!>!}<3Y7N1($LEP0 z%cW1mCP@`2IeD6Q=8|Q%7nC3p>@+o$K3lfu;wLvQb;+cq+0We4+g3X3b6uPF-L6fr zhDf?2UvkEuUT>cb4@GVG7gt>OB>OsMx}xhPlep zdN)xBaLaRTYZk99V6w+<(MoXB&NvC1ystA=>JLNhR=+IjW2O^4^(Pe>g4MgrzRSnCU#_b7wq_4@nyob#msHL7j&-T=nM2~O`@ zugn#9DxWS^NJ+~bB&8xC`LHS})H9)CCSW$t6I-Tssq2us{7@)+lX%o-XDv>ls}*(MN<-lkt5 ze?~b}0BrgS!Vzou8tM3Rh)--Y>nR!@facX3kEd22X4odnzRod6Mk$Hr@idyY{~F?Z zYCz?eE&_Rc=@S?C*{JGn@;G$@vL!VqtME& z>+50jIb}*Sn`4jx)e-mZhfi@oGK9;D$4J(6+U>Ti$h$pMNtT4mh{k!z5QyC2zH?s0 zgOY#xlVpmZnOm)21LDbIJ>p}7HciidUb>Ee#@8GLsv*k(KgjRkAL^fOBGXns0t^f% z^S{+UlHXv~)yC4&&Gq?T4}XD(aXsbxQb^JP)j=WSa0p*Y`jxZzOkGIDaJwLVg=ir* z(Iz@Vx{LtC)N;gh-fYnHG8{xw11rS4Fx-C|em86!mBgkbn@OlbPVI2;rQl-ATmD7i za{O~Y)hu%=JXxVuJuWv)jVyr>6``xMll2!G^O8aDUkl4R%XRj=yKTOf@#+34v-gsX z$4R_5?idaCFlF@J(M#%3Mj}%*5&Qu^hV>-XQL`>im;5Z>Y6nu;_CtC}_b+DgYyHSs zz=+uEvE0jav@ap%*r@ViZVEV0R-fevUApq?i-!-d&4ZuwvoG9sxIKeO

%UiAdvQz4KVUG9!4QSy5QTjeIOi1QENUsG@$?`cl&2PqK^;fNf1 z*8+{|7(GyKziJsltj4Gphv1Wdy+ek1vQ4{{NfYL7{Z_c_&ehp^yD>)cZ_e%I6Z2Ua z+F_IGI3^_Laddb2Ck950%MBX7rQr4He`Tb!UXJ8>ZPOPx%ZcCBqqK?ARKTb7UABDH zVOBj={0%)DX?S5dBf8+B9&>sgi8*YQ#JlWBmecqX3ZHdGMK1f-@5^>hWz|;zIFzz$ zNiNuk?+AE3%7Of3avf4^%aWNFT)sg1jPwDJd+H}{iOPBTw~kqLp#$_4Xq8mdwmg>XE)(lkP@^41@K(#o#Oi8%ok=5DF9mQC$mQF*Yr~=so;i- zY8}4n$S1cquI^{4Dh<_x$EV<*gdui~LIpG6j;m>&4obQA7uAVYq)Yv$)XEi(x2%j* zgVICI*G#>MjcZ?XM8qhuRk1(a7ES6+Sx57RPJ7YRiFBKhfIiM;<eU;(WKk=<1rcv# z>^xyykp)NV$@s!6r8R9vEcK(@2X z_gmqs~OQjLmbG$3vJ{crU+G3gdh2Dv1D(5ZaTA)u52O7K+T0@LCn3Dy1!Ie~u_D!jzL$K` zB+%JKTc;>D4AV5YP_) zfgwehLNTWDmlqi`9sm-<;=2vEzdO>nq*Egh2?hrFo@x5;^a{a$5V?(+i=~Bzn~SZZ z^L$i|4|GwR5{eNV=N8cBs`qvmHL?NL`FH?3RFV@$j_uVLK0^h_rD$}oWkx`Vbl zI&!P`5~xfzWBiM{x3ulnySBGqzmmSuTW9a*fbo3)0bG7Lb+8nxOT4P$`PhcUNTH8gf+E`9nX=MH z*j@8O3m6gca2F#jPp(^wh@B9Wsp6uqXIR>D^c!E9lAHP9z%-2 z0^bt;HatwrFf{K~OTU)UHE1#xDF%nUGHx2}&hZe@Oj8`~P4eh|dOCh<%Z`iF%X6gh zHoOoHYd0TddOvyKaULNhw~1o3e(tZ)9sCD3g=X?(9^X4*;$OK(-1~1>fX&rhz)r5u z&A~2~4}V$x)JN}~h0}IMmPI6)s(cujmY}YR7&f?w(NH!qOueMN7%HI zadJ4iwQsETk*MNLL+)E1T4uO$ds=q^iOEqt-&nfc45ErMUf>igMJADsxg&EmyYS*t z;CDPjf|&Y(&%miAA1O``U(Bc$24*)Jod&J3@Y&P_j@x0yE>cHSaKs&vl z9@?rwW^AQCd^e}&TXCQ88HWBfeQfQPXl(r*U}>QkNi*}&ka4?bE%C7j#DdSJ=-nMb z=L9wJ(fbdx<7NDBU;5gGxS)@{jtGVoN&T9h)_v3K5*8I>(aS%+=}^x=uZZNv|B8Ie z1WMj(Zn(Uu&0I>Z5YJNqGg!$ZN>OVwOf5e2w0Kl`;T5c)zj1vMmEEx(=kD&t=~L9r zV;tdUrbY$_Ava<=RBw2mTyin;jN5v+0(7jWv>R(u#*x`h8*TCcMv(DqWTya%QdP;r zqUv=N&y74)Jzv;|Xzk#jlY#G(di`Ich4VOCW=>8I!OBS-cI@H634{7Y4IQK`=y9Mb z#;|IM&^Ckj>1F(o4~U=S*g_RUt5=I&rHe5k>qf-$|?ZW5cEk(&#PqD z#s@3J6VD8lR>?7W1%srX{!sUe9q8F3Y-Yx(FaNme1L<3c6v6o1|E@x+hV}D)tglaXx#AUSlzIcIdM?WA#2%bUb!__) z``($Y_ve4_3lB`^@6>m9bpwO`^5?_{v>pzE(2bQ6l*MID3jt)PY!r* zl&~z;pg&i^v_7B$f9vJHD&NK&Okmpms!#6Ef4?sSDX^oPrK6jPrni%&tI@-KRcacj zzUCnCztBnOcs4bTY>wf8ZA|4Jd4{a{Dp2s1f)8M^vnjM?PdYWUeQL_T$#sO*h^IEL z(KKg@mA=kGkxs2;M>2)f+d!nh$%3;}QAY^=*{SXqE_K>WAw?tOAd6=ok&?w&>QgXo z%GpcJE;Ccat4n6cGwnm)atyqc*x83CaL_P6U-)@6(WEv+%7wS$xnP=xYXxL?38RwC zYM%1JIZFA-p+)iJWQ`gmDA}MtehC+9kmzLHkvg`?{f0^=E7RW&;y?c?2P68ta8`!aWnFMhUR5FcLsxS-jM|(624g1M}BHeG+$?$gEaDo%!G4eNJS5 z%~FkQTq>2vo)tK5{K8qI$6NStB5C>pW38+Eqf&eoS{yWFQ?(O=C97LEYs_pI#kbm(DL_D}imlQT7?f7*FW>_5zsehc&c zFW=jFJX!iv`7x{cup@p;1N>jge@+7aH1L=fcpyK2%lCU|_75ubPu0ix?SVJ=E#L3k z_kR}te^`V+tvtp94_NQFgya3afIpGnpB5gs$_L!=Tm0?~K0*