59 Commits

Author SHA1 Message Date
Kostiantyn Cherniavskyi 4706517fe1 X99-XD3 with VRM fan BIOS options 2026-06-14 12:39:04 +02:00
Kostiantyn Cherniavskyi e7547fc4b3 Add X99-XD3 with VRM fan 2026-06-14 12:28:47 +02:00
Kostiantyn Cherniavskyi fafe5fadb3 Add X99-XD3/4 BIOS warnings 2026-06-14 11:02:58 +02:00
Kostiantyn Cherniavskyi b0e92c5499 ASRock IMB-194-D 2026-05-30 11:37:44 +02:00
Kostiantyn Cherniavskyi cf049a2dba X99-MR9S: BIOS options 2026-05-10 12:47:07 +02:00
Kostiantyn Cherniavskyi 013e92cb37 X99-MR9S: fix images 2026-05-09 17:36:06 +02:00
Kostiantyn Cherniavskyi 5b5586b44c VS 2026 & .NET 10 2026-05-09 17:35:50 +02:00
Kostiantyn Cherniavskyi c029e8cbb5 Add Machinist X99-MR9S 2026-05-09 17:23:38 +02:00
Kostiantyn Cherniavskyi 5337d2dd0b Remove V9S BIOS from XD3 list 2026-03-18 07:30:17 +01:00
Kostiantyn Cherniavskyi d680e36a0d Fix a typo 2026-02-01 18:44:16 +01:00
Kostiantyn Cherniavskyi 33c46f2995 Machinist X99-V9S BIOS options 2026-02-01 18:43:34 +01:00
Kostiantyn Cherniavskyi 74b06850f9 Online: preselect Machinist brand by default 2026-02-01 15:07:34 +01:00
Kostiantyn Cherniavskyi 5978474523 Online: allow BIOS dump without selection 2026-02-01 15:07:22 +01:00
Kostiantyn Cherniavskyi f178821303 Machinist X99-V9S 2026-02-01 14:46:42 +01:00
Kostiantyn Cherniavskyi 3f2e31494e Update tool.html 2026-01-24 22:01:22 +01:00
Kostiantyn Cherniavskyi 22d0849124 Online: add TPM 2.0 purchase links 2026-01-24 22:01:19 +01:00
Kostiantyn Cherniavskyi c2490acc1f Online: properly treat commercial BIOS entries 2026-01-24 21:45:59 +01:00
Kostiantyn Cherniavskyi 1caa05f63d Update README.md 2026-01-24 15:28:25 +01:00
Kostiantyn Cherniavskyi fd58e93046 Add Machinist X99-XD3 2026-01-20 20:20:52 +01:00
Kostiantyn Cherniavskyi b2b1839865 Mi899 Online into docs for gh-pages 2026-01-07 19:45:00 +01:00
Kostiantyn Cherniavskyi 2fd9271121 Move Mi899.Online into src 2026-01-07 19:25:21 +01:00
Kostiantyn Cherniavskyi 24a438bfdf Mi899 Online 2026-01-07 19:22:33 +01:00
Kostiantyn Cherniavskyi 12fc5c4805 1.4.6 2025-12-13 09:01:01 +01:00
Kostiantyn Cherniavskyi 1d553458ef Add Huananzhi B250M-I Link 2025-12-09 18:41:00 +01:00
Kostiantyn Cherniavskyi fb63a52d1f Huananzhi B250M-I DDR3 2025-12-08 01:03:02 +01:00
Kostiantyn Cherniavskyi 5b022c3250 1.4.5 2025-12-02 21:43:12 +01:00
Kostiantyn Cherniavskyi 981e66b637 SOYO H311M-DVH extra info 2025-12-02 21:42:12 +01:00
Kostiantyn Cherniavskyi ff447919c6 Add SOYO H311M-DVH version 2025-11-29 20:01:06 +01:00
Kostiantyn Cherniavskyi acc22c6d29 SOYO H311M-DVH 2025-11-29 19:58:05 +01:00
Kostiantyn Cherniavskyi cf15216627 Fix C326 typo into C236 2025-11-29 19:48:58 +01:00
Kostiantyn Cherniavskyi 522cd07c9e 1.4.4 2025-10-31 09:20:02 +01:00
Kostiantyn Cherniavskyi 7af3e7e785 More X99-XD4 data 2025-10-31 09:16:12 +01:00
Kostiantyn Cherniavskyi 1c73706658 Machinist X99-XD4 BIOS mods 2025-10-26 19:20:08 +01:00
Kostiantyn Cherniavskyi 68374ba21b BIOS file fixes 2025-10-26 18:53:30 +01:00
Kostiantyn Cherniavskyi f7ea89632e Machinist X99-XD4 BIOS mods 2025-10-26 18:01:08 +01:00
Kostiantyn Cherniavskyi 82fef55fbf Update Model.json 2025-10-26 15:39:51 +01:00
Kostiantyn Cherniavskyi f860b73cf1 Machinist X99-XD4 2025-10-26 15:36:18 +01:00
Kostiantyn Cherniavskyi cd7bd03734 JingSha A320/B350M-ITX 2025-10-26 15:25:01 +01:00
Kostiantyn Cherniavskyi be1d1310ee AMI Flasher Utility (AfuWin) 5.16 2025-10-26 15:24:41 +01:00
Kostiantyn Cherniavskyi 6c5f5a8af8 1.4.3 2025-08-07 19:47:44 +02:00
Kostiantyn Cherniavskyi 0ca16ddcb5 Add a link 2025-08-07 19:47:22 +02:00
Kostiantyn Cherniavskyi 7187ff6b5c Fix Ali links & typos 2025-08-02 22:23:19 +02:00
Kostiantyn Cherniavskyi fef037b8e0 Huananzhi X99-CD4 2025-08-02 22:16:19 +02:00
Kostiantyn Cherniavskyi 9720c2d981 Update Huananzhi QD4 image 2025-08-02 22:00:11 +02:00
Kostiantyn Cherniavskyi 7db1b48528 1.4.2 2025-03-29 18:50:16 +01:00
Kostiantyn Cherniavskyi f40d0a384d X99-PR8 (#156)
* Added dedicated Machinist X99-PR8 entry (#146)

* added the X99-PR8 model & pictures

* added the bios file

* added back an automatically removed entry from the project file

* X99-PR8 fixes

---------

Co-authored-by: Phillip Mayr <Performensch@users.noreply.github.com>
Co-authored-by: Kostiantyn Cherniavskyi <const.miyang@gmail.com>
2025-03-29 18:48:29 +01:00
Kostiantyn Cherniavskyi 1fec651ec6 Add Machinist X99-B9 2025-03-29 18:34:34 +01:00
0x8008 8ce195de6d Polish translation and readability update by @0x8008 (#143)
* Slight refinement of Polish translation

* Slight refinement of Polish translation

* Add "language selector"

* Update according to miyconst's review

Co-authored-by: Kostiantyn Cherniavskyi <miyconst@gmail.com>

---------

Co-authored-by: Kostiantyn Cherniavskyi <miyconst@gmail.com>
2025-02-04 19:24:59 +01:00
Kostiantyn Cherniavskyi 4a02850242 1.4.1 2025-01-29 20:21:40 +01:00
Kostiantyn Cherniavskyi d417548a88 X99-H9S: extra link 2025-01-29 20:20:45 +01:00
Kostiantyn Cherniavskyi 48b5989aca Add Qiyida X99-H9S 2025-01-27 20:21:32 +01:00
Kostiantyn Cherniavskyi 656349e30b 1.4.0 2025-01-16 22:57:57 +01:00
Kostiantyn Cherniavskyi 40621aa624 BKHD-1151NP-17: links 2025-01-16 22:56:25 +01:00
Kostiantyn Cherniavskyi ccf625e589 C326 mITX NAS BKHD-1151NP-17 2025-01-11 19:58:41 +01:00
Kostiantyn Cherniavskyi 311dea2ec5 BKHD-1151NP-17: BIOS files 2025-01-11 19:51:08 +01:00
Kostiantyn Cherniavskyi 0975890f56 Add C612DS01 BIOS for X99-D8 MAX 2024-08-03 13:45:10 +02:00
Kostiantyn Cherniavskyi 29b21b1ce1 Fix crash on Images grid path cell click 2024-08-03 09:37:08 +02:00
Kostiantyn Cherniavskyi cb6fd54dc6 Add BX99DA04 BIOS for MR9A 2024-08-03 09:36:50 +02:00
Kostiantyn Cherniavskyi b66049c44d Add Machinist X99-D8 MAX 2024-07-30 22:45:32 +02:00
127 changed files with 3251 additions and 61 deletions
+34 -3
View File
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29806.167
# Visual Studio Version 18
VisualStudioVersion = 18.5.11723.231 stable
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mi899", "src\Mi899\Mi899.csproj", "{EB03C864-42D6-4000-B7C5-12BCBE965DDC}"
EndProject
@@ -14,7 +14,30 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
README.md = README.md
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mi899.Data.Tests", "tests\Mi899.Data.Tests\Mi899.Data.Tests.csproj", "{D6EA25CB-907D-4509-A5D3-459A67D6E489}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mi899.Data.Tests", "tests\Mi899.Data.Tests\Mi899.Data.Tests.csproj", "{D6EA25CB-907D-4509-A5D3-459A67D6E489}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mi899.Online", "src\Mi899.Online\Mi899.Online.csproj", "{BF8740F5-6A72-4E97-B971-D8535863FFEB}"
EndProject
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "docs", "docs\", "{51DB9834-2C93-4B24-9740-4731F4A9CB10}"
ProjectSection(WebsiteProperties) = preProject
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.8"
Debug.AspNetCompiler.VirtualPath = "/localhost_56580"
Debug.AspNetCompiler.PhysicalPath = "docs\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_56580\"
Debug.AspNetCompiler.Updateable = "true"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.VirtualPath = "/localhost_56580"
Release.AspNetCompiler.PhysicalPath = "docs\"
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_56580\"
Release.AspNetCompiler.Updateable = "true"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
VWDPort = "56580"
SlnRelativePath = "docs\"
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -34,6 +57,14 @@ Global
{D6EA25CB-907D-4509-A5D3-459A67D6E489}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D6EA25CB-907D-4509-A5D3-459A67D6E489}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D6EA25CB-907D-4509-A5D3-459A67D6E489}.Release|Any CPU.Build.0 = Release|Any CPU
{BF8740F5-6A72-4E97-B971-D8535863FFEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF8740F5-6A72-4E97-B971-D8535863FFEB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF8740F5-6A72-4E97-B971-D8535863FFEB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF8740F5-6A72-4E97-B971-D8535863FFEB}.Release|Any CPU.Build.0 = Release|Any CPU
{51DB9834-2C93-4B24-9740-4731F4A9CB10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{51DB9834-2C93-4B24-9740-4731F4A9CB10}.Debug|Any CPU.Build.0 = Debug|Any CPU
{51DB9834-2C93-4B24-9740-4731F4A9CB10}.Release|Any CPU.ActiveCfg = Debug|Any CPU
{51DB9834-2C93-4B24-9740-4731F4A9CB10}.Release|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
+8 -4
View File
@@ -1,5 +1,7 @@
# Mi899 - X99 Tool Set
[English](https://github.com/miyconst/Mi899/blob/master/README.md) | [Български език](https://github.com/miyconst/Mi899/blob/master/src/Mi899/README.Bg.md) | [Deutsch](https://github.com/miyconst/Mi899/blob/master/src/Mi899/README.De.md) | [Español](https://github.com/miyconst/Mi899/blob/master/src/Mi899/README.Es.md) | [Français](https://github.com/miyconst/Mi899/blob/master/src/Mi899/README.Fr.md) | [Magyar](https://github.com/miyconst/Mi899/blob/master/src/Mi899/README.Hu.md) | [Italiano](https://github.com/miyconst/Mi899/blob/master/src/Mi899/README.It.md) | [Nederlands](https://github.com/miyconst/Mi899/blob/master/src/Mi899/README.Nl.md) | [Polski](https://github.com/miyconst/Mi899/blob/master/src/Mi899/README.Pl.md) | [Português](https://github.com/miyconst/Mi899/blob/master/src/Mi899/README.Pt.md) | [Svenska](https://github.com/miyconst/Mi899/blob/master/src/Mi899/README.Se.md) | [Українська](https://github.com/miyconst/Mi899/blob/master/src/Mi899/README.Ua.md)
## By downloading, distributing, modifying, or using this application you agree with the following:
- The Russian Federation (Russia) is a self-declared terroristic formation that has nothing to do with the historical Rus centered in Kyiv.
@@ -18,7 +20,7 @@
<a href="https://github.com/miyconst/Mi899/releases/latest">
<img src="https://img.shields.io/github/v/release/miyconst/Mi899.svg?color=silver&style=for-the-badge&logo=xiaomi" alt="Latest Version"/>
</a>
<a href="https://github.com/miyconst/Mi899/releases/download/1.3.2/Mi899-1.3.2.zip">
<a href="https://github.com/miyconst/Mi899/releases/download/1.4.6/Mi899-1.4.6.zip">
<img src="https://img.shields.io/github/downloads/miyconst/Mi899/total.svg?color=silver&style=for-the-badge&logo=xiaomi" alt="Downloads"/>
</a>
<a href="https://github.com/miyconst/Mi899/blob/master/LICENSE.md">
@@ -27,7 +29,9 @@
------------
Alternatively you can [download Mi899 from Microsoft OneDrive](https://1drv.ms/u/s!AtZZXDjjb94kgY1URfN0g6vTewMbdg?e=YPRl1z).
Alternatively you can:
- Use [Mi899.Online](https://miyconst.github.io/Mi899/) from your web browser.
- [Download Mi899 from Microsoft OneDrive](https://1drv.ms/u/s!AtZZXDjjb94kgY1URfN0g6vTewMbdg?e=YPRl1z).
------------
@@ -54,9 +58,9 @@ Read full readme - [`src/Mi899/README.md`](src/Mi899/README.md).
- French (Français) by [@Nicolas-93](https://github.com/Nicolas-93).
- Hungarian (Magyar) by Gergő Palatinszky.
- Italian (Italiano) by Emanuele Galdieri.
- Polish (Polski) by [@Finchsize](https://github.com/Finchsize).
- Polish (Polski) by [@Finchsize](https://github.com/Finchsize) and [@0x8008](https://github.com/0x8008).
- Portuguese (Portugues) by [@osamabilad4](https://github.com/osamabilad4).
- Russian (Русский) by [@chandrey206](https://github.com/chandrey206).
- Spanish (Español) by [@skyirim](https://github.com/skyirim).
- Swedish (Svenska) by [@gabichernia](https://github.com/gabichernia).
- Ukrainian (Українська) by [@miyconst](https://github.com/miyconst).
- Ukrainian (Українська) by [@miyconst](https://github.com/miyconst).
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0"?>
<configuration>
<!--
For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.
The following attributes can be set on the <httpRuntime> tag.
<system.Web>
<httpRuntime targetFramework="4.5" />
</system.Web>
-->
<system.web>
<compilation targetFramework="4.8"/>
<pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>
</configuration>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

+8
View File
@@ -0,0 +1,8 @@
<footer class="bg-body-tertiary">
<hr />
<nav class="navbar fs-7">
<div class="container-fluid">
<span class="navbar-brand">Mi899 Online Version - Copyright © Miyconst</span>
</div>
</nav>
</footer>
+44
View File
@@ -0,0 +1,44 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Mi899 - X99 Online Tool Set</title>
<link href="libs/bootstrap.min.css" rel="stylesheet" />
<link href="styles/mi899.css" rel="stylesheet" />
</head>
<body class="bg-body-tertiary">
<script src="libs/bootstrap.bundle.min.js"></script>
<script src="libs/marked.min.js"></script>
<div>
<div class="mi899-template" href="nav.html">
<div class="mi899-spinner">
<div class="spinner-border" role="status"></div>
<span>Loading...</span>
</div>
</div>
<div id="divReadMeContent">
<div class="mi899-spinner">
<div class="spinner-border" role="status"></div>
<span>Loading...</span>
</div>
</div>
</div>
<div class="mi899-template" href="footer.html">
<div class="mi899-spinner">
<div class="spinner-border" role="status"></div>
<span>Loading...</span>
</div>
</div>
<script>
document.mi899NavPage = "index.html";
</script>
<script src="scripts/mi899.js"></script>
<script>
fetch(document.Mi899.readmeUrl)
.then(r => r.text())
.then(md => {
document.getElementById("divReadMeContent").innerHTML = marked.parse(md);
});
</script>
</body>
</html>
File diff suppressed because one or more lines are too long
+6
View File
File diff suppressed because one or more lines are too long
+13
View File
File diff suppressed because one or more lines are too long
+138
View File
@@ -0,0 +1,138 @@
/*!
* Knockout JavaScript library v3.5.0
* (c) The Knockout.js team - http://knockoutjs.com/
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
*/
(function() {(function(p){var z=this||(0,eval)("this"),w=z.document,R=z.navigator,v=z.jQuery,H=z.JSON;v||"undefined"===typeof jQuery||(v=jQuery);(function(p){"function"===typeof define&&define.amd?define(["exports","require"],p):"object"===typeof exports&&"object"===typeof module?p(module.exports||exports):p(z.ko={})})(function(S,T){function K(a,c){return null===a||typeof a in W?a===c:!1}function X(b,c){var d;return function(){d||(d=a.a.setTimeout(function(){d=p;b()},c))}}function Y(b,c){var d;return function(){clearTimeout(d);
d=a.a.setTimeout(b,c)}}function Z(a,c){c&&"change"!==c?"beforeChange"===c?this.oc(a):this.bb(a,c):this.pc(a)}function aa(a,c){null!==c&&c.s&&c.s()}function ba(a,c){var d=this.pd,e=d[t];e.qa||(this.Pb&&this.kb[c]?(d.tc(c,a,this.kb[c]),this.kb[c]=null,--this.Pb):e.F[c]||d.tc(c,a,e.G?{da:a}:d.Zc(a)),a.Ka&&a.fd())}var a="undefined"!==typeof S?S:{};a.b=function(b,c){for(var d=b.split("."),e=a,f=0;f<d.length-1;f++)e=e[d[f]];e[d[d.length-1]]=c};a.J=function(a,c,d){a[c]=d};a.version="3.5.0";a.b("version",
a.version);a.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1};a.a=function(){function b(a,b){for(var c in a)f.call(a,c)&&b(c,a[c])}function c(a,b){if(b)for(var c in b)f.call(b,c)&&(a[c]=b[c]);return a}function d(a,b){a.__proto__=b;return a}function e(b,c,d,e){var k=b[c].match(n)||[];a.a.C(d.match(n),function(b){a.a.Oa(k,b,e)});b[c]=k.join(" ")}var f=Object.prototype.hasOwnProperty,g={__proto__:[]}instanceof Array,h="function"===typeof Symbol,m={},l={};m[R&&/Firefox\/2/i.test(R.userAgent)?
"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"];m.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" ");b(m,function(a,b){if(b.length)for(var c=0,d=b.length;c<d;c++)l[b[c]]=a});var k={propertychange:!0},q=w&&function(){for(var a=3,b=w.createElement("div"),c=b.getElementsByTagName("i");b.innerHTML="\x3c!--[if gt IE "+ ++a+"]><i></i><![endif]--\x3e",c[0];);return 4<a?a:p}(),n=/\S+/g,r;return{Ic:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],
C:function(a,b,c){for(var d=0,e=a.length;d<e;d++)b.call(c,a[d],d,a)},A:"function"==typeof Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b)}:function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},Lb:function(a,b,c){for(var d=0,e=a.length;d<e;d++)if(b.call(c,a[d],d,a))return a[d];return p},hb:function(b,c){var d=a.a.A(b,c);0<d?b.splice(d,1):0===d&&b.shift()},vc:function(b){var c=[];b&&a.a.C(b,function(b){0>a.a.A(c,b)&&c.push(b)});return c},Mb:function(a,
b,c){var d=[];if(a)for(var e=0,k=a.length;e<k;e++)d.push(b.call(c,a[e],e));return d},fb:function(a,b,c){var d=[];if(a)for(var e=0,k=a.length;e<k;e++)b.call(c,a[e],e)&&d.push(a[e]);return d},gb:function(a,b){if(b instanceof Array)a.push.apply(a,b);else for(var c=0,d=b.length;c<d;c++)a.push(b[c]);return a},Oa:function(b,c,d){var e=a.a.A(a.a.$b(b),c);0>e?d&&b.push(c):d||b.splice(e,1)},Ba:g,extend:c,setPrototypeOf:d,zb:g?d:c,O:b,Ha:function(a,b,c){if(!a)return a;var d={},e;for(e in a)f.call(a,e)&&(d[e]=
b.call(c,a[e],e,a));return d},Sb:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},Xb:function(b){b=a.a.la(b);for(var c=(b[0]&&b[0].ownerDocument||w).createElement("div"),d=0,e=b.length;d<e;d++)c.appendChild(a.na(b[d]));return c},Ca:function(b,c){for(var d=0,e=b.length,k=[];d<e;d++){var f=b[d].cloneNode(!0);k.push(c?a.na(f):f)}return k},ua:function(b,c){a.a.Sb(b);if(c)for(var d=0,e=c.length;d<e;d++)b.appendChild(c[d])},Wc:function(b,c){var d=b.nodeType?[b]:b;if(0<d.length){for(var e=d[0],
k=e.parentNode,f=0,l=c.length;f<l;f++)k.insertBefore(c[f],e);f=0;for(l=d.length;f<l;f++)a.removeNode(d[f])}},Ua:function(a,b){if(a.length){for(b=8===b.nodeType&&b.parentNode||b;a.length&&a[0].parentNode!==b;)a.splice(0,1);for(;1<a.length&&a[a.length-1].parentNode!==b;)a.length--;if(1<a.length){var c=a[0],d=a[a.length-1];for(a.length=0;c!==d;)a.push(c),c=c.nextSibling;a.push(d)}}return a},Yc:function(a,b){7>q?a.setAttribute("selected",b):a.selected=b},Cb:function(a){return null===a||a===p?"":a.trim?
a.trim():a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Td:function(a,b){a=a||"";return b.length>a.length?!1:a.substring(0,b.length)===b},ud:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(1!==a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!=b;)a=a.parentNode;return!!a},Rb:function(b){return a.a.ud(b,b.ownerDocument.documentElement)},jd:function(b){return!!a.a.Lb(b,a.a.Rb)},P:function(a){return a&&
a.tagName&&a.tagName.toLowerCase()},zc:function(b){return a.onError?function(){try{return b.apply(this,arguments)}catch(c){throw a.onError&&a.onError(c),c;}}:b},setTimeout:function(b,c){return setTimeout(a.a.zc(b),c)},Fc:function(b){setTimeout(function(){a.onError&&a.onError(b);throw b;},0)},H:function(b,c,d){var e=a.a.zc(d);d=k[c];if(a.options.useOnlyNativeEvents||d||!v)if(d||"function"!=typeof b.addEventListener)if("undefined"!=typeof b.attachEvent){var f=function(a){e.call(b,a)},l="on"+c;b.attachEvent(l,
f);a.a.I.za(b,function(){b.detachEvent(l,f)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else b.addEventListener(c,e,!1);else r||(r="function"==typeof v(b).on?"on":"bind"),v(b)[r](c,e)},Fb:function(b,c){if(!b||!b.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var d;"input"===a.a.P(b)&&b.type&&"click"==c.toLowerCase()?(d=b.type,d="checkbox"==d||"radio"==d):d=!1;if(a.options.useOnlyNativeEvents||!v||d)if("function"==typeof w.createEvent)if("function"==
typeof b.dispatchEvent)d=w.createEvent(l[c]||"HTMLEvents"),d.initEvent(c,!0,!0,z,0,0,0,0,0,!1,!1,!1,!1,0,b),b.dispatchEvent(d);else throw Error("The supplied element doesn't support dispatchEvent");else if(d&&b.click)b.click();else if("undefined"!=typeof b.fireEvent)b.fireEvent("on"+c);else throw Error("Browser doesn't support triggering events");else v(b).trigger(c)},c:function(b){return a.N(b)?b():b},$b:function(b){return a.N(b)?b.w():b},Eb:function(b,c,d){var k;c&&("object"===typeof b.classList?
(k=b.classList[d?"add":"remove"],a.a.C(c.match(n),function(a){k.call(b.classList,a)})):"string"===typeof b.className.baseVal?e(b.className,"baseVal",c,d):e(b,"className",c,d))},Ab:function(b,c){var d=a.a.c(c);if(null===d||d===p)d="";var e=a.h.firstChild(b);!e||3!=e.nodeType||a.h.nextSibling(e)?a.h.ua(b,[b.ownerDocument.createTextNode(d)]):e.data=d;a.a.zd(b)},Xc:function(a,b){a.name=b;if(7>=q)try{var c=a.name.replace(/[&<>'"]/g,function(a){return"&#"+a.charCodeAt(0)+";"});a.mergeAttributes(w.createElement("<input name='"+
c+"'/>"),!1)}catch(d){}},zd:function(a){9<=q&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},vd:function(a){if(q){var b=a.style.width;a.style.width=0;a.style.width=b}},Od:function(b,c){b=a.a.c(b);c=a.a.c(c);for(var d=[],e=b;e<=c;e++)d.push(e);return d},la:function(a){for(var b=[],c=0,d=a.length;c<d;c++)b.push(a[c]);return b},Da:function(a){return h?Symbol(a):a},Xd:6===q,Yd:7===q,W:q,Kc:function(b,c){for(var d=a.a.la(b.getElementsByTagName("input")).concat(a.a.la(b.getElementsByTagName("textarea"))),
e="string"==typeof c?function(a){return a.name===c}:function(a){return c.test(a.name)},k=[],f=d.length-1;0<=f;f--)e(d[f])&&k.push(d[f]);return k},Md:function(b){return"string"==typeof b&&(b=a.a.Cb(b))?H&&H.parse?H.parse(b):(new Function("return "+b))():null},fc:function(b,c,d){if(!H||!H.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
return H.stringify(a.a.c(b),c,d)},Nd:function(c,d,e){e=e||{};var k=e.params||{},f=e.includeFields||this.Ic,l=c;if("object"==typeof c&&"form"===a.a.P(c))for(var l=c.action,h=f.length-1;0<=h;h--)for(var g=a.a.Kc(c,f[h]),m=g.length-1;0<=m;m--)k[g[m].name]=g[m].value;d=a.a.c(d);var n=w.createElement("form");n.style.display="none";n.action=l;n.method="post";for(var q in d)c=w.createElement("input"),c.type="hidden",c.name=q,c.value=a.a.fc(a.a.c(d[q])),n.appendChild(c);b(k,function(a,b){var c=w.createElement("input");
c.type="hidden";c.name=a;c.value=b;n.appendChild(c)});w.body.appendChild(n);e.submitter?e.submitter(n):n.submit();setTimeout(function(){n.parentNode.removeChild(n)},0)}}}();a.b("utils",a.a);a.b("utils.arrayForEach",a.a.C);a.b("utils.arrayFirst",a.a.Lb);a.b("utils.arrayFilter",a.a.fb);a.b("utils.arrayGetDistinctValues",a.a.vc);a.b("utils.arrayIndexOf",a.a.A);a.b("utils.arrayMap",a.a.Mb);a.b("utils.arrayPushAll",a.a.gb);a.b("utils.arrayRemoveItem",a.a.hb);a.b("utils.cloneNodes",a.a.Ca);a.b("utils.createSymbolOrString",
a.a.Da);a.b("utils.extend",a.a.extend);a.b("utils.fieldsIncludedWithJsonPost",a.a.Ic);a.b("utils.getFormFields",a.a.Kc);a.b("utils.objectMap",a.a.Ha);a.b("utils.peekObservable",a.a.$b);a.b("utils.postJson",a.a.Nd);a.b("utils.parseJson",a.a.Md);a.b("utils.registerEventHandler",a.a.H);a.b("utils.stringifyJson",a.a.fc);a.b("utils.range",a.a.Od);a.b("utils.toggleDomNodeCssClass",a.a.Eb);a.b("utils.triggerEvent",a.a.Fb);a.b("utils.unwrapObservable",a.a.c);a.b("utils.objectForEach",a.a.O);a.b("utils.addOrRemoveItem",
a.a.Oa);a.b("utils.setTextContent",a.a.Ab);a.b("unwrap",a.a.c);Function.prototype.bind||(Function.prototype.bind=function(a){var c=this;if(1===arguments.length)return function(){return c.apply(a,arguments)};var d=Array.prototype.slice.call(arguments,1);return function(){var e=d.slice(0);e.push.apply(e,arguments);return c.apply(a,e)}});a.a.g=new function(){var b=0,c="__ko__"+(new Date).getTime(),d={},e,f;a.a.W?(e=function(a,e){var f=a[c];if(!f||"null"===f||!d[f]){if(!e)return p;f=a[c]="ko"+b++;d[f]=
{}}return d[f]},f=function(a){var b=a[c];return b?(delete d[b],a[c]=null,!0):!1}):(e=function(a,b){var d=a[c];!d&&b&&(d=a[c]={});return d},f=function(a){return a[c]?(delete a[c],!0):!1});return{get:function(a,b){var c=e(a,!1);return c&&c[b]},set:function(a,b,c){(a=e(a,c!==p))&&(a[b]=c)},Tb:function(a,b,c){a=e(a,!0);return a[b]||(a[b]=c)},clear:f,Z:function(){return b++ +c}}};a.b("utils.domData",a.a.g);a.b("utils.domData.clear",a.a.g.clear);a.a.I=new function(){function b(b,c){var d=a.a.g.get(b,e);
d===p&&c&&(d=[],a.a.g.set(b,e,d));return d}function c(c){var e=b(c,!1);if(e)for(var e=e.slice(0),f=0;f<e.length;f++)e[f](c);a.a.g.clear(c);a.a.I.cleanExternalData(c);g[c.nodeType]&&d(c.childNodes,!0)}function d(b,d){for(var e=[],k,f=0;f<b.length;f++)if(!d||8===b[f].nodeType)if(c(e[e.length]=k=b[f]),b[f]!==k)for(;f--&&-1==a.a.A(e,b[f]););}var e=a.a.g.Z(),f={1:!0,8:!0,9:!0},g={1:!0,9:!0};return{za:function(a,c){if("function"!=typeof c)throw Error("Callback must be a function");b(a,!0).push(c)},xb:function(c,
d){var f=b(c,!1);f&&(a.a.hb(f,d),0==f.length&&a.a.g.set(c,e,p))},na:function(a){f[a.nodeType]&&(c(a),g[a.nodeType]&&d(a.getElementsByTagName("*")));return a},removeNode:function(b){a.na(b);b.parentNode&&b.parentNode.removeChild(b)},cleanExternalData:function(a){v&&"function"==typeof v.cleanData&&v.cleanData([a])}}};a.na=a.a.I.na;a.removeNode=a.a.I.removeNode;a.b("cleanNode",a.na);a.b("removeNode",a.removeNode);a.b("utils.domNodeDisposal",a.a.I);a.b("utils.domNodeDisposal.addDisposeCallback",a.a.I.za);
a.b("utils.domNodeDisposal.removeDisposeCallback",a.a.I.xb);(function(){var b=[0,"",""],c=[1,"<table>","</table>"],d=[3,"<table><tbody><tr>","</tr></tbody></table>"],e=[1,"<select multiple='multiple'>","</select>"],f={thead:c,tbody:c,tfoot:c,tr:[2,"<table><tbody>","</tbody></table>"],td:d,th:d,option:e,optgroup:e},g=8>=a.a.W;a.a.ta=function(c,d){var e;if(v)if(v.parseHTML)e=v.parseHTML(c,d)||[];else{if((e=v.clean([c],d))&&e[0]){for(var k=e[0];k.parentNode&&11!==k.parentNode.nodeType;)k=k.parentNode;
k.parentNode&&k.parentNode.removeChild(k)}}else{(e=d)||(e=w);var k=e.parentWindow||e.defaultView||z,q=a.a.Cb(c).toLowerCase(),n=e.createElement("div"),r;r=(q=q.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&f[q[1]]||b;q=r[0];r="ignored<div>"+r[1]+c+r[2]+"</div>";"function"==typeof k.innerShiv?n.appendChild(k.innerShiv(r)):(g&&e.body.appendChild(n),n.innerHTML=r,g&&n.parentNode.removeChild(n));for(;q--;)n=n.lastChild;e=a.a.la(n.lastChild.childNodes)}return e};a.a.Ld=function(b,c){var d=a.a.ta(b,
c);return d.length&&d[0].parentElement||a.a.Xb(d)};a.a.dc=function(b,c){a.a.Sb(b);c=a.a.c(c);if(null!==c&&c!==p)if("string"!=typeof c&&(c=c.toString()),v)v(b).html(c);else for(var d=a.a.ta(c,b.ownerDocument),e=0;e<d.length;e++)b.appendChild(d[e])}})();a.b("utils.parseHtmlFragment",a.a.ta);a.b("utils.setHtml",a.a.dc);a.aa=function(){function b(c,e){if(c)if(8==c.nodeType){var f=a.aa.Tc(c.nodeValue);null!=f&&e.push({sd:c,Jd:f})}else if(1==c.nodeType)for(var f=0,g=c.childNodes,h=g.length;f<h;f++)b(g[f],
e)}var c={};return{Wb:function(a){if("function"!=typeof a)throw Error("You can only pass a function to ko.memoization.memoize()");var b=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);c[b]=a;return"\x3c!--[ko_memo:"+b+"]--\x3e"},ad:function(a,b){var f=c[a];if(f===p)throw Error("Couldn't find any memo with ID "+a+". Perhaps it's already been unmemoized.");try{return f.apply(null,b||[]),!0}finally{delete c[a]}},bd:function(c,e){var f=
[];b(c,f);for(var g=0,h=f.length;g<h;g++){var m=f[g].sd,l=[m];e&&a.a.gb(l,e);a.aa.ad(f[g].Jd,l);m.nodeValue="";m.parentNode&&m.parentNode.removeChild(m)}},Tc:function(a){return(a=a.match(/^\[ko_memo\:(.*?)\]$/))?a[1]:null}}}();a.b("memoization",a.aa);a.b("memoization.memoize",a.aa.Wb);a.b("memoization.unmemoize",a.aa.ad);a.b("memoization.parseMemoText",a.aa.Tc);a.b("memoization.unmemoizeDomNodeAndDescendants",a.aa.bd);a.ma=function(){function b(){if(f)for(var b=f,c=0,d;h<f;)if(d=e[h++]){if(h>b){if(5E3<=
++c){h=f;a.a.Fc(Error("'Too much recursion' after processing "+c+" task groups."));break}b=f}try{d()}catch(g){a.a.Fc(g)}}}function c(){b();h=f=e.length=0}var d,e=[],f=0,g=1,h=0;z.MutationObserver?d=function(a){var b=w.createElement("div");(new MutationObserver(a)).observe(b,{attributes:!0});return function(){b.classList.toggle("foo")}}(c):d=w&&"onreadystatechange"in w.createElement("script")?function(a){var b=w.createElement("script");b.onreadystatechange=function(){b.onreadystatechange=null;w.documentElement.removeChild(b);
b=null;a()};w.documentElement.appendChild(b)}:function(a){setTimeout(a,0)};return{scheduler:d,yb:function(b){f||a.ma.scheduler(c);e[f++]=b;return g++},cancel:function(a){a=a-(g-f);a>=h&&a<f&&(e[a]=null)},resetForTesting:function(){var a=f-h;h=f=e.length=0;return a},Rd:b}}();a.b("tasks",a.ma);a.b("tasks.schedule",a.ma.yb);a.b("tasks.runEarly",a.ma.Rd);a.Ta={throttle:function(b,c){b.throttleEvaluation=c;var d=null;return a.$({read:b,write:function(e){clearTimeout(d);d=a.a.setTimeout(function(){b(e)},
c)}})},rateLimit:function(a,c){var d,e,f;"number"==typeof c?d=c:(d=c.timeout,e=c.method);a.Hb=!1;f="function"==typeof e?e:"notifyWhenChangesStop"==e?Y:X;a.tb(function(a){return f(a,d,c)})},deferred:function(b,c){if(!0!==c)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");b.Hb||(b.Hb=!0,b.tb(function(c){var e,f=!1;return function(){if(!f){a.ma.cancel(e);e=a.ma.yb(c);try{f=!0,b.notifySubscribers(p,"dirty")}finally{f=
!1}}}}))},notify:function(a,c){a.equalityComparer="always"==c?null:K}};var W={undefined:1,"boolean":1,number:1,string:1};a.b("extenders",a.Ta);a.gc=function(b,c,d){this.da=b;this.kc=c;this.lc=d;this.Ib=!1;this.ab=this.Jb=null;a.J(this,"dispose",this.s);a.J(this,"disposeWhenNodeIsRemoved",this.l)};a.gc.prototype.s=function(){this.Ib||(this.ab&&a.a.I.xb(this.Jb,this.ab),this.Ib=!0,this.lc(),this.da=this.kc=this.lc=this.Jb=this.ab=null)};a.gc.prototype.l=function(b){this.Jb=b;a.a.I.za(b,this.ab=this.s.bind(this))};
a.R=function(){a.a.zb(this,D);D.ob(this)};var D={ob:function(a){a.S={change:[]};a.rc=1},subscribe:function(b,c,d){var e=this;d=d||"change";var f=new a.gc(e,c?b.bind(c):b,function(){a.a.hb(e.S[d],f);e.cb&&e.cb(d)});e.Qa&&e.Qa(d);e.S[d]||(e.S[d]=[]);e.S[d].push(f);return f},notifySubscribers:function(b,c){c=c||"change";"change"===c&&this.Gb();if(this.Wa(c)){var d="change"===c&&this.dd||this.S[c].slice(0);try{a.v.wc();for(var e=0,f;f=d[e];++e)f.Ib||f.kc(b)}finally{a.v.end()}}},mb:function(){return this.rc},
Cd:function(a){return this.mb()!==a},Gb:function(){++this.rc},tb:function(b){var c=this,d=a.N(c),e,f,g,h,m;c.bb||(c.bb=c.notifySubscribers,c.notifySubscribers=Z);var l=b(function(){c.Ka=!1;d&&h===c&&(h=c.mc?c.mc():c());var a=f||m&&c.qb(g,h);m=f=e=!1;a&&c.bb(g=h)});c.pc=function(a,b){b&&c.Ka||(m=!b);c.dd=c.S.change.slice(0);c.Ka=e=!0;h=a;l()};c.oc=function(a){e||(g=a,c.bb(a,"beforeChange"))};c.qc=function(){m=!0};c.fd=function(){c.qb(g,c.w(!0))&&(f=!0)}},Wa:function(a){return this.S[a]&&this.S[a].length},
Ad:function(b){if(b)return this.S[b]&&this.S[b].length||0;var c=0;a.a.O(this.S,function(a,b){"dirty"!==a&&(c+=b.length)});return c},qb:function(a,c){return!this.equalityComparer||!this.equalityComparer(a,c)},toString:function(){return"[object Object]"},extend:function(b){var c=this;b&&a.a.O(b,function(b,e){var f=a.Ta[b];"function"==typeof f&&(c=f(c,e)||c)});return c}};a.J(D,"init",D.ob);a.J(D,"subscribe",D.subscribe);a.J(D,"extend",D.extend);a.J(D,"getSubscriptionsCount",D.Ad);a.a.Ba&&a.a.setPrototypeOf(D,
Function.prototype);a.R.fn=D;a.Pc=function(a){return null!=a&&"function"==typeof a.subscribe&&"function"==typeof a.notifySubscribers};a.b("subscribable",a.R);a.b("isSubscribable",a.Pc);a.U=a.v=function(){function b(a){d.push(e);e=a}function c(){e=d.pop()}var d=[],e,f=0;return{wc:b,end:c,ac:function(b){if(e){if(!a.Pc(b))throw Error("Only subscribable things can act as dependencies");e.nd.call(e.od,b,b.ed||(b.ed=++f))}},K:function(a,d,e){try{return b(),a.apply(d,e||[])}finally{c()}},pa:function(){if(e)return e.o.pa()},
Va:function(){if(e)return e.o.Va()},rb:function(){if(e)return e.rb},o:function(){if(e)return e.o}}}();a.b("computedContext",a.U);a.b("computedContext.getDependenciesCount",a.U.pa);a.b("computedContext.getDependencies",a.U.Va);a.b("computedContext.isInitial",a.U.rb);a.b("computedContext.registerDependency",a.U.ac);a.b("ignoreDependencies",a.Wd=a.v.K);var I=a.a.Da("_latestValue");a.sa=function(b){function c(){if(0<arguments.length)return c.qb(c[I],arguments[0])&&(c.xa(),c[I]=arguments[0],c.wa()),this;
a.v.ac(c);return c[I]}c[I]=b;a.a.Ba||a.a.extend(c,a.R.fn);a.R.fn.ob(c);a.a.zb(c,F);a.options.deferUpdates&&a.Ta.deferred(c,!0);return c};var F={equalityComparer:K,w:function(){return this[I]},wa:function(){this.notifySubscribers(this[I],"spectate");this.notifySubscribers(this[I])},xa:function(){this.notifySubscribers(this[I],"beforeChange")}};a.a.Ba&&a.a.setPrototypeOf(F,a.R.fn);var G=a.sa.Na="__ko_proto__";F[G]=a.sa;a.N=function(b){if((b="function"==typeof b&&b[G])&&b!==F[G]&&b!==a.o.fn[G])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");
return!!b};a.Ya=function(b){return"function"==typeof b&&(b[G]===F[G]||b[G]===a.o.fn[G]&&b.Mc)};a.b("observable",a.sa);a.b("isObservable",a.N);a.b("isWriteableObservable",a.Ya);a.b("isWritableObservable",a.Ya);a.b("observable.fn",F);a.J(F,"peek",F.w);a.J(F,"valueHasMutated",F.wa);a.J(F,"valueWillMutate",F.xa);a.Ia=function(b){b=b||[];if("object"!=typeof b||!("length"in b))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");b=a.sa(b);a.a.zb(b,
a.Ia.fn);return b.extend({trackArrayChanges:!0})};a.Ia.fn={remove:function(b){for(var c=this.w(),d=[],e="function"!=typeof b||a.N(b)?function(a){return a===b}:b,f=0;f<c.length;f++){var g=c[f];if(e(g)){0===d.length&&this.xa();if(c[f]!==g)throw Error("Array modified during remove; cannot remove item");d.push(g);c.splice(f,1);f--}}d.length&&this.wa();return d},removeAll:function(b){if(b===p){var c=this.w(),d=c.slice(0);this.xa();c.splice(0,c.length);this.wa();return d}return b?this.remove(function(c){return 0<=
a.a.A(b,c)}):[]},destroy:function(b){var c=this.w(),d="function"!=typeof b||a.N(b)?function(a){return a===b}:b;this.xa();for(var e=c.length-1;0<=e;e--){var f=c[e];d(f)&&(f._destroy=!0)}this.wa()},destroyAll:function(b){return b===p?this.destroy(function(){return!0}):b?this.destroy(function(c){return 0<=a.a.A(b,c)}):[]},indexOf:function(b){var c=this();return a.a.A(c,b)},replace:function(a,c){var d=this.indexOf(a);0<=d&&(this.xa(),this.w()[d]=c,this.wa())},sorted:function(a){var c=this().slice(0);
return a?c.sort(a):c.sort()},reversed:function(){return this().slice(0).reverse()}};a.a.Ba&&a.a.setPrototypeOf(a.Ia.fn,a.sa.fn);a.a.C("pop push reverse shift sort splice unshift".split(" "),function(b){a.Ia.fn[b]=function(){var a=this.w();this.xa();this.yc(a,b,arguments);var d=a[b].apply(a,arguments);this.wa();return d===a?this:d}});a.a.C(["slice"],function(b){a.Ia.fn[b]=function(){var a=this();return a[b].apply(a,arguments)}});a.Oc=function(b){return a.N(b)&&"function"==typeof b.remove&&"function"==
typeof b.push};a.b("observableArray",a.Ia);a.b("isObservableArray",a.Oc);a.Ta.trackArrayChanges=function(b,c){function d(){function c(){if(h){var d=[].concat(b.w()||[]);if(b.Wa("arrayChange")){var e;if(!f||1<h)f=a.a.Ob(m,d,b.Nb);e=f}m=d;f=null;h=0;e&&e.length&&b.notifySubscribers(e,"arrayChange")}}e?c():(e=!0,l=b.notifySubscribers,b.notifySubscribers=function(a,b){b&&"change"!==b||++h;return l.apply(this,arguments)},m=[].concat(b.w()||[]),f=null,g=b.subscribe(c))}b.Nb={};c&&"object"==typeof c&&a.a.extend(b.Nb,
c);b.Nb.sparse=!0;if(!b.yc){var e=!1,f=null,g,h=0,m,l,k=b.Qa,q=b.cb;b.Qa=function(a){k&&k.call(b,a);"arrayChange"===a&&d()};b.cb=function(a){q&&q.call(b,a);"arrayChange"!==a||b.Wa("arrayChange")||(l&&(b.notifySubscribers=l,l=p),g&&g.s(),g=null,e=!1,m=p)};b.yc=function(b,c,d){function k(a,b,c){return l[l.length]={status:a,value:b,index:c}}if(e&&!h){var l=[],g=b.length,q=d.length,m=0;switch(c){case "push":m=g;case "unshift":for(c=0;c<q;c++)k("added",d[c],m+c);break;case "pop":m=g-1;case "shift":g&&
k("deleted",b[m],m);break;case "splice":c=Math.min(Math.max(0,0>d[0]?g+d[0]:d[0]),g);for(var g=1===q?g:Math.min(c+(d[1]||0),g),q=c+q-2,m=Math.max(g,q),U=[],L=[],p=2;c<m;++c,++p)c<g&&L.push(k("deleted",b[c],c)),c<q&&U.push(k("added",d[p],c));a.a.Jc(L,U);break;default:return}f=l}}}};var t=a.a.Da("_state");a.o=a.$=function(b,c,d){function e(){if(0<arguments.length){if("function"===typeof f)f.apply(g.lb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");
return this}g.qa||a.v.ac(e);(g.ka||g.G&&e.Xa())&&e.ha();return g.X}"object"===typeof b?d=b:(d=d||{},b&&(d.read=b));if("function"!=typeof d.read)throw Error("Pass a function that returns the value of the ko.computed");var f=d.write,g={X:p,ra:!0,ka:!0,pb:!1,hc:!1,qa:!1,vb:!1,G:!1,Vc:d.read,lb:c||d.owner,l:d.disposeWhenNodeIsRemoved||d.l||null,Sa:d.disposeWhen||d.Sa,Qb:null,F:{},V:0,Hc:null};e[t]=g;e.Mc="function"===typeof f;a.a.Ba||a.a.extend(e,a.R.fn);a.R.fn.ob(e);a.a.zb(e,C);d.pure?(g.vb=!0,g.G=!0,
a.a.extend(e,da)):d.deferEvaluation&&a.a.extend(e,ea);a.options.deferUpdates&&a.Ta.deferred(e,!0);g.l&&(g.hc=!0,g.l.nodeType||(g.l=null));g.G||d.deferEvaluation||e.ha();g.l&&e.ja()&&a.a.I.za(g.l,g.Qb=function(){e.s()});return e};var C={equalityComparer:K,pa:function(){return this[t].V},Va:function(){var b=[];a.a.O(this[t].F,function(a,d){b[d.La]=d.da});return b},Ub:function(b){if(!this[t].V)return!1;var c=this.Va();return-1!==a.a.A(c,b)?!0:!!a.a.Lb(c,function(a){return a.Ub&&a.Ub(b)})},tc:function(a,
c,d){if(this[t].vb&&c===this)throw Error("A 'pure' computed must not be called recursively");this[t].F[a]=d;d.La=this[t].V++;d.Ma=c.mb()},Xa:function(){var a,c,d=this[t].F;for(a in d)if(Object.prototype.hasOwnProperty.call(d,a)&&(c=d[a],this.Ja&&c.da.Ka||c.da.Cd(c.Ma)))return!0},Id:function(){this.Ja&&!this[t].pb&&this.Ja(!1)},ja:function(){var a=this[t];return a.ka||0<a.V},Qd:function(){this.Ka?this[t].ka&&(this[t].ra=!0):this.Gc()},Zc:function(a){if(a.Hb){var c=a.subscribe(this.Id,this,"dirty"),
d=a.subscribe(this.Qd,this);return{da:a,s:function(){c.s();d.s()}}}return a.subscribe(this.Gc,this)},Gc:function(){var b=this,c=b.throttleEvaluation;c&&0<=c?(clearTimeout(this[t].Hc),this[t].Hc=a.a.setTimeout(function(){b.ha(!0)},c)):b.Ja?b.Ja(!0):b.ha(!0)},ha:function(b){var c=this[t],d=c.Sa,e=!1;if(!c.pb&&!c.qa){if(c.l&&!a.a.Rb(c.l)||d&&d()){if(!c.hc){this.s();return}}else c.hc=!1;c.pb=!0;try{e=this.yd(b)}finally{c.pb=!1}return e}},yd:function(b){var c=this[t],d=!1,e=c.vb?p:!c.V,d={pd:this,kb:c.F,
Pb:c.V};a.v.wc({od:d,nd:ba,o:this,rb:e});c.F={};c.V=0;var f=this.xd(c,d);c.V?d=this.qb(c.X,f):(this.s(),d=!0);d&&(c.G?this.Gb():this.notifySubscribers(c.X,"beforeChange"),c.X=f,this.notifySubscribers(c.X,"spectate"),!c.G&&b&&this.notifySubscribers(c.X),this.qc&&this.qc());e&&this.notifySubscribers(c.X,"awake");return d},xd:function(b,c){try{var d=b.Vc;return b.lb?d.call(b.lb):d()}finally{a.v.end(),c.Pb&&!b.G&&a.a.O(c.kb,aa),b.ra=b.ka=!1}},w:function(a){var c=this[t];(c.ka&&(a||!c.V)||c.G&&this.Xa())&&
this.ha();return c.X},tb:function(b){a.R.fn.tb.call(this,b);this.mc=function(){this[t].G||(this[t].ra?this.ha():this[t].ka=!1);return this[t].X};this.Ja=function(a){this.oc(this[t].X);this[t].ka=!0;a&&(this[t].ra=!0);this.pc(this,!a)}},s:function(){var b=this[t];!b.G&&b.F&&a.a.O(b.F,function(a,b){b.s&&b.s()});b.l&&b.Qb&&a.a.I.xb(b.l,b.Qb);b.F=p;b.V=0;b.qa=!0;b.ra=!1;b.ka=!1;b.G=!1;b.l=p;b.Sa=p;b.Vc=p;this.Mc||(b.lb=p)}},da={Qa:function(b){var c=this,d=c[t];if(!d.qa&&d.G&&"change"==b){d.G=!1;if(d.ra||
c.Xa())d.F=null,d.V=0,c.ha()&&c.Gb();else{var e=[];a.a.O(d.F,function(a,b){e[b.La]=a});a.a.C(e,function(a,b){var e=d.F[a],m=c.Zc(e.da);m.La=b;m.Ma=e.Ma;d.F[a]=m});c.Xa()&&c.ha()&&c.Gb()}d.qa||c.notifySubscribers(d.X,"awake")}},cb:function(b){var c=this[t];c.qa||"change"!=b||this.Wa("change")||(a.a.O(c.F,function(a,b){b.s&&(c.F[a]={da:b.da,La:b.La,Ma:b.Ma},b.s())}),c.G=!0,this.notifySubscribers(p,"asleep"))},mb:function(){var b=this[t];b.G&&(b.ra||this.Xa())&&this.ha();return a.R.fn.mb.call(this)}},
ea={Qa:function(a){"change"!=a&&"beforeChange"!=a||this.w()}};a.a.Ba&&a.a.setPrototypeOf(C,a.R.fn);var N=a.sa.Na;C[N]=a.o;a.Nc=function(a){return"function"==typeof a&&a[N]===C[N]};a.Ed=function(b){return a.Nc(b)&&b[t]&&b[t].vb};a.b("computed",a.o);a.b("dependentObservable",a.o);a.b("isComputed",a.Nc);a.b("isPureComputed",a.Ed);a.b("computed.fn",C);a.J(C,"peek",C.w);a.J(C,"dispose",C.s);a.J(C,"isActive",C.ja);a.J(C,"getDependenciesCount",C.pa);a.J(C,"getDependencies",C.Va);a.wb=function(b,c){if("function"===
typeof b)return a.o(b,c,{pure:!0});b=a.a.extend({},b);b.pure=!0;return a.o(b,c)};a.b("pureComputed",a.wb);(function(){function b(a,f,g){g=g||new d;a=f(a);if("object"!=typeof a||null===a||a===p||a instanceof RegExp||a instanceof Date||a instanceof String||a instanceof Number||a instanceof Boolean)return a;var h=a instanceof Array?[]:{};g.save(a,h);c(a,function(c){var d=f(a[c]);switch(typeof d){case "boolean":case "number":case "string":case "function":h[c]=d;break;case "object":case "undefined":var k=
g.get(d);h[c]=k!==p?k:b(d,f,g)}});return h}function c(a,b){if(a instanceof Array){for(var c=0;c<a.length;c++)b(c);"function"==typeof a.toJSON&&b("toJSON")}else for(c in a)b(c)}function d(){this.keys=[];this.values=[]}a.$c=function(c){if(0==arguments.length)throw Error("When calling ko.toJS, pass the object you want to convert.");return b(c,function(b){for(var c=0;a.N(b)&&10>c;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.$c(b);return a.a.fc(b,c,d)};d.prototype={constructor:d,save:function(b,
c){var d=a.a.A(this.keys,b);0<=d?this.values[d]=c:(this.keys.push(b),this.values.push(c))},get:function(b){b=a.a.A(this.keys,b);return 0<=b?this.values[b]:p}}})();a.b("toJS",a.$c);a.b("toJSON",a.toJSON);a.Vd=function(b,c,d){function e(c){var e=a.wb(b,d).extend({Ga:"always"}),h=e.subscribe(function(a){a&&(h.s(),c(a))});e.notifySubscribers(e.w());return h}return"function"!==typeof Promise||c?e(c.bind(d)):new Promise(e)};a.b("when",a.Vd);(function(){a.u={L:function(b){switch(a.a.P(b)){case "option":return!0===
b.__ko__hasDomDataOptionValue__?a.a.g.get(b,a.f.options.Yb):7>=a.a.W?b.getAttributeNode("value")&&b.getAttributeNode("value").specified?b.value:b.text:b.value;case "select":return 0<=b.selectedIndex?a.u.L(b.options[b.selectedIndex]):p;default:return b.value}},ya:function(b,c,d){switch(a.a.P(b)){case "option":"string"===typeof c?(a.a.g.set(b,a.f.options.Yb,p),"__ko__hasDomDataOptionValue__"in b&&delete b.__ko__hasDomDataOptionValue__,b.value=c):(a.a.g.set(b,a.f.options.Yb,c),b.__ko__hasDomDataOptionValue__=
!0,b.value="number"===typeof c?c:"");break;case "select":if(""===c||null===c)c=p;for(var e=-1,f=0,g=b.options.length,h;f<g;++f)if(h=a.u.L(b.options[f]),h==c||""===h&&c===p){e=f;break}if(d||0<=e||c===p&&1<b.size)b.selectedIndex=e,6===a.a.W&&a.a.setTimeout(function(){b.selectedIndex=e},0);break;default:if(null===c||c===p)c="";b.value=c}}}})();a.b("selectExtensions",a.u);a.b("selectExtensions.readValue",a.u.L);a.b("selectExtensions.writeValue",a.u.ya);a.m=function(){function b(b){b=a.a.Cb(b);123===b.charCodeAt(0)&&
(b=b.slice(1,-1));b+="\n,";var c=[],d=b.match(e),q,n=[],h=0;if(1<d.length){for(var y=0,A;A=d[y];++y){var u=A.charCodeAt(0);if(44===u){if(0>=h){c.push(q&&n.length?{key:q,value:n.join("")}:{unknown:q||n.join("")});q=h=0;n=[];continue}}else if(58===u){if(!h&&!q&&1===n.length){q=n.pop();continue}}else if(47===u&&1<A.length&&(47===A.charCodeAt(1)||42===A.charCodeAt(1)))continue;else 47===u&&y&&1<A.length?(u=d[y-1].match(f))&&!g[u[0]]&&(b=b.substr(b.indexOf(A)+1),d=b.match(e),y=-1,A="/"):40===u||123===
u||91===u?++h:41===u||125===u||93===u?--h:q||n.length||34!==u&&39!==u||(A=A.slice(1,-1));n.push(A)}if(0<h)throw Error("Unbalanced parentheses, braces, or brackets");}return c}var c=["true","false","null","undefined"],d=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,e=RegExp("\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|`(?:\\\\.|[^`])*`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.*\n|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,\"'`{}()/:[\\]]*[^\\s,\"'`{}()/:[\\]]|[^\\s]","g"),f=/[\])"'A-Za-z0-9_$]+$/,g={"in":1,"return":1,
"typeof":1},h={};return{Ra:[],va:h,Zb:b,ub:function(e,f){function k(b,e){var f;if(!y){var l=a.getBindingHandler(b);if(l&&l.preprocess&&!(e=l.preprocess(e,b,k)))return;if(l=h[b])f=e,0<=a.a.A(c,f)?f=!1:(l=f.match(d),f=null===l?!1:l[1]?"Object("+l[1]+")"+l[2]:f),l=f;l&&n.push("'"+("string"==typeof h[b]?h[b]:b)+"':function(_z){"+f+"=_z}")}g&&(e="function(){return "+e+" }");q.push("'"+b+"':"+e)}f=f||{};var q=[],n=[],g=f.valueAccessors,y=f.bindingParams,A="string"===typeof e?b(e):e;a.a.C(A,function(a){k(a.key||
a.unknown,a.value)});n.length&&k("_ko_property_writers","{"+n.join(",")+" }");return q.join(",")},Hd:function(a,b){for(var c=0;c<a.length;c++)if(a[c].key==b)return!0;return!1},$a:function(b,c,d,e,f){if(b&&a.N(b))!a.Ya(b)||f&&b.w()===e||b(e);else if((b=c.get("_ko_property_writers"))&&b[d])b[d](e)}}}();a.b("expressionRewriting",a.m);a.b("expressionRewriting.bindingRewriteValidators",a.m.Ra);a.b("expressionRewriting.parseObjectLiteral",a.m.Zb);a.b("expressionRewriting.preProcessBindings",a.m.ub);a.b("expressionRewriting._twoWayBindings",
a.m.va);a.b("jsonExpressionRewriting",a.m);a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",a.m.ub);(function(){function b(a){return 8==a.nodeType&&g.test(f?a.text:a.nodeValue)}function c(a){return 8==a.nodeType&&h.test(f?a.text:a.nodeValue)}function d(d,e){for(var f=d,g=1,h=[];f=f.nextSibling;){if(c(f)&&(a.a.g.set(f,l,!0),g--,0===g))return h;h.push(f);b(f)&&g++}if(!e)throw Error("Cannot find closing comment tag to match: "+d.nodeValue);return null}function e(a,b){var c=d(a,b);return c?
0<c.length?c[c.length-1].nextSibling:a.nextSibling:null}var f=w&&"\x3c!--test--\x3e"===w.createComment("test").text,g=f?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,h=f?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,m={ul:!0,ol:!0},l="__ko_matchedEndComment__";a.h={ea:{},childNodes:function(a){return b(a)?d(a):a.childNodes},Ea:function(c){if(b(c)){c=a.h.childNodes(c);for(var d=0,e=c.length;d<e;d++)a.removeNode(c[d])}else a.a.Sb(c)},ua:function(c,d){if(b(c)){a.h.Ea(c);for(var e=
c.nextSibling,f=0,l=d.length;f<l;f++)e.parentNode.insertBefore(d[f],e)}else a.a.ua(c,d)},Uc:function(a,c){b(a)?a.parentNode.insertBefore(c,a.nextSibling):a.firstChild?a.insertBefore(c,a.firstChild):a.appendChild(c)},Vb:function(c,d,e){e?b(c)?c.parentNode.insertBefore(d,e.nextSibling):e.nextSibling?c.insertBefore(d,e.nextSibling):c.appendChild(d):a.h.Uc(c,d)},firstChild:function(a){if(b(a))return!a.nextSibling||c(a.nextSibling)?null:a.nextSibling;if(a.firstChild&&c(a.firstChild))throw Error("Found invalid end comment, as the first child of "+
a);return a.firstChild},nextSibling:function(d){b(d)&&(d=e(d));if(d.nextSibling&&c(d.nextSibling)){var f=d.nextSibling;if(c(f)&&!a.a.g.get(f,l))throw Error("Found end comment without a matching opening comment, as child of "+d);return null}return d.nextSibling},Bd:b,Ud:function(a){return(a=(f?a.text:a.nodeValue).match(g))?a[1]:null},Rc:function(d){if(m[a.a.P(d)]){var f=d.firstChild;if(f){do if(1===f.nodeType){var l;l=f.firstChild;var g=null;if(l){do if(g)g.push(l);else if(b(l)){var h=e(l,!0);h?l=
h:g=[l]}else c(l)&&(g=[l]);while(l=l.nextSibling)}if(l=g)for(g=f.nextSibling,h=0;h<l.length;h++)g?d.insertBefore(l[h],g):d.appendChild(l[h])}while(f=f.nextSibling)}}}}})();a.b("virtualElements",a.h);a.b("virtualElements.allowedBindings",a.h.ea);a.b("virtualElements.emptyNode",a.h.Ea);a.b("virtualElements.insertAfter",a.h.Vb);a.b("virtualElements.prepend",a.h.Uc);a.b("virtualElements.setDomNodeChildren",a.h.ua);(function(){a.ga=function(){this.md={}};a.a.extend(a.ga.prototype,{nodeHasBindings:function(b){switch(b.nodeType){case 1:return null!=
b.getAttribute("data-bind")||a.i.getComponentNameForNode(b);case 8:return a.h.Bd(b);default:return!1}},getBindings:function(b,c){var d=this.getBindingsString(b,c),d=d?this.parseBindingsString(d,c,b):null;return a.i.sc(d,b,c,!1)},getBindingAccessors:function(b,c){var d=this.getBindingsString(b,c),d=d?this.parseBindingsString(d,c,b,{valueAccessors:!0}):null;return a.i.sc(d,b,c,!0)},getBindingsString:function(b){switch(b.nodeType){case 1:return b.getAttribute("data-bind");case 8:return a.h.Ud(b);default:return null}},
parseBindingsString:function(b,c,d,e){try{var f=this.md,g=b+(e&&e.valueAccessors||""),h;if(!(h=f[g])){var m,l="with($context){with($data||{}){return{"+a.m.ub(b,e)+"}}}";m=new Function("$context","$element",l);h=f[g]=m}return h(c,d)}catch(k){throw k.message="Unable to parse bindings.\nBindings value: "+b+"\nMessage: "+k.message,k;}}});a.ga.instance=new a.ga})();a.b("bindingProvider",a.ga);(function(){function b(b){var c=(b=a.a.g.get(b,B))&&b.M;c&&(b.M=null,c.Sc())}function c(c,d,e){this.node=c;this.xc=
d;this.ib=[];this.T=!1;d.M||a.a.I.za(c,b);e&&e.M&&(e.M.ib.push(c),this.Kb=e)}function d(a){return function(){return a}}function e(a){return a()}function f(b){return a.a.Ha(a.v.K(b),function(a,c){return function(){return b()[c]}})}function g(b,c,e){return"function"===typeof b?f(b.bind(null,c,e)):a.a.Ha(b,d)}function h(a,b){return f(this.getBindings.bind(this,a,b))}function m(b,c){var d=a.h.firstChild(c);if(d){var e,f=a.ga.instance,k=f.preprocessNode;if(k){for(;e=d;)d=a.h.nextSibling(e),k.call(f,e);
d=a.h.firstChild(c)}for(;e=d;)d=a.h.nextSibling(e),l(b,e)}a.j.Ga(c,a.j.T)}function l(b,c){var d=b,e=1===c.nodeType;e&&a.h.Rc(c);if(e||a.ga.instance.nodeHasBindings(c))d=q(c,null,b).bindingContextForDescendants;d&&!u[a.a.P(c)]&&m(d,c)}function k(b){var c=[],d={},e=[];a.a.O(b,function ca(f){if(!d[f]){var l=a.getBindingHandler(f);l&&(l.after&&(e.push(f),a.a.C(l.after,function(c){if(b[c]){if(-1!==a.a.A(e,c))throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+e.join(", "));
ca(c)}}),e.length--),c.push({key:f,Lc:l}));d[f]=!0}});return c}function q(b,c,d){var f=a.a.g.Tb(b,B,{}),l=f.gd;if(!c){if(l)throw Error("You cannot apply bindings multiple times to the same element.");f.gd=!0}l||(f.context=d);var g;if(c&&"function"!==typeof c)g=c;else{var q=a.ga.instance,n=q.getBindingAccessors||h,m=a.$(function(){if(g=c?c(d,b):n.call(q,b,d)){if(d[r])d[r]();if(d[A])d[A]()}return g},null,{l:b});g&&m.ja()||(m=null)}var y=d,u;if(g){var J=function(){return a.a.Ha(m?m():g,e)},t=m?function(a){return function(){return e(m()[a])}}:
function(a){return g[a]};J.get=function(a){return g[a]&&e(t(a))};J.has=function(a){return a in g};a.j.T in g&&a.j.subscribe(b,a.j.T,function(){var c=(0,g[a.j.T])();if(c){var d=a.h.childNodes(b);d.length&&c(d,a.Dc(d[0]))}});a.j.oa in g&&(y=a.j.Bb(b,d),a.j.subscribe(b,a.j.oa,function(){var c=(0,g[a.j.oa])();c&&a.h.firstChild(b)&&c(b)}));f=k(g);a.a.C(f,function(c){var d=c.Lc.init,e=c.Lc.update,f=c.key;if(8===b.nodeType&&!a.h.ea[f])throw Error("The binding '"+f+"' cannot be used with virtual elements");
try{"function"==typeof d&&a.v.K(function(){var a=d(b,t(f),J,y.$data,y);if(a&&a.controlsDescendantBindings){if(u!==p)throw Error("Multiple bindings ("+u+" and "+f+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");u=f}}),"function"==typeof e&&a.$(function(){e(b,t(f),J,y.$data,y)},null,{l:b})}catch(l){throw l.message='Unable to process binding "'+f+": "+g[f]+'"\nMessage: '+l.message,l;}})}f=u===p;return{shouldBindDescendants:f,
bindingContextForDescendants:f&&y}}function n(b,c){return b&&b instanceof a.fa?b:new a.fa(b,p,p,c)}var r=a.a.Da("_subscribable"),y=a.a.Da("_ancestorBindingInfo"),A=a.a.Da("_dataDependency");a.f={};var u={script:!0,textarea:!0,template:!0};a.getBindingHandler=function(b){return a.f[b]};var J={};a.fa=function(b,c,d,e,f){function l(){var b=q?h():h,f=a.a.c(b);c?(a.a.extend(k,c),y in c&&(k[y]=c[y])):(k.$parents=[],k.$root=f,k.ko=a);k[r]=n;g?f=k.$data:(k.$rawData=b,k.$data=f);d&&(k[d]=f);e&&e(k,c,f);if(c&&
c[r]&&!a.U.o().Ub(c[r]))c[r]();m&&(k[A]=m);return k.$data}var k=this,g=b===J,h=g?p:b,q="function"==typeof h&&!a.N(h),n,m=f&&f.dataDependency;f&&f.exportDependencies?l():(n=a.wb(l),n.w(),n.ja()?n.equalityComparer=null:k[r]=p)};a.fa.prototype.createChildContext=function(b,c,d,e){!e&&c&&"object"==typeof c&&(e=c,c=e.as,d=e.extend);if(c&&e&&e.noChildContext){var f="function"==typeof b&&!a.N(b);return new a.fa(J,this,null,function(a){d&&d(a);a[c]=f?b():b},e)}return new a.fa(b,this,c,function(a,b){a.$parentContext=
b;a.$parent=b.$data;a.$parents=(b.$parents||[]).slice(0);a.$parents.unshift(a.$parent);d&&d(a)},e)};a.fa.prototype.extend=function(b,c){return new a.fa(J,this,null,function(c){a.a.extend(c,"function"==typeof b?b(c):b)},c)};var B=a.a.g.Z();c.prototype.Sc=function(){this.Kb&&this.Kb.M&&this.Kb.M.rd(this.node)};c.prototype.rd=function(b){a.a.hb(this.ib,b);!this.ib.length&&this.T&&this.Bc()};c.prototype.Bc=function(){this.T=!0;this.xc.M&&!this.ib.length&&(this.xc.M=null,a.a.I.xb(this.node,b),a.j.Ga(this.node,
a.j.oa),this.Sc())};a.j={T:"childrenComplete",oa:"descendantsComplete",subscribe:function(b,c,d,e){b=a.a.g.Tb(b,B,{});b.Fa||(b.Fa=new a.R);return b.Fa.subscribe(d,e,c)},Ga:function(b,c){var d=a.a.g.get(b,B);if(d&&(d.Fa&&d.Fa.notifySubscribers(b,c),c==a.j.T))if(d.M)d.M.Bc();else if(d.M===p&&d.Fa&&d.Fa.Wa(a.j.oa))throw Error("descendantsComplete event not supported for bindings on this node");},Bb:function(b,d){var e=a.a.g.Tb(b,B,{});e.M||(e.M=new c(b,e,d[y]));return d[y]==e?d:d.extend(function(a){a[y]=
e})}};a.Sd=function(b){return(b=a.a.g.get(b,B))&&b.context};a.eb=function(b,c,d){1===b.nodeType&&a.h.Rc(b);return q(b,c,n(d))};a.kd=function(b,c,d){d=n(d);return a.eb(b,g(c,d,b),d)};a.Pa=function(a,b){1!==b.nodeType&&8!==b.nodeType||m(n(a),b)};a.uc=function(a,b,c){!v&&z.jQuery&&(v=z.jQuery);if(2>arguments.length){if(b=w.body,!b)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?");}else if(!b||1!==b.nodeType&&8!==b.nodeType)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");
l(n(a,c),b)};a.Cc=function(b){return!b||1!==b.nodeType&&8!==b.nodeType?p:a.Sd(b)};a.Dc=function(b){return(b=a.Cc(b))?b.$data:p};a.b("bindingHandlers",a.f);a.b("bindingEvent",a.j);a.b("bindingEvent.subscribe",a.j.subscribe);a.b("bindingEvent.startPossiblyAsyncContentBinding",a.j.Bb);a.b("applyBindings",a.uc);a.b("applyBindingsToDescendants",a.Pa);a.b("applyBindingAccessorsToNode",a.eb);a.b("applyBindingsToNode",a.kd);a.b("contextFor",a.Cc);a.b("dataFor",a.Dc)})();(function(b){function c(c,e){var l=
Object.prototype.hasOwnProperty.call(f,c)?f[c]:b,k;l?l.subscribe(e):(l=f[c]=new a.R,l.subscribe(e),d(c,function(b,d){var e=!(!d||!d.synchronous);g[c]={definition:b,Fd:e};delete f[c];k||e?l.notifySubscribers(b):a.ma.yb(function(){l.notifySubscribers(b)})}),k=!0)}function d(a,b){e("getConfig",[a],function(c){c?e("loadComponent",[a,c],function(a){b(a,c)}):b(null,null)})}function e(c,d,f,k){k||(k=a.i.loaders.slice(0));var g=k.shift();if(g){var n=g[c];if(n){var r=!1;if(n.apply(g,d.concat(function(a){r?
f(null):null!==a?f(a):e(c,d,f,k)}))!==b&&(r=!0,!g.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.");}else e(c,d,f,k)}else f(null)}var f={},g={};a.i={get:function(d,e){var f=Object.prototype.hasOwnProperty.call(g,d)?g[d]:b;f?f.Fd?a.v.K(function(){e(f.definition)}):a.ma.yb(function(){e(f.definition)}):c(d,e)},Ac:function(a){delete g[a]},nc:e};a.i.loaders=[];a.b("components",a.i);a.b("components.get",a.i.get);
a.b("components.clearCachedDefinition",a.i.Ac)})();(function(){function b(b,c,d,e){function g(){0===--A&&e(h)}var h={},A=2,u=d.template;d=d.viewModel;u?f(c,u,function(c){a.i.nc("loadTemplate",[b,c],function(a){h.template=a;g()})}):g();d?f(c,d,function(c){a.i.nc("loadViewModel",[b,c],function(a){h[m]=a;g()})}):g()}function c(a,b,d){if("function"===typeof b)d(function(a){return new b(a)});else if("function"===typeof b[m])d(b[m]);else if("instance"in b){var e=b.instance;d(function(){return e})}else"viewModel"in
b?c(a,b.viewModel,d):a("Unknown viewModel value: "+b)}function d(b){switch(a.a.P(b)){case "script":return a.a.ta(b.text);case "textarea":return a.a.ta(b.value);case "template":if(e(b.content))return a.a.Ca(b.content.childNodes)}return a.a.Ca(b.childNodes)}function e(a){return z.DocumentFragment?a instanceof DocumentFragment:a&&11===a.nodeType}function f(a,b,c){"string"===typeof b.require?T||z.require?(T||z.require)([b.require],c):a("Uses require, but no AMD loader is present"):c(b)}function g(a){return function(b){throw Error("Component '"+
a+"': "+b);}}var h={};a.i.register=function(b,c){if(!c)throw Error("Invalid configuration for "+b);if(a.i.sb(b))throw Error("Component "+b+" is already registered");h[b]=c};a.i.sb=function(a){return Object.prototype.hasOwnProperty.call(h,a)};a.i.unregister=function(b){delete h[b];a.i.Ac(b)};a.i.Ec={getConfig:function(b,c){c(a.i.sb(b)?h[b]:null)},loadComponent:function(a,c,d){var e=g(a);f(e,c,function(c){b(a,e,c,d)})},loadTemplate:function(b,c,f){b=g(b);if("string"===typeof c)f(a.a.ta(c));else if(c instanceof
Array)f(c);else if(e(c))f(a.a.la(c.childNodes));else if(c.element)if(c=c.element,z.HTMLElement?c instanceof HTMLElement:c&&c.tagName&&1===c.nodeType)f(d(c));else if("string"===typeof c){var h=w.getElementById(c);h?f(d(h)):b("Cannot find element with ID "+c)}else b("Unknown element type: "+c);else b("Unknown template value: "+c)},loadViewModel:function(a,b,d){c(g(a),b,d)}};var m="createViewModel";a.b("components.register",a.i.register);a.b("components.isRegistered",a.i.sb);a.b("components.unregister",
a.i.unregister);a.b("components.defaultLoader",a.i.Ec);a.i.loaders.push(a.i.Ec);a.i.cd=h})();(function(){function b(b,e){var f=b.getAttribute("params");if(f){var f=c.parseBindingsString(f,e,b,{valueAccessors:!0,bindingParams:!0}),f=a.a.Ha(f,function(c){return a.o(c,null,{l:b})}),g=a.a.Ha(f,function(c){var e=c.w();return c.ja()?a.o({read:function(){return a.a.c(c())},write:a.Ya(e)&&function(a){c()(a)},l:b}):e});Object.prototype.hasOwnProperty.call(g,"$raw")||(g.$raw=f);return g}return{$raw:{}}}a.i.getComponentNameForNode=
function(b){var c=a.a.P(b);if(a.i.sb(c)&&(-1!=c.indexOf("-")||"[object HTMLUnknownElement]"==""+b||8>=a.a.W&&b.tagName===c))return c};a.i.sc=function(c,e,f,g){if(1===e.nodeType){var h=a.i.getComponentNameForNode(e);if(h){c=c||{};if(c.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var m={name:h,params:b(e,f)};c.component=g?function(){return m}:m}}return c};var c=new a.ga;9>a.a.W&&(a.i.register=function(a){return function(b){return a.apply(this,
arguments)}}(a.i.register),w.createDocumentFragment=function(b){return function(){var c=b(),f=a.i.cd,g;for(g in f);return c}}(w.createDocumentFragment))})();(function(){function b(b,c,d){c=c.template;if(!c)throw Error("Component '"+b+"' has no template");b=a.a.Ca(c);a.h.ua(d,b)}function c(a,b,c){var d=a.createViewModel;return d?d.call(a,b,c):b}var d=0;a.f.component={init:function(e,f,g,h,m){function l(){var a=k&&k.dispose;"function"===typeof a&&a.call(k);n&&n.s();q=k=n=null}var k,q,n,r=a.a.la(a.h.childNodes(e));
a.h.Ea(e);a.a.I.za(e,l);a.o(function(){var g=a.a.c(f()),h,u;"string"===typeof g?h=g:(h=a.a.c(g.name),u=a.a.c(g.params));if(!h)throw Error("No component name specified");var p=a.j.Bb(e,m),B=q=++d;a.i.get(h,function(d){if(q===B){l();if(!d)throw Error("Unknown component '"+h+"'");b(h,d,e);var f=c(d,u,{element:e,templateNodes:r});d=p.createChildContext(f,{extend:function(a){a.$component=f;a.$componentTemplateNodes=r}});f&&f.koDescendantsComplete&&(n=a.j.subscribe(e,a.j.oa,f.koDescendantsComplete,f));
k=f;a.Pa(d,e)}})},null,{l:e});return{controlsDescendantBindings:!0}}};a.h.ea.component=!0})();var V={"class":"className","for":"htmlFor"};a.f.attr={update:function(b,c){var d=a.a.c(c())||{};a.a.O(d,function(c,d){d=a.a.c(d);var g=c.indexOf(":"),g="lookupNamespaceURI"in b&&0<g&&b.lookupNamespaceURI(c.substr(0,g)),h=!1===d||null===d||d===p;h?g?b.removeAttributeNS(g,c):b.removeAttribute(c):d=d.toString();8>=a.a.W&&c in V?(c=V[c],h?b.removeAttribute(c):b[c]=d):h||(g?b.setAttributeNS(g,c,d):b.setAttribute(c,
d));"name"===c&&a.a.Xc(b,h?"":d)})}};(function(){a.f.checked={after:["value","attr"],init:function(b,c,d){function e(){var e=b.checked,f=g();if(!a.U.rb()&&(e||!m&&!a.U.pa())){var l=a.v.K(c);if(k){var n=q?l.w():l,B=r;r=f;B!==f?e&&(a.a.Oa(n,f,!0),a.a.Oa(n,B,!1)):a.a.Oa(n,f,e);q&&a.Ya(l)&&l(n)}else h&&(f===p?f=e:e||(f=p)),a.m.$a(l,d,"checked",f,!0)}}function f(){var d=a.a.c(c()),e=g();k?(b.checked=0<=a.a.A(d,e),r=e):b.checked=h&&e===p?!!d:g()===d}var g=a.wb(function(){if(d.has("checkedValue"))return a.a.c(d.get("checkedValue"));
if(n)return d.has("value")?a.a.c(d.get("value")):b.value}),h="checkbox"==b.type,m="radio"==b.type;if(h||m){var l=c(),k=h&&a.a.c(l)instanceof Array,q=!(k&&l.push&&l.splice),n=m||k,r=k?g():p;m&&!b.name&&a.f.uniqueName.init(b,function(){return!0});a.o(e,null,{l:b});a.a.H(b,"click",e);a.o(f,null,{l:b});l=p}}};a.m.va.checked=!0;a.f.checkedValue={update:function(b,c){b.value=a.a.c(c())}}})();a.f["class"]={update:function(b,c){var d=a.a.Cb(a.a.c(c()));a.a.Eb(b,b.__ko__cssValue,!1);b.__ko__cssValue=d;a.a.Eb(b,
d,!0)}};a.f.css={update:function(b,c){var d=a.a.c(c());null!==d&&"object"==typeof d?a.a.O(d,function(c,d){d=a.a.c(d);a.a.Eb(b,c,d)}):a.f["class"].update(b,c)}};a.f.enable={update:function(b,c){var d=a.a.c(c());d&&b.disabled?b.removeAttribute("disabled"):d||b.disabled||(b.disabled=!0)}};a.f.disable={update:function(b,c){a.f.enable.update(b,function(){return!a.a.c(c())})}};a.f.event={init:function(b,c,d,e,f){var g=c()||{};a.a.O(g,function(g){"string"==typeof g&&a.a.H(b,g,function(b){var l,k=c()[g];
if(k){try{var q=a.a.la(arguments);e=f.$data;q.unshift(e);l=k.apply(e,q)}finally{!0!==l&&(b.preventDefault?b.preventDefault():b.returnValue=!1)}!1===d.get(g+"Bubble")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.f.foreach={Qc:function(b){return function(){var c=b(),d=a.a.$b(c);if(!d||"number"==typeof d.length)return{foreach:c,templateEngine:a.ba.Na};a.a.c(c);return{foreach:d.data,as:d.as,noChildContext:d.noChildContext,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,
beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.ba.Na}}},init:function(b,c){return a.f.template.init(b,a.f.foreach.Qc(c))},update:function(b,c,d,e,f){return a.f.template.update(b,a.f.foreach.Qc(c),d,e,f)}};a.m.Ra.foreach=!1;a.h.ea.foreach=!0;a.f.hasfocus={init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var f=b.ownerDocument;if("activeElement"in f){var g;try{g=f.activeElement}catch(k){g=f.body}e=g===b}f=c();a.m.$a(f,
d,"hasfocus",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var f=e.bind(null,!0),g=e.bind(null,!1);a.a.H(b,"focus",f);a.a.H(b,"focusin",f);a.a.H(b,"blur",g);a.a.H(b,"focusout",g);b.__ko_hasfocusLastValue=!1},update:function(b,c){var d=!!a.a.c(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===d||(d?b.focus():b.blur(),!d&&b.__ko_hasfocusLastValue&&b.ownerDocument.body.focus(),a.v.K(a.a.Fb,null,[b,d?"focusin":"focusout"]))}};a.m.va.hasfocus=!0;a.f.hasFocus=a.f.hasfocus;a.m.va.hasFocus=
"hasfocus";a.f.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.dc(b,c())}};(function(){function b(b,d,e){a.f[b]={init:function(b,c,h,m,l){var k,q,n={},r,p,A;if(d){m=h.get("as");var u=h.get("noChildContext");A=!(m&&u);n={as:m,noChildContext:u,exportDependencies:A}}p=(r="render"==h.get("completeOn"))||h.has(a.j.oa);a.o(function(){var h=a.a.c(c()),m=!e!==!h,u=!q,t;if(A||m!==k){p&&(l=a.j.Bb(b,l));if(m){if(!d||A)n.dataDependency=a.U.o();t=d?l.createChildContext("function"==
typeof h?h:c,n):a.U.pa()?l.extend(null,n):l}u&&a.U.pa()&&(q=a.a.Ca(a.h.childNodes(b),!0));m?(u||a.h.ua(b,a.a.Ca(q)),a.Pa(t,b)):(a.h.Ea(b),r||a.j.Ga(b,a.j.T));k=m}},null,{l:b});return{controlsDescendantBindings:!0}}};a.m.Ra[b]=!1;a.h.ea[b]=!0}b("if");b("ifnot",!1,!0);b("with",!0)})();a.f.let={init:function(b,c,d,e,f){c=f.extend(c);a.Pa(c,b);return{controlsDescendantBindings:!0}}};a.h.ea.let=!0;var Q={};a.f.options={init:function(b){if("select"!==a.a.P(b))throw Error("options binding applies only to SELECT elements");
for(;0<b.length;)b.remove(0);return{controlsDescendantBindings:!0}},update:function(b,c,d){function e(){return a.a.fb(b.options,function(a){return a.selected})}function f(a,b,c){var d=typeof b;return"function"==d?b(a):"string"==d?a[b]:c}function g(c,e){if(y&&k)a.u.ya(b,a.a.c(d.get("value")),!0);else if(r.length){var f=0<=a.a.A(r,a.u.L(e[0]));a.a.Yc(e[0],f);y&&!f&&a.v.K(a.a.Fb,null,[b,"change"])}}var h=b.multiple,m=0!=b.length&&h?b.scrollTop:null,l=a.a.c(c()),k=d.get("valueAllowUnset")&&d.has("value"),
q=d.get("optionsIncludeDestroyed");c={};var n,r=[];k||(h?r=a.a.Mb(e(),a.u.L):0<=b.selectedIndex&&r.push(a.u.L(b.options[b.selectedIndex])));l&&("undefined"==typeof l.length&&(l=[l]),n=a.a.fb(l,function(b){return q||b===p||null===b||!a.a.c(b._destroy)}),d.has("optionsCaption")&&(l=a.a.c(d.get("optionsCaption")),null!==l&&l!==p&&n.unshift(Q)));var y=!1;c.beforeRemove=function(a){b.removeChild(a)};l=g;d.has("optionsAfterRender")&&"function"==typeof d.get("optionsAfterRender")&&(l=function(b,c){g(0,c);
a.v.K(d.get("optionsAfterRender"),null,[c[0],b!==Q?b:p])});a.a.cc(b,n,function(c,e,g){g.length&&(r=!k&&g[0].selected?[a.u.L(g[0])]:[],y=!0);e=b.ownerDocument.createElement("option");c===Q?(a.a.Ab(e,d.get("optionsCaption")),a.u.ya(e,p)):(g=f(c,d.get("optionsValue"),c),a.u.ya(e,a.a.c(g)),c=f(c,d.get("optionsText"),g),a.a.Ab(e,c));return[e]},c,l);a.v.K(function(){if(k)a.u.ya(b,a.a.c(d.get("value")),!0);else{var c;h?c=r.length&&e().length<r.length:c=r.length&&0<=b.selectedIndex?a.u.L(b.options[b.selectedIndex])!==
r[0]:r.length||0<=b.selectedIndex;c&&a.a.Fb(b,"change")}});a.a.vd(b);m&&20<Math.abs(m-b.scrollTop)&&(b.scrollTop=m)}};a.f.options.Yb=a.a.g.Z();a.f.selectedOptions={after:["options","foreach"],init:function(b,c,d){a.a.H(b,"change",function(){var e=c(),f=[];a.a.C(b.getElementsByTagName("option"),function(b){b.selected&&f.push(a.u.L(b))});a.m.$a(e,d,"selectedOptions",f)})},update:function(b,c){if("select"!=a.a.P(b))throw Error("values binding applies only to SELECT elements");var d=a.a.c(c()),e=b.scrollTop;
d&&"number"==typeof d.length&&a.a.C(b.getElementsByTagName("option"),function(b){var c=0<=a.a.A(d,a.u.L(b));b.selected!=c&&a.a.Yc(b,c)});b.scrollTop=e}};a.m.va.selectedOptions=!0;a.f.style={update:function(b,c){var d=a.a.c(c()||{});a.a.O(d,function(c,d){d=a.a.c(d);if(null===d||d===p||!1===d)d="";if(v)v(b).css(c,d);else if(/^--/.test(c))b.style.setProperty(c,d);else{c=c.replace(/-(\w)/g,function(a,b){return b.toUpperCase()});var g=b.style[c];b.style[c]=d;d===g||b.style[c]!=g||isNaN(d)||(b.style[c]=
d+"px")}})}};a.f.submit={init:function(b,c,d,e,f){if("function"!=typeof c())throw Error("The value for a submit binding must be a function");a.a.H(b,"submit",function(a){var d,e=c();try{d=e.call(f.$data,b)}finally{!0!==d&&(a.preventDefault?a.preventDefault():a.returnValue=!1)}})}};a.f.text={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.Ab(b,c())}};a.h.ea.text=!0;(function(){if(z&&z.navigator){var b=function(a){if(a)return parseFloat(a[1])},c=z.navigator.userAgent,
d,e,f,g,h;(d=z.opera&&z.opera.version&&parseInt(z.opera.version()))||(h=b(c.match(/Edge\/([^ ]+)$/)))||b(c.match(/Chrome\/([^ ]+)/))||(e=b(c.match(/Version\/([^ ]+) Safari/)))||(f=b(c.match(/Firefox\/([^ ]+)/)))||(g=a.a.W||b(c.match(/MSIE ([^ ]+)/)))||(g=b(c.match(/rv:([^ )]+)/)))}if(8<=g&&10>g)var m=a.a.g.Z(),l=a.a.g.Z(),k=function(b){var c=this.activeElement;(c=c&&a.a.g.get(c,l))&&c(b)},q=function(b,c){var d=b.ownerDocument;a.a.g.get(d,m)||(a.a.g.set(d,m,!0),a.a.H(d,"selectionchange",k));a.a.g.set(b,
l,c)};a.f.textInput={init:function(b,c,l){function k(c,d){a.a.H(b,c,d)}function m(){var d=a.a.c(c());if(null===d||d===p)d="";L!==p&&d===L?a.a.setTimeout(m,4):b.value!==d&&(x=!0,b.value=d,x=!1,v=b.value)}function t(){w||(L=b.value,w=a.a.setTimeout(B,4))}function B(){clearTimeout(w);L=w=p;var d=b.value;v!==d&&(v=d,a.m.$a(c(),l,"textInput",d))}var v=b.value,w,L,z=9==a.a.W?t:B,x=!1;g&&k("keypress",B);11>g&&k("propertychange",function(a){x||"value"!==a.propertyName||z(a)});8==g&&(k("keyup",B),k("keydown",
B));q&&(q(b,z),k("dragend",t));(!g||9<=g)&&k("input",z);5>e&&"textarea"===a.a.P(b)?(k("keydown",t),k("paste",t),k("cut",t)):11>d?k("keydown",t):4>f?(k("DOMAutoComplete",B),k("dragdrop",B),k("drop",B)):h&&"number"===b.type&&k("keydown",t);k("change",B);k("blur",B);a.o(m,null,{l:b})}};a.m.va.textInput=!0;a.f.textinput={preprocess:function(a,b,c){c("textInput",a)}}})();a.f.uniqueName={init:function(b,c){if(c()){var d="ko_unique_"+ ++a.f.uniqueName.qd;a.a.Xc(b,d)}}};a.f.uniqueName.qd=0;a.f.using={init:function(b,
c,d,e,f){var g;d.has("as")&&(g={as:d.get("as"),noChildContext:d.get("noChildContext")});c=f.createChildContext(c,g);a.Pa(c,b);return{controlsDescendantBindings:!0}}};a.h.ea.using=!0;a.f.value={after:["options","foreach"],init:function(b,c,d){var e=a.a.P(b),f="input"==e;if(!f||"checkbox"!=b.type&&"radio"!=b.type){var g=["change"],h=d.get("valueUpdate"),m=!1,l=null;h&&("string"==typeof h&&(h=[h]),a.a.gb(g,h),g=a.a.vc(g));var k=function(){l=null;m=!1;var e=c(),f=a.u.L(b);a.m.$a(e,d,"value",f)};!a.a.W||
!f||"text"!=b.type||"off"==b.autocomplete||b.form&&"off"==b.form.autocomplete||-1!=a.a.A(g,"propertychange")||(a.a.H(b,"propertychange",function(){m=!0}),a.a.H(b,"focus",function(){m=!1}),a.a.H(b,"blur",function(){m&&k()}));a.a.C(g,function(c){var d=k;a.a.Td(c,"after")&&(d=function(){l=a.u.L(b);a.a.setTimeout(k,0)},c=c.substring(5));a.a.H(b,c,d)});var q;q=f&&"file"==b.type?function(){var d=a.a.c(c());null===d||d===p||""===d?b.value="":a.v.K(k)}:function(){var f=a.a.c(c()),g=a.u.L(b);if(null!==l&&
f===l)a.a.setTimeout(q,0);else if(f!==g||g===p)"select"===e?(g=d.get("valueAllowUnset"),a.u.ya(b,f,g),g||f===a.u.L(b)||a.v.K(k)):a.u.ya(b,f)};a.o(q,null,{l:b})}else a.eb(b,{checkedValue:c})},update:function(){}};a.m.va.value=!0;a.f.visible={update:function(b,c){var d=a.a.c(c()),e="none"!=b.style.display;d&&!e?b.style.display="":!d&&e&&(b.style.display="none")}};a.f.hidden={update:function(b,c){a.f.visible.update(b,function(){return!a.a.c(c())})}};(function(b){a.f[b]={init:function(c,d,e,f,g){return a.f.event.init.call(this,
c,function(){var a={};a[b]=d();return a},e,f,g)}}})("click");a.ca=function(){};a.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource");};a.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock");};a.ca.prototype.makeTemplateSource=function(b,c){if("string"==typeof b){c=c||w;var d=c.getElementById(b);if(!d)throw Error("Cannot find template with ID "+b);return new a.B.D(d)}if(1==b.nodeType||8==b.nodeType)return new a.B.ia(b);
throw Error("Unknown template type: "+b);};a.ca.prototype.renderTemplate=function(a,c,d,e){a=this.makeTemplateSource(a,e);return this.renderTemplateSource(a,c,d,e)};a.ca.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,c).data("isRewritten")};a.ca.prototype.rewriteTemplate=function(a,c,d){a=this.makeTemplateSource(a,d);c=c(a.text());a.text(c);a.data("isRewritten",!0)};a.b("templateEngine",a.ca);a.ic=function(){function b(b,c,d,h){b=a.m.Zb(b);
for(var m=a.m.Ra,l=0;l<b.length;l++){var k=b[l].key;if(Object.prototype.hasOwnProperty.call(m,k)){var q=m[k];if("function"===typeof q){if(k=q(b[l].value))throw Error(k);}else if(!q)throw Error("This template engine does not support the '"+k+"' binding within its templates");}}d="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+a.m.ub(b,{valueAccessors:!0})+" } })()},'"+d.toLowerCase()+"')";return h.createJavaScriptEvaluatorBlock(d)+c}var c=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,
d=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{wd:function(b,c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.ic.Kd(b,c)},d)},Kd:function(a,f){return a.replace(c,function(a,c,d,e,k){return b(k,c,d,f)}).replace(d,function(a,c){return b(c,"\x3c!-- ko --\x3e","#comment",f)})},ld:function(b,c){return a.aa.Wb(function(d,h){var m=d.nextSibling;m&&m.nodeName.toLowerCase()===c&&a.eb(m,b,h)})}}}();a.b("__tr_ambtns",a.ic.ld);(function(){a.B={};a.B.D=function(b){if(this.D=b){var c=
a.a.P(b);this.Db="script"===c?1:"textarea"===c?2:"template"==c&&b.content&&11===b.content.nodeType?3:4}};a.B.D.prototype.text=function(){var b=1===this.Db?"text":2===this.Db?"value":"innerHTML";if(0==arguments.length)return this.D[b];var c=arguments[0];"innerHTML"===b?a.a.dc(this.D,c):this.D[b]=c};var b=a.a.g.Z()+"_";a.B.D.prototype.data=function(c){if(1===arguments.length)return a.a.g.get(this.D,b+c);a.a.g.set(this.D,b+c,arguments[1])};var c=a.a.g.Z();a.B.D.prototype.nodes=function(){var b=this.D;
if(0==arguments.length){var e=a.a.g.get(b,c)||{},f=e.jb||(3===this.Db?b.content:4===this.Db?b:p);if(!f||e.hd)if(e=this.text())f=a.a.Ld(e,b.ownerDocument),this.text(""),a.a.g.set(b,c,{jb:f,hd:!0});return f}a.a.g.set(b,c,{jb:arguments[0]})};a.B.ia=function(a){this.D=a};a.B.ia.prototype=new a.B.D;a.B.ia.prototype.constructor=a.B.ia;a.B.ia.prototype.text=function(){if(0==arguments.length){var b=a.a.g.get(this.D,c)||{};b.jc===p&&b.jb&&(b.jc=b.jb.innerHTML);return b.jc}a.a.g.set(this.D,c,{jc:arguments[0]})};
a.b("templateSources",a.B);a.b("templateSources.domElement",a.B.D);a.b("templateSources.anonymousTemplate",a.B.ia)})();(function(){function b(b,c,d){var e;for(c=a.h.nextSibling(c);b&&(e=b)!==c;)b=a.h.nextSibling(e),d(e,b)}function c(c,d){if(c.length){var e=c[0],f=c[c.length-1],g=e.parentNode,h=a.ga.instance,m=h.preprocessNode;if(m){b(e,f,function(a,b){var c=a.previousSibling,d=m.call(h,a);d&&(a===e&&(e=d[0]||b),a===f&&(f=d[d.length-1]||c))});c.length=0;if(!e)return;e===f?c.push(e):(c.push(e,f),a.a.Ua(c,
g))}b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.uc(d,b)});b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.aa.bd(b,[d])});a.a.Ua(c,g)}}function d(a){return a.nodeType?a:0<a.length?a[0]:null}function e(b,e,f,h,m){m=m||{};var p=(b&&d(b)||f||{}).ownerDocument,A=m.templateEngine||g;a.ic.wd(f,A,p);f=A.renderTemplate(f,h,m,p);if("number"!=typeof f.length||0<f.length&&"number"!=typeof f[0].nodeType)throw Error("Template engine must return an array of DOM nodes");p=!1;switch(e){case "replaceChildren":a.h.ua(b,
f);p=!0;break;case "replaceNode":a.a.Wc(b,f);p=!0;break;case "ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+e);}p&&(c(f,h),m.afterRender&&a.v.K(m.afterRender,null,[f,h[m.as||"$data"]]),"replaceChildren"==e&&a.j.Ga(b,a.j.T));return f}function f(b,c,d){return a.N(b)?b():"function"===typeof b?b(c,d):b}var g;a.ec=function(b){if(b!=p&&!(b instanceof a.ca))throw Error("templateEngine must inherit from ko.templateEngine");g=b};a.bc=function(b,c,h,m,r){h=h||{};if((h.templateEngine||g)==
p)throw Error("Set a template engine before calling renderTemplate");r=r||"replaceChildren";if(m){var y=d(m);return a.$(function(){var g=c&&c instanceof a.fa?c:new a.fa(c,null,null,null,{exportDependencies:!0}),p=f(b,g.$data,g),g=e(m,r,p,g,h);"replaceNode"==r&&(m=g,y=d(m))},null,{Sa:function(){return!y||!a.a.Rb(y)},l:y&&"replaceNode"==r?y.parentNode:y})}return a.aa.Wb(function(d){a.bc(b,c,h,d,"replaceNode")})};a.Pd=function(b,d,g,h,m){function y(b,c){a.v.K(a.a.cc,null,[h,b,u,g,t,c]);a.j.Ga(h,a.j.T)}
function t(a,b){c(b,v);g.afterRender&&g.afterRender(b,a);v=null}function u(a,c){v=m.createChildContext(a,{as:B,noChildContext:g.noChildContext,extend:function(a){a.$index=c;B&&(a[B+"Index"]=c)}});var d=f(b,a,v);return e(h,"ignoreTargetNode",d,v,g)}var v,B=g.as,w=!1===g.includeDestroyed||a.options.foreachHidesDestroyed&&!g.includeDestroyed;if(w||g.beforeRemove||!a.Oc(d))return a.$(function(){var b=a.a.c(d)||[];"undefined"==typeof b.length&&(b=[b]);w&&(b=a.a.fb(b,function(b){return b===p||null===b||
!a.a.c(b._destroy)}));y(b)},null,{l:h});y(d.w());var z=d.subscribe(function(a){y(d(),a)},null,"arrayChange");z.l(h);return z};var h=a.a.g.Z(),m=a.a.g.Z();a.f.template={init:function(b,c){var d=a.a.c(c());if("string"==typeof d||d.name)a.h.Ea(b);else if("nodes"in d){d=d.nodes||[];if(a.N(d))throw Error('The "nodes" option must be a plain, non-observable array.');var e=d[0]&&d[0].parentNode;e&&a.a.g.get(e,m)||(e=a.a.Xb(d),a.a.g.set(e,m,!0));(new a.B.ia(b)).nodes(e)}else if(d=a.h.childNodes(b),0<d.length)e=
a.a.Xb(d),(new a.B.ia(b)).nodes(e);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(b,c,d,e,f){var g=c();c=a.a.c(g);d=!0;e=null;"string"==typeof c?c={}:(g=c.name,"if"in c&&(d=a.a.c(c["if"])),d&&"ifnot"in c&&(d=!a.a.c(c.ifnot)));"foreach"in c?e=a.Pd(g||b,d&&c.foreach||[],c,b,f):d?(d=f,"data"in c&&(d=f.createChildContext(c.data,{as:c.as,noChildContext:c.noChildContext,exportDependencies:!0})),e=a.bc(g||b,d,c,
b)):a.h.Ea(b);f=e;(c=a.a.g.get(b,h))&&"function"==typeof c.s&&c.s();a.a.g.set(b,h,!f||f.ja&&!f.ja()?p:f)}};a.m.Ra.template=function(b){b=a.m.Zb(b);return 1==b.length&&b[0].unknown||a.m.Hd(b,"name")?null:"This template engine does not support anonymous templates nested within its templates"};a.h.ea.template=!0})();a.b("setTemplateEngine",a.ec);a.b("renderTemplate",a.bc);a.a.Jc=function(a,c,d){if(a.length&&c.length){var e,f,g,h,m;for(e=f=0;(!d||e<d)&&(h=a[f]);++f){for(g=0;m=c[g];++g)if(h.value===m.value){h.moved=
m.index;m.moved=h.index;c.splice(g,1);e=g=0;break}e+=g}}};a.a.Ob=function(){function b(b,d,e,f,g){var h=Math.min,m=Math.max,l=[],k,p=b.length,n,r=d.length,t=r-p||1,A=p+r+1,u,v,w;for(k=0;k<=p;k++)for(v=u,l.push(u=[]),w=h(r,k+t),n=m(0,k-1);n<=w;n++)u[n]=n?k?b[k-1]===d[n-1]?v[n-1]:h(v[n]||A,u[n-1]||A)+1:n+1:k+1;h=[];m=[];t=[];k=p;for(n=r;k||n;)r=l[k][n]-1,n&&r===l[k][n-1]?m.push(h[h.length]={status:e,value:d[--n],index:n}):k&&r===l[k-1][n]?t.push(h[h.length]={status:f,value:b[--k],index:k}):(--n,--k,
g.sparse||h.push({status:"retained",value:d[n]}));a.a.Jc(t,m,!g.dontLimitMoves&&10*p);return h.reverse()}return function(a,d,e){e="boolean"===typeof e?{dontLimitMoves:e}:e||{};a=a||[];d=d||[];return a.length<d.length?b(a,d,"added","deleted",e):b(d,a,"deleted","added",e)}}();a.b("utils.compareArrays",a.a.Ob);(function(){function b(b,c,d,h,m){var l=[],k=a.$(function(){var k=c(d,m,a.a.Ua(l,b))||[];0<l.length&&(a.a.Wc(l,k),h&&a.v.K(h,null,[d,k,m]));l.length=0;a.a.gb(l,k)},null,{l:b,Sa:function(){return!a.a.jd(l)}});
return{Y:l,$:k.ja()?k:p}}var c=a.a.g.Z(),d=a.a.g.Z();a.a.cc=function(e,f,g,h,m,l){function k(b){x={Aa:b,nb:a.sa(w++)};v.push(x);t||F.push(x)}function q(b){x=r[b];w!==x.nb.w()&&D.push(x);x.nb(w++);a.a.Ua(x.Y,e);v.push(x)}function n(b,c){if(b)for(var d=0,e=c.length;d<e;d++)a.a.C(c[d].Y,function(a){b(a,d,c[d].Aa)})}f=f||[];"undefined"==typeof f.length&&(f=[f]);h=h||{};var r=a.a.g.get(e,c),t=!r,v=[],u=0,w=0,B=[],z=[],C=[],D=[],F=[],x,I=0;if(t)a.a.C(f,k);else{if(!l||r&&r._countWaitingForRemove){var E=
a.a.Mb(r,function(a){return a.Aa});l=a.a.Ob(E,f,{dontLimitMoves:h.dontLimitMoves,sparse:!0})}for(var E=0,G,H,K;G=l[E];E++)switch(H=G.moved,K=G.index,G.status){case "deleted":for(;u<K;)q(u++);H===p&&(x=r[u],x.$&&(x.$.s(),x.$=p),a.a.Ua(x.Y,e).length&&(h.beforeRemove&&(v.push(x),I++,x.Aa===d?x=null:C.push(x)),x&&B.push.apply(B,x.Y)));u++;break;case "added":for(;w<K;)q(u++);H!==p?(z.push(v.length),q(H)):k(G.value)}for(;w<f.length;)q(u++);v._countWaitingForRemove=I}a.a.g.set(e,c,v);n(h.beforeMove,D);a.a.C(B,
h.beforeRemove?a.na:a.removeNode);var M,O,P;try{P=e.ownerDocument.activeElement}catch(N){}if(z.length)for(;(E=z.shift())!=p;){x=v[E];for(M=p;E;)if((O=v[--E].Y)&&O.length){M=O[O.length-1];break}for(f=0;u=x.Y[f];M=u,f++)a.h.Vb(e,u,M)}E=0;for(z=a.h.firstChild(e);x=v[E];E++){x.Y||a.a.extend(x,b(e,g,x.Aa,m,x.nb));for(f=0;u=x.Y[f];z=u.nextSibling,M=u,f++)u!==z&&a.h.Vb(e,u,M);!x.Dd&&m&&(m(x.Aa,x.Y,x.nb),x.Dd=!0,M=x.Y[x.Y.length-1])}P&&e.ownerDocument.activeElement!=P&&P.focus();n(h.beforeRemove,C);for(E=
0;E<C.length;++E)C[E].Aa=d;n(h.afterMove,D);n(h.afterAdd,F)}})();a.b("utils.setDomNodeChildrenFromArrayMapping",a.a.cc);a.ba=function(){this.allowTemplateRewriting=!1};a.ba.prototype=new a.ca;a.ba.prototype.constructor=a.ba;a.ba.prototype.renderTemplateSource=function(b,c,d,e){if(c=(9>a.a.W?0:b.nodes)?b.nodes():null)return a.a.la(c.cloneNode(!0).childNodes);b=b.text();return a.a.ta(b,e)};a.ba.Na=new a.ba;a.ec(a.ba.Na);a.b("nativeTemplateEngine",a.ba);(function(){a.Za=function(){var a=this.Gd=function(){if(!v||
!v.tmpl)return 0;try{if(0<=v.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,e,f,g){g=g||w;f=f||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var h=b.data("precompiled");h||(h=b.text()||"",h=v.template(null,"{{ko_with $item.koBindingContext}}"+h+"{{/ko_with}}"),b.data("precompiled",h));b=[e.$data];e=v.extend({koBindingContext:e},f.templateOptions);e=v.tmpl(h,b,e);e.appendTo(g.createElement("div"));
v.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,b){w.write("<script type='text/html' id='"+a+"'>"+b+"\x3c/script>")};0<a&&(v.tmpl.tag.ko_code={open:"__.push($1 || '');"},v.tmpl.tag.ko_with={open:"with($1) {",close:"} "})};a.Za.prototype=new a.ca;a.Za.prototype.constructor=a.Za;var b=new a.Za;0<b.Gd&&a.ec(b);a.b("jqueryTmplTemplateEngine",a.Za)})()})})();})();
+69
View File
File diff suppressed because one or more lines are too long
+229
View File
@@ -0,0 +1,229 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Mi899 - Motherboard Details</title>
<link href="libs/bootstrap.min.css" rel="stylesheet" />
<link href="styles/mi899.css" rel="stylesheet" />
</head>
<body class="bg-body-tertiary">
<script src="libs/bootstrap.bundle.min.js"></script>
<script src="libs/knockout-min.js"></script>
<div>
<div class="mi899-template" href="nav.html">
<div class="mi899-spinner">
<div class="spinner-border" role="status"></div>
<span>Loading...</span>
</div>
</div>
<section>
<h1 data-bind="text: name"></h1>
</section>
<section>
<div class="row">
<div class="col-lg-2 col-md-3 col-sm-4">
<img class="img-thumbnail" data-bind="attr: { src: document.Mi899.dataRepositoryUrl + images()[0]?.Url }" />
</div>
<div class="col-lg-10 col-md-9 col-sm-8">
<ul class="nav nav-tabs" data-bind="foreach: tabs">
<li class="nav-item">
<a class="nav-link" href="javascript:" data-bind="text: $data, css: { active: $root.activeTab() == $data }, click: function(d, e) { $root.activeTab(d); }"></a>
</li>
</ul>
<div class="mi899-nav-tabs-content" data-bind="visible: activeTab() == 'Info'">
<form>
<div class="row mb-3">
<label for="txtId" class="col-sm-2 col-form-label">Id:</label>
<div class="col-sm-10">
<input type="text" readonly class="form-control" id="txtId" data-bind="value: id" />
</div>
</div>
<div class="row mb-3">
<label for="txtName" class="col-sm-2 col-form-label">Name:</label>
<div class="col-sm-10">
<input type="text" readonly class="form-control" id="txtName" data-bind="value: name" />
</div>
</div>
<div class="row mb-3">
<label for="txtBrand" class="col-sm-2 col-form-label">Brand:</label>
<div class="col-sm-10">
<input type="text" readonly class="form-control" id="txtBrand" data-bind="value: brand" />
</div>
</div>
<div class="row mb-3">
<label for="txtModel" class="col-sm-2 col-form-label">Model:</label>
<div class="col-sm-10">
<input type="text" readonly class="form-control" id="txtModel" data-bind="value: model" />
</div>
</div>
<div class="row mb-3">
<label for="txtVersion" class="col-sm-2 col-form-label">Version:</label>
<div class="col-sm-10">
<input type="text" readonly class="form-control" id="txtVersion" data-bind="value: version" />
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label">Tags:</label>
<div class="col-sm-10" data-bind="foreach: tags">
<span class="badge text-bg-secondary" data-bind="text: $data"></span>
</div>
</div>
<div class="row mb-3">
<label for="txtDescription" class="col-sm-2 col-form-label">Description:</label>
<div class="col-sm-10">
<textarea type="text" readonly class="form-control" id="txtDescription" data-bind="value: description"></textarea>
</div>
</div>
<div class="row mb-3">
<label class="col-sm-2 col-form-label">Tools:</label>
<div class="col-sm-10" data-bind="foreach: tools">
<a class="btn btn-info" data-bind="text: Name, attr: { href: 'tool.html?m=' + $root.id() + '&t=' + $data.Id }"></a>
</div>
</div>
</form>
</div>
<div class="mi899-nav-tabs-content" data-bind="visible: activeTab() == 'Images'">
<table class="table table-striped table-bordered table-sm">
<thead>
<tr>
<th class="mi899-img-motherboard-thumbnail">Image</th>
<th>Name</th>
<th>Path</th>
</tr>
</thead>
<tbody data-bind="foreach: images">
<tr>
<td class="mi899-img-motherboard-thumbnail">
<img class="img-thumbnail mi899-img-motherboard-thumbnail" data-bind="attr: { src: document.Mi899.dataRepositoryUrl + Url }" />
</td>
<td data-bind="text: Name"></td>
<td>
<a class="btn btn-link" data-bind="attr: { href: document.Mi899.dataRepositoryUrl + Url }, text: Url" target="_blank"></a>
</td>
</tr>
</tbody>
</table>
</div>
<div class="mi899-nav-tabs-content" data-bind="visible: activeTab() == 'BIOS'">
<table class="table table-striped table-bordered table-sm">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Properties</th>
<th>Chipsets</th>
<th>Path</th>
</tr>
</thead>
<tbody data-bind="foreach: bios">
<tr>
<td data-bind="text: Id"></td>
<td data-bind="text: Name"></td>
<td data-bind="foreach: PropertiesArray" class="fs-7">
<div data-bind="text: $data"></div>
</td>
<td data-bind="foreach: Chipsets">
<span class="badge text-bg-secondary" data-bind="text: $data"></span>
</td>
<td>
<a class="btn btn-link" data-bind="attr: { href: DownloadUrl }, text: FileName" target="_blank"></a>
</td>
</tr>
</tbody>
</table>
</div>
<div class="mi899-nav-tabs-content" data-bind="visible: activeTab() == 'Links'">
<table class="table table-striped table-bordered table-sm">
<thead>
<tr>
<th>Author</th>
<th>Name</th>
<th>URL</th>
</tr>
</thead>
<tbody data-bind="foreach: links">
<tr>
<td data-bind="text: Author"></td>
<td data-bind="text: Name"></td>
<td>
<a class="btn btn-link" rel="nofollow" data-bind="attr: { href: Url }, text: Url" target="_blank"></a>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</section>
</div>
<div class="mi899-template" href="footer.html">
<div class="mi899-spinner">
<div class="spinner-border" role="status"></div>
<span>Loading...</span>
</div>
</div>
<script>
document.mi899NavPage = "motherboards.html";
</script>
<script src="scripts/mi899.js"></script>
<script>
const ViewModel = function () {
this.id = ko.observable("");
this.name = ko.observable("Loading...");
this.brand = ko.observable("");
this.model = ko.observable("");
this.version = ko.observable("");
this.description = ko.observable("");
this.tags = ko.observableArray([]);
this.images = ko.observableArray([]);
this.bios = ko.observableArray([]);
this.links = ko.observableArray([]);
this.tools = ko.observableArray([]);
this.tabs = ["Info", "Images", "BIOS", "Links"];
this.activeTab = ko.observable(this.tabs[0]);
};
const viewModel = new ViewModel();
ko.applyBindings(viewModel);
fetch(document.Mi899.modelUrl)
.then(r => r.json())
.then(model => {
const id = new URL(document.URL).searchParams.get("m");
const motherboard = model.Motherboards.filter((x) => x.Id == id)[0];
if (!motherboard) {
viewModel.id("Not found");
} else {
viewModel.id(motherboard.Id);
viewModel.name(motherboard.Name);
viewModel.brand(motherboard.Brand);
viewModel.model(motherboard.Model);
viewModel.version(motherboard.Version);
viewModel.description(motherboard.Description);
viewModel.tags(motherboard.Tags);
viewModel.images(motherboard.Images);
viewModel.bios([]);
viewModel.links(motherboard.Links);
viewModel.tools(model.Tools.filter(x => motherboard.ToolIds.indexOf(x.Id) >= 0));
const bios = model.Bioses.filter(x => x.MotherboardIds.indexOf(motherboard.Id) >= 0);
for (let i = 0; i < bios.length; i++) {
bios[i].PropertiesArray = [];
for (let p in bios[i].Properties) {
bios[i].PropertiesArray.push(p + ": " + bios[i].Properties[p]);
}
}
viewModel.bios(bios);
document.title = "Mi899 - " + motherboard.Name;
}
});
</script>
</body>
</html>
+89
View File
@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Mi899 - Explore Motherboards</title>
<link href="libs/bootstrap.min.css" rel="stylesheet" />
<link href="styles/mi899.css" rel="stylesheet" />
</head>
<body class="bg-body-tertiary">
<script src="libs/bootstrap.bundle.min.js"></script>
<script src="libs/knockout-min.js"></script>
<div>
<div class="mi899-template" href="nav.html">
<div class="mi899-spinner">
<div class="spinner-border" role="status"></div>
<span>Loading...</span>
</div>
</div>
<section>
<form class="form-floating">
<select class="form-select" data-bind="options: brands, selectedOptions: selectedBrands" id="ddlBrand"></select>
<label for="ddlBrand">Explore motherboards by brand</label>
</form>
</section>
<section>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th class="mi899-img-motherboard-thumbnail"></th>
<th>Name</th>
<th>Version</th>
<th>Description</th>
<th>Tags</th>
</tr>
</thead>
<tbody data-bind="foreach: selectedMotherboards">
<tr>
<td class="mi899-img-motherboard-thumbnail">
<img class="img-thumbnail mi899-img-motherboard-thumbnail" data-bind="attr: { src: document.Mi899.dataRepositoryUrl + Images[0]?.Url }" />
</td>
<td>
<a data-bind="text: Name, attr: { href: 'motherboard.html?m=' + $data.Id }"></a>
</td>
<td data-bind="text: $data?.Version"></td>
<td data-bind="text: $data?.Description"></td>
<td data-bind="foreach: $data?.Tags">
<span class="badge text-bg-secondary" data-bind="text: $data"></span>
</td>
</tr>
</tbody>
</table>
</section>
</div>
<div class="mi899-template" href="footer.html">
<div class="mi899-spinner">
<div class="spinner-border" role="status"></div>
<span>Loading...</span>
</div>
</div>
<script src="scripts/mi899.js"></script>
<script>
const ViewModel = function () {
this.brands = ko.observableArray([]);
this.motherboards = ko.observableArray([]);
this.selectedBrands = ko.observableArray([]);
this.selectedMotherboards = ko.pureComputed(() => {
const brand = this.selectedBrands()[0];
return this.motherboards().filter(x => x.Brand == brand);
});
};
const viewModel = new ViewModel();
ko.applyBindings(viewModel);
fetch(document.Mi899.modelUrl)
.then(r => r.json())
.then(model => {
const brands = [... new Set(model.Motherboards.map(x => x.Brand))];
brands.sort();
viewModel.brands(brands);
viewModel.selectedBrands(["Machinist"]);
viewModel.motherboards(model.Motherboards);
});
</script>
</body>
</html>
+41
View File
@@ -0,0 +1,41 @@
<nav class="navbar navbar-expand-lg mi899-main-nav">
<div class="collapse navbar-collapse fs-4">
<ul class="navbar-nav" style="width: 100%;">
<li class="nav-item">
<a class="nav-link" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="motherboards.html">Motherboards</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
Help
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="https://miyconst.github.io/hardware/cpu/intel/2023/11/18/tbu-s3turbotool.html" target="_blank">Xeon E5 V3 Turbo Boost Unlock with S3TurboTool</a></li>
<li><a class="dropdown-item" href="https://youtu.be/mIqep7v2xCY">The easiest way to tighten the RAM Timings</a></li>
<li><a class="dropdown-item" href="https://youtu.be/4qX2zihB6UE">CH341a minimal usage guide | how to read & write a motherboard BIOS</a></li>
<li><a class="dropdown-item" href="https://youtu.be/vcJDWMpxpjE">Resizable BAR (ReBar) on LGA 2011-3 X99</a></li>
<li><a class="dropdown-item" href="https://www.station-drivers.com/index.php/en-us/forum/realtek-hda-uad-drivers-firmwares-utilities/24-realtek-hda-uah-component-drivers">Realtek High Definition Audio Drivers</a></li>
<li><a class="dropdown-item" href="https://miyconst.github.io/hardware/2025/09/22/tpm2.0-machinist-x99.html">TPM 2.0 modules for Chinese X99 motherboards - Q/A</a></li>
</ul>
</li>
<li style="flex-grow: 1;"></li>
<li class="nav-item dropdown pull-right">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
Buy X99 TPM 2.0
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<!--<a class="dropdown-item" href="#">Another action</a>-->
<div class="fs-6" style="padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);">
I am not affiliated with or responsible for any of the linked TPM 2.0 modules.
</div>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="https://tpm2.com.br/" rel="nofollow" target="_blank" title="Opens in a new tab">🇧🇷 In Brazil: tpm2.com.br</a>
<a class="dropdown-item" href="https://www.wallapop.com/user/manuelm-471801574" rel="nofollow" target="_blank" title="Opens in a new tab">🇪🇸 In Spain: Flashchip</a>
</div>
</li>
</ul>
</div>
</nav>
<hr />
+38
View File
@@ -0,0 +1,38 @@
document.Mi899 = {
dataRepositoryUrl: "https://raw.githubusercontent.com/miyconst/Mi899/refs/heads/master/src/Mi899.Data/",
modelUrl: "https://raw.githubusercontent.com/miyconst/Mi899/refs/heads/master/src/Mi899.Data/Model.json",
i18nUrl: "https://raw.githubusercontent.com/miyconst/Mi899/refs/heads/master/src/Mi899.Data/I18n.json",
readmeUrl: "https://raw.githubusercontent.com/miyconst/Mi899/refs/heads/master/src/Mi899/README.md"
};
{
const activateNav = function () {
const navs = document.querySelectorAll("nav a.nav-link");
const url = document.URL;
Array.prototype.forEach.call(navs, (a) => {
const href = a.getAttribute("href");
if (url.endsWith(href) || href == document.mi899NavPage) {
a.classList.add("active");
a.classList.add("fw-bold");
}
});
};
const templates = document.querySelectorAll("div.mi899-template");
Array.prototype.forEach.call(templates, (div) => {
const href = div.getAttribute("href");
fetch(href)
.then(r => r.text())
.then(html => {
div.innerHTML = html;
div.setAttribute("loaded", "");
if (href == "nav.html") {
activateNav();
}
});
});
}
+62
View File
@@ -0,0 +1,62 @@
body {
padding: 0px 20px;
display: flex;
flex-direction: column;
min-height: 100vh;
box-sizing: border-box;
}
body div:first-of-type {
flex-grow: 1;
}
footer {
font-family: Consolas, monospace;
}
footer hr {
margin-bottom: 0px;
}
section {
margin-bottom: 20px;
}
table {
table-layout: fixed;
width: 100%;
}
.fs-7 {
font-size: 0.8rem !important;
}
nav.mi899-main-nav + hr {
margin-top: 0px;
}
td.mi899-img-motherboard-thumbnail,
th.mi899-img-motherboard-thumbnail {
max-width: 170px;
width: 170px;
overflow: hidden;
text-overflow: ellipsis;
white-space: normal;
}
img.mi899-img-motherboard-thumbnail {
width: 150px;
}
div.mi899-nav-tabs-content {
padding: 15px;
background-color: white;
border: 1px solid rgb(222, 226, 230);
border-top: none;
}
div.mi899-spinner {
display: flex;
vertical-align: middle;
gap: 15px;
}
+317
View File
@@ -0,0 +1,317 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Mi899 - Motherboard Operation</title>
<link href="libs/bootstrap.min.css" rel="stylesheet" />
<link href="styles/mi899.css" rel="stylesheet" />
</head>
<body class="bg-body-tertiary">
<script src="libs/bootstrap.bundle.min.js"></script>
<script src="libs/jszip.min.js"></script>
<script src="libs/knockout-min.js"></script>
<script src="libs/marked.min.js"></script>
<div>
<div class="mi899-template" href="nav.html">
<div class="mi899-spinner">
<div class="spinner-border" role="status"></div>
<span>Loading...</span>
</div>
</div>
<section>
<div class="row">
<div class="col-6">
<div class="row">
<div class="col-6">
<h1 class="text-center">
<span data-bind="text: motherboard.name"></span>
<a data-bind="attr: { href: 'motherboard.html?m=' + motherboard.id() }" class="btn btn-link fs-6">Back</a>
</h1>
<img class="img-thumbnail" data-bind="attr: { src: motherboard.imageUrl }" />
</div>
<div class="col-6">
<form class="form-floating mb-3">
<input type="text" readonly class="form-control" data-bind="value: motherboard.version" id="txtMotherboardVersion" />
<label for="txtMotherboardVersion">Motherboard Version:</label>
</form>
<form class="form-floating mb-3">
<textarea type="text" readonly class="form-control" data-bind="value: motherboard.description" id="txtMotherboardDescription" style="height: 100px; resize: vertical;"></textarea>
<label for="txtMotherboardDescription">Motherboard Description:</label>
</form>
<form class="form-floating mb-3">
<select class="form-select" data-bind="options: bios.list, selectedOptions: bios.selectedIds, optionsText: 'Name', optionsValue: 'Id'" id="ddlBios"></select>
<label for="ddlBios">BIOS:</label>
</form>
<form class="form-floating mb-3" data-bind="with: bios.selected">
<textarea type="text" readonly class="form-control fs-7" data-bind="value: PropertiesText" id="txtBiosProperties" style="height: 200px; resize: vertical;"></textarea>
<label for="txtBiosProperties">BIOS Properties:</label>
</form>
<form class="form-floating mb-3" data-bind="with: bios.selected">
<textarea type="text" readonly class="form-control" data-bind="value: Description" id="txtBiosDescription" style="height: 100px; resize: vertical;"></textarea>
<label for="txtBiosDescription">BIOS Description:</label>
</form>
<form class="form-floating mb-3">
<input type="text" readonly class="form-control" data-bind="value: tool.name" id="txtToolName" />
<label for="txtToolName">Tool Name:</label>
</form>
<form class="form-floating mb-3">
<input type="text" readonly class="form-control" data-bind="value: tool.version" id="txtToolVersion" />
<label for="txtToolVersion">Tool Version:</label>
</form>
<div>
<button class="btn btn-success" data-bind="click: btnDumpBiosClick, disable: btnDumpBiosDisable">
<span class="spinner-border spinner-border-sm" data-bind="visible: btnDumpBiosDisable"></span>
<span>Dump current BIOS</span>
</button>
<button class="btn btn-danger" data-bind="click: btnFlashBiosClick, disable: btnFlashBiosDisable, hidden: bios.isCommercial">
<span class="spinner-border spinner-border-sm" data-bind="visible: btnFlashBiosDisable"></span>
<span>Flash selected BIOS</span>
</button>
<a class="btn btn-info" data-bind="visible: bios.isCommercial, attr: { href: bios.downloadUrl }" target="_blank" rel="nofollow">
<span>Open commercial BIOS info page</span>
</a>
</div>
</div>
</div>
</div>
<div class="col-6">
<div id="divInfoContent">
<div class="mi899-spinner">
<div class="spinner-border" role="status"></div>
<span>Loading...</span>
</div>
</div>
</div>
</div>
</section>
</div>
<div class="mi899-template" href="footer.html">
<div class="mi899-spinner">
<div class="spinner-border" role="status"></div>
<span>Loading...</span>
</div>
</div>
<script>
document.mi899NavPage = "motherboards.html";
</script>
<script src="scripts/mi899.js"></script>
<script>
const getCurrentDateAsString = function () {
const d = new Date();
const s =
d.getFullYear() +
String(d.getMonth() + 1).padStart(2, "0") +
String(d.getDate()).padStart(2, "0") + "-" +
String(d.getHours()).padStart(2, "0") +
String(d.getMinutes()).padStart(2, "0") +
String(d.getSeconds()).padStart(2, "0");
return s;
};
const ViewModel = function () {
this.motherboard = {
id: ko.observable(""),
name: ko.observable("Loading..."),
version: ko.observable(""),
description: ko.observable(""),
imageUrl: ko.observable("")
};
this.tool = {
name: ko.observable("Loading..."),
version: ko.observable("")
};
this.bios = {
list: ko.observableArray([]),
selectedIds: ko.observableArray([]),
selected: ko.pureComputed(() => {
const id = this.bios.selectedIds()[0];
const selected = this.bios.list().filter((x) => x.Id == id)[0];
return selected;
}),
isCommercial: ko.pureComputed(() => {
const bios = this.bios.selected();
return !!bios?.IsCommercial;
}),
downloadUrl: ko.pureComputed(() => {
const bios = this.bios.selected();
return bios?.DownloadUrl;
})
};
this.btnDumpBiosDisable = ko.observable(false);
this.btnFlashBiosDisable = ko.observable(false);
this.writeScriptHeader = function (text, dateString, bios) {
text.push("@echo off");
text.push(":: Mi899.Online - " + dateString);
text.push(":: Motherboard: " + this.motherboard.name() + " " + this.motherboard.version());
if (bios)
text.push(":: BIOS: " + bios.Name);
text.push(":: Tool: " + this.tool.name() + " " + this.tool.version());
text.push("");
text.push("cd /d %~dp0");
}.bind(this);
this.writeScriptFooter = function (text) {
text.push("");
text.push("echo Thank you for using Mi899.Online.");
text.push("PAUSE");
}.bind(this);
this.btnDumpBiosClick = async function () {
const dateString = getCurrentDateAsString();
this.btnDumpBiosDisable(true);
// Download and load tool ZIP.
const toolResp = await fetch(document.Mi899.dataRepositoryUrl + this.tool.fileName);
const toolData = await toolResp.arrayBuffer();
const toolZip = await JSZip.loadAsync(toolData);
// Generate dump.bat file.
const biosFileName = this.motherboard.id() + "-" + dateString + ".rom";
const text = [];
this.writeScriptHeader(text, dateString, null);
text.push(this.tool.dumpCommand.replace("{0}", biosFileName));
this.writeScriptFooter(text);
const textContent = text.join("\r\n");
// Add dump.bat file to ZIP.
toolZip.file("dump.bat", textContent);
// Generate final ZIP and trigger download.
const finalZipBlob = await toolZip.generateAsync({ type: "blob" });
const url = URL.createObjectURL(finalZipBlob);
const a = document.createElement("a");
a.href = url;
a.download = this.motherboard.id() + "-" + dateString + "-dump-bios.zip";
a.click();
URL.revokeObjectURL(url);
this.btnDumpBiosDisable(false);
}.bind(this);
this.btnFlashBiosClick = async function () {
const bios = this.bios.selected();
const dateString = getCurrentDateAsString();
if (!bios) {
console.warn("No BIOS selected.");
return;
}
this.btnFlashBiosDisable(true);
// Download and load BIOS ZIP.
const biosUrl = bios.DownloadUrl.replace("https://github.com/miyconst/Mi899/raw/master/src/Mi899.Data/", document.Mi899.dataRepositoryUrl);
const biosResp = await fetch(biosUrl);
const biosData = await biosResp.arrayBuffer();
const biosZip = await JSZip.loadAsync(biosData);
// Download and load tool ZIP.
const toolResp = await fetch(document.Mi899.dataRepositoryUrl + this.tool.fileName);
const toolData = await toolResp.arrayBuffer();
const toolZip = await JSZip.loadAsync(toolData);
let biosFileName = "";
// Extract name of the binary BIOS file.
// It shall be a single file.
biosZip.forEach((path, _) => {
biosFileName = path;
});
// Generate flash.bat file.
const text = [];
this.writeScriptHeader(text, dateString, bios);
text.push(this.tool.flashCommand.replace("{0}", biosFileName));
this.writeScriptFooter(text);
const textContent = text.join("\r\n");
// Add flash.bat file to ZIP.
biosZip.file("flash.bat", textContent);
// Move all files from the tool ZIP to the BIOS ZIP.
toolZip.forEach((path, file) => {
biosZip.file(path, file.async("arraybuffer"));
});
// Generate final ZIP and trigger download.
const finalZipBlob = await biosZip.generateAsync({ type: "blob" });
const url = URL.createObjectURL(finalZipBlob);
const a = document.createElement("a");
a.href = url;
a.download = this.motherboard.id() + "-" + dateString + "-flash-bios.zip";
a.click();
URL.revokeObjectURL(url);
this.btnFlashBiosDisable(false);
}.bind(this);
};
const viewModel = new ViewModel();
ko.applyBindings(viewModel);
fetch(document.Mi899.modelUrl)
.then(r => r.json())
.then(model => {
const url = new URL(document.URL);
const mbId = url.searchParams.get("m");
const tId = url.searchParams.get("t");
const motherboard = model.Motherboards.filter((x) => x.Id == mbId)[0];
const tool = model.Tools.filter((x) => x.Id == tId)[0];
if (!motherboard || !tool) {
viewModel.motherboard.name("Not found");
viewModel.tool.name("Not found");
} else {
viewModel.motherboard.id(motherboard.Id);
viewModel.motherboard.name(motherboard.Name);
viewModel.motherboard.version(motherboard.Version);
viewModel.motherboard.description(motherboard.Description);
viewModel.motherboard.imageUrl(document.Mi899.dataRepositoryUrl + motherboard.Images[0]?.Url);
const bios = model.Bioses.filter(x => x.MotherboardIds.indexOf(motherboard.Id) >= 0);
for (let i = 0; i < bios.length; i++) {
bios[i].PropertiesArray = [];
for (let p in bios[i].Properties) {
bios[i].PropertiesArray.push(p + ": " + bios[i].Properties[p]);
}
bios[i].PropertiesText = bios[i].PropertiesArray.join("\r\n");
}
viewModel.bios.list(bios);
viewModel.bios.selectedIds([bios[0]?.Id]);
viewModel.tool.name(tool.Name);
viewModel.tool.version(tool.Version);
viewModel.tool.fileName = tool.FileName;
viewModel.tool.dumpCommand = tool.DumpCommand;
viewModel.tool.flashCommand = tool.FlashCommand;
document.title = "Mi899 - " + tool.Name + " for " + motherboard.Name;
}
});
fetch(document.Mi899.i18nUrl)
.then(r => r.json())
.then(i18n => {
const md = i18n.En["ToolPartialForm.ToolPartialForm.txtReadme.Text"];
document.getElementById("divInfoContent").innerHTML = marked.parse(md);
});
</script>
</body>
</html>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+18 -18
View File
@@ -26,7 +26,7 @@
"MainForm.msiHelpHowToTurboUnlock.Text": "Отключи Turbo Boost",
"MainForm.msiHelpHowToUseCh341a.Text": "Как се използва CH341A BIOS Програматор",
"MainForm.Text": "Mi899 - X99 Tool Set",
"MainForm.tsslVersion.Text": "Mi899 Версия 1.3.2 - Copyright © Miyconst",
"MainForm.tsslVersion.Text": "Mi899 Версия 1.4.6 - Copyright © Miyconst",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Чипсети",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Id",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Име",
@@ -97,7 +97,7 @@
"MainForm.msiHelpHowToTurboUnlock.Text": "Unlock Turbo Boost",
"MainForm.msiHelpHowToUseCh341a.Text": "How to use CH341A BIOS Programmer",
"MainForm.Text": "Mi899 - X99 Tool Set",
"MainForm.tsslVersion.Text": "Mi899 Version 1.3.2 - Copyright © Miyconst",
"MainForm.tsslVersion.Text": "Mi899 Version 1.4.6 - Copyright © Miyconst",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Chipsets",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Id",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Name",
@@ -168,7 +168,7 @@
"MainForm.msiHelpHowToTurboUnlock.Text": "Desbloquear Turbo Boost (Unlock Turbo Boost)",
"MainForm.msiHelpHowToUseCh341a.Text": "Cómo usar el programador de BIOS CH341A",
"MainForm.Text": "Mi899 - X99 Tool Set",
"MainForm.tsslVersion.Text": "Mi899 Version 1.3.2 - Copyright © Miyconst",
"MainForm.tsslVersion.Text": "Mi899 Version 1.4.6 - Copyright © Miyconst",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Chipsets",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Id",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Nombre",
@@ -239,7 +239,7 @@
"MainForm.msiHelpHowToTurboUnlock.Text": "Débloquer le Turbo Boost",
"MainForm.msiHelpHowToUseCh341a.Text": "Utiliser le programmeur BIOS CH341A BIOS",
"MainForm.Text": "Mi899 - X99 Tool Set",
"MainForm.tsslVersion.Text": "Mi899 Version 1.3.2 - Copyright © Miyconst",
"MainForm.tsslVersion.Text": "Mi899 Version 1.4.6 - Copyright © Miyconst",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Chipsets",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Id",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Nom",
@@ -310,7 +310,7 @@
"MainForm.msiHelpHowToTurboUnlock.Text": "Turbo Boost engedélyezése (Angol)",
"MainForm.msiHelpHowToUseCh341a.Text": "Hogyan használjuk a CH341A BIOS programozót (Angol)",
"MainForm.Text": "Mi899 - X99 Segédprogram",
"MainForm.tsslVersion.Text": "Mi899 Verzió: 1.3.2 - Copyright © Miyconst - Minden jog fenntartva!",
"MainForm.tsslVersion.Text": "Mi899 Verzió: 1.4.6 - Copyright © Miyconst - Minden jog fenntartva!",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Lapka-készlet",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Azonosító",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Név",
@@ -381,7 +381,7 @@
"MainForm.msiHelpHowToTurboUnlock.Text": "Sbloccare Turbo Boost",
"MainForm.msiHelpHowToUseCh341a.Text": "Come usare CH341A per programmare i BIOS",
"MainForm.Text": "Mi899 - X99 Strumenti",
"MainForm.tsslVersion.Text": "Mi899 Versione 1.3.2 - Copyright © Miyconst",
"MainForm.tsslVersion.Text": "Mi899 Versione 1.4.6 - Copyright © Miyconst",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Chipsets",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Id",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Nome",
@@ -454,7 +454,7 @@
"MainForm.msiHelpHowToUseCh341a.Text": "Hoe gebruik je de CH341A BIOS Programmer",
"MainForm.msiRealtekHda.Text": "Drivers voor Realtek Audio",
"MainForm.Text": "Mi899 - X99 Tool Set",
"MainForm.tsslVersion.Text": "Mi899 Versie 1.3.2 - Copyright © Miyconst",
"MainForm.tsslVersion.Text": "Mi899 Versie 1.4.6 - Copyright © Miyconst",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Chipsets",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Id",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Naam",
@@ -520,14 +520,14 @@
"MainForm.msiFileReadMe.Text": "Przeczytaj to!",
"MainForm.msiHelp.Text": "Pomoc",
"MainForm.msiHelpAbout.Text": "O programie...",
"MainForm.msiHelpHowTo.Text": "W jaki sposób",
"MainForm.msiHelpHowToRamTimings.Text": "Dostroić timingi RAM",
"MainForm.msiHelpHowTo.Text": "W jaki sposób?",
"MainForm.msiHelpHowToRamTimings.Text": "Ustawić timingi RAMu",
"MainForm.msiHelpHowToTurboUnlock.Text": "Odblokować Turbo Boost",
"MainForm.msiHelpHowToUseCh341a.Text": "Użyć programatora BIOS CH341A",
"MainForm.msiHelpHowToUseCh341a.Text": "Używać programatora BIOS CH341A",
"MainForm.Text": "Mi899 - zestaw narzędzi dla chipsetów X99",
"MainForm.tsslVersion.Text": "Mi899, wersja 1.3.2 - copyright © Miyconst",
"MainForm.tsslVersion.Text": "Mi899, wersja 1.4.6 - copyright © Miyconst",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Chipsety",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Id",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "ID",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Nazwa",
"MotherboardPartialForm.grdBioses.colPath.HeaderText": "Ścieżka do pliku",
"MotherboardPartialForm.grdBioses.colProperties.HeaderText": "Właściwości",
@@ -538,7 +538,7 @@
"MotherboardPartialForm.grdLinks.colUrl.HeaderText": "URL",
"MotherboardPartialForm.lblBrand.Text": "Marka:",
"MotherboardPartialForm.lblDescription.Text": "Opis:",
"MotherboardPartialForm.lblId.Text": "Id:",
"MotherboardPartialForm.lblId.Text": "ID:",
"MotherboardPartialForm.lblModel.Text": "Model:",
"MotherboardPartialForm.lblName.Text": "Nazwa:",
"MotherboardPartialForm.lblTags.Text": "Tagi:",
@@ -596,7 +596,7 @@
"MainForm.msiHelpHowToTurboUnlock.Text": "Desbloquear o Turbo Boost",
"MainForm.msiHelpHowToUseCh341a.Text": "Como usar CH341A BIOS Programmer",
"MainForm.Text": "Mi899 - X99 Tool Set",
"MainForm.tsslVersion.Text": "Mi899 Version 1.3.2 - Copyright © Miyconst",
"MainForm.tsslVersion.Text": "Mi899 Version 1.4.6 - Copyright © Miyconst",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Chipsets",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Id",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Nome",
@@ -667,7 +667,7 @@
"MainForm.msiHelpHowToTurboUnlock.Text": "Разблокировать Турбо-Буст",
"MainForm.msiHelpHowToUseCh341a.Text": "Использовать CH341A BIOS программатор",
"MainForm.Text": "Mi899 - X99 Инструменты",
"MainForm.tsslVersion.Text": "Mi899 Версия 1.3.2 - Авторское право © Miyconst",
"MainForm.tsslVersion.Text": "Mi899 Версия 1.4.6 - Авторское право © Miyconst",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Чипсеты",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Id",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Название",
@@ -737,7 +737,7 @@
"MainForm.msiHelpHowToTurboUnlock.Text": "Lås upp Turbo Boost",
"MainForm.msiHelpHowToUseCh341a.Text": "Hur man använder CH341A BIOS Programmer",
"MainForm.Text": "Mi899 - X99 Verktygsset",
"MainForm.tsslVersion.Text": "Mi899 Version 1.3.2 - Copyright © Miyconst",
"MainForm.tsslVersion.Text": "Mi899 Version 1.4.6 - Copyright © Miyconst",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Kretsuppsättningar",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Id",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Namn",
@@ -808,7 +808,7 @@
"MainForm.msiHelpHowToTurboUnlock.Text": "Unlock Turbo Boost",
"MainForm.msiHelpHowToUseCh341a.Text": "Використовувати CH341A BIOS программер",
"MainForm.Text": "Mi899 - X99 Інструменти",
"MainForm.tsslVersion.Text": "Mi899 Версія 1.3.2 - Авторське право © Miyconst",
"MainForm.tsslVersion.Text": "Mi899 Версія 1.4.6 - Авторське право © Miyconst",
"MotherboardPartialForm.grdBioses.colChipsets.HeaderText": "Чіпсети",
"MotherboardPartialForm.grdBioses.colId.HeaderText": "Id",
"MotherboardPartialForm.grdBioses.colName.HeaderText": "Назва",
@@ -852,4 +852,4 @@
"ToolPartialForm.ToolPartialForm._commercialBiosDescription": "Цей BIOS не безкоштовний. Ви можете придбати копію у постачальника. Відкрити сторінку BIOS у браузері?",
"ToolPartialForm.ToolPartialForm.txtReadme.Text": "# Зчитування та запис BIOS \r\n\r\nУ цій формі ви можете зберегти поточний BIOS, щоб створити резервну копію або прошити обраний BIOS на вашу материнську плату.\r\n\r\n## Mi899:\r\n\r\n- Готує файли та скрипти для спрощення процесу зчитування та запису BIOS.\r\n- Копіює необхідні файли та скрипти у тимчасову папку.\r\n- Відкриває розташування тимчасової папки.\r\n- НЕ читає і не пише BIOS вашої материнської плати.\r\n- НЕ перевіряє сумісність вашої материнської плати з обраним BIOS.\r\n- НЕ перевіряє результат зчитування або запису BIOS.\r\n\r\n## Остаточне попередження:\r\n\r\nЯкщо щось піде не так, саме ви будете відповідальними за ваші дії.\r\n\r\n## Використання\r\n\r\n### Створення резервної копії BIOS вашої материнської плати:\r\n\r\n- Натисніть кнопку `[Зберегти поточний BIOS]`.\r\n- Зачекайте, поки Mi899 відкриє тимчасову папку з підготовленими файлами.\r\n- Запустіть скрипт `dump.bat` з папки від імені адміністратора.\r\n\r\n### Прошивка BIOS на вашу материнську плату:\r\n\r\n- Оберіть бажаний BIOS у розкривному списку `BIOS`, який знаходиться в лівій частині форми.\r\n- Натисніть кнопку `[Прописати обраний BIOS]`.\r\n- Зачекайте, поки Mi899 відкриє тимчасову папку з підготовленими файлами.\r\n- Запустіть скрипт `flash.bat` з папки від імені адміністратора."
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 KiB

Some files were not shown because too many files have changed in this diff Show More