From c83fcb7f26912900b3375017da4b0f19d9634721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Fri, 24 Mar 2023 22:39:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=AE=8C=E6=88=90=E5=BA=95=E9=83=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Yi.BBS.Vue3/src/apis/commentApi.js | 7 ++++ Yi.BBS.Vue3/src/components/BottomInfo.vue | 25 ++++++++++---- Yi.BBS.Vue3/src/components/CommentInfo.vue | 31 +++++++++++++---- Yi.BBS.Vue3/src/components/DisscussCard.vue | 13 ++++--- Yi.BBS.Vue3/src/views/Article.vue | 4 ++- Yi.BBS.Vue3/src/views/Discuss.vue | 11 ++++-- Yi.BBS.Vue3/src/views/Index.vue | 4 +-- .../ApplicationContractsSwaggerDoc.xml | 5 +++ .../Dtos/Argee/{ArgeeDto.cs => AgreeDto.cs} | 10 +++--- .../Exhibition/AgreeService.cs | 6 ++-- .../project/BBS/Yi.BBS.Web/yi-sqlsugar-dev.db | Bin 331776 -> 331776 bytes .../ApplicationContractsSwaggerDoc.xml | 5 +++ .../Exhibition/Dtos/Argee/ArgeeDto.cs | 30 ---------------- .../Dtos/Discuss/DiscussGetListOutputDto.cs | 5 ++- .../Exhibition/AgreeService.cs | 6 ++-- .../Forum/DiscussService.cs | 32 ++++++++++++------ .../project/bbs/Yi.BBS.Web/yi-sqlsugar-dev.db | Bin 331776 -> 331776 bytes 17 files changed, 118 insertions(+), 76 deletions(-) rename Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application.Contracts/Exhibition/Dtos/Argee/{ArgeeDto.cs => AgreeDto.cs} (74%) delete mode 100644 Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application.Contracts/Exhibition/Dtos/Argee/ArgeeDto.cs diff --git a/Yi.BBS.Vue3/src/apis/commentApi.js b/Yi.BBS.Vue3/src/apis/commentApi.js index 78e2a034..84e4d43c 100644 --- a/Yi.BBS.Vue3/src/apis/commentApi.js +++ b/Yi.BBS.Vue3/src/apis/commentApi.js @@ -12,4 +12,11 @@ export function add(data){ method: 'post', data:data }) +}; + +export function del(ids){ + return myaxios({ + url: `/comment/${ids}`, + method: 'delete' + }) }; \ No newline at end of file diff --git a/Yi.BBS.Vue3/src/components/BottomInfo.vue b/Yi.BBS.Vue3/src/components/BottomInfo.vue index 4dcca62c..b1ebbe07 100644 --- a/Yi.BBS.Vue3/src/components/BottomInfo.vue +++ b/Yi.BBS.Vue3/src/components/BottomInfo.vue @@ -1,25 +1,36 @@ \ No newline at end of file diff --git a/Yi.BBS.Vue3/src/components/CommentInfo.vue b/Yi.BBS.Vue3/src/components/CommentInfo.vue index 4df5fe33..67c98f99 100644 --- a/Yi.BBS.Vue3/src/components/CommentInfo.vue +++ b/Yi.BBS.Vue3/src/components/CommentInfo.vue @@ -32,21 +32,23 @@ 4 - 回复 + 回复 + 删除
回复 +
- +
- 回复@{{ children.commentedUser.nick }} + 回复@{{ children.commentedUser.nick }}
{{ children.content }} @@ -55,8 +57,8 @@ 0 - 回复 - + 回复 + 删除
@@ -74,7 +76,7 @@ diff --git a/Yi.BBS.Vue3/src/views/Article.vue b/Yi.BBS.Vue3/src/views/Article.vue index 48f70454..7b088198 100644 --- a/Yi.BBS.Vue3/src/views/Article.vue +++ b/Yi.BBS.Vue3/src/views/Article.vue @@ -58,7 +58,9 @@ + + @@ -126,7 +128,7 @@ import AvatarInfo from "@/components/AvatarInfo.vue"; import InfoCard from "@/components/InfoCard.vue"; import ArticleContentInfo from "@/components/ArticleContentInfo.vue"; import CommentInfo from "@/components/CommentInfo.vue"; - +import BottomInfo from '@/components/BottomInfo.vue' import TreeArticleInfo from "@/components/TreeArticleInfo.vue"; import { useRoute, useRouter } from "vue-router"; diff --git a/Yi.BBS.Vue3/src/views/Discuss.vue b/Yi.BBS.Vue3/src/views/Discuss.vue index 49647607..834d03e6 100644 --- a/Yi.BBS.Vue3/src/views/Discuss.vue +++ b/Yi.BBS.Vue3/src/views/Discuss.vue @@ -58,14 +58,14 @@
- +
- +
+
+ + + + @@ -90,7 +95,7 @@ import DisscussCard from '@/components/DisscussCard.vue' import {getList,getTopList} from '@/apis/discussApi.js' import { onMounted, ref,reactive } from 'vue' import { useRoute,useRouter } from 'vue-router' - +import BottomInfo from '@/components/BottomInfo.vue' //数据定义 const route=useRoute() const router=useRouter() diff --git a/Yi.BBS.Vue3/src/views/Index.vue b/Yi.BBS.Vue3/src/views/Index.vue index 61349f8a..1d45bced 100644 --- a/Yi.BBS.Vue3/src/views/Index.vue +++ b/Yi.BBS.Vue3/src/views/Index.vue @@ -10,11 +10,11 @@ - + - + diff --git a/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application.Contracts/ApplicationContractsSwaggerDoc.xml b/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application.Contracts/ApplicationContractsSwaggerDoc.xml index 12192b58..99ba1b06 100644 --- a/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application.Contracts/ApplicationContractsSwaggerDoc.xml +++ b/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application.Contracts/ApplicationContractsSwaggerDoc.xml @@ -94,6 +94,11 @@ Discuss输入创建对象 + + + 是否已点赞 + + Label输入创建对象 diff --git a/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application.Contracts/Exhibition/Dtos/Argee/ArgeeDto.cs b/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application.Contracts/Exhibition/Dtos/Argee/AgreeDto.cs similarity index 74% rename from Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application.Contracts/Exhibition/Dtos/Argee/ArgeeDto.cs rename to Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application.Contracts/Exhibition/Dtos/Argee/AgreeDto.cs index 25391e8f..a2a1465d 100644 --- a/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application.Contracts/Exhibition/Dtos/Argee/ArgeeDto.cs +++ b/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application.Contracts/Exhibition/Dtos/Argee/AgreeDto.cs @@ -6,12 +6,12 @@ using System.Threading.Tasks; namespace Yi.BBS.Application.Contracts.Exhibition.Dtos.Argee { - public class ArgeeDto + public class AgreeDto { - public ArgeeDto(bool isArgee) + public AgreeDto(bool isAgree) { - IsArgee = isArgee; - if (isArgee) + IsAgree = isAgree; + if (isAgree) { Message = "点赞成功,点赞+1"; @@ -24,7 +24,7 @@ namespace Yi.BBS.Application.Contracts.Exhibition.Dtos.Argee } - public bool IsArgee { get; set; } + public bool IsAgree { get; set; } public string Message { get; set; } } } diff --git a/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application/Exhibition/AgreeService.cs b/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application/Exhibition/AgreeService.cs index 75f4fa5f..fb41f751 100644 --- a/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application/Exhibition/AgreeService.cs +++ b/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Application/Exhibition/AgreeService.cs @@ -37,7 +37,7 @@ namespace Yi.BBS.Application.Exhibition /// 点赞,返回true为点赞+1,返回false为点赞-1 /// /// - public async Task PostOperateAsync(long discussId) + public async Task PostOperateAsync(long discussId) { var entity = await _repository.GetFirstAsync(x => x.DiscussId == discussId && x.CreatorId == _currentUser.Id); //判断是否已经点赞过 @@ -56,7 +56,7 @@ namespace Yi.BBS.Application.Exhibition await _discssRepository.UpdateAsync(discussEntity); uow.Commit(); } - return new ArgeeDto(true); + return new AgreeDto(true); } else @@ -75,7 +75,7 @@ namespace Yi.BBS.Application.Exhibition uow.Commit(); } - return new ArgeeDto(false); + return new AgreeDto(false); } } } diff --git a/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Web/yi-sqlsugar-dev.db b/Yi.Framework.Net6/src/project/BBS/Yi.BBS.Web/yi-sqlsugar-dev.db index a88251c38222c795eb9a66245906bafe83129834..10ea2779aa726c3728842cbfcee444dc6a67e4b1 100644 GIT binary patch delta 1724 zcmaJ>Yitx%6ux)w-Mh1onc31Zx-DQyXiAG6X70W71S9QA#DG8$ADDpai$sW#(A307 z0&T3Q5d=jpK_NhZG)Bsg7MIe{YJZRzQ`15eLqv$0C?q7rA4W)s-hH%P2ywEL+?_e! zIp6o4b7t$onym+GcGkiCt{GXF@62`QV0SKZGKY@5hT0R&BDM+rh7(?*xvwg{FfLZ^ zN73oSKR?;lmIm!9M4&PJy)mOJ4L0W=c@urpPz^UheW%_6H=&_OW9r}35uD54e-J$b z6P+AY6I*R)jf<_lXc^SSXfIk>OYP9{LQYMG+m;phoqn{M1ZqoG5%ytpC|!6Tgbp(U z=5ppx@#|r9D&Y0y=bq_Wu1^_FRe@>Xj;nJPt|p$^2$cBZI)yMmvT;S!_oAmnQxBTc zEOXG1x}hDI-1BXl2dQmuD>cMvXvivXyHmonDhl{y&AjYMq^VpT;b3qqTj zj>jyU=b!6A^P&-WRD5_GU7KFyak8jZf!R``hsFE7XtySL+kVJxlez(=`IZw1Vi*_m z`_MMw_M`N)k~A-5GKBdo;6eVUJ~T$)Qc-&vtr3wylu1kG%ncbcUFva9)}J?sF1#}> z1CVwU>Z`S*+GRbXUDh_rwmq$F(YJ#zONcRiA+~oU4X8y~i^W>#WG&z1uJ1F>jov*o zKawHF-Y?d7%f9+bl$4O*y|#NH3oIoA#*Bgaw~j?BkjV)o*)o1lsO+6*ThwNT`8ihN#z&aIG2ebcdB%L|MF zw(3&b6jb)CUF=$co#lRff;sG;%u$hoQIj*7!m}mu`ZFU_ITHFPKzbk0FY0~z*ZQcu zkI4>vtUs&&0n`cmQ>DeZP;^u&{~-mBlI5_X>~dI1NKDep7=t&LUzO#`kRrSIS2>K+ zXbwCscNH(jkt%pxmRt+xztEl_*{a3|?wj4D80DR{J7q#c|y0WTrPe13C+ zv`&IbyIlz?PA}u8#ibzNGydRJr7j^Ua&@hUU4gGi2G>)?uZ1#vanavW8qaUI zj`u|pb+I;}59+V$vxPQ>m#P^!3Ok_#-U2tkja{wNReA1+&n9F6k+=AB3iucm1^flCElJ$r33+BO6!qBvCS? zumb=XWi2*k@;5m^L!Z?uQemY{G_>uI%k|`PfhjkJ_WhHRAro7*ra4LCDp3|FQll~S z`K{U!sqWA(xH?5yXgP)D=iJ&ei0U#0v0g~2Nj>`VgA&(J#)%!{m=!{53n3EYnLeYP zuu;Z5G~wT@^Y~HeU#WZ{I8`>!F{$H;J!5#W+HOk3|2VGQ>9}yl@iH9m0?S1AINpsD z0azqvp2G{(j;12La_iQg!wc>xUHEDh`o>M$a^2ek#SqyPW_ delta 725 zcmZ9KPe>I(9LHyN=B@i4`*zmUS7rwl9tQH(ot@ozyL-x>5k+YK4%x+bh@>E_5D!A7 zqIfXFkQy(6iU$dLL66+@Rfi4+f#D^LB8WOffwv9`L5)unX>K#W`Fwxh-xh(X!#eEhy zb`WJABZ#3UT8d~?Jh`c)bSGroqBQGrn@8`9XjO$r#r`GKDU=eb-Be&aWVRJh&I1}m z%_X!pY`g}D)B-Y2&X8KtAcKpOTRx7dIaN))91{yg z#RRFThZjeNOyHv}vb1pt?k3CGd2#^H;*#SoPc5?3pAPRLm49TrnCigRaUf67DqWN| zy4Pfj9Tz)VuH|wX1oVHY1o`7o@xm*7ihLM=F%UWs_+8(*9jK zR%BN_we*Hf$(9Rwj7`+2^vb2eM`Sh!m8kbR9=oEoB;-Gqyeuj{!){slt#55x&pN)R pBwE0IKuV;KG(^TKUMDr>Y?2be#xfvF + + + 是否已点赞 + + Label输入创建对象 diff --git a/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application.Contracts/Exhibition/Dtos/Argee/ArgeeDto.cs b/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application.Contracts/Exhibition/Dtos/Argee/ArgeeDto.cs deleted file mode 100644 index 25391e8f..00000000 --- a/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application.Contracts/Exhibition/Dtos/Argee/ArgeeDto.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Yi.BBS.Application.Contracts.Exhibition.Dtos.Argee -{ - public class ArgeeDto - { - public ArgeeDto(bool isArgee) - { - IsArgee = isArgee; - if (isArgee) - { - - Message = "点赞成功,点赞+1"; - } - else - { - - Message = "取消点赞,点赞-1"; - } - - } - - public bool IsArgee { get; set; } - public string Message { get; set; } - } -} diff --git a/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application.Contracts/Forum/Dtos/Discuss/DiscussGetListOutputDto.cs b/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application.Contracts/Forum/Dtos/Discuss/DiscussGetListOutputDto.cs index 13acca07..c7f972d6 100644 --- a/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application.Contracts/Forum/Dtos/Discuss/DiscussGetListOutputDto.cs +++ b/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application.Contracts/Forum/Dtos/Discuss/DiscussGetListOutputDto.cs @@ -11,7 +11,10 @@ namespace Yi.BBS.Application.Contracts.Forum.Dtos.Discuss { public class DiscussGetListOutputDto : IEntityDto { - + /// + /// Ƿѵ + /// + public bool IsAgree { get; set; } public long Id { get; set; } public string Title { get; set; } public string Types { get; set; } diff --git a/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application/Exhibition/AgreeService.cs b/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application/Exhibition/AgreeService.cs index 75f4fa5f..fb41f751 100644 --- a/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application/Exhibition/AgreeService.cs +++ b/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application/Exhibition/AgreeService.cs @@ -37,7 +37,7 @@ namespace Yi.BBS.Application.Exhibition /// 点赞,返回true为点赞+1,返回false为点赞-1 /// /// - public async Task PostOperateAsync(long discussId) + public async Task PostOperateAsync(long discussId) { var entity = await _repository.GetFirstAsync(x => x.DiscussId == discussId && x.CreatorId == _currentUser.Id); //判断是否已经点赞过 @@ -56,7 +56,7 @@ namespace Yi.BBS.Application.Exhibition await _discssRepository.UpdateAsync(discussEntity); uow.Commit(); } - return new ArgeeDto(true); + return new AgreeDto(true); } else @@ -75,7 +75,7 @@ namespace Yi.BBS.Application.Exhibition uow.Commit(); } - return new ArgeeDto(false); + return new AgreeDto(false); } } } diff --git a/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application/Forum/DiscussService.cs b/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application/Forum/DiscussService.cs index b86e9cf9..9bb79847 100644 --- a/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application/Forum/DiscussService.cs +++ b/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Application/Forum/DiscussService.cs @@ -17,6 +17,8 @@ using Yi.RBAC.Application.Contracts.Identity.Dtos; using Cike.EventBus.DistributedEvent; using Yi.BBS.Domain.Shared.Forum.Etos; using Yi.BBS.Domain.Shared.Forum.EnumClasses; +using Yi.Framework.Core.CurrentUsers; +using Yi.BBS.Domain.Exhibition.Entities; namespace Yi.BBS.Application.Forum { @@ -36,6 +38,8 @@ namespace Yi.BBS.Application.Forum [Autowired] private IDistributedEventBus _distributedEventBus { get; set; } + [Autowired] + private ICurrentUser _currentUser { get; set; } /// /// 单查 /// @@ -47,10 +51,13 @@ namespace Yi.BBS.Application.Forum var item = await _DbQueryable.LeftJoin((discuss, user) => discuss.CreatorId == user.Id) .Select((discuss, user) => new DiscussGetOutputDto { - User = new UserGetListOutputDto() { UserName = user.UserName, Nick = user.Nick,Icon=user.Icon } - }, true).SingleAsync(discuss => discuss.Id==id); - - _distributedEventBus.PublishAsync(new SeeDiscussEventArgs { DiscussId= item.Id, OldSeeNum= item .SeeNum}); + User = new UserGetListOutputDto() { UserName = user.UserName, Nick = user.Nick, Icon = user.Icon } + }, true).SingleAsync(discuss => discuss.Id == id); + if (item is not null) + { + _distributedEventBus.PublishAsync(new SeeDiscussEventArgs { DiscussId = item.Id, OldSeeNum = item.SeeNum }); + } + return item; } @@ -61,21 +68,24 @@ namespace Yi.BBS.Application.Forum /// /// - public override async Task> GetListAsync( [FromQuery] DiscussGetListInputVo input) + public override async Task> GetListAsync([FromQuery] DiscussGetListInputVo input) { //需要关联创建者用户 RefAsync total = 0; var items = await _DbQueryable .WhereIF(!string.IsNullOrEmpty(input.Title), x => x.Title.Contains(input.Title)) .WhereIF(input.PlateId is not null, x => x.PlateId == input.PlateId) - .Where(x=>x.IsTop==input.IsTop) - .OrderByIF(input.Type==QueryDiscussTypeEnum.New, x =>x.CreationTime,OrderByType.Desc ) + .Where(x => x.IsTop == input.IsTop) + .OrderByIF(input.Type == QueryDiscussTypeEnum.New, x => x.CreationTime, OrderByType.Desc) .OrderByIF(input.Type == QueryDiscussTypeEnum.Host, x => x.SeeNum, OrderByType.Desc) .OrderByIF(input.Type == QueryDiscussTypeEnum.Suggest, x => x.AgreeNum, OrderByType.Desc) - .LeftJoin((discuss, user) => discuss.CreatorId==user.Id) - .Select((discuss,user) =>new DiscussGetListOutputDto { - User=new UserGetListOutputDto() { UserName=user.UserName,Nick=user.Nick, Icon = user.Icon } - },true) + .LeftJoin((discuss, user) => discuss.CreatorId == user.Id) + .Select((discuss, user) => new DiscussGetListOutputDto + { + Id=discuss.Id, + IsAgree = SqlFunc.Subqueryable().Where(x => x.CreatorId == _currentUser.Id && x.DiscussId == discuss.Id).Any(), + User = new UserGetListOutputDto() { UserName = user.UserName, Nick = user.Nick, Icon = user.Icon } + }, true) .ToPageListAsync(input.PageNum, input.PageSize, total); return new PagedResultDto(total, items); } diff --git a/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Web/yi-sqlsugar-dev.db b/Yi.Framework.Net6/src/project/bbs/Yi.BBS.Web/yi-sqlsugar-dev.db index a88251c38222c795eb9a66245906bafe83129834..10ea2779aa726c3728842cbfcee444dc6a67e4b1 100644 GIT binary patch delta 1724 zcmaJ>Yitx%6ux)w-Mh1onc31Zx-DQyXiAG6X70W71S9QA#DG8$ADDpai$sW#(A307 z0&T3Q5d=jpK_NhZG)Bsg7MIe{YJZRzQ`15eLqv$0C?q7rA4W)s-hH%P2ywEL+?_e! zIp6o4b7t$onym+GcGkiCt{GXF@62`QV0SKZGKY@5hT0R&BDM+rh7(?*xvwg{FfLZ^ zN73oSKR?;lmIm!9M4&PJy)mOJ4L0W=c@urpPz^UheW%_6H=&_OW9r}35uD54e-J$b z6P+AY6I*R)jf<_lXc^SSXfIk>OYP9{LQYMG+m;phoqn{M1ZqoG5%ytpC|!6Tgbp(U z=5ppx@#|r9D&Y0y=bq_Wu1^_FRe@>Xj;nJPt|p$^2$cBZI)yMmvT;S!_oAmnQxBTc zEOXG1x}hDI-1BXl2dQmuD>cMvXvivXyHmonDhl{y&AjYMq^VpT;b3qqTj zj>jyU=b!6A^P&-WRD5_GU7KFyak8jZf!R``hsFE7XtySL+kVJxlez(=`IZw1Vi*_m z`_MMw_M`N)k~A-5GKBdo;6eVUJ~T$)Qc-&vtr3wylu1kG%ncbcUFva9)}J?sF1#}> z1CVwU>Z`S*+GRbXUDh_rwmq$F(YJ#zONcRiA+~oU4X8y~i^W>#WG&z1uJ1F>jov*o zKawHF-Y?d7%f9+bl$4O*y|#NH3oIoA#*Bgaw~j?BkjV)o*)o1lsO+6*ThwNT`8ihN#z&aIG2ebcdB%L|MF zw(3&b6jb)CUF=$co#lRff;sG;%u$hoQIj*7!m}mu`ZFU_ITHFPKzbk0FY0~z*ZQcu zkI4>vtUs&&0n`cmQ>DeZP;^u&{~-mBlI5_X>~dI1NKDep7=t&LUzO#`kRrSIS2>K+ zXbwCscNH(jkt%pxmRt+xztEl_*{a3|?wj4D80DR{J7q#c|y0WTrPe13C+ zv`&IbyIlz?PA}u8#ibzNGydRJr7j^Ua&@hUU4gGi2G>)?uZ1#vanavW8qaUI zj`u|pb+I;}59+V$vxPQ>m#P^!3Ok_#-U2tkja{wNReA1+&n9F6k+=AB3iucm1^flCElJ$r33+BO6!qBvCS? zumb=XWi2*k@;5m^L!Z?uQemY{G_>uI%k|`PfhjkJ_WhHRAro7*ra4LCDp3|FQll~S z`K{U!sqWA(xH?5yXgP)D=iJ&ei0U#0v0g~2Nj>`VgA&(J#)%!{m=!{53n3EYnLeYP zuu;Z5G~wT@^Y~HeU#WZ{I8`>!F{$H;J!5#W+HOk3|2VGQ>9}yl@iH9m0?S1AINpsD z0azqvp2G{(j;12La_iQg!wc>xUHEDh`o>M$a^2ek#SqyPW_ delta 725 zcmZ9KPe>I(9LHyN=B@i4`*zmUS7rwl9tQH(ot@ozyL-x>5k+YK4%x+bh@>E_5D!A7 zqIfXFkQy(6iU$dLL66+@Rfi4+f#D^LB8WOffwv9`L5)unX>K#W`Fwxh-xh(X!#eEhy zb`WJABZ#3UT8d~?Jh`c)bSGroqBQGrn@8`9XjO$r#r`GKDU=eb-Be&aWVRJh&I1}m z%_X!pY`g}D)B-Y2&X8KtAcKpOTRx7dIaN))91{yg z#RRFThZjeNOyHv}vb1pt?k3CGd2#^H;*#SoPc5?3pAPRLm49TrnCigRaUf67DqWN| zy4Pfj9Tz)VuH|wX1oVHY1o`7o@xm*7ihLM=F%UWs_+8(*9jK zR%BN_we*Hf$(9Rwj7`+2^vb2eM`Sh!m8kbR9=oEoB;-Gqyeuj{!){slt#55x&pN)R pBwE0IKuV;KG(^TKUMDr>Y?2be#xfvF