<html>
<head>
<title>練成ベース皮算用</title>
</head>
<body onload="Load();">
<script type="text/javascript">
<!--
var Base =new Item(0,0,0,0,0,"Base");
var HQ = new Item(0,0,0,0,0,"HQ");
var Mat = new Item(0,0,0,0,0,"Mat");
var BaseList = new Array();
var MatList = new Array();
function Load(){
MakeBaseList();
MakeMatList();
Base.ToZero();
HQ.ToZero();
Mat.ToZero();
}
function Item(Ph,Fi,Co,Po,En,Info){
this.Ph = Ph;
this.Fi = Fi;
this.Co = Co;
this.Po = Po;
this.En = En;
this.Info =Info;
this.ToZero= function(){
this.Ph = 0;
this.Fi = 0;
this.Co = 0;
this.Po = 0;
this.En = 0
this.Info = "";
}
}
function MakeBaseList(){
//alert("BaseList!");
BaseList = new Array();
BaseList["None"] = new Item(0,0,0,0,0, "None");
BaseList["Plate"] = new Item(5,3,2,3,2, "Plate");
BaseList["Chain"] = new Item(4,4,4,1,2, "Chain");
BaseList["Ring"] = new Item(3,3,1,5,3, "Ring");
BaseList["Leather"] = new Item(2,4,3,3,3, "Leather");
BaseList["Stud"] = new Item(2,4,3,3,4, "Stud");
BaseList["Bone"] = new Item(3,3,4,2,4, "Bone");
BaseList["Leaf"] = new Item(2,3,2,4,4, "Leaf");
BaseList["Hide"] = new Item(3,3,4,3,2, "Hide");
BaseList["Wood"] = new Item(5,3,2,3,2, "Wood");
BaseList["Scale"] = new Item(3,3,3,3,3, "Scale");
BaseList["GargPlate"] = new Item(8,6,5,6,5, "GargishPlate\nガーゴイル専用");
BaseList["GargLeather"] = new Item(5,6,7,6,6, "GargishLeather\nガーゴイル専用");
BaseList["GargStone"] = new Item(6,6,4,8,6, "GargishStone\nガーゴイル専用");
}
function MakeMatList(){
//alert("MatList!");
MatList = new Array();
MatList["None"] = new Item(0,0,0,0,0, "None");
MatList["Iron"] = new Item(0,0,0,0,0, "Iron");
MatList["Dull"] = new Item(6,0,0,0,0, "Dull Copper\n装備条件-20%\n耐久値+50%");
MatList["Shadow"] = new Item(2,1,0,0,5, "Shadow\n耐久+100%");
MatList["Copper"] = new Item(1,1,0,5,2, "Copper");
MatList["Bronze"] = new Item(3,0,5,1,1, "Bronze");
MatList["Gold"] = new Item(1,1,2,0,2, "Gold\n幸運+40\n装備条件-30");
MatList["Agapite"] = new Item(2,3,2,2,2, "Agapite");
MatList["Verite"] = new Item(3,3,2,3,1, "Verite");
MatList["Valorite"] = new Item(4,0,3,3,3, "Valorite\n耐久+50%");
MatList["RedScale"] = new Item( 0,10,-3, 0, 0, "RedScale");
MatList["YellowScale"] = new Item(-3, 0, 0, 0, 0, "YellowScale\n幸運+20");
MatList["GreenScale"] = new Item( 0,-3, 0,10, 0, "GreenScale");
MatList["BlueScale"] = new Item( 0, 0, 0,-3,10, "BlueScale");
MatList["WhiteScale"] = new Item(-3, 0,10, 0, 0, "WhiteScale");
MatList["BlackScale"] = new Item(10, 0, 0, 0,-3, "BlackScale");
MatList["Leather"] = new Item(0,0,0,0,0, "Leather");
MatList["Spined"] = new Item(5,0,0,0,0, "Spined");
MatList["Honed"] = new Item(2,3,2,2,2, "Honed");
MatList["Barbed"] = new Item(2,1,2,3,4, "Barbed");
MatList["Wood"] = new Item(0,0,0,0,0, "Wood");
MatList["Oak"] = new Item(3,3,0,2,3, "Ork\n耐久+50\n幸運+40");
MatList["Ash"] = new Item(2,0,4,1,6, "Ash\n重量-25");
MatList["Yew"] = new Item(6,3,3,0,3, "Yew\nHP回復+1");
MatList["Heart"] = new Item(2,3,2,7,2, "HeartWood\n幸運40 or 耐久+50% or 装備条件-20% or 重量-50% or 命中+5% or 武器ダメージ+10% or 瞑想化");
MatList["Blood"] = new Item(3,8,1,3,3, "BloodWood\nHP回復+2");
MatList["Frost"] = new Item(2,1,8,3,4, "FrostWood");
}
function CalcHQBouns(){
HQ.Ph = parseInt(HQPh.value);
HQ.Fi = parseInt(HQFi.value);
HQ.Co = parseInt(HQCo.value);
HQ.Po = parseInt(HQPo.value);
HQ.En = parseInt(HQEn.value);
var N =HQ.Ph + HQ.Fi + HQ.Co + HQ.Po + HQ.En;
var HQR = parseInt(HQRes.value);
var str ="" + (HQR - N);
if(HQR-N <0) str = "<font color=red>" + (HQR-N) + "</font>"
HQBouns.innerHTML = str;
HQ.Info = "HQBounus is " + N + " Point used!"
if(HQR-N<0) HQ.Info += "\nit is Over the " + Math.abs(HQR-N) + " Point";
WriteResult(Base,HQ,Mat);
}
function SetBaseItems(Obj){
BPh.value = Obj.Ph;
BFi.value = Obj.Fi;
BCo.value = Obj.Co;
BPo.value = Obj.Po;
BEn.value = Obj.En;
WriteResult(Base,HQ,Mat);
}
function SetMatItems(Obj){
MTPh.value = Obj.Ph;
MTFi.value = Obj.Fi;
MTCo.value = Obj.Co;
MTPo.value = Obj.Po;
MTEn.value = Obj.En;
WriteResult(Base,HQ,Mat);
}
function WriteResult(Base,HQ,Mat){
var Ph = Base.Ph + HQ.Ph + Mat.Ph;
var Fi = Base.Fi + HQ.Fi + Mat.Fi;
var Co = Base.Co + HQ.Co + Mat.Co;
var Po = Base.Po + HQ.Po + Mat.Po;
var En = Base.En + HQ.En + Mat.En;
RPh.value = Ph;
RFi.value = Fi;
RCo.value = Co;
RPo.value = Po;
REn.value = En;
TotalPoint.value = Ph+Fi+Co+Po+En;
info.value = Base.Info+"\n"+Mat.Info+"\n"+HQ.Info+"\n";
}
// -->
</script>
<center>
<h1>練成ベース皮算用</h1>
<hr>
<table border="1">
<tr><td>抵抗</td><td>ベース</td><td>素材</td><td>HQボーナス</td><td></td><td>結果</td></tr>
<tr><td></td>
<td>
<select name="BaseArmor" onchange="SetBaseItems((Base = BaseList[BaseArmor.value]));">
<option value=None>-Select-
<option value=Plate>Platemail
<option value=Chain>Chainmail
<option value=Ring>Ringmail
<option value=Scale>Scale
<option value=Leather>Leather
<option value=Stud>Stud
<option value=Bone>Bone
<option value=Leaf>Leaf
<option value=Hide>Hide
<option value=Wood>Wood
<option value=GargPlate>Plate(Gargoyle)
<option value=GargLeather>Learther(Gargoyle)
<option value=GargStone>Stone(Gargoyle)
</select>
</td>
<td>
<select name="Material" onchange="SetMatItems(Mat = MatList[Material.value]);">
<option value="None">-Select-
<option value="Iron">Iron
<option value="Dull">Dull Copper
<option value="Shadow">Shadow
<option value="Copper">Copper
<option value="Bronze">Bronze
<option value="Gold">Gold
<option value="Agapite">Agapite
<option value="Verite">Verite
<option value="Valorite">Valorite
<option value="RedScale">RedScale
<option value="YellowScale">YellowScale
<option value="GreenScale">GreenScale
<option value="BlueScale">BlueScale
<option value="WhiteScale">WhiteScale
<option value="BlackScale">BlackScale
<option value="Leather">Leather
<option value="Spined">Spined
<option value="Honed">Honed
<option value="Barbed">Baebed
<option value="Wood">Wood
<option value="Oak">Oak
<option value="Ash">Ash
<option value="Yew">Yew
<option value="Heart">HeartWood
<option value="Blood">BloodWood
<option value="Frost">FrostWood
</select>
</td>
<td>
<select name="ArmsLore" onchange="HQRes.value = ArmsLore.value; CalcHQBouns(); ">
<option value=0>-Select-
<option value=15>Non Armslore
<option value=20>GM Armslore
</select>
<br>
<input type=text value=15 name=HQRes onchange="CalcHQBouns();"></input>
</td>
<td></td>
<td></td>
</tr>
<tr> <td>
<center>
物理<br>
炎<br>
冷気<br>
毒<br>
エネ<br>
</center>
</td>
<td>
<input type=text value=0 name=BPh></input><br>
<input type=text value=0 name=BFi></input><br>
<input type=text value=0 name=BCo></input><br>
<input type=text value=0 name=BPo></input><br>
<input type=text value=0 name=BEn></input><br>
</td>
<td>
<input type=text value=0 name=MTPh></input><br>
<input type=text value=0 name=MTFi></input><br>
<input type=text value=0 name=MTCo></input><br>
<input type=text value=0 name=MTPo></input><br>
<input type=text value=0 name=MTEn></input><br>
</td>
<td>
<input type=text value=0 name=HQPh onchange="CalcHQBouns();"></input><br>
<input type=text value=0 name=HQFi onchange="CalcHQBouns();"></input><br>
<input type=text value=0 name=HQCo onchange="CalcHQBouns();"></input><br>
<input type=text value=0 name=HQPo onchange="CalcHQBouns();"></input><br>
<input type=text value=0 name=HQEn onchange="CalcHQBouns();"></input><br>
</td>
<td>
</td>
<td> <input type=text value=0 name=RPh></input><br>
<input type=text value=0 name=RFi></input><br>
<input type=text value=0 name=RCo></input><br>
<input type=text value=0 name=RPo></input><br>
<input type=text value=0 name=REn></input><br>
</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td><div id=HQBouns></div></td>
<td></td>
<td><input type=text value=0 name=TotalPoint></input></td>
</table>
<b>Info</b><br>
<textarea cols=72 rows=8 name=info></textarea>
</center>
<hr>
<p align="right">
<b>Copyright 2012 by Yakitori</b><br>
<b>Win7 HomeP 64bit + IE9 64bit</b><br>
<b>2012/02/20</b><br>
</p>
</body>
</html>
PGh0bWw+CjxoZWFkPgo8dGl0bGU+57e05oiQ44OZ44O844K555qu566X55SoPC90aXRsZT4KPC9oZWFkPgo8Ym9keSBvbmxvYWQ9IkxvYWQoKTsiPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KCXZhciBCYXNlID1uZXcgSXRlbSgwLDAsMCwwLDAsIkJhc2UiKTsKCXZhciBIUSA9IG5ldyBJdGVtKDAsMCwwLDAsMCwiSFEiKTsKCXZhciBNYXQgPSBuZXcgSXRlbSgwLDAsMCwwLDAsIk1hdCIpOwoKCXZhciBCYXNlTGlzdCA9IG5ldyBBcnJheSgpOwoJdmFyIE1hdExpc3QgPSBuZXcgQXJyYXkoKTsKZnVuY3Rpb24gTG9hZCgpewoJTWFrZUJhc2VMaXN0KCk7CglNYWtlTWF0TGlzdCgpOwoJQmFzZS5Ub1plcm8oKTsKCUhRLlRvWmVybygpOwoJTWF0LlRvWmVybygpOwp9CgpmdW5jdGlvbiBJdGVtKFBoLEZpLENvLFBvLEVuLEluZm8pewoJdGhpcy5QaCA9IFBoOwoJdGhpcy5GaSA9IEZpOwoJdGhpcy5DbyA9IENvOwoJdGhpcy5QbyA9IFBvOwoJdGhpcy5FbiA9IEVuOwoJdGhpcy5JbmZvID1JbmZvOwoKCXRoaXMuVG9aZXJvPSBmdW5jdGlvbigpewoJCXRoaXMuUGggPSAwOwogICAgICAgICAgICAgICAgdGhpcy5GaSA9IDA7CiAgICAgICAgICAgICAgICB0aGlzLkNvID0gMDsKICAgICAgICAgICAgICAgIHRoaXMuUG8gPSAwOwogICAgICAgICAgICAgICAgdGhpcy5FbiA9IDAKICAgICAgICAgICAgICAgIHRoaXMuSW5mbyA9ICIiOwoJfQp9CgoKZnVuY3Rpb24gTWFrZUJhc2VMaXN0KCl7CgkvL2FsZXJ0KCJCYXNlTGlzdCEiKTsKCUJhc2VMaXN0ID0gbmV3IEFycmF5KCk7CglCYXNlTGlzdFsiTm9uZSJdIAk9IG5ldyBJdGVtKDAsMCwwLDAsMCwJIk5vbmUiKTsKCUJhc2VMaXN0WyJQbGF0ZSJdIAk9IG5ldyBJdGVtKDUsMywyLDMsMiwJIlBsYXRlIik7CiAgICAgIAlCYXNlTGlzdFsiQ2hhaW4iXSAJPSBuZXcgSXRlbSg0LDQsNCwxLDIsCSJDaGFpbiIpOwogICAgICAgIEJhc2VMaXN0WyJSaW5nIl0gCT0gbmV3IEl0ZW0oMywzLDEsNSwzLAkiUmluZyIpOwogICAgICAgIEJhc2VMaXN0WyJMZWF0aGVyIl0JPSBuZXcgSXRlbSgyLDQsMywzLDMsCSJMZWF0aGVyIik7CiAgICAgICAgQmFzZUxpc3RbIlN0dWQiXSAJPSBuZXcgSXRlbSgyLDQsMywzLDQsCSJTdHVkIik7CiAgICAgICAgQmFzZUxpc3RbIkJvbmUiXQk9IG5ldyBJdGVtKDMsMyw0LDIsNCwJIkJvbmUiKTsKICAgICAgICBCYXNlTGlzdFsiTGVhZiJdIAk9IG5ldyBJdGVtKDIsMywyLDQsNCwJIkxlYWYiKTsKICAgICAgICBCYXNlTGlzdFsiSGlkZSJdIAk9IG5ldyBJdGVtKDMsMyw0LDMsMiwJIkhpZGUiKTsKICAgICAgICBCYXNlTGlzdFsiV29vZCJdIAk9IG5ldyBJdGVtKDUsMywyLDMsMiwJIldvb2QiKTsKICAgICAgICBCYXNlTGlzdFsiU2NhbGUiXSAJPSBuZXcgSXRlbSgzLDMsMywzLDMsCSJTY2FsZSIpOwogICAgICAgIEJhc2VMaXN0WyJHYXJnUGxhdGUiXSAJPSBuZXcgSXRlbSg4LDYsNSw2LDUsCSJHYXJnaXNoUGxhdGVcbuOCrOODvOOCtOOCpOODq+WwgueUqCIpOwogICAgICAgIEJhc2VMaXN0WyJHYXJnTGVhdGhlciJdID0gbmV3IEl0ZW0oNSw2LDcsNiw2LAkiR2FyZ2lzaExlYXRoZXJcbuOCrOODvOOCtOOCpOODq+WwgueUqCIpOwkKICAgICAgICBCYXNlTGlzdFsiR2FyZ1N0b25lIl0gCT0gbmV3IEl0ZW0oNiw2LDQsOCw2LAkiR2FyZ2lzaFN0b25lXG7jgqzjg7zjgrTjgqTjg6vlsILnlKgiKTsKfQoKCgoKZnVuY3Rpb24gTWFrZU1hdExpc3QoKXsJCgkvL2FsZXJ0KCJNYXRMaXN0ISIpOwoJTWF0TGlzdCA9IG5ldyBBcnJheSgpOwoJTWF0TGlzdFsiTm9uZSJdIAk9IG5ldyBJdGVtKDAsMCwwLDAsMCwJIk5vbmUiKTsKCU1hdExpc3RbIklyb24iXSAJPSBuZXcgSXRlbSgwLDAsMCwwLDAsCSJJcm9uIik7CglNYXRMaXN0WyJEdWxsIl0gCT0gbmV3IEl0ZW0oNiwwLDAsMCwwLAkiRHVsbCBDb3BwZXJcbuijheWCmeadoeS7ti0yMCVcbuiAkOS5heWApCs1MCUiKTsKCU1hdExpc3RbIlNoYWRvdyJdCT0gbmV3IEl0ZW0oMiwxLDAsMCw1LAkiU2hhZG93XG7ogJDkuYUrMTAwJSIpOwoJTWF0TGlzdFsiQ29wcGVyIl0gCT0gbmV3IEl0ZW0oMSwxLDAsNSwyLAkiQ29wcGVyIik7CglNYXRMaXN0WyJCcm9uemUiXSAJPSBuZXcgSXRlbSgzLDAsNSwxLDEsCSJCcm9uemUiKTsKCU1hdExpc3RbIkdvbGQiXSAJPSBuZXcgSXRlbSgxLDEsMiwwLDIsCSJHb2xkXG7lubjpgYsrNDBcbuijheWCmeadoeS7ti0zMCIpOwoJTWF0TGlzdFsiQWdhcGl0ZSJdIAk9IG5ldyBJdGVtKDIsMywyLDIsMiwJIkFnYXBpdGUiKTsKCU1hdExpc3RbIlZlcml0ZSJdIAk9IG5ldyBJdGVtKDMsMywyLDMsMSwJIlZlcml0ZSIpOwoJTWF0TGlzdFsiVmFsb3JpdGUiXSAJPSBuZXcgSXRlbSg0LDAsMywzLDMsCSJWYWxvcml0ZVxu6ICQ5LmFKzUwJSIpOwoKCU1hdExpc3RbIlJlZFNjYWxlIl0gCT0gbmV3IEl0ZW0oIDAsMTAsLTMsIDAsIDAsCSJSZWRTY2FsZSIpOwoJTWF0TGlzdFsiWWVsbG93U2NhbGUiXSAJPSBuZXcgSXRlbSgtMywgMCwgMCwgMCwgMCwJIlllbGxvd1NjYWxlXG7lubjpgYsrMjAiKTsKCU1hdExpc3RbIkdyZWVuU2NhbGUiXSAJPSBuZXcgSXRlbSggMCwtMywgMCwxMCwgMCwJIkdyZWVuU2NhbGUiKTsKCU1hdExpc3RbIkJsdWVTY2FsZSJdIAk9IG5ldyBJdGVtKCAwLCAwLCAwLC0zLDEwLAkiQmx1ZVNjYWxlIik7CglNYXRMaXN0WyJXaGl0ZVNjYWxlIl0gCT0gbmV3IEl0ZW0oLTMsIDAsMTAsIDAsIDAsCSJXaGl0ZVNjYWxlIik7CglNYXRMaXN0WyJCbGFja1NjYWxlIl0gCT0gbmV3IEl0ZW0oMTAsIDAsIDAsIDAsLTMsCSJCbGFja1NjYWxlIik7CgogICAJTWF0TGlzdFsiTGVhdGhlciJdCT0gbmV3IEl0ZW0oMCwwLDAsMCwwLAkiTGVhdGhlciIpOwogICAgICAgCU1hdExpc3RbIlNwaW5lZCJdIAk9IG5ldyBJdGVtKDUsMCwwLDAsMCwJIlNwaW5lZCIpOwogICAgICAgIE1hdExpc3RbIkhvbmVkIl0gCT0gbmV3IEl0ZW0oMiwzLDIsMiwyLAkiSG9uZWQiKTsKICAgICAgICBNYXRMaXN0WyJCYXJiZWQiXSAJPSBuZXcgSXRlbSgyLDEsMiwzLDQsCSJCYXJiZWQiKTsKCglNYXRMaXN0WyJXb29kIl0gCT0gbmV3IEl0ZW0oMCwwLDAsMCwwLAkiV29vZCIpOwoJTWF0TGlzdFsiT2FrIl0gCQk9IG5ldyBJdGVtKDMsMywwLDIsMywJIk9ya1xu6ICQ5LmFKzUwXG7lubjpgYsrNDAiKTsKICAgCU1hdExpc3RbIkFzaCJdCQk9IG5ldyBJdGVtKDIsMCw0LDEsNiwJIkFzaFxu6YeN6YePLTI1Iik7CiAgICAgICAJTWF0TGlzdFsiWWV3Il0gCQk9IG5ldyBJdGVtKDYsMywzLDAsMywJIllld1xuSFDlm57lvqkrMSIpOwogICAgICAgIE1hdExpc3RbIkhlYXJ0Il0gCT0gbmV3IEl0ZW0oMiwzLDIsNywyLAkiSGVhcnRXb29kXG7lubjpgYs0MCBvciDogJDkuYUrNTAlIG9yIOijheWCmeadoeS7ti0yMCUgb3Ig6YeN6YePLTUwJSBvciDlkb3kuK0rNSUgb3Ig5q2m5Zmo44OA44Oh44O844K4KzEwJSBvciDnnpHmg7PljJYiKTsKICAgICAgICBNYXRMaXN0WyJCbG9vZCJdIAk9IG5ldyBJdGVtKDMsOCwxLDMsMywJIkJsb29kV29vZFxuSFDlm57lvqkrMiIpOwogICAgICAgIE1hdExpc3RbIkZyb3N0Il0gCT0gbmV3IEl0ZW0oMiwxLDgsMyw0LAkiRnJvc3RXb29kIik7Cn0KIApmdW5jdGlvbiBDYWxjSFFCb3VucygpewoKCUhRLlBoID0gcGFyc2VJbnQoSFFQaC52YWx1ZSk7CglIUS5GaSA9IHBhcnNlSW50KEhRRmkudmFsdWUpOwoJSFEuQ28gPSBwYXJzZUludChIUUNvLnZhbHVlKTsKCUhRLlBvID0gcGFyc2VJbnQoSFFQby52YWx1ZSk7CglIUS5FbiA9IHBhcnNlSW50KEhRRW4udmFsdWUpOwoJCgl2YXIgTiA9SFEuUGggKyBIUS5GaSArIEhRLkNvICsgSFEuUG8gKyBIUS5FbjsKCXZhciBIUVIgPSBwYXJzZUludChIUVJlcy52YWx1ZSk7Cgl2YXIgc3RyID0iIiArIChIUVIgLSBOKTsKCWlmKEhRUi1OIDwwKSBzdHIgPSAiPGZvbnQgY29sb3I9cmVkPiIgKyAoSFFSLU4pICsgIjwvZm9udD4iCgkKCUhRQm91bnMuaW5uZXJIVE1MID0gc3RyOwoJSFEuSW5mbyA9ICJIUUJvdW51cyBpcyAiICsgTiArICIgUG9pbnQgdXNlZCEiCglpZihIUVItTjwwKSBIUS5JbmZvICs9ICAiXG5pdCBpcyBPdmVyIHRoZSAiICsgTWF0aC5hYnMoSFFSLU4pICsgIiBQb2ludCI7CglXcml0ZVJlc3VsdChCYXNlLEhRLE1hdCk7Cn0KZnVuY3Rpb24gU2V0QmFzZUl0ZW1zKE9iail7CglCUGgudmFsdWUgPSBPYmouUGg7CiAgICAgICAgQkZpLnZhbHVlID0gT2JqLkZpOwogICAgICAgIEJDby52YWx1ZSA9IE9iai5DbzsKICAgICAgICBCUG8udmFsdWUgPSBPYmouUG87CiAgICAgICAgQkVuLnZhbHVlID0gT2JqLkVuOwoKCVdyaXRlUmVzdWx0KEJhc2UsSFEsTWF0KTsKfSAgICAgICAKZnVuY3Rpb24gU2V0TWF0SXRlbXMoT2JqKXsKCU1UUGgudmFsdWUgPSBPYmouUGg7CiAgICAgICAgTVRGaS52YWx1ZSA9IE9iai5GaTsKICAgICAgICBNVENvLnZhbHVlID0gT2JqLkNvOwogICAgICAgIE1UUG8udmFsdWUgPSBPYmouUG87CiAgICAgICAgTVRFbi52YWx1ZSA9IE9iai5FbjsKCglXcml0ZVJlc3VsdChCYXNlLEhRLE1hdCk7Cn0KZnVuY3Rpb24gV3JpdGVSZXN1bHQoQmFzZSxIUSxNYXQpewoJdmFyIFBoID0gQmFzZS5QaCArIEhRLlBoICsgTWF0LlBoOwogICAgICAgIHZhciBGaSA9IEJhc2UuRmkgKyBIUS5GaSArIE1hdC5GaTsKICAgICAgICB2YXIgQ28gPSBCYXNlLkNvICsgSFEuQ28gKyBNYXQuQ287CiAgICAgICAgdmFyIFBvID0gQmFzZS5QbyArIEhRLlBvICsgTWF0LlBvOwogICAgICAgIHZhciBFbiA9IEJhc2UuRW4gKyBIUS5FbiArIE1hdC5FbjsKCVJQaC52YWx1ZSA9IFBoOwogICAgICAgIFJGaS52YWx1ZSA9IEZpOwogICAgICAgIFJDby52YWx1ZSA9IENvOwogICAgICAgIFJQby52YWx1ZSA9IFBvOwogICAgICAgIFJFbi52YWx1ZSA9IEVuOwoKCVRvdGFsUG9pbnQudmFsdWUgPSBQaCtGaStDbytQbytFbjsKCQoJaW5mby52YWx1ZSA9IEJhc2UuSW5mbysiXG4iK01hdC5JbmZvKyJcbiIrSFEuSW5mbysiXG4iOwoJCn0KCi8vIC0tPgo8L3NjcmlwdD4KPGNlbnRlcj4KPGgxPue3tOaIkOODmeODvOOCueearueul+eUqDwvaDE+Cjxocj4KPHRhYmxlIGJvcmRlcj0iMSI+Cjx0cj48dGQ+5oq15oqXPC90ZD48dGQ+44OZ44O844K5PC90ZD48dGQ+57Sg5p2QPC90ZD48dGQ+SFHjg5zjg7zjg4rjgrk8L3RkPjx0ZD48L3RkPjx0ZD7ntZDmnpw8L3RkPjwvdHI+Cgo8dHI+PHRkPjwvdGQ+Cgk8dGQ+CgkJPHNlbGVjdCBuYW1lPSJCYXNlQXJtb3IiIG9uY2hhbmdlPSJTZXRCYXNlSXRlbXMoKEJhc2UgPSBCYXNlTGlzdFtCYXNlQXJtb3IudmFsdWVdKSk7Ij4KCQkJPG9wdGlvbiB2YWx1ZT1Ob25lPi1TZWxlY3QtCgkJCTxvcHRpb24gdmFsdWU9UGxhdGU+UGxhdGVtYWlsCgkJCTxvcHRpb24gdmFsdWU9Q2hhaW4+Q2hhaW5tYWlsCgkJCTxvcHRpb24gdmFsdWU9UmluZz5SaW5nbWFpbAoJCQk8b3B0aW9uIHZhbHVlPVNjYWxlPlNjYWxlCgkJCTxvcHRpb24gdmFsdWU9TGVhdGhlcj5MZWF0aGVyCgkJCTxvcHRpb24gdmFsdWU9U3R1ZD5TdHVkCgkJCTxvcHRpb24gdmFsdWU9Qm9uZT5Cb25lCgkJCTxvcHRpb24gdmFsdWU9TGVhZj5MZWFmCgkJCTxvcHRpb24gdmFsdWU9SGlkZT5IaWRlCgkJCTxvcHRpb24gdmFsdWU9V29vZD5Xb29kCgkJCTxvcHRpb24gdmFsdWU9R2FyZ1BsYXRlPlBsYXRlKEdhcmdveWxlKQoJCQk8b3B0aW9uIHZhbHVlPUdhcmdMZWF0aGVyPkxlYXJ0aGVyKEdhcmdveWxlKQoJCQk8b3B0aW9uIHZhbHVlPUdhcmdTdG9uZT5TdG9uZShHYXJnb3lsZSkKCgkJPC9zZWxlY3Q+Cgk8L3RkPgoJPHRkPgoJCTxzZWxlY3QgbmFtZT0iTWF0ZXJpYWwiIG9uY2hhbmdlPSJTZXRNYXRJdGVtcyhNYXQgPSBNYXRMaXN0W01hdGVyaWFsLnZhbHVlXSk7Ij4KCQkJPG9wdGlvbiB2YWx1ZT0iTm9uZSI+LVNlbGVjdC0KCQkJPG9wdGlvbiB2YWx1ZT0iSXJvbiI+SXJvbgoJCQk8b3B0aW9uIHZhbHVlPSJEdWxsIj5EdWxsIENvcHBlcgoJCQk8b3B0aW9uIHZhbHVlPSJTaGFkb3ciPlNoYWRvdwoJCQk8b3B0aW9uIHZhbHVlPSJDb3BwZXIiPkNvcHBlcgoJCQk8b3B0aW9uIHZhbHVlPSJCcm9uemUiPkJyb256ZQoJCQk8b3B0aW9uIHZhbHVlPSJHb2xkIj5Hb2xkCgkJCTxvcHRpb24gdmFsdWU9IkFnYXBpdGUiPkFnYXBpdGUKCQkJPG9wdGlvbiB2YWx1ZT0iVmVyaXRlIj5WZXJpdGUKCQkJPG9wdGlvbiB2YWx1ZT0iVmFsb3JpdGUiPlZhbG9yaXRlCgkJCTxvcHRpb24gdmFsdWU9IlJlZFNjYWxlIj5SZWRTY2FsZQoJCQk8b3B0aW9uIHZhbHVlPSJZZWxsb3dTY2FsZSI+WWVsbG93U2NhbGUKCQkJPG9wdGlvbiB2YWx1ZT0iR3JlZW5TY2FsZSI+R3JlZW5TY2FsZQoJCQk8b3B0aW9uIHZhbHVlPSJCbHVlU2NhbGUiPkJsdWVTY2FsZQoJCQk8b3B0aW9uIHZhbHVlPSJXaGl0ZVNjYWxlIj5XaGl0ZVNjYWxlCgkJCTxvcHRpb24gdmFsdWU9IkJsYWNrU2NhbGUiPkJsYWNrU2NhbGUKCQkJPG9wdGlvbiB2YWx1ZT0iTGVhdGhlciI+TGVhdGhlcgoJCQk8b3B0aW9uIHZhbHVlPSJTcGluZWQiPlNwaW5lZAoJCQk8b3B0aW9uIHZhbHVlPSJIb25lZCI+SG9uZWQKCQkJPG9wdGlvbiB2YWx1ZT0iQmFyYmVkIj5CYWViZWQKCQkJPG9wdGlvbiB2YWx1ZT0iV29vZCI+V29vZAoJCQk8b3B0aW9uIHZhbHVlPSJPYWsiPk9hawoJCQk8b3B0aW9uIHZhbHVlPSJBc2giPkFzaAoJCQk8b3B0aW9uIHZhbHVlPSJZZXciPllldwoJCQk8b3B0aW9uIHZhbHVlPSJIZWFydCI+SGVhcnRXb29kCgkJCTxvcHRpb24gdmFsdWU9IkJsb29kIj5CbG9vZFdvb2QKCQkJPG9wdGlvbiB2YWx1ZT0iRnJvc3QiPkZyb3N0V29vZAoJCTwvc2VsZWN0PgoJPC90ZD4KCQoJPHRkPgkKCQk8c2VsZWN0IG5hbWU9IkFybXNMb3JlIiBvbmNoYW5nZT0iSFFSZXMudmFsdWUgPSBBcm1zTG9yZS52YWx1ZTsgQ2FsY0hRQm91bnMoKTsgIj4KCQk8b3B0aW9uIHZhbHVlPTA+LVNlbGVjdC0KCQk8b3B0aW9uIHZhbHVlPTE1Pk5vbiBBcm1zbG9yZQoJCTxvcHRpb24gdmFsdWU9MjA+R00gQXJtc2xvcmUKCQk8L3NlbGVjdD4KCQk8YnI+CgkJPGlucHV0IHR5cGU9dGV4dCB2YWx1ZT0xNSBuYW1lPUhRUmVzIG9uY2hhbmdlPSJDYWxjSFFCb3VucygpOyI+PC9pbnB1dD4KCTwvdGQ+CgkKCTx0ZD48L3RkPgoKCTx0ZD48L3RkPgo8L3RyPgo8dHI+CTx0ZD4KCTxjZW50ZXI+CgnniannkIY8YnI+Cgnngo48YnI+CgnlhrfmsJc8YnI+Cgnmr5I8YnI+Cgnjgqjjg408YnI+Cgk8L2NlbnRlcj4KCTwvdGQ+Cgk8dGQ+CgkJPGlucHV0IHR5cGU9dGV4dCB2YWx1ZT0wIG5hbWU9QlBoPjwvaW5wdXQ+PGJyPgoJCTxpbnB1dCB0eXBlPXRleHQgdmFsdWU9MCBuYW1lPUJGaT48L2lucHV0Pjxicj4KCQk8aW5wdXQgdHlwZT10ZXh0IHZhbHVlPTAgbmFtZT1CQ28+PC9pbnB1dD48YnI+CgkJPGlucHV0IHR5cGU9dGV4dCB2YWx1ZT0wIG5hbWU9QlBvPjwvaW5wdXQ+PGJyPgoJCTxpbnB1dCB0eXBlPXRleHQgdmFsdWU9MCBuYW1lPUJFbj48L2lucHV0Pjxicj4KCTwvdGQ+Cgk8dGQ+CgkJPGlucHV0IHR5cGU9dGV4dCB2YWx1ZT0wIG5hbWU9TVRQaD48L2lucHV0Pjxicj4KCQk8aW5wdXQgdHlwZT10ZXh0IHZhbHVlPTAgbmFtZT1NVEZpPjwvaW5wdXQ+PGJyPgoJCTxpbnB1dCB0eXBlPXRleHQgdmFsdWU9MCBuYW1lPU1UQ28+PC9pbnB1dD48YnI+CgkJPGlucHV0IHR5cGU9dGV4dCB2YWx1ZT0wIG5hbWU9TVRQbz48L2lucHV0Pjxicj4KCQk8aW5wdXQgdHlwZT10ZXh0IHZhbHVlPTAgbmFtZT1NVEVuPjwvaW5wdXQ+PGJyPgoJPC90ZD4KCTx0ZD4JCgkJPGlucHV0IHR5cGU9dGV4dCB2YWx1ZT0wIG5hbWU9SFFQaCBvbmNoYW5nZT0iQ2FsY0hRQm91bnMoKTsiPjwvaW5wdXQ+PGJyPgoJCTxpbnB1dCB0eXBlPXRleHQgdmFsdWU9MCBuYW1lPUhRRmkgb25jaGFuZ2U9IkNhbGNIUUJvdW5zKCk7Ij48L2lucHV0Pjxicj4KCQk8aW5wdXQgdHlwZT10ZXh0IHZhbHVlPTAgbmFtZT1IUUNvIG9uY2hhbmdlPSJDYWxjSFFCb3VucygpOyI+PC9pbnB1dD48YnI+CgkJPGlucHV0IHR5cGU9dGV4dCB2YWx1ZT0wIG5hbWU9SFFQbyBvbmNoYW5nZT0iQ2FsY0hRQm91bnMoKTsiPjwvaW5wdXQ+PGJyPgoJCTxpbnB1dCB0eXBlPXRleHQgdmFsdWU9MCBuYW1lPUhRRW4gb25jaGFuZ2U9IkNhbGNIUUJvdW5zKCk7Ij48L2lucHV0Pjxicj4KCTwvdGQ+Cgk8dGQ+Cgk8L3RkPgoJPHRkPgk8aW5wdXQgdHlwZT10ZXh0IHZhbHVlPTAgbmFtZT1SUGg+PC9pbnB1dD48YnI+CgkJPGlucHV0IHR5cGU9dGV4dCB2YWx1ZT0wIG5hbWU9UkZpPjwvaW5wdXQ+PGJyPgoJCTxpbnB1dCB0eXBlPXRleHQgdmFsdWU9MCBuYW1lPVJDbz48L2lucHV0Pjxicj4KCQk8aW5wdXQgdHlwZT10ZXh0IHZhbHVlPTAgbmFtZT1SUG8+PC9pbnB1dD48YnI+CgkJPGlucHV0IHR5cGU9dGV4dCB2YWx1ZT0wIG5hbWU9UkVuPjwvaW5wdXQ+PGJyPgoJPC90ZD4KPC90cj4KPHRyPgoJPHRkPjwvdGQ+Cgk8dGQ+PC90ZD4KCTx0ZD48L3RkPgoKCTx0ZD48ZGl2IGlkPUhRQm91bnM+PC9kaXY+PC90ZD4KCTx0ZD48L3RkPgoJPHRkPjxpbnB1dCB0eXBlPXRleHQgdmFsdWU9MCBuYW1lPVRvdGFsUG9pbnQ+PC9pbnB1dD48L3RkPgo8L3RhYmxlPgo8Yj5JbmZvPC9iPjxicj4KPHRleHRhcmVhIGNvbHM9NzIgcm93cz04IG5hbWU9aW5mbz48L3RleHRhcmVhPgo8L2NlbnRlcj4KPGhyPgo8cCBhbGlnbj0icmlnaHQiPgo8Yj5Db3B5cmlnaHQgMjAxMiBieSBZYWtpdG9yaTwvYj48YnI+CjxiPldpbjcgSG9tZVAgNjRiaXQgKyBJRTkgNjRiaXQ8L2I+PGJyPgo8Yj4yMDEyLzAyLzIwPC9iPjxicj4KPC9wPgo8L2JvZHk+CjwvaHRtbD4=