diff --git a/apps/pcx86/1981/visicalc/manifest.xml b/apps/pcx86/1981/visicalc/manifest.xml index e7d455c474..16a14f40e8 100644 --- a/apps/pcx86/1981/visicalc/manifest.xml +++ b/apps/pcx86/1981/visicalc/manifest.xml @@ -1,5 +1,5 @@ - + VisiCalc diff --git a/apps/pcx86/1982/esuite/manifest.xml b/apps/pcx86/1982/esuite/manifest.xml index 6553b3009a..2d3ef1a4cd 100644 --- a/apps/pcx86/1982/esuite/manifest.xml +++ b/apps/pcx86/1982/esuite/manifest.xml @@ -1,5 +1,5 @@ - + Executive Suite diff --git a/apps/pcx86/1982/ratbas/manifest.xml b/apps/pcx86/1982/ratbas/manifest.xml index bbdd69eab4..cffb215d4c 100644 --- a/apps/pcx86/1982/ratbas/manifest.xml +++ b/apps/pcx86/1982/ratbas/manifest.xml @@ -1,5 +1,5 @@ - + RatBas 2.13 diff --git a/apps/pcx86/1983/adventmath/manifest.xml b/apps/pcx86/1983/adventmath/manifest.xml index 23b8d0f53a..1dbc495356 100644 --- a/apps/pcx86/1983/adventmath/manifest.xml +++ b/apps/pcx86/1983/adventmath/manifest.xml @@ -1,5 +1,5 @@ - + Adventures in Math 1.00 diff --git a/apps/pcx86/1985/rogue/manifest.xml b/apps/pcx86/1985/rogue/manifest.xml index eda0643fbb..d80b88c17b 100644 --- a/apps/pcx86/1985/rogue/manifest.xml +++ b/apps/pcx86/1985/rogue/manifest.xml @@ -1,5 +1,5 @@ - + Rogue diff --git a/apps/pcx86/1987/thinktank/manifest.xml b/apps/pcx86/1987/thinktank/manifest.xml index 563cc715b4..ba5c6133a8 100644 --- a/apps/pcx86/1987/thinktank/manifest.xml +++ b/apps/pcx86/1987/thinktank/manifest.xml @@ -1,5 +1,5 @@ - + ThinkTank 2.41NP diff --git a/apps/pcx86/1988/moria/manifest.xml b/apps/pcx86/1988/moria/manifest.xml index 88aac49348..1c383d0bb4 100644 --- a/apps/pcx86/1988/moria/manifest.xml +++ b/apps/pcx86/1988/moria/manifest.xml @@ -1,5 +1,5 @@ - + The Dungeons of Moria 4.872 diff --git a/apps/pcx86/1992/moria/manifest.xml b/apps/pcx86/1992/moria/manifest.xml index 7b850d6e58..e965f0cec2 100644 --- a/apps/pcx86/1992/moria/manifest.xml +++ b/apps/pcx86/1992/moria/manifest.xml @@ -1,5 +1,5 @@ - + The Dungeons of Moria 5.5 diff --git a/devices/c1p/machine/32kb/machine.xml b/devices/c1p/machine/32kb/machine.xml index 7a9ddfbe1c..4415c5873a 100644 --- a/devices/c1p/machine/32kb/machine.xml +++ b/devices/c1p/machine/32kb/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (32Kb) with Disk Support diff --git a/devices/c1p/machine/8kb/all/debugger/machine.xml b/devices/c1p/machine/8kb/all/debugger/machine.xml index 131fb7c0b9..3f5b284764 100644 --- a/devices/c1p/machine/8kb/all/debugger/machine.xml +++ b/devices/c1p/machine/8kb/all/debugger/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (8Kb, Additional Software) diff --git a/devices/c1p/machine/8kb/all/machine.xml b/devices/c1p/machine/8kb/all/machine.xml index d9c20a0428..cef5df0163 100644 --- a/devices/c1p/machine/8kb/all/machine.xml +++ b/devices/c1p/machine/8kb/all/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (8Kb, Additional Software) diff --git a/devices/c1p/machine/8kb/array/machine.xml b/devices/c1p/machine/8kb/array/machine.xml index 51066ea15e..a052425b4c 100644 --- a/devices/c1p/machine/8kb/array/machine.xml +++ b/devices/c1p/machine/8kb/array/machine.xml @@ -1,5 +1,5 @@ - + Challenger 1P (8Kb) "Server Array" diff --git a/devices/c1p/machine/8kb/large/debugger/machine.xml b/devices/c1p/machine/8kb/large/debugger/machine.xml index dcd184a5b9..358c652d41 100644 --- a/devices/c1p/machine/8kb/large/debugger/machine.xml +++ b/devices/c1p/machine/8kb/large/debugger/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (8Kb) with Debugger diff --git a/devices/c1p/machine/8kb/large/machine.xml b/devices/c1p/machine/8kb/large/machine.xml index 3ca81470a9..d716571b75 100644 --- a/devices/c1p/machine/8kb/large/machine.xml +++ b/devices/c1p/machine/8kb/large/machine.xml @@ -1,5 +1,5 @@ - + OSI Challenger 1P (circa 1978) diff --git a/devices/c1p/machine/8kb/small/machine.xml b/devices/c1p/machine/8kb/small/machine.xml index bb5b91ff30..6c6cc1b4ba 100644 --- a/devices/c1p/machine/8kb/small/machine.xml +++ b/devices/c1p/machine/8kb/small/machine.xml @@ -1,5 +1,5 @@ - + diff --git a/devices/pc8080/machine/exerciser/machine-8080ex1.xml b/devices/pc8080/machine/exerciser/machine-8080ex1.xml index 319acd1d0b..54cd963c92 100644 --- a/devices/pc8080/machine/exerciser/machine-8080ex1.xml +++ b/devices/pc8080/machine/exerciser/machine-8080ex1.xml @@ -1,5 +1,5 @@ - + 8080 Exerciser Test Machine diff --git a/devices/pc8080/machine/exerciser/machine-8080pre.xml b/devices/pc8080/machine/exerciser/machine-8080pre.xml index ba709285ec..2528c77165 100644 --- a/devices/pc8080/machine/exerciser/machine-8080pre.xml +++ b/devices/pc8080/machine/exerciser/machine-8080pre.xml @@ -1,5 +1,5 @@ - + 8080 Exerciser Preliminary Test Machine diff --git a/devices/pc8080/machine/exerciser/machine-cputest.xml b/devices/pc8080/machine/exerciser/machine-cputest.xml index 5392531d68..a61f94777d 100644 --- a/devices/pc8080/machine/exerciser/machine-cputest.xml +++ b/devices/pc8080/machine/exerciser/machine-cputest.xml @@ -1,5 +1,5 @@ - + 8080 CPUTEST Machine diff --git a/devices/pc8080/machine/exerciser/machine-test.xml b/devices/pc8080/machine/exerciser/machine-test.xml index b1c38fff7e..adcdc0c891 100644 --- a/devices/pc8080/machine/exerciser/machine-test.xml +++ b/devices/pc8080/machine/exerciser/machine-test.xml @@ -1,5 +1,5 @@ - + 8080 "Kelly Smith" Test Machine diff --git a/devices/pc8080/machine/exerciser/machine.xml b/devices/pc8080/machine/exerciser/machine.xml index 319acd1d0b..54cd963c92 100644 --- a/devices/pc8080/machine/exerciser/machine.xml +++ b/devices/pc8080/machine/exerciser/machine.xml @@ -1,5 +1,5 @@ - + 8080 Exerciser Test Machine diff --git a/devices/pc8080/machine/invaders/debugger/machine.xml b/devices/pc8080/machine/invaders/debugger/machine.xml index e1329ecdfd..3724148cf6 100644 --- a/devices/pc8080/machine/invaders/debugger/machine.xml +++ b/devices/pc8080/machine/invaders/debugger/machine.xml @@ -1,5 +1,5 @@ - + Space Invaders diff --git a/devices/pc8080/machine/invaders/machine.xml b/devices/pc8080/machine/invaders/machine.xml index e110e5fd60..b421f0d0c2 100644 --- a/devices/pc8080/machine/invaders/machine.xml +++ b/devices/pc8080/machine/invaders/machine.xml @@ -1,5 +1,5 @@ - + Space Invaders diff --git a/devices/pc8080/machine/vt100/debugger/machine-left.xml b/devices/pc8080/machine/vt100/debugger/machine-left.xml index 53bae73d7a..f95b3b7103 100644 --- a/devices/pc8080/machine/vt100/debugger/machine-left.xml +++ b/devices/pc8080/machine/vt100/debugger/machine-left.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/debugger/machine-right.xml b/devices/pc8080/machine/vt100/debugger/machine-right.xml index 6160469ca0..4201b8f4fa 100644 --- a/devices/pc8080/machine/vt100/debugger/machine-right.xml +++ b/devices/pc8080/machine/vt100/debugger/machine-right.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/debugger/machine.xml b/devices/pc8080/machine/vt100/debugger/machine.xml index 4ea8fb5e2e..c9ef6b56a5 100644 --- a/devices/pc8080/machine/vt100/debugger/machine.xml +++ b/devices/pc8080/machine/vt100/debugger/machine.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/machine-left.xml b/devices/pc8080/machine/vt100/machine-left.xml index 45f2903cc7..7c8bf6fffb 100644 --- a/devices/pc8080/machine/vt100/machine-left.xml +++ b/devices/pc8080/machine/vt100/machine-left.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/machine-right.xml b/devices/pc8080/machine/vt100/machine-right.xml index fc1bea12a6..c1c5143aa0 100644 --- a/devices/pc8080/machine/vt100/machine-right.xml +++ b/devices/pc8080/machine/vt100/machine-right.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pc8080/machine/vt100/machine.xml b/devices/pc8080/machine/vt100/machine.xml index ea61ada9d3..b44ed68ef0 100644 --- a/devices/pc8080/machine/vt100/machine.xml +++ b/devices/pc8080/machine/vt100/machine.xml @@ -1,5 +1,5 @@ - + VT100 Terminal diff --git a/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml b/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml index 0f6b098654..5c1332dd36 100644 --- a/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 256K, Debugger diff --git a/devices/pcx86/machine/5150/cga/256kb/machine.xml b/devices/pcx86/machine/5150/cga/256kb/machine.xml index ec96751952..1fdf484469 100644 --- a/devices/pcx86/machine/5150/cga/256kb/machine.xml +++ b/devices/pcx86/machine/5150/cga/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 256K diff --git a/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml b/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml index 5ea492bc23..8cc64d15cf 100644 --- a/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5150/cga/384kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 384K, Soft Keyboard diff --git a/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml b/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml index 3d528c5f35..74943359fd 100644 --- a/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/cga/64kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 64K diff --git a/devices/pcx86/machine/5150/cga/64kb/donkey/debugger/machine.xml b/devices/pcx86/machine/5150/cga/64kb/donkey/debugger/machine.xml index 14cd06f37b..8bfc852c8c 100644 --- a/devices/pcx86/machine/5150/cga/64kb/donkey/debugger/machine.xml +++ b/devices/pcx86/machine/5150/cga/64kb/donkey/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 64K diff --git a/devices/pcx86/machine/5150/cga/64kb/donkey/machine.xml b/devices/pcx86/machine/5150/cga/64kb/donkey/machine.xml index 0f31168b78..0127c8e671 100644 --- a/devices/pcx86/machine/5150/cga/64kb/donkey/machine.xml +++ b/devices/pcx86/machine/5150/cga/64kb/donkey/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 64K diff --git a/devices/pcx86/machine/5150/cga/64kb/machine.xml b/devices/pcx86/machine/5150/cga/64kb/machine.xml index ba98780d13..7064289d10 100644 --- a/devices/pcx86/machine/5150/cga/64kb/machine.xml +++ b/devices/pcx86/machine/5150/cga/64kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 64K diff --git a/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml b/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml index 1af1d56a0f..e45edd8b9c 100644 --- a/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5150/cga/64kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 64K diff --git a/devices/pcx86/machine/5150/dual/64kb/machine.xml b/devices/pcx86/machine/5150/dual/64kb/machine.xml index 73acccf65e..2f459a1bd6 100644 --- a/devices/pcx86/machine/5150/dual/64kb/machine.xml +++ b/devices/pcx86/machine/5150/dual/64kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150) with Dual Displays diff --git a/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml b/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml index 6c56c6946f..df02088322 100644 --- a/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 256K, Debugger diff --git a/devices/pcx86/machine/5150/mda/256kb/machine.xml b/devices/pcx86/machine/5150/mda/256kb/machine.xml index 60b0d60112..456aeeca2f 100644 --- a/devices/pcx86/machine/5150/mda/256kb/machine.xml +++ b/devices/pcx86/machine/5150/mda/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 256K diff --git a/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml b/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml index c48c6eb6ee..51aaa2f603 100644 --- a/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml +++ b/devices/pcx86/machine/5150/mda/64kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 64K, Debugger diff --git a/devices/pcx86/machine/5150/mda/64kb/machine.xml b/devices/pcx86/machine/5150/mda/64kb/machine.xml index 3a83d9b207..050c74eb2d 100644 --- a/devices/pcx86/machine/5150/mda/64kb/machine.xml +++ b/devices/pcx86/machine/5150/mda/64kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 64K diff --git a/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml b/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml index a6c6aaa9a1..0ccbce1822 100644 --- a/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5150/mda/64kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), MDA, 64K, Soft Keyboard diff --git a/devices/pcx86/machine/5160/cga/256kb/array/machine.xml b/devices/pcx86/machine/5160/cga/256kb/array/machine.xml index 231d2da22d..9b8d8bb28d 100644 --- a/devices/pcx86/machine/5160/cga/256kb/array/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/array/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/256kb/demo/debugger/machine.xml b/devices/pcx86/machine/5160/cga/256kb/demo/debugger/machine.xml index 493bcd8247..d96c18ac94 100644 --- a/devices/pcx86/machine/5160/cga/256kb/demo/debugger/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/demo/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/256kb/demo/machine.xml b/devices/pcx86/machine/5160/cga/256kb/demo/machine.xml index ce9ab73d85..b2793d5a51 100644 --- a/devices/pcx86/machine/5160/cga/256kb/demo/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/demo/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml b/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml index fd3e007b5a..e3ce97e575 100644 --- a/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/256kb/win101/debugger/machine.xml b/devices/pcx86/machine/5160/cga/256kb/win101/debugger/machine.xml index 6582da4bfe..9a6ca14f2c 100644 --- a/devices/pcx86/machine/5160/cga/256kb/win101/debugger/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/win101/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160) running Windows 1.01 diff --git a/devices/pcx86/machine/5160/cga/256kb/win101/machine.xml b/devices/pcx86/machine/5160/cga/256kb/win101/machine.xml index c70600f510..6b43b9738f 100644 --- a/devices/pcx86/machine/5160/cga/256kb/win101/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/win101/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160) running Windows 1.01 diff --git a/devices/pcx86/machine/5160/cga/256kb/win101/softkbd/machine.xml b/devices/pcx86/machine/5160/cga/256kb/win101/softkbd/machine.xml index b30ef38bb1..5075a62cb8 100644 --- a/devices/pcx86/machine/5160/cga/256kb/win101/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/cga/256kb/win101/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 256K, Windows 1.01 diff --git a/devices/pcx86/machine/5160/cga/512kb/win101/softkbd/machine.xml b/devices/pcx86/machine/5160/cga/512kb/win101/softkbd/machine.xml index f71709d233..88bd38d35e 100644 --- a/devices/pcx86/machine/5160/cga/512kb/win101/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/cga/512kb/win101/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 512K, WIN101 diff --git a/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml index 6335294dec..e0d6e5bfa0 100644 --- a/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/640kb/machine.xml b/devices/pcx86/machine/5160/cga/640kb/machine.xml index f29e322c6c..9aec37835b 100644 --- a/devices/pcx86/machine/5160/cga/640kb/machine.xml +++ b/devices/pcx86/machine/5160/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml b/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml index c4f15a1955..f5b35e4cef 100644 --- a/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/cga/640kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive diff --git a/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml b/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml index f40c190806..b63d7080bf 100644 --- a/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/ega/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), 64K EGA, 256K RAM, 10Mb Hard Disk diff --git a/devices/pcx86/machine/5160/ega/256kb/machine.xml b/devices/pcx86/machine/5160/ega/256kb/machine.xml index af60716c99..de0189c9db 100644 --- a/devices/pcx86/machine/5160/ega/256kb/machine.xml +++ b/devices/pcx86/machine/5160/ega/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), 64K EGA, 256K RAM, 10Mb Hard Disk diff --git a/devices/pcx86/machine/5160/ega/640kb/array/machine.xml b/devices/pcx86/machine/5160/ega/640kb/array/machine.xml index 0388732cd2..73ee684b1d 100644 --- a/devices/pcx86/machine/5160/ega/640kb/array/machine.xml +++ b/devices/pcx86/machine/5160/ega/640kb/array/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk diff --git a/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml b/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml index 48e6946b90..8673e19413 100644 --- a/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/ega/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk diff --git a/devices/pcx86/machine/5160/ega/640kb/machine.xml b/devices/pcx86/machine/5160/ega/640kb/machine.xml index 1c23dba70f..c307f4feb8 100644 --- a/devices/pcx86/machine/5160/ega/640kb/machine.xml +++ b/devices/pcx86/machine/5160/ega/640kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk diff --git a/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml b/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml index 73705d970a..e4f5741e3a 100644 --- a/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml b/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml index 1661b4eb11..7b5db28869 100644 --- a/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/fake188/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml b/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml index d8b1405920..498beef02c 100644 --- a/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/fake188/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/256kb/machine.xml b/devices/pcx86/machine/5160/mda/256kb/machine.xml index ee304676bf..21d95e1a43 100644 --- a/devices/pcx86/machine/5160/mda/256kb/machine.xml +++ b/devices/pcx86/machine/5160/mda/256kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive diff --git a/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml b/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml index b38a35ceed..3edb5e07e3 100644 --- a/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml +++ b/devices/pcx86/machine/5160/mda/64kb/softkbd/machine.xml @@ -1,5 +1,5 @@ - + IBM PC XT (Model 5160), MDA, 64K, 10Mb Drive diff --git a/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml index 96ccc77a46..da8b290953 100644 --- a/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/cga/640kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Color Display diff --git a/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml b/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml index 9b5e60e615..2b43dbf01f 100644 --- a/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/cga/640kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Color Display diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml index bc8c3a37ca..08663057ef 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev1/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (6Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml index 4df5d248bb..35c19e8672 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev1/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (6Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml index 439200fd76..738318b914 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/backtrack/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml index f82a37fd6f..83d6336dd7 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml b/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml index ed473b1f15..a842b7ae7e 100644 --- a/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/ega/1152kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml index e00acec077..7750f56a7a 100644 --- a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml +++ b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/backtrack/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml index ba23de95fa..84ca99ee55 100644 --- a/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/2048kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml b/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml index 10dd61267a..b980c02c5a 100644 --- a/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/ega/2048kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml b/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml index 597bc260f6..15ff313a5a 100644 --- a/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml +++ b/devices/pcx86/machine/5170/ega/640kb/rev1/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT, 128K EGA, 640Kb RAM diff --git a/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml b/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml index 15da02f76b..0799a77bac 100644 --- a/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml +++ b/devices/pcx86/machine/5170/ega/640kb/rev1/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT, 128K EGA, 640Kb RAM diff --git a/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml b/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml index 35273ccb4b..b1912966eb 100644 --- a/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml +++ b/devices/pcx86/machine/5170/mda/640kb/rev3/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Monochrome Display diff --git a/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml b/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml index 0c687424bf..737e768bc2 100644 --- a/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml +++ b/devices/pcx86/machine/5170/mda/640kb/rev3/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Monochrome Display diff --git a/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml b/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml index 875059a8a6..9ca3289889 100644 --- a/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/5170/vga/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 2Mb, 20Mb Hard Disk) with VGA Display diff --git a/devices/pcx86/machine/5170/vga/2048kb/machine.xml b/devices/pcx86/machine/5170/vga/2048kb/machine.xml index 2db4af15a7..57ba3d7758 100644 --- a/devices/pcx86/machine/5170/vga/2048kb/machine.xml +++ b/devices/pcx86/machine/5170/vga/2048kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 2Mb, 20Mb Hard Disk) with VGA Display diff --git a/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml b/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml index 763b5bbf00..52b15def4b 100644 --- a/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml +++ b/devices/pcx86/machine/5170/vga/4096kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz, 4Mb, 20Mb Hard Disk) with VGA Display diff --git a/devices/pcx86/machine/5170/vga/4096kb/machine.xml b/devices/pcx86/machine/5170/vga/4096kb/machine.xml index 258ee2ada4..3d084098fa 100644 --- a/devices/pcx86/machine/5170/vga/4096kb/machine.xml +++ b/devices/pcx86/machine/5170/vga/4096kb/machine.xml @@ -1,5 +1,5 @@ - + IBM PC AT (8Mhz), VGA, 4Mb RAM, 20Mb Hard Disk diff --git a/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml index 1f461a01aa..fb53072e22 100644 --- a/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/att/6300/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + AT&T Personal Computer 6300 with Color Display diff --git a/devices/pcx86/machine/att/6300/cga/640kb/machine.xml b/devices/pcx86/machine/att/6300/cga/640kb/machine.xml index 6822f709ae..f0ef0869ba 100644 --- a/devices/pcx86/machine/att/6300/cga/640kb/machine.xml +++ b/devices/pcx86/machine/att/6300/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + AT&T Personal Computer 6300 with Color Display diff --git a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml index 485e1f8d32..cfc6a0e8b3 100644 --- a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + Columbia Data Products MPC 1600 with Color Display diff --git a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml index 5f6442be0d..546ca6ebab 100644 --- a/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml +++ b/devices/pcx86/machine/cdp/mpc1600/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + Columbia Data Products MPC 1600 with Color Display diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml index da691d0412..7f7a0fbd63 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, 128Kb EGA diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml index ccc8ea016b..d38141daef 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/2048kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, 128Kb EGA diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml index 61ad857db0..755065b53b 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, 128Kb EGA diff --git a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml index abe6e77627..aacfed6027 100644 --- a/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/ega/4096kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, 128Kb EGA diff --git a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml index 1dedc0471c..4975209a74 100644 --- a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/backtrack/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, COMPAQ VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml index c8a7783b26..aeb6ba0176 100644 --- a/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/other/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, COMPAQ VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml index aa4fc71691..052ef33df7 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, IBM VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml index 4764d20560..1136fe2560 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/2048kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 2Mb RAM, IBM VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml index 0ce673706d..f2019cd873 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, IBM VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml index 60e50ad3a8..baced65df0 100644 --- a/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml +++ b/devices/pcx86/machine/compaq/deskpro386/vga/4096kb/machine.xml @@ -1,5 +1,5 @@ - + COMPAQ DeskPro 386, 4Mb RAM, IBM VGA, 20Mb Hard Disk diff --git a/devices/pcx86/machine/custom/machine.xml b/devices/pcx86/machine/custom/machine.xml index d70731fd86..fcd92786a0 100644 --- a/devices/pcx86/machine/custom/machine.xml +++ b/devices/pcx86/machine/custom/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150) with Monochrome Display diff --git a/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml b/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml index 3157ed6b1d..3a18ecea47 100644 --- a/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml +++ b/devices/pcx86/machine/zenith/z150/cga/640kb/debugger/machine.xml @@ -1,5 +1,5 @@ - + Zenith Z-150 with Color Display diff --git a/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml b/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml index ad50a04708..8725e40340 100644 --- a/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml +++ b/devices/pcx86/machine/zenith/z150/cga/640kb/machine.xml @@ -1,5 +1,5 @@ - + Zenith Z-150 with Color Display diff --git a/devices/pdp10/machine/ka10/test/debugger/machine.xml b/devices/pdp10/machine/ka10/test/debugger/machine.xml index 851419e6dc..fe6b245a12 100644 --- a/devices/pdp10/machine/ka10/test/debugger/machine.xml +++ b/devices/pdp10/machine/ka10/test/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-10 (Model KA10) with Debugger diff --git a/devices/pdp10/machine/ka10/test/machine.xml b/devices/pdp10/machine/ka10/test/machine.xml index cfeea704dd..0ce777239b 100644 --- a/devices/pdp10/machine/ka10/test/machine.xml +++ b/devices/pdp10/machine/ka10/test/machine.xml @@ -1,5 +1,5 @@ - + PDP-10 Test Machine diff --git a/devices/pdp11/machine/1120/basic/debugger/machine.xml b/devices/pdp11/machine/1120/basic/debugger/machine.xml index 8ff379bfe8..023aeeb03f 100644 --- a/devices/pdp11/machine/1120/basic/debugger/machine.xml +++ b/devices/pdp11/machine/1120/basic/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, PDP-11 BASIC, Debugger diff --git a/devices/pdp11/machine/1120/basic/machine.xml b/devices/pdp11/machine/1120/basic/machine.xml index 15edf6e22e..bb7197c65b 100644 --- a/devices/pdp11/machine/1120/basic/machine.xml +++ b/devices/pdp11/machine/1120/basic/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, PDP-11 BASIC diff --git a/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml b/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml index b202f117db..96ab0ca160 100644 --- a/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml +++ b/devices/pdp11/machine/1120/bootstrap/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, Bootstrap Loader, Debugger diff --git a/devices/pdp11/machine/1120/bootstrap/machine.xml b/devices/pdp11/machine/1120/bootstrap/machine.xml index 4c4d5dc4de..f80f93e57a 100644 --- a/devices/pdp11/machine/1120/bootstrap/machine.xml +++ b/devices/pdp11/machine/1120/bootstrap/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20: 16Kb, Bootstrap Loader diff --git a/devices/pdp11/machine/1120/monitor/debugger/machine.xml b/devices/pdp11/machine/1120/monitor/debugger/machine.xml index 2c27236974..c9fd6ad3af 100644 --- a/devices/pdp11/machine/1120/monitor/debugger/machine.xml +++ b/devices/pdp11/machine/1120/monitor/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 Boot Monitor with 56Kb and Debugger diff --git a/devices/pdp11/machine/1120/monitor/machine.xml b/devices/pdp11/machine/1120/monitor/machine.xml index ac6df4f62e..d0f0430e79 100644 --- a/devices/pdp11/machine/1120/monitor/machine.xml +++ b/devices/pdp11/machine/1120/monitor/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 Boot Monitor with 56Kb diff --git a/devices/pdp11/machine/1120/panel/debugger/machine.xml b/devices/pdp11/machine/1120/panel/debugger/machine.xml index cc45f6def1..c9fa1552d8 100644 --- a/devices/pdp11/machine/1120/panel/debugger/machine.xml +++ b/devices/pdp11/machine/1120/panel/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 with Front Panel and Debugger diff --git a/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml b/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml index f386b16d8e..2f61f39cdd 100644 --- a/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml +++ b/devices/pdp11/machine/1120/panel/debugger/test14/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 with Front Panel and TEST 14 diff --git a/devices/pdp11/machine/1120/panel/machine.xml b/devices/pdp11/machine/1120/panel/machine.xml index 67efadecd3..bd09768261 100644 --- a/devices/pdp11/machine/1120/panel/machine.xml +++ b/devices/pdp11/machine/1120/panel/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/20 with Front Panel diff --git a/devices/pdp11/machine/1145/panel/debugger/machine.xml b/devices/pdp11/machine/1145/panel/debugger/machine.xml index ede5dfac33..9e669120ab 100644 --- a/devices/pdp11/machine/1145/panel/debugger/machine.xml +++ b/devices/pdp11/machine/1145/panel/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1145/panel/machine.xml b/devices/pdp11/machine/1145/panel/machine.xml index 46c057e0f7..3022e04be5 100644 --- a/devices/pdp11/machine/1145/panel/machine.xml +++ b/devices/pdp11/machine/1145/panel/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml b/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml index cd9c1bdb3f..1f7ee679ec 100644 --- a/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml +++ b/devices/pdp11/machine/1145/vt100/debugger/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml b/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml index 273d10c008..97621c3fb8 100644 --- a/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml +++ b/devices/pdp11/machine/1145/vt100/debugger/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1145/vt100/debugger/machine.xml b/devices/pdp11/machine/1145/vt100/debugger/machine.xml index 39c00308b3..d758c2d12f 100644 --- a/devices/pdp11/machine/1145/vt100/debugger/machine.xml +++ b/devices/pdp11/machine/1145/vt100/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1145/vt100/machine-left.xml b/devices/pdp11/machine/1145/vt100/machine-left.xml index af9dfb02f9..58a9025f98 100644 --- a/devices/pdp11/machine/1145/vt100/machine-left.xml +++ b/devices/pdp11/machine/1145/vt100/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1145/vt100/machine-right.xml b/devices/pdp11/machine/1145/vt100/machine-right.xml index 98b8f4582f..a6cc9e322c 100644 --- a/devices/pdp11/machine/1145/vt100/machine-right.xml +++ b/devices/pdp11/machine/1145/vt100/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1145/vt100/machine.xml b/devices/pdp11/machine/1145/vt100/machine.xml index fa35cd871c..5d38777af1 100644 --- a/devices/pdp11/machine/1145/vt100/machine.xml +++ b/devices/pdp11/machine/1145/vt100/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/45 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/4mb/debugger/machine.xml b/devices/pdp11/machine/1170/4mb/debugger/machine.xml index 3a138bee73..0cf0dec97a 100644 --- a/devices/pdp11/machine/1170/4mb/debugger/machine.xml +++ b/devices/pdp11/machine/1170/4mb/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 4Mb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1170/4mb/machine.xml b/devices/pdp11/machine/1170/4mb/machine.xml index 40123b9e63..59ba6f9f4f 100644 --- a/devices/pdp11/machine/1170/4mb/machine.xml +++ b/devices/pdp11/machine/1170/4mb/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 4Mb and Front Panel diff --git a/devices/pdp11/machine/1170/monitor/debugger/machine.xml b/devices/pdp11/machine/1170/monitor/debugger/machine.xml index 60e6e37187..3acee31e7c 100644 --- a/devices/pdp11/machine/1170/monitor/debugger/machine.xml +++ b/devices/pdp11/machine/1170/monitor/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Boot Monitor, and Debugger diff --git a/devices/pdp11/machine/1170/monitor/machine.xml b/devices/pdp11/machine/1170/monitor/machine.xml index ea71cf9c3d..b6b510f374 100644 --- a/devices/pdp11/machine/1170/monitor/machine.xml +++ b/devices/pdp11/machine/1170/monitor/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Boot Monitor diff --git a/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml b/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml index cfe97920c6..d9c0bb5db2 100644 --- a/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml +++ b/devices/pdp11/machine/1170/panel/debugger/cpuexer/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb running CPU Exerciser diff --git a/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml b/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml index 7e9d473c15..6865db0b81 100644 --- a/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml +++ b/devices/pdp11/machine/1170/panel/debugger/machine-slim.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1170/panel/debugger/machine.xml b/devices/pdp11/machine/1170/panel/debugger/machine.xml index 2f5156b534..1332adc277 100644 --- a/devices/pdp11/machine/1170/panel/debugger/machine.xml +++ b/devices/pdp11/machine/1170/panel/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel and Debugger diff --git a/devices/pdp11/machine/1170/panel/machine.xml b/devices/pdp11/machine/1170/panel/machine.xml index 113564c96e..60aa69d55d 100644 --- a/devices/pdp11/machine/1170/panel/machine.xml +++ b/devices/pdp11/machine/1170/panel/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml b/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml index 7154964671..1f7a384964 100644 --- a/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml +++ b/devices/pdp11/machine/1170/vt100/debugger/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml b/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml index 94f3ffb742..8006a42ae2 100644 --- a/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml +++ b/devices/pdp11/machine/1170/vt100/debugger/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1170/vt100/debugger/machine.xml b/devices/pdp11/machine/1170/vt100/debugger/machine.xml index 73d195ec81..0818c58ffb 100644 --- a/devices/pdp11/machine/1170/vt100/debugger/machine.xml +++ b/devices/pdp11/machine/1170/vt100/debugger/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb, Front Panel, and Debugger diff --git a/devices/pdp11/machine/1170/vt100/machine-left.xml b/devices/pdp11/machine/1170/vt100/machine-left.xml index 106a8d2ccc..9f4efe783e 100644 --- a/devices/pdp11/machine/1170/vt100/machine-left.xml +++ b/devices/pdp11/machine/1170/vt100/machine-left.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/vt100/machine-right.xml b/devices/pdp11/machine/1170/vt100/machine-right.xml index 915e71e205..def58742a5 100644 --- a/devices/pdp11/machine/1170/vt100/machine-right.xml +++ b/devices/pdp11/machine/1170/vt100/machine-right.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/devices/pdp11/machine/1170/vt100/machine.xml b/devices/pdp11/machine/1170/vt100/machine.xml index 69248febf7..7903e43c85 100644 --- a/devices/pdp11/machine/1170/vt100/machine.xml +++ b/devices/pdp11/machine/1170/vt100/machine.xml @@ -1,5 +1,5 @@ - + PDP-11/70 with 256Kb and Front Panel diff --git a/disks/pcx86/apps/ibm/topview/1.01/manifest.xml b/disks/pcx86/apps/ibm/topview/1.01/manifest.xml index f333df5641..7252091977 100644 --- a/disks/pcx86/apps/ibm/topview/1.01/manifest.xml +++ b/disks/pcx86/apps/ibm/topview/1.01/manifest.xml @@ -1,5 +1,5 @@ - + TopView 1.01 diff --git a/disks/pcx86/apps/lotus/123/1.0a/manifest.xml b/disks/pcx86/apps/lotus/123/1.0a/manifest.xml index c2023c8678..04ad401073 100644 --- a/disks/pcx86/apps/lotus/123/1.0a/manifest.xml +++ b/disks/pcx86/apps/lotus/123/1.0a/manifest.xml @@ -1,5 +1,5 @@ - + 1-2-3 1.0a diff --git a/disks/pcx86/apps/micropro/wordstar/3.30/manifest.xml b/disks/pcx86/apps/micropro/wordstar/3.30/manifest.xml index 4eef8cea59..61b56599bd 100644 --- a/disks/pcx86/apps/micropro/wordstar/3.30/manifest.xml +++ b/disks/pcx86/apps/micropro/wordstar/3.30/manifest.xml @@ -1,5 +1,5 @@ - + WordStar 3.30 diff --git a/disks/pcx86/apps/micropro/wordstar/4.00/manifest.xml b/disks/pcx86/apps/micropro/wordstar/4.00/manifest.xml index 473efaf49b..8680d46b36 100644 --- a/disks/pcx86/apps/micropro/wordstar/4.00/manifest.xml +++ b/disks/pcx86/apps/micropro/wordstar/4.00/manifest.xml @@ -1,5 +1,5 @@ - + WordStar 4.00 diff --git a/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml b/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml index d014f4dfb9..aaeb70a40d 100644 --- a/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml +++ b/disks/pcx86/apps/microsoft/chart/2.02/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Chart 2.02 diff --git a/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml b/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml index ab1ba7c4f8..8bcdd0b88c 100644 --- a/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml +++ b/disks/pcx86/apps/microsoft/winword/2.0c/manifest.xml @@ -1,5 +1,5 @@ - + Word for Windows 2.0c diff --git a/disks/pcx86/apps/microsoft/word/3.0/manifest.xml b/disks/pcx86/apps/microsoft/word/3.0/manifest.xml index dff30eb36b..fa9aaad160 100644 --- a/disks/pcx86/apps/microsoft/word/3.0/manifest.xml +++ b/disks/pcx86/apps/microsoft/word/3.0/manifest.xml @@ -1,5 +1,5 @@ - + MS Word 3.0 diff --git a/disks/pcx86/apps/microsoft/word/3.1/manifest.xml b/disks/pcx86/apps/microsoft/word/3.1/manifest.xml index a8e3131f25..a4c5ed2bc0 100644 --- a/disks/pcx86/apps/microsoft/word/3.1/manifest.xml +++ b/disks/pcx86/apps/microsoft/word/3.1/manifest.xml @@ -1,5 +1,5 @@ - + MS Word 3.1 diff --git a/disks/pcx86/apps/microsoft/word/5.0/manifest.xml b/disks/pcx86/apps/microsoft/word/5.0/manifest.xml index 9ce7e6228a..9c6d746935 100644 --- a/disks/pcx86/apps/microsoft/word/5.0/manifest.xml +++ b/disks/pcx86/apps/microsoft/word/5.0/manifest.xml @@ -1,5 +1,5 @@ - + MS Word 5.0 diff --git a/disks/pcx86/apps/other/omniview/4.30/manifest.xml b/disks/pcx86/apps/other/omniview/4.30/manifest.xml index 210b9b4fba..dde7208c86 100644 --- a/disks/pcx86/apps/other/omniview/4.30/manifest.xml +++ b/disks/pcx86/apps/other/omniview/4.30/manifest.xml @@ -1,5 +1,5 @@ - + Omniview 386 4.30 diff --git a/disks/pcx86/apps/other/sc2/1.00/manifest.xml b/disks/pcx86/apps/other/sc2/1.00/manifest.xml index f9d0ab7cde..397f14cc72 100644 --- a/disks/pcx86/apps/other/sc2/1.00/manifest.xml +++ b/disks/pcx86/apps/other/sc2/1.00/manifest.xml @@ -1,5 +1,5 @@ - + SuperCalc2 1.00 diff --git a/disks/pcx86/apps/other/sc3/1.00/manifest.xml b/disks/pcx86/apps/other/sc3/1.00/manifest.xml index 69f77398f2..14fd5f0d0d 100644 --- a/disks/pcx86/apps/other/sc3/1.00/manifest.xml +++ b/disks/pcx86/apps/other/sc3/1.00/manifest.xml @@ -1,5 +1,5 @@ - + SuperCalc3 1.00 diff --git a/disks/pcx86/cpm/1.1b/machine.xml b/disks/pcx86/cpm/1.1b/machine.xml index 40bab79a88..d525e14492 100644 --- a/disks/pcx86/cpm/1.1b/machine.xml +++ b/disks/pcx86/cpm/1.1b/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150) running CP/M-86 diff --git a/disks/pcx86/cpm/1.1b/manifest.xml b/disks/pcx86/cpm/1.1b/manifest.xml index 57f75b4ced..10482c2b7b 100644 --- a/disks/pcx86/cpm/1.1b/manifest.xml +++ b/disks/pcx86/cpm/1.1b/manifest.xml @@ -1,5 +1,5 @@ - + CP/M-86 1.1B diff --git a/disks/pcx86/diags/ibm/manifest.xml b/disks/pcx86/diags/ibm/manifest.xml index 0c3ad595af..5d680e2614 100644 --- a/disks/pcx86/diags/ibm/manifest.xml +++ b/disks/pcx86/diags/ibm/manifest.xml @@ -1,5 +1,5 @@ - + IBM PC Diagnostics Diagnostics diff --git a/disks/pcx86/dos/compaq/1.11/manifest.xml b/disks/pcx86/dos/compaq/1.11/manifest.xml index e40746c303..0a7fce3701 100644 --- a/disks/pcx86/dos/compaq/1.11/manifest.xml +++ b/disks/pcx86/dos/compaq/1.11/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 1.11 diff --git a/disks/pcx86/dos/compaq/1.12/manifest.xml b/disks/pcx86/dos/compaq/1.12/manifest.xml index 5859103d22..01310d54f6 100644 --- a/disks/pcx86/dos/compaq/1.12/manifest.xml +++ b/disks/pcx86/dos/compaq/1.12/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 1.12 diff --git a/disks/pcx86/dos/compaq/2.12/manifest.xml b/disks/pcx86/dos/compaq/2.12/manifest.xml index 10a6c02fa8..4f07709393 100644 --- a/disks/pcx86/dos/compaq/2.12/manifest.xml +++ b/disks/pcx86/dos/compaq/2.12/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 2.12 diff --git a/disks/pcx86/dos/compaq/3.00/manifest.xml b/disks/pcx86/dos/compaq/3.00/manifest.xml index 59a0be4c48..9bf7baa020 100644 --- a/disks/pcx86/dos/compaq/3.00/manifest.xml +++ b/disks/pcx86/dos/compaq/3.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.00 diff --git a/disks/pcx86/dos/compaq/3.10/manifest.xml b/disks/pcx86/dos/compaq/3.10/manifest.xml index 2341fdc876..feb775f7bc 100644 --- a/disks/pcx86/dos/compaq/3.10/manifest.xml +++ b/disks/pcx86/dos/compaq/3.10/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.10 diff --git a/disks/pcx86/dos/compaq/3.31/manifest.xml b/disks/pcx86/dos/compaq/3.31/manifest.xml index 2bfa1a2344..321ee08f6d 100644 --- a/disks/pcx86/dos/compaq/3.31/manifest.xml +++ b/disks/pcx86/dos/compaq/3.31/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.31 diff --git a/disks/pcx86/dos/ibm/0.90/manifest.xml b/disks/pcx86/dos/ibm/0.90/manifest.xml index 5da4d45b30..dcff48a4ad 100644 --- a/disks/pcx86/dos/ibm/0.90/manifest.xml +++ b/disks/pcx86/dos/ibm/0.90/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 0.90 diff --git a/disks/pcx86/dos/ibm/1.00/manifest.xml b/disks/pcx86/dos/ibm/1.00/manifest.xml index 0927490523..c4b1428f83 100644 --- a/disks/pcx86/dos/ibm/1.00/manifest.xml +++ b/disks/pcx86/dos/ibm/1.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 1.00 diff --git a/disks/pcx86/dos/ibm/1.10/manifest.xml b/disks/pcx86/dos/ibm/1.10/manifest.xml index 59d133274c..85859ee1db 100644 --- a/disks/pcx86/dos/ibm/1.10/manifest.xml +++ b/disks/pcx86/dos/ibm/1.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 1.10 diff --git a/disks/pcx86/dos/ibm/2.00/manifest.xml b/disks/pcx86/dos/ibm/2.00/manifest.xml index 33043c1208..9268defd70 100644 --- a/disks/pcx86/dos/ibm/2.00/manifest.xml +++ b/disks/pcx86/dos/ibm/2.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 2.00 diff --git a/disks/pcx86/dos/ibm/2.10/manifest.xml b/disks/pcx86/dos/ibm/2.10/manifest.xml index 7e916e4348..a4a799b820 100644 --- a/disks/pcx86/dos/ibm/2.10/manifest.xml +++ b/disks/pcx86/dos/ibm/2.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 2.10 diff --git a/disks/pcx86/dos/ibm/3.00/manifest.xml b/disks/pcx86/dos/ibm/3.00/manifest.xml index 09ea74ab87..c3a8fe599a 100644 --- a/disks/pcx86/dos/ibm/3.00/manifest.xml +++ b/disks/pcx86/dos/ibm/3.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.00 diff --git a/disks/pcx86/dos/ibm/3.10/manifest.xml b/disks/pcx86/dos/ibm/3.10/manifest.xml index a397575f4f..e77da9419f 100644 --- a/disks/pcx86/dos/ibm/3.10/manifest.xml +++ b/disks/pcx86/dos/ibm/3.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.10 diff --git a/disks/pcx86/dos/ibm/3.20/manifest.xml b/disks/pcx86/dos/ibm/3.20/manifest.xml index 4853543f1b..bebea3c2af 100644 --- a/disks/pcx86/dos/ibm/3.20/manifest.xml +++ b/disks/pcx86/dos/ibm/3.20/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.20 diff --git a/disks/pcx86/dos/ibm/3.30/manifest.xml b/disks/pcx86/dos/ibm/3.30/manifest.xml index 927ac1567b..94a98947d5 100644 --- a/disks/pcx86/dos/ibm/3.30/manifest.xml +++ b/disks/pcx86/dos/ibm/3.30/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 3.30 diff --git a/disks/pcx86/dos/ibm/4.00/manifest.xml b/disks/pcx86/dos/ibm/4.00/manifest.xml index 333b3abdb7..9f085d6758 100644 --- a/disks/pcx86/dos/ibm/4.00/manifest.xml +++ b/disks/pcx86/dos/ibm/4.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 4.00 diff --git a/disks/pcx86/dos/ibm/5.00/manifest.xml b/disks/pcx86/dos/ibm/5.00/manifest.xml index 09729aa240..a02950e8ef 100644 --- a/disks/pcx86/dos/ibm/5.00/manifest.xml +++ b/disks/pcx86/dos/ibm/5.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 5.00 diff --git a/disks/pcx86/dos/ibm/6.10/manifest.xml b/disks/pcx86/dos/ibm/6.10/manifest.xml index 67a4183c9f..8bb153cc9c 100644 --- a/disks/pcx86/dos/ibm/6.10/manifest.xml +++ b/disks/pcx86/dos/ibm/6.10/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 6.10 diff --git a/disks/pcx86/dos/ibm/6.30/manifest.xml b/disks/pcx86/dos/ibm/6.30/manifest.xml index c154080c44..606a1cb753 100644 --- a/disks/pcx86/dos/ibm/6.30/manifest.xml +++ b/disks/pcx86/dos/ibm/6.30/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 6.30 diff --git a/disks/pcx86/dos/ibm/7.00/manifest.xml b/disks/pcx86/dos/ibm/7.00/manifest.xml index 6e71722a0c..5a9a872cc2 100644 --- a/disks/pcx86/dos/ibm/7.00/manifest.xml +++ b/disks/pcx86/dos/ibm/7.00/manifest.xml @@ -1,5 +1,5 @@ - + PC-DOS 7.00 diff --git a/disks/pcx86/dos/microsoft/3.20/manifest.xml b/disks/pcx86/dos/microsoft/3.20/manifest.xml index ced9f865a8..a847d2b58c 100644 --- a/disks/pcx86/dos/microsoft/3.20/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.20/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.20 diff --git a/disks/pcx86/dos/microsoft/3.21/manifest.xml b/disks/pcx86/dos/microsoft/3.21/manifest.xml index 37aaf79965..797e20ce40 100644 --- a/disks/pcx86/dos/microsoft/3.21/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.21/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.21 diff --git a/disks/pcx86/dos/microsoft/3.30/manifest.xml b/disks/pcx86/dos/microsoft/3.30/manifest.xml index 4601928b5c..5a0df1c62a 100644 --- a/disks/pcx86/dos/microsoft/3.30/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.30/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.30 diff --git a/disks/pcx86/dos/microsoft/3.31/manifest.xml b/disks/pcx86/dos/microsoft/3.31/manifest.xml index 1ab2d00fe6..e14f9867ad 100644 --- a/disks/pcx86/dos/microsoft/3.31/manifest.xml +++ b/disks/pcx86/dos/microsoft/3.31/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 3.31 diff --git a/disks/pcx86/dos/microsoft/4.00/manifest.xml b/disks/pcx86/dos/microsoft/4.00/manifest.xml index 1b61d94d77..fbde56296f 100644 --- a/disks/pcx86/dos/microsoft/4.00/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.00 diff --git a/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml b/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml index 30cea62f88..42009ae5db 100644 --- a/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.01/720K/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.01 diff --git a/disks/pcx86/dos/microsoft/4.01/manifest.xml b/disks/pcx86/dos/microsoft/4.01/manifest.xml index 074ae5cf1d..b03f826904 100644 --- a/disks/pcx86/dos/microsoft/4.01/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.01/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.01 diff --git a/disks/pcx86/dos/microsoft/4.0M/manifest.xml b/disks/pcx86/dos/microsoft/4.0M/manifest.xml index 70e49f4b5e..dfb31595d0 100644 --- a/disks/pcx86/dos/microsoft/4.0M/manifest.xml +++ b/disks/pcx86/dos/microsoft/4.0M/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 4.0M diff --git a/disks/pcx86/dos/microsoft/5.00/manifest.xml b/disks/pcx86/dos/microsoft/5.00/manifest.xml index 85e59b037e..b39f2cc156 100644 --- a/disks/pcx86/dos/microsoft/5.00/manifest.xml +++ b/disks/pcx86/dos/microsoft/5.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 5.00 diff --git a/disks/pcx86/dos/microsoft/6.00/manifest.xml b/disks/pcx86/dos/microsoft/6.00/manifest.xml index 31c2a639f5..2f763cc9bb 100644 --- a/disks/pcx86/dos/microsoft/6.00/manifest.xml +++ b/disks/pcx86/dos/microsoft/6.00/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 6.00 diff --git a/disks/pcx86/dos/microsoft/6.20/manifest.xml b/disks/pcx86/dos/microsoft/6.20/manifest.xml index 7c0998fee0..591a08e1e7 100644 --- a/disks/pcx86/dos/microsoft/6.20/manifest.xml +++ b/disks/pcx86/dos/microsoft/6.20/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 6.20 diff --git a/disks/pcx86/dos/microsoft/6.22/manifest.xml b/disks/pcx86/dos/microsoft/6.22/manifest.xml index 0b3271d96c..207b1ac853 100644 --- a/disks/pcx86/dos/microsoft/6.22/manifest.xml +++ b/disks/pcx86/dos/microsoft/6.22/manifest.xml @@ -1,5 +1,5 @@ - + MS-DOS 6.22 diff --git a/disks/pcx86/empty/manifest.xml b/disks/pcx86/empty/manifest.xml index 2a3c861f91..2d46dd92bf 100644 --- a/disks/pcx86/empty/manifest.xml +++ b/disks/pcx86/empty/manifest.xml @@ -1,5 +1,5 @@ - + Empty Diskettes diff --git a/disks/pcx86/games/id/wolf3d/manifest.xml b/disks/pcx86/games/id/wolf3d/manifest.xml index b1a1c70c6a..0a651c03c3 100644 --- a/disks/pcx86/games/id/wolf3d/manifest.xml +++ b/disks/pcx86/games/id/wolf3d/manifest.xml @@ -1,5 +1,5 @@ - + Wolfenstein 3D diff --git a/disks/pcx86/games/infocom/hhiker/manifest.xml b/disks/pcx86/games/infocom/hhiker/manifest.xml index 4d76f14d31..3e8d7c99df 100644 --- a/disks/pcx86/games/infocom/hhiker/manifest.xml +++ b/disks/pcx86/games/infocom/hhiker/manifest.xml @@ -1,5 +1,5 @@ - + The Hitchhiker's Guide to the Galaxy diff --git a/disks/pcx86/games/infocom/machine.xml b/disks/pcx86/games/infocom/machine.xml index bf33afd775..3d3dd1bf4b 100644 --- a/disks/pcx86/games/infocom/machine.xml +++ b/disks/pcx86/games/infocom/machine.xml @@ -1,5 +1,5 @@ - + IBM PC Model 5150 (CGA, 64K) diff --git a/disks/pcx86/games/infocom/planet/manifest.xml b/disks/pcx86/games/infocom/planet/manifest.xml index 0f574fef6d..bd2ae59258 100644 --- a/disks/pcx86/games/infocom/planet/manifest.xml +++ b/disks/pcx86/games/infocom/planet/manifest.xml @@ -1,5 +1,5 @@ - + Planetfall diff --git a/disks/pcx86/games/infocom/zork1/debugger/machine.xml b/disks/pcx86/games/infocom/zork1/debugger/machine.xml index cd8eaa7bab..9a4b029967 100644 --- a/disks/pcx86/games/infocom/zork1/debugger/machine.xml +++ b/disks/pcx86/games/infocom/zork1/debugger/machine.xml @@ -1,5 +1,5 @@ - + Zork I (IBM PC Model 5150) diff --git a/disks/pcx86/games/infocom/zork1/manifest.xml b/disks/pcx86/games/infocom/zork1/manifest.xml index 05befb188a..82c396f378 100644 --- a/disks/pcx86/games/infocom/zork1/manifest.xml +++ b/disks/pcx86/games/infocom/zork1/manifest.xml @@ -1,5 +1,5 @@ - + Zork I diff --git a/disks/pcx86/games/infocom/zork2/manifest.xml b/disks/pcx86/games/infocom/zork2/manifest.xml index e8d9548e49..cda7a8cad6 100644 --- a/disks/pcx86/games/infocom/zork2/manifest.xml +++ b/disks/pcx86/games/infocom/zork2/manifest.xml @@ -1,5 +1,5 @@ - + Zork II diff --git a/disks/pcx86/games/infocom/zork3/manifest.xml b/disks/pcx86/games/infocom/zork3/manifest.xml index da833a5180..53ca06d61b 100644 --- a/disks/pcx86/games/infocom/zork3/manifest.xml +++ b/disks/pcx86/games/infocom/zork3/manifest.xml @@ -1,5 +1,5 @@ - + Zork III diff --git a/disks/pcx86/games/microsoft/adventure/machine.xml b/disks/pcx86/games/microsoft/adventure/machine.xml index 91e75d2335..4429ea1899 100644 --- a/disks/pcx86/games/microsoft/adventure/machine.xml +++ b/disks/pcx86/games/microsoft/adventure/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150) running Microsoft Adventure diff --git a/disks/pcx86/games/microsoft/adventure/manifest.xml b/disks/pcx86/games/microsoft/adventure/manifest.xml index f45bf12f9a..2668a848e8 100644 --- a/disks/pcx86/games/microsoft/adventure/manifest.xml +++ b/disks/pcx86/games/microsoft/adventure/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Adventure 1.00 diff --git a/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml b/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml index 6248dc8395..ef451c49d3 100644 --- a/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml +++ b/disks/pcx86/games/microsoft/flightsim/1982/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Flight Simulator diff --git a/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml b/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml index e98c2a54b7..adcf0a27b6 100644 --- a/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml +++ b/disks/pcx86/games/microsoft/flightsim/1984/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Flight Simulator diff --git a/disks/pcx86/minix/1.1/manifest.xml b/disks/pcx86/minix/1.1/manifest.xml index fa928a65aa..68c3be59de 100644 --- a/disks/pcx86/minix/1.1/manifest.xml +++ b/disks/pcx86/minix/1.1/manifest.xml @@ -1,5 +1,5 @@ - + MINIX 1.1 diff --git a/disks/pcx86/os2/ibm/1.0/manifest.xml b/disks/pcx86/os2/ibm/1.0/manifest.xml index 688e1a0659..58191d7f37 100644 --- a/disks/pcx86/os2/ibm/1.0/manifest.xml +++ b/disks/pcx86/os2/ibm/1.0/manifest.xml @@ -1,5 +1,5 @@ - + IBM OS/2 1.0 diff --git a/disks/pcx86/os2/ibm/1.1/manifest.xml b/disks/pcx86/os2/ibm/1.1/manifest.xml index e3853842aa..ab8d5e144c 100644 --- a/disks/pcx86/os2/ibm/1.1/manifest.xml +++ b/disks/pcx86/os2/ibm/1.1/manifest.xml @@ -1,5 +1,5 @@ - + IBM OS/2 1.1 diff --git a/disks/pcx86/os2/ibm/1.3/manifest.xml b/disks/pcx86/os2/ibm/1.3/manifest.xml index ad47e1d86d..c54f690316 100644 --- a/disks/pcx86/os2/ibm/1.3/manifest.xml +++ b/disks/pcx86/os2/ibm/1.3/manifest.xml @@ -1,5 +1,5 @@ - + IBM OS/2 1.3 diff --git a/disks/pcx86/os2/microsoft/1.0/manifest.xml b/disks/pcx86/os2/microsoft/1.0/manifest.xml index 970158c411..38afcc3e49 100644 --- a/disks/pcx86/os2/microsoft/1.0/manifest.xml +++ b/disks/pcx86/os2/microsoft/1.0/manifest.xml @@ -1,5 +1,5 @@ - + MS OS/2 1.0 diff --git a/disks/pcx86/os2/misc/manifest.xml b/disks/pcx86/os2/misc/manifest.xml index 8123ab5657..cdbf8b06bf 100644 --- a/disks/pcx86/os2/misc/manifest.xml +++ b/disks/pcx86/os2/misc/manifest.xml @@ -1,5 +1,5 @@ - + OS/2 Prototype Disks diff --git a/disks/pcx86/shareware/pcsig08/debugger/machine.xml b/disks/pcx86/shareware/pcsig08/debugger/machine.xml index 3ca3190267..834bd74bcc 100644 --- a/disks/pcx86/shareware/pcsig08/debugger/machine.xml +++ b/disks/pcx86/shareware/pcsig08/debugger/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 256K diff --git a/disks/pcx86/shareware/pcsig08/machine.xml b/disks/pcx86/shareware/pcsig08/machine.xml index 1a9d7186d6..7b126875ce 100644 --- a/disks/pcx86/shareware/pcsig08/machine.xml +++ b/disks/pcx86/shareware/pcsig08/machine.xml @@ -1,5 +1,5 @@ - + IBM PC (Model 5150), CGA, 256K diff --git a/disks/pcx86/shareware/pcsig08/manifest.xml b/disks/pcx86/shareware/pcsig08/manifest.xml index 2d20c886a1..589c26159f 100644 --- a/disks/pcx86/shareware/pcsig08/manifest.xml +++ b/disks/pcx86/shareware/pcsig08/manifest.xml @@ -1,5 +1,5 @@ - + PC-SIG Library 8th Edition CD-ROM (April 1990) diff --git a/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml b/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml index 729f653876..45617536f3 100644 --- a/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml +++ b/disks/pcx86/tools/borland/pascal/3.00b/manifest.xml @@ -1,5 +1,5 @@ - + Borland Turbo Pascal diff --git a/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml b/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml index 7a043744da..40d1857ba4 100644 --- a/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml +++ b/disks/pcx86/tools/borland/pascal/3.01a/manifest.xml @@ -1,5 +1,5 @@ - + Borland Turbo Pascal diff --git a/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml b/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml index 037aac5e5d..0b405351f2 100644 --- a/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml +++ b/disks/pcx86/tools/ibm/bascom/1.00/manifest.xml @@ -1,5 +1,5 @@ - + IBM BASIC Compiler 1.00 diff --git a/disks/pcx86/tools/microsoft/basic/manifest.xml b/disks/pcx86/tools/microsoft/basic/manifest.xml index e93a5bd400..bc2c180d64 100644 --- a/disks/pcx86/tools/microsoft/basic/manifest.xml +++ b/disks/pcx86/tools/microsoft/basic/manifest.xml @@ -1,5 +1,5 @@ - + MS BASIC diff --git a/disks/pcx86/tools/microsoft/c/2.03/manifest.xml b/disks/pcx86/tools/microsoft/c/2.03/manifest.xml index 067f80b9fb..6186f78927 100644 --- a/disks/pcx86/tools/microsoft/c/2.03/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/2.03/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 2.03 diff --git a/disks/pcx86/tools/microsoft/c/3.00/manifest.xml b/disks/pcx86/tools/microsoft/c/3.00/manifest.xml index 6a81f0df5b..5641db8a61 100644 --- a/disks/pcx86/tools/microsoft/c/3.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 3.00 diff --git a/disks/pcx86/tools/microsoft/c/4.00/manifest.xml b/disks/pcx86/tools/microsoft/c/4.00/manifest.xml index ceb28f3a98..42be13ef43 100644 --- a/disks/pcx86/tools/microsoft/c/4.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/4.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 4.00 diff --git a/disks/pcx86/tools/microsoft/c/5.00/manifest.xml b/disks/pcx86/tools/microsoft/c/5.00/manifest.xml index 60dd2246b0..20990b2fbf 100644 --- a/disks/pcx86/tools/microsoft/c/5.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/5.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 5.00 diff --git a/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml b/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml index e37d7d6afa..fb32f10d0b 100644 --- a/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/5.10-os2/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 5.10-OS2 diff --git a/disks/pcx86/tools/microsoft/c/5.10/manifest.xml b/disks/pcx86/tools/microsoft/c/5.10/manifest.xml index 8b9ec47b8e..694fa6e24d 100644 --- a/disks/pcx86/tools/microsoft/c/5.10/manifest.xml +++ b/disks/pcx86/tools/microsoft/c/5.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft C Compiler 5.10 diff --git a/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml index 7924d96fd6..3ec1a629ce 100644 --- a/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/1.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 1.00 diff --git a/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml index 17833444ef..acbaa459f2 100644 --- a/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 3.00 diff --git a/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml b/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml index b684c65a29..dcd50da2a5 100644 --- a/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/3.01/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 3.01 diff --git a/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml index 66f9e48f53..0d5dcc45e7 100644 --- a/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/4.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 4.00 diff --git a/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml index 93045adc2c..97eb8f75b4 100644 --- a/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/5.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 5.00 diff --git a/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml b/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml index beaeb8eba1..71a5f0af31 100644 --- a/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/5.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 5.10 diff --git a/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml b/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml index 4b2e3e2009..8843c94cf3 100644 --- a/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/6.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 6.00 diff --git a/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml b/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml index 81cd95fc61..3a4f2925de 100644 --- a/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml +++ b/disks/pcx86/tools/microsoft/masm/6.11/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Macro Assembler 6.11 diff --git a/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml b/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml index 988e78d16f..03f4b38cf9 100644 --- a/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/mouse/5.00/manifest.xml @@ -1,5 +1,5 @@ - + MS Mouse 5.00 diff --git a/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml b/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml index e9a0315d76..2ddf2ea9c6 100644 --- a/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml +++ b/disks/pcx86/tools/microsoft/os2/sdk/1.02/manifest.xml @@ -1,5 +1,5 @@ - + MS OS/2 SDK 1.02 diff --git a/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml index 0ca30059f3..42ee04b363 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/1.01/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 1.01 diff --git a/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml index ccc4a3e1c8..20ba9e2e69 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/1.03/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 1.03 diff --git a/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml index 8fea86aee5..250d8484e4 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/1.04/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 1.04 os2museum.com diff --git a/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml index c94157af6b..33ba904718 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/2.03/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 2.03 os2museum.com diff --git a/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml b/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml index 26983df0c8..5499860407 100644 --- a/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml +++ b/disks/pcx86/tools/microsoft/windows/sdk/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Windows SDK 3.00 diff --git a/disks/pcx86/tools/misc/manifest.xml b/disks/pcx86/tools/misc/manifest.xml index ccf07db895..8e220dd9a7 100644 --- a/disks/pcx86/tools/misc/manifest.xml +++ b/disks/pcx86/tools/misc/manifest.xml @@ -1,5 +1,5 @@ - + Enhanced DEBUG PC DOS Retro: Enhanced DEBUG for PC DOS and MS-DOS diff --git a/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml b/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml index f7e292b4ca..c3a9bc5cae 100644 --- a/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml +++ b/disks/pcx86/unix/ibm/pcix/1.0/manifest.xml @@ -1,5 +1,5 @@ - + PC/IX 1.0 diff --git a/disks/pcx86/unix/microport/system-v/2.3/manifest.xml b/disks/pcx86/unix/microport/system-v/2.3/manifest.xml index 832661b858..8c414c555d 100644 --- a/disks/pcx86/unix/microport/system-v/2.3/manifest.xml +++ b/disks/pcx86/unix/microport/system-v/2.3/manifest.xml @@ -1,5 +1,5 @@ - + Microport's AT&T UNIX System V-AT 2.3 (5¨) diff --git a/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml b/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml index 7e0dc3105b..6588ae409b 100644 --- a/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml +++ b/disks/pcx86/unix/sco/xenix/8086/2.1.3/manifest.xml @@ -1,5 +1,5 @@ - + SCO Xenix 8086 Operating System v2.1.3 diff --git a/disks/pcx86/windows/1.00/manifest.xml b/disks/pcx86/windows/1.00/manifest.xml index bee18de568..8e9478491c 100644 --- a/disks/pcx86/windows/1.00/manifest.xml +++ b/disks/pcx86/windows/1.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.00 diff --git a/disks/pcx86/windows/1.01/manifest.xml b/disks/pcx86/windows/1.01/manifest.xml index 487c9cced7..c7fe6d02bf 100644 --- a/disks/pcx86/windows/1.01/manifest.xml +++ b/disks/pcx86/windows/1.01/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.01 diff --git a/disks/pcx86/windows/1.02/manifest.xml b/disks/pcx86/windows/1.02/manifest.xml index e02d7c4640..f68d397237 100644 --- a/disks/pcx86/windows/1.02/manifest.xml +++ b/disks/pcx86/windows/1.02/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.02 diff --git a/disks/pcx86/windows/1.03/manifest.xml b/disks/pcx86/windows/1.03/manifest.xml index 429bf42bce..553c3f912c 100644 --- a/disks/pcx86/windows/1.03/manifest.xml +++ b/disks/pcx86/windows/1.03/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.03 diff --git a/disks/pcx86/windows/1.03a/manifest.xml b/disks/pcx86/windows/1.03a/manifest.xml index bc93af12a6..1af2cefb0b 100644 --- a/disks/pcx86/windows/1.03a/manifest.xml +++ b/disks/pcx86/windows/1.03a/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.03a diff --git a/disks/pcx86/windows/1.03b/manifest.xml b/disks/pcx86/windows/1.03b/manifest.xml index d04b576aa4..02d289f086 100644 --- a/disks/pcx86/windows/1.03b/manifest.xml +++ b/disks/pcx86/windows/1.03b/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.03b diff --git a/disks/pcx86/windows/1.04/manifest.xml b/disks/pcx86/windows/1.04/manifest.xml index 9a6bde0f8f..edce2f95cc 100644 --- a/disks/pcx86/windows/1.04/manifest.xml +++ b/disks/pcx86/windows/1.04/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 1.04 os2museum.com diff --git a/disks/pcx86/windows/2.03/manifest.xml b/disks/pcx86/windows/2.03/manifest.xml index cf31bae80d..7d5749edcc 100644 --- a/disks/pcx86/windows/2.03/manifest.xml +++ b/disks/pcx86/windows/2.03/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 2.03 diff --git a/disks/pcx86/windows/2.0x/manifest.xml b/disks/pcx86/windows/2.0x/manifest.xml index 82b909e6cd..e8182a8c55 100644 --- a/disks/pcx86/windows/2.0x/manifest.xml +++ b/disks/pcx86/windows/2.0x/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows/386 2.0x diff --git a/disks/pcx86/windows/2.10/manifest.xml b/disks/pcx86/windows/2.10/manifest.xml index 05b75da906..968e04267c 100644 --- a/disks/pcx86/windows/2.10/manifest.xml +++ b/disks/pcx86/windows/2.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows/386 2.10 diff --git a/disks/pcx86/windows/2.11/manifest.xml b/disks/pcx86/windows/2.11/manifest.xml index 1a11dc1d20..2684658d85 100644 --- a/disks/pcx86/windows/2.11/manifest.xml +++ b/disks/pcx86/windows/2.11/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 2.11 diff --git a/disks/pcx86/windows/3.00/720K/manifest.xml b/disks/pcx86/windows/3.00/720K/manifest.xml index ab055683d6..87e8417947 100644 --- a/disks/pcx86/windows/3.00/720K/manifest.xml +++ b/disks/pcx86/windows/3.00/720K/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 3.00 diff --git a/disks/pcx86/windows/3.00/manifest.xml b/disks/pcx86/windows/3.00/manifest.xml index 5c1bb388cd..da29f70bc0 100644 --- a/disks/pcx86/windows/3.00/manifest.xml +++ b/disks/pcx86/windows/3.00/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 3.00 diff --git a/disks/pcx86/windows/3.10/manifest.xml b/disks/pcx86/windows/3.10/manifest.xml index 4faea274f0..8ed496fa91 100644 --- a/disks/pcx86/windows/3.10/manifest.xml +++ b/disks/pcx86/windows/3.10/manifest.xml @@ -1,5 +1,5 @@ - + Microsoft Windows 3.10 diff --git a/disks/pcx86/windows/3.11/manifest.xml b/disks/pcx86/windows/3.11/manifest.xml index 334728db98..ad0bfe8c15 100644 --- a/disks/pcx86/windows/3.11/manifest.xml +++ b/disks/pcx86/windows/3.11/manifest.xml @@ -1,5 +1,5 @@ - + Windows for Workgroups 3.11 diff --git a/disks/pcx86/windows/win95/4.00.499/manifest.xml b/disks/pcx86/windows/win95/4.00.499/manifest.xml index 976e6a32b0..452768ee6b 100644 --- a/disks/pcx86/windows/win95/4.00.499/manifest.xml +++ b/disks/pcx86/windows/win95/4.00.499/manifest.xml @@ -1,5 +1,5 @@ - + Windows 95 (Build 499) diff --git a/disks/pcx86/windows/win95/4.00.950/manifest.xml b/disks/pcx86/windows/win95/4.00.950/manifest.xml index 70f8942c9d..9a1aef7c9e 100644 --- a/disks/pcx86/windows/win95/4.00.950/manifest.xml +++ b/disks/pcx86/windows/win95/4.00.950/manifest.xml @@ -1,5 +1,5 @@ - + Windows 95 (RTM) 4.00.950 diff --git a/disks/pcx86/windows/wincomm/manifest.xml b/disks/pcx86/windows/wincomm/manifest.xml index 331ef41d24..be7cf792b5 100644 --- a/disks/pcx86/windows/wincomm/manifest.xml +++ b/disks/pcx86/windows/wincomm/manifest.xml @@ -1,5 +1,5 @@ - + Windows COMM Driver (Source) diff --git a/docs/pcx86/examples/components.xsl b/docs/pcx86/examples/components.xsl index 4543462769..dffaca0e7f 100644 --- a/docs/pcx86/examples/components.xsl +++ b/docs/pcx86/examples/components.xsl @@ -14,11 +14,11 @@ pcjs pcx86 PCx86 - 1.35.0 + 1.35.1 www.pcjs.org - + diff --git a/docs/pcx86/examples/pcx86-dbg.js b/docs/pcx86/examples/pcx86-dbg.js index 124e8b65da..13b41c01ec 100644 --- a/docs/pcx86/examples/pcx86-dbg.js +++ b/docs/pcx86/examples/pcx86-dbg.js @@ -821,7 +821,7 @@ a.P("no return addresses found")}break;case "l":if("ln"==g[0]){fB(a,g[1],!0);bre fb)Ae=1610481663,fb=null;else if("on"==fb)nd=!0,fb=null;else if("off"==fb)nd=!1,fb=null;else{"keys"==fb&&(fb="key");"kbd"==fb&&(fb="keyboard");for(md in Rb)if(fb==md){Ae=Rb[md];nd=!!(a.ic&Ae);break}if(!Ae){a.P("unknown message category: "+fb);break a}}Ae&&("on"==g[2]?(a.ic|=Ae,nd=!0):"off"==g[2]&&(a.ic&=~Ae,nd=!1))}var jC=0,$g="";for(md in Rb)if(!fb||fb==md){var kC=!!(a.ic&Rb[md]);if(null===nd||nd==kC)$g&&($g+=","),++jC%10||($g+="\n\t"),"key"==md&&(md="keys"),$g+=md}void 0===fb&&a.P("message commands:\n\tm [category] [on|off]\tturn categories on/off"); a.P((null!==nd?nd?"messages on: ":"messages off: ":"message categories:\n\t")+($g||"none"));my(a)}break;case "o":var Dm=g[1],lC=g[2];if(Dm&&"?"!=Dm){var Em=$x(a,Dm,"port #"),Fm=$x(a,lC);void 0!==Em&&void 0!==Fm&&(Sc(a.ka,Em,1,Fm),a.P(sa(Em)+": "+r(Fm)))}else a.P("output commands:"),a.P("\to [p] [b]\twrite byte [b] to port [p]"),a.P("warning: port accesses can affect hardware state");break;case "p":if("print"==g[0]){iB(a,b.substr(5));break}var St="pr"==g[0]?1:0,tf=1+St;if(a.K)a.P("step in progress"); else{var ej,Tt=!1,Hb=ky(a,A(a.H),a.H.Z.U);do switch(ej=!1,a.Ia(Hb)){case 38:case 46:case 54:case 62:case 100:case 101:case 102:case 103:case 240:Ny(a,Hb,1);ej=!0;break;case 204:case 206:a.K=tf;Ny(a,Hb,1);break;case 205:case 224:case 225:case 226:a.K=tf;Ny(a,Hb,Hb.Hb?4:2);break;case 232:a.K=tf;Ny(a,Hb,Hb.Hb?5:3);break;case 154:a.K=tf;Ny(a,Hb,Hb.Hb?7:5);break;case 255:var Ut=a.jb(Hb)&14591;if(4351==Ut||6399==Ut)a.K=tf,$z(a,Hb);break;case 243:case 242:Ny(a,Hb,1);Tt=ej=!0;break;case 108:case 109:case 110:case 111:case 164:case 165:case 166:case 167:case 170:case 171:case 172:case 173:case 174:case 175:Tt&& -(a.K=tf,Ny(a,Hb,1))}while(ej);a.K?(a.Hd(a.C,Hb,!0),Qz(a)||(a.pa&&a.pa.md(),a.K=0)):kB(a,St?"tr":"t")}break;case "r":if("reset"==b){a.pa&&a.pa.reset();break}Sz(a,g);break;case "t":kB(a,g[0],g[1]);break;case "u":Tz(a,g[1],g[2],8);break;case "v":if("var"==g[0]){eB(a,b.substr(3))||(d=!1);break}a.P("PCx86 version 1.35.0 ("+a.H.ca+",RELEASE,NOPREFETCH"+(Nb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.P(Ma());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var ah;void 0!==g[3]&&(ah=+g[3]); +(a.K=tf,Ny(a,Hb,1))}while(ej);a.K?(a.Hd(a.C,Hb,!0),Qz(a)||(a.pa&&a.pa.md(),a.K=0)):kB(a,St?"tr":"t")}break;case "r":if("reset"==b){a.pa&&a.pa.reset();break}Sz(a,g);break;case "t":kB(a,g[0],g[1]);break;case "u":Tz(a,g[1],g[2],8);break;case "v":if("var"==g[0]){eB(a,b.substr(3))||(d=!1);break}a.P("PCx86 version 1.35.1 ("+a.H.ca+",RELEASE,NOPREFETCH"+(Nb?",TYPEDARRAYS":",LONGARRAYS")+",NOBACKTRACK)");a.P(Ma());break;case "x":a:if(g[1]&&"?"!=g[1])switch(g[1]){case "cs":var ah;void 0!==g[3]&&(ah=+g[3]); switch(g[2]){case "int":a.H.T.Te=ah;break;case "start":a.H.T.xf=ah;break;case "stop":a.H.T.Ve=ah;break;default:a.P("unknown cs option");break a}void 0!==ah&&Ad(a.H);a.P("checksums "+(a.H.ea.Ie?"enabled":"disabled"));break;case "sp":void 0!==g[2]&&(Ed(a.H,+g[2])||a.P("warning: using 1x multiplier, previous target not reached"));a.P("target speed: "+(a.H.T.pe.toFixed(2)+"Mhz")+" ("+a.H.T.Ld+"x)");break;default:a.P("unknown option: "+g[1])}else a.P("execution options:"),a.P("\tcs int #\tset checksum cycle interval to #"), a.P("\tcs start #\tset checksum cycle start count to #"),a.P("\tcs stop #\tset checksum cycle stop count to #"),a.P("\tsp #\t\tset speed multiplier to #");break;case "?":if(g[1]){iB(a,b.substr(1));break}var Gm="commands:",Hm;for(Hm in mB)Gm+="\n"+Aa(Hm,7)+mB[Hm];Ig(a)||(Gm+="\nnote: frequency/history disabled if no exec breakpoints");a.P(Gm);break;default:a.P("unknown command: "+b),d=!1}}}catch(Wt){a.P("debugger error: "+(Wt.stack||Wt.message)),d=!1}return d} function oy(a,b,c){b=a.Dg(b,c);for(var d in b)if(!Zz(a,b[+d]))return!1;return!0} @@ -854,23 +854,23 @@ qy,[119,R|S|X,oB|4096]],[[155,R|V|4096,W|V|4096],qy,[98,R|V|X],[96,R|V|X],[95,R| CPL0_SS:4,CPL1_SP:6,CPL1_SS:8,CPL2_SP:10,CPL2_SS:12,TASK_IP:14,TASK_PS:16,TASK_AX:18,TASK_CX:20,TASK_DX:22,TASK_BX:24,TASK_SP:26,TASK_BP:28,TASK_SI:30,TASK_DI:32,TASK_ES:34,TASK_CS:36,TASK_SS:38,TASK_DS:40,TASK_LDT:42},Ay={PREV_TSS:0,CPL0_ESP:4,CPL0_SS:8,CPL1_ESP:12,CPL1_SS:16,CPL2_ESP:20,CPL2_SS:24,TASK_CR3:28,TASK_EIP:32,TASK_PS:36,TASK_EAX:40,TASK_ECX:44,TASK_EDX:48,TASK_EBX:52,TASK_ESP:56,TASK_EBP:60,TASK_ESI:64,TASK_EDI:68,TASK_ES:72,TASK_CS:76,TASK_SS:80,TASK_DS:84,TASK_FS:88,TASK_GS:92,TASK_LDT:96, TASK_IOPM:100};$a(function(){for(var a=zb(document,"pcx86","debugger"),b=0;b\nLicense: GPL version 3 or later ");for(b=0;b\nLicense: GPL version 3 or later ");for(b=0;bGB){if(d.load(this.L)){this.F=new Wf(this,"1.35.0",QB);this.F.load()&&(RB(this,d),a=SB,TB(this.F));this.F.set(NB,Ea());UB(this.F);var e=this.A&&!this.I;if(a==OB||qb("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=MB(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= +function KB(a,b){var c=new Wf(a,"1.35.1",LB);if(c.load()&&MB(c)){var d=c.get(NB),e=b?b.get(NB):"unknown";d!=e&&(a.Ea("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=EB.prototype; +l.Mf=function(a){void 0===a&&(a=this.A||(this.L?OB:GB));if(!this.B){this.B++;var b=!1,c=!1;this.Y=!1;var d=this.M||new Wf(this,"1.35.1");if(a==PB)b=!0;else if(a>GB){if(d.load(this.L)){this.F=new Wf(this,"1.35.1",QB);this.F.load()&&(RB(this,d),a=SB,TB(this.F));this.F.set(NB,Ea());UB(this.F);var e=this.A&&!this.I;if(a==OB||qb("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=MB(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= g?(this.Ea("Error: "+g),"unable to verify user"==g&&(Ra(VB,""),this.C=null)):this.P(f+": "+g),TB(d),d.load()?(c=MB(d),e=!0):c=!1))}e&&KB(this,c?d:null)}else a==SB&&d.clear()}else KB(this);delete this.L;delete this.M}e=sb(this.id);for(f=0;fa[1];a=a[2];this.ga=!0;this.ea.Yb=!0;var d=this.na.power;d&&(d.textContent="Shutdown");this.H&&(WB(this,this.H,b,c,a),this.H.mf());this.Y&&(RB(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.B=0}; -function RB(a,b){if(qb("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.C||"";b=b.toString();var d={app:"PCx86",ver:"1.35.0"};d.url=a.da;d.user=c;d.type="bug";d.data=b;Ka("http://www.pcjs.org/api/v1/report",d,!0)}} -function lB(a,b,c){var d,e="none";if(a.B)return null;a.B--;var f=new Wf(a,"1.35.0"),g=new Wf(a,"1.35.0",LB),h=Ea();g.set(NB,h);f.set(NB,h);f.set(XB,"1.35.0");f.set(YB,window?window.location.href:null);f.set(ZB,Ma());a.H&&a.H.Wb&&(c&&a.H.Jb(),d=a.H.Wb(b,c),"object"===typeof d&&f.set(a.H.id,d),c&&(a.H.ea.Yb=!1,!1===d&&(e=null)));for(var h=sb(a.id),k=0;k).*?(<\/xsl:variable>)/,"$1pcx86$2") function rC(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ka(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, "");a=a.replace(d[0],g);rC(a,b,c)}})}else c(a,null)} function sC(a,b,c,d){function e(a){if(void 0===h){var b=g&&zb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=xa(a))}function f(a){e("Error: "+a);k&&(--oC||hb(!0));k=!1}var g,h,k=!0;oC++;pb[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=m:v.appendChild(document.createTextNode(m));p.appendChild(v)}c|| -(c="/versions/pcx86/1.35.0/components.xsl");m=function(d,h){h?pC(c,null,null,!1,e,function(d,k){k?(ob(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--oC||hb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--oC||hb(!0)):f("invalid machine element: "+ +(c="/versions/pcx86/1.35.1/components.xsl");m=function(d,h){h?pC(c,null,null,!1,e,function(d,k){k?(ob(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--oC||hb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--oC||hb(!0)):f("invalid machine element: "+ a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?pC(b,a,d,!0,e,m):qC(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}function tC(a,b,c,d){hb(!1);return sC(a,b,c,d)}window.embedPC=tC;window.embedPCx86=tC;window.findMachineComponent=function(a,b){return ub(b,a+".machine")}; window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!Bb[a]){for(var c=!0,d=Bb,e=a,f=b.length,g=[],h=[],k="",m=null,p=0;p]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=v.exec(h[m]);){var u=d[2];u&&(h[u]||(p=p.replace(d[0],"")))}d=m=ta(m)}else"xsl"==v&&(e=m=ta(m));k[m]=p}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g, "©"),a=Wa(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
\n')+"...\n",a=a+(' +
+ + + + + + + + + + + + + +
+ + + + js + , + + +
+
+ + + + + + + + + + + + + , + + + + + + + + + + + + .machine + . + + + + + + + + + + + + + + border:1px solid black;border-radius:10px; + border:; + + + + + + left:; + + + + + + top:; + + + + + + + + width:; + width:auto;max-width:; + + + + + + + + height:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto; + position:; + position:absolute; + + + + + overflow:auto;width:100%; + background-color:; + + + + - -component + +
+ + + + + + +
+ +
+
+ +
+ +
+
+ +
+ + +
[XML]
+ +
+ +
+
+
+
+ + + + + text-align:center; + + + +

+
+ + +
+
+ + + + type:'' + + + binding:'' + + + + border:1px solid black; + border:; + + + + + + width:; + + + + + + height:; + + + + + + left:; + + + + + + top:; + + + + + + position:absolute; + float:left; + float:right; + margin:0 auto; + ; + float:left; + + + + + + + + +
+ + + font-size:; + + + + + -label + + + width:; + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + +
+
+ +
+
+ + +
+
+
+ +
+
+ +

+
+ +
+
+
+ + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + null + + + + + + ,autoStart: + + + + + + + + + + + + + + + 600 + + + + + keyboard + ,model: + + + + + + + + + + + + + + + false + + + + + serial + ,demo: + + + + + + + + + + + + + + disk + + + + + + + + + + + + + + + 0 + + + + + + + + + + + rom + ,size:,image:'' + + + + + + + + + + + + + + + 0 + + + + + ram + ,size: + + + + + + + + + + + + + + + 600 + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 32 + + + + + + 32 + + + + + + + 0 + + + + + + + 0 + + + + + + + + + + + + + + null + + + + + video + ,model:,screenWidth:,screenHeight:,charCols:,charRows:,charWidth:,charHeight:,charSet:'',screenColor:'',smoothing: + + + + + + + + + + + + + + debugger + + + + + + + + + + + + + + panel + + + + + + + + + + + + + [ + {} + , + ] + + + + computer + ,modules: + + + + + type:'',refID:'',start:,end: + + + diff --git a/versions/c1pjs/1.35.1/document.css b/versions/c1pjs/1.35.1/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/c1pjs/1.35.1/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/c1pjs/1.35.1/document.xsl b/versions/c1pjs/1.35.1/document.xsl new file mode 100644 index 0000000000..d1520bba9a --- /dev/null +++ b/versions/c1pjs/1.35.1/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

+
+ + + + + + + +

+
+ +

+
+
+
+ + + + + + +
+
+ + +
+ +   + + +
+
+ +
+
+ + + + + + + + + + + + + + + + +

+
+ + +

+
+ + +

+
+ + +
+
+ + +
+
+ + + + + + + + + + + + + + +
+
+ + +
+
+ + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/c1pjs/1.35.1/machine.xsl b/versions/c1pjs/1.35.1/machine.xsl new file mode 100644 index 0000000000..e90677229e --- /dev/null +++ b/versions/c1pjs/1.35.1/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/c1pjs/1.35.1/manifest.xsl b/versions/c1pjs/1.35.1/manifest.xsl new file mode 100644 index 0000000000..7bb9d632ba --- /dev/null +++ b/versions/c1pjs/1.35.1/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/c1pjs/1.35.1/outline.xsl b/versions/c1pjs/1.35.1/outline.xsl new file mode 100644 index 0000000000..36b5f2d30b --- /dev/null +++ b/versions/c1pjs/1.35.1/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pc8080/1.35.1/common.css b/versions/pc8080/1.35.1/common.css new file mode 100644 index 0000000000..a569abc642 --- /dev/null +++ b/versions/pc8080/1.35.1/common.css @@ -0,0 +1,278 @@ +@CHARSET "UTF-8"; +/** + @author Jeff Parsons (@jeffpar) + @website http://www.pcjs.org/ + @created 2013-05-05 + @modified 2014-02-23 + @license http://www.gnu.org/licenses/gpl.html + */ +body { + margin: 0; + background: #202020; +} +h1, h2 { + margin-top: 0; + color: #cccccc; +} +h1, h2, h3, h4 { + word-wrap: break-word; +} + +h4 a { + color: #cccccc !important; +} +p { + line-height: 1.5em; +} +img { + max-width: 100%; +} +a img { + vertical-align: bottom; +} +pre, code { + color: #000000; + background-color: #cccccc; + font-family: Monaco, Consolas, "Lucida Console", monospace; + font-size: 12px; +} +pre { + margin: 1em 2em; + padding: 1em; + border-radius: 5px; + overflow: auto; +} +code { + padding: 1px; +} +pre a, code a { + color: #006400 !important; +} +.common { + width: 100%; + margin: 0 auto; + color: #cccccc; +} +.common a { + + color: #7fc07f; + text-decoration: none; +} +.common hr { + border-color: #808080; +} +.common a:hover { + text-decoration: underline; +} +.common, .machine { + font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; + font-size: 15px; +} +.machine { + + overflow: hidden; +} +.c1pjs { + overflow: visible; +} +.machine-placeholder { + text-align: center; + font-weight: bold; +} +.machine-floating { + position: relative; + z-index: auto; + background-color: transparent; + padding-right: 0; +} +.machine-sticky { + position: fixed !important; + z-index: 1 !important; + background-color: #404040 !important; + padding-right: 16px !important; + top: 0 !important; +} +.common-top { + background: #202020; + font-size: small; +} +.common-top-left { + float: left; + width: 60%; +} +.common-top-left ul { + line-height: 1.5em; + list-style-type: none; + margin: 0; + padding: 1em 1em 1em 9px; + overflow: hidden; +} +.common-top-left ul li { + display: block; + float: left; +} +.common-top-left ul li a { + border-right: 1px solid #6f6f6f; + padding: 2px 6px 2px 6px; +} +.common-top-left ul li:last-child a { + border-right: none; +} +.common-top-right { + float: right; + width: 40%; +} +.common-top-right p { + float: right; + margin: 0; + padding: 1em; +} +.common-middle { + clear: both; + padding: 1px 1em 1px 1em; + background: #404040; +} +.common-sidebar { + float: left; + font-size: small; + width: 140px; + padding-bottom: 20px; + overflow: hidden; + white-space: nowrap; + word-wrap: break-word; +} +.common-list { + list-style-type: none; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; +} +.common-list li { + + padding-bottom: 7px; +} +.common-list-data { + list-style-type: none; + margin-top: 0; + margin-bottom: 0; + padding-left: 0; +} +.common-list-data li { + line-height: 1.5em; +} +.common-list-data-items, .common-list-data-subitems { + font-size: x-small; + list-style-type: none; + margin-top: 0; + margin-bottom: 0; + padding-left: 2em; +} +.common-list-data-items li, .common-list-data-subitems li { + padding-bottom: 0; +} +.common-main { + margin-left: 150px; + +} +.common-main blockquote { + text-align: justify; +} +.common-image-gallery { + margin: 0 auto; + text-align: center; +} +.common-image-gallery:after { + content: ''; + display: block; +} +.common-image-frame { + display: inline-block; + margin: 8px; + text-align: center; +} +.common-image-link { + padding: 5px; + border: 1px solid black; + border-radius: 5px; + background-color: #FAEBD7; +} +.common-image-label { + font-size: x-small; +} +.common-bottom { + clear: both; + padding-top: 1em; +} +.common-bottom:after { + content: ''; + display: block; + clear: both; +} +.common-reference { + float: left; + font-size: x-small; +} +.common-reference a { + text-decoration: none; +} +.common-copyright { + float: right; + font-size: x-small; +} +.common-copyright a { + text-decoration: none; +} +.md-list { +} +.md-list li { + line-height: 1.5em; + margin-bottom: 1em; +} +.md-list li p { + padding-left: 2em; +} +.md-list-compact { +} +.md-list-compact li { + margin-bottom: 0; +} +.md-list-none { + list-style-type: none; + padding-left: 2em; +} +.md-list-none li { + margin-bottom: 0; +} +@media screen and (max-width: 900px) { + + .common-sidebar { + width: 100%; + white-space: normal; + } + .common-list { + padding-left: 0; + } + .common-list-data { + padding-left: 0; + } + .common-sidebar h4, .common-list li, .common-list-data li, .common-list-data-items li { + width: 130px; + float: left; + overflow: hidden; + vertical-align: top; + padding-right: 1em; + margin-top: 0; + } + .common-list-data-subitems { + display: none; + } + .common-main { + clear: both; + margin-left: 0; + padding-left: 0; + padding-right: 0; + } + .md-list-none { + padding-left: 1em; + } +} diff --git a/versions/pc8080/1.35.1/common.xsl b/versions/pc8080/1.35.1/common.xsl new file mode 100644 index 0000000000..6c5c5afa89 --- /dev/null +++ b/versions/pc8080/1.35.1/common.xsl @@ -0,0 +1,56 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +

    Powered by JavaScript, Vanilla JS, and GitHub

    +
    +
    +
    + + +
    +

    + +
    +
    + +
    diff --git a/versions/pc8080/1.35.1/components.css b/versions/pc8080/1.35.1/components.css new file mode 100644 index 0000000000..4b94290407 --- /dev/null +++ b/versions/pc8080/1.35.1/components.css @@ -0,0 +1,257 @@ +@CHARSET "UTF-8"; + + +*:not(input,textarea) { + -webkit-user-select: none; +} +.pcjs-embed { +} +.pcjs-embed:after { + clear:both; +} +.pcjs-machine { +} +.pcjs-name, .pcjs-menu { + clear: both; + font-weight: bold; + padding-bottom: 4px; +} +.pcjs-menu { + float: left; +} +.pcjs-canvas { + width: 100%; + height: auto; +} +.pcjs-container { + color: #000000; + position: relative; +} +.pcjs-label { + font-size: small; + line-height: 20px; + vertical-align: middle; + float: left; + font-family: Monaco, "Lucida Console", monospace; +} +.pcjs-controls textarea { + font-family: Monaco, "Lucida Console", monospace; + font-size: x-small; +} +.pcjs-fieldset { + border: none; + margin: 0; + padding: 0; +} +.pcjs-flag { + font-family: Monaco, "Lucida Console", monospace; + font-size: small; + text-align: center; + line-height: 20px; + vertical-align: middle; +} +.pcjs-progress { + height: 20px; + width: 200px; + margin-top: 8px; + border: 1px solid black; + position: relative; +} +.pcjs-progress-bar { + height: 20px; + width: 0; + background-color: gold; + position: absolute; + top: 0; +} +.pcjs-progress-text { + height: 20px; + width: 200px; + font-size: small; + line-height: 20px; + text-align: center; + position: absolute; + top: 0; + z-index: 1; +} +.pcjs-register { + font-family: Monaco, "Lucida Console", monospace; + font-size: small; + text-align: center; + line-height: 20px; + vertical-align: middle; + border: 1px solid black; +} +.pcjs-switches { + float: left; +} +.pcjs-bitBucket { + float: left; + width: 19px; + height: 38px; +} +.pcjs-bitCell { + float: left; + width: 19px; + height: 19px; + margin-right: -1px; + margin-bottom: -1px; + border: 1px solid black; + text-align: center; + line-height: 19px; +} +.pcjs-bitCellLeft { + border-left: 1px solid black; +} +.pcjs-bitLabel { + font-size: xx-small; + text-align: center; +} +.pcjs-description, .pcjs-status { + font-size: x-small; + line-height: 2.0em; +} +.pcjs-key { + border: 1px solid black; + font-size: x-small; + text-align: center; + position: absolute; + height: 34px; + line-height: 34px; + background-color: #ffffff; +} +.pcjs-panel-group { + color: #ffffff; + background-color: #404040; +} +.pcjs-triplet { + padding: 1px; +} +.pcjs-ledlbl { + text-align: center; + font-size: 40%; + background-color: #000000; +} +.pcjs-ledlbl0 { + text-align: right; + font-size: 50%; + background-color: #8d4076; +} +.pcjs-ledlbl1 { + text-align: right; + font-size: 50%; + background-color: #d83662; +} +.pcjs-ledpad { + text-align: center; + font-size: x-small; + line-height: 32px; + background-color: #000000; + border-bottom-left-radius: 20%; + border-bottom-right-radius: 20%; +} +.pcjs-led { + float: left; + width: 8px; + height: 8px; + margin: 4px; + border: 1px solid black; + text-align: center; + vertical-align: middle; + background-color: #000000; +} +.pcjs-rled { + float: left; + width: 8px; + height: 8px; + margin: 4px; + border: 1px solid black; + border-radius: 50%; + text-align: center; + vertical-align: middle; + background-color: #ff0000; + max-width: 50%; + max-height: 50%; +} +.pcjs-swlbl { + text-align: center; + font-size: 40%; + line-height: 16px; + background-color: #000000; + border-top-left-radius: 20%; + border-top-right-radius: 20%; +} +.pcjs-swpad { + height: 32px; + background-color: #000000; +} +.pcjs-switch { + height: 10px; + width: 28px; + margin-top: 0; + max-width: 90%; + background-color: #00ff00; +} +.pcjs-screen { + clear: both; + height: auto; + position: relative; + line-height: 0; +} +.pcjs-screen textarea { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0; + border: 0; + padding: 0; + line-height: 0; +} +.pcjs-reference { + float: left; + font-size: x-small; +} +.pcjs-reference a { + text-decoration: none; +} +.pcjs-copyright { + float: right; + font-size: x-small; +} +.pcjs-copyright a { + text-decoration: none; +} +@media screen and (max-width: 800px) { + .pcjs-textarea { + width: 100% !important; + } + .pcjs-registers { + width: 100% !important; + max-width: none !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + .pdp11-device { + width: 98% !important; + max-width: none !important; + margin-left: 8px !important; + padding-left: 0 !important; + padding-right: 0 !important; + } +} +@media screen and (min-width: 1200px) { + .machine-left { + max-width: 48%; + float: left; + } + .machine-right { + max-width: 48%; + float: left; + margin-left: 30px; + } + .machine-right + * { + clear: both; + } +} diff --git a/versions/pc8080/1.35.1/components.xsl b/versions/pc8080/1.35.1/components.xsl new file mode 100644 index 0000000000..98367e5d00 --- /dev/null +++ b/versions/pc8080/1.35.1/components.xsl @@ -0,0 +1,1383 @@ + + + +]> + + + + + + + + pc + pcjs + pc8080 + PC8080 + 1.35.1 + www.pcjs.org + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float: + + + + + + + js + + + +
    + + + + + + + + + + js + + + "" + + + + + +
    +
    + + + + + + + + + + + + + + + , + + + + + + + + + + + + + .machine + . + . + + + + + + + + + + + + + + + + + + + + ,comment:'' + + + + + + border:1px solid black;border-radius:15px; + border:; + + + + + + left:; + + + + + + top:; + + + + + + + + width:; + width:;max-width:; + width:auto;max-width:; + + + + + + + + height:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto;clear:both; + position:; + position:relative; + + + + + overflow:auto;width:100%; + background-color:; + + + + - -component + +
    + + + + + + +
    + + + + + + + + --object -screen + + +
    +
    + +
    + +
    +
    + + + + +
    + + +
    [XML]
    + +
    + + +
    +
    +
    +
    + + + + + text-align:center; + + + +

    +
    + + +
    +
    + + + + + + +
    +
    + + + + type:'' + + + binding:'' + + + value:'' + + + + border:1px solid black; + border:; + + + + + + width:; + + + + + + height:; + + + + + + left:; + + + + + + top:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto; + clear:both; + position:; + position:relative; + text-align:; + float:left; + + + + + + + + + + + + + + + + + + +
    + + + font-size:; + + + + + -label + + + + width:; + width:; + + + + + + + + text-align:right; + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + ; + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8088 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + + null + + + + + + 0 + + + + + + + -1 + + + + + + + -1 + + + + + + + -1 + + + + + + ,model:'',stepping:'',fpu:,cycles:,multiplier:,autoStart:,addrReset:,csStart:,csInterval:,csStop: + + + + + + + + + + + + + + + 8087 + + + + + + + + + + + + ,model:'',stepping:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + true + + + + + + false + + + + + + {} + + + + + + + + + + + + + + + + + chipset + ,model:'',scaleTimers:,sw1:'',sw2:'',sound:,floppies:,monitor:'',rtcDate:'' + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + device + ,type:'',baudReceive:,baudTransmit:,autoMount:'' + + + + + + + + + + + + + + + + + + + + keyboard + ,model:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + parallel + ,adapter:,binding:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + + 0 + + + + + + + 0 + + + + + + + false + + + + + serial + ,adapter:,baudReceive:,baudTransmit:,binding:'',tabSize:,charBOL:,upperCase: + + + + + + + + + + + + + + + + + + + + mouse + ,serial:'' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fdc + ,autoMount:'',sortBy:'' + + + + + + + + + + + + + + + + + + + + + xt + + + + + hdc + ,drives:'',type:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + null + + + + + + + + + + + + + + + + + rom + ,addr:,size:,alias:,file:'',notify:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + null + + + + + + null + + + + + + true + + + + + ram + ,addr:,size:,file:'',load:,exec:,test: + + + + + + + + + + + + + + + + + + + + + null + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 0 + + + + + + 0 + + + + + + false + + + + + + 1bpp + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + false + + + + + + 1 + + + + + + 1 + + + + + + + 80 + + + + + + + 25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + 0 + + + + + + null + + + + + + 0 + + + + + + 60 + + + + + video + ,model:'',mode:,screenWidth:,screenHeight:,screenColor:'',screenRotate:,bufferAddr:,bufferRAM:,bufferFormat:'',bufferCols:,bufferRows:,bufferBits:,bufferLeft:,bufferRotate:,memory:,switches:'',scale:,cellWidth:,cellHeight:,charCols:,charRows:,fontROM:'',fontColor:'',touchScreen:'',autoLock:,aspectRatio:,smoothing:,interruptRate:,refreshRate: + + + + + + + + + + + + + + + 16 + + + + + + + + + + + + + + + + + debugger + ,base:,commands:'',messages:'' + + + + + + + + + + + + + + panel + + + + + + + + + + + + + + + + + + + + + true + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + computer + ,autoPower:,busWidth:,resume:'',state:'' + + + + + + + +
    diff --git a/versions/pc8080/1.35.1/document.css b/versions/pc8080/1.35.1/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/pc8080/1.35.1/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/pc8080/1.35.1/document.xsl b/versions/pc8080/1.35.1/document.xsl new file mode 100644 index 0000000000..734bed9211 --- /dev/null +++ b/versions/pc8080/1.35.1/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

    +
    + + + + + + + +

    +
    + +

    +
    +
    +
    + + + + + + +
    +
    + + +
    + +   + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + +

    +
    + + +

    +
    + + +

    +
    + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/pc8080/1.35.1/machine.xsl b/versions/pc8080/1.35.1/machine.xsl new file mode 100644 index 0000000000..3e31bbe058 --- /dev/null +++ b/versions/pc8080/1.35.1/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pc8080/1.35.1/manifest.xsl b/versions/pc8080/1.35.1/manifest.xsl new file mode 100644 index 0000000000..0b9d9d9c2f --- /dev/null +++ b/versions/pc8080/1.35.1/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/pc8080/1.35.1/outline.xsl b/versions/pc8080/1.35.1/outline.xsl new file mode 100644 index 0000000000..60a31dcbaa --- /dev/null +++ b/versions/pc8080/1.35.1/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pc8080/1.35.1/pc8080-dbg.js b/versions/pc8080/1.35.1/pc8080-dbg.js new file mode 100644 index 0000000000..02c09a806c --- /dev/null +++ b/versions/pc8080/1.35.1/pc8080-dbg.js @@ -0,0 +1,308 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpudef.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpustate.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/cpuops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/chipset.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/keyboard.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/video.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2017 +*/ +var l;function aa(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]} +for(var ca="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},da="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this,ea=["Math","trunc"],fa=0;faa?-b:b};ka!=ia&&null!=ka&&ca(da,ha,{configurable:!0,writable:!0,value:ka}); +var m={Ce:0,Fe:1,Ge:2,He:3,Ie:4,Je:5,Ke:6,Le:7,Me:8,Ne:9,Oe:10,Pe:11,Qe:12,Re:13,Se:14,Te:15,Ue:16,Ve:17,We:18,Xe:19,Ye:20,Ze:21,$e:22,af:23,bf:24,cf:25,df:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,ab:65,Ub:66,Vb:67,Fb:68,E:69,Yb:70,Zb:71,$b:72,ac:73,bc:74,cc:75,Hb:76,gc:77,hc:78,lc:79,mc:80,Q:81,nc:82,pc:83,qc:84,rc:85,tc:86,uc:87, +wc:88,xc:89,wb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,yc:97,ud:98,xd:99,d:100,e:101,Bd:102,Dd:103,Ed:104,Fd:105,Od:106,k:107,Pd:108,Rd:109,n:110,Sd:111,p:112,q:113,r:114,oe:115,t:116,qe:117,re:118,se:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,ef:127},la={59:186,61:187,173:189,224:91}; +function ma(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function n(a,b,c){b?9=b?4:4294967295>=b?8:9);return oa(a,16,b,c?"0x":"")}function pa(a){return n(a,2,!0)} +function q(a){return n(a,4,!0)}function qa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return wa[a]})}function xa(a,b){return(a+" ").slice(0,b)} +function ya(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var wa={"&":"&","<":"<",">":">",'"':""","'":"'"},Aa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"}; +function Ca(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} +function Ea(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;cb.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Qa=g.load;d.Ia=g.exec;if(e=g.bytes)d.la=e;else if(e=g.words)for(d.la=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.la=Array(4*e.length),f=c=0;c>8&255,d.la[f++]=e[c]>>16&255,d.la[f++]=e[c]>>24&255;else(e=g.data)?d.Nf=e:d.la=g;d.la&&(d.la.length?1==d.la.length&&(r(d.la[0]),d=null):(r("Empty resource: "+a),d=null));d.ra=g.symbols}catch(h){r("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.cb=this.id:(this.eb=this.id.substr(0,a),this.cb=this.id.substr(a+1));this.G={ready:!1,mb:!1,Ib:!1,ja:!1,error:!1};this.zb=null;this.G.error=!1;this.ha=c||0;this.K=this.w=this.I=this.R=this.ua=null;fb.push(this)} +function gb(a,b,c){hb[a]&&b&&(hb[a][b]=c)}function ib(){return Date.now()||+new Date}function Ya(a,b,c){b||r((c?c+": ":"")+a)}function r(a){window&&window.alert(a)}function jb(a){var b=!1;window&&(b=window.confirm(a));return b}function kb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b>1)+2;10>this.g&&(this.g=10);15>2;this.j=this.u-1;this.L=this.N/this.u|0;this.H=this.L-1;this.A=[];this.B=[];this.D=this.F=!1;this.S=[];this.T=[];a=new z;Mb(a,this.K);this.b=Array(this.L);for(b=0;b>>a.g;0f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.J)return h.pb+=h.J-e,h.J=e,!0;if(e>=h.J+h.pb){p=h.size-(e-k);p>f&&(p=f);h.pb=e-h.J+p;e=k+a.u;f-=p;g++;continue}}return Ob(Rb,e,f)}e=new z(e,p,a.u,d);Mb(e,a.K,h);a.b[g++]=e;e=k+a.u;f-=p}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Sb[d]+" at "+q(b)),!0):Ob(Tb,b,c)} +function Ub(a,b){return a.b[(b&a.C)>>>a.g].ob(b&a.j,b)}function Vb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Hc(c,b):a.b[d++].Ya(c,b)|a.b[d&a.H].Ya(0,b+1)<<8}function Wb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Nb(c,b):a.b[d++].ob(c,b)|a.b[d&a.H].ob(0,b+1)<<8}function Xb(a,b,c){a.b[(b&a.C)>>>a.g].qb(b&a.j,c&255,b)}function Yb(a,b,c){var d=b&a.j,e=(b&a.C)>>>a.g;d!=a.j?a.b[e].Kc(d,c&65535,b):(a.b[e++].$a(d,c&255,b),a.b[e&a.H].$a(0,c>>8&255,b+1))} +function Zb(a){for(var b=0,c=[],d=0;d>>=f)&k;if(void 0!==g){if(g[0])g[0](b,k,d);a.K&&a.F!=g[1]&&gc(a.K,b,k)}else a.K&&(Eb(a.K,a,b,k,d),a.F&&gc(a.K,b,k));f+=h<<3;b+=h;e-=h}}function Ob(a,b,c){r("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Rb=1,Tb=2,ic;if(Fb){var jc=new ArrayBuffer(2);(new DataView(jc)).setUint16(0,256,!0);ic=256===(new Uint16Array(jc))[0]}else ic=!1;var kc=ic; +function z(a,b,c,d){this.id=lc+=2;this.b=null;this.J=a;this.pb=b;this.size=c||0;this.type=d||vc;this.w=d==wc;Mb(this);this.Ea=this.Dc=!1;if(c)if(Fb)this.j=new ArrayBuffer(c),this.R=new DataView(this.j,0,c),this.g=new Uint8Array(this.j,0,c),this.u=new Uint16Array(this.j,0,c>>1),this.b=new Int32Array(this.j,0,c>>2),xc(this,kc?yc:zc);else{this.b=Array(c>>2);for(a=0;a>2),b=0;b>8,c)};l.ie=function(a){return this.b[a>>2]>>>((a&3)<<3)&255};l.me=function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8};l.we=function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<>2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<>8);this.Ea=!0};l.ge=function(a,b){if(this.K&&null!=this.J){var c=this.K;Gc(c,this.J+a,1,c.M)&&c.ea(!0)}return this.ob(a,b)};l.ke=function(a,b){if(this.K&&null!=this.J){var c=this.K;Gc(c,this.J+a,2,c.M)&&c.ea(!0)}return this.Nb(a,b)}; +l.ue=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;Gc(d,this.J+a,1,d.B)&&d.ea(!0)}this.w?this.rb(0,b):this.qb(a,b,c)};l.ye=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;Gc(d,this.J+a,2,d.B)&&d.ea(!0)}this.w?this.rb(0,b):this.Sb(a,b,c)};l.fe=function(a){return this.g[a]};l.he=function(a){return this.g[a]};l.je=function(a){return this.R.getUint16(a,!0)};l.le=function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.u[a>>1]};l.te=function(a,b){this.g[a]=b;this.Ea=!0}; +l.ve=function(a,b){this.g[a]=b;this.Ea=!0};l.xe=function(a,b){this.R.setUint16(a,b,!0);this.Ea=!0};l.ze=function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.u[a>>1]=b;this.Ea=!0};var vc=0,wc=2,Sb=["NONE","RAM","ROM","VID","H/W"],lc=0,Bc=[],Ac=[z.prototype.ie,z.prototype.we,z.prototype.me,z.prototype.Ae],Ec=[z.prototype.ge,z.prototype.ue,z.prototype.ke,z.prototype.ye];if(Fb)var zc=[z.prototype.fe,z.prototype.te,z.prototype.je,z.prototype.xe],yc=[z.prototype.he,z.prototype.ve,z.prototype.le,z.prototype.ze]; +function Hc(a,b){t.call(this,"CPU",a,1);var c=a.multiplier||1;this.Aa=a.cycles||b;this.U=c;this.Ta=Math.round(this.Aa/1E4)/100;this.Z=this.Ta*this.U;this.G.ma=!1;this.G.Qb=!1;this.G.lb=a.autoStart;this.G.Bc=!1;this.G.Wa=!1;this.xa=this.oa=0;this.za=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.Db=this.tb.bind(this);zb(this)}aa(Hc,t);l=Hc.prototype; +l.Ga=function(a,b,c,d){this.R=a;this.I=b;this.K=d;for(b=0;b=a.oa&&(a.oa+=a.na,c=!0);0<=a.sa&&a.sa<=Qc(a)&&(a.na=a.sa=-1,Lc(a),a.ea(),c=!0);c&&a.i(Qc(a)+" cycles: checksum="+n(a.xa))}} +l.da=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.P[b]=c;a=!0;break;case "run":this.P[b]=c;c.onclick=function(){var a;if(a=d.R)if(a=d.R,a.G.ja)a=!0;else{var b=null,c,h=kb(a.id);for(c=0;ca.Y/a.Z?b=1:d=!0;a.U=b;b=a.Ta*a.U;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.P.setSpeed;e&&(e.textContent=b);a.i("target speed: "+b)}c&&a.R&&a.R.Za()}Sc(a,a.X);a.X=0;a.W=ib();a.ba=0;Tc(a);return d}function Vc(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function Wc(a,b,c){0<=b&&ba.T[b][0]&&(c*=a.Aa*a.U/1E3,a.T[b][0]=c+Xc(a))}function Xc(a,b){var c=a.fa-=a.b;a.b=0;b&&(a.fa=0);return c} +l.tb=function(a){if(Bb(this,!0)){if(!this.G.ma){Rc(this);this.R&&this.R.start(this.W,Qc(this));this.G.ma=!0;this.G.Qb=!0;this.V&&this.V.start();var b=this.P.run;b&&(b.textContent="Halt");this.R&&(Yc(this.R,!0),a&&this.R.Za(!0))}this.Va>=this.Aa&&Tc(this,!0);this.Da=0;this.Ma=ib();this.ba&&(a=this.Ma-this.ba,a>this.jb&&(this.W+=a,this.W>this.Ma&&(this.W=this.Ma)));try{do{for(var c,d=this.G.Wa?1:this.Na,e=this.T.length-1;0<=e;e--){var f=this.T[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Eb(c);c=Xc(this,!0); +this.Da+=c;this.X+=c;Pc(this,c);a=c;for(var g=this.T.length-1;0<=g;g--){var h=this.T[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ta-=c;if(0>=this.ta){this.ta+=this.Na;++this.kb>=Zc&&(this.R&&Yc(this.R),this.kb=0);break}}while(this.G.ma)}catch(k){this.ea();Oc(this);this.R&&this.R.stop(ib(),Qc(this));Bb(this,!1);xb(this,k.stack||k.message);return}c=setTimeout;d=this.Db;this.ba=ib();e=this.jb;this.Da&&(e=Math.round(e*this.Da/this.Na));e-=this.ba-this.Ma;if(f=this.ba-this.W)this.Y=Math.round(this.X/ +(10*f))/100,864E5<=f&&(this.ka=0,Rc(this));if(0>e||this.Ye&&(this.W-=e),e=0;this.Va+=this.Da;this.ba+=e;c(d,e)}else Oc(this),this.R&&this.R.stop(ib(),Qc(this))};l.Eb=function(){return 0};l.ea=function(a){Ab(this,!0);Xc(this);Sc(this,this.X);this.X=0;if(this.G.ma){this.G.ma=!1;this.V&&this.V.stop();var b=this.P.run;b&&(b.textContent="Run")}this.G.complete=a};function Oc(a,b){if(a.R){for(var c=a.R,d=0;d>8&255;a.A=b&255}function wd(a){return a.B<<8|a.C}function xd(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.D<<8|a.F} +function yd(a,b){a.D=b>>8&255;a.F=b&255}function A(a,b){a.j=b&65535}function zd(a){return a.H&256?1:0}function Ad(a,b){a.H=a.H&255|b}function Bd(a){return Gb[a.L&255]?4:0}function Cd(a){return(a.L^a.O)&16?16:0}function Dd(a){return a.H&255?0:64}function Ed(a){return a.L&128?128:0}function sd(a){return a.N&-214|Ed(a)|Dd(a)|Cd(a)|Bd(a)|zd(a)}function qd(a,b){a.H=a.L=a.O=0;b&1&&(a.H|=256);b&4||(a.L|=1);b&16&&(a.O|=16);b&64||(a.H|=255);b&128&&(a.L^=192);a.N=a.N&-726|b&512|2} +function Fd(a,b){a.O=a.g^b;return a.L=(a.H=a.g+b)&255}function Gd(a,b){a.O=a.g^b;return a.L=(a.H=a.g+b+(a.H&256?1:0))&255}function Hd(a,b){a.H=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.H}function Id(a,b){a.O=b^255;b=a.L=b+255&255;a.H=a.H&-256|b;return b}function Jd(a,b){a.O=b;b=a.L=b+1&255;a.H=a.H&-256|b;return b}function Kd(a,b){return a.L=a.H=a.O=a.g|b}function Ld(a,b){b^=255;a.O=a.g^b;return a.L=(a.H=a.g+b+1^256)&255} +function Md(a,b){b^=255;a.O=a.g^b;return a.L=(a.H=a.g+b+(a.H&256?0:1)^256)&255}function Nd(a,b){return a.L=a.H=a.O=a.g^b}function E(a,b){a=a.I;return a.b[(b&a.C)>>>a.g].Ya(b&a.j,b)}function Od(a,b,c){a=a.I;a.b[(b&a.C)>>>a.g].$a(b&a.j,c&255,b)}function F(a){var b=E(a,a.j);A(a,a.j+1);return b}function G(a){var b=Vb(a.I,a.j);A(a,a.j+2);return b}function Pd(a){var b=Vb(a.I,a.M);a.M=a.M+2&65535;return b}function H(a,b){a.M=a.M-2&65535;Yb(a.I,a.M,b)} +function Qd(a){if(a.b&&a.S&255&&a.N&512){for(var b=0;8>b&&!(a.S&1<b?255:1<>8;Ad(this,a&256);this.b-=4},Ud,function(){var a;yd(this,a=D(this)+ud(this));Ad(this,a>>8&256);this.b-=10},function(){this.g=E(this,ud(this));this.b-=7},function(){vd(this,ud(this)-1);this.b-= +5},function(){this.A=Jd(this,this.A);this.b-=5},function(){this.A=Id(this,this.A);this.b-=5},function(){this.A=F(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(a|this.g)>>1;Ad(this,a);this.b-=4},Ud,function(){xd(this,G(this));this.b-=10},function(){Od(this,wd(this),this.g);this.b-=7},function(){xd(this,wd(this)+1);this.b-=5},function(){this.B=Jd(this,this.B);this.b-=5},function(){this.B=Id(this,this.B);this.b-=5},function(){this.B=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255| +zd(this);Ad(this,a&256);this.b-=4},Ud,function(){var a;yd(this,a=D(this)+wd(this));Ad(this,a>>8&256);this.b-=10},function(){this.g=E(this,wd(this));this.b-=7},function(){xd(this,wd(this)-1);this.b-=5},function(){this.C=Jd(this,this.C);this.b-=5},function(){this.C=Id(this,this.C);this.b-=5},function(){this.C=F(this);this.b-=7},function(){var a=this.g<<8;this.g=(zd(this)<<8|this.g)>>1;Ad(this,a&256);this.b-=4},Ud,function(){yd(this,G(this));this.b-=10},function(){var a=G(this);Yb(this.I,a,D(this)); +this.b-=16},function(){yd(this,D(this)+1);this.b-=5},function(){this.D=Jd(this,this.D);this.b-=5},function(){this.D=Id(this,this.D);this.b-=5},function(){this.D=F(this);this.b-=7},function(){var a=0,b=zd(this);if(Cd(this)||9<(this.g&15))a|=6;if(b||154<=this.g)a|=96,b=1;this.g=Fd(this,a);Ad(this,b?256:0);this.b-=4},Ud,function(){var a;yd(this,a=D(this)+D(this));Ad(this,a>>8&256);this.b-=10},function(){var a;a=G(this);a=Vb(this.I,a);yd(this,a);this.b-=16},function(){yd(this,D(this)-1);this.b-=5},function(){this.F= +Jd(this,this.F);this.b-=5},function(){this.F=Id(this,this.F);this.b-=5},function(){this.F=F(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},Ud,function(){this.M=G(this)&65535;this.b-=10},function(){Od(this,G(this),this.g);this.b-=13},function(){this.M=this.M+1&65535;this.b-=5},function(){var a=D(this);Od(this,a,Jd(this,E(this,a)));this.b-=10},function(){var a=D(this);Od(this,a,Id(this,E(this,a)));this.b-=10},function(){Od(this,D(this),F(this));this.b-=10},function(){this.H|=256;this.b-= +4},Ud,function(){var a;yd(this,a=D(this)+this.M);Ad(this,a>>8&256);this.b-=10},function(){this.g=E(this,G(this));this.b-=13},function(){this.M=this.M-1&65535;this.b-=5},function(){this.g=Jd(this,this.g);this.b-=5},function(){this.g=Id(this,this.g);this.b-=5},function(){this.g=F(this);this.b-=7},function(){Ad(this,zd(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.u=this.A;this.b-=5},function(){this.u=this.B;this.b-=5},function(){this.u=this.C;this.b-=5},function(){this.u=this.D;this.b-= +5},function(){this.u=this.F;this.b-=5},function(){this.u=E(this,D(this));this.b-=7},function(){this.u=this.g;this.b-=5},function(){this.A=this.u;this.b-=5},function(){this.b-=5},function(){this.A=this.B;this.b-=5},function(){this.A=this.C;this.b-=5},function(){this.A=this.D;this.b-=5},function(){this.A=this.F;this.b-=5},function(){this.A=E(this,D(this));this.b-=7},function(){this.A=this.g;this.b-=5},function(){this.B=this.u;this.b-=5},function(){this.B=this.A;this.b-=5},function(){this.b-=5},function(){this.B= +this.C;this.b-=5},function(){this.B=this.D;this.b-=5},function(){this.B=this.F;this.b-=5},function(){this.B=E(this,D(this));this.b-=7},function(){this.B=this.g;this.b-=5},function(){this.C=this.u;this.b-=5},function(){this.C=this.A;this.b-=5},function(){this.C=this.B;this.b-=5},function(){this.b-=5},function(){this.C=this.D;this.b-=5},function(){this.C=this.F;this.b-=5},function(){this.C=E(this,D(this));this.b-=7},function(){this.C=this.g;this.b-=5},function(){this.D=this.u;this.b-=5},function(){this.D= +this.A;this.b-=5},function(){this.D=this.B;this.b-=5},function(){this.D=this.C;this.b-=5},function(){this.b-=5},function(){this.D=this.F;this.b-=5},function(){this.D=E(this,D(this));this.b-=7},function(){this.D=this.g;this.b-=5},function(){this.F=this.u;this.b-=5},function(){this.F=this.A;this.b-=5},function(){this.F=this.B;this.b-=5},function(){this.F=this.C;this.b-=5},function(){this.F=this.D;this.b-=5},function(){this.b-=5},function(){this.F=E(this,D(this));this.b-=7},function(){this.F=this.g; +this.b-=5},function(){Od(this,D(this),this.u);this.b-=7},function(){Od(this,D(this),this.A);this.b-=7},function(){Od(this,D(this),this.B);this.b-=7},function(){Od(this,D(this),this.C);this.b-=7},function(){Od(this,D(this),this.D);this.b-=7},function(){Od(this,D(this),this.F);this.b-=7},function(){var a=this.j-1;if(this.La.length)for(var b=0;b>8;this.b-=10},function(){var a=G(this);Ed(this)||A(this,a);this.b-=10},function(){this.N&=-513;this.b-=4},function(){var a=G(this);Ed(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,sd(this)&255|this.g<<8);this.b-=11},function(){this.g=Kd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,48);this.b-=11},function(){Ed(this)&& +(A(this,Pd(this)),this.b-=6);this.b-=5},function(){this.M=D(this)&65535;this.b-=5},function(){var a=G(this);Ed(this)&&A(this,a);this.b-=10},function(){this.N|=512;this.b-=4;Qd(this)},function(){var a=G(this);Ed(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Xd,function(){Ld(this,F(this));this.b-=7},function(){H(this,this.j);A(this,56);this.b-=11}]; +function Yd(a){t.call(this,"ChipSet",a,32768);var b=a.model;b&&!Zd[b]&&Ya("Unrecognized ChipSet model: "+b);this.g=Zd[b]||{};a.sound&&(this.U=null,window&&(this.U=window.AudioContext||window.webkitAudioContext),this.U&&new this.U);zb(this)}aa(Yd,t);l=Yd.prototype;l.da=function(){return!1}; +l.Ga=function(a,b,c,d){this.I=b;this.w=c;this.K=d;this.R=a;this.B=Jb(a,"Keyboard");this.C=Jb(a,"SerialPort");this.video=Jb(a,"Video");ac(b,this,this.g.Bb);ec(b,this,this.g.Cb);if(d){var e=this;$d(d,16384,function(){for(var a="",b=0;b>8-this.T&255;x(this,a,null,b,"SHIFT.RESULT",c,!0);return c};l.Wd=function(a,b,c){x(this,a,b,c,"SHIFT.COUNT",null,!0);this.T=b};l.Yd=function(a,b,c){x(this,a,b,c,"SOUND1",null,!0);this.Y=b};l.Xd=function(a,b,c){x(this,a,b,c,"SHIFT.DATA",null,!0);this.N=b<<8|this.N>>8}; +l.Zd=function(a,b,c){x(this,a,b,c,"SOUND2",null,!0);this.Z=b};l.$d=function(a,b,c){x(this,a,b,c,"WATCHDOG",null,!0)};function be(a){var b=0,c=0,d=~a.M;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c} +l.Md=function(a,b){var c=this.D,c=c&~J.ya.jc;if((Qc(this.w)&64)<<1&&(c|=J.ya.jc,c!=this.D)){var d,e;d=this.L&1;e=this.L>>1&7;switch(e){case J.Ba.Ja.nd:break;case J.Ba.Ja.Lc:this.M=this.M<<1|d;break;case J.Ba.Ja.Rc:d=be(this);this.j[d]=J.Ba.vb;Db(this,"doNVRCommand(): erase data at addr "+q(d));break;case J.Ba.Ja.Mc:this.b=this.b<<1|d;break;case J.Ba.Ja.rd:d=be(this);e=this.b&J.Ba.vb;this.j[d]=e;Db(this,"doNVRCommand(): write data "+q(e)+" to addr "+q(d));break;case J.Ba.Ja.ld:d=be(this);e=this.j[d]; +null==e&&(e=J.Ba.vb);this.b=e;Db(this,"doNVRCommand(): read data "+q(e)+" from addr "+q(d));break;case J.Ba.Ja.md:this.b<<=1;this.S=this.b&J.Ba.vb+1;break;default:Db(this,"doNVRCommand(): unrecognized command "+pa(e))}}c&=~J.ya.kc;this.S&&(c|=J.ya.kc);c&=~J.ya.dc;if(d=this.B){d=this.B;if(e=d.A)e=d.w,e=Qc(d.w)>=d.F+e.Aa*e.U/1E3*1.2731488;e&&(d.A=!1);d=!d.A}d&&(c|=J.ya.dc);c&=~J.ya.sc;this.C&&this.C.ia&ce&&(c|=J.ya.sc);this.D=c;x(this,a,null,b,"FLAGS",c);return c}; +l.ae=function(a,b,c){x(this,a,b,c,"BRIGHTNESS");this.V=b};l.de=function(a,b,c){x(this,a,b,c,"NVR.LATCH");this.L=b};l.ce=function(a,b,c){x(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.u=this.u&-4|a;break;case 1:this.u=this.u&-13|a<<2;this.video&&(b=this.video,a=this.u,Db(b,"updateScrollOffset("+a+")"),b.sa!==a&&((b.sa=a)?$c(b,!0):b.xa=!0));break;case 2:switch(a){case 0:this.O=~this.O;break;case 2:case 3:this.X=3-a}break;case 3:this.W=a}}; +l.be=function(a,b,c){x(this,a,b,c,"DC011");b&J.Ka.kd?(b&=J.Ka.oc,this.H!=b&&(this.H=b,this.video&&(a=this.video,b=this.H==J.Ka.oc?50:60,Db(a,"updateRate("+b+")"),a.jb=b))):(b&=J.Ka.Wb,this.F!=b&&(this.F=b,this.video&&(a=this.F==J.Ka.Wb?132:80,b=this.video,Db(b,"updateDimensions("+a+","+(80>>0,g],v=Ca(u,k,a.Ac);0>v&&u.splice(-(v+1),0,k)}p&&(h.a=p.replace(/''/g,'"'))}a.C.push({Of:b,J:c,Qd:d,ra:e,zc:f})}delete this.ra}return!0};fe.prototype.va=function(){return!0}; +function ge(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{gb(a.eb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.longs||e.data;if(f)a.b=f;else if(g)for(a.b=Array(4*g.length),d=c=0;c>8&255,a.b[d++]=g[c]>>16&255,a.b[d++]=g[c]>>24&255;else a.b=e;a.ra=e.symbols;if(!a.b.length){r("Empty ROM: "+b);return}if(1==a.b.length){r(a.b[0]);return}}catch(h){a.aa("ROM data error: "+h.message);return}else for(b= +c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e>>f.g;0>>= +f.g;0=m.ab&&a<=m.wb?d.g&(Qe|Re)||(d.g|=Re,Ne(d,20,!0),Se(d)):a>=m.yc&&a<=m.z&&d.g&Re&&(d.g&=~Re,Ne(d,20,!1),Se(d));return!0}),c.onpaste=function(a){a:{if(d.C&&d.C.Ra&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a=a.clipboardData||window.clipboardData)){Te(d.C,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ua&&void 0!==this.b.Ua[b])return this.P[e]=c,c.onclick= +function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=0;17==b?e=Ue:20==b&&(e=Re);if(e){c.style.fontWeight="normal";if(d=!(a.g&e))c.style.fontWeight="bold";Ve(a,b,d)}Ne(a,b,d,!e);a.R&&a.R.Za()}}(this,this.b.Ua[b]),!0}}return!1};l.Ga=function(a,b,c,d){this.R=a;this.w=c;this.K=d;var e=this;this.L=Vc(this.w,function(){We(e)});this.V=Jb(a,"ChipSet");this.C=Jb(a,"SerialPort");ac(b,this,this.b.Bb);ec(b,this,this.b.Cb)}; +l.wa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};l.va=function(a){return a?this.save():!0};l.reset=function(){this.j=[];this.g=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.aa("reset error")};l.save=function(){var a=new td(this);switch(this.b.pa){case K.pa:a.set(0,[this.D,this.B,this.A,this.F,-1])}return a.data()}; +l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.pa){case Xe.pa:return!0;case K.pa:return this.D=b[0],Se(this,this.D&K.Ca.ec),this.B=b[1],this.A=b[2],this.F=b[3],this.u=b[4],!0}return!1};function Se(a,b){var c;null!=b?a.H=b:b=a.H;for(var d in a.b.fb)if(c="led-"+d,c=a.P[c]){var e=a.b.fb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+n(16711680,6):"#000000"}if(c=a.P["led-caps-lock"])c.style.backgroundColor=a.g&Re?"#"+n(65280,6):"#000000"} +function Ve(a,b,c,d){var e=0;switch(b){case 16:e=d?Ye:Ze;break;case 17:e=d?$e:Ue;break;case 18:e=d?af:bf;break;case 91:e=d?cf:df;break;case 20:e=Re,c=!(a.g&e)}e&&(a.g=c?a.g|e:a.g&~e);return c} +function Pe(a,b,c){var d=!0,e=b.keyCode,e=la[e]||e;c=Ve(a,e,c,2==b.location);var f;a:if(e=a.b.Tb[e]||e,a.b.Sa[e])f=e;else{for(f in a.b.Ua)if(a.b.Ua[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.g&(ef|ff)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.g=c?a.g|ff:a.g&~ff)),d=Ne(a,f,c),(!(f>=m.ab&&f<=m.wb)||a.g|gf)&&b.preventDefault&&b.preventDefault());return d} +function Oe(a,b,c){var d=!0;if(c){var e=b.keyCode,f=a.b.Sa[e],g;if(g=f){a:{for(var h in a.b.sb)if(a.b.sb[h]==f){f=+h;break a}f=0}g=!f}g&&(d=Ne(a,e,c,!0),b.preventDefault&&b.preventDefault())}return d} +function Ne(a,b,c,d){var e;a:{for(e=0;ee?a.j.push({Pb:b,Mb:Date.now(),yb:d||!1}):(a.j[e].Mb=Date.now(),a.j[e].yb=d||!1),d&&We(a);else if(0<=e){if(!a.j[e].yb&&(d=a.j[e].Mb)&&Date.now()-dc||c>e)c=e}else{Ne(a,d,!1);b=0;continue}}b++}0<=c&&Wc(a.w,a.L,c)}l.Nd=function(a,b){var c=this.B;0<=this.u&&(this.u"]]= +229,N[m["<"]]=230,N[m.hc]=231,N[m.Ub]=232,N[m.wc]=233,N[m["?"]]=245,N[m.gc]=246,N[m.tc]=248,N[m.Vb]=249,N[m.wb]=250,N),Tb:{},fb:{},Ua:{"caps-lock":20,ctrl:17,esc:27,tab:9,"num-comma":116,"break":117,"line-feed":118,"no-scroll":119,setup:120},Nc:{qa:130,INIT:127},Ca:{qa:130,bd:1,ad:2,$c:4,Zc:8,cd:16,fc:32,ec:63,od:64,De:128,INIT:0},Yc:127};K.fb={l4:K.Ca.bd,l3:K.Ca.ad,l2:K.Ca.$c,l1:K.Ca.Zc,locked:K.Ca.cd,local:K.Ca.fc,online:~K.Ca.fc,"caps-lock":Re};var Me={SI1978:Xe,VT100:K}; +K.INIT=[[K.Ca.INIT,K.Nc.INIT,!1,0,-1]];K.Bb={130:qe.prototype.Nd};K.Cb={130:qe.prototype.ee};Ua(function(){for(var a=qb(document,"pc8080","keyboard"),b=0;b>3)*a.N,!Nb(a.I,a.ka,a.L,3)))return!1;a.L?(a.Va=a.j.createImageData(b,c),a.hb=16/a.na|0,pf(a,a.L>>1)):pf(a,(a.O+1)*a.Z);a.D=document.createElement("canvas");a.D.width=b;a.D.height=c;a.ta=a.D.getContext("2d");a.T={};a.X=1<=a.Da?8:16,f=8>(7>4)*c)}return k}l.wa=function(a,b){return b||!a||this.restore(a)?!0:!1};l.va=function(a){return!a||this.save()};l.save=function(){var a=new td(this);a.set(0,[]);return a.data()};l.restore=function(){return!0}; +l.Xa=function(){var a=!1;if(this.b){if(this.b.Xa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.M/this.H;b>c&&(a=Math.round(c/b*100)+"%")}this.Ta?(this.F.style.width=a,this.F.style.width=a,this.F.style.display="block",this.F.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Xa();a=!0}this.W&&this.W.focus()}return a}; +function nf(a,b){!b&&a.b&&(a.Ta?a.F.style.width=a.F.style.height="":a.b.style.width=a.b.style.height="");Db(a,"notifyFullScreen("+b+")")}function pf(a,b){a.gb=b;a.V=!1;if(void 0===a.A||a.A.length!=a.gb)a.A=Array(a.gb)}function Af(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==rf&&(208<=c&&236>c?e=a.X+sf:28<=c&&72>c&&(e=a.X+tf));a=a.U[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]} +function $c(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.ib&1?(Rd(a.w,2),c=!1):Rd(a.w,1):Rd(a.w,4));if(c&&a.V&&a.L){for(var d=a.I,e=a.L,f=!0,g=a.ka>>>d.g;0>=1);;){var y=Ub(a.I,u++);if((y&Bf)==Bf){var w=Ub(a.I,u++),d=w&Cf,c=(w&Df)<<8|Ub(a.I,u),c=c+(w&Ef? +Ff:Gf);break}if(p>4)*y.ca,L,ja,ua,na,Ma=y.ga,hc=y.ca;C?(L=B*w.ga,ja=e*w.ca,ua=w.ga,na=w.ca):(L=B*w.La,ja=e*w.Ma,ua=w.La,na=w.Ma);y.ga>w.ga&&(L*=2,ua*=2);y.ca>w.ca&&(v==zf&&(T+=w.ca),hc=w.ca);C?C.drawImage(y.canvas,za,T,Ma,hc,L,ja,ua,na):(L+=0,ja+=0,w.j.drawImage(y.canvas, +za,T,Ma,hc,L,ja,ua,na))}h++}g++}e++}}a.V=!0;!b&&a.xa&&1==h&&(a.A[k]=-1,h=0);a.xa=!1;(h||b)&&a.ta&&a.j.drawImage(a.D,0,a.sa,a.C,a.N-a.ca,0,0,a.Db,a.td)}else{e=a.ka;f=e+a.L;k=h=g=0;b=a.C;p=0;c=a.N;v=d=0;u=a.na;B=(1<>8|(w&255)<<8);h>C&B,Af(a,a.Va,h++,k,za),C+=u;h>p&&(p=h);k=d&&(d=k+1)}e+=2;g++;if(h>=a.C&&(h=0,k++,k>a.N))break}a.V=!0;bMissing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=Ha().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height= +(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Pa("aspect"));f&&.3<=f&&3.33>=f&&(Ta("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Oa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new kf(d,e,g,f,c);pb(d,c)}}); +function Hf(a){t.call(this,"SerialPort",a,8388608);this.T=+a.adapter;switch(this.T){case 0:this.U=0;this.X=2;break;default:r("Unrecognized serial adapter #"+this.T);return}this.g=this.j=null;this.W=a.tabSize;this.S=a.charBOL;this.u=0;this.N=!1;this.D=!0;var b=a.binding;if("console"==b)this.j="";else{var c;a=If;b&&(void 0===c&&(c="Panel"),(c=mb(c,this.id))&&(b=c.P[b])&&this.da(null,a,b))}this.A="";this.b=this.Ra=this.H=null;this.exports={connect:this.Fc,receiveData:this.Ob,receiveStatus:this.ne}} +aa(Hf,t);l=Hf.prototype;l.da=function(a,b,c,d){var e=this;switch(b){case If:return this.P[b]=this.g=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64");if(2==c.length){var d=ya(c[0]);if(d!=this.cb)return;c=ya(c[1]);if(this.b=lb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.D);if(this.Ra=e.receiveData){this.D=a;this.H=e.receiveStatus;this.status("Connected "+this.eb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}}; +l.wa=function(a,b){if(!b)if(this.Fc(this.D),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.va=function(a){return a?this.save():!0};l.reset=function(){Mf(this)};l.save=function(){var a=new td(this),b=0,c=[];c[b++]=this.F;c[b++]=this.M;c[b++]=this.O;c[b++]=this.ia;c[b++]=this.B;c[b++]=this.C;c[b]=this.L;a.set(0,c);return a.data()};l.restore=function(a){return Mf(this,a[0])}; +function Mf(a,b){var c=0;b||(b=Nf);a.F=b[c++];a.M=b[c++];a.O=b[c++];a.ia=b[c++];a.B=b[c++];a.C=b[c++];a.L=b[c];return!0}function Of(a,b){var c=a.L&b;b&15||(c>>=4);b=Pf[c];c=((a.B&Qf)>>2)+6;a.B&Rf&&c++;c+=((a.B&Sf)>>6)+1>>1;return 1E3/Math.round(b/c)}function Jf(a,b){Db(a,"receiveByte("+pa(b)+"), status="+pa(a.ia));return a.N||a.ia&Tf?!1:(a.M=b,a.ia|=Tf,Rd(a.w,a.X),!0)} +l.Ob=function(a){null!=a&&(this.A="number"!=typeof a?a:this.A+String.fromCharCode(a));this.A&&(Jf(this,this.A.charCodeAt(0))&&(this.A=this.A.substr(1)),this.A&&this.w&&Wc(this.w,this.Y,Of(this,Uf)));return!0};l.ne=function(a){this.ia&=~Vf;a&64&&(this.ia|=Vf)};function Te(a,b){a.ia=a.ia|ce|Wf;b&&a.Ra&&a.Ra.call(a.b,b)}l.Hd=function(a,b){var c=this.M;x(this,a,null,b,"DATA",c);this.ia&=~Tf;return c};l.Gd=function(a,b){var c=this.ia;x(this,a,null,b,"STATUS",c);return c}; +l.Vd=function(a,b,c){x(this,a,b,c,"DATA");this.O=b;this.ia&=~(ce|Wf);Db(this,"transmitByte("+pa(b)+")");if(19==b)this.N=!0;else if(17==b)this.N=!1;else if(this.Ra&&this.Ra.call(this.b,b),this.g)if(8==b)this.g.value=this.g.value.slice(0,-1),0":String.fromCharCode(b);c=a.length;9==b?(b=this.W||8,c=b-this.u%b,this.W&&(a=xa("",c))):13==b&&(this.u=c=0,a="\n");this.S&&!this.u&&c&&(a=String.fromCharCode(this.S)+a);this.g.value+=a;this.g.scrollTop= +this.g.scrollHeight;this.u+=c}else if(null!=this.j){if(10==b||1024<=this.j.length)this.i(this.j),this.j="";10!=b&&(this.j+=String.fromCharCode(b))}this.w&&Wc(this.w,this.Z,Of(this,Xf))};l.Ud=function(a,b,c){x(this,a,b,c,"CONTROL");this.F?(this.H&&(b^this.C)&(Yf|Zf)&&(a=0,this.D?(a|=b&Yf?32:0,a|=b&Zf?320:0):(a|=b&Yf?16:0,a|=b&Zf?1048576:0),this.H.call(this.b,a)),this.C=b,this.C&$f&&(this.F=!1)):(this.B=b,this.F=!0)};l.Td=function(a,b,c){x(this,a,b,c,"BAUDRATES");this.L=b}; +var Qf=12,Rf=16,Sf=192,Zf=2,Yf=32,$f=64,ce=1,Tf=2,Wf=4,Vf=128,Uf=15,Xf=240,Pf=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Nf=[!1,0,0,133,142,39,238],If="buffer",Kf={0:Hf.prototype.Hd,1:Hf.prototype.Gd},Lf={0:Hf.prototype.Vd,1:Hf.prototype.Ud,2:Hf.prototype.Td};Ua(function(){for(var a=qb(document,"pc8080","serial"),b=0;bthis.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.N?a="end":a=this.g[this.b+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(ya(a.substring(d,f))),d=f+1}}return b}; +function bg(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a<<32-b>>32-b:(b=Math.pow(2,b-1),a>=b?(d=a%b,(a/b|0)&1&&(d-=b)):a<-b&&(d=a%b,((-a-1)/b|0)&1?d&&(d+=b):d||(d-=b)));a!=d&&(a=d);return a} +function cg(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "^/":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= +f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case ",,":e=bg(e,18,!0)*Math.pow(2,18)+bg(f,18,!0);break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=bg(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*|,,| )/);d=dg(a,b,0,b.length,a.u,c);void 0!==d&&e&&lg(a,null,d)}return d} +function mg(a,b){var c,d=a.U[0],e=a.U[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=kg(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?jg(a,g):"undefined")}if(a.fa.length)for(d=a.fa[0],e=a.fa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=b.replace("["+c[1]+"]","unimplemented");for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e= +a.S-a.ba}if(null==e)break;b=b.replace(d[0],e.toString())}return b}function fg(a,b){for(;b;){switch(b&3){case 1:a=-bg(a);break;case 2:a|=-1;break;case 3:for(var c=35;0<=c&&!(a&Math.pow(2,c));)c--;a=35-c}b>>>=2}return a} +function eg(a,b,c,d,e){e=void 0===e?0:e;var f,g=Array.isArray(d)?d:void 0;if(null!=b){f=a.Kb(b);if(0<=f)f=a.Lb(f);else if(f=b,a.A[f]?f=a.A[f].value:(f=f.substr(0,6),f=a.A[f]&&a.A[f].value),null!=f){var h=a.A[b]&&a.A[b].pe;h&&(g?g.push(h):(g=kg(a,h,d),void 0!==g?f+=g:(d||a.i("undefined "+(c||"value")+": "+b+" ("+h+")"),f=void 0)))}else f=ma(b,1c&&(d+=" '"+String.fromCharCode(c)+"'"));a.i((null!=b?b+": ":"")+d);return e}function ng(a,b){var c=0;if(a.A){if(b)return lg(a,b,a.A[b]&&a.A[b].value);b=Object.keys(a.A);b.sort();for(var d=0;d=a?8:262143>=a?18:36);b=oa(b,2,a,"",e);break;case 8:(a=0=a?6:16777215>=a?8:12);b=oa(b,8,a,e?"0o":"");break;case 10:(e=0=Math.abs(b)?5:11;b=oa(b,10,e);break;default:b=n(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} +var hg={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},gg={",,":1,"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20}; +function og(a){ag.call(this,a);this.style=pg;this.L=qg();this.sa=qg();this.T=qg();this.C=[];this.j=this.M=this.B=[];rg(this);this.X=0;sg(this);this.ka={};tg(this,a.messages);this.na=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Nc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Nc(b,a)})}aa(og,ag);l=og.prototype; +l.Ga=function(a,b,c,d){this.I=b;this.w=c;this.R=a;(a=Jc(a,"messages"))&&tg(this,a);this.oa=ug;$d(this,64,function(a){a:{var b=d.I.b,c=a[0],e=a=0,k=b.length;if(c){a=vg(wg(d,c));if(-1===a){d.i("invalid address: "+c);break a}e=a>>>d.I.g;k=1}d.i("blockid physical blockaddr used size type");d.i("-------- --------- ---------- ------ ------ ----");for(var c=-1,p=0;k--;){var u=b[e];u.type==c?p++||d.i("..."):(c=u.type,p=Sb[c],u&&d.i(n(u.id)+" %"+n(e<>>e.g;f!=e.j?e.b[g].Sb(f,b&65535,d):(e.b[g++].qb(f,b&255,d),e.b[g&e.H].qb(0,b>>8&255,d+1));c&&yg(a,c);Oc(this.w,!0)}};function qg(a){return{J:a,Fa:!1}}function Wg(a){return[a.J,a.Fa]}function Yg(a){return{J:a[0],Fa:a[1]}} +function wg(a,b,c){var d;c=(c?a.L:a.sa).J;if(void 0!==b){d=b=mg(a,b)||b;var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;cc&&(c=Ea(bh,a.substr(b,1))));return c};function ch(a,b){var c=0;a=a.Lb(b);if(void 0!==a)switch(b){case dh:case eh:case fh:case gh:case hh:case ih:case jh:case kh:c=2;break;case lh:case mh:case nh:case oh:case ph:case qh:case rh:c=4}return c?n(a,c):"??"} +l.Lb=function(a){var b;if(0<=a){var c=this.w;switch(a){case dh:b=c.g;break;case eh:b=c.u;break;case fh:b=c.A;break;case lh:b=ud(c);break;case gh:b=c.B;break;case hh:b=c.C;break;case mh:b=wd(c);break;case ih:b=c.D;break;case jh:b=c.F;break;case nh:b=D(c);break;case kh:b=E(c,D(c));break;case oh:b=c.M;break;case ph:b=c.j;break;case qh:b=sd(c);break;case rh:b=sd(c)&255|c.g<<8}}return b}; +function sh(a,b){b=mg(a,b)||b;for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Kb(b,c+1),0<=e&&(b=b.substr(0,c)+ch(a,e)+b.substr(c+1+bh[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=ma(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=wg(a,e))?(d=e+' "'+ah(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=wg(a,e))?(yg(d),d= +e+' "'+ah(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+$g(qg(this.w.j).J));this.ha&1073741824?this.Z.push(a):this.Y&&a==this.Y||(this.Y=a,this.ha&-2147483648&&(this.ea(),a+=" (cpu halted)"),this.i(a),this.w&&(a=this.w,Xc(a),a.ta=0,Oc(a)))}; +function Eb(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.cb+"."+(null!=d?"outPort":"inPort")+"("+q(c)+","+(f?f:"unknown")+(null!=d?","+pa(d):"")+")"+(null!=g?": "+pa(g):"")+(null!=e?" at "+$g(e):""))} +function sg(a){var b;if(Sd(a)){if(!a.H||!a.H.length){a.H=Array(th);for(b=0;b>>d.g],!1)}a.M=["br"];if(a.B)for(b=1;b>>d.g],!0);a.B=["bw"];a.ta=0}l.Pa=function(a,b,c){var d=!0;c||zh(this,a,b,!1,!0);if(a!=this.j){var e=vg(b);if(-1===e)this.i("invalid address: "+$g(b.J)),d=!1;else{var f=this.I;f.b[e>>>f.g].Pa(e&f.j,a==this.B)}}d&&(a.push(b),c?b.Fa=!0:(Ah(this,a,a.length-1,"set"),sg(this)));return d}; +function zh(a,b,c,d,e){var f=!1;c=vg(c);for(var g=1;g>>d.g],b==a.B));h.Fa||sg(a);break}}return f}function Bh(a,b){for(var c=1;c>24,4);break;case Oh:C=n(y.Gb(C,2),4);break;default:y="imm("+q(w)+")";break a}y.style==Eh&&w&Ph?C="["+C+"]":w&Qh||(C=(y.style==pg?"$":"0x")+C);y=C}else w&Qh?(y=(v&Rh)>>8, +w=bh[y],a.style==Eh&&v&Ph&&(y==kh&&(w="HL"),w="["+w+"]"),y=w):w&Sh&&(y=(f>>3&7).toString());if(!y||!y.length){h="INVALID";break}0b[0]?1:a[0]>>0;for(b=0;b>>0,h=f.Qd;if(e>=g&&e>8&255;case "C":d.A=f&255;break;case "D":d.B=f&255;break; +case "DE":d.B=f>>8&255;case "E":d.C=f&255;break;case "H":d.D=f&255;break;case "HL":d.D=f>>8&255;case "L":d.F=f&255;break;case "SP":d.M=f&65535;break;case "PC":A(d,f);a.L=qg(d.j);break;case "PS":qd(d,f);break;case "PSW":qd(d,f&255|d.N&-256);d.g=f>>8;break;case "CF":d.H=f?d.H|256:d.H&255;break;case "PF":f?Bd(d)||(d.L^=1):Bd(d)&&(d.L^=1);break;case "AF":d.O=f?~d.L&16|d.O&-17:d.L&16|d.O&-17;break;case "ZF":d.H=f?d.H&-256:d.H|255;break;case "SF":f?Ed(d)||(d.L^=192):Ed(d)&&(d.L^=192);break;case "IF":d.N= +f?d.N|512:d.N&-513;break;default:a.i("unknown register: "+e);return}Oc(d);a.i("updated registers:")}a.i(Wh(a));c&&(a.L=qg(d.j),xh(a,$g(a.L.J)))}}function ci(a,b){b=ya(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.i(sh(a,c[2])):kg(a,b,!1)}function di(a,b,c){var d="t"!=b;c=eg(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ra(c,function(){return Bb(a,!0)&&xg(a,e,d,!1)},function(){Oc(a.w);Bb(a,!1)})} +function xh(a,b,c,d){if(b=wg(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=wg(a,c,!0);if(!d||d.Jh[0].indexOf("+"))){var p=h[0]+":";h[2]&&(p+=" "+h[2]);a.i(p)}h[3]&&(g=h[3],f=null);f=Dh(a,b,g,f);a.i(f);a.L=b;e-=b.J-k;c++}}} +l.Ab=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.N?a="end":a=this.g[this.b+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(ya(a.substring(d,f))),d=f+1}}return b}; +function Ch(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.N&&(a.i("ended assemble at "+$g(a.T.J)),a.L=a.T,a.N=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Y=null;if(yb(a)&&0p||"z"$a.length&&(a.i("note: only "+$a.length+" available"),Ba=$a.length);Na-=Ba;0>Na&&(null==$a[$a.length-1].J?(Ba=Na+Ba,Na=0):Na+=$a.length);var ue=[];"call"==Dg&&(mc=1E5,ue=["CALL"]);for(void 0!==Cg&&a.i(Ba+ +" instructions earlier:");0=$a.length&&(Na=0);a.xa=Ba;Fg++;mc--}}Fg||(a.i("no "+Eg+"history available"),a.xa=void 0)}else{var cd=wg(a,na);if(cd){var dd=0;Ma&&("l"==Ma.charAt(0)&&(Ma=Ma.substr(1)||hc),dd=eg(a,Ma)>>>0,65536>4||1;Ji--&&0< +fd;){var gd=0,ve=0,pc,we="",Ig="",na=$g(cd.J);for(pc=16;0hd?String.fromCharCode(hd):".";fd--}oc&&(oc+="\n");oc+=na+" "+we+(pc?"":" "+Ig)}oc&&a.i(oc);a.sa=cd}}}}break;case "e":if("else"==f[0])break;var id=1,Jg=255,Kg=a.Ha,Lg=a.Xb;"ew"==f[0]&&(id=2,Jg=65535,Kg=a.Gb,Lg=a.Qc);var Mg=id<<1,Ng=f[1];if(null==Ng)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"), +a.i("\tew [a] [...] edit words at address a");else{var jd=wg(a,Ng);if(jd)for(var kd=2;kdDe;){for(var vb=null,Pi=256;65536>sc.J>>>0;){Pg.J=a.Gb(sc,2);if(null==sc.J||!Pi--)break;for(var Qi=a,md=Pg, +Qg=null,tc=md.J,Rg=tc,Ee=1;6>=Ee&&tc;Ee++){if(2\nLicense: GPL version 3 or later ");for(b=0;bni){if(pi(d,this.F)){this.u=new td(this,"1.35.1",yi);pi(this.u)&&(zi(this,d),a=Ai,Bi(this.u));this.u.set(vi,Da());Ci(this.u);var e=this.b&&!this.C;if(a==wi||jb("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ui(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?pi(d,g):("error"==f&&"no machine state"!= +g?(this.aa("Error: "+g),"unable to verify user"==g&&(La(Di,""),this.g=null)):this.i(f+": "+g),Bi(d),pi(d)?(c=ui(d),e=!0):c=!1))}e&&si(this,c?d:null)}else a==Ai&&d.clear()}else si(this);delete this.F;delete this.H}e=kb(this.id);for(f=0;fa[1];a=a[2];this.V=!0;this.G.ja=!0;var d=this.P.power;d&&(d.textContent="Shutdown");this.w&&(Ei(this,this.w,b,c,a),this.w.lb());this.N&&(zi(this,b),b.clear());!c&&this.u&&(this.u.clear(),delete this.u);this.j=0}; +function zi(a,b){if(jb("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.g||"";b=b.toString();var d={app:"PC8080",ver:"1.35.1"};d.url=a.U;d.user=c;d.type="bug";d.data=b;Fa("http://www.pcjs.org/api/v1/report",d,!0)}} +function ei(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new td(a,"1.35.1"),g=new td(a,"1.35.1",ti),h=Da();g.set(vi,h);f.set(vi,h);f.set(Fi,"1.35.1");f.set(Gi,window?window.location.href:null);f.set(Hi,Ha());a.w&&a.w.va&&(c&&a.w.ea(),d=a.w.va(b,c),"object"===typeof d&&f.set(a.w.id,d),c&&(a.w.G.ja=!1,!1===d&&(e=null)));for(var h=kb(a.id),k=0;kf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PC8080$2"), +a=a.replace(/().*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){f=null,a=u.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Fa(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],p,u=/( [a-z]+=)(['"])(.*?)\2/g;p=u.exec(f);)k=0>k.indexOf(p[1])?k.replace(">",p[0]+">"):k.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,""); +a=a.replace(d[0],g);bj(a,b,c)}})}else c(a,null)} +function cj(a,b,c,d){function e(a){if(void 0===h){var b=g&&qb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=va(a))}function f(a){e("Error: "+a);k&&(--Zi||Za(!0));k=!1}var g,h,k=!0;Zi++;hb[a]={};try{if(g=document.getElementById(a)){var p;if("object"==typeof resources&&(p=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=p:v.appendChild(document.createTextNode(p));u.appendChild(v)}c|| +(c="/versions/pc8080/1.35.1/components.xsl");p=function(d,h){h?$i(c,null,null,!1,e,function(d,k){k?(gb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--Zi||Za(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--Zi||Za(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?$i(b,a,d,!0,e,p):aj(b,null,a,d,!1,e,p)}else f("missing machine element: "+a)}catch(B){f(B.message)}return k}window.embedPC8080=function(a,b,c,d){Za(!1);return cj(a,b,c,d)};window.findMachineComponent=function(a,b){return mb(b,a+".machine")}; +window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!sb[a]){for(var c=!0,d=sb,e=a,f=b.length,g=[],h=[],k="",p=null,u=0;u 1 G (Ground) + * TD 2 <-> 3 RD (Received Data) + * RD 3 <-> 2 TD (Transmitted Data) + * RTS 4 <-> 5 CTS (Clear To Send) + * CTS 5 <-> 4 RTS (Request To Send) + * DSR 6+8 <-> 20 DTR (Data Terminal Ready) + * SG 7 <-> 7 SG (Signal Ground) + * DTR 20 <-> 6+8 DSR (Data Set Ready + Carrier Detect) + * RI 22 <-> 22 RI (Ring Indicator) + * + * TODO: Move these definitions to a more appropriate shared file at some point. + */ +var RS232 = { + RTS: { + PIN: 4, + MASK: 0x00000010 + }, + CTS: { + PIN: 5, + MASK: 0x00000020 + }, + DSR: { + PIN: 6, + MASK: 0x00000040 + }, + CD: { + PIN: 8, + MASK: 0x00000100 + }, + DTR: { + PIN: 20, + MASK: 0x00100000 + }, + RI: { + PIN: 22, + MASK: 0x00400000 + } +}; + +/* + * NODE should be true if we're running under NodeJS (eg, command-line), false if not (eg, web browser) + */ +var NODE = false; + + +/** + * @copyright http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + */ + +/* + * Our "DiskDump API", such as it was, used to look like: + * + * http://jsmachines.net/bin/convdisk.php?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img + * + * To make it (a bit) more "REST-like", the above request now looks like: + * + * http://www.pcjs.org/api/v1/dump?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img + * + * Similarly, our "FileDump API" used to look like: + * + * http://jsmachines.net/bin/convrom.php?rom=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json + * + * and that request now looks like: + * + * http://www.pcjs.org/api/v1/dump?file=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json + * + * I don't think it makes sense to avoid "query" parameters, because blending the path of a disk image with the + * the rest of the URL would be (a) confusing, and (b) more work to parse. + */ +var DumpAPI = { + ENDPOINT: "/api/v1/dump", + QUERY: { + DIR: "dir", // value is path of a directory (DiskDump only) + DISK: "disk", // value is path of a disk image (DiskDump only) + FILE: "file", // value is path of a ROM image file (FileDump only) + IMG: "img", // alias for DISK + PATH: "path", // value is path of a one or more files (DiskDump only) + FORMAT: "format", // value is one of FORMAT values below + COMMENTS: "comments", // value is either "true" or "false" + DECIMAL: "decimal", // value is either "true" to force all numbers to decimal, "false" or undefined otherwise + MBHD: "mbhd", // value is hard drive size in Mb (formerly "mbsize") (DiskDump only) (DEPRECATED) + SIZE: "size" // value is target disk size in Kb (supersedes "mbhd") (DiskDump only) + }, + FORMAT: { + JSON: "json", // default + JSON_GZ: "gz", // gzip is currently used ONLY for compressed JSON + DATA: "data", // same as "json", but built without JSON.stringify() (DiskDump only) + HEX: "hex", // deprecated + OCTAL: "octal", // displays data as octal words + BYTES: "bytes", // displays data as hex bytes; normally used only when comments are enabled + WORDS: "words", // displays data as hex words; normally used only when comments are enabled + LONGS: "longs", // displays data as dwords + IMG: "img", // returns the raw disk data (ie, using a Buffer object) (DiskDump only) + ROM: "rom" // returns the raw file data (ie, using a Buffer object) (FileDump only) + } +}; + +/* + * Because we use an overloaded API endpoint (ie, one that's shared with the FileDump module), we must + * also provide a list of commands which, when combined with the endpoint, define a unique request. + */ +DumpAPI.asDiskCommands = [DumpAPI.QUERY.DIR, DumpAPI.QUERY.DISK, DumpAPI.QUERY.PATH]; +DumpAPI.asFileCommands = [DumpAPI.QUERY.FILE]; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + */ + +var ReportAPI = { + ENDPOINT: "/api/v1/report", + QUERY: { + APP: "app", + VER: "ver", + URL: "url", + USER: "user", + TYPE: "type", + DATA: "data" + }, + TYPE: { + BUG: "bug" + }, + RES: { + OK: "Thank you" + } +}; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + */ + +/* + * Examples of User API requests: + * + * web.getHost() + UserAPI.ENDPOINT + '?' + UserAPI.QUERY.REQ + '=' + UserAPI.REQ.VERIFY + '&' + UserAPI.QUERY.USER + '=' + sUser; + */ +var UserAPI = { + ENDPOINT: "/api/v1/user", + QUERY: { + REQ: "req", // specifies a request + USER: "user", // specifies a user ID + STATE: "state", // specifies a state ID + DATA: "data" // specifies state data + }, + REQ: { + CREATE: "create", // creates a user ID + VERIFY: "verify", // requests verification of a user ID + STORE: "store", // stores a machine state on the server + LOAD: "load" // loads a machine state from the server + }, + RES: { + CODE: "code", + DATA: "data" + }, + CODE: { + OK: "ok", + FAIL: "error" + }, + FAIL: { + DUPLICATE: "user already exists", + VERIFY: "unable to verify user", + BADSTATE: "invalid state parameter", + NOSTATE: "no machine state", + BADLOAD: "unable to load machine state", + BADSTORE: "unable to save machine state" + } +}; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + */ + +var Keys = { + /* + * Keys and/or key combinations that generate common ASCII codes. + * + * NOTE: If you're looking for a general-purpose ASCII code table, see Str.ASCII in strlib.js; + * if something's missing, that's probably the more appropriate table to add it to. + * + * TODO: The Closure Compiler doesn't inline all references to these values, at least those with + * quoted property names, which is why I've 'unquoted' as many of them as possible. One solution + * would be to add mnemonics for all of them, not just the non-printable ones (eg, SPACE instead + * of ' ', AMP instead of '&', etc.) + */ + ASCII: { + BREAK: 0, CTRL_A: 1, CTRL_B: 2, CTRL_C: 3, CTRL_D: 4, CTRL_E: 5, CTRL_F: 6, CTRL_G: 7, + CTRL_H: 8, CTRL_I: 9, CTRL_J: 10, CTRL_K: 11, CTRL_L: 12, CTRL_M: 13, CTRL_N: 14, CTRL_O: 15, + CTRL_P: 16, CTRL_Q: 17, CTRL_R: 18, CTRL_S: 19, CTRL_T: 20, CTRL_U: 21, CTRL_V: 22, CTRL_W: 23, + CTRL_X: 24, CTRL_Y: 25, CTRL_Z: 26, + ' ': 32, '!': 33, '"': 34, '#': 35, '$': 36, '%': 37, '&': 38, "'": 39, + '(': 40, ')': 41, '*': 42, '+': 43, ',': 44, '-': 45, '.': 46, '/': 47, + '0': 48, '1': 49, '2': 50, '3': 51, '4': 52, '5': 53, '6': 54, '7': 55, + '8': 56, '9': 57, ':': 58, ';': 59, '<': 60, '=': 61, '>': 62, '?': 63, + '@': 64, A: 65, B: 66, C: 67, D: 68, E: 69, F: 70, G: 71, + H: 72, I: 73, J: 74, K: 75, L: 76, M: 77, N: 78, O: 79, + P: 80, Q: 81, R: 82, S: 83, T: 84, U: 85, V: 86, W: 87, + X: 88, Y: 89, Z: 90, '[': 91, '\\':92, ']': 93, '^': 94, '_': 95, + '`': 96, a: 97, b: 98, c: 99, d: 100, e: 101, f: 102, g: 103, + h: 104, i: 105, j: 106, k: 107, l: 108, m: 109, n: 110, o: 111, + p: 112, q: 113, r: 114, s: 115, t: 116, u: 117, v: 118, w: 119, + x: 120, y: 121, z: 122, '{':123, '|':124, '}':125, '~':126, DEL: 127 + }, + /* + * Browser keyCodes we must pay particular attention to. For the most part, these are non-alphanumeric + * or function keys, some which may require special treatment (eg, preventDefault() if returning false on + * the initial keyDown event is insufficient). + * + * keyCodes for most common ASCII keys can simply use the appropriate ASCII code above. + * + * Most of these represent non-ASCII keys (eg, the LEFT arrow key), yet for some reason, browsers defined + * them using ASCII codes (eg, the LEFT arrow key uses the ASCII code for '%' or 37). + */ + KEYCODE: { + /* 0x08 */ BS: 8, // BACKSPACE (ASCII.CTRL_H) + /* 0x09 */ TAB: 9, // TAB (ASCII.CTRL_I) + /* 0x0A */ LF: 10, // LINE FEED (ASCII.CTRL_J) (TODO: Determine if any key actually generates this) + /* 0x0D */ CR: 13, // CARRIAGE RETURN (ASCII.CTRL_M) + /* 0x10 */ SHIFT: 16, + /* 0x11 */ CTRL: 17, + /* 0x12 */ ALT: 18, + /* 0x13 */ PAUSE: 19, // PAUSE/BREAK + /* 0x14 */ CAPS_LOCK: 20, + /* 0x1B */ ESC: 27, + /* 0x20 */ SPACE: 32, + /* 0x21 */ PGUP: 33, + /* 0x22 */ PGDN: 34, + /* 0x23 */ END: 35, + /* 0x24 */ HOME: 36, + /* 0x25 */ LEFT: 37, + /* 0x26 */ UP: 38, + /* 0x27 */ RIGHT: 39, + /* 0x27 */ FF_QUOTE: 39, + /* 0x28 */ DOWN: 40, + /* 0x2C */ FF_COMMA: 44, + /* 0x2C */ PRTSC: 44, + /* 0x2D */ INS: 45, + /* 0x2E */ DEL: 46, + /* 0x2E */ FF_PERIOD: 46, + /* 0x2F */ FF_SLASH: 47, + /* 0x30 */ ZERO: 48, + /* 0x31 */ ONE: 49, + /* 0x32 */ TWO: 50, + /* 0x33 */ THREE: 51, + /* 0x34 */ FOUR: 52, + /* 0x35 */ FIVE: 53, + /* 0x36 */ SIX: 54, + /* 0x37 */ SEVEN: 55, + /* 0x38 */ EIGHT: 56, + /* 0x39 */ NINE: 57, + /* 0x3B */ FF_SEMI: 59, + /* 0x3D */ FF_EQUALS: 61, + /* 0x5B */ CMD: 91, // aka WIN + /* 0x5B */ FF_LBRACK: 91, + /* 0x5C */ FF_BSLASH: 92, + /* 0x5D */ RCMD: 93, // aka MENU + /* 0x5D */ FF_RBRACK: 93, + /* 0x60 */ NUM_0: 96, + /* 0x60 */ NUM_INS: 96, + /* 0x60 */ FF_BQUOTE: 96, + /* 0x61 */ NUM_1: 97, + /* 0x61 */ NUM_END: 97, + /* 0x62 */ NUM_2: 98, + /* 0x62 */ NUM_DOWN: 98, + /* 0x63 */ NUM_3: 99, + /* 0x63 */ NUM_PGDN: 99, + /* 0x64 */ NUM_4: 100, + /* 0x64 */ NUM_LEFT: 100, + /* 0x65 */ NUM_5: 101, + /* 0x65 */ NUM_CENTER: 101, + /* 0x66 */ NUM_6: 102, + /* 0x66 */ NUM_RIGHT: 102, + /* 0x67 */ NUM_7: 103, + /* 0x67 */ NUM_HOME: 103, + /* 0x68 */ NUM_8: 104, + /* 0x68 */ NUM_UP: 104, + /* 0x69 */ NUM_9: 105, + /* 0x69 */ NUM_PGUP: 105, + /* 0x6A */ NUM_MUL: 106, + /* 0x6B */ NUM_ADD: 107, + /* 0x6D */ NUM_SUB: 109, + /* 0x6E */ NUM_DEL: 110, // aka PERIOD + /* 0x6F */ NUM_DIV: 111, + /* 0x70 */ F1: 112, + /* 0x71 */ F2: 113, + /* 0x72 */ F3: 114, + /* 0x73 */ F4: 115, + /* 0x74 */ F5: 116, + /* 0x75 */ F6: 117, + /* 0x76 */ F7: 118, + /* 0x77 */ F8: 119, + /* 0x78 */ F9: 120, + /* 0x79 */ F10: 121, + /* 0x7A */ F11: 122, + /* 0x7B */ F12: 123, + /* 0x90 */ NUM_LOCK: 144, + /* 0x91 */ SCROLL_LOCK: 145, + /* 0xAD */ FF_DASH: 173, + /* 0xBA */ SEMI: 186, // Firefox: 59 (FF_SEMI) + /* 0xBB */ EQUALS: 187, // Firefox: 61 (FF_EQUALS) + /* 0xBC */ COMMA: 188, + /* 0xBD */ DASH: 189, // Firefox: 173 (FF_DASH) + /* 0xBE */ PERIOD: 190, + /* 0xBF */ SLASH: 191, + /* 0xC0 */ BQUOTE: 192, + /* 0xDB */ LBRACK: 219, + /* 0xDC */ BSLASH: 220, + /* 0xDD */ RBRACK: 221, + /* 0xDE */ QUOTE: 222, + /* 0xE0 */ FF_CMD: 224, // Firefox only (used for both CMD and RCMD) + // + // The following biases use what I'll call Decimal Coded Binary or DCB (the opposite of BCD), + // where the thousands digit is used to store the sum of "binary" digits 1 and/or 2 and/or 4. + // + // Technically, that makes it DCO (Decimal Coded Octal), but then again, BCD should have really + // been called HCD (Hexadecimal Coded Decimal), so if "they" can take liberties, so can I. + // + // ONDOWN is a bias we add to browser keyCodes that we want to handle on "down" rather than on "press". + // + ONDOWN: 1000, + // + // ONRIGHT is a bias we add to browser keyCodes that need to check for a "right" location (default is "left") + // + ONRIGHT: 2000, + // + // FAKE is a bias we add to signal these are fake keyCodes corresponding to internal keystroke combinations. + // The actual values are for internal use only and merely need to be unique and used consistently. + // + FAKE: 4000 + }, + /* + * The set of values that a browser may store in the 'location' property of a keyboard event object + * which we also support. + */ + LOCATION: { + LEFT: 1, + RIGHT: 2, + NUMPAD: 3 + } +}; + +/* + * Check the event object's 'location' property for a non-zero value for the following ONRIGHT keys. + */ +Keys.KEYCODE.NUM_CR = Keys.KEYCODE.CR + Keys.KEYCODE.ONRIGHT; + + +/* + * Maps Firefox keyCodes to their more common keyCode counterparts; a number of entries in this table + * are no longer valid (if indeed they ever were), so they've been commented out. It's likely that I + * simply extended this table to resolve additional differences in other browsers (ie, Opera), but without + * browser-specific checks, it's not safe to perform all the mappings shown below. + */ +Keys.FF_KEYCODES = {}; +Keys.FF_KEYCODES[Keys.KEYCODE.FF_SEMI] = Keys.KEYCODE.SEMI; // 59 -> 186 +Keys.FF_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.KEYCODE.EQUALS; // 61 -> 187 +Keys.FF_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.KEYCODE.DASH; // 173 -> 189 +Keys.FF_KEYCODES[Keys.KEYCODE.FF_CMD] = Keys.KEYCODE.CMD; // 224 -> 91 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_COMMA] = Keys.KEYCODE.COMMA; // 44 -> 188 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_PERIOD] = Keys.KEYCODE.PERIOD; // 46 -> 190 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_SLASH] = Keys.KEYCODE.SLASH; // 47 -> 191 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BQUOTE] = Keys.KEYCODE.BQUOTE; // 96 -> 192 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_LBRACK = Keys.KEYCODE.LBRACK; // 91 -> 219 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BSLASH] = Keys.KEYCODE.BSLASH; // 92 -> 220 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_RBRACK] = Keys.KEYCODE.RBRACK; // 93 -> 221 +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_QUOTE] = Keys.KEYCODE.QUOTE; // 39 -> 222 + +/* + * Maps non-ASCII keyCodes to their ASCII counterparts + */ +Keys.NONASCII_KEYCODES = {}; +Keys.NONASCII_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.ASCII['-']; // 173 -> 45 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SEMI] = Keys.ASCII[';']; // 186 -> 59 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.EQUALS] = Keys.ASCII['=']; // 187 -> 61 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.DASH] = Keys.ASCII['-']; // 189 -> 45 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.COMMA] = Keys.ASCII[',']; // 188 -> 44 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.PERIOD] = Keys.ASCII['.']; // 190 -> 46 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SLASH] = Keys.ASCII['/']; // 191 -> 47 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BQUOTE] = Keys.ASCII['`']; // 192 -> 96 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.LBRACK] = Keys.ASCII['[']; // 219 -> 91 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BSLASH] = Keys.ASCII['\\']; // 220 -> 92 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.RBRACK] = Keys.ASCII[']']; // 221 -> 93 +Keys.NONASCII_KEYCODES[Keys.KEYCODE.QUOTE] = Keys.ASCII["'"]; // 222 -> 39 + +/* + * Maps unshifted keyCodes to their shifted counterparts; to be used when a shift-key is down. + * Alphabetic characters are handled in code, since they must also take CAPS_LOCK into consideration. + */ +Keys.SHIFTED_KEYCODES = {}; +Keys.SHIFTED_KEYCODES[Keys.ASCII['1']] = Keys.ASCII['!']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['2']] = Keys.ASCII['@']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['3']] = Keys.ASCII['#']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['4']] = Keys.ASCII['$']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['5']] = Keys.ASCII['%']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['6']] = Keys.ASCII['^']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['7']] = Keys.ASCII['&']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['8']] = Keys.ASCII['*']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['9']] = Keys.ASCII['(']; +Keys.SHIFTED_KEYCODES[Keys.ASCII['0']] = Keys.ASCII[')']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SEMI] = Keys.ASCII[':']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.EQUALS] = Keys.ASCII['+']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.COMMA] = Keys.ASCII['<']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.DASH] = Keys.ASCII['_']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.PERIOD] = Keys.ASCII['>']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SLASH] = Keys.ASCII['?']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BQUOTE] = Keys.ASCII['~']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.LBRACK] = Keys.ASCII['{']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BSLASH] = Keys.ASCII['|']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.RBRACK] = Keys.ASCII['}']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.QUOTE] = Keys.ASCII['"']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.ASCII['_']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.ASCII['+']; +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_SEMI] = Keys.ASCII[':']; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + */ + +class Str { + /** + * isValidInt(s, base) + * + * The built-in parseInt() function has the annoying feature of returning a partial value (ie, + * up to the point where it encounters an invalid character); eg, parseInt("foo", 16) returns 0xf. + * + * So it's best to use our own Str.parseInt() function, which will in turn use this function to + * validate the entire string. + * + * @param {string} s is the string representation of some number + * @param {number} [base] is the radix to use (default is 10); only 2, 8, 10 and 16 are supported + * @return {boolean} true if valid, false if invalid (or the specified base isn't supported) + */ + static isValidInt(s, base) + { + if (!base || base == 10) return s.match(/^-?[0-9]+$/) !== null; + if (base == 16) return s.match(/^-?[0-9a-f]+$/i) !== null; + if (base == 8) return s.match(/^-?[0-7]+$/) !== null; + if (base == 2) return s.match(/^-?[01]+$/) !== null; + return false; + } + + /** + * parseInt(s, base) + * + * This is a wrapper around the built-in parseInt() function. Our wrapper recognizes certain prefixes + * ('$' or "0x" for hex, '#' or "0o" for octal) and suffixes ('.' for decimal, 'h' for hex, 'y' for + * binary), and then calls isValidInt() to ensure we don't convert strings that contain partial values; + * see isValidInt() for details. + * + * The use of multiple prefix/suffix combinations is undefined (although for the record, we process + * prefixes first). We do NOT support the "0b" prefix to indicate binary UNLESS one or more commas are + * also present (because "0b" is also a valid hex sequence), and we do NOT support a single leading zero + * to indicate octal (because such a number could also be decimal or hex). Any number of commas are + * allowed; we remove them all before calling the built-in parseInt(). + * + * More recently, we've added support for "^D", "^O", and "^B" prefixes to accommodate the base overrides + * that the PDP-10's MACRO-10 assembly language supports (decimal, octal, and binary, respectively). + * If this support turns out to adversely affect other debuggers, then it will have to be "conditionalized". + * Similarly, we've added support for "K", "M", and "G" MACRO-10-style suffixes that add 3, 6, or 9 zeros + * to the value to be parsed, respectively. + * + * @param {string} s is the string representation of some number + * @param {number} [base] is the radix to use (default is 10); can be overridden by prefixes/suffixes + * @return {number|undefined} corresponding value, or undefined if invalid + */ + static parseInt(s, base) + { + var value; + + if (s) { + if (!base) base = 10; + + var ch, chPrefix, chSuffix; + var fCommas = (s.indexOf(',') > 0); + if (fCommas) s = s.replace(/,/g, ''); + + ch = chPrefix = s.charAt(0); + if (chPrefix == '#') { + base = 8; + chPrefix = ''; + } + else if (chPrefix == '$') { + base = 16; + chPrefix = ''; + } + if (ch != chPrefix) { + s = s.substr(1); + } + else { + ch = chPrefix = s.substr(0, 2); + if (chPrefix == '0b' && fCommas || chPrefix == '^B') { + base = 2; + chPrefix = ''; + } + else if (chPrefix == '0o' || chPrefix == '^O') { + base = 8; + chPrefix = ''; + } + else if (chPrefix == '^D') { + base = 10; + chPrefix = ''; + } + else if (chPrefix == '0x') { + base = 16; + chPrefix = ''; + } + if (ch != chPrefix) s = s.substr(2); + } + ch = chSuffix = s.slice(-1); + if (chSuffix == 'Y' || chSuffix == 'y') { + base = 2; + chSuffix = ''; + } + else if (chSuffix == '.') { + base = 10; + chSuffix = ''; + } + else if (chSuffix == 'H' || chSuffix == 'h') { + base = 16; + chSuffix = ''; + } + else if (chSuffix == 'K') { + chSuffix = '000'; + } + else if (chSuffix == 'M') { + chSuffix = '000000'; + } + else if (chSuffix == 'G') { + chSuffix = '000000000'; + } + if (ch != chSuffix) s = s.slice(0, -1) + chSuffix; + /* + * This adds support for the MACRO-10 binary shifting (Bn) suffix, which must be stripped from the + * number before parsing, and then applied to the value after parsing. If n is omitted, 35 is assumed, + * which is a net shift of zero. If n < 35, then a left shift of (35 - n) is required; if n > 35, then + * a right shift of -(35 - n) is required. + */ + var v, shift = 0; + if (base <= 10) { + var match = s.match(/(-?[0-9]+)B([0-9]*)/); + if (match) { + s = match[1]; + shift = 35 - ((match[2] || 35) & 0xff); + } + } + if (Str.isValidInt(s, base) && !isNaN(v = parseInt(s, base))) { + /* + * With the need to support larger (eg, 36-bit) integers, truncating to 32 bits is no longer helpful. + * + * value = v|0; + */ + if (shift) { + /* + * Since binary shifting is a logical operation, and since shifting by division only works properly + * with positive numbers, we must convert a negative value to a positive value, by computing the two's + * complement. + */ + if (v < 0) v += Math.pow(2, 36); + if (shift > 0) { + v *= Math.pow(2, shift); + } else { + v = Math.trunc(v / Math.pow(2, -shift)); + } + } + value = v; + } + } + return value; + } + + /** + * toBase(n, radix, cch, sPrefix, nGrouping) + * + * Displays the given number as an unsigned integer using the specified radix and number of digits. + * + * @param {number|null|undefined} n + * @param {number} radix (ie, the base) + * @param {number} cch (the desired number of digits) + * @param {string} [sPrefix] (default is none) + * @param {number} [nGrouping] + * @return {string} + */ + static toBase(n, radix, cch, sPrefix = "", nGrouping = 0) + { + /* + * An initial "falsey" check for null takes care of both null and undefined; + * we can't rely entirely on isNaN(), because isNaN(null) returns false, oddly enough. + * + * Alternatively, we could mask and shift n regardless of whether it's null/undefined/NaN, + * since JavaScript coerces such operands to zero, but I think there's "value" in seeing those + * values displayed differently. + */ + var s = ""; + if (isNaN(n)) { + n = null; + } else if (n != null) { + /* + * Callers that produced an input by dividing by a power of two rather than shifting (in order + * to access more than 32 bits) may produce a fractional result, which ordinarily we would simply + * ignore, but if the integer portion is zero and the sign is negative, we should probably treat + * this value as a sign-extension. + */ + if (n < 0 && n > -1) n = -1; + /* + * Negative values should be two's complemented according to the number of digits; for example, + * 12 octal digits implies an upper limit 8^12. + */ + if (n < 0) { + n += Math.pow(radix, cch); + } + if (n >= Math.pow(radix, cch)) { + cch = Math.ceil(Math.log(n) / Math.log(radix)); + } + } + var g = nGrouping || -1; + while (cch-- > 0) { + if (!g) { + s = ',' + s; + g = nGrouping; + } + if (n == null) { + s = '?' + s; + } else { + var d = n % radix; + d += (d >= 0 && d <= 9? 0x30 : 0x41 - 10); + s = String.fromCharCode(d) + s; + n = Math.trunc(n / radix); + } + g--; + } + return sPrefix + s; + } + + /** + * toBin(n, cch, nGrouping) + * + * Converts an integer to binary, with the specified number of digits (up to a maximum of 36). + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of binary digits (0 or undefined for default of either 8, 18, or 36) + * @param {number} [nGrouping] + * @return {string} the binary representation of n + */ + static toBin(n, cch, nGrouping) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN2) || 1; + var v = Math.abs(n); + if (v <= 0b11111111) { + cch = 8; + } else if (v <= 0b111111111111111111) { + cch = 18; + } else { + cch = 36; + } + } else if (cch > 36) cch = 36; + return Str.toBase(n, 2, cch, "", nGrouping); + } + + /** + * toBinBytes(n, cb, fPrefix) + * + * Converts an integer to binary, with the specified number of bytes (up to the default of 4). + * + * @param {number|null|undefined} n (interpreted as a 32-bit value) + * @param {number} [cb] is the desired number of binary bytes (4 is both the default and the maximum) + * @param {boolean} [fPrefix] + * @return {string} the binary representation of n + */ + static toBinBytes(n, cb, fPrefix) + { + var s = ""; + if (!cb || cb > 4) cb = 4; + for (var i = 0; i < cb; i++) { + if (s) s = ',' + s; + s = Str.toBin(n & 0xff, 8) + s; + n >>= 8; + } + return (fPrefix? "0b" : "") + s; + } + + /** + * toOct(n, cch, fPrefix) + * + * Converts an integer to octal, with the specified number of digits (default of 6; max of 12) + * + * You might be tempted to use the built-in n.toString(8) instead, but it doesn't zero-pad and it + * doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw + * an exception, whereas this function will return '?' characters. + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of octal digits (0 or undefined for default of either 6, 8, or 12) + * @param {boolean} [fPrefix] + * @return {string} the octal representation of n + */ + static toOct(n, cch, fPrefix) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(8)) || 1; + var v = Math.abs(n); + if (v <= 0o777777) { + cch = 6; + } else if (v <= 0o77777777) { + cch = 8; + } else { + cch = 12; + } + } else if (cch > 12) cch = 12; + return Str.toBase(n, 8, cch, fPrefix? "0o" : ""); + } + + /** + * toDec(n, cch) + * + * Converts an integer to decimal, with the specified number of digits (default of 5; max of 11) + * + * You might be tempted to use the built-in n.toString(10) instead, but it doesn't zero-pad and it + * doesn't properly convert negative values. Moreover, if n is undefined, n.toString() will throw + * an exception, whereas this function will return '?' characters. + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of decimal digits (0 or undefined for default of either 5 or 11) + * @return {string} the decimal representation of n + */ + static toDec(n, cch) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN10) || 1; + var v = Math.abs(n); + if (v <= 99999) { + cch = 5; + } else { + cch = 11; + } + } else if (cch > 11) cch = 11; + return Str.toBase(n, 10, cch); + } + + /** + * toHex(n, cch, fPrefix) + * + * Converts an integer to hex, with the specified number of digits (default of 4 or 8, max of 9). + * + * You might be tempted to use the built-in n.toString(16) instead, but it doesn't zero-pad and it + * doesn't properly convert negative values; for example, if n is -2147483647, then n.toString(16) + * will return "-7fffffff" instead of "80000001". Moreover, if n is undefined, n.toString() will + * throw an exception, whereas this function will return '?' characters. + * + * NOTE: The following work-around (adapted from code found on StackOverflow) would be another solution, + * taking care of negative values, zero-padding, and upper-casing, but not null/undefined/NaN values: + * + * s = (n < 0? n + 0x100000000 : n).toString(16); + * s = "00000000".substr(0, 8 - s.length) + s; + * s = s.substr(0, cch).toUpperCase(); + * + * @param {number|null|undefined} n (supports integers up to 36 bits now) + * @param {number} [cch] is the desired number of hex digits (0 or undefined for default of either 4, 8, or 9) + * @param {boolean} [fPrefix] + * @return {string} the hex representation of n + */ + static toHex(n, cch, fPrefix) + { + if (!cch) { + // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(16)) || 1; + var v = Math.abs(n); + if (v <= 0xffff) { + cch = 4; + } else if (v <= 0xffffffff) { + cch = 8; + } else { + cch = 9; + } + } else if (cch > 9) cch = 9; + return Str.toBase(n, 16, cch, fPrefix? "0x" : ""); + } + + /** + * toHexByte(b) + * + * Alias for Str.toHex(b, 2, true) + * + * @param {number|null|undefined} b is a byte value + * @return {string} the hex representation of b + */ + static toHexByte(b) + { + return Str.toHex(b, 2, true); + } + + /** + * toHexWord(w) + * + * Alias for Str.toHex(w, 4, true) + * + * @param {number|null|undefined} w is a word (16-bit) value + * @return {string} the hex representation of w + */ + static toHexWord(w) + { + return Str.toHex(w, 4, true); + } + + /** + * toHexLong(l) + * + * Alias for Str.toHex(l, 8, true) + * + * @param {number|null|undefined} l is a dword (32-bit) value + * @return {string} the hex representation of w + */ + static toHexLong(l) + { + return Str.toHex(l, 8, true); + } + + /** + * getBaseName(sFileName, fStripExt) + * + * This is a poor-man's version of Node's path.basename(), which Node-only components should use instead. + * + * Note that if fStripExt is true, this strips ANY extension, whereas path.basename() strips the extension only + * if it matches the second parameter (eg, path.basename("/foo/bar/baz/asdf/quux.html", ".html") returns "quux"). + * + * @param {string} sFileName + * @param {boolean} [fStripExt] + * @return {string} + */ + static getBaseName(sFileName, fStripExt) + { + var sBaseName = sFileName; + + var i = sFileName.lastIndexOf('/'); + if (i >= 0) sBaseName = sFileName.substr(i + 1); + + /* + * This next bit is a kludge to clean up names that are part of a URL that includes unsightly query parameters. + */ + i = sBaseName.indexOf('&'); + if (i > 0) sBaseName = sBaseName.substr(0, i); + + if (fStripExt) { + i = sBaseName.lastIndexOf("."); + if (i > 0) { + sBaseName = sBaseName.substring(0, i); + } + } + return sBaseName; + } + + /** + * getExtension(sFileName) + * + * This is a poor-man's version of Node's path.extname(), which Node-only components should use instead. + * + * Note that we EXCLUDE the period from the returned extension, whereas path.extname() includes it. + * + * @param {string} sFileName + * @return {string} the filename's extension (in lower-case and EXCLUDING the "."), or an empty string + */ + static getExtension(sFileName) + { + var sExtension = ""; + var i = sFileName.lastIndexOf("."); + if (i >= 0) { + sExtension = sFileName.substr(i + 1).toLowerCase(); + } + return sExtension; + } + + /** + * endsWith(s, sSuffix) + * + * @param {string} s + * @param {string} sSuffix + * @return {boolean} true if s ends with sSuffix, false if not + */ + static endsWith(s, sSuffix) + { + return s.indexOf(sSuffix, s.length - sSuffix.length) !== -1; + } + + /** + * escapeHTML(sHTML) + * + * @param {string} sHTML + * @return {string} with HTML entities "escaped", similar to PHP's htmlspecialchars() + */ + static escapeHTML(sHTML) + { + return sHTML.replace(/[&<>"']/g, function(m) + { + return Str.aHTMLEscapeMap[m]; + }); + } + + /** + * replaceAll(sFind, sReplace, s) + * + * @param {string} sFind + * @param {string} sReplace + * @param {string} s + * @return {string} + */ + static replaceAll(sFind, sReplace, s) + { + var a = {}; + a[sFind] = sReplace; + return Str.replaceArray(a, s); + } + + /** + * replaceArray(a, s) + * + * @param {Object} a + * @param {string} s + * @return {string} + */ + static replaceArray(a, s) + { + var sMatch = ""; + for (var k in a) { + /* + * As noted in: + * + * http://www.regexguru.com/2008/04/escape-characters-only-when-necessary/ + * + * inside character classes, only backslash, caret, hyphen and the closing bracket need to be + * escaped. And in fact, if you ensure that the closing bracket is first, the caret is not first, + * and the hyphen is last, you can avoid escaping those as well. + */ + k = k.replace(/([\\[\]*{}().+?])/g, "\\$1"); + sMatch += (sMatch? '|' : '') + k; + } + return s.replace(new RegExp('(' + sMatch + ')', "g"), function(m) + { + return a[m]; + }); + } + + /** + * pad(s, cch, fPadLeft) + * + * NOTE: the maximum amount of padding currently supported is 40 spaces. + * + * @param {string} s is a string + * @param {number} cch is desired length + * @param {boolean} [fPadLeft] (default is padding on the right) + * @return {string} the original string (s) with spaces padding it to the specified length + */ + static pad(s, cch, fPadLeft) + { + var sPadding = " "; + return fPadLeft? (sPadding + s).slice(-cch) : (s + sPadding).slice(0, cch); + } + + /** + * stripLeadingZeros(s, fPad) + * + * @param {string} s + * @param {boolean} [fPad] + * @return {string} + */ + static stripLeadingZeros(s, fPad) + { + var cch = s.length; + s = s.replace(/^0+([0-9A-F]+)$/i, "$1"); + if (fPad) s = Str.pad(s, cch, true); + return s; + } + + /** + * trim(s) + * + * @param {string} s + * @return {string} + */ + static trim(s) + { + if (String.prototype.trim) { + return s.trim(); + } + return s.replace(/^\s+|\s+$/g, ""); + } + + /** + * toASCIICode(b) + * + * @param {number} b + * @return {string} + */ + static toASCIICode(b) + { + var s; + if (b != Str.ASCII.CR && b != Str.ASCII.LF) { + s = Str.aASCIICodes[b]; + } + if (s) { + s = '<' + s + '>'; + } else { + s = String.fromCharCode(b); + } + return s; + } +} + +Str.aHTMLEscapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' +}; + +/* + * Future home of a general-purpose ASCII table. TODO: Flesh it out. + */ +Str.ASCII = { + LF: 0x0A, + CR: 0x0D +}; + +/* + * Table for converting "unprintable" ASCII codes into mnemonics, to more clearly see what's being printed. + */ +Str.aASCIICodes = { + 0x00: "NUL", + 0x01: "SOH", // (CTRL_A) Start of Heading + 0x02: "STX", // (CTRL_B) Start of Text + 0x03: "ETX", // (CTRL_C) End of Text + 0x04: "EOT", // (CTRL_D) End of Transmission + 0x05: "ENQ", // (CTRL_E) Enquiry + 0x06: "ACK", // (CTRL_F) Acknowledge + 0x07: "BEL", // (CTRL_G) Bell + 0x08: "BS", // (CTRL_H) Backspace + 0x09: "TAB", // (CTRL_I) Horizontal Tab + 0x0A: "LF", // (CTRL_J) Line Feed (New Line) + 0x0B: "VT", // (CTRL_K) Vertical Tab + 0x0C: "FF", // (CTRL_L) Form Feed (New Page) + 0x0D: "CR", // (CTRL_M) Carriage Return + 0x0E: "SO", // (CTRL_N) Shift Out + 0x0F: "SI", // (CTRL_O) Shift In + 0x10: "DLE", // (CTRL_P) Data Link Escape + 0x11: "XON", // (CTRL_Q) Device Control 1 (aka DC1) + 0x12: "DC2", // (CTRL_R) Device Control 2 + 0x13: "XOFF", // (CTRL_S) Device Control 3 (aka DC3) + 0x14: "DC4", // (CTRL_T) Device Control 4 + 0x15: "NAK", // (CTRL_U) Negative Acknowledge + 0x16: "SYN", // (CTRL_V) Synchronous Idle + 0x17: "ETB", // (CTRL_W) End of Transmission Block + 0x18: "CAN", // (CTRL_X) Cancel + 0x19: "EM", // (CTRL_Y) End of Medium + 0x1A: "SUB", // (CTRL_Z) Substitute + 0x1B: "ESC", // Escape + 0x1C: "FS", // File Separator + 0x1D: "GS", // Group Separator + 0x1E: "RS", // Record Separator + 0x1F: "US" // Unit Separator +}; + +Str.TYPES = { + NULL: 0, + BYTE: 1, + WORD: 2, + DWORD: 3, + NUMBER: 4, + STRING: 5, + BOOLEAN: 6, + OBJECT: 7, + ARRAY: 8 +}; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + */ + +/** + * @typedef {{ + * mask: number, + * shift: number + * }} + */ +var BitField; + +/** + * @typedef {Object.} + */ +var BitFields; + +class Usr { + /** + * binarySearch(a, v, fnCompare) + * + * @param {Array} a is an array + * @param {number|string|Array|Object} v + * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare] + * @return {number} the index of matching entry if non-negative, otherwise the index of the insertion point + */ + static binarySearch(a, v, fnCompare) + { + var left = 0; + var right = a.length; + var found = 0; + if (fnCompare === undefined) { + fnCompare = function(a, b) + { + return a > b ? 1 : a < b ? -1 : 0; + }; + } + while (left < right) { + var middle = (left + right) >> 1; + var compareResult; + compareResult = fnCompare(v, a[middle]); + if (compareResult > 0) { + left = middle + 1; + } else { + right = middle; + found = !compareResult; + } + } + return found ? left : ~left; + } + + /** + * binaryInsert(a, v, fnCompare) + * + * If element v already exists in array a, the array is unchanged (we don't allow duplicates); otherwise, the + * element is inserted into the array at the appropriate index. + * + * @param {Array} a is an array + * @param {number|string|Array|Object} v is the value to insert + * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare] + */ + static binaryInsert(a, v, fnCompare) + { + var index = Usr.binarySearch(a, v, fnCompare); + if (index < 0) { + a.splice(-(index + 1), 0, v); + } + } + + /** + * getTimestamp() + * + * @return {string} timestamp containing the current date and time ("yyyy-mm-dd hh:mm:ss") + */ + static getTimestamp() + { + var date = new Date(); + var padNum = function(n) + { + return (n < 10 ? "0" : "") + n; + }; + return date.getFullYear() + "-" + padNum(date.getMonth() + 1) + "-" + padNum(date.getDate()) + " " + padNum(date.getHours()) + ":" + padNum(date.getMinutes()) + ":" + padNum(date.getSeconds()); + } + + /** + * getMonthDays(nMonth, nYear) + * + * Note that if we're being called on behalf of the RTC, its year is always truncated to two digits (mod 100), + * so we have no idea what century the year 0 might refer to. When using the normal leap-year formula, 0 fails + * the mod 100 test but passes the mod 400 test, so as far as the RTC is concerned, every century year is a leap + * year. Since we're most likely dealing with the year 2000, that's fine, since 2000 was also a leap year. + * + * TODO: There IS a separate CMOS byte that's supposed to be set to CMOS_ADDR.CENTURY_DATE; it's always BCD, + * so theoretically it will contain values like 0x19 or 0x20 (for the 20th and 21st centuries, respectively), and + * we could add that as another parameter to this function, to improve the accuracy, but that would go beyond what + * a real RTC actually does. + * + * @param {number} nMonth (1-12) + * @param {number} nYear (normally a 4-digit year, but it may also be mod 100) + * @return {number} the maximum (1-based) day allowed for the specified month and year + */ + static getMonthDays(nMonth, nYear) + { + var nDays = Usr.aMonthDays[nMonth - 1]; + if (nDays == 28) { + if ((nYear % 4) === 0 && ((nYear % 100) || (nYear % 400) === 0)) { + nDays++; + } + } + return nDays; + } + + /** + * formatDate(sFormat, date) + * + * @param {string} sFormat (eg, "F j, Y", "Y-m-d H:i:s") + * @param {Date} [date] (default is the current time) + * @return {string} + * + * Supported identifiers in sFormat include: + * + * a: lowercase ante meridiem and post meridiem (am or pm) + * d: day of the month, 2 digits with leading zeros (01,...,31) + * g: hour in 12-hour format, without leading zeros (1,...,12) + * i: minutes, with leading zeros (00,...,59) + * j: day of the month, without leading zeros (1,...,31) + * l: day of the week ("Sunday",...,"Saturday") + * m: month, with leading zeros (01,...,12) + * s: seconds, with leading zeros (00,...,59) + * F: month ("January",...,"December") + * H: hour in 24-hour format, with leading zeros (00,...,23) + * Y: year (eg, 2014) + * + * For more inspiration, see: http://php.net/manual/en/function.date.php + */ + static formatDate(sFormat, date) + { + var sDate = ""; + if (!date) date = new Date(); + var iHour = date.getHours(); + var iDay = date.getDate(); + var iMonth = date.getMonth() + 1; + for (var i = 0; i < sFormat.length; i++) { + var ch; + switch ((ch = sFormat.charAt(i))) { + case 'a': + sDate += (iHour < 12 ? "am" : "pm"); + break; + case 'd': + sDate += ('0' + iDay).slice(-2); + break; + case 'g': + sDate += (!iHour ? 12 : (iHour > 12 ? iHour - 12 : iHour)); + break; + case 'i': + sDate += ('0' + date.getMinutes()).slice(-2); + break; + case 'j': + sDate += iDay; + break; + case 'l': + sDate += Usr.asDays[date.getDay()]; + break; + case 'm': + sDate += ('0' + iMonth).slice(-2); + break; + case 's': + sDate += ('0' + date.getSeconds()).slice(-2); + break; + case 'F': + sDate += Usr.asMonths[iMonth - 1]; + break; + case 'H': + sDate += ('0' + iHour).slice(-2); + break; + case 'Y': + sDate += date.getFullYear(); + break; + default: + sDate += ch; + break; + } + } + return sDate; + } + + /** + * defineBitFields(bfs) + * + * Prepares a bit field definition for use with getBitField() and setBitField(); eg: + * + * var bfs = Usr.defineBitFields({num:20, count:8, btmod:1, type:3}); + * + * The above defines a set of bit fields containing four fields: num (bits 0-19), count (bits 20-27), btmod (bit 28), and type (bits 29-31). + * + * Usr.setBitField(bfs.num, n, 1); + * + * The above set bit field "bfs.num" in numeric variable "n" to the value 1. + * + * @param {Object} bfs + * @return {BitFields} + */ + static defineBitFields(bfs) + { + var bit = 0; + for (var f in bfs) { + var width = bfs[f]; + var mask = ((1 << width) - 1) << bit; + bfs[f] = {mask: mask, shift: bit}; + bit += width; + } + return bfs; + } + + /** + * initBitFields(bfs, ...) + * + * @param {BitFields} bfs + * @param {...number} var_args + * @return {number} a value containing all supplied bit fields + */ + static initBitFields(bfs, var_args) + { + var v = 0, i = 1; + for (var f in bfs) { + if (i >= arguments.length) break; + v = Usr.setBitField(bfs[f], v, arguments[i++]); + } + return v; + } + + /** + * getBitField(bf, v) + * + * @param {BitField} bf + * @param {number} v is a value containing bit fields + * @return {number} the value of the bit field in v defined by bf + */ + static getBitField(bf, v) + { + return (v & bf.mask) >> bf.shift; + } + + /** + * setBitField(bf, v, n) + * + * @param {BitField} bf + * @param {number} v is a value containing bit fields + * @param {number} n is a value to store in v in the bit field defined by bf + * @return {number} updated v + */ + static setBitField(bf, v, n) + { + return (v & ~bf.mask) | ((n << bf.shift) & bf.mask); + } + + /** + * indexOf(a, t, i) + * + * Use this instead of Array.prototype.indexOf() if you can't be sure the browser supports it. + * + * @param {Array} a + * @param {*} t + * @param {number} [i] + * @returns {number} + */ + static indexOf(a, t, i) + { + if (Array.prototype.indexOf) { + return a.indexOf(t, i); + } + i = i || 0; + if (i < 0) i += a.length; + if (i < 0) i = 0; + for (var n = a.length; i < n; i++) { + if (i in a && a[i] === t) return i; + } + return -1; + } +} + +Usr.asDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; +Usr.asMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; +Usr.aMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + +/** + * getTime() + * + * @return {number} the current time, in milliseconds + */ +Usr.getTime = Date.now || function() { return +new Date(); }; + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + */ + + +/* + * According to http://www.w3schools.com/jsref/jsref_obj_global.asp, these are the *global* properties + * and functions of JavaScript-in-the-Browser: + * + * Property Description + * --- + * Infinity A numeric value that represents positive/negative infinity + * NaN "Not-a-Number" value + * undefined Indicates that a variable has not been assigned a value + * + * Function Description + * --- + * decodeURI() Decodes a URI + * decodeURIComponent() Decodes a URI component + * encodeURI() Encodes a URI + * encodeURIComponent() Encodes a URI component + * escape() Deprecated in version 1.5. Use encodeURI() or encodeURIComponent() instead + * eval() Evaluates a string and executes it as if it was script code + * isFinite() Determines whether a value is a finite, legal number + * isNaN() Determines whether a value is an illegal number + * Number() Converts an object's value to a number + * parseFloat() Parses a string and returns a floating point number + * parseInt() Parses a string and returns an integer + * String() Converts an object's value to a string + * unescape() Deprecated in version 1.5. Use decodeURI() or decodeURIComponent() instead + * + * And according to http://www.w3schools.com/jsref/obj_window.asp, these are the properties and functions + * of the *window* object. + * + * Property Description + * --- + * closed Returns a Boolean value indicating whether a window has been closed or not + * defaultStatus Sets or returns the default text in the statusbar of a window + * document Returns the Document object for the window (See Document object) + * frames Returns an array of all the frames (including iframes) in the current window + * history Returns the History object for the window (See History object) + * innerHeight Returns the inner height of a window's content area + * innerWidth Returns the inner width of a window's content area + * length Returns the number of frames (including iframes) in a window + * location Returns the Location object for the window (See Location object) + * name Sets or returns the name of a window + * navigator Returns the Navigator object for the window (See Navigator object) + * opener Returns a reference to the window that created the window + * outerHeight Returns the outer height of a window, including toolbars/scrollbars + * outerWidth Returns the outer width of a window, including toolbars/scrollbars + * pageXOffset Returns the pixels the current document has been scrolled (horizontally) from the upper left corner of the window + * pageYOffset Returns the pixels the current document has been scrolled (vertically) from the upper left corner of the window + * parent Returns the parent window of the current window + * screen Returns the Screen object for the window (See Screen object) + * screenLeft Returns the x coordinate of the window relative to the screen + * screenTop Returns the y coordinate of the window relative to the screen + * screenX Returns the x coordinate of the window relative to the screen + * screenY Returns the y coordinate of the window relative to the screen + * self Returns the current window + * status Sets or returns the text in the statusbar of a window + * top Returns the topmost browser window + * + * Method Description + * --- + * alert() Displays an alert box with a message and an OK button + * atob() Decodes a base-64 encoded string + * blur() Removes focus from the current window + * btoa() Encodes a string in base-64 + * clearInterval() Clears a timer set with setInterval() + * clearTimeout() Clears a timer set with setTimeout() + * close() Closes the current window + * confirm() Displays a dialog box with a message and an OK and a Cancel button + * createPopup() Creates a pop-up window + * focus() Sets focus to the current window + * moveBy() Moves a window relative to its current position + * moveTo() Moves a window to the specified position + * open() Opens a new browser window + * print() Prints the content of the current window + * prompt() Displays a dialog box that prompts the visitor for input + * resizeBy() Resizes the window by the specified pixels + * resizeTo() Resizes the window to the specified width and height + * scroll() This method has been replaced by the scrollTo() method. + * scrollBy() Scrolls the content by the specified number of pixels + * scrollTo() Scrolls the content to the specified coordinates + * setInterval() Calls a function or evaluates an expression at specified intervals (in milliseconds) + * setTimeout() Calls a function or evaluates an expression after a specified number of milliseconds + * stop() Stops the window from loading + */ + +class Web { + /** + * log(s, type) + * + * For diagnostic output only. DEBUG must be true (or "--debug" specified via the command-line) + * for Component.log() to display anything. + * + * @param {string} [s] is the message text + * @param {string} [type] is the message type + */ + static log(s, type) + { + Component.log(s, type); + } + + /** + * notice(s, fPrintOnly, id) + * + * @param {string} s is the message text + * @param {boolean} [fPrintOnly] + * @param {string} [id] is the caller's ID, if any + */ + static notice(s, fPrintOnly, id) + { + Component.notice(s, fPrintOnly, id); + } + + /** + * getResource(sURL, dataPost, fAsync, done) + * + * Request the specified resource (sURL), and once the request is complete, notify done(). + * + * If fAsync is true, a done() callback should ALWAYS be supplied; otherwise, you'll have no + * idea when the request is complete or what the response was. done() is passed three parameters: + * + * done(sURL, sResource, nErrorCode) + * + * If nErrorCode is zero, sResource should contain the requested data; otherwise, an error occurred. + * + * If dataPost is set to a string, that string can be used to control the response format; + * by default, the response format is plain text, but you can specify "bytes" to request arbitrary + * binary data, which should come back as a string of bytes. + * + * TODO: The "bytes" option works by calling overrideMimeType(), which was never a best practice. + * Instead, we should implement supported response types ("text" and "arraybuffer", at a minimum) + * by setting xmlHTTP.responseType to one of those values before calling xmlHTTP.send(). + * + * @param {string} sURL + * @param {string|Object|null} [dataPost] for a POST request (default is a GET request) + * @param {boolean} [fAsync] is true for an asynchronous request + * @param {function(string,string,number)} [done] + * @return {Array|null} Array containing [sResource, nErrorCode], or null if no response yet + */ + static getResource(sURL, dataPost, fAsync = false, done) + { + var nErrorCode = 0, sResource = null, response = null; + + if (typeof resources == 'object' && (sResource = resources[sURL])) { + if (done) done(sURL, sResource, nErrorCode); + return [sResource, nErrorCode]; + } + else if (fAsync && typeof resources == 'function') { + resources(sURL, function(sResource, nErrorCode) + { + if (done) done(sURL, sResource, nErrorCode); + }); + return response; + } + + if (DEBUG) { + /* + * The larger resources we put on archive.pcjs.org should also be available locally... + */ + sURL = sURL.replace(/^http:\/\/archive.pcjs.org(\/.*)\/([^\/]*)$/, "$1/archive/$2"); + } + + + var xmlHTTP = (window.XMLHttpRequest? new window.XMLHttpRequest() : new window.ActiveXObject("Microsoft.XMLHTTP")); + if (fAsync) { + xmlHTTP.onreadystatechange = function() + { + if (xmlHTTP.readyState === 4) { + /* + * The following line was recommended for WebKit, as a work-around to prevent the handler firing multiple + * times when debugging. Unfortunately, that's not the only XMLHttpRequest problem that occurs when + * debugging, so I think the WebKit problem is deeper than that. When we have multiple XMLHttpRequests + * pending, any debugging activity means most of them simply get dropped on floor, so what may actually be + * happening are mis-notifications rather than redundant notifications. + * + * xmlHTTP.onreadystatechange = undefined; + */ + sResource = xmlHTTP.responseText; + /* + * The normal "success" case is an HTTP status code of 200, but when testing with files loaded + * from the local file system (ie, when using the "file:" protocol), we have to be a bit more "flexible". + */ + if (xmlHTTP.status == 200 || !xmlHTTP.status && sResource.length && Web.getHostProtocol() == "file:") { + if (MAXDEBUG) Web.log("xmlHTTP.onreadystatechange(" + sURL + "): returned " + sResource.length + " bytes"); + } + else { + nErrorCode = xmlHTTP.status || -1; + Web.log("xmlHTTP.onreadystatechange(" + sURL + "): error code " + nErrorCode); + } + if (done) done(sURL, sResource, nErrorCode); + } + }; + } + + if (dataPost && typeof dataPost == "object") { + var sDataPost = ""; + for (var p in dataPost) { + if (!dataPost.hasOwnProperty(p)) continue; + if (sDataPost) sDataPost += "&"; + sDataPost += p + '=' + encodeURIComponent(dataPost[p]); + } + sDataPost = sDataPost.replace(/%20/g, '+'); + if (MAXDEBUG) Web.log("Web.getResource(POST " + sURL + "): " + sDataPost.length + " bytes"); + xmlHTTP.open("POST", sURL, fAsync); // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it) + xmlHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + xmlHTTP.send(sDataPost); + } else { + if (MAXDEBUG) Web.log("Web.getResource(GET " + sURL + ")"); + xmlHTTP.open("GET", sURL, fAsync); // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it) + if (dataPost == "bytes") { + xmlHTTP.overrideMimeType("text/plain; charset=x-user-defined"); + } + xmlHTTP.send(); + } + + if (!fAsync) { + sResource = xmlHTTP.responseText; + if (xmlHTTP.status == 200) { + if (MAXDEBUG) Web.log("Web.getResource(" + sURL + "): returned " + sResource.length + " bytes"); + } else { + nErrorCode = xmlHTTP.status || -1; + Web.log("Web.getResource(" + sURL + "): error code " + nErrorCode); + } + if (done) done(sURL, sResource, nErrorCode); + response = [sResource, nErrorCode]; + } + return response; + } + + /** + * parseMemoryResource(sURL, sData) + * + * This converts a variety of JSON-style data streams into an Object with the following properties: + * + * aBytes + * aSymbols + * addrLoad + * addrExec + * + * If the source data contains a 'bytes' array, it's passed through to 'aBytes'; alternatively, if + * it contains a 'words' array, the values are converted from 16-bit to 8-bit and stored in 'aBytes', + * and if it contains a 'longs' array, the values are converted from 32-bit longs into bytes and + * stored in 'aBytes'. + * + * Alternatively, if the source data contains a 'data' array, we simply pass that through to the output + * object as: + * + * aData + * + * @param {string} sURL + * @param {string} sData + * @return {Object|null} (resource) + */ + static parseMemoryResource(sURL, sData) + { + var i; + var resource = { + aBytes: null, + aSymbols: null, + addrLoad: null, + addrExec: null + }; + + if (sData.charAt(0) == "[" || sData.charAt(0) == "{") { + try { + var a, ib, data; + + if (sData.substr(0, 1) == "<") { // if the "data" begins with a "<"... + /* + * Early server configs reported an error (via the nErrorCode parameter) if a tape URL was invalid, + * but more recent server configs now display a somewhat friendlier HTML error page. The downside, + * however, is that the original error has been buried, and we've received "data" that isn't actually + * tape data. So if the data we've received appears to be "HTML-like", we treat it as an error message. + */ + throw new Error(sData); + } + + /* + * TODO: IE9 is rather unfriendly and restrictive with regard to how much data it's willing to + * eval(). In particular, the 10Mb disk image we use for the Windows 1.01 demo config fails in + * IE9 with an "Out of memory" exception. One work-around would be to chop the data into chunks + * (perhaps one track per chunk, using regular expressions) and then manually re-assemble it. + * + * However, it turns out that using JSON.parse(sDiskData) instead of eval("(" + sDiskData + ")") + * is a much easier fix. The only drawback is that we must first quote any unquoted property names + * and remove any comments, because while eval() was cool with them, JSON.parse() is more particular; + * the following RegExp replacements take care of those requirements. + * + * The use of hex values is something else that eval() was OK with, but JSON.parse() is not, and + * while I've stopped using hex values in DumpAPI responses (at least when "format=json" is specified), + * I can't guarantee they won't show up in "legacy" images, and there's no simple RegExp replacement + * for transforming hex values into decimal values, so I cop out and fall back to eval() if I detect + * any hex prefixes ("0x") in the sequence. Ditto for error messages, which appear like so: + * + * ["unrecognized disk path: test.img"] + */ + if (sData.indexOf("0x") < 0 && sData.indexOf("0o") < 0 && sData.substr(0, 2) != '["') { + data = JSON.parse(sData.replace(/([a-z]+):/gm, '"$1":').replace(/\/\/[^\n]*/gm, "")); + } else { + data = eval("(" + sData + ")"); + } + + resource.addrLoad = data['load']; + resource.addrExec = data['exec']; + + if (a = data['bytes']) { + resource.aBytes = a; + } + else if (a = data['words']) { + /* + * Convert all words into bytes + */ + resource.aBytes = new Array(a.length * 2); + for (i = 0, ib = 0; i < a.length; i++) { + resource.aBytes[ib++] = a[i] & 0xff; + resource.aBytes[ib++] = (a[i] >> 8) & 0xff; + + } + } + else if (a = data['longs']) { + /* + * Convert all dwords (longs) into bytes + */ + resource.aBytes = new Array(a.length * 4); + for (i = 0, ib = 0; i < a.length; i++) { + resource.aBytes[ib++] = a[i] & 0xff; + resource.aBytes[ib++] = (a[i] >> 8) & 0xff; + resource.aBytes[ib++] = (a[i] >> 16) & 0xff; + resource.aBytes[ib++] = (a[i] >> 24) & 0xff; + } + } + else if (a = data['data']) { + resource.aData = a; + } + else { + resource.aBytes = data; + } + + if (resource.aBytes) { + if (!resource.aBytes.length) { + Component.error("Empty resource: " + sURL); + resource = null; + } + else if (resource.aBytes.length == 1) { + Component.error(resource.aBytes[0]); + resource = null; + } + } + resource.aSymbols = data['symbols']; + + } catch (e) { + Component.error("Resource data error (" + sURL + "): " + e.message); + resource = null; + } + } + else { + /* + * Parse the data manually; we assume it's a series of hex byte-values separated by whitespace. + */ + var ab = []; + var sHexData = sData.replace(/\n/gm, " ").replace(/ +$/, ""); + var asHexData = sHexData.split(" "); + for (i = 0; i < asHexData.length; i++) { + var n = parseInt(asHexData[i], 16); + if (isNaN(n)) { + Component.error("Resource data error (" + sURL + "): invalid hex byte (" + asHexData[i] + ")"); + break; + } + ab.push(n & 0xff); + } + if (i == asHexData.length) resource.aBytes = ab; + } + return resource; + } + + /** + * sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName) + * + * Send a report (eg, bug report) to the server. + * + * @param {string} sApp (eg, "PCjs") + * @param {string} sVer (eg, "1.02") + * @param {string} sURL (eg, "/devices/pc/machine/5150/mda/64kb/machine.xml") + * @param {string} sUser (ie, the user key, if any) + * @param {string} sType (eg, "bug"); one of ReportAPI.TYPE.* + * @param {string} sReport (eg, unparsed state data) + * @param {string} [sHostName] (default is http://SITEHOST) + */ + static sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName) + { + var dataPost = {}; + dataPost[ReportAPI.QUERY.APP] = sApp; + dataPost[ReportAPI.QUERY.VER] = sVer; + dataPost[ReportAPI.QUERY.URL] = sURL; + dataPost[ReportAPI.QUERY.USER] = sUser; + dataPost[ReportAPI.QUERY.TYPE] = sType; + dataPost[ReportAPI.QUERY.DATA] = sReport; + var sReportURL = (sHostName? sHostName : "http://" + SITEHOST) + ReportAPI.ENDPOINT; + Web.getResource(sReportURL, dataPost, true); + } + + /** + * getHost() + * + * @return {string} + */ + static getHost() + { + return ("http://" + (window? window.location.host : SITEHOST)); + } + + /** + * getHostURL() + * + * @return {string|null} + */ + static getHostURL() + { + return (window? window.location.href : null); + } + + /** + * getHostProtocol() + * + * @return {string} + */ + static getHostProtocol() + { + return (window? window.location.protocol : "file:"); + } + + /** + * getUserAgent() + * + * @return {string} + */ + static getUserAgent() + { + return (window? window.navigator.userAgent : ""); + } + + /** + * hasLocalStorage + * + * true if localStorage support exists, is enabled, and works; false otherwise + * + * @return {boolean} + */ + static hasLocalStorage() + { + if (Web.fLocalStorage == null) { + var f = false; + if (window) { + try { + window.localStorage.setItem(Web.sLocalStorageTest, Web.sLocalStorageTest); + f = (window.localStorage.getItem(Web.sLocalStorageTest) == Web.sLocalStorageTest); + window.localStorage.removeItem(Web.sLocalStorageTest); + } catch (e) { + Web.logLocalStorageError(e); + f = false; + } + } + Web.fLocalStorage = f; + } + return Web.fLocalStorage; + } + + /** + * logLocalStorageError(e) + * + * @param {Error} e is an exception + */ + static logLocalStorageError(e) + { + Web.log(e.message, "localStorage error"); + } + + /** + * getLocalStorageItem(sKey) + * + * Returns the requested key value, or null if the key does not exist, or undefined if localStorage is not available + * + * @param {string} sKey + * @return {string|null|undefined} sValue + */ + static getLocalStorageItem(sKey) + { + var sValue; + if (window) { + try { + sValue = window.localStorage.getItem(sKey); + } catch (e) { + Web.logLocalStorageError(e); + } + } + return sValue; + } + + /** + * setLocalStorageItem(sKey, sValue) + * + * @param {string} sKey + * @param {string} sValue + * @return {boolean} true if localStorage is available, false if not + */ + static setLocalStorageItem(sKey, sValue) + { + try { + window.localStorage.setItem(sKey, sValue); + return true; + } catch (e) { + Web.logLocalStorageError(e); + } + return false; + } + + /** + * removeLocalStorageItem(sKey) + * + * @param {string} sKey + */ + static removeLocalStorageItem(sKey) + { + try { + window.localStorage.removeItem(sKey); + } catch (e) { + Web.logLocalStorageError(e); + } + } + + /** + * getLocalStorageKeys() + * + * @return {Array} + */ + static getLocalStorageKeys() + { + var a = []; + try { + for (var i = 0, c = window.localStorage.length; i < c; i++) { + a.push(window.localStorage.key(i)); + } + } catch (e) { + Web.logLocalStorageError(e); + } + return a; + } + + /** + * reloadPage() + */ + static reloadPage() + { + if (window) window.location.reload(); + } + + /** + * isUserAgent(s) + * + * Check the browser's user-agent string for the given substring; "iOS" and "MSIE" are special values you can + * use that will match any iOS or MSIE browser, respectively (even IE11, in the case of "MSIE"). + * + * 2013-11-06: In a questionable move, MSFT changed the user-agent reported by IE11 on Windows 8.1, eliminating + * the "MSIE" string (which MSDN calls a "version token"; see http://msdn.microsoft.com/library/ms537503.aspx); + * they say "public websites should rely on feature detection, rather than browser detection, in order to design + * their sites for browsers that don't support the features used by the website." So, in IE11, we get a user-agent + * that tries to fool apps into thinking the browser is more like WebKit or Gecko: + * + * Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko + * + * That's a nice idea, but in the meantime, they hosed the XSL transform code in embed.js, which contained + * some very critical browser-specific code; turning on IE's "Compatibility Mode" didn't help either, because + * that's a sledgehammer solution which restores the old user-agent string but also disables other features like + * HTML5 canvas support. As an interim solution, I'm treating any "MSIE" check as a check for either "MSIE" or + * "Trident". + * + * UPDATE: I've since found ways to make the code in embed.js more browser-agnostic, so for now, there's isn't + * any code that cares about "MSIE", but I've left the change in place, because I wouldn't be surprised if I'll + * need more IE-specific code in the future, perhaps for things like copy/paste functionality, or mouse capture. + * + * @param {string} s is a substring to search for in the user-agent; as noted above, "iOS" and "MSIE" are special values + * @return {boolean} is true if the string was found, false if not + */ + static isUserAgent(s) + { + if (window) { + var userAgent = Web.getUserAgent(); + /* + * Here's one case where we have to be careful with Component, because when isUserAgent() is called by + * the init code below, component.js hasn't been loaded yet. The simple solution for now is to remove the call. + * + * Web.log("agent: " + userAgent); + * + * And yes, it would be pointless to use the conditional (?) operator below, if not for the Google Closure + * Compiler (v20130823) failing to detect the entire expression as a boolean. + */ + return s == "iOS" && !!userAgent.match(/(iPod|iPhone|iPad)/) && !!userAgent.match(/AppleWebKit/) || s == "MSIE" && !!userAgent.match(/(MSIE|Trident)/) || (userAgent.indexOf(s) >= 0); + } + return false; + } + + /** + * isMobile() + * + * Check the browser's user-agent string for the substring "Mobi", as per Mozilla recommendation: + * + * https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent + * + * @return {boolean} is true if the browser appears to be a mobile (ie, non-desktop) web browser, false if not + */ + static isMobile() + { + return Web.isUserAgent("Mobi"); + } + + /** + * getURLParm(sParm) + * + * @param {string} sParm + * @return {string|undefined} + */ + static getURLParm(sParm) + { + if (!Web.parmsURL) { + Web.parmsURL = Web.parseURLParms(); + } + return Web.parmsURL[sParm]; + } + + /** + * parseURLParms(sParms) + * + * @param {string} [sParms] containing the parameter portion of a URL (ie, after the '?') + * @return {Object} containing properties for each parameter found + */ + static parseURLParms(sParms) + { + var aParms = {}; + if (window) { // an alternative to "if (typeof module === 'undefined')" if require("defines") was used + if (!sParms) { + /* + * Note that window.location.href returns the entire URL, whereas window.location.search + * returns only the parameters, if any (starting with the '?', which we skip over with a substr() call). + */ + sParms = window.location.search.substr(1); + } + var match; + var pl = /\+/g; // RegExp for replacing addition symbol with a space + var search = /([^&=]+)=?([^&]*)/g; + var decode = function(s) + { + return decodeURIComponent(s.replace(pl, " ")); + }; + + while ((match = search.exec(sParms))) { + aParms[decode(match[1])] = decode(match[2]); + } + } + return aParms; + } + + /** + * downloadFile(sData, sType, fBase64, sFileName) + * + * @param {string} sData + * @param {string} sType + * @param {boolean} [fBase64] + * @param {string} [sFileName] + */ + static downloadFile(sData, sType, fBase64, sFileName) + { + var link = null, sAlert; + var sURI = "data:application/" + sType + (fBase64? ";base64" : "") + ","; + + if (!Web.isUserAgent("Firefox")) { + sURI += (fBase64? sData : encodeURI(sData)); + } else { + sURI += (fBase64? sData : encodeURIComponent(sData)); + } + if (sFileName) { + link = document.createElement('a'); + if (typeof link.download != 'string') link = null; + } + if (link) { + link.href = sURI; + link.download = sFileName; + document.body.appendChild(link); // Firefox allegedly requires the link to be in the body + link.click(); + document.body.removeChild(link); + sAlert = 'Check your Downloads folder for ' + sFileName + '.'; + } else { + window.open(sURI); + sAlert = 'Check your browser for a new window/tab containing the requested data' + (sFileName? (' (' + sFileName + ')') : '') + '.'; + } + return sAlert; + } + + /** + * onCountRepeat(n, fnRepeat, fnComplete, msDelay) + * + * Call fnRepeat() n times with an msDelay millisecond delay between calls, + * then call fnComplete() when n has been exhausted OR fnRepeat() returns false. + * + * @param {number} n + * @param {function()} fnRepeat + * @param {function()} fnComplete + * @param {number} [msDelay] + */ + static onCountRepeat(n, fnRepeat, fnComplete, msDelay) + { + var fnTimeout = function doCountRepeat() + { + n -= 1; + if (n >= 0) { + if (!fnRepeat()) n = 0; + } + if (n > 0) { + setTimeout(fnTimeout, msDelay || 0); + return; + } + fnComplete(); + }; + fnTimeout(); + } + + /** + * onClickRepeat(e, msDelay, msRepeat, fn) + * + * Repeatedly call fn() with an initial msDelay, and an msRepeat delay thereafter, + * as long as HTML control Object e has an active "down" event and fn() returns true. + * + * @param {Object} e + * @param {number} msDelay + * @param {number} msRepeat + * @param {function(boolean)} fn is passed false on the first call, true on all repeated calls + */ + static onClickRepeat(e, msDelay, msRepeat, fn) + { + var ms = 0, timer = null, fIgnoreMouseEvents = false; + + var fnRepeat = function doClickRepeat() + { + if (fn(ms === msRepeat)) { + timer = setTimeout(fnRepeat, ms); + ms = msRepeat; + } + }; + e.onmousedown = function() + { + // Web.log("onMouseDown()"); + if (!fIgnoreMouseEvents) { + if (!timer) { + ms = msDelay; + fnRepeat(); + } + } + }; + e.ontouchstart = function() + { + // Web.log("onTouchStart()"); + if (!timer) { + ms = msDelay; + fnRepeat(); + } + }; + e.onmouseup = e.onmouseout = function() + { + // Web.log("onMouseUp()/onMouseOut()"); + if (timer) { + clearTimeout(timer); + timer = null; + } + }; + e.ontouchend = e.ontouchcancel = function() + { + // Web.log("onTouchEnd()/onTouchCancel()"); + if (timer) { + clearTimeout(timer); + timer = null; + } + /* + * Devices that generate ontouch* events ALSO generate onmouse* events, + * and generally do so immediately after all the touch events are complete, + * so unless we want double the action, we need to ignore mouse events. + */ + fIgnoreMouseEvents = true; + }; + } + + /** + * onPageEvent(sName, fn) + * + * For 'onload', 'onunload', and 'onpageshow' events, most callers should NOT use this function, but + * instead use Web.onInit(), Web.onShow(), and Web.onExit(), respectively. + * + * The only components that should still use onPageEvent() are THIS component (see the bottom of this file) + * and components that need to capture other events (eg, the 'onresize' event in the Video component). + * + * This function creates a chain of callbacks, allowing multiple JavaScript modules to define handlers + * for the same event, which wouldn't be possible if everyone modified window['onload'], window['onunload'], + * etc, themselves. However, that's less of a concern now, because assuming everyone else is now using + * onInit(), onExit(), etc, then there really IS only one component setting the window callback: this one. + * + * NOTE: It's risky to refer to obscure event handlers with "dot" names, because the Closure Compiler may + * erroneously replace them (eg, window.onpageshow is a good example). + * + * @param {string} sFunc + * @param {function()} fn + */ + static onPageEvent(sFunc, fn) + { + if (window) { + var fnPrev = window[sFunc]; + if (typeof fnPrev !== 'function') { + window[sFunc] = fn; + } else { + /* + * TODO: Determine whether there's any value in receiving/sending the Event object that the + * browser provides when it generates the original event. + */ + window[sFunc] = function onWindowEvent() + { + if (fnPrev) fnPrev(); + fn(); + }; + } + } + }; + + /** + * onInit(fn) + * + * Use this instead of setting window.onload. Allows multiple JavaScript modules to define their own 'onload' event handler. + * + * @param {function()} fn + */ + static onInit(fn) + { + Web.aPageEventHandlers['init'].push(fn); + }; + + /** + * onShow(fn) + * + * @param {function()} fn + * + * Use this instead of setting window.onpageshow. Allows multiple JavaScript modules to define their own 'onpageshow' event handler. + */ + static onShow(fn) + { + Web.aPageEventHandlers['show'].push(fn); + }; + + /** + * onExit(fn) + * + * @param {function()} fn + * + * Use this instead of setting window.onunload. Allows multiple JavaScript modules to define their own 'onunload' event handler. + */ + static onExit(fn) + { + Web.aPageEventHandlers['exit'].push(fn); + }; + + /** + * doPageEvent(afn) + * + * @param {Array.} afn + */ + static doPageEvent(afn) + { + if (Web.fPageEventsEnabled) { + try { + for (var i = 0; i < afn.length; i++) { + afn[i](); + } + } catch (e) { + Web.notice("An unexpected exception occurred:\n\n" + e.message + "\n\nPlease send this information to support@pcjs.org. Thanks."); + } + } + }; + + /** + * enablePageEvents(fEnable) + * + * @param {boolean} fEnable is true to enable page events, false to disable (they're enabled by default) + */ + static enablePageEvents(fEnable) + { + if (!Web.fPageEventsEnabled && fEnable) { + Web.fPageEventsEnabled = true; + if (Web.fPageLoaded) Web.sendPageEvent('init'); + if (Web.fPageShowed) Web.sendPageEvent('show'); + return; + } + Web.fPageEventsEnabled = fEnable; + } + + /** + * sendPageEvent(sEvent) + * + * This allows us to manually trigger page events. + * + * @param {string} sEvent (one of 'init', 'show' or 'exit') + */ + static sendPageEvent(sEvent) + { + if (Web.aPageEventHandlers[sEvent]) { + Web.doPageEvent(Web.aPageEventHandlers[sEvent]); + } + } +} + +Web.parmsURL = null; // initialized on first call to parseURLParms() + +Web.aPageEventHandlers = { + 'init': [], // list of window 'onload' handlers + 'show': [], // list of window 'onpageshow' handlers + 'exit': [] // list of window 'onunload' handlers (although we prefer to use 'onbeforeunload' if possible) +}; + +Web.fPageLoaded = false; // set once the page's first 'onload' event has occurred +Web.fPageShowed = false; // set once the page's first 'onpageshow' event has occurred +Web.fPageEventsEnabled = true; // default is true, set to false (or true) by enablePageEvents() + +/** + * fLocalStorage + * + * true if localStorage support exists, is enabled, and works; "falsey" otherwise + * + * @type {boolean|null} + */ +Web.fLocalStorage = null; + +/** + * TODO: Is there any way to get the Closure Compiler to stop inlining this string? This isn't cutting it. + * + * @const {string} + */ +Web.sLocalStorageTest = "PCjs.localStorage"; + +Web.onPageEvent('onload', function onPageLoad() { + Web.fPageLoaded = true; + Web.doPageEvent(Web.aPageEventHandlers['init']); +}); + +Web.onPageEvent('onpageshow', function onPageShow() { + Web.fPageShowed = true; + Web.doPageEvent(Web.aPageEventHandlers['show']); +}); + +Web.onPageEvent(Web.isUserAgent("Opera") || Web.isUserAgent("iOS")? 'onunload' : 'onbeforeunload', function onPageUnload() { + Web.doPageEvent(Web.aPageEventHandlers['exit']); +}); + + + +/** + * @copyright http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + */ + +/* + * All PCjs components now use JSDoc types, primarily so that Google's Closure Compiler will compile + * everything with zero warnings when ADVANCED_OPTIMIZATIONS are enabled. For more information about + * the JSDoc types supported by the Closure Compiler: + * + * https://developers.google.com/closure/compiler/docs/js-for-compiler#types + * + * I also attempted to validate this code with JSLint, but it complained too much; eg, it didn't like + * "while (true)", a tried and "true" programming convention for decades, and it wanted me to replace + * all "++" and "--" operators with "+= 1" and "-= 1", use "(s || '')" instead of "(s? s : '')", etc. + * + * I prefer sticking with traditional C-style idioms, in part because they are more portable. That + * does NOT mean I'm trying to write "portable JavaScript," but some of this code was ported from C code + * I'd written long ago, so portability is good, and I'm not going to throw that away if there's no need. + * + * UPDATE: I've since switched from JSLint to JSHint, which seems to have more reasonable defaults. + * And for new code, I have adopted some popular JavaScript idioms, like "(s || '')", although the need + * for those kinds of expressions will be reduced as I also start adopting some ES6 features, like + * default parameters. + */ + + +/** + * Since the Closure Compiler treats ES6 classes as @struct rather than @dict by default, + * it deters us from defining named properties on our components; eg: + * + * this['exports'] = {...} + * + * results in an error: + * + * Cannot do '[]' access on a struct + * + * So, in order to define 'exports', we must override the @struct assumption by annotating + * the class as @unrestricted (or @dict). Note that this must be done both here and in the + * subclass (eg, SerialPort), because otherwise the Compiler won't allow us to *reference* + * the named property either. + * + * TODO: Consider marking ALL our classes unrestricted, because otherwise it forces us to + * define every single property the class uses in its constructor, which results in a fair + * bit of redundant initialization, since many properties aren't (and don't need to be) fully + * initialized until the appropriate init(), reset(), restore(), etc. function is called. + * + * The upside, however, may be that since the structure of the class is completely defined by + * the constructor, JavaScript engines may be able to optimize and run more efficiently. + * + * @unrestricted + */ +class Component { + /** + * Component(type, parms, bitsMessage) + * + * A Component object requires: + * + * type: a user-defined type name (eg, "CPU") + * + * and accepts any or all of the following (parms) properties: + * + * id: component ID (default is "") + * name: component name (default is ""; if blank, toString() will use the type name only) + * comment: component comment string (default is undefined) + * + * Component subclasses will usually have additional (parms) properties. + * + * @param {string} type + * @param {Object} [parms] + * @param {number} [bitsMessage] selects message(s) that the component wants to enable (default is 0) + */ + constructor(type, parms, bitsMessage) + { + this.type = type; + + if (!parms) parms = {'id': "", 'name': ""}; + + this.id = parms['id'] || ""; + this.name = parms['name']; + this.comment = parms['comment']; + this.parms = parms; + + /* + * The following Component properties need to be accessible by other machines and/or command scripts; + * well, OK, or we could have exported some new functions to walk the contents of these properties, as we + * did with findMachineComponent(), but this works just as well. + * + * Also, while the double-assignment looks silly (ie, using both dot and bracket property notation), it + * resolves a complaint from the Closure Compiler, because if we use ONLY bracket notation here, then the + * Compiler wants us to change all the other references to bracket notation as well. + */ + this.exports = this['exports'] = {}; + this.bindings = this['bindings'] = {}; + + var i = this.id.indexOf('.'); + if (i < 0) { + this.idComponent = this.id; + } else { + this.idMachine = this.id.substr(0, i); + this.idComponent = this.id.substr(i + 1); + } + + /* + * Gather all the various component flags (booleans) into a single "flags" object, and encourage + * subclasses to do the same, to reduce the property clutter we have to wade through while debugging. + */ + this.flags = { + ready: false, + busy: false, + busyCancel: false, + powered: false, + error: false + }; + + this.fnReady = null; + this.clearError(); + this.bitsMessage = bitsMessage || 0; + + /** @type {Object|null} controlPrint is the HTML control, if any, that we can print to */ + this.controlPrint = null; + + this.cmp = null; + this.bus = null; + this.cpu = null; + this.dbg = null; + + /* + * TODO: Consider adding another parameter to the Component() constructor that allows components to tell + * us if they support single or multiple instances per machine. For example, there can be multiple SerialPort + * components per machine, but only one CPU component (some machines also support an FPU, but that component + * is considered separate from the CPU). + * + * It's not critical, but it would help catch machine configuration errors; for example, a machine that mistakenly + * includes two CPU components may, aside from wasting memory, end up with odd side-effects, like unresponsive + * CPU controls. + */ + Component.add(this); + } + + /** + * Component.add(component) + * + * @param {Component} component + */ + static add(component) + { + /* + * This just generates a lot of useless noise, handy in the early days, not so much these days.... + * + * if (DEBUG) Component.log("Component.add(" + component.type + "," + component.id + ")"); + */ + Component.components.push(component); + } + + /** + * Component.addMachine(idMachine) + * + * @param {string} idMachine + */ + static addMachine(idMachine) + { + Component.machines[idMachine] = {}; + } + + /** + * Component.addMachineResource(idMachine, sName, data) + * + * @param {string} idMachine + * @param {string|null} sName (name of the resource) + * @param {*} data + */ + static addMachineResource(idMachine, sName, data) + { + /* + * I used to assert(Component.machines[idMachine]), but when we're running as a Node app, embed.js is not used, + * so addMachine() is never called, so resources do not need to be recorded. + */ + if (Component.machines[idMachine] && sName) { + Component.machines[idMachine][sName] = data; + } + } + + /** + * Component.getMachineResources(idMachine) + * + * @param {string} idMachine + * @return {Object|undefined} + */ + static getMachineResources(idMachine) + { + return Component.machines[idMachine]; + } + + /** + * Component.getTime() + * + * @return {number} the current time, in milliseconds + */ + static getTime() + { + return Date.now() || +new Date(); + } + + /** + * Component.log(s, type) + * + * For diagnostic output only. + * + * @param {string} [s] is the message text + * @param {string} [type] is the message type + */ + static log(s, type) + { + if (!COMPILED) { + if (s) { + var sElapsed = "", sMsg = (type? (type + ": ") : "") + s; + if (typeof Usr != "undefined") { + if (Component.msStart === undefined) { + Component.msStart = Component.getTime(); + } + sElapsed = (Component.getTime() - Component.msStart) + "ms: "; + } + if (window && window.console) console.log(sElapsed + sMsg.replace(/\n/g, " ")); + } + } + } + + /** + * Component.assert(f, s) + * + * Verifies conditions that must be true (for DEBUG builds only). + * + * The Closure Compiler should automatically remove all references to Component.assert() in non-DEBUG builds. + * TODO: Add a task to the build process that "asserts" there are no instances of "assertion failure" in RELEASE builds. + * + * @param {boolean} f is the expression we are asserting to be true + * @param {string} [s] is description of the assertion on failure + */ + static assert(f, s) + { + if (DEBUG) { + if (!f) { + if (!s) s = "assertion failure"; + Component.log(s); + throw new Error(s); + } + } + } + + /** + * Component.println(s, type, id) + * + * For non-diagnostic messages, which components may override to control the destination/appearance of their output. + * + * Components that inherit from this class should use the instance method, this.println(), rather than Component.println(), + * because if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the class + * method would improperly affect any other machines loaded on the same page). + * + * @param {string} [s] is the message text + * @param {string} [type] is the message type + * @param {string} [id] is the caller's ID, if any + */ + static println(s, type, id) + { + if (!COMPILED) { + Component.log((id? (id + ": ") : "") + (s? ("\"" + s + "\"") : ""), type); + } + } + + /** + * Component.notice(s, fPrintOnly, id) + * + * notice() is like println() but implies a need for user notification, so we alert() as well. + * + * @param {string} s is the message text + * @param {boolean} [fPrintOnly] + * @param {string} [id] is the caller's ID, if any + */ + static notice(s, fPrintOnly, id) + { + if (!COMPILED) { + Component.println(s, "notice", id); + } + if (!fPrintOnly) Component.alertUser((id? (id + ": ") : "") + s); + } + + /** + * Component.warning(s) + * + * @param {string} s describes the warning + */ + static warning(s) + { + if (!COMPILED) { + Component.println(s, "warning"); + } + Component.alertUser(s); + } + + /** + * Component.error(s) + * + * @param {string} s describes the error; an alert() is displayed as well + */ + static error(s) + { + if (!COMPILED) { + Component.println(s, "error"); + } + Component.alertUser(s); + } + + /** + * Component.alertUser(sMessage) + * + * @param {string} sMessage + */ + static alertUser(sMessage) + { + if (window) { + window.alert(sMessage); + } else { + Component.log(sMessage); + } + }; + + /** + * Component.confirmUser(sPrompt) + * + * @param {string} sPrompt + * @returns {boolean} true if the user clicked OK, false if Cancel/Close + */ + static confirmUser(sPrompt) + { + var fResponse = false; + if (window) { + fResponse = window.confirm(sPrompt); + } + return fResponse; + } + + /** + * Component.promptUser() + * + * @param {string} sPrompt + * @param {string} [sDefault] + * @returns {string|null} + */ + static promptUser(sPrompt, sDefault) + { + var sResponse = null; + if (window) { + sResponse = window.prompt(sPrompt, sDefault === undefined? "" : sDefault); + } + return sResponse; + } + + /** + * Component.getComponents(idRelated) + * + * We could store components as properties, using the component's ID, and change + * this linear lookup into a property lookup, but some components may have no ID. + * + * @param {string} [idRelated] of related component + * @return {Array} of components + */ + static getComponents(idRelated) + { + var i; + var aComponents = []; + /* + * getComponentByID(id, idRelated) + * + * If idRelated is provided, we check it for a machine prefix, and use any + * existing prefix to constrain matches to IDs with the same prefix, in order to + * avoid matching components belonging to other machines. + */ + if (idRelated) { + if ((i = idRelated.indexOf('.')) > 0) + idRelated = idRelated.substr(0, i + 1); + else + idRelated = ""; + } + for (i = 0; i < Component.components.length; i++) { + var component = Component.components[i]; + if (!idRelated || !component.id.indexOf(idRelated)) { + aComponents.push(component); + } + } + return aComponents; + } + + /** + * Component.getComponentByID(id, idRelated) + * + * We could store components as properties, using the component's ID, and change + * this linear lookup into a property lookup, but some components may have no ID. + * + * @param {string} id of the desired component + * @param {string} [idRelated] of related component + * @return {Component|null} + */ + static getComponentByID(id, idRelated) + { + if (id !== undefined) { + var i; + /* + * If idRelated is provided, we check it for a machine prefix, and use any + * existing prefix to constrain matches to IDs with the same prefix, in order to + * avoid matching components belonging to other machines. + */ + if (idRelated && (i = idRelated.indexOf('.')) > 0) { + id = idRelated.substr(0, i + 1) + id; + } + for (i = 0; i < Component.components.length; i++) { + if (Component.components[i].id === id) { + return Component.components[i]; + } + } + if (Component.components.length) { + Component.log("Component ID '" + id + "' not found", "warning"); + } + } + return null; + } + + /** + * Component.getComponentByType(sType, idRelated, componentPrev) + * + * @param {string} sType of the desired component + * @param {string} [idRelated] of related component + * @param {Component|null} [componentPrev] of previously returned component, if any + * @return {Component|null} + */ + static getComponentByType(sType, idRelated, componentPrev) + { + if (sType !== undefined) { + var i; + /* + * If idRelated is provided, we check it for a machine prefix, and use any + * existing prefix to constrain matches to IDs with the same prefix, in order to + * avoid matching components belonging to other machines. + */ + if (idRelated) { + if ((i = idRelated.indexOf('.')) > 0) { + idRelated = idRelated.substr(0, i + 1); + } else { + idRelated = ""; + } + } + for (i = 0; i < Component.components.length; i++) { + if (componentPrev) { + if (componentPrev == Component.components[i]) componentPrev = null; + continue; + } + if (sType == Component.components[i].type && (!idRelated || !Component.components[i].id.indexOf(idRelated))) { + return Component.components[i]; + } + } + Component.log("Component type '" + sType + "' not found", "warning"); + } + return null; + } + + /** + * Component.getComponentParms(element) + * + * @param {Object} element from the DOM + */ + static getComponentParms(element) + { + var parms = null; + var sParms = element.getAttribute("data-value"); + if (sParms) { + try { + parms = eval("(" + sParms + ")"); // jshint ignore:line + /* + * We can no longer invoke removeAttribute() because some components (eg, Panel) need + * to run their initXXX() code more than once, to avoid initialization-order dependencies. + * + * if (!DEBUG) { + * element.removeAttribute("data-value"); + * } + */ + } catch(e) { + Component.error(e.message + " (" + sParms + ")"); + } + } + return parms; + } + + /** + * Component.bindExternalControl(component, sControl, sBinding, sType) + * + * @param {Component} component + * @param {string} sControl + * @param {string} sBinding + * @param {string} [sType] is the external component type + */ + static bindExternalControl(component, sControl, sBinding, sType) + { + if (sControl) { + if (sType === undefined) sType = "Panel"; + var target = Component.getComponentByType(sType, component.id); + if (target) { + var eBinding = target.bindings[sControl]; + if (eBinding) { + component.setBinding(null, sBinding, eBinding); + } + } + } + } + + /** + * Component.bindComponentControls(component, element, sAppClass) + * + * @param {Component} component + * @param {Object} element from the DOM + * @param {string} sAppClass + */ + static bindComponentControls(component, element, sAppClass) + { + var aeControls = Component.getElementsByClass(element.parentNode, sAppClass + "-control"); + + for (var iControl = 0; iControl < aeControls.length; iControl++) { + + var aeChildNodes = aeControls[iControl].childNodes; + + for (var iNode = 0; iNode < aeChildNodes.length; iNode++) { + var control = aeChildNodes[iNode]; + if (control.nodeType !== 1 /* document.ELEMENT_NODE */) { + continue; + } + var sClass = control.getAttribute("class"); + if (!sClass) continue; + var aClasses = sClass.split(" "); + for (var iClass = 0; iClass < aClasses.length; iClass++) { + var parms; + sClass = aClasses[iClass]; + switch (sClass) { + case sAppClass + "-binding": + parms = Component.getComponentParms(control); + if (parms && parms['binding']) { + component.setBinding(parms['type'], parms['binding'], control, parms['value']); + } else if (!parms || parms['type'] != "description") { + Component.log("Component '" + component.toString() + "' missing binding" + (parms? " for " + parms['type'] : ""), "warning"); + } + iClass = aClasses.length; + break; + default: + // if (DEBUG) Component.log("Component.bindComponentControls(" + component.toString() + "): unrecognized control class \"" + sClass + "\"", "warning"); + break; + } + } + } + } + } + + /** + * Component.getElementsByClass(element, sClass, sObjClass) + * + * This is a cross-browser helper function, since not all browser's support getElementsByClassName() + * + * TODO: This should probably be moved into weblib.js at some point, along with the control binding functions above, + * to keep all the browser-related code together. + * + * @param {Object} element from the DOM + * @param {string} sClass + * @param {string} [sObjClass] + * @return {Array|NodeList} + */ + static getElementsByClass(element, sClass, sObjClass) + { + if (sObjClass) sClass += '-' + sObjClass + "-object"; + /* + * Use the browser's built-in getElementsByClassName() if it appears to be available + * (for example, it's not available in IE8, but it should be available in IE9 and up) + */ + if (element.getElementsByClassName) { + return element.getElementsByClassName(sClass); + } + var i, j, ae = []; + var aeAll = element.getElementsByTagName("*"); + var re = new RegExp('(^| )' + sClass + '( |$)'); + for (i = 0, j = aeAll.length; i < j; i++) { + if (re.test(aeAll[i].className)) { + ae.push(aeAll[i]); + } + } + if (!ae.length) { + Component.log('No elements of class "' + sClass + '" found'); + } + return ae; + } + + /** + * Component.getScriptCommands(sScript) + * + * This is a simple parser that breaks sScript into an array of commands, where each command + * is an array of tokens, where tokens are sequences of characters separated by any of: tab, space, + * carriage-return (CR), line-feed (LF), semicolon, single-quote, or double-quote; if a quote is + * used, all characters up to the next matching quote become part of the token, allowing any of the + * other separators to be part of the token. CR, LF and semicolon also serve to terminate a command, + * with semicolon being preferred, because it's 1) more visible, and 2) essential when the entire + * script is a multi-line string where all CR/LF were replaced by spaces (which is what Jekyll does, + * and since we can't change Jekyll, it's what our own MarkDown Front Matter parser does as well; + * see convertMD() in markout.js, where the aCommandDefs array is built). + * + * Backslash sequences like \n, \r, and \\ have already been converted to LF, CR and backslash + * characters, since the entire script string is injected into a JavaScript function call, so any + * backslash sequence that JavaScript supports is automatically converted: + * + * \0 \' \" \\ \n \r \v \t \b \f \uXXXX \xXX + * ^J ^M ^K ^I ^H ^L + * + * To support any other non-printable 8-bit character, such as ESC, you should use \xXX, where XX + * is the ASCII code in hex. For ESC, that would \x1B. + * + * @param {string} sScript + * @return {Array} + */ + static getScriptCommands(sScript) + { + var cch = sScript.length; + var aCommands = [], aTokens = [], sToken = "", chQuote = null; + for (var i = 0; i < cch; i++) { + var ch = sScript[i]; + if (ch == '"' || ch == "'") { + if (chQuote && ch != chQuote) { + sToken += ch; + continue; + } + if (!chQuote) { + chQuote = ch; + } else { + chQuote = null; + } + if (sToken) { + aTokens.push(sToken); + sToken = ""; + } + continue; + } + if (!chQuote) { + if (ch == '\r' || ch == '\n') { + ch = ';'; + } + if (ch == ' ' || ch == '\t' || ch == ';') { + if (sToken) { + aTokens.push(sToken); + sToken = ""; + } + if (ch == ';' && aTokens.length) { + aCommands.push(aTokens); + aTokens = []; + } + continue; + } + } + sToken += ch; + } + if (sToken) { + aTokens.push(sToken); + } + if (aTokens.length) { + aCommands.push(aTokens); + } + return aCommands; + } + + /** + * Component.processScript(idMachine, sScript) + * + * @param {string} idMachine + * @param {string} sScript + * @return {boolean} + */ + static processScript(idMachine, sScript) + { + var fSuccess = false; + idMachine += ".machine"; + if (typeof sScript == "string" && !Component.commands[idMachine]) { + fSuccess = true; + Component.commands[idMachine] = Component.getScriptCommands(sScript); + if (!Component.processCommands(idMachine)) { + fSuccess = false; + } + } + return fSuccess; + } + + /** + * Component.processCommands(idMachine) + * + * @param {string} idMachine + * @return {boolean} + */ + static processCommands(idMachine) + { + var fSuccess = true; + var aCommands = Component.commands[idMachine]; + + // var dbg = Component.getComponentByType("Debugger", idMachine); + + while (aCommands && aCommands.length) { + + var aTokens = aCommands.splice(0, 1)[0]; + var sCommand = aTokens[0]; + + /* + * It's possible to route this output to the Debugger window with dbg.println() + * instead, but it's a bit too confusing mingling script output in a window that + * already mingles Debugger and machine output. + */ + Component.println('script: ' + aTokens.join(' ')); + + var fnCallReady = null; + if (Component.asyncCommands.indexOf(sCommand) >= 0) { + fnCallReady = function processNextCommand() { + return function() { + Component.processCommands(idMachine); + } + }(); + } + + var fnCommand = Component.globalCommands[sCommand]; + if (fnCommand) { + if (!fnCallReady) { + fSuccess = fnCommand(aTokens[1], aTokens[2], aTokens[3]); + } else { + if (!fnCommand(fnCallReady, aTokens[1], aTokens[2], aTokens[3])) break; + } + } + else { + fSuccess = false; + var component = Component.getComponentByType(aTokens[1], idMachine); + if (component) { + fnCommand = Component.componentCommands[sCommand]; + if (fnCommand) { + fSuccess = fnCommand(component, aTokens[2], aTokens[3]); + } + else { + var exports = component['exports']; + if (exports) { + fnCommand = exports[sCommand]; + if (fnCommand) { + fSuccess = true; + if (!fnCallReady) { + fSuccess = fnCommand.call(component, aTokens[2], aTokens[3]); + } else { + if (!fnCommand.call(component, fnCallReady, aTokens[2], aTokens[3])) break; + } + } + } + } + } + } + + if (!fSuccess) { + Component.alertUser("Script error: " + sCommand + (fnCommand? " failed" : " unrecognized")); + break; + } + } + + if (aCommands && !aCommands.length) { + delete Component.commands[idMachine]; + } + + return fSuccess; + } + + /** + * Component.scriptAlert(sMessage) + * + * @param {string} sMessage + * @return {boolean} + */ + static scriptAlert(sMessage) + { + Component.alertUser(sMessage); + return true; + } + + /** + * Component.scriptSelect(component, sBinding, sValue) + * + * @param {Component} component + * @param {string} sBinding + * @param {string} sValue + * @return {boolean} + */ + static scriptSelect(component, sBinding, sValue) + { + var fSuccess = false; + var aBindings = component['bindings']; + var control = aBindings[sBinding]; + if (control) { + for (var i = 0; i < control.options.length; i++) { + if (control.options[i].textContent == sValue) { + if (control.selectedIndex != i) { + control.selectedIndex = i; + } + fSuccess = true; + break; + } + } + } + return fSuccess; + } + + /** + * Component.scriptSleep(fnCallback, sDelay) + * + * @param {function()} fnCallback + * @param {string} sDelay (in milliseconds) + * @return {boolean} + */ + static scriptSleep(fnCallback, sDelay) + { + setTimeout(fnCallback, +sDelay); + return false; + } + + /** + * toString() + * + * @this {Component} + * @return {string} + */ + toString() { + return (this.name? this.name : (this.id || this.type)); + } + + /** + * getMachineNum() + * + * @this {Component} + * @return {number} unique machine number + */ + getMachineNum() { + var nMachine = 1; + if (this.idMachine) { + var aDigits = this.idMachine.match(/\d+/); + if (aDigits !== null) + nMachine = parseInt(aDigits[0], 10); + } + return nMachine; + } + + /** + * setBinding(sHTMLType, sBinding, control, sValue) + * + * Component's setBinding() method is intended to be overridden by subclasses. + * + * @this {Component} + * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas") + * @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset") + * @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement) + * @param {string} [sValue] optional data value + * @return {boolean} true if binding was successful, false if unrecognized binding request + */ + setBinding(sHTMLType, sBinding, control, sValue) { + switch (sBinding) { + case "clear": + if (!this.bindings[sBinding]) { + this.bindings[sBinding] = control; + control.onclick = (function(component) { + return function clearPanel() { + if (component.bindings['print']) { + component.bindings['print'].value = ""; + } + }; + }(this)); + } + return true; + case "print": + if (!this.bindings[sBinding]) { + this.bindings[sBinding] = control; + /* + * HACK: Save this particular HTML element so that the Debugger can access it, too + */ + this.controlPrint = control; + /* + * This was added for Firefox (Safari automatically clears the + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + ; + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8088 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + + null + + + + + + 0 + + + + + + + -1 + + + + + + + -1 + + + + + + + -1 + + + + + + ,model:'',stepping:'',fpu:,cycles:,multiplier:,autoStart:,addrReset:,csStart:,csInterval:,csStop: + + + + + + + + + + + + + + + 8087 + + + + + + + + + + + + ,model:'',stepping:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + true + + + + + + false + + + + + + {} + + + + + + + + + + + + + + + + + chipset + ,model:'',scaleTimers:,sw1:'',sw2:'',sound:,floppies:,monitor:'',rtcDate:'' + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + device + ,type:'',baudReceive:,baudTransmit:,autoMount:'' + + + + + + + + + + + + + + + + + + + + keyboard + ,model:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + parallel + ,adapter:,binding:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + + 0 + + + + + + + 0 + + + + + + + false + + + + + serial + ,adapter:,baudReceive:,baudTransmit:,binding:'',tabSize:,charBOL:,upperCase: + + + + + + + + + + + + + + + + + + + + mouse + ,serial:'' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fdc + ,autoMount:'',sortBy:'' + + + + + + + + + + + + + + + + + + + + + xt + + + + + hdc + ,drives:'',type:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + null + + + + + + + + + + + + + + + + + rom + ,addr:,size:,alias:,file:'',notify:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + null + + + + + + null + + + + + + true + + + + + ram + ,addr:,size:,file:'',load:,exec:,test: + + + + + + + + + + + + + + + + + + + + + null + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 0 + + + + + + 0 + + + + + + false + + + + + + 1bpp + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + false + + + + + + 1 + + + + + + 1 + + + + + + + 80 + + + + + + + 25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + 0 + + + + + + null + + + + + + 0 + + + + + + 60 + + + + + video + ,model:'',mode:,screenWidth:,screenHeight:,screenColor:'',screenRotate:,bufferAddr:,bufferRAM:,bufferFormat:'',bufferCols:,bufferRows:,bufferBits:,bufferLeft:,bufferRotate:,memory:,switches:'',scale:,cellWidth:,cellHeight:,charCols:,charRows:,fontROM:'',fontColor:'',touchScreen:'',autoLock:,aspectRatio:,smoothing:,interruptRate:,refreshRate: + + + + + + + + + + + + + + + 16 + + + + + + + + + + + + + + + + + debugger + ,base:,commands:'',messages:'' + + + + + + + + + + + + + + panel + + + + + + + + + + + + + + + + + + + + + true + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + computer + ,autoPower:,busWidth:,resume:'',state:'' + + + + + + + + diff --git a/versions/pcx86/1.35.1/document.css b/versions/pcx86/1.35.1/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/pcx86/1.35.1/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/pcx86/1.35.1/document.xsl b/versions/pcx86/1.35.1/document.xsl new file mode 100644 index 0000000000..f0b03537e1 --- /dev/null +++ b/versions/pcx86/1.35.1/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

    +
    + + + + + + + +

    +
    + +

    +
    +
    +
    + + + + + + +
    +
    + + +
    + +   + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + +

    +
    + + +

    +
    + + +

    +
    + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/pcx86/1.35.1/machine.xsl b/versions/pcx86/1.35.1/machine.xsl new file mode 100644 index 0000000000..55975e6c5c --- /dev/null +++ b/versions/pcx86/1.35.1/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pcx86/1.35.1/manifest.xsl b/versions/pcx86/1.35.1/manifest.xsl new file mode 100644 index 0000000000..e88b4f3df0 --- /dev/null +++ b/versions/pcx86/1.35.1/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/pcx86/1.35.1/outline.xsl b/versions/pcx86/1.35.1/outline.xsl new file mode 100644 index 0000000000..fe491df320 --- /dev/null +++ b/versions/pcx86/1.35.1/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pcx86/1.35.1/pcx86-dbg.js b/versions/pcx86/1.35.1/pcx86-dbg.js new file mode 100644 index 0000000000..13b41c01ec --- /dev/null +++ b/versions/pcx86/1.35.1/pcx86-dbg.js @@ -0,0 +1,896 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/diskapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/interrupts.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86seg.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86fpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86func.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86help.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86mods.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86ops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86op0f.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/chipset.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/keyboard.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/video.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/parallel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/mouse.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/disk.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/fdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/hdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/computer.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/save.js (C) Jeff Parsons 2012-2017 +*/ +var l,aa;function ba(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]} +for(var da="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ea="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this,fa=["Math","trunc"],ga=0;gaa?-b:b};ka!=ja&&null!=ka&&da(ea,ia,{configurable:!0,writable:!0,value:ka}); +var la={163840:[40,1,8,,254],184320:[40,1,9,,252],327680:[40,2,8,,255],368640:[40,2,9,,253],737280:[80,2,9,,249],1228800:[80,2,15,,249],1474560:[80,2,18,,240],2949120:[80,2,36,,240],10653696:[306,4,17],21411840:[615,4,17],256256:[77,1,26,128],2494464:[203,2,12,512],5242880:[256,2,40,256],10485760:[512,2,40,256]},n={op:0,qp:1,rp:2,il:3,sp:4,tp:5,up:6,vp:7,wp:8,xp:9,yp:10,zp:11,Ap:12,Bp:13,Cp:14,Dp:15,Ep:16,Fp:17,Gp:18,Hp:19,Ip:20,Jp:21,Kp:22,Lp:23,Mp:24,Np:25,Op:26," ":32,"!":33,'"':34,"#":35,$:36, +"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,de:65,ui:66,vi:67,wi:68,E:69,xi:70,yi:71,zi:72,Ai:73,Bi:74,Ci:75,Di:76,Ei:77,Fi:78,Gi:79,Hi:80,Q:81,Ii:82,Ji:83,Ki:84,Li:85,Mi:86,Ni:87,Oi:88,Pi:89,fg:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,ee:97,wl:98,yl:99,d:100,e:101,Il:102,Jl:103,Kl:104,Ll:105,cn:106,k:107,fn:108,kn:109,n:110,sn:111,p:112,q:113,r:114,Po:115,t:116,To:117, +Uo:118,Vo:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Pp:127},ma={};ma[173]=n["-"];ma[186]=n[";"];ma[187]=n["="];ma[189]=n["-"];ma[188]=n[","];ma[190]=n["."];ma[191]=n["/"];ma[192]=n["`"];ma[219]=n["["];ma[220]=n["\\"];ma[221]=n["]"];ma[222]=n["'"];var na={};na[n["1"]]=n["!"];na[n["2"]]=n["@"];na[n["3"]]=n["#"];na[n["4"]]=n.$;na[n["5"]]=n["%"];na[n["6"]]=n["^"];na[n["7"]]=n["&"];na[n["8"]]=n["*"];na[n["9"]]=n["("];na[n["0"]]=n[")"];na[186]=n[":"];na[187]=n["+"];na[188]=n["<"];na[189]=n._; +na[190]=n[">"];na[191]=n["?"];na[192]=n["~"];na[219]=n["{"];na[220]=n["|"];na[221]=n["}"];na[222]=n['"'];na[173]=n._;na[61]=n["+"];na[59]=n[":"]; +function oa(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function qa(a,b,c){b?36=b?8:262143>=b?18:36);return pa(a,2,b,"",c)} +function ra(a,b,c){b?12=b?6:16777215>=b?8:12);return pa(a,8,b,c?"0o":"")}function q(a,b,c){b?9=b?4:4294967295>=b?8:9);return pa(a,16,b,c?"0x":"")}function r(a){return q(a,2,!0)}function sa(a){return q(a,4,!0)}function ta(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0"']/g,function(a){return ya[a]})}function Aa(a,b,c){return c?(" "+a).slice(-b):(a+" ").slice(0,b)}function Ba(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} +var ya={"&":"&","<":"<",">":">",'"':""","'":"'"},Ca={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};function Da(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}function Fa(a,b){var c=0,d=1,e;for(e in a){if(d>=arguments.length)break;var f=a[e],g=arguments[d++],c=c&~f.oh|g<>a.shift} +function Ha(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;ca?this.ce=this.id:(this.ye=this.id.substr(0,a),this.ce=this.id.substr(a+1));this.ea={ready:!1,qf:!1,ah:!1,Yb:!1,error:!1};this.qg=null;this.ea.error=!1;this.ic=c||0;this.ba=this.H=this.ka=this.pa=this.Je=null;nb.push(this)} +function ob(a,b,c){pb[a]&&b&&(pb[a][b]=c)}function gb(a){window&&window.alert(a)}function qb(a){var b=!1;window&&(b=window.confirm(a));return b}function sb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b=this.x&&a=this.y&&b=c>>2);d?(b=new Tb(a.x,a.y,a.Nc,a.A*b/c|0),a.y+=b.A,a.A-=b.A):(b=new Tb(a.x,a.y,a.Nc*b/c|0,a.A),a.x+=b.Nc,a.Nc-=b.Nc);return b}function Vb(a){mb.call(this,"Panel",a);this.F=this.G=this.L=-1}ba(Vb,mb);l=Vb.prototype;l.Cb=function(a,b,c,d){return this.pa&&this.pa.Cb(a,b,c,d)||this.H&&this.H.Cb(a,b,c,d)||this.C&&this.C.Cb(a,b,c,d)||this.ba&&this.ba.Cb(a,b,c,d)?!0:mb.prototype.Cb.call(this,a,b,c,d)}; +l.uc=function(a,b,c,d){this.pa=a;this.ka=b;this.H=c;this.ba=d;this.C=Wb(a,"Keyboard")};l.Xb=function(a,b){b||Xb();return!0};l.Wb=function(){return!0};l.Wd=function(a,b){a.button||(this.L=b?0:-1,Yb(this,a,b))};l.uf=function(a){Yb(this,a)}; +function Yb(a,b,c){var d=Zb/null.offsetWidth,e=$b/null.offsetHeight,f=null.getBoundingClientRect(),d=(b.clientX-f.left)*d|0;b=(b.clientY-f.top)*e|0;null==c&&(a.L||(a.L=Math.abs(a.F-d)>Math.abs(a.G-b)?1:2),1==a.L?b=a.G:2==a.L&&(d=a.F));a.F=d;a.G=b;if(0<=d&&dd&&(f=d);c= +f;break a}c=-1}if(-1!==c&&(c&=-16,c!=a.ga)){b=c;if(a.context&&a.N&&a.O){e=cc-dc;f=a.N.width;a.O.fillStyle=ec;a.O.fillRect(0,e,f,dc);fc(a,e+gc,a.N,a.O);a.W=a.ha.width/24|0;if(null==b)hc(a,"Mouse over memory to dump");else for(hc(a,q(b,8,!0),null,0,1),d=1;16>=d;d++){for(var g="",h=1;8>=h;h++){var k;k=a.ka;var m=b++;k=k.aa[(m&k.B)>>>k.A].$d(m&k.D,m);hc(a,q(k,2),null,1);g+=32<=k&&128>k?String.fromCharCode(k):"."}hc(a,g,null,0,1)}a.context.drawImage(a.N,0,e,f,dc,a.Da,a.Ha,a.va,a.za)}a.ga=c}}} +function ic(a,b,c,d){a.A.lf[a.A.aj++]={Ml:b,Id:c,type:d};return Fa(bc,b,c,0,d)}function fc(a,b,c,d){var e,f=null.style.color,g=a.ta=10;a.B=g;a.I=b;a.J=a.aa=gc;e||(e=a.Z||a.aa+"px "+jc);a.M=a.Z=e;c&&(a.ha=c);d&&(a.D=d,a.la=f||"white")}function hc(a,b,c,d,e){a.D.font=a.M;a.D.fillStyle=a.la;a.D.fillText(b,a.B,a.I);a.B+=a.W;null!=c&&(16!=a.Ca?b=c.toString():(b=8>a.qa?"0x":"",b+=q(c,a.qa)),a.D.fillText(b,a.B,a.I),a.B+=a.W);d&&(a.B+=a.W*d);e&&(a.B=a.ta,a.I+=(a.J+2)*(e||1))} +function Xb(){for(var a=!1,b=zb(document,"pcx86","panel"),c=0;c>2,kc=$b,cc=$b,ec="black",dc=$b>>1;$a(Xb); +function lc(a,b,c){mb.call(this,"Bus",a);this.H=b;this.ba=c;this.I=a.busWidth||20;this.O=Math.pow(2,this.I);this.N=this.B=this.O-1|0;this.A=32==this.I||20>=this.I?12:24>=this.I?14:15;this.C=1<>2;this.D=this.C-1;this.M=this.O/this.C|0;this.W=this.M-1;this.F=[];this.G=[];this.K=this.L=!1;this.Y=[];this.Z=[];a=new x;mc(a,this.ba);this.aa=Array(this.M);for(b=0;b>>a.A;0g&&(p=g);if(k&&k.size){if(k.type==d&&k.controller==e){if(f+g<=k.ya)return k.we+=k.ya-f,k.ya=f,!0;if(f>=k.ya+k.we){p=k.size-(f-m);p>g&&(p=g);k.we=f-k.ya+p;f=m+a.C;g-=p;h++;continue}}return pc(a,qc,f,g)}f=new x(f,p,a.C,d,e);mc(f,a.ba,k);a.aa[h++]=f;f=m+a.C;g-=p}return 0>=g?(sc(a.H),a.H.ea.vb||a.status(Math.floor(c/1024)+"Kb "+tc[d]+" at "+q(b)),!0):pc(a,uc,b,c)} +function nc(a,b){32==a.I?b?a.J&&(wc(a,1048576,1048576,a.J),a.J=null):a.J||(a.J=xc(a,1048576,1048576),wc(a,1048576,1048576,xc(a,0,1048576))):20>>this.A;0>>a.A;0>>=a.A;0>>a.A;0>>this.A].Bc(a&this.D,a)};function Ic(a,b){var c=b&a.D,d=(b&a.B)>>>a.A;return c!=a.D?a.aa[d].Of(c,b):a.aa[d++].$d(c,b)|a.aa[d&a.W].$d(0,b+1)<<8} +l.fc=function(a,b){this.aa[(a&this.B)>>>this.A].Dc(a&this.D,b&255,a)};function Jc(a,b,c){var d=b&a.D,e=(b&a.B)>>>a.A;d!=a.D?a.aa[e].si(d,c&65535,b):(a.aa[e++].cf(d,c&255,b),a.aa[e&a.W].cf(0,c>>8&255,b+1))}l.xj=function(){return null}; +function Kc(a,b){var c=0,d=[],e=!a.J&&a.N==a.B;e||nc(a,!0);for(var f=0;f>>=f)&k;if(void 0!==g){if(g[0])g[0](b,k,e);a.ba&&a.L!=g[1]&&Tc(a.ba,b,k)}else a.ba&&(Mb(a.ba,a,b,k,e),a.L&&Tc(a.ba,b,k));f+=h<<3;b+=h;c-=h}}function pc(a,b,c,d,e){b="Memory block error ("+b+": "+q(c)+","+q(d)+")";e?a.ba?a.ba.message(b):a.log(b):gb(b);return!1}var bc,Uc={Ik:20,count:8,eq:1,type:3},Vc=0,Wc;for(Wc in Uc){var Xc=Uc[Wc];Uc[Wc]={oh:(1<>1),this.X=new Int32Array(this.I,0,c>>2),zc(this,Ec?Fc:Gc);else{this.X=Array(c>>2);for(e=0;e>2),b=0;b>8,c)};l.pi=function(a,b,c){this.Dc(a++,b&255,c++);this.Dc(a++,b>>8&255,c++);this.Dc(a++,b>>16&255,c++);this.Dc(a,b>>>24,c)};l.zo=function(a){return this.X[a>>2]>>>((a&3)<<3)&255}; +l.Lo=function(a){var b=a>>2;a=(a&3)<<3;var c=this.X[b]>>a;return 24>a?c&65535:c&255|(this.X[b+1]&255)<<8};l.Fo=function(a){var b=a>>2;a=(a&3)<<3;var c=this.X[b];a&&(c=c>>>a|this.X[b+1]<<32-a);return c};l.Yo=function(a,b){var c=a>>2;a=(a&3)<<3;this.X[c]=this.X[c]&~(255<>2;a=(a&3)<<3;24>a?this.X[c]=this.X[c]&~(65535<>8);this.Oa=!0}; +l.ep=function(a,b){var c=a>>2;if(a=(a&3)<<3){var d=-1<>>32-a}else this.X[c]=b;this.Oa=!0};l.yo=function(a,b){this.ba&&null!=this.ya&&pd(this.ba,this.ya+a)||this.B&&qd(this.B,b,1,!1);return this.$d(a,b)};l.Ko=function(a,b){this.ba&&null!=this.ya&&pd(this.ba,this.ya+a,2)||this.B&&qd(this.B,b,2,!1);return this.Of(a,b)};l.Eo=function(a,b){this.ba&&null!=this.ya&&pd(this.ba,this.ya+a,4)||this.B&&qd(this.B,b,4,!1);return this.ki(a,b)}; +l.Xo=function(a,b,c){this.ba&&null!=this.ya&&rd(this.ba,this.ya+a)||this.B&&qd(this.B,c,1,!0);this.D?this.df(0,b,c):this.cf(a,b,c)};l.jp=function(a,b,c){this.ba&&null!=this.ya&&rd(this.ba,this.ya+a,2)||this.B&&qd(this.B,c,2,!0);this.D?this.df(0,b,c):this.si(a,b,c)};l.cp=function(a,b,c){this.ba&&null!=this.ya&&rd(this.ba,this.ya+a,4)||this.B&&qd(this.B,c,4,!0);this.D?this.df(0,b,c):this.K(a,b,c)};l.Bo=function(a,b){this.nb.X[this.A]|=this.F;this.ob.X[this.C]|=this.F;return this.qd.Bc(a,b)}; +l.No=function(a,b){this.nb.X[this.A]|=this.F;this.ob.X[this.C]|=this.F;return this.qd.Nf(a,b)};l.Ho=function(a,b){this.nb.X[this.A]|=this.F;this.ob.X[this.C]|=this.F;return this.qd.Od(a,b)};l.$o=function(a,b,c){this.nb.X[this.A]|=this.F;this.ob.X[this.C]|=this.J;this.qd.Dc(a,b,c)};l.mp=function(a,b,c){this.nb.X[this.A]|=this.F;this.ob.X[this.C]|=this.J;this.qd.Uf(a,b,c)};l.gp=function(a,b,c){this.nb.X[this.A]|=this.F;this.ob.X[this.C]|=this.J;this.qd.Tf(a,b,c)}; +l.Co=function(a,b){return sd(this.B,b,!1).Bc(a,b)};l.Oo=function(a,b){return sd(this.B,b,!1).Nf(a,b)};l.Io=function(a,b){return sd(this.B,b,!1).Od(a,b)};l.ap=function(a,b,c){sd(this.B,c,!0).Dc(a,b,c)};l.np=function(a,b,c){sd(this.B,c,!0).Uf(a,b,c)};l.hp=function(a,b,c){sd(this.B,c,!0).Tf(a,b,c)};l.xo=function(a){return this.Pa[a]};l.Rk=function(a){return this.Pa[a]};l.Ao=function(a){this.nb.X[this.A]|=32;this.ob.X[this.C]|=32;this.Bc=this.Rk;return this.Pa[a]}; +l.Jo=function(a){return this.G.getUint16(a,!0)};l.Wk=function(a){return a&1?this.Pa[a]|this.Pa[a+1]<<8:this.Sd[a>>1]};l.Mo=function(a){this.nb.X[this.A]|=32;this.ob.X[this.C]|=32;this.Nf=this.Wk;return a&1?this.Pa[a]|this.Pa[a+1]<<8:this.Sd[a>>1]};l.Do=function(a){return this.G.getInt32(a,!0)};l.Tk=function(a){return a&3?this.Pa[a]|this.Pa[a+1]<<8|this.Pa[a+2]<<16|this.Pa[a+3]<<24:this.X[a>>2]}; +l.Go=function(a){this.nb.X[this.A]|=32;this.ob.X[this.C]|=32;this.Od=this.Tk;return a&3?this.Pa[a]|this.Pa[a+1]<<8|this.Pa[a+2]<<16|this.Pa[a+3]<<24:this.X[a>>2]};l.Wo=function(a,b){this.Pa[a]=b;this.Oa=!0};l.fl=function(a,b){this.Pa[a]=b;this.Oa=!0};l.Zo=function(a,b){this.Pa[a]=b;this.nb.X[this.A]|=32;this.ob.X[this.C]|=96;this.Dc=this.fl;this.qd.Oa=!0};l.ip=function(a,b){this.G.setUint16(a,b,!0);this.Oa=!0};l.hl=function(a,b){a&1?(this.Pa[a]=b,this.Pa[a+1]=b>>8):this.Sd[a>>1]=b;this.Oa=!0}; +l.lp=function(a,b){a&1?(this.Pa[a]=b,this.Pa[a+1]=b>>8):this.Sd[a>>1]=b;this.nb.X[this.A]|=32;this.ob.X[this.C]|=96;this.Uf=this.hl;this.qd.Oa=!0};l.bp=function(a,b){this.G.setInt32(a,b,!0);this.Oa=!0};l.gl=function(a,b){a&3?(this.Pa[a]=b,this.Pa[a+1]=b>>8,this.Pa[a+2]=b>>16,this.Pa[a+3]=b>>24):this.X[a>>2]=b;this.Oa=!0}; +l.fp=function(a,b){a&3?(this.Pa[a]=b,this.Pa[a+1]=b>>8,this.Pa[a+2]=b>>16,this.Pa[a+3]=b>>24):this.X[a>>2]=b;this.nb.X[this.A]|=32;this.ob.X[this.C]|=96;this.Tf=this.gl;this.qd.Oa=!0};function td(a){Nb&&!Ec&&(a=a<<24|a<<8&16711680|a>>8&65280|a>>>24);return a} +var ad=0,Dc=2,bd=5,dd=6,ud=["black","blue","green","cyan"],tc="NONE RAM ROM VIDEO H/W UNPAGED PAGED".split(" "),$c=0,fd=[],Hc=[x.prototype.zo,x.prototype.Yo,x.prototype.Lo,x.prototype.kp,x.prototype.Fo,x.prototype.ep],od=[x.prototype.yo,x.prototype.Xo,x.prototype.Ko,x.prototype.jp,x.prototype.Eo,x.prototype.cp],ed=[x.prototype.Bo,x.prototype.$o,x.prototype.No,x.prototype.mp,x.prototype.Ho,x.prototype.gp],cd=[x.prototype.Co,x.prototype.ap,x.prototype.Oo,x.prototype.np,x.prototype.Io,x.prototype.hp]; +if(Nb)var Gc=[x.prototype.xo,x.prototype.Wo,x.prototype.Jo,x.prototype.ip,x.prototype.Do,x.prototype.bp],Fc=[x.prototype.Rk,x.prototype.fl,x.prototype.Wk,x.prototype.hl,x.prototype.Tk,x.prototype.gl],vd=[x.prototype.Ao,x.prototype.Zo,x.prototype.Mo,x.prototype.lp,x.prototype.Go,x.prototype.fp]; +function wd(a,b){mb.call(this,"CPU",a,1);b=a.cycles||b;var c=a.multiplier||1;this.T={};this.T.td=b;this.T.Ld=c;this.T.sg=Math.round(this.T.td/1E4)/100;this.T.pe=this.T.sg*this.T.Ld;this.ea.vb=!1;this.ea.oi=!1;this.ea.mf=a.autoStart;this.ea.lj=!1;this.ea.Ie=!1;this.T.vf=this.T.Ue=0;this.T.xf=a.csStart;this.T.Te=a.csInterval;this.T.Ve=a.csStop;this.Rl=this.Vf.bind(this);Ib(this)}ba(wd,mb);l=wd.prototype; +l.uc=function(a,b,c,d){this.pa=a;this.ka=b;this.ba=d;for(b=0;b=a.T.Ue&&(a.T.Ue+=a.T.Te,c=!0);0<=a.T.Ve&&a.T.Ve<=Dd(a)&&(a.T.Te=a.T.Ve=-1,Ad(a),a.Jb(),c=!0);c&&a.P(Dd(a)+" cycles: checksum="+q(a.T.vf))}} +l.Cb=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.na[b]=c;a=!0;break;case "run":this.na[b]=c;c.onclick=function(){var a;if(a=d.pa)if(a=d.pa,a.ea.Yb)a=!0;else{var b=null,c,h=sb(a.id);for(c=0;ca.T.sg&&(c=Math.round(c/a.T.Ld));return c}function zd(a){a.T.Xd=0;a.Ed=a.nd=a.zc=a.A=0;Ad(a);Ed(a,1)} +function Ed(a,b,c){var d=!1;if(void 0!==b){.8>a.T.Xd/a.T.pe?b=1:d=!0;a.T.Ld=b;b=a.T.sg*a.T.Ld;if(a.T.pe!=b){a.T.pe=b;b=a.T.pe.toFixed(2)+"Mhz";var e=a.na.setSpeed;e&&(e.textContent=b);a.P("target speed: "+b)}c&&a.pa&&a.pa.md()}Gd(a,a.nd);a.nd=0;a.T.Yd=Ja();a.T.qe=0;Hd(a);return d} +l.Vf=function(a){if(Kb(this,!0)){if(!this.ea.vb){Ed(this);this.pa&&this.pa.start(this.T.Yd,Dd(this));this.ea.vb=!0;this.ea.oi=!0;this.W&&this.W.start();var b=this.na.run;b&&(b.textContent="Halt");this.pa&&(Md(this.pa,!0),a&&this.pa.md(!0))}this.T.uh>=this.T.td&&Hd(this,!0);this.T.Af=0;this.T.tg=Ja();this.T.qe&&(a=this.T.tg-this.T.qe,a>this.T.Ej&&(this.T.Yd+=a,this.T.Yd>this.T.tg&&(this.T.Yd=this.T.tg)));try{do{var c=this.ea.Ie?1:this.T.pn;if(this.W){Nd(this.W);var d=this.W;a=c;var e=d.G[0];if(e.me){var f= +(Dd(d.H,d.O)-e.jd)/d.Ba|0,g=Od(d,0)-f;e.mode==Pd&&(g-=f);var h=g*d.Ba|0;e.mode==Pd&&(h>>=1);a>h&&(a=h)}var c=a,k=this.W;a=c;if(k.A&&k.A[Qd]&Rd){var m=k.Z-Dd(k.H,k.O);0m&&(a=m)}c=a}try{this.Mg(c)}catch(v){if("number"!=typeof v)throw v;}var p=this.zc-this.A;this.nd+=p;this.T.Af+=p;Gd(this,0,!0);Cd(this,p);this.T.zf-=p;0>=this.T.zf&&(this.T.zf+=this.T.Gj,this.pa&&Sd(this.pa));this.T.yf-=p;0>=this.T.yf&&(this.T.yf+=this.T.Fj,this.pa&&Md(this.pa));this.T.We-=p;if(0>=this.T.We){this.T.We+=this.T.th; +break}}while(this.ea.vb)}catch(v){this.Jb();Bd(this);this.pa&&this.pa.stop(Ja(),Dd(this));Kb(this,!1);Fb(this,v.stack||v.message);return}c=setTimeout;d=this.Rl;this.T.qe=Ja();e=this.T.Ej;this.T.Af&&(e=Math.round(e*this.T.Af/this.T.th));e-=this.T.qe-this.T.tg;if(f=this.T.qe-this.T.Yd)this.T.Xd=Math.round(this.nd/(10*f))/100,864E5<=f&&(this.Ed=0,this.W&&Nd(this.W,!0),Ed(this));if(0>e||this.T.Xde&&(this.T.Yd-=e),e=0;this.T.uh+=this.T.Af;this.T.qe+=e;c(d,e)}else Bd(this),this.pa&&this.pa.stop(Ja(), +Dd(this))};l.Mg=function(){return 0};l.Jb=function(a){Jb(this,!0);this.zc-=this.A;this.A=0;Gd(this,this.nd);this.nd=0;if(this.ea.vb){this.ea.vb=!1;this.W&&this.W.stop();var b=this.na.run;b&&(b.textContent="Run")}this.ea.complete=a};function Bd(a,b){a.pa&&(Sd(a.pa,b),Md(a.pa,b))}var Id=30,Jd=60,Kd=2,xd=["power","reset"]; +function Ud(a,b,c,d){this.gc=a;this.ba=a.ba;this.id=b;this.$b=c||"";this.U=0;this.Ka=65535;this.Nb=this.Ka+1;this.Ab=this.qc=this.ext=this.lb=this.type=this.ua=0;this.Lb=-1;this.V=this.Jc=2;this.R=this.wa=65535;this.G=this.nh;this.D=this.ej;this.F=this.gj;this.A={U:-1,ua:0,Ka:0,lb:0,type:0,ext:0,Lb:-1};1==this.id&&(this.Kf=0,this.B=null,this.Qe=!1,this.H=Array(32),this.C=[]);Vd(this,!0,d)}function Wd(a,b){a.C.push(b);return[a.C.length,Xd]}l=Ud.prototype; +l.nh=function(a){this.U=a&65535;return this.ua=this.U<<4};l.rg=function(a,b){var c,d,e=this.gc;a&=65535;a&4?(c=e.Eb.ua,d=c+e.Eb.Ka|0):(c=e.Kb,d=e.Pc);if(c){c=c+(a&65528)|0;if(d-c|0)return e.A-=15,Yd(this,c,a,b);this.id>>0)+b<=this.Nb?this.ua+a|0:this.lg()};l.Al=function(a,b){return(a>>>0)+b>this.Nb?this.ua+a|0:this.lg()};l.lg=function(){y.call(this.gc,13,0);return-1};l.fj=function(a,b){return(a>>>0)+b<=this.Nb?this.ua+a|0:this.mg()}; +l.Bl=function(a,b){return(a>>>0)+b>this.Nb?this.ua+a|0:this.mg()};l.mg=function(){y.call(this.gc,13,0);return-1};function ae(a,b,c,d,e){a.U=b;a.ua=d;a.Ka=e;a.Nb=(e>>>0)+1;a.lb=c;a.type=c&7936;a.ext=c>>16&192;a.Lb=(b&4?a.gc.Eb.ua:a.gc.Kb)+(b&65528)|0;a.id>>0)+1;a.lb=e;a.type=e&7936;a.ext=0;a.Lb=b;a.id>>0)+1,a.lb=a.A.lb,a.type=a.A.type,a.ext=a.A.ext,a.Lb=a.A.Lb,a.A.U=-1,Vd(a,!0,!0,!1),a.ua;a.A.U=-1;var f=e.ja(b+0),g=e.ja(b+4),h=g&7936,k=e.ja(b+2)|(g&255)<<16,m=e.ja(b+6),p=c&65528;if(80386<=e.ca){var v=f,k=k|(m&65280)<<16,f=f|(m&15)<<16;m&128&&(f=f<<12|4095)}switch(a.id){case de:var u=a.B;a.Qe=!1;if(u&&c==Xd&&a.C.length){var E=a.C[a.Kf-1];if(E&&!E())return-1}var G=c&3,I=(g&24576)>>13,E=-1,J,T;p||b>= +e.Kb&&b=a.Ab&&(G>a.Ab&&(E=ee(e),fe(e,ee(e),!0),ge(e,E),a.Qe=!0),E=0);else{if(256==h||2304==h)return he(a,c,u)?a.ua:-1;if(1024==h)E=2,T=0,Gh||2048==(h&2560))return y.call(e,13,c&65532),-1;if(!(g&32768))return y.call(e,11,c&65532),-1}break;case $d:if(!p||4096>h||512!=(h&2560))return y.call(e,13,c&65532),-1;if(!(g&32768))return y.call(e,12,c&65532), +-1;break;case be:u=h&-513;if(!p||256!=u&&2304!=u)return y.call(e,13,c&65532),-1;2304==u&&(a.Ti=k+e.ja(k+102)|0,a.ul=k+a.Ka|0);break;case Zd:if(!(h&4096)&&768>>0)+1,a.lb=g,a.type=h,a.ext=m,a.Lb=b,Vd(a,!0,!0,!1));return k} +function he(a,b,c){var d=a.gc,e=a.Ab,f=d.la.U,g=d.la.ua;if(!c){if(!(d.la.type&512))return y.call(d,13,b&65532),!1;d.fb(d.la.Lb+4,d.la.lb&=-513)}if(-1===d.la.load(b))return!1;var h=d.la.ua;if(!1!==c){if(d.la.type&512)return y.call(d,13,b&65532),!1;d.fb(d.la.Lb+4,d.la.lb|=512)}d.la.type=d.la.type&-513|d.la.lb&512;256==d.la.type||768==d.la.type?(d.fb(g+14,A(d)),d.fb(g+16,qe(d)),d.fb(g+18,d.D),d.fb(g+20,d.I),d.fb(g+22,d.L),d.fb(g+24,d.G),d.fb(g+26,z(d)),d.fb(g+28,d.M),d.fb(g+30,d.K),d.fb(g+32,d.J),d.fb(g+ +34,d.oa.U),d.fb(g+36,d.Z.U),d.fb(g+38,d.Y.U),d.fb(g+40,d.Ca.U),d.Eb.load(d.ja(h+42)),re(d,d.ja(h+16)|(c?16384:0)),d.D=d.ja(h+18),d.I=d.ja(h+20),d.L=d.ja(h+22),d.G=d.ja(h+24),d.M=d.ja(h+28),d.K=d.ja(h+30),d.J=d.ja(h+32),d.oa.load(d.ja(h+34)),d.Ca.load(d.ja(h+40)),se(d,d.ja(h+14),d.ja(h+36)),b=38,g=26,a.Ab>>0)+1)}; +function Vd(a,b,c,d){void 0===c&&(c=!!(a.gc.qa&1));a.Oc=!1;if(c)if(a.load=a.rg,a.Dj=a.hn,a.bc=a.dj,a.cc=a.fj,void 0===d&&(d=!!(a.gc.O&131072)),d)a.load=a.G,a.bc=a.D,a.cc=a.F,a.Ab=a.qc=3,a.V=2,a.R=a.wa=65535,a.Ka=65535,a.Nb=a.Ka+1,a.Jc=a.V,a.Lb=-1,a.Qe=!1;else{if(!(a.U&-4))a.bc=a.lg,a.cc=a.mg;else if(a.type&4096){6144==(a.type&6656)&&(a.bc=a.lg);if(a.type&2048||!(a.type&512))a.cc=a.mg;1024==(a.type&3072)&&(a.bc==a.dj&&(a.bc=a.Al),a.cc==a.fj&&(a.cc=a.Bl),a.Oc=!0);b&&a.id>13,80386>a.gc.ca||!(a.ext&64)?(a.V=2,a.R=65535):(a.V=4,a.R=-1),a.Jc=a.V,a.wa=a.R)}else a.load=a.nh,a.Dj=a.jn,a.bc=a.ej,a.cc=a.gj,a.Ab=a.qc=0,a.Lb=-1,a.Qe=!1}var de=1,pe=2,$d=3,be=4,Zd=6,Xd=1; +function ue(a){var b=+a.model||8088,c;switch(b){default:c=4772727;break;case 80286:c=6E6;break;case 80386:c=16E6}wd.call(this,a,c);this.ca=b;a=a.stepping;this.xe=b+(a?oa(a,16):0);this.Si=61442;this.Rd=1792;this.ti=28672;this.Wf=4;this.Ta=255;this.C=80286<=this.ca?Pb:Ob;this.va=ve;this.cj=we;this.jj=Be;this.oj=Ce;if(80186<=this.ca&&(this.va=ve.slice(),this.cj=we.slice(),this.jj=Be.slice(),this.Ta=31,this.va[15]=De,this.va[96]=Ee,this.va[97]=Fe,this.va[98]=Ge,this.va[99]=De,this.va[100]=De,this.va[101]= +De,this.va[102]=De,this.va[103]=De,this.va[104]=He,this.va[105]=Ie,this.va[106]=Je,this.va[107]=Ke,this.va[108]=Le,this.va[109]=Me,this.va[110]=Ne,this.va[111]=Oe,this.va[192]=Pe,this.va[193]=Qe,this.va[200]=Re,this.va[201]=Se,this.va[241]=Te,this.cj[7]=Ue,this.jj[7]=Ue,80286<=this.ca)){this.Si=2;this.Rd|=28672;this.Wf=0;this.va[15]=Ve;this.Qd=We.slice();for(b=0;b=this.xe&&(this.Qd[166]=gf,this.Qd[167]=hf)}}this.Zf=[];this.$f=[];this.bg=0;zd(this);this.ea.complete=this.ea.kj=!1;this.uj=0;this.sc=this.aa=[];this.hb=this.Og=this.Db=this.Xf=this.ef=this.ff=this.ed=0;jf(this)}ba(ue,wd);function kf(a,b,c,d){b=(d?a.sc:a.aa)[b>>>a.hb];c?--b.je||jd(b):--b.ie||id(b);d&&sc(a)} +function lf(a){var b;if(a.aa===a.sc){a.aa=Array(a.Xf);a.ag=new x(null,0,0,bd,null,a);mc(a.ag,a.ba);for(b=0;b>>20,f=a.sc[(a.Wc+e&a.ff)>>>a.hb],g=f.Od(e);if(!(g&1))return d||nf.call(a,b,!1,c),a.gf;if(!(g&4)&&3==a.Ma)return d||nf.call(a,b,!0,c),a.gf;var h=(b&4190208)>>>10,g=a.sc[((g&-4096)+h&a.ff)>>>a.hb],k=g.Od(h);if(!(k&1))return d||nf.call(a,b,!1,c),a.gf;if(!(k&4)&&3==a.Ma)return d||nf.call(a,b,!0,c),a.gf;c=a.sc[((k&-4096)+(b&4095)&a.ff)>>>a.hb];if(d)return c;d=b>>>a.hb;k=a.aa[d];b&=-4096;var m;0>2;b.ob=g;b.C=h>>2;Nb&&Ec&&c.X&&!c.controller&&!c.ie&&!c.je?(b.Pa=c.Pa,b.Sd=c.Sd,b.X=c.X,zc(b,vd)):(b.F=c?td(32):0,b.J=c?td(96):0,zc(b,ed));mc(b,a.ba,k);a.aa[d]=b;a.Yf.push(d);return b}function of(a){a.aa!==a.sc&&(a.aa=a.sc,a.ag=null,a.Yf=null,a.gf=null)}l=ue.prototype;l.reset=function(){this.ea.vb&&this.Jb();jf(this);zd(this);this.ea.error=!1}; +function uf(a,b){var c;switch(b){case 0:c=a.D;break;case 1:c=a.I;break;case 2:c=a.L;break;case 3:c=a.G;break;case 4:c=z(a);break;case 5:c=a.M;break;case 6:c=a.K;break;case 7:c=a.J}return c}function vf(a,b,c){switch(b){case 0:a.D=c;break;case 1:a.I=c;break;case 2:a.L=c;break;case 3:a.G=c;break;case 4:ge(a,c);break;case 5:a.M=c;break;case 6:a.K=c;break;case 7:a.J=c}} +function jf(a){a.D=0;a.G=0;a.I=0;a.L=0;a.Hc=0;a.M=0;a.K=0;a.J=0;a.vc=!1;a.Ba=a.Ya=0;a.dn=[0,0];a.en=[0,0];a.xa=0;a.tj=0;a.ga=0;a.qa=65520;a.Pb=0;a.cd=1023;a.O=a.lc=0;a.Ae=a.jf=a.ze=a.Be=0;a.Uc=-1;a.Bd=a.Vc=-1;a.Cd=a.ta=-1;a.Z=new Ud(a,de,"CS");a.Ca=new Ud(a,pe,"DS");a.oa=new Ud(a,pe,"ES");a.Y=new Ud(a,$d,"SS");ge(a,0);fe(a,0);if(80386<=a.ca){switch(a.xe){case 80562:case 80563:a.L=771;break;case 80578:a.L=772;break;case 80594:a.L=773;break;case 80595:case 80596:a.L=776}a.qa=16;a.Pg=0;a.Dd=0;a.Wc=0; +a.Qb=[0,0,0,0,null,null,0,0];a.eg=[null,null,null,null,null,null,0,0];a.Ga=new Ud(a,pe,"FS");a.Ha=new Ud(a,pe,"GS");of(a)}a.Rg=new Ud(a,0,"NULL");a.Da=a.Ca;a.Rb=a.Y;a.N=a.ha=0;a.B=a.F=-1;a.eb=a.Rg;a.Xa=0;if(80286>a.ca)se(a,0,65535);else{a.Kb=0;a.Pc=65535;a.Eb=new Ud(a,5,"LDT",!0);a.la=new Ud(a,be,"TSS",!0);a.xb=new Ud(a,Zd,"VER",!0);se(a,65520,61440);var b,c=A(a);b=a.Z;var d=-65536;80386>b.gc.ca&&(d&=16777215);b=b.ua=d;a.da=b+c|0;a.Qg=(b>>>0)+(a.Z.Ka>>>0)+1}re(a,0);ie(a)} +function wf(a){2==a.Jc?(a.Sb=a.ja,a.kc=xf,a.tc=yf,a.ld=zf,2==a.V?(a.ma=Af,a.za=Bf,a.ib=Cf):(a.ma=Df,a.za=Ef,a.ib=Ff)):(a.Sb=a.ia,a.kc=Gf,a.tc=Hf,a.ld=If,2==a.V?(a.ma=Jf,a.za=Kf,a.ib=Lf):(a.ma=Mf,a.za=Nf,a.ib=Of))}function je(a,b){a.V!=b&&(a.ha|=1024,a.V=b,a.R=2==b?65535:-1,Pf(a))}function Pf(a){2==a.V?(a.Fb=32768,a.jb=a.ja,a.yb=a.fb,2==a.Jc?(a.ma=Af,a.za=Bf,a.ib=Cf):(a.ma=Jf,a.za=Kf,a.ib=Lf)):(a.Fb=-2147483648,a.jb=a.ia,a.yb=a.ab,2==a.Jc?(a.ma=Df,a.za=Ef,a.ib=Ff):(a.ma=Mf,a.za=Nf,a.ib=Of))} +function Qf(a){a.Jc=a.Z.Jc;a.wa=a.Z.wa;wf(a);a.V=a.Z.V;a.R=a.Z.R;Pf(a);a.ha&=-3073}l.vj=function(){var a=this.D+this.G+this.I+this.L+z(this)+this.M+this.K+this.J|0;return a=a+A(this)+this.Z.U+this.Ca.U+this.Y.U+this.oa.U+qe(this)|0};function Rf(a,b,c){void 0===a.Zf[b]&&(a.Zf[b]=[]);a.Zf[b].push(c)}function Sf(a,b,c){c&&(null==a.$f[b]&&a.bg++,a.$f[b]=c)}function Tf(a,b){var c=a.$f[b];null!=c&&(c(--a.bg),delete a.$f[b])} +function Uf(a,b){for(var c=a.Qb[7],d=c>>16,e=0;4>e;e++){if(c&3){var f=!!(d&1),g=a.Qb[e],g=g&~(d>>2&3);b?a.aa[g>>>a.hb].Hd(g&a.Db,f,a):(g=a.aa[g>>>a.hb],f?--g.je||jd(g):--g.ie||id(g))}c>>=2;d>>=4}}function qd(a,b,c,d){if(!(a.N&8192)&&a.Qb[7]&255){c--;var e=a.Qb[7],f=e>>16;d=d?1:0==d?3:0;for(var g=0;4>g;g++){if(e&3&&(f&3)==d){var h=f>>2;if(b+c>=a.Qb[g]&&b<=a.Qb[g]+h){a.Qb[6]|=1<>=2;f>>=4}}} +function ie(a,b,c){void 0===b&&(b=!!(a.qa&1));void 0===c&&(c=!!(a.O&131072));a.oj=b&&!c?Vf:Ce;Vd(a.Z,!1,b,c);Vd(a.Ca,!1,b,c);Vd(a.Y,!1,b,c);Vd(a.oa,!1,b,c);80386<=a.ca&&(Vd(a.Ga,!1,b,c),Vd(a.Ha,!1,b,c));Qf(a)} +l.save=function(){var a=new Wf(this);a.set(0,[this.D,this.G,this.I,this.L,z(this),this.M,this.K,this.J]);var b=A(this),c=this.Z.save(),d=this.Ca.save(),e=this.Y.save(),f=this.oa.save(),g;null!=this.Kb?(g=[this.qa,this.Kb,this.Pc,this.Pb,this.cd,this.Eb.save(),this.la.save(),this.lc],80386<=this.ca&&(g.push(this.Pg),g.push(this.Dd),g.push(this.Wc),g.push(this.Qb),g.push(this.eg))):g=null;b=[b,c,d,e,f,g,qe(this)];80386<=this.ca&&(b.push(this.Ga.save()),b.push(this.Ha.save()));a.set(1,b);a.set(2,[this.Da.$b, +this.Rb.$b,this.N,this.ha,this.Xa,this.B,this.F]);a.set(3,[0,this.Ed,this.T.Ld]);a.set(4,Kc(this.ka,!!(this.qa&-2147483648)));return a.data()}; +l.restore=function(a){var b=a[0];this.D=b[0];this.G=b[1];this.I=b[2];this.L=b[3];var c=b[4];this.M=b[5];this.K=b[6];this.J=b[7];b=a[1];this.Z.restore(b[1]);this.Ca.restore(b[2]);this.Y.restore(b[3]);this.oa.restore(b[4]);var d=b[5];d&&d.length&&(this.qa=d[0],this.Kb=d[1],this.Pc=d[2],this.Pb=d[3],this.cd=d[4],this.Eb.restore(d[5]),this.la.restore(d[6]),this.lc=d[7],80386<=this.ca&&(this.Pg=d[8],this.Dd=d[9],this.Wc=d[10],this.Qb=d[11],this.eg=d[12]),ie(this));re(this,b[6]);var d=!1,e;a:{e=this.ka; +var f=a[4],g;for(g=0;g>>0)+(a.Z.Ka>>>0)+1;a.Ma=a.Z.Ab;Qf(a)}function se(a,b,c,d){var e=a.Z;e.Kf=b;e.B=d;b=e.load(c);return-1!==b?(Zf(a,b+(a.Z.Kf&a.Z.R)),a.Z.Qe):null} +function $f(a,b){b=(a.da>>>0)+b;b>a.Qg&&(8088>=a.ca||a.Z.Ka==a.Z.wa?b=a.Z.ua+(b-a.Qg&a.R):y.call(a,13,0));return b|0}function ag(a){a.da=a.Cd}function z(a){return a.Hc&~a.Y.wa|a.Aa-a.Y.ua}function ge(a,b){a.Hc=b;a.Aa=a.Y.ua+(b&a.Y.wa)|0}function bg(a,b,c,d,e,f){if(63!=(e&63)&&e!=a.resultType){var g=(e^a.resultType)&a.resultType;g&&(g&1&&cg(a),g&2&&dg(a),g&4&&eg(a),g&8&&fg(a),g&16&&gg(a),g&32&&hg(a))}f?(a.Ae=d,a.ze=b):(a.Ae=b,a.ze=d);a.jf=c;a.Be=d;a.resultType=e} +function ig(a,b,c,d,e){a.resultType=c|26;a.Be=b;d?jg(a):kg(a);e?lg(a):mg(a);return b}function ng(a,b,c,d){c&d?jg(a):kg(a);(b^c)&d?lg(a):mg(a)}function og(a){return cg(a)?1:0}function cg(a){a.resultType&1&&(a.O&=-2,(a.Ae^(a.Ae^a.jf)&(a.jf^a.ze))&a.resultType&-2147450752&&(a.O|=1),a.resultType&=-2);return a.O&1}function dg(a){a.resultType&2&&(a.O&=-5,38505>>((a.Be^a.Be>>4)&15)&1&&(a.O|=4),a.resultType&=-3);return a.O&4} +function eg(a){a.resultType&4&&(a.O&=-17,(a.ze^a.Ae^a.jf)&16&&(a.O|=16),a.resultType&=-5);return a.O&16}function fg(a){a.resultType&8&&(a.O&=-65,a.Be&((a.resultType&-2147450752)-1|a.resultType&-2147450752)||(a.O|=64),a.resultType&=-9);return a.O&64}function gg(a){a.resultType&16&&(a.O&=-129,a.Be&a.resultType&-2147450752&&(a.O|=128),a.resultType&=-17);return a.O&128} +function hg(a){a.resultType&32&&(a.O&=-2049,(a.Ae^a.ze)&(a.jf^a.ze)&a.resultType&-2147450752&&(a.O|=2048),a.resultType&=-33);return a.O&2048}function kg(a){a.resultType&=-2;a.O&=-2}function pg(a){a.resultType&=-5;a.O&=-17}function qg(a){a.resultType&=-9;a.O&=-65}function mg(a){a.resultType&=-33;a.O&=-2049}function jg(a){a.resultType&=-2;a.O|=1}function rg(a){a.resultType&=-5;a.O|=16}function sg(a){a.resultType&=-9;a.O|=64}function lg(a){a.resultType&=-33;a.O|=2048} +function qe(a){return a.O&-2262|cg(a)|dg(a)|eg(a)|fg(a)|gg(a)|hg(a)}function tg(a,b){b|=a.qa&1|65520;a.qa=a.qa&-65536|b&65535;a.qa&1&&ie(a,!0)}function re(a,b,c){a.qa&1||(b&=~a.ti);void 0===c&&(c=a.Ma);c?b=b&-12289|a.O&12288:a.lc=(b&12288)>>12;c>a.lc&&(b=b&-513|a.O&512);a.resultType=128;a.O=a.O&~(a.Rd|2261)|b&(a.Rd|2261)|a.Si;a.O&256&&(a.Xa|=2,a.N|=4)} +function ug(a,b,c,d){var e=0;if(a.qa&1&&(a.Ma>a.lc||a.O&131072)&&a.la.Ti)for(var f=a.la.Ti+(b>>>3),e=(1<>>=8,f++;return e?(t(a,256)&&Lb(a,"checkIOPM("+sa(b)+","+c+","+(d?"input":"output")+"): trapped",!0,!0),y.call(a,13,0),!1):!0} +l.Cb=function(a,b,c){switch(b){case "EAX":case "EBX":case "ECX":case "EDX":case "ESP":case "EBP":case "ESI":case "EDI":case "EIP":case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "IP":case "PC":case "CS":case "DS":case "SS":case "ES":case "FS":case "GS":case "CR0":case "CR2":case "CR3":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "V":this.na[b]=c;this.uj++;a=!0;break;default:a=wd.prototype.Cb.call(this,a,b,c)}return a}; +function xg(a,b,c,d){var e=(d?a.sc:a.aa)[(b&a.ed)>>>a.hb];e&&e.type==bd&&(e=sd(a,b,!1,!0));if(e){var f=b&a.Db;if(!c||1==c)return e.$d(f,b);if(2==c)return f>>this.hb].Bc(a&this.Db,a)}; +l.ja=function(a){var b=a&this.Db,c=(a&this.ed)>>>this.hb;this.A-=this.C.Ag;if(b>>this.hb;if(b>>this.hb].Dc(a&this.Db,b&255,a)}; +l.fb=function(a,b){var c=a&this.Db,d=(a&this.ed)>>>this.hb;this.A-=this.C.Ag;c>8&255,a+1))};l.ab=function(a,b){var c=a&this.Db,d=(a&this.ed)>>>this.hb;this.A-=this.C.Ag;if(c>>=8}}; +function yg(a,b,c){a.eb=b;a.wb=c&a.wa;a.B=b.bc(a.wb,1);return a.N&1?0:a.Ia(a.B)}function D(a,b){return yg(a,a.Da,b)}function zg(a,b){return yg(a,a.Rb,b)}function Ag(a,b,c){a.eb=b;a.wb=c&a.wa;a.B=b.bc(a.wb,a.V);return a.N&1?0:a.jb(a.B)}function F(a,b){a.eb=a.Da;a.wb=b&a.wa;a.B=a.eb.bc(a.wb,2);return a.N&1?0:a.ja(a.B)}function Bg(a,b){a.eb=a.Rb;a.wb=b&a.wa;a.B=a.eb.bc(a.wb,2);return a.N&1?0:a.ja(a.B)}function H(a,b){a.eb=a.Da;a.wb=b&a.wa;a.B=a.eb.bc(a.wb,4);return a.N&1?0:a.ia(a.B)} +function Cg(a,b){a.eb=a.Rb;a.wb=b&a.wa;a.B=a.eb.bc(a.wb,4);return a.N&1?0:a.ia(a.B)}function Dg(a,b){a.N&2||a.fc(a.eb.cc(a.wb,1),b)}function Eg(a,b){a.N&2||a.fb(a.eb.cc(a.wb,2),b)}function Fg(a,b){a.N&2||a.ab(a.eb.cc(a.wb,4),b)}function ke(a,b,c){return a.jb(b.bc(c,a.V))}l.ra=function(){var a=$f(this,1),b=this.Ia(this.da);this.da=a;return b};function Gg(a){var b=$f(a,2),c=a.ja(a.da);a.da=b;return c}function K(a){var b=$f(a,a.Jc),c=a.Sb(a.da);a.da=b;return c} +l.Fa=function(){var a=$f(this,this.V),b=this.jb(this.da);this.da=a;return b};l.S=function(){var a=$f(this,1),b=this.Ia(this.da)<<24>>24;this.da=a;return b};function ee(a){var b=a.jb(a.Aa);a.Aa=a.Aa+a.V|0;var c=a.dg-a.Aa|0;0>c&&0<=(a.dg^a.Aa)&&(8088>=a.ca||!a.Y.Oc&&a.Y.Ka==a.Y.wa||a.Y.Oc&&!a.Y.Ka?ge(a,a.Aa-a.Y.ua&a.Y.wa):-1>c&&y.call(a,12,0));return b} +function le(a,b,c,d){c=a.Aa-c|0;0>(c-a.hf|0)&&0<=(a.hf^c)&&(8088>=a.ca||!a.Y.Oc&&a.Y.Ka==a.Y.wa||a.Y.Oc&&!a.Y.Ka?(ge(a,c-a.Y.ua&a.Y.wa),c=a.Aa):y.call(a,12,0));switch(d){case 1:a.fc(c,b);break;case 2:a.fb(c,b);break;case 4:a.ab(c,b)}a.Aa=c}function oe(a,b){var c=a.Aa-a.V|0;0>(c-a.hf|0)&&0<=(a.hf^c)&&(8088>=a.ca||!a.Y.Oc&&a.Y.Ka==a.Y.wa||a.Y.Oc&&!a.Y.Ka?(ge(a,c-a.Y.ua&a.Y.wa),c=a.Aa):y.call(a,12,0));a.yb(c,b);a.Aa=c} +function Hg(a,b,c){var d=4;1==b.length&&(d=1,c=c?1:0);if(80386>a.ca)2this.ca?0:1,e=0;2>e;e++){switch(d){case 0:if(this.Xa&1&&this.O&512){var f=Jg(this.W);if(-1<=f&&(this.Xa&=-2,0<=f)){this.Xa&=-5; +Kg.call(this,f);d=!0;break a}}break;case 1:if(this.Xa&2){this.Xa&=-3;80386<=this.ca&&(this.Qb[6]|=16384);Kg.call(this,1);d=!0;break a}}d=1-d}d=!1}if(d&&!a){this.P("interrupt dispatched");this.N=0;break}if(this.Xa&4){this.N=this.A=0;break}}if(b){if(Lg(this.ba,this.da,c)){this.Jb();break}c=1}this.N=0;this.va[this.ra()].call(this)}while(0>11;bh(this);ch(this,a[b++]);for(c=0;c=dh&&eh(a,fh))}function bh(a){a.fa&=-129;a.fa&~a.Zb&63&&(a.fa|=128);if(a.fa&128&&!(a.Zb&128))return a=a.W,a.ca>=dh?gh(a,fh):a.da&hh||Kg.call(a.H,2),!0;a=a.W;a.ca>=dh&&eh(a,fh);return!1}function ih(a,b){80387<=a.ca||(b&=-65);a.fa|=b;return bh(a)} +function Og(a){return a.fa|a.C<<11}function jh(a,b){return isFinite(b)?!0:!ih(a,Infinity===b?8:16)}function kh(a,b,c){var d=null;null!=b&&null!=c&&(d=b+c,jh(a,d)||(d=null));return d}function lh(a,b,c){var d=null;null!=b&&null!=c&&(d=b-c,jh(a,d)||(d=null));return d}function mh(a,b,c){var d=null;null!=b&&null!=c&&(d=b*c,jh(a,d)||(d=null));return d}function nh(a,b,c){var d=null;null==b||null==c||!c&&ih(a,2)||(d=b/c,jh(a,d)||(d=null));return d} +function oh(a,b,c){if(null!=b&&null!=c){var d=0;isNaN(b)||isNaN(c)?d=17664:(b-=c,0>b?d=256:b||(d=16384));a.fa=a.fa&-18177|d;return!0}return!1}function ph(a,b,c){if(null==b)return null;var d=a.Zb&3072;d?d=1024==d||3072==d&&0=c){if(ih(a,1))return null;d=-c}else if(d<-c){if(ih(a,1))return null;d=-c}a.G[0]=d|0;2147483648d&&(a.G[1]=-1))}return d} +function qh(a,b){var c=3;a.B&1<=c;c<<=1)3!=(b&3)&&(a.B|=c),b>>=2}function rh(a){var b=a.C+0&7;return a.B&1<>16}function wh(a){return a.H.ia(a.H.B)}function xh(a){a.ha[0]=a.H.ia(a.H.B);return a.Z[0]}function yh(a){a.G[0]=a.H.ia(a.H.B);a.G[1]=a.H.ia(a.H.B+4);return a.K[0]} +function zh(a){a.D[0]=a.H.ia(a.H.B);a.D[1]=a.H.ia(a.H.B+4);a.D[2]=a.H.ja(a.H.B+8);return a.D}l.ni=function(){this.H.ab(this.H.B,this.G[0])};l.cl=function(){this.H.ab(this.H.B,this.G[0]);this.H.ab(this.H.B+4,this.G[1])};function Ah(a){a.H.ab(a.H.B,a.D[0]);a.H.ab(a.H.B+4,a.D[1]);a.H.fb(a.H.B+8,a.D[2])}function Bh(a,b){var c=b[1],d=(b[2]&32768)>>4,e=b[2]&32767;b=b[0]>>>11|c<<21;c=c>>11&1048575;32767==e?e=2047:e&&(e+=-15360,0>=e&&(e=2047,b=c=0));a.G[0]=b;a.G[1]=c|(d|e)<<20;return a.K[0]} +function uh(a,b,c){var d=c>>20&2047,e=2147483648|(c&1048575)<<11|b>>>21;2047==d?d=32767:d?d+=15360:e&=2147483647;a.D[0]=b<<11;a.D[1]=e;a.D[2]=c>>16&32768|d;return a.D}function Ch(a,b){for(var c=0,d=1;b--;)c+=(a&15)*d,d*=10,a>>=4;return c}function Dh(a,b){for(var c=0,d=0;b--;)c|=a%10<>11;bh(a);ch(a,d.jb(b+=d.V));!(d.qa&1)||d.O&131072?(a.I=d.jb(b+=d.V),c=d.jb(b+=d.V),a.O=c&2047,a.I|=(c&-4096)<<4,a.M=-1,a.J=d.jb(b+=d.V),a.J|=(d.jb(b+=d.V)&-4096)<<4,a.N=-1):(a.I=d.jb(b+=d.V),c=d.jb(b+=d.V),a.M=c&65535,a.O=c>>16&2047,a.J=d.jb(b+=d.V),a.N=d.jb(b+=d.V)&65535);return b+d.V} +function Hh(a,b){var c=a.H;c.yb(b,a.Zb);c.yb(b+=c.V,Og(a));c.yb(b+=c.V,Pg(a));if(!(c.qa&1)||c.O&131072){var d=(a.M<<4)+a.I;c.yb(b+=c.V,d);c.yb(b+=c.V,d>>4&-4096|a.O);d=(a.N<<4)+a.J;c.yb(b+=c.V,d);c.yb(b+=c.V,d>>4&-4096)}else c.yb(b+=c.V,a.I),c.yb(b+=c.V,a.M|a.O<<16),c.yb(b+=c.V,a.J),c.yb(b+=c.V,a.N);return b+c.V}function Ih(){this.fa&=-32896;bh(this)}function Jh(){oh(this,M(this,0),M(this,this.A))}function Kh(){oh(this,M(this,0),M(this,this.A))&&Eh(this)}function Lh(){Kh.call(this)} +function Mh(){N(this,0,nh(this,M(this,0),xh(this)))}function Nh(){this.B&=~(1<>20&2047)-1023),this.G[1]=(this.G[1]|1072693248)&-1073741825,Fh(this,this.K[0]))},102:function(){this.C=this.C-1&7;this.fa&=-513},103:function(){this.C= +this.C+1&7;this.fa&=-513},112:function(){N(this,0,M(this,0)%M(this,1))},113:function(){N(this,1,M(this,1)*Math.log(M(this,0)+1)/Math.LN2)&&Eh(this)},114:function(){var a=M(this,0),b=null;if(0<=a||!ih(this,1))b=Math.sqrt(a),jh(this,b)||(b=null);N(this,0,b)},116:function(){N(this,0,ph(this,M(this,0),fi))},117:function(){var a=M(this,0),b=M(this,1);null!=a&&null!=b&&N(this,0,a*Math.pow(2,0>>0);Fh(this,a)},6:function(){var a=ph(this,Eh(this));null!=a&&(this.D[0]=Dh(a,8),this.D[1]=Dh(a/1E8,8),this.D[2]=Dh(a/1E16,2),0>a&&(this.D[2]|=32768),Ah(this))},7:function(){null!=ph(this,M(this,0),fi)&&(this.cl(),Eh(this))},48:function(){Nh.call(this);Eh(this)},49:$h,50:Vh,51:Vh,52:Yh}},hi=[Ih,Oh,Ph,Qh,Rh,Sh,Wh,Th,Xh,Yh];$a(function(){for(var a=zb(document,"pcx86","fpu"),b=0;b>16,c=c<<16>>16,d=d<<16>>16);this.A-=this.C.Jj;(bd)&&y.call(this,5);this.N|=2;return a}function qi(a,b){var c=0;if(b){qg(this);for(var d=1;d&this.R;){if(b&d){a=c;break}d<<=1;c++}}else sg(this);this.A-=11+3*c;return a}function ri(a,b){var c=0;if(b){qg(this);for(var d=2==this.V?15:31,e=1<>>=1;c++;d--}}else sg(this);this.A-=11+3*c;return a} +function si(a,b){a&1<<(b&(2==this.V?15:31))?jg(this):kg(this);this.A-=-1===this.B?3:6;this.N|=2;return a}function ti(a,b){b=1<<(b&(2==this.V?15:31));a&b?jg(this):kg(this);this.A-=-1===this.B?6:8;return a^b}function ui(a,b){b=1<<(b&(2==this.V?15:31));a&b?jg(this):kg(this);this.A-=-1===this.B?6:8;return a&~b}function vi(a,b){b=1<<(b&(2==this.V?15:31));a&b?jg(this):kg(this);this.A-=-1===this.B?6:8;return a|b} +function wi(a,b){if(-1===this.B)return si.call(this,a,b);var c=this.V<<3;if(b>=c||b<-c)a=Ag(this,this.eb,this.wb+(b>>(2==this.V?4:5))*this.V);b=1<<(b&(2==this.V?15:31));a&b?jg(this):kg(this);this.A-=6;this.N|=2;return a}function xi(a,b){if(-1===this.B)return ti.call(this,a,b);var c=this.V<<3;if(b>=c||b<-c)a=Ag(this,this.eb,this.wb+(b>>(2==this.V?4:5))*this.V);b=1<<(b&(2==this.V?15:31));a&b?jg(this):kg(this);this.A-=8;return a^b} +function yi(a,b){if(-1===this.B)return ui.call(this,a,b);var c=this.V<<3;if(b>=c||b<-c)a=Ag(this,this.eb,this.wb+(b>>(2==this.V?4:5))*this.V);b=1<<(b&(2==this.V?15:31));a&b?jg(this):kg(this);this.A-=8;return a&~b}function zi(a,b){if(-1===this.B)return vi.call(this,a,b);var c=this.V<<3;if(b>=c||b<-c)a=Ag(this,this.eb,this.wb+(b>>(2==this.V?4:5))*this.V);b=1<<(b&(2==this.V?15:31));a&b?jg(this):kg(this);this.A-=8;return a|b} +function Ai(a,b){bg(this,a,b,a-b|0,191,!0);this.A-=-1===this.F?-1===this.B?this.C.mc:this.C.Bh:this.C.Ib;this.N|=2;return a}function Bi(a,b){bg(this,a,b,a-b|0,this.Fb|63,!0);this.A-=-1===this.F?-1===this.B?this.C.mc:this.C.Bh:this.C.Ib;this.N|=2;return a} +function Ci(a){if(this.Tc){var b=this.Tc,c=this.tj,d=this.ga,e=d>>3&7;b.A=d&7;var f=(3>(d>>6&3)?0:48)+e;(217==c||219==c)&&52<=f&&(f=e<<4|b.A);if(e=gi[c][f]){if(0>hi.indexOf(e)){var f=b.H,g=f.Cd;8087==b.ca&&(f.ha&16&&g++,f.ha&32&&g++);b.M=f.Z.U;b.I=g-f.Z.ua;-1!==f.B&&(b.N=f.eb.U,b.J=f.B-f.eb.ua);b.O=(c&7)<<8|d}e.call(b)}}this.A-=-1===this.B?2:8;return a}function Di(a){if(80186>this.ca)return Ei.call(this,a);y.call(this,13,0);return a}function Ue(a){y.call(this,6);return a} +function Ei(a){Xe.call(this);return a}function Fi(a,b){a=Gi.call(this,this.S(),b);80386>this.ca&&(this.A-=12);return a}function Hi(a,b){a=this.Fa();a=2==this.V?Gi.call(this,a,b):Ii.call(this,a,b);80386>this.ca&&(this.A-=12);return a}function Ji(a,b){var c=!1;0>b&&(b=-b|0,c=!c);0>a&&(a=-a|0,c=!c);Ki.call(this,a,b);c&&(this.Ba=~this.Ba+1|0,this.Ya=~this.Ya+(this.Ba?0:1)|0)} +function Gi(a,b){a=(a<<16>>16)*(b<<16>>16)|0;32767a?(jg(this),lg(this)):(kg(this),mg(this));this.A-=-1===this.B?9:12;return a&65535}function Ii(a,b){Ji.call(this,a,b);this.Ya!=this.Ba>>31?(jg(this),lg(this)):(kg(this),mg(this));this.A-=-1===this.B?9:12;return this.Ba}function Li(a,b){this.A-=14+(-1===this.B?0:2);qg(this);-1!==this.xb.load(b)&&this.xb.qc>=this.Ma&&this.xb.qc>=(b&3)&&(sg(this),a=this.xb.lb&-256,2=this.Ma)&&this.xb.qc>=(b&3))return sg(this),this.xb.Ka;qg(this);return a}function Si(a,b){if(-1===this.B)return Xe.call(this),a;fe(this,this.ja(this.B+this.V));this.A-=this.C.Ye;return b} +function Ti(a,b){this.A-=-1===this.F?-1===this.B?this.C.tk:this.C.sk:this.C.qk;return b}function Ui(a,b){switch(this.ga>>3&7){case 4:this.xa=this.D;break;case 5:this.xa=this.I;break;case 6:this.xa=this.L;break;case 7:this.xa=this.G}return b}function Vi(a,b){return b} +function fj(a,b){a=this.ga>>3&7;switch(a){case 0:this.xa=this.D;break;case 2:this.xa=this.L;break;case 3:this.xa=this.G;break;default:if(80286==this.ca||80386==this.ca&&4!=a&&5!=a)y.call(this,6);else switch(a){case 1:this.xa=this.I;break;case 4:this.xa=z(this);break;case 5:this.xa=this.M;break;case 6:this.xa=this.K;break;case 7:this.xa=this.J}}return Ti.call(this,0,b)} +function gj(a,b){switch(this.ga>>3&7){case 0:b=this.oa.U;break;case 1:b=this.Z.U;break;case 2:b=this.Y.U;break;case 3:b=this.Ca.U;break;case 4:if(80386<=this.ca){b=this.Ga.U;break}y.call(this,6);b=a;break;case 5:if(80386<=this.ca){b=this.Ha.U;break}default:y.call(this,6),b=a}-1!==this.F&&je(this,2);return Ti.call(this,0,b)} +function Ki(a,b){if(a&-65536||b&-65536){var c=b&65535;b>>>=16;var d=a&65535;a>>>=16;var e=c*d,d=(e>>>16)+b*d,f=d>>>16,d=(d&65535)+c*a;this.Ba=d<<16|e&65535;this.Ya=f+((d>>>16)+b*a)|0}else this.Ba=a*b|0,this.Ya=0}function hj(a,b){this.A-=-1===this.F?-1===this.B?this.C.mc:this.C.Ib:this.C.Ac;return ig(this,a|b,128)}function ij(a,b){this.A-=-1===this.F?-1===this.B?this.C.mc:this.C.Ib:this.C.Ac;return ig(this,a|b,this.Fb)&this.R} +function jj(a,b){var c=a-b-og(this)|0;bg(this,a,b,c,191,!0);this.A-=-1===this.F?-1===this.B?this.C.mc:this.C.Ib:this.C.Ac;return c&255}function kj(a,b){var c=a-b-og(this)|0;bg(this,a,b,c,this.Fb|63,!0);this.A-=-1===this.F?-1===this.B?this.C.mc:this.C.Ib:this.C.Ac;return c&this.R}function lj(){return hg(this)?1:0}function mj(){return cg(this)?1:0}function nj(){return cg(this)?0:1}function oj(){return fg(this)?1:0}function pj(){return fg(this)?0:1}function qj(){return cg(this)||fg(this)?1:0} +function rj(){return cg(this)||fg(this)?0:1}function sj(){return gg(this)?1:0}function tj(){return gg(this)?0:1}function uj(){return dg(this)?1:0}function vj(){return dg(this)?0:1}function wj(){return!gg(this)!=!hg(this)?1:0}function xj(){return!gg(this)!=!hg(this)?0:1}function yj(){return fg(this)||!gg(this)!=!hg(this)?1:0}function zj(){return fg(this)||!gg(this)!=!hg(this)?0:1}function Aj(a,b){return Bj.call(this,a,b,this.ra())}function Cj(a,b){return Dj.call(this,a,b,this.ra())} +function Ej(a,b){return Bj.call(this,a,b,this.I&31)}function Fj(a,b){return Dj.call(this,a,b,this.I&31)}function Gj(a,b){return Hj.call(this,a,b,this.ra())}function Ij(a,b){return Jj.call(this,a,b,this.ra())}function Kj(a,b){return Hj.call(this,a,b,this.I&31)}function Lj(a,b){return Jj.call(this,a,b,this.I&31)}function Mj(a,b){var c=a-b|0;bg(this,a,b,c,191,!0);this.A-=-1===this.F?-1===this.B?this.C.mc:this.C.Ib:this.C.Ac;return c&255} +function Nj(a,b){var c=a-b|0;bg(this,a,b,c,this.Fb|63,!0);this.A-=-1===this.F?-1===this.B?this.C.mc:this.C.Ib:this.C.Ac;return c&this.R}function Oj(a,b){ig(this,a&b,128);this.A-=-1===this.F?-1===this.B?this.C.ci:this.C.Hf:this.C.Hf;this.N|=2;return a}function Pj(a,b){ig(this,a&b,this.Fb);this.A-=-1===this.F?-1===this.B?this.C.ci:this.C.Hf:this.C.Hf;this.N|=2;return a}function Qj(a,b){var c=this.D&this.R,d=(1<<(this.I&31))-1;return a&~(d<>(this.D&this.R)&(1<<(this.I&31))-1&this.R}function Sj(a,b){if(-1===this.B){switch(this.ga&7){case 0:this.D=this.D&-256|a;break;case 1:this.I=this.I&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.D=this.D&-65281|a<<8;break;case 5:this.I=this.I&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}this.A-=this.C.ei}else this.F=this.B,Dg(this,a),this.A-=this.C.di;return b} +function Tj(a,b){if(-1===this.B){switch(this.ga&7){case 0:this.D=this.D&~this.R|a;break;case 1:this.I=this.I&~this.R|a;break;case 2:this.L=this.L&~this.R|a;break;case 3:this.G=this.G&~this.R|a;break;case 4:ge(this,z(this)&~this.R|a);break;case 5:this.M=this.G&~this.R|a;break;case 6:this.K=this.K&~this.R|a;break;case 7:this.J=this.J&~this.R|a}this.A-=this.C.ei}else this.F=this.B,this.N&2||this.yb(this.eb.cc(this.wb,this.V),a),this.A-=this.C.di;return b} +function Uj(a,b){a^=b;ig(this,a,128);this.A-=-1===this.F?-1===this.B?this.C.mc:this.C.Ib:this.C.Ac;return a}function Vj(a,b){this.A-=-1===this.F?-1===this.B?this.C.mc:this.C.Ib:this.C.Ac;return ig(this,a^b,this.Fb)&this.R}function Wj(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function Xj(a){var b=a-1|0;bg(this,a,1,b,this.Fb|62,!0);this.A-=2;return a&~this.R|b&this.R} +function Yj(a,b,c){c>>>=0;if(!c||c<=b>>>0)return!1;var d=0,e=1,f=this.dn;f[0]=c>>>0;f[1]=0;c=this.en;c[0]=a>>>0;for(c[1]=b>>>0;0>>=0,a[1]++),e+=e;do 0<=Wj(c,f)&&(a=c,b=f,a[0]-=b[0],a[1]-=b[1],0>a[0]&&(a[0]>>>=0,a[1]--),d+=e),a=f,a[0]>>>=1,a[1]&1&&(a[0]=(a[0]|2147483648)>>>0),a[1]>>>=1,e/=2;while(1<=e);this.Ba=d;this.Ya=c[0];return!0}function Zj(a){var b=a+1|0;bg(this,a,1,b,this.Fb|62);this.A-=2;return a&~this.R|b&this.R} +function ak(a){this.qa=a;ie(this);this.qa&-2147483648?lf(this):of(this)}function te(a){this.Wc=a;sc(this)}function bk(a){this.N|=1;this.tc.call(this,a);this.A-=-1===this.B?4:5}function Bj(a,b,c){if(c){16>>16-c)&65535;ig(this,a,32768,d&32768)}return a}function Dj(a,b,c){if(c){var d=a<>>32-c;ig(this,a,-2147483648,d&-2147483648)}return a} +function Hj(a,b,c){if(c){16>>c-1;a=(d>>>1|b<<16-c)&65535;ig(this,a,32768,d&1)}return a}function Jj(a,b,c){if(c){var d=a>>>c-1;a=d>>>1|b<<32-c;ig(this,a,-2147483648,d&1)}return a}function ck(){this.A-=-1===this.B?2:this.C.Gk;return 1}function dk(){var a=this.I&255;this.A-=(-1===this.B?this.C.Wh:this.C.Vh)+(a<this.Uc?(-1!=this.Bd&&(this.Bd!==this.Z.U&&(this.Z.Ab=this.Bd&3,Yf(this,this.Bd)),this.Bd=-1),this.Cd!==this.da&&Zf(this,this.Cd),-1!=this.Vc&&(this.Vc!==this.Y.U&&fe(this,this.Vc),this.Vc=-1),-1!==this.ta&&(this.ta!==this.Aa&&ge(this,this.Hc&~this.Y.wa|this.ta-this.Y.ua),this.ta=-1)):8!=this.Uc?(b=0,a=8):(b=0,a=-1,jf(this),e=d=!1)):Zf(this,this.Cd);var f=a,g=b,h=32,k=xg(this,this.da);204!=k||this.cd||(d=!1);this.O&131072&&(6== +f&&99==k||13==f&&205==k)&&(d=!1);!1===d&&(h|=1);983040<=this.da&&1048575>=this.da&&(d=!1);t(this,h|-2147483648)&&(d=!0);if(t(this,h)||d){var m=this.ea.vb,f="Fault "+r(f)+(null!=g?" ("+sa(g)+")":"")+" on opcode "+r(k);d&&m&&(f+=" (blocked)");this.ba?(Lb(this,f,d||h,!0),d&&(d=m,this.ba.Jb())):(this.Ea(f),this.Jb())}if(d&&e)throw-1;if(e)throw this.Uc=a,ik.call(this,a,b,c),this.Cd=this.da,this.N=1==a?this.N|8192:this.N|4096,a;} +function nf(a,b,c){this.Dd=a;a=0;b&&(a|=1);c&&(a|=2);3==this.Ma&&(a|=4);y.call(this,14,a)}function kk(a){var b=a.lb&7680;a.U&65528&&(6144==b||7168==b||7168>b&&a.qc>8&255;break;case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.ga>>3&7;switch(d){case 0:b=this.D&255;break;case 1:b=this.I&255;break;case 2:b=this.L&255;break;case 3:b=this.G&255;break;case 4:b=this.D>>8&255;break;case 5:b=this.I>>8&255;break;case 6:b=this.L>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-256|a;break;case 1:this.I=this.I&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.D=this.D&-65281|a<<8;break;case 5:this.I=this.I&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function yf(a){var b,c,d=(this.ga=this.ra())&199;switch(d){case 0:b=D(this,this.G+this.K);this.F=this.B;break;case 1:b=D(this,this.G+this.J);this.F=this.B;break;case 2:b=zg(this,this.M+this.K);this.F=this.B;break;case 3:b=zg(this,this.M+this.J);this.F=this.B;break;case 4:b=D(this,this.K);this.F=this.B;break;case 5:b=D(this,this.J);this.F=this.B;break;case 6:b=D(this,K(this));this.F=this.B;break;case 7:b=D(this,this.G);this.F=this.B;break;case 64:b=D(this,this.G+this.K+this.S());this.F=this.B;break; +case 65:b=D(this,this.G+this.J+this.S());this.F=this.B;break;case 66:b=zg(this,this.M+this.K+this.S());this.F=this.B;break;case 67:b=zg(this,this.M+this.J+this.S());this.F=this.B;break;case 68:b=D(this,this.K+this.S());this.F=this.B;break;case 69:b=D(this,this.J+this.S());this.F=this.B;break;case 70:b=zg(this,this.M+this.S());this.F=this.B;break;case 71:b=D(this,this.G+this.S());this.F=this.B;break;case 128:b=D(this,this.G+this.K+K(this));this.F=this.B;break;case 129:b=D(this,this.G+this.J+K(this)); +this.F=this.B;break;case 130:b=zg(this,this.M+this.K+K(this));this.F=this.B;break;case 131:b=zg(this,this.M+this.J+K(this));this.F=this.B;break;case 132:b=D(this,this.K+K(this));this.F=this.B;break;case 133:b=D(this,this.J+K(this));this.F=this.B;break;case 134:b=zg(this,this.M+K(this));this.F=this.B;break;case 135:b=D(this,this.G+K(this));this.F=this.B;break;case 192:b=this.D&255;break;case 193:b=this.I&255;break;case 194:b=this.L&255;break;case 195:b=this.G&255;break;case 196:b=this.D>>8&255;break; +case 197:b=this.I>>8&255;break;case 198:b=this.L>>8&255;break;case 199:b=this.G>>8&255;break;default:b=0}switch(this.ga>>3&7){case 0:c=this.D&255;break;case 1:c=this.I&255;break;case 2:c=this.L&255;break;case 3:c=this.G&255;break;case 4:c=this.D>>8&255;break;case 5:c=this.I>>8&255;break;case 6:c=this.L>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:Dg(this,a);this.A-=this.C.Rc;break;case 1:case 2:Dg(this,a);this.A-=this.C.Sc;break;case 4:case 5:case 7:Dg(this, +a);this.A-=this.C.wc;break;case 6:Dg(this,a);this.A-=this.C.ud;break;case 64:case 67:case 128:case 131:Dg(this,a);this.A-=this.C.Tb;break;case 65:case 66:case 129:case 130:Dg(this,a);this.A-=this.C.Ub;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Dg(this,a);this.A-=this.C.Va;break;case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I= +this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function zf(a,b){var c,d=(this.ga=this.ra())&199;switch(d){case 0:c=D(this,this.G+this.K);this.F=this.B;break;case 1:c=D(this,this.G+this.J);this.F=this.B;break;case 2:c=zg(this,this.M+this.K);this.F=this.B;break;case 3:c=zg(this,this.M+this.J);this.F=this.B;break;case 4:c=D(this,this.K);this.F=this.B;break;case 5:c=D(this,this.J);this.F=this.B;break;case 6:c=D(this,K(this));this.F=this.B;break;case 7:c=D(this,this.G);this.F=this.B;break;case 64:c=D(this,this.G+this.K+this.S());this.F=this.B;break; +case 65:c=D(this,this.G+this.J+this.S());this.F=this.B;break;case 66:c=zg(this,this.M+this.K+this.S());this.F=this.B;break;case 67:c=zg(this,this.M+this.J+this.S());this.F=this.B;break;case 68:c=D(this,this.K+this.S());this.F=this.B;break;case 69:c=D(this,this.J+this.S());this.F=this.B;break;case 70:c=zg(this,this.M+this.S());this.F=this.B;break;case 71:c=D(this,this.G+this.S());this.F=this.B;break;case 128:c=D(this,this.G+this.K+K(this));this.F=this.B;break;case 129:c=D(this,this.G+this.J+K(this)); +this.F=this.B;break;case 130:c=zg(this,this.M+this.K+K(this));this.F=this.B;break;case 131:c=zg(this,this.M+this.J+K(this));this.F=this.B;break;case 132:c=D(this,this.K+K(this));this.F=this.B;break;case 133:c=D(this,this.J+K(this));this.F=this.B;break;case 134:c=zg(this,this.M+K(this));this.F=this.B;break;case 135:c=D(this,this.G+K(this));this.F=this.B;break;case 192:c=this.D&255;break;case 193:c=this.I&255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.D>>8&255;break; +case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}a=a[this.ga>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:Dg(this,a);this.A-=this.C.Rc;break;case 1:case 2:Dg(this,a);this.A-=this.C.Sc;break;case 4:case 5:case 7:Dg(this,a);this.A-=this.C.wc;break;case 6:Dg(this,a);this.A-=this.C.ud;break;case 64:case 67:case 128:case 131:Dg(this,a);this.A-=this.C.Tb;break;case 65:case 66:case 129:case 130:Dg(this,a);this.A-=this.C.Ub;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Dg(this, +a);this.A-=this.C.Va;break;case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I=this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function Af(a){var b,c;switch((this.ga=this.ra())&199){case 0:c=F(this,this.G+this.K);this.A-=this.C.Rc;break;case 1:c=F(this,this.G+this.J);this.A-=this.C.Sc;break;case 2:c=Bg(this,this.M+this.K);this.A-=this.C.Sc;break;case 3:c=Bg(this,this.M+this.J);this.A-=this.C.Rc;break;case 4:c=F(this,this.K);this.A-=this.C.wc;break;case 5:c=F(this,this.J);this.A-=this.C.wc;break;case 6:c=F(this,K(this));this.A-=this.C.ud;break;case 7:c=F(this,this.G);this.A-=this.C.wc;break;case 64:c=F(this,this.G+this.K+ +this.S());this.A-=this.C.Tb;break;case 65:c=F(this,this.G+this.J+this.S());this.A-=this.C.Ub;break;case 66:c=Bg(this,this.M+this.K+this.S());this.A-=this.C.Ub;break;case 67:c=Bg(this,this.M+this.J+this.S());this.A-=this.C.Tb;break;case 68:c=F(this,this.K+this.S());this.A-=this.C.Va;break;case 69:c=F(this,this.J+this.S());this.A-=this.C.Va;break;case 70:c=Bg(this,this.M+this.S());this.A-=this.C.Va;break;case 71:c=F(this,this.G+this.S());this.A-=this.C.Va;break;case 128:c=F(this,this.G+this.K+K(this)); +this.A-=this.C.Tb;break;case 129:c=F(this,this.G+this.J+K(this));this.A-=this.C.Ub;break;case 130:c=Bg(this,this.M+this.K+K(this));this.A-=this.C.Ub;break;case 131:c=Bg(this,this.M+this.J+K(this));this.A-=this.C.Tb;break;case 132:c=F(this,this.K+K(this));this.A-=this.C.Va;break;case 133:c=F(this,this.J+K(this));this.A-=this.C.Va;break;case 134:c=Bg(this,this.M+K(this));this.A-=this.C.Va;break;case 135:c=F(this,this.G+K(this));this.A-=this.C.Va;break;case 192:c=this.D&65535;break;case 193:c=this.I& +65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=z(this)&65535;break;case 197:c=this.M&65535;break;case 198:c=this.K&65535;break;case 199:c=this.J&65535;break;default:c=0}var d=this.ga>>3&7;switch(d){case 0:b=this.D&65535;break;case 1:b=this.I&65535;break;case 2:b=this.L&65535;break;case 3:b=this.G&65535;break;case 4:b=z(this)&65535;break;case 5:b=this.M&65535;break;case 6:b=this.K&65535;break;case 7:b=this.J&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-65536|a;break;case 1:this.I=this.I&-65536|a;break;case 2:this.L=this.L&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:ge(this,z(this)&-65536|a);break;case 5:this.M=this.M&-65536|a;break;case 6:this.K=this.K&-65536|a;break;case 7:this.J=this.J&-65536|a}} +function Bf(a){var b,c,d=(this.ga=this.ra())&199;switch(d){case 0:b=F(this,this.G+this.K);this.F=this.B;break;case 1:b=F(this,this.G+this.J);this.F=this.B;break;case 2:b=Bg(this,this.M+this.K);this.F=this.B;break;case 3:b=Bg(this,this.M+this.J);this.F=this.B;break;case 4:b=F(this,this.K);this.F=this.B;break;case 5:b=F(this,this.J);this.F=this.B;break;case 6:b=F(this,K(this));this.F=this.B;break;case 7:b=F(this,this.G);this.F=this.B;break;case 64:b=F(this,this.G+this.K+this.S());this.F=this.B;break; +case 65:b=F(this,this.G+this.J+this.S());this.F=this.B;break;case 66:b=Bg(this,this.M+this.K+this.S());this.F=this.B;break;case 67:b=Bg(this,this.M+this.J+this.S());this.F=this.B;break;case 68:b=F(this,this.K+this.S());this.F=this.B;break;case 69:b=F(this,this.J+this.S());this.F=this.B;break;case 70:b=Bg(this,this.M+this.S());this.F=this.B;break;case 71:b=F(this,this.G+this.S());this.F=this.B;break;case 128:b=F(this,this.G+this.K+K(this));this.F=this.B;break;case 129:b=F(this,this.G+this.J+K(this)); +this.F=this.B;break;case 130:b=Bg(this,this.M+this.K+K(this));this.F=this.B;break;case 131:b=Bg(this,this.M+this.J+K(this));this.F=this.B;break;case 132:b=F(this,this.K+K(this));this.F=this.B;break;case 133:b=F(this,this.J+K(this));this.F=this.B;break;case 134:b=Bg(this,this.M+K(this));this.F=this.B;break;case 135:b=F(this,this.G+K(this));this.F=this.B;break;case 192:b=this.D&65535;break;case 193:b=this.I&65535;break;case 194:b=this.L&65535;break;case 195:b=this.G&65535;break;case 196:b=z(this)&65535; +break;case 197:b=this.M&65535;break;case 198:b=this.K&65535;break;case 199:b=this.J&65535;break;default:b=0}switch(this.ga>>3&7){case 0:c=this.D&65535;break;case 1:c=this.I&65535;break;case 2:c=this.L&65535;break;case 3:c=this.G&65535;break;case 4:c=z(this)&65535;break;case 5:c=this.M&65535;break;case 6:c=this.K&65535;break;case 7:c=this.J&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:Eg(this,a);this.A-=this.C.Rc;break;case 1:case 2:Eg(this,a);this.A-=this.C.Sc;break;case 4:case 5:case 7:Eg(this, +a);this.A-=this.C.wc;break;case 6:Eg(this,a);this.A-=this.C.ud;break;case 64:case 67:case 128:case 131:Eg(this,a);this.A-=this.C.Tb;break;case 65:case 66:case 129:case 130:Eg(this,a);this.A-=this.C.Ub;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Eg(this,a);this.A-=this.C.Va;break;case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,z(this)&-65536|a);break; +case 197:this.M=this.M&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a}} +function Cf(a,b){var c,d=(this.ga=this.ra())&199;switch(d){case 0:c=F(this,this.G+this.K);this.F=this.B;break;case 1:c=F(this,this.G+this.J);this.F=this.B;break;case 2:c=Bg(this,this.M+this.K);this.F=this.B;break;case 3:c=Bg(this,this.M+this.J);this.F=this.B;break;case 4:c=F(this,this.K);this.F=this.B;break;case 5:c=F(this,this.J);this.F=this.B;break;case 6:c=F(this,K(this));this.F=this.B;break;case 7:c=F(this,this.G);this.F=this.B;break;case 64:c=F(this,this.G+this.K+this.S());this.F=this.B;break; +case 65:c=F(this,this.G+this.J+this.S());this.F=this.B;break;case 66:c=Bg(this,this.M+this.K+this.S());this.F=this.B;break;case 67:c=Bg(this,this.M+this.J+this.S());this.F=this.B;break;case 68:c=F(this,this.K+this.S());this.F=this.B;break;case 69:c=F(this,this.J+this.S());this.F=this.B;break;case 70:c=Bg(this,this.M+this.S());this.F=this.B;break;case 71:c=F(this,this.G+this.S());this.F=this.B;break;case 128:c=F(this,this.G+this.K+K(this));this.F=this.B;break;case 129:c=F(this,this.G+this.J+K(this)); +this.F=this.B;break;case 130:c=Bg(this,this.M+this.K+K(this));this.F=this.B;break;case 131:c=Bg(this,this.M+this.J+K(this));this.F=this.B;break;case 132:c=F(this,this.K+K(this));this.F=this.B;break;case 133:c=F(this,this.J+K(this));this.F=this.B;break;case 134:c=Bg(this,this.M+K(this));this.F=this.B;break;case 135:c=F(this,this.G+K(this));this.F=this.B;break;case 192:c=this.D&65535;break;case 193:c=this.I&65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=z(this)&65535; +break;case 197:c=this.M&65535;break;case 198:c=this.K&65535;break;case 199:c=this.J&65535;break;default:c=0}a=a[this.ga>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:Eg(this,a);this.A-=this.C.Rc;break;case 1:case 2:Eg(this,a);this.A-=this.C.Sc;break;case 4:case 5:case 7:Eg(this,a);this.A-=this.C.wc;break;case 6:Eg(this,a);this.A-=this.C.ud;break;case 64:case 67:case 128:case 131:Eg(this,a);this.A-=this.C.Tb;break;case 65:case 66:case 129:case 130:Eg(this,a);this.A-=this.C.Ub;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Eg(this, +a);this.A-=this.C.Va;break;case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,z(this)&-65536|a);break;case 197:this.M=this.M&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a}} +function Df(a){var b,c;switch((this.ga=this.ra())&199){case 0:c=H(this,this.G+this.K);this.A-=this.C.Rc;break;case 1:c=H(this,this.G+this.J);this.A-=this.C.Sc;break;case 2:c=Cg(this,this.M+this.K);this.A-=this.C.Sc;break;case 3:c=Cg(this,this.M+this.J);this.A-=this.C.Rc;break;case 4:c=H(this,this.K);this.A-=this.C.wc;break;case 5:c=H(this,this.J);this.A-=this.C.wc;break;case 6:c=H(this,K(this));this.A-=this.C.ud;break;case 7:c=H(this,this.G);this.A-=this.C.wc;break;case 64:c=H(this,this.G+this.K+ +this.S());this.A-=this.C.Tb;break;case 65:c=H(this,this.G+this.J+this.S());this.A-=this.C.Ub;break;case 66:c=Cg(this,this.M+this.K+this.S());this.A-=this.C.Ub;break;case 67:c=Cg(this,this.M+this.J+this.S());this.A-=this.C.Tb;break;case 68:c=H(this,this.K+this.S());this.A-=this.C.Va;break;case 69:c=H(this,this.J+this.S());this.A-=this.C.Va;break;case 70:c=Cg(this,this.M+this.S());this.A-=this.C.Va;break;case 71:c=H(this,this.G+this.S());this.A-=this.C.Va;break;case 128:c=H(this,this.G+this.K+K(this)); +this.A-=this.C.Tb;break;case 129:c=H(this,this.G+this.J+K(this));this.A-=this.C.Ub;break;case 130:c=Cg(this,this.M+this.K+K(this));this.A-=this.C.Ub;break;case 131:c=Cg(this,this.M+this.J+K(this));this.A-=this.C.Tb;break;case 132:c=H(this,this.K+K(this));this.A-=this.C.Va;break;case 133:c=H(this,this.J+K(this));this.A-=this.C.Va;break;case 134:c=Cg(this,this.M+K(this));this.A-=this.C.Va;break;case 135:c=H(this,this.G+K(this));this.A-=this.C.Va;break;case 192:c=this.D;break;case 193:c=this.I;break; +case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=z(this);break;case 197:c=this.M;break;case 198:c=this.K;break;case 199:c=this.J;break;default:c=0}var d=this.ga>>3&7;switch(d){case 0:b=this.D;break;case 1:b=this.I;break;case 2:b=this.L;break;case 3:b=this.G;break;case 4:b=z(this);break;case 5:b=this.M;break;case 6:b=this.K;break;case 7:b=this.J;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D=a;break;case 1:this.I=a;break;case 2:this.L=a;break;case 3:this.G=a;break;case 4:ge(this, +a);break;case 5:this.M=a;break;case 6:this.K=a;break;case 7:this.J=a}} +function Ef(a){var b,c,d=(this.ga=this.ra())&199;switch(d){case 0:b=H(this,this.G+this.K);this.F=this.B;break;case 1:b=H(this,this.G+this.J);this.F=this.B;break;case 2:b=Cg(this,this.M+this.K);this.F=this.B;break;case 3:b=Cg(this,this.M+this.J);this.F=this.B;break;case 4:b=H(this,this.K);this.F=this.B;break;case 5:b=H(this,this.J);this.F=this.B;break;case 6:b=H(this,K(this));this.F=this.B;break;case 7:b=H(this,this.G);this.F=this.B;break;case 64:b=H(this,this.G+this.K+this.S());this.F=this.B;break; +case 65:b=H(this,this.G+this.J+this.S());this.F=this.B;break;case 66:b=Cg(this,this.M+this.K+this.S());this.F=this.B;break;case 67:b=Cg(this,this.M+this.J+this.S());this.F=this.B;break;case 68:b=H(this,this.K+this.S());this.F=this.B;break;case 69:b=H(this,this.J+this.S());this.F=this.B;break;case 70:b=Cg(this,this.M+this.S());this.F=this.B;break;case 71:b=H(this,this.G+this.S());this.F=this.B;break;case 128:b=H(this,this.G+this.K+K(this));this.F=this.B;break;case 129:b=H(this,this.G+this.J+K(this)); +this.F=this.B;break;case 130:b=Cg(this,this.M+this.K+K(this));this.F=this.B;break;case 131:b=Cg(this,this.M+this.J+K(this));this.F=this.B;break;case 132:b=H(this,this.K+K(this));this.F=this.B;break;case 133:b=H(this,this.J+K(this));this.F=this.B;break;case 134:b=Cg(this,this.M+K(this));this.F=this.B;break;case 135:b=H(this,this.G+K(this));this.F=this.B;break;case 192:b=this.D;break;case 193:b=this.I;break;case 194:b=this.L;break;case 195:b=this.G;break;case 196:b=z(this);break;case 197:b=this.M;break; +case 198:b=this.K;break;case 199:b=this.J;break;default:b=0}switch(this.ga>>3&7){case 0:c=this.D;break;case 1:c=this.I;break;case 2:c=this.L;break;case 3:c=this.G;break;case 4:c=z(this);break;case 5:c=this.M;break;case 6:c=this.K;break;case 7:c=this.J;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:Fg(this,a);this.A-=this.C.Rc;break;case 1:case 2:Fg(this,a);this.A-=this.C.Sc;break;case 4:case 5:case 7:Fg(this,a);this.A-=this.C.wc;break;case 6:Fg(this,a);this.A-=this.C.ud;break;case 64:case 67:case 128:case 131:Fg(this, +a);this.A-=this.C.Tb;break;case 65:case 66:case 129:case 130:Fg(this,a);this.A-=this.C.Ub;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Fg(this,a);this.A-=this.C.Va;break;case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.M=a;break;case 198:this.K=a;break;case 199:this.J=a}} +function Ff(a,b){var c,d=(this.ga=this.ra())&199;switch(d){case 0:c=H(this,this.G+this.K);this.F=this.B;break;case 1:c=H(this,this.G+this.J);this.F=this.B;break;case 2:c=Cg(this,this.M+this.K);this.F=this.B;break;case 3:c=Cg(this,this.M+this.J);this.F=this.B;break;case 4:c=H(this,this.K);this.F=this.B;break;case 5:c=H(this,this.J);this.F=this.B;break;case 6:c=H(this,K(this));this.F=this.B;break;case 7:c=H(this,this.G);this.F=this.B;break;case 64:c=H(this,this.G+this.K+this.S());this.F=this.B;break; +case 65:c=H(this,this.G+this.J+this.S());this.F=this.B;break;case 66:c=Cg(this,this.M+this.K+this.S());this.F=this.B;break;case 67:c=Cg(this,this.M+this.J+this.S());this.F=this.B;break;case 68:c=H(this,this.K+this.S());this.F=this.B;break;case 69:c=H(this,this.J+this.S());this.F=this.B;break;case 70:c=Cg(this,this.M+this.S());this.F=this.B;break;case 71:c=H(this,this.G+this.S());this.F=this.B;break;case 128:c=H(this,this.G+this.K+K(this));this.F=this.B;break;case 129:c=H(this,this.G+this.J+K(this)); +this.F=this.B;break;case 130:c=Cg(this,this.M+this.K+K(this));this.F=this.B;break;case 131:c=Cg(this,this.M+this.J+K(this));this.F=this.B;break;case 132:c=H(this,this.K+K(this));this.F=this.B;break;case 133:c=H(this,this.J+K(this));this.F=this.B;break;case 134:c=Cg(this,this.M+K(this));this.F=this.B;break;case 135:c=H(this,this.G+K(this));this.F=this.B;break;case 192:c=this.D;break;case 193:c=this.I;break;case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=z(this);break;case 197:c=this.M;break; +case 198:c=this.K;break;case 199:c=this.J}a=a[this.ga>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:Fg(this,a);this.A-=this.C.Rc;break;case 1:case 2:Fg(this,a);this.A-=this.C.Sc;break;case 4:case 5:case 7:Fg(this,a);this.A-=this.C.wc;break;case 6:Fg(this,a);this.A-=this.C.ud;break;case 64:case 67:case 128:case 131:Fg(this,a);this.A-=this.C.Tb;break;case 65:case 66:case 129:case 130:Fg(this,a);this.A-=this.C.Ub;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:Fg(this, +a);this.A-=this.C.Va;break;case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.M=a;break;case 198:this.K=a;break;case 199:this.J=a}} +function Gf(a){var b,c;switch((this.ga=this.ra())&199){case 0:c=D(this,this.D);break;case 1:c=D(this,this.I);break;case 2:c=D(this,this.L);break;case 3:c=D(this,this.G);break;case 4:c=D(this,mk.call(this,0));break;case 5:c=D(this,K(this));break;case 6:c=D(this,this.K);break;case 7:c=D(this,this.J);break;case 64:c=D(this,this.D+this.S());break;case 65:c=D(this,this.I+this.S());break;case 66:c=D(this,this.L+this.S());break;case 67:c=D(this,this.G+this.S());break;case 68:c=D(this,mk.call(this,1)+this.S()); +break;case 69:c=zg(this,this.M+this.S());break;case 70:c=D(this,this.K+this.S());break;case 71:c=D(this,this.J+this.S());break;case 128:c=D(this,this.D+K(this));break;case 129:c=D(this,this.I+K(this));break;case 130:c=D(this,this.L+K(this));break;case 131:c=D(this,this.G+K(this));break;case 132:c=D(this,mk.call(this,2)+K(this));break;case 133:c=zg(this,this.M+K(this));break;case 134:c=D(this,this.K+K(this));break;case 135:c=D(this,this.J+K(this));break;case 192:c=this.D&255;break;case 193:c=this.I& +255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.D>>8&255;break;case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.ga>>3&7;switch(d){case 0:b=this.D&255;break;case 1:b=this.I&255;break;case 2:b=this.L&255;break;case 3:b=this.G&255;break;case 4:b=this.D>>8&255;break;case 5:b=this.I>>8&255;break;case 6:b=this.L>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-256|a;break;case 1:this.I=this.I&-256|a;break;case 2:this.L=this.L&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.D=this.D&-65281|a<<8;break;case 5:this.I=this.I&-65281|a<<8;break;case 6:this.L=this.L&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function Hf(a){var b,c,d=(this.ga=this.ra())&199;switch(d){case 0:b=D(this,this.D);this.F=this.B;break;case 1:b=D(this,this.I);this.F=this.B;break;case 2:b=D(this,this.L);this.F=this.B;break;case 3:b=D(this,this.G);this.F=this.B;break;case 4:b=D(this,mk.call(this,0));this.F=this.B;break;case 5:b=D(this,K(this));this.F=this.B;break;case 6:b=D(this,this.K);this.F=this.B;break;case 7:b=D(this,this.J);this.F=this.B;break;case 64:b=D(this,this.D+this.S());this.F=this.B;break;case 65:b=D(this,this.I+this.S()); +this.F=this.B;break;case 66:b=D(this,this.L+this.S());this.F=this.B;break;case 67:b=D(this,this.G+this.S());this.F=this.B;break;case 68:b=D(this,mk.call(this,1)+this.S());this.F=this.B;break;case 69:b=zg(this,this.M+this.S());this.F=this.B;break;case 70:b=D(this,this.K+this.S());this.F=this.B;break;case 71:b=D(this,this.J+this.S());this.F=this.B;break;case 128:b=D(this,this.D+K(this));this.F=this.B;break;case 129:b=D(this,this.I+K(this));this.F=this.B;break;case 130:b=D(this,this.L+K(this));this.F= +this.B;break;case 131:b=D(this,this.G+K(this));this.F=this.B;break;case 132:b=D(this,mk.call(this,2)+K(this));this.F=this.B;break;case 133:b=zg(this,this.M+K(this));this.F=this.B;break;case 134:b=D(this,this.K+K(this));this.F=this.B;break;case 135:b=D(this,this.J+K(this));this.F=this.B;break;case 192:b=this.D&255;break;case 193:b=this.I&255;break;case 194:b=this.L&255;break;case 195:b=this.G&255;break;case 196:b=this.D>>8&255;break;case 197:b=this.I>>8&255;break;case 198:b=this.L>>8&255;break;case 199:b= +this.G>>8&255;break;default:b=0}switch(this.ga>>3&7){case 0:c=this.D&255;break;case 1:c=this.I&255;break;case 2:c=this.L&255;break;case 3:c=this.G&255;break;case 4:c=this.D>>8&255;break;case 5:c=this.I>>8&255;break;case 6:c=this.L>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I= +this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:Dg(this,a)}} +function If(a,b){var c,d=(this.ga=this.ra())&199;switch(d){case 0:c=D(this,this.D);this.F=this.B;break;case 1:c=D(this,this.I);this.F=this.B;break;case 2:c=D(this,this.L);this.F=this.B;break;case 3:c=D(this,this.G);this.F=this.B;break;case 4:c=D(this,mk.call(this,0));this.F=this.B;break;case 5:c=D(this,K(this));this.F=this.B;break;case 6:c=D(this,this.K);this.F=this.B;break;case 7:c=D(this,this.J);this.F=this.B;break;case 64:c=D(this,this.D+this.S());this.F=this.B;break;case 65:c=D(this,this.I+this.S()); +this.F=this.B;break;case 66:c=D(this,this.L+this.S());this.F=this.B;break;case 67:c=D(this,this.G+this.S());this.F=this.B;break;case 68:c=D(this,mk.call(this,1)+this.S());this.F=this.B;break;case 69:c=zg(this,this.M+this.S());this.F=this.B;break;case 70:c=D(this,this.K+this.S());this.F=this.B;break;case 71:c=D(this,this.J+this.S());this.F=this.B;break;case 128:c=D(this,this.D+K(this));this.F=this.B;break;case 129:c=D(this,this.I+K(this));this.F=this.B;break;case 130:c=D(this,this.L+K(this));this.F= +this.B;break;case 131:c=D(this,this.G+K(this));this.F=this.B;break;case 132:c=D(this,mk.call(this,2)+K(this));this.F=this.B;break;case 133:c=zg(this,this.M+K(this));this.F=this.B;break;case 134:c=D(this,this.K+K(this));this.F=this.B;break;case 135:c=D(this,this.J+K(this));this.F=this.B;break;case 192:c=this.D&255;break;case 193:c=this.I&255;break;case 194:c=this.L&255;break;case 195:c=this.G&255;break;case 196:c=this.D>>8&255;break;case 197:c=this.I>>8&255;break;case 198:c=this.L>>8&255;break;case 199:c= +this.G>>8&255;break;default:c=0}a=a[this.ga>>3&7].call(this,c,b.call(this));switch(d){case 192:this.D=this.D&-256|a;break;case 193:this.I=this.I&-256|a;break;case 194:this.L=this.L&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.D=this.D&-65281|a<<8;break;case 197:this.I=this.I&-65281|a<<8;break;case 198:this.L=this.L&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:Dg(this,a)}} +function Jf(a){var b,c;switch((this.ga=this.ra())&199){case 0:c=F(this,this.D);break;case 1:c=F(this,this.I);break;case 2:c=F(this,this.L);break;case 3:c=F(this,this.G);break;case 4:c=F(this,mk.call(this,0));break;case 5:c=F(this,K(this));break;case 6:c=F(this,this.K);break;case 7:c=F(this,this.J);break;case 64:c=F(this,this.D+this.S());break;case 65:c=F(this,this.I+this.S());break;case 66:c=F(this,this.L+this.S());break;case 67:c=F(this,this.G+this.S());break;case 68:c=F(this,mk.call(this,1)+this.S()); +break;case 69:c=Bg(this,this.M+this.S());break;case 70:c=F(this,this.K+this.S());break;case 71:c=F(this,this.J+this.S());break;case 128:c=F(this,this.D+K(this));break;case 129:c=F(this,this.I+K(this));break;case 130:c=F(this,this.L+K(this));break;case 131:c=F(this,this.G+K(this));break;case 132:c=F(this,mk.call(this,2)+K(this));break;case 133:c=Bg(this,this.M+K(this));break;case 134:c=F(this,this.K+K(this));break;case 135:c=F(this,this.J+K(this));break;case 192:c=this.D&65535;break;case 193:c=this.I& +65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=z(this)&65535;break;case 197:c=this.M&65535;break;case 198:c=this.K&65535;break;case 199:c=this.J&65535;break;default:c=0}var d=this.ga>>3&7;switch(d){case 0:b=this.D&65535;break;case 1:b=this.I&65535;break;case 2:b=this.L&65535;break;case 3:b=this.G&65535;break;case 4:b=z(this)&65535;break;case 5:b=this.M&65535;break;case 6:b=this.K&65535;break;case 7:b=this.J&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D= +this.D&-65536|a;break;case 1:this.I=this.I&-65536|a;break;case 2:this.L=this.L&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:ge(this,z(this)&-65536|a);break;case 5:this.M=this.M&-65536|a;break;case 6:this.K=this.K&-65536|a;break;case 7:this.J=this.J&-65536|a}} +function Kf(a){var b,c,d=(this.ga=this.ra())&199;switch(d){case 0:b=F(this,this.D);this.F=this.B;break;case 1:b=F(this,this.I);this.F=this.B;break;case 2:b=F(this,this.L);this.F=this.B;break;case 3:b=F(this,this.G);this.F=this.B;break;case 4:b=F(this,mk.call(this,0));this.F=this.B;break;case 5:b=F(this,K(this));this.F=this.B;break;case 6:b=F(this,this.K);this.F=this.B;break;case 7:b=F(this,this.J);this.F=this.B;break;case 64:b=F(this,this.D+this.S());this.F=this.B;break;case 65:b=F(this,this.I+this.S()); +this.F=this.B;break;case 66:b=F(this,this.L+this.S());this.F=this.B;break;case 67:b=F(this,this.G+this.S());this.F=this.B;break;case 68:b=F(this,mk.call(this,1)+this.S());this.F=this.B;break;case 69:b=Bg(this,this.M+this.S());this.F=this.B;break;case 70:b=F(this,this.K+this.S());this.F=this.B;break;case 71:b=F(this,this.J+this.S());this.F=this.B;break;case 128:b=F(this,this.D+K(this));this.F=this.B;break;case 129:b=F(this,this.I+K(this));this.F=this.B;break;case 130:b=F(this,this.L+K(this));this.F= +this.B;break;case 131:b=F(this,this.G+K(this));this.F=this.B;break;case 132:b=F(this,mk.call(this,2)+K(this));this.F=this.B;break;case 133:b=Bg(this,this.M+K(this));this.F=this.B;break;case 134:b=F(this,this.K+K(this));this.F=this.B;break;case 135:b=F(this,this.J+K(this));this.F=this.B;break;case 192:b=this.D&65535;break;case 193:b=this.I&65535;break;case 194:b=this.L&65535;break;case 195:b=this.G&65535;break;case 196:b=z(this)&65535;break;case 197:b=this.M&65535;break;case 198:b=this.K&65535;break; +case 199:b=this.J&65535;break;default:b=0}switch(this.ga>>3&7){case 0:c=this.D&65535;break;case 1:c=this.I&65535;break;case 2:c=this.L&65535;break;case 3:c=this.G&65535;break;case 4:c=z(this)&65535;break;case 5:c=this.M&65535;break;case 6:c=this.K&65535;break;case 7:c=this.J&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,z(this)& +-65536|a);break;case 197:this.M=this.M&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a;break;default:Eg(this,a)}} +function Lf(a,b){var c,d=(this.ga=this.ra())&199;switch(d){case 0:c=F(this,this.D);this.F=this.B;break;case 1:c=F(this,this.I);this.F=this.B;break;case 2:c=F(this,this.L);this.F=this.B;break;case 3:c=F(this,this.G);this.F=this.B;break;case 4:c=F(this,mk.call(this,0));this.F=this.B;break;case 5:c=F(this,K(this));this.F=this.B;break;case 6:c=F(this,this.K);this.F=this.B;break;case 7:c=F(this,this.J);this.F=this.B;break;case 64:c=F(this,this.D+this.S());this.F=this.B;break;case 65:c=F(this,this.I+this.S()); +this.F=this.B;break;case 66:c=F(this,this.L+this.S());this.F=this.B;break;case 67:c=F(this,this.G+this.S());this.F=this.B;break;case 68:c=F(this,mk.call(this,1)+this.S());this.F=this.B;break;case 69:c=Bg(this,this.M+this.S());this.F=this.B;break;case 70:c=F(this,this.K+this.S());this.F=this.B;break;case 71:c=F(this,this.J+this.S());this.F=this.B;break;case 128:c=F(this,this.D+K(this));this.F=this.B;break;case 129:c=F(this,this.I+K(this));this.F=this.B;break;case 130:c=F(this,this.L+K(this));this.F= +this.B;break;case 131:c=F(this,this.G+K(this));this.F=this.B;break;case 132:c=F(this,mk.call(this,2)+K(this));this.F=this.B;break;case 133:c=Bg(this,this.M+K(this));this.F=this.B;break;case 134:c=F(this,this.K+K(this));this.F=this.B;break;case 135:c=F(this,this.J+K(this));this.F=this.B;break;case 192:c=this.D&65535;break;case 193:c=this.I&65535;break;case 194:c=this.L&65535;break;case 195:c=this.G&65535;break;case 196:c=z(this)&65535;break;case 197:c=this.M&65535;break;case 198:c=this.K&65535;break; +case 199:c=this.J&65535;break;default:c=0}a=a[this.ga>>3&7].call(this,c,b.call(this));switch(d){case 192:this.D=this.D&-65536|a;break;case 193:this.I=this.I&-65536|a;break;case 194:this.L=this.L&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:ge(this,z(this)&-65536|a);break;case 197:this.M=this.M&-65536|a;break;case 198:this.K=this.K&-65536|a;break;case 199:this.J=this.J&-65536|a;break;default:Eg(this,a)}} +function Mf(a){var b,c;switch((this.ga=this.ra())&199){case 0:c=H(this,this.D);break;case 1:c=H(this,this.I);break;case 2:c=H(this,this.L);break;case 3:c=H(this,this.G);break;case 4:c=H(this,mk.call(this,0));break;case 5:c=H(this,K(this));break;case 6:c=H(this,this.K);break;case 7:c=H(this,this.J);break;case 64:c=H(this,this.D+this.S());break;case 65:c=H(this,this.I+this.S());break;case 66:c=H(this,this.L+this.S());break;case 67:c=H(this,this.G+this.S());break;case 68:c=H(this,mk.call(this,1)+this.S()); +break;case 69:c=Cg(this,this.M+this.S());break;case 70:c=H(this,this.K+this.S());break;case 71:c=H(this,this.J+this.S());break;case 128:c=H(this,this.D+K(this));break;case 129:c=H(this,this.I+K(this));break;case 130:c=H(this,this.L+K(this));break;case 131:c=H(this,this.G+K(this));break;case 132:c=H(this,mk.call(this,2)+K(this));break;case 133:c=Cg(this,this.M+K(this));break;case 134:c=H(this,this.K+K(this));break;case 135:c=H(this,this.J+K(this));break;case 192:c=this.D;break;case 193:c=this.I;break; +case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=z(this);break;case 197:c=this.M;break;case 198:c=this.K;break;case 199:c=this.J;break;default:c=0}var d=this.ga>>3&7;switch(d){case 0:b=this.D;break;case 1:b=this.I;break;case 2:b=this.L;break;case 3:b=this.G;break;case 4:b=z(this);break;case 5:b=this.M;break;case 6:b=this.K;break;case 7:b=this.J;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.D=a;break;case 1:this.I=a;break;case 2:this.L=a;break;case 3:this.G=a;break;case 4:ge(this, +a);break;case 5:this.M=a;break;case 6:this.K=a;break;case 7:this.J=a}} +function Nf(a){var b,c,d=(this.ga=this.ra())&199;switch(d){case 0:b=H(this,this.D);this.F=this.B;break;case 1:b=H(this,this.I);this.F=this.B;break;case 2:b=H(this,this.L);this.F=this.B;break;case 3:b=H(this,this.G);this.F=this.B;break;case 4:b=H(this,mk.call(this,0));this.F=this.B;break;case 5:b=H(this,K(this));this.F=this.B;break;case 6:b=H(this,this.K);this.F=this.B;break;case 7:b=H(this,this.J);this.F=this.B;break;case 64:b=H(this,this.D+this.S());this.F=this.B;break;case 65:b=H(this,this.I+this.S()); +this.F=this.B;break;case 66:b=H(this,this.L+this.S());this.F=this.B;break;case 67:b=H(this,this.G+this.S());this.F=this.B;break;case 68:b=H(this,mk.call(this,1)+this.S());this.F=this.B;break;case 69:b=Cg(this,this.M+this.S());this.F=this.B;break;case 70:b=H(this,this.K+this.S());this.F=this.B;break;case 71:b=H(this,this.J+this.S());this.F=this.B;break;case 128:b=H(this,this.D+K(this));this.F=this.B;break;case 129:b=H(this,this.I+K(this));this.F=this.B;break;case 130:b=H(this,this.L+K(this));this.F= +this.B;break;case 131:b=H(this,this.G+K(this));this.F=this.B;break;case 132:b=H(this,mk.call(this,2)+K(this));this.F=this.B;break;case 133:b=Cg(this,this.M+K(this));this.F=this.B;break;case 134:b=H(this,this.K+K(this));this.F=this.B;break;case 135:b=H(this,this.J+K(this));this.F=this.B;break;case 192:b=this.D;break;case 193:b=this.I;break;case 194:b=this.L;break;case 195:b=this.G;break;case 196:b=z(this);break;case 197:b=this.M;break;case 198:b=this.K;break;case 199:b=this.J;break;default:b=0}switch(this.ga>> +3&7){case 0:c=this.D;break;case 1:c=this.I;break;case 2:c=this.L;break;case 3:c=this.G;break;case 4:c=z(this);break;case 5:c=this.M;break;case 6:c=this.K;break;case 7:c=this.J;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.M=a;break;case 198:this.K=a;break;case 199:this.J=a;break;default:Fg(this,a)}} +function Of(a,b){var c,d=(this.ga=this.ra())&199;switch(d){case 0:c=H(this,this.D);this.F=this.B;break;case 1:c=H(this,this.I);this.F=this.B;break;case 2:c=H(this,this.L);this.F=this.B;break;case 3:c=H(this,this.G);this.F=this.B;break;case 4:c=H(this,mk.call(this,0));this.F=this.B;break;case 5:c=H(this,K(this));this.F=this.B;break;case 6:c=H(this,this.K);this.F=this.B;break;case 7:c=H(this,this.J);this.F=this.B;break;case 64:c=H(this,this.D+this.S());this.F=this.B;break;case 65:c=H(this,this.I+this.S()); +this.F=this.B;break;case 66:c=H(this,this.L+this.S());this.F=this.B;break;case 67:c=H(this,this.G+this.S());this.F=this.B;break;case 68:c=H(this,mk.call(this,1)+this.S());this.F=this.B;break;case 69:c=Cg(this,this.M+this.S());this.F=this.B;break;case 70:c=H(this,this.K+this.S());this.F=this.B;break;case 71:c=H(this,this.J+this.S());this.F=this.B;break;case 128:c=H(this,this.D+K(this));this.F=this.B;break;case 129:c=H(this,this.I+K(this));this.F=this.B;break;case 130:c=H(this,this.L+K(this));this.F= +this.B;break;case 131:c=H(this,this.G+K(this));this.F=this.B;break;case 132:c=H(this,mk.call(this,2)+K(this));this.F=this.B;break;case 133:c=Cg(this,this.M+K(this));this.F=this.B;break;case 134:c=H(this,this.K+K(this));this.F=this.B;break;case 135:c=H(this,this.J+K(this));this.F=this.B;break;case 192:c=this.D;break;case 193:c=this.I;break;case 194:c=this.L;break;case 195:c=this.G;break;case 196:c=z(this);break;case 197:c=this.M;break;case 198:c=this.K;break;case 199:c=this.J;break;default:c=0}a=a[this.ga>> +3&7].call(this,c,b.call(this));switch(d){case 192:this.D=a;break;case 193:this.I=a;break;case 194:this.L=a;break;case 195:this.G=a;break;case 196:ge(this,a);break;case 197:this.M=a;break;case 198:this.K=a;break;case 199:this.J=a;break;default:Fg(this,a)}} +function mk(a){var b=this.ra(),c=b>>6,d,e;switch(b>>3&7){case 0:d=this.D;break;case 1:d=this.I;break;case 2:d=this.L;break;case 3:d=this.G;break;case 4:d=0;break;case 5:d=this.M;break;case 6:d=this.K;break;case 7:d=this.J}switch(b&7){case 0:e=this.D;break;case 1:e=this.I;break;case 2:e=this.L;break;case 3:e=this.G;break;case 4:e=z(this);this.Da=this.Rb;break;case 5:a?(e=this.M,this.Da=this.Rb):e=K(this);break;case 6:e=this.K;break;case 7:e=this.J}return(d<>8&255;9<(c&15)||eg(this)?(c+=6,80286<=this.ca&&255>8&255;9<(c&15)||eg(this)?(c=c-6&15,d=d-1&255,a=b=1):a=b=0;this.D=this.D&-65536|d<<8|c;a?jg(this):kg(this);b?rg(this):pg(this);this.A-=this.C.re},function(){this.D=Zj.call(this,this.D)},function(){this.I=Zj.call(this,this.I)},function(){this.L=Zj.call(this,this.L)},function(){this.G=Zj.call(this,this.G)},function(){ge(this, +Zj.call(this,z(this)))},function(){this.M=Zj.call(this,this.M)},function(){this.K=Zj.call(this,this.K)},function(){this.J=Zj.call(this,this.J)},function(){this.D=Xj.call(this,this.D)},function(){this.I=Xj.call(this,this.I)},function(){this.L=Xj.call(this,this.L)},function(){this.G=Xj.call(this,this.G)},function(){ge(this,Xj.call(this,z(this)))},function(){this.M=Xj.call(this,this.M)},function(){this.K=Xj.call(this,this.K)},function(){this.J=Xj.call(this,this.J)},function(){oe(this,this.D&this.R); +this.A-=this.C.Ic},function(){oe(this,this.I&this.R);this.A-=this.C.Ic},function(){oe(this,this.L&this.R);this.A-=this.C.Ic},function(){oe(this,this.G&this.R);this.A-=this.C.Ic},function(){oe(this,z(this)-2&65535);this.A-=this.C.Ic},function(){oe(this,this.M&this.R);this.A-=this.C.Ic},function(){oe(this,this.K&this.R);this.A-=this.C.Ic},function(){oe(this,this.J&this.R);this.A-=this.C.Ic},function(){this.D=this.D&~this.R|ee(this);this.A-=this.C.nc},function(){this.I=this.I&~this.R|ee(this);this.A-= +this.C.nc},function(){this.L=this.L&~this.R|ee(this);this.A-=this.C.nc},function(){this.G=this.G&~this.R|ee(this);this.A-=this.C.nc},function(){ge(this,z(this)&~this.R|ee(this));this.A-=this.C.nc},function(){this.M=this.M&~this.R|ee(this);this.A-=this.C.nc},function(){this.K=this.K&~this.R|ee(this);this.A-=this.C.nc},function(){this.J=this.J&~this.R|ee(this);this.A-=this.C.nc},nk,ok,pk,qk,rk,sk,tk,uk,vk,wk,xk,yk,zk,Ak,Bk,Ck,nk,ok,pk,qk,rk,sk,tk,uk,vk,wk,xk,yk,zk,Ak,Bk,Ck,Dk,function(){this.ib.call(this, +Sk,this.Fa);this.A-=-1===this.F?1:this.C.zg},Dk,function(){this.ib.call(this,Sk,this.S);this.A-=-1===this.F?1:this.C.zg},function(){this.tc.call(this,Oj)},function(){this.za.call(this,Pj)},function(){this.kc.call(this,Sj)},function(){this.ma.call(this,Tj)},Fk,Gk,Hk,Ik,function(){this.N|=1;this.za.call(this,gj)},function(){this.N|=1;this.Da=this.Rb=this.Rg;this.ma.call(this,Ni)},function(){var a;this.ma.call(this,fj);switch(this.ga>>3&7){case 0:a=this.D;this.D=this.xa;ne(this,a);break;case 1:a=this.I; +this.I=this.xa;Yf(this,a);break;case 2:a=this.L;this.L=this.xa;fe(this,a);break;case 3:a=this.G;this.G=this.xa;me(this,a);break;case 4:a=z(this);ge(this,this.xa);80386<=this.ca?this.Ga.load(a):ne(this,a);break;case 5:a=this.M;this.M=this.xa;80386<=this.ca?this.Ha.load(a):Yf(this,a);break;case 6:a=this.K;this.K=this.xa;fe(this,a);break;case 7:a=this.J,this.J=this.xa,me(this,a)}},function(){this.N|=1;this.ta=this.Aa;this.xa=ee(this);this.ib.call(this,Tk,gk);this.ta=-1},function(){this.A-=3},function(){var a= +this.D;this.D=this.D&~this.R|this.I&this.R;this.I=this.I&~this.R|a&this.R;this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.L&this.R;this.L=this.L&~this.R|a&this.R;this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.G&this.R;this.G=this.G&~this.R|a&this.R;this.A-=3},function(){var a=this.D,b=z(this);this.D=this.D&~this.R|b&this.R;ge(this,b&~this.R|a&this.R);this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.M&this.R;this.M=this.M&~this.R|a&this.R;this.A-=3},function(){var a= +this.D;this.D=this.D&~this.R|this.K&this.R;this.K=this.K&~this.R|a&this.R;this.A-=3},function(){var a=this.D;this.D=this.D&~this.R|this.J&this.R;this.J=this.J&~this.R|a&this.R;this.A-=3},function(){this.D=2==this.V?this.D&-65536|this.D<<24>>24&65535:this.D<<16>>16;this.A-=2},function(){this.L=2==this.V?this.L&-65536|(this.D&32768?65535:0):this.D&-2147483648?-1:0;this.A-=this.C.Lj},function(){hk.call(this,this.Fa(),Gg(this));this.A-=this.C.Oj},function(){this.A-=3},function(){var a=qe(this);a&131072&& +3>this.lc?y.call(this,13,0):(oe(this,a&-196609),this.A-=this.C.Ic)},function(){if(this.O&131072&&3>this.lc)y.call(this,13,0);else{var a=ee(this),a=a&65535|this.O&-65536;re(this,a);this.A-=this.C.nc}},function(){var a=this.D>>8&255;a&1?jg(this):kg(this);a&4?(this.resultType&=-3,this.O|=4):(this.resultType&=-3,this.O&=-5);a&16?rg(this):pg(this);a&64?sg(this):qg(this);a&128?(this.resultType&=-17,this.O|=128):(this.resultType&=-17,this.O&=-129);this.A-=this.C.Vb},function(){this.D=this.D&-65281|(qe(this)& +213)<<8;this.A-=this.C.Vb},function(){var a=this.D&-256,b;b=K(this);b=this.Ia(this.Da.bc(b,1));this.D=a|b;this.A-=this.C.Lh},function(){this.D=this.D&~this.R|ke(this,this.Da,K(this));this.A-=this.C.Lh},function(){var a=K(this),b=this.D;this.fc(this.Da.cc(a,1),b);this.A-=this.C.Mh},function(){var a=K(this),b=this.D;this.yb(this.Da.cc(a,this.V),b);this.A-=this.C.Mh},function(){var a=1,b=0,c=this.wa,d=this.C.Nh;this.ha&192&&(a=this.I&c,b=1,d=this.C.Ph,this.ha&256||(this.A-=this.C.Oh));if(a--){var e= +this.Ia(this.Da.bc(this.K&c,1));this.fc(this.oa.cc(this.J&c,1),e);e=this.O&1024?-1:1;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.A-=d;this.I=this.I&~c|this.I-b&c;a&&(ag(this),this.N|=256)}},function(){var a=1,b=0,c=this.wa,d=this.C.Nh;this.ha&192&&(a=this.I&c,b=1,d=this.C.Ph,this.ha&256||(this.A-=this.C.Oh));if(a--){var e=ke(this,this.Da,this.K&c);this.yb(this.oa.cc(this.J&c,this.V),e);e=this.O&1024?-this.V:this.V;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.A-=d; +this.I=this.I&~c|this.I-b&c;a&&(ag(this),this.N|=256)}},function(){var a=1,b=0,c=this.wa,d=this.C.yh;this.ha&192&&(a=this.I&c,b=1,d=this.C.Ah,this.ha&256||(this.A-=this.C.zh));if(a--){var e=yg(this,this.Da,this.K),f=yg(this,this.oa,this.J);this.F=this.B;Ai.call(this,e,f);e=this.O&1024?-1:1;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.C.Ib;a&&fg(this)==(this.ha&64)&&(ag(this),this.N|=256)}},function(){var a=1,b=0,c=this.wa,d=this.C.yh;this.ha&192&& +(a=this.I&c,b=1,d=this.C.Ah,this.ha&256||(this.A-=this.C.zh));if(a--){var e=Ag(this,this.Da,this.K&c),f=Ag(this,this.oa,this.J&c);this.F=this.B;Bi.call(this,e,f);e=this.O&1024?-this.V:this.V;this.K=this.K&~c|this.K+e&c;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.C.Ib;a&&fg(this)==(this.ha&64)&&(ag(this),this.N|=256)}},function(){ig(this,this.D&this.ra(),128);this.A-=this.C.re},function(){ig(this,this.D&this.Fa(),this.Fb);this.A-=this.C.re},function(){var a=1,b=0,c=this.wa, +d=this.C.Yh;this.ha&192&&(a=this.I&c,b=1,d=this.C.$h,this.ha&256||(this.A-=this.C.Zh));if(a--){var e=this.D;this.fc(this.oa.cc(this.J&c,1),e);this.I=this.I&~c|this.I-b&c;80546<=this.xe&&80564>=this.xe&&!(this.ha&2048)!=(103!=this.Ia(this.da))&&(c^=-65536);this.J=this.J&~c|this.J+(this.O&1024?-1:1)&c;this.A-=d;a&&(ag(this),this.N|=256)}},function(){var a=1,b=0,c=this.wa,d=this.C.Yh;this.ha&192&&(a=this.I&c,b=1,d=this.C.$h,this.ha&256||(this.A-=this.C.Zh));if(a--){var e=this.D;this.yb(this.oa.cc(this.J& +c,this.V),e);this.J=this.J&~c|this.J+(this.O&1024?-this.V:this.V)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(ag(this),this.N|=256)}},function(){var a=1,b=0,c=this.wa,d=this.C.Fh;this.ha&192&&(a=this.I&c,b=1,d=this.C.Hh,this.ha&256||(this.A-=this.C.Gh));if(a--){var e=this.Ia(this.Da.bc(this.K&c,1));this.D=this.D&-256|e;this.K=this.K&~c|this.K+(this.O&1024?-1:1)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(ag(this),this.N|=256)}},function(){var a=1,b=0,c=this.wa,d=this.C.Fh;this.ha&192&&(a=this.I&c, +b=1,d=this.C.Hh,this.ha&256||(this.A-=this.C.Gh));if(a--){var e=ke(this,this.Da,this.K&c);this.D=this.D&~this.R|e;this.K=this.K&~c|this.K+(this.O&1024?-this.V:this.V)&c;this.I=this.I&~c|this.I-b&c;this.A-=d;a&&(ag(this),this.N|=256)}},function(){var a=1,b=0,c=this.wa,d=this.C.Sh;this.ha&192&&(a=this.I&c,b=1,d=this.C.Uh,this.ha&256||(this.A-=this.C.Th));if(a--){var e=this.D&255,f=yg(this,this.oa,this.J);this.F=this.B;Ai.call(this,e,f);this.J=this.J&~c|this.J+(this.O&1024?-1:1)&c;this.I=this.I&~c|this.I- +b&c;this.A-=d-this.C.Ib;a&&fg(this)==(this.ha&64)&&(ag(this),this.N|=256)}},function(){var a=1,b=0,c=this.wa,d=this.C.Sh;this.ha&192&&(a=this.I&c,b=1,d=this.C.Uh,this.ha&256||(this.A-=this.C.Th));if(a--){var e=this.D&this.R,f=Ag(this,this.oa,this.J&c);this.F=this.B;Bi.call(this,e,f);this.J=this.J&~c|this.J+(this.O&1024?-this.V:this.V)&c;this.I=this.I&~c|this.I-b&c;this.A-=d-this.C.Ib;a&&fg(this)==(this.ha&64)&&(ag(this),this.N|=256)}},function(){this.D=this.D&-256|this.ra();this.A-=this.C.Vb},function(){this.I= +this.I&-256|this.ra();this.A-=this.C.Vb},function(){this.L=this.L&-256|this.ra();this.A-=this.C.Vb},function(){this.G=this.G&-256|this.ra();this.A-=this.C.Vb},function(){this.D=this.D&-65281|this.ra()<<8;this.A-=this.C.Vb},function(){this.I=this.I&-65281|this.ra()<<8;this.A-=this.C.Vb},function(){this.L=this.L&-65281|this.ra()<<8;this.A-=this.C.Vb},function(){this.G=this.G&-65281|this.ra()<<8;this.A-=this.C.Vb},function(){this.D=this.D&~this.R|this.Fa();this.A-=this.C.Vb},function(){this.I=this.I& +~this.R|this.Fa();this.A-=this.C.Vb},function(){this.L=this.L&~this.R|this.Fa();this.A-=this.C.Vb},function(){this.G=this.G&~this.R|this.Fa();this.A-=this.C.Vb},function(){ge(this,z(this)&~this.R|this.Fa());this.A-=this.C.Vb},function(){this.M=this.M&~this.R|this.Fa();this.A-=this.C.Vb},function(){this.K=this.K&~this.R|this.Fa();this.A-=this.C.Vb},function(){this.J=this.J&~this.R|this.Fa();this.A-=this.C.Vb},Mk,Nk,Mk,Nk,function(){this.ma.call(this,Oi)},function(){this.ma.call(this,Mi)},function(){this.N|= +1;this.ld.call(this,Uk,this.ra)},function(){this.N|=1;this.ib.call(this,Uk,this.Fa)},Ok,Pk,Ok,Pk,function(){if(this.O&131072&&3>this.lc)y.call(this,13,0);else{var a=this.C.ek;this.Uc=-1;ik.call(this,3,null,a)}},function(){var a=this.ra();if(this.O&131072&&3>this.lc)y.call(this,13,0);else{var b;a:{b=this.Zf[a];if(void 0!==b)for(var c=0;cthis.lc)y.call(this,13,0);else{var a=this.C.fk;this.Uc=-1;ik.call(this,4,null,a)}else this.A-=this.C.gk},function(){if(this.O&131072&&3>this.lc)y.call(this,13,0);else{this.Vc=this.Y.U;this.ta=this.Aa;this.A-=this.C.ck;if(this.qa&1&&this.O&16384){var a=this.ja(this.la.ua+0);he(this.Z,a,!1)}else{var a=this.Ma,b=ee(this),c=ee(this),d=ee(this);if(this.O&131072)d=d&131071|this.O&-131072;else if(d&131072){var e=ee(this),f=ee(this),g=ee(this),h=ee(this),k=ee(this),m=ee(this);ie(this,!0,!0);fe(this, +f);ge(this,e);ne(this,g);me(this,h);this.Ga.load(k);this.Ha.load(m)}null!=se(this,b,c,!1)&&(re(this,d,a),this.bg&&Tf(this,this.da))}this.Vc=this.ta=-1}},function(){this.ld.call(this,Jk,ck)},function(){this.ib.call(this,2==this.V?Kk:Lk,ck)},function(){this.ld.call(this,Jk,dk)},function(){this.ib.call(this,2==this.V?Kk:Lk,dk)},function(){var a=this.ra();if(a){var b=this.D&255;this.D=this.D&-65536|b/a<<8|b%a;ig(this,this.D,128);this.A-=this.C.Ij}else lk.call(this)},function(){var a=this.D&255,b=(this.D>> +8&255)*this.ra()|0,c=a+b|0;this.D=this.D&-65536|c&255;bg(this,a,b,c,191);this.A-=this.C.Hj},function(){this.D=this.D&-256|(cg(this)?255:0);this.A-=2},function(){this.D=this.D&-256|yg(this,this.Da,this.G+(this.D&255));this.A-=this.C.Hk},function(){Qk.call(this,216)},function(){Qk.call(this,217)},function(){Qk.call(this,218)},function(){Qk.call(this,219)},function(){Qk.call(this,220)},function(){Qk.call(this,221)},function(){Qk.call(this,222)},function(){Qk.call(this,223)},function(){var a=this.S(), +b=this.I-1&this.wa;this.I=this.I&~this.wa|b;b&&!fg(this)?(C(this,A(this)+a),this.A-=this.C.nk):this.A-=this.C.Ih},function(){var a=this.S(),b=this.I-1&this.wa;this.I=this.I&~this.wa|b;b&&fg(this)?(C(this,A(this)+a),this.A-=this.C.Jh):this.A-=this.C.Kh},function(){var a=this.S(),b=this.I-1&this.wa;this.I=this.I&~this.wa|b;b?(C(this,A(this)+a),this.A-=this.C.mk):this.A-=this.C.Ih},function(){var a=this.S();this.I&this.wa?this.A-=this.C.Kh:(C(this,A(this)+a),this.A-=this.C.Jh)},function(){var a=this.ra(); +ug(this,a,1,!0)&&(this.D=this.D&-256|Oc(this.ka,a,1,this.da-2)&255,this.A-=this.C.Dh)},function(){var a=this.ra();ug(this,a,this.V,!0)&&(this.D=this.D&~this.R|Oc(this.ka,a,this.V,this.da-2)&this.R,this.A-=this.C.Dh)},function(){var a=this.ra();ug(this,a,1,!1)&&(Sc(this.ka,a,1,this.D&255,this.da-2),this.A-=this.C.Rh)},function(){var a=this.ra();ug(this,a,this.V,!1)&&(Sc(this.ka,a,this.V,this.D&this.R,this.da-2),this.A-=this.C.Rh)},function(){var a=this.Fa(),b=A(this),a=b+a;oe(this,b);C(this,a);this.A-= +this.C.Mj},function(){var a=this.Fa();C(this,A(this)+a);this.A-=this.C.Eh},function(){se(this,this.Fa(),Gg(this));this.A-=this.C.ik},function(){var a=this.S();C(this,A(this)+a);this.A-=this.C.Eh},function(){var a=this.L&65535;ug(this,a,1,!0)&&(this.D=this.D&-256|Oc(this.ka,a,1,this.da-1)&255,this.A-=this.C.Ch)},function(){var a=this.L&65535;ug(this,a,this.V,!0)&&(this.D=this.D&~this.R|Oc(this.ka,a,this.V,this.da-1)&this.R,this.A-=this.C.Ch)},function(){var a=this.L&65535;ug(this,a,1,!1)&&(Sc(this.ka, +a,1,this.D&255,this.da-1),this.A-=this.C.Qh)},function(){var a=this.L&65535;ug(this,a,2,!1)&&(Sc(this.ka,a,this.V,this.D&this.R,this.da-1),this.A-=this.C.Qh)},Rk,Rk,function(){this.N|=132;this.A-=this.C.bd},function(){this.N|=68;this.A-=this.C.bd},function(){this.O&131072?y.call(this,13,0):(this.Xa|=4,this.A-=2,this.ba&&t(this,-2147483648)?(ag(this),this.ba.Jb()):this.O&512||(this.ba&&ag(this),this.Jb()))},function(){cg(this)?kg(this):jg(this);this.A-=2},function(){this.vc=!1;this.ld.call(this,Wk, +fk);this.vc&&(this.D=this.D&~this.R|this.Ba&this.R)},function(){this.vc=!1;this.ib.call(this,Xk,fk);this.vc&&(this.D=this.D&~this.R|this.Ba&this.R,this.L=this.L&~this.R|this.Ya&this.R)},function(){kg(this);this.A-=2},function(){jg(this);this.A-=2},function(){this.Ma>this.lc?y.call(this,13,0):(this.O&=-513,this.A-=this.C.Kj)},function(){this.Ma>this.lc?y.call(this,13,0):(this.O|=512,this.N|=4,this.A-=2)},function(){this.O&=-1025;this.A-=2},function(){this.O|=1024;this.A-=2},function(){this.ld.call(this, +we,fk)},function(){this.ib.call(this,Be,fk)}],Ek=[ki,hj,ii,jj,mi,Mj,Uj,Ai],Sk=[li,ij,ji,kj,ni,Nj,Vj,Bi],Tk=[function(a,b){this.A-=-1===this.F?this.C.nc:this.C.zk;return b},Di,Di,Di,Di,Di,Di,Di],Uk=[function(a,b){this.A-=-1===this.F?this.C.rk:this.C.pk;return b},Ei,Ei,Ei,Ei,Ei,Ei,Ei],Jk=[function(a,b){var c=a;if(b&=this.Ta){var d;(b&=7)?(d=a<>8-b)&255):d=a<<7;ng(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ta){var d;(b&=7)?(d=a<<8-b,c=(a>>>b|d)&255):d=a;ng(this,c,d,128)}return c}, +function(a,b){var c=a;if(b&=this.Ta){var d=og(this);(b%=9)?(c=(a<>9-b)&255,d=a<>b|d<<8-b|a<<9-b)&255,d=a<<8-b):d<<=7;ng(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ta){var d=0;8>>b-1,a=b>>>1&255,ig(this,a,128,b&1,a&128);return a},Ei,function(a,b){if(b&=this.Ta)9>24>>b-1,a=b>>1&255,ig(this,a,128,b&1);return a}],Kk=[function(a,b){var c=a;if(b&=this.Ta){var d;(b&=15)?(d=a<>16-b)&65535):d=a<<15;ng(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ta){var d;(b&=15)?(d=a<<16-b,c=(a>>>b|d)&65535):d=a;ng(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ta){var d=og(this);(b%=17)?(c=(a<>17-b)&65535,d=a<>b|d<<16-b|a<<17-b)&65535,d=a<<16-b):d<<=15;ng(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ta){var d=0;16>>b-1,a=b>>>1&65535,ig(this,a,32768,b&1,a&32768);return a},Ei,function(a,b){if(b&=this.Ta)17>16>>b-1,a=b>>1&65535,ig(this,a,32768,b&1);return a}],Lk=[function(a,b){var c=a;if(b&=this.Ta)c=a<>>32-b,ng(this,c,a<>>b|d;ng(this,c,d,-2147483648)}return c},function(a,b){var c=a;if(b&=this.Ta)c=og(this),c=a<>>32-b>>>1,ng(this,c,a<>>b|c<<32-b|a<<32-b<<1,ng(this,c,a<<32-b,-2147483648);return c},function(a,b){var c=a;if(b&=this.Ta)a<<=b-1,c=a<<1,ig(this,c,-2147483648,a&-2147483648,(c^a)&-2147483648);return c},function(a,b){if(b&=this.Ta)b=a>>>b-1,a=b>>>1,ig(this,a,-2147483648, +b&1,a&-2147483648);return a},Ei,function(a,b){if(b&=this.Ta)b=a>>b-1,a=b>>1,ig(this,a,-2147483648,b&1);return a}],Wk=[function(a,b){b=this.ra();ig(this,a&b,128);this.A-=-1===this.B?this.C.bi:this.C.ai;this.N|=2;return a},Ei,function(a){this.A-=-1===this.B?this.C.Gf:this.C.Ff;return a^255},function(a){var b=-a|0;bg(this,0,a,b,191,!0);this.A-=-1===this.B?this.C.Gf:this.C.Ff;return b&255},function(a){this.Ba=(this.D&255)*a&65535;this.Ba&65280?(jg(this),lg(this)):(kg(this),mg(this));this.vc=!0;this.A-= +-1===this.B?this.C.vk:this.C.uk;this.N|=2;return a},function(a){var b=(this.D<<24>>24)*(a<<24>>24)|0;this.Ba=b&65535;127b?(jg(this),lg(this)):(kg(this),mg(this));this.vc=!0;this.A-=-1===this.B?this.C.$j:this.C.Zj;this.N|=2;return a},function(a,b){if(!a)return lk.call(this),a;var c=(b=this.D&65535)/a;if(255>24,d= +(b=this.D<<16>>16)/c|0;if(d!=d<<24>>24||8086==this.ca&&-128==d)return lk.call(this),a;this.Ba=d&255|(b%c&255)<<8;this.vc=!0;this.A-=-1===this.B?this.C.Wj:this.C.Vj;this.N|=2;return a}],Xk=[function(a,b){b=this.Fa();ig(this,a&b,this.Fb);this.A-=-1===this.B?this.C.bi:this.C.ai;this.N|=2;return a},Ei,function(a){this.A-=-1===this.B?this.C.Gf:this.C.Ff;return a^this.R},function(a){var b=-a|0;bg(this,0,a,b,this.Fb|63,!0);this.A-=-1===this.B?this.C.Gf:this.C.Ff;return b&this.R},function(a,b){2==this.V? +(b=this.D&65535,b=b*a|0,this.Ba=b&65535,this.Ya=b>>16&65535):(Ki.call(this,a,this.D),80563==this.xe&&68657152==this.D&&129==a&&(this.Ya=0));this.Ya?(jg(this),lg(this)):(kg(this),mg(this));this.vc=!0;this.A-=-1===this.B?this.C.xk:this.C.wk;this.N|=2;return a},function(a,b){2==this.V?(b=this.D&65535,b=(b<<16>>16)*(a<<16>>16)|0,this.Ba=b&65535,this.Ya=b>>16&65535,b=32767b):(Ji.call(this,a,this.D),b=this.Ya!=this.Ba>>31);b?(jg(this),lg(this)):(kg(this),mg(this));this.vc=!0;this.A-=-1===this.B? +this.C.bk:this.C.ak;this.N|=2;return a},function(a,b){if(2==this.V){if(!a)return lk.call(this),a;b=65536*(this.L&65535)+(this.D&65535);var c=b/a;if(65536<=c)return lk.call(this),a;this.Ba=c&65535;this.Ya=b%a&65535}else{if(!Yj.call(this,this.D,this.L,a))return lk.call(this),a;this.Ba|=0;this.Ya|=0}this.vc=!0;this.A-=-1===this.B?this.C.Uj:this.C.Tj;this.N|=2;return a},function(a,b){if(2==this.V){if(!a)return lk.call(this),a;var c=a<<16>>16,d=(b=this.L<<16|this.D&65535)/c|0;if(d!=d<<16>>16||8086==this.ca&& +-32768==d)return lk.call(this),a;this.Ba=d&65535;this.Ya=b%c&65535}else{b=this.D;var c=this.L,d=a,e=0,f=0;0>d&&(d=-d|0,e=1-e);0>c&&(b=-b|0,c=~c+(b?0:1)|0,f=1,e=1-e);!Yj.call(this,b,c,d)||this.Ba>2147483647+e||this.Ya>2147483647+f?b=!1:(e&&(this.Ba=-this.Ba),f&&(this.Ya=-this.Ya),b=!0);if(!b)return lk.call(this),a;this.Ba|=0;this.Ya|=0}this.vc=!0;this.A-=-1===this.B?this.C.Yj:this.C.Xj;this.N|=2;return a}],we=[function(a){var b=a+1|0;bg(this,a,1,b,190);this.A-=-1===this.B?this.C.Ef:this.C.Df;return b& +255},function(a){var b=a-1|0;bg(this,a,1,b,190,!0);this.A-=-1===this.B?this.C.Ef:this.C.Df;return b&255},Ei,Ei,Ei,Ei,Ei,Ei],Be=[function(a){var b=a+1|0;bg(this,a,1,b,this.Fb|62);this.A-=-1===this.B?this.C.Ef:this.C.Df;return b&this.R},function(a){var b=a-1|0;bg(this,a,1,b,this.Fb|62,!0);this.A-=-1===this.B?this.C.Ef:this.C.Df;return b&this.R},function(a){oe(this,A(this));C(this,a);this.A-=-1===this.B?this.C.Qj:this.C.Pj;this.N|=2;return a},function(a){if(-1===this.B)return Ei.call(this,a);this.ta= +this.Aa;hk.call(this,a,this.ja(this.B+this.V));this.A-=this.C.Nj;this.N|=2;this.ta=-1;return a},function(a){C(this,a);this.A-=-1===this.B?this.C.kk:this.C.jk;this.N|=2;return a},function(a){if(-1===this.B)return Ei.call(this,a);se(this,a,this.ja(this.B+this.V));this.A-=this.C.hk;this.N|=2;return a},function(a){var b=a;this.N&512&&(a=a-2&65535,80286>this.ca&&(b=a));oe(this,b);this.A-=-1===this.B?this.C.Ic:this.C.Bk;this.N|=2;return a},Ei]; +function gf(){this.ma.call(this,Rj);this.A-=-1===this.B?6:13}function hf(){this.za.call(this,Qj);this.A-=-1===this.B?12:19}var We=Array(256);We[0]=function(){16>(this.Ia(this.da)&56)&&(this.N|=1);this.ib.call(this,this.oj,fk)};We[1]=function(){this.Ia(this.da)&16||(this.N|=1);this.ib.call(this,Yk,fk)};We[2]=function(){!(this.qa&1)||this.O&131072?y.call(this,6):this.ma.call(this,Li)};We[3]=function(){!(this.qa&1)||this.O&131072?y.call(this,6):this.ma.call(this,Ri)}; +We[5]=function(){this.Ma?y.call(this,13,0,0,!0):(tg(this,this.ja(2054)),this.J=this.ja(2086),this.K=this.ja(2088),this.M=this.ja(2090),this.G=this.ja(2094),this.L=this.ja(2096),this.I=this.ja(2098),this.D=this.ja(2100),ce(this.oa,2102,this.ja(2084)),ce(this.Z,2108,this.ja(2082)),ce(this.Y,2114,this.ja(2080)),ce(this.Ca,2120,this.ja(2078)),re(this,this.ja(2072)),C(this,this.ja(2074)),ge(this,this.ja(2092)),this.Kb=this.ja(2126)|this.Ia(2128)<<16,this.Pc=this.Kb+this.ja(2130),this.Pb=this.ja(2138)| +this.Ia(2140)<<16,this.cd=this.Pb+this.ja(2142),ce(this.Eb,2132,this.ja(2076)),ce(this.la,2144,this.ja(2070)),this.A-=195)};We[6]=function(){this.Ma?y.call(this,13,0):(this.qa&=-9,this.A-=2)};We[11]=De;We[166]=De;We[255]=De;var B=[];B[5]=De; +B[7]=function(){if(this.Ma)y.call(this,13,0,0,!0);else{var a=this.oa.bc(this.J&this.wa,204);if(-1!==a){ak.call(this,this.ia(a));var b=this.ia(a+168),c=(b&24576)>>13;re(this,this.ia(a+4),c);this.Kb=this.ia(a+112);this.Pc=this.Kb+this.ia(a+116);this.Pb=this.ia(a+100);this.cd=this.Pb+this.ia(a+104);ae(this.Eb,this.ia(a+56),this.ia(a+120),this.ia(a+124),this.ia(a+128));ae(this.la,this.ia(a+52),this.ia(a+84),this.ia(a+88),this.ia(a+92));this.J=this.ia(a+12);this.K=this.ia(a+16);this.M=this.ia(a+20);this.G= +this.ia(a+28);this.L=this.ia(a+32);this.I=this.ia(a+36);this.D=this.ia(a+40);ae(this.Ha,this.ia(a+60),this.ia(a+132),this.ia(a+136),this.ia(a+140));ae(this.Ga,this.ia(a+64),this.ia(a+144),this.ia(a+148),this.ia(a+152));ae(this.Ca,this.ia(a+68),this.ia(a+156),this.ia(a+160),this.ia(a+164));ae(this.Y,this.ia(a+72),b,this.ia(a+172),this.ia(a+176));ae(this.Z,this.ia(a+76),this.ia(a+180),this.ia(a+184),this.ia(a+188));ae(this.oa,this.ia(a+80),this.ia(a+192),this.ia(a+196),this.ia(a+200));C(this,this.ia(a+ +8));ge(this,this.ia(a+24))}this.A-=122<<(a&3?1:0)}};B[16]=Fk;B[17]=Gk;B[18]=Hk;B[19]=Ik;B[32]=function(){if(this.Ma)y.call(this,13,0);else{var a,b=this.ra();switch((b&56)>>3){case 0:a=this.qa;break;case 2:a=this.Dd;break;case 3:a=this.Wc;break;default:Xe.call(this);return}vf(this,b&7,a);this.A-=6}};B[33]=function(){if(this.Ma)y.call(this,13,0);else{var a=this.ra(),b=(a&56)>>3;4==b||5==b?Xe.call(this):(vf(this,a&7,this.Qb[b]),this.A-=22)}}; +B[34]=function(){if(this.Ma)y.call(this,13,0);else{var a=this.ra(),b=uf(this,a&7);switch((a&56)>>3){case 0:ak.call(this,b);this.A-=10;break;case 2:this.Dd=b;this.A-=4;break;case 3:te.call(this,b);this.A-=5;break;default:Xe.call(this)}}};B[35]=function(){if(this.Ma)y.call(this,13,0);else{var a=this.ra(),b=(a&56)>>3;4==b||5==b?Xe.call(this):(a=uf(this,a&7),a!=this.Qb[b]&&(Uf(this,!1),this.Qb[b]=a,Uf(this,!0)),this.A-=4>b?22:14)}}; +B[36]=function(){if(this.Ma)y.call(this,13,0);else{var a=this.ra(),b=(a&56)>>3;6>b?Xe.call(this):(vf(this,a&7,this.eg[b]),this.A-=12)}};B[38]=function(){if(this.Ma)y.call(this,13,0);else{var a=this.ra(),b=(a&56)>>3;6>b?Xe.call(this):(this.eg[b]=uf(this,a&7),this.A-=12)}};B[128]=function(){var a=this.Fa();hg(this)?(C(this,A(this)+a),this.A-=this.C.Qa):this.A-=this.C.Ra};B[129]=function(){var a=this.Fa();hg(this)?this.A-=this.C.Ra:(C(this,A(this)+a),this.A-=this.C.Qa)}; +B[130]=function(){var a=this.Fa();cg(this)?(C(this,A(this)+a),this.A-=this.C.Qa):this.A-=this.C.Ra};B[131]=function(){var a=this.Fa();cg(this)?this.A-=this.C.Ra:(C(this,A(this)+a),this.A-=this.C.Qa)};B[132]=function(){var a=this.Fa();fg(this)?(C(this,A(this)+a),this.A-=this.C.Qa):this.A-=this.C.Ra};B[133]=function(){var a=this.Fa();fg(this)?this.A-=this.C.Ra:(C(this,A(this)+a),this.A-=this.C.Qa)};B[134]=function(){var a=this.Fa();cg(this)||fg(this)?(C(this,A(this)+a),this.A-=this.C.Qa):this.A-=this.C.Ra}; +B[135]=function(){var a=this.Fa();cg(this)||fg(this)?this.A-=this.C.Ra:(C(this,A(this)+a),this.A-=this.C.Qa)};B[136]=function(){var a=this.Fa();gg(this)?(C(this,A(this)+a),this.A-=this.C.Qa):this.A-=this.C.Ra};B[137]=function(){var a=this.Fa();gg(this)?this.A-=this.C.Ra:(C(this,A(this)+a),this.A-=this.C.Qa)};B[138]=function(){var a=this.Fa();dg(this)?(C(this,A(this)+a),this.A-=this.C.Qa):this.A-=this.C.Ra};B[139]=function(){var a=this.Fa();dg(this)?this.A-=this.C.Ra:(C(this,A(this)+a),this.A-=this.C.Qa)}; +B[140]=function(){var a=this.Fa();!gg(this)!=!hg(this)?(C(this,A(this)+a),this.A-=this.C.Qa):this.A-=this.C.Ra};B[141]=function(){var a=this.Fa();!gg(this)==!hg(this)?(C(this,A(this)+a),this.A-=this.C.Qa):this.A-=this.C.Ra};B[142]=function(){var a=this.Fa();fg(this)||!gg(this)!=!hg(this)?(C(this,A(this)+a),this.A-=this.C.Qa):this.A-=this.C.Ra};B[143]=function(){var a=this.Fa();fg(this)||!gg(this)!=!hg(this)?this.A-=this.C.Ra:(C(this,A(this)+a),this.A-=this.C.Qa)};B[144]=function(){bk.call(this,lj)}; +B[145]=function(){bk.call(this,lj)};B[146]=function(){bk.call(this,mj)};B[147]=function(){bk.call(this,nj)};B[148]=function(){bk.call(this,oj)};B[149]=function(){bk.call(this,pj)};B[150]=function(){bk.call(this,qj)};B[151]=function(){bk.call(this,rj)};B[152]=function(){bk.call(this,sj)};B[153]=function(){bk.call(this,tj)};B[154]=function(){bk.call(this,uj)};B[155]=function(){bk.call(this,vj)};B[156]=function(){bk.call(this,wj)};B[157]=function(){bk.call(this,xj)};B[158]=function(){bk.call(this,yj)}; +B[159]=function(){bk.call(this,zj)};B[160]=function(){le(this,this.Ga.U,this.V,2);this.A-=this.C.se};B[161]=function(){this.ta=this.Aa;var a=ee(this);this.Ga.load(a);this.A-=this.C.nc;this.ta=-1};B[163]=function(){this.za.call(this,wi);-1!==this.B&&(this.A-=6)};B[164]=function(){this.za.call(this,2==this.V?Aj:Cj);this.A-=-1===this.B?3:7};B[165]=function(){this.za.call(this,2==this.V?Ej:Fj);this.A-=-1===this.B?3:7};B[168]=function(){le(this,this.Ha.U,this.V,2);this.A-=this.C.se}; +B[169]=function(){this.ta=this.Aa;var a=ee(this);this.Ha.load(a);this.A-=this.C.nc;this.ta=-1};B[171]=function(){this.za.call(this,zi);-1!==this.B&&(this.A-=5)};B[172]=function(){this.za.call(this,2==this.V?Gj:Ij);this.A-=-1===this.B?3:7};B[173]=function(){this.za.call(this,2==this.V?Kj:Lj);this.A-=-1===this.B?3:7};B[175]=function(){this.ma.call(this,2==this.V?Gi:Ii)};B[178]=function(){this.ma.call(this,Si)};B[179]=function(){this.za.call(this,yi);-1!==this.B&&(this.A-=5)}; +B[180]=function(){this.ma.call(this,Pi)};B[181]=function(){this.ma.call(this,Qi)}; +B[182]=function(){this.kc.call(this,Ui);switch(this.ga>>3&7){case 0:this.D=this.D&~this.R|this.D&255;break;case 1:this.I=this.I&~this.R|this.I&255;break;case 2:this.L=this.L&~this.R|this.L&255;break;case 3:this.G=this.G&~this.R|this.G&255;break;case 4:this.Hc=this.Hc&~this.R|this.D>>8&255;this.D=this.xa;break;case 5:this.M=this.M&~this.R|this.I>>8&255;this.I=this.xa;break;case 6:this.K=this.K&~this.R|this.L>>8&255;this.L=this.xa;break;case 7:this.J=this.J&~this.R|this.G>>8&255,this.G=this.xa}this.A-= +-1===this.B?3:6};B[183]=function(){je(this,2);this.ma.call(this,Vi);switch(this.ga>>3&7){case 0:this.D=this.D&65535;break;case 1:this.I=this.I&65535;break;case 2:this.L=this.L&65535;break;case 3:this.G=this.G&65535;break;case 4:this.Hc=this.Hc&65535;break;case 5:this.M=this.M&65535;break;case 6:this.K=this.K&65535;break;case 7:this.J=this.J&65535}this.A-=-1===this.B?3:6};B[186]=function(){this.ib.call(this,Zk,this.ra)};B[187]=function(){this.za.call(this,xi);-1!==this.B&&(this.A-=5)}; +B[188]=function(){this.ma.call(this,qi)};B[189]=function(){this.ma.call(this,ri)}; +B[190]=function(){this.kc.call(this,Ui);switch(this.ga>>3&7){case 0:this.D=this.D&~this.R|(this.D&255)<<24>>24&this.R;break;case 1:this.I=this.I&~this.R|(this.I&255)<<24>>24&this.R;break;case 2:this.L=this.L&~this.R|(this.L&255)<<24>>24&this.R;break;case 3:this.G=this.G&~this.R|(this.G&255)<<24>>24&this.R;break;case 4:this.Hc=this.Hc&~this.R|this.D<<16>>24&this.R;this.D=this.xa;break;case 5:this.M=this.M&~this.R|this.I<<16>>24&this.R;this.I=this.xa;break;case 6:this.K=this.K&~this.R|this.L<<16>>24& +this.R;this.L=this.xa;break;case 7:this.J=this.J&~this.R|this.G<<16>>24&this.R,this.G=this.xa}this.A-=-1===this.B?3:6};B[191]=function(){je(this,2);this.ma.call(this,Vi);switch(this.ga>>3&7){case 0:this.D=this.D<<16>>16;break;case 1:this.I=this.I<<16>>16;break;case 2:this.L=this.L<<16>>16;break;case 3:this.G=this.G<<16>>16;break;case 4:this.Hc=this.Hc<<16>>16;break;case 5:this.M=this.M<<16>>16;break;case 6:this.K=this.K<<16>>16;break;case 7:this.J=this.J<<16>>16}this.A-=-1===this.B?3:6}; +var Vf=[function(){this.A-=2+(-1===this.B?0:1);return this.Eb.U},function(){this.A-=2+(-1===this.B?0:1);return this.la.U},function(a){this.N|=2;this.Eb.load(a);this.A-=17+(-1===this.B?0:2);return a},function(a){this.N|=2;-1!==this.la.load(a)&&(this.fb(this.la.Lb+4,this.la.lb|=512),this.la.type|=512);this.A-=17+(-1===this.B?0:2);return a},function(a){this.N|=2;this.A-=14+(-1===this.B?0:2);if(-1!==this.xb.load(a)&&2048!=(this.xb.lb&2560)&&(this.xb.qc>=this.Ma&&this.xb.qc>=(a&3)||7168==(this.xb.lb&7168)))return sg(this), +a;qg(this);return a},function(a){this.N|=2;this.A-=14+(-1===this.B?0:2);if(-1!==this.xb.load(a)&&512==(this.xb.lb&2560)&&this.xb.qc>=this.Ma&&this.xb.qc>=(a&3))return sg(this),a;qg(this);return a},Ei,Ei],Ce=[Ue,Ue,Ue,Ue,Ue,Ue,Ei,Ei],Yk=[function(a){if(-1===this.B)y.call(this,6);else{a=this.Pc-this.Kb;var b=this.Kb;80286==this.ca?b|=-16777216:80386<=this.ca&&2!=this.V&&(a|=b<<16);this.ab(this.B+2,b);this.A-=11}return a},function(a){if(-1===this.B)y.call(this,6);else{a=this.cd-this.Pb;var b=this.Pb; +80286==this.ca?b|=-16777216:80386<=this.ca&&2!=this.V&&(a|=b<<16);this.ab(this.B+2,b);this.A-=12}return a},function(a){-1===this.B||this.O&131072?y.call(this,6):(this.Kb=this.ia(this.B+2)&(this.R|this.R<<8),a&=65535,this.Pc=this.Kb+a,this.N|=2,this.A-=11);return a},function(a){-1===this.B||this.O&131072?y.call(this,6):(this.Pb=this.ia(this.B+2)&(this.R|this.R<<8),a&=65535,this.cd=this.Pb+a,this.N|=2,this.A-=12);return a},function(){this.A-=2+(-1===this.B?0:1);return this.qa},Ei,function(a){this.O& +131072?y.call(this,6):(tg(this,a),this.A-=-1===this.B?3:6,this.N|=2);return a},Ei],Zk=[Ei,Ei,Ei,Ei,si,vi,ui,ti]; +function $k(a){mb.call(this,"ChipSet",a,32768);var b=a.model;b&&!al[b]&&gb("Unrecognized ChipSet model: "+b);this.ca=al[b]||bl;this.B=[];b=cl(a[dl]);this.B[0]=[b,b];null==b&&(this.N=[360,360],(b=a.floppies)&&b.length&&(this.N=b),el(this,fl,this.N.length),el(this,gl,a.monitor||(this.ca=dh&&(this.za=this.ha=2);this.O=a.scaleTimers||!1;this.Ma=a.rtcDate;this.Ga=!1;a.sound&&(this.Da=this.la=null,window&&(this.Da=window.AudioContext|| +window.webkitAudioContext),this.Da&&(this.la=new this.Da));this.reset(!0);Ib(this)}ba($k,mb);l=$k.prototype;l.Cb=function(a,b,c){switch(b){case dl:return this.na[b]=c,il(this,0,b),!0;case hl:if((this.ca|0)==jl||this.ca==kl)return this.na[b]=c,il(this,1,b),!0;break;case ll:return this.na[b]=c,!0}return!1}; +l.uc=function(a,b,c,d){this.ka=b;this.H=c;this.ba=d;this.pa=a;this.Tc=Wb(a,"FPU");el(this,ml,this.Tc?1:0,!0);this.C=Wb(a,"Keyboard");this.Ba=c.T.td/nl;Nc(b,this,ol);Rc(b,this,pl);this.ca=dh){this.D=Ml;this.L=0;this.K=Nl;this.oa=0;this.M=Ol|Pl;512<=Ql(this)&&(this.M|=Rl);+Sl(this,gl,void 0)==Tl&&(this.M|=Ul);(this.ca|0)==wl&&(this.M=this.M|Vl|Wl);this.qa= +Xl|Yl;this.Y=Array(8);this.W=0;a&&(this.A=Array(Bl));Zl(this,this.Ma);for(a=$l;a<=am;a++)this.A[a]=0;for(a=bm;ac?c=c?c:12:c=(c-=12)?c+128:140,d=!0);a.A[Qd]&Qm||(d&&128>8} +l.save=function(){var a=new Wf(this);a.set(0,[this.B]);for(var b=[],c=0;c=dh&&(a.set(5,[this.D,this.L,this.K,this.oa,this.M,this.qa]),a.set(6,[this.Y[7],this.Y,this.W,this.A,this.ma,this.Z]));return a.data()}; +l.restore=function(a){var b,c;b=a[0];Array.isArray(b[0])?this.B=b[0]:(this.B[0][0]=b[0],this.B[1][0]=b[1]&15,this.B[0][1]=b[2],this.B[1][1]=b[3]&15);El(this);b=a[1];for(c=0;c=f;f++){var g="pcjs-bitCell";f||(g+=" pcjs-bitCellLeft");d+='
    '+f+"
    \n"}e.innerHTML=d;an(a,b,c,!0)}function bn(a,b,c){if(b=(a=cn[a.ca|0])&&a[b])for(var d in b)if(a=b[d],a.yc&1<g.pb[0]&&(g.pb[0]=255,g.pb[1]--,0>g.pb[1]&&(g.pb[1]=255)));return h}function rn(a,b,c,d,e,f){var g=a.F[b];t(a,768)&&w(a,d,e,f,"DMA"+b+".CHANNEL"+c+".COUNT["+g.zb+"]",null,!0);a=g.oc[c];a.pb[g.zb]=a.pc[g.zb]=e;g.zb^=1}function sn(a,b,c,d){var e=a.F[b],f=e.Mb|tn;e.Mb&=~un;t(a,768)&&w(a,c,null,d,"DMA"+b+".STATUS",f,!0);return f} +function vn(a,b,c,d,e){var f=a.F[b];t(a,768)&&w(a,c,d,e,"DMA"+b+".REQ",null,!0);a=d&3;f.Mb=f.Mb&~(16<>2].oc[b&3],c,d,e)}function zn(a,b,c){b=a.F[b>>2].oc[b&3];b.ng&&b.fh&&b.Bg?(c&&(b.done=c),b.oe||Jn(a,b,!0)):c&&c(!0)} +function Jn(a,b,c){c&&(b.count=b.pb[1]<<8|b.pb[0],b.type=b.mode&Kn,b.sj=b.og=!1);for(var d=!1;0<=b.count&&(c=b.ig<<16|b.sb[1]<<8|b.sb[0],b.type==Ln?(d=!0,function(c){b.fh.call(b.ng,b.Bg,-1,function(e,g){0>e&&(b.sj||(b.sj=!0),e=255);b.oe||a.ka.fc(c,e);(d=g)&&setTimeout(function(){Mn(b)||Jn(a,b)},0)})}(c)):b.type==Nn?(c=a.ka.Ia(c),0>b.fh.call(b.ng,b.Bg,c)&&(b.og=!0)):b.type!=On&&(b.og=!0)),!d&&!Mn(b););} +function Mn(a){if(!a.og&&0<=--a.count&&(a.mode&Pn?(a.sb[0]--,0>a.sb[0]&&(a.sb[0]=255,a.sb[1]--,0>a.sb[1]&&(a.sb[1]=255))):(a.sb[0]++,255>3];b=1<<(b&7);d.ac&b||(d.ac|=b,d.Xe=c||0,eo(a))}function eh(a,b){var c=a.hc[b>>3];b=1<<(b&7);c.ac&b&&(c.ac&=~b,eo(a))}function eo(a,b){var c,d=-1;1>=1),Fd(a.H,e))),b==ro&&c==vo&&Um(a))}function wo(a,b,c,d){w(a,c,null,d,"PIT"+b+".CTRL",null,2048);return b?a.va:a.ta} +function xo(a,b,c,d,e){w(a,c,d,e,"PIT"+b+".CTRL",null,2048);e=0;c=d&yo;b?(e=3,a.va=d):a.ta=d;if(c==zo){if(!(d&Ao))for(c=0;2>=c;c++)if(d&Bo<=c;c++)d&Bo<>=Go;var f=d&Ho,g=d&Io;d&=Jo;if(d==Ko)Fo(a,e+c);else{e+=c;var h=a.G[e];h.Rf=d;h.mode=g;h.$g=f;h.pc=[0,0];h.pb=[0,0];h.ke=[0,0];h.gd=!1;h.Ne=!1;h.me=!1;h.Re=!1;no(a,e);b==ro&&c==so&&eh(a,to);b==ro&&c==vo&&255==a.hc[0].pd&& +a.J==(Lo|Mo|No|Oo)&&(b=a.G[0],b.Mc[0]=b.pc[0],b.Mc[1]=b.pc[1],b.jd=Dd(a.H,a.O))}}}function uo(a,b){a=a.G[b];(b=a.pc[1]<<8|a.pc[0])||(b=1==a.ad?256:65536);return b}function Od(a,b){a=a.G[b];(b=a.Mc[1]<<8|a.Mc[0])||(b=1==a.ad?256:65536);return b}function Fo(a,b){Al(a,b);var c=a.G[b];c.ke[0]=c.pb[0];c.ke[1]=c.pb[1];c.Ne=!0;no(a,b)}function no(a,b){a=a.G[b];a.sd=a.Rf==Po?1:0;a.ad=a.Rf==Qo?2:1} +function Al(a,b,c){var d=a.G[b];if(d.me&&(b!=vo||a.J&Lo)){var e=Dd(a.H,a.O),f=(e-d.jd)/a.Ba|0;0>f&&(d.jd=e,f=0);var g=uo(a,b),h=Od(a,b)-f;d.mode==po?(0>=h&&(h=0),h||(d.gd=!0,d.me=!1,b||gh(a,to))):d.mode==Ro?(d.gd=1!=h,0>=h&&(h=g+h,0>=h&&(h=g),d.Mc[0]=h&255,d.Mc[1]=h>>8&255,d.jd=e,!b&&d.gd&&gh(a,to))):d.mode==Pd&&(h-=f,0>=h&&(d.gd=!d.gd,h=g+h,0>=h&&(h=g),d.Mc[0]=h&255,d.Mc[1]=h>>8&255,d.jd=e,!b&&d.gd&&gh(a,to)));d.pb[0]=h&255;d.pb[1]=h>>8&255;c&&(a.jd=0)}return d} +function Nd(a,b){for(var c=0;c=dh){b=a.H.T.td;c=Dd(a.H,a.O);null==a.Aa&&(a.ma=Dd(a.H,a.O),a.Ha=1024,a.Aa=Math.floor(a.H.T.td/a.Ha),Sm(a));c>=a.Z&&(a.A[Om]|=So,a.A[Qd]&Rd&&(a.A[Om]|=To,gh(a,Uo)),a.Z=c+a.Aa);a.A[km]==a.A[lm]&&a.A[mm]==a.A[nm]&&a.A[om]==a.A[pm]&&(a.A[Om]|=Vo,a.A[Qd]&Wo&&(a.A[Om]|=To,gh(a,Uo)));var d=c-a.ma,e=Math.floor(d/b);if(e&&!(a.A[Qd]&Xo)){for(;e--;)if(60<=++a.A[km]&&(a.A[km]=0,60<=++a.A[mm]&&(a.A[mm]=0,24<=++a.A[om]))){a.A[om]=0;a.A[qm]=a.A[qm]% +7+1;var f;f=a.A[Km];var g=Ia[a.A[Jm]-1];28==g&&(f%4||!(f%100)&&f%400||g++);f=g;++a.A[Im]>f&&(a.A[Im]=1,12<++a.A[Jm]&&(a.A[Jm]=1,a.A[Km]=(a.A[Km]+1)%100))}a.A[Om]|=Yo;a.A[Qd]&Zo&&(a.A[Om]|=To,gh(a,Uo))}a.ma=c-d%b}}l.Hm=function(a,b){var c=this.xa;this.ga&$o&&(this.J&ap?c=this.B[0][1]:this.C&&(c=bp(this.C)));w(this,a,null,b,"PPI_A",c);return c};l.lo=function(a,b,c){w(this,a,b,c,"PPI_A");this.xa=b};l.Im=function(a,b){var c=this.J;w(this,a,null,b,"PPI_B",c);return c}; +l.mo=function(a,b,c){w(this,a,b,c,"PPI_B");cp(this,b)};function cp(a,b){var c=!!(b&dp),d=!!(a.J&dp);a.J=b;a.C&&ep(a.C,!(b&ap),!!(b&Oo));c!=d&&Um(a,c)}l.Jm=function(a,b){var c=0,c=(this.ca|0)==jl?this.J&Mo?c|this.B[1][1]&fp:c|this.B[1][1]>>4&1:this.J&gp?c|this.B[0][1]>>4:c|this.B[0][1]&15;this.J&Lo&&Al(this,vo).gd&&(c=this.J&dp?c|hp:c|ip);w(this,a,null,b,"PPI_C",c,32896);return c};l.no=function(a,b,c){w(this,a,b,c,"PPI_C");this.Ca=b};l.Km=function(a,b){var c=this.ga;w(this,a,null,b,"PPI_CTRL",c);return c}; +l.oo=function(a,b,c){w(this,a,b,c,"PPI_CTRL");this.ga=b};l.Tl=function(a,b){var c=this.C?bp(this.C):0;w(this,a,null,b,"8041_KBD",c);this.aa&=~jp;return c};l.vn=function(a,b,c){w(this,a,b,c,"8041_KBD")};l.Sl=function(a,b){var c=this.J;w(this,a,null,b,"8041_CTRL",c);return c};l.un=function(a,b,c){w(this,a,b,c,"8041_CTRL");cp(this,b)};l.Ul=function(a,b){var c=this.aa;w(this,a,null,b,"8041_STATUS",c);return c}; +l.Vl=function(a,b){var c=this.oa;w(this,a,null,b,"8042_OUTBUFF",c,16384);this.D&=~(jp|kp);this.C&&lp(this.C);return c}; +l.xn=function(a,b,c){w(this,a,b,c,"8042_INBUF.DATA",null,16384);if(this.D&mp)switch(this.L){case np:op(this,b);break;case pp:qp(this,b);break;default:if(op(this,this.K&~Nl),this.C){a=this.C;c=b;var d=-1;t(a)&&Lb(a,"sendCmd("+r(c)+")");switch(a.I||c){case rp:d=sp;tp(a);break;case up:a.I&&(c=0);vp(a,sp);a.I=c;break;case wp:a.I&&(c=0);vp(a,sp);a.I=c;break;default:Lb(a,"sendCmd(): unrecognized command")}xp(this,d)}}this.L=b;this.D&=~mp}; +l.Wl=function(a,b){var c=this.J&~(yp|zp)|(Dd(this.H)&64?zp:0);w(this,a,null,b,"8042_RWREG",c,16384);return c};l.yn=function(a,b,c){w(this,a,b,c,"8042_RWREG",null,16384);cp(this,b)};l.Xl=function(a,b){w(this,a,null,b,"8042_STATUS",this.D,16384);a=this.D&255;this.D&kp&&(this.D|=jp,this.D&=~kp);return a}; +l.wn=function(a,b,c){w(this,a,b,c,"8042_INBUFF.CMD",null,16384);this.L=b;this.D|=mp;a=0;this.L>=Ap&&(a=this.L^15,this.L=Ap);switch(this.L){case Bp:xp(this,this.K);break;case Cp:op(this,this.K|Nl);break;case Dp:op(this,this.K&~Nl);this.C&&lp(this.C);break;case Ep:this.C&&(a=this.C,a.A=[],t(a)&&Lb(a,"scan codes flushed"));op(this,this.K|Nl);xp(this,Fp);qp(this,Xl|Yl);break;case Gp:xp(this,Hp);break;case Ip:xp(this,this.M);break;case Jp:xp(this,this.qa);break;case Kp:xp(this,this.K&Nl?0:Lp);break;case Ap:a& +1&&jf(this.H)}};function op(a,b){a.K=b;a.D=a.D&~Mp|b&Np;a.C&&ep(a.C,!!(b&Op),!(b&Nl))}function xp(a,b,c){0<=b&&(a.oa=b,c?a.D|=jp:(a.D&=~jp,a.D|=kp))}function qp(a,b){a.qa=b;nc(a.ka,!!(b&Yl));b&Xl||jf(a.H)}function Pp(a,b){a.ca>4)+(c&15),e=!0);if(d==om||d==pm)e&&23=c?c=12==c?0:c:(c-=116,c=24==c?12:c))}}else c=b;this.A[d]=c;d==Qd&&a&Rd&&b&Rd&&Sm(this)};l.Ok=function(a,b,c){w(this,a,b,c,"NMI");this.da=b};l.Xn=function(a,b,c){w(this,a,b,c,"FPU.CLEAR")};l.Yn=function(a,b,c){w(this,a,b,c,"FPU.RESET");this.Tc&&Ng(this.Tc)}; +l.Ym=function(a){if(t(this,16)&&Vk(this.ba,26,a)){var b=this.H.D>>8;Sf(this.H,a,function(a,d){return function(c){d=Dd(a.H)-d;var e,g=a.H.L&255,h=a.H.L>>8,k=a.H.L&255,m=a.H.L>>8;if(2==b||3==b)e=" CH(hour)="+sa(h)+" CL(min)="+r(g)+" DH(sec)="+r(m);else if(4==b||5==b)e=" CX(year)="+sa(a.H.I)+" DH(month)="+r(m)+" DL(day)="+r(k);g=a.ba;h=d;g.message("INT "+r(26)+": C="+(cg(g.H)?1:0)+(e||"")+" (cycles="+h+(c?",level="+(c+1):"")+")")}}(this,Dd(this.H)))}return!0}; +function Um(a,b){if(a.la)try{void 0!==b?a.Ga=b:b=!!(a.Ga&&a.H&&a.H.ea.vb);var c=Math.round(nl/uo(a,vo));if(20>c||2E4>>4,0,this.F,this.B,this.Gd),delete this.Gd);return!0};Xp.prototype.Wb=function(){return!0}; +function Yp(a,b,c,d){if(d)a.Ea("Unable to load system ROM (error "+d+": "+b+")");else{ob(a.ye,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.longs||e.data;if(f)a.A=f;else if(g)for(a.A=Array(4*g.length),d=c=0;c>8&255,a.A[d++]=g[c]>>16&255,a.A[d++]=g[c]>>24&255;else a.A=e;a.Gd=e.symbols;if(!a.A.length){gb("Empty ROM: "+b);return}if(1==a.A.length){gb(a.A[0]);return}}catch(h){a.Ea("ROM data error: "+h.message);return}else for(b= +c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e>>d.A].cf(e&d.D,a.A[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.D?b.push(a.D):null!=a.D&&a.D.length&&(b=a.D);for(c=0;cthis.C?$l:23,c=a.A[b]|a.A[b+1]<<8,c=c+(this.A>>10);a.A[b]=c&255;a.A[b+1]=c>>8;jm(a)}}else gb("No RAM allocated")}; +l.save=function(){var a=new Wf(this);this.controller&&a.set(0,this.controller.save());return a.data()};l.restore=function(a){return this.controller?this.controller.restore(a[0]):!0};function eq(a){this.D=a;this.B=gq;this.H=hq;this.C=iq;this.A=null}l=eq.prototype;l.save=function(){return[this.B,this.C]};l.restore=function(a){this.fc(0,a[0]&255);this.fc(2,a[1]&255);return!0};l.Ia=function(a){var b=255;2>a?b=a&1?this.H>>8:this.H&255:4>a&&(b=a&1?this.C>>8:this.C&255);return b}; +l.fc=function(a,b){if(a)2==a&&(this.C=this.C&-256|b);else if(b!=(this.B&255)){a=this.D.ka;if(b&jq)this.A&&(wc(a,kq,lq,this.A),this.A=null);else{this.A||(this.A=xc(a,kq,lq));var c=xc(a,mq,lq);wc(a,kq,lq,c,b&nq?1:Dc)}this.B=this.B&-256|b}};l.wj=function(){return oq};l.gh=function(){return pq};var fq=-2134900736,mq=16646144,kq=917504,lq=131072,jq=1,nq=2,gq=65535,hq=2575,iq=2,oq=[null,0],pq=[function(a){return this.controller.Ia(a)},null,null,function(a,b){this.controller.fc(a,b)},null,null]; +$a(function(){for(var a=zb(document,"pcx86","ram"),b=0;b=n.ee&&d<=n.z&&(d-=n.ee-n.de),d=Aq[e]==d),d){(a=a.na["key-"+e])&&void 0!==c&&(a.style.color=c?"#ffffff":"#000000",a.style.backgroundColor=c?"#000000":"#ffffff");break}}} +l.uc=function(a,b,c,d){this.pa=a;this.ka=b;this.H=c;this.ba=d;this.W=Wb(a,"ChipSet");this.G=yd(a,"autoType")||this.G;Rf(c,33,this.Zm.bind(this))};l.Zm=function(){if(10==(this.H.D>>8&255)&&!this.F&&this.G){var a=this.F=this.G;a&&!this.B&&(this.B=a,Cq(this,150))}return!0};function rq(a,b){var c=0;a.ca=null;"string"==typeof b&&(a.ca=b.toUpperCase(),c=Eq.indexOf(a.ca),0>c&&(c=0));if(b=Eq[c])a.aa=parseInt(b.substr(2),10)}function tp(a){Lb(a,"keyboard reset",65792);a.A=[];vp(a,Fq)} +function ep(a,b,c){a.L!==c&&(a.L=a.M=c)&&(a.J=!0);a.K!==b&&(a.K=b)&&!a.M&&Rp(a,!0);a.K&&a.M&&(tp(a),a.M=!1)}function vp(a,b){a.W&&(a.A.unshift(b),a.J=!0,Pp(a.W,b))}function lp(a){var b=0;a.A.length&&a.J&&(b=a.A[0],a.W&&Pp(a.W,b));t(a)&&Lb(a,b?"scan code "+r(b)+" available":"no scan codes available")}function bp(a){var b=0;a.A.length&&(b=a.A[0]);t(a)&&Lb(a,"scan code "+r(b)+" delivered");return b} +function Rp(a,b){0>=1);if(b&Jq){if(!1===d)return!0;d=null}null==d?d=!((c?a.D:a.jc)&b):d||b&Kq&&(b=Kq);if(c){a.D&=~b;d&&(a.D|=b);c=b;var f,g;for(g in Lq)d="led-"+g,e=Lq[g],c&&c!=e||!(f=a.na[d])||(f.style.backgroundColor=a.D&e?"#00ff00":"#000000")}else a.jc&=~b,d&&(a.jc|=b);return!0}}return!1} +function uq(a,b,c){if((O[b]||O[b+=1E3])&&a.H&&a.H.ea.vb){Hq[b]&&a.C.length&&0e||(e==a.C.length&&(d={},d.ve=b,d.jc=a.jc,Dq(a,b,!0),e++),0b.vd){if(!b.rf){Bq(a,b.ve);return}b.rf=!1;c=a.da}else c=1==b.vd++?500:100;b.dl=setTimeout(function(a){return function(){Mq(a,b)}}(a),c)}} +function Oq(a,b,c){var d=b;if(b>=n.de&&b<=n.fg)!(a.jc&(Pq|Qq|Rq))==c&&(d=b+(n.ee-n.de));else if(b>=n.ee&&b<=n.z)!!(a.jc&(Pq|Qq|Rq))==c&&(d=b-(n.ee-n.de));else if(!!(a.jc&(Pq|Qq))==c){if(a=na[b])d=a}else if(a=ma[b])d=a;return d}l.Cg=function(a){a||(this.jc&=~Kq)}; +function sq(a,b,c){var d=!0,e=!1,f=!1,g=b.keyCode;a.B="";var h=Oq(a,g,!0);a.eh&&h==n["`"]&&(g=h=27);if(O[g+1E3])if(h+=1E3,2==b.location&&(h+=2E3),zq(a,h,!1,c)){if(20==g||144==g||145==g)a.Z||(c=e=!0);if(!(c||91!=g&&93!=g))for(var k=0;k=n.de&&b<=n.fg||b>=n.ee&&b<=n.z;e>>>=8;){var g=0,h=e&255;f==ar||f==br?d.push(f|(c?0:$q)):(h==P?a.D&(Pq|Qq)||a.D&Rq&&b||(g=h):h==cr?a.D&(Sq|dr)||(g=h):h==er?a.D&(Tq|fr)||(g=h):d.push(f|(c?0:$q)),g&&(c?d.unshift(g):d.push(g|$q)))}for(c=0;c"]]=52|P<<8;O[n["/"]]=53; +O[n["?"]]=53|P<<8;O[3016]=54;O[1044]=55;O[1018]=er;O[1032]=57;O[vq]=58;O[1112]=59;O[1113]=60;O[1114]=61;O[1115]=62;O[1116]=63;O[1117]=64;O[1118]=65;O[1119]=66;O[1120]=67;O[1121]=68;O[wq]=69;O[xq]=70;O[1036]=71;O[1038]=72;O[1033]=73;O[1109]=74;O[1037]=75;O[1101]=76;O[1039]=77;O[1107]=78;O[1035]=79;O[1040]=80;O[1034]=81;O[1045]=82;O[1046]=Zq;O[4027]=84;O[1122]=87;O[1123]=88;O[1091]=91;O[1093]=93;O[1224]=91;O[ir]=46|cr<<8;O[Uq]=70|cr<<8;O[4046]=Zq|cr<<8|er<<16;O[4045]=82|cr<<8|er<<16; +O[4013]=28|cr<<8|er<<16;var rp=255,up=243,wp=237,Fq=170,sp=250,hr=255,gr=20;$a(function(){for(var a=zb(document,"pcx86","keyboard"),b=0;bc.length)c=[!1,0,null,null,0,Array(b>2,32768));this.rc=c[0];this.Xc=c[1];this.$e=c[2];this.fa=c[3];this.ec=c[4]&255;this.Gg=c[4]>>8&255;this.Wa=c[5];this.ph=lr;this.hg=nr;if(b>=aq){this.ph=mr;this.hg=or;(b=c[6])||(b=[!1,0,Array(pr),0,f== +Tl?0:qr,0,0,Array(rr),0,0,0,Array(sr),0,[this.bb,this.Ob,this.rd],Array(this.rd>>2),tr|ur|vr|wr|xr,0,-1,0,-1,0,-1,0,0,0,0,yr,zr,0,0,Ar,Array(Br)]);this.Le=b[0];this.xd=b[1];this.Cc=b[2];this.Ug=Cr;this.Jg=b[3];this.bf=b[4];this.Qf=b[5];this.Ad=b[6];this.ae=b[7];this.Wg=Dr;this.Xk=b[8];this.Yk=b[9];this.zd=b[10];this.yd=b[11];this.Vg=Er;this.tb=b[12];d=b[13];"number"==typeof d&&(d=[this.bb,this.Ob,d]);this.bb=d[0];this.Ob=d[1];d=this.rd>>2;if((this.fd=b[14])&&this.fd.length=aq){var c=[];c[0]=a.Le;c[1]=a.xd;c[2]=a.Cc;c[3]=a.Jg;c[4]=a.bf;c[5]=a.Qf;c[6]=a.Ad;c[7]=a.ae;c[8]=a.Xk;c[9]=a.Yk;c[10]=a.zd;c[11]=a.yd;c[12]=a.tb;c[13]=[a.bb,a.Ob,a.rd];var d;if(d=a.fd){var e=0,f=[];if(void 0!==d[0])for(var g=0;2>g;g++)for(var h=g;h>1;f[e++]=k;h=m}f.length=aq){var d=0,e=0,f=0;switch(b){case Nr:d=Or;a.La==cq&&(e=Pr);break;case Qr:a.La==aq&&(d=Rr);break;case Sr:d=Tr;a.La==cq&&(e=Ur);break;case Vr:d=Wr;a.La==cq&&(e=Xr);break;case Yr:d=Zr;a.La==cq&&(f=$r);break;case as:d=bs,a.La==cq&&(f=cs)}d&&(c|=a.Wa[ds]&d?256:0,c|=a.Wa[ds]&e?512:0,c|=a.Wa[es]&f?512:0)}return c} +var lr=18,Nr=6,ds=7,Or=1,Wr=2,Tr=4,Zr=8,bs=16,Rr=32,Pr=32,Xr=64,Ur=128,es=9,$r=32,cs=64,Qr=10,Sr=16,Vr=18,Yr=21,as=24,mr=25,nr="HTOTAL HDISP HSYNC_POS HSYNC_WIDTH VTOTAL VTOTAL_ADJ VDISP VSYNC_POS INTERLACE_POS MAX_SCAN CURSOR_START CURSOR_END START_ADDR_HI START_ADDR_LO CURSOR_ADDR_HI CURSOR_ADDR_LO LIGHT_PEN_HI LIGHT_PEN_LO".split(" "),or="HTOTAL HDISP_END HBLANK_START HBLANK_END HRETRACE_START HRETRACE_END VTOTAL OVERFLOW PRESET_SCAN MAX_SCAN CURSOR_START CURSOR_END START_ADDR_HI START_ADDR_LO CURSOR_ADDR_HI CURSOR_ADDR_LO VRETRACE_START VRETRACE_END VDISP_END OFFSET UNDERLINE VBLANK_START VBLANK_END MODE_CTRL LINE_COMPARE".split(" "), +pr=20,Cr="PAL00 PAL01 PAL02 PAL03 PAL04 PAL05 PAL06 PAL07 PAL08 PAL09 PAL0A PAL0B PAL0C PAL0D PAL0E PAL0F MODE OVERSCAN PLANES HPAN".split(" "),qr=1,yr=1,rr=5,Dr=["RESET","CLOCKING","MAPMASK","CHARMAP","MEMMODE"],zr=255,Ar=0,Br=256,sr=9,Er="SRESET ESRESET COLORCMP DATAROT READMAP MODE MISC COLORDC BITMASK".split(" "),tr=1024,ur=4096,Kr=65280,vr=0,wr=16,Mr=255,xr=-2147483648,Fr=[];Fr[2]=tr;Fr[3]=tr|ur;Fr[16]=1280;Fr[512]=vr;Fr[1024]=vr|32;Fr[1536]=vr|96;Fr[2560]=vr|160;Fr[3584]=vr|224;Fr[768]=vr|wr; +Fr[4096]=1;Fr[8192]=2;Fr[24576]=98;Fr[40960]=162;Fr[57344]=226;var Lr=[];Lr[tr]=function(a){a+=this.H;return(this.controller.tb=this.X[a])>>this.controller.fi&255};Lr[tr|16384]=function(a){return(this.controller.tb=this.X[(a&-4)+this.H])>>((a&3)<<3)&255};Lr[tr|ur]=function(a){a+=this.H;var b=this.controller.tb=this.X[a&-2];return(a&1?b>>8:b)&255}; +Lr[1280]=function(a){a+=this.H;a=this.controller.tb=this.X[a];for(var b=this.controller.rh,c=this.controller.qh&b,d=0,e=128;e;)(a&b)==c&&(d|=e),c>>>=1,b>>>=1,e>>=1;return d};Lr[vr]=function(a,b){a+=this.H;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.Zd;b=b&this.controller.Bb|this.controller.tb&~this.controller.Bb;b=b&this.controller.gb|this.X[a]&~this.controller.gb;this.X[a]!=b&&(this.X[a]=b,this.Oa=!0)}; +Lr[vr|32]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.Zd;b=b&this.controller.Bb|this.controller.tb&~this.controller.Bb;b=b&this.controller.gb|this.X[a]&~this.controller.gb;this.X[a]!=b&&(this.X[a]=b,this.Oa=!0)}; +Lr[vr|96]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.Zd;b&=this.controller.tb;b=b&this.controller.Bb|this.controller.tb&~this.controller.Bb;b=b&this.controller.gb|this.X[a]&~this.controller.gb;this.X[a]!=b&&(this.X[a]=b,this.Oa=!0)}; +Lr[vr|160]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.Zd;b|=this.controller.tb;b=b&this.controller.Bb|this.controller.tb&~this.controller.Bb;b=b&this.controller.gb|this.X[a]&~this.controller.gb;this.X[a]!=b&&(this.X[a]=b,this.Oa=!0)}; +Lr[vr|224]=function(a,b){a+=this.H;b=b>>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Nd|this.controller.Zd;b^=this.controller.tb;b=b&this.controller.Bb|this.controller.tb&~this.controller.Bb;b=b&this.controller.gb|this.X[a]&~this.controller.gb;this.X[a]!=b&&(this.X[a]=b,this.Oa=!0)};Lr[vr|4]=function(a,b){var c=(a&-4)+this.H;a=(a&3)<<3;b=b<>this.controller.Qc|b<<8-this.controller.Qc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.Bb;b=this.controller.If&b|this.controller.tb&~b;b=b&this.controller.gb|this.X[a]&~this.controller.gb;this.X[a]!=b&&(this.X[a]=b,this.Oa=!0)}; +function Q(a,b,c,d,e){mb.call(this,"Video",a,262144);var f=this;this.Tc=Ta("Gecko/");var g=["","moz","ms","webkit"];this.ca=a.model;var h=gs[this.ca]||gs.mda;this.La=h[0];this.rd=a.memory||0;this.cd=a.switches;this.da=a.mode;if(null==this.da||null==hs[this.da])this.da=h[1];this.Fb=a.charCols;this.sc=a.charRows;if(void 0===this.Fb||void 0===this.sc)this.Fb=hs[this.da][0],this.sc=hs[this.da][1];this.Z=a.screenWidth;this.la=a.screenHeight;this.Uc=a.scale;this.Dd=12<=Math.round(this.Z/this.Fb);this.O= +b;this.L=c;this.D=(this.Rd=d)||b||null;b=a.smoothing;(c=Ua("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c=aq&&(Nc(b,this,rs),Rc(b,this,ss));this.La==cq&&(Nc(b,this,ts),Rc(b,this,us));if(d){var e=this;zl(d,262144,function(a){if(e.B)if(a[0]){var b=e.B;if(b.fd){var c,d,f,g=!1,u=8,E=8,G=-1,I=b.video.F>>3;for(c=0;c=d&&(E=d,g=!0);break; +case "p":0<=d&&3>=d&&(G=d);break;case "w":d=b.bb&&(f-=b.bb);a="";for(c=0;cG?q(T):qa(T>>(G<<3),8));g&&(f+=I-E);a&&(a+="\n");a+=J}a&&b.ba.P(a);b.C=f}else b.ba.P("no buffer")}else e.ba.P("BIOSMODE: "+r(e.oa)),b=e.B,Ir(b,"CRTC",b.ec,b.Wa,b.hg),b.La>=aq&&(Ir(b," GRC",b.zd,b.yd,b.Vg),Ir(b," SEQ",b.Ad,b.ae,b.Wg),Ir(b," ATC",b.xd,b.Cc, +b.Ug),Ir(b," ATCINDX",b.xd),b.ba.P(" ATCDATA: "+b.Le),Ir(b," FEAT",b.Qf),Ir(b," MISC",b.bf),Ir(b," STATUS0",b.Jg)),Ir(b," STATUS1",b.fa),b.La!=os&&b.La!=ls||Ir(b," MODEREG",b.Xc),b.La==ls&&Ir(b," COLOR",b.$e),b.La>=aq&&(b.ba.P(" LATCHES: "+q(b.tb)),b.ba.P(" ACCESS: "+q(b.ug,4)),b.ba.P("Use 'dump video [addr]' to dump video memory"));else e.ba.P("no active video card")})}if((this.C=Wb(a,"Keyboard"))&&this.O){for(var f in this.na)0c&&(a=Math.round(c/b*100)+"%")}this.Tc?(this.O.style.width=a,this.O.style.width=a,this.O.style.display="block",this.O.style.margin="auto"):(this.N.style.width=a,this.N.style.height="auto");this.N.style.backgroundColor="black";this.N.Ke();a=!0}this.D&&this.D.focus()}return a}; +function js(a,b){!b&&a.N&&(a.Tc?a.O.style.width=a.O.style.height="":a.N.style.width=a.N.style.height="");Lb(a,"notifyFullScreen("+b+")",!0);a.C&&(a.C.eh=b)}l.ne=function(a){var b=!1;this.D&&(a?this.D.ne&&(this.D.ne(),this.G&&this.G.Jf(!0),b=!0):this.D.el&&(this.D.el(),this.G&&this.G.Jf(!1),b=!0),this.D&&this.D.focus());return b};l.Jf=function(a){this.G&&(this.G.Jf(a),this.C&&(this.C.eh=a));var b=this.na.lockPointer;b&&(b.textContent=a?"Press Esc to Unlock Pointer":this.Ed)}; +function vs(a,b){var c=a.D;c&&!a.tc&&(c.addEventListener("touchstart",function(b){zs(a,b,!0)},!1),c.addEventListener("touchmove",function(b){zs(a,b)},!0),c.addEventListener("touchend",function(b){zs(a,b,!1)},!1),a.tc=b,a.hb=a.ib=a.ld=-1,a.lc=!1,a.Db=null,a.kc=!1,a.Qd=function(){a.kc=!0;a.G.Wd(As,!0)})}l.Cg=function(a){this.C&&this.C.Cg(a)}; +function zs(a,b,c){var d,e,f=0,g=0;e=a.O;do isNaN(e.offsetLeft)||(f+=e.offsetLeft,g+=e.offsetTop);while(e=e.offsetParent);var h=a.Z/a.O.offsetWidth,k=a.la/a.O.offsetHeight;b.targetTouches&&b.targetTouches.length?(d=b.targetTouches[0].pageX,e=b.targetTouches[0].pageY):(d=b.pageX,e=b.pageY);d=(d-f)*h;e=(e-g)*k;if(a.tc==xs)d=d/(a.Z/3)|0,e=e/(a.la/3)|0,1!=e?e?uq(a.C,1040,!0):uq(a.C,1038,!0):1!=d&&(d?uq(a.C,1039,!0):uq(a.C,1037,!0));else if(a.G){g=a.lc;f=b.timeStamp-a.ld;!0===c?(a.lc=500f){a.G.Wd(As,!0);a.G.Wd(As,!1);return}}if(c||0>a.hb||0>a.ib)a.hb=d,a.ib=e;c=Math.round(d-a.hb);b=Math.round(e-a.ib);a.hb=d;a.ib=e;a.G.uf(c,b,a.hb,a.ib)}}l.Xb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.Wb=function(a){return a?this.save():!0}; +l.reset=function(){var a=!0,b=0;this.W&&(b=+Sl(this.W,gl,void 0));this.ca||(this.La=b==Tl?os:ls);this.da=Bs;switch(this.La){case cq:b=7;break;case aq:var c=Cs[this.xb];c&&(b=c[0]);b||(b=4);break;case os:b=Tl;this.da=Ds;break;default:b=2}this.ga!==b&&(this.ga=b,a=!0);this.B=null;this.Y=this.Kb=new jr(this,os);this.K=this.yb=new jr(this,ls);this.La>1&255,d=d>>8&~Hs,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?Is|Js:Ks|Ls)|Ms&d>>8);Jc(this.ka,b,c|d<<8)}ys(this,!0)}};function Es(a){a.A.bf&qr?(a.Y=a.Kb,a.K=a.A):(a.Y=a.A,a.K=a.yb)}l.save=function(){var a=new Wf(this);a.set(0,Hr(this.Kb));a.set(1,Hr(this.yb));a.set(2,[this.ga,this.da,this.oa]);a.set(3,Hr(this.A));return a.data()}; +l.restore=function(a){var b=a[2];this.ga=b[0];this.da=b[1];this.oa=b[2];this.B=null;this.Y=this.Kb=new jr(this,os,a[0]);this.K=this.yb=new jr(this,ls,a[1]);this.A=new jr(this,this.La,a[3],this.rd);this.A.rc&&Es(this);Fs(this);if(!Ns(this))return!1;Os(this);return!0}; +function ks(a,b,c,d){if(d)a.Ea("Unable to load font ROM (error "+d+": "+b+")");else{ob(a.ye,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f.length){gb("Empty font ROM: "+b);return}if(1==f.length){gb(f[0]);return}if(8192==f.length)bq(a,f,[6144,0]);else if(2048==f.length)bq(a,f,[0]);else{a.Ea("Unrecognized font data length ("+f.length+")");return}}catch(g){a.Ea("Font ROM data error: "+g.message);return}(a.L||a.ba)&&Ib(a)}} +function Ps(a,b){if(1==b)return a.ha[0]=Qs[Ks],a.ha[1]=Qs[Is],a.ha;if(2==b){var c=a.B.$e;if(a.B===a.A){var d=a.A.Cc[0],c=d&7;d&16&&(c|=8);18!=a.A.Cc[1]&&(c|=32)}a.ha[0]=Qs[c&15];c=c&32?Rs:Ss;for(d=0;de;e++)f=d[e]||0,g=f<<2&252,h=f>>4&252,f=f>>10&252,a.ha[e]=[g,h,f,255];else{var k=d&&d[255];b=null!=c.Cc[15]?c.Cc:Ts;for(e=0;16>e;e++)f=b[e]&63,k?(f|= +(c.Cc[20]&12)<<4,c.Cc[16]&128&&(f&=-49,f|=(c.Cc[20]&3)<<4),f=d[f],g=f<<2&252,h=f>>4&252,f=f>>10&252):(g=(f&4?170:0)|(f&32?85:0),h=(f&2?170:0)|(f&16?85:0),f=(f&1?170:0)|(f&8?85:0)),a.ha[e]=[g,h,f,255]}a.Ga=!0}return a.ha}function bq(a,b,c,d){a.wb=b;a.Ta=c;a.Da=d} +function Fs(a,b){var c=!1;if(window&&a.wb&&(!b||a.I)){b=0;var d=a.Da?a.Da:8,e=Ps(a);null!=a.Ta[0]&&Us(a,Vs,a.Ta[0],b,d,8,a.wb,e)&&(c=!0);b=a.Da?0:2048;d=a.Da?a.Da:9;null!=a.Ta[1]&&(Us(a,Ws,a.Ta[1],b,d,14,a.wb,Xs,Ys)&&(c=!0),a.Da&&Us(a,a.La,a.Ta[1],0,a.Da,14,a.wb,e)&&(c=!0))}return c}function Us(a,b,c,d,e,f,g,h,k){var m=!1;null!=c&&(Zs(a,b,c,d,e,f,g,h,k)&&(m=!0),a.Dd&&Zs(a,b<<1,c,d,e,f,g,h,k)&&(m=!0));return m} +function Zs(a,b,c,d,e,f,g,h,k){var m=!1,p=b&1?0:1,v=a.va[b],u=16>h.length?h.length:16;v||(v={Fc:e<ua||!T?ua:8,ib=cb.createImageData(m.Fc,m.Gc);for(Sa=0;256>Sa;Sa++){for(db=0;db=ua-2,Ld=ca[db>(8<=rb&&192<=Sa&&223>=Sa?7:rb)?E:xb;$s(ib,vg,ff,wg);I&&$s(ib,vg+1,ff,wg)}cb.putImageData(ib,(Sa&15)*m.Fc,(Sa>>4)*m.Gc)}m.Ce[G]="#"+q(E[0],2)+q(E[1],2)+q(E[2],2);m.Ri[G]=E;m.Tg[G]=za;m=!0}}a.va[b]=v;return m}function at(a){0a.Aa&&(a.Aa=0):a.Aa=-1} +function Os(a){if(a.I){for(var b=10;15>=b;b++)if(null==a.B.Wa[b])return;var c=a.B.Wa[10],b=c&31,d=a.B.Wa[11]&31,e=a.B.Wa[9]&31,f=!1;a.B===a.A&&(f=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!f||b>e)bt(a);else{c=a.B.Wa[15]+((a.B.Wa[14]&63)<<8);a.aa!=c&&(bt(a),a.aa=c);d=d-b+1;if(a.nd!=b||a.Hc!=d)a.nd=b,a.Hc=d;a.za=e+1;at(a)}}} +function bt(a){if(0<=a.aa){if(void 0!==a.M){var b=ct<<8,c=a.M[a.aa];if(c&b){var c=c&~b,b=a.aa%a.F,d=a.aa/a.F|0;a.I&&a.va[a.I]&&(a.Ca&&dt(a,b,d,c,a.Ca),dt(a,b,d,c));a.M[a.aa]=c}}a.aa=-1}} +function et(a){var b,c=a.B;a.Pc=!1;var d=c.yd[5];if(null!=d){b=tr;var e=vr,f=c.yd[3]&31;switch(d&3){case 0:if(f){e=vr|32;switch(f&24){case 8:e=vr|96;break;case 16:e=vr|160;break;case 24:e=vr|224}c.Qc=f&7}break;case 1:e=1;break;case 2:switch(f&24){default:e=2;break;case 8:e=98;break;case 16:e=162;break;case 24:e=226}break;case 3:a.La==cq&&(e=3,c.Qc=f&7)}d&8&&(b=1280);c=c.ae[4];null!=c&&(c&4||(b|=ur,e|=wr),d&64&&(c&8&&(b|=16384,e|=4),a.Pc=!0));b|=e}return b} +function ft(a,b){var c=a.B;return c&&null!=b&&b!=c.ug?(c.Lg(b),a.ka.Lg(c.bb,c.Ob,c.gh(),!0),!0):!1} +function Ns(a,b){var c,d=a.oa,e=a.B;if(e)if(e.La==os)d=Ds;else if(e.La>=aq){var d=null,f=e.rd>>2,g=32768=e.Wa[Vr]?kt:lt:mt:g&128|| +350>f?d=m?nt:ot:480<=f&&(d=a.ga==Tl?pt:qt):d=m?7-d:rt:d-=m?2:0);c=et(a)}}else e.Xc&8&&(e.Xc&2?(d=e.Xc&16?rt:st,e.Xc&4||--d):(d=e.Xc&1?Bs:tt,e.Xc&4&&--d));else a.oa=null,null==d&&(d=a.da);if(!Gs(a,d,b))return!1;ft(a,c);return!0} +function Gs(a,b,c){if(null!=b&&(b!=a.oa||c)){a.Bd=0;a.oa=b;a.Ga=!1;b=a.B||(b==Ds?a.Y:a.K);if(b!=a.B||b.bb!=a.bb||b.Ob!=a.Ob){bt(a);if(a.bb){if(!Bc(a.ka,a.bb,a.Ob))return!1;a.B&&(a.B.rc=!1)}a.B=b;b.rc=!0;a.bb=b.bb;a.Ob=b.Ob;if(!oc(a.ka,b.bb,b.Ob,3,b===a.A?b:null))return!1}a:{a.I=0;a.F=a.Fb;a.J=a.sc;a.Ma=a.F;a.Eb=hs[Ds][2];b=0;if(c=hs[a.oa])a.F=c[0],a.J=c[1],a.Eb=c[2],b=c[3],a.I=c[4],4!=a.ga&&7!=a.ga||a.B!==a.A||a.I!=Vs||(7==(a.A.Wa[es]&31)?a.J=350>Jr(a.A,Vr)?43:50:a.I=a.La);a.Wc=a.F*a.J|0;a.Vc=a.Wc/ +a.Eb|0;a.Xa=a.Vc;a.Pb=0;void 0!==b&&(a.Xa=(a.Xa<<1)+b|0,a.Pb=a.Xa+b>>1);if(a.va.length){a.qa=a.Z/a.F|0;a.ta=a.la/a.J|0;if(a.I){b=a.va[a.I];if(!b)break a;c=a.va[a.I<<1];a.Uc&&80==a.F?c&&a.qa>=3*c.Fc>>2&&(a.I<<=1,b=c):(c&&a.qa>=c.Fc&&(a.I<<=1,b=c),a.Uc||(a.qa=b.Fc,a.ta=b.Gc));a.Ya=a.eb=0;b&&(a.Ya=a.F*b.Fc,a.eb=a.J*b.Gc)}else a.qa=a.ta=1,a.Ya=a.F,a.eb=a.J;a.Ha=a.L.createImageData(a.Ya,a.eb);a.Ba=document.createElement("canvas");a.Ba.width=a.Ya;a.Ba.height=a.eb;a.Ca=a.Ba.getContext("2d");a.vc=a.zc=0; +a.Qb=a.Z;a.Rb=a.la;b=a.Z-a.F*a.qa;c=a.la-a.J*a.ta;0>1,a.Qb-=b);0>1,a.Rb-=c);if(b||c)a.L.fillStyle=a.O.style.backgroundColor,a.L.fillRect(0,0,a.Z,a.la)}}ut(a,!0);ys(a)}return!0}function $s(a,b,c,d){b=(b+c*a.width)*d.length;a.data[b]=d[0];a.data[b+1]=d[1];a.data[b+2]=d[2];a.data[b+3]=d[3]}function vt(a){a.xa=-1;a.ma=!1;var b=a.Vc;if(void 0===a.M||a.M.length!=b)a.M=Array(b)}function ut(a,b){b||(a.Ga=!1);vt(a)} +function dt(a,b,c,d,e){var f=d&255,g=d>>8;d=g&15;var h=a.va[a.I];h.kf&&(d=h.kf[d]);var k=g>>4&15;h.kf&&(k=h.kf[k]);e?(b*=h.Fc,c*=h.Gc,e.fillStyle=h.Ce[k],e.fillRect(b,c,h.Fc,h.Gc)):(b=b*a.qa+a.vc,c=c*a.ta+a.zc,a.L.fillStyle=h.Ce[k],a.L.fillRect(b,c,a.qa,a.ta));g&wt&&(k=(f&15)*h.Fc,f=(f>>4)*h.Gc,e?e.drawImage(h.Tg[d],k,f,h.Fc,h.Gc,b,c,h.Fc,h.Gc):a.L.drawImage(h.Tg[d],k,f,h.Fc,h.Gc,b,c,a.qa,a.ta));g&ct&&(f=a.nd,g=a.Hc,e?(a.za&&a.za!==h.Gc&&(f=f*h.Gc/a.za|0,g=g*h.Gc/a.za|0),e.fillStyle=h.Ce[d],e.fillRect(b, +c+f,h.Fc,g)):(a.za&&a.za!==a.ta&&(f=f*a.ta/a.za|0,g=g*a.ta/a.za|0),a.L.fillStyle=h.Ce[d],a.L.fillRect(b,c+f,a.qa,g)))} +function ys(a,b){if(a.ea.Yb){var c=!1,d=a.B;d&&(d!==a.A?d.Xc&8&&(c=!0):d.xd&32&&(c=!0));if(c||b){if(b)vt(a);else if(void 0===a.M)return;var e=!1;!(b||++a.Bd&15)&&0<=a.Aa&&(a.Aa++,e=!0);var f=0,g=a.Wc,h=a.bb,c=h,k=c+a.Ob;a.oa>=kt&&(h=c=655360,k=c+65536);if(Vt(a,d)&8||d.Ze&&d.Ze=aq&&d.Wa[19]&&d.Wa[19]<<1!=d.Wa[1]+1&&(a.Ma=d.Wa[19]<<(a.I?1:d.Wa[20]&64?3:4),m=(a.Ma*(a.J-1)+a.F)/a.Eb|0,a.oa<=Ds&& +(m<<=1));c+m>k&&(m=k-c,0>m&&(m=0));k=c+m;if(b=!b&&a.ma){b=a.ka;for(var p=!0,v=c>>>b.A;0f)return;g=f+1}}if(a.I){if(a.va[a.I]){d=f;f=0;e=a.xa=0;h=wt<<8;b=1048575;p=a.B.Xc&32;a.La>=aq&&(p=a.B.Cc[16]&8);m=a.aa-a.B.wd;p&&(e=Hs<<8,b&=~e,a.Aa&2||(b&=~h));for(c+=d<<1;c>8|(u&255)<<8;var J=e,T=16;m>=h))>>(T-=h);$s(a.Ha,m++,p,b[ua])}m>E&&(E=m);p=I&&(I=p+1)}k+=2;d++;if(m>=a.F){m=0;p+=2;if(p>a.J)break;p==a.J&&(p=1,k=c+a.Pb)}}a.ma=!0; +va.F?a.Ma-a.F-u>>3:0;c>=8;b>v&&(v=b);m=G&&(G=m+1)}c+=I;if(b>=a.F){b=0;if(++m>a.J)break;c+=J}}u||(a.ma=!0);pa.F?a.Ma-a.F-G>>3:0;cJ&&(T=J)):(u<<=G,T-=G,a.ma=!1):(a.ma&&u===a.M[d]?(h+=T,T=0):a.M[d]=u,d++);if(T){hp&&(p=h);b=E&&(E=b+1)}if(h>=a.F){h=0;if(++b>a.J)break;c+=I}}G||(a.ma=!0);ma&&(b.xh=a,a=-a|0);a%b.sh>b.on&&(c|=1);a%b.vh>b.qn&&(c|=9);b.gi=a/b.vh|0;return c}l.Dm=function(a,b){return Yt(this,this.Y,a,b)};l.io=function(a,b,c){var d=this.Y;d.Gg=d.ec;d.ec=b&31;w(this,a,b,c,"CRTC.INDX")};l.Cm=function(a,b){return Zt(this,this.Y,a,b)};l.ho=function(a,b,c){$t(this,this.Y,a,b,c)};l.Em=function(a,b){return au(this,this.Y,b)};l.jo=function(a,b,c){a=this.Y;w(this,a.port+4,b,c,"MODE");a.Xc=b;Ns(this,!1)}; +l.Fm=function(a,b){return bu(this,this.Y,b)};l.Nk=function(a,b,c){this.A.Qf=this.A.Qf&-4|b&3;w(this,a,b,c,"FEAT")};l.bm=function(a,b){a=this.A.xd;b&&!t(this)||w(this,960,null,b,"ATC.INDX",a);return a};l.sl=function(a,b){a=this.A.Cc[this.A.xd&31];b&&!t(this)||w(this,960,null,b,"ATC."+this.A.Ug[this.A.xd&31],a);return a}; +l.Mk=function(a,b,c){var d=this.A,e=d.xd&32;if(d.Le){d.Le=!1;var f=d.xd&31;if(16<=f||!e)if(cu||d.Cc[f]!==b)c&&!t(this)||w(this,a,b,c,"ATC."+d.Ug[f]),d.Cc[f]=b,ut(this,!1)}else d.xd=b,w(this,a,b,c,"ATC.INDX"),d.Le=!0,b&32&&!e&&Fs(this,!0)&&ys(this,!0),a=(d.Wa[12]<<8)+d.Wa[13]|0,d.wd!=a&&(d.wd=a,ut(this)),d.Ze=0}; +l.Pm=function(a,b){a=0;if(this.La==aq)a=3-((this.A.bf&12)>>2),a=(this.xb&1<>this.A.xc&63;b&&!t(this)||w(this,969,null,b,"DAC.DATA["+r(this.A.dd)+"]["+r(this.A.xc)+"]",a);this.A.xc+=6;12Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=Ma().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height= +(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Ua("aspect"));f&&.3<=f&&3.33>=f&&(Za("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ta("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new Q(d,e,g,f,c);yb(d,c)}}); +function du(a){mb.call(this,"ParallelPort",a,4194304);this.G=a.adapter;switch(this.G){case 1:this.D=956;this.B=7;break;case 2:this.D=888;this.B=7;break;case 3:this.D=632;this.B=5;break;default:gb("Unrecognized parallel adapter #"+this.G);return}this.A=this.C=null;a=a.binding;"console"==a?this.C="":wb(this,a,eu)}ba(du,mb);l=du.prototype;l.Cb=function(a,b,c){switch(b){case eu:return this.na[b]=this.A=c,!0}return!1}; +l.uc=function(a,b,c,d){this.ka=b;this.H=c;this.ba=d;this.W=Wb(a,"ChipSet");Nc(b,this,fu,this.D);Rc(b,this,gu,this.D);Ib(this)};l.Xb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.Wb=function(a){return a?this.save():!0};l.reset=function(){hu(this)};l.save=function(){var a=new Wf(this),b=0,c=[];c[b++]=this.F;c[b++]=this.Mb;c[b]=this.nf;a.set(0,c);return a.data()};l.restore=function(a){return hu(this,a[0])}; +function hu(a,b){var c=0;b||(b=[0,0,0]);a.F=b[c++];a.Mb=b[c++];a.nf=b[c];return!0}l.qm=function(a,b){var c=this.F;w(this,a,null,b,"DATA",c);return c};l.Om=function(a,b){var c=this.Mb;w(this,a,null,b,"STAT",c);return c};l.mm=function(a,b){var c=this.nf;w(this,a,null,b,"CTRL",c);return c}; +l.Tn=function(a,b,c){w(this,a,b,c,"DATA");this.F=b;this.Mb|=iu;a=!1;Lb(this,"transmitByte("+r(b)+")");this.A&&(8==b?this.A.value=this.A.value.slice(0,-1):(this.A.value+=String.fromCharCode(b),this.A.scrollTop=this.A.scrollHeight),a=!0);if(null!=this.C){if(10==b||1024<=this.C.length)this.P(this.C),this.C="";10!=b&&(this.C+=String.fromCharCode(b));a=!0}a&&(this.Mb&=~iu);ju(this)};l.On=function(a,b,c){w(this,a,b,c,"CTRL");this.nf=b;ju(this)}; +function ju(a){a.W&&a.B&&(a.nf&ku&&!(a.Mb&iu)?gh(a.W,a.B):eh(a.W,a.B))}var eu="buffer",iu=64,ku=16,fu={0:du.prototype.qm,1:du.prototype.Om,2:du.prototype.mm},gu={0:du.prototype.Tn,2:du.prototype.On};$a(function(){for(var a=zb(document,"pcx86","parallel"),b=0;b=b)a.preventDefault&&a.preventDefault(),64");if(2==c.length){var d=Ba(c[0]);if(d!=this.ce)return;c=Ba(c[1]);if(this.D=tb(c)){var e=this.D.exports;if(e){var f=e.connect;f&&f.call(this.D,this.O);if(this.aa=e.receiveData){this.O=a;this.Y=e.receiveStatus;this.status("Connected "+this.ye+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}}; +l.Xb=function(a,b){if(!b)if(this.Aj(this.O),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.Wb=function(a){return a?this.save():!0};l.reset=function(){ru(this)};l.save=function(){var a=new Wf(this),b=0,c=[];c[b++]=this.ga;c[b++]=this.la;c[b++]=this.L;c[b++]=this.N;c[b++]=this.G;c[b++]=this.B;c[b++]=this.Z;c[b++]=this.C;c[b++]=this.A;c[b]=this.J;a.set(0,c);return a.data()};l.restore=function(a){return ru(this,a[0])}; +function ru(a,b){var c=0;b||(b=[0,0,su,0,tu,0,0,uu|vu,a.qa,[]]);a.ga=b[c++];a.la=b[c++];a.L=b[c++];a.N=b[c++];a.G=b[c++];a.B=b[c++];a.Z=b[c++];a.C=b[c++];a.A=b[c++];a.J=b[c];return!0}l.Pf=function(a){if("number"==typeof a)this.J.push(a);else if("string"==typeof a)for(var b=0;b>8:this.N;w(this,a,null,b,this.B&Bu?"DLM":"IER",c);return c};l.ym=function(a,b){var c=this.G;w(this,a,null,b,"IIR",c);return c};l.zm=function(a,b){var c=this.B;w(this,a,null,b,"LCR",c);return c};l.Bm=function(a,b){var c=this.Z;w(this,a,null,b,"MCR",c);return c}; +l.Am=function(a,b){var c=this.C;w(this,a,null,b,"LSR",c);return c};l.Gm=function(a,b){var c=this.A;this.A&=~(xu|yu);w(this,a,null,b,"MSR",c);return c}; +l.ro=function(a,b,c){w(this,a,b,c,this.B&Bu?"DLL":"THR");if(this.B&Bu)this.L=this.L&-256|b;else{this.la=b;this.C&=~(uu|vu);a=!1;Lb(this,"transmitByte("+r(b)+")");this.aa&&this.aa.call(this.D,b)&&(a=!0);if(this.F){if(13==b)this.K=0;else if(8==b)this.F.value=this.F.value.slice(0,-1),0":String.fromCharCode(b);a=d.length;32>b&&1==a&&(a=0);9==b&&(b=this.oa||8,a=b-this.K%b,this.oa&&(d=Aa("",a)));this.ma&&!this.K&&a&&(d=String.fromCharCode(this.ma)+ +d);this.F.value+=d;this.F.scrollTop=this.F.scrollHeight;this.K+=a}a=!0}else if(null!=this.I){if(10==b||1024<=this.I.length)this.P(this.I),this.I="";10!=b&&(this.I+=String.fromCharCode(b));a=!0}a&&(this.C=this.C|uu|vu)}};l.co=function(a,b,c){w(this,a,b,c,this.B&Bu?"DLM":"IER");this.B&Bu?this.L=this.L&255|b<<8:this.N=b};l.eo=function(a,b,c){w(this,a,b,c,"LCR");this.B=b}; +l.fo=function(a,b,c){var d=b^this.Z;w(this,a,b,c,"MCR");this.Z=b;d&(Cu|Du)&&this.Y&&(a=0,this.O?(a|=b&Du?32:0,a|=b&Cu?320:0):(a|=b&Du?16:0,a|=b&Cu?1048576:0),this.Y.call(this.D,a))};function zu(a){var b=-1;a.C&Au&&a.N&Eu?b=Fu:a.A&(xu|yu)&&a.N&Gu&&(b=Hu);0<=b?(a.G&=~(tu|Iu),a.G|=b,a.W&&a.M&&gh(a.W,a.M,100)):(a.G|=tu,a.W&&a.M&&eh(a.W,a.M))} +var ou="buffer",su=384,Eu=1,Gu=8,tu=1,Fu=4,Hu=0,Iu=6,Bu=128,Cu=1,Du=2,Au=1,uu=32,vu=64,xu=1,yu=2,mu=16,nu=32,pu={0:lu.prototype.Lm,1:lu.prototype.xm,2:lu.prototype.ym,3:lu.prototype.zm,4:lu.prototype.Bm,5:lu.prototype.Am,6:lu.prototype.Gm},qu={0:lu.prototype.ro,1:lu.prototype.co,3:lu.prototype.eo,4:lu.prototype.fo};$a(function(){for(var a=zb(document,"pcx86","serial"),b=0;ba.F||0>a.G)a.F=b.clientX,a.G=b.clientY;a.M?(c=b.movementX||b.mozMovementX||b.webkitMovementX||0,d=b.movementY||b.mozMovementY||b.webkitMovementY||0):(c=b.clientX-a.F,d=b.clientY-a.G);a.F=b.clientX;a.G=b.clientY;a.uf(c,d,a.F,a.G)}} +l.Wd=function(a,b){if(this.rc&&this.H&&this.H.ea.vb){var c="mouse button"+a+" "+(b?"dn":"up");switch(a){case As:if(this.K!=b){this.K=b;Pu(this,c);return}break;case Qu:if(this.L!=b){this.L=b;Pu(this,c);return}}Lb(this,c+": ignored")}};l.uf=function(a,b,c,d){this.rc&&this.H&&this.H.ea.vb&&(a||b)&&(this.I=a,this.J=b,Pu(this,null,c,d))}; +function Pu(a,b,c,d){var e=64|(a.K?32:0)|(a.L?16:0)|(a.J&192)>>4|(a.I&192)>>6,f=a.I&63,g=a.J&63;t(a,8388608)&&Lb(a,(b?b+": ":"")+(void 0!==d?"mouse ("+c+","+d+"): ":"")+"serial packet ["+r(e)+","+r(f)+","+r(g)+"]",0,!0);a.D.Pf([e,f,g]);a.I=a.J=0} +l.ql=function(a){var b=1048592==(a&1048592);if(b){if(!this.rc){var c=!1;this.A&16||(this.reset(),Lb(this,"serial mouse reset"),c=!0);this.A&1048576||(Lb(this,"serial mouse ID requested"),c=!0);c&&(this.D.Pf([Ru,Ru]),Lb(this,"serial mouse ID sent"));Ku(this);this.rc=b}}else this.rc&&(Lb(this,"serial mouse inactive"),Lu(this),this.rc=b);this.A=a};var Ru=77,As=0,Qu=2;$a(function(){for(var a=zb(document,"pcx86","mouse"),b=0;b>2;var e=d=0,a=new DataView(a,0,c);g.A=Array(g.qb);for(c=0;cb.indexOf("/api/v1/dump")&&(a=va(b),"json"==a||"gz"==a?f=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(f=Zu(this,b),this.pg=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?(c="disk",d="&mbhd=0"):wa(b, +"/")&&(c="dir"),f=La()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.Pe?"":d)+"&format=json"));return!!Ka(f,null,!0,function(a,b,c){$u(g,a,b,c)})}; +function $u(a,b,c,d){var e=null;a.Se=!1;var f=!(!(0>d&&a.pa)||a.pa.ea.Yb);if(a.pg)d?a.Ea('Unable to connect to disk "'+a.G+'" (error '+d+": "+c+")",f):(a.D=!0,av(a),e=a);else if(d)a.Ea('Unable to load disk "'+a.kd+'" (error '+d+": "+b+")",f);else{ob(a.controller.ye,b,c);try{if(0g&&0c.indexOf("0x")&& +'["'!=c.substr(0,2)?JSON.parse(c.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+c+")");if(h.length)if(1==h.length)gb(h[0]);else{a.qb=h.length;a.kb=h[0].length;a.$a=h[0][0].length;var k=h[0][0][0];a.Na=k&&k.length||512;for(d=c=0;d>2,p=k.pattern;void 0===p&&(p=k.pattern=0);var v=k.data;if(void 0===v){var u=k.bytes;if(void 0!==u&&u.length){for(var E=m<<2,G=u.length;G< +E;G++)u[G]=p;bv(k,u,0)}else k.data=v=[],u&&(k.pattern=p|p<<8|p<<16|p<<24);delete k.bytes}Yu(k,d,f);for(E=0;Eb;b++){if(128==dv(a,e,c+0,1)){d.Lf=dv(a,e,c+8,4);(e=cv(a,d.Lf))&&(f=!0);break}c+=16}if(!f)return}d.tf||(d.tf=dv(a,e,19,2)||dv(a,e,32,4),d.sf=dv(a,e,14,2),d.mh=d.sf+dv(a,e,22,2)*dv(a,e,16,1),d.wh=dv(a,e,17,2),d.wf=dv(a,e,13,1));d.kh=d.mh+((32*d.wh+(d.Na-1))/d.Na|0);d.nn=(d.tf-d.kh)/d.wf|0;d.wg=4084>=d.nn?12:16;d.Ol=12==d.wg?4086:65526;b=[];for(e=d.mh;e>=8;f+=2;if(k)for(;m--;)rv(d,f,1),254>=k?(p=k,v=rv(d,f+1),f+=3):(p=rv(d,f+3,1),v=rv(d,f+4),f+=6),d.od[p]&&(d.od[p].fe[h]=[v]),d.A[h]=[p,v],h++;else h+=m}(g=gv(e,uv,c))&&vv(e,g+c);g=gv(e,wv,c);h=gv(e,xv,c);g&&h&&vv(e,g,g+h)}}}} +function fv(a,b,c,d,e){var f,g=a.B.length,h=b.Na/32|0;b.gq=d+"\\";for(var k=0;kG)break;for(var I=u.kh+(G-2)*u.wf,J=0;J>3,1),d?e=16==b.wg?e<<8:c&7?e<<4:(e&15)<<8:c&7&&(e>>=4));return e} +function cv(a,b){var c=a.kb*a.$a,d=b/c|0;return dg)break;e|=g<=f)break;e+=String.fromCharCode(f)}return e}function Yu(a,b,c,d,e,f){a||(a={sector:d,length:e,data:[],pattern:f});a.Pl=b;a.Ql=c;a.hd=a.Lc=0;a.Oa=!1;return a} +function Zu(a,b){b="action=open&volume="+b+("&mode="+a.mode);b+="&chs="+a.qb+":"+a.kb+":"+a.$a+":"+a.Na;b+="&machine="+Wu(a.controller);b+="&user="+Xu(a.controller);return La()+"/api/v1/disk?"+b} +function Av(a,b,c,d,e,f,g){if(a.D){var h;h="action=read&volume="+a.G;h+="&chs="+a.qb+":"+a.kb+":"+a.$a+":"+a.Na;h=h+("&addr="+b+":"+c+":"+d+":"+e)+("&machine="+Wu(a.controller));h+="&user="+Xu(a.controller);Ka(La()+"/api/v1/disk?"+h,null,f,function(h,m,p){h=[b,c,d,e,f,g];var k=!1,u=h[0],E=h[1],G=h[2],I=h[3];if(!p){m=JSON.parse(m);for(k=0;I--;){var J=a.seek(u,E,G,!0);if(!J)break;bv(J,m,k);k+=J.length;G++}k=h[4]}(h=h[5])&&h(p,k)})}else g&&g(-1,!1)} +function Bv(a,b,c,d,e,f,g){if(a.D){var h={};a.M=!0;h.action="write";h.volume=a.G;h.chs=a.qb+":"+a.kb+":"+a.$a+":"+a.Na;h.addr=b+":"+c+":"+d+":"+e;h.machine=Wu(a.controller);h.user=Xu(a.controller);h.data=JSON.stringify(f);Ka(La()+"/api/v1/disk",h,g,function(f,h,p){var k=[b,c,d,e,g];f=k[0];h=k[1];var m=k[2],E=k[3],k=k[4];a.M=!1;if(0<=f&&fb&&(b=0);2E3>2,e=Array(d),f=0;f>2,e=a.data;a=a.pattern;for(var f=0;f>8&255;c[d++]=g>>16&255;c[d++]=g>>24&255}return c}l.read=function(a,b){var c=-1;if(a&&b>2,c=(d>((b&3)<<3)&255;return c}; +l.write=function(a,b,c){if(this.Se)return!1;if(b>2;b=(b&3)<<3;for(var g=d.length;g<=f;g++)d[g]=e;a.Lc?f=a.hd+a.Lc&&(a.Lc+=f-(a.hd+a.Lc)+1):(a.hd=f,a.Lc=1);d[f]=d[f]&~(255<=this.A.length||k>=this.A[h].length||m>=this.A[h][k].length){c="sector (CHS="+h+":"+k+":"+m+") out of range ("+ +b+" changes applied)";b=-1;break}if(this.Se){c="unable to modify write-protected disk";b=-1;break}e=g[f++];f=g[f++];g=e+f.length;if(h=this.A[h][k][m]){for(k=h.data.length;kb?-2!=b&&this.Ea("Unable to restore disk '"+this.kd+": "+c):av(this);return b}; +l.toJSON=function(){var a;a=0;for(var b;b=cv(this,a++);)Gv(b);a=JSON.stringify(this.A,function(a,b){if("file"!=a)return b});a=a.replace(/,"length":512/gm,"").replace(/,"pattern":0/gm,"");a=a.replace(/"(sector|length|data|pattern)":/gm,"$1:");a=a.replace(/,"[^"]*":([0-9]+|true|false)/gm,"");a=a.replace(/(sector|length|data|pattern):/gm,'"$1":');return a=a.replace(/([\]}]),/gm,"$1,\n")}; +function Gv(a){var b=a.data,c=b.length;if(c<<2==a.length){for(var d=c-1,e=b[d],f=0;d--&&b[d]===e;)f++;f++&&(b.length=c-f,a.pattern=e)}}var Tu=0;function zv(a,b,c,d,e,f){this.sa=a;this.$b=c;this.Xg=d;this.bj=e;this.ge=f}function rv(a,b,c){var d;c=c||2;var e=b&511,f=cv(a.sa,a.ge[b>>9]);if(f){if(e+c<=f.length)return dv(a.sa,f,e,c);for(e=d=0;c--;)d|=rv(a,b++,1)<=e.hi&&a<=e.Jk){d=a-=e.hi;var f,g;for(g in e.fe){var h=e.fe[g],k=a-h[0];if(!k){c=this.Sf+"!"+h[1];break}b&&0'+b+"");a.innerHTML=b}};return!0;case "descDisk":case "listDrives":return this.na[b]=c,c.onchange=function(){var a=oa(c.value,10);null!=a&&Jv(d,a)},!0;case "loadDisk":return this.na[b]=c,c.onclick=function(){var a=d.na.listDisks;a&&Kv(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDisk":if(!this.M){c.parentNode.removeChild(c);break}this.na[b]=c;c.onclick=function(){var a=d.na.listDrives;a&&a.options&&d.A&&((a=d.A[oa(a.value, +10)||0])?(a=a.sa)?(a=Wa(Fv(a),"octet-stream",!0,a.Kg.replace(".json",".img")),gb(a)):d.Ea("No diskette loaded in drive."):d.Ea("No diskette drive selected."))};return!0;case "mountDisk":if(this.M)return this.na[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;Kv(d,ta(b,!0),b,a)}return!1},!0;c.parentNode.removeChild(c)}return!1}; +l.uc=function(a,b,c,d){this.ka=b;this.H=c;this.ba=d;this.pa=a;this.W=Wb(a,"ChipSet");Iv(yd(this.pa,"autoMount"),this.L);Lv(this);Nc(b,this,Mv);Rc(b,this,Nv);Ov(this,"None","",!0);this.M&&Ov(this,"Local Disk","?");Ov(this,"Remote Disk","??");Pv(this)||Ib(this)};function Iv(a,b){if(a){if("string"==typeof a)try{a=eval("("+a+")")}catch(d){gb("FDC auto-mount error: "+d.message+" ("+a+")"),a={}}}else a={};for(var c in a)b&&(b[c]=a[c]);return a} +l.Xb=function(a,b){if(!b){if(!a){if(this.reset(),this.pa.O){this.C=[];for(a=0;ag.sa.restore(E)&&(h=!1);h&&g.sa&&void 0!==g.Sa&&(g.cb=g.sa.seek(g.Gb,g.Za,g.mb));h||(e=!1)}a.G=b[c++]||0;a.Zb=b[c]||Xv;return e} +function Rv(a){var b=0,c=[];c[b++]=a.Ua;c[b++]=0;c[b++]=a.fa;c[b++]=a.F;c[b++]=a.D;c[b++]=a.B;c[b++]=a.I;for(var d=b++,e=0,f=[],g=0;gVv(a,e,b,c,!1,d)&&window.confirm("Click OK to reload the original disk.\n(WARNING: All disk changes will be discarded)");){var f=a,g=c,h;for(h=0;ha.qb||f[1]>a.kb)&&(this.Ea('Diskette "'+c+'" too large for drive '+String.fromCharCode(65+a.Ua)),b=null);b?(a.sa=b,a.$k=c,a.ue=d,Wv(this,c,d,b),f=b.info(),this.G|=$v,this.Ea('Mounted diskette "'+c+'" in drive '+String.fromCharCode(65+a.Ua),a.le||e),a.vg=f[0],a.Bf=f[1],a.Cf=f[2],this.pa&&this.pa.md()):a.Oe=!1;a.le&&(a.le=!1,--this.K||Ib(this));Jv(this,a.Ua)}; +function Ov(a,b,c,d){if((a=a.na.listDisks)&&a.options){for(var e=0;e=this.B&&(this.fa&=~(cw|dw),this.D=this.B=0);return c}; +l.Vn=function(a,b,c){t(this)&&w(this,a,b,c,"DATA["+this.B+"]");this.B=fw[a].Jd){b=!1;this.D=0;a=gw(this);var d,e,f,g,h=a&ew;switch(h){case hw:gw(this);gw(this);iw(this);break;case jw:c=gw(this);this.Ua=c&3;d=this.A[this.Ua];iw(this);kw(this,(d.rb&lw)>>>24);break;case mw:case nw:c=gw(this);b=c>>2&1;this.Ua=c&3;d=this.A[this.Ua];d.Za=b;c=d.Gb=gw(this);e=gw(this);f=d.mb=gw(this);g=gw(this);d.ub=128<>2&1;this.Ua= +c&3;d=this.A[this.Ua];c=d.Gb;e=d.Za=b;f=d.mb=1;g=0;d.rb=Zv;d.sa&&(d.cb=d.sa.seek(d.Gb,d.Za,d.mb))?g=d.cb.length>>8:d.rb=ow|pw;rw(this,d,a,b,c,e,f,g);b=!0;break;case yw:c=gw(this);b=c>>2&1;this.Ua=c&3;d=this.A[this.Ua];c=d.Gb;e=d.Za=b;f=1;g=gw(this);d.ub=128<>2&1,c=gw(this),d.Gb+=c-d.Td,0>d.Gb&&(d.Gb=0),d.Gb>=d.qb&&(d.Gb=d.qb-1),d.Td=c,d.rb=tw,d.Gb||(d.rb|=uw),iw(this),b=!0}0>>8);kw(a,(b.rb&Bw)>>>16);var k=0;if(e!=b.Gb||f!=b.Za)k=g=1;c&Cw&&(f^=k,d||(k=0));kw(a,e+k);kw(a,f);kw(a,g);kw(a,h)}function gw(a){var b=a.F[a.D];a.D++;return b}function iw(a){a.D=a.B=0}function kw(a,b){a.F[a.B++]=b}l.kl=function(a,b,c){void 0===b||0>b?this.te(a,c):c(-1,!1)};l.ll=function(a,b){return void 0!==b&&0<=b?Dw(a,b):-1}; +l.Dl=function(a,b){if(void 0!==b&&0<=b)a:if(a.rb)a=-1;else{a.$c[a.He++]=b;if(a.He==a.$c.length){a.Gb=a.$c[0];a.Za=a.$c[1];a.mb=a.$c[2];a.ub=128<Dw(a,a.Xi)){a=-1;break a}a.kg++}a.kg>=a.Ud&&(b=-1);a=b}else a=-1;return a};l.te=function(a,b){var c=-1,d=null,e=0;if(!a.rb&&a.sa){do{if(a.cb&&(e=a.Sa,0<=(c=a.sa.read(a.cb,a.Sa++)))){d=a.cb;break}a.cb=a.sa.seek(a.Gb,a.Za,a.mb);if(!a.cb){a.rb=Ew|pw;break}a.Sa=0;Fw(a)}while(1)}b(c,!1,d,e)}; +function Dw(a,b){if(a.rb||!a.sa)return-1;do{if(a.cb&&a.sa.write(a.cb,a.Sa++,b))break;a.cb=a.sa.seek(a.Gb,a.Za,a.mb);if(!a.cb){a.rb=Gw|pw;b=-1;break}a.Sa=0;Fw(a)}while(1);return b}function Fw(a){a.mb++;a.mb>=a.Cf+1&&(a.mb=1,a.Za++,a.Za>=a.Bf&&(a.Za=0,a.Gb++))}var Uv="Floppy Drive",aw=4,bw=8,dw=16,cw=64,Sv=128,hw=3,jw=4,mw=5,nw=6,sw=7,vw=8,xw=10,yw=13,zw=15,ew=31,Cw=128,Zv=0,ow=8,tw=32,pw=64,Tv=192,ww=255,qw=512,Ew=1024,Gw=8192,Aw=65280,Bw=16711680,uw=268435456,lw=-16777216,$v=128,Xv=0;aa={}; +var fw={3:{Jd:3,Vd:0,name:aa.Zp},4:{Jd:2,Vd:1,name:aa.Xp},5:{Jd:9,Vd:7,name:aa.cq},6:{Jd:9,Vd:7,name:aa.Tp},7:{Jd:2,Vd:0,name:aa.Vp},8:{Jd:1,Vd:2,name:aa.Yp},10:{Jd:2,Vd:7,name:aa.Up},13:{Jd:6,Vd:7,name:aa.Qp},15:{Jd:3,Vd:0,name:aa.Wp}},Mv={1009:Hv.prototype.sm,1012:Hv.prototype.um,1013:Hv.prototype.rm,1015:Hv.prototype.tm},Nv={1010:Hv.prototype.Wn,1013:Hv.prototype.Vn,1015:Hv.prototype.Un}; +$a(function(){for(var a=zb(document,"pcx86","fdc"),b=0;bk.sa.restore(g)&&(E=!1),E&&void 0!==k.Sa&&(k.cb=k.sa.seek(k.Pd,k.Za,k.mb+k.jg)));E||(e=!1);null!=a.O&&1>=d&&(a.O|=(f.type&3)<<(1-d<< +1))}0<=a.Ua&&(a.C=a.A[a.Ua]);return e} +function Pw(a){var b=0,c=[];a.M?(c[b++]=a.I,c[b++]=a.va,c[b++]=a.J,c[b++]=a.ga,c[b++]=a.da,c[b++]=a.aa,c[b++]=a.Y,c[b++]=a.fa,c[b++]=a.ha,c[b++]=[a.L,a.Ua]):(c[b++]=a.O,c[b++]=a.fa,c[b++]=a.F,c[b++]=a.D,c[b++]=a.B,c[b++]=a.ta,c[b++]=a.qa,c[b++]=a.oa,c[b++]=a.N);for(var d=0,e=[],f=0;f=this.B&&(this.D=this.B=0,this.fa&=~(Yw|Zw|$w));return c};l.to=function(a,b,c){w(this,a,b,c,"DATA["+this.B+"]");this.B=a&&(this.fa|=Yw,this.fa&=~bx,cx(this))};l.Vm=function(a,b){var c=this.fa;w(this,a,null,b,"STATUS",c);this.D=a.C.Na?(a.fa=ex,a.te(a.C,function(b){0<=b?(fx(a),a.W&&a.W.ca==wl&&(a.fa=0),a.fa=a.fa|Qw|gx|hx):(a.fa=ix,a.I=jx)},!1)):a.fa=Qw|gx));return d}l.ol=function(a,b){return dx(this,a,b)|dx(this,a,b)<<8}; +function kx(a,b,c,d){if(a.C&&a.C.ub>=a.C.Na)if(0>lx(a.C,c))a.fa=ix,a.I=jx;else if(1==a.C.Sa||a.C.Sa==a.C.Na)t(a,1048832)&&w(a,b,c,d,"DATA["+a.C.Sa+"]"),1=a.C.Na&&(a.fa|=hx))}l.Cn=function(a,b,c){kx(this,a,b&255,c);kx(this,a,b>>8&255,c)};l.am=function(a,b){var c=this.I;w(this,a,null,b,"ERROR",c);return c};l.Hn=function(a,b,c){w(this,a,b,c,"WPREC");this.va=b};l.cm=function(a,b){var c=this.J;w(this,a,null,b,"SECCNT",c);return c}; +l.Fn=function(a,b,c){w(this,a,b,c,"SECCNT");this.J=b};l.dm=function(a,b){var c=this.ga;w(this,a,null,b,"SECNUM",c);return c};l.Gn=function(a,b,c){w(this,a,b,c,"SECNUM");this.ga=b};l.Zl=function(a,b){var c=this.da;w(this,a,null,b,"CYLLO",c);return c};l.Bn=function(a,b,c){w(this,a,b,c,"CYLLO");this.da=b};l.Yl=function(a,b){var c=this.aa;w(this,a,null,b,"CYLHI",c);return c};l.An=function(a,b,c){w(this,a,b,c,"CYLHI");this.aa=b};l.$l=function(a,b){var c=this.Y;w(this,a,null,b,"DRVHD",c);return c}; +l.Dn=function(a,b,c){w(this,a,b,c,"DRVHD");this.Y=b;this.fa=this.A[this.Y&mx?1:0]?this.fa|Qw|gx:this.fa&~Qw};l.em=function(a,b){var c=this.fa;w(this,a,null,b,"STATUS",c);this.fa&Qw&&(this.fa&=~ex);return c};l.zn=function(a,b,c){w(this,a,b,c,"COMMAND");this.ha=b;this.W&&eh(this.W,14);nx(this)};l.En=function(a,b,c){w(this,a,b,c,"FDR");this.L&ox&&!(b&ox)&&(this.I=px);this.L=b}; +function nx(a){var b=!1,c=a.ha,d=a.Y&mx?1:0,e=a.Y&qx,f=a.da|(a.aa&rx)<<8,g=a.ga,h=a.J||256;a.Ua=-1;a.C=null;a.I=sx;a.fa=Qw|gx;var k=a.A[d];k?(k.Pd=f,k.Za=e,k.mb=g,k.ub=h*k.Na,c=c>=tx?c:c&ux,k.cb=null,k.Sa=0,k.errorCode=0,a.Ua=d,a.C=k):c=-1;switch(c&ux){case vx:b=!0;break;case wx:a.fa=ex;a.te(k,function(b){0<=b&&a.W?(fx(a),a.fa=Qw|gx|hx):(a.fa=ix,a.I=jx)},!1);break;case xx:a.fa=hx;break;case yx:b=!0;break;case zx:b=!0;break;case tx:a.I=px;b=!0;break;case Ax:k.kb=e+1,k.$a=h,b=!0}b&&fx(a)} +function fx(a){!a.W||a.L&Bx||gh(a.W,14,120)} +function cx(a){a.D=0;var b=Cx(a),c=Cx(a),d=c&32,e=d>>5,f=c&31,g=Cx(a),h=Cx(a),k=g<<2&768|h,m=g&63,p=Cx(a),v=Cx(a),u=a.A[e];u&&(u.Pd=k,u.Za=f,u.mb=m,u.ub=p*u.Na);switch(b){case Dx:Ex(a,u?u.errorCode:Fx);Gx(a,c);Gx(a,g);Gx(a,h);Gx(a,Hx|d);b=-1;break;case ax:for(c=0;0<=(b=Cx(a));)u&&cb?this.te(a,c):c(-1,!1)};l.nl=function(a,b){return void 0!==b&&0<=b?lx(a,b):-1}; +l.El=function(a,b){void 0!==b&&0<=b?(a.Salx(a,a.Xi)){a=-1;break a}a.kg++}a.kg>=a.Ud&&(b=-1);a=b}else a=-1;return a}; +function Px(a,b,c){b.errorCode=Fx;if(b.sa&&(b.cb=null,a.W)){b.errorCode=Sw;In(a.W,3,a,"dmaRead",b);zn(a.W,3,function(a){a||b.errorCode!=Sw||(b.errorCode=Fx);c(b.errorCode?Ix:Hx)});return}c(b.errorCode?Ix:Hx)}function Rx(a,b,c){b.errorCode=Fx;if(b.sa&&(b.cb=null,a.W)){b.errorCode=Sw;In(a.W,3,a,"dmaWrite",b);zn(a.W,3,function(a){a||(b.errorCode==Sw&&(b.errorCode=Fx),b.errorCode==Ux&&(b.errorCode=Sw));c(b.errorCode?Ix:Hx)});return}c(b.errorCode?Ix:Hx)} +function Tx(a,b,c){b.errorCode=Fx;b.Fe&&b.Fe.length==b.ub||(b.Fe=Array(b.ub));b.Sa=0;a.W?(b.errorCode=Sw,In(a.W,3,a,"dmaWriteBuffer",b),zn(a.W,3,function(a){a||b.errorCode!=Sw||(b.errorCode=Fx);c(b.errorCode?Ix:Hx)})):c(b.errorCode?Ix:Hx)} +l.te=function(a,b,c){var d=-1,e=null,f=0;if(a.errorCode)return b&&b(d,!1,e,f),d;var g=!1!==c?1:0;if(a.cb&&(f=a.Sa,d=a.sa.read(a.cb,a.Sa),a.Sa+=g,0<=d))return e=a.cb,b&&b(d,!1,e,f),d;if(b){if(a.sa)return a.sa.seek(a.Pd,a.Za,a.mb+a.jg,!1,function(c,k){(a.cb=c)?(e=c,f=a.Sa=0,Vx(a),d=a.sa.read(a.cb,a.Sa),a.Sa+=g):a.errorCode=Ux;b(d,k,e,f)}),d;a.errorCode=Ux;b(d,!1,e,f)}return d}; +function lx(a,b){if(a.errorCode)return-1;do{if(a.cb&&a.sa.write(a.cb,a.Sa++,b))break;a.sa&&a.sa.seek(a.Pd,a.Za,a.mb+a.jg,!0,function(b){a.cb=b});if(!a.cb){a.errorCode=Ux;b=-1;break}a.Sa=0;Vx(a)}while(1);return b}function Vx(a){a.mb++;var b=1-a.jg;a.mb>=a.$a+b&&(a.mb=b,a.Za++,a.Za>=a.kb&&(a.Za=0,a.Pd++))}l.Wm=function(){var a=this.H.L&255;!(this.H.D>>8)&&128>8||!this.W)||(a=!(this.W.hc[0].pd&64));return a?!0:!1}; +var Tw="Hard Drive",Ww=["XTC","ATC","COMPAQ"],Uw=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[940,8],5:[940,6],6:[615,4],7:[462,8],8:[733,5],9:[900,15],10:[820,3],11:[855,5],12:[855,7],13:[306,8],14:[733,7],16:[612,4],17:[977,5],18:[977,7],19:[1024,7],20:[733,5],21:[733,7],22:[733,5],23:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[1023,8],5:[940,6],6:[697,5],7:[462,8],8:[925,5],9:[900,15],10:[980,5],11:[925,7],12:[925,9],13:[612,8],14:[980,4],16:[612,4],17:[980,5],18:[966, +6],19:[1023,8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}],Mw=496,px=1,sx=0,jx=16,rx=3,qx=15,mx=16,ix=1,hx=8,gx=16,Qw=64,ex=128,vx=16,wx=32,xx=48,yx=64,zx= +112,tx=144,Ax=145,ux=240,Bx=2,ox=4,Hx=0,Ix=2,Lx=0,Mx=1,Dx=3,Nx=5,Ox=8,Qx=10,ax=12,Sx=15,Jx=224,Kx=228,Sw=0,Fx=4,Ux=20,Rw=0,bx=1,Yw=2,Zw=4,$w=8,Xw=32,Jw={800:Hw.prototype.Um,801:Hw.prototype.Vm,802:Hw.prototype.Tm},Iw={496:Hw.prototype.ol,497:Hw.prototype.am,498:Hw.prototype.cm,499:Hw.prototype.dm,500:Hw.prototype.Zl,501:Hw.prototype.Yl,502:Hw.prototype.$l,503:Hw.prototype.em},Lw={800:Hw.prototype.to,801:Hw.prototype.wo,802:Hw.prototype.vo,803:Hw.prototype.uo,807:Hw.prototype.ii,811:Hw.prototype.ii, +815:Hw.prototype.ii},Kw={496:Hw.prototype.Cn,497:Hw.prototype.Hn,498:Hw.prototype.Fn,499:Hw.prototype.Gn,500:Hw.prototype.Bn,501:Hw.prototype.An,502:Hw.prototype.Dn,503:Hw.prototype.zn,1014:Hw.prototype.En};$a(function(){for(var a=zb(document,"pcx86","hdc"),b=0;bthis.A&&this.B.length&&(this.A=0);if(0>this.A||a!=this.B[this.A])this.B.splice(0,0,a),this.A=0;this.A--}else this.ga?a="end":a=this.B[this.A+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Ba(a.substring(d,f))),d=f+1}}return b}; +function Xx(a,b,c){var d=a;b=b||32;if(c)if(32==b)d=a>>>0;else if(32>b)d=a&(1<a||a>=b)d=a%b,0>d&&(d+=b)}else 32>=b?d=a<<32-b>>32-b:(b=Math.pow(2,b-1),a>=b?(d=a%b,(a/b|0)&1&&(d-=b)):a<-b&&(d=a%b,((-a-1)/b|0)&1?d&&(d+=b):d||(d-=b)));a!=d&&(a=d);return a} +function Yx(a,b,c){for(c=void 0===c?-1:c;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e,f=a.pop();e=a.pop();switch(d){case "*":e*=f;break;case "/":if(!f)return!1;e=Math.trunc(e/f);break;case "^/":if(!f)return!1;e%=f;break;case "+":e+=f;break;case "-":e-=f;break;case "<<":e<<=f;break;case ">>":e>>=f;break;case ">>>":e>>>=f;break;case "<":e=e":e=e>f?1:0;break;case ">=":e=e>=f?1:0;break;case "==":e=e==f?1:0;break;case "!=":e=e!=f?1:0;break;case "&":e&= +f;break;case "!":case "|":e|=f;break;case "^!":e|=f;break;case "&&":e=e&&f?1:0;break;case "||":e=e||f?1:0;break;case ",,":e=Xx(e,18,!0)*Math.pow(2,18)+Xx(f,18,!0);break;case "_":case "^_":"^_"==d&&(f=35-(f&255));f&&(e=Xx(e,0,!0),e=0=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*|,,| )/);d=Zx(a,b,0,b.length,a.D,c);void 0!==d&&e&&gy(a,null,d)}return d} +function hy(a,b){var c,d=a.ha[0],e=a.ha[1];c="("==d||"{"==d||"["==d?"\\":"";for(var f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);){var g=fy(a,c[1]);if(void 0===g)return;b=b.replace(d+c[1]+e,null!=g?ey(a,g):"undefined")}if(a.Aa.length)for(d=a.Aa[0],e=a.Aa[1],c="("==d||"{"==d||"["==d?"\\":"",f="["==d?"\\":"",f=new RegExp(c+d+"([^"+f+d+f+e+"]+)"+c+e);c=b.match(f);)b=a.Qk(b,c[1]);for(;d=b.match(/\$([a-z]+)/i);){e=null;switch(d[1].toLowerCase()){case "ops":e=a.Z-a.la}if(null== +e)break;b=b.replace(d[0],e.toString())}return b}function ay(a,b){for(;b;){switch(b&3){case 1:a=-Xx(a);break;case 2:a|=-1;break;case 3:for(var c=35;0<=c&&!(a&Math.pow(2,c));)c--;a=35-c}b>>>=2}return a} +function $x(a,b,c,d,e){e=void 0===e?0:e;var f,g=Array.isArray(d)?d:void 0;if(null!=b){f=a.hh(b);if(0<=f)f=a.ih(f);else if(f=b,a.I[f]?f=a.I[f].value:(f=f.substr(0,6),f=a.I[f]&&a.I[f].value),null!=f){var h=a.I[b]&&a.I[b].So;h&&(g?g.push(h):(g=fy(a,h,d),void 0!==g?f+=g:(d||a.P("undefined "+(c||"value")+": "+b+" ("+h+")"),f=void 0)))}else f=oa(b,1c&&(d+=" '"+String.fromCharCode(c)+"'"));a.P((null!=b?b+": ":"")+d);return e}function iy(a,b){var c=0;if(a.I){if(b)return gy(a,b,a.I[b]&&a.I[b].value);b=Object.keys(a.I);b.sort();for(var d=0;d=Math.abs(b)?5:11;b=pa(b,10,a);break;default:b=q(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} +var cy={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},by={",,":1,"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20}; +function jy(a){Wx.call(this,a);this.ta=4;this.ma=5;this.wa=1048575;this.M=ky(this);this.Ma=ky(this);this.da=ky(this);this.F=[];this.C=this.aa=this.O=[];ly(this);this.xa=0;my(this);this.Ba={};ny(this,a.messages);this.Ga=a.commands;var b=this;window?void 0===window.pcx86&&(window.pcx86=function(a){return oy(b,a)}):void 0===global.pcx86&&(global.pcx86=function(a){return oy(b,a)})}ba(jy,Wx);l=jy.prototype; +l.uc=function(a,b,c,d){this.ka=b;this.H=c;this.pa=a;this.eb=Wb(a,"FDC");this.Ta=Wb(a,"HDC");this.Tc=Wb(a,"FPU");this.G=Wb(a,"Mouse");(a=yd(a,"messages"))&&ny(this,a);this.ma=b.I>>2;this.wa=b.N;this.Ya=new Ud(this.H,7,"DBG");this.qa=py;80186<=this.H.ca&&(this.qa=py.slice(),this.qa[15]=qy,80286<=this.H.ca&&(this.qa[15]=ry,80386<=this.H.ca&&(this.ta=8)));zl(this,64,function(a){sy(d,d.H.sc,a[0])});zl(this,4,function(a){if(a=a[0]){var b=$x(d,a);if(void 0===b)d.P("invalid selector: "+a);else if(a=ty(d, +b,uy),d.P("dumpSel("+sa(a?a.U:b)+"): %"+q(a?a.Lb:null,d.ma)),a){var c,b=!1;if(a.type&4096)a.type&2048?(c="code"+(a.type&512?",readable":",execonly"),a.type&1024&&(c+=",conforming")):(c="data"+(a.type&512?",writable":",readonly"),a.type&1024&&(c+=",expdown")),a.type&256&&(c+=",accessed");else{var e=vy[a.type];e&&(c=e[0],b=e[1])}!c||a.lb&32768||(c+=",not present");d.P((b?"seg="+sa(a.ua&65535)+" off="+sa(a.Ka):"base="+q(a.ua,d.ma)+" limit="+wy(a.Ka))+" type="+r(a.type>>8)+" ("+c+") ext="+sa(a.ext&-65296)+ +" dpl="+r(a.qc))}}else d.P("no selector")});zl(this,134217728,function(a){var b;(a=a[0])&&(b=$x(d,a));if(void 0===b)d.P("invalid MCB");else for(d.P("dumpMCB("+sa(b)+")");b;){a=ky(d,0,b);var c=d.Ia(a,1),e=d.Yc(a,2),k=d.Yc(a,5);if(77!=c&&90!=c)break;d.P(xy(0,b)+": '"+String.fromCharCode(c)+"' PID="+sa(e)+" LEN="+sa(k)+' "'+yy(d,a,8)+'"');b+=1+k}});zl(this,128,function(a){sy(d,d.H.aa,a[0],d.H.aa!==d.H.sc)});zl(this,8,function(a){a:{if(a=a[0]){var b=$x(d,a);if(void 0===b){d.P("invalid task selector: "+ +a);break a}a=ty(d,b,uy)}else a=d.H.la;d.P("dumpTSS("+sa(a?a.U:b)+"): %"+q(a?a.ua:null,d.ma));if(a){var b="",c=a.type&-513,e=256==c?4:8,k=256==c?zy:Ay,m,p,v,u;for(u in k)m=k[u],p=a.ua+m,v=xg(d.H,p,2),2304==c&&(v|=xg(d.H,p+2,2)<<16),b&&(b+="\n"),b+=sa(m)+" "+Aa(u+":",11)+q(v,e);if(2304==c)for(u=0,m=v>>>16;mu;){p=a.ua+m;v=xg(d.H,p,2);p=2;c="";if(!p||4>=8;b+="\n"+sa(m)+" ports "+sa(u)+"-"+sa(u+15)+": "+(""+c);u+=16;m+=2}d.P(b)}}});this.J= +null;this.Ha=0;this.Ca=!1;Rf(this.H,48,this.$m.bind(this));Rf(this.H,65,this.an.bind(this));this.Y=null;Rf(this.H,104,this.bn.bind(this));Ib(this)};function By(a,b,c,d,e,f){b=yy(a,b);var g=ty(a,d),g=g?g.Ka+1:0,h=(e?"_CODE":"_DATA")+q(c,2);f&&t(a,128)&&a.message(b+" "+(e?"code":"data")+"("+q(c,4)+")=#"+q(d,4)+" len "+q(g));e=Cy(a,b,c);e[b+h]=0;$p(a,b,c,d,0,null,g,e)} +function Dy(a,b,c,d){var e=a.Yc(b,2),f=a.Yc(b,2),g=Ey(a,b,4),h=Ey(a,b,4),k=ky(a,Ey(a,b,4),a.Yc(b,2));b=ky(a,Ey(a,b,4),a.Yc(b,2));b=yy(a,b).toUpperCase();var k=yy(a,k).toUpperCase(),m=(c?"_CODE":"_DATA")+q(e,2);d&&t(a,128)&&a.message((b==k?"":b+"!")+k+" "+(c?"code":"data")+"("+q(e,4)+")="+q(f,4)+":"+q(g)+" len "+q(h));c=Cy(a,k,e);c[k+m]=g;$p(a,k,e,f,g,null,h,c)}function Fy(a,b,c){c=yy(a,c).toUpperCase();Gy(a,c,b)} +l.$m=function(){var a=this.H;if(null!=this.J&&2752554==a.D){var b=a.L&65535,c=a.K&65535,d=ky(this,z(a)+12,a.Y.U);switch(Ey(this,d)){case 336:Dy(this,ky(this,a.G,b),!c,!!this.J)}}return!0}; +l.an=function(a){var b=this.H,c=b.D&65535,d=b.G&65535,e=b.I&65535,f=b.L&65535,g=b.K&65535,h=b.J&65535,k=b.oa.U;if(null==this.J)return 79==c&&Sf(b,a,function(a){return function(){62342!=(b.D&65535)?(b.D=b.D&-65536|62342,Lb(a,"INT 0x41 handling enabled",128),a.J=!0):(Lb(a,"INT 0x41 monitoring enabled",128),a.J=!1)}}(this)),!0;switch(c){case 79:this.J&&(b.D=b.D&-65536|62342,Lb(this,"INT 0x41 handling enabled",128));break;case 80:By(this,ky(this,h,k),d+1,e,!(g&1),!!this.J);break;case 82:Gy(this,null, +d);break;case 127:this.J&&(b.D=b.D&-65536|(this.Ca?0:1));break;case 131:this.J&&(a=ky(this,b.L,e),this.Ha++?(this.P("TRAPFAULT failed"),Hy(this,this.C,a,!0,!0),this.Ha=0,this.Jb()):(this.P("INT 0x41 TRAPFAULT: fault="+sa(d)+" error="+q(b.K,8,!0)+" addr="+Iy(a)),this.Hd(this.C,a,!0),my(this,!0)));break;case 141:this.J&&(b.D=b.D&-65536|1);break;case 336:Dy(this,ky(this,b.G,f),!g,!!this.J);break;case 338:Fy(this,d,ky(this,b.J,f))}this.Ca=!1;return!this.J}; +l.bn=function(a){var b=this.H,c=b.D&255,d=b.D>>8&255,e=b.G&65535,f=b.I&65535,g=b.L&65535,h=b.J&65535,k=b.oa.U;if(null==this.Y){if(67==d){if(609437257==b.ia((b.Z.U<<4)+10)||1111835735==b.ia((b.Z.U<<4)+95))return!0;Sf(b,a,function(a){return function(){62342!=(b.D&65535)?(b.D=b.D&-65536|62342,Lb(a,"INT 0x68 handling enabled",128),a.J=a.Y=!0):(Lb(a,"INT 0x68 monitoring enabled",128),a.Y=!1)}}(this))}return!0}switch(d){case 67:this.Y&&(b.D=b.D&-65536|62342);break;case 68:this.Y&&(a=Wd(b.Z,this.zl.bind(this)))&& +(b.J=a[0],ne(b,a[1]));break;case 72:Gy(this,null,e);break;case 80:32==c?By(this,ky(this,h,k),0,f,!0,!!this.Y):128>c?By(this,ky(this,h,k),e+1,c&64?g:f,!(c&1),!!this.Y):Dy(this,ky(this,h,k),!(c&1),!!this.Y),this.Y&&(b.D=b.D&-256|1)}return!this.Y};l.zl=function(){var a=this.H;5==(a.D&255)&&(a.I=a.K=0,a.D=a.D&-256|1);return!1}; +l.Cb=function(a,b,c){var d=this;switch(b){case "debugInput":return this.va=this.na[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",oy(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.A>>0)+1;a.lb=f;a.type=g;a.ext=k;a.Lb=d;Vd(a,!0,!0,!1)}}return a}l.Sb=function(a,b,c){var d=a&&a.ya;if(null==d&&(d=-1,a)){var e=ty(this,a.U,a.type);e&&(b=a.Ja||0,c=c||1,d=e=-1===e.Lb||e.Oc&&(b>>>0)+c>e.Nb||!e.Oc&&(b>>>0)+c<=e.Nb?e.ua+b|0:-1,a.ya=d)}return d};l.Ia=function(a,b){var c=255,d=this.Sb(a,!1,1);-1!==d&&(c=xg(this.H,d,1,a.type==My)|0,b&&Ny(this,a,b));return c}; +l.jb=function(a,b){return a.Hb?Ey(this,a,b?4:0):this.Yc(a,b?2:0)};l.Yc=function(a,b){var c=65535,d=this.Sb(a,!1,2);-1!==d&&(c=xg(this.H,d,2,a.type==My)|0,b&&Ny(this,a,b));return c};function Ey(a,b,c){var d=-1,e=a.Sb(b,!1,4);-1!==e&&(d=xg(a.H,e,4,b.type==My)|0,c&&Ny(a,b,c));return d}l.fc=function(a,b,c,d){var e=this.Sb(a,!0,1);if(-1!==e){if(a.type!=My)this.H.fc(e,b);else{var f=this.ka;f.aa[(e&f.B)>>>f.A].cf(e&f.D,b&255,e)}c&&Ny(this,a,c);d||Bd(this.H,!0)}}; +l.jl=function(a,b,c){var d=this.Sb(a,!0,2);-1!==d&&(a.type!=My?this.H.fb(d,b):Jc(this.ka,d,b),c&&Ny(this,a,c),Bd(this.H,!0))};function ky(a,b,c,d,e,f,g){return Oy(a,{},b,c,d,e,f,g)}function Oy(a,b,c,d,e,f,g,h){b.Ja=c||0;b.U=d;b.ya=e;b.type=f||(Ky(a)?uy:Ly);b.Hb=null!=g?g:!(!a.H||4!=a.H.Z.V);b.dc=null!=h?h:!(!a.H||4!=a.H.Z.Jc);b.Kd=!1;return b}function Py(a){return[a.Ja,a.U,a.ya,a.Kd,a.Hb,a.dc,a.Ge,a.dh]}function Qy(a){return{Ja:a[0],U:a[1],ya:a[2],Kd:a[3],Hb:a[4],dc:a[5],Ge:a[6],dh:a[7]}} +function Ry(a,b,c){if(null!=b.U&&(a=ty(a,b.U,b.type))){var d=b.Ja&a.wa;if(!a.Oc){if(d>>>0>=a.Nb)return!1}else if(d>>>0f?null!=h?(g=fy(a,b,void 0),f=null):(f=fy(a,b,void 0),null==f&&(g=null)):(h=fy(a,b.substring(0,f),void 0),g=fy(a,b.substring(f+1),void 0),f=null)}null!=g&&(e=ky(a,g,h,f,c),d||Ry(a,e,!0)||(a.P("invalid offset: "+Iy(e)),e=null));return e}function Vy(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.tl=a.Dg(b.Zk=c[2]))}l.Qk=function(a,b){var c=Sy(this,b);return a.replace("["+b+"]",c?q(this.jb(c),c.Hb?8:4):"undefined")}; +function Ny(a,b,c){c=c||1;null!=b.ya&&(b.ya+=c);null!=b.U&&(b.Ja+=c,Ry(a,b)||(b.Ja=0,b.ya=null))}function xy(a,b,c){return null!=b?q(b,4)+":"+q(a,a&-65536||c?8:4):q(a)}function Iy(a){var b;switch(a.type){case Ly:case Wy:b="&";break;case uy:b="#";break;case Uy:b="%";break;case My:b="%%";break;default:b=a.U?"":"%"}return a.type>=Uy||null==a.U?b+q(a.ya):b+xy(a.Ja,a.U,a.dc)} +function yy(a,b,c){var d="";for(c=c||256;d.length>>a.H.hb;g=1}a.P("blockid "+(d?"linear ":"physical")+" blockaddr used size type");a.P("-------- --------- ---------- ------ ------ ----");c=-1;for(var h=0;g--;)(d=b[f])&&d.type==bd&&(d=sd(a.H,e,!1,!0)),d.type==c?h++||a.P("..."):(c=d.type,h=tc[c],c==dd&&(d=d.qd,h+=" -> "+tc[d.type]),d&&a.P(q(d.id,8)+" %"+q(f<c&&(c=Ha(Yy,a.substr(b,2))));return c}; +function Zy(a,b){var c=0,d=a.ih(b);if(null!=d)switch(b){case $y:case az:case bz:case cz:case dz:case ez:case fz:case gz:c=2;break;case hz:case iz:case jz:case kz:case lz:case mz:case nz:case oz:case pz:case qz+rz:case qz+sz:case qz+tz:case qz+uz:case qz+vz:case qz+wz:c=4;break;case xz:case yz:case zz:case Az:case Bz:case Cz:case Dz:case Ez:case Fz:case Gz:case Hz:case Iz:case Jz:c=8;break;case Kz:c=a.ta}return c?q(d,c):"??"} +l.ih=function(a){var b;if(0<=a){var c=this.H;switch(a){case $y:b=c.D&255;break;case az:b=c.I&255;break;case bz:b=c.L&255;break;case cz:b=c.G&255;break;case dz:b=c.D>>8&255;break;case ez:b=c.I>>8&255;break;case fz:b=c.L>>8&255;break;case gz:b=c.G>>8&255;break;case hz:b=c.D&65535;break;case iz:b=c.I&65535;break;case jz:b=c.L&65535;break;case kz:b=c.G&65535;break;case lz:b=z(c)&65535;break;case mz:b=c.M&65535;break;case nz:b=c.K&65535;break;case oz:b=c.J&65535;break;case pz:b=A(c)&65535;break;case Kz:b= +qe(c);break;case qz+rz:b=c.oa.U;break;case qz+sz:b=c.Z.U;break;case qz+tz:b=c.Y.U;break;case qz+uz:b=c.Ca.U;break;default:if(80286==this.H.ca)a==Fz&&(b=c.qa);else if(80386<=this.H.ca)switch(a){case xz:b=c.D;break;case yz:b=c.I;break;case zz:b=c.L;break;case Az:b=c.G;break;case Bz:b=z(c);break;case Cz:b=c.M;break;case Dz:b=c.K;break;case Ez:b=c.J;break;case Fz:b=c.qa;break;case Gz:b=c.Pg;break;case Hz:b=c.Dd;break;case Iz:b=c.Wc;break;case qz+vz:b=c.Ga.U;break;case qz+wz:b=c.Ha.U;break;case Jz:b=A(c)}}}return b}; +function Lz(a,b){b=hy(a,b)||b;for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.hh(b,c+1),0<=e&&(b=b.substr(0,c)+Zy(a,e)+b.substr(c+1+Yy[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=oa(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=Sy(a,e))?(d=e+' "'+yy(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=Sy(a,e))?(Ny(a,d), +d=e+' "'+yy(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+Iy(ky(this,A(this.H),this.H.Z.U))+" (%"+q(this.H.da)+")");this.za&&a==this.za||(this.za=a,this.ic&-2147483648&&(this.Jb(),a+=" (cpu halted)"),this.P(a),this.H&&(a=this.H,a.zc-=a.A,a.A=0,a.T.We=0,Bd(a)))}; +function Vk(a,b,c,d){var e,f;if(!d&&(d=t(a,1)&&0>Mz.indexOf(b),!d)){var g=Nz[b];g&&(d=t(a,g)?!0:524288==g&&t(a,g=1048576))}d&&(e=a.H.D>>8&255,f=a.H.L&255,33==b&&11==e||524288==g&&128<=f||1048576==g&&128>f)&&(d=!1);d&&((g=(g=Qb[b])&&g[e]||"")&&(g=" "+Lz(a,g)),a.message("INT "+r(b)+": AH="+r(e)+" at "+xy(c-2-a.H.Z.ua,a.H.Z.U)+g));return d} +function Mb(a,b,c,d,e,f,g,h){h|=256;if(null==e||(a.ic&h)==h)h=null,null!=e&&(h=a.H.Z.U,e-=a.H.Z.ua),a.message(b.ce+"."+(null!=d?"outPort":"inPort")+"("+sa(c)+","+(f?f:"unknown")+(null!=d?","+r(d):"")+")"+(null!=g?": "+r(g):"")+(null!=e?" at "+xy(e,h):""))}l.jh=function(){this.P("Type ? for help with PCx86 Debugger commands");Oz(this);if(this.Ga){var a=this.Ga;this.Ga=null;oy(this,a)}}; +function my(a,b){var c;if(Ig(a)){if(!a.W||!a.W.length){a.W=Array(Pz);for(c=0;c>>f.hb].Hd(e&f.Db,a==this.O);g&&sc(f)}}d&&(a.push(b),c?(null!=b.ya&&(b.U=null),b.Kd=!0):(Wz(this,a,a.length-1,"set"),my(this)));return d}; +function Hy(a,b,c,d,e){for(var f=!1,g=Xz(a,a.Sb(c)),h=1;h>3&7,E=(3>(g>>6&3)?0:48)+u;(217==f||219==f)&&52<=E&&(E=u<<4|g&7);(u=eA[f])&&(v=u[E]);v&&(p=fA,k=v,m=k[0])}m>=p.length&&(g=a.Ia(b,1),k=gA[m-p.length][g>>3&7],m=k[0]);p=p[m];u=k.length-1;v="";b.Hb&&(m==hA? +p="CWDE":m==iA?p="CDQ":m>=jA&&m<=kA&&(p+="D"));if(164<=f&&167>=f||170<=f&&175>=f)u=0,b.Hb&&"W"==p.slice(-1)&&(p=p.slice(0,-1)+"D");for(var f=-1,E=!0,G=1;G<=u;G++){var I,J;I="";J=k[G];if(void 0!==J){0>f&&(f=J>>lA);m==mA&&(f==nA?v="[%800]":f==oA&&(v="ES:["+(b.dc?"E":"")+"DI]"));var T=J&pA;if(T!=qA)if(T==rA)E=!1;else{var L=J&sA;if(L>=R)if(0>g&&(g=a.Ia(b,1)),L>6,za=g&7;if(3>xb){T=!p.indexOf("FI");if(!xb&&(!J.dc&&6==za||J.dc&&5==za))xb=2;else{if(J.dc)if(4!=za)za+= +8;else{var ca=L,cb=xb,Sa=J,rb=ca.Ia(Sa,1),db=rb>>6,rc=rb>>3&7,rb=rb&7,ib="";if(cb||5!=rb)ib=uA[rb+8];4!=rc&&(ib&&(ib+="+"),ib+=uA[rc+8],db&&(ib+="*"+(1<>24),2)):ca+("+"+q(L,2))):2==xb&&(ca&&(ca+="+"),J.dc?(L=Ey(L,J,4),ca+=q(L)):(L=L.Yc(J,2),ca+=q(L,4)));ca="["+ca+"]";if(1==ua){L="";I&=pA;I==S&&(I=J.Hb?vA:U);switch(I){case wA:L="FAR";break;case V:L="BYTE";break;case U:if(T){L="INT16"; +break}L="WORD";break;case vA:L="DWORD";break;case xA:if(T){L="INT32";break}case yA:L="REAL32";break;case zA:if(T){L="INT64";break}case AA:L="REAL64";break;case BA:L="REAL80";break;case CA:L="BCD80"}L&&(ca=L+" "+ca)}}else ca=DA(L,za,I,J);I=ca}else I=L==tA?DA(a,g&7,J,b):DA(a,g>>3&7,J,b);else if(L==EA)I="1";else if(L==W){I=a;T=J;L=b;J=" ";switch(T&pA){case V:T&X&&(J=q(I.Ia(L,1),2));break;case FA:J=q(I.Ia(L,1)<<24>>24,L.Hb?8:4);break;case S:if(L.Hb){J=q(Ey(I,L,4));break}case U:J=q(I.Yc(L,2),4);break; +case wA:L=ky(I,I.jb(L,!0),I.Yc(L,2),null,L.type,L.Hb,L.dc);J=Iy(L);I=GA(I,L);I[0]&&(J+=" ("+I[0]+")");break;default:J="imm("+sa(T)+")"}I=J}else L==HA?(b.dc?(I=8,J=Ey(a,b,4)):(I=4,J=a.Yc(b,2)),I="["+q(J,I)+"]"):L==IA?(I=T==V?a.Ia(b,1)<<24>>24:a.jb(b,!0),J=b.Ja+I&(b.Hb?-1:65535),I=q(J,b.Hb?8:4),J=GA(a,ky(a,J,b.U)),J[0]&&(I+=" ("+J[0]+")")):L==Y?I=T==JA?"ST":T==KA?"ST("+(g&7)+")":DA(a,(J&LA)>>8,J,b):L==MA?I=DA(a,(J&LA)>>8,NA,b):L==OA?I="DS:[SI]":L==PA&&(I="ES:[DI]");if(!I||!I.length){v="INVALID";break}0< +v.length&&(v+=",");v+=I||"???"}}}g="";k=Iy(e)+" ";if(-1!==e.ya&&-1!==b.ya){do if(g+=q(a.Ia(e,1),2),null==e.ya)break;while(e.ya!=b.ya)}k+=Aa(g,e.dc?24:16);k+=Aa(p,8);v&&(k+=" "+v);a.H.cawz||b>=vz&&80386>a.H.ca)return"??";b+=qz}else if(e==SA)b+=Fz;else if(e==TA)b+=UA;else if(e==VA)b+=WA;else if(a=c&pA,a>=U&&(b=hz&&b<=oz&&4a.H.ca&&(d="\n"+d,c+=e,e="");c+="\n"+ZA(a,a.H.Z,b)+" ";80386<=a.H.ca&&(e+="\n",c+=ZA(a,a.H.Ga,b)+" "+ZA(a,a.H.Ha,b)+"\n");c+=$A(a,"LD",a.H.Eb.U,a.H.Eb.ua,a.H.Eb.ua+a.H.Eb.Ka)+" "+$A(a,"GD",null,a.H.Kb,a.H.Pc)+" "+$A(a,"ID", +null,a.H.Pb,a.H.cd)+" ";c=c+(d+" "+e)+YA(a,Fz);80386<=a.H.ca&&(c+=YA(a,Hz)+YA(a,Iz))}else 80386<=a.H.ca&&(c+=ZA(a,a.H.Ga,b)+" "+ZA(a,a.H.Ha,b)+" ");return c+=YA(a,Kz)+XA(a,"V")+XA(a,"D")+XA(a,"I")+XA(a,"T")+XA(a,"S")+XA(a,"Z")+XA(a,"A")+XA(a,"P")+XA(a,"C")}l.hj=function(a,b){return a[0]>b[0]?1:a[0]>>0,p],I=Da(E,u,a.hj);0>I&&E.splice(-(I+1),0,u)}G&&(v.a=G.replace(/''/g,'"'))}a.F.push({Sf:b,rn:c,U:d,Ja:e,ya:f,gn:g,Gd:h,Qi:m})} +function Gy(a,b,c){for(var d=0;d>>0,f=a.Sb(b)>>>0,g=0;g>>0,p=h.ya;null!=p&&(p>>>=0);var v=h.gn;48==k&&(k=40);if(k==b.U&&e>=m&&e=p&&fc?(a.P("out of data at address "+Iy(b)),p=!0):(a.fc(b,c,1,!0),m++)})})(a,g);Bd(a.H, +!0);a.P(m+" bytes read at "+b)}else a.P("sector "+e+" request out of range");else a.P("drive "+d+" not loaded");else a.P("invalid drive: "+d)}else a.P("disk controller not present")}}else a.P("load commands:"),a.P("\tl [address] [drive #] [sector #] [# sectors]")} +function Sz(a,b){var c;if(b&&"?"==b[1])a.P("register commands:"),a.P("\tr\tdump registers"),a.Tc&&a.P("\trfp\tdump floating-point registers"),a.P("\trp\tdump all registers"),a.P("\trx [#]\tset flag or register x to [#]");else{var d;null==c&&(c=!0);if(b&&1f;f++){var g=c,e=null;if(f=a.ta&&(h=null);switch(h){case "AL":a.H.D= +a.H.D&-256|g&255;break;case "AH":a.H.D=a.H.D&-65281|g<<8&255;break;case "AX":a.H.D=a.H.D&-65536|g&65535;break;case "BL":a.H.G=a.H.G&-256|g&255;break;case "BH":a.H.G=a.H.G&-65281|g<<8&255;break;case "BX":a.H.G=a.H.G&-65536|g&65535;break;case "CL":a.H.I=a.H.I&-256|g&255;break;case "CH":a.H.I=a.H.I&-65281|g<<8&255;break;case "CX":a.H.I=a.H.I&-65536|g&65535;break;case "DL":a.H.L=a.H.L&-256|g&255;break;case "DH":a.H.L=a.H.L&-65281|g<<8&255;break;case "DX":a.H.L=a.H.L&-65536|g&65535;break;case "SP":ge(a.H, +z(a.H)&-65536|g&65535);break;case "BP":a.H.M=a.H.M&-65536|g&65535;break;case "SI":a.H.K=a.H.K&-65536|g&65535;break;case "DI":a.H.J=a.H.J&-65536|g&65535;break;case "DS":me(a.H,g);break;case "ES":ne(a.H,g);break;case "SS":fe(a.H,g);break;case "CS":Yf(a.H,g);a.M=ky(a,A(a.H),a.H.Z.U);break;case "IP":case "EIP":C(a.H,g);a.M=ky(a,A(a.H),a.H.Z.U);break;case "PC":case "PS":re(a.H,g);break;case "C":g?jg(a.H):kg(a.H);break;case "P":g?(e=a.H,e.resultType&=-3,e.O|=4):(e=a.H,e.resultType&=-3,e.O&=-5);break;case "A":g? +rg(a.H):pg(a.H);break;case "Z":g?sg(a.H):qg(a.H);break;case "S":g?(e=a.H,e.resultType&=-17,e.O|=128):(e=a.H,e.resultType&=-17,e.O&=-129);break;case "I":g?(e=a.H,e.O|=512):(e=a.H,e.O&=-513);break;case "D":g?(e=a.H,e.O|=1024):(e=a.H,e.O&=-1025);break;case "V":g?lg(a.H):mg(a.H);break;default:var k=!0;if(80286<=a.H.ca)switch(k=!1,h){case "MS":tg(a.H,g);break;case "TR":-1===a.H.la.load(g)&&(f=!1);break;default:if(k=!0,80386<=a.H.ca)switch(k=!1,h){case "EAX":a.H.D=g;break;case "EBX":a.H.G=g;break;case "ECX":a.H.I= +g;break;case "EDX":a.H.L=g;break;case "ESP":ge(a.H,g);break;case "EBP":a.H.M=g;break;case "ESI":a.H.K=g;break;case "EDI":a.H.J=g;break;case "FS":a.H.Ga.load(g);break;case "GS":a.H.Ha.load(g);break;case "CR0":a.H.qa=g;ak.call(a.H,g);break;case "CR2":a.H.Dd=g;break;case "CR3":a.H.Wc=g;te.call(a.H,g);break;default:k=!0}}if(k){a.P("unknown register: "+e);return}}if(!f){a.P("invalid value: "+b);return}Bd(a.H);a.P("updated registers:")}}a.P(aB(a,d));c&&(a.M=ky(a,A(a.H),a.H.Z.U),Tz(a,Iy(a.M)))}} +function iB(a,b){b=Ba(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.P(Lz(a,c[2])):fy(a,b,!1)}function jB(a,b,c){for(var d=null,e=b.Ja,f=e,g=1;6>=g&&e;g++){if(2h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.P(m)}h[3]&&(g=h[3],f=null);f=$z(a,b,g,f);b.dh||d||d++;a.P(f);a.M=b;e-=b.ya-k;c++}}} +l.Dg=function(a,b,c){if(b)if(a){0>this.A&&this.B.length&&(this.A=0);if(0>this.A||a!=this.B[this.A])this.B.splice(0,0,a),this.A=0;this.A--}else a=this.B[this.A+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(Ba(a.substring(d,f))),d=f+1}}return b}; +function Zz(a,b,c){var d=!0;try{if(!b.length||"end"==b)a.ga&&(a.P("ended assemble at "+Iy(a.da)),a.M=a.da,a.ga=!1),b="";else if(!c){var e=">> ";a.H.qa&1&&(e=a.H.O&131072?"-- ":"## ");a.P(e+b)}var f=b.charAt(0);if('"'==f||"'"==f)return!0;a.za=null;if(Gb(a)&&0p||"z">>20;Qa.Ui=a.H.Wc+Qa.Kk;Qa.nb=qf.aa[(Qa.Ui&qf.B)>>>qf.A];Qa.Bj=Qa.nb.Od(Qa.Kk);Qa.Lk=(Qg&4190208)>>>10;Qa.Vi=(Qa.Bj&-4096)+Qa.Lk;Qa.ob=qf.aa[(Qa.Vi&qf.B)>>>qf.A];Qa.Cj=Qa.ob.Od(Qa.Lk);Qa.vl=(Qa.Cj&-4096)+(Qg&4095)}if(pf=Qa){a.P("linear PDE addr PDE PTE addr PTE physical");a.P("--------- ---------- -------- ---------- -------- ----------");var xe="%"+q(Qg),xe=xe+(" %%"+Xy(pf.Ui,pf.Bj)),xe= +xe+(" %%"+Xy(pf.Vi,pf.Cj,!0)),xe=xe+(" %%"+q(pf.vl));a.P(xe)}else a.P("unsupported operation")}}else a.P("missing address")}else{if("d"==za){if("disk"==cb){ca[0]="l";ca[1]="json";gB(a,ca);break a}for(xb in Rb)if(ca[1]==xb){var xt=a.Ba[xb];xt?(ca.shift(),ca.shift(),xt(ca)):a.P("no dump registered for "+cb);break a}cb||(za=a.ib||"db")}else a.ib=za;if("dh"==za){var yt=cb,zt=Sa,At="",Bt=0,Lc=a.oa,kd=a.W;if(kd.length){var vc=+yt||a.Xa,Rg=+zt||10;isNaN(vc)?vc=Rg:At="more ";vc>kd.length&&(a.P("note: only "+ +kd.length+" available"),vc=kd.length);Lc-=vc;0>Lc&&(null==kd[kd.length-1].U?(vc=Lc+vc,Lc=0):Lc+=kd.length);var sm=[];"call"==zt&&(Rg=1E5,sm=["CALL"]);for(void 0!==yt&&a.P(vc+" instructions earlier:");0=kd.length&&(Lc=0);a.Xa=vc;Bt++;Rg--}}Bt||(a.P("no "+At+"history available"),a.Xa= +void 0)}else if("di"==za){ca.shift();var tm=ca[0];if(tm){var Tg=$x(a,tm);if(void 0===Tg||0>Tg||255>>0,65536>4||1;dC--&&0Zi?String.fromCharCode(Zi):".";Yi--}Ug&&(Ug+="\n");Ug+=cb+" "+vm+(Wg?"":" "+Ht)}Ug&&a.P(Ug);a.Ma=rf}}}}}break;case "e":if("else"==g[0])break;var $i= +1,It=255,Jt=a.Ia,Kt=a.fc;"ew"==g[0]&&($i=2,It=65535,Jt=a.Yc,Kt=a.jl);var Lt=$i<<1,Mt=g[1];if(null==Mt)a.P("edit memory commands:"),a.P("\teb [a] [...] edit bytes at address a"),a.P("\tew [a] [...] edit words at address a");else{var aj=Sy(a,Mt);if(aj)for(var bj=2;bjBm;){for(var ld=null,iC=256;Td.Ja>>>0>>0;){Zg.Ja=a.jb(Td,!0);if(null==Td.ya||!iC--)break;Zg.U=Ot;if(ld=jB(a,Zg))break;Zg.U=a.jb(Td);if(ld=jB(a,Zg,!0)){Ot=a.jb(Td,!0);0\nLicense: GPL version 3 or later ");for(b=0;bGB){if(d.load(this.L)){this.F=new Wf(this,"1.35.1",QB);this.F.load()&&(RB(this,d),a=SB,TB(this.F));this.F.set(NB,Ea());UB(this.F);var e=this.A&&!this.I;if(a==OB||qb("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=MB(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= +g?(this.Ea("Error: "+g),"unable to verify user"==g&&(Ra(VB,""),this.C=null)):this.P(f+": "+g),TB(d),d.load()?(c=MB(d),e=!0):c=!1))}e&&KB(this,c?d:null)}else a==SB&&d.clear()}else KB(this);delete this.L;delete this.M}e=sb(this.id);for(f=0;fa[1];a=a[2];this.ga=!0;this.ea.Yb=!0;var d=this.na.power;d&&(d.textContent="Shutdown");this.H&&(WB(this,this.H,b,c,a),this.H.mf());this.Y&&(RB(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.B=0}; +function RB(a,b){if(qb("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.C||"";b=b.toString();var d={app:"PCx86",ver:"1.35.1"};d.url=a.da;d.user=c;d.type="bug";d.data=b;Ka("http://www.pcjs.org/api/v1/report",d,!0)}} +function lB(a,b,c){var d,e="none";if(a.B)return null;a.B--;var f=new Wf(a,"1.35.1"),g=new Wf(a,"1.35.1",LB),h=Ea();g.set(NB,h);f.set(NB,h);f.set(XB,"1.35.1");f.set(YB,window?window.location.href:null);f.set(ZB,Ma());a.H&&a.H.Wb&&(c&&a.H.Jb(),d=a.H.Wb(b,c),"object"===typeof d&&f.set(a.H.id,d),c&&(a.H.ea.Yb=!1,!1===d&&(e=null)));for(var h=sb(a.id),k=0;k>>b.A;d=d+e-1>>>b.A;c.bh=0;for(c.Id=0;f<=d;)e=b.aa[f],c.bh+=e.size,e.size&&(c.Sg.push(Fa(bc,f,0,0,e.type)),c.Id++),f++;a.A=c;a.da=a.A.Id*a.ka.C/(ac*kc);d=0;a.A.aj=0;a.A.lf||(a.A.lf=[]);e=-1;b=0;for(var g=-1,c=0;c>1),g=f.y+(f.A>>1),h=f.A,f.Nc>1,b.I+=(b.J>>1)-2,hc(b,e),b.Y&&(b.D.restore(),b.Y=!1)}}else hc(a,"This space intentionally left blank");a.context.drawImage(a.K,0,0,a.K.width,a.K.height,a.Ga,a.Ma,a.xa,a.Aa);a.oa=!1}}var QB="failsafe",LB="validate",NB="timestamp",XB="version",YB="url",ZB="browser",VB="user",PB=-1,GB=0,OB=1,SB=2,aC=3; +$a(function(){for(var a=zb(document,"pcx86-machine"),b=0;bf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PCx86$2"), +a=a.replace(/().*?(<\/xsl:variable>)/,"$1pcx86$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){f=null,a=p.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ka(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, +"");a=a.replace(d[0],g);rC(a,b,c)}})}else c(a,null)} +function sC(a,b,c,d){function e(a){if(void 0===h){var b=g&&zb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=xa(a))}function f(a){e("Error: "+a);k&&(--oC||hb(!0));k=!1}var g,h,k=!0;oC++;pb[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=m:v.appendChild(document.createTextNode(m));p.appendChild(v)}c|| +(c="/versions/pcx86/1.35.1/components.xsl");m=function(d,h){h?pC(c,null,null,!1,e,function(d,k){k?(ob(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--oC||hb(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--oC||hb(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?pC(b,a,d,!0,e,m):qC(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}function tC(a,b,c,d){hb(!1);return sC(a,b,c,d)}window.embedPC=tC;window.embedPCx86=tC;window.findMachineComponent=function(a,b){return ub(b,a+".machine")}; +window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!Bb[a]){for(var c=!0,d=Bb,e=a,f=b.length,g=[],h=[],k="",m=null,p=0;p]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=v.exec(h[m]);){var u=d[2];u&&(h[u]||(p=p.replace(d[0],"")))}d=m=ta(m)}else"xsl"==v&&(e=m=ta(m));k[m]=p}a&&(k[m="css"]=a);b[2]&&(k[m="parms"]=b[2]);b[3]&&(k[m="state"]=b[3]);d&&e?(a=JSON.stringify(k),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g, +"©"),a=Wa(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
    \n')+"...\n",a=a+('\n'; + sAlert += '\n\n'; + sAlert += 'The machine should appear where the
    is located.'; + Component.alertUser(sAlert); + return; + } + Component.alertUser("Missing XML/XSL resources"); +} + +/** + * Prevent the Closure Compiler from renaming functions we want to export, by adding them + * as (named) properties of a global object. + */ +window['savePC'] = savePC; diff --git a/versions/pcx86/1.35.1/pcx86.js b/versions/pcx86/1.35.1/pcx86.js new file mode 100644 index 0000000000..df4efc4c7f --- /dev/null +++ b/versions/pcx86/1.35.1/pcx86.js @@ -0,0 +1,699 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/diskapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/interrupts.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86seg.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86fpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86func.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86help.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86mods.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86ops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/x86op0f.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/chipset.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/keyboard.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/video.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/parallel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/mouse.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/disk.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/fdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/hdc.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pcx86/lib/computer.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/save.js (C) Jeff Parsons 2012-2017 +*/ +var k,aa;function ba(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]} +for(var da="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ea="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this,fa=["Math","trunc"],ga=0;gaa?-b:b};ka!=ja&&null!=ka&&da(ea,ia,{configurable:!0,writable:!0,value:ka}); +var la={163840:[40,1,8,,254],184320:[40,1,9,,252],327680:[40,2,8,,255],368640:[40,2,9,,253],737280:[80,2,9,,249],1228800:[80,2,15,,249],1474560:[80,2,18,,240],2949120:[80,2,36,,240],10653696:[306,4,17],21411840:[615,4,17],256256:[77,1,26,128],2494464:[203,2,12,512],5242880:[256,2,40,256],10485760:[512,2,40,256]},n={Pn:0,Rn:1,Sn:2,$j:3,Tn:4,Un:5,Vn:6,Wn:7,Xn:8,Yn:9,Zn:10,$n:11,ao:12,bo:13,co:14,eo:15,fo:16,ho:17,io:18,jo:19,ko:20,lo:21,mo:22,no:23,oo:24,po:25,qo:26," ":32,"!":33,'"':34,"#":35,$:36, +"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Cd:65,xh:66,yh:67,Ah:68,E:69,Bh:70,Ch:71,Dh:72,Eh:73,Fh:74,Gh:75,Hh:76,Ih:77,Jh:78,Kh:79,Lh:80,Q:81,Mh:82,Nh:83,Oh:84,Ph:85,Qh:86,Rh:87,Sh:88,Th:89,tf:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Dd:97,kk:98,lk:99,d:100,e:101,wk:102,xk:103,yk:104,zk:105,Ll:106,k:107,Nl:108,Rl:109,n:110,Xl:111,p:112,q:113,r:114,rn:115,t:116,un:117, +vn:118,wn:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,ro:127},ma={};ma[173]=n["-"];ma[186]=n[";"];ma[187]=n["="];ma[189]=n["-"];ma[188]=n[","];ma[190]=n["."];ma[191]=n["/"];ma[192]=n["`"];ma[219]=n["["];ma[220]=n["\\"];ma[221]=n["]"];ma[222]=n["'"];var p={};p[n["1"]]=n["!"];p[n["2"]]=n["@"];p[n["3"]]=n["#"];p[n["4"]]=n.$;p[n["5"]]=n["%"];p[n["6"]]=n["^"];p[n["7"]]=n["&"];p[n["8"]]=n["*"];p[n["9"]]=n["("];p[n["0"]]=n[")"];p[186]=n[":"];p[187]=n["+"];p[188]=n["<"];p[189]=n._;p[190]=n[">"]; +p[191]=n["?"];p[192]=n["~"];p[219]=n["{"];p[220]=n["|"];p[221]=n["}"];p[222]=n['"'];p[173]=n._;p[61]=n["+"];p[59]=n[":"]; +function na(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0=b?4:4294967295>=b?8:9);c=c?"0x":"";var d;d=void 0===d?0:d;var e="";isNaN(a)?a=null:null!=a&&(0>a&&-1a&&(a+=Math.pow(16,b)),a>=Math.pow(16,b)&&(b=Math.ceil(Math.log(a)/Math.log(16))));for(var f=d||-1;0=g?48:55),e=String.fromCharCode(g)+e;a=Math.trunc(a/16)}f--}return(void 0===c?"":c)+e} +function pa(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0"']/g,function(a){return ta[a]})}function ua(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} +var ta={"&":"&","<":"<",">":">",'"':""","'":"'"},va={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"}; +function wa(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}function xa(a,b){var c=0,d=1,e;for(e in a){if(d>=arguments.length)break;var f=a[e],g=arguments[d++],c=c&~f.rg|g<>a.shift}var za=[31,28,31,30,31,30,31,31,30,31,30,31],Aa=Date.now||function(){return+new Date}; +function Ba(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a, +f,e))});if(b&&"object"==typeof b){var l="",m;for(m in b)b.hasOwnProperty(m)&&(l&&(l+="&"),l+=m+"="+encodeURIComponent(b[m]));l=l.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g} +function Ca(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Da(){if(null==Ea){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}Ea=a}return Ea}function Fa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b} +function Ga(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ha(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1} +function Ia(a){if(!Ja){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Ja=c}return Ja[a]} +function Ka(a,b,c,d){var e=null;b="data:application/"+b+(c?";base64":"")+",";b=Ha("Firefox")?b+(c?a:encodeURIComponent(a)):b+(c?a:encodeURI(a));d&&(e=document.createElement("a"),"string"!=typeof e.download&&(e=null));e?(e.href=b,e.download=d,document.body.appendChild(e),e.click(),document.body.removeChild(e),a="Check your Downloads folder for "+d+"."):(window.open(b),a="Check your browser for a new window/tab containing the requested data"+(d?" ("+d+")":"")+".");return a} +function La(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ma(a){Na.init.push(a)}function Oa(a){if(Pa)try{for(var b=0;ba?this.Ud=this.id:(this.Wd=this.id.substr(0,a),this.Ud=this.id.substr(a+1));this.ca={ready:!1,xf:!1,mg:!1,Pb:!1,error:!1};this.Gf=null;this.ca.error=!1;this.Ea=this.U=this.ma=this.oa=this.Df=null;Ua.push(this)}function Va(a,b,c){Wa[a]&&b&&(Wa[a][b]=c)}function r(a){window&&window.alert(a)} +function Xa(a){var b=!1;window&&(b=window.confirm(a));return b}function Ya(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b=this.x&&a=this.y&&b=c>>2);d?(b=new sb(a.x,a.y,a.wc,a.A*b/c|0),a.y+=b.A,a.A-=b.A):(b=new sb(a.x,a.y,a.wc*b/c|0,a.A),a.x+=b.wc,a.wc-=b.wc);return b} +function ub(a){t.call(this,"Panel",a);this.F=this.G=this.K=-1}ba(ub,t);k=ub.prototype;k.wb=function(a,b,c,d){return this.oa&&this.oa.wb(a,b,c,d)||this.U&&this.U.wb(a,b,c,d)||this.B&&this.B.wb(a,b,c,d)?!0:t.prototype.wb.call(this,a,b,c,d)};k.ic=function(a,b,c,d){this.oa=a;this.ma=b;this.U=c;this.Ea=d;this.B=vb(a,"Keyboard")};k.Ob=function(a,b){b||wb();return!0};k.Nb=function(){return!0};k.ie=function(a,b){a.button||(this.K=b?0:-1,xb(this,a,b))};k.sg=function(a){xb(this,a)}; +function xb(a,b,c){var d=yb/null.offsetWidth,e=Ab/null.offsetHeight,f=null.getBoundingClientRect(),d=(b.clientX-f.left)*d|0;b=(b.clientY-f.top)*e|0;null==c&&(a.K||(a.K=Math.abs(a.F-d)>Math.abs(a.G-b)?1:2),1==a.K?b=a.G:2==a.K&&(d=a.F));a.F=d;a.G=b;if(0<=d&&dd&&(f=d);c= +f;break a}c=-1}if(-1!==c&&(c&=-16,c!=a.ea)){b=c;if(a.context&&a.M&&a.O){e=Db-Eb;f=a.M.width;a.O.fillStyle=Fb;a.O.fillRect(0,e,f,Eb);Gb(a,e+Hb,a.M,a.O);a.V=a.ga.width/24|0;if(null==b)Ib(a,"Mouse over memory to dump");else for(Ib(a,oa(b,8,!0),null,0,1),d=1;16>=d;d++){for(var g="",h=1;8>=h;h++){var l;l=a.ma;var m=b++;l=l.X[(m&l.D)>>>l.B].Ad(m&l.C,m);Ib(a,oa(l,2),null,1);g+=32<=l&&128>l?String.fromCharCode(l):"."}Ib(a,g,null,0,1)}a.context.drawImage(a.M,0,e,f,Eb,a.Ca,a.Ha,a.ta,a.wa)}a.ea=c}}} +function Jb(a,b,c,d){a.A.Ee[a.A.ci++]={Ak:b,dd:c,type:d};return xa(Cb,b,c,0,d)}function Gb(a,b,c,d){var e,f=null.style.color,g=a.qa=10;a.C=g;a.H=b;a.I=a.Z=Hb;e||(e=a.X||a.Z+"px "+Lb);a.L=a.X=e;c&&(a.ga=c);d&&(a.D=d,a.ja=f||"white")}function Ib(a,b,c,d,e){a.D.font=a.L;a.D.fillStyle=a.ja;a.D.fillText(b,a.C,a.H);a.C+=a.V;null!=c&&(16!=a.Ba?b=c.toString():(b=8>a.pa?"0x":"",b+=oa(c,a.pa)),a.D.fillText(b,a.C,a.H),a.C+=a.V);d&&(a.C+=a.V*d);e&&(a.C=a.qa,a.H+=(a.I+2)*(e||1))} +function wb(){for(var a=!1,b=eb(document,"pcx86","panel"),c=0;c>2,Mb=Ab,Db=Ab,Fb="black",Eb=Ab>>1;Ma(wb); +function Nb(a,b,c){t.call(this,"Bus",a);this.U=b;this.Ea=c;this.F=a.busWidth||20;this.K=Math.pow(2,this.F);this.W=this.D=this.K-1|0;this.B=32==this.F||20>=this.F?12:24>=this.F?14:15;this.A=1<>2;this.C=this.A-1;this.H=this.K/this.A|0;this.L=this.H-1;this.I=[];this.J=[];this.M=[];this.O=[];a=new u;Ob(a,this.Ea);this.X=Array(this.H);for(b=0;b>>a.B;0g&&(q=g);if(l&&l.size){if(l.type==d&&l.controller==e){if(f+g<=l.ee)return l.xe+=l.ee-f,l.ee=f,!0;if(f>=l.ee+l.xe){q=l.size-(f-m);q>g&&(q=g);l.xe=f-l.ee+q;f=m+a.A;g-=q;h++;continue}}return Rb(a,Sb,f,g)}f=new u(f,q,a.A,d,e);Ob(f,a.Ea,l);a.X[h++]=f;f=m+a.A;g-=q}return 0>=g?(e=a.U,e.pa&-2147483648&&Tb(e),a.U.ca.Ib||a.status(Math.floor(c/1024)+"Kb "+Ub[d]+" at "+oa(b)),!0):Rb(a,Vb,b,c)} +function Pb(a,b){32==a.F?b?a.G&&(Wb(a,1048576,1048576,a.G),a.G=null):a.G||(a.G=Xb(a,1048576,1048576),Wb(a,1048576,1048576,Xb(a,0,1048576))):20>>this.B;0>>a.B;0>>=a.B;0>>a.B;0>>this.B].mc(a&this.C,a)};function hc(a,b){var c=b&a.C,d=(b&a.D)>>>a.B;return c!=a.C?a.X[d].cf(c,b):a.X[d++].Ad(c,b)|a.X[d&a.L].Ad(0,b+1)<<8} +k.Dc=function(a,b){this.X[(a&this.D)>>>this.B].nc(a&this.C,b&255,a)};function ic(a,b,c){var d=b&a.C,e=(b&a.D)>>>a.B;d!=a.C?a.X[e].vh(d,c&65535,b):(a.X[e++].hf(d,c&255,b),a.X[e&a.L].hf(0,c>>8&255,b+1))} +function jc(a,b){var c=0,d=[],e=!a.G&&a.W==a.D;e||Pb(a,!0);for(var f=0;f>>=f)&l;if(void 0!==g&&g[0])g[0](b,l,e);f+=h<<3;b+=h;c-=h}}function Rb(a,b,c,d,e){b="Memory block error ("+b+": "+oa(c)+","+oa(d)+")";e?a.Ea?a.Ea.message(b):a.log(b):r(b);return!1} +var Cb,oc={Ej:20,count:8,Go:1,type:3},qc=0,rc;for(rc in oc){var sc=oc[rc];oc[rc]={rg:(1<>1),this.T=new Int32Array(this.L,0,c>>2),Zb(this,dc?ec:fc);else{this.T=Array(c>>2);for(e=0;e>2),b=0;b>8,c)};k.sh=function(a,b,c){this.nc(a++,b&255,c++);this.nc(a++,b>>8&255,c++);this.nc(a++,b>>16&255,c++);this.nc(a,b>>>24,c)};k.an=function(a){return this.T[a>>2]>>>((a&3)<<3)&255}; +k.nn=function(a){var b=a>>2;a=(a&3)<<3;var c=this.T[b]>>a;return 24>a?c&65535:c&255|(this.T[b+1]&255)<<8};k.gn=function(a){var b=a>>2;a=(a&3)<<3;var c=this.T[b];a&&(c=c>>>a|this.T[b+1]<<32-a);return c};k.zn=function(a,b){var c=a>>2;a=(a&3)<<3;this.T[c]=this.T[c]&~(255<>2;a=(a&3)<<3;24>a?this.T[c]=this.T[c]&~(65535<>8);this.Da=!0}; +k.Fn=function(a,b){var c=a>>2;if(a=(a&3)<<3){var d=-1<>>32-a}else this.T[c]=b;this.Da=!0};k.$m=function(a,b){this.F&&Fc(this.F,b,1,!1);return this.Ad(a,b)};k.mn=function(a,b){this.F&&Fc(this.F,b,2,!1);return this.cf(a,b)};k.fn=function(a,b){this.F&&Fc(this.F,b,4,!1);return this.nh(a,b)};k.yn=function(a,b,c){this.F&&Fc(this.F,c,1,!0);this.H||this.hf(a,b,c)};k.Kn=function(a,b,c){this.F&&Fc(this.F,c,2,!0);this.H||this.vh(a,b,c)}; +k.En=function(a,b,c){this.F&&Fc(this.F,c,4,!0);this.H||this.U(a,b,c)};k.cn=function(a,b){this.A.T[this.C]|=this.I;this.B.T[this.D]|=this.I;return this.J.mc(a,b)};k.pn=function(a,b){this.A.T[this.C]|=this.I;this.B.T[this.D]|=this.I;return this.J.bf(a,b)};k.jn=function(a,b){this.A.T[this.C]|=this.I;this.B.T[this.D]|=this.I;return this.J.Nd(a,b)};k.Bn=function(a,b,c){this.A.T[this.C]|=this.I;this.B.T[this.D]|=this.M;this.J.nc(a,b,c)}; +k.Nn=function(a,b,c){this.A.T[this.C]|=this.I;this.B.T[this.D]|=this.M;this.J.kf(a,b,c)};k.Hn=function(a,b,c){this.A.T[this.C]|=this.I;this.B.T[this.D]|=this.M;this.J.jf(a,b,c)};k.dn=function(a,b){return Gc(this.F,b,!1).mc(a,b)};k.qn=function(a,b){return Gc(this.F,b,!1).bf(a,b)};k.kn=function(a,b){return Gc(this.F,b,!1).Nd(a,b)};k.Cn=function(a,b,c){Gc(this.F,c,!0).nc(a,b,c)};k.On=function(a,b,c){Gc(this.F,c,!0).kf(a,b,c)};k.In=function(a,b,c){Gc(this.F,c,!0).jf(a,b,c)};k.Zm=function(a){return this.Fa[a]}; +k.Jj=function(a){return this.Fa[a]};k.bn=function(a){this.A.T[this.C]|=32;this.B.T[this.D]|=32;this.mc=this.Jj;return this.Fa[a]};k.ln=function(a){return this.K.getUint16(a,!0)};k.Oj=function(a){return a&1?this.Fa[a]|this.Fa[a+1]<<8:this.rd[a>>1]};k.on=function(a){this.A.T[this.C]|=32;this.B.T[this.D]|=32;this.bf=this.Oj;return a&1?this.Fa[a]|this.Fa[a+1]<<8:this.rd[a>>1]};k.en=function(a){return this.K.getInt32(a,!0)}; +k.Lj=function(a){return a&3?this.Fa[a]|this.Fa[a+1]<<8|this.Fa[a+2]<<16|this.Fa[a+3]<<24:this.T[a>>2]};k.hn=function(a){this.A.T[this.C]|=32;this.B.T[this.D]|=32;this.Nd=this.Lj;return a&3?this.Fa[a]|this.Fa[a+1]<<8|this.Fa[a+2]<<16|this.Fa[a+3]<<24:this.T[a>>2]};k.xn=function(a,b){this.Fa[a]=b;this.Da=!0};k.Xj=function(a,b){this.Fa[a]=b;this.Da=!0};k.An=function(a,b){this.Fa[a]=b;this.A.T[this.C]|=32;this.B.T[this.D]|=96;this.nc=this.Xj;this.J.Da=!0}; +k.Jn=function(a,b){this.K.setUint16(a,b,!0);this.Da=!0};k.Zj=function(a,b){a&1?(this.Fa[a]=b,this.Fa[a+1]=b>>8):this.rd[a>>1]=b;this.Da=!0};k.Mn=function(a,b){a&1?(this.Fa[a]=b,this.Fa[a+1]=b>>8):this.rd[a>>1]=b;this.A.T[this.C]|=32;this.B.T[this.D]|=96;this.kf=this.Zj;this.J.Da=!0};k.Dn=function(a,b){this.K.setInt32(a,b,!0);this.Da=!0};k.Yj=function(a,b){a&3?(this.Fa[a]=b,this.Fa[a+1]=b>>8,this.Fa[a+2]=b>>16,this.Fa[a+3]=b>>24):this.T[a>>2]=b;this.Da=!0}; +k.Gn=function(a,b){a&3?(this.Fa[a]=b,this.Fa[a+1]=b>>8,this.Fa[a+2]=b>>16,this.Fa[a+3]=b>>24):this.T[a>>2]=b;this.A.T[this.C]|=32;this.B.T[this.D]|=96;this.jf=this.Yj;this.J.Da=!0};function Hc(a){ob&&!dc&&(a=a<<24|a<<8&16711680|a>>8&65280|a>>>24);return a} +var wc=0,cc=2,xc=5,zc=6,Ic=["black","blue","green","cyan"],Ub="NONE RAM ROM VIDEO H/W UNPAGED PAGED".split(" "),vc=0,Bc=[],gc=[u.prototype.an,u.prototype.zn,u.prototype.nn,u.prototype.Ln,u.prototype.gn,u.prototype.Fn],Ec=[u.prototype.$m,u.prototype.yn,u.prototype.mn,u.prototype.Kn,u.prototype.fn,u.prototype.En],Ac=[u.prototype.cn,u.prototype.Bn,u.prototype.pn,u.prototype.Nn,u.prototype.jn,u.prototype.Hn],yc=[u.prototype.dn,u.prototype.Cn,u.prototype.qn,u.prototype.On,u.prototype.kn,u.prototype.In]; +if(ob)var fc=[u.prototype.Zm,u.prototype.xn,u.prototype.ln,u.prototype.Jn,u.prototype.en,u.prototype.Dn],ec=[u.prototype.Jj,u.prototype.Xj,u.prototype.Oj,u.prototype.Zj,u.prototype.Lj,u.prototype.Yj],Jc=[u.prototype.bn,u.prototype.An,u.prototype.on,u.prototype.Mn,u.prototype.hn,u.prototype.Gn]; +function Kc(a,b){t.call(this,"CPU",a);b=a.cycles||b;var c=a.multiplier||1;this.R={};this.R.Xc=b;this.R.yd=c;this.R.If=Math.round(this.R.Xc/1E4)/100;this.R.re=this.R.If*this.R.yd;this.ca.Ib=!1;this.ca.Uj=!1;this.ca.Fe=a.autoStart;this.ca.ji=!1;this.ca.Bf=!1;this.R.Kf=this.R.se=0;this.R.Lf=a.csStart;this.R.Ke=a.csInterval;this.R.Le=a.csStop;this.Ml=this.ag.bind(this);mb(this)}ba(Kc,t);k=Kc.prototype; +k.ic=function(a,b,c,d){this.oa=a;this.ma=b;this.Ea=d;for(b=0;ba.R.If&&(c=Math.round(c/a.R.yd));return c}function Nc(a){a.R.wd=0;a.md=a.Sc=a.Hc=a.A=0;Oc(a);Rc(a,1)} +function Rc(a,b,c){if(void 0!==b){.8>a.R.wd/a.R.re&&(b=1);a.R.yd=b;b=a.R.If*a.R.yd;if(a.R.re!=b){a.R.re=b;b=a.R.re.toFixed(2)+"Mhz";var d=a.ia.setSpeed;d&&(d.textContent=b);a.Zb("target speed: "+b)}c&&a.oa&&Zc(a.oa)}Tc(a,a.Sc);a.Sc=0;a.R.xd=Aa();a.R.Kd=0;Uc(a)} +k.ag=function(a){if(nb(this,!0)){if(!this.ca.Ib){Rc(this);this.oa&&this.oa.start(this.R.xd,Yc(this));this.ca.Ib=!0;this.ca.Uj=!0;this.V&&this.V.start();var b=this.ia.run;b&&(b.textContent="Halt");this.oa&&($c(this.oa,!0),a&&Zc(this.oa,!0))}this.R.zg>=this.R.Xc&&Uc(this,!0);this.R.Pe=0;this.R.Jf=Aa();this.R.Kd&&(a=this.R.Jf-this.R.Kd,a>this.R.Bi&&(this.R.xd+=a,this.R.xd>this.R.Jf&&(this.R.xd=this.R.Jf)));try{do{var c=this.ca.Bf?1:this.R.Vl;if(this.V){ad(this.V);var d=this.V;a=c;var e=d.H[0];if(e.Hd){var f= +(Yc(d.U,d.V)-e.gd)/d.Aa|0,g=bd(d,0)-f;e.mode==cd&&(g-=f);var h=g*d.Aa|0;e.mode==cd&&(h>>=1);a>h&&(a=h)}var c=a,l=this.V;a=c;if(l.A&&l.A[dd]&ed){var m=l.X-Yc(l.U,l.V);0m&&(a=m)}c=a}try{this.zh(c)}catch(y){if("number"!=typeof y)throw y;}var q=this.Hc-this.A;this.Sc+=q;this.R.Pe+=q;Tc(this,0,!0);a=q;this.ca.Bf&&(b=!1,this.R.Kf=this.R.Kf+this.si()|0,this.R.se-=a,0>=this.R.se&&(this.R.se+=this.R.Ke,b=!0),0<=this.R.Le&&this.R.Le<=Yc(this)&&(this.R.Ke=this.R.Le=-1,Oc(this),Qc(this),b=!0),b&&this.Zb(Yc(this)+ +" cycles: checksum="+oa(this.R.Kf)));this.R.Ne-=q;0>=this.R.Ne&&(this.R.Ne+=this.R.Di,this.oa&&fd(this.oa));this.R.Me-=q;0>=this.R.Me&&(this.R.Me+=this.R.Ci,this.oa&&$c(this.oa));this.R.Oe-=q;if(0>=this.R.Oe){this.R.Oe+=this.R.yg;break}}while(this.ca.Ib)}catch(y){Qc(this);Pc(this);this.oa&&this.oa.stop(Aa(),Yc(this));nb(this,!1);kb(this,y.stack||y.message);return}c=setTimeout;d=this.Ml;this.R.Kd=Aa();e=this.R.Bi;this.R.Pe&&(e=Math.round(e*this.R.Pe/this.R.yg));e-=this.R.Kd-this.R.Jf;if(f=this.R.Kd- +this.R.xd)this.R.wd=Math.round(this.Sc/(10*f))/100,864E5<=f&&(this.md=0,this.V&&ad(this.V,!0),Rc(this));if(0>e||this.R.wde&&(this.R.xd-=e),e=0;this.R.zg+=this.R.Pe;this.R.Kd+=e;c(d,e)}else Pc(this),this.oa&&this.oa.stop(Aa(),Yc(this))};k.zh=function(){return 0};function Qc(a,b){a.ca.xf&&(a.ca.mg=!0);a.Hc-=a.A;a.A=0;Tc(a,a.Sc);a.Sc=0;if(a.ca.Ib){a.ca.Ib=!1;a.V&&a.V.stop();var c=a.ia.run;c&&(c.textContent="Run")}a.ca.complete=b} +function Pc(a){a.oa&&(fd(a.oa,void 0),$c(a.oa,void 0))}var Vc=30,Wc=60,Xc=2,Lc=["power","reset"];function gd(a,b,c,d){this.B=a;this.Ea=a.Ea;this.id=b;this.Zf=c||"";this.ha=0;this.Ta=65535;this.C=this.Ta+1;this.ob=this.hc=this.ext=this.jb=this.type=this.va=0;this.ac=-1;this.S=this.Jc=2;this.N=this.ra=65535;this.J=this.Ai;this.H=this.fi;this.I=this.hi;this.A={ha:-1,va:0,Ta:0,jb:0,type:0,ext:0,ac:-1};1==this.id&&(this.$e=0,this.D=null,this.oe=!1,this.G=Array(32),this.F=[]);hd(this,!0,d)}k=gd.prototype; +k.Ai=function(a){this.ha=a&65535;return this.va=this.ha<<4};k.Hf=function(a,b){var c,d,e=this.B;a&=65535;a&4?(c=e.kc.va,d=c+e.kc.Ta|0):(c=e.Kb,d=e.Oc);if(c){c=c+(a&65528)|0;if(d-c|0)return e.A-=15,id(this,c,a,b);this.id>>0)+b<=this.C?this.va+a|0:this.zf()};k.mk=function(a,b){return(a>>>0)+b>this.C?this.va+a|0:this.zf()};k.zf=function(){v.call(this.B,13,0);return-1};k.gi=function(a,b){return(a>>>0)+b<=this.C?this.va+a|0:this.Af()}; +k.nk=function(a,b){return(a>>>0)+b>this.C?this.va+a|0:this.Af()};k.Af=function(){v.call(this.B,13,0);return-1};function ld(a,b,c,d,e){a.ha=b;a.va=d;a.Ta=e;a.C=(e>>>0)+1;a.jb=c;a.type=c&7936;a.ext=c>>16&192;a.ac=(b&4?a.B.kc.va:a.B.Kb)+(b&65528)|0;a.id>>0)+1;a.jb=e;a.type=e&7936;a.ext=0;a.ac=b;a.id>>0)+1,a.jb=a.A.jb,a.type=a.A.type,a.ext=a.A.ext,a.ac=a.A.ac,a.A.ha=-1,hd(a,!0,!0,!1),a.va;a.A.ha=-1;var f=e.fa(b+0),g=e.fa(b+4),h=g&7936,l=e.fa(b+2)|(g&255)<<16,m=e.fa(b+6),q=c&65528;if(80386<=e.aa){var y=f,l=l|(m&65280)<<16,f=f|(m&15)<<16;m&128&&(f=f<<12|4095)}switch(a.id){case od:var w=a.D;a.oe=!1;if(w&&c==qd&&a.F.length){var z=a.F[a.$e-1];if(z&&!z())return-1}var B=c&3,S=(g&24576)>>13,z=-1,X,ca;q|| +b>=e.Kb&&b=a.ob&&(B>a.ob&&(z=x(e),rd(e,x(e),!0),A(e,z),a.oe=!0),z=0);else{if(256==h||2304==h)return sd(a,c,w)?a.va:-1;if(1024==h)z=2,ca=0,Bh||2048==(h&2560))return v.call(e,13,c&65532),-1;if(!(g&32768))return v.call(e,11,c&65532),-1}break;case kd:if(!q||4096>h||512!=(h&2560))return v.call(e,13,c&65532),-1;if(!(g&32768))return v.call(e,12, +c&65532),-1;break;case md:w=h&-513;if(!q||256!=w&&2304!=w)return v.call(e,13,c&65532),-1;2304==w&&(a.Yh=l+e.fa(l+102)|0,a.jk=l+a.Ta|0);break;case jd:if(!(h&4096)&&768>>0)+1,a.jb=g,a.type=h,a.ext=m,a.ac=b,hd(a,!0,!0,!1));return l} +function sd(a,b,c){var d=a.B,e=a.ob,f=d.la.ha,g=d.la.va;if(!c){if(!(d.la.type&512))return v.call(d,13,b&65532),!1;d.Wa(d.la.ac+4,d.la.jb&=-513)}if(-1===d.la.load(b))return!1;var h=d.la.va;if(!1!==c){if(d.la.type&512)return v.call(d,13,b&65532),!1;d.Wa(d.la.ac+4,d.la.jb|=512)}d.la.type=d.la.type&-513|d.la.jb&512;256==d.la.type||768==d.la.type?(d.Wa(g+14,E(d)),d.Wa(g+16,Ad(d)),d.Wa(g+18,d.F),d.Wa(g+20,d.H),d.Wa(g+22,d.K),d.Wa(g+24,d.G),d.Wa(g+26,C(d)),d.Wa(g+28,d.L),d.Wa(g+30,d.J),d.Wa(g+32,d.I),d.Wa(g+ +34,d.ua.ha),d.Wa(g+36,d.ga.ha),d.Wa(g+38,d.W.ha),d.Wa(g+40,d.Ca.ha),d.kc.load(d.fa(h+42)),Bd(d,d.fa(h+16)|(c?16384:0)),d.F=d.fa(h+18),d.H=d.fa(h+20),d.K=d.fa(h+22),d.G=d.fa(h+24),d.L=d.fa(h+28),d.J=d.fa(h+30),d.I=d.fa(h+32),d.ua.load(d.fa(h+34)),d.Ca.load(d.fa(h+40)),Cd(d,d.fa(h+14),d.fa(h+36)),b=38,g=26,a.ob>>0)+1)}; +function hd(a,b,c,d){void 0===c&&(c=!!(a.B.pa&1));a.vd=!1;if(c)if(a.load=a.Hf,a.zi=a.Pl,a.Lb=a.ei,a.Mb=a.gi,void 0===d&&(d=!!(a.B.O&131072)),d)a.load=a.J,a.Lb=a.H,a.Mb=a.I,a.ob=a.hc=3,a.S=2,a.N=a.ra=65535,a.Ta=65535,a.C=a.Ta+1,a.Jc=a.S,a.ac=-1,a.oe=!1;else{if(!(a.ha&-4))a.Lb=a.zf,a.Mb=a.Af;else if(a.type&4096){6144==(a.type&6656)&&(a.Lb=a.zf);if(a.type&2048||!(a.type&512))a.Mb=a.Af;1024==(a.type&3072)&&(a.Lb==a.ei&&(a.Lb=a.mk),a.Mb==a.gi&&(a.Mb=a.nk),a.vd=!0);b&&a.id>13,80386>a.B.aa||!(a.ext&64)?(a.S=2,a.N=65535):(a.S=4,a.N=-1),a.Jc=a.S,a.ra=a.N)}else a.load=a.Ai,a.zi=a.Ql,a.Lb=a.fi,a.Mb=a.hi,a.ob=a.hc=0,a.ac=-1,a.oe=!1}var od=1,zd=2,kd=3,md=4,jd=6,qd=1; +function Ed(a){var b=+a.model||8088,c;switch(b){default:c=4772727;break;case 80286:c=6E6;break;case 80386:c=16E6}Kc.call(this,a,c);this.aa=b;a=a.stepping;this.pd=b+(a?na(a,16):0);this.Vh=61442;this.od=1792;this.Uh=28672;this.lf=4;this.Ha=255;this.B=80286<=this.aa?qb:pb;this.qa=Fd;this.di=Gd;this.ii=Hd;this.mi=Id;if(80186<=this.aa&&(this.qa=Fd.slice(),this.di=Gd.slice(),this.ii=Hd.slice(),this.Ha=31,this.qa[15]=Jd,this.qa[96]=Kd,this.qa[97]=Ld,this.qa[98]=Md,this.qa[99]=Jd,this.qa[100]=Jd,this.qa[101]= +Jd,this.qa[102]=Jd,this.qa[103]=Jd,this.qa[104]=Nd,this.qa[105]=Od,this.qa[106]=Pd,this.qa[107]=Qd,this.qa[108]=Rd,this.qa[109]=Sd,this.qa[110]=Td,this.qa[111]=Ud,this.qa[192]=Vd,this.qa[193]=Wd,this.qa[200]=Xd,this.qa[201]=Yd,this.qa[241]=Zd,this.di[7]=$d,this.ii[7]=$d,80286<=this.aa)){this.Vh=2;this.od|=28672;this.lf=0;this.qa[15]=ae;this.ld=be.slice();for(b=0;b=this.pd&&(this.ld[166]=je,this.ld[167]=ke)}}this.pf=[];this.bi=[];this.cg=0;Nc(this);this.ca.complete=this.ca.qk=!1;this.ri=0;this.Nc=this.X=[];this.yb=this.wh=this.xb=this.mf=this.ye=this.ze=this.Ic=0;le(this)}ba(Ed,Kc); +function Tb(a){var b;if(a.X===a.Nc){a.X=Array(a.mf);a.qf=new u(null,0,0,xc,null,a);Ob(a.qf,a.Ea);for(b=0;b>>20,f=a.Nc[(a.nd+e&a.ze)>>>a.yb],g=f.Nd(e);if(!(g&1))return d||ne.call(a,b,!1,c),a.Ae;if(!(g&4)&&3==a.Ga)return d||ne.call(a,b,!0,c),a.Ae;var h=(b&4190208)>>>10,g=a.Nc[((g&-4096)+h&a.ze)>>>a.yb],l=g.Nd(h);if(!(l&1))return d||ne.call(a,b,!1,c),a.Ae;if(!(l&4)&&3==a.Ga)return d||ne.call(a,b,!0,c),a.Ae;c=a.Nc[((l&-4096)+(b&4095)&a.ze)>>>a.yb];if(d)return c;d=b>>>a.yb;l=a.X[d];b&=-4096;var m;0>2;b.B=g;b.D=h>>2;ob&&dc&&c.T&&!c.controller&&!c.fe&&!c.ge?(b.Fa=c.Fa,b.rd=c.rd,b.T=c.T,Zb(b,Jc)):(b.I=c?Hc(32):0,b.M=c?Hc(96):0,Zb(b,Ac));Ob(b,a.Ea,l);a.X[d]=b;a.nf.push(d);return b}function oe(a){a.X!==a.Nc&&(a.X=a.Nc,a.qf=null,a.nf=null,a.Ae=null)}k=Ed.prototype;k.reset=function(){this.ca.Ib&&Qc(this);le(this);Nc(this);this.ca.error=!1}; +function pe(a,b){var c;switch(b){case 0:c=a.F;break;case 1:c=a.H;break;case 2:c=a.K;break;case 3:c=a.G;break;case 4:c=C(a);break;case 5:c=a.L;break;case 6:c=a.J;break;case 7:c=a.I}return c}function qe(a,b,c){switch(b){case 0:a.F=c;break;case 1:a.H=c;break;case 2:a.K=c;break;case 3:a.G=c;break;case 4:A(a,c);break;case 5:a.L=c;break;case 6:a.J=c;break;case 7:a.I=c}} +function le(a){a.F=0;a.G=0;a.H=0;a.K=0;a.jc=0;a.L=0;a.J=0;a.I=0;a.dc=!1;a.Aa=a.Va=0;a.Ol=[0,0];a.Sl=[0,0];a.ta=0;a.pi=0;a.Z=0;a.pa=65520;a.Tb=0;a.Pc=1023;a.O=a.Wb=0;a.Zd=a.Ce=a.Yd=a.$d=0;a.xc=-1;a.Tc=a.yc=-1;a.bd=a.na=-1;a.ga=new gd(a,od,"CS");a.Ca=new gd(a,zd,"DS");a.ua=new gd(a,zd,"ES");a.W=new gd(a,kd,"SS");A(a,0);rd(a,0);if(80386<=a.aa){switch(a.pd){case 80562:case 80563:a.K=771;break;case 80578:a.K=772;break;case 80594:a.K=773;break;case 80595:case 80596:a.K=776}a.pa=16;a.yi=0;a.Xd=0;a.nd=0; +a.Bb=[0,0,0,0,null,null,0,0];a.sf=[null,null,null,null,null,null,0,0];a.qb=new gd(a,zd,"FS");a.rb=new gd(a,zd,"GS");oe(a)}a.fg=new gd(a,0,"NULL");a.Ba=a.Ca;a.Db=a.W;a.M=a.ba=0;a.C=a.D=-1;a.Xa=a.fg;a.Ka=0;if(80286>a.aa)Cd(a,0,65535);else{a.Kb=0;a.Oc=65535;a.kc=new gd(a,5,"LDT",!0);a.la=new gd(a,md,"TSS",!0);a.bb=new gd(a,jd,"VER",!0);Cd(a,65520,61440);var b,c=E(a);b=a.ga;var d=-65536;80386>b.B.aa&&(d&=16777215);b=b.va=d;a.ea=b+c|0;a.dg=(b>>>0)+(a.ga.Ta>>>0)+1}Bd(a,0);td(a)} +function re(a){2==a.Jc?(a.wi=a.fa,a.Vb=se,a.cc=te,a.Rc=ue,2==a.S?(a.ja=ve,a.wa=we,a.$a=xe):(a.ja=ye,a.wa=ze,a.$a=Ae)):(a.wi=a.da,a.Vb=Be,a.cc=Ce,a.Rc=De,2==a.S?(a.ja=Ee,a.wa=Fe,a.$a=Ge):(a.ja=He,a.wa=Ie,a.$a=Je))}function ud(a,b){a.S!=b&&(a.ba|=1024,a.S=b,a.N=2==b?65535:-1,Ke(a))}function Ke(a){2==a.S?(a.sb=32768,a.ib=a.fa,a.nb=a.Wa,2==a.Jc?(a.ja=ve,a.wa=we,a.$a=xe):(a.ja=Ee,a.wa=Fe,a.$a=Ge)):(a.sb=-2147483648,a.ib=a.da,a.nb=a.Pa,2==a.Jc?(a.ja=ye,a.wa=ze,a.$a=Ae):(a.ja=He,a.wa=Ie,a.$a=Je))} +function Le(a){a.Jc=a.ga.Jc;a.ra=a.ga.ra;re(a);a.S=a.ga.S;a.N=a.ga.N;Ke(a);a.ba&=-3073}k.si=function(){var a=this.F+this.G+this.H+this.K+C(this)+this.L+this.J+this.I|0;return a=a+E(this)+this.ga.ha+this.Ca.ha+this.W.ha+this.ua.ha+Ad(this)|0};function Me(a,b,c){void 0===a.pf[b]&&(a.pf[b]=[]);a.pf[b].push(c)}function Ne(a,b){var c=a.bi[b];null!=c&&(c(--a.cg),delete a.bi[b])} +function Oe(a,b){for(var c=a.Bb[7],d=c>>16,e=0;4>e;e++){if(c&3){var f=!!(d&1),g=a.Bb[e],g=g&~(d>>2&3);if(b){var g=a.X[g>>>a.yb],h=a;f?g.ge++||(h&&(g.F=h),Dc(g,Ec,!1)):g.fe++||(h&&(g.F=h),Cc(g,Ec,!1))}else g=a.X[g>>>a.yb],f?--g.ge||(f=g,f.nc=f.H?f.th:f.hf,f.kf=f.H?f.uh:f.vh,f.jf=f.H?f.sh:f.U):--g.fe||(f=g,f.mc=f.Ad,f.bf=f.cf,f.Nd=f.nh)}c>>=2;d>>=4}} +function Fc(a,b,c,d){if(!(a.M&8192)&&a.Bb[7]&255){c--;var e=a.Bb[7],f=e>>16;d=d?1:0==d?3:0;for(var g=0;4>g;g++){if(e&3&&(f&3)==d){var h=f>>2;if(b+c>=a.Bb[g]&&b<=a.Bb[g]+h){a.Bb[6]|=1<>=2;f>>=4}}}function td(a,b,c){void 0===b&&(b=!!(a.pa&1));void 0===c&&(c=!!(a.O&131072));a.mi=b&&!c?Pe:Id;hd(a.ga,!1,b,c);hd(a.Ca,!1,b,c);hd(a.W,!1,b,c);hd(a.ua,!1,b,c);80386<=a.aa&&(hd(a.qb,!1,b,c),hd(a.rb,!1,b,c));Le(a)} +k.save=function(){var a=new Qe(this);a.set(0,[this.F,this.G,this.H,this.K,C(this),this.L,this.J,this.I]);var b=E(this),c=this.ga.save(),d=this.Ca.save(),e=this.W.save(),f=this.ua.save(),g;null!=this.Kb?(g=[this.pa,this.Kb,this.Oc,this.Tb,this.Pc,this.kc.save(),this.la.save(),this.Wb],80386<=this.aa&&(g.push(this.yi),g.push(this.Xd),g.push(this.nd),g.push(this.Bb),g.push(this.sf))):g=null;b=[b,c,d,e,f,g,Ad(this)];80386<=this.aa&&(b.push(this.qb.save()),b.push(this.rb.save()));a.set(1,b);a.set(2,[this.Ba.Zf, +this.Db.Zf,this.M,this.ba,this.Ka,this.C,this.D]);a.set(3,[0,this.md,this.R.yd]);a.set(4,jc(this.ma,!!(this.pa&-2147483648)));return a.data()}; +k.restore=function(a){var b=a[0];this.F=b[0];this.G=b[1];this.H=b[2];this.K=b[3];var c=b[4];this.L=b[5];this.J=b[6];this.I=b[7];b=a[1];this.ga.restore(b[1]);this.Ca.restore(b[2]);this.W.restore(b[3]);this.ua.restore(b[4]);var d=b[5];d&&d.length&&(this.pa=d[0],this.Kb=d[1],this.Oc=d[2],this.Tb=d[3],this.Pc=d[4],this.kc.restore(d[5]),this.la.restore(d[6]),this.Wb=d[7],80386<=this.aa&&(this.yi=d[8],this.Xd=d[9],this.nd=d[10],this.Bb=d[11],this.sf=d[12]),td(this));Bd(this,b[6]);var d=!1,e;a:{e=this.ma; +var f=a[4],g;for(g=0;g>>0)+(a.ga.Ta>>>0)+1;a.Ga=a.ga.ob;Le(a)}function Cd(a,b,c,d){var e=a.ga;e.$e=b;e.D=d;b=e.load(c);return-1!==b?(Te(a,b+(a.ga.$e&a.ga.N)),a.ga.oe):null} +function Ue(a,b){b=(a.ea>>>0)+b;b>a.dg&&(8088>=a.aa||a.ga.Ta==a.ga.ra?b=a.ga.va+(b-a.dg&a.N):v.call(a,13,0));return b|0}function Ve(a){a.ea=a.bd}function C(a){return a.jc&~a.W.ra|a.ya-a.W.va}function A(a,b){a.jc=b;a.ya=a.W.va+(b&a.W.ra)|0}function We(a,b,c,d,e,f){if(63!=(e&63)&&e!=a.resultType){var g=(e^a.resultType)&a.resultType;g&&(g&1&&Xe(a),g&2&&Ye(a),g&4&&Ze(a),g&8&&$e(a),g&16&&af(a),g&32&&bf(a))}f?(a.Zd=d,a.Yd=b):(a.Zd=b,a.Yd=d);a.Ce=c;a.$d=d;a.resultType=e} +function H(a,b,c,d,e){a.resultType=c|26;a.$d=b;d?cf(a):df(a);e?ef(a):ff(a);return b}function gf(a,b,c,d){c&d?cf(a):df(a);(b^c)&d?ef(a):ff(a)}function hf(a){return Xe(a)?1:0}function Xe(a){a.resultType&1&&(a.O&=-2,(a.Zd^(a.Zd^a.Ce)&(a.Ce^a.Yd))&a.resultType&-2147450752&&(a.O|=1),a.resultType&=-2);return a.O&1}function Ye(a){a.resultType&2&&(a.O&=-5,38505>>((a.$d^a.$d>>4)&15)&1&&(a.O|=4),a.resultType&=-3);return a.O&4} +function Ze(a){a.resultType&4&&(a.O&=-17,(a.Yd^a.Zd^a.Ce)&16&&(a.O|=16),a.resultType&=-5);return a.O&16}function $e(a){a.resultType&8&&(a.O&=-65,a.$d&((a.resultType&-2147450752)-1|a.resultType&-2147450752)||(a.O|=64),a.resultType&=-9);return a.O&64}function af(a){a.resultType&16&&(a.O&=-129,a.$d&a.resultType&-2147450752&&(a.O|=128),a.resultType&=-17);return a.O&128} +function bf(a){a.resultType&32&&(a.O&=-2049,(a.Zd^a.Yd)&(a.Ce^a.Yd)&a.resultType&-2147450752&&(a.O|=2048),a.resultType&=-33);return a.O&2048}function df(a){a.resultType&=-2;a.O&=-2}function jf(a){a.resultType&=-5;a.O&=-17}function kf(a){a.resultType&=-9;a.O&=-65}function ff(a){a.resultType&=-33;a.O&=-2049}function cf(a){a.resultType&=-2;a.O|=1}function lf(a){a.resultType&=-5;a.O|=16}function mf(a){a.resultType&=-9;a.O|=64}function ef(a){a.resultType&=-33;a.O|=2048} +function Ad(a){return a.O&-2262|Xe(a)|Ye(a)|Ze(a)|$e(a)|af(a)|bf(a)}function nf(a,b){b|=a.pa&1|65520;a.pa=a.pa&-65536|b&65535;a.pa&1&&td(a,!0)}function Bd(a,b,c){a.pa&1||(b&=~a.Uh);void 0===c&&(c=a.Ga);c?b=b&-12289|a.O&12288:a.Wb=(b&12288)>>12;c>a.Wb&&(b=b&-513|a.O&512);a.resultType=128;a.O=a.O&~(a.od|2261)|b&(a.od|2261)|a.Vh;a.O&256&&(a.Ka|=2,a.M|=4)} +function of(a,b,c){var d=0;if(a.pa&1&&(a.Ga>a.Wb||a.O&131072)&&a.la.Yh)for(var e=a.la.Yh+(b>>>3),d=(1<>>=8,e++;return d?(v.call(a,13,0),!1):!0} +k.wb=function(a,b,c){switch(b){case "EAX":case "EBX":case "ECX":case "EDX":case "ESP":case "EBP":case "ESI":case "EDI":case "EIP":case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "IP":case "PC":case "CS":case "DS":case "SS":case "ES":case "FS":case "GS":case "CR0":case "CR2":case "CR3":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "V":this.ia[b]=c;this.ri++;a=!0;break;default:a=Kc.prototype.wb.call(this,a,b,c)}return a}; +function pf(a,b,c,d){var e=(d?a.Nc:a.X)[(b&a.Ic)>>>a.yb];e&&e.type==xc&&(e=Gc(a,b,!1,!0));if(e){var f=b&a.xb;if(!c||1==c)return e.Ad(f,b);if(2==c)return f>>this.yb].mc(a&this.xb,a)}; +k.fa=function(a){var b=a&this.xb,c=(a&this.Ic)>>>this.yb;this.A-=this.B.Qf;if(b>>this.yb;if(b>>this.yb].nc(a&this.xb,b&255,a)}; +k.Wa=function(a,b){var c=a&this.xb,d=(a&this.Ic)>>>this.yb;this.A-=this.B.Qf;c>8&255,a+1))};k.Pa=function(a,b){var c=a&this.xb,d=(a&this.Ic)>>>this.yb;this.A-=this.B.Qf;if(c>>=8}};function qf(a,b,c){a.Xa=b;a.ab=c&a.ra;a.C=b.Lb(a.ab,1);return a.M&1?0:a.Eb(a.C)} +function I(a,b){return qf(a,a.Ba,b)}function J(a,b){return qf(a,a.Db,b)}function rf(a,b,c){a.Xa=b;a.ab=c&a.ra;a.C=b.Lb(a.ab,a.S);return a.M&1?0:a.ib(a.C)}function K(a,b){a.Xa=a.Ba;a.ab=b&a.ra;a.C=a.Xa.Lb(a.ab,2);return a.M&1?0:a.fa(a.C)}function L(a,b){a.Xa=a.Db;a.ab=b&a.ra;a.C=a.Xa.Lb(a.ab,2);return a.M&1?0:a.fa(a.C)}function M(a,b){a.Xa=a.Ba;a.ab=b&a.ra;a.C=a.Xa.Lb(a.ab,4);return a.M&1?0:a.da(a.C)}function N(a,b){a.Xa=a.Db;a.ab=b&a.ra;a.C=a.Xa.Lb(a.ab,4);return a.M&1?0:a.da(a.C)} +function sf(a,b){a.M&2||a.Dc(a.Xa.Mb(a.ab,1),b)}function tf(a,b){a.M&2||a.Wa(a.Xa.Mb(a.ab,2),b)}function uf(a,b){a.M&2||a.Pa(a.Xa.Mb(a.ab,4),b)}function vd(a,b,c){return a.ib(b.Lb(c,a.S))}k.ka=function(){var a=Ue(this,1),b=this.Eb(this.ea);this.ea=a;return b};function vf(a){var b=Ue(a,2),c=a.fa(a.ea);a.ea=b;return c}function O(a){var b=Ue(a,a.Jc),c=a.wi(a.ea);a.ea=b;return c}k.za=function(){var a=Ue(this,this.S),b=this.ib(this.ea);this.ea=a;return b}; +k.P=function(){var a=Ue(this,1),b=this.Eb(this.ea)<<24>>24;this.ea=a;return b};function x(a){var b=a.ib(a.ya);a.ya=a.ya+a.S|0;var c=a.eg-a.ya|0;0>c&&0<=(a.eg^a.ya)&&(8088>=a.aa||!a.W.vd&&a.W.Ta==a.W.ra||a.W.vd&&!a.W.Ta?A(a,a.ya-a.W.va&a.W.ra):-1>c&&v.call(a,12,0));return b} +function wd(a,b,c,d){c=a.ya-c|0;0>(c-a.Be|0)&&0<=(a.Be^c)&&(8088>=a.aa||!a.W.vd&&a.W.Ta==a.W.ra||a.W.vd&&!a.W.Ta?(A(a,c-a.W.va&a.W.ra),c=a.ya):v.call(a,12,0));switch(d){case 1:a.Dc(c,b);break;case 2:a.Wa(c,b);break;case 4:a.Pa(c,b)}a.ya=c}function D(a,b){var c=a.ya-a.S|0;0>(c-a.Be|0)&&0<=(a.Be^c)&&(8088>=a.aa||!a.W.vd&&a.W.Ta==a.W.ra||a.W.vd&&!a.W.Ta?(A(a,c-a.W.va&a.W.ra),c=a.ya):v.call(a,12,0));a.nb(c,b);a.ya=c} +function wf(a,b,c){var d=4;1==b.length&&(d=1,c=c?1:0);if(80386>a.aa)2this.aa?0:1;for(var b=0;2>b;b++){switch(a){case 0:if(this.Ka&1&&this.O&512){var c=xf(this.V);if(-1<=c&&(this.Ka&=-2,0<=c)){this.Ka&=-5;yf.call(this,c);break a}}break;case 1:if(this.Ka&2){this.Ka&=-3;80386<= +this.aa&&(this.Bb[6]|=16384);yf.call(this,1);break a}}a=1-a}}if(this.Ka&4){this.M=this.A=0;break}}this.M=0;this.qa[this.ka()].call(this)}while(0>11;Cf(this);Df(this,a[b++]);for(c=0;c=Ef&&Ff(a,Gf))}function Cf(a){a.Y&=-129;a.Y&~a.F&63&&(a.Y|=128);if(a.Y&128&&!(a.F&128))return a=a.V,a.aa>=Ef?Hf(a,Gf):a.ba&If||yf.call(a.U,2),!0;a=a.V;a.aa>=Ef&&Ff(a,Gf);return!1}function Jf(a,b){80387<=a.aa||(b&=-65);a.Y|=b;return Cf(a)} +function Kf(a,b){return isFinite(b)?!0:!Jf(a,Infinity===b?8:16)}function Lf(a,b,c){var d=null;null!=b&&null!=c&&(d=b+c,Kf(a,d)||(d=null));return d}function Of(a,b,c){var d=null;null!=b&&null!=c&&(d=b-c,Kf(a,d)||(d=null));return d}function Pf(a,b,c){var d=null;null!=b&&null!=c&&(d=b*c,Kf(a,d)||(d=null));return d}function Qf(a,b,c){var d=null;null==b||null==c||!c&&Jf(a,2)||(d=b/c,Kf(a,d)||(d=null));return d} +function Rf(a,b,c){if(null!=b&&null!=c){var d=0;isNaN(b)||isNaN(c)?d=17664:(b-=c,0>b?d=256:b||(d=16384));a.Y=a.Y&-18177|d;return!0}return!1}function Sf(a,b,c){if(null==b)return null;var d=a.F&3072;d?d=1024==d||3072==d&&0=c){if(Jf(a,1))return null;d=-c}else if(d<-c){if(Jf(a,1))return null;d=-c}a.G[0]=d|0;2147483648d&&(a.G[1]=-1))}return d} +function Tf(a,b){var c=3;a.C&1<=c;c<<=1)3!=(b&3)&&(a.C|=c),b>>=2}function Uf(a){var b=a.B+0&7;return a.C&1<>20&2047;var e=2147483648|(d&1048575)<<11|c>>>21;2047==b?b=32767:b?b+=15360:e&=2147483647;a.D[0]=c<<11;a.D[1]=e;a.D[2]=d>>16&32768|b;d=a.D}return d}function Xf(a){return a.U.fa(a.U.C)<<16>>16} +function Yf(a){return a.U.da(a.U.C)}function Zf(a){a.ja[0]=a.U.da(a.U.C);return a.X[0]}function $f(a){a.G[0]=a.U.da(a.U.C);a.G[1]=a.U.da(a.U.C+4);return a.K[0]}function ag(a){a.D[0]=a.U.da(a.U.C);a.D[1]=a.U.da(a.U.C+4);a.D[2]=a.U.fa(a.U.C+8);return a.D}k.rh=function(){this.U.Pa(this.U.C,this.G[0])};k.Tj=function(){this.U.Pa(this.U.C,this.G[0]);this.U.Pa(this.U.C+4,this.G[1])};function bg(a){a.U.Pa(a.U.C,a.D[0]);a.U.Pa(a.U.C+4,a.D[1]);a.U.Wa(a.U.C+8,a.D[2])} +function cg(a,b){var c=b[1],d=(b[2]&32768)>>4,e=b[2]&32767;b=b[0]>>>11|c<<21;c=c>>11&1048575;32767==e?e=2047:e&&(e+=-15360,0>=e&&(e=2047,b=c=0));a.G[0]=b;a.G[1]=c|(d|e)<<20;return a.K[0]}function dg(a,b){for(var c=0,d=1;b--;)c+=(a&15)*d,d*=10,a>>=4;return c}function eg(a,b){for(var c=0,d=0;b--;)c|=a%10<>11;Cf(a);Df(a,d.ib(b+=d.S));!(d.pa&1)||d.O&131072?(a.I=d.ib(b+=d.S),c=d.ib(b+=d.S),a.O=c&2047,a.I|=(c&-4096)<<4,a.L=-1,a.J=d.ib(b+=d.S),a.J|=(d.ib(b+=d.S)&-4096)<<4,a.M=-1):(a.I=d.ib(b+=d.S),c=d.ib(b+=d.S),a.L=c&65535,a.O=c>>16&2047,a.J=d.ib(b+=d.S),a.M=d.ib(b+=d.S)&65535);return b+d.S} +function ig(a,b){var c=a.U;c.nb(b,a.F);c.nb(b+=c.S,a.Y|a.B<<11);c.nb(b+=c.S,Bf(a));if(!(c.pa&1)||c.O&131072){var d=(a.L<<4)+a.I;c.nb(b+=c.S,d);c.nb(b+=c.S,d>>4&-4096|a.O);d=(a.M<<4)+a.J;c.nb(b+=c.S,d);c.nb(b+=c.S,d>>4&-4096)}else c.nb(b+=c.S,a.I),c.nb(b+=c.S,a.L|a.O<<16),c.nb(b+=c.S,a.J),c.nb(b+=c.S,a.M);return b+c.S}function jg(){this.Y&=-32896;Cf(this)}function kg(){Rf(this,P(this,0),P(this,this.A))}function lg(){Rf(this,P(this,0),P(this,this.A))&&fg(this)}function mg(){lg.call(this)} +function ng(){Q(this,0,Qf(this,P(this,0),Zf(this)))}function og(){this.C&=~(1<>20&2047)-1023),this.G[1]=(this.G[1]|1072693248)&-1073741825,gg(this,this.K[0]))},102:function(){this.B=this.B-1&7;this.Y&=-513},103:function(){this.B=this.B+1&7;this.Y&=-513},112:function(){Q(this, +0,P(this,0)%P(this,1))},113:function(){Q(this,1,P(this,1)*Math.log(P(this,0)+1)/Math.LN2)&&fg(this)},114:function(){var a=P(this,0),b=null;if(0<=a||!Jf(this,1))b=Math.sqrt(a),Kf(this,b)||(b=null);Q(this,0,b)},116:function(){Q(this,0,Sf(this,P(this,0),Hg))},117:function(){var a=P(this,0),b=P(this,1);null!=a&&null!=b&&Q(this,0,a*Math.pow(2,0>>0);gg(this,a)},6:function(){var a= +Sf(this,fg(this));null!=a&&(this.D[0]=eg(a,8),this.D[1]=eg(a/1E8,8),this.D[2]=eg(a/1E16,2),0>a&&(this.D[2]|=32768),bg(this))},7:function(){null!=Sf(this,P(this,0),Hg)&&(this.Tj(),fg(this))},48:function(){og.call(this);fg(this)},49:Bg,50:wg,51:wg,52:zg}},Jg=[jg,pg,qg,rg,sg,tg,xg,ug,yg,zg];Ma(function(){for(var a=eb(document,"pcx86","fpu"),b=0;b>16,c=c<<16>>16,d=d<<16>>16);this.A-=this.B.Gi;(bd)&&v.call(this,5);this.M|=2;return a}function Sg(a,b){var c=0;if(b){kf(this);for(var d=1;d&this.N;){if(b&d){a=c;break}d<<=1;c++}}else mf(this);this.A-=11+3*c;return a}function Tg(a,b){var c=0;if(b){kf(this);for(var d=2==this.S?15:31,e=1<>>=1;c++;d--}}else mf(this);this.A-=11+3*c;return a} +function Ug(a,b){a&1<<(b&(2==this.S?15:31))?cf(this):df(this);this.A-=-1===this.C?3:6;this.M|=2;return a}function Vg(a,b){b=1<<(b&(2==this.S?15:31));a&b?cf(this):df(this);this.A-=-1===this.C?6:8;return a^b}function Wg(a,b){b=1<<(b&(2==this.S?15:31));a&b?cf(this):df(this);this.A-=-1===this.C?6:8;return a&~b}function Xg(a,b){b=1<<(b&(2==this.S?15:31));a&b?cf(this):df(this);this.A-=-1===this.C?6:8;return a|b} +function Yg(a,b){if(-1===this.C)return Ug.call(this,a,b);var c=this.S<<3;if(b>=c||b<-c)a=rf(this,this.Xa,this.ab+(b>>(2==this.S?4:5))*this.S);b=1<<(b&(2==this.S?15:31));a&b?cf(this):df(this);this.A-=6;this.M|=2;return a}function Zg(a,b){if(-1===this.C)return Vg.call(this,a,b);var c=this.S<<3;if(b>=c||b<-c)a=rf(this,this.Xa,this.ab+(b>>(2==this.S?4:5))*this.S);b=1<<(b&(2==this.S?15:31));a&b?cf(this):df(this);this.A-=8;return a^b} +function $g(a,b){if(-1===this.C)return Wg.call(this,a,b);var c=this.S<<3;if(b>=c||b<-c)a=rf(this,this.Xa,this.ab+(b>>(2==this.S?4:5))*this.S);b=1<<(b&(2==this.S?15:31));a&b?cf(this):df(this);this.A-=8;return a&~b}function ah(a,b){if(-1===this.C)return Xg.call(this,a,b);var c=this.S<<3;if(b>=c||b<-c)a=rf(this,this.Xa,this.ab+(b>>(2==this.S?4:5))*this.S);b=1<<(b&(2==this.S?15:31));a&b?cf(this):df(this);this.A-=8;return a|b} +function bh(a,b){We(this,a,b,a-b|0,191,!0);this.A-=-1===this.D?-1===this.C?this.B.Xb:this.B.Fg:this.B.vb;this.M|=2;return a}function ch(a,b){We(this,a,b,a-b|0,this.sb|63,!0);this.A-=-1===this.D?-1===this.C?this.B.Xb:this.B.Fg:this.B.vb;this.M|=2;return a} +function dh(a){if(this.Vd){var b=this.Vd,c=this.pi,d=this.Z,e=d>>3&7;b.A=d&7;var f=(3>(d>>6&3)?0:48)+e;(217==c||219==c)&&52<=f&&(f=e<<4|b.A);if(e=Ig[c][f]){if(0>Jg.indexOf(e)){var f=b.U,g=f.bd;8087==b.aa&&(f.ba&16&&g++,f.ba&32&&g++);b.L=f.ga.ha;b.I=g-f.ga.va;-1!==f.C&&(b.M=f.Xa.ha,b.J=f.C-f.Xa.va);b.O=(c&7)<<8|d}e.call(b)}}this.A-=-1===this.C?2:8;return a}function eh(a){if(80186>this.aa)return R.call(this,a);v.call(this,13,0);return a}function $d(a){v.call(this,6);return a} +function R(a){ce.call(this);return a}function fh(a,b){a=gh.call(this,this.P(),b);80386>this.aa&&(this.A-=12);return a}function hh(a,b){a=this.za();a=2==this.S?gh.call(this,a,b):ih.call(this,a,b);80386>this.aa&&(this.A-=12);return a}function jh(a,b){var c=!1;0>b&&(b=-b|0,c=!c);0>a&&(a=-a|0,c=!c);kh.call(this,a,b);c&&(this.Aa=~this.Aa+1|0,this.Va=~this.Va+(this.Aa?0:1)|0)} +function gh(a,b){a=(a<<16>>16)*(b<<16>>16)|0;32767a?(cf(this),ef(this)):(df(this),ff(this));this.A-=-1===this.C?9:12;return a&65535}function ih(a,b){jh.call(this,a,b);this.Va!=this.Aa>>31?(cf(this),ef(this)):(df(this),ff(this));this.A-=-1===this.C?9:12;return this.Aa}function lh(a,b){this.A-=14+(-1===this.C?0:2);kf(this);-1!==this.bb.load(b)&&this.bb.hc>=this.Ga&&this.bb.hc>=(b&3)&&(mf(this),a=this.bb.jb&-256,2=this.Ga)&&this.bb.hc>=(b&3))return mf(this),this.bb.Ta;kf(this);return a}function sh(a,b){if(-1===this.C)return ce.call(this),a;rd(this,this.fa(this.C+this.S));this.A-=this.B.te;return b} +function th(a,b){this.A-=-1===this.D?-1===this.C?this.B.pj:this.B.oj:this.B.mj;return b}function uh(a,b){switch(this.Z>>3&7){case 4:this.ta=this.F;break;case 5:this.ta=this.H;break;case 6:this.ta=this.K;break;case 7:this.ta=this.G}return b}function vh(a,b){return b} +function wh(a,b){a=this.Z>>3&7;switch(a){case 0:this.ta=this.F;break;case 2:this.ta=this.K;break;case 3:this.ta=this.G;break;default:if(80286==this.aa||80386==this.aa&&4!=a&&5!=a)v.call(this,6);else switch(a){case 1:this.ta=this.H;break;case 4:this.ta=C(this);break;case 5:this.ta=this.L;break;case 6:this.ta=this.J;break;case 7:this.ta=this.I}}return th.call(this,0,b)} +function xh(a,b){switch(this.Z>>3&7){case 0:b=this.ua.ha;break;case 1:b=this.ga.ha;break;case 2:b=this.W.ha;break;case 3:b=this.Ca.ha;break;case 4:if(80386<=this.aa){b=this.qb.ha;break}v.call(this,6);b=a;break;case 5:if(80386<=this.aa){b=this.rb.ha;break}default:v.call(this,6),b=a}-1!==this.D&&ud(this,2);return th.call(this,0,b)} +function kh(a,b){if(a&-65536||b&-65536){var c=b&65535;b>>>=16;var d=a&65535;a>>>=16;var e=c*d,d=(e>>>16)+b*d,f=d>>>16,d=(d&65535)+c*a;this.Aa=d<<16|e&65535;this.Va=f+((d>>>16)+b*a)|0}else this.Aa=a*b|0,this.Va=0}function yh(a,b){this.A-=-1===this.D?-1===this.C?this.B.Xb:this.B.vb:this.B.lc;return H(this,a|b,128)}function zh(a,b){this.A-=-1===this.D?-1===this.C?this.B.Xb:this.B.vb:this.B.lc;return H(this,a|b,this.sb)&this.N} +function Ah(a,b){var c=a-b-hf(this)|0;We(this,a,b,c,191,!0);this.A-=-1===this.D?-1===this.C?this.B.Xb:this.B.vb:this.B.lc;return c&255}function Bh(a,b){var c=a-b-hf(this)|0;We(this,a,b,c,this.sb|63,!0);this.A-=-1===this.D?-1===this.C?this.B.Xb:this.B.vb:this.B.lc;return c&this.N}function Ch(){return bf(this)?1:0}function Dh(){return Xe(this)?1:0}function Eh(){return Xe(this)?0:1}function Fh(){return $e(this)?1:0}function Gh(){return $e(this)?0:1}function Hh(){return Xe(this)||$e(this)?1:0} +function Ih(){return Xe(this)||$e(this)?0:1}function Jh(){return af(this)?1:0}function Kh(){return af(this)?0:1}function Lh(){return Ye(this)?1:0}function Mh(){return Ye(this)?0:1}function Nh(){return!af(this)!=!bf(this)?1:0}function Oh(){return!af(this)!=!bf(this)?0:1}function Ph(){return $e(this)||!af(this)!=!bf(this)?1:0}function Qh(){return $e(this)||!af(this)!=!bf(this)?0:1}function Rh(a,b){return Sh.call(this,a,b,this.ka())}function Wh(a,b){return Xh.call(this,a,b,this.ka())} +function Yh(a,b){return Sh.call(this,a,b,this.H&31)}function Zh(a,b){return Xh.call(this,a,b,this.H&31)}function $h(a,b){return ai.call(this,a,b,this.ka())}function bi(a,b){return ci.call(this,a,b,this.ka())}function di(a,b){return ai.call(this,a,b,this.H&31)}function ei(a,b){return ci.call(this,a,b,this.H&31)}function fi(a,b){var c=a-b|0;We(this,a,b,c,191,!0);this.A-=-1===this.D?-1===this.C?this.B.Xb:this.B.vb:this.B.lc;return c&255} +function gi(a,b){var c=a-b|0;We(this,a,b,c,this.sb|63,!0);this.A-=-1===this.D?-1===this.C?this.B.Xb:this.B.vb:this.B.lc;return c&this.N}function hi(a,b){H(this,a&b,128);this.A-=-1===this.D?-1===this.C?this.B.hh:this.B.Xe:this.B.Xe;this.M|=2;return a}function ii(a,b){H(this,a&b,this.sb);this.A-=-1===this.D?-1===this.C?this.B.hh:this.B.Xe:this.B.Xe;this.M|=2;return a}function ji(a,b){var c=this.F&this.N,d=(1<<(this.H&31))-1;return a&~(d<>(this.F&this.N)&(1<<(this.H&31))-1&this.N}function li(a,b){if(-1===this.C){switch(this.Z&7){case 0:this.F=this.F&-256|a;break;case 1:this.H=this.H&-256|a;break;case 2:this.K=this.K&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.F=this.F&-65281|a<<8;break;case 5:this.H=this.H&-65281|a<<8;break;case 6:this.K=this.K&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}this.A-=this.B.jh}else this.D=this.C,sf(this,a),this.A-=this.B.ih;return b} +function mi(a,b){if(-1===this.C){switch(this.Z&7){case 0:this.F=this.F&~this.N|a;break;case 1:this.H=this.H&~this.N|a;break;case 2:this.K=this.K&~this.N|a;break;case 3:this.G=this.G&~this.N|a;break;case 4:A(this,C(this)&~this.N|a);break;case 5:this.L=this.G&~this.N|a;break;case 6:this.J=this.J&~this.N|a;break;case 7:this.I=this.I&~this.N|a}this.A-=this.B.jh}else this.D=this.C,this.M&2||this.nb(this.Xa.Mb(this.ab,this.S),a),this.A-=this.B.ih;return b} +function ni(a,b){a^=b;H(this,a,128);this.A-=-1===this.D?-1===this.C?this.B.Xb:this.B.vb:this.B.lc;return a}function oi(a,b){this.A-=-1===this.D?-1===this.C?this.B.Xb:this.B.vb:this.B.lc;return H(this,a^b,this.sb)&this.N}function pi(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function qi(a){var b=a-1|0;We(this,a,1,b,this.sb|62,!0);this.A-=2;return a&~this.N|b&this.N} +function ri(a,b,c){c>>>=0;if(!c||c<=b>>>0)return!1;var d=0,e=1,f=this.Ol;f[0]=c>>>0;f[1]=0;c=this.Sl;c[0]=a>>>0;for(c[1]=b>>>0;0>>=0,a[1]++),e+=e;do 0<=pi(c,f)&&(a=c,b=f,a[0]-=b[0],a[1]-=b[1],0>a[0]&&(a[0]>>>=0,a[1]--),d+=e),a=f,a[0]>>>=1,a[1]&1&&(a[0]=(a[0]|2147483648)>>>0),a[1]>>>=1,e/=2;while(1<=e);this.Aa=d;this.Va=c[0];return!0}function si(a){var b=a+1|0;We(this,a,1,b,this.sb|62);this.A-=2;return a&~this.N|b&this.N} +function Dd(a){this.nd=a;this.pa&-2147483648&&Tb(this)}function ti(a){this.M|=1;this.cc.call(this,a);this.A-=-1===this.C?4:5}function Sh(a,b,c){if(c){16>>16-c)&65535;H(this,a,32768,d&32768)}return a}function Xh(a,b,c){if(c){var d=a<>>32-c;H(this,a,-2147483648,d&-2147483648)}return a}function ai(a,b,c){if(c){16>>c-1;a=(d>>>1|b<<16-c)&65535;H(this,a,32768,d&1)}return a} +function ci(a,b,c){if(c){var d=a>>>c-1;a=d>>>1|b<<32-c;H(this,a,-2147483648,d&1)}return a}function ui(){this.A-=-1===this.C?2:this.B.Cj;return 1}function vi(){var a=this.H&255;this.A-=(-1===this.C?this.B.$g:this.B.Zg)+(a<this.xc?(-1!=this.Tc&&(this.Tc!==this.ga.ha&&(this.ga.ob=this.Tc&3,Se(this,this.Tc)),this.Tc=-1),this.bd!==this.ea&&Te(this,this.bd),-1!=this.yc&&(this.yc!==this.W.ha&&rd(this,this.yc),this.yc=-1),-1!==this.na&&(this.na!==this.ya&&A(this,this.jc&~this.W.ra|this.na-this.W.va),this.na=-1)):8!=this.xc?(b=0,a=8):(b=0,a=-1,le(this),e=d=!1)):Te(this,this.bd);var f=a,g=b,h=pf(this,this.ea);204!=h||this.Pc||(d=!1);this.O&131072&&(6==f&& +99==h||13==f&&205==h)&&(d=!1);983040<=this.ea&&1048575>=this.ea&&(d=!1);if(d){var l=this.ca.Ib,f="Fault "+oa(f,2,!0)+(null!=g?" ("+oa(g,4,!0)+")":"")+" on opcode "+oa(h,2,!0);d&&l&&(f+=" (blocked)");this.xa(f);Qc(this)}if(d&&e)throw-1;if(e)throw this.xc=a,Ai.call(this,a,b,c),this.bd=this.ea,this.M=1==a?this.M|8192:this.M|4096,a;}function ne(a,b,c){this.Xd=a;a=0;b&&(a|=1);c&&(a|=2);3==this.Ga&&(a|=4);v.call(this,14,a)} +function Ci(a){var b=a.jb&7680;a.ha&65528&&(6144==b||7168==b||7168>b&&a.hc>8&255;break;case 197:c=this.H>>8&255;break;case 198:c=this.K>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.Z>>3&7;switch(d){case 0:b=this.F&255;break;case 1:b=this.H&255;break;case 2:b=this.K&255;break;case 3:b=this.G&255;break;case 4:b=this.F>>8&255;break;case 5:b=this.H>>8&255;break;case 6:b=this.K>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=this.F&-256|a;break;case 1:this.H= +this.H&-256|a;break;case 2:this.K=this.K&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.F=this.F&-65281|a<<8;break;case 5:this.H=this.H&-65281|a<<8;break;case 6:this.K=this.K&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function te(a){var b,c,d=(this.Z=this.ka())&199;switch(d){case 0:b=I(this,this.G+this.J);this.D=this.C;break;case 1:b=I(this,this.G+this.I);this.D=this.C;break;case 2:b=J(this,this.L+this.J);this.D=this.C;break;case 3:b=J(this,this.L+this.I);this.D=this.C;break;case 4:b=I(this,this.J);this.D=this.C;break;case 5:b=I(this,this.I);this.D=this.C;break;case 6:b=I(this,O(this));this.D=this.C;break;case 7:b=I(this,this.G);this.D=this.C;break;case 64:b=I(this,this.G+this.J+this.P());this.D=this.C;break;case 65:b= +I(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=J(this,this.L+this.J+this.P());this.D=this.C;break;case 67:b=J(this,this.L+this.I+this.P());this.D=this.C;break;case 68:b=I(this,this.J+this.P());this.D=this.C;break;case 69:b=I(this,this.I+this.P());this.D=this.C;break;case 70:b=J(this,this.L+this.P());this.D=this.C;break;case 71:b=I(this,this.G+this.P());this.D=this.C;break;case 128:b=I(this,this.G+this.J+O(this));this.D=this.C;break;case 129:b=I(this,this.G+this.I+O(this));this.D=this.C; +break;case 130:b=J(this,this.L+this.J+O(this));this.D=this.C;break;case 131:b=J(this,this.L+this.I+O(this));this.D=this.C;break;case 132:b=I(this,this.J+O(this));this.D=this.C;break;case 133:b=I(this,this.I+O(this));this.D=this.C;break;case 134:b=J(this,this.L+O(this));this.D=this.C;break;case 135:b=I(this,this.G+O(this));this.D=this.C;break;case 192:b=this.F&255;break;case 193:b=this.H&255;break;case 194:b=this.K&255;break;case 195:b=this.G&255;break;case 196:b=this.F>>8&255;break;case 197:b=this.H>> +8&255;break;case 198:b=this.K>>8&255;break;case 199:b=this.G>>8&255;break;default:b=0}switch(this.Z>>3&7){case 0:c=this.F&255;break;case 1:c=this.H&255;break;case 2:c=this.K&255;break;case 3:c=this.G&255;break;case 4:c=this.F>>8&255;break;case 5:c=this.H>>8&255;break;case 6:c=this.K>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:sf(this,a);this.A-=this.B.Ac;break;case 1:case 2:sf(this,a);this.A-=this.B.Bc;break;case 4:case 5:case 7:sf(this,a);this.A-= +this.B.ec;break;case 6:sf(this,a);this.A-=this.B.Yc;break;case 64:case 67:case 128:case 131:sf(this,a);this.A-=this.B.Fb;break;case 65:case 66:case 129:case 130:sf(this,a);this.A-=this.B.Gb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:sf(this,a);this.A-=this.B.Na;break;case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.K=this.K&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H=this.H& +-65281|a<<8;break;case 198:this.K=this.K&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function ue(a,b){var c,d=(this.Z=this.ka())&199;switch(d){case 0:c=I(this,this.G+this.J);this.D=this.C;break;case 1:c=I(this,this.G+this.I);this.D=this.C;break;case 2:c=J(this,this.L+this.J);this.D=this.C;break;case 3:c=J(this,this.L+this.I);this.D=this.C;break;case 4:c=I(this,this.J);this.D=this.C;break;case 5:c=I(this,this.I);this.D=this.C;break;case 6:c=I(this,O(this));this.D=this.C;break;case 7:c=I(this,this.G);this.D=this.C;break;case 64:c=I(this,this.G+this.J+this.P());this.D=this.C;break;case 65:c= +I(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=J(this,this.L+this.J+this.P());this.D=this.C;break;case 67:c=J(this,this.L+this.I+this.P());this.D=this.C;break;case 68:c=I(this,this.J+this.P());this.D=this.C;break;case 69:c=I(this,this.I+this.P());this.D=this.C;break;case 70:c=J(this,this.L+this.P());this.D=this.C;break;case 71:c=I(this,this.G+this.P());this.D=this.C;break;case 128:c=I(this,this.G+this.J+O(this));this.D=this.C;break;case 129:c=I(this,this.G+this.I+O(this));this.D=this.C; +break;case 130:c=J(this,this.L+this.J+O(this));this.D=this.C;break;case 131:c=J(this,this.L+this.I+O(this));this.D=this.C;break;case 132:c=I(this,this.J+O(this));this.D=this.C;break;case 133:c=I(this,this.I+O(this));this.D=this.C;break;case 134:c=J(this,this.L+O(this));this.D=this.C;break;case 135:c=I(this,this.G+O(this));this.D=this.C;break;case 192:c=this.F&255;break;case 193:c=this.H&255;break;case 194:c=this.K&255;break;case 195:c=this.G&255;break;case 196:c=this.F>>8&255;break;case 197:c=this.H>> +8&255;break;case 198:c=this.K>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}a=a[this.Z>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:sf(this,a);this.A-=this.B.Ac;break;case 1:case 2:sf(this,a);this.A-=this.B.Bc;break;case 4:case 5:case 7:sf(this,a);this.A-=this.B.ec;break;case 6:sf(this,a);this.A-=this.B.Yc;break;case 64:case 67:case 128:case 131:sf(this,a);this.A-=this.B.Fb;break;case 65:case 66:case 129:case 130:sf(this,a);this.A-=this.B.Gb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:sf(this, +a);this.A-=this.B.Na;break;case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.K=this.K&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H=this.H&-65281|a<<8;break;case 198:this.K=this.K&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8}} +function ve(a){var b,c;switch((this.Z=this.ka())&199){case 0:c=K(this,this.G+this.J);this.A-=this.B.Ac;break;case 1:c=K(this,this.G+this.I);this.A-=this.B.Bc;break;case 2:c=L(this,this.L+this.J);this.A-=this.B.Bc;break;case 3:c=L(this,this.L+this.I);this.A-=this.B.Ac;break;case 4:c=K(this,this.J);this.A-=this.B.ec;break;case 5:c=K(this,this.I);this.A-=this.B.ec;break;case 6:c=K(this,O(this));this.A-=this.B.Yc;break;case 7:c=K(this,this.G);this.A-=this.B.ec;break;case 64:c=K(this,this.G+this.J+this.P()); +this.A-=this.B.Fb;break;case 65:c=K(this,this.G+this.I+this.P());this.A-=this.B.Gb;break;case 66:c=L(this,this.L+this.J+this.P());this.A-=this.B.Gb;break;case 67:c=L(this,this.L+this.I+this.P());this.A-=this.B.Fb;break;case 68:c=K(this,this.J+this.P());this.A-=this.B.Na;break;case 69:c=K(this,this.I+this.P());this.A-=this.B.Na;break;case 70:c=L(this,this.L+this.P());this.A-=this.B.Na;break;case 71:c=K(this,this.G+this.P());this.A-=this.B.Na;break;case 128:c=K(this,this.G+this.J+O(this));this.A-=this.B.Fb; +break;case 129:c=K(this,this.G+this.I+O(this));this.A-=this.B.Gb;break;case 130:c=L(this,this.L+this.J+O(this));this.A-=this.B.Gb;break;case 131:c=L(this,this.L+this.I+O(this));this.A-=this.B.Fb;break;case 132:c=K(this,this.J+O(this));this.A-=this.B.Na;break;case 133:c=K(this,this.I+O(this));this.A-=this.B.Na;break;case 134:c=L(this,this.L+O(this));this.A-=this.B.Na;break;case 135:c=K(this,this.G+O(this));this.A-=this.B.Na;break;case 192:c=this.F&65535;break;case 193:c=this.H&65535;break;case 194:c= +this.K&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535;break;case 197:c=this.L&65535;break;case 198:c=this.J&65535;break;case 199:c=this.I&65535;break;default:c=0}var d=this.Z>>3&7;switch(d){case 0:b=this.F&65535;break;case 1:b=this.H&65535;break;case 2:b=this.K&65535;break;case 3:b=this.G&65535;break;case 4:b=C(this)&65535;break;case 5:b=this.L&65535;break;case 6:b=this.J&65535;break;case 7:b=this.I&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=this.F&-65536| +a;break;case 1:this.H=this.H&-65536|a;break;case 2:this.K=this.K&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:A(this,C(this)&-65536|a);break;case 5:this.L=this.L&-65536|a;break;case 6:this.J=this.J&-65536|a;break;case 7:this.I=this.I&-65536|a}} +function we(a){var b,c,d=(this.Z=this.ka())&199;switch(d){case 0:b=K(this,this.G+this.J);this.D=this.C;break;case 1:b=K(this,this.G+this.I);this.D=this.C;break;case 2:b=L(this,this.L+this.J);this.D=this.C;break;case 3:b=L(this,this.L+this.I);this.D=this.C;break;case 4:b=K(this,this.J);this.D=this.C;break;case 5:b=K(this,this.I);this.D=this.C;break;case 6:b=K(this,O(this));this.D=this.C;break;case 7:b=K(this,this.G);this.D=this.C;break;case 64:b=K(this,this.G+this.J+this.P());this.D=this.C;break;case 65:b= +K(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=L(this,this.L+this.J+this.P());this.D=this.C;break;case 67:b=L(this,this.L+this.I+this.P());this.D=this.C;break;case 68:b=K(this,this.J+this.P());this.D=this.C;break;case 69:b=K(this,this.I+this.P());this.D=this.C;break;case 70:b=L(this,this.L+this.P());this.D=this.C;break;case 71:b=K(this,this.G+this.P());this.D=this.C;break;case 128:b=K(this,this.G+this.J+O(this));this.D=this.C;break;case 129:b=K(this,this.G+this.I+O(this));this.D=this.C; +break;case 130:b=L(this,this.L+this.J+O(this));this.D=this.C;break;case 131:b=L(this,this.L+this.I+O(this));this.D=this.C;break;case 132:b=K(this,this.J+O(this));this.D=this.C;break;case 133:b=K(this,this.I+O(this));this.D=this.C;break;case 134:b=L(this,this.L+O(this));this.D=this.C;break;case 135:b=K(this,this.G+O(this));this.D=this.C;break;case 192:b=this.F&65535;break;case 193:b=this.H&65535;break;case 194:b=this.K&65535;break;case 195:b=this.G&65535;break;case 196:b=C(this)&65535;break;case 197:b= +this.L&65535;break;case 198:b=this.J&65535;break;case 199:b=this.I&65535;break;default:b=0}switch(this.Z>>3&7){case 0:c=this.F&65535;break;case 1:c=this.H&65535;break;case 2:c=this.K&65535;break;case 3:c=this.G&65535;break;case 4:c=C(this)&65535;break;case 5:c=this.L&65535;break;case 6:c=this.J&65535;break;case 7:c=this.I&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:tf(this,a);this.A-=this.B.Ac;break;case 1:case 2:tf(this,a);this.A-=this.B.Bc;break;case 4:case 5:case 7:tf(this, +a);this.A-=this.B.ec;break;case 6:tf(this,a);this.A-=this.B.Yc;break;case 64:case 67:case 128:case 131:tf(this,a);this.A-=this.B.Fb;break;case 65:case 66:case 129:case 130:tf(this,a);this.A-=this.B.Gb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:tf(this,a);this.A-=this.B.Na;break;case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.K=this.K&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:A(this,C(this)&-65536|a);break; +case 197:this.L=this.L&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a}} +function xe(a,b){var c,d=(this.Z=this.ka())&199;switch(d){case 0:c=K(this,this.G+this.J);this.D=this.C;break;case 1:c=K(this,this.G+this.I);this.D=this.C;break;case 2:c=L(this,this.L+this.J);this.D=this.C;break;case 3:c=L(this,this.L+this.I);this.D=this.C;break;case 4:c=K(this,this.J);this.D=this.C;break;case 5:c=K(this,this.I);this.D=this.C;break;case 6:c=K(this,O(this));this.D=this.C;break;case 7:c=K(this,this.G);this.D=this.C;break;case 64:c=K(this,this.G+this.J+this.P());this.D=this.C;break;case 65:c= +K(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=L(this,this.L+this.J+this.P());this.D=this.C;break;case 67:c=L(this,this.L+this.I+this.P());this.D=this.C;break;case 68:c=K(this,this.J+this.P());this.D=this.C;break;case 69:c=K(this,this.I+this.P());this.D=this.C;break;case 70:c=L(this,this.L+this.P());this.D=this.C;break;case 71:c=K(this,this.G+this.P());this.D=this.C;break;case 128:c=K(this,this.G+this.J+O(this));this.D=this.C;break;case 129:c=K(this,this.G+this.I+O(this));this.D=this.C; +break;case 130:c=L(this,this.L+this.J+O(this));this.D=this.C;break;case 131:c=L(this,this.L+this.I+O(this));this.D=this.C;break;case 132:c=K(this,this.J+O(this));this.D=this.C;break;case 133:c=K(this,this.I+O(this));this.D=this.C;break;case 134:c=L(this,this.L+O(this));this.D=this.C;break;case 135:c=K(this,this.G+O(this));this.D=this.C;break;case 192:c=this.F&65535;break;case 193:c=this.H&65535;break;case 194:c=this.K&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535;break;case 197:c= +this.L&65535;break;case 198:c=this.J&65535;break;case 199:c=this.I&65535;break;default:c=0}a=a[this.Z>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:tf(this,a);this.A-=this.B.Ac;break;case 1:case 2:tf(this,a);this.A-=this.B.Bc;break;case 4:case 5:case 7:tf(this,a);this.A-=this.B.ec;break;case 6:tf(this,a);this.A-=this.B.Yc;break;case 64:case 67:case 128:case 131:tf(this,a);this.A-=this.B.Fb;break;case 65:case 66:case 129:case 130:tf(this,a);this.A-=this.B.Gb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:tf(this, +a);this.A-=this.B.Na;break;case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.K=this.K&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:A(this,C(this)&-65536|a);break;case 197:this.L=this.L&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a}} +function ye(a){var b,c;switch((this.Z=this.ka())&199){case 0:c=M(this,this.G+this.J);this.A-=this.B.Ac;break;case 1:c=M(this,this.G+this.I);this.A-=this.B.Bc;break;case 2:c=N(this,this.L+this.J);this.A-=this.B.Bc;break;case 3:c=N(this,this.L+this.I);this.A-=this.B.Ac;break;case 4:c=M(this,this.J);this.A-=this.B.ec;break;case 5:c=M(this,this.I);this.A-=this.B.ec;break;case 6:c=M(this,O(this));this.A-=this.B.Yc;break;case 7:c=M(this,this.G);this.A-=this.B.ec;break;case 64:c=M(this,this.G+this.J+this.P()); +this.A-=this.B.Fb;break;case 65:c=M(this,this.G+this.I+this.P());this.A-=this.B.Gb;break;case 66:c=N(this,this.L+this.J+this.P());this.A-=this.B.Gb;break;case 67:c=N(this,this.L+this.I+this.P());this.A-=this.B.Fb;break;case 68:c=M(this,this.J+this.P());this.A-=this.B.Na;break;case 69:c=M(this,this.I+this.P());this.A-=this.B.Na;break;case 70:c=N(this,this.L+this.P());this.A-=this.B.Na;break;case 71:c=M(this,this.G+this.P());this.A-=this.B.Na;break;case 128:c=M(this,this.G+this.J+O(this));this.A-=this.B.Fb; +break;case 129:c=M(this,this.G+this.I+O(this));this.A-=this.B.Gb;break;case 130:c=N(this,this.L+this.J+O(this));this.A-=this.B.Gb;break;case 131:c=N(this,this.L+this.I+O(this));this.A-=this.B.Fb;break;case 132:c=M(this,this.J+O(this));this.A-=this.B.Na;break;case 133:c=M(this,this.I+O(this));this.A-=this.B.Na;break;case 134:c=N(this,this.L+O(this));this.A-=this.B.Na;break;case 135:c=M(this,this.G+O(this));this.A-=this.B.Na;break;case 192:c=this.F;break;case 193:c=this.H;break;case 194:c=this.K;break; +case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.L;break;case 198:c=this.J;break;case 199:c=this.I;break;default:c=0}var d=this.Z>>3&7;switch(d){case 0:b=this.F;break;case 1:b=this.H;break;case 2:b=this.K;break;case 3:b=this.G;break;case 4:b=C(this);break;case 5:b=this.L;break;case 6:b=this.J;break;case 7:b=this.I;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=a;break;case 1:this.H=a;break;case 2:this.K=a;break;case 3:this.G=a;break;case 4:A(this,a);break;case 5:this.L= +a;break;case 6:this.J=a;break;case 7:this.I=a}} +function ze(a){var b,c,d=(this.Z=this.ka())&199;switch(d){case 0:b=M(this,this.G+this.J);this.D=this.C;break;case 1:b=M(this,this.G+this.I);this.D=this.C;break;case 2:b=N(this,this.L+this.J);this.D=this.C;break;case 3:b=N(this,this.L+this.I);this.D=this.C;break;case 4:b=M(this,this.J);this.D=this.C;break;case 5:b=M(this,this.I);this.D=this.C;break;case 6:b=M(this,O(this));this.D=this.C;break;case 7:b=M(this,this.G);this.D=this.C;break;case 64:b=M(this,this.G+this.J+this.P());this.D=this.C;break;case 65:b= +M(this,this.G+this.I+this.P());this.D=this.C;break;case 66:b=N(this,this.L+this.J+this.P());this.D=this.C;break;case 67:b=N(this,this.L+this.I+this.P());this.D=this.C;break;case 68:b=M(this,this.J+this.P());this.D=this.C;break;case 69:b=M(this,this.I+this.P());this.D=this.C;break;case 70:b=N(this,this.L+this.P());this.D=this.C;break;case 71:b=M(this,this.G+this.P());this.D=this.C;break;case 128:b=M(this,this.G+this.J+O(this));this.D=this.C;break;case 129:b=M(this,this.G+this.I+O(this));this.D=this.C; +break;case 130:b=N(this,this.L+this.J+O(this));this.D=this.C;break;case 131:b=N(this,this.L+this.I+O(this));this.D=this.C;break;case 132:b=M(this,this.J+O(this));this.D=this.C;break;case 133:b=M(this,this.I+O(this));this.D=this.C;break;case 134:b=N(this,this.L+O(this));this.D=this.C;break;case 135:b=M(this,this.G+O(this));this.D=this.C;break;case 192:b=this.F;break;case 193:b=this.H;break;case 194:b=this.K;break;case 195:b=this.G;break;case 196:b=C(this);break;case 197:b=this.L;break;case 198:b=this.J; +break;case 199:b=this.I;break;default:b=0}switch(this.Z>>3&7){case 0:c=this.F;break;case 1:c=this.H;break;case 2:c=this.K;break;case 3:c=this.G;break;case 4:c=C(this);break;case 5:c=this.L;break;case 6:c=this.J;break;case 7:c=this.I;break;default:c=0}a=a.call(this,b,c);switch(d){case 0:case 3:uf(this,a);this.A-=this.B.Ac;break;case 1:case 2:uf(this,a);this.A-=this.B.Bc;break;case 4:case 5:case 7:uf(this,a);this.A-=this.B.ec;break;case 6:uf(this,a);this.A-=this.B.Yc;break;case 64:case 67:case 128:case 131:uf(this, +a);this.A-=this.B.Fb;break;case 65:case 66:case 129:case 130:uf(this,a);this.A-=this.B.Gb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:uf(this,a);this.A-=this.B.Na;break;case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.K=a;break;case 195:this.G=a;break;case 196:A(this,a);break;case 197:this.L=a;break;case 198:this.J=a;break;case 199:this.I=a}} +function Ae(a,b){var c,d=(this.Z=this.ka())&199;switch(d){case 0:c=M(this,this.G+this.J);this.D=this.C;break;case 1:c=M(this,this.G+this.I);this.D=this.C;break;case 2:c=N(this,this.L+this.J);this.D=this.C;break;case 3:c=N(this,this.L+this.I);this.D=this.C;break;case 4:c=M(this,this.J);this.D=this.C;break;case 5:c=M(this,this.I);this.D=this.C;break;case 6:c=M(this,O(this));this.D=this.C;break;case 7:c=M(this,this.G);this.D=this.C;break;case 64:c=M(this,this.G+this.J+this.P());this.D=this.C;break;case 65:c= +M(this,this.G+this.I+this.P());this.D=this.C;break;case 66:c=N(this,this.L+this.J+this.P());this.D=this.C;break;case 67:c=N(this,this.L+this.I+this.P());this.D=this.C;break;case 68:c=M(this,this.J+this.P());this.D=this.C;break;case 69:c=M(this,this.I+this.P());this.D=this.C;break;case 70:c=N(this,this.L+this.P());this.D=this.C;break;case 71:c=M(this,this.G+this.P());this.D=this.C;break;case 128:c=M(this,this.G+this.J+O(this));this.D=this.C;break;case 129:c=M(this,this.G+this.I+O(this));this.D=this.C; +break;case 130:c=N(this,this.L+this.J+O(this));this.D=this.C;break;case 131:c=N(this,this.L+this.I+O(this));this.D=this.C;break;case 132:c=M(this,this.J+O(this));this.D=this.C;break;case 133:c=M(this,this.I+O(this));this.D=this.C;break;case 134:c=N(this,this.L+O(this));this.D=this.C;break;case 135:c=M(this,this.G+O(this));this.D=this.C;break;case 192:c=this.F;break;case 193:c=this.H;break;case 194:c=this.K;break;case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.L;break;case 198:c=this.J; +break;case 199:c=this.I}a=a[this.Z>>3&7].call(this,c,b.call(this));switch(d){case 0:case 3:uf(this,a);this.A-=this.B.Ac;break;case 1:case 2:uf(this,a);this.A-=this.B.Bc;break;case 4:case 5:case 7:uf(this,a);this.A-=this.B.ec;break;case 6:uf(this,a);this.A-=this.B.Yc;break;case 64:case 67:case 128:case 131:uf(this,a);this.A-=this.B.Fb;break;case 65:case 66:case 129:case 130:uf(this,a);this.A-=this.B.Gb;break;case 68:case 69:case 70:case 71:case 132:case 133:case 134:case 135:uf(this,a);this.A-=this.B.Na; +break;case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.K=a;break;case 195:this.G=a;break;case 196:A(this,a);break;case 197:this.L=a;break;case 198:this.J=a;break;case 199:this.I=a}} +function Be(a){var b,c;switch((this.Z=this.ka())&199){case 0:c=I(this,this.F);break;case 1:c=I(this,this.H);break;case 2:c=I(this,this.K);break;case 3:c=I(this,this.G);break;case 4:c=I(this,Ei.call(this,0));break;case 5:c=I(this,O(this));break;case 6:c=I(this,this.J);break;case 7:c=I(this,this.I);break;case 64:c=I(this,this.F+this.P());break;case 65:c=I(this,this.H+this.P());break;case 66:c=I(this,this.K+this.P());break;case 67:c=I(this,this.G+this.P());break;case 68:c=I(this,Ei.call(this,1)+this.P()); +break;case 69:c=J(this,this.L+this.P());break;case 70:c=I(this,this.J+this.P());break;case 71:c=I(this,this.I+this.P());break;case 128:c=I(this,this.F+O(this));break;case 129:c=I(this,this.H+O(this));break;case 130:c=I(this,this.K+O(this));break;case 131:c=I(this,this.G+O(this));break;case 132:c=I(this,Ei.call(this,2)+O(this));break;case 133:c=J(this,this.L+O(this));break;case 134:c=I(this,this.J+O(this));break;case 135:c=I(this,this.I+O(this));break;case 192:c=this.F&255;break;case 193:c=this.H& +255;break;case 194:c=this.K&255;break;case 195:c=this.G&255;break;case 196:c=this.F>>8&255;break;case 197:c=this.H>>8&255;break;case 198:c=this.K>>8&255;break;case 199:c=this.G>>8&255;break;default:c=0}var d=this.Z>>3&7;switch(d){case 0:b=this.F&255;break;case 1:b=this.H&255;break;case 2:b=this.K&255;break;case 3:b=this.G&255;break;case 4:b=this.F>>8&255;break;case 5:b=this.H>>8&255;break;case 6:b=this.K>>8&255;break;case 7:b=this.G>>8&255;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F= +this.F&-256|a;break;case 1:this.H=this.H&-256|a;break;case 2:this.K=this.K&-256|a;break;case 3:this.G=this.G&-256|a;break;case 4:this.F=this.F&-65281|a<<8;break;case 5:this.H=this.H&-65281|a<<8;break;case 6:this.K=this.K&-65281|a<<8;break;case 7:this.G=this.G&-65281|a<<8}} +function Ce(a){var b,c,d=(this.Z=this.ka())&199;switch(d){case 0:b=I(this,this.F);this.D=this.C;break;case 1:b=I(this,this.H);this.D=this.C;break;case 2:b=I(this,this.K);this.D=this.C;break;case 3:b=I(this,this.G);this.D=this.C;break;case 4:b=I(this,Ei.call(this,0));this.D=this.C;break;case 5:b=I(this,O(this));this.D=this.C;break;case 6:b=I(this,this.J);this.D=this.C;break;case 7:b=I(this,this.I);this.D=this.C;break;case 64:b=I(this,this.F+this.P());this.D=this.C;break;case 65:b=I(this,this.H+this.P()); +this.D=this.C;break;case 66:b=I(this,this.K+this.P());this.D=this.C;break;case 67:b=I(this,this.G+this.P());this.D=this.C;break;case 68:b=I(this,Ei.call(this,1)+this.P());this.D=this.C;break;case 69:b=J(this,this.L+this.P());this.D=this.C;break;case 70:b=I(this,this.J+this.P());this.D=this.C;break;case 71:b=I(this,this.I+this.P());this.D=this.C;break;case 128:b=I(this,this.F+O(this));this.D=this.C;break;case 129:b=I(this,this.H+O(this));this.D=this.C;break;case 130:b=I(this,this.K+O(this));this.D= +this.C;break;case 131:b=I(this,this.G+O(this));this.D=this.C;break;case 132:b=I(this,Ei.call(this,2)+O(this));this.D=this.C;break;case 133:b=J(this,this.L+O(this));this.D=this.C;break;case 134:b=I(this,this.J+O(this));this.D=this.C;break;case 135:b=I(this,this.I+O(this));this.D=this.C;break;case 192:b=this.F&255;break;case 193:b=this.H&255;break;case 194:b=this.K&255;break;case 195:b=this.G&255;break;case 196:b=this.F>>8&255;break;case 197:b=this.H>>8&255;break;case 198:b=this.K>>8&255;break;case 199:b= +this.G>>8&255;break;default:b=0}switch(this.Z>>3&7){case 0:c=this.F&255;break;case 1:c=this.H&255;break;case 2:c=this.K&255;break;case 3:c=this.G&255;break;case 4:c=this.F>>8&255;break;case 5:c=this.H>>8&255;break;case 6:c=this.K>>8&255;break;case 7:c=this.G>>8&255;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.K=this.K&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H= +this.H&-65281|a<<8;break;case 198:this.K=this.K&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:sf(this,a)}} +function De(a,b){var c,d=(this.Z=this.ka())&199;switch(d){case 0:c=I(this,this.F);this.D=this.C;break;case 1:c=I(this,this.H);this.D=this.C;break;case 2:c=I(this,this.K);this.D=this.C;break;case 3:c=I(this,this.G);this.D=this.C;break;case 4:c=I(this,Ei.call(this,0));this.D=this.C;break;case 5:c=I(this,O(this));this.D=this.C;break;case 6:c=I(this,this.J);this.D=this.C;break;case 7:c=I(this,this.I);this.D=this.C;break;case 64:c=I(this,this.F+this.P());this.D=this.C;break;case 65:c=I(this,this.H+this.P()); +this.D=this.C;break;case 66:c=I(this,this.K+this.P());this.D=this.C;break;case 67:c=I(this,this.G+this.P());this.D=this.C;break;case 68:c=I(this,Ei.call(this,1)+this.P());this.D=this.C;break;case 69:c=J(this,this.L+this.P());this.D=this.C;break;case 70:c=I(this,this.J+this.P());this.D=this.C;break;case 71:c=I(this,this.I+this.P());this.D=this.C;break;case 128:c=I(this,this.F+O(this));this.D=this.C;break;case 129:c=I(this,this.H+O(this));this.D=this.C;break;case 130:c=I(this,this.K+O(this));this.D= +this.C;break;case 131:c=I(this,this.G+O(this));this.D=this.C;break;case 132:c=I(this,Ei.call(this,2)+O(this));this.D=this.C;break;case 133:c=J(this,this.L+O(this));this.D=this.C;break;case 134:c=I(this,this.J+O(this));this.D=this.C;break;case 135:c=I(this,this.I+O(this));this.D=this.C;break;case 192:c=this.F&255;break;case 193:c=this.H&255;break;case 194:c=this.K&255;break;case 195:c=this.G&255;break;case 196:c=this.F>>8&255;break;case 197:c=this.H>>8&255;break;case 198:c=this.K>>8&255;break;case 199:c= +this.G>>8&255;break;default:c=0}a=a[this.Z>>3&7].call(this,c,b.call(this));switch(d){case 192:this.F=this.F&-256|a;break;case 193:this.H=this.H&-256|a;break;case 194:this.K=this.K&-256|a;break;case 195:this.G=this.G&-256|a;break;case 196:this.F=this.F&-65281|a<<8;break;case 197:this.H=this.H&-65281|a<<8;break;case 198:this.K=this.K&-65281|a<<8;break;case 199:this.G=this.G&-65281|a<<8;break;default:sf(this,a)}} +function Ee(a){var b,c;switch((this.Z=this.ka())&199){case 0:c=K(this,this.F);break;case 1:c=K(this,this.H);break;case 2:c=K(this,this.K);break;case 3:c=K(this,this.G);break;case 4:c=K(this,Ei.call(this,0));break;case 5:c=K(this,O(this));break;case 6:c=K(this,this.J);break;case 7:c=K(this,this.I);break;case 64:c=K(this,this.F+this.P());break;case 65:c=K(this,this.H+this.P());break;case 66:c=K(this,this.K+this.P());break;case 67:c=K(this,this.G+this.P());break;case 68:c=K(this,Ei.call(this,1)+this.P()); +break;case 69:c=L(this,this.L+this.P());break;case 70:c=K(this,this.J+this.P());break;case 71:c=K(this,this.I+this.P());break;case 128:c=K(this,this.F+O(this));break;case 129:c=K(this,this.H+O(this));break;case 130:c=K(this,this.K+O(this));break;case 131:c=K(this,this.G+O(this));break;case 132:c=K(this,Ei.call(this,2)+O(this));break;case 133:c=L(this,this.L+O(this));break;case 134:c=K(this,this.J+O(this));break;case 135:c=K(this,this.I+O(this));break;case 192:c=this.F&65535;break;case 193:c=this.H& +65535;break;case 194:c=this.K&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535;break;case 197:c=this.L&65535;break;case 198:c=this.J&65535;break;case 199:c=this.I&65535;break;default:c=0}var d=this.Z>>3&7;switch(d){case 0:b=this.F&65535;break;case 1:b=this.H&65535;break;case 2:b=this.K&65535;break;case 3:b=this.G&65535;break;case 4:b=C(this)&65535;break;case 5:b=this.L&65535;break;case 6:b=this.J&65535;break;case 7:b=this.I&65535;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F= +this.F&-65536|a;break;case 1:this.H=this.H&-65536|a;break;case 2:this.K=this.K&-65536|a;break;case 3:this.G=this.G&-65536|a;break;case 4:A(this,C(this)&-65536|a);break;case 5:this.L=this.L&-65536|a;break;case 6:this.J=this.J&-65536|a;break;case 7:this.I=this.I&-65536|a}} +function Fe(a){var b,c,d=(this.Z=this.ka())&199;switch(d){case 0:b=K(this,this.F);this.D=this.C;break;case 1:b=K(this,this.H);this.D=this.C;break;case 2:b=K(this,this.K);this.D=this.C;break;case 3:b=K(this,this.G);this.D=this.C;break;case 4:b=K(this,Ei.call(this,0));this.D=this.C;break;case 5:b=K(this,O(this));this.D=this.C;break;case 6:b=K(this,this.J);this.D=this.C;break;case 7:b=K(this,this.I);this.D=this.C;break;case 64:b=K(this,this.F+this.P());this.D=this.C;break;case 65:b=K(this,this.H+this.P()); +this.D=this.C;break;case 66:b=K(this,this.K+this.P());this.D=this.C;break;case 67:b=K(this,this.G+this.P());this.D=this.C;break;case 68:b=K(this,Ei.call(this,1)+this.P());this.D=this.C;break;case 69:b=L(this,this.L+this.P());this.D=this.C;break;case 70:b=K(this,this.J+this.P());this.D=this.C;break;case 71:b=K(this,this.I+this.P());this.D=this.C;break;case 128:b=K(this,this.F+O(this));this.D=this.C;break;case 129:b=K(this,this.H+O(this));this.D=this.C;break;case 130:b=K(this,this.K+O(this));this.D= +this.C;break;case 131:b=K(this,this.G+O(this));this.D=this.C;break;case 132:b=K(this,Ei.call(this,2)+O(this));this.D=this.C;break;case 133:b=L(this,this.L+O(this));this.D=this.C;break;case 134:b=K(this,this.J+O(this));this.D=this.C;break;case 135:b=K(this,this.I+O(this));this.D=this.C;break;case 192:b=this.F&65535;break;case 193:b=this.H&65535;break;case 194:b=this.K&65535;break;case 195:b=this.G&65535;break;case 196:b=C(this)&65535;break;case 197:b=this.L&65535;break;case 198:b=this.J&65535;break; +case 199:b=this.I&65535;break;default:b=0}switch(this.Z>>3&7){case 0:c=this.F&65535;break;case 1:c=this.H&65535;break;case 2:c=this.K&65535;break;case 3:c=this.G&65535;break;case 4:c=C(this)&65535;break;case 5:c=this.L&65535;break;case 6:c=this.J&65535;break;case 7:c=this.I&65535;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.K=this.K&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:A(this,C(this)& +-65536|a);break;case 197:this.L=this.L&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a;break;default:tf(this,a)}} +function Ge(a,b){var c,d=(this.Z=this.ka())&199;switch(d){case 0:c=K(this,this.F);this.D=this.C;break;case 1:c=K(this,this.H);this.D=this.C;break;case 2:c=K(this,this.K);this.D=this.C;break;case 3:c=K(this,this.G);this.D=this.C;break;case 4:c=K(this,Ei.call(this,0));this.D=this.C;break;case 5:c=K(this,O(this));this.D=this.C;break;case 6:c=K(this,this.J);this.D=this.C;break;case 7:c=K(this,this.I);this.D=this.C;break;case 64:c=K(this,this.F+this.P());this.D=this.C;break;case 65:c=K(this,this.H+this.P()); +this.D=this.C;break;case 66:c=K(this,this.K+this.P());this.D=this.C;break;case 67:c=K(this,this.G+this.P());this.D=this.C;break;case 68:c=K(this,Ei.call(this,1)+this.P());this.D=this.C;break;case 69:c=L(this,this.L+this.P());this.D=this.C;break;case 70:c=K(this,this.J+this.P());this.D=this.C;break;case 71:c=K(this,this.I+this.P());this.D=this.C;break;case 128:c=K(this,this.F+O(this));this.D=this.C;break;case 129:c=K(this,this.H+O(this));this.D=this.C;break;case 130:c=K(this,this.K+O(this));this.D= +this.C;break;case 131:c=K(this,this.G+O(this));this.D=this.C;break;case 132:c=K(this,Ei.call(this,2)+O(this));this.D=this.C;break;case 133:c=L(this,this.L+O(this));this.D=this.C;break;case 134:c=K(this,this.J+O(this));this.D=this.C;break;case 135:c=K(this,this.I+O(this));this.D=this.C;break;case 192:c=this.F&65535;break;case 193:c=this.H&65535;break;case 194:c=this.K&65535;break;case 195:c=this.G&65535;break;case 196:c=C(this)&65535;break;case 197:c=this.L&65535;break;case 198:c=this.J&65535;break; +case 199:c=this.I&65535;break;default:c=0}a=a[this.Z>>3&7].call(this,c,b.call(this));switch(d){case 192:this.F=this.F&-65536|a;break;case 193:this.H=this.H&-65536|a;break;case 194:this.K=this.K&-65536|a;break;case 195:this.G=this.G&-65536|a;break;case 196:A(this,C(this)&-65536|a);break;case 197:this.L=this.L&-65536|a;break;case 198:this.J=this.J&-65536|a;break;case 199:this.I=this.I&-65536|a;break;default:tf(this,a)}} +function He(a){var b,c;switch((this.Z=this.ka())&199){case 0:c=M(this,this.F);break;case 1:c=M(this,this.H);break;case 2:c=M(this,this.K);break;case 3:c=M(this,this.G);break;case 4:c=M(this,Ei.call(this,0));break;case 5:c=M(this,O(this));break;case 6:c=M(this,this.J);break;case 7:c=M(this,this.I);break;case 64:c=M(this,this.F+this.P());break;case 65:c=M(this,this.H+this.P());break;case 66:c=M(this,this.K+this.P());break;case 67:c=M(this,this.G+this.P());break;case 68:c=M(this,Ei.call(this,1)+this.P()); +break;case 69:c=N(this,this.L+this.P());break;case 70:c=M(this,this.J+this.P());break;case 71:c=M(this,this.I+this.P());break;case 128:c=M(this,this.F+O(this));break;case 129:c=M(this,this.H+O(this));break;case 130:c=M(this,this.K+O(this));break;case 131:c=M(this,this.G+O(this));break;case 132:c=M(this,Ei.call(this,2)+O(this));break;case 133:c=N(this,this.L+O(this));break;case 134:c=M(this,this.J+O(this));break;case 135:c=M(this,this.I+O(this));break;case 192:c=this.F;break;case 193:c=this.H;break; +case 194:c=this.K;break;case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.L;break;case 198:c=this.J;break;case 199:c=this.I;break;default:c=0}var d=this.Z>>3&7;switch(d){case 0:b=this.F;break;case 1:b=this.H;break;case 2:b=this.K;break;case 3:b=this.G;break;case 4:b=C(this);break;case 5:b=this.L;break;case 6:b=this.J;break;case 7:b=this.I;break;default:b=0}a=a.call(this,b,c);switch(d){case 0:this.F=a;break;case 1:this.H=a;break;case 2:this.K=a;break;case 3:this.G=a;break;case 4:A(this, +a);break;case 5:this.L=a;break;case 6:this.J=a;break;case 7:this.I=a}} +function Ie(a){var b,c,d=(this.Z=this.ka())&199;switch(d){case 0:b=M(this,this.F);this.D=this.C;break;case 1:b=M(this,this.H);this.D=this.C;break;case 2:b=M(this,this.K);this.D=this.C;break;case 3:b=M(this,this.G);this.D=this.C;break;case 4:b=M(this,Ei.call(this,0));this.D=this.C;break;case 5:b=M(this,O(this));this.D=this.C;break;case 6:b=M(this,this.J);this.D=this.C;break;case 7:b=M(this,this.I);this.D=this.C;break;case 64:b=M(this,this.F+this.P());this.D=this.C;break;case 65:b=M(this,this.H+this.P()); +this.D=this.C;break;case 66:b=M(this,this.K+this.P());this.D=this.C;break;case 67:b=M(this,this.G+this.P());this.D=this.C;break;case 68:b=M(this,Ei.call(this,1)+this.P());this.D=this.C;break;case 69:b=N(this,this.L+this.P());this.D=this.C;break;case 70:b=M(this,this.J+this.P());this.D=this.C;break;case 71:b=M(this,this.I+this.P());this.D=this.C;break;case 128:b=M(this,this.F+O(this));this.D=this.C;break;case 129:b=M(this,this.H+O(this));this.D=this.C;break;case 130:b=M(this,this.K+O(this));this.D= +this.C;break;case 131:b=M(this,this.G+O(this));this.D=this.C;break;case 132:b=M(this,Ei.call(this,2)+O(this));this.D=this.C;break;case 133:b=N(this,this.L+O(this));this.D=this.C;break;case 134:b=M(this,this.J+O(this));this.D=this.C;break;case 135:b=M(this,this.I+O(this));this.D=this.C;break;case 192:b=this.F;break;case 193:b=this.H;break;case 194:b=this.K;break;case 195:b=this.G;break;case 196:b=C(this);break;case 197:b=this.L;break;case 198:b=this.J;break;case 199:b=this.I;break;default:b=0}switch(this.Z>> +3&7){case 0:c=this.F;break;case 1:c=this.H;break;case 2:c=this.K;break;case 3:c=this.G;break;case 4:c=C(this);break;case 5:c=this.L;break;case 6:c=this.J;break;case 7:c=this.I;break;default:c=0}a=a.call(this,b,c);switch(d){case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.K=a;break;case 195:this.G=a;break;case 196:A(this,a);break;case 197:this.L=a;break;case 198:this.J=a;break;case 199:this.I=a;break;default:uf(this,a)}} +function Je(a,b){var c,d=(this.Z=this.ka())&199;switch(d){case 0:c=M(this,this.F);this.D=this.C;break;case 1:c=M(this,this.H);this.D=this.C;break;case 2:c=M(this,this.K);this.D=this.C;break;case 3:c=M(this,this.G);this.D=this.C;break;case 4:c=M(this,Ei.call(this,0));this.D=this.C;break;case 5:c=M(this,O(this));this.D=this.C;break;case 6:c=M(this,this.J);this.D=this.C;break;case 7:c=M(this,this.I);this.D=this.C;break;case 64:c=M(this,this.F+this.P());this.D=this.C;break;case 65:c=M(this,this.H+this.P()); +this.D=this.C;break;case 66:c=M(this,this.K+this.P());this.D=this.C;break;case 67:c=M(this,this.G+this.P());this.D=this.C;break;case 68:c=M(this,Ei.call(this,1)+this.P());this.D=this.C;break;case 69:c=N(this,this.L+this.P());this.D=this.C;break;case 70:c=M(this,this.J+this.P());this.D=this.C;break;case 71:c=M(this,this.I+this.P());this.D=this.C;break;case 128:c=M(this,this.F+O(this));this.D=this.C;break;case 129:c=M(this,this.H+O(this));this.D=this.C;break;case 130:c=M(this,this.K+O(this));this.D= +this.C;break;case 131:c=M(this,this.G+O(this));this.D=this.C;break;case 132:c=M(this,Ei.call(this,2)+O(this));this.D=this.C;break;case 133:c=N(this,this.L+O(this));this.D=this.C;break;case 134:c=M(this,this.J+O(this));this.D=this.C;break;case 135:c=M(this,this.I+O(this));this.D=this.C;break;case 192:c=this.F;break;case 193:c=this.H;break;case 194:c=this.K;break;case 195:c=this.G;break;case 196:c=C(this);break;case 197:c=this.L;break;case 198:c=this.J;break;case 199:c=this.I;break;default:c=0}a=a[this.Z>> +3&7].call(this,c,b.call(this));switch(d){case 192:this.F=a;break;case 193:this.H=a;break;case 194:this.K=a;break;case 195:this.G=a;break;case 196:A(this,a);break;case 197:this.L=a;break;case 198:this.J=a;break;case 199:this.I=a;break;default:uf(this,a)}} +function Ei(a){var b=this.ka(),c=b>>6,d,e;switch(b>>3&7){case 0:d=this.F;break;case 1:d=this.H;break;case 2:d=this.K;break;case 3:d=this.G;break;case 4:d=0;break;case 5:d=this.L;break;case 6:d=this.J;break;case 7:d=this.I}switch(b&7){case 0:e=this.F;break;case 1:e=this.H;break;case 2:e=this.K;break;case 3:e=this.G;break;case 4:e=C(this);this.Ba=this.Db;break;case 5:a?(e=this.L,this.Ba=this.Db):e=O(this);break;case 6:e=this.J;break;case 7:e=this.I}return(d<>8&255;9<(c&15)||Ze(this)?(c+=6,80286<=this.aa&&255>8&255;9<(c&15)||Ze(this)?(c=c-6&15,d=d-1&255,a=b=1):a=b=0;this.F=this.F&-65536|d<<8|c;a?cf(this):df(this);b?lf(this):jf(this);this.A-=this.B.Ld},function(){this.F=si.call(this,this.F)},function(){this.H=si.call(this,this.H)},function(){this.K=si.call(this,this.K)},function(){this.G=si.call(this,this.G)},function(){A(this, +si.call(this,C(this)))},function(){this.L=si.call(this,this.L)},function(){this.J=si.call(this,this.J)},function(){this.I=si.call(this,this.I)},function(){this.F=qi.call(this,this.F)},function(){this.H=qi.call(this,this.H)},function(){this.K=qi.call(this,this.K)},function(){this.G=qi.call(this,this.G)},function(){A(this,qi.call(this,C(this)))},function(){this.L=qi.call(this,this.L)},function(){this.J=qi.call(this,this.J)},function(){this.I=qi.call(this,this.I)},function(){D(this,this.F&this.N);this.A-= +this.B.qc},function(){D(this,this.H&this.N);this.A-=this.B.qc},function(){D(this,this.K&this.N);this.A-=this.B.qc},function(){D(this,this.G&this.N);this.A-=this.B.qc},function(){D(this,C(this)-2&65535);this.A-=this.B.qc},function(){D(this,this.L&this.N);this.A-=this.B.qc},function(){D(this,this.J&this.N);this.A-=this.B.qc},function(){D(this,this.I&this.N);this.A-=this.B.qc},function(){this.F=this.F&~this.N|x(this);this.A-=this.B.Yb},function(){this.H=this.H&~this.N|x(this);this.A-=this.B.Yb},function(){this.K= +this.K&~this.N|x(this);this.A-=this.B.Yb},function(){this.G=this.G&~this.N|x(this);this.A-=this.B.Yb},function(){A(this,C(this)&~this.N|x(this));this.A-=this.B.Yb},function(){this.L=this.L&~this.N|x(this);this.A-=this.B.Yb},function(){this.J=this.J&~this.N|x(this);this.A-=this.B.Yb},function(){this.I=this.I&~this.N|x(this);this.A-=this.B.Yb},Fi,Gi,Hi,Ii,Ji,Ki,Li,Mi,Ni,Oi,Pi,Qi,Ri,Si,Ti,Ui,Fi,Gi,Hi,Ii,Ji,Ki,Li,Mi,Ni,Oi,Pi,Qi,Ri,Si,Ti,Ui,Vi,function(){this.$a.call(this,jj,this.za);this.A-=-1===this.D? +1:this.B.Pf},Vi,function(){this.$a.call(this,jj,this.P);this.A-=-1===this.D?1:this.B.Pf},function(){this.cc.call(this,hi)},function(){this.wa.call(this,ii)},function(){this.Vb.call(this,li)},function(){this.ja.call(this,mi)},Xi,Yi,Zi,$i,function(){this.M|=1;this.wa.call(this,xh)},function(){this.M|=1;this.Ba=this.Db=this.fg;this.ja.call(this,nh)},function(){var a;this.ja.call(this,wh);switch(this.Z>>3&7){case 0:a=this.F;this.F=this.ta;yd(this,a);break;case 1:a=this.H;this.H=this.ta;Se(this,a);break; +case 2:a=this.K;this.K=this.ta;rd(this,a);break;case 3:a=this.G;this.G=this.ta;xd(this,a);break;case 4:a=C(this);A(this,this.ta);80386<=this.aa?this.qb.load(a):yd(this,a);break;case 5:a=this.L;this.L=this.ta;80386<=this.aa?this.rb.load(a):Se(this,a);break;case 6:a=this.J;this.J=this.ta;rd(this,a);break;case 7:a=this.I,this.I=this.ta,xd(this,a)}},function(){this.M|=1;this.na=this.ya;this.ta=x(this);this.$a.call(this,kj,yi);this.na=-1},function(){this.A-=3},function(){var a=this.F;this.F=this.F&~this.N| +this.H&this.N;this.H=this.H&~this.N|a&this.N;this.A-=3},function(){var a=this.F;this.F=this.F&~this.N|this.K&this.N;this.K=this.K&~this.N|a&this.N;this.A-=3},function(){var a=this.F;this.F=this.F&~this.N|this.G&this.N;this.G=this.G&~this.N|a&this.N;this.A-=3},function(){var a=this.F,b=C(this);this.F=this.F&~this.N|b&this.N;A(this,b&~this.N|a&this.N);this.A-=3},function(){var a=this.F;this.F=this.F&~this.N|this.L&this.N;this.L=this.L&~this.N|a&this.N;this.A-=3},function(){var a=this.F;this.F=this.F& +~this.N|this.J&this.N;this.J=this.J&~this.N|a&this.N;this.A-=3},function(){var a=this.F;this.F=this.F&~this.N|this.I&this.N;this.I=this.I&~this.N|a&this.N;this.A-=3},function(){this.F=2==this.S?this.F&-65536|this.F<<24>>24&65535:this.F<<16>>16;this.A-=2},function(){this.K=2==this.S?this.K&-65536|(this.F&32768?65535:0):this.F&-2147483648?-1:0;this.A-=this.B.Ii},function(){zi.call(this,this.za(),vf(this));this.A-=this.B.Li},function(){this.A-=3},function(){var a=Ad(this);a&131072&&3>this.Wb?v.call(this, +13,0):(D(this,a&-196609),this.A-=this.B.qc)},function(){if(this.O&131072&&3>this.Wb)v.call(this,13,0);else{var a=x(this),a=a&65535|this.O&-65536;Bd(this,a);this.A-=this.B.Yb}},function(){var a=this.F>>8&255;a&1?cf(this):df(this);a&4?(this.resultType&=-3,this.O|=4):(this.resultType&=-3,this.O&=-5);a&16?lf(this):jf(this);a&64?mf(this):kf(this);a&128?(this.resultType&=-17,this.O|=128):(this.resultType&=-17,this.O&=-129);this.A-=this.B.Hb},function(){this.F=this.F&-65281|(Ad(this)&213)<<8;this.A-=this.B.Hb}, +function(){var a=this.F&-256,b;b=O(this);b=this.Eb(this.Ba.Lb(b,1));this.F=a|b;this.A-=this.B.Pg},function(){this.F=this.F&~this.N|vd(this,this.Ba,O(this));this.A-=this.B.Pg},function(){var a=O(this),b=this.F;this.Dc(this.Ba.Mb(a,1),b);this.A-=this.B.Qg},function(){var a=O(this),b=this.F;this.nb(this.Ba.Mb(a,this.S),b);this.A-=this.B.Qg},function(){var a=1,b=0,c=this.ra,d=this.B.Rg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Tg,this.ba&256||(this.A-=this.B.Sg));if(a--){var e=this.Eb(this.Ba.Lb(this.J&c, +1));this.Dc(this.ua.Mb(this.I&c,1),e);e=this.O&1024?-1:1;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.A-=d;this.H=this.H&~c|this.H-b&c;a&&(Ve(this),this.M|=256)}},function(){var a=1,b=0,c=this.ra,d=this.B.Rg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Tg,this.ba&256||(this.A-=this.B.Sg));if(a--){var e=vd(this,this.Ba,this.J&c);this.nb(this.ua.Mb(this.I&c,this.S),e);e=this.O&1024?-this.S:this.S;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.A-=d;this.H=this.H&~c|this.H-b&c; +a&&(Ve(this),this.M|=256)}},function(){var a=1,b=0,c=this.ra,d=this.B.Cg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Eg,this.ba&256||(this.A-=this.B.Dg));if(a--){var e=qf(this,this.Ba,this.J),f=qf(this,this.ua,this.I);this.D=this.C;bh.call(this,e,f);e=this.O&1024?-1:1;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.vb;a&&$e(this)==(this.ba&64)&&(Ve(this),this.M|=256)}},function(){var a=1,b=0,c=this.ra,d=this.B.Cg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Eg, +this.ba&256||(this.A-=this.B.Dg));if(a--){var e=rf(this,this.Ba,this.J&c),f=rf(this,this.ua,this.I&c);this.D=this.C;ch.call(this,e,f);e=this.O&1024?-this.S:this.S;this.J=this.J&~c|this.J+e&c;this.I=this.I&~c|this.I+e&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.vb;a&&$e(this)==(this.ba&64)&&(Ve(this),this.M|=256)}},function(){H(this,this.F&this.ka(),128);this.A-=this.B.Ld},function(){H(this,this.F&this.za(),this.sb);this.A-=this.B.Ld},function(){var a=1,b=0,c=this.ra,d=this.B.bh;this.ba&192&&(a= +this.H&c,b=1,d=this.B.eh,this.ba&256||(this.A-=this.B.dh));if(a--){var e=this.F;this.Dc(this.ua.Mb(this.I&c,1),e);this.H=this.H&~c|this.H-b&c;80546<=this.pd&&80564>=this.pd&&!(this.ba&2048)!=(103!=this.Eb(this.ea))&&(c^=-65536);this.I=this.I&~c|this.I+(this.O&1024?-1:1)&c;this.A-=d;a&&(Ve(this),this.M|=256)}},function(){var a=1,b=0,c=this.ra,d=this.B.bh;this.ba&192&&(a=this.H&c,b=1,d=this.B.eh,this.ba&256||(this.A-=this.B.dh));if(a--){var e=this.F;this.nb(this.ua.Mb(this.I&c,this.S),e);this.I=this.I& +~c|this.I+(this.O&1024?-this.S:this.S)&c;this.H=this.H&~c|this.H-b&c;this.A-=d;a&&(Ve(this),this.M|=256)}},function(){var a=1,b=0,c=this.ra,d=this.B.Jg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Lg,this.ba&256||(this.A-=this.B.Kg));if(a--){var e=this.Eb(this.Ba.Lb(this.J&c,1));this.F=this.F&-256|e;this.J=this.J&~c|this.J+(this.O&1024?-1:1)&c;this.H=this.H&~c|this.H-b&c;this.A-=d;a&&(Ve(this),this.M|=256)}},function(){var a=1,b=0,c=this.ra,d=this.B.Jg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Lg,this.ba&256|| +(this.A-=this.B.Kg));if(a--){var e=vd(this,this.Ba,this.J&c);this.F=this.F&~this.N|e;this.J=this.J&~c|this.J+(this.O&1024?-this.S:this.S)&c;this.H=this.H&~c|this.H-b&c;this.A-=d;a&&(Ve(this),this.M|=256)}},function(){var a=1,b=0,c=this.ra,d=this.B.Wg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Yg,this.ba&256||(this.A-=this.B.Xg));if(a--){var e=this.F&255,f=qf(this,this.ua,this.I);this.D=this.C;bh.call(this,e,f);this.I=this.I&~c|this.I+(this.O&1024?-1:1)&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.vb; +a&&$e(this)==(this.ba&64)&&(Ve(this),this.M|=256)}},function(){var a=1,b=0,c=this.ra,d=this.B.Wg;this.ba&192&&(a=this.H&c,b=1,d=this.B.Yg,this.ba&256||(this.A-=this.B.Xg));if(a--){var e=this.F&this.N,f=rf(this,this.ua,this.I&c);this.D=this.C;ch.call(this,e,f);this.I=this.I&~c|this.I+(this.O&1024?-this.S:this.S)&c;this.H=this.H&~c|this.H-b&c;this.A-=d-this.B.vb;a&&$e(this)==(this.ba&64)&&(Ve(this),this.M|=256)}},function(){this.F=this.F&-256|this.ka();this.A-=this.B.Hb},function(){this.H=this.H&-256| +this.ka();this.A-=this.B.Hb},function(){this.K=this.K&-256|this.ka();this.A-=this.B.Hb},function(){this.G=this.G&-256|this.ka();this.A-=this.B.Hb},function(){this.F=this.F&-65281|this.ka()<<8;this.A-=this.B.Hb},function(){this.H=this.H&-65281|this.ka()<<8;this.A-=this.B.Hb},function(){this.K=this.K&-65281|this.ka()<<8;this.A-=this.B.Hb},function(){this.G=this.G&-65281|this.ka()<<8;this.A-=this.B.Hb},function(){this.F=this.F&~this.N|this.za();this.A-=this.B.Hb},function(){this.H=this.H&~this.N|this.za(); +this.A-=this.B.Hb},function(){this.K=this.K&~this.N|this.za();this.A-=this.B.Hb},function(){this.G=this.G&~this.N|this.za();this.A-=this.B.Hb},function(){A(this,C(this)&~this.N|this.za());this.A-=this.B.Hb},function(){this.L=this.L&~this.N|this.za();this.A-=this.B.Hb},function(){this.J=this.J&~this.N|this.za();this.A-=this.B.Hb},function(){this.I=this.I&~this.N|this.za();this.A-=this.B.Hb},dj,ej,dj,ej,function(){this.ja.call(this,oh)},function(){this.ja.call(this,mh)},function(){this.M|=1;this.Rc.call(this, +lj,this.ka)},function(){this.M|=1;this.$a.call(this,lj,this.za)},fj,gj,fj,gj,function(){if(this.O&131072&&3>this.Wb)v.call(this,13,0);else{var a=this.B.bj;this.xc=-1;Ai.call(this,3,null,a)}},function(){var a=this.ka();if(this.O&131072&&3>this.Wb)v.call(this,13,0);else{var b;a:{b=this.pf[a];if(void 0!==b)for(var c=0;cthis.Wb)v.call(this,13,0);else{var a=this.B.cj; +this.xc=-1;Ai.call(this,4,null,a)}else this.A-=this.B.dj},function(){if(this.O&131072&&3>this.Wb)v.call(this,13,0);else{this.yc=this.W.ha;this.na=this.ya;this.A-=this.B.$i;if(this.pa&1&&this.O&16384){var a=this.fa(this.la.va+0);sd(this.ga,a,!1)}else{var a=this.Ga,b=x(this),c=x(this),d=x(this);if(this.O&131072)d=d&131071|this.O&-131072;else if(d&131072){var e=x(this),f=x(this),g=x(this),h=x(this),l=x(this),m=x(this);td(this,!0,!0);rd(this,f);A(this,e);yd(this,g);xd(this,h);this.qb.load(l);this.rb.load(m)}null!= +Cd(this,b,c,!1)&&(Bd(this,d,a),this.cg&&Ne(this,this.ea))}this.yc=this.na=-1}},function(){this.Rc.call(this,aj,ui)},function(){this.$a.call(this,2==this.S?bj:cj,ui)},function(){this.Rc.call(this,aj,vi)},function(){this.$a.call(this,2==this.S?bj:cj,vi)},function(){var a=this.ka();if(a){var b=this.F&255;this.F=this.F&-65536|b/a<<8|b%a;H(this,this.F,128);this.A-=this.B.Fi}else Di.call(this)},function(){var a=this.F&255,b=(this.F>>8&255)*this.ka()|0,c=a+b|0;this.F=this.F&-65536|c&255;We(this,a,b,c,191); +this.A-=this.B.Ei},function(){this.F=this.F&-256|(Xe(this)?255:0);this.A-=2},function(){this.F=this.F&-256|qf(this,this.Ba,this.G+(this.F&255));this.A-=this.B.Dj},function(){hj.call(this,216)},function(){hj.call(this,217)},function(){hj.call(this,218)},function(){hj.call(this,219)},function(){hj.call(this,220)},function(){hj.call(this,221)},function(){hj.call(this,222)},function(){hj.call(this,223)},function(){var a=this.P(),b=this.H-1&this.ra;this.H=this.H&~this.ra|b;b&&!$e(this)?(G(this,E(this)+ +a),this.A-=this.B.kj):this.A-=this.B.Mg},function(){var a=this.P(),b=this.H-1&this.ra;this.H=this.H&~this.ra|b;b&&$e(this)?(G(this,E(this)+a),this.A-=this.B.Ng):this.A-=this.B.Og},function(){var a=this.P(),b=this.H-1&this.ra;this.H=this.H&~this.ra|b;b?(G(this,E(this)+a),this.A-=this.B.jj):this.A-=this.B.Mg},function(){var a=this.P();this.H&this.ra?this.A-=this.B.Og:(G(this,E(this)+a),this.A-=this.B.Ng)},function(){var a=this.ka();of(this,a,1)&&(this.F=this.F&-256|lc(this.ma,a,1,this.ea-2)&255,this.A-= +this.B.Hg)},function(){var a=this.ka();of(this,a,this.S)&&(this.F=this.F&~this.N|lc(this.ma,a,this.S,this.ea-2)&this.N,this.A-=this.B.Hg)},function(){var a=this.ka();of(this,a,1)&&(nc(this.ma,a,1,this.F&255,this.ea-2),this.A-=this.B.Vg)},function(){var a=this.ka();of(this,a,this.S)&&(nc(this.ma,a,this.S,this.F&this.N,this.ea-2),this.A-=this.B.Vg)},function(){var a=this.za(),b=E(this),a=b+a;D(this,b);G(this,a);this.A-=this.B.Ji},function(){var a=this.za();G(this,E(this)+a);this.A-=this.B.Ig},function(){Cd(this, +this.za(),vf(this));this.A-=this.B.fj},function(){var a=this.P();G(this,E(this)+a);this.A-=this.B.Ig},function(){var a=this.K&65535;of(this,a,1)&&(this.F=this.F&-256|lc(this.ma,a,1,this.ea-1)&255,this.A-=this.B.Gg)},function(){var a=this.K&65535;of(this,a,this.S)&&(this.F=this.F&~this.N|lc(this.ma,a,this.S,this.ea-1)&this.N,this.A-=this.B.Gg)},function(){var a=this.K&65535;of(this,a,1)&&(nc(this.ma,a,1,this.F&255,this.ea-1),this.A-=this.B.Ug)},function(){var a=this.K&65535;of(this,a,2)&&(nc(this.ma, +a,this.S,this.F&this.N,this.ea-1),this.A-=this.B.Ug)},ij,ij,function(){this.M|=132;this.A-=this.B.Gc},function(){this.M|=68;this.A-=this.B.Gc},function(){this.O&131072?v.call(this,13,0):(this.Ka|=4,this.A-=2,this.O&512||Qc(this))},function(){Xe(this)?df(this):cf(this);this.A-=2},function(){this.dc=!1;this.Rc.call(this,mj,xi);this.dc&&(this.F=this.F&~this.N|this.Aa&this.N)},function(){this.dc=!1;this.$a.call(this,nj,xi);this.dc&&(this.F=this.F&~this.N|this.Aa&this.N,this.K=this.K&~this.N|this.Va&this.N)}, +function(){df(this);this.A-=2},function(){cf(this);this.A-=2},function(){this.Ga>this.Wb?v.call(this,13,0):(this.O&=-513,this.A-=this.B.Hi)},function(){this.Ga>this.Wb?v.call(this,13,0):(this.O|=512,this.M|=4,this.A-=2)},function(){this.O&=-1025;this.A-=2},function(){this.O|=1024;this.A-=2},function(){this.Rc.call(this,Gd,xi)},function(){this.$a.call(this,Hd,xi)}],Wi=[Mg,yh,Kg,Ah,Og,fi,ni,bh],jj=[Ng,zh,Lg,Bh,Pg,gi,oi,ch],kj=[function(a,b){this.A-=-1===this.D?this.B.Yb:this.B.vj;return b},eh,eh,eh, +eh,eh,eh,eh],lj=[function(a,b){this.A-=-1===this.D?this.B.nj:this.B.lj;return b},R,R,R,R,R,R,R],aj=[function(a,b){var c=a;if(b&=this.Ha){var d;(b&=7)?(d=a<>8-b)&255):d=a<<7;gf(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ha){var d;(b&=7)?(d=a<<8-b,c=(a>>>b|d)&255):d=a;gf(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ha){var d=hf(this);(b%=9)?(c=(a<>9-b)&255,d=a<>b|d<<8-b|a<<9-b)&255,d=a<<8-b):d<<=7;gf(this,c,d,128)}return c},function(a,b){var c=a;if(b&=this.Ha){var d=0;8>>b-1,a=b>>>1&255,H(this,a,128,b&1,a&128);return a},R,function(a,b){if(b&=this.Ha)9>24>>b-1,a=b>>1&255,H(this,a,128,b&1);return a}],bj=[function(a,b){var c=a;if(b&=this.Ha){var d;(b&=15)?(d=a<>16-b)&65535):d=a<<15;gf(this,c,d,32768)}return c}, +function(a,b){var c=a;if(b&=this.Ha){var d;(b&=15)?(d=a<<16-b,c=(a>>>b|d)&65535):d=a;gf(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ha){var d=hf(this);(b%=17)?(c=(a<>17-b)&65535,d=a<>b|d<<16-b|a<<17-b)&65535,d=a<<16-b):d<<=15;gf(this,c,d,32768)}return c},function(a,b){var c=a;if(b&=this.Ha){var d=0;16>>b-1,a=b>>>1&65535,H(this,a,32768,b&1,a&32768);return a},R,function(a,b){if(b&=this.Ha)17>16>>b-1,a=b>>1&65535,H(this,a,32768,b&1);return a}],cj=[function(a,b){var c=a;if(b&=this.Ha)c=a<>>32-b,gf(this,c,a<>>b|d;gf(this,c,d,-2147483648)}return c},function(a,b){var c=a;if(b&=this.Ha)c=hf(this),c=a<>>32-b>>>1,gf(this,c,a<>>b|c<<32-b|a<<32-b<<1,gf(this,c,a<<32-b,-2147483648);return c},function(a,b){var c=a;if(b&=this.Ha)a<<=b-1,c=a<<1,H(this,c,-2147483648,a&-2147483648,(c^a)&-2147483648);return c},function(a,b){if(b&=this.Ha)b=a>>>b-1,a=b>>>1,H(this,a,-2147483648,b&1,a&-2147483648);return a},R,function(a,b){if(b&=this.Ha)b=a>>b-1,a=b>>1,H(this,a,-2147483648,b&1);return a}],mj=[function(a,b){b=this.ka();H(this,a&b,128);this.A-=-1===this.C?this.B.gh:this.B.fh;this.M|= +2;return a},R,function(a){this.A-=-1===this.C?this.B.We:this.B.Ve;return a^255},function(a){var b=-a|0;We(this,0,a,b,191,!0);this.A-=-1===this.C?this.B.We:this.B.Ve;return b&255},function(a){this.Aa=(this.F&255)*a&65535;this.Aa&65280?(cf(this),ef(this)):(df(this),ff(this));this.dc=!0;this.A-=-1===this.C?this.B.rj:this.B.qj;this.M|=2;return a},function(a){var b=(this.F<<24>>24)*(a<<24>>24)|0;this.Aa=b&65535;127b?(cf(this),ef(this)):(df(this),ff(this));this.dc=!0;this.A-=-1===this.C?this.B.Xi: +this.B.Wi;this.M|=2;return a},function(a,b){if(!a)return Di.call(this),a;var c=(b=this.F&65535)/a;if(255>24,d=(b=this.F<<16>>16)/c|0;if(d!=d<<24>>24||8086==this.aa&&-128==d)return Di.call(this),a;this.Aa=d&255|(b%c&255)<<8;this.dc=!0;this.A-=-1===this.C?this.B.Ti:this.B.Si;this.M|=2;return a}],nj=[function(a,b){b=this.za(); +H(this,a&b,this.sb);this.A-=-1===this.C?this.B.gh:this.B.fh;this.M|=2;return a},R,function(a){this.A-=-1===this.C?this.B.We:this.B.Ve;return a^this.N},function(a){var b=-a|0;We(this,0,a,b,this.sb|63,!0);this.A-=-1===this.C?this.B.We:this.B.Ve;return b&this.N},function(a,b){2==this.S?(b=this.F&65535,b=b*a|0,this.Aa=b&65535,this.Va=b>>16&65535):(kh.call(this,a,this.F),80563==this.pd&&68657152==this.F&&129==a&&(this.Va=0));this.Va?(cf(this),ef(this)):(df(this),ff(this));this.dc=!0;this.A-=-1===this.C? +this.B.tj:this.B.sj;this.M|=2;return a},function(a,b){2==this.S?(b=this.F&65535,b=(b<<16>>16)*(a<<16>>16)|0,this.Aa=b&65535,this.Va=b>>16&65535,b=32767b):(jh.call(this,a,this.F),b=this.Va!=this.Aa>>31);b?(cf(this),ef(this)):(df(this),ff(this));this.dc=!0;this.A-=-1===this.C?this.B.Zi:this.B.Yi;this.M|=2;return a},function(a,b){if(2==this.S){if(!a)return Di.call(this),a;b=65536*(this.K&65535)+(this.F&65535);var c=b/a;if(65536<=c)return Di.call(this),a;this.Aa=c&65535;this.Va=b%a&65535}else{if(!ri.call(this, +this.F,this.K,a))return Di.call(this),a;this.Aa|=0;this.Va|=0}this.dc=!0;this.A-=-1===this.C?this.B.Ri:this.B.Qi;this.M|=2;return a},function(a,b){if(2==this.S){if(!a)return Di.call(this),a;var c=a<<16>>16,d=(b=this.K<<16|this.F&65535)/c|0;if(d!=d<<16>>16||8086==this.aa&&-32768==d)return Di.call(this),a;this.Aa=d&65535;this.Va=b%c&65535}else{b=this.F;var c=this.K,d=a,e=0,f=0;0>d&&(d=-d|0,e=1-e);0>c&&(b=-b|0,c=~c+(b?0:1)|0,f=1,e=1-e);!ri.call(this,b,c,d)||this.Aa>2147483647+e||this.Va>2147483647+f? +b=!1:(e&&(this.Aa=-this.Aa),f&&(this.Va=-this.Va),b=!0);if(!b)return Di.call(this),a;this.Aa|=0;this.Va|=0}this.dc=!0;this.A-=-1===this.C?this.B.Vi:this.B.Ui;this.M|=2;return a}],Gd=[function(a){var b=a+1|0;We(this,a,1,b,190);this.A-=-1===this.C?this.B.Ue:this.B.Te;return b&255},function(a){var b=a-1|0;We(this,a,1,b,190,!0);this.A-=-1===this.C?this.B.Ue:this.B.Te;return b&255},R,R,R,R,R,R],Hd=[function(a){var b=a+1|0;We(this,a,1,b,this.sb|62);this.A-=-1===this.C?this.B.Ue:this.B.Te;return b&this.N}, +function(a){var b=a-1|0;We(this,a,1,b,this.sb|62,!0);this.A-=-1===this.C?this.B.Ue:this.B.Te;return b&this.N},function(a){D(this,E(this));G(this,a);this.A-=-1===this.C?this.B.Ni:this.B.Mi;this.M|=2;return a},function(a){if(-1===this.C)return R.call(this,a);this.na=this.ya;zi.call(this,a,this.fa(this.C+this.S));this.A-=this.B.Ki;this.M|=2;this.na=-1;return a},function(a){G(this,a);this.A-=-1===this.C?this.B.hj:this.B.gj;this.M|=2;return a},function(a){if(-1===this.C)return R.call(this,a);Cd(this,a, +this.fa(this.C+this.S));this.A-=this.B.ej;this.M|=2;return a},function(a){var b=a;this.M&512&&(a=a-2&65535,80286>this.aa&&(b=a));D(this,b);this.A-=-1===this.C?this.B.qc:this.B.xj;this.M|=2;return a},R];function je(){this.ja.call(this,ki);this.A-=-1===this.C?6:13}function ke(){this.wa.call(this,ji);this.A-=-1===this.C?12:19}var be=Array(256);be[0]=function(){16>(this.Eb(this.ea)&56)&&(this.M|=1);this.$a.call(this,this.mi,xi)};be[1]=function(){this.Eb(this.ea)&16||(this.M|=1);this.$a.call(this,oj,xi)}; +be[2]=function(){!(this.pa&1)||this.O&131072?v.call(this,6):this.ja.call(this,lh)};be[3]=function(){!(this.pa&1)||this.O&131072?v.call(this,6):this.ja.call(this,rh)}; +be[5]=function(){this.Ga?v.call(this,13,0,0,!0):(nf(this,this.fa(2054)),this.I=this.fa(2086),this.J=this.fa(2088),this.L=this.fa(2090),this.G=this.fa(2094),this.K=this.fa(2096),this.H=this.fa(2098),this.F=this.fa(2100),nd(this.ua,2102,this.fa(2084)),nd(this.ga,2108,this.fa(2082)),nd(this.W,2114,this.fa(2080)),nd(this.Ca,2120,this.fa(2078)),Bd(this,this.fa(2072)),G(this,this.fa(2074)),A(this,this.fa(2092)),this.Kb=this.fa(2126)|this.Eb(2128)<<16,this.Oc=this.Kb+this.fa(2130),this.Tb=this.fa(2138)| +this.Eb(2140)<<16,this.Pc=this.Tb+this.fa(2142),nd(this.kc,2132,this.fa(2076)),nd(this.la,2144,this.fa(2070)),this.A-=195)};be[6]=function(){this.Ga?v.call(this,13,0):(this.pa&=-9,this.A-=2)};be[11]=Jd;be[166]=Jd;be[255]=Jd;var F=[];F[5]=Jd; +F[7]=function(){if(this.Ga)v.call(this,13,0,0,!0);else{var a=this.ua.Lb(this.I&this.ra,204);if(-1!==a){this.pa=this.da(a);td(this);this.pa&-2147483648?Tb(this):oe(this);var b=this.da(a+168),c=(b&24576)>>13;Bd(this,this.da(a+4),c);this.Kb=this.da(a+112);this.Oc=this.Kb+this.da(a+116);this.Tb=this.da(a+100);this.Pc=this.Tb+this.da(a+104);ld(this.kc,this.da(a+56),this.da(a+120),this.da(a+124),this.da(a+128));ld(this.la,this.da(a+52),this.da(a+84),this.da(a+88),this.da(a+92));this.I=this.da(a+12);this.J= +this.da(a+16);this.L=this.da(a+20);this.G=this.da(a+28);this.K=this.da(a+32);this.H=this.da(a+36);this.F=this.da(a+40);ld(this.rb,this.da(a+60),this.da(a+132),this.da(a+136),this.da(a+140));ld(this.qb,this.da(a+64),this.da(a+144),this.da(a+148),this.da(a+152));ld(this.Ca,this.da(a+68),this.da(a+156),this.da(a+160),this.da(a+164));ld(this.W,this.da(a+72),b,this.da(a+172),this.da(a+176));ld(this.ga,this.da(a+76),this.da(a+180),this.da(a+184),this.da(a+188));ld(this.ua,this.da(a+80),this.da(a+192),this.da(a+ +196),this.da(a+200));G(this,this.da(a+8));A(this,this.da(a+24))}this.A-=122<<(a&3?1:0)}};F[16]=Xi;F[17]=Yi;F[18]=Zi;F[19]=$i;F[32]=function(){if(this.Ga)v.call(this,13,0);else{var a,b=this.ka();switch((b&56)>>3){case 0:a=this.pa;break;case 2:a=this.Xd;break;case 3:a=this.nd;break;default:ce.call(this);return}qe(this,b&7,a);this.A-=6}};F[33]=function(){if(this.Ga)v.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;4==b||5==b?ce.call(this):(qe(this,a&7,this.Bb[b]),this.A-=22)}}; +F[34]=function(){if(this.Ga)v.call(this,13,0);else{var a=this.ka(),b=pe(this,a&7);switch((a&56)>>3){case 0:this.pa=b;td(this);this.pa&-2147483648?Tb(this):oe(this);this.A-=10;break;case 2:this.Xd=b;this.A-=4;break;case 3:Dd.call(this,b);this.A-=5;break;default:ce.call(this)}}};F[35]=function(){if(this.Ga)v.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;4==b||5==b?ce.call(this):(a=pe(this,a&7),a!=this.Bb[b]&&(Oe(this,!1),this.Bb[b]=a,Oe(this,!0)),this.A-=4>b?22:14)}}; +F[36]=function(){if(this.Ga)v.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;6>b?ce.call(this):(qe(this,a&7,this.sf[b]),this.A-=12)}};F[38]=function(){if(this.Ga)v.call(this,13,0);else{var a=this.ka(),b=(a&56)>>3;6>b?ce.call(this):(this.sf[b]=pe(this,a&7),this.A-=12)}};F[128]=function(){var a=this.za();bf(this)?(G(this,E(this)+a),this.A-=this.B.Ia):this.A-=this.B.Ja};F[129]=function(){var a=this.za();bf(this)?this.A-=this.B.Ja:(G(this,E(this)+a),this.A-=this.B.Ia)}; +F[130]=function(){var a=this.za();Xe(this)?(G(this,E(this)+a),this.A-=this.B.Ia):this.A-=this.B.Ja};F[131]=function(){var a=this.za();Xe(this)?this.A-=this.B.Ja:(G(this,E(this)+a),this.A-=this.B.Ia)};F[132]=function(){var a=this.za();$e(this)?(G(this,E(this)+a),this.A-=this.B.Ia):this.A-=this.B.Ja};F[133]=function(){var a=this.za();$e(this)?this.A-=this.B.Ja:(G(this,E(this)+a),this.A-=this.B.Ia)};F[134]=function(){var a=this.za();Xe(this)||$e(this)?(G(this,E(this)+a),this.A-=this.B.Ia):this.A-=this.B.Ja}; +F[135]=function(){var a=this.za();Xe(this)||$e(this)?this.A-=this.B.Ja:(G(this,E(this)+a),this.A-=this.B.Ia)};F[136]=function(){var a=this.za();af(this)?(G(this,E(this)+a),this.A-=this.B.Ia):this.A-=this.B.Ja};F[137]=function(){var a=this.za();af(this)?this.A-=this.B.Ja:(G(this,E(this)+a),this.A-=this.B.Ia)};F[138]=function(){var a=this.za();Ye(this)?(G(this,E(this)+a),this.A-=this.B.Ia):this.A-=this.B.Ja};F[139]=function(){var a=this.za();Ye(this)?this.A-=this.B.Ja:(G(this,E(this)+a),this.A-=this.B.Ia)}; +F[140]=function(){var a=this.za();!af(this)!=!bf(this)?(G(this,E(this)+a),this.A-=this.B.Ia):this.A-=this.B.Ja};F[141]=function(){var a=this.za();!af(this)==!bf(this)?(G(this,E(this)+a),this.A-=this.B.Ia):this.A-=this.B.Ja};F[142]=function(){var a=this.za();$e(this)||!af(this)!=!bf(this)?(G(this,E(this)+a),this.A-=this.B.Ia):this.A-=this.B.Ja};F[143]=function(){var a=this.za();$e(this)||!af(this)!=!bf(this)?this.A-=this.B.Ja:(G(this,E(this)+a),this.A-=this.B.Ia)};F[144]=function(){ti.call(this,Ch)}; +F[145]=function(){ti.call(this,Ch)};F[146]=function(){ti.call(this,Dh)};F[147]=function(){ti.call(this,Eh)};F[148]=function(){ti.call(this,Fh)};F[149]=function(){ti.call(this,Gh)};F[150]=function(){ti.call(this,Hh)};F[151]=function(){ti.call(this,Ih)};F[152]=function(){ti.call(this,Jh)};F[153]=function(){ti.call(this,Kh)};F[154]=function(){ti.call(this,Lh)};F[155]=function(){ti.call(this,Mh)};F[156]=function(){ti.call(this,Nh)};F[157]=function(){ti.call(this,Oh)};F[158]=function(){ti.call(this,Ph)}; +F[159]=function(){ti.call(this,Qh)};F[160]=function(){wd(this,this.qb.ha,this.S,2);this.A-=this.B.Md};F[161]=function(){this.na=this.ya;var a=x(this);this.qb.load(a);this.A-=this.B.Yb;this.na=-1};F[163]=function(){this.wa.call(this,Yg);-1!==this.C&&(this.A-=6)};F[164]=function(){this.wa.call(this,2==this.S?Rh:Wh);this.A-=-1===this.C?3:7};F[165]=function(){this.wa.call(this,2==this.S?Yh:Zh);this.A-=-1===this.C?3:7};F[168]=function(){wd(this,this.rb.ha,this.S,2);this.A-=this.B.Md}; +F[169]=function(){this.na=this.ya;var a=x(this);this.rb.load(a);this.A-=this.B.Yb;this.na=-1};F[171]=function(){this.wa.call(this,ah);-1!==this.C&&(this.A-=5)};F[172]=function(){this.wa.call(this,2==this.S?$h:bi);this.A-=-1===this.C?3:7};F[173]=function(){this.wa.call(this,2==this.S?di:ei);this.A-=-1===this.C?3:7};F[175]=function(){this.ja.call(this,2==this.S?gh:ih)};F[178]=function(){this.ja.call(this,sh)};F[179]=function(){this.wa.call(this,$g);-1!==this.C&&(this.A-=5)}; +F[180]=function(){this.ja.call(this,ph)};F[181]=function(){this.ja.call(this,qh)}; +F[182]=function(){this.Vb.call(this,uh);switch(this.Z>>3&7){case 0:this.F=this.F&~this.N|this.F&255;break;case 1:this.H=this.H&~this.N|this.H&255;break;case 2:this.K=this.K&~this.N|this.K&255;break;case 3:this.G=this.G&~this.N|this.G&255;break;case 4:this.jc=this.jc&~this.N|this.F>>8&255;this.F=this.ta;break;case 5:this.L=this.L&~this.N|this.H>>8&255;this.H=this.ta;break;case 6:this.J=this.J&~this.N|this.K>>8&255;this.K=this.ta;break;case 7:this.I=this.I&~this.N|this.G>>8&255,this.G=this.ta}this.A-= +-1===this.C?3:6};F[183]=function(){ud(this,2);this.ja.call(this,vh);switch(this.Z>>3&7){case 0:this.F=this.F&65535;break;case 1:this.H=this.H&65535;break;case 2:this.K=this.K&65535;break;case 3:this.G=this.G&65535;break;case 4:this.jc=this.jc&65535;break;case 5:this.L=this.L&65535;break;case 6:this.J=this.J&65535;break;case 7:this.I=this.I&65535}this.A-=-1===this.C?3:6};F[186]=function(){this.$a.call(this,pj,this.ka)};F[187]=function(){this.wa.call(this,Zg);-1!==this.C&&(this.A-=5)}; +F[188]=function(){this.ja.call(this,Sg)};F[189]=function(){this.ja.call(this,Tg)}; +F[190]=function(){this.Vb.call(this,uh);switch(this.Z>>3&7){case 0:this.F=this.F&~this.N|(this.F&255)<<24>>24&this.N;break;case 1:this.H=this.H&~this.N|(this.H&255)<<24>>24&this.N;break;case 2:this.K=this.K&~this.N|(this.K&255)<<24>>24&this.N;break;case 3:this.G=this.G&~this.N|(this.G&255)<<24>>24&this.N;break;case 4:this.jc=this.jc&~this.N|this.F<<16>>24&this.N;this.F=this.ta;break;case 5:this.L=this.L&~this.N|this.H<<16>>24&this.N;this.H=this.ta;break;case 6:this.J=this.J&~this.N|this.K<<16>>24& +this.N;this.K=this.ta;break;case 7:this.I=this.I&~this.N|this.G<<16>>24&this.N,this.G=this.ta}this.A-=-1===this.C?3:6};F[191]=function(){ud(this,2);this.ja.call(this,vh);switch(this.Z>>3&7){case 0:this.F=this.F<<16>>16;break;case 1:this.H=this.H<<16>>16;break;case 2:this.K=this.K<<16>>16;break;case 3:this.G=this.G<<16>>16;break;case 4:this.jc=this.jc<<16>>16;break;case 5:this.L=this.L<<16>>16;break;case 6:this.J=this.J<<16>>16;break;case 7:this.I=this.I<<16>>16}this.A-=-1===this.C?3:6}; +var Pe=[function(){this.A-=2+(-1===this.C?0:1);return this.kc.ha},function(){this.A-=2+(-1===this.C?0:1);return this.la.ha},function(a){this.M|=2;this.kc.load(a);this.A-=17+(-1===this.C?0:2);return a},function(a){this.M|=2;-1!==this.la.load(a)&&(this.Wa(this.la.ac+4,this.la.jb|=512),this.la.type|=512);this.A-=17+(-1===this.C?0:2);return a},function(a){this.M|=2;this.A-=14+(-1===this.C?0:2);if(-1!==this.bb.load(a)&&2048!=(this.bb.jb&2560)&&(this.bb.hc>=this.Ga&&this.bb.hc>=(a&3)||7168==(this.bb.jb& +7168)))return mf(this),a;kf(this);return a},function(a){this.M|=2;this.A-=14+(-1===this.C?0:2);if(-1!==this.bb.load(a)&&512==(this.bb.jb&2560)&&this.bb.hc>=this.Ga&&this.bb.hc>=(a&3))return mf(this),a;kf(this);return a},R,R],Id=[$d,$d,$d,$d,$d,$d,R,R],oj=[function(a){if(-1===this.C)v.call(this,6);else{a=this.Oc-this.Kb;var b=this.Kb;80286==this.aa?b|=-16777216:80386<=this.aa&&2!=this.S&&(a|=b<<16);this.Pa(this.C+2,b);this.A-=11}return a},function(a){if(-1===this.C)v.call(this,6);else{a=this.Pc-this.Tb; +var b=this.Tb;80286==this.aa?b|=-16777216:80386<=this.aa&&2!=this.S&&(a|=b<<16);this.Pa(this.C+2,b);this.A-=12}return a},function(a){-1===this.C||this.O&131072?v.call(this,6):(this.Kb=this.da(this.C+2)&(this.N|this.N<<8),a&=65535,this.Oc=this.Kb+a,this.M|=2,this.A-=11);return a},function(a){-1===this.C||this.O&131072?v.call(this,6):(this.Tb=this.da(this.C+2)&(this.N|this.N<<8),a&=65535,this.Pc=this.Tb+a,this.M|=2,this.A-=12);return a},function(){this.A-=2+(-1===this.C?0:1);return this.pa},R,function(a){this.O& +131072?v.call(this,6):(nf(this,a),this.A-=-1===this.C?3:6,this.M|=2);return a},R],pj=[R,R,R,R,Ug,Xg,Wg,Vg]; +function T(a){t.call(this,"ChipSet",a);var b=a.model;b&&!qj[b]&&r("Unrecognized ChipSet model: "+b);this.aa=qj[b]||rj;this.C=[];b=sj(a[tj]);this.C[0]=[b,b];null==b&&(this.O=[360,360],(b=a.floppies)&&b.length&&(this.O=b),uj(this,vj,this.O.length),uj(this,wj,a.monitor||(this.aa=Ef&&(this.wa=this.ja=2);this.V=a.scaleTimers||!1;this.Ka=a.rtcDate;this.Ga=!1;a.sound&&(this.Ca=this.la=null,window&&(this.Ca=window.AudioContext||window.webkitAudioContext), +this.Ca&&(this.la=new this.Ca));this.reset(!0);mb(this)}ba(T,t);k=T.prototype;k.wb=function(a,b,c){switch(b){case tj:return this.ia[b]=c,yj(this,0,b),!0;case xj:if((this.aa|0)==zj||this.aa==Aj)return this.ia[b]=c,yj(this,1,b),!0;break;case Bj:return this.ia[b]=c,!0}return!1}; +k.ic=function(a,b,c,d){this.ma=b;this.U=c;this.Ea=d;this.oa=a;this.Vd=vb(a,"FPU");uj(this,Cj,this.Vd?1:0,!0);this.B=vb(a,"Keyboard");this.Aa=c.R.Xc/Dj;kc(b,this,Ej);mc(b,this,Fj);this.aa=Ef){this.F=Xj;this.L=0;this.K=Yj;this.pa=0;this.M=Zj|ak;512<=bk(this)&&(this.M|=ck);+dk(this,wj,void 0)==ek&&(this.M|=fk);(this.aa|0)==Mj&&(this.M=this.M|gk|hk);this.qa=ik| +jk;this.G=Array(8);this.W=0;a&&(this.A=Array(kk));lk(this,this.Ka);for(a=mk;a<=nk;a++)this.A[a]=0;for(a=ok;a>8} +k.save=function(){var a=new Qe(this);a.set(0,[this.C]);for(var b=[],c=0;c=Ef&&(a.set(5,[this.F,this.L,this.K,this.pa,this.M,this.qa]),a.set(6,[this.G[7],this.G,this.W,this.A,this.na,this.X]));return a.data()}; +k.restore=function(a){var b,c;b=a[0];Array.isArray(b[0])?this.C=b[0]:(this.C[0][0]=b[0],this.C[1][0]=b[1]&15,this.C[0][1]=b[2],this.C[1][1]=b[3]&15);Pj(this);b=a[1];for(c=0;c=f;f++){var g="pcjs-bitCell";f||(g+=" pcjs-bitCellLeft");d+='
    '+f+"
    \n"}e.innerHTML=d;Wk(a,b,c,!0)}function Xk(a,b,c){if(b=(a=U[a.aa|0])&&a[b])for(var d in b)if(a=b[d],a.gc&1<d.eb[0]&&(d.eb[0]=255,d.eb[1]--,0>d.eb[1]&&(d.eb[1]=255)));return e}function kl(a,b,c,d){a=a.D[b];c=a.Qb[c];c.eb[a.Cb]=c.bc[a.Cb]=d;a.Cb^=1} +function ll(a,b){a=a.D[b];b=a.zb|ml;a.zb&=~nl;return b}function ol(a,b,c){a=a.D[b];b=c&3;a.zb=a.zb&~(16<>2].Qb[b&3],c,d,e)}function sl(a,b,c){b=a.D[b>>2].Qb[b&3];b.Cf&&b.pg&&b.Rf?(c&&(b.done=c),b.Jd||xl(a,b,!0)):c&&c(!0)} +function xl(a,b,c){c&&(b.count=b.eb[1]<<8|b.eb[0],b.type=b.mode&yl,b.oi=b.Ef=!1);for(var d=!1;0<=b.count&&(c=b.vf<<16|b.cb[1]<<8|b.cb[0],b.type==zl?(d=!0,function(c){b.pg.call(b.Cf,b.Rf,-1,function(e,g){0>e&&(b.oi||(b.oi=!0),e=255);b.Jd||a.ma.Dc(c,e);(d=g)&&setTimeout(function(){Al(b)||xl(a,b)},0)})}(c)):b.type==Bl?(c=a.ma.Eb(c),0>b.pg.call(b.Cf,b.Rf,c)&&(b.Ef=!0)):b.type!=Cl&&(b.Ef=!0)),!d&&!Al(b););} +function Al(a){if(!a.Ef&&0<=--a.count&&(a.mode&Dl?(a.cb[0]--,0>a.cb[0]&&(a.cb[0]=255,a.cb[1]--,0>a.cb[1]&&(a.cb[1]=255))):(a.cb[0]++,255>3];b=1<<(b&7);d.Rb&b||(d.Rb|=b,d.Qe=c||0,Ql(a))}function Ff(a,b){var c=a.$b[b>>3];b=1<<(b&7);c.Rb&b&&(c.Rb&=~b,Ql(a))}function Ql(a,b){var c,d=-1;1>=1),Sc(a.U,d))),b==bm&&c==fm&&Pk(a))} +function gm(a,b,c){var d=0,e=c&hm;b?(d=3,a.ea=c):a.ta=c;if(e==im){if(!(c&jm))for(e=0;2>=e;e++)if(c&km<=e;e++)c&km<>pm,f=c&qm,g=c&rm;c&=sm;if(c==tm)om(a,d+e);else{var d=d+e,h=a.H[d];h.gf=c;h.mode=g;h.lg=f;h.bc=[0,0];h.eb=[0,0];h.Fd=[0,0];h.Lc=!1;h.le=!1;h.Hd=!1;h.pe=!1;Xl(a,d);b==bm&&e==cm&&Ff(a,dm);b==bm&&e==fm&&255==a.$b[0].Uc&&a.J==(um|vm|wm|xm)&&(e=a.H[0], +e.vc[0]=e.bc[0],e.vc[1]=e.bc[1],e.gd=Yc(a.U,a.V))}}}function em(a,b){a=a.H[b];(b=a.bc[1]<<8|a.bc[0])||(b=1==a.fd?256:65536);return b}function bd(a,b){a=a.H[b];(b=a.vc[1]<<8|a.vc[0])||(b=1==a.fd?256:65536);return b}function om(a,b){Yl(a,b);var c=a.H[b];c.Fd[0]=c.eb[0];c.Fd[1]=c.eb[1];c.le=!0;Xl(a,b)}function Xl(a,b){a=a.H[b];a.Wc=a.gf==ym?1:0;a.fd=a.gf==zm?2:1} +function Yl(a,b,c){var d=a.H[b];if(d.Hd&&(b!=fm||a.J&um)){var e=Yc(a.U,a.V),f=(e-d.gd)/a.Aa|0;0>f&&(d.gd=e,f=0);var g=em(a,b),h=bd(a,b)-f;d.mode==$l?(0>=h&&(h=0),h||(d.Lc=!0,d.Hd=!1,b||Hf(a,dm))):d.mode==Am?(d.Lc=1!=h,0>=h&&(h=g+h,0>=h&&(h=g),d.vc[0]=h&255,d.vc[1]=h>>8&255,d.gd=e,!b&&d.Lc&&Hf(a,dm))):d.mode==cd&&(h-=f,0>=h&&(d.Lc=!d.Lc,h=g+h,0>=h&&(h=g),d.vc[0]=h&255,d.vc[1]=h>>8&255,d.gd=e,!b&&d.Lc&&Hf(a,dm)));d.eb[0]=h&255;d.eb[1]=h>>8&255;c&&(a.gd=0)}return d} +function ad(a,b){for(var c=0;c=Ef){b=a.U.R.Xc;c=Yc(a.U,a.V);null==a.ya&&(a.na=Yc(a.U,a.V),a.Ha=1024,a.ya=Math.floor(a.U.R.Xc/a.Ha),Nk(a));c>=a.X&&(a.A[Kk]|=Bm,a.A[dd]&ed&&(a.A[Kk]|=Cm,Hf(a,Dm)),a.X=c+a.ya);a.A[xk]==a.A[yk]&&a.A[zk]==a.A[Ak]&&a.A[Bk]==a.A[Ck]&&(a.A[Kk]|=Em,a.A[dd]&Fm&&(a.A[Kk]|=Cm,Hf(a,Dm)));var d=c-a.na,e=Math.floor(d/b);if(e&&!(a.A[dd]&Gm)){for(;e--;)if(60<=++a.A[xk]&&(a.A[xk]=0,60<=++a.A[zk]&&(a.A[zk]=0,24<=++a.A[Bk]))){a.A[Bk]=0;a.A[Dk]=a.A[Dk]% +7+1;var f;f=a.A[Gk];var g=za[a.A[Fk]-1];28==g&&(f%4||!(f%100)&&f%400||g++);f=g;++a.A[Ek]>f&&(a.A[Ek]=1,12<++a.A[Fk]&&(a.A[Fk]=1,a.A[Gk]=(a.A[Gk]+1)%100))}a.A[Kk]|=Hm;a.A[dd]&Mm&&(a.A[Kk]|=Cm,Hf(a,Dm))}a.na=c-d%b}}k.sl=function(){var a=this.ua;this.ga&Nm&&(this.J&Om?a=this.C[0][1]:this.B&&(a=Pm(this.B)));return a};k.Nm=function(a,b){this.ua=b};k.tl=function(){return this.J};k.Om=function(a,b){Qm(this,b)}; +function Qm(a,b){var c=!!(b&Rm),d=!!(a.J&Rm);a.J=b;a.B&&Sm(a.B,!(b&Om),!!(b&xm));c!=d&&Pk(a,c)}k.ul=function(){var a=0,a=(this.aa|0)==zj?this.J&vm?a|this.C[1][1]&Tm:a|this.C[1][1]>>4&1:this.J&Um?a|this.C[0][1]>>4:a|this.C[0][1]&15;this.J&um&&Yl(this,fm).Lc&&(a=this.J&Rm?a|Vm:a|Wm);return a};k.Pm=function(a,b){this.Ba=b};k.vl=function(){return this.ga};k.Qm=function(a,b){this.ga=b};k.Ek=function(){var a=this.B?Pm(this.B):0;this.Z&=~Xm;return a};k.Zl=function(){};k.Dk=function(){return this.J}; +k.Yl=function(a,b){Qm(this,b)};k.Fk=function(){return this.Z};k.Gk=function(){var a=this.pa;this.F&=~(Xm|Ym);this.B&&Zm(this.B);return a};k.am=function(a,b){if(this.F&$m)switch(this.L){case an:bn(this,b);break;case cn:dn(this,b);break;default:if(bn(this,this.K&~Yj),this.B){a=this.B;var c=b,d=-1;switch(a.G||c){case en:d=fn;a.Jb=[];gn(a,hn);break;case jn:a.G&&(c=0);gn(a,fn);a.G=c;break;case kn:a.G&&(c=0),gn(a,fn),a.G=c}ln(this,d)}}this.L=b;this.F&=~$m}; +k.Hk=function(){return this.J&~(mn|nn)|(Yc(this.U)&64?nn:0)};k.bm=function(a,b){Qm(this,b)};k.Ik=function(){var a=this.F&255;this.F&Ym&&(this.F|=Xm,this.F&=~Ym);return a}; +k.$l=function(a,b){this.L=b;this.F|=$m;a=0;this.L>=on&&(a=this.L^15,this.L=on);switch(this.L){case pn:ln(this,this.K);break;case qn:bn(this,this.K|Yj);break;case rn:bn(this,this.K&~Yj);this.B&&Zm(this.B);break;case sn:this.B&&(this.B.Jb=[]);bn(this,this.K|Yj);ln(this,tn);dn(this,ik|jk);break;case un:ln(this,vn);break;case wn:ln(this,this.M);break;case xn:ln(this,this.qa);break;case yn:ln(this,this.K&Yj?0:zn);break;case on:a&1&&le(this.U)}}; +function bn(a,b){a.K=b;a.F=a.F&~An|b&Bn;a.B&&Sm(a.B,!!(b&Cn),!(b&Yj))}function ln(a,b,c){0<=b&&(a.pa=b,c?a.F|=Xm:(a.F&=~Xm,a.F|=Ym))}function dn(a,b){a.qa=b;Pb(a.ma,!!(b&jk));b&ik||le(a.U)}function Dn(a,b){a.aac?c=c?c:12:c=(c-=12)?c+128:140,d=!0);this.A[dd]&Jn||(d&&128>4)+(d&15),e=!0);if(a==Bk||a==Ck)e&&23=d?d=12==d?0:d:(d-=116,d=24==d?12:d))}}else d=b;this.A[a]=d;a==dd&&c&ed&&b&ed&&Nk(this)};k.Hj=function(a,b){this.ba=b};k.Am=function(){};k.Bm=function(){this.Vd&&Af(this.Vd)}; +function Pk(a,b){if(a.la)try{void 0!==b?a.Ga=b:b=!!(a.Ga&&a.U&&a.U.ca.Ib);var c=Math.round(Dj/em(a,fm));if(20>c||2E4>>4,0,this.F,this.C,this.H),delete this.H);return!0};Mn.prototype.Nb=function(){return!0}; +function Nn(a,b,c,d){if(d)a.xa("Unable to load system ROM (error "+d+": "+b+")");else{Va(a.Wd,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.longs||e.data;if(f)a.A=f;else if(g)for(a.A=Array(4*g.length),d=c=0;c>8&255,a.A[d++]=g[c]>>16&255,a.A[d++]=g[c]>>24&255;else a.A=e;a.H=e.symbols;if(!a.A.length){r("Empty ROM: "+b);return}if(1==a.A.length){r(a.A[0]);return}}catch(h){a.xa("ROM data error: "+h.message);return}else for(b= +c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e>>d.B].hf(e&d.C,a.A[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.D?b.push(a.D):null!=a.D&&a.D.length&&(b=a.D);for(c=0;cthis.B?mk:23,c=a.A[b]|a.A[b+1]<<8,c=c+(this.A>>10);a.A[b]=c&255;a.A[b+1]=c>>8;wk(a)}}else r("No RAM allocated")}; +k.save=function(){var a=new Qe(this);this.controller&&a.set(0,this.controller.save());return a.data()};k.restore=function(a){return this.controller?this.controller.restore(a[0]):!0};function Tn(a){this.F=a;this.C=Vn;this.D=Wn;this.B=Xn;this.A=null}k=Tn.prototype;k.save=function(){return[this.C,this.B]};k.restore=function(a){this.Dc(0,a[0]&255);this.Dc(2,a[1]&255);return!0};k.Eb=function(a){var b=255;2>a?b=a&1?this.D>>8:this.D&255:4>a&&(b=a&1?this.B>>8:this.B&255);return b}; +k.Dc=function(a,b){if(a)2==a&&(this.B=this.B&-256|b);else if(b!=(this.C&255)){a=this.F.ma;if(b&Yn)this.A&&(Wb(a,Zn,$n,this.A),this.A=null);else{this.A||(this.A=Xb(a,Zn,$n));var c=Xb(a,ao,$n);Wb(a,Zn,$n,c,b&bo?1:cc)}this.C=this.C&-256|b}};k.ti=function(){return co};k.qg=function(){return eo};var Un=-2134900736,ao=16646144,Zn=917504,$n=131072,Yn=1,bo=2,Vn=65535,Wn=2575,Xn=2,co=[null,0],eo=[function(a){return this.controller.Eb(a)},null,null,function(a,b){this.controller.Dc(a,b)},null,null]; +Ma(function(){for(var a=eb(document,"pcx86","ram"),b=0;b=n.Dd&&d<=n.z&&(d-=n.Dd-n.Cd),d=po[e]==d),d){(a=a.ia["key-"+e])&&void 0!==c&&(a.style.color=c?"#ffffff":"#000000",a.style.backgroundColor=c?"#000000":"#ffffff");break}}} +k.ic=function(a,b,c,d){this.oa=a;this.ma=b;this.U=c;this.Ea=d;this.V=vb(a,"ChipSet");this.F=Mc(a,"autoType")||this.F;Me(c,33,this.Kl.bind(this))};k.Kl=function(){if(10==(this.U.F>>8&255)&&!this.D&&this.F){var a=this.D=this.F;a&&!this.B&&(this.B=a,ro(this,150))}return!0};function go(a,b){var c=0;a.aa=null;"string"==typeof b&&(a.aa=b.toUpperCase(),c=to.indexOf(a.aa),0>c&&(c=0));if(b=to[c])a.X=parseInt(b.substr(2),10)} +function Sm(a,b,c){a.J!==c&&(a.J=a.K=c)&&(a.H=!0);a.I!==b&&(a.I=b)&&!a.K&&Fn(a,!0);a.I&&a.K&&(a.Jb=[],gn(a,hn),a.K=!1)}function gn(a,b){a.V&&(a.Jb.unshift(b),a.H=!0,Dn(a.V,b))}function Zm(a){var b;a.Jb.length&&a.H&&(b=a.Jb[0],a.V&&Dn(a.V,b))}function Pm(a){var b=0;a.Jb.length&&(b=a.Jb[0]);return b}function Fn(a,b){0>=1);if(b&xo){if(!1===d)return!0;d=null}null==d?d=!((c?a.C:a.Sb)&b):d||b&yo&&(b=yo);if(c){a.C&=~b;d&&(a.C|=b);c=b;var f,g;for(g in zo)d="led-"+g,e=zo[g],c&&c!=e||!(f=a.ia[d])||(f.style.backgroundColor=a.C&e?"#00ff00":"#000000")}else a.Sb&=~b,d&&(a.Sb|=b);return!0}}return!1} +function jo(a,b,c){if((V[b]||V[b+=1E3])&&a.U&&a.U.ca.Ib){vo[b]&&a.A.length&&0e||(e==a.A.length&&(d={},d.Td=b,d.Sb=a.Sb,so(a,b,!0),e++),0b.Zc){if(!b.Je){qo(a,b.Td);return}b.Je=!1;c=a.Z}else c=1==b.Zc++?500:100;b.Vj=setTimeout(function(a){return function(){Ao(a,b)}}(a),c)}} +function Co(a,b,c){var d=b;if(b>=n.Cd&&b<=n.tf)!(a.Sb&(Do|Eo|Fo))==c&&(d=b+(n.Dd-n.Cd));else if(b>=n.Dd&&b<=n.z)!!(a.Sb&(Do|Eo|Fo))==c&&(d=b-(n.Dd-n.Cd));else if(!!(a.Sb&(Do|Eo))==c){if(a=p[b])d=a}else if(a=ma[b])d=a;return d}k.Sf=function(a){a||(this.Sb&=~yo)}; +function ho(a,b,c){var d=!0,e=!1,f=!1,g=b.keyCode;a.B="";var h=Co(a,g,!0);a.og&&h==n["`"]&&(g=h=27);if(V[g+1E3])if(h+=1E3,2==b.location&&(h+=2E3),oo(a,h,!1,c)){if(20==g||144==g||145==g)a.O||(c=e=!0);if(!(c||91!=g&&93!=g))for(var l=0;l=n.Cd&&b<=n.tf||b>=n.Dd&&b<=n.z;e>>>=8;){var g=0,h=e&255;f==Po||f==Qo?d.push(f|(c?0:Oo)):(h==W?a.C&(Do|Eo)||a.C&Fo&&b||(g=h):h==Ro?a.C&(Go|So)||(g=h):h==To?a.C&(Ho|Uo)||(g=h):d.push(f|(c?0:Oo)),g&&(c?d.unshift(g):d.push(g|Oo)))}for(c=0;c"]]=52|W<<8;V[n["/"]]=53; +V[n["?"]]=53|W<<8;V[3016]=54;V[1044]=55;V[1018]=To;V[1032]=57;V[ko]=58;V[1112]=59;V[1113]=60;V[1114]=61;V[1115]=62;V[1116]=63;V[1117]=64;V[1118]=65;V[1119]=66;V[1120]=67;V[1121]=68;V[lo]=69;V[mo]=70;V[1036]=71;V[1038]=72;V[1033]=73;V[1109]=74;V[1037]=75;V[1101]=76;V[1039]=77;V[1107]=78;V[1035]=79;V[1040]=80;V[1034]=81;V[1045]=82;V[1046]=No;V[4027]=84;V[1122]=87;V[1123]=88;V[1091]=91;V[1093]=93;V[1224]=91;V[Xo]=46|Ro<<8;V[Io]=70|Ro<<8;V[4046]=No|Ro<<8|To<<16;V[4045]=82|Ro<<8|To<<16; +V[4013]=28|Ro<<8|To<<16;var en=255,jn=243,kn=237,hn=170,fn=250,Wo=255,Vo=20;Ma(function(){for(var a=eb(document,"pcx86","keyboard"),b=0;bc.length)c=[!1,0,null,null,0,Array(b>2,32768));this.Ub=c[0];this.Cc=c[1];this.ef=c[2];this.Y=c[3];this.fc=c[4]&255;this.Vf=c[4]>>8&255;this.Qa=c[5];this.ug=$o;if(b>=Pn){this.ug=ap;(b=c[6])||(b=[!1,0,Array(bp),0,f==ek?0:cp,0,0,Array(dp),0,0,0,Array(ep),0,[this.Ya,this.Ab,this.Vc], +Array(this.Vc>>2),fp|gp|hp|ip|jp,0,-1,0,-1,0,-1,0,0,0,0,kp,lp,0,0,mp,Array(np)]);this.Ie=b[0];this.Od=b[1];this.rc=b[2];this.oh=b[3];this.ff=b[4];this.Yf=b[5];this.Rd=b[6];this.Qd=b[7];this.Pj=b[8];this.Qj=b[9];this.Pd=b[10];this.kd=b[11];this.mb=b[12];d=b[13];"number"==typeof d&&(d=[this.Ya,this.Ab,d]);this.Ya=d[0];this.Ab=d[1];d=this.Vc>>2;if((this.qd=b[14])&&this.qd.length=Pn){var c=[];c[0]=a.Ie;c[1]=a.Od;c[2]=a.rc;c[3]=a.oh;c[4]=a.ff;c[5]=a.Yf;c[6]=a.Rd;c[7]=a.Qd;c[8]=a.Pj;c[9]=a.Qj;c[10]=a.Pd;c[11]=a.kd;c[12]=a.mb;c[13]=[a.Ya,a.Ab,a.Vc];var d;if(d=a.qd){var e=0,f=[];if(void 0!==d[0])for(var g=0;2>g;g++)for(var h=g;h>1;f[e++]=l;h=m}f.length=Pn){var d=0,e=0,f=0;switch(b){case vp:d=wp;a.Ma==Rn&&(e=xp);break;case yp:a.Ma==Pn&&(d=zp);break;case Ap:d=Bp;a.Ma==Rn&&(e=Cp);break;case Dp:d=Ep;a.Ma==Rn&&(e=Fp);break;case Gp:d=Hp;a.Ma==Rn&&(f=Ip);break;case Jp:d=Kp,a.Ma==Rn&&(f=Lp)}d&&(c|=a.Qa[Mp]&d?256:0,c|=a.Qa[Mp]&e?512:0,c|=a.Qa[Np]&f?512:0)}return c} +var $o=18,vp=6,Mp=7,wp=1,Ep=2,Bp=4,Hp=8,Kp=16,zp=32,xp=32,Fp=64,Cp=128,Np=9,Ip=32,Lp=64,yp=10,Ap=16,Dp=18,Gp=21,Jp=24,ap=25,bp=20,cp=1,kp=1,dp=5,lp=255,mp=0,np=256,ep=9,fp=1024,gp=4096,rp=65280,hp=0,ip=16,tp=255,jp=-2147483648,op=[];op[2]=fp;op[3]=fp|gp;op[16]=1280;op[512]=hp;op[1024]=hp|32;op[1536]=hp|96;op[2560]=hp|160;op[3584]=hp|224;op[768]=hp|ip;op[4096]=1;op[8192]=2;op[24576]=98;op[40960]=162;op[57344]=226;var sp=[]; +sp[fp]=function(a){a+=this.G;return(this.controller.mb=this.T[a])>>this.controller.kh&255};sp[fp|16384]=function(a){return(this.controller.mb=this.T[(a&-4)+this.G])>>((a&3)<<3)&255};sp[fp|gp]=function(a){a+=this.G;var b=this.controller.mb=this.T[a&-2];return(a&1?b>>8:b)&255};sp[1280]=function(a){a+=this.G;a=this.controller.mb=this.T[a];for(var b=this.controller.wg,c=this.controller.vg&b,d=0,e=128;e;)(a&b)==c&&(d|=e),c>>>=1,b>>>=1,e>>=1;return d}; +sp[hp]=function(a,b){a+=this.G;b=(b|b<<8|b<<16|b<<24)&this.controller.jd|this.controller.zd;b=b&this.controller.pb|this.controller.mb&~this.controller.pb;b=b&this.controller.Ua|this.T[a]&~this.controller.Ua;this.T[a]!=b&&(this.T[a]=b,this.Da=!0)}; +sp[hp|32]=function(a,b){a+=this.G;b=b>>this.controller.zc|b<<8-this.controller.zc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.jd|this.controller.zd;b=b&this.controller.pb|this.controller.mb&~this.controller.pb;b=b&this.controller.Ua|this.T[a]&~this.controller.Ua;this.T[a]!=b&&(this.T[a]=b,this.Da=!0)}; +sp[hp|96]=function(a,b){a+=this.G;b=b>>this.controller.zc|b<<8-this.controller.zc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.jd|this.controller.zd;b&=this.controller.mb;b=b&this.controller.pb|this.controller.mb&~this.controller.pb;b=b&this.controller.Ua|this.T[a]&~this.controller.Ua;this.T[a]!=b&&(this.T[a]=b,this.Da=!0)}; +sp[hp|160]=function(a,b){a+=this.G;b=b>>this.controller.zc|b<<8-this.controller.zc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.jd|this.controller.zd;b|=this.controller.mb;b=b&this.controller.pb|this.controller.mb&~this.controller.pb;b=b&this.controller.Ua|this.T[a]&~this.controller.Ua;this.T[a]!=b&&(this.T[a]=b,this.Da=!0)}; +sp[hp|224]=function(a,b){a+=this.G;b=b>>this.controller.zc|b<<8-this.controller.zc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.jd|this.controller.zd;b^=this.controller.mb;b=b&this.controller.pb|this.controller.mb&~this.controller.pb;b=b&this.controller.Ua|this.T[a]&~this.controller.Ua;this.T[a]!=b&&(this.T[a]=b,this.Da=!0)};sp[hp|4]=function(a,b){var c=(a&-4)+this.G;a=(a&3)<<3;b=b<>this.controller.zc|b<<8-this.controller.zc&255;b=(b|b<<8|b<<16|b<<24)&this.controller.pb;b=this.controller.Ye&b|this.controller.mb&~b;b=b&this.controller.Ua|this.T[a]&~this.controller.Ua;this.T[a]!=b&&(this.T[a]=b,this.Da=!0)}; +function Y(a,b,c,d,e){t.call(this,"Video",a);var f=this;this.Hc=Ha("Gecko/");var g=["","moz","ms","webkit"];this.aa=a.model;var h=Pp[this.aa]||Pp.mda;this.Ma=h[0];this.Vc=a.memory||0;this.Pc=a.switches;this.ba=a.mode;if(null==this.ba||null==Qp[this.ba])this.ba=h[1];this.yb=a.charCols;this.cc=a.charRows;if(void 0===this.yb||void 0===this.cc)this.yb=Qp[this.ba][0],this.cc=Qp[this.ba][1];this.X=a.screenWidth;this.ja=a.screenHeight;this.Ic=a.scale;this.md=12<=Math.round(this.X/this.yb);this.O=b;this.J= +c;this.D=(this.pd=d)||b||null;b=a.smoothing;(c=Ia("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c=Pn&&(kc(b,this,$p),mc(b,this,aq));this.Ma==Rn&&(kc(b,this,bq),mc(b,this,cq));if((this.B=vb(a,"Keyboard"))&&this.O){for(var e in this.ia)0c&&(a=Math.round(c/b*100)+"%")}this.Hc?(this.O.style.width=a,this.O.style.width=a,this.O.style.display="block",this.O.style.margin="auto"):(this.M.style.width=a,this.M.style.height="auto");this.M.style.backgroundColor="black";this.M.je();a=!0}this.D&&this.D.focus()}return a}; +function Sp(a,b){!b&&a.M&&(a.Hc?a.O.style.width=a.O.style.height="":a.M.style.width=a.M.style.height="");a.B&&(a.B.og=b)}k.Id=function(a){var b=!1;this.D&&(a?this.D.Id&&(this.D.Id(),this.K&&this.K.Ze(!0),b=!0):this.D.Wj&&(this.D.Wj(),this.K&&this.K.Ze(!1),b=!0),this.D&&this.D.focus());return b};k.Ze=function(a){this.K&&(this.K.Ze(a),this.B&&(this.B.og=a));var b=this.ia.lockPointer;b&&(b.textContent=a?"Press Esc to Unlock Pointer":this.od)}; +function dq(a,b){var c=a.D;c&&!a.dc&&(c.addEventListener("touchstart",function(b){hq(a,b,!0)},!1),c.addEventListener("touchmove",function(b){hq(a,b)},!0),c.addEventListener("touchend",function(b){hq(a,b,!1)},!1),a.dc=b,a.bb=a.ib=a.Sc=-1,a.Wb=!1,a.sb=null,a.Vb=!1,a.nd=function(){a.Vb=!0;a.K.ie(iq,!0)})}k.Sf=function(a){this.B&&this.B.Sf(a)}; +function hq(a,b,c){var d,e,f=0,g=0;e=a.O;do isNaN(e.offsetLeft)||(f+=e.offsetLeft,g+=e.offsetTop);while(e=e.offsetParent);var h=a.X/a.O.offsetWidth,l=a.ja/a.O.offsetHeight;b.targetTouches&&b.targetTouches.length?(d=b.targetTouches[0].pageX,e=b.targetTouches[0].pageY):(d=b.pageX,e=b.pageY);d=(d-f)*h;e=(e-g)*l;if(a.dc==fq)d=d/(a.X/3)|0,e=e/(a.ja/3)|0,1!=e?e?jo(a.B,1040,!0):jo(a.B,1038,!0):1!=d&&(d?jo(a.B,1039,!0):jo(a.B,1037,!0));else if(a.K){g=a.Wb;f=b.timeStamp-a.Sc;!0===c?(a.Wb=500f){a.K.ie(iq,!0);a.K.ie(iq,!1);return}}if(c||0>a.bb||0>a.ib)a.bb=d,a.ib=e;c=Math.round(d-a.bb);b=Math.round(e-a.ib);a.bb=d;a.ib=e;a.K.sg(c,b,a.bb,a.ib)}}k.Ob=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Nb=function(a){return a?this.save():!0}; +k.reset=function(){var a=!0,b=0;this.V&&(b=+dk(this.V,wj,void 0));this.aa||(this.Ma=b==ek?Xp:Up);this.ba=jq;switch(this.Ma){case Rn:b=7;break;case Pn:var c=kq[this.qb];c&&(b=c[0]);b||(b=4);break;case Xp:b=ek;this.ba=lq;break;default:b=2}this.ea!==b&&(this.ea=b,a=!0);this.C=null;this.W=this.Bb=new Yo(this,Xp);this.I=this.rb=new Yo(this,Up);this.Ma>1&255,d=d>>8&~pq,d>>4==(d&15)&&(d^=15)):(c=d&255,d=(d&256?qq|rq:sq|tq)|uq&d>>8);ic(this.ma,b,c|d<<8)}gq(this,!0)}};function mq(a){a.A.ff&cp?(a.W=a.Bb,a.I=a.A):(a.W=a.A,a.I=a.rb)}k.save=function(){var a=new Qe(this);a.set(0,qp(this.Bb));a.set(1,qp(this.rb));a.set(2,[this.ea,this.ba,this.qa]);a.set(3,qp(this.A));return a.data()}; +k.restore=function(a){var b=a[2];this.ea=b[0];this.ba=b[1];this.qa=b[2];this.C=null;this.W=this.Bb=new Yo(this,Xp,a[0]);this.I=this.rb=new Yo(this,Up,a[1]);this.A=new Yo(this,this.Ma,a[3],this.Vc);this.A.Ub&&mq(this);nq(this);if(!vq(this))return!1;wq(this);return!0}; +function Tp(a,b,c,d){if(d)a.xa("Unable to load font ROM (error "+d+": "+b+")");else{Va(a.Wd,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f.length){r("Empty font ROM: "+b);return}if(1==f.length){r(f[0]);return}if(8192==f.length)Qn(a,f,[6144,0]);else if(2048==f.length)Qn(a,f,[0]);else{a.xa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.xa("Font ROM data error: "+g.message);return}(a.J||a.Ea)&&mb(a)}} +function xq(a,b){if(1==b)return a.ga[0]=yq[sq],a.ga[1]=yq[qq],a.ga;if(2==b){var c=a.C.ef;if(a.C===a.A){var d=a.A.rc[0],c=d&7;d&16&&(c|=8);18!=a.A.rc[1]&&(c|=32)}a.ga[0]=yq[c&15];c=c&32?zq:Aq;for(d=0;de;e++)f=d[e]||0,g=f<<2&252,h=f>>4&252,f=f>>10&252,a.ga[e]=[g,h,f,255];else{var l=d&&d[255];b=null!=c.rc[15]?c.rc:Bq;for(e=0;16>e;e++)f=b[e]&63,l?(f|= +(c.rc[20]&12)<<4,c.rc[16]&128&&(f&=-49,f|=(c.rc[20]&3)<<4),f=d[f],g=f<<2&252,h=f>>4&252,f=f>>10&252):(g=(f&4?170:0)|(f&32?85:0),h=(f&2?170:0)|(f&16?85:0),f=(f&1?170:0)|(f&8?85:0)),a.ga[e]=[g,h,f,255]}a.Ga=!0}return a.ga}function Qn(a,b,c,d){a.nb=b;a.Va=c;a.Ca=d} +function nq(a,b){var c=!1;if(window&&a.nb&&(!b||a.G)){b=0;var d=a.Ca?a.Ca:8,e=xq(a);null!=a.Va[0]&&Cq(a,Dq,a.Va[0],b,d,8,a.nb,e)&&(c=!0);b=a.Ca?0:2048;d=a.Ca?a.Ca:9;null!=a.Va[1]&&(Cq(a,Eq,a.Va[1],b,d,14,a.nb,Fq,Gq)&&(c=!0),a.Ca&&Cq(a,a.Ma,a.Va[1],0,a.Ca,14,a.nb,e)&&(c=!0))}return c}function Cq(a,b,c,d,e,f,g,h,l){var m=!1;null!=c&&(Hq(a,b,c,d,e,f,g,h,l)&&(m=!0),a.md&&Hq(a,b<<1,c,d,e,f,g,h,l)&&(m=!0));return m} +function Hq(a,b,c,d,e,f,g,h,l){var m=!1,q=b&1?0:1,y=a.ta[b],w=16>h.length?h.length:16;y||(y={oc:e<zb||!ca?zb:8,Uh=Im.createImageData(m.oc,m.pc);for(Kb=0;256>Kb;Kb++){for(pc=0;pc=zb-2,Lt=Th[pc>(8<=pd&&192<=Kb&&223>=Kb?7:pd)?z:Jt;Iq(Uh,Jm,Km,Lm);S&&Iq(Uh,Jm+1,Km,Lm)}Im.putImageData(Uh,(Kb&15)*m.oc,(Kb>>4)*m.pc)}m.ae[B]="#"+oa(z[0],2)+oa(z[1],2)+oa(z[2],2);m.Wh[B]=z;m.hg[B]=Mf;m=!0}}a.ta[b]=y;return m}function Jq(a){0a.ya&&(a.ya=0):a.ya=-1} +function wq(a){if(a.G){for(var b=10;15>=b;b++)if(null==a.C.Qa[b])return;var c=a.C.Qa[10],b=c&31,d=a.C.Qa[11]&31,e=a.C.Qa[9]&31,f=!1;a.C===a.A&&(f=!0,7!=e||4!=b||d||(d=7));if(c&32||b>d&&!f||b>e)Kq(a);else{c=a.C.Qa[15]+((a.C.Qa[14]&63)<<8);a.Z!=c&&(Kq(a),a.Z=c);d=d-b+1;if(a.Tc!=b||a.xc!=d)a.Tc=b,a.xc=d;a.wa=e+1;Jq(a)}}}function Kq(a){if(0<=a.Z){if(void 0!==a.L){var b=Lq<<8,c=a.L[a.Z];if(c&b){var c=c&~b,b=a.Z%a.F,d=a.Z/a.F|0;a.G&&a.ta[a.G]&&(a.Ba&&Mq(a,b,d,c,a.Ba),Mq(a,b,d,c));a.L[a.Z]=c}}a.Z=-1}} +function Nq(a){var b,c=a.C;a.yc=!1;var d=c.kd[5];if(null!=d){b=fp;var e=hp,f=c.kd[3]&31;switch(d&3){case 0:if(f){e=hp|32;switch(f&24){case 8:e=hp|96;break;case 16:e=hp|160;break;case 24:e=hp|224}c.zc=f&7}break;case 1:e=1;break;case 2:switch(f&24){default:e=2;break;case 8:e=98;break;case 16:e=162;break;case 24:e=226}break;case 3:a.Ma==Rn&&(e=3,c.zc=f&7)}d&8&&(b=1280);c=c.Qd[4];null!=c&&(c&4||(b|=gp,e|=ip),d&64&&(c&8&&(b|=16384,e|=4),a.yc=!0));b|=e}return b} +function Oq(a,b){var c=a.C;return c&&null!=b&&b!=c.tg?(c.$f(b),a.ma.$f(c.Ya,c.Ab,c.qg(),!0),!0):!1} +function vq(a,b){var c,d=a.qa,e=a.C;if(e)if(e.Ma==Xp)d=lq;else if(e.Ma>=Pn){var d=null,f=e.Vc>>2,g=32768=e.Qa[Dp]?Tq:Uq:Vq:g&128|| +350>f?d=m?Wq:Xq:480<=f&&(d=a.ea==ek?Yq:Zq):d=m?7-d:$q:d-=m?2:0);c=Nq(a)}}else e.Cc&8&&(e.Cc&2?(d=e.Cc&16?$q:ar,e.Cc&4||--d):(d=e.Cc&1?jq:br,e.Cc&4&&--d));else a.qa=null,null==d&&(d=a.ba);if(!oq(a,d,b))return!1;Oq(a,c);return!0} +function oq(a,b,c){if(null!=b&&(b!=a.qa||c)){a.bd=0;a.qa=b;a.Ga=!1;b=a.C||(b==lq?a.W:a.I);if(b!=a.C||b.Ya!=a.Ya||b.Ab!=a.Ab){Kq(a);if(a.Ya){if(!ac(a.ma,a.Ya,a.Ab))return!1;a.C&&(a.C.Ub=!1)}a.C=b;b.Ub=!0;a.Ya=b.Ya;a.Ab=b.Ab;if(!Qb(a.ma,b.Ya,b.Ab,3,b===a.A?b:null))return!1}a:{a.G=0;a.F=a.yb;a.H=a.cc;a.Ka=a.F;a.xb=Qp[lq][2];b=0;if(c=Qp[a.qa])a.F=c[0],a.H=c[1],a.xb=c[2],b=c[3],a.G=c[4],4!=a.ea&&7!=a.ea||a.C!==a.A||a.G!=Dq||(7==(a.A.Qa[Np]&31)?a.H=350>up(a.A,Dp)?43:50:a.G=a.Ma);a.Oc=a.F*a.H|0;a.Nc=a.Oc/ +a.xb|0;a.Xa=a.Nc;a.Db=0;void 0!==b&&(a.Xa=(a.Xa<<1)+b|0,a.Db=a.Xa+b>>1);if(a.ta.length){a.na=a.X/a.F|0;a.pa=a.ja/a.H|0;if(a.G){b=a.ta[a.G];if(!b)break a;c=a.ta[a.G<<1];a.Ic&&80==a.F?c&&a.na>=3*c.oc>>2&&(a.G<<=1,b=c):(c&&a.na>=c.oc&&(a.G<<=1,b=c),a.Ic||(a.na=b.oc,a.pa=b.pc));a.$a=a.ab=0;b&&(a.$a=a.F*b.oc,a.ab=a.H*b.pc)}else a.na=a.pa=1,a.$a=a.F,a.ab=a.H;a.Ha=a.J.createImageData(a.$a,a.ab);a.Aa=document.createElement("canvas");a.Aa.width=a.$a;a.Aa.height=a.ab;a.Ba=a.Aa.getContext("2d");a.jc=a.kc=0; +a.Kb=a.X;a.Tb=a.ja;b=a.X-a.F*a.na;c=a.ja-a.H*a.pa;0>1,a.Kb-=b);0>1,a.Tb-=c);if(b||c)a.J.fillStyle=a.O.style.backgroundColor,a.J.fillRect(0,0,a.X,a.ja)}}cr(a,!0);gq(a)}return!0}function Iq(a,b,c,d){b=(b+c*a.width)*d.length;a.data[b]=d[0];a.data[b+1]=d[1];a.data[b+2]=d[2];a.data[b+3]=d[3]}function dr(a){a.ua=-1;a.la=!1;var b=a.Nc;if(void 0===a.L||a.L.length!=b)a.L=Array(b)}function cr(a,b){b||(a.Ga=!1);dr(a)} +function Mq(a,b,c,d,e){var f=d&255,g=d>>8;d=g&15;var h=a.ta[a.G];h.De&&(d=h.De[d]);var l=g>>4&15;h.De&&(l=h.De[l]);e?(b*=h.oc,c*=h.pc,e.fillStyle=h.ae[l],e.fillRect(b,c,h.oc,h.pc)):(b=b*a.na+a.jc,c=c*a.pa+a.kc,a.J.fillStyle=h.ae[l],a.J.fillRect(b,c,a.na,a.pa));g&er&&(l=(f&15)*h.oc,f=(f>>4)*h.pc,e?e.drawImage(h.hg[d],l,f,h.oc,h.pc,b,c,h.oc,h.pc):a.J.drawImage(h.hg[d],l,f,h.oc,h.pc,b,c,a.na,a.pa));g&Lq&&(f=a.Tc,g=a.xc,e?(a.wa&&a.wa!==h.pc&&(f=f*h.pc/a.wa|0,g=g*h.pc/a.wa|0),e.fillStyle=h.ae[d],e.fillRect(b, +c+f,h.oc,g)):(a.wa&&a.wa!==a.pa&&(f=f*a.pa/a.wa|0,g=g*a.pa/a.wa|0),a.J.fillStyle=h.ae[d],a.J.fillRect(b,c+f,a.na,g)))} +function gq(a,b){if(a.ca.Pb){var c=!1,d=a.C;d&&(d!==a.A?d.Cc&8&&(c=!0):d.Od&32&&(c=!0));if(c||b){if(b)dr(a);else if(void 0===a.L)return;var e=!1;!(b||++a.bd&15)&&0<=a.ya&&(a.ya++,e=!0);var f=0,g=a.Oc,h=a.Ya,c=h,l=c+a.Ab;a.qa>=Tq&&(h=c=655360,l=c+65536);if(fr(a,d)&8||d.ue&&d.ue=Pn&&d.Qa[19]&&d.Qa[19]<<1!=d.Qa[1]+1&&(a.Ka=d.Qa[19]<<(a.G?1:d.Qa[20]&64?3:4),m=(a.Ka*(a.H-1)+a.F)/a.xb|0,a.qa<=lq&& +(m<<=1));c+m>l&&(m=l-c,0>m&&(m=0));l=c+m;if(b=!b&&a.la){b=a.ma;for(var q=!0,y=c>>>b.B;0f)return;g=f+1}}if(a.G){if(a.ta[a.G]){d=f;f=0;e=a.ua=0;h=er<<8;b=1048575;q=a.C.Cc&32;a.Ma>=Pn&&(q=a.C.rc[16]&8);m=a.Z-a.C.$c;q&&(e=pq<<8,b&=~e,a.ya&2||(b&=~h));for(c+=d<<1;c>8|(w&255)<<8;var X=e,ca=16;m>=h))>>(ca-=h);Iq(a.Ha,m++,q,b[zb])}m>z&&(z=m);q=S&&(S=q+1)}l+=2;d++;if(m>=a.F){m=0;q+=2;if(q>a.H)break;q==a.H&&(q=1,l=c+a.Db)}}a.la=!0; +ya.F?a.Ka-a.F-w>>3:0;c>=8;b>y&&(y=b);m=B&&(B=m+1)}c+=S;if(b>=a.F){b=0;if(++m>a.H)break;c+=X}}w||(a.la=!0);qa.F?a.Ka-a.F-B>>3:0;cX&&(ca=X)):(w<<=B,ca-=B,a.la=!1):(a.la&&w===a.L[d]?(h+=ca,ca=0):a.L[d]=w,d++);if(ca){hq&&(q=h);b=z&&(z=b+1)}if(h>=a.F){h=0;if(++b>a.H)break;c+=S}}B||(a.la=!0);ma&&(b.Bg=a,a=-a|0);a%b.xg>b.Ul&&(c|=1);a%b.Ag>b.Wl&&(c|=9);b.lh=a/b.Ag|0;return c}k.ol=function(){var a=this.W,b;a.Ub&&(b=a.fc);return b};k.Km=function(a,b){a=this.W;a.Vf=a.fc;a.fc=b&31};k.nl=function(){return hr(this.W)};k.Jm=function(a,b){ir(this,this.W,b)};k.pl=function(){return this.W.Cc};k.Lm=function(a,b){this.W.Cc=b;vq(this,!1)};k.ql=function(){return jr(this,this.W)};k.Gj=function(a,b){this.A.Yf=this.A.Yf&-4|b&3}; +k.Nk=function(){return this.A.Od};k.ik=function(){return this.A.rc[this.A.Od&31]};k.Fj=function(a,b){a=this.A;var c=a.Od&32;if(a.Ie){a.Ie=!1;var d=a.Od&31;if(16<=d||!c)if(kr||a.rc[d]!==b)a.rc[d]=b,cr(this,!1)}else a.Od=b,a.Ie=!0,b&32&&!c&&nq(this,!0)&&gq(this,!0),b=(a.Qa[12]<<8)+a.Qa[13]|0,a.$c!=b&&(a.$c=b,cr(this)),a.ue=0}; +k.Al=function(){var a=0;if(this.Ma==Pn)a=3-((this.A.ff&12)>>2),a=(this.qb&1<>this.A.sc&63;this.A.sc+=6;12Missing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height= +(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Ia("aspect"));f&&.3<=f&&3.33>=f&&(La("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ha("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new Y(d,e,g,f,c);db(d,c)}}); +function lr(a){t.call(this,"ParallelPort",a);this.G=a.adapter;switch(this.G){case 1:this.D=956;this.C=7;break;case 2:this.D=888;this.C=7;break;case 3:this.D=632;this.C=5;break;default:r("Unrecognized parallel adapter #"+this.G);return}this.A=this.B=null;a=a.binding;"console"==a?this.B="":cb(this,a,mr)}ba(lr,t);k=lr.prototype;k.wb=function(a,b,c){switch(b){case mr:return this.ia[b]=this.A=c,!0}return!1}; +k.ic=function(a,b,c,d){this.ma=b;this.U=c;this.Ea=d;this.V=vb(a,"ChipSet");kc(b,this,nr,this.D);mc(b,this,or,this.D);mb(this)};k.Ob=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Nb=function(a){return a?this.save():!0};k.reset=function(){pr(this)};k.save=function(){var a=new Qe(this),b=0,c=[];c[b++]=this.F;c[b++]=this.zb;c[b]=this.Ge;a.set(0,c);return a.data()};k.restore=function(a){return pr(this,a[0])}; +function pr(a,b){var c=0;b||(b=[0,0,0]);a.F=b[c++];a.zb=b[c++];a.Ge=b[c];return!0}k.bl=function(){return this.F};k.zl=function(){return this.zb};k.Yk=function(){return this.Ge};k.wm=function(a,b){this.F=b;this.zb|=qr;a=!1;this.A&&(8==b?this.A.value=this.A.value.slice(0,-1):(this.A.value+=String.fromCharCode(b),this.A.scrollTop=this.A.scrollHeight),a=!0);if(null!=this.B){if(10==b||1024<=this.B.length)this.Zb(this.B),this.B="";10!=b&&(this.B+=String.fromCharCode(b));a=!0}a&&(this.zb&=~qr);rr(this)}; +k.rm=function(a,b){this.Ge=b;rr(this)};function rr(a){a.V&&a.C&&(a.Ge&sr&&!(a.zb&qr)?Hf(a.V,a.C):Ff(a.V,a.C))}var mr="buffer",qr=64,sr=16,nr={0:lr.prototype.bl,1:lr.prototype.zl,2:lr.prototype.Yk},or={0:lr.prototype.wm,2:lr.prototype.rm};Ma(function(){for(var a=eb(document,"pcx86","parallel"),b=0;b=b)a.preventDefault&&a.preventDefault(),64");if(2==c.length){var d=ua(c[0]);if(d!=this.Ud)return;c=ua(c[1]);if(this.C=Za(c)){var e=this.C.exports;if(e){var f=e.connect;f&&f.call(this.C,this.O);if(this.Z=e.receiveData){this.O=a;this.W=e.receiveStatus;this.status("Connected "+this.Wd+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}}; +k.Ob=function(a,b){if(!b)if(this.xi(this.O),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Nb=function(a){return a?this.save():!0};k.reset=function(){zr(this)};k.save=function(){var a=new Qe(this),b=0,c=[];c[b++]=this.ea;c[b++]=this.ja;c[b++]=this.K;c[b++]=this.M;c[b++]=this.F;c[b++]=this.I;c[b++]=this.X;c[b++]=this.B;c[b++]=this.A;c[b]=this.H;a.set(0,c);return a.data()};k.restore=function(a){return zr(this,a[0])}; +function zr(a,b){var c=0;b||(b=[0,0,Ar,0,Br,0,0,Cr|Dr,a.pa,[]]);a.ea=b[c++];a.ja=b[c++];a.K=b[c++];a.M=b[c++];a.F=b[c++];a.I=b[c++];a.X=b[c++];a.B=b[c++];a.A=b[c++];a.H=b[c];return!0}k.df=function(a){if("number"==typeof a)this.H.push(a);else if("string"==typeof a)for(var b=0;b>8:this.M};k.jl=function(){return this.F};k.kl=function(){return this.I};k.ml=function(){return this.X};k.ll=function(){return this.B};k.rl=function(){var a=this.A;this.A&=~(Fr|Gr);return a}; +k.Tm=function(a,b){if(this.I&Jr)this.K=this.K&-256|b;else{this.ja=b;this.B&=~(Cr|Dr);a=!1;this.Z&&this.Z.call(this.C,b)&&(a=!0);if(this.D){if(13==b)this.J=0;else if(8==b)this.D.value=this.D.value.slice(0,-1),0":String.fromCharCode(b);a=c.length;32>b&&1==a&&(a=0);9==b&&(b=this.na||8,a=b-this.J%b,this.na&&(c=" ".slice(0,a)));this.la&&!this.J&&a&&(c=String.fromCharCode(this.la)+c);this.D.value+=c; +this.D.scrollTop=this.D.scrollHeight;this.J+=a}a=!0}else if(null!=this.G){if(10==b||1024<=this.G.length)this.Zb(this.G),this.G="";10!=b&&(this.G+=String.fromCharCode(b));a=!0}a&&(this.B=this.B|Cr|Dr)}};k.Gm=function(a,b){this.I&Jr?this.K=this.K&255|b<<8:this.M=b};k.Hm=function(a,b){this.I=b};k.Im=function(a,b){a=b^this.X;this.X=b;a&(Kr|Lr)&&this.W&&(a=0,this.O?(a|=b&Lr?32:0,a|=b&Kr?320:0):(a|=b&Lr?16:0,a|=b&Kr?1048576:0),this.W.call(this.C,a))}; +function Hr(a){var b=-1;a.B&Ir&&a.M&Mr?b=Nr:a.A&(Fr|Gr)&&a.M&Or&&(b=Pr);0<=b?(a.F&=~(Br|Qr),a.F|=b,a.V&&a.L&&Hf(a.V,a.L,100)):(a.F|=Br,a.V&&a.L&&Ff(a.V,a.L))}var wr="buffer",Ar=384,Mr=1,Or=8,Br=1,Nr=4,Pr=0,Qr=6,Jr=128,Kr=1,Lr=2,Ir=1,Cr=32,Dr=64,Fr=1,Gr=2,ur=16,vr=32,xr={0:tr.prototype.wl,1:tr.prototype.il,2:tr.prototype.jl,3:tr.prototype.kl,4:tr.prototype.ml,5:tr.prototype.ll,6:tr.prototype.rl},yr={0:tr.prototype.Tm,1:tr.prototype.Gm,3:tr.prototype.Hm,4:tr.prototype.Im}; +Ma(function(){for(var a=eb(document,"pcx86","serial"),b=0;ba.F||0>a.G)a.F=b.clientX,a.G=b.clientY;a.L?(c=b.movementX||b.mozMovementX||b.webkitMovementX||0,d=b.movementY||b.mozMovementY||b.webkitMovementY||0):(c=b.clientX-a.F,d=b.clientY-a.G);a.F=b.clientX;a.G=b.clientY;a.sg(c,d,a.F,a.G)}} +k.ie=function(a,b){if(this.Ub&&this.U&&this.U.ca.Ib)switch(a){case iq:this.J!=b&&(this.J=b,Xr(this));break;case Yr:this.K!=b&&(this.K=b,Xr(this))}};k.sg=function(a,b){this.Ub&&this.U&&this.U.ca.Ib&&(a||b)&&(this.H=a,this.I=b,Xr(this))};function Xr(a){a.D.df([64|(a.J?32:0)|(a.K?16:0)|(a.I&192)>>4|(a.H&192)>>6,a.H&63,a.I&63]);a.H=a.I=0} +k.gk=function(a){var b=1048592==(a&1048592);if(b){if(!this.Ub){var c=!1;this.A&16||(this.reset(),c=!0);this.A&1048576||(c=!0);c&&this.D.df([Zr,Zr]);Sr(this);this.Ub=b}}else this.Ub&&(Tr(this),this.Ub=b);this.A=a};var Zr=77,iq=0,Yr=2;Ma(function(){for(var a=eb(document,"pcx86","mouse"),b=0;b>2;var e=d=0,a=new DataView(a,0,c);g.A=Array(g.fb);for(c=0;cb.indexOf("/api/v1/dump")&&(a=qa(b),"json"==a||"gz"==a?f=encodeURI(b):"demandrw"==this.mode||"demandro"==this.mode?(f=gs(this,b),this.Ff=!0):(c="path",d="&mbhd=10",!b.indexOf("http:")||!b.indexOf("ftp:")||0<="dsk ima img 360 720 12 144".split(" ").indexOf(a)?(c="disk",d="&mbhd=0"): +ra(b,"/")&&(c="dir"),f=Ca()+"/api/v1/dump?"+c+"="+encodeURIComponent(b)+(this.ne?"":d)+"&format=json"));return!!Ba(f,null,!0,function(a,b,c){hs(g,a,b,c)})}; +function hs(a,b,c,d){var e=null;a.qe=!1;var f=!(!(0>d&&a.oa)||a.oa.ca.Pb);if(a.Ff)d?a.xa('Unable to connect to disk "'+a.F+'" (error '+d+": "+c+")",f):(a.C=!0,e=a);else if(d)a.xa('Unable to load disk "'+a.Qc+'" (error '+d+": "+b+")",f);else{Va(a.controller.Wd,b,c);try{if(0g&&0c.indexOf("0x")&& +'["'!=c.substr(0,2)?JSON.parse(c.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+c+")");if(h.length)if(1==h.length)r(h[0]);else{a.fb=h.length;a.gb=h[0].length;a.Za=h[0][0].length;var l=h[0][0][0];a.lb=l&&l.length||512;for(d=c=0;d>2,q=l.pattern;void 0===q&&(q=l.pattern=0);var y=l.data;if(void 0===y){var w=l.bytes;if(void 0!==w&&w.length){for(var z=m<<2,B=w.length;B< +z;B++)w[B]=q;is(l,w,0)}else l.data=y=[],w&&(l.pattern=q|q<<8|q<<16|q<<24);delete l.bytes}fs(l,d,f);for(z=0;zg)break;e|=g<b&&(b=0);2E3>2,e=Array(d),f=0;f>2,e=a.data;a=a.pattern;for(var f=0;f>8&255;c[d++]=g>>16&255;c[d++]=g>>24&255}return c}k.read=function(a,b){var c=-1;if(a&&b>2,c=(d>((b&3)<<3)&255;return c}; +k.write=function(a,b,c){if(this.qe)return!1;if(b>2;b=(b&3)<<3;for(var g=d.length;g<=f;g++)d[g]=e;a.uc?f=a.Mc+a.uc&&(a.uc+=f-(a.Mc+a.uc)+1):(a.Mc=f,a.uc=1);d[f]=d[f]&~(255<=this.A.length||l>=this.A[h].length||m>=this.A[h][l].length){c="sector (CHS="+h+":"+l+":"+m+") out of range ("+ +b+" changes applied)";b=-1;break}if(this.qe){c="unable to modify write-protected disk";b=-1;break}e=g[f++];f=g[f++];g=e+f.length;if(h=this.A[h][l][m]){for(l=h.data.length;lb&&-2!=b&&this.xa("Unable to restore disk '"+this.Qc+": "+c);return b}; +k.toJSON=function(){var a;a=0;for(var b;b=js(this,a++);)rs(b);a=JSON.stringify(this.A,function(a,b){if("file"!=a)return b});a=a.replace(/,"length":512/gm,"").replace(/,"pattern":0/gm,"");a=a.replace(/"(sector|length|data|pattern)":/gm,"$1:");a=a.replace(/,"[^"]*":([0-9]+|true|false)/gm,"");a=a.replace(/(sector|length|data|pattern):/gm,'"$1":');return a=a.replace(/([\]}]),/gm,"$1,\n")}; +function rs(a){var b=a.data,c=b.length;if(c<<2==a.length){for(var d=c-1,e=b[d],f=0;d--&&b[d]===e;)f++;f++&&(b.length=c-f,a.pattern=e)}}var as=0;function ss(a){t.call(this,"FDC",a);this.dmaRead=ss.prototype.ak;this.dmaWrite=ss.prototype.bk;this.dmaFormat=ss.prototype.rk;this.L=ts(a.autoMount);this.K=a.sortBy||"name";"none"==this.K&&(this.K=null);this.B=[];this.M=!Ha("Mobi")&&window&&"FileReader"in window}ba(ss,t);k=ss.prototype; +k.wb=function(a,b,c){var d=this;switch(b){case "listDisks":this.ia[b]=c;if(this.K){b=[];for(a=0;a'+b+"");a.innerHTML=b}};return!0;case "descDisk":case "listDrives":return this.ia[b]=c,c.onchange=function(){var a=na(c.value,10);null!=a&&us(d,a)},!0;case "loadDisk":return this.ia[b]=c,c.onclick=function(){var a=d.ia.listDisks;a&&vs(d,a.options[a.selectedIndex].text,a.value)},!0;case "saveDisk":if(!this.M){c.parentNode.removeChild(c);break}this.ia[b]=c;c.onclick=function(){var a=d.ia.listDrives;a&&a.options&&d.A&&((a=d.A[na(a.value, +10)||0])?(a=a.sa)?(a=Ka(qs(a),"octet-stream",!0,a.qh.replace(".json",".img")),r(a)):d.xa("No diskette loaded in drive."):d.xa("No diskette drive selected."))};return!0;case "mountDisk":if(this.M)return this.ia[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;vs(d,pa(b,!0),b,a)}return!1},!0;c.parentNode.removeChild(c)}return!1}; +k.ic=function(a,b,c,d){this.ma=b;this.U=c;this.Ea=d;this.oa=a;this.V=vb(a,"ChipSet");ts(Mc(this.oa,"autoMount"),this.L);ws(this);kc(b,this,xs);mc(b,this,ys);zs(this,"None","",!0);this.M&&zs(this,"Local Disk","?");zs(this,"Remote Disk","??");As(this)||mb(this)};function ts(a,b){if(a){if("string"==typeof a)try{a=eval("("+a+")")}catch(d){r("FDC auto-mount error: "+d.message+" ("+a+")"),a={}}}else a={};for(var c in a)b&&(b[c]=a[c]);return a} +k.Ob=function(a,b){if(!b){if(!a){if(this.reset(),this.oa.O){this.B=[];for(a=0;ag.sa.restore(z)&&(h=!1);h&&g.sa&&void 0!==g.Oa&&(g.Ra=g.sa.seek(g.ub,g.Sa,g.kb));h||(e=!1)}a.H=b[c++]||0;a.F=b[c]||Is;return e} +function Cs(a){var b=0,c=[];c[b++]=a.La;c[b++]=0;c[b++]=a.Y;c[b++]=a.G;c[b++]=a.D;c[b++]=a.C;c[b++]=a.I;for(var d=b++,e=0,f=[],g=0;gGs(a,e,b,c,!1,d)&&window.confirm("Click OK to reload the original disk.\n(WARNING: All disk changes will be discarded)");){var f=a,g=c,h;for(h=0;ha.fb||f[1]>a.gb)&&(this.xa('Diskette "'+c+'" too large for drive '+String.fromCharCode(65+a.La)),b=null);b?(a.sa=b,a.Rj=c,a.Sd=d,Hs(this,c,d,b),f=b.info(),this.H|=Ks,this.xa('Mounted diskette "'+c+'" in drive '+String.fromCharCode(65+a.La),a.Gd||e),a.Mf=f[0],a.Re=f[1],a.Se=f[2],this.oa&&Zc(this.oa)):a.me=!1;a.Gd&&(a.Gd=!1,--this.J||mb(this));us(this,a.La)}; +function zs(a,b,c,d){if((a=a.ia.listDisks)&&a.options){for(var e=0;e=this.C&&(this.Y&=~(Ns|Os),this.D=this.C=0);return a}; +k.ym=function(a,b){this.C=Qs[a].ed){b=!1;this.D=0;a=Rs(this);var c,d,e,f,g,h=a&Ps;switch(h){case Ss:Rs(this);Rs(this);Ts(this);break;case Us:d=Rs(this);this.La=d&3;c=this.A[this.La];Ts(this);Vs(this,(c.hb&Ws)>>>24);break;case Xs:case Ys:d=Rs(this);b=d>>2&1;this.La=d&3;c=this.A[this.La];c.Sa=b;d=c.ub=Rs(this);e=Rs(this);f=c.kb=Rs(this);g=Rs(this);c.tb=128<>2&1;this.La=d&3;c=this.A[this.La];d=c.ub;e=c.Sa=b;f=c.kb= +1;g=0;c.hb=at;c.sa&&(c.Ra=c.sa.seek(c.ub,c.Sa,c.kb))?g=c.Ra.length>>8:c.hb=Zs|$s;ct(this,c,a,b,d,e,f,g);b=!0;break;case jt:d=Rs(this);b=d>>2&1;this.La=d&3;c=this.A[this.La];d=c.ub;e=c.Sa=b;f=1;g=Rs(this);c.tb=128<>2&1,d=Rs(this),c.ub+= +d-c.sd,0>c.ub&&(c.ub=0),c.ub>=c.fb&&(c.ub=c.fb-1),c.sd=d,c.hb=et,c.ub||(c.hb|=ft),Ts(this),b=!0}0>>8);Vs(a,(b.hb&mt)>>>16);var l=0;if(e!=b.ub||f!=b.Sa)l=g=1;c&nt&&(f^=l,d||(l=0));Vs(a,e+l);Vs(a,f);Vs(a,g);Vs(a,h)}function Rs(a){var b=a.G[a.D];a.D++;return b} +function Ts(a){a.D=a.C=0}function Vs(a,b){a.G[a.C++]=b}k.ak=function(a,b,c){void 0===b||0>b?this.ve(a,c):c(-1,!1)};k.bk=function(a,b){return void 0!==b&&0<=b?ot(a,b):-1};k.rk=function(a,b){if(void 0!==b&&0<=b)a:if(a.hb)a=-1;else{a.Fc[a.he++]=b;if(a.he==a.Fc.length){a.ub=a.Fc[0];a.Sa=a.Fc[1];a.kb=a.Fc[2];a.tb=128<ot(a,a.$h)){a=-1;break a}a.yf++}a.yf>=a.td&&(b=-1);a=b}else a=-1;return a}; +k.ve=function(a,b){var c=-1,d=null,e=0;if(!a.hb&&a.sa){do{if(a.Ra&&(e=a.Oa,0<=(c=a.sa.read(a.Ra,a.Oa++)))){d=a.Ra;break}a.Ra=a.sa.seek(a.ub,a.Sa,a.kb);if(!a.Ra){a.hb=pt|$s;break}a.Oa=0;qt(a)}while(1)}b(c,!1,d,e)};function ot(a,b){if(a.hb||!a.sa)return-1;do{if(a.Ra&&a.sa.write(a.Ra,a.Oa++,b))break;a.Ra=a.sa.seek(a.ub,a.Sa,a.kb);if(!a.Ra){a.hb=rt|$s;b=-1;break}a.Oa=0;qt(a)}while(1);return b}function qt(a){a.kb++;a.kb>=a.Se+1&&(a.kb=1,a.Sa++,a.Sa>=a.Re&&(a.Sa=0,a.ub++))} +var Fs="Floppy Drive",Ls=4,Ms=8,Os=16,Ns=64,Ds=128,Ss=3,Us=4,Xs=5,Ys=6,dt=7,gt=8,it=10,jt=13,kt=15,Ps=31,nt=128,at=0,Zs=8,et=32,$s=64,Es=192,ht=255,bt=512,pt=1024,rt=8192,lt=65280,mt=16711680,ft=268435456,Ws=-16777216,Ks=128,Is=0;aa={}; +var Qs={3:{ed:3,ud:0,name:aa.Bo},4:{ed:2,ud:1,name:aa.zo},5:{ed:9,ud:7,name:aa.Fo},6:{ed:9,ud:7,name:aa.vo},7:{ed:2,ud:0,name:aa.xo},8:{ed:1,ud:2,name:aa.Ao},10:{ed:2,ud:7,name:aa.wo},13:{ed:6,ud:7,name:aa.so},15:{ed:3,ud:0,name:aa.yo}},xs={1009:ss.prototype.dl,1012:ss.prototype.fl,1013:ss.prototype.cl,1015:ss.prototype.el},ys={1010:ss.prototype.zm,1013:ss.prototype.ym,1015:ss.prototype.xm}; +Ma(function(){for(var a=eb(document,"pcx86","fdc"),b=0;bl.sa.restore(g)&&(z=!1),z&&void 0!==l.Oa&&(l.Ra=l.sa.seek(l.Bd,l.Sa,l.kb+l.wf)));z||(e=!1);null!=a.W&&1>=d&&(a.W|=(f.type&3)<<(1-d<<1))}0<=a.La&&(a.B=a.A[a.La]); +return e} +function zt(a){var b=0,c=[];a.L?(c[b++]=a.H,c[b++]=a.ta,c[b++]=a.I,c[b++]=a.ea,c[b++]=a.ba,c[b++]=a.Z,c[b++]=a.O,c[b++]=a.Y,c[b++]=a.ga,c[b++]=[a.K,a.La]):(c[b++]=a.W,c[b++]=a.Y,c[b++]=a.G,c[b++]=a.D,c[b++]=a.C,c[b++]=a.qa,c[b++]=a.pa,c[b++]=a.na,c[b++]=a.M);for(var d=0,e=[],f=0;f=this.C&&(this.D=this.C=0,this.Y&=~(It|Mt|Nt));return a};k.Vm=function(a,b){this.C=a&&(this.Y|=It,this.Y&=~Pt,Qt(this))};k.Gl=function(){var a=this.Y;this.D=a.B.lb?(a.Y=St,a.ve(a.B,function(b){0<=b?(Tt(a),a.V&&a.V.aa==Mj&&(a.Y=0),a.Y=a.Y|At|Ut|Vt):(a.Y=Wt,a.H=Xt)},!1)):a.Y=At|Ut));return b}k.ek=function(){return Rt(this)|Rt(this)<<8}; +function Yt(a,b){a.B&&a.B.tb>=a.B.lb&&(0>Zt(a.B,b)?(a.Y=Wt,a.H=Xt):(1==a.B.Oa||a.B.Oa==a.B.lb)&&1=a.B.lb&&(a.Y|=Vt)))}k.fm=function(a,b){Yt(this,b&255);Yt(this,b>>8&255)};k.Mk=function(){return this.H};k.km=function(a,b){this.ta=b};k.Ok=function(){return this.I};k.im=function(a,b){this.I=b};k.Pk=function(){return this.ea};k.jm=function(a,b){this.ea=b};k.Kk=function(){return this.ba};k.em=function(a,b){this.ba=b};k.Jk=function(){return this.Z}; +k.dm=function(a,b){this.Z=b};k.Lk=function(){return this.O};k.gm=function(a,b){this.O=b;this.Y=this.A[this.O&$t?1:0]?this.Y|At|Ut:this.Y&~At};k.Qk=function(){var a=this.Y;this.Y&At&&(this.Y&=~St);return a};k.cm=function(a,b){this.ga=b;this.V&&Ff(this.V,14);au(this)};k.hm=function(a,b){this.K&bu&&!(b&bu)&&(this.H=cu);this.K=b}; +function au(a){var b=!1,c=a.ga,d=a.O&$t?1:0,e=a.O&du,f=a.ba|(a.Z&eu)<<8,g=a.ea,h=a.I||256;a.La=-1;a.B=null;a.H=fu;a.Y=At|Ut;var l=a.A[d];l?(l.Bd=f,l.Sa=e,l.kb=g,l.tb=h*l.lb,c=c>=gu?c:c&hu,l.Ra=null,l.Oa=0,l.errorCode=0,a.La=d,a.B=l):c=-1;switch(c&hu){case iu:b=!0;break;case ju:a.Y=St;a.ve(l,function(b){0<=b&&a.V?(Tt(a),a.Y=At|Ut|Vt):(a.Y=Wt,a.H=Xt)},!1);break;case ku:a.Y=Vt;break;case lu:b=!0;break;case mu:b=!0;break;case gu:a.H=cu;b=!0;break;case nu:l.gb=e+1,l.Za=h,b=!0}b&&Tt(a)} +function Tt(a){!a.V||a.K&ou||Hf(a.V,14,120)} +function Qt(a){a.D=0;var b=pu(a),c=pu(a),d=c&32,e=d>>5,f=c&31,g=pu(a),h=pu(a),l=g<<2&768|h,m=g&63,q=pu(a),y=pu(a),w=a.A[e];w&&(w.Bd=l,w.Sa=f,w.kb=m,w.tb=q*w.lb);switch(b){case qu:ru(a,w?w.errorCode:su);tu(a,c);tu(a,g);tu(a,h);tu(a,uu|d);b=-1;break;case Ot:for(c=0;0<=(b=pu(a));)w&&cb?this.ve(a,c):c(-1,!1)};k.dk=function(a,b){return void 0!==b&&0<=b?Zt(a,b):-1}; +k.sk=function(a,b){void 0!==b&&0<=b?(a.OaZt(a,a.$h)){a=-1;break a}a.yf++}a.yf>=a.td&&(b=-1);a=b}else a=-1;return a}; +function Cu(a,b,c){b.errorCode=su;if(b.sa&&(b.Ra=null,a.V)){b.errorCode=Ct;wl(a.V,3,a,"dmaRead",b);sl(a.V,3,function(a){a||b.errorCode!=Ct||(b.errorCode=su);c(b.errorCode?vu:uu)});return}c(b.errorCode?vu:uu)}function Eu(a,b,c){b.errorCode=su;if(b.sa&&(b.Ra=null,a.V)){b.errorCode=Ct;wl(a.V,3,a,"dmaWrite",b);sl(a.V,3,function(a){a||(b.errorCode==Ct&&(b.errorCode=su),b.errorCode==Hu&&(b.errorCode=Ct));c(b.errorCode?vu:uu)});return}c(b.errorCode?vu:uu)} +function Gu(a,b,c){b.errorCode=su;b.de&&b.de.length==b.tb||(b.de=Array(b.tb));b.Oa=0;a.V?(b.errorCode=Ct,wl(a.V,3,a,"dmaWriteBuffer",b),sl(a.V,3,function(a){a||b.errorCode!=Ct||(b.errorCode=su);c(b.errorCode?vu:uu)})):c(b.errorCode?vu:uu)} +k.ve=function(a,b,c){var d=-1,e=null,f=0;if(a.errorCode)return b&&b(d,!1,e,f),d;var g=!1!==c?1:0;if(a.Ra&&(f=a.Oa,d=a.sa.read(a.Ra,a.Oa),a.Oa+=g,0<=d))return e=a.Ra,b&&b(d,!1,e,f),d;if(b){if(a.sa)return a.sa.seek(a.Bd,a.Sa,a.kb+a.wf,!1,function(c,l){(a.Ra=c)?(e=c,f=a.Oa=0,Iu(a),d=a.sa.read(a.Ra,a.Oa),a.Oa+=g):a.errorCode=Hu;b(d,l,e,f)}),d;a.errorCode=Hu;b(d,!1,e,f)}return d}; +function Zt(a,b){if(a.errorCode)return-1;do{if(a.Ra&&a.sa.write(a.Ra,a.Oa++,b))break;a.sa&&a.sa.seek(a.Bd,a.Sa,a.kb+a.wf,!0,function(b){a.Ra=b});if(!a.Ra){a.errorCode=Hu;b=-1;break}a.Oa=0;Iu(a)}while(1);return b}function Iu(a){a.kb++;var b=1-a.wf;a.kb>=a.Za+b&&(a.kb=b,a.Sa++,a.Sa>=a.gb&&(a.Sa=0,a.Bd++))}k.Il=function(){var a=this.U.K&255;!(this.U.F>>8)&&128>8||!this.V)||(a=!(this.V.$b[0].Uc&64));return a?!0:!1}; +var Dt="Hard Drive",Gt=["XTC","ATC","COMPAQ"],Et=[{0:[306,2],1:[375,8],2:[306,6],3:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[940,8],5:[940,6],6:[615,4],7:[462,8],8:[733,5],9:[900,15],10:[820,3],11:[855,5],12:[855,7],13:[306,8],14:[733,7],16:[612,4],17:[977,5],18:[977,7],19:[1024,7],20:[733,5],21:[733,7],22:[733,5],23:[306,4]},{1:[306,4],2:[615,4],3:[615,6],4:[1023,8],5:[940,6],6:[697,5],7:[462,8],8:[925,5],9:[900,15],10:[980,5],11:[925,7],12:[925,9],13:[612,8],14:[980,4],16:[612,4],17:[980,5],18:[966, +6],19:[1023,8],20:[733,5],21:[733,7],22:[524,4,40],23:[924,8],24:[966,14],25:[966,16],26:[1023,14],27:[832,6,33],28:[1222,15,34],29:[1240,7,34],30:[615,4,25],31:[615,8,25],32:[905,9,25],33:[832,8,33],34:[966,7,34],35:[966,8,34],36:[966,9,34],37:[966,5,34],38:[612,16,63],39:[1023,11,33],40:[1023,15,34],41:[1630,15,52],42:[1023,16,63],43:[805,4,26],44:[805,2,26],45:[748,8,33],46:[748,6,33],47:[966,5,25]}],wt=496,cu=1,fu=0,Xt=16,eu=3,du=15,$t=16,Wt=1,Vt=8,Ut=16,At=64,St=128,iu=16,ju=32,ku=48,lu=64,mu= +112,gu=144,nu=145,hu=240,ou=2,bu=4,uu=0,vu=2,yu=0,zu=1,qu=3,Au=5,Bu=8,Du=10,Ot=12,Fu=15,wu=224,xu=228,Ct=0,su=4,Hu=20,Bt=0,Pt=1,It=2,Mt=4,Nt=8,Ht=32,tt={800:Z.prototype.Fl,801:Z.prototype.Gl,802:Z.prototype.El},st={496:Z.prototype.ek,497:Z.prototype.Mk,498:Z.prototype.Ok,499:Z.prototype.Pk,500:Z.prototype.Kk,501:Z.prototype.Jk,502:Z.prototype.Lk,503:Z.prototype.Qk},vt={800:Z.prototype.Vm,801:Z.prototype.Ym,802:Z.prototype.Xm,803:Z.prototype.Wm,807:Z.prototype.mh,811:Z.prototype.mh,815:Z.prototype.mh}, +ut={496:Z.prototype.fm,497:Z.prototype.km,498:Z.prototype.im,499:Z.prototype.jm,500:Z.prototype.em,501:Z.prototype.dm,502:Z.prototype.gm,503:Z.prototype.cm,1014:Z.prototype.hm};Ma(function(){for(var a=eb(document,"pcx86","hdc"),b=0;b\nLicense: GPL version 3 or later ");for(b=0;bLu){if(d.load(this.K)){this.F=new Qe(this,"1.35.1",Vu);this.F.load()&&(Wu(this,d),a=Xu,Yu(this.F));this.F.set(Su,wa());Zu(this.F);var e=this.A&&!this.H;if(a==Tu||Xa("Click OK to restore the previous PCx86 machine state, or CANCEL to reset the machine.")){if(c=Ru(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?d.load(g):("error"==f&&"no machine state"!= +g?(this.xa("Error: "+g),"unable to verify user"==g&&(Ga($u,""),this.B=null)):this.Zb(f+": "+g),Yu(d),d.load()?(c=Ru(d),e=!0):c=!1))}e&&Pu(this,c?d:null)}else a==Xu&&d.clear()}else Pu(this);delete this.K;delete this.L}e=Ya(this.id);for(f=0;fa[1];a=a[2];this.ea=!0;this.ca.Pb=!0;var d=this.ia.power;d&&(d.textContent="Shutdown");this.U&&(av(this,this.U,b,c,a),this.U.Fe());this.W&&(Wu(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.C=0}; +function Wu(a,b){if(Xa("There may be a problem with your PCx86 machine.\n\nTo help us diagnose it, click OK to send this PCx86 machine state to http://www.pcjs.org.")){var c=a.B||"";b=b.toString();var d={app:"PCx86",ver:"1.35.1"};d.url=a.ba;d.user=c;d.type="bug";d.data=b;Ba("http://www.pcjs.org/api/v1/report",d,!0)}} +function bv(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new Qe(a,"1.35.1"),g=new Qe(a,"1.35.1",Qu),h=wa();g.set(Su,h);f.set(Su,h);f.set(cv,"1.35.1");f.set(dv,window?window.location.href:null);f.set(ev,window?window.navigator.userAgent:"");a.U&&a.U.Nb&&(c&&Qc(a.U),d=a.U.Nb(b,c),"object"===typeof d&&f.set(a.U.id,d),c&&(a.U.ca.Pb=!1,!1===d&&(e=null)));for(var h=Ya(a.id),l=0;l>>b.B;d=d+e-1>>>b.B;c.ng=0;for(c.dd=0;f<=d;)e=b.X[f],c.ng+=e.size,e.size&&(c.gg.push(xa(Cb,f,0,0,e.type)),c.dd++),f++;a.A=c;a.ba=a.A.dd*a.ma.A/(Bb*Mb);d=0;a.A.ci=0;a.A.Ee||(a.A.Ee=[]);e=-1;b=0;for(var g=-1,c=0;c>1),g=f.y+(f.A>>1),h=f.A,f.wc>1,b.H+=(b.I>>1)-2,Ib(b,e),b.W&&(b.D.restore(),b.W=!1)}}else Ib(a,"This space intentionally left blank");a.context.drawImage(a.J,0,0,a.J.width,a.J.height,a.Ga,a.Ka,a.ua,a.ya);a.na=!1}}var Vu="failsafe",Qu="validate",Su="timestamp",cv="version",dv="url",ev="browser",$u="user",Uu=-1,Lu=0,Tu=1,Xu=2,gv=3; +Ma(function(){for(var a=eb(document,"pcx86-machine"),b=0;bf.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PCx86$2"), +a=a.replace(/().*?(<\/xsl:variable>)/,"$1pcx86$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){f=null,a=q.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ba(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,q=/( [a-z]+=)(['"])(.*?)\2/g;m=q.exec(f);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/, +"");a=a.replace(d[0],g);mv(a,b,c)}})}else c(a,null)} +function nv(a,b,c,d){function e(a){if(void 0===h){var b=g&&eb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=sa(a))}function f(a){e("Error: "+a);l&&(--jv||Qa(!0));l=!1}var g,h,l=!0;jv++;Wa[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var q=document.head||document.getElementsByTagName("head")[0],y=document.createElement("style");y.type="text/css";y.styleSheet?y.styleSheet.cssText=m:y.appendChild(document.createTextNode(m));q.appendChild(y)}c|| +(c="/versions/pcx86/1.35.1/components.xsl");m=function(d,h){h?kv(c,null,null,!1,e,function(d,l){l?(Va(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--jv||Qa(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--jv||Qa(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?kv(b,a,d,!0,e,m):lv(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(w){f(w.message)}return l}function ov(a,b,c,d){Qa(!1);return nv(a,b,c,d)}window.embedPC=ov;window.embedPCx86=ov;window.findMachineComponent=function(a,b){return ab(b,a+".machine")}; +window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!gb[a]){for(var c=!0,d=gb,e=a,f=b.length,g=[],h=[],l="",m=null,q=0;q]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=y.exec(h[m]);){var w=d[2];w&&(h[w]||(q=q.replace(d[0],"")))}d=m=pa(m)}else"xsl"==y&&(e=m=pa(m));l[m]=q}a&&(l[m="css"]=a);b[2]&&(l[m="parms"]=b[2]);b[3]&&(l[m="state"]=b[3]);d&&e?(a=JSON.stringify(l),g+=".js",c=c[1]+"var resources="+a+";"+c[2]+c[3],c=c.replace(/\u00A9/g, +"©"),a=Ka(c,"javascript",!1,g),a=a+(', copy it to your web server as "'+g+'", and then add the following to your web page:\n\n')+('
    \n')+"...\n",a=a+(' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float: + + + + + + + js + + + +
    + + + + + + + + + + js + + + "" + + + + + +
    +
    + + + + + + + + + + + + + + + , + + + + + + + + + + + + + .machine + . + . + + + + + + + + + + + + + + + + + + + + ,comment:'' + + + + + + border:1px solid black;border-radius:15px; + border:; + + + + + + left:; + + + + + + top:; + + + + + + + + width:; + width:;max-width:; + width:auto;max-width:; + + + + + + + + height:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto;clear:both; + position:; + position:relative; + + + + + overflow:auto;width:100%; + background-color:; + + + + - -component + +
    + + + + + + +
    + + + + + + + + --object -screen + + +
    +
    + +
    + +
    +
    + + + + +
    + + +
    [XML]
    + +
    + + +
    +
    +
    +
    + + + + + text-align:center; + + + +

    +
    + + +
    +
    + + + + + + +
    +
    + + + + type:'' + + + binding:'' + + + value:'' + + + + border:1px solid black; + border:; + + + + + + width:; + + + + + + height:; + + + + + + left:; + + + + + + top:; + + + + + + padding:; + + padding-top:; + padding-right:; + padding-bottom:; + padding-left:; + + + + + + float:left; + float:right; + margin:0 auto; + clear:both; + position:; + position:relative; + text-align:; + float:left; + + + + + + + + + + + + + + + + + + +
    + + + font-size:; + + + + + -label + + + + width:; + width:; + + + + + + + + text-align:right; + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    + + + + +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + ; + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + desc:'' + + ,href:'' + + + + + + + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8088 + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + + null + + + + + + 0 + + + + + + + -1 + + + + + + + -1 + + + + + + + -1 + + + + + + ,model:'',stepping:'',fpu:,cycles:,multiplier:,autoStart:,addrReset:,csStart:,csInterval:,csStop: + + + + + + + + + + + + + + + 8087 + + + + + + + + + + + + ,model:'',stepping:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + true + + + + + + false + + + + + + {} + + + + + + + + + + + + + + + + + chipset + ,model:'',scaleTimers:,sw1:'',sw2:'',sound:,floppies:,monitor:'',rtcDate:'' + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + device + ,type:'',baudReceive:,baudTransmit:,autoMount:'' + + + + + + + + + + + + + + + + + + + + keyboard + ,model:'' + + + + + + + + + + + + + + + 0 + + + + + + + + + + + parallel + ,adapter:,binding:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + + 0 + + + + + + + 0 + + + + + + + false + + + + + serial + ,adapter:,baudReceive:,baudTransmit:,binding:'',tabSize:,charBOL:,upperCase: + + + + + + + + + + + + + + + + + + + + mouse + ,serial:'' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + fdc + ,autoMount:'',sortBy:'' + + + + + + + + + + + + + + + + + + + + + xt + + + + + hdc + ,drives:'',type:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + null + + + + + + + + + + + + + + + + + rom + ,addr:,size:,alias:,file:'',notify:'' + + + + + + + + + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + null + + + + + + null + + + + + + true + + + + + ram + ,addr:,size:,file:'',load:,exec:,test: + + + + + + + + + + + + + + + + + + + + + null + + + + + + + 256 + + + + + + + 224 + + + + + + + black + + + + + + 0 + + + + + + 0 + + + + + + false + + + + + + 1bpp + + + + + + 0 + + + + + + 0 + + + + + + 1 + + + + + + 0 + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + false + + + + + + 1 + + + + + + 1 + + + + + + + 80 + + + + + + + 25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + 0 + + + + + + null + + + + + + 0 + + + + + + 60 + + + + + video + ,model:'',mode:,screenWidth:,screenHeight:,screenColor:'',screenRotate:,bufferAddr:,bufferRAM:,bufferFormat:'',bufferCols:,bufferRows:,bufferBits:,bufferLeft:,bufferRotate:,memory:,switches:'',scale:,cellWidth:,cellHeight:,charCols:,charRows:,fontROM:'',fontColor:'',touchScreen:'',autoLock:,aspectRatio:,smoothing:,interruptRate:,refreshRate: + + + + + + + + + + + + + + + 16 + + + + + + + + + + + + + + + + + debugger + ,base:,commands:'',messages:'' + + + + + + + + + + + + + + panel + + + + + + + + + + + + + + + + + + + + + true + + + + + + + 0 + + + + + + 0 + + + + + + + + + + + + computer + ,autoPower:,busWidth:,resume:'',state:'' + + + + + + + + diff --git a/versions/pdpjs/1.35.1/document.css b/versions/pdpjs/1.35.1/document.css new file mode 100644 index 0000000000..7072b406e4 --- /dev/null +++ b/versions/pdpjs/1.35.1/document.css @@ -0,0 +1,162 @@ +@CHARSET "UTF-8"; + +.page { + margin: 2% 2%; + padding: 2% 2%; + min-width: 30em; + overflow: auto; + font-size: large; + font-family: Helvetica, Arial, sans-serif; + background: #303030; + color: #ccc; + +} +.page-header { +} +.page-header-title { + text-align: center; + +} +.page a { + color: #7fc07f; + text-decoration: none; +} +a.footlink, a.paralink { + text-decoration: none; +} +a.footlink:link, a.paralink:link { + color: blue; +} +a.footlink:visited, a.paralink:visited { + color: blue; +} +.galleryitem { + float: left; + width: 200px; +} +.item { + float: left; + width: 2em; + text-indent: 1em; +} +.list { + margin-left: 3em; + text-indent: 0; + text-align: justify; +} +ul { + list-style: none; +} +div.pnumber { + float: left; + width: 2em; + text-indent: 1em; +} +div.pitem { + margin-left: 10em; +} +p.indent, .justified p { + text-indent: 2em; + text-align: justify; + line-height: 1.5em; +} +p.noindent { + text-indent: 0; + text-align: justify; +} +p.center, .center { + text-align: center; +} +li.para { + margin-top: 1em; + margin-bottom: 1em; +} +.left { + text-align: left; +} +.right { + text-align: right; +} +blockquote.tag { + font-size: small; + font-family: Monaco, Fixed, monospace; + margin-top: 0; + margin-bottom: 0; +} +.blockquote { + padding-left: 1em; + text-indent: 0; + text-align: justify; +} +.italics { + font-style: italic; +} +.medium { + font-size: medium; +} +.small { + font-size: x-small; +} +.smallcaps { + font-variant: small-caps; +} +.strike { + text-decoration: line-through; +} +.summation, .bracelist { + display: inline-block; + position: relative; + vertical-align: middle; + text-align: center; + margin-bottom: 0.5ex; + text-indent: 0; +} +.bracelist-symbol { + font-size: 3em; + vertical-align: -40%; +} +.summation .summation-lower, .summation .summation-upper, .bracelist-item { + display: block; + font-size: 75%; + text-align: center; +} +.summation .summation-upper { + margin-bottom: 0; + margin-left: 0.8ex; + font-style: italic; +} +.summation .summation-lower{ + margin-bottom: -0.6ex; + font-style: italic; +} +.summation .summation-symbol { + font-size: 2em; +} +p sup { + vertical-align: baseline; + position: relative; + bottom: .5em; + font-size: small; +} +p sub { + vertical-align: baseline; + position: relative; + bottom: -.5em; + font-size: small; +} +.footnote { + font-size: medium; + text-indent: 1em; + text-align: justify; + margin-top: .5em; +} +.image-right { + float: right; + margin-left: 1em; + margin-top: 1em; + margin-bottom: 1em; +} +.image-caption { + font-size: small; + text-align: center; +} \ No newline at end of file diff --git a/versions/pdpjs/1.35.1/document.xsl b/versions/pdpjs/1.35.1/document.xsl new file mode 100644 index 0000000000..51ba9e46c1 --- /dev/null +++ b/versions/pdpjs/1.35.1/document.xsl @@ -0,0 +1,452 @@ + + + + + +]> + + + + + + + + + +

    +
    + + + + + + + +

    +
    + +

    +
    +
    +
    + + + + + + +
    +
    + + +
    + +   + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + +

    +
    + + +

    +
    + + +

    +
    + + +
    +
    + + +
    +
    + + + + + + + + + + + + + + +
    +
    + + +
    +
    + + +
  • +
    + + +
    image
    +
    + + +
    +
    + + + + +
    {.}
    +
    + +
    {.}
    +
    +
    +
    + + + + + + + + + + < + > + + + + × + + ÷ + σ + + + + + + + + + + + + { + + + + + + + + + + [] + + + + +
    + +
    +
    + + + , and + + + + + MDY + + + + + + + + + + + + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + + + , + + + + + +

    + +
    +
    + + +
    + {.}
    +
    +
    +
    + + + +

    Timeline

    +
    + +

    +
    +
    + +
    +
    + + + + + + + + + +

    +
    + +
    +
    +
    + + + +

    People

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + +

    +
      + +
    +
    + + + + + + + + + + +
  • + +
  • +
    + + + +

    +
    +

    + +

    +
    +
    + + + + false + + + + + + [Original] + + + + + + + + + + [] + + +
    by
    + + +
    + [Source: + + + + + + + ] +
    +
    +
    + + + +

    Resources

    +
    + +

    +
    +
    + +
    +
    + + +

    + +
    + + + +

    +
    +
      + +
    +
    + + +
  • +
    + + + +

    +
    +
    + +
    +
    + + + +

    +
    + +
    + + + +

    +
    +
      + +
    +
    + + + + + +
      + +
    +
    + + + + +
  • +
    + +
  • +
    + +
  • +
    +
    +
    + + +
  • +
    + + + + + + + + + + +
    + < ="" + + ></> + ></> + /> + +
    +
    + +
    diff --git a/versions/pdpjs/1.35.1/machine.xsl b/versions/pdpjs/1.35.1/machine.xsl new file mode 100644 index 0000000000..0a100a6c77 --- /dev/null +++ b/versions/pdpjs/1.35.1/machine.xsl @@ -0,0 +1,61 @@ + + + + +]> + + + + + + + + + + + + + + + + + js + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    +
    + + + + + , + +
    +
    + +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pdpjs/1.35.1/manifest.xsl b/versions/pdpjs/1.35.1/manifest.xsl new file mode 100644 index 0000000000..5e3148ea6b --- /dev/null +++ b/versions/pdpjs/1.35.1/manifest.xsl @@ -0,0 +1,247 @@ + + + + +]> + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Document Manifest

    +
    +
      + + + + None + + + + + + + + + + + + + + + + +
    +
    +
    +

    + +
    +
    +
    + + +
    + + + + + + + + + + + <xsl:value-of select="$SITEHOST"/> + + + + +
    + +
    +

    Software Manifest

    +
    +
      + + + + None + + + + + Unknown + + + + + None + + + + + None + + + + + + + + + + + + + UpdatedReleased + + Unknown + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + + + + + + +

    No default machine specified for '' in manifest.xml

    +
    + +
    +
    +
    + + + + -dbg + + + + + + +
    + + + + + Unknown + +
  • +
      + + + + + + + + +
    • + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
      • + + + + + + +
      • +
        +
      +
      +
    • +
      + + + + + + + + +
    +
  • +
    +
    + +
    diff --git a/versions/pdpjs/1.35.1/outline.xsl b/versions/pdpjs/1.35.1/outline.xsl new file mode 100644 index 0000000000..f2b6eed918 --- /dev/null +++ b/versions/pdpjs/1.35.1/outline.xsl @@ -0,0 +1,47 @@ + + + + +]> + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/><xsl:text> | </xsl:text><xsl:value-of select="$SITEHOST"/> + + + + + +
    +
    + +
    +
    + + + + -dbg + + + + + + +
    + +
    diff --git a/versions/pdpjs/1.35.1/pdp10-dbg.js b/versions/pdpjs/1.35.1/pdp10-dbg.js new file mode 100644 index 0000000000..4e3cde5525 --- /dev/null +++ b/versions/pdpjs/1.35.1/pdp10-dbg.js @@ -0,0 +1,303 @@ +(function(){/* + http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/messages.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/device.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/rom.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/ram.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/computer.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/defines.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/panel.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/bus.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/memory.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/cpu.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/cpustate.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/cpuops.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/serial.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/debugger.js (C) Jeff Parsons 2012-2017 + http://pcjs.org/modules/pdp10/lib/macro10.js (C) Jeff Parsons 2012-2017 +*/ +var m,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},ba="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global?global:this;function ca(){ca=function(){};ba.Symbol||(ba.Symbol=da)}var ea=0;function da(a){return"jscomp_symbol_"+(a||"")+ea++} +function fa(){ca();var a=ba.Symbol.iterator;a||(a=ba.Symbol.iterator=ba.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ha(this)}});fa=function(){}}function ha(a){var b=0;return ia(function(){return ba?-b:b}});ma("Math.log2",function(a){return a?a:function(a){return Math.log(a)/Math.LN2}}); +var na={uc:0,Nb:1,wc:2,xc:3,yc:4,zc:5,Ac:6,Bc:7,xb:8,Cc:9,Ob:10,Dc:11,Ec:12,Pb:13,Fc:14,Gc:15,Hc:16,Ic:17,Jc:18,Kc:19,Lc:20,Mc:21,Nc:22,Oc:23,Pc:24,Qc:25,Rc:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,wb:65,tc:66,vc:67,Sc:68,E:69,Tc:70,Uc:71,Vc:72,Wc:73,Xc:74,Yc:75,Zc:76,$c:77,ad:78,bd:79,cd:80,Q:81,dd:82,ed:83,fd:84,gd:85,hd:86,jd:87, +kd:88,ld:89,Rb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,md:97,nd:98,od:99,d:100,e:101,pd:102,qd:103,rd:104,sd:105,td:106,k:107,ud:108,vd:109,n:110,wd:111,p:112,q:113,r:114,xd:115,t:116,zd:117,Ad:118,Bd:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Qb:127}; +function oa(a,b){var c;if(a){b||(b=10);var d,e,f=0=b&&(e=a.match(/(-?[0-9]+)B([0-9]*)/))&& +(a=e[1],d=35-((e[2]||35)&255));e=a;((f=b)&&10!=f?16==f?e.match(/^-?[0-9a-f]+$/i):8==f?e.match(/^-?[0-7]+$/):2==f&&e.match(/^-?[01]+$/):e.match(/^-?[0-9]+$/))&&!isNaN(g=parseInt(a,b))&&(d&&(0>g&&(g+=Math.pow(2,36)),g=0a&&-1a&&(a+=Math.pow(b,c)),a>=Math.pow(b,c)&&(c=Math.ceil(Math.log(a)/Math.log(b))));for(var g=e||-1;0=h?48:55),f=String.fromCharCode(h)+f;a=Math.trunc(a/b)}g--}return(void 0===d?"":d)+f}function wa(a,b,c){b?12=b?6:16777215>=b?8:12);return pa(a,8,b,c?"0o":"")} +function xa(a,b){b?11=Math.abs(a)?5:11;return pa(a,10,b)}function n(a,b,c){b?9=b?4:4294967295>=b?8:9);return pa(a,16,b,c?"0x":"")}function ya(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return Ca[a]})}function Da(a,b){return(a+" ").slice(0,b)}function Ea(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Ca={"&":"&","<":"<",">":">",'"':""","'":"'"};function Fa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a>1,h;h=c(b,a[g]);0a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} +function Ja(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a, +f,e))});if(b&&"object"==typeof b){var k="",l;for(l in b)b.hasOwnProperty(l)&&(k&&(k+="&"),k+=l+"="+encodeURIComponent(b[l]));k=k.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g} +function Ka(a,b){var c,d={da:null,aa:null,la:null,ya:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&0>b.indexOf("0o")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.la=g.load;d.ya=g.exec;if(e=g.bytes)d.da=e;else if(e=g.words)for(d.da=Array(2*e.length),f=c=0;c>8&255;else if(e=g.longs)for(d.da=Array(4*e.length),f=c=0;c>8&255,d.da[f++]=e[c]>>16&255,d.da[f++]=e[c]>>24&255;else(e=g.data)?d.Pa=e:d.da=g;d.da&&(d.da.length?1==d.da.length&&(r(d.da[0]),d=null):(r("Empty resource: "+a),d=null));d.aa=g.symbols}catch(h){r("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;ca?this.ab=this.id:(this.bb=this.id.substr(0,a),this.ab=this.id.substr(a+1));this.A={ready:!1,Va:!1,qb:!1,ba:!1,error:!1};this.fb=null;this.A.error=!1;this.ca=c||0;this.D=this.v=this.G=this.H=this.za=null;hb.push(this)}function ib(a,b,c){jb[a]&&b&&(jb[a][b]=c)}function pb(){return Date.now()||+new Date} +function r(a){window&&window.alert(a)}function qb(a){var b=!1;window&&(b=window.confirm(a));return b}function rb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;ba;a++)this.b["S"+a]=[0,0,!1,!1,this.dc,a];this.D=this.v=this.G=this.H=null;this.exports={hold:this.Vb,toggle:this.oc,reset:this.kc, +set:this.nc};Db(this)}la(dc,t);m=dc.prototype;m.reset=function(a){this.stop();a&&fc(this,this.w=0)}; +m.sa=function(a,b,c,d){if(this.H&&this.H.sa(a,b,c,d)||this.v&&this.v.sa(a,b,c,d)||this.D&&this.D.sa(a,b,c,d))return!0;switch(b){case "PC":return this.J[b]=c,this.L++,!0;default:return"led"==a||"rled"==a?(this.J[b]=c,this.C[b]=d?1:0,this.L++,!0):"switch"==a?(void 0===this.b[b]&&(this.b[b]=[d?1:0,d?1:0]),this.J[b]=c,a=c.parentElement||c,a=a.parentElement||a,a.onmousedown=function(a,b){return function(){gc(a,b)}}(this,b),a.onmouseup=a.onmouseout=function(a,b){return function(){hc(a,b)}}(this,b),a.ontouchstart= +function(a,b){return function(c){gc(a,b);c.preventDefault()}}(this,b),a.ontouchend=function(a,b){return function(){hc(a,b)}}(this,b),!0):t.prototype.sa.call(this,a,b,c,d)}};m.Ma=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;ic(this);jc(this)};m.Ba=function(a,b){if(!b)if(this.V&&kc(),!a)this.reset(!0);else if(!this.restore(a))return!1;return!0};m.ra=function(a){return a?this.save():!0};m.save=function(){var a=new G(this);a.set(0,[this.i,this.w,this.j]);return a.data()}; +m.restore=function(a){if(a=a[0])lc(this,this.i=a[0]),fc(this,this.w=a[1]),mc(this,a[2]);return!0};m.kc=function(){for(var a in this.b){var b=this.b[a];b[1]=b[0]}jc(this);return!0};function nc(a,b,c){if(a=a.J[b])a.style.backgroundColor=c?"#ff0000":"#000000"}function ic(a,b){for(var c in a.C)nc(a,c,null!=b?b:a.C[c])}function oc(a,b,c){if(a=a.J[b])a.style.marginTop=c?"0px":"20px",a.style.backgroundColor=c?"#00ff00":"#228B22"}function jc(a){for(var b in a.b)oc(a,b,a.b[b][1])} +m.Vb=function(a,b,c){if(gc(this,b)){if(c){var d=this;setTimeout(function(){hc(d,b);a&&a()},+c);return!1}hc(this,b)}return!0};m.nc=function(a,b){if("SR"==a)return mc(this,oa(b,8));var c=this.b[a];return c?(c[1]=+b?1:0,oc(this,a,c[1]),!0):!1};m.oc=function(a){return gc(this,a)?(hc(this,a),!0):!1};function gc(a,b){var c=a.b[b];return c?(oc(a,b,c[1]=1-c[1]),c[3]=!0,c[4]&&c[4].call(a,c[1],c[5]),b!=pc&&(a.O=b==qc,a.R=b==rc),!0):!1} +function hc(a,b){var c=a.b[b];c&&(c[2]&&c[3]&&(oc(a,b,c[1]=c[0]),c[4]&&c[4].call(a,c[1],c[5])),c[3]=!1)}m.ec=function(a){a||this.v.A.P||(H(this.v,this.i),this.b[sc]&&this.b[sc][1]&&tc(this.v))};m.fc=function(){};m.$b=function(a){a||this.v.Y()}; +m.Yb=function(a){if(!a&&!this.v.A.P)if(this.b[sc]&&this.b[sc][1])tc(this.v);else{if((a=this.D)&&!Eb(a,!0))Pb(a,!0),uc(a,0,null),Pb(a,!1);else try{var b=this.v.Za(1);0c;c++){var d=a,e="A"+c,f=b&1<c;c++){var d=a,e="D"+c,f=b&1<b;b++)a.b["S"+b][1]=a.j&1<d.length){for(var e=0,f=Array(4096),g=0;g>>a.i;0f&&(l=f);if(h&&h.size){if(h.type==d){if(e+f<=h.B)return h.Xa+=h.B-e,h.B=e,!0;if(e>=h.B+h.Xa){l=h.size-(e-k);l>f&&(l=f);h.Xa=e-h.B+l;e=k+16384;f-=l;g++;continue}}return Gc(Hc,e,f)}e=new Cc(a,e,l,16384,d);Dc(e,a.D,h);a.b[g++]=e;e=k+16384;f-=l}return 0>=f?(a.status("Added "+(c>>10)+"Kb "+Ic[d]+" at "+wa(b)),!0):Gc(Jc,b,c)} +function Ac(a,b){var c=a.b[(b&a.j)>>>a.i];a.w++;b=c.w(b&16383,b);a.w--;return b}function zc(a,b,c){var d=a.b[(b&a.j)>>>a.i];a.w++;d.D(c,b&16383,b);a.w--}function Ec(a){for(var b=0,c=[],d=0;d=a.ta&&(a.ta+=a.pa,c=!0);0<=a.ua&&a.ua<=hd(a)&&(a.pa=a.ua=-1,dd(a),a.Y(),c=!0);c&&a.u(hd(a)+" cycles: checksum="+n(a.Ha))}} +m.sa=function(a,b,c){var d=this;switch(b){case "power":case "reset":return this.J[b]=c,!0;case "run":return this.J[b]=c,c.onclick=function(){var a;if(a=d.H)if(a=d.H,a.A.ba)a=!0;else{var b=null,c,h=rb(a.id);for(c=0;ca.Z/a.ga?b=1:d=!0;a.ha=b;b=a.lb*a.ha;if(a.ga!=b){a.ga=b;b=a.ga.toFixed(2)+"Mhz";var e=a.J.setSpeed;e&&(e.textContent=b);a.u("target speed: "+b)}c&&a.H&&ld(a.H)}wc(a,a.M);a.M=0;a.L=pb();a.T=0;jd(a);return d}function md(a,b){for(var c=a.R.length-1;0<=c;c--){var d=a.R[c];0>d[0]||b>d[0]&&(b=d[0])}return b}function nd(a){for(var b=[],c=0;cd[0]||(d[0]-=b,0>=d[0]&&(d[0]=-1,d[1]()))}}function od(a,b){var c=a.V-=a.N;a.N=0;b&&(a.V=0);return c} +m.lc=function(){if(this.A.P){this.cb>=this.ob&&jd(this,!0);this.va=0;this.Ga=pb();if(this.T){var a=this.Ga-this.T;a>this.nb&&(this.L+=a,this.L>this.Ga&&(this.L=this.Ga))}try{do{var b=md(this,this.A.Ua?1:this.Ja);try{this.Za(b)}catch(e){if("number"!=typeof e)throw e;}b=od(this,!0);this.va+=b;this.M+=b;xc(this,b);vc(this,b);this.ma-=b;if(0>=this.ma){this.ma+=this.Ja;++this.pb>=pd&&(this.H&&K(this.H,void 0),this.pb=0);break}}while(this.A.P)}catch(e){this.Y();this.H&&this.H.stop(pb(),hd(this));Ab(this, +e.stack||e.message);return}if(this.A.P){a=setTimeout;b=this.Fb;this.T=pb();var c=this.nb;this.va&&(c=Math.round(c*this.va/this.Ja));var c=c-(this.T-this.Ga),d=this.T-this.L;d&&(this.Z=Math.round(this.M/(10*d))/100,864E5<=d&&(this.W=0,id(this)));if(0>c||this.Zc&&(this.L-=c),c=0;this.cb+=this.va;this.T+=c;a(b,c)}}}; +function tc(a,b){if(!Bb(a))if(a.A.P)a.u(a.toString()+" busy");else{id(a);a.A.P=!0;a.A.ib=!0;var c=a.J.run;c&&(c.textContent="Halt");a.H&&(b&&ld(a.H,!0),a.H.start(a.L,hd(a)));a.D||a.status("Started");setTimeout(a.Fb,0)}}m.Za=function(){return 0};m.Y=function(a){var b=!1;if(this.A.P){od(this);wc(this,this.M);this.M=0;this.A.P=!1;if(b=this.J.run)b.textContent="Run";this.H&&this.H.stop(pb(),hd(this));b=!0;this.D||this.status("Stopped")}this.A.complete=a;return b};var kd=30,pd=15,ad=["power","reset"]; +function qd(a){var b=+a.model||1001;$c.call(this,a,1E6);this.mb=b;this.$a=+a.addrReset||0;this.Sb=rd.bind(this);this.w=M.bind(this);this.Da=null;this.Cb=[];this.A.complete=!1}la(qd,$c);m=qd.prototype; +m.reset=function(){this.status("Model "+this.mb);this.A.P&&this.Y();this.Ka=this.La=this.b=this.I=0;this.i=this.oa=this.$a;this.K=this.O=-1;this.F=this.j=0;this.jb=[0,0];this.wa=[0,0];this.na=[0,0];this.xa=[0,0];this.Ca=this.i;this.C=0;this.f=this.hc;this.g=this.sc;this.Da=null;cd(this);this.A.error=!1;$c.prototype.reset.call(this)};m.Kb=function(){return 0}; +m.save=function(){var a=new G(this);a.set(0,[this.b,this.I,this.Ka,this.La,this.i,this.O,this.K,this.j,this.C,this.oa,this.Ca,this.$a]);a.set(1,[]);a.set(2,[this.W,this.ha,this.A.fa]);a.set(3,sd(this));a.set(4,nd(this));return a.data()}; +m.restore=function(a){var b;b=a[0];fa();ca();fa();var c=b[Symbol.iterator];b=c?c.call(b):ha(b);this.b=b.next().value;this.I=b.next().value;this.Ka=b.next().value;this.La=b.next().value;this.i=b.next().value;this.O=b.next().value;this.K=b.next().value;this.j=b.next().value;this.C=b.next().value;this.oa=b.next().value;this.Ca=b.next().value;this.$a=b.next().value;b=a[2];this.W=b[0];id(this,b[1]);this.A.fa=b[2];b=a[3];for(c=b.length-1;0<=c;c--){var d;a:{for(d=0;d>>b.i].f(a&16383,a)};m.sc=function(a,b){var c=this.G;a=this.Ca=a;c.b[(a&c.j)>>>c.i].g(b,a&16383,a);return b}; +m.Za=function(a){this.A.complete=!0;var b=this.D?wd(this.D)?1:this.A.ib?-1:0:0,c=a?this.A.ib?0:1:-1;this.A.ib=!1;this.V=this.N=a;this.C=this.C&-5|(b?4:0);do{if(this.C){if(this.C&4){if(xd(this.D,vd(this),c)){this.Y();break}++b||(this.C&=-5);c||c++}if(a=this.C&11)this.C&2?this.Da||(this.C&=-3):this.C&1&&this.C++,a=!1;if(a){if(this.C&4&&xd(this.D,vd(this),c)){this.Y();break}if(0>c)break}}this.C&=15;this.I&4194304?this.I=this.Ka=this.f(this.b):0<=this.O?(this.I=this.La=this.f(this.O),this.O=-1):(this.I= +this.La=this.f(this.oa=this.i),this.i=(this.i+1)%Ub);this.I&=8388607;this.b=this.I&262143;if(a=this.I>>18&15)this.b=this.b+(this.Ka=this.f(a))&Tb;a=this.I&4194304?-1:this.La/ac|0;0<=a&&this.Sb(a);this.N--}while(0>4].call(this,a,a&15)}function O(a){this.w(a)} +function zd(){var a=0,b=this.f(this.b),c=b/bc&63,d=b>>24&63,c=c-d;0>c&&(a++,c=36-d,0>c&&(c=100-d));b=c*bc+(d<<24)+(b&16777215);a&&(b=(b+a)%C);this.g(this.b,b)}function Ad(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/bc&63,d=this.K>>24&63;a=32>c+d?(a>>c&(1<>>0:Math.trunc(a/Math.pow(2,c))%Math.pow(2,d);this.g(b,a);this.j&=-8193;this.K=-1}} +function Bd(a,b){a=this.f(this.b);if(0>this.K)this.K=a,this.I=this.b|4194304;else{var c=this.K/bc&63,d=this.K>>24&63;b=this.f(b)%Math.pow(2,d)*Math.pow(2,c)%C;a=a-a%Math.pow(2,c+d)+b+a%Math.pow(2,c);this.g(this.b,a);this.j&=-8193;this.K=-1}}function Cd(a,b){this.g(b,this.f(this.b))}function Dd(a,b){this.g(b,this.b)}function Ed(a,b){this.g(this.b,this.f(b))}function Fd(a,b){this.g(b,0)}function Gd(a,b){this.g(b,B-this.f(b))}function Hd(a,b){this.g(b,B)} +function Id(a,b){var c=this.f(this.b),d=this.f(b);this.g(b,Jd(a,d,c)+(c-(c&x)))}function Kd(a,b){var c=this.f(b);this.g(b,Jd(a,c,0))}function Ld(a,b){b=this.f(b);var c=this.f(this.b);this.g(this.b,Jd(a,c,b)+(b-(b&x)))}function Md(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d-=d&x,a){case 256:d+=x;break;case 384:d+=c>z?x:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function Nd(a,b){var c=(this.f(this.b)&x)*y,d=this.f(b);this.g(b,Jd(a,d,c)+c)} +function Od(a,b){var c=this.b*y,d=this.f(b);this.g(b,Jd(a,d,c)+c)}function Pd(a,b){b=(this.f(b)&x)*y;var c=this.f(this.b);this.g(this.b,Jd(a,c,b)+b)}function Qd(a,b){var c=this.f(this.b),d=(c&x)*y,c=Jd(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function ie(a,b){var c=this.f(this.b)&x,d=this.f(b);this.g(b,je(a,d,c)+c)}function ke(a,b){var c=this.f(b);this.g(b,je(a,c,this.b)+this.b)}function le(a,b){b=this.f(b)&x;var c=this.f(this.b);this.g(this.b,je(a,c,b)+b)} +function me(a,b){var c=this.f(this.b),d=c;if(a&=384)switch(d&=x,a){case 256:d+=x*y;break;case 384:d+=c>Vb?x*y:0}c=d;this.g(this.b,c);b&&this.g(b,c)}function ne(a,b){var c=this.f(this.b)/y|0,d=this.f(b);this.g(b,je(a,d,c)+c)}function oe(a,b){var c=this.f(b);this.g(b,je(a,c,0))}function pe(a,b){b=this.f(b)/y|0;var c=this.f(this.b);this.g(this.b,je(a,c,b)+b)}function qe(a,b){var c=this.f(this.b),d=c/y|0,c=je(a,c,d)+d;this.g(this.b,c);b&&this.g(b,c)}function P(a){re[a&7].call(this,a,a>>3&127)} +function se(){}function te(){}function M(a){this.u("undefined opcode: "+wa(a));ud(this,-1);this.Y()}function ue(a){a>z&&(a!=A?a=Yb-a:this.j|=163840);return a}function Q(a,b){var c=(a+b)%C;ve.call(this,a,b,c);return c} +function we(a,b,c){var d=!1,e=!1;if(void 0===c){if(!a)return this.j|=131104,-1;c=b>z?B:0}else if((c=(az&&(a=C-a,d=!d);c>z&&(b?(c=B-c,b=C-b):c&&(c=C-c),e=!0,d=!d);f=this.jb;f[0]=0;f[1]=0;f=this.wa;f[0]=1;f[1]=0;f=this.na;f[0]=a;f[1]=0;a=this.xa;a[0]=b;for(a[1]=c;0c[0]&&(c[0]+=C,c[1]--),ye(this.jb,this.wa),ze(this.xa)))break;Ae(this.na);Ae(this.wa)}while(!ze(this.wa));b=this.jb[0];this.F=this.xa[0];d&&b&&(b=C-b);e&&this.F&&(this.F=C-this.F);return b} +function Be(a,b,c,d){var e=a,f=b;b=!1;var g;e>z&&(d||1001!=this.mb||e!=A)&&(e=C-e,b=!b);f>z&&(f=C-f,b=!b);if(ez)&&(g!=B||a<=z)&&(this.j|=131072),g=a);return g} +function Ce(a){a?a==A?this.j|=163840:a=Yb-a:this.j|=98304;return a}function De(a,b){var c=a-b;0>c&&(c+=C);ve.call(this,c,b,a);return c}function ve(a,b,c){a=Math.trunc(a/Xb);b=Math.trunc(b/Xb);c=Math.trunc(c/Xb);var d=a^(a^b)&(b^c);this.j=this.j|(d&2?65536:0)|(d&1?32768:0)|((a^c)&(b^c)&2?131072:0)}function R(a,b){return((a/E|0)&(b/E|0))*E+((a&b)>>>0)}function S(a,b){return R(a,(~(b/E|0)&15)*E+(~b>>>0))}function Ee(a,b){return(a>>0)}function T(a,b){return(a/E|0|b/E|0)*E+((a|b)>>>0)}function U(a){return a>>0)}function W(a){return(a/y|0)+(a&x)*y}function je(a,b,c){switch(a&384){case 0:b-=b&x;break;case 128:b=0;break;case 256:b=x*y;break;case 384:b=c>Vb?x*y:0}return b}function Jd(a,b,c){switch(a&384){case 0:b&=x;break;case 128:b=0;break;case 256:b=x;break;case 384:b=c>z?x:0}return b} +function ye(a,b){a[0]+=b[0];a[1]+=b[1];a[0]>=C&&(a[0]%=C,a[1]++)}function xe(a,b){var c=a[1]-b[1];c||(c=a[0]-b[0]);return c}function Ae(a){a[1]%2&&(a[0]+=C);a[0]=Math.trunc(a[0]/2);a[1]=Math.trunc(a[1]/2)}function ze(a){return!a[0]&&!a[1]} +var yd=[O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,M,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},zd,function(a,b){this.j&8192||(zd.call(this),this.j|=8192);Ad.call(this,0,b)},Ad,function(a,b){this.j&8192||(zd.call(this),this.j|=8192);Bd.call(this,0,b)},Bd,function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)}, +function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)}, +function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},function(a){this.w(a)},Cd,Dd,Ed,function(a,b){b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(b,a)},function(a,b){this.g(b,this.b*y)},function(a,b){a=this.f(b);a=(a/y|0)+(a&x)*y;this.g(this.b,a)},function(a,b){a=this.f(this.b);a=(a/y|0)+(a&x)*y;this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,Ce.call(this,this.f(this.b)))},function(a,b){this.g(b, +Ce.call(this,this.b))},function(a,b){this.g(this.b,Ce.call(this,this.f(b)))},function(a,b){a=Ce.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,ue.call(this,this.f(this.b)))},function(a,b){this.g(b,this.b)},function(a,b){this.g(this.b,ue.call(this,this.f(b)))},function(a,b){a=ue.call(this,this.f(this.b));this.g(this.b,a);b&&this.g(b,a)},function(a,b){this.g(b,Be.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(b,Be.call(this,this.f(b),this.b,!0))},function(a, +b){this.g(this.b,Be.call(this,this.f(b),this.f(this.b),!0))},function(a,b){this.g(this.b,this.g(b,Be.call(this,this.f(b),this.f(this.b),!0)))},function(a,b){this.g(b,Be.call(this,this.f(b),this.f(this.b)));this.g(b+1&15,this.F)},function(a,b){this.g(b,Be.call(this,this.f(b),this.b));this.g(b+1&15,this.F)},function(a,b){this.g(this.b,Be.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,Be.call(this,this.f(b),this.f(this.b))));this.g(b+1&15,this.F)},function(a,b){a=we.call(this, +this.f(this.b),this.f(b));0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=we.call(this,this.b,this.f(b));0>a||(this.g(b,a),this.g(b+1&15,this.F))},function(a,b){a=we.call(this,this.f(this.b),this.f(b));0>a||this.g(this.b,a)},function(a,b){a=we.call(this,this.f(this.b),this.f(b));0>a||(this.g(this.b,this.g(b,a)),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=we.call(this,this.f(this.b),c,a);0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);var c= +this.f(b+1&15),c=we.call(this,this.b,c,a);0>c||(this.g(b,c),this.g(b+1&15,this.F))},function(a,b){a=this.f(b);b=this.f(b+1&15);b=we.call(this,this.f(this.b),b,a);0>b||this.g(this.b,b)},function(a,b){a=this.f(b);var c=this.f(b+1&15),c=we.call(this,this.f(this.b),c,a);0>c||(this.g(b,this.g(this.b,c)),this.g(b+1&15,this.F))},function(a,b){if(a=(this.b&Wb)<<14>>23|this.b&255){var c,d,e=this.f(b);0a&&(c+=e*Math.pow(2,a)%A,d=A-Math.pow(2,35-a)),ez&&(this.j|=131072):e-d=a?c=ez&&(d=C-Math.pow(2,36+a),c+=d));this.g(b,c)}},function(a,b){if(a=((this.b&Wb)<<14>>23|this.b&255)%36){var c=this.f(b);0>a&&(a=36+a);c=c*Math.pow(2,a)%C+Math.trunc(c/Math.pow(2,36-a));this.g(b,c)}},function(a,b){if(a=(this.b&Wb)<<14>>23|this.b&255){var c=this.f(b),c=0=a?0:Math.trunc(c/Math.pow(2,-a));this.g(b,c)}},function(a,b){a=0;var c=this.f(b);if(c){for(;c>23|this.b&255){var c,d=this.f(b),e=this.f(b+1&15);if(0z&&dz&&ez&&(this.j|=131072):e-c<=z&&(this.j|=131072);e=0;f>z&&(d+=A,e+=A)}else d=d*Math.pow(2,a)%A+Math.trunc(e%A/Math.pow(2,35-a)),e=e*Math.pow(2,a)%A,c=A-Math.pow(2,35-a),f<=z?f+c>z&&(this.j|=131072):(f-c<=z&&(this.j|=131072),d+=A,e+=A)}else-36>=a?(e=-72>=a?d> +z?B:0:Math.trunc(d%A/Math.pow(2,-a-35)),d<=z?d=0:(d=B,e+=A)):(c=d>z?C-Math.pow(2,36+a):0,e=Math.trunc(e%A/Math.pow(2,-a))+d%A*Math.pow(2,35+a)%A,d=Math.trunc(d/Math.pow(2,-a))+c,d>z&&(e+=A));this.g(b,d);this.g(b+1&15,e)}},function(a,b){if(a=((this.b&Wb)<<14>>23|this.b&255)%72){var c=this.f(b),d=this.f(b+1&15),e=c;0>a&&(a=72+a);36>a?(c=c*Math.pow(2,a)%C+Math.trunc(d/Math.pow(2,36-a)),d=d*Math.pow(2,a)%C+Math.trunc(e/Math.pow(2,36-a))):(c=d*Math.pow(2,a-36)%C+Math.trunc(c/Math.pow(2,72-a)),d=e*Math.pow(2, +a-36)%C+Math.trunc(d/Math.pow(2,72-a)));this.g(b,c);this.g(b+1&15,d)}},function(a,b){if(a=(this.b&Wb)<<14>>23|this.b&255){var c=this.f(b),d=this.f(b+1&15);0=a?(d=-72>=a?0:Math.trunc(c/Math.pow(2,-a-36)),c=0):(d=Math.trunc(d/Math.pow(2,-a))+c*Math.pow(2,36+a)%C,c=Math.trunc(c/Math.pow(2,-a)));this.g(b,c);this.g(b+1&15,d)}},M,function(a,b){a=this.f(b);this.g(b,this.f(this.b));this.g(this.b, +a)},function(a,b){for(var c=a=!1,d=this.f(b),e=d/y|0,d=d&x;!a;)if(this.g(d,this.f(e)),(a=d>=this.b)||(e=e+1&x,d=d+1&x,c=!0),a||!this.A.P){c&&this.g(b,e*y+d);a||ud(this,-1);break}},function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a=A&&H(this,this.b)},function(a,b){b&1&&(this.j|=4096);b&2&&td(this,this.Ka/y|0);b&4&&this.Y();b&8&&this.w(a);H(this,this.b)},function(a,b){a=b<<14;this.j&a&&(this.j&=~a,H(this,this.b))},function(){this.O= +this.b},M,function(a,b){a=(this.f(b)+262145)%C;this.g(b,a);a/y|0||(this.j|=262144);this.g(a&Tb,(this.j&x)*y+this.i);this.j&=-8193;H(this,this.b)},function(a,b){a=this.f(b);a+=262145;this.g(a&Tb,this.f(this.b));a>=C&&(a-=C);a/y|0||(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Tb);this.g(this.b,c);this.b==b&&(a=c);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b,a)},function(a,b){a=this.f(b);var c=this.f(a&Tb);a-=262145;0>a&&(a+=C);(a/y|0)==x&&(this.j|=262144);this.g(b, +a);H(this,c&Tb)},function(){this.g(this.b,(this.j&x)*y+this.i);this.j&=-8193;H(this,this.b+1)},function(a,b){this.g(b,(this.j&x)*y+this.i);this.j&=-8193;H(this,this.b)},function(a,b){this.g(this.b,this.f(b));this.g(b,this.b*y+this.i);H(this,this.b+1)},function(a,b){a=this.f(b);this.g(b,this.f(a/y|0));H(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,Q.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,Q.call(this,this.f(b),this.f(this.b)))}, +function(a,b){this.g(this.b,this.g(b,Q.call(this,this.f(b),this.f(this.b))))},function(a,b){this.g(b,De.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(b,De.call(this,this.f(b),this.b))},function(a,b){this.g(this.b,De.call(this,this.f(b),this.f(this.b)))},function(a,b){this.g(this.b,this.g(b,De.call(this,this.f(b),this.f(this.b))))},se,function(a,b){0>Ee(this.f(b),this.b)&&H(this,this.i+1)},function(a,b){Ee(this.f(b),this.b)||H(this,this.i+1)},function(a,b){0>=Ee(this.f(b),this.b)&&H(this, +this.i+1)},function(){H(this,this.i+1)},function(a,b){0<=Ee(this.f(b),this.b)&&H(this,this.i+1)},function(a,b){Ee(this.f(b),this.b)&&H(this,this.i+1)},function(a,b){0Ee(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(a,b){Ee(this.f(b),this.f(this.b))||H(this,this.i+1)},function(a,b){0>=Ee(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(){H(this,this.i+1)},function(a,b){0<=Ee(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(a, +b){Ee(this.f(b),this.f(this.b))&&H(this,this.i+1)},function(a,b){0U(this.f(b))&&H(this,this.b)},function(a,b){U(this.f(b))||H(this,this.b)},function(a,b){0>=U(this.f(b))&&H(this,this.b)},function(){H(this,this.b)},function(a,b){0<=U(this.f(b))&&H(this,this.b)},function(a,b){U(this.f(b))&&H(this,this.b)},function(a,b){0U(a)&& +H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);U(a)||H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0>=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){H(this,this.i+1);b&&this.g(b,this.f(this.b))},function(a,b){a=this.f(this.b);0<=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.f(this.b);0U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));U(a)||H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0>=U(a)&&H(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),1));H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0<=U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),1));0U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));U(a)||H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0>=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));H(this,this.i+1);b&&this.g(b,a)},function(a,b){a= +this.g(this.b,Q.call(this,this.f(this.b),1));0<=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),1));0U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));U(a)||H(this,this.b)},function(a,b){a= +this.g(b,Q.call(this,this.f(b),B));0>=U(a)&&H(this,this.b)},function(a,b){this.g(b,Q.call(this,this.f(b),B));H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0<=U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));U(a)&&H(this,this.b)},function(a,b){a=this.g(b,Q.call(this,this.f(b),B));0U(a)&&H(this, +this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));U(a)||H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0<=U(a)&&H(this,this.i+1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));U(a)&&H(this,this.i+ +1);b&&this.g(b,a)},function(a,b){a=this.g(this.b,Q.call(this,this.f(this.b),B));0>>f.i;0>>= +f.i;0>>a.i;0g&&g>=-A&&(g+=C);for(var g=Math.trunc(Math.abs(g))%C,h=d;f--&&h=na.wb&&c<=na.Rb&&(b=c-(na.wb-na.Nb));b&&(a.preventDefault&&a.preventDefault(),d.gb(b));return!0},c.onkeypress=function(a){a=a||window.event;if(!a.metaKey){var b=a.which||a.keyCode;a.altKey&&b==na.Pb&&(b=na.Ob);d.gb(b);a.preventDefault&&a.preventDefault()}return!0},c.onpaste=function(a){a.stopPropagation&&a.stopPropagation(); +a.preventDefault&&a.preventDefault();(a=a.clipboardData||window.clipboardData)&&d.gb(a.getData("Text"))},c.removeAttribute("readonly"),!0}return!1};m.Ma=function(a,b,c,d){this.H=a;this.G=b;this.v=c;this.D=d;Db(this)}; +m.Lb=function(a){if(!this.b){var b=bd(this.H,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Ea(c[0]);if(d!=this.ab)return;c=Ea(c[1]);if(this.b=sb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.j);if(this.C=e.receiveData){this.j=a;this.status("Connected "+this.bb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};m.Ba=function(a,b){if(!b)if(this.Lb(this.j),!a)this.reset();else if(!this.restore(a))return!1;return!0}; +m.ra=function(a){return a?this.save():!0};m.reset=function(){};m.save=function(){var a=new G(this);a.set(0,[]);return a.data()};m.restore=function(){return!0};m.gb=function(a){if("number"==typeof a)this.i.push(a);else if("string"==typeof a)for(var b=0,c,d=0;da.C&&a.w.length&&(a.C=0);if(0>a.C||b!=a.w[a.C])a.w.splice(0,0,b),a.C=0;a.C--}else a.V?b="end":b=a.w[a.C+1];a=[];if(b){b=b.replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var g=b.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==d&&!e||!g)a.push(Ea(b.substring(c,f))),c=f+1}}return a}function Qe(a,b,c){if(32>=a.L)return b&c;b=X(a,b,0,!0);c=X(a,c,0,!0);return((b/Re|0)&(c/Re|0))*Re+((b&c)>>>0)} +function Se(a,b,c){if(32>=a.L)return b|c;b=X(a,b,0,!0);c=X(a,c,0,!0);return((b/Re|0)^(c/Re|0))*Re+((b^c)>>>0)}Oe.prototype.Ib=function(a,b){return a*b};function X(a,b,c,d){var e=b;c=c||a.L;if(d)if(32==c)e=b>>>0;else if(32>c)e=b&(1<b||b>=a)e=b%a,0>e&&(e+=a)}else 32>=c?e=b<<32-c>>32-c:(a=Math.pow(2,c-1),b>=a?(e=b%a,(b/a|0)&1&&(e-=a)):b<-a&&(e=b%a,((-b-1)/a|0)&1?e&&(e+=a):e||(e-=a)));b!=e&&(b=e);return b} +function Te(a,b,c,d){for(d=void 0===d?-1:d;d--&&c.length;){var e=c.pop();if(2>b.length)return!1;var f,g=b.pop();f=b.pop();switch(e){case "*":f=a.Ib(f,g);break;case "/":if(!g)return!1;f=Math.trunc(f/g);break;case "^/":if(!g)return!1;f%=g;break;case "+":f+=g;break;case "-":f-=g;break;case "<<":f<<=g;break;case ">>":f>>=g;break;case ">>>":f>>>=g;break;case "<":f=f":f=f>g?1:0;break;case ">=":f=f>=g?1:0;break;case "==":f=f==g?1:0;break;case "!=":f=f!=g?1: +0;break;case "&":f=Qe(a,f,g);break;case "!":case "|":e=a;32>=e.L?f|=g:(f=X(e,f,0,!0),g=X(e,g,0,!0),f=(f/Re|0|g/Re|0)*Re+((f|g)>>>0));break;case "^!":f=Se(a,f,g);break;case "&&":f=f&&g?1:0;break;case "||":f=f||g?1:0;break;case ",,":f=X(a,f,18,!0)*Math.pow(2,18)+X(a,g,18,!0);break;case "_":case "^_":"^_"==e&&(g=35-(g&255));g&&(f=X(a,f,0,!0),f=0=|>>>|>>|>|<=|<<|<|-|\+|\^\/|\/|\*|,,| )/);d=Ue(a,b,0,b.length,a.S,c);void 0!==d&&e&&af(a,null,d)}return d} +function We(a,b,c){for(;c;){switch(c&3){case 1:b=-X(a,b);break;case 2:b=Se(a,b,-1);break;case 3:for(var d=35;0<=d&&!Qe(a,b,Math.pow(2,d));)d--;b=35-d}c>>>=2}return b} +function Ve(a,b,c,d,e){e=void 0===e?0:e;var f,g=Array.isArray(d)?d:void 0;if(null!=b){f=a.tb(b);if(0<=f)f=a.ub(f);else if(f=b,a.b[f]?f=a.b[f].value:(f=f.substr(0,6),f=a.b[f]&&a.b[f].value),null!=f){var h=a.b[b]&&a.b[b].Mb;h&&(g?g.push(h):(g=$e(a,h,d),void 0!==g?f+=g:(d||a.u("undefined "+(c||"value")+": "+b+" ("+h+")"),f=void 0)))}else f=oa(b,1=a.L?8:6)+" "+c+".",32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'"));a.u((null!=b?b+": ":"")+d);return e}function bf(a){var b=a.b;a.b={};return b}function cf(a,b){var c=0;if(a.b){if(b)return af(a,b,a.b[b]&&a.b[b].value);b=Object.keys(a.b);b.sort();for(var d=0;d=a?8:262143>=a?18:36);b=pa(b,2,a,"",e);break;case 8:b=wa(b,0>2:0,!!e)}0>c?c=b.replace(/^0+([0-9A-F]+)$/i,"$1"):c=b;return c} +var Ye={"||":5,"&&":6,"!":7,"|":7,"^!":8,"&":9,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,_:19,"^_":19,"{":20,"}":20},Xe={",,":1,"||":5,"&&":6,"!=":10,"==":10,">=":11,">":11,"<=":11,"<":11,">>>":12,">>":12,"<<":12,"-":13,"+":13,"^/":14,"/":14,"*":14,"!":15,"|":15,"^!":15,"&":15,_:19,"^_":19,"{":20,"}":20},Re=Math.pow(2,32); +function df(a){Oe.call(this,a);this.Ja=!1;this.Ga=18;this.L=36;this.T=["<",">"];this.ta=[];this.Ia=Y();this.M=Y(0);this.oa=Y(0);this.ha=Y(0);this.I=[];this.i=this.N=this.K=[];ef(this);this.W=this.pa=0;this.j=[];this.Ca=void 0;ff(this);this.D=this;this.va={};this.ca=this.Eb=0;this.Z=null;this.R=[];gf(this,a.messages);this.ua=a.commands;this.Ha=[];this.O=0;this.Oa=this.Da=null;this.F=this.La=this.Ka=this.na=this.xa=0;this.wa=this.ma=this.ga=null;var b=this;window?void 0===window[v]&&(window[v]=function(a){return gd(b, +a)}):void 0===global[v]&&(global[v]=function(a){return gd(b,a)})}la(df,Oe);function hf(a){a=a&&a.B;null==a&&(a=-1);return a}function Y(a,b,c){return{B:void 0===a?null:a,eb:void 0===b?!1:b,qa:!1,S:c}}function jf(a,b,c,d){a.B=b;a.eb=c||!1;a.qa=!1;a.S=d}function kf(a){return[a.B,a.eb,a.qa,a.S,a.hb]}function lf(a,b){var c=Y(b[0],b[1],b[2]);c.qa=b[3];b[4]&&(c.zb=Pe(a,c.hb=b[4]));return c}m=df.prototype; +m.Ma=function(a,b,c,d){this.G=b;this.H=a;this.v=c;this.ma=a.j;this.Ga=b.F;(b=bd(a,"messages"))&&gf(this,b);if(a=bd(a,"commands"))this.ua=a;mf(this,function(a){a:{var b=d.G.b,c=a[0],e=a=0,k=b.length;if(c){a=hf(nf(d,c,d.oa));if(-1===a){d.u("invalid address: "+c);break a}e=a>>>d.G.i;k=1}d.u("blockid physical blockaddr used size type");d.u("-------- --------- --------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[e];p.type==c?l++||d.u("..."):(c=p.type,l=Ic[c],p&&d.u(n(p.id,8)+" %"+ +n(e<a&&(a+=C);0>b&&(b+=C);a=Be.call(this.v,a,b,!1,!0);a>=A&&(a-=C);return a}; +function nf(a,b,c){var d,e;c||(c=Y());var f=c.B;if(void 0!==b){a:{var g,f=a.T[0],h=a.T[1];g="("==f||"{"==f||"["==f?"\\":"";for(var k="["==f?"\\":"",k=new RegExp(g+f+"([^"+k+f+k+h+"]+)"+g+h);g=b.match(k);){var l=$e(a,g[1]);if(void 0===l){b=void 0;break a}b=b.replace(f+g[1]+h,null!=l?L(a,l):"undefined")}if(a.ta.length)for(f=a.ta[0],h=a.ta[1],g="("==f||"{"==f||"["==f?"\\":"",k="["==f?"\\":"",k=new RegExp(g+f+"([^"+k+f+k+h+"]+)"+g+h);g=b.match(k);)b=b.replace("["+g[1]+"]","unimplemented");for(;f=b.match(/\$([a-z]+)/i);){h= +null;switch(f[1].toLowerCase()){case "ops":h=0}if(null==h)break;b=b.replace(f[0],h.toString())}}"%"==b.charAt(0)&&(d=!0,b=b.substr(1));var p,f=b,q;if(f.match(/^[a-z_][a-z0-9_]*$/i))for(f=f.toUpperCase(),h=0;ha&&a>=-A&&(a+=C);return Math.trunc(Math.abs(a))%Math.pow(2,void 0===b?36:b)}function qf(a,b){return L(a,b/Ub,18)+" "+L(a,b%Ub,18)} +function gf(a,b){a.D=a;a.ca=a.Eb=536870916;a.Z=null;a.R=[];b=Pe(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in cc){var d;a:if(d=void 0,Array.prototype.indexOf)d=b.indexOf(c,d);else{d=d||0;0>d&&(d+=b.length);0>d&&(d=0);for(var e=b.length;d>23&&a.v.oa==b&&(b=ud(a.v,1)));if(0d&&(d=a.v.f(b)),0<=d&&(jf(a.j[a.W],b),++a.W==a.j.length&&(a.W=0)));return!1} +function Jf(a,b,c,d){var e=Y(b.B),f=a.Na(b,1),g,h,k,l=0,p=f/Zb|0,q;for(q in Kf)if(g=Kf[q][p&q]){h=+q;p>>=6;switch(h){case 32512:k=Lf;l=p&3;break;case 32256:k=Mf;l=p&7;break;case 29248:k=Nf,l=(p&48)>>2|(p&6)>>1}break}k=k&&k[l]||"";"S"==k&&g>Of&&(k="B");k=Pf[g||0]+k;if(g){if(28700==h)h=f/$b&127,l=L(a,h,-1);else for(h=f>>23&15,l=L(a,h,-1),p=0;l&&p>18&15)&&(k+="("+L(a,f, +-1)+")")}else k=Da(k,8)+qf(a,f);f=k;g="";h=L(a,e.B,18)+":";if(-1!==e.B&&-1!==b.B){do if(k=a.Na(e,1),g+=" "+qf(a,k),null==e.B)break;while(e.B!=b.B)}h+=Da(g,16)+f;c&&(h=Da(h,48)+";"+(c||""),h=a.v.A.Ua?h+("cycles="+hd(a.v).toString()+" cs="+n(a.v.Ha)):h+(null!=d?"="+d.toString():""));return h} +function Rf(a,b,c,d,e){var f=-1,g,h;if(b){for(var k=b.toUpperCase(),l=0;lOf&&(J="B");if(k==Pf[h]+J){f=29248!=g?F:(F&3)<<1|(F&12)<<2;f=(D|f<<6)*Zb;break}}if(0<=f)break}if(0<=f)break}!(0>f)||c&&c.match(/^[0-9A-Z$%.?]/i)|| +(c=b+c,b="",f=0)}else c&&(f=g=0);if(0<=f&&c)for(k=c.split(","),2h||127h||15h||262143f&&!e&&a.u("unknown instruction: "+b+" "+c);return f}function ef(a){var b,c;a.i=["bp"];if(a.N)for(b=1;b>>d.i],!1)}a.N=["br"];if(a.K)for(b=1;b>>d.i],!0);a.K=["bw"];a.xa=0;a.pa=0} +m.Sa=function(a,b,c){var d=!0;c||Sf(this,a,b,!1,!0);if(a!=this.i){var e=hf(b);if(-1===e)this.u("invalid address: "+L(this,b.B,18)),d=!1;else{var f=this.G;f.b[e>>>f.i].Sa(e&16383,a==this.K)}}d&&(a.push(b),c?b.qa=!0:(Tf(this,a,a.length-1,"set"),ff(this)));return d};function Sf(a,b,c,d,e){var f=!1;c=hf(c);for(var g=1;g>>d.i],b==a.K));h.qa||ff(a);break}}return f} +function Uf(a,b){for(var c=1;cd;d++){!d||d&3||(c+="\n");var e=a,f=wa(d,2);jf(e.Ia,d);f+="="+L(e,e.Na(e.Ia),36)+" ";c+=f}if(b){b="";for(d=0;d=wf?1:d==tf?23:18)+" "),b+=e;c+="\n"+b}return c}m.Gb=function(a,b){return a[0]>b[0]?1:a[0]>>0,g],q=Fa(p,k,a.Gb);0>q&&p.splice(-(q+1),0,k)}l&&(h.a=l.replace(/''/g,'"'))}a.I.push({yd:b,B:c,Wb:d,aa:e,Bb:f})}function Xf(a,b,c){var d=[],e=hf(b)>>>0;for(b=0;b>>0,h=f.Wb;if(e>=g&&e>>d.i].g(a,b&16383,b);null==f&&(f=b);b>g&&(g=b);e++});e?(b="start address ",null!=c?(H(a.v,c),b+=L(a,c)):b+="unspecified",a.u(e+" words loaded at "+L(a,f)+"-"+L(a,g)+", "+b),ed(a)):a.u("no data")}function Yf(a,b,c,d){var e={},f=a.I[b].Bb,g=0,h=null;0<=c&&c=b[1][0]?b[1]:void 0,e=d?b[2]:b[1],f=nf(a,d,a.ha);if(!e)return a.u("begin assemble at "+L(a,f.B,18)),a.V=!0,K(a.H),!0;var g=e.match(/^(['"]?)(.*?)(\.klm|\.mac|\.html|\.txt|)\1$/i);if(g&&(g[1]||g[3])){f=nf(a,d);if(a.wa)a.u("assembly already in progress");else{var h=g[2]+g[3];g[3]||(c+="s");var k=f.B,l=a.wa=new ag(a);Cg(l,h,k,c,function(b,c){if(!b)try{var d=l.J;null==d&&(d=k);Zf(a,l.U,d)}catch(F){"number"==typeof F?b=F||-1:(a.u(F.message), +b=-1)}b&&a.u("error ("+b+") processing "+(c||h));a.wa=null;b||gd(a)})}return!1}b.shift();b.shift();b.shift();b=Rf(a,e,b.join(""),f.B||0);0<=b&&(a.yb(f,b),a.u(Jf(a,f)));return!0}function Eg(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return cf(a)||a.u("no variables"),!0;if(!c[2])return cf(a,c[1]);if(!c[3])return delete a.b[c[1]],!0;b=$e(a,c[3]);return void 0!==b?(a.b[c[1]]={value:b,Mb:void 0},!0):!1}a.u("invalid assignment:"+b);return!1} +function Fg(a,b,c){var d=null;b=nf(a,b);var e=Xf(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.B-e[1])&&(g=" + "+n(f,4,!0)),f=e[0]+" ("+L(a,e[1],18)+")"+g,c&&a.u(f),d=f);4b){a.u("unknown register: "+f);return}var f=0,h=a.v;switch(b){case sf:H(h, +g);jf(a.M,h.i);break;case vf:td(h,g);break;case wf:f=131072;break;case xf:f=65536;break;case yf:f=32768;break;case zf:f=8192;break;case Af:f=32;break;case Bf:f=262144}f&&(h.j=g?h.j|f:h.j&~f);K(a.H);a.u("updated registers:")}}a.u(Wf(a,e));c&&(jf(a.M,vd(d)),Hf(a,L(a,a.M.B,18)))}}function Gg(a,b){b=Ea(b);var c=b.match(/^(['"])(.*?)\1$/);c?1h[0].indexOf("+"))){var l=h[0]+":";h[2]&&(l+=" "+h[2]);a.u(l)}h[3]&&(g=h[3],f=null);h=a.ha;l=b;h.B=l.B;h.eb=l.eb;h.qa=l.qa;h.S=l.S;a.u(Jf(a,b,g,f));e-=b.B-k;c++}} +function Vf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.u(Ff+b):(a.V&&(a.u("ended assemble at "+L(a,a.ha.B,18)),a.V=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Z=null;if(Cb(a)&&0D||"z"sa.length&&(a.u("note: only "+sa.length+" available"),ga=sa.length);ka-=ga;0>ka&&(null==sa[sa.length-1].B?(ga=ka+ga,ka=0):ka+=sa.length);var Vd=[];"call"==gg&&(Fb=1E5,Vd=["CALL"]);for(void 0!==fg&&a.u(ga+" instructions earlier:");0=sa.length&&(ka=0);a.Ca=ga;ig++;Fb--}}ig||(a.u("no "+hg+"history available"), +a.Ca=void 0)}else{var Qa=0,lg="ds"==lb,Hb=nf(a,ra,a.oa);Ga&&("l"==Ga.charAt(0)?(Ga=Ga.substr(1)||Zh,Qa=Ve(a,Ga)):Qa=nf(a,Ga).B-Hb.B,0>Qa&&(Qa=0),65536Ib?".":String.fromCharCode(Ib)),Mc=Mc-7}Ra&&(Ra+="\n");Ra=lg?Ra+(ta+","):Ra+(ra+": "+ta+(0>ng?" "+Yd:""))}Ra&&a.u(Ra);a.S=ai}}}break;case "e":if("else"==k[0])break;var og,pg,qg=k[0],$d=k[1];"e"==qg||"ew"==qg?(og=a.Na,pg=a.yb):$d=null;if(null==$d)a.u("edit memory commands:"),a.u("\tew [a] [...] edit words at address a");else for(var ae=nf(a,$d,a.oa),be=2;bede;){for(var Sa=null,fi=256;65536>Lb.B>>>0;){ee.B=a.Na(Lb,2);if(null==Lb.B||!fi--)break;if(!(ee.B&1)){for(var gi=a,Nc=ee,tg=null,Mb=Nc.B,ug=Mb,fe=1;6>=fe&&Mb;fe++){if(2Ag)a.u("step commands:"),a.u("\tp\tstep over instruction"),a.u("\tpr\tstep over instruction with register update");else if(a.O)a.u("step in progress");else{var Bg=Y(a.v.i);a.Na(Bg);a.O?(a.Sa(a.i,Bg,!0),Df(a)||(a.H&&ld(a.H),a.O=0)):Hg(a,Ag?"tr":"t")}break;case "r":if("reset"==b){a.H&&a.H.reset();break}Gf(a,k);break;case "s":a:switch(k[1]){case "base":if(k[2]){var ob=+k[2];if(2==ob||8==ob||10==ob||16==ob)a.S=ob;else{a.u("invalid base: "+ +ob);break}}a.u("default base: "+a.S);break;case "cs":var Ob;void 0!==k[3]&&(Ob=+k[3]);switch(k[2]){case "int":a.v.pa=Ob;break;case "start":a.v.Ia=Ob;break;case "stop":a.v.ua=Ob;break;default:a.u("unknown cs option");break a}void 0!==Ob&&dd(a.v);a.u("checksums "+(a.v.A.Ua?"enabled":"disabled"));break;case "sp":void 0!==k[2]&&(id(a.v,+k[2])||a.u("warning: using 1x multiplier, previous target not reached"));a.u("target speed: "+(a.v.ga.toFixed(2)+"Mhz")+" ("+a.v.ha+"x)");break;default:if(k[1]){a.u("unknown option: "+ +k[1]);break}case "?":a.u("debugger options:"),a.u("\tbase #\t\tset default base to #"),a.u("\tcs int #\tset checksum cycle interval to #"),a.u("\tcs start #\tset checksum cycle start count to #"),a.u("\tcs stop #\tset checksum cycle stop count to #"),a.u("\tsp #\t\tset speed multiplier to #")}break;case "t":Hg(a,k[0],k[1]);break;case "u":Hf(a,k[1],k[2],8);break;case "v":if("var"==k[0]){Eg(a,b.substr(3))||(d=!1);break}if("ver"==k[0]){a.u((Sb||"PDP10")+" version 1.35.1 ("+a.v.mb+",RELEASE)");a.u(window? +window.navigator.userAgent:"");break}f=!0;break;case "?":if(k[1]){Gg(a,b.substr(1));break}var ge="commands:",he;for(he in Jg)ge+="\n"+Da(he,9)+Jg[he];wd(a)||(ge+="\nnote: history disabled if no exec breakpoints");a.u(ge);break;default:f=!0}f&&(a.u("unknown command: "+b),d=!1)}}catch(Dg){a.u("Debugger "+(Dg.stack||Dg.message)),d=!1}return d}function gd(a,b,c){null!=b&&(a.Ha=Pe(a,b,c));for(;b=a.Ha.shift();)if(!Vf(a,b))return!1;return!0} +var Jg={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory","g [#]":"go [to #]",h:"halt","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble","var":"assign variable",ver:"print version"},Of=20,Pf=".WORD HLL HLLZ HLLO HLLE HRL HRLZ HRLO HRLE HRR HRRZ HRRO HRRE HLR HLRZ HLRO HLRE MOVE MOVS MOVN MOVM EXCH BLT PUSH POP LDB DPB IBP ILDB IDPB SETZ SETO SETA SETCA SETM SETCM AND ANDCA ANDCM ANDCB IOR ORCA ORCM ORCB XOR EQV LSH LSHC ROT ROTC ADD SUB MUL IMUL DIV IDIV ASH ASHC FSC FADR FSBR FMPR FDVR DFN UFA FAD FSB FMP FDV AOBJP AOBJN CAI CAM JUMP SKIP AOJ AOS SOJ SOS TR TL TD TS XCT JFFO JFCL JSR JSP JRST JSA JRA PUSHJ POPJ BLKI DATAI BLKO DATAO CONO CONI CONSZ CONSO UUO JOV JCRY0 JCRY1 JCRY JFOV HALT JRSTF JEN".split(" "), +sf=0,tf=1,uf=2,vf=3,wf=4,xf=5,yf=6,zf=7,Af=8,Bf=9,rf="PC RA EA PS OV C0 C1 BI ND PD".split(" "),Kg={},Kf=(Kg[28672]={0:101},Kg[32704]={5632:64,5696:63,5760:58,5824:27,5888:28,5952:25,6016:29,6080:26,10240:56,10304:48,10368:46,10432:84,10496:57,10560:49,10624:47,10752:21,10816:22,10880:69,10944:70,11008:88,11072:85,11136:83,11264:91,11328:23,11392:24,11456:92,11520:86,11584:87,11648:89,11712:90},Kg[32512]={6144:65,6400:59,6656:66,6912:60,7168:67,7424:61,7680:68,7936:62,8192:17,8448:18,8704:19,8960:Of, +9216:53,9472:52,9728:55,9984:54,11776:50,12032:51,16384:30,16640:36,16896:37,17152:34,17408:38,17664:32,17920:44,18176:40,18432:39,18688:45,18944:33,19200:41,19456:35,19712:42,19968:43,20224:31,20480:1,20736:5,20992:2,21248:6,21504:3,21760:7,22016:4,22272:8,22528:9,22784:13,23040:10,23296:14,23552:11,23808:15,24064:12,24320:16},Kg[32256]={12288:71,12800:72,13312:73,13824:74,14336:75,14848:76,15360:77,15872:78},Kg[29248]={24576:79,24640:80,25088:81,25152:82},Kg[28700]={28672:93,28676:94,28680:95,28684:96, +28688:97,28692:98,28696:99,28700:100},Kg),Lf=["","I","M","S"],Mf=" L E LE A GE N G".split(" "),Nf="N NE NA NN Z ZE ZA ZN C CE CA CN O OE OA ON".split(" "),Qf=[{0:85,8:102,4:103,2:104,6:105,1:106},{0:88,4:107,2:108,10:109}],Cf=1E3,Ff=">> ";$a(function(){for(var a=w(document,v,"debugger"),b=0;bb.indexOf(":")&&0<=".MAC.KLM".indexOf(b.slice(-4).toUpperCase())&&(b+=".txt");Ja(b,null,!0,function(b,d,e){if(e)a.done&&a.done(e,b);else{e=d;if(Aa(b,".html")){e="";var c;for(b=/
    ([\s\S]*?)<\/pre>/gi;c=b.exec(d);)c=c[1],0<=c.indexOf("&")&&(c=c.replace(/</gi,"<").replace(/>/gi,">").replace(/&/gi,"&")),e+=c;(c=e.match(/&[a-z]+;/i))&&Og(a,"unrecognized HTML entity '"+c[0]+"'")}d=e.split(/(\r?\n)/);
    +if(d.length&1){if(c=d.pop())Og(a,"unexpected line '"+c+"'"),d.push(c),d.push("")}else Og(a,"unexpected number of lines ("+d.length+")");a.D=a.D.concat(d);a.N[a.R]=d.length>>1;a.R++;setTimeout(function(){Ng(a)},0)}})}}
    +function Mg(a){if(0<=a.W.indexOf("p"))a.u(a.D.join(""));else{var b=bf(a.b);Pg(a,"APR",0);Pg(a,"PI",4);try{for(var c=0;ca.W.indexOf("d")&&(a.b.b=b)}}
    +function Rg(a,b,c,d,e){var f,g;null!=a.w&&(b=Wg(a,b));for(var h=!0,k="";h;){g=b.match(a.ha);if(!g||g[5]&&";"!=g[5].slice(0,1))return a.error("failed to parse line '"+b+"'"),!1;h=!1;k=g[2].toUpperCase();if(k==Xg||k==Yg)c=null;if(c){for(f=0;fF)break;var q=F+1,J=F+l.length,Lc="",qa="";F&&(Lc=b[F-1]).match(/[0-9A-Z$%.]/i)||!(J>=b.length)&&(qa=b[J]).match(/[0-9A-Z$%.]/i)||
    +("'"==Lc&&F--,"'"==qa&&J++,b=b.substr(0,F)+p+b.substr(J),q=F+p.length,h=!0)}}c=null}if(a.i&&(1==a.i&&(f=b.indexOf(a.C),0<=f?(a.i++,b=b.substr(f+1)):a.error("expected "+a.T+" definition in '"+b+"'")),1=I?a.X+=I:a.error("unrecognized BLOCK expression '"+k+"'");break;case lh:k=c;b=g=0;for(c=36;I=mh(a,k);){k=k.substr(I.length).trim();d=I;if(e=I.match(/^\((.*)\)\s*(.*)$/))e[1]&&(g=Ug(a,"^D"+e[1])),d=e[2];if(g){d=d?Ug(a,d):0;if(void 0===d||0>g||36c&&nh(a,b);break;case oh:(k=c)?(a.J=Ug(a,k),void 0===a.J&&a.error("unrecognized END expression '"+k+"'")):a.J=a.la;break;case ph:qh(a,c);break;case rh:Sg(a);break;case sh:a.X=Ug(a,c)||0;break;case th:Tg(a);break;case uh:qh(a,c.replace(",",",,"));break;case vh:case wh:case xh:case yh:case zh:case Ah:case Bh:case Ch:case Dh:case Eh:case Fh:case Gh:case Xg:case Yg:case Hh:case Ih:dh(a,k,g);break;case Jh:k=Kh(a,c);for(I=0;Id.Fa&&Z(a,d.ka);break;case Eh:0>=d.Fa&&Z(a,d.ka);break;case wh:case Fh:case xh:case Ch:d.Fa&&Z(a,d.ka);break;case Xg:case Yg:for(b=0;ba.Ea&&(a.Ea=a.X);a.X=0}function Vh(a){if(a.G.length){var b=a.G[a.G.length-1].name;b&&a.M.push({name:b,U:a.U,ea:a.ea});b=a.G.pop();a.U=b.U;a.ea=b.ea;a.X=b.X;a.Ea=b.Ea;a.G.length||-1==a.Ea||a.error("scope restore error")}else a.error("scope nesting error")}
    +function mh(a,b){var c;c=void 0===c?",":c;for(var d=0,e=!1,f=null,g=0;d"==h&&0>--g){a.error("missing bracket(s) in '"+b+"'");break}}}g?0f&&(g=g.replace(/\.([^0-9]|$)/g,L(a.b,d,-1)+"$1"),f=$e(a.b,g,c),void 0===f&&a.error("unable to parse expression '"+b+"'",e));return f}
    +function ch(a,b){for(var c=0,d="",e=0,f=-1,g=b.length;e=--c){g=e;break}}0>c&&a.error("missing bracket(s) in '"+b+"'");0<=f&&(d=b.substr(f,g-f));return d}function Qg(a,b){b=void 0===b?a.ia:b;for(var c=0;b>a.N[c];)if(b-=a.N[c],cd?c="":(c=b.substr(d+1),b=b.substr(0,d),a.w=null);a.F+=b}if(null==a.w){var d=b=0,e,f,g=a.F.length;a.T==ih&&g++;for(var h=0;h=k&&(k-=32),k=k+32&63);d+=k*Math.pow(2,f);f-=e;b++;0>f&&(nh(a,d),b=0)}b&&nh(a,d)}return c}
    +function dh(a,b,c){var d,e,f,g,h,k;a.C="<";a.O=">";g=h=k=[];if(b==vh){e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\([^)]*\)|)\s*,?\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+" in '"+c+"'"),c;f=e[1];if(e[2]&&","!=e[2]){h=g=Kh(a,e[2],!0);b=[];for(c=0;c");0>l&&(l=h[c].length);b[c]=h[c].substr(d,l-d);h[c]=h[c].substr(0,d)}h=b}d=Xh;b=3}else if(b==Hh){a.C="[";a.O="]";e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*(\[)([\s\S]*)/i);if(!e)return a.error("unrecognized "+
    +b+" in '"+c+"'"),c;f=e[1];d=Th;b=2}else if(b==eh)a.C="[",a.O="]",f="?"+xa(++a.ga,5),a.v[f]&&a.error("literal symbol '"+f+"' redefined"),e=[c[0],c.substr(1)],d=Yh,b=0;else if(b==Xg||b==Yg){a.j||a.error(b+" outside of macro");e=c.match(/([A-Z$%.][0-9A-Z$%.]*)\s*,\s*(<|)([\s\S]*)/i);if(!e)return a.error("unrecognized "+b+" operands '"+c+"'"),c;for(d=0;d=C)&&Og(a,"truncated value "+wa(b)+" at location "+wa(c)+" to "+wa(d));return d}ag.prototype.error=function(a,b){throw Error("error in "+Qg(this,b)+": "+a);};
    +function Og(a,b){a.u("warning in "+Qg(a,void 0)+": "+b)}ag.prototype.u=function(a){this.b?this.b.u(a):console.log(a)};
    +var $g=1,ah=2,bh=4,hh="ASCII",ih="ASCIZ",kh="BLOCK",lh="BYTE",vh="DEFINE",oh="END",ph="EXP",wh="IF1",xh="IFDEF",yh="IFDIF",zh="IFE",Ah="IFG",Bh="IFGE",Ch="IFIDN",Dh="IFL",Eh="IFLE",Fh="IFN",Gh="IFNDEF",Xg="IRP",Yg="IRPC",Lh="LALL",rh="LIT",eh="LITERAL",Mh="LIST",sh="LOC",Nh="NOSYM",Hh="OPDEF",Oh="PAGE",Jh="PURGE",Ih="REPEAT",jh="SIXBIT",Ph="SUBTTL",Qh="TITLE",th="VAR",Rh="XALL",uh="XWD",Sh="XLIST",Xh=-1,Th=-2,Yh=-3,Wh=-4;
    +function ji(a,b,c){t.call(this,"Computer",a,33554432);this.A.ba=!1;this.R=null;ki(this,b);this.N=bd(this,"autoPower",a,6);this.w=0;this.W=+a.busWidth||+a.buswidth;this.L=this.F=this.M=null;this.K=this.V=!1;this.I=this.C=null;this.T=this.O=!1;this.Z=bd(this,"url")||"";(Math.random()+.1).toString(36);this.i=li(this);if(this.v=tb("CPU",this.id)){this.D=tb("Debugger",this.id);this.G=new Bc({id:this.bb+".bus",busWidth:this.W},this.v,this.D);var d,e=rb(this.id);if((this.j=tb("Panel",this.id))&&this.j.za)for(b=
    +0;b\nLicense: GPL version 3 or later ");for(b=0;bmi){if(ni(d,this.L)){this.C=new G(this,"1.35.1",wi);ni(this.C)&&(xi(this,d),a=yi,zi(this.C));this.C.set(ti,Ia());Ai(this.C);var e=this.b&&!this.K;if(a==ui||qb("Click OK to restore the previous "+Sb+" machine state, or CANCEL to reset the machine.")){if(c=si(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?ni(d,g):("error"==f&&"no machine state"!=
    +g?(this.ja("Error: "+g),"unable to verify user"==g&&(Ta(Bi,""),this.i=null)):this.u(f+": "+g),zi(d),ni(d)?(c=si(d),e=!0):c=!1))}e&&qi(this,c?d:null)}else a==yi&&d.clear()}else qi(this);delete this.L;delete this.I}e=rb(this.id);for(f=0;fa[1];a=a[2];this.T=!0;this.A.ba=!0;var d=this.J.power;d&&(d.textContent="Shutdown");this.v&&(Ci(this,this.v,b,c,a),K(this,-2),this.v.fa());this.O&&(xi(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
    +function xi(a,b){if(qb("There may be a problem with your "+Sb+" machine.\n\nTo help us diagnose it, click OK to send this "+Sb+" machine state to http://www.pcjs.org.")){var c=a.Z;a=a.i||"";b=b.toString();var d={};d.app=Sb;d.ver="1.35.1";d.url=c;d.user=a;d.type="bug";d.data=b;Ja("http://www.pcjs.org/api/v1/report",d,!0)}}
    +function Ig(a,b,c){var d,e="none";if(a.w)return null;a.w--;var f=new G(a,"1.35.1"),g=new G(a,"1.35.1",ri),h=Ia();g.set(ti,h);f.set(ti,h);f.set(Di,"1.35.1");f.set(Ei,window?window.location.href:null);f.set(Fi,window?window.navigator.userAgent:"");a.v&&a.v.ra&&(c&&(b&&(a.v.A.fa=a.v.A.P),a.v.Y()),d=a.v.ra(b,c),"object"===typeof d&&f.set(a.v.id,d),c&&(a.v.A.ba=!1,!1===d&&(e=null)));for(var h=rb(a.id),k=0;k=d||30<=(c.kb+=d))&&(e.textContent=c.A.P?c.Z.toFixed(2)+"Mhz":"Stopped",c.kb=0)}if(a.j&&(a=a.j,b=b||0,a.L)){c=a.v.A.P;d=!!(a.v.C&8);if(0>=b||60<=(a.K+=b)){e=a.v.i;if(a.J.PC){var f=a.D&&a.D.S||8,e=e||0,e=8==f?wa(e,void 0):n(e,void 0);a.J.PC.textContent!=e&&(a.J.PC.textContent=e)}a.K=0}-1>b?a.i=a.v.i:0g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g),e?"}"==e.slice(-1)?(e=e.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(e?" parms='"+e+"'":"")+(g?' url="'+g+'"':"")));f||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1PDPjs$2"),
    +a=a.replace(/().*?(<\/xsl:variable>)/,"$1"+d+"$2"));g=null;if("<"==a.charAt(0))try{f||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){g=null,a=q.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ja(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,
    +"");a=a.replace(d[0],g);Ni(a,b,c)}})}else c(a,null)}
    +function Oi(a,b,c,d,e){function f(a){if(void 0===k){var b=h&&w(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=Ba(a))}function g(a){f("Error: "+a);l&&(--Ki||db(!0));l=!1}var h,k,l=!0;Ki++;jb[b]={};try{if(h=document.getElementById(b)){var p;if("object"==typeof resources&&(p=resources.css)){var q=document.head||document.getElementsByTagName("head")[0],D=document.createElement("style");D.type="text/css";D.styleSheet?D.styleSheet.cssText=p:D.appendChild(document.createTextNode(p));q.appendChild(D)}d||
    +(p=a,"pdp"==a.substr(0,3)&&(p="pdpjs"),d="/versions/"+p+"/1.35.1/components.xsl");p=function(e,k){k?Li(d,null,a,null,!1,f,function(a,e){e?(ib(b,d,a),f("Processing "+c+"..."),window.ActiveXObject||"ActiveXObject"in window?(e=k.transformNode(e))?(h.outerHTML=e,--Ki||db(!0)):g("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(a=new XSLTProcessor,a.importStylesheet(e),(e=a.transformToFragment(k,document))?h.parentNode?(h.parentNode.replaceChild(e,h),--Ki||
    +db(!0)):g("invalid machine element: "+b):g("transformToFragment failed")):g("unable to transform XML: unsupported browser")):g(a)}):g(e)};"<"!=c.charAt(0)?Li(c,b,a,e,!0,f,p):Mi(c,null,b,a,e,!1,f,p)}else g("missing machine element: "+b)}catch(F){g(F.message)}return l}window.embedPDP10=function(a,b,c,d){db(!1);return Oi("pdp10",a,b,c,d)};window.embedPDP11=function(a,b,c,d){db(!1);return Oi("pdp11",a,b,c,d)};window.findMachineComponent=function(a,b){return tb(b,a+".machine")};
    +window.processMachineScript=function(a,b){var c=!1;a+=".machine";if("string"==typeof b&&!wb[a]){for(var c=!0,d=wb,e=a,f=b.length,g=[],h=[],k="",l=null,p=0;p  1        G       (Ground)
    + *     TD      2  <->  3        RD      (Received Data)
    + *     RD      3  <->  2        TD      (Transmitted Data)
    + *     RTS     4  <->  5        CTS     (Clear To Send)
    + *     CTS     5  <->  4        RTS     (Request To Send)
    + *     DSR   6+8  <->  20       DTR     (Data Terminal Ready)
    + *     SG      7  <->  7        SG      (Signal Ground)
    + *     DTR    20  <->  6+8      DSR     (Data Set Ready + Carrier Detect)
    + *     RI     22  <->  22       RI      (Ring Indicator)
    + *
    + * TODO: Move these definitions to a more appropriate shared file at some point.
    + */
    +var RS232 = {
    +    RTS: {
    +        PIN:  4,
    +        MASK: 0x00000010
    +    },
    +    CTS: {
    +        PIN:  5,
    +        MASK: 0x00000020
    +    },
    +    DSR: {
    +        PIN:  6,
    +        MASK: 0x00000040
    +    },
    +    CD: {
    +        PIN:  8,
    +        MASK: 0x00000100
    +    },
    +    DTR: {
    +        PIN:  20,
    +        MASK: 0x00100000
    +    },
    +    RI: {
    +        PIN:  22,
    +        MASK: 0x00400000
    +    }
    +};
    +
    +/*
    + * NODE should be true if we're running under NodeJS (eg, command-line), false if not (eg, web browser)
    + */
    +var NODE = false;
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/*
    + * Our "DiskDump API", such as it was, used to look like:
    + *
    + *      http://jsmachines.net/bin/convdisk.php?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img
    + *
    + * To make it (a bit) more "REST-like", the above request now looks like:
    + *
    + *      http://www.pcjs.org/api/v1/dump?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img
    + *
    + * Similarly, our "FileDump API" used to look like:
    + *
    + *      http://jsmachines.net/bin/convrom.php?rom=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json
    + *
    + * and that request now looks like:
    + *
    + *      http://www.pcjs.org/api/v1/dump?file=/devices/pc/rom/5150/1981-04-24/PCBIOS-REV1.rom&format=json
    + *
    + * I don't think it makes sense to avoid "query" parameters, because blending the path of a disk image with the
    + * the rest of the URL would be (a) confusing, and (b) more work to parse.
    + */
    +var DumpAPI = {
    +    ENDPOINT:       "/api/v1/dump",
    +    QUERY: {
    +        DIR:        "dir",      // value is path of a directory (DiskDump only)
    +        DISK:       "disk",     // value is path of a disk image (DiskDump only)
    +        FILE:       "file",     // value is path of a ROM image file (FileDump only)
    +        IMG:        "img",      // alias for DISK
    +        PATH:       "path",     // value is path of a one or more files (DiskDump only)
    +        FORMAT:     "format",   // value is one of FORMAT values below
    +        COMMENTS:   "comments", // value is either "true" or "false"
    +        DECIMAL:    "decimal",  // value is either "true" to force all numbers to decimal, "false" or undefined otherwise
    +        MBHD:       "mbhd",     // value is hard drive size in Mb (formerly "mbsize") (DiskDump only) (DEPRECATED)
    +        SIZE:       "size"      // value is target disk size in Kb (supersedes "mbhd") (DiskDump only)
    +    },
    +    FORMAT: {
    +        JSON:       "json",     // default
    +        JSON_GZ:    "gz",       // gzip is currently used ONLY for compressed JSON
    +        DATA:       "data",     // same as "json", but built without JSON.stringify() (DiskDump only)
    +        HEX:        "hex",      // deprecated
    +        OCTAL:      "octal",    // displays data as octal words
    +        BYTES:      "bytes",    // displays data as hex bytes; normally used only when comments are enabled
    +        WORDS:      "words",    // displays data as hex words; normally used only when comments are enabled
    +        LONGS:      "longs",    // displays data as dwords
    +        IMG:        "img",      // returns the raw disk data (ie, using a Buffer object) (DiskDump only)
    +        ROM:        "rom"       // returns the raw file data (ie, using a Buffer object) (FileDump only)
    +    }
    +};
    +
    +/*
    + * Because we use an overloaded API endpoint (ie, one that's shared with the FileDump module), we must
    + * also provide a list of commands which, when combined with the endpoint, define a unique request.
    + */
    +DumpAPI.asDiskCommands = [DumpAPI.QUERY.DIR, DumpAPI.QUERY.DISK, DumpAPI.QUERY.PATH];
    +DumpAPI.asFileCommands = [DumpAPI.QUERY.FILE];
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2017
    + */
    +
    +var ReportAPI = {
    +    ENDPOINT:       "/api/v1/report",
    +    QUERY: {
    +        APP:        "app",
    +        VER:        "ver",
    +        URL:        "url",
    +        USER:       "user",
    +        TYPE:       "type",
    +        DATA:       "data"
    +    },
    +    TYPE: {
    +        BUG:        "bug"
    +    },
    +    RES: {
    +        OK:         "Thank you"
    +    }
    +};
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/*
    + * Examples of User API requests:
    + *
    + *      web.getHost() + UserAPI.ENDPOINT + '?' + UserAPI.QUERY.REQ + '=' + UserAPI.REQ.VERIFY + '&' + UserAPI.QUERY.USER + '=' + sUser;
    + */
    +var UserAPI = {
    +    ENDPOINT:       "/api/v1/user",
    +    QUERY: {
    +        REQ:        "req",      // specifies a request
    +        USER:       "user",     // specifies a user ID
    +        STATE:      "state",    // specifies a state ID
    +        DATA:       "data"      // specifies state data
    +    },
    +    REQ: {
    +        CREATE:     "create",   // creates a user ID
    +        VERIFY:     "verify",   // requests verification of a user ID
    +        STORE:      "store",    // stores a machine state on the server
    +        LOAD:       "load"      // loads a machine state from the server
    +    },
    +    RES: {
    +        CODE:       "code",
    +        DATA:       "data"
    +    },
    +    CODE: {
    +        OK:         "ok",
    +        FAIL:       "error"
    +    },
    +    FAIL: {
    +        DUPLICATE:  "user already exists",
    +        VERIFY:     "unable to verify user",
    +        BADSTATE:   "invalid state parameter",
    +        NOSTATE:    "no machine state",
    +        BADLOAD:    "unable to load machine state",
    +        BADSTORE:   "unable to save machine state"
    +    }
    +};
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2017
    + */
    +
    +var Keys = {
    +    /*
    +     * Keys and/or key combinations that generate common ASCII codes.
    +     *
    +     * NOTE: If you're looking for a general-purpose ASCII code table, see Str.ASCII in strlib.js;
    +     * if something's missing, that's probably the more appropriate table to add it to.
    +     *
    +     * TODO: The Closure Compiler doesn't inline all references to these values, at least those with
    +     * quoted property names, which is why I've 'unquoted' as many of them as possible.  One solution
    +     * would be to add mnemonics for all of them, not just the non-printable ones (eg, SPACE instead
    +     * of ' ', AMP instead of '&', etc.)
    +     */
    +    ASCII: {
    +          BREAK:  0, CTRL_A:  1, CTRL_B:  2, CTRL_C:  3, CTRL_D:  4, CTRL_E:  5, CTRL_F:  6, CTRL_G:  7,
    +         CTRL_H:  8, CTRL_I:  9, CTRL_J: 10, CTRL_K: 11, CTRL_L: 12, CTRL_M: 13, CTRL_N: 14, CTRL_O: 15,
    +         CTRL_P: 16, CTRL_Q: 17, CTRL_R: 18, CTRL_S: 19, CTRL_T: 20, CTRL_U: 21, CTRL_V: 22, CTRL_W: 23,
    +         CTRL_X: 24, CTRL_Y: 25, CTRL_Z: 26,
    +            ' ': 32,    '!': 33,    '"': 34,    '#': 35,    '$': 36,    '%': 37,    '&': 38,    "'": 39,
    +            '(': 40,    ')': 41,    '*': 42,    '+': 43,    ',': 44,    '-': 45,    '.': 46,    '/': 47,
    +            '0': 48,    '1': 49,    '2': 50,    '3': 51,    '4': 52,    '5': 53,    '6': 54,    '7': 55,
    +            '8': 56,    '9': 57,    ':': 58,    ';': 59,    '<': 60,    '=': 61,    '>': 62,    '?': 63,
    +            '@': 64,     A:  65,     B:  66,     C:  67,     D:  68,     E:  69,     F:  70,     G:  71,
    +             H:  72,     I:  73,     J:  74,     K:  75,     L:  76,     M:  77,     N:  78,     O:  79,
    +             P:  80,     Q:  81,     R:  82,     S:  83,     T:  84,     U:  85,     V:  86,     W:  87,
    +             X:  88,     Y:  89,     Z:  90,    '[': 91,    '\\':92,    ']': 93,    '^': 94,    '_': 95,
    +            '`': 96,     a:  97,     b:  98,     c:  99,     d: 100,     e: 101,     f: 102,     g: 103,
    +             h:  104,    i: 105,     j: 106,     k: 107,     l: 108,     m: 109,     n: 110,     o: 111,
    +             p:  112,    q: 113,     r: 114,     s: 115,     t: 116,     u: 117,     v: 118,     w: 119,
    +             x:  120,    y: 121,     z: 122,    '{':123,    '|':124,    '}':125,    '~':126,   DEL: 127
    +    },
    +    /*
    +     * Browser keyCodes we must pay particular attention to.  For the most part, these are non-alphanumeric
    +     * or function keys, some which may require special treatment (eg, preventDefault() if returning false on
    +     * the initial keyDown event is insufficient).
    +     *
    +     * keyCodes for most common ASCII keys can simply use the appropriate ASCII code above.
    +     *
    +     * Most of these represent non-ASCII keys (eg, the LEFT arrow key), yet for some reason, browsers defined
    +     * them using ASCII codes (eg, the LEFT arrow key uses the ASCII code for '%' or 37).
    +     */
    +    KEYCODE: {
    +        /* 0x08 */ BS:          8,          // BACKSPACE        (ASCII.CTRL_H)
    +        /* 0x09 */ TAB:         9,          // TAB              (ASCII.CTRL_I)
    +        /* 0x0A */ LF:          10,         // LINE FEED        (ASCII.CTRL_J) (TODO: Determine if any key actually generates this)
    +        /* 0x0D */ CR:          13,         // CARRIAGE RETURN  (ASCII.CTRL_M)
    +        /* 0x10 */ SHIFT:       16,
    +        /* 0x11 */ CTRL:        17,
    +        /* 0x12 */ ALT:         18,
    +        /* 0x13 */ PAUSE:       19,         // PAUSE/BREAK
    +        /* 0x14 */ CAPS_LOCK:   20,
    +        /* 0x1B */ ESC:         27,
    +        /* 0x20 */ SPACE:       32,
    +        /* 0x21 */ PGUP:        33,
    +        /* 0x22 */ PGDN:        34,
    +        /* 0x23 */ END:         35,
    +        /* 0x24 */ HOME:        36,
    +        /* 0x25 */ LEFT:        37,
    +        /* 0x26 */ UP:          38,
    +        /* 0x27 */ RIGHT:       39,
    +        /* 0x27 */ FF_QUOTE:    39,
    +        /* 0x28 */ DOWN:        40,
    +        /* 0x2C */ FF_COMMA:    44,
    +        /* 0x2C */ PRTSC:       44,
    +        /* 0x2D */ INS:         45,
    +        /* 0x2E */ DEL:         46,
    +        /* 0x2E */ FF_PERIOD:   46,
    +        /* 0x2F */ FF_SLASH:    47,
    +        /* 0x30 */ ZERO:        48,
    +        /* 0x31 */ ONE:         49,
    +        /* 0x32 */ TWO:         50,
    +        /* 0x33 */ THREE:       51,
    +        /* 0x34 */ FOUR:        52,
    +        /* 0x35 */ FIVE:        53,
    +        /* 0x36 */ SIX:         54,
    +        /* 0x37 */ SEVEN:       55,
    +        /* 0x38 */ EIGHT:       56,
    +        /* 0x39 */ NINE:        57,
    +        /* 0x3B */ FF_SEMI:     59,
    +        /* 0x3D */ FF_EQUALS:   61,
    +        /* 0x5B */ CMD:         91,         // aka WIN
    +        /* 0x5B */ FF_LBRACK:   91,
    +        /* 0x5C */ FF_BSLASH:   92,
    +        /* 0x5D */ RCMD:        93,         // aka MENU
    +        /* 0x5D */ FF_RBRACK:   93,
    +        /* 0x60 */ NUM_0:       96,
    +        /* 0x60 */ NUM_INS:     96,
    +        /* 0x60 */ FF_BQUOTE:   96,
    +        /* 0x61 */ NUM_1:       97,
    +        /* 0x61 */ NUM_END:     97,
    +        /* 0x62 */ NUM_2:       98,
    +        /* 0x62 */ NUM_DOWN:    98,
    +        /* 0x63 */ NUM_3:       99,
    +        /* 0x63 */ NUM_PGDN:    99,
    +        /* 0x64 */ NUM_4:       100,
    +        /* 0x64 */ NUM_LEFT:    100,
    +        /* 0x65 */ NUM_5:       101,
    +        /* 0x65 */ NUM_CENTER:  101,
    +        /* 0x66 */ NUM_6:       102,
    +        /* 0x66 */ NUM_RIGHT:   102,
    +        /* 0x67 */ NUM_7:       103,
    +        /* 0x67 */ NUM_HOME:    103,
    +        /* 0x68 */ NUM_8:       104,
    +        /* 0x68 */ NUM_UP:      104,
    +        /* 0x69 */ NUM_9:       105,
    +        /* 0x69 */ NUM_PGUP:    105,
    +        /* 0x6A */ NUM_MUL:     106,
    +        /* 0x6B */ NUM_ADD:     107,
    +        /* 0x6D */ NUM_SUB:     109,
    +        /* 0x6E */ NUM_DEL:     110,        // aka PERIOD
    +        /* 0x6F */ NUM_DIV:     111,
    +        /* 0x70 */ F1:          112,
    +        /* 0x71 */ F2:          113,
    +        /* 0x72 */ F3:          114,
    +        /* 0x73 */ F4:          115,
    +        /* 0x74 */ F5:          116,
    +        /* 0x75 */ F6:          117,
    +        /* 0x76 */ F7:          118,
    +        /* 0x77 */ F8:          119,
    +        /* 0x78 */ F9:          120,
    +        /* 0x79 */ F10:         121,
    +        /* 0x7A */ F11:         122,
    +        /* 0x7B */ F12:         123,
    +        /* 0x90 */ NUM_LOCK:    144,
    +        /* 0x91 */ SCROLL_LOCK: 145,
    +        /* 0xAD */ FF_DASH:     173,
    +        /* 0xBA */ SEMI:        186,        // Firefox:  59 (FF_SEMI)
    +        /* 0xBB */ EQUALS:      187,        // Firefox:  61 (FF_EQUALS)
    +        /* 0xBC */ COMMA:       188,
    +        /* 0xBD */ DASH:        189,        // Firefox: 173 (FF_DASH)
    +        /* 0xBE */ PERIOD:      190,
    +        /* 0xBF */ SLASH:       191,
    +        /* 0xC0 */ BQUOTE:      192,
    +        /* 0xDB */ LBRACK:      219,
    +        /* 0xDC */ BSLASH:      220,
    +        /* 0xDD */ RBRACK:      221,
    +        /* 0xDE */ QUOTE:       222,
    +        /* 0xE0 */ FF_CMD:      224,        // Firefox only (used for both CMD and RCMD)
    +        //
    +        // The following biases use what I'll call Decimal Coded Binary or DCB (the opposite of BCD),
    +        // where the thousands digit is used to store the sum of "binary" digits 1 and/or 2 and/or 4.
    +        //
    +        // Technically, that makes it DCO (Decimal Coded Octal), but then again, BCD should have really
    +        // been called HCD (Hexadecimal Coded Decimal), so if "they" can take liberties, so can I.
    +        //
    +        // ONDOWN is a bias we add to browser keyCodes that we want to handle on "down" rather than on "press".
    +        //
    +        ONDOWN:                 1000,
    +        //
    +        // ONRIGHT is a bias we add to browser keyCodes that need to check for a "right" location (default is "left")
    +        //
    +        ONRIGHT:                2000,
    +        //
    +        // FAKE is a bias we add to signal these are fake keyCodes corresponding to internal keystroke combinations.
    +        // The actual values are for internal use only and merely need to be unique and used consistently.
    +        //
    +        FAKE:                   4000
    +    },
    +    /*
    +     * The set of values that a browser may store in the 'location' property of a keyboard event object
    +     * which we also support.
    +     */
    +    LOCATION: {
    +        LEFT:                   1,
    +        RIGHT:                  2,
    +        NUMPAD:                 3
    +    }
    +};
    +
    +/*
    + * Check the event object's 'location' property for a non-zero value for the following ONRIGHT keys.
    + */
    +Keys.KEYCODE.NUM_CR = Keys.KEYCODE.CR + Keys.KEYCODE.ONRIGHT;
    +
    +
    +/*
    + * Maps Firefox keyCodes to their more common keyCode counterparts; a number of entries in this table
    + * are no longer valid (if indeed they ever were), so they've been commented out.  It's likely that I
    + * simply extended this table to resolve additional differences in other browsers (ie, Opera), but without
    + * browser-specific checks, it's not safe to perform all the mappings shown below.
    + */
    +Keys.FF_KEYCODES = {};
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_SEMI]   = Keys.KEYCODE.SEMI;           //  59 -> 186
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.KEYCODE.EQUALS;         //  61 -> 187
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_DASH]   = Keys.KEYCODE.DASH;           // 173 -> 189
    +Keys.FF_KEYCODES[Keys.KEYCODE.FF_CMD]    = Keys.KEYCODE.CMD;            // 224 -> 91
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_COMMA]  = Keys.KEYCODE.COMMA;       //  44 -> 188
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_PERIOD] = Keys.KEYCODE.PERIOD;      //  46 -> 190
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_SLASH]  = Keys.KEYCODE.SLASH;       //  47 -> 191
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BQUOTE] = Keys.KEYCODE.BQUOTE;      //  96 -> 192
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_LBRACK  = Keys.KEYCODE.LBRACK;      //  91 -> 219
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_BSLASH] = Keys.KEYCODE.BSLASH;      //  92 -> 220
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_RBRACK] = Keys.KEYCODE.RBRACK;      //  93 -> 221
    +// Keys.FF_KEYCODES[Keys.KEYCODE.FF_QUOTE]  = Keys.KEYCODE.QUOTE;       //  39 -> 222
    +
    +/*
    + * Maps non-ASCII keyCodes to their ASCII counterparts
    + */
    +Keys.NONASCII_KEYCODES = {};
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.FF_DASH] = Keys.ASCII['-'];         // 173 -> 45
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SEMI]    = Keys.ASCII[';'];         // 186 -> 59
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.EQUALS]  = Keys.ASCII['='];         // 187 -> 61
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.DASH]    = Keys.ASCII['-'];         // 189 -> 45
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.COMMA]   = Keys.ASCII[','];         // 188 -> 44
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.PERIOD]  = Keys.ASCII['.'];         // 190 -> 46
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.SLASH]   = Keys.ASCII['/'];         // 191 -> 47
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BQUOTE]  = Keys.ASCII['`'];         // 192 -> 96
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.LBRACK]  = Keys.ASCII['['];         // 219 -> 91
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.BSLASH]  = Keys.ASCII['\\'];        // 220 -> 92
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.RBRACK]  = Keys.ASCII[']'];         // 221 -> 93
    +Keys.NONASCII_KEYCODES[Keys.KEYCODE.QUOTE]   = Keys.ASCII["'"];         // 222 -> 39
    +
    +/*
    + * Maps unshifted keyCodes to their shifted counterparts; to be used when a shift-key is down.
    + * Alphabetic characters are handled in code, since they must also take CAPS_LOCK into consideration.
    + */
    +Keys.SHIFTED_KEYCODES = {};
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['1']]     = Keys.ASCII['!'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['2']]     = Keys.ASCII['@'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['3']]     = Keys.ASCII['#'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['4']]     = Keys.ASCII['$'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['5']]     = Keys.ASCII['%'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['6']]     = Keys.ASCII['^'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['7']]     = Keys.ASCII['&'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['8']]     = Keys.ASCII['*'];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['9']]     = Keys.ASCII['('];
    +Keys.SHIFTED_KEYCODES[Keys.ASCII['0']]     = Keys.ASCII[')'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SEMI]   = Keys.ASCII[':'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.EQUALS] = Keys.ASCII['+'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.COMMA]  = Keys.ASCII['<'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.DASH]   = Keys.ASCII['_'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.PERIOD] = Keys.ASCII['>'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.SLASH]  = Keys.ASCII['?'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BQUOTE] = Keys.ASCII['~'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.LBRACK] = Keys.ASCII['{'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.BSLASH] = Keys.ASCII['|'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.RBRACK] = Keys.ASCII['}'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.QUOTE]  = Keys.ASCII['"'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_DASH]   = Keys.ASCII['_'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_EQUALS] = Keys.ASCII['+'];
    +Keys.SHIFTED_KEYCODES[Keys.KEYCODE.FF_SEMI]   = Keys.ASCII[':'];
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2017
    + */
    +
    +class Str {
    +    /**
    +     * isValidInt(s, base)
    +     *
    +     * The built-in parseInt() function has the annoying feature of returning a partial value (ie,
    +     * up to the point where it encounters an invalid character); eg, parseInt("foo", 16) returns 0xf.
    +     *
    +     * So it's best to use our own Str.parseInt() function, which will in turn use this function to
    +     * validate the entire string.
    +     *
    +     * @param {string} s is the string representation of some number
    +     * @param {number} [base] is the radix to use (default is 10); only 2, 8, 10 and 16 are supported
    +     * @return {boolean} true if valid, false if invalid (or the specified base isn't supported)
    +     */
    +    static isValidInt(s, base)
    +    {
    +        if (!base || base == 10) return s.match(/^-?[0-9]+$/) !== null;
    +        if (base == 16) return s.match(/^-?[0-9a-f]+$/i) !== null;
    +        if (base == 8) return s.match(/^-?[0-7]+$/) !== null;
    +        if (base == 2) return s.match(/^-?[01]+$/) !== null;
    +        return false;
    +    }
    +
    +    /**
    +     * parseInt(s, base)
    +     *
    +     * This is a wrapper around the built-in parseInt() function.  Our wrapper recognizes certain prefixes
    +     * ('$' or "0x" for hex, '#' or "0o" for octal) and suffixes ('.' for decimal, 'h' for hex, 'y' for
    +     * binary), and then calls isValidInt() to ensure we don't convert strings that contain partial values;
    +     * see isValidInt() for details.
    +     *
    +     * The use of multiple prefix/suffix combinations is undefined (although for the record, we process
    +     * prefixes first).  We do NOT support the "0b" prefix to indicate binary UNLESS one or more commas are
    +     * also present (because "0b" is also a valid hex sequence), and we do NOT support a single leading zero
    +     * to indicate octal (because such a number could also be decimal or hex).  Any number of commas are
    +     * allowed; we remove them all before calling the built-in parseInt().
    +     *
    +     * More recently, we've added support for "^D", "^O", and "^B" prefixes to accommodate the base overrides
    +     * that the PDP-10's MACRO-10 assembly language supports (decimal, octal, and binary, respectively).
    +     * If this support turns out to adversely affect other debuggers, then it will have to be "conditionalized".
    +     * Similarly, we've added support for "K", "M", and "G" MACRO-10-style suffixes that add 3, 6, or 9 zeros
    +     * to the value to be parsed, respectively.
    +     *
    +     * @param {string} s is the string representation of some number
    +     * @param {number} [base] is the radix to use (default is 10); can be overridden by prefixes/suffixes
    +     * @return {number|undefined} corresponding value, or undefined if invalid
    +     */
    +    static parseInt(s, base)
    +    {
    +        var value;
    +
    +        if (s) {
    +            if (!base) base = 10;
    +
    +            var ch, chPrefix, chSuffix;
    +            var fCommas = (s.indexOf(',') > 0);
    +            if (fCommas) s = s.replace(/,/g, '');
    +
    +            ch = chPrefix = s.charAt(0);
    +            if (chPrefix == '#') {
    +                base = 8;
    +                chPrefix = '';
    +            }
    +            else if (chPrefix == '$') {
    +                base = 16;
    +                chPrefix = '';
    +            }
    +            if (ch != chPrefix) {
    +                s = s.substr(1);
    +            }
    +            else {
    +                ch = chPrefix = s.substr(0, 2);
    +                if (chPrefix == '0b' && fCommas || chPrefix == '^B') {
    +                    base = 2;
    +                    chPrefix = '';
    +                }
    +                else if (chPrefix == '0o' || chPrefix == '^O') {
    +                    base = 8;
    +                    chPrefix = '';
    +                }
    +                else if (chPrefix == '^D') {
    +                    base = 10;
    +                    chPrefix = '';
    +                }
    +                else if (chPrefix == '0x') {
    +                    base = 16;
    +                    chPrefix = '';
    +                }
    +                if (ch != chPrefix) s = s.substr(2);
    +            }
    +            ch = chSuffix = s.slice(-1);
    +            if (chSuffix == 'Y' || chSuffix == 'y') {
    +                base = 2;
    +                chSuffix = '';
    +            }
    +            else if (chSuffix == '.') {
    +                base = 10;
    +                chSuffix = '';
    +            }
    +            else if (chSuffix == 'H' || chSuffix == 'h') {
    +                base = 16;
    +                chSuffix = '';
    +            }
    +            else if (chSuffix == 'K') {
    +                chSuffix = '000';
    +            }
    +            else if (chSuffix == 'M') {
    +                chSuffix = '000000';
    +            }
    +            else if (chSuffix == 'G') {
    +                chSuffix = '000000000';
    +            }
    +            if (ch != chSuffix) s = s.slice(0, -1) + chSuffix;
    +            /*
    +             * This adds support for the MACRO-10 binary shifting (Bn) suffix, which must be stripped from the
    +             * number before parsing, and then applied to the value after parsing.  If n is omitted, 35 is assumed,
    +             * which is a net shift of zero.  If n < 35, then a left shift of (35 - n) is required; if n > 35, then
    +             * a right shift of -(35 - n) is required.
    +             */
    +            var v, shift = 0;
    +            if (base <= 10) {
    +                var match = s.match(/(-?[0-9]+)B([0-9]*)/);
    +                if (match) {
    +                    s = match[1];
    +                    shift = 35 - ((match[2] || 35) & 0xff);
    +                }
    +            }
    +            if (Str.isValidInt(s, base) && !isNaN(v = parseInt(s, base))) {
    +                /*
    +                 * With the need to support larger (eg, 36-bit) integers, truncating to 32 bits is no longer helpful.
    +                 *
    +                 *      value = v|0;
    +                 */
    +                if (shift) {
    +                    /*
    +                     * Since binary shifting is a logical operation, and since shifting by division only works properly
    +                     * with positive numbers, we must convert a negative value to a positive value, by computing the two's
    +                     * complement.
    +                     */
    +                    if (v < 0) v += Math.pow(2, 36);
    +                    if (shift > 0) {
    +                        v *= Math.pow(2, shift);
    +                    } else {
    +                        v = Math.trunc(v / Math.pow(2, -shift));
    +                    }
    +                }
    +                value = v;
    +            }
    +        }
    +        return value;
    +    }
    +
    +    /**
    +     * toBase(n, radix, cch, sPrefix, nGrouping)
    +     *
    +     * Displays the given number as an unsigned integer using the specified radix and number of digits.
    +     *
    +     * @param {number|null|undefined} n
    +     * @param {number} radix (ie, the base)
    +     * @param {number} cch (the desired number of digits)
    +     * @param {string} [sPrefix] (default is none)
    +     * @param {number} [nGrouping]
    +     * @return {string}
    +     */
    +    static toBase(n, radix, cch, sPrefix = "", nGrouping = 0)
    +    {
    +        /*
    +         * An initial "falsey" check for null takes care of both null and undefined;
    +         * we can't rely entirely on isNaN(), because isNaN(null) returns false, oddly enough.
    +         *
    +         * Alternatively, we could mask and shift n regardless of whether it's null/undefined/NaN,
    +         * since JavaScript coerces such operands to zero, but I think there's "value" in seeing those
    +         * values displayed differently.
    +         */
    +        var s = "";
    +        if (isNaN(n)) {
    +            n = null;
    +        } else if (n != null) {
    +            /*
    +             * Callers that produced an input by dividing by a power of two rather than shifting (in order
    +             * to access more than 32 bits) may produce a fractional result, which ordinarily we would simply
    +             * ignore, but if the integer portion is zero and the sign is negative, we should probably treat
    +             * this value as a sign-extension.
    +             */
    +            if (n < 0 && n > -1) n = -1;
    +            /*
    +             * Negative values should be two's complemented according to the number of digits; for example,
    +             * 12 octal digits implies an upper limit 8^12.
    +             */
    +            if (n < 0) {
    +                n += Math.pow(radix, cch);
    +            }
    +            if (n >= Math.pow(radix, cch)) {
    +                cch = Math.ceil(Math.log(n) / Math.log(radix));
    +            }
    +        }
    +        var g = nGrouping || -1;
    +        while (cch-- > 0) {
    +            if (!g) {
    +                s = ',' + s;
    +                g = nGrouping;
    +            }
    +            if (n == null) {
    +                s = '?' + s;
    +            } else {
    +                var d = n % radix;
    +                d += (d >= 0 && d <= 9? 0x30 : 0x41 - 10);
    +                s = String.fromCharCode(d) + s;
    +                n = Math.trunc(n / radix);
    +            }
    +            g--;
    +        }
    +        return sPrefix + s;
    +    }
    +
    +    /**
    +     * toBin(n, cch, nGrouping)
    +     *
    +     * Converts an integer to binary, with the specified number of digits (up to a maximum of 36).
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of binary digits (0 or undefined for default of either 8, 18, or 36)
    +     * @param {number} [nGrouping]
    +     * @return {string} the binary representation of n
    +     */
    +    static toBin(n, cch, nGrouping)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN2) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 0b11111111) {
    +                cch = 8;
    +            } else if (v <= 0b111111111111111111) {
    +                cch = 18;
    +            } else {
    +                cch = 36;
    +            }
    +        } else if (cch > 36) cch = 36;
    +        return Str.toBase(n, 2, cch, "", nGrouping);
    +    }
    +
    +    /**
    +     * toBinBytes(n, cb, fPrefix)
    +     *
    +     * Converts an integer to binary, with the specified number of bytes (up to the default of 4).
    +     *
    +     * @param {number|null|undefined} n (interpreted as a 32-bit value)
    +     * @param {number} [cb] is the desired number of binary bytes (4 is both the default and the maximum)
    +     * @param {boolean} [fPrefix]
    +     * @return {string} the binary representation of n
    +     */
    +    static toBinBytes(n, cb, fPrefix)
    +    {
    +        var s = "";
    +        if (!cb || cb > 4) cb = 4;
    +        for (var i = 0; i < cb; i++) {
    +            if (s) s = ',' + s;
    +            s = Str.toBin(n & 0xff, 8) + s;
    +            n >>= 8;
    +        }
    +        return (fPrefix? "0b" : "") + s;
    +    }
    +
    +    /**
    +     * toOct(n, cch, fPrefix)
    +     *
    +     * Converts an integer to octal, with the specified number of digits (default of 6; max of 12)
    +     *
    +     * You might be tempted to use the built-in n.toString(8) instead, but it doesn't zero-pad and it
    +     * doesn't properly convert negative values.  Moreover, if n is undefined, n.toString() will throw
    +     * an exception, whereas this function will return '?' characters.
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of octal digits (0 or undefined for default of either 6, 8, or 12)
    +     * @param {boolean} [fPrefix]
    +     * @return {string} the octal representation of n
    +     */
    +    static toOct(n, cch, fPrefix)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(8)) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 0o777777) {
    +                cch = 6;
    +            } else if (v <= 0o77777777) {
    +                cch = 8;
    +            } else {
    +                cch = 12;
    +            }
    +        } else if (cch > 12) cch = 12;
    +        return Str.toBase(n, 8, cch, fPrefix? "0o" : "");
    +    }
    +
    +    /**
    +     * toDec(n, cch)
    +     *
    +     * Converts an integer to decimal, with the specified number of digits (default of 5; max of 11)
    +     *
    +     * You might be tempted to use the built-in n.toString(10) instead, but it doesn't zero-pad and it
    +     * doesn't properly convert negative values.  Moreover, if n is undefined, n.toString() will throw
    +     * an exception, whereas this function will return '?' characters.
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of decimal digits (0 or undefined for default of either 5 or 11)
    +     * @return {string} the decimal representation of n
    +     */
    +    static toDec(n, cch)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.LN10) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 99999) {
    +                cch = 5;
    +            } else {
    +                cch = 11;
    +            }
    +        } else if (cch > 11) cch = 11;
    +        return Str.toBase(n, 10, cch);
    +    }
    +
    +    /**
    +     * toHex(n, cch, fPrefix)
    +     *
    +     * Converts an integer to hex, with the specified number of digits (default of 4 or 8, max of 9).
    +     *
    +     * You might be tempted to use the built-in n.toString(16) instead, but it doesn't zero-pad and it
    +     * doesn't properly convert negative values; for example, if n is -2147483647, then n.toString(16)
    +     * will return "-7fffffff" instead of "80000001".  Moreover, if n is undefined, n.toString() will
    +     * throw an exception, whereas this function will return '?' characters.
    +     *
    +     * NOTE: The following work-around (adapted from code found on StackOverflow) would be another solution,
    +     * taking care of negative values, zero-padding, and upper-casing, but not null/undefined/NaN values:
    +     *
    +     *      s = (n < 0? n + 0x100000000 : n).toString(16);
    +     *      s = "00000000".substr(0, 8 - s.length) + s;
    +     *      s = s.substr(0, cch).toUpperCase();
    +     *
    +     * @param {number|null|undefined} n (supports integers up to 36 bits now)
    +     * @param {number} [cch] is the desired number of hex digits (0 or undefined for default of either 4, 8, or 9)
    +     * @param {boolean} [fPrefix]
    +     * @return {string} the hex representation of n
    +     */
    +    static toHex(n, cch, fPrefix)
    +    {
    +        if (!cch) {
    +            // cch = Math.ceil(Math.log(Math.abs(n) + 1) / Math.log(16)) || 1;
    +            var v = Math.abs(n);
    +            if (v <= 0xffff) {
    +                cch = 4;
    +            } else if (v <= 0xffffffff) {
    +                cch = 8;
    +            } else {
    +                cch = 9;
    +            }
    +        } else if (cch > 9) cch = 9;
    +        return Str.toBase(n, 16, cch, fPrefix? "0x" : "");
    +    }
    +
    +    /**
    +     * toHexByte(b)
    +     *
    +     * Alias for Str.toHex(b, 2, true)
    +     *
    +     * @param {number|null|undefined} b is a byte value
    +     * @return {string} the hex representation of b
    +     */
    +    static toHexByte(b)
    +    {
    +        return Str.toHex(b, 2, true);
    +    }
    +
    +    /**
    +     * toHexWord(w)
    +     *
    +     * Alias for Str.toHex(w, 4, true)
    +     *
    +     * @param {number|null|undefined} w is a word (16-bit) value
    +     * @return {string} the hex representation of w
    +     */
    +    static toHexWord(w)
    +    {
    +        return Str.toHex(w, 4, true);
    +    }
    +
    +    /**
    +     * toHexLong(l)
    +     *
    +     * Alias for Str.toHex(l, 8, true)
    +     *
    +     * @param {number|null|undefined} l is a dword (32-bit) value
    +     * @return {string} the hex representation of w
    +     */
    +    static toHexLong(l)
    +    {
    +        return Str.toHex(l, 8, true);
    +    }
    +
    +    /**
    +     * getBaseName(sFileName, fStripExt)
    +     *
    +     * This is a poor-man's version of Node's path.basename(), which Node-only components should use instead.
    +     *
    +     * Note that if fStripExt is true, this strips ANY extension, whereas path.basename() strips the extension only
    +     * if it matches the second parameter (eg, path.basename("/foo/bar/baz/asdf/quux.html", ".html") returns "quux").
    +     *
    +     * @param {string} sFileName
    +     * @param {boolean} [fStripExt]
    +     * @return {string}
    +     */
    +    static getBaseName(sFileName, fStripExt)
    +    {
    +        var sBaseName = sFileName;
    +
    +        var i = sFileName.lastIndexOf('/');
    +        if (i >= 0) sBaseName = sFileName.substr(i + 1);
    +
    +        /*
    +         * This next bit is a kludge to clean up names that are part of a URL that includes unsightly query parameters.
    +         */
    +        i = sBaseName.indexOf('&');
    +        if (i > 0) sBaseName = sBaseName.substr(0, i);
    +
    +        if (fStripExt) {
    +            i = sBaseName.lastIndexOf(".");
    +            if (i > 0) {
    +                sBaseName = sBaseName.substring(0, i);
    +            }
    +        }
    +        return sBaseName;
    +    }
    +
    +    /**
    +     * getExtension(sFileName)
    +     *
    +     * This is a poor-man's version of Node's path.extname(), which Node-only components should use instead.
    +     *
    +     * Note that we EXCLUDE the period from the returned extension, whereas path.extname() includes it.
    +     *
    +     * @param {string} sFileName
    +     * @return {string} the filename's extension (in lower-case and EXCLUDING the "."), or an empty string
    +     */
    +    static getExtension(sFileName)
    +    {
    +        var sExtension = "";
    +        var i = sFileName.lastIndexOf(".");
    +        if (i >= 0) {
    +            sExtension = sFileName.substr(i + 1).toLowerCase();
    +        }
    +        return sExtension;
    +    }
    +
    +    /**
    +     * endsWith(s, sSuffix)
    +     *
    +     * @param {string} s
    +     * @param {string} sSuffix
    +     * @return {boolean} true if s ends with sSuffix, false if not
    +     */
    +    static endsWith(s, sSuffix)
    +    {
    +        return s.indexOf(sSuffix, s.length - sSuffix.length) !== -1;
    +    }
    +
    +    /**
    +     * escapeHTML(sHTML)
    +     *
    +     * @param {string} sHTML
    +     * @return {string} with HTML entities "escaped", similar to PHP's htmlspecialchars()
    +     */
    +    static escapeHTML(sHTML)
    +    {
    +        return sHTML.replace(/[&<>"']/g, function(m)
    +        {
    +            return Str.aHTMLEscapeMap[m];
    +        });
    +    }
    +
    +    /**
    +     * replaceAll(sFind, sReplace, s)
    +     *
    +     * @param {string} sFind
    +     * @param {string} sReplace
    +     * @param {string} s
    +     * @return {string}
    +     */
    +    static replaceAll(sFind, sReplace, s)
    +    {
    +        var a = {};
    +        a[sFind] = sReplace;
    +        return Str.replaceArray(a, s);
    +    }
    +
    +    /**
    +     * replaceArray(a, s)
    +     *
    +     * @param {Object} a
    +     * @param {string} s
    +     * @return {string}
    +     */
    +    static replaceArray(a, s)
    +    {
    +        var sMatch = "";
    +        for (var k in a) {
    +            /*
    +             * As noted in:
    +             *
    +             *      http://www.regexguru.com/2008/04/escape-characters-only-when-necessary/
    +             *
    +             * inside character classes, only backslash, caret, hyphen and the closing bracket need to be
    +             * escaped.  And in fact, if you ensure that the closing bracket is first, the caret is not first,
    +             * and the hyphen is last, you can avoid escaping those as well.
    +             */
    +            k = k.replace(/([\\[\]*{}().+?])/g, "\\$1");
    +            sMatch += (sMatch? '|' : '') + k;
    +        }
    +        return s.replace(new RegExp('(' + sMatch + ')', "g"), function(m)
    +        {
    +            return a[m];
    +        });
    +    }
    +
    +    /**
    +     * pad(s, cch, fPadLeft)
    +     *
    +     * NOTE: the maximum amount of padding currently supported is 40 spaces.
    +     *
    +     * @param {string} s is a string
    +     * @param {number} cch is desired length
    +     * @param {boolean} [fPadLeft] (default is padding on the right)
    +     * @return {string} the original string (s) with spaces padding it to the specified length
    +     */
    +    static pad(s, cch, fPadLeft)
    +    {
    +        var sPadding = "                                        ";
    +        return fPadLeft? (sPadding + s).slice(-cch) : (s + sPadding).slice(0, cch);
    +    }
    +
    +    /**
    +     * stripLeadingZeros(s, fPad)
    +     *
    +     * @param {string} s
    +     * @param {boolean} [fPad]
    +     * @return {string}
    +     */
    +    static stripLeadingZeros(s, fPad)
    +    {
    +        var cch = s.length;
    +        s = s.replace(/^0+([0-9A-F]+)$/i, "$1");
    +        if (fPad) s = Str.pad(s, cch, true);
    +        return s;
    +    }
    +
    +    /**
    +     * trim(s)
    +     *
    +     * @param {string} s
    +     * @return {string}
    +     */
    +    static trim(s)
    +    {
    +        if (String.prototype.trim) {
    +            return s.trim();
    +        }
    +        return s.replace(/^\s+|\s+$/g, "");
    +    }
    +
    +    /**
    +     * toASCIICode(b)
    +     *
    +     * @param {number} b
    +     * @return {string}
    +     */
    +    static toASCIICode(b)
    +    {
    +        var s;
    +        if (b != Str.ASCII.CR && b != Str.ASCII.LF) {
    +            s = Str.aASCIICodes[b];
    +        }
    +        if (s) {
    +            s = '<' + s + '>';
    +        } else {
    +            s = String.fromCharCode(b);
    +        }
    +        return s;
    +    }
    +}
    +
    +Str.aHTMLEscapeMap = {
    +    '&': '&',
    +    '<': '<',
    +    '>': '>',
    +    '"': '"',
    +    "'": '''
    +};
    +
    +/*
    + * Future home of a general-purpose ASCII table.  TODO: Flesh it out.
    + */
    +Str.ASCII = {
    +    LF:     0x0A,
    +    CR:     0x0D
    +};
    +
    +/*
    + * Table for converting "unprintable" ASCII codes into mnemonics, to more clearly see what's being printed.
    + */
    +Str.aASCIICodes = {
    +    0x00:   "NUL",
    +    0x01:   "SOH",      // (CTRL_A) Start of Heading
    +    0x02:   "STX",      // (CTRL_B) Start of Text
    +    0x03:   "ETX",      // (CTRL_C) End of Text
    +    0x04:   "EOT",      // (CTRL_D) End of Transmission
    +    0x05:   "ENQ",      // (CTRL_E) Enquiry
    +    0x06:   "ACK",      // (CTRL_F) Acknowledge
    +    0x07:   "BEL",      // (CTRL_G) Bell
    +    0x08:   "BS",       // (CTRL_H) Backspace
    +    0x09:   "TAB",      // (CTRL_I) Horizontal Tab
    +    0x0A:   "LF",       // (CTRL_J) Line Feed (New Line)
    +    0x0B:   "VT",       // (CTRL_K) Vertical Tab
    +    0x0C:   "FF",       // (CTRL_L) Form Feed (New Page)
    +    0x0D:   "CR",       // (CTRL_M) Carriage Return
    +    0x0E:   "SO",       // (CTRL_N) Shift Out
    +    0x0F:   "SI",       // (CTRL_O) Shift In
    +    0x10:   "DLE",      // (CTRL_P) Data Link Escape
    +    0x11:   "XON",      // (CTRL_Q) Device Control 1 (aka DC1)
    +    0x12:   "DC2",      // (CTRL_R) Device Control 2
    +    0x13:   "XOFF",     // (CTRL_S) Device Control 3 (aka DC3)
    +    0x14:   "DC4",      // (CTRL_T) Device Control 4
    +    0x15:   "NAK",      // (CTRL_U) Negative Acknowledge
    +    0x16:   "SYN",      // (CTRL_V) Synchronous Idle
    +    0x17:   "ETB",      // (CTRL_W) End of Transmission Block
    +    0x18:   "CAN",      // (CTRL_X) Cancel
    +    0x19:   "EM",       // (CTRL_Y) End of Medium
    +    0x1A:   "SUB",      // (CTRL_Z) Substitute
    +    0x1B:   "ESC",      // Escape
    +    0x1C:   "FS",       // File Separator
    +    0x1D:   "GS",       // Group Separator
    +    0x1E:   "RS",       // Record Separator
    +    0x1F:   "US"        // Unit Separator
    +};
    +
    +Str.TYPES = {
    +    NULL:       0,
    +    BYTE:       1,
    +    WORD:       2,
    +    DWORD:      3,
    +    NUMBER:     4,
    +    STRING:     5,
    +    BOOLEAN:    6,
    +    OBJECT:     7,
    +    ARRAY:      8
    +};
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/**
    + * @typedef {{
    + *  mask:       number,
    + *  shift:      number
    + * }}
    + */
    +var BitField;
    +
    +/**
    + * @typedef {Object.}
    + */
    +var BitFields;
    +
    +class Usr {
    +    /**
    +     * binarySearch(a, v, fnCompare)
    +     *
    +     * @param {Array} a is an array
    +     * @param {number|string|Array|Object} v
    +     * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare]
    +     * @return {number} the index of matching entry if non-negative, otherwise the index of the insertion point
    +     */
    +    static binarySearch(a, v, fnCompare)
    +    {
    +        var left = 0;
    +        var right = a.length;
    +        var found = 0;
    +        if (fnCompare === undefined) {
    +            fnCompare = function(a, b)
    +            {
    +                return a > b ? 1 : a < b ? -1 : 0;
    +            };
    +        }
    +        while (left < right) {
    +            var middle = (left + right) >> 1;
    +            var compareResult;
    +            compareResult = fnCompare(v, a[middle]);
    +            if (compareResult > 0) {
    +                left = middle + 1;
    +            } else {
    +                right = middle;
    +                found = !compareResult;
    +            }
    +        }
    +        return found ? left : ~left;
    +    }
    +
    +    /**
    +     * binaryInsert(a, v, fnCompare)
    +     *
    +     * If element v already exists in array a, the array is unchanged (we don't allow duplicates); otherwise, the
    +     * element is inserted into the array at the appropriate index.
    +     *
    +     * @param {Array} a is an array
    +     * @param {number|string|Array|Object} v is the value to insert
    +     * @param {function((number|string|Array|Object), (number|string|Array|Object))} [fnCompare]
    +     */
    +    static binaryInsert(a, v, fnCompare)
    +    {
    +        var index = Usr.binarySearch(a, v, fnCompare);
    +        if (index < 0) {
    +            a.splice(-(index + 1), 0, v);
    +        }
    +    }
    +
    +    /**
    +     * getTimestamp()
    +     *
    +     * @return {string} timestamp containing the current date and time ("yyyy-mm-dd hh:mm:ss")
    +     */
    +    static getTimestamp()
    +    {
    +        var date = new Date();
    +        var padNum = function(n)
    +        {
    +            return (n < 10 ? "0" : "") + n;
    +        };
    +        return date.getFullYear() + "-" + padNum(date.getMonth() + 1) + "-" + padNum(date.getDate()) + " " + padNum(date.getHours()) + ":" + padNum(date.getMinutes()) + ":" + padNum(date.getSeconds());
    +    }
    +
    +    /**
    +     * getMonthDays(nMonth, nYear)
    +     *
    +     * Note that if we're being called on behalf of the RTC, its year is always truncated to two digits (mod 100),
    +     * so we have no idea what century the year 0 might refer to.  When using the normal leap-year formula, 0 fails
    +     * the mod 100 test but passes the mod 400 test, so as far as the RTC is concerned, every century year is a leap
    +     * year.  Since we're most likely dealing with the year 2000, that's fine, since 2000 was also a leap year.
    +     *
    +     * TODO: There IS a separate CMOS byte that's supposed to be set to CMOS_ADDR.CENTURY_DATE; it's always BCD,
    +     * so theoretically it will contain values like 0x19 or 0x20 (for the 20th and 21st centuries, respectively), and
    +     * we could add that as another parameter to this function, to improve the accuracy, but that would go beyond what
    +     * a real RTC actually does.
    +     *
    +     * @param {number} nMonth (1-12)
    +     * @param {number} nYear (normally a 4-digit year, but it may also be mod 100)
    +     * @return {number} the maximum (1-based) day allowed for the specified month and year
    +     */
    +    static getMonthDays(nMonth, nYear)
    +    {
    +        var nDays = Usr.aMonthDays[nMonth - 1];
    +        if (nDays == 28) {
    +            if ((nYear % 4) === 0 && ((nYear % 100) || (nYear % 400) === 0)) {
    +                nDays++;
    +            }
    +        }
    +        return nDays;
    +    }
    +
    +    /**
    +     * formatDate(sFormat, date)
    +     *
    +     * @param {string} sFormat (eg, "F j, Y", "Y-m-d H:i:s")
    +     * @param {Date} [date] (default is the current time)
    +     * @return {string}
    +     *
    +     * Supported identifiers in sFormat include:
    +     *
    +     *      a:  lowercase ante meridiem and post meridiem (am or pm)
    +     *      d:  day of the month, 2 digits with leading zeros (01,...,31)
    +     *      g:  hour in 12-hour format, without leading zeros (1,...,12)
    +     *      i:  minutes, with leading zeros (00,...,59)
    +     *      j:  day of the month, without leading zeros (1,...,31)
    +     *      l:  day of the week ("Sunday",...,"Saturday")
    +     *      m:  month, with leading zeros (01,...,12)
    +     *      s:  seconds, with leading zeros (00,...,59)
    +     *      F:  month ("January",...,"December")
    +     *      H:  hour in 24-hour format, with leading zeros (00,...,23)
    +     *      Y:  year (eg, 2014)
    +     *
    +     * For more inspiration, see: http://php.net/manual/en/function.date.php
    +     */
    +    static formatDate(sFormat, date)
    +    {
    +        var sDate = "";
    +        if (!date) date = new Date();
    +        var iHour = date.getHours();
    +        var iDay = date.getDate();
    +        var iMonth = date.getMonth() + 1;
    +        for (var i = 0; i < sFormat.length; i++) {
    +            var ch;
    +            switch ((ch = sFormat.charAt(i))) {
    +            case 'a':
    +                sDate += (iHour < 12 ? "am" : "pm");
    +                break;
    +            case 'd':
    +                sDate += ('0' + iDay).slice(-2);
    +                break;
    +            case 'g':
    +                sDate += (!iHour ? 12 : (iHour > 12 ? iHour - 12 : iHour));
    +                break;
    +            case 'i':
    +                sDate += ('0' + date.getMinutes()).slice(-2);
    +                break;
    +            case 'j':
    +                sDate += iDay;
    +                break;
    +            case 'l':
    +                sDate += Usr.asDays[date.getDay()];
    +                break;
    +            case 'm':
    +                sDate += ('0' + iMonth).slice(-2);
    +                break;
    +            case 's':
    +                sDate += ('0' + date.getSeconds()).slice(-2);
    +                break;
    +            case 'F':
    +                sDate += Usr.asMonths[iMonth - 1];
    +                break;
    +            case 'H':
    +                sDate += ('0' + iHour).slice(-2);
    +                break;
    +            case 'Y':
    +                sDate += date.getFullYear();
    +                break;
    +            default:
    +                sDate += ch;
    +                break;
    +            }
    +        }
    +        return sDate;
    +    }
    +
    +    /**
    +     * defineBitFields(bfs)
    +     *
    +     * Prepares a bit field definition for use with getBitField() and setBitField(); eg:
    +     *
    +     *      var bfs = Usr.defineBitFields({num:20, count:8, btmod:1, type:3});
    +     *
    +     * The above defines a set of bit fields containing four fields: num (bits 0-19), count (bits 20-27), btmod (bit 28), and type (bits 29-31).
    +     *
    +     *      Usr.setBitField(bfs.num, n, 1);
    +     *
    +     * The above set bit field "bfs.num" in numeric variable "n" to the value 1.
    +     *
    +     * @param {Object} bfs
    +     * @return {BitFields}
    +     */
    +    static defineBitFields(bfs)
    +    {
    +        var bit = 0;
    +        for (var f in bfs) {
    +            var width = bfs[f];
    +            var mask = ((1 << width) - 1) << bit;
    +            bfs[f] = {mask: mask, shift: bit};
    +            bit += width;
    +        }
    +        return bfs;
    +    }
    +
    +    /**
    +     * initBitFields(bfs, ...)
    +     *
    +     * @param {BitFields} bfs
    +     * @param {...number} var_args
    +     * @return {number} a value containing all supplied bit fields
    +     */
    +    static initBitFields(bfs, var_args)
    +    {
    +        var v = 0, i = 1;
    +        for (var f in bfs) {
    +            if (i >= arguments.length) break;
    +            v = Usr.setBitField(bfs[f], v, arguments[i++]);
    +        }
    +        return v;
    +    }
    +
    +    /**
    +     * getBitField(bf, v)
    +     *
    +     * @param {BitField} bf
    +     * @param {number} v is a value containing bit fields
    +     * @return {number} the value of the bit field in v defined by bf
    +     */
    +    static getBitField(bf, v)
    +    {
    +        return (v & bf.mask) >> bf.shift;
    +    }
    +
    +    /**
    +     * setBitField(bf, v, n)
    +     *
    +     * @param {BitField} bf
    +     * @param {number} v is a value containing bit fields
    +     * @param {number} n is a value to store in v in the bit field defined by bf
    +     * @return {number} updated v
    +     */
    +    static setBitField(bf, v, n)
    +    {
    +        return (v & ~bf.mask) | ((n << bf.shift) & bf.mask);
    +    }
    +
    +    /**
    +     * indexOf(a, t, i)
    +     *
    +     * Use this instead of Array.prototype.indexOf() if you can't be sure the browser supports it.
    +     *
    +     * @param {Array} a
    +     * @param {*} t
    +     * @param {number} [i]
    +     * @returns {number}
    +     */
    +    static indexOf(a, t, i)
    +    {
    +        if (Array.prototype.indexOf) {
    +            return a.indexOf(t, i);
    +        }
    +        i = i || 0;
    +        if (i < 0) i += a.length;
    +        if (i < 0) i = 0;
    +        for (var n = a.length; i < n; i++) {
    +            if (i in a && a[i] === t) return i;
    +        }
    +        return -1;
    +    }
    +}
    +
    +Usr.asDays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    +Usr.asMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
    +Usr.aMonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
    +
    +/**
    + * getTime()
    + *
    + * @return {number} the current time, in milliseconds
    + */
    +Usr.getTime = Date.now || function() { return +new Date(); };
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2017
    + */
    +
    +
    +/*
    + * According to http://www.w3schools.com/jsref/jsref_obj_global.asp, these are the *global* properties
    + * and functions of JavaScript-in-the-Browser:
    + *
    + * Property             Description
    + * ---
    + * Infinity             A numeric value that represents positive/negative infinity
    + * NaN                  "Not-a-Number" value
    + * undefined            Indicates that a variable has not been assigned a value
    + *
    + * Function             Description
    + * ---
    + * decodeURI()          Decodes a URI
    + * decodeURIComponent() Decodes a URI component
    + * encodeURI()          Encodes a URI
    + * encodeURIComponent() Encodes a URI component
    + * escape()             Deprecated in version 1.5. Use encodeURI() or encodeURIComponent() instead
    + * eval()               Evaluates a string and executes it as if it was script code
    + * isFinite()           Determines whether a value is a finite, legal number
    + * isNaN()              Determines whether a value is an illegal number
    + * Number()             Converts an object's value to a number
    + * parseFloat()         Parses a string and returns a floating point number
    + * parseInt()           Parses a string and returns an integer
    + * String()             Converts an object's value to a string
    + * unescape()           Deprecated in version 1.5. Use decodeURI() or decodeURIComponent() instead
    + *
    + * And according to http://www.w3schools.com/jsref/obj_window.asp, these are the properties and functions
    + * of the *window* object.
    + *
    + * Property             Description
    + * ---
    + * closed               Returns a Boolean value indicating whether a window has been closed or not
    + * defaultStatus        Sets or returns the default text in the statusbar of a window
    + * document             Returns the Document object for the window (See Document object)
    + * frames               Returns an array of all the frames (including iframes) in the current window
    + * history              Returns the History object for the window (See History object)
    + * innerHeight          Returns the inner height of a window's content area
    + * innerWidth           Returns the inner width of a window's content area
    + * length               Returns the number of frames (including iframes) in a window
    + * location             Returns the Location object for the window (See Location object)
    + * name                 Sets or returns the name of a window
    + * navigator            Returns the Navigator object for the window (See Navigator object)
    + * opener               Returns a reference to the window that created the window
    + * outerHeight          Returns the outer height of a window, including toolbars/scrollbars
    + * outerWidth           Returns the outer width of a window, including toolbars/scrollbars
    + * pageXOffset          Returns the pixels the current document has been scrolled (horizontally) from the upper left corner of the window
    + * pageYOffset          Returns the pixels the current document has been scrolled (vertically) from the upper left corner of the window
    + * parent               Returns the parent window of the current window
    + * screen               Returns the Screen object for the window (See Screen object)
    + * screenLeft           Returns the x coordinate of the window relative to the screen
    + * screenTop            Returns the y coordinate of the window relative to the screen
    + * screenX              Returns the x coordinate of the window relative to the screen
    + * screenY              Returns the y coordinate of the window relative to the screen
    + * self                 Returns the current window
    + * status               Sets or returns the text in the statusbar of a window
    + * top                  Returns the topmost browser window
    + *
    + * Method               Description
    + * ---
    + * alert()              Displays an alert box with a message and an OK button
    + * atob()               Decodes a base-64 encoded string
    + * blur()               Removes focus from the current window
    + * btoa()               Encodes a string in base-64
    + * clearInterval()      Clears a timer set with setInterval()
    + * clearTimeout()       Clears a timer set with setTimeout()
    + * close()              Closes the current window
    + * confirm()            Displays a dialog box with a message and an OK and a Cancel button
    + * createPopup()        Creates a pop-up window
    + * focus()              Sets focus to the current window
    + * moveBy()             Moves a window relative to its current position
    + * moveTo()             Moves a window to the specified position
    + * open()               Opens a new browser window
    + * print()              Prints the content of the current window
    + * prompt()             Displays a dialog box that prompts the visitor for input
    + * resizeBy()           Resizes the window by the specified pixels
    + * resizeTo()           Resizes the window to the specified width and height
    + * scroll()             This method has been replaced by the scrollTo() method.
    + * scrollBy()           Scrolls the content by the specified number of pixels
    + * scrollTo()           Scrolls the content to the specified coordinates
    + * setInterval()        Calls a function or evaluates an expression at specified intervals (in milliseconds)
    + * setTimeout()         Calls a function or evaluates an expression after a specified number of milliseconds
    + * stop()               Stops the window from loading
    + */
    +
    +class Web {
    +    /**
    +     * log(s, type)
    +     *
    +     * For diagnostic output only.  DEBUG must be true (or "--debug" specified via the command-line)
    +     * for Component.log() to display anything.
    +     *
    +     * @param {string} [s] is the message text
    +     * @param {string} [type] is the message type
    +     */
    +    static log(s, type)
    +    {
    +        Component.log(s, type);
    +    }
    +
    +    /**
    +     * notice(s, fPrintOnly, id)
    +     *
    +     * @param {string} s is the message text
    +     * @param {boolean} [fPrintOnly]
    +     * @param {string} [id] is the caller's ID, if any
    +     */
    +    static notice(s, fPrintOnly, id)
    +    {
    +        Component.notice(s, fPrintOnly, id);
    +    }
    +
    +    /**
    +     * getResource(sURL, dataPost, fAsync, done)
    +     *
    +     * Request the specified resource (sURL), and once the request is complete, notify done().
    +     *
    +     * If fAsync is true, a done() callback should ALWAYS be supplied; otherwise, you'll have no
    +     * idea when the request is complete or what the response was.  done() is passed three parameters:
    +     *
    +     *      done(sURL, sResource, nErrorCode)
    +     *
    +     * If nErrorCode is zero, sResource should contain the requested data; otherwise, an error occurred.
    +     *
    +     * If dataPost is set to a string, that string can be used to control the response format;
    +     * by default, the response format is plain text, but you can specify "bytes" to request arbitrary
    +     * binary data, which should come back as a string of bytes.
    +     *
    +     * TODO: The "bytes" option works by calling overrideMimeType(), which was never a best practice.
    +     * Instead, we should implement supported response types ("text" and "arraybuffer", at a minimum)
    +     * by setting xmlHTTP.responseType to one of those values before calling xmlHTTP.send().
    +     *
    +     * @param {string} sURL
    +     * @param {string|Object|null} [dataPost] for a POST request (default is a GET request)
    +     * @param {boolean} [fAsync] is true for an asynchronous request
    +     * @param {function(string,string,number)} [done]
    +     * @return {Array|null} Array containing [sResource, nErrorCode], or null if no response yet
    +     */
    +    static getResource(sURL, dataPost, fAsync = false, done)
    +    {
    +        var nErrorCode = 0, sResource = null, response = null;
    +
    +        if (typeof resources == 'object' && (sResource = resources[sURL])) {
    +            if (done) done(sURL, sResource, nErrorCode);
    +            return [sResource, nErrorCode];
    +        }
    +        else if (fAsync && typeof resources == 'function') {
    +            resources(sURL, function(sResource, nErrorCode)
    +            {
    +                if (done) done(sURL, sResource, nErrorCode);
    +            });
    +            return response;
    +        }
    +
    +        if (DEBUG) {
    +            /*
    +             * The larger resources we put on archive.pcjs.org should also be available locally...
    +             */
    +            sURL = sURL.replace(/^http:\/\/archive.pcjs.org(\/.*)\/([^\/]*)$/, "$1/archive/$2");
    +        }
    +
    +
    +        var xmlHTTP = (window.XMLHttpRequest? new window.XMLHttpRequest() : new window.ActiveXObject("Microsoft.XMLHTTP"));
    +        if (fAsync) {
    +            xmlHTTP.onreadystatechange = function()
    +            {
    +                if (xmlHTTP.readyState === 4) {
    +                    /*
    +                     * The following line was recommended for WebKit, as a work-around to prevent the handler firing multiple
    +                     * times when debugging.  Unfortunately, that's not the only XMLHttpRequest problem that occurs when
    +                     * debugging, so I think the WebKit problem is deeper than that.  When we have multiple XMLHttpRequests
    +                     * pending, any debugging activity means most of them simply get dropped on floor, so what may actually be
    +                     * happening are mis-notifications rather than redundant notifications.
    +                     *
    +                     *      xmlHTTP.onreadystatechange = undefined;
    +                     */
    +                    sResource = xmlHTTP.responseText;
    +                    /*
    +                     * The normal "success" case is an HTTP status code of 200, but when testing with files loaded
    +                     * from the local file system (ie, when using the "file:" protocol), we have to be a bit more "flexible".
    +                     */
    +                    if (xmlHTTP.status == 200 || !xmlHTTP.status && sResource.length && Web.getHostProtocol() == "file:") {
    +                        if (MAXDEBUG) Web.log("xmlHTTP.onreadystatechange(" + sURL + "): returned " + sResource.length + " bytes");
    +                    }
    +                    else {
    +                        nErrorCode = xmlHTTP.status || -1;
    +                        Web.log("xmlHTTP.onreadystatechange(" + sURL + "): error code " + nErrorCode);
    +                    }
    +                    if (done) done(sURL, sResource, nErrorCode);
    +                }
    +            };
    +        }
    +
    +        if (dataPost && typeof dataPost == "object") {
    +            var sDataPost = "";
    +            for (var p in dataPost) {
    +                if (!dataPost.hasOwnProperty(p)) continue;
    +                if (sDataPost) sDataPost += "&";
    +                sDataPost += p + '=' + encodeURIComponent(dataPost[p]);
    +            }
    +            sDataPost = sDataPost.replace(/%20/g, '+');
    +            if (MAXDEBUG) Web.log("Web.getResource(POST " + sURL + "): " + sDataPost.length + " bytes");
    +            xmlHTTP.open("POST", sURL, fAsync);     // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it)
    +            xmlHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    +            xmlHTTP.send(sDataPost);
    +        } else {
    +            if (MAXDEBUG) Web.log("Web.getResource(GET " + sURL + ")");
    +            xmlHTTP.open("GET", sURL, fAsync);      // ensure that fAsync is a valid boolean (Internet Explorer xmlHTTP functions insist on it)
    +            if (dataPost == "bytes") {
    +                xmlHTTP.overrideMimeType("text/plain; charset=x-user-defined");
    +            }
    +            xmlHTTP.send();
    +        }
    +
    +        if (!fAsync) {
    +            sResource = xmlHTTP.responseText;
    +            if (xmlHTTP.status == 200) {
    +                if (MAXDEBUG) Web.log("Web.getResource(" + sURL + "): returned " + sResource.length + " bytes");
    +            } else {
    +                nErrorCode = xmlHTTP.status || -1;
    +                Web.log("Web.getResource(" + sURL + "): error code " + nErrorCode);
    +            }
    +            if (done) done(sURL, sResource, nErrorCode);
    +            response = [sResource, nErrorCode];
    +        }
    +        return response;
    +    }
    +
    +    /**
    +     * parseMemoryResource(sURL, sData)
    +     *
    +     * This converts a variety of JSON-style data streams into an Object with the following properties:
    +     *
    +     *      aBytes
    +     *      aSymbols
    +     *      addrLoad
    +     *      addrExec
    +     *
    +     * If the source data contains a 'bytes' array, it's passed through to 'aBytes'; alternatively, if
    +     * it contains a 'words' array, the values are converted from 16-bit to 8-bit and stored in 'aBytes',
    +     * and if it contains a 'longs' array, the values are converted from 32-bit longs into bytes and
    +     * stored in 'aBytes'.
    +     *
    +     * Alternatively, if the source data contains a 'data' array, we simply pass that through to the output
    +     * object as:
    +     *
    +     *      aData
    +     *
    +     * @param {string} sURL
    +     * @param {string} sData
    +     * @return {Object|null} (resource)
    +     */
    +    static parseMemoryResource(sURL, sData)
    +    {
    +        var i;
    +        var resource = {
    +            aBytes: null,
    +            aSymbols: null,
    +            addrLoad: null,
    +            addrExec: null
    +        };
    +
    +        if (sData.charAt(0) == "[" || sData.charAt(0) == "{") {
    +            try {
    +                var a, ib, data;
    +
    +                if (sData.substr(0, 1) == "<") {    // if the "data" begins with a "<"...
    +                    /*
    +                     * Early server configs reported an error (via the nErrorCode parameter) if a tape URL was invalid,
    +                     * but more recent server configs now display a somewhat friendlier HTML error page.  The downside,
    +                     * however, is that the original error has been buried, and we've received "data" that isn't actually
    +                     * tape data.  So if the data we've received appears to be "HTML-like", we treat it as an error message.
    +                     */
    +                    throw new Error(sData);
    +                }
    +
    +                /*
    +                 * TODO: IE9 is rather unfriendly and restrictive with regard to how much data it's willing to
    +                 * eval().  In particular, the 10Mb disk image we use for the Windows 1.01 demo config fails in
    +                 * IE9 with an "Out of memory" exception.  One work-around would be to chop the data into chunks
    +                 * (perhaps one track per chunk, using regular expressions) and then manually re-assemble it.
    +                 *
    +                 * However, it turns out that using JSON.parse(sDiskData) instead of eval("(" + sDiskData + ")")
    +                 * is a much easier fix. The only drawback is that we must first quote any unquoted property names
    +                 * and remove any comments, because while eval() was cool with them, JSON.parse() is more particular;
    +                 * the following RegExp replacements take care of those requirements.
    +                 *
    +                 * The use of hex values is something else that eval() was OK with, but JSON.parse() is not, and
    +                 * while I've stopped using hex values in DumpAPI responses (at least when "format=json" is specified),
    +                 * I can't guarantee they won't show up in "legacy" images, and there's no simple RegExp replacement
    +                 * for transforming hex values into decimal values, so I cop out and fall back to eval() if I detect
    +                 * any hex prefixes ("0x") in the sequence.  Ditto for error messages, which appear like so:
    +                 *
    +                 *      ["unrecognized disk path: test.img"]
    +                 */
    +                if (sData.indexOf("0x") < 0 && sData.indexOf("0o") < 0 && sData.substr(0, 2) != '["') {
    +                    data = JSON.parse(sData.replace(/([a-z]+):/gm, '"$1":').replace(/\/\/[^\n]*/gm, ""));
    +                } else {
    +                    data = eval("(" + sData + ")");
    +                }
    +
    +                resource.addrLoad = data['load'];
    +                resource.addrExec = data['exec'];
    +
    +                if (a = data['bytes']) {
    +                    resource.aBytes = a;
    +                }
    +                else if (a = data['words']) {
    +                    /*
    +                     * Convert all words into bytes
    +                     */
    +                    resource.aBytes = new Array(a.length * 2);
    +                    for (i = 0, ib = 0; i < a.length; i++) {
    +                        resource.aBytes[ib++] = a[i] & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 8) & 0xff;
    +
    +                    }
    +                }
    +                else if (a = data['longs']) {
    +                    /*
    +                     * Convert all dwords (longs) into bytes
    +                     */
    +                    resource.aBytes = new Array(a.length * 4);
    +                    for (i = 0, ib = 0; i < a.length; i++) {
    +                        resource.aBytes[ib++] = a[i] & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 8) & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 16) & 0xff;
    +                        resource.aBytes[ib++] = (a[i] >> 24) & 0xff;
    +                    }
    +                }
    +                else if (a = data['data']) {
    +                    resource.aData = a;
    +                }
    +                else {
    +                    resource.aBytes = data;
    +                }
    +
    +                if (resource.aBytes) {
    +                    if (!resource.aBytes.length) {
    +                        Component.error("Empty resource: " + sURL);
    +                        resource = null;
    +                    }
    +                    else if (resource.aBytes.length == 1) {
    +                        Component.error(resource.aBytes[0]);
    +                        resource = null;
    +                    }
    +                }
    +                resource.aSymbols = data['symbols'];
    +
    +            } catch (e) {
    +                Component.error("Resource data error (" + sURL + "): " + e.message);
    +                resource = null;
    +            }
    +        }
    +        else {
    +            /*
    +             * Parse the data manually; we assume it's a series of hex byte-values separated by whitespace.
    +             */
    +            var ab = [];
    +            var sHexData = sData.replace(/\n/gm, " ").replace(/ +$/, "");
    +            var asHexData = sHexData.split(" ");
    +            for (i = 0; i < asHexData.length; i++) {
    +                var n = parseInt(asHexData[i], 16);
    +                if (isNaN(n)) {
    +                    Component.error("Resource data error (" + sURL + "): invalid hex byte (" + asHexData[i] + ")");
    +                    break;
    +                }
    +                ab.push(n & 0xff);
    +            }
    +            if (i == asHexData.length) resource.aBytes = ab;
    +        }
    +        return resource;
    +    }
    +
    +    /**
    +     * sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName)
    +     *
    +     * Send a report (eg, bug report) to the server.
    +     *
    +     * @param {string} sApp (eg, "PCjs")
    +     * @param {string} sVer (eg, "1.02")
    +     * @param {string} sURL (eg, "/devices/pc/machine/5150/mda/64kb/machine.xml")
    +     * @param {string} sUser (ie, the user key, if any)
    +     * @param {string} sType (eg, "bug"); one of ReportAPI.TYPE.*
    +     * @param {string} sReport (eg, unparsed state data)
    +     * @param {string} [sHostName] (default is http://SITEHOST)
    +     */
    +    static sendReport(sApp, sVer, sURL, sUser, sType, sReport, sHostName)
    +    {
    +        var dataPost = {};
    +        dataPost[ReportAPI.QUERY.APP] = sApp;
    +        dataPost[ReportAPI.QUERY.VER] = sVer;
    +        dataPost[ReportAPI.QUERY.URL] = sURL;
    +        dataPost[ReportAPI.QUERY.USER] = sUser;
    +        dataPost[ReportAPI.QUERY.TYPE] = sType;
    +        dataPost[ReportAPI.QUERY.DATA] = sReport;
    +        var sReportURL = (sHostName? sHostName : "http://" + SITEHOST) + ReportAPI.ENDPOINT;
    +        Web.getResource(sReportURL, dataPost, true);
    +    }
    +
    +    /**
    +     * getHost()
    +     *
    +     * @return {string}
    +     */
    +    static getHost()
    +    {
    +        return ("http://" + (window? window.location.host : SITEHOST));
    +    }
    +
    +    /**
    +     * getHostURL()
    +     *
    +     * @return {string|null}
    +     */
    +    static getHostURL()
    +    {
    +        return (window? window.location.href : null);
    +    }
    +
    +    /**
    +     * getHostProtocol()
    +     *
    +     * @return {string}
    +     */
    +    static getHostProtocol()
    +    {
    +        return (window? window.location.protocol : "file:");
    +    }
    +
    +    /**
    +     * getUserAgent()
    +     *
    +     * @return {string}
    +     */
    +    static getUserAgent()
    +    {
    +        return (window? window.navigator.userAgent : "");
    +    }
    +
    +    /**
    +     * hasLocalStorage
    +     *
    +     * true if localStorage support exists, is enabled, and works; false otherwise
    +     *
    +     * @return {boolean}
    +     */
    +    static hasLocalStorage()
    +    {
    +        if (Web.fLocalStorage == null) {
    +            var f = false;
    +            if (window) {
    +                try {
    +                    window.localStorage.setItem(Web.sLocalStorageTest, Web.sLocalStorageTest);
    +                    f = (window.localStorage.getItem(Web.sLocalStorageTest) == Web.sLocalStorageTest);
    +                    window.localStorage.removeItem(Web.sLocalStorageTest);
    +                } catch (e) {
    +                    Web.logLocalStorageError(e);
    +                    f = false;
    +                }
    +            }
    +            Web.fLocalStorage = f;
    +        }
    +        return Web.fLocalStorage;
    +    }
    +
    +    /**
    +     * logLocalStorageError(e)
    +     *
    +     * @param {Error} e is an exception
    +     */
    +    static logLocalStorageError(e)
    +    {
    +        Web.log(e.message, "localStorage error");
    +    }
    +
    +    /**
    +     * getLocalStorageItem(sKey)
    +     *
    +     * Returns the requested key value, or null if the key does not exist, or undefined if localStorage is not available
    +     *
    +     * @param {string} sKey
    +     * @return {string|null|undefined} sValue
    +     */
    +    static getLocalStorageItem(sKey)
    +    {
    +        var sValue;
    +        if (window) {
    +            try {
    +                sValue = window.localStorage.getItem(sKey);
    +            } catch (e) {
    +                Web.logLocalStorageError(e);
    +            }
    +        }
    +        return sValue;
    +    }
    +
    +    /**
    +     * setLocalStorageItem(sKey, sValue)
    +     *
    +     * @param {string} sKey
    +     * @param {string} sValue
    +     * @return {boolean} true if localStorage is available, false if not
    +     */
    +    static setLocalStorageItem(sKey, sValue)
    +    {
    +        try {
    +            window.localStorage.setItem(sKey, sValue);
    +            return true;
    +        } catch (e) {
    +            Web.logLocalStorageError(e);
    +        }
    +        return false;
    +    }
    +
    +    /**
    +     * removeLocalStorageItem(sKey)
    +     *
    +     * @param {string} sKey
    +     */
    +    static removeLocalStorageItem(sKey)
    +    {
    +        try {
    +            window.localStorage.removeItem(sKey);
    +        } catch (e) {
    +            Web.logLocalStorageError(e);
    +        }
    +    }
    +
    +    /**
    +     * getLocalStorageKeys()
    +     *
    +     * @return {Array}
    +     */
    +    static getLocalStorageKeys()
    +    {
    +        var a = [];
    +        try {
    +            for (var i = 0, c = window.localStorage.length; i < c; i++) {
    +                a.push(window.localStorage.key(i));
    +            }
    +        } catch (e) {
    +            Web.logLocalStorageError(e);
    +        }
    +        return a;
    +    }
    +
    +    /**
    +     * reloadPage()
    +     */
    +    static reloadPage()
    +    {
    +        if (window) window.location.reload();
    +    }
    +
    +    /**
    +     * isUserAgent(s)
    +     *
    +     * Check the browser's user-agent string for the given substring; "iOS" and "MSIE" are special values you can
    +     * use that will match any iOS or MSIE browser, respectively (even IE11, in the case of "MSIE").
    +     *
    +     * 2013-11-06: In a questionable move, MSFT changed the user-agent reported by IE11 on Windows 8.1, eliminating
    +     * the "MSIE" string (which MSDN calls a "version token"; see http://msdn.microsoft.com/library/ms537503.aspx);
    +     * they say "public websites should rely on feature detection, rather than browser detection, in order to design
    +     * their sites for browsers that don't support the features used by the website." So, in IE11, we get a user-agent
    +     * that tries to fool apps into thinking the browser is more like WebKit or Gecko:
    +     *
    +     *      Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
    +     *
    +     * That's a nice idea, but in the meantime, they hosed the XSL transform code in embed.js, which contained
    +     * some very critical browser-specific code; turning on IE's "Compatibility Mode" didn't help either, because
    +     * that's a sledgehammer solution which restores the old user-agent string but also disables other features like
    +     * HTML5 canvas support. As an interim solution, I'm treating any "MSIE" check as a check for either "MSIE" or
    +     * "Trident".
    +     *
    +     * UPDATE: I've since found ways to make the code in embed.js more browser-agnostic, so for now, there's isn't
    +     * any code that cares about "MSIE", but I've left the change in place, because I wouldn't be surprised if I'll
    +     * need more IE-specific code in the future, perhaps for things like copy/paste functionality, or mouse capture.
    +     *
    +     * @param {string} s is a substring to search for in the user-agent; as noted above, "iOS" and "MSIE" are special values
    +     * @return {boolean} is true if the string was found, false if not
    +     */
    +    static isUserAgent(s)
    +    {
    +        if (window) {
    +            var userAgent = Web.getUserAgent();
    +            /*
    +             * Here's one case where we have to be careful with Component, because when isUserAgent() is called by
    +             * the init code below, component.js hasn't been loaded yet.  The simple solution for now is to remove the call.
    +             *
    +             *      Web.log("agent: " + userAgent);
    +             *
    +             * And yes, it would be pointless to use the conditional (?) operator below, if not for the Google Closure
    +             * Compiler (v20130823) failing to detect the entire expression as a boolean.
    +             */
    +            return s == "iOS" && !!userAgent.match(/(iPod|iPhone|iPad)/) && !!userAgent.match(/AppleWebKit/) || s == "MSIE" && !!userAgent.match(/(MSIE|Trident)/) || (userAgent.indexOf(s) >= 0);
    +        }
    +        return false;
    +    }
    +
    +    /**
    +     * isMobile()
    +     *
    +     * Check the browser's user-agent string for the substring "Mobi", as per Mozilla recommendation:
    +     *
    +     *      https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent
    +     *
    +     * @return {boolean} is true if the browser appears to be a mobile (ie, non-desktop) web browser, false if not
    +     */
    +    static isMobile()
    +    {
    +        return Web.isUserAgent("Mobi");
    +    }
    +
    +    /**
    +     * getURLParm(sParm)
    +     *
    +     * @param {string} sParm
    +     * @return {string|undefined}
    +     */
    +    static getURLParm(sParm)
    +    {
    +        if (!Web.parmsURL) {
    +            Web.parmsURL = Web.parseURLParms();
    +        }
    +        return Web.parmsURL[sParm];
    +    }
    +
    +    /**
    +     * parseURLParms(sParms)
    +     *
    +     * @param {string} [sParms] containing the parameter portion of a URL (ie, after the '?')
    +     * @return {Object} containing properties for each parameter found
    +     */
    +    static parseURLParms(sParms)
    +    {
    +        var aParms = {};
    +        if (window) {       // an alternative to "if (typeof module === 'undefined')" if require("defines") was used
    +            if (!sParms) {
    +                /*
    +                 * Note that window.location.href returns the entire URL, whereas window.location.search
    +                 * returns only the parameters, if any (starting with the '?', which we skip over with a substr() call).
    +                 */
    +                sParms = window.location.search.substr(1);
    +            }
    +            var match;
    +            var pl = /\+/g; // RegExp for replacing addition symbol with a space
    +            var search = /([^&=]+)=?([^&]*)/g;
    +            var decode = function(s)
    +            {
    +                return decodeURIComponent(s.replace(pl, " "));
    +            };
    +
    +            while ((match = search.exec(sParms))) {
    +                aParms[decode(match[1])] = decode(match[2]);
    +            }
    +        }
    +        return aParms;
    +    }
    +
    +    /**
    +     * downloadFile(sData, sType, fBase64, sFileName)
    +     *
    +     * @param {string} sData
    +     * @param {string} sType
    +     * @param {boolean} [fBase64]
    +     * @param {string} [sFileName]
    +     */
    +    static downloadFile(sData, sType, fBase64, sFileName)
    +    {
    +        var link = null, sAlert;
    +        var sURI = "data:application/" + sType + (fBase64? ";base64" : "") + ",";
    +
    +        if (!Web.isUserAgent("Firefox")) {
    +            sURI += (fBase64? sData : encodeURI(sData));
    +        } else {
    +            sURI += (fBase64? sData : encodeURIComponent(sData));
    +        }
    +        if (sFileName) {
    +            link = document.createElement('a');
    +            if (typeof link.download != 'string') link = null;
    +        }
    +        if (link) {
    +            link.href = sURI;
    +            link.download = sFileName;
    +            document.body.appendChild(link);    // Firefox allegedly requires the link to be in the body
    +            link.click();
    +            document.body.removeChild(link);
    +            sAlert = 'Check your Downloads folder for ' + sFileName + '.';
    +        } else {
    +            window.open(sURI);
    +            sAlert = 'Check your browser for a new window/tab containing the requested data' + (sFileName? (' (' + sFileName + ')') : '') + '.';
    +        }
    +        return sAlert;
    +    }
    +
    +    /**
    +     * onCountRepeat(n, fnRepeat, fnComplete, msDelay)
    +     *
    +     * Call fnRepeat() n times with an msDelay millisecond delay between calls,
    +     * then call fnComplete() when n has been exhausted OR fnRepeat() returns false.
    +     *
    +     * @param {number} n
    +     * @param {function()} fnRepeat
    +     * @param {function()} fnComplete
    +     * @param {number} [msDelay]
    +     */
    +    static onCountRepeat(n, fnRepeat, fnComplete, msDelay)
    +    {
    +        var fnTimeout = function doCountRepeat()
    +        {
    +            n -= 1;
    +            if (n >= 0) {
    +                if (!fnRepeat()) n = 0;
    +            }
    +            if (n > 0) {
    +                setTimeout(fnTimeout, msDelay || 0);
    +                return;
    +            }
    +            fnComplete();
    +        };
    +        fnTimeout();
    +    }
    +
    +    /**
    +     * onClickRepeat(e, msDelay, msRepeat, fn)
    +     *
    +     * Repeatedly call fn() with an initial msDelay, and an msRepeat delay thereafter,
    +     * as long as HTML control Object e has an active "down" event and fn() returns true.
    +     *
    +     * @param {Object} e
    +     * @param {number} msDelay
    +     * @param {number} msRepeat
    +     * @param {function(boolean)} fn is passed false on the first call, true on all repeated calls
    +     */
    +    static onClickRepeat(e, msDelay, msRepeat, fn)
    +    {
    +        var ms = 0, timer = null, fIgnoreMouseEvents = false;
    +
    +        var fnRepeat = function doClickRepeat()
    +        {
    +            if (fn(ms === msRepeat)) {
    +                timer = setTimeout(fnRepeat, ms);
    +                ms = msRepeat;
    +            }
    +        };
    +        e.onmousedown = function()
    +        {
    +            // Web.log("onMouseDown()");
    +            if (!fIgnoreMouseEvents) {
    +                if (!timer) {
    +                    ms = msDelay;
    +                    fnRepeat();
    +                }
    +            }
    +        };
    +        e.ontouchstart = function()
    +        {
    +            // Web.log("onTouchStart()");
    +            if (!timer) {
    +                ms = msDelay;
    +                fnRepeat();
    +            }
    +        };
    +        e.onmouseup = e.onmouseout = function()
    +        {
    +            // Web.log("onMouseUp()/onMouseOut()");
    +            if (timer) {
    +                clearTimeout(timer);
    +                timer = null;
    +            }
    +        };
    +        e.ontouchend = e.ontouchcancel = function()
    +        {
    +            // Web.log("onTouchEnd()/onTouchCancel()");
    +            if (timer) {
    +                clearTimeout(timer);
    +                timer = null;
    +            }
    +            /*
    +             * Devices that generate ontouch* events ALSO generate onmouse* events,
    +             * and generally do so immediately after all the touch events are complete,
    +             * so unless we want double the action, we need to ignore mouse events.
    +             */
    +            fIgnoreMouseEvents = true;
    +        };
    +    }
    +
    +    /**
    +     * onPageEvent(sName, fn)
    +     *
    +     * For 'onload', 'onunload', and 'onpageshow' events, most callers should NOT use this function, but
    +     * instead use Web.onInit(), Web.onShow(), and Web.onExit(), respectively.
    +     *
    +     * The only components that should still use onPageEvent() are THIS component (see the bottom of this file)
    +     * and components that need to capture other events (eg, the 'onresize' event in the Video component).
    +     *
    +     * This function creates a chain of callbacks, allowing multiple JavaScript modules to define handlers
    +     * for the same event, which wouldn't be possible if everyone modified window['onload'], window['onunload'],
    +     * etc, themselves.  However, that's less of a concern now, because assuming everyone else is now using
    +     * onInit(), onExit(), etc, then there really IS only one component setting the window callback: this one.
    +     *
    +     * NOTE: It's risky to refer to obscure event handlers with "dot" names, because the Closure Compiler may
    +     * erroneously replace them (eg, window.onpageshow is a good example).
    +     *
    +     * @param {string} sFunc
    +     * @param {function()} fn
    +     */
    +    static onPageEvent(sFunc, fn)
    +    {
    +        if (window) {
    +            var fnPrev = window[sFunc];
    +            if (typeof fnPrev !== 'function') {
    +                window[sFunc] = fn;
    +            } else {
    +                /*
    +                 * TODO: Determine whether there's any value in receiving/sending the Event object that the
    +                 * browser provides when it generates the original event.
    +                 */
    +                window[sFunc] = function onWindowEvent()
    +                {
    +                    if (fnPrev) fnPrev();
    +                    fn();
    +                };
    +            }
    +        }
    +    };
    +
    +    /**
    +     * onInit(fn)
    +     *
    +     * Use this instead of setting window.onload.  Allows multiple JavaScript modules to define their own 'onload' event handler.
    +     *
    +     * @param {function()} fn
    +     */
    +    static onInit(fn)
    +    {
    +        Web.aPageEventHandlers['init'].push(fn);
    +    };
    +
    +    /**
    +     * onShow(fn)
    +     *
    +     * @param {function()} fn
    +     *
    +     * Use this instead of setting window.onpageshow.  Allows multiple JavaScript modules to define their own 'onpageshow' event handler.
    +     */
    +    static onShow(fn)
    +    {
    +        Web.aPageEventHandlers['show'].push(fn);
    +    };
    +
    +    /**
    +     * onExit(fn)
    +     *
    +     * @param {function()} fn
    +     *
    +     * Use this instead of setting window.onunload.  Allows multiple JavaScript modules to define their own 'onunload' event handler.
    +     */
    +    static onExit(fn)
    +    {
    +        Web.aPageEventHandlers['exit'].push(fn);
    +    };
    +
    +    /**
    +     * doPageEvent(afn)
    +     *
    +     * @param {Array.} afn
    +     */
    +    static doPageEvent(afn)
    +    {
    +        if (Web.fPageEventsEnabled) {
    +            try {
    +                for (var i = 0; i < afn.length; i++) {
    +                    afn[i]();
    +                }
    +            } catch (e) {
    +                Web.notice("An unexpected exception occurred:\n\n" + e.message + "\n\nPlease send this information to support@pcjs.org. Thanks.");
    +            }
    +        }
    +    };
    +
    +    /**
    +     * enablePageEvents(fEnable)
    +     *
    +     * @param {boolean} fEnable is true to enable page events, false to disable (they're enabled by default)
    +     */
    +    static enablePageEvents(fEnable)
    +    {
    +        if (!Web.fPageEventsEnabled && fEnable) {
    +            Web.fPageEventsEnabled = true;
    +            if (Web.fPageLoaded) Web.sendPageEvent('init');
    +            if (Web.fPageShowed) Web.sendPageEvent('show');
    +            return;
    +        }
    +        Web.fPageEventsEnabled = fEnable;
    +    }
    +
    +    /**
    +     * sendPageEvent(sEvent)
    +     *
    +     * This allows us to manually trigger page events.
    +     *
    +     * @param {string} sEvent (one of 'init', 'show' or 'exit')
    +     */
    +    static sendPageEvent(sEvent)
    +    {
    +        if (Web.aPageEventHandlers[sEvent]) {
    +            Web.doPageEvent(Web.aPageEventHandlers[sEvent]);
    +        }
    +    }
    +}
    +
    +Web.parmsURL = null;            // initialized on first call to parseURLParms()
    +
    +Web.aPageEventHandlers = {
    +    'init': [],                 // list of window 'onload' handlers
    +    'show': [],                 // list of window 'onpageshow' handlers
    +    'exit': []                  // list of window 'onunload' handlers (although we prefer to use 'onbeforeunload' if possible)
    +};
    +
    +Web.fPageLoaded = false;        // set once the page's first 'onload' event has occurred
    +Web.fPageShowed = false;        // set once the page's first 'onpageshow' event has occurred
    +Web.fPageEventsEnabled = true;  // default is true, set to false (or true) by enablePageEvents()
    +
    +/**
    + * fLocalStorage
    + *
    + * true if localStorage support exists, is enabled, and works; "falsey" otherwise
    + *
    + * @type {boolean|null}
    + */
    +Web.fLocalStorage = null;
    +
    +/**
    + * TODO: Is there any way to get the Closure Compiler to stop inlining this string?  This isn't cutting it.
    + *
    + * @const {string}
    + */
    +Web.sLocalStorageTest = "PCjs.localStorage";
    +
    +Web.onPageEvent('onload', function onPageLoad() {
    +    Web.fPageLoaded = true;
    +    Web.doPageEvent(Web.aPageEventHandlers['init']);
    +});
    +
    +Web.onPageEvent('onpageshow', function onPageShow() {
    +    Web.fPageShowed = true;
    +    Web.doPageEvent(Web.aPageEventHandlers['show']);
    +});
    +
    +Web.onPageEvent(Web.isUserAgent("Opera") || Web.isUserAgent("iOS")? 'onunload' : 'onbeforeunload', function onPageUnload() {
    +    Web.doPageEvent(Web.aPageEventHandlers['exit']);
    +});
    +
    +
    +
    +/**
    + * @copyright http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2017
    + */
    +
    +/*
    + * All PCjs components now use JSDoc types, primarily so that Google's Closure Compiler will compile
    + * everything with zero warnings when ADVANCED_OPTIMIZATIONS are enabled.  For more information about
    + * the JSDoc types supported by the Closure Compiler:
    + *
    + *      https://developers.google.com/closure/compiler/docs/js-for-compiler#types
    + *
    + * I also attempted to validate this code with JSLint, but it complained too much; eg, it didn't like
    + * "while (true)", a tried and "true" programming convention for decades, and it wanted me to replace
    + * all "++" and "--" operators with "+= 1" and "-= 1", use "(s || '')" instead of "(s? s : '')", etc.
    + *
    + * I prefer sticking with traditional C-style idioms, in part because they are more portable.  That
    + * does NOT mean I'm trying to write "portable JavaScript," but some of this code was ported from C code
    + * I'd written long ago, so portability is good, and I'm not going to throw that away if there's no need.
    + *
    + * UPDATE: I've since switched from JSLint to JSHint, which seems to have more reasonable defaults.
    + * And for new code, I have adopted some popular JavaScript idioms, like "(s || '')", although the need
    + * for those kinds of expressions will be reduced as I also start adopting some ES6 features, like
    + * default parameters.
    + */
    +
    +
    +/**
    + * Since the Closure Compiler treats ES6 classes as @struct rather than @dict by default,
    + * it deters us from defining named properties on our components; eg:
    + *
    + *      this['exports'] = {...}
    + *
    + * results in an error:
    + *
    + *      Cannot do '[]' access on a struct
    + *
    + * So, in order to define 'exports', we must override the @struct assumption by annotating
    + * the class as @unrestricted (or @dict).  Note that this must be done both here and in the
    + * subclass (eg, SerialPort), because otherwise the Compiler won't allow us to *reference*
    + * the named property either.
    + *
    + * TODO: Consider marking ALL our classes unrestricted, because otherwise it forces us to
    + * define every single property the class uses in its constructor, which results in a fair
    + * bit of redundant initialization, since many properties aren't (and don't need to be) fully
    + * initialized until the appropriate init(), reset(), restore(), etc. function is called.
    + *
    + * The upside, however, may be that since the structure of the class is completely defined by
    + * the constructor, JavaScript engines may be able to optimize and run more efficiently.
    + *
    + * @unrestricted
    + */
    +class Component {
    +    /**
    +     * Component(type, parms, bitsMessage)
    +     *
    +     * A Component object requires:
    +     *
    +     *      type: a user-defined type name (eg, "CPU")
    +     *
    +     * and accepts any or all of the following (parms) properties:
    +     *
    +     *      id: component ID (default is "")
    +     *      name: component name (default is ""; if blank, toString() will use the type name only)
    +     *      comment: component comment string (default is undefined)
    +     *
    +     * Component subclasses will usually have additional (parms) properties.
    +     *
    +     * @param {string} type
    +     * @param {Object} [parms]
    +     * @param {number} [bitsMessage] selects message(s) that the component wants to enable (default is 0)
    +     */
    +    constructor(type, parms, bitsMessage)
    +    {
    +        this.type = type;
    +
    +        if (!parms) parms = {'id': "", 'name': ""};
    +
    +        this.id = parms['id'] || "";
    +        this.name = parms['name'];
    +        this.comment = parms['comment'];
    +        this.parms = parms;
    +
    +        /*
    +         * The following Component properties need to be accessible by other machines and/or command scripts;
    +         * well, OK, or we could have exported some new functions to walk the contents of these properties, as we
    +         * did with findMachineComponent(), but this works just as well.
    +         *
    +         * Also, while the double-assignment looks silly (ie, using both dot and bracket property notation), it
    +         * resolves a complaint from the Closure Compiler, because if we use ONLY bracket notation here, then the
    +         * Compiler wants us to change all the other references to bracket notation as well.
    +         */
    +        this.exports = this['exports'] = {};
    +        this.bindings = this['bindings'] = {};
    +
    +        var i = this.id.indexOf('.');
    +        if (i < 0) {
    +            this.idComponent = this.id;
    +        } else {
    +            this.idMachine = this.id.substr(0, i);
    +            this.idComponent = this.id.substr(i + 1);
    +        }
    +
    +        /*
    +         * Gather all the various component flags (booleans) into a single "flags" object, and encourage
    +         * subclasses to do the same, to reduce the property clutter we have to wade through while debugging.
    +         */
    +        this.flags = {
    +            ready:      false,
    +            busy:       false,
    +            busyCancel: false,
    +            powered:    false,
    +            error:      false
    +        };
    +
    +        this.fnReady = null;
    +        this.clearError();
    +        this.bitsMessage = bitsMessage || 0;
    +
    +        /** @type {Object|null} controlPrint is the HTML control, if any, that we can print to */
    +        this.controlPrint = null;
    +
    +        this.cmp = null;
    +        this.bus = null;
    +        this.cpu = null;
    +        this.dbg = null;
    +
    +        /*
    +         * TODO: Consider adding another parameter to the Component() constructor that allows components to tell
    +         * us if they support single or multiple instances per machine.  For example, there can be multiple SerialPort
    +         * components per machine, but only one CPU component (some machines also support an FPU, but that component
    +         * is considered separate from the CPU).
    +         *
    +         * It's not critical, but it would help catch machine configuration errors; for example, a machine that mistakenly
    +         * includes two CPU components may, aside from wasting memory, end up with odd side-effects, like unresponsive
    +         * CPU controls.
    +         */
    +        Component.add(this);
    +    }
    +
    +    /**
    +     * Component.add(component)
    +     *
    +     * @param {Component} component
    +     */
    +    static add(component)
    +    {
    +        /*
    +         * This just generates a lot of useless noise, handy in the early days, not so much these days....
    +         *
    +         *      if (DEBUG) Component.log("Component.add(" + component.type + "," + component.id + ")");
    +         */
    +        Component.components.push(component);
    +    }
    +
    +    /**
    +     * Component.addMachine(idMachine)
    +     *
    +     * @param {string} idMachine
    +     */
    +    static addMachine(idMachine)
    +    {
    +        Component.machines[idMachine] = {};
    +    }
    +
    +    /**
    +     * Component.addMachineResource(idMachine, sName, data)
    +     *
    +     * @param {string} idMachine
    +     * @param {string|null} sName (name of the resource)
    +     * @param {*} data
    +     */
    +    static addMachineResource(idMachine, sName, data)
    +    {
    +        /*
    +         * I used to assert(Component.machines[idMachine]), but when we're running as a Node app, embed.js is not used,
    +         * so addMachine() is never called, so resources do not need to be recorded.
    +         */
    +        if (Component.machines[idMachine] && sName) {
    +            Component.machines[idMachine][sName] = data;
    +        }
    +    }
    +
    +    /**
    +     * Component.getMachineResources(idMachine)
    +     *
    +     * @param {string} idMachine
    +     * @return {Object|undefined}
    +     */
    +    static getMachineResources(idMachine)
    +    {
    +        return Component.machines[idMachine];
    +    }
    +
    +    /**
    +     * Component.getTime()
    +     *
    +     * @return {number} the current time, in milliseconds
    +     */
    +    static getTime()
    +    {
    +        return Date.now() || +new Date();
    +    }
    +
    +    /**
    +     * Component.log(s, type)
    +     *
    +     * For diagnostic output only.
    +     *
    +     * @param {string} [s] is the message text
    +     * @param {string} [type] is the message type
    +     */
    +    static log(s, type)
    +    {
    +        if (!COMPILED) {
    +            if (s) {
    +                var sElapsed = "", sMsg = (type? (type + ": ") : "") + s;
    +                if (typeof Usr != "undefined") {
    +                    if (Component.msStart === undefined) {
    +                        Component.msStart = Component.getTime();
    +                    }
    +                    sElapsed = (Component.getTime() - Component.msStart) + "ms: ";
    +                }
    +                if (window && window.console) console.log(sElapsed + sMsg.replace(/\n/g, " "));
    +            }
    +        }
    +    }
    +
    +    /**
    +     * Component.assert(f, s)
    +     *
    +     * Verifies conditions that must be true (for DEBUG builds only).
    +     *
    +     * The Closure Compiler should automatically remove all references to Component.assert() in non-DEBUG builds.
    +     * TODO: Add a task to the build process that "asserts" there are no instances of "assertion failure" in RELEASE builds.
    +     *
    +     * @param {boolean} f is the expression we are asserting to be true
    +     * @param {string} [s] is description of the assertion on failure
    +     */
    +    static assert(f, s)
    +    {
    +        if (DEBUG) {
    +            if (!f) {
    +                if (!s) s = "assertion failure";
    +                Component.log(s);
    +                throw new Error(s);
    +            }
    +        }
    +    }
    +
    +    /**
    +     * Component.println(s, type, id)
    +     *
    +     * For non-diagnostic messages, which components may override to control the destination/appearance of their output.
    +     *
    +     * Components that inherit from this class should use the instance method, this.println(), rather than Component.println(),
    +     * because if a Control Panel is loaded, it will override only the instance method, not the class method (overriding the class
    +     * method would improperly affect any other machines loaded on the same page).
    +     *
    +     * @param {string} [s] is the message text
    +     * @param {string} [type] is the message type
    +     * @param {string} [id] is the caller's ID, if any
    +     */
    +    static println(s, type, id)
    +    {
    +        if (!COMPILED) {
    +            Component.log((id? (id + ": ") : "") + (s? ("\"" + s + "\"") : ""), type);
    +        }
    +    }
    +
    +    /**
    +     * Component.notice(s, fPrintOnly, id)
    +     *
    +     * notice() is like println() but implies a need for user notification, so we alert() as well.
    +     *
    +     * @param {string} s is the message text
    +     * @param {boolean} [fPrintOnly]
    +     * @param {string} [id] is the caller's ID, if any
    +     */
    +    static notice(s, fPrintOnly, id)
    +    {
    +        if (!COMPILED) {
    +            Component.println(s, "notice", id);
    +        }
    +        if (!fPrintOnly) Component.alertUser((id? (id + ": ") : "") + s);
    +    }
    +
    +    /**
    +     * Component.warning(s)
    +     *
    +     * @param {string} s describes the warning
    +     */
    +    static warning(s)
    +    {
    +        if (!COMPILED) {
    +            Component.println(s, "warning");
    +        }
    +        Component.alertUser(s);
    +    }
    +
    +    /**
    +     * Component.error(s)
    +     *
    +     * @param {string} s describes the error; an alert() is displayed as well
    +     */
    +    static error(s)
    +    {
    +        if (!COMPILED) {
    +            Component.println(s, "error");
    +        }
    +        Component.alertUser(s);
    +    }
    +
    +    /**
    +     * Component.alertUser(sMessage)
    +     *
    +     * @param {string} sMessage
    +     */
    +    static alertUser(sMessage)
    +    {
    +        if (window) {
    +            window.alert(sMessage);
    +        } else {
    +            Component.log(sMessage);
    +        }
    +    };
    +
    +    /**
    +     * Component.confirmUser(sPrompt)
    +     *
    +     * @param {string} sPrompt
    +     * @returns {boolean} true if the user clicked OK, false if Cancel/Close
    +     */
    +    static confirmUser(sPrompt)
    +    {
    +        var fResponse = false;
    +        if (window) {
    +            fResponse = window.confirm(sPrompt);
    +        }
    +        return fResponse;
    +    }
    +
    +    /**
    +     * Component.promptUser()
    +     *
    +     * @param {string} sPrompt
    +     * @param {string} [sDefault]
    +     * @returns {string|null}
    +     */
    +    static promptUser(sPrompt, sDefault)
    +    {
    +        var sResponse = null;
    +        if (window) {
    +            sResponse = window.prompt(sPrompt, sDefault === undefined? "" : sDefault);
    +        }
    +        return sResponse;
    +    }
    +
    +    /**
    +     * Component.getComponents(idRelated)
    +     *
    +     * We could store components as properties, using the component's ID, and change
    +     * this linear lookup into a property lookup, but some components may have no ID.
    +     *
    +     * @param {string} [idRelated] of related component
    +     * @return {Array} of components
    +     */
    +    static getComponents(idRelated)
    +    {
    +        var i;
    +        var aComponents = [];
    +        /*
    +         * getComponentByID(id, idRelated)
    +         *
    +         * If idRelated is provided, we check it for a machine prefix, and use any
    +         * existing prefix to constrain matches to IDs with the same prefix, in order to
    +         * avoid matching components belonging to other machines.
    +         */
    +        if (idRelated) {
    +            if ((i = idRelated.indexOf('.')) > 0)
    +                idRelated = idRelated.substr(0, i + 1);
    +            else
    +                idRelated = "";
    +        }
    +        for (i = 0; i < Component.components.length; i++) {
    +            var component = Component.components[i];
    +            if (!idRelated || !component.id.indexOf(idRelated)) {
    +                aComponents.push(component);
    +            }
    +        }
    +        return aComponents;
    +    }
    +
    +    /**
    +     * Component.getComponentByID(id, idRelated)
    +     *
    +     * We could store components as properties, using the component's ID, and change
    +     * this linear lookup into a property lookup, but some components may have no ID.
    +     *
    +     * @param {string} id of the desired component
    +     * @param {string} [idRelated] of related component
    +     * @return {Component|null}
    +     */
    +    static getComponentByID(id, idRelated)
    +    {
    +        if (id !== undefined) {
    +            var i;
    +            /*
    +             * If idRelated is provided, we check it for a machine prefix, and use any
    +             * existing prefix to constrain matches to IDs with the same prefix, in order to
    +             * avoid matching components belonging to other machines.
    +             */
    +            if (idRelated && (i = idRelated.indexOf('.')) > 0) {
    +                id = idRelated.substr(0, i + 1) + id;
    +            }
    +            for (i = 0; i < Component.components.length; i++) {
    +                if (Component.components[i].id === id) {
    +                    return Component.components[i];
    +                }
    +            }
    +            if (Component.components.length) {
    +                Component.log("Component ID '" + id + "' not found", "warning");
    +            }
    +        }
    +        return null;
    +    }
    +
    +    /**
    +     * Component.getComponentByType(sType, idRelated, componentPrev)
    +     *
    +     * @param {string} sType of the desired component
    +     * @param {string} [idRelated] of related component
    +     * @param {Component|null} [componentPrev] of previously returned component, if any
    +     * @return {Component|null}
    +     */
    +    static getComponentByType(sType, idRelated, componentPrev)
    +    {
    +        if (sType !== undefined) {
    +            var i;
    +            /*
    +             * If idRelated is provided, we check it for a machine prefix, and use any
    +             * existing prefix to constrain matches to IDs with the same prefix, in order to
    +             * avoid matching components belonging to other machines.
    +             */
    +            if (idRelated) {
    +                if ((i = idRelated.indexOf('.')) > 0) {
    +                    idRelated = idRelated.substr(0, i + 1);
    +                } else {
    +                    idRelated = "";
    +                }
    +            }
    +            for (i = 0; i < Component.components.length; i++) {
    +                if (componentPrev) {
    +                    if (componentPrev == Component.components[i]) componentPrev = null;
    +                    continue;
    +                }
    +                if (sType == Component.components[i].type && (!idRelated || !Component.components[i].id.indexOf(idRelated))) {
    +                    return Component.components[i];
    +                }
    +            }
    +            Component.log("Component type '" + sType + "' not found", "warning");
    +        }
    +        return null;
    +    }
    +
    +    /**
    +     * Component.getComponentParms(element)
    +     *
    +     * @param {Object} element from the DOM
    +     */
    +    static getComponentParms(element)
    +    {
    +        var parms = null;
    +        var sParms = element.getAttribute("data-value");
    +        if (sParms) {
    +            try {
    +                parms = eval("(" + sParms + ")");   // jshint ignore:line
    +                /*
    +                 * We can no longer invoke removeAttribute() because some components (eg, Panel) need
    +                 * to run their initXXX() code more than once, to avoid initialization-order dependencies.
    +                 *
    +                 *      if (!DEBUG) {
    +                 *          element.removeAttribute("data-value");
    +                 *      }
    +                 */
    +            } catch(e) {
    +                Component.error(e.message + " (" + sParms + ")");
    +            }
    +        }
    +        return parms;
    +    }
    +
    +    /**
    +     * Component.bindExternalControl(component, sControl, sBinding, sType)
    +     *
    +     * @param {Component} component
    +     * @param {string} sControl
    +     * @param {string} sBinding
    +     * @param {string} [sType] is the external component type
    +     */
    +    static bindExternalControl(component, sControl, sBinding, sType)
    +    {
    +        if (sControl) {
    +            if (sType === undefined) sType = "Panel";
    +            var target = Component.getComponentByType(sType, component.id);
    +            if (target) {
    +                var eBinding = target.bindings[sControl];
    +                if (eBinding) {
    +                    component.setBinding(null, sBinding, eBinding);
    +                }
    +            }
    +        }
    +    }
    +
    +    /**
    +     * Component.bindComponentControls(component, element, sAppClass)
    +     *
    +     * @param {Component} component
    +     * @param {Object} element from the DOM
    +     * @param {string} sAppClass
    +     */
    +    static bindComponentControls(component, element, sAppClass)
    +    {
    +        var aeControls = Component.getElementsByClass(element.parentNode, sAppClass + "-control");
    +
    +        for (var iControl = 0; iControl < aeControls.length; iControl++) {
    +
    +            var aeChildNodes = aeControls[iControl].childNodes;
    +
    +            for (var iNode = 0; iNode < aeChildNodes.length; iNode++) {
    +                var control = aeChildNodes[iNode];
    +                if (control.nodeType !== 1 /* document.ELEMENT_NODE */) {
    +                    continue;
    +                }
    +                var sClass = control.getAttribute("class");
    +                if (!sClass) continue;
    +                var aClasses = sClass.split(" ");
    +                for (var iClass = 0; iClass < aClasses.length; iClass++) {
    +                    var parms;
    +                    sClass = aClasses[iClass];
    +                    switch (sClass) {
    +                        case sAppClass + "-binding":
    +                            parms = Component.getComponentParms(control);
    +                            if (parms && parms['binding']) {
    +                                component.setBinding(parms['type'], parms['binding'], control, parms['value']);
    +                            } else if (!parms || parms['type'] != "description") {
    +                                Component.log("Component '" + component.toString() + "' missing binding" + (parms? " for " + parms['type'] : ""), "warning");
    +                            }
    +                            iClass = aClasses.length;
    +                            break;
    +                        default:
    +                            // if (DEBUG) Component.log("Component.bindComponentControls(" + component.toString() + "): unrecognized control class \"" + sClass + "\"", "warning");
    +                            break;
    +                    }
    +                }
    +            }
    +        }
    +    }
    +
    +    /**
    +     * Component.getElementsByClass(element, sClass, sObjClass)
    +     *
    +     * This is a cross-browser helper function, since not all browser's support getElementsByClassName()
    +     *
    +     * TODO: This should probably be moved into weblib.js at some point, along with the control binding functions above,
    +     * to keep all the browser-related code together.
    +     *
    +     * @param {Object} element from the DOM
    +     * @param {string} sClass
    +     * @param {string} [sObjClass]
    +     * @return {Array|NodeList}
    +     */
    +    static getElementsByClass(element, sClass, sObjClass)
    +    {
    +        if (sObjClass) sClass += '-' + sObjClass + "-object";
    +        /*
    +         * Use the browser's built-in getElementsByClassName() if it appears to be available
    +         * (for example, it's not available in IE8, but it should be available in IE9 and up)
    +         */
    +        if (element.getElementsByClassName) {
    +            return element.getElementsByClassName(sClass);
    +        }
    +        var i, j, ae = [];
    +        var aeAll = element.getElementsByTagName("*");
    +        var re = new RegExp('(^| )' + sClass + '( |$)');
    +        for (i = 0, j = aeAll.length; i < j; i++) {
    +            if (re.test(aeAll[i].className)) {
    +                ae.push(aeAll[i]);
    +            }
    +        }
    +        if (!ae.length) {
    +            Component.log('No elements of class "' + sClass + '" found');
    +        }
    +        return ae;
    +    }
    +
    +    /**
    +     * Component.getScriptCommands(sScript)
    +     *
    +     * This is a simple parser that breaks sScript into an array of commands, where each command
    +     * is an array of tokens, where tokens are sequences of characters separated by any of: tab, space,
    +     * carriage-return (CR), line-feed (LF), semicolon, single-quote, or double-quote;  if a quote is
    +     * used, all characters up to the next matching quote become part of the token, allowing any of the
    +     * other separators to be part of the token.  CR, LF and semicolon also serve to terminate a command,
    +     * with semicolon being preferred, because it's 1) more visible, and 2) essential when the entire
    +     * script is a multi-line string where all CR/LF were replaced by spaces (which is what Jekyll does,
    +     * and since we can't change Jekyll, it's what our own MarkDown Front Matter parser does as well;
    +     * see convertMD() in markout.js, where the aCommandDefs array is built).
    +     *
    +     * Backslash sequences like \n, \r, and \\ have already been converted to LF, CR and backslash
    +     * characters, since the entire script string is injected into a JavaScript function call, so any
    +     * backslash sequence that JavaScript supports is automatically converted:
    +     *
    +     *      \0  \'  \"  \\  \n  \r  \v  \t  \b  \f  \uXXXX \xXX
    +     *                      ^J  ^M  ^K  ^I  ^H  ^L
    +     *
    +     * To support any other non-printable 8-bit character, such as ESC, you should use \xXX, where XX
    +     * is the ASCII code in hex.  For ESC, that would \x1B.
    +     *
    +     * @param {string} sScript
    +     * @return {Array}
    +     */
    +    static getScriptCommands(sScript)
    +    {
    +        var cch = sScript.length;
    +        var aCommands = [], aTokens = [], sToken = "", chQuote = null;
    +        for (var i = 0; i < cch; i++) {
    +            var ch = sScript[i];
    +            if (ch == '"' || ch == "'") {
    +                if (chQuote && ch != chQuote) {
    +                    sToken += ch;
    +                    continue;
    +                }
    +                if (!chQuote) {
    +                    chQuote = ch;
    +                } else {
    +                    chQuote = null;
    +                }
    +                if (sToken) {
    +                    aTokens.push(sToken);
    +                    sToken = "";
    +                }
    +                continue;
    +            }
    +            if (!chQuote) {
    +                if (ch == '\r' || ch == '\n') {
    +                    ch = ';';
    +                }
    +                if (ch == ' ' || ch == '\t' || ch == ';') {
    +                    if (sToken) {
    +                        aTokens.push(sToken);
    +                        sToken = "";
    +                    }
    +                    if (ch == ';' && aTokens.length) {
    +                        aCommands.push(aTokens);
    +                        aTokens = [];
    +                    }
    +                    continue;
    +                }
    +            }
    +            sToken += ch;
    +        }
    +        if (sToken) {
    +            aTokens.push(sToken);
    +        }
    +        if (aTokens.length) {
    +            aCommands.push(aTokens);
    +        }
    +        return aCommands;
    +    }
    +
    +    /**
    +     * Component.processScript(idMachine, sScript)
    +     *
    +     * @param {string} idMachine
    +     * @param {string} sScript
    +     * @return {boolean}
    +     */
    +    static processScript(idMachine, sScript)
    +    {
    +        var fSuccess = false;
    +        idMachine += ".machine";
    +        if (typeof sScript == "string" && !Component.commands[idMachine]) {
    +            fSuccess = true;
    +            Component.commands[idMachine] = Component.getScriptCommands(sScript);
    +            if (!Component.processCommands(idMachine)) {
    +                fSuccess = false;
    +            }
    +        }
    +        return fSuccess;
    +    }
    +
    +    /**
    +     * Component.processCommands(idMachine)
    +     *
    +     * @param {string} idMachine
    +     * @return {boolean}
    +     */
    +    static processCommands(idMachine)
    +    {
    +        var fSuccess = true;
    +        var aCommands = Component.commands[idMachine];
    +
    +     // var dbg = Component.getComponentByType("Debugger", idMachine);
    +
    +        while (aCommands && aCommands.length) {
    +
    +            var aTokens = aCommands.splice(0, 1)[0];
    +            var sCommand = aTokens[0];
    +
    +            /*
    +             * It's possible to route this output to the Debugger window with dbg.println()
    +             * instead, but it's a bit too confusing mingling script output in a window that
    +             * already mingles Debugger and machine output.
    +             */
    +            Component.println('script: ' + aTokens.join(' '));
    +
    +            var fnCallReady = null;
    +            if (Component.asyncCommands.indexOf(sCommand) >= 0) {
    +                fnCallReady = function processNextCommand() {
    +                    return function() {
    +                        Component.processCommands(idMachine);
    +                    }
    +                }();
    +            }
    +
    +            var fnCommand = Component.globalCommands[sCommand];
    +            if (fnCommand) {
    +                if (!fnCallReady) {
    +                    fSuccess = fnCommand(aTokens[1], aTokens[2], aTokens[3]);
    +                } else {
    +                    if (!fnCommand(fnCallReady, aTokens[1], aTokens[2], aTokens[3])) break;
    +                }
    +            }
    +            else {
    +                fSuccess = false;
    +                var component = Component.getComponentByType(aTokens[1], idMachine);
    +                if (component) {
    +                    fnCommand = Component.componentCommands[sCommand];
    +                    if (fnCommand) {
    +                        fSuccess = fnCommand(component, aTokens[2], aTokens[3]);
    +                    }
    +                    else {
    +                        var exports = component['exports'];
    +                        if (exports) {
    +                            fnCommand = exports[sCommand];
    +                            if (fnCommand) {
    +                                fSuccess = true;
    +                                if (!fnCallReady) {
    +                                    fSuccess = fnCommand.call(component, aTokens[2], aTokens[3]);
    +                                } else {
    +                                    if (!fnCommand.call(component, fnCallReady, aTokens[2], aTokens[3])) break;
    +                                }
    +                            }
    +                        }
    +                    }
    +                }
    +            }
    +
    +            if (!fSuccess) {
    +                Component.alertUser("Script error: " + sCommand + (fnCommand? " failed" : " unrecognized"));
    +                break;
    +            }
    +        }
    +
    +        if (aCommands && !aCommands.length) {
    +            delete Component.commands[idMachine];
    +        }
    +
    +        return fSuccess;
    +    }
    +
    +    /**
    +     * Component.scriptAlert(sMessage)
    +     *
    +     * @param {string} sMessage
    +     * @return {boolean}
    +     */
    +    static scriptAlert(sMessage)
    +    {
    +        Component.alertUser(sMessage);
    +        return true;
    +    }
    +
    +    /**
    +     * Component.scriptSelect(component, sBinding, sValue)
    +     *
    +     * @param {Component} component
    +     * @param {string} sBinding
    +     * @param {string} sValue
    +     * @return {boolean}
    +     */
    +    static scriptSelect(component, sBinding, sValue)
    +    {
    +        var fSuccess = false;
    +        var aBindings = component['bindings'];
    +        var control = aBindings[sBinding];
    +        if (control) {
    +            for (var i = 0; i < control.options.length; i++) {
    +                if (control.options[i].textContent == sValue) {
    +                    if (control.selectedIndex != i) {
    +                        control.selectedIndex = i;
    +                    }
    +                    fSuccess = true;
    +                    break;
    +                }
    +            }
    +        }
    +        return fSuccess;
    +    }
    +
    +    /**
    +     * Component.scriptSleep(fnCallback, sDelay)
    +     *
    +     * @param {function()} fnCallback
    +     * @param {string} sDelay (in milliseconds)
    +     * @return {boolean}
    +     */
    +    static scriptSleep(fnCallback, sDelay)
    +    {
    +        setTimeout(fnCallback, +sDelay);
    +        return false;
    +    }
    +
    +    /**
    +     * toString()
    +     *
    +     * @this {Component}
    +     * @return {string}
    +     */
    +    toString() {
    +        return (this.name? this.name : (this.id || this.type));
    +    }
    +
    +    /**
    +     * getMachineNum()
    +     *
    +     * @this {Component}
    +     * @return {number} unique machine number
    +     */
    +    getMachineNum() {
    +        var nMachine = 1;
    +        if (this.idMachine) {
    +            var aDigits = this.idMachine.match(/\d+/);
    +            if (aDigits !== null)
    +                nMachine = parseInt(aDigits[0], 10);
    +        }
    +        return nMachine;
    +    }
    +
    +    /**
    +     * setBinding(sHTMLType, sBinding, control, sValue)
    +     *
    +     * Component's setBinding() method is intended to be overridden by subclasses.
    +     *
    +     * @this {Component}
    +     * @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
    +     * @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
    +     * @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
    +     * @param {string} [sValue] optional data value
    +     * @return {boolean} true if binding was successful, false if unrecognized binding request
    +     */
    +    setBinding(sHTMLType, sBinding, control, sValue) {
    +        switch (sBinding) {
    +        case "clear":
    +            if (!this.bindings[sBinding]) {
    +                this.bindings[sBinding] = control;
    +                control.onclick = (function(component) {
    +                    return function clearPanel() {
    +                        if (component.bindings['print']) {
    +                            component.bindings['print'].value = "";
    +                        }
    +                    };
    +                }(this));
    +            }
    +            return true;
    +        case "print":
    +            if (!this.bindings[sBinding]) {
    +                this.bindings[sBinding] = control;
    +                /*
    +                 * HACK: Save this particular HTML element so that the Debugger can access it, too
    +                 */
    +                this.controlPrint = control;
    +                /*
    +                 * This was added for Firefox (Safari automatically clears the